@kumori/aurora-wui-components 0.0.66 → 0.0.68

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.
@@ -26,6 +26,8 @@ export declare class AxebowDialog extends LitElement {
26
26
  canClose: boolean;
27
27
  closeLabel: string;
28
28
  onClose?: () => void;
29
+ closeIcon: string;
30
+ closeIconColor: string;
29
31
  private _hasDescriptionSlotContent;
30
32
  private _onDescriptionSlotChange;
31
33
  private get _buttons();
@@ -1 +1 @@
1
- {"version":3,"file":"axebow-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-dialog/axebow-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAa,MAAM,KAAK,CAAC;AAEvD,OAAO,2DAA2D,CAAC;AACnE,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAG3C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBACa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,MAAM,4BAaX;IAE0C,IAAI,UAAS;IAC7B,IAAI,EAAE,UAAU,CAAW;IAC3B,WAAW,SAAM;IACjB,IAAI,SAAM;IACV,SAAS,SAAM;IACf,WAAW,SAAM;IAEb,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAEhC,SAAS,UAAS;IACnB,WAAW,SAAY;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,QAAQ,UAAS;IAClB,UAAU,SAAW;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAE5C,OAAO,CAAC,0BAA0B,CAAS;IAEpD,OAAO,CAAC,wBAAwB;IAOhC,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM;CAmEP"}
1
+ {"version":3,"file":"axebow-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-dialog/axebow-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAa,MAAM,KAAK,CAAC;AAEvD,OAAO,2DAA2D,CAAC;AACnE,OAAO,+BAA+B,CAAC;AACvC,OAAO,mCAAmC,CAAC;AAG3C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AACrD,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBACa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,MAAM,4BAaX;IAE0C,IAAI,UAAS;IAC7B,IAAI,EAAE,UAAU,CAAW;IAC3B,WAAW,SAAM;IACjB,IAAI,SAAM;IACV,SAAS,SAAM;IACf,WAAW,SAAM;IAEb,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAEhC,SAAS,UAAS;IACnB,WAAW,SAAY;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,QAAQ,UAAS;IAClB,UAAU,SAAW;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,SAAW;IACpB,cAAc,SAA2B;IAE5D,OAAO,CAAC,0BAA0B,CAAS;IAEpD,OAAO,CAAC,wBAAwB;IAOhC,OAAO,KAAK,QAAQ,GAEnB;IAED,MAAM;CAmEP"}
@@ -1 +1 @@
1
- {"version":3,"file":"axebow-input-base.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-input/axebow-input-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAIvE,OAAO,+BAA+B,CAAC;AAEvC;;;;;GAKG;AACH,8BAAsB,eAAgB,SAAQ,UAAU;IACtD,MAAM,CAAC,UAAU,4BAqBf;IAE0B,KAAK,SAAM;IACX,WAAW,SAAM;IACjB,KAAK,SAAM;IACX,WAAW,SAAM;IAChB,QAAQ,UAAS;IACjB,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAClB,YAAY,SAAM;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,UAAS;IAE7C,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK;IAO/B,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc;CA0BjE"}
1
+ {"version":3,"file":"axebow-input-base.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-input/axebow-input-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAIvE,OAAO,+BAA+B,CAAC;AAEvC;;;;;GAKG;AACH,8BAAsB,eAAgB,SAAQ,UAAU;IACtD,MAAM,CAAC,UAAU,4BAyBf;IAE0B,KAAK,SAAM;IACX,WAAW,SAAM;IACjB,KAAK,SAAM;IACX,WAAW,SAAM;IAChB,QAAQ,UAAS;IACjB,QAAQ,UAAS;IACjB,QAAQ,UAAS;IAClB,YAAY,SAAM;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,OAAO,UAAS;IAE7C,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK;IAO/B,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,cAAc;CA0BjE"}
package/dist/index.js CHANGED
@@ -1264,6 +1264,10 @@ var AxebowInputBase = class extends LitElement {
1264
1264
  --sl-input-border-color-focus: var(--axebow-error, #e53e3e);
1265
1265
  --sl-input-border-color-hover: var(--axebow-error, #e53e3e);
1266
1266
  }
1267
+ .input-error sl-input::part(input),
1268
+ .input-error sl-select::part(display-input) {
1269
+ color: var(--axebow-error, #e53e3e);
1270
+ }
1267
1271
  `
1268
1272
  ];
1269
1273
  }
@@ -1987,6 +1991,8 @@ var AxebowDialog = class AxebowDialog extends LitElement {
1987
1991
  this.cancelLabel = "Cancel";
1988
1992
  this.canClose = false;
1989
1993
  this.closeLabel = "Close";
1994
+ this.closeIcon = "close";
1995
+ this.closeIconColor = "var(--axebow-primary)";
1990
1996
  this._hasDescriptionSlotContent = false;
1991
1997
  }
1992
1998
  static {
@@ -2036,7 +2042,7 @@ var AxebowDialog = class AxebowDialog extends LitElement {
2036
2042
  aria-label=${this.closeLabel}
2037
2043
  @click=${() => this.onClose?.()}
2038
2044
  >
2039
- <axebow-icon iconName="close" size="small"></axebow-icon>
2045
+ <axebow-icon iconName=${this.closeIcon} iconColor=${this.closeIconColor} size="small"></axebow-icon>
2040
2046
  </button>
2041
2047
  ` : ""}
2042
2048
  </div>
@@ -2057,7 +2063,7 @@ var AxebowDialog = class AxebowDialog extends LitElement {
2057
2063
  <axebow-button
2058
2064
  variant=${button.variant ?? "default"}
2059
2065
  ?outline=${button.outline}
2060
- ?disabled=${button.disabled}
2066
+ .disabled=${button.disabled}
2061
2067
  ?loading=${button.loading}
2062
2068
  @click=${() => button.onClick?.()}
2063
2069
  >
@@ -2088,6 +2094,8 @@ __decorate([property({ attribute: false })], AxebowDialog.prototype, "onCancel",
2088
2094
  __decorate([property({ type: Boolean })], AxebowDialog.prototype, "canClose", void 0);
2089
2095
  __decorate([property({ type: String })], AxebowDialog.prototype, "closeLabel", void 0);
2090
2096
  __decorate([property({ attribute: false })], AxebowDialog.prototype, "onClose", void 0);
2097
+ __decorate([property({ type: String })], AxebowDialog.prototype, "closeIcon", void 0);
2098
+ __decorate([property({ type: String })], AxebowDialog.prototype, "closeIconColor", void 0);
2091
2099
  __decorate([state()], AxebowDialog.prototype, "_hasDescriptionSlotContent", void 0);
2092
2100
  AxebowDialog = __decorate([customElement("axebow-dialog")], AxebowDialog);
2093
2101
  //#endregion
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/styles/axebow-theme.ts","../src/components/axebow-icon/axebow-icon.ts","../src/components/axebow-filter-bar/axebow-filter-bar.ts","../src/components/axebow-header/parts/axebow-quick-action-card.ts","../src/components/axebow-header/parts/axebow-quick-actions.ts","../src/components/axebow-header/parts/axebow-header-actions.ts","../src/components/axebow-header/axebow-header.ts","../src/components/axebow-sidebar/axebow-sidebar.ts","../src/components/axebow-footer/axebow-footer.ts","../src/components/axebow-breadcrumb-header/axebow-breadcrumb-header.ts","../src/components/axebow-button/axebow-button.ts","../src/components/axebow-search/axebow-search.ts","../src/components/axebow-input/axebow-input-base.ts","../src/components/axebow-input/axebow-text-input.ts","../src/components/axebow-input/axebow-numeric-input.ts","../src/components/axebow-input/axebow-checkbox-input.ts","../src/components/axebow-input/axebow-carousel-input.ts","../src/components/axebow-input/axebow-providers-input.ts","../src/components/axebow-input/axebow-select-input.ts","../src/components/axebow-input/axebow-input.ts","../src/components/axebow-dialog/axebow-dialog.ts","../src/components/axebow-more-actions/axebow-more-actions.ts","../src/components/cards/parts/axebow-card-cloud-logo.ts","../src/components/cards/parts/axebow-card-version-selector.ts","../src/components/cards/parts/axebow-role-tooltip.ts","../src/components/cards/parts/axebow-card-header.ts","../src/components/cards/parts/axebow-card-stat-item.ts","../src/components/cards/parts/axebow-card-stats-row.ts","../src/components/cards/parts/axebow-card-filter-item.ts","../src/components/cards/parts/axebow-card-filter.ts","../src/components/cards/parts/axebow-card-table-header.ts","../src/components/cards/parts/axebow-card-resource-row.ts","../src/components/cards/parts/axebow-card-resource-table.ts","../src/components/cards/parts/axebow-card-attention-banner.ts","../src/components/cards/parts/axebow-card-action-banner.ts","../src/components/cards/parts/axebow-card-status.ts","../src/components/cards/parts/axebow-card-footer.ts","../src/components/cards/axebow-base-card.ts","../src/components/cards/parts/axebow-card-special-link.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const axebowTheme = css`\n :host, .theme {\n --axebow-primary: var(--color-primary, #34495e);\n --axebow-primary-light: var(--color-primary-light, #b4cded);\n --axebow-tertiary: var(--color-tertiary, #006bff);\n --axebow-success: var(--color-success, #0ecd9a);\n --axebow-secondary: var(--color-secondary, #78787a);\n --axebow-base: var(--color-base, #f0f1f5);\n --axebow-error: var(--color-error, #e93a3a);\n --axebow-white: var(--color-white, #ffffff);\n --axebow-black: var(--color-black, #000000);\n --axebow-warning: var(--color-warning, #f9cf6c);\n --axebow-table-border: var(--color-table-border, #ddd);\n --axebow-gray: var(--color-gray, #8a94ae);\n --axebow-light-gray: var(--color-light-gray, #d9d9d9);\n\n --axebow-clickable-blue: var(--color-clickable-blue, #006bff);\n --axebow-sky-gray: var(--color-sky-gray, #8a94ee);\n --axebow-rich-black: var(--color-rich-black, #0d1821);\n --axebow-anti-flash-white: var(--color-anti-flash-white, #f0f1f5);\n --axebow-strong-gray: var(--color-strong-gray, #78787a);\n\n --axebow-bg-primary: var(--color-bg-primary, #f0f1f5);\n\n --axebow-text-gray: var(--color-text-gray, #78787a);\n\n --axebow-premium-label: var(--color-premium-label, #b9935a33);\n --axebow-premium-text: var(--color-premium-text, #b9935a);\n --axebow-deleting-link: var(--color-deleting-link, #a0a0a0);\n --axebow-border-gray: var(--color-border-gray, #9ca3af);\n font-family: var(--font-sans, \"Open Sans\", sans-serif);\n font-size: var(--text-base, 0.75rem);\n line-height: var(--text-base--line-height, 1rem);\n }\n\n /** Axebow switch */\n sl-switch::part(control) {\n background-color: var(--axebow-light-gray);\n }\n sl-switch[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n }\n sl-switch::part(thumb) {\n background-color: white;\n }\n\n /** Axebow checkbox */\n sl-checkbox[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n }\n\n /** Axebow select and input global focus */\n sl-input:focus-within::part(base),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black) !important;\n box-shadow: 0 0 0 1px var(--axebow-black) !important;\n }\n sl-select sl-option:hover::part(base) {\n background-color: #e9ecef;\n }\n sl-select {\n --sl-color-primary-50: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n }\n sl-select sl-option[checked]::part(base),\n sl-select sl-option[current]::part(base),\n sl-select sl-option[aria-selected='true']::part(base) {\n background-color: var(--axebow-tertiary) !important;\n color: white !important;\n }\n\n /** Axebow tab group */\n sl-tab-group {\n --indicator-color: var(--axebow-tertiary);\n }\n sl-tab {\n --sl-font-size-small: var(--text-base); /* 12px */\n }\n sl-tab::part(base) {\n font-size: var(--text-base); /* 12px */\n }\n sl-tab[active]::part(base) {\n color: var(--axebow-tertiary);\n }\n sl-tab:hover::part(base) {\n color: var(--axebow-tertiary);\n }\n`;\n\nexport const STATUS_COLORS = {\n HEALTHY: 'var(--axebow-success)',\n ERROR: 'var(--axebow-error)',\n WARNING: 'var(--axebow-warning)',\n DEFAULT: 'var(--axebow-gray)',\n} as const;\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { html, unsafeCSS, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-icon')\nexport class AxebowIcon extends LitElement {\n @property({ type: String }) iconName = 'home';\n @property({ type: String }) iconColor = 'var(--axebow-primary)';\n @property({ type: Number }) rotate = 0;\n @property({ type: Boolean }) filled = false;\n @property({ type: String }) size: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' = 'medium';\n @property({ type: Number }) marginBottom = 0;\n\n static styles = unsafeCSS(tailwindCss);\n\n render() {\n const filled = \"[font-variation-settings:'FILL'_1,'wght'_400,'GRAD'_0,'opsz'_24]\";\n const outlined = \"[font-variation-settings:'FILL'_0,'wght'_400,'GRAD'_0,'opsz'_24]\";\n return html`\n <span\n class=\"font-[Material_Symbols_Outlined] inline-block align-middle whitespace-nowrap ${this.filled\n ? filled\n : outlined}\"\n style=\"color: ${this.iconColor}; transform: rotate(${this.rotate}deg); font-size: ${this.size === 'xx-small'\n ? 'var(--text-sm)'\n : this.size === 'x-small'\n ? 'var(--text-base)'\n : this.size === 'small'\n ? 'var(--text-md)'\n : this.size === 'medium'\n ? 'var(--text-xl)'\n : this.size === 'large'\n ? 'var(--text-3xl)'\n : this.size === 'x-large'\n ? 'var(--text-5xl)'\n : 'var(--text-xl)'};\n margin-bottom: ${this.size === 'xx-small'\n ? '0'\n : this.size === 'x-small'\n ? '0'\n : this.size === 'small'\n ? '0'\n : this.size === 'medium'\n ? '0'\n : this.size === 'large'\n ? '0.375rem'\n : this.size === 'x-large'\n ? '0.5rem'\n : `${this.marginBottom}px`};\"\n >\n ${this.iconName}\n </span>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\nexport interface AxebowFilterBarOption {\n label: string;\n value: string;\n}\n\nexport interface AxebowFilterBarItem {\n key: string;\n label: string;\n placeholder: string;\n value: string;\n options: AxebowFilterBarOption[];\n separate?: boolean;\n}\n\n/**\n * Purely presentational row of dropdown filters. Receives fully-resolved\n * items to render and only emits `option-change`; it holds no business\n * state, that is the responsibility of the consumer.\n */\n@customElement('axebow-filter-bar')\nexport class AxebowFilterBar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n sl-select {\n --sl-color-primary-500: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-focus-ring-width: 0px;\n }\n sl-select::part(combobox) {\n min-height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n padding-inline: 0.75rem;\n padding-block: 0.5rem;\n gap: 0.5rem;\n box-shadow: none;\n background-color: var(--axebow-white, white);\n }\n sl-select:hover::part(combobox) {\n border-color: var(--axebow-gray);\n }\n sl-select[open]::part(combobox),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black);\n }\n sl-select::part(display-input) {\n color: var(--axebow-secondary);\n font-size: 0.875rem;\n padding: 0;\n }\n sl-select::part(expand-icon) {\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n sl-option::part(checked-icon) {\n display: none;\n }\n sl-option::part(base) {\n font-size: 0.875rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: AxebowFilterBarItem[] = [];\n\n private _resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this._updateSeparateLayout());\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n }\n\n firstUpdated() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (container) this._resizeObserver?.observe(container);\n this._updateSeparateLayout();\n }\n\n updated() {\n requestAnimationFrame(() => this._updateSeparateLayout());\n }\n\n private _updateSeparateLayout() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (!container) return;\n const items = Array.from(container.querySelectorAll<HTMLElement>('.filter-bar-item'));\n if (items.length < 2) return;\n const firstTop = items[0].offsetTop;\n const isSingleRow = items.every((item) => item.offsetTop === firstTop);\n const firstSeparate = container.querySelector<HTMLElement>('.filter-bar-item[data-separate]');\n if (firstSeparate) {\n firstSeparate.style.marginLeft = isSingleRow ? 'auto' : '';\n }\n }\n\n private _onChange(e: CustomEvent, key: string) {\n const value = (e.target as HTMLSelectElement).value;\n this.dispatchEvent(new CustomEvent('option-change', { detail: { key, value }, bubbles: true, composed: true }));\n }\n\n private _renderItem(item: AxebowFilterBarItem) {\n return html`\n <div\n class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36 max-w-[23.75rem]\"\n ?data-separate=${item.separate}\n >\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\n class=\"w-full\"\n placeholder=${item.placeholder}\n value=${item.value}\n data-key=${item.key}\n @sl-change=${(e: CustomEvent) => this._onChange(e, item.key)}\n >\n <axebow-icon\n slot=\"expand-icon\"\n iconName=\"chevron_right\"\n rotate=\"90\"\n size=\"small\"\n iconColor=\"var(--axebow-secondary)\"\n ></axebow-icon>\n ${item.options.map((option) => html`<sl-option value=${option.value}>${option.label}</sl-option>`)}\n </sl-select>\n </div>\n `;\n }\n\n render() {\n return html`\n <div class=\"filter-bar flex items-end gap-4 flex-wrap py-8\">\n ${this.items.map((item) => this._renderItem(item))}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-quick-action-card')\nexport class AxebowQuickActionCard extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: block; }`];\n\n @property({ type: String }) icon = '';\n @property({ type: String }) label = '';\n\n render() {\n return html`\n <div\n class=\"flex flex-col items-center justify-center gap-1 w-[10.5rem] px-4 py-3 rounded bg-white hover:bg-(--axebow-base) cursor-pointer transition-colors duration-150\"\n @click=${this._onClick}\n >\n <axebow-icon iconName=${this.icon} iconColor=\"var(--axebow-primary)\" size=\"medium\"></axebow-icon>\n <span class=\"text-base font-semibold text-(--axebow-primary) text-center whitespace-nowrap\">${this.label}</span>\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('card-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-quick-action-card.js';\n\nexport interface QuickAction {\n icon: string;\n label: string;\n visible: boolean;\n onClick: () => void;\n}\n\n/**\n * Trigger + flyout panel. Drops below the trigger, offset by the trigger's own\n * width so it clears the sidebar column instead of appearing underneath it.\n * First 3 actions render as the infra-creation row, the rest as the\n * deploy/service row (wraps after 3 to match the 168px card width).\n */\n@customElement('axebow-quick-actions')\nexport class AxebowQuickActions extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: inline-block; }`];\n\n @property({ type: String }) label = '';\n @property({ type: Array }) actions: QuickAction[] = [];\n\n @state() private open = false;\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n private _handleOutsideClick = (e: MouseEvent) => {\n if (this.open && !this.contains(e.target as Node)) {\n this.open = false;\n }\n };\n\n private _toggle(e: Event) {\n e.stopPropagation();\n this.open = !this.open;\n }\n\n private _select(action: QuickAction) {\n action.onClick();\n this.open = false;\n }\n\n render() {\n const row1 = this.actions.slice(0, 3).filter((a) => a.visible);\n const row2 = this.actions.slice(3, 7).filter((a) => a.visible);\n\n return html`\n <div class=\"relative\">\n <button\n type=\"button\"\n class=\"group flex flex-col items-center justify-center gap-1 w-20 h-16 border-none cursor-pointer transition-colors duration-150 ${this\n .open\n ? 'bg-(--axebow-base)'\n : 'bg-(--axebow-primary) hover:bg-(--axebow-base)'}\"\n @click=${this._toggle}\n >\n <span\n class=\"flex flex-col items-center justify-center gap-1 ${this.open\n ? 'text-(--axebow-primary)'\n : 'text-white group-hover:text-(--axebow-primary)'}\"\n >\n <axebow-icon iconName=${this.open ? 'close' : 'apps'} iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n <span\n class=\"text-xs whitespace-nowrap ${this.open ? 'font-semibold' : 'font-normal group-hover:font-semibold'}\"\n >${this.label}</span\n >\n </span>\n </button>\n\n ${this.open\n ? html`\n <div\n class=\"absolute top-full left-full mt-2 z-2000 flex flex-col gap-1 p-1 bg-white border border-solid border-(--axebow-light-gray) rounded-lg axebow-shadow\"\n >\n <div class=\"flex gap-1\">\n ${row1.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n ${row2.length\n ? html`\n <div class=\"h-[0.0625rem] w-full bg-(--axebow-light-gray)\"></div>\n <div class=\"flex flex-wrap gap-x-1 gap-y-[0.1875rem]\">\n ${row2.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n `\n : ''}\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/dropdown/dropdown.js';\nimport '@shoelace-style/shoelace/dist/components/menu/menu.js';\nimport '@shoelace-style/shoelace/dist/components/switch/switch.js';\nimport '@shoelace-style/shoelace/dist/components/tab-group/tab-group.js';\nimport '@shoelace-style/shoelace/dist/components/tab/tab.js';\nimport '@shoelace-style/shoelace/dist/components/tab-panel/tab-panel.js';\n\nexport interface ProfileMenuItem {\n name: string;\n onClick: () => void;\n}\n\nexport interface NotificationAction {\n label: string;\n color: string;\n action: () => void;\n}\n\nexport interface FormattedNotificationVM {\n id: string;\n title: string;\n description: string;\n icon: string;\n color: string;\n status: 'read' | 'unread';\n date: string;\n callToAction: boolean;\n actions?: NotificationAction[];\n onClick: () => void;\n}\n\n/**\n * Right-hand header cluster: notifications dropdown + profile menu.\n */\n@customElement('axebow-header-actions')\nexport class AxebowHeaderActions extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n sl-dropdown::part(panel) {\n max-width: 500px;\n }\n .notification-description code {\n display: inline-block;\n white-space: pre-wrap;\n word-break: break-all;\n }\n .notification-description pre {\n white-space: pre-wrap;\n }\n `,\n ];\n\n @property({ type: String }) userName = '';\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n @state() private showUnreadOnly = false;\n\n private handleShowUnreadOnlyChange(e: any) {\n this.showUnreadOnly = e.target.checked;\n }\n\n render() {\n const unreadNotifications = this.notifications.filter((n) => n.status === 'unread');\n const notificationsToShow = this.showUnreadOnly ? unreadNotifications : this.notifications;\n\n return html`\n <div class=\"flex items-center gap-2 z-10 shrink-0 min-w-0 ml-auto\">\n <sl-dropdown>\n <div\n class=\"relative group w-9 h-9 rounded-lg flex items-center justify-center cursor-pointer transition-colors duration-150 hover:bg-[#344966]\"\n slot=\"trigger\"\n >\n <span class=\"inline-block transition-transform duration-200 group-hover:rotate-15\">\n <axebow-icon iconName=\"notifications\" iconColor=\"white\"></axebow-icon>\n </span>\n ${unreadNotifications.length > 0\n ? html`<div\n class=\"absolute bottom-0.5 right-0.5 flex items-center justify-center rounded-full bg-(--axebow-error) text-white font-bold z-10 pointer-events-none ${unreadNotifications.length <\n 10\n ? 'w-4 h-4 text-sm'\n : 'h-4 min-w-4 px-0.5 text-sm'}\"\n >\n ${unreadNotifications.length > 99 ? '99+' : unreadNotifications.length}\n </div>`\n : ''}\n <span\n class=\"absolute top-1/2 -translate-y-1/2 right-[calc(100%+10px)] translate-x-1 opacity-0 group-hover:opacity-100 group-hover:translate-x-0 text-base transition-all duration-120 bg-[#b4cded] text-[#344966] font-semibold leading-none px-3.5 py-2 rounded-lg whitespace-nowrap shadow-[0_6px_16px_rgba(13,24,33,0.18)] pointer-events-none z-2001\"\n >${this.notificationsLabel}</span\n >\n </div>\n <sl-tab-group class=\"bg-white rounded-lg w-120 text-base\">\n <sl-tab slot=\"nav\" panel=\"my_notifications\">${this.myNotificationsTabLabel}</sl-tab>\n <sl-tab slot=\"nav\" panel=\"action_needed\">${this.actionNeededTabLabel}</sl-tab>\n\n <sl-tab-panel class=\"bg-gray-100\" name=\"my_notifications\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.notifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n <div class=\"flex justify-between items-center flex-wrap gap-4\">\n <div class=\"flex items-center py-1\">\n <p class=\"mr-4 text-base\">${this.showUnreadOnlyLabel}</p>\n <sl-switch @sl-change=${(e: any) => this.handleShowUnreadOnlyChange(e)}></sl-switch>\n <p class=\"italic text-gray-400 text-base\">\n ${this.showUnreadOnly ? this.onLabel : this.offLabel}\n </p>\n </div>\n <button class=\"text-gray-500 cursor-pointer text-base\" @click=${() => this.onMarkAllAsRead()}>\n ${this.markAllAsReadLabel}\n </button>\n </div>\n ${this.showUnreadOnly && unreadNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noUnreadNotificationsLabel}</p>\n </div>`\n : html` ${notificationsToShow.map((item) => this.renderNotificationCard(item))} `}\n </div>\n `}\n </div>\n </sl-tab-panel>\n <sl-tab-panel class=\"bg-gray-100\" name=\"action_needed\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.actionNeededNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center p-4\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noActionNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n ${this.actionNeededNotifications.map((item) => this.renderNotificationCard(item))}\n </div>\n `}\n </div>\n </sl-tab-panel>\n </sl-tab-group>\n </sl-dropdown>\n <sl-dropdown class=\"shrink-0\">\n <div\n slot=\"trigger\"\n class=\"group flex items-center gap-2 h-9 px-3 rounded-lg text-white font-semibold cursor-pointer whitespace-nowrap transition-all duration-150 hover:bg-white hover:text-[#344966] hover:shadow-[0_2px_6px_rgba(13,24,33,0.14)] text-base\"\n >\n <span class=\"text-white group-hover:text-(--axebow-primary) transition-colors duration-150\">\n <axebow-icon iconName=\"account_circle\" iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n </span>\n ${this.userName}\n </div>\n <sl-menu class=\"bg-white rounded-lg p-2 min-w-55 axebow-shadow\">\n ${this.profileMenuItems.map(\n (item) => html`\n <button\n class=\"w-full flex text-base items-center justify-between ml-auto px-4 py-2 cursor-pointer rounded-lg hover:bg-gray-200 transition-colors ease-in-out duration-200 hover:text-(--axebow-tertiary)\"\n @click=${() => item.onClick()}\n >\n <span class=\"text-(--axebow-primary)\">${item.name}</span>\n <axebow-icon iconName=\"arrow_right_alt\" size=\"medium\"></axebow-icon>\n </button>\n `\n )}\n <button\n class=\"ml-auto flex items-center justify-between w-full px-4 py-2 text-(--axebow-error) cursor-pointer rounded-lg text-base\"\n @click=${() => this.onLogout()}\n >\n <span class=\"text-(--axebow-error) mt-1\">${this.logoutLabel}</span>\n <axebow-icon iconName=\"mode_off_on\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>\n </button>\n </sl-menu>\n </sl-dropdown>\n </div>\n `;\n }\n\n private renderNotificationCard(item: FormattedNotificationVM) {\n return html`\n <div\n class=\"relative flex gap-2 p-2 w-full rounded-md border-2 border-solid text-base ${item.status === 'unread'\n ? 'border-gray-500 hover:border-(--axebow-tertiary) text-gray-600'\n : 'border-gray-300 text-gray-400'} \"\n @click=${() => item.onClick()}\n >\n ${item.status === 'unread'\n ? html` <div class=\"absolute top-[-7px] left-[-7px] h-3.5 w-3.5 rounded-full bg-(--axebow-success)\"></div>`\n : ''}\n <axebow-icon\n iconName=${item.icon}\n size=\"medium\"\n iconColor=${item.status === 'unread' ? item.color : 'gray'}\n ></axebow-icon>\n <div class=\"flex flex-1 flex-col gap-1 py-1.25 min-w-0 overflow-hidden\">\n <div class=\"flex justify-between gap-2\">\n <h4 class=\"font-semibold wrap-break-word\">${item.title}</h4>\n <span class=\"ms-auto min-w-fit shrink-0 text-gray-400\">${item.date}</span>\n </div>\n <div\n class=\"notification-description leading-tight max-w-full pe-4 overflow-x-hidden overflow-y-auto max-h-75 wrap-break-word\"\n .innerHTML=${item.description}\n ></div>\n ${item.actions && item.actions.length > 0\n ? html`\n <div class=\"flex gap-4 ml-auto pe-4 flex-wrap\">\n ${item.actions.map(\n (action) => html`\n <button class=\"text-sm font-semibold text-[${action.color}] hover:underline\" @click=${action.action}>\n ${action.label}\n </button>\n `\n )}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport './parts/axebow-quick-actions.js';\nimport './parts/axebow-header-actions.js';\nimport type { QuickAction } from './parts/axebow-quick-actions.js';\nimport type { ProfileMenuItem, FormattedNotificationVM } from './parts/axebow-header-actions.js';\n\n/**\n * Purely presentational app header. Receives fully-resolved data and\n * callback props; quick-actions open state and the notifications\n * unread-only filter are owned by their respective sub-components.\n */\n@customElement('axebow-header')\nexport class AxebowHeader extends LitElement {\n @property({ type: Boolean, reflect: true }) minimal = false;\n @property({ type: String }) logoUrl = '';\n @property({ type: String }) logoAlt = '';\n @property({ attribute: false }) onLogoClick: () => void = () => {};\n @property({ type: String }) userName = '';\n @property({ type: String }) quickActionsLabel = '';\n @property({ type: Array }) quickActions: QuickAction[] = [];\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n static styles = [unsafeCSS(tailwindCss), axebowTheme];\n\n render() {\n return html`\n <header class=\"relative flex items-center justify-between h-full pe-4 py-2\">\n ${this.minimal\n ? html`\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n `\n : html`\n <axebow-quick-actions .label=${this.quickActionsLabel} .actions=${this.quickActions}></axebow-quick-actions>\n\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n\n <axebow-header-actions\n .userName=${this.userName}\n .profileMenuItems=${this.profileMenuItems}\n .logoutLabel=${this.logoutLabel}\n .onLogout=${this.onLogout}\n .notificationsLabel=${this.notificationsLabel}\n .notifications=${this.notifications}\n .actionNeededNotifications=${this.actionNeededNotifications}\n .myNotificationsTabLabel=${this.myNotificationsTabLabel}\n .actionNeededTabLabel=${this.actionNeededTabLabel}\n .noNotificationsLabel=${this.noNotificationsLabel}\n .noUnreadNotificationsLabel=${this.noUnreadNotificationsLabel}\n .noActionNotificationsLabel=${this.noActionNotificationsLabel}\n .showUnreadOnlyLabel=${this.showUnreadOnlyLabel}\n .onLabel=${this.onLabel}\n .offLabel=${this.offLabel}\n .markAllAsReadLabel=${this.markAllAsReadLabel}\n .onMarkAllAsRead=${this.onMarkAllAsRead}\n ></axebow-header-actions>\n `}\n </header>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html, css, LitElement, unsafeCSS } from 'lit';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/divider/divider.js';\n\nexport interface NavItem {\n key: string;\n label: string;\n icon: string;\n onClick: () => void;\n isRoot?: boolean;\n openInNewTab?: boolean;\n}\n\nexport interface NavDivider {\n divider: true;\n}\n\nexport type SidebarEntry = NavItem | NavDivider;\n\n/**\n * Purely presentational app sidebar. Receives fully-resolved nav entries,\n * the currently-selected item key, and the reserved bottom padding (driven\n * by the app's own footer-height tracking); owns only hover-tooltip UI\n * state.\n */\n@customElement('axebow-sidebar')\nexport class AxebowSidebar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n position: relative;\n width: 4rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: SidebarEntry[] = [];\n @property({ type: Array }) bottomItems: NavItem[] = [];\n @property({ type: String }) selectedKey: string | null = null;\n @property({ type: Number }) paddingBottom = 10;\n\n @state() private hoveredItem: NavItem | null = null;\n @state() private tooltipTop = 0;\n @state() private tooltipLeft = 0;\n\n private handleMouseEnter(event: MouseEvent, item: NavItem) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n this.tooltipTop = rect.top + 10;\n this.tooltipLeft = rect.right - 8;\n this.hoveredItem = item;\n }\n\n private handleMouseLeave() {\n this.hoveredItem = null;\n }\n\n private _isSelected(item: NavItem): boolean {\n return this.selectedKey === item.key || (!!item.isRoot && this.selectedKey === null);\n }\n\n render() {\n return html`\n <nav\n style=\"padding-bottom: ${this.paddingBottom}px;\"\n class=\"h-full flex flex-col justify-between overflow-x-hidden pt-2\"\n >\n <ul class=\"flex flex-col gap-0 w-full pb-4\">\n ${this.items.map((entry) =>\n 'divider' in entry\n ? html` <sl-divider class=\"w-[calc(100%-10px)] my-2 h-px bg-(--axebow-light-gray)\"></sl-divider> `\n : this._renderNavItem(entry, this._isSelected(entry))\n )}\n </ul>\n <ul>\n ${this.bottomItems.map((item) => this._renderBottomItem(item))}\n </ul>\n </nav>\n\n ${this.hoveredItem\n ? html`\n <div\n class=\"fixed ps-4 flex items-center pointer-events-none z-9999\"\n style=\"left: ${this.tooltipLeft}px; top: ${this.tooltipTop}px; height: 3rem;\"\n >\n <span\n class=\"flex items-center gap-1 px-2 py-1 bg-white rounded-lg text-base border border-solid border-(--axebow-gray) shadow-lg\"\n >${this.hoveredItem.label}${this.hoveredItem.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n `\n : ''}\n `;\n }\n\n private _renderNavItem(item: NavItem, selected: boolean) {\n return html`\n <li\n class=\"${selected\n ? 'bg-(--axebow-base) rounded-l-xl cursor-default'\n : 'cursor-pointer'} flex flex-col w-full h-16 items-center justify-center relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-xs overflow-hidden whitespace-nowrap opacity-100 max-w-full\">${item.label}</span>\n </div>\n\n ${!selected\n ? html`\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n `\n : ''}\n </li>\n `;\n }\n\n private _renderBottomItem(item: NavItem) {\n return html`\n <li\n class=\"flex flex-col w-full items-center justify-center cursor-pointer relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center py-3\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-sm overflow-hidden whitespace-nowrap opacity-100 max-w-full\"\n >${item.label}${item.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n </li>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface FooterLink {\n label: string;\n url: string;\n onClick: () => void;\n}\n\n/**\n * Purely presentational site footer. Receives already-filtered, already\n * translated links; owns only the footer-height broadcast used by\n * axebow-sidebar to reserve bottom padding.\n */\n@customElement('axebow-footer')\nexport class AxebowFooter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n position: relative;\n z-index: 1001;\n overflow: hidden;\n }\n `,\n ];\n\n @property({ type: Array }) links: FooterLink[] = [];\n\n private resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.emitFooterHeight();\n });\n this.resizeObserver.observe(this);\n window.addEventListener('resize', this.emitFooterHeight);\n window.addEventListener('scroll', this.emitFooterHeight, true);\n setTimeout(() => this.emitFooterHeight(), 0);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n window.removeEventListener('resize', this.emitFooterHeight);\n window.removeEventListener('scroll', this.emitFooterHeight, true);\n }\n\n private emitFooterHeight = () => {\n const rect = this.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n let visible = 0;\n if (rect.top < windowHeight && rect.bottom > 0) {\n const visibleBottom = Math.min(rect.bottom, windowHeight);\n const visibleTop = Math.max(rect.top, 0);\n visible = visibleBottom - visibleTop;\n }\n visible = Math.max(0, visible);\n this.dispatchEvent(\n new CustomEvent('footer-height-changed', {\n detail: { height: visible },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n render() {\n return html`\n <footer\n class=\"text-center text-sm flex w-full bg-(--axebow-primary) text-white justify-center items-center h-8 px-2 md:gap-8 gap-4 flex-wrap\"\n >\n ${this.links.map(\n (link) => html`\n <button\n class=\"h-7 text-sm p-1 inline-flex items-center gap-1 opacity-70 hover:opacity-100 transition-opacity duration-150 text-(--axebow-anti-flash-white) bg-transparent border-0 cursor-pointer\"\n @click=${link.onClick}\n >\n ${link.label}\n <axebow-icon iconName=\"open_in_new\" iconColor=\"var(--axebow-anti-flash-white)\" size=\"small\"></axebow-icon>\n </button>\n `\n )}\n </footer>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface BreadcrumbSecondaryPage {\n label: string;\n onClick?: () => void;\n}\n\n/**\n * Purely presentational page breadcrumb: optional home block, optional\n * clickable secondary-page trail, the current page title, and an optional\n * \"required field\" note. Receives all copy and navigation as properties.\n */\n@customElement('axebow-breadcrumb-header')\nexport class AxebowBreadcrumbHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n `,\n ];\n\n @property({ type: Boolean }) padded = false;\n @property({ type: Boolean }) showHomeBlock = true;\n @property({ attribute: false }) onHomeClick: () => void = () => {};\n @property({ type: Boolean }) showSecondaryPages = false;\n @property({ type: Array }) secondaryPages: BreadcrumbSecondaryPage[] = [];\n @property({ type: String }) mainPage = '';\n @property({ type: Boolean }) showRequiredField = false;\n @property({ type: String }) requiredFieldLabel = '';\n\n render() {\n return html`\n <div class=\"flex flex-col gap-1 py-8 ${this.padded ? 'ps-8' : ''}\">\n <div class=\"flex flex-wrap items-center gap-2 text-xl text-[#344966]\">\n ${this.showHomeBlock\n ? html`\n <span class=\"flex items-center gap-2 cursor-pointer\" @click=${() => this.onHomeClick()}>\n <axebow-icon iconName=\"home\" iconColor=\"#344966\" size=\"medium\"></axebow-icon>\n <span class=\"font-normal\">/</span>\n </span>\n `\n : ''}\n ${this.showSecondaryPages\n ? this.secondaryPages.map(\n (page) => html`\n <span\n class=\"font-normal ${page.onClick ? 'cursor-pointer hover:underline' : ''}\"\n @click=${page.onClick ? () => page.onClick!() : undefined}\n >${page.label} /</span\n >\n `\n )\n : ''}\n <span class=\"font-semibold\">${this.mainPage}</span>\n </div>\n ${this.showRequiredField\n ? html`\n <div class=\"text-sm\">\n <span class=\"font-bold text-(--axebow-error)\">*</span>\n <span class=\"font-normal text-(--axebow-rich-black)\"> ${this.requiredFieldLabel}</span>\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import { html, LitElement, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport '@shoelace-style/shoelace/dist/components/button/button.js';\n\n@customElement('axebow-button')\nexport class AxebowButton extends LitElement {\n @property({ type: String, reflect: true }) variant:\n | 'default'\n | 'primary'\n | 'success'\n | 'neutral'\n | 'warning'\n | 'danger'\n | 'text' = 'default';\n\n @property({ type: String, reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n @property({ type: Boolean, reflect: true }) outline = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n @property({ type: Boolean, reflect: true }) circle = false;\n @property({ type: Boolean, attribute: false }) disabled = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean, reflect: true }) caret = false;\n @property({ type: String }) type: 'button' | 'submit' | 'reset' = 'button';\n @property({ type: String }) href?: string;\n @property({ type: String }) target?: string;\n @property({ type: String }) name?: string;\n @property({ type: String }) value?: string;\n\n constructor() {\n super();\n this.addEventListener('click', this._guardDisabledClick, { capture: true });\n }\n\n private _guardDisabledClick = (event: MouseEvent) => {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-button {\n width: 100%;\n }\n\n /**\n * Hover is always a plain recolor to axebow-gray, no matter the\n * variant - nothing else about the button's structure changes.\n */\n\n /** Default / neutral button */\n sl-button[variant='default']:hover::part(base),\n sl-button[variant='neutral']:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Primary button */\n sl-button[variant='primary']::part(base) {\n background: var(--axebow-tertiary);\n color: white;\n border-color: transparent;\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary']:hover::part(base) {\n background: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Outlined primary button */\n sl-button[variant='primary'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Text button */\n sl-button[variant='text']::part(base) {\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='text']::part(label) {\n color: var(--axebow-tertiary);\n }\n sl-button[variant='text']:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n sl-button[variant='text']:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Success button */\n sl-button[variant='success']::part(base) {\n background: var(--axebow-success);\n border-color: var(--axebow-success);\n color: white;\n border-radius: 8px;\n outline-color: var(--axebow-success);\n }\n sl-button[variant='success']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger button */\n sl-button[variant='danger']::part(base) {\n background: var(--axebow-error);\n border-color: var(--axebow-error);\n color: white;\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger outlined */\n sl-button[variant='danger'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-error);\n border-color: var(--axebow-error);\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger text (host class) */\n :host(.axebow-red-button-text) sl-button::part(base) {\n outline-color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button::part(label) {\n color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Warning button (host class) */\n :host(.axebow-warning-button-bg) sl-button::part(base) {\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n :host(.axebow-warning-button-bg) sl-button:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n `,\n ];\n\n render() {\n return html`\n <sl-button\n exportparts=\"base, label, prefix, suffix, caret\"\n variant=${this.variant}\n size=${this.size}\n ?outline=${this.outline}\n ?pill=${this.pill}\n ?circle=${this.circle}\n ?disabled=${this.disabled}\n ?loading=${this.loading}\n ?caret=${this.caret}\n type=${this.type}\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n name=${ifDefined(this.name)}\n value=${ifDefined(this.value)}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n </sl-button>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\n\n/**\n * Purely presentational search box, fixed at 320x40px. Receives its value\n * and placeholder as properties and emits `search-change` with the new\n * value on input/clear; it holds no business state.\n */\n@customElement('axebow-search')\nexport class AxebowSearch extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-input {\n width: 20rem;\n --sl-focus-ring-width: 0px;\n }\n sl-input::part(base) {\n height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n box-shadow: none;\n }\n sl-input:focus-within::part(base) {\n border-color: var(--axebow-tertiary);\n }\n sl-input::part(input) {\n color: var(--axebow-rich-black, #0d1821);\n font-size: 0.875rem;\n }\n sl-input::part(prefix) {\n padding-inline-start: 0.75rem;\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n\n private _emitChange(value: string) {\n this.dispatchEvent(\n new CustomEvent('search-change', { detail: { value }, bubbles: true, composed: true })\n );\n }\n\n private _onInput(e: Event) {\n this._emitChange((e.target as HTMLInputElement).value);\n }\n\n private _onClear() {\n this._emitChange('');\n }\n\n render() {\n return html`\n <sl-input placeholder=${this.placeholder} .value=${this.value} clearable @sl-input=${this._onInput} @sl-clear=${this._onClear}>\n <axebow-icon slot=\"prefix\" iconName=\"search\" iconColor=\"var(--axebow-gray)\" size=\"small\"></axebow-icon>\n </sl-input>\n `;\n }\n}\n","import { html, css, LitElement, unsafeCSS, TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport '../axebow-icon/axebow-icon.js';\n\n/**\n * Template-method base for every axebow-*-input control: owns the shared\n * label/description/error wrapper markup and the disabled-aware value\n * change plumbing. Concrete inputs only implement their own field markup\n * via render().\n */\nexport abstract class AxebowInputBase extends LitElement {\n static baseStyles = [\n unsafeCSS(tailwindCss),\n axebowTheme,\n css`\n sl-input,\n sl-select {\n width: 100%;\n }\n sl-input::part(base),\n sl-select::part(combobox) {\n --sl-input-focus-ring-color: transparent;\n --sl-color-primary-600: transparent;\n --sl-input-border-color-focus: transparent;\n }\n .input-error sl-input,\n .input-error sl-select {\n --sl-input-border-color: var(--axebow-error, #e53e3e);\n --sl-input-border-color-focus: var(--axebow-error, #e53e3e);\n --sl-input-border-color-hover: var(--axebow-error, #e53e3e);\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n @property({ type: String }) label = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) required = false;\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) hasError = false;\n @property({ type: String }) errorMessage = '';\n @property({ type: Number }) maxlength?: number;\n @property({ attribute: false }) callback?: (e: Event) => void;\n @property({ type: Boolean }) compact = false;\n\n protected handleChange(e: Event) {\n if (this.disabled) return;\n const target = e.target as HTMLInputElement | HTMLSelectElement;\n this.value = target.value;\n this.callback?.(e);\n }\n\n protected renderWrapper(content: TemplateResult): TemplateResult {\n return html`\n <div class=\"flex flex-col justify-end gap-2 w-full relative\">\n ${!this.compact || this.label\n ? html`<div class=\"flex items-baseline gap-2 ${this.description ? 'my-2' : ''}\">\n <p class=\"text-(--axebow-error)\">${this.required ? '*' : ''}</p>\n <h4 class=\"${this.compact ? 'font-normal text-sm' : 'font-bold text-base'}\">${this.label}</h4>\n </div>`\n : ''}\n ${this.description\n ? html`<p class=\"text-m h-12 overflow-hidden line-clamp-2 mb-1\" title=\"${this.description}\">\n ${this.description}\n </p>`\n : ''}\n ${content}\n ${!this.compact && this.hasError && this.errorMessage\n ? html`<div class=\"mt-1 min-h-5 text-(--axebow-error) text-sm flex items-center gap-1\">\n <span class=\"text-base shrink-0\"\n ><axebow-icon iconName=\"error\" iconColor=\"var(--axebow-error)\"></axebow-icon\n ></span>\n ${this.errorMessage}\n </div>`\n : ''}\n </div>\n `;\n }\n}\n","import { html, css } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\n@customElement('axebow-text-input')\nexport class AxebowTextInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n /* Anatomy for the labeled text-input case: label 17px tall, 4px gap\n to an optional description (also 17px tall, omitted entirely when\n absent - no reserved blank space), 8px gap to the 40px input box.\n 265.5px (16.59375rem) is the floor width - it grows with whatever\n space the parent gives it. */\n .fixed-field {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 16.59375rem;\n }\n .fixed-field .field-label,\n .fixed-field .field-description {\n width: 100%;\n height: 1.0625rem;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .fixed-field .field-label {\n margin-bottom: 0.25rem;\n }\n .fixed-field .field-description {\n margin-bottom: 0.5rem;\n }\n .fixed-field sl-input {\n width: 100%;\n }\n .fixed-field sl-input::part(base) {\n height: 2.5rem;\n }\n .fixed-field sl-input::part(input) {\n font-size: 0.875rem;\n }\n `,\n ];\n\n private renderFixedField() {\n const containerClass = this.hasError ? 'input-error' : '';\n return html`\n <div class=\"fixed-field\">\n <div class=\"flex items-baseline gap-2 field-label\">\n <p class=\"text-(--axebow-error) text-base leading-[1.0625rem] m-0\">${this.required ? '*' : ''}</p>\n <h4 class=\"font-semibold text-base leading-[1.0625rem] m-0 overflow-hidden text-ellipsis\">${this.label}</h4>\n </div>\n ${this.description\n ? html`<p class=\"field-description text-base leading-[1.0625rem] m-0\" title=\"${this.description}\">\n ${this.description}\n </p>`\n : ''}\n <div class=\"${containerClass}\">\n <sl-input\n @sl-input=\"${this.handleChange}\"\n placeholder=\"${this.placeholder}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n maxlength=\"${this.maxlength ?? 255}\"\n ></sl-input>\n </div>\n ${this.hasError && this.errorMessage\n ? html`<div class=\"mt-1 min-h-5 text-(--axebow-error) text-sm flex items-center gap-1\">\n <span class=\"text-base shrink-0\"\n ><axebow-icon iconName=\"error\" iconColor=\"var(--axebow-error)\"></axebow-icon\n ></span>\n ${this.errorMessage}\n </div>`\n : ''}\n </div>\n `;\n }\n\n render() {\n if (this.label && !this.compact) {\n return this.renderFixedField();\n }\n\n const containerClass = this.hasError ? 'input-error' : '';\n return this.renderWrapper(html`\n <div class=\"${containerClass}\">\n <sl-input\n @sl-input=\"${this.handleChange}\"\n placeholder=\"${this.placeholder}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n maxlength=\"${this.maxlength ?? 255}\"\n ></sl-input>\n </div>\n `);\n }\n}\n","import { html } from 'lit';\nimport { live } from 'lit/directives/live.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\n@customElement('axebow-numeric-input')\nexport class AxebowNumericInput extends AxebowInputBase {\n static styles = [...AxebowInputBase.baseStyles];\n\n @property({ type: Number }) max = Number.MAX_SAFE_INTEGER;\n @property({ type: Number }) min = 0;\n @property({ type: Boolean }) integerOnly = false;\n\n protected handleChange(e: Event) {\n if (this.disabled) return;\n if (this.integerOnly) {\n const target = e.target as HTMLInputElement;\n let truncated = Math.trunc(Number(target.value));\n if (truncated > this.max) {\n truncated = this.max;\n }\n target.value = truncated.toString();\n this.value = target.value;\n this.callback?.(e);\n return;\n }\n super.handleChange(e);\n }\n\n protected handleKeyDown(e: KeyboardEvent) {\n if (this.integerOnly && (e.key === '.' || e.key === ',' || e.key === 'e' || e.key === 'E')) {\n e.preventDefault();\n }\n }\n\n render() {\n const containerClass = this.hasError ? 'input-error' : '';\n return this.renderWrapper(html`\n <div class=\"${containerClass}\">\n <sl-input\n type=\"number\"\n placeholder=\"${this.placeholder}\"\n @sl-input=\"${this.handleChange}\"\n @keydown=\"${this.handleKeyDown}\"\n .value=\"${live(this.value)}\"\n ?disabled=\"${this.disabled}\"\n max=${this.max}\n min=${this.min}\n step=${this.integerOnly ? '1' : 'any'}\n ></sl-input>\n </div>\n `);\n }\n}\n","import { html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/checkbox/checkbox.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\nexport interface CheckboxOption {\n value: string;\n label: string;\n}\n\n@customElement('axebow-checkbox-input')\nexport class AxebowCheckboxInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n sl-checkbox::part(base) {\n display: flex;\n align-items: flex-start;\n margin-bottom: 20px;\n margin-top: 0;\n }\n sl-checkbox::part(control) {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n sl-checkbox::part(label) {\n display: flex;\n align-items: center;\n }\n `,\n ];\n\n @property({ type: Array }) options: CheckboxOption[] = [];\n\n render() {\n return this.renderWrapper(html`\n <div class=\"flex items-center gap-12 mt-6 ml-12\">\n ${this.options.map(\n (opt) => html`\n <sl-checkbox\n .value=${opt.value}\n .checked=${this.value === opt.value}\n @sl-input=${(e: Event) => {\n if (this.disabled) return;\n this.value = (e.target as HTMLInputElement).value;\n this.requestUpdate();\n this.callback?.(e);\n }}\n ?disabled=${this.disabled}\n >\n ${opt.label}\n </sl-checkbox>\n `\n )}\n </div>\n `);\n }\n}\n","import { html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/carousel/carousel.js';\nimport '@shoelace-style/shoelace/dist/components/carousel-item/carousel-item.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\nexport interface CarouselItem {\n id: string;\n content: string;\n registry?: string;\n name?: string;\n}\n\n@customElement('axebow-carousel-input')\nexport class AxebowCarouselInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n sl-carousel-item > div {\n width: 100%;\n box-sizing: border-box;\n }\n `,\n ];\n\n @property({ type: Array }) carouselItems: CarouselItem[] = [];\n @property({ attribute: false }) carouselItemRenderer?: (item: CarouselItem) => unknown;\n\n @state() private slidesPerPage = 3.4;\n private resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this.updateSlidesPerPage();\n this.resizeObserver = new ResizeObserver(() => this.updateSlidesPerPage());\n this.resizeObserver.observe(document.body);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n }\n\n private updateSlidesPerPage() {\n const width = window.innerWidth;\n let newSlidesPerPage: number;\n if (width < 480) newSlidesPerPage = 1.5;\n else if (width < 640) newSlidesPerPage = 2;\n else if (width < 768) newSlidesPerPage = 3;\n else if (width < 1024) newSlidesPerPage = 4;\n else if (width < 1400) newSlidesPerPage = 5;\n else newSlidesPerPage = 6;\n\n if (this.slidesPerPage !== newSlidesPerPage) {\n this.slidesPerPage = newSlidesPerPage;\n this.requestUpdate();\n }\n }\n\n render() {\n return this.renderWrapper(html`\n <div class=\"flex flex-wrap gap-4 justify-between\">\n <sl-carousel\n class=\"flex gap-5 w-full\"\n navigation\n slides-per-page=\"${this.slidesPerPage}\"\n @sl-input=\"${this.handleChange}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n >\n ${this.carouselItems.map((item) =>\n this.carouselItemRenderer\n ? this.carouselItemRenderer(item)\n : html`\n <sl-carousel-item>\n <div\n class=\"rounded-lg border-2 border-solid border-transparent p-4 transition-all duration-300 cursor-pointer text-center flex gap-4 items-center\"\n >\n ${item.content}\n </div>\n </sl-carousel-item>\n `\n )}\n </sl-carousel>\n </div>\n `);\n }\n}\n","import { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\nimport { CarouselItem } from './axebow-carousel-input.js';\n\n@customElement('axebow-providers-input')\nexport class AxebowProvidersInput extends AxebowInputBase {\n static styles = [...AxebowInputBase.baseStyles];\n\n @property({ type: Array }) carouselItems: CarouselItem[] = [];\n @property({ attribute: false }) carouselItemRenderer?: (item: CarouselItem) => unknown;\n\n render() {\n return this.renderWrapper(html`\n <div class=\"flex flex-wrap gap-3 mt-0\">\n ${this.carouselItems.map((item) =>\n this.carouselItemRenderer\n ? this.carouselItemRenderer(item)\n : html`\n <div>\n <img src=\"${item.content}\" alt=\"${item.id}\" />\n <p>${item.id}</p>\n </div>\n `\n )}\n </div>\n `);\n }\n}\n","import { html, css, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\nimport '@shoelace-style/shoelace/dist/components/dialog/dialog.js';\nimport '../axebow-button/axebow-button.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\nexport interface SelectOption {\n value: string;\n label: string | TemplateResult;\n}\n\n/**\n * Copy for the built-in \"add new option\" dialog. Grouped into one object\n * (rather than flat props) since it's a single cohesive sub-feature only\n * relevant when allowAddNew is set; the host app supplies its own\n * translated strings, this component holds no i18n dependency of its own.\n */\nexport interface AddDialogLabels {\n title: string;\n intro: string;\n nameLabel: string;\n namePlaceholder: string;\n requiredField: string;\n duplicateItem: string;\n cancel: string;\n save: string;\n}\n\nexport const DEFAULT_ADD_DIALOG_LABELS: AddDialogLabels = {\n title: 'Add New Item',\n intro: 'Enter the information for the new item.',\n nameLabel: 'Name',\n namePlaceholder: '',\n requiredField: 'This field is required',\n duplicateItem: 'An item with this name already exists',\n cancel: 'Cancel',\n save: 'Save',\n};\n\n@customElement('axebow-select-input')\nexport class AxebowSelectInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n .add-option {\n font-weight: bold;\n color: var(--axebow-tertiary);\n }\n `,\n ];\n\n @property({ type: Array }) options: SelectOption[] = [];\n @property({ type: Boolean }) allowAddNew = false;\n @property({ type: String }) addNewLabel = '+ Add new...';\n @property({ type: String }) emptyOptionLabel = 'Select option';\n @property({ type: Boolean }) showAddDialogInside = true;\n @property({ type: Boolean }) clearable = true;\n @property({ attribute: false }) onAddNew?: (newItem: { value: string; label: string; description?: string }) => void;\n @property({ attribute: false }) addDialogLabels: AddDialogLabels = DEFAULT_ADD_DIALOG_LABELS;\n\n @state() private showAddDialog = false;\n @state() private newItemName = '';\n @state() private newItemDescription = '';\n\n private handleSelectChange(e: Event) {\n if (this.disabled) return;\n const target = e.target as HTMLSelectElement;\n if (this.allowAddNew && target.value === '__add_new__') {\n setTimeout(() => {\n target.value = this.value;\n }, 0);\n if (this.showAddDialogInside) {\n this.showAddDialog = true;\n this.updateComplete.then(() => {\n const input = this.shadowRoot?.querySelector('#new-item-input') as any;\n setTimeout(() => input?.focus(), 100);\n });\n } else {\n this.onAddNew?.({ value: '__add_new__', label: this.addNewLabel });\n }\n return;\n }\n this.handleChange(e);\n }\n\n private createSlug(name: string): string {\n return name\n .toLowerCase()\n .normalize('NFD')\n .replace(new RegExp('[\\\\u0300-\\\\u036f]', 'g'), '')\n .replace(/[^a-z0-9\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '');\n }\n\n private saveNewItem() {\n const input = this.shadowRoot?.querySelector('#new-item-input') as any;\n if (!this.newItemName.trim()) {\n input?.setCustomValidity(this.addDialogLabels.requiredField);\n input?.reportValidity();\n return;\n }\n input?.setCustomValidity('');\n const itemValue = this.createSlug(this.newItemName);\n if (this.options.find((opt) => opt.value === itemValue)) {\n input?.setCustomValidity(this.addDialogLabels.duplicateItem);\n input?.reportValidity();\n return;\n }\n const newItem = {\n value: itemValue,\n label: this.newItemName.trim(),\n description: this.newItemDescription.trim(),\n };\n this.onAddNew?.(newItem);\n this.closeAddDialog();\n }\n\n private cancelNewItem() {\n this.closeAddDialog();\n }\n\n private closeAddDialog() {\n this.showAddDialog = false;\n this.newItemName = '';\n this.newItemDescription = '';\n const input = this.shadowRoot?.querySelector('#new-item-input') as any;\n input?.setCustomValidity('');\n }\n\n private handleDialogKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n this.saveNewItem();\n }\n }\n\n render() {\n const containerClass = this.hasError ? 'input-error' : '';\n const selectOptions = this.allowAddNew\n ? [...this.options, { value: '__add_new__', label: this.addNewLabel }]\n : this.options;\n\n const selectTemplate = html`\n <div class=\"${containerClass}\">\n <sl-select\n placeholder=\"${this.placeholder || this.emptyOptionLabel}\"\n @sl-input=\"${this.allowAddNew ? this.handleSelectChange : this.handleChange}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n ?clearable=${this.clearable}\n >\n ${selectOptions.map(\n (opt) =>\n html`<sl-option value=\"${opt.value}\" class=\"${opt.value === '__add_new__' ? 'add-option' : ''}\"\n >${opt.label}</sl-option\n >`\n )}\n </sl-select>\n </div>\n `;\n\n const dialogTemplate = this.allowAddNew\n ? html`\n <sl-dialog\n ?open=\"${this.showAddDialog}\"\n label=\"${this.addDialogLabels.title}\"\n @sl-after-hide=\"${this.closeAddDialog}\"\n >\n <div class=\"flex flex-col gap-4\">\n <p>${this.addDialogLabels.intro}</p>\n <sl-input\n id=\"new-item-input\"\n label=\"${this.addDialogLabels.nameLabel}\"\n placeholder=\"${this.addDialogLabels.namePlaceholder}\"\n .value=\"${this.newItemName}\"\n @sl-input=\"${(e: Event) => {\n this.newItemName = (e.target as HTMLInputElement).value;\n }}\"\n @keydown=\"${this.handleDialogKeydown}\"\n required\n maxlength=\"100\"\n ></sl-input>\n </div>\n <div class=\"flex justify-end gap-3 mt-6\" slot=\"footer\">\n <axebow-button variant=\"default\" @click=\"${this.cancelNewItem}\"\n >${this.addDialogLabels.cancel}</axebow-button\n >\n <axebow-button variant=\"primary\" @click=\"${this.saveNewItem}\"\n >${this.addDialogLabels.save}</axebow-button\n >\n </div>\n </sl-dialog>\n `\n : '';\n\n return this.renderWrapper(html`${selectTemplate}${dialogTemplate}`);\n }\n}\n","import { html, css, LitElement, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport { CarouselItem } from './axebow-carousel-input.js';\nimport { AddDialogLabels, DEFAULT_ADD_DIALOG_LABELS } from './axebow-select-input.js';\nimport './axebow-text-input.js';\nimport './axebow-numeric-input.js';\nimport './axebow-select-input.js';\nimport './axebow-checkbox-input.js';\nimport './axebow-carousel-input.js';\nimport './axebow-providers-input.js';\n\nexport type ControlType = 'input' | 'select' | 'carousel' | 'numeric' | 'integer' | 'checkbox' | 'providers' | 'small-input';\nexport interface Option {\n value: string;\n label: string | TemplateResult;\n}\n\nexport type { CarouselItem, AddDialogLabels };\n\n/**\n * Factory/dispatcher: picks the right concrete axebow-*-input for the\n * requested controlType and forwards the shared props to it. Adding a new\n * control type only means adding a case here (Open/Closed) - callers never\n * need to know which concrete input backs a given controlType.\n */\n@customElement('axebow-input')\nexport class AxebowInput extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n axebowTheme,\n css`\n sl-input,\n sl-select {\n width: 100%;\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n @property({ type: String }) label = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) required = false;\n @property({ attribute: false }) callback?: (e: Event) => void;\n @property({ type: String }) controlType: ControlType = 'input';\n @property({ type: Array }) options: Option[] = [];\n @property({ type: Array }) carouselItems: CarouselItem[] = [];\n @property({ type: Boolean, attribute: false }) disabled = false;\n @property({ attribute: false }) carouselItemRenderer?: (item: CarouselItem) => unknown;\n @property({ type: String }) errorMessage = '';\n @property({ type: Boolean }) hasError = false;\n @property({ type: Number }) max = Number.MAX_SAFE_INTEGER;\n @property({ type: Number }) min = 0;\n @property({ type: Number }) maxlength?: number;\n @property({ type: Boolean }) allowAddNew = false;\n @property({ type: String }) addNewLabel = '+ Add new...';\n @property({ type: String }) emptyOptionLabel = 'Select option';\n @property({ type: Boolean }) showAddDialogInside = true;\n @property({ type: Boolean }) clearable = true;\n @property({ attribute: false }) onAddNew?: (newItem: { value: string; label: string; description?: string }) => void;\n @property({ attribute: false }) addDialogLabels: AddDialogLabels = DEFAULT_ADD_DIALOG_LABELS;\n @property({ type: Boolean }) compact = false;\n @property({ type: Boolean }) integerOnly = false;\n\n render() {\n switch (this.controlType) {\n case 'input':\n return html`\n <axebow-text-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .maxlength=${this.maxlength}\n .compact=${this.compact}\n ></axebow-text-input>\n `;\n case 'numeric':\n return html`\n <axebow-numeric-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .max=${this.max}\n .min=${this.min}\n .compact=${this.compact}\n ></axebow-numeric-input>\n `;\n case 'integer':\n return html`\n <axebow-numeric-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .max=${this.max}\n .min=${this.min}\n .integerOnly=${true}\n .compact=${this.compact}\n ></axebow-numeric-input>\n `;\n case 'select':\n return html`\n <axebow-select-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .options=${this.options}\n .allowAddNew=${this.allowAddNew}\n .addNewLabel=${this.addNewLabel}\n .emptyOptionLabel=${this.emptyOptionLabel}\n .showAddDialogInside=${this.showAddDialogInside}\n .clearable=${this.clearable}\n .onAddNew=${this.onAddNew}\n .addDialogLabels=${this.addDialogLabels}\n ></axebow-select-input>\n `;\n case 'checkbox':\n return html`\n <axebow-checkbox-input\n .value=${this.value}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .options=${this.options}\n ></axebow-checkbox-input>\n `;\n case 'carousel':\n return html`\n <axebow-carousel-input\n .value=${this.value}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .carouselItems=${this.carouselItems}\n .carouselItemRenderer=${this.carouselItemRenderer}\n ></axebow-carousel-input>\n `;\n case 'small-input':\n return html`\n <sl-input\n type=\"number\"\n size=\"small\"\n min=${this.min}\n max=${this.max}\n step=${this.integerOnly ? '1' : 'any'}\n .value=${this.value}\n ?disabled=${this.disabled}\n style=\"${this.hasError\n ? '--sl-input-border-color: var(--axebow-error, #e53e3e); --sl-input-border-color-focus: var(--axebow-error, #e53e3e); --sl-input-border-color-hover: var(--axebow-error, #e53e3e);'\n : ''}\"\n @sl-input=${(e: Event) => {\n if (this.disabled) return;\n if (this.integerOnly) {\n const target = e.target as HTMLInputElement;\n let truncated = Math.trunc(Number(target.value));\n if (truncated > this.max) truncated = this.max;\n target.value = truncated.toString();\n }\n if (this.callback) this.callback(e);\n }}\n @keydown=${(e: KeyboardEvent) => {\n if (this.integerOnly && (e.key === '.' || e.key === ',' || e.key === 'e' || e.key === 'E')) {\n e.preventDefault();\n }\n }}\n ></sl-input>\n `;\n case 'providers':\n return html`\n <axebow-providers-input\n .value=${this.value}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .carouselItems=${this.carouselItems}\n .carouselItemRenderer=${this.carouselItemRenderer}\n ></axebow-providers-input>\n `;\n default:\n return html`\n <axebow-text-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .maxlength=${this.maxlength}\n .compact=${this.compact}\n ></axebow-text-input>\n `;\n }\n }\n}\n","import { html, css, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/dialog/dialog.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '../axebow-button/axebow-button.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\n\nexport type DialogType = 'basic' | 'form' | 'custom';\nexport type DialogButtonVariant = 'default' | 'primary' | 'success' | 'neutral' | 'warning' | 'danger' | 'text';\n\nexport interface DialogButtonConfig {\n label: string;\n variant?: DialogButtonVariant;\n outline?: boolean;\n disabled?: boolean;\n loading?: boolean;\n onClick?: () => void;\n}\n\n@customElement('axebow-dialog')\nexport class AxebowDialog extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n sl-dialog {\n --width: 36.1875rem;\n }\n sl-dialog::part(body) {\n padding: 1.5rem 1.5rem 0 1.5rem;\n }\n sl-dialog::part(footer) {\n padding: 2rem 1.5rem 1.5rem 1.5rem;\n }\n `,\n ];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String }) type: DialogType = 'basic';\n @property({ type: String }) dialogTitle = '';\n @property({ type: String }) icon = '';\n @property({ type: String }) iconColor = '';\n @property({ type: String }) description = '';\n\n @property({ attribute: false }) button1?: DialogButtonConfig;\n @property({ attribute: false }) button2?: DialogButtonConfig;\n @property({ attribute: false }) button3?: DialogButtonConfig;\n\n @property({ type: Boolean }) canCancel = false;\n @property({ type: String }) cancelLabel = 'Cancel';\n @property({ attribute: false }) onCancel?: () => void;\n\n @property({ type: Boolean }) canClose = false;\n @property({ type: String }) closeLabel = 'Close';\n @property({ attribute: false }) onClose?: () => void;\n\n @state() private _hasDescriptionSlotContent = false;\n\n private _onDescriptionSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasDescriptionSlotContent = slot.assignedNodes({ flatten: true }).some((node) => {\n return node.nodeType === Node.ELEMENT_NODE || !!node.textContent?.trim();\n });\n }\n\n private get _buttons(): DialogButtonConfig[] {\n return [this.button1, this.button2, this.button3].filter((button): button is DialogButtonConfig => !!button);\n }\n\n render() {\n const hasTrailingContent = this.type === 'form' || this.type === 'custom';\n const showDescription = !!this.description || this._hasDescriptionSlotContent;\n\n return html`\n <sl-dialog\n ?open=${this.open}\n no-header\n label=${this.dialogTitle}\n @sl-request-close=${(e: CustomEvent) => e.preventDefault()}\n >\n <div class=\"flex items-center justify-between gap-4 mb-6\">\n <div class=\"flex items-center gap-4 min-w-0\">\n ${this.icon\n ? html`<axebow-icon iconName=${this.icon} iconColor=${this.iconColor}></axebow-icon>`\n : ''}\n <h2 class=\"m-0 font-semibold text-lg truncate\">${this.dialogTitle}</h2>\n </div>\n ${this.canClose\n ? html`\n <button\n class=\"p-0 border-0 bg-transparent cursor-pointer flex items-center justify-center shrink-0\"\n aria-label=${this.closeLabel}\n @click=${() => this.onClose?.()}\n >\n <axebow-icon iconName=\"close\" size=\"small\"></axebow-icon>\n </button>\n `\n : ''}\n </div>\n\n <div class=\"${showDescription && hasTrailingContent ? 'mb-8' : ''}\" ?hidden=${!showDescription}>\n ${this.description\n ? html`<p class=\"m-0\">${this.description}</p>`\n : html`<slot name=\"description\" @slotchange=${this._onDescriptionSlotChange}></slot>`}\n </div>\n\n ${this.type === 'form' ? html`<div><slot name=\"form\"></slot></div>` : ''}\n ${this.type === 'custom' ? html`<div><slot name=\"body\"></slot></div>` : ''}\n\n ${this.canCancel || this._buttons.length > 0\n ? html`\n <div slot=\"footer\" class=\"flex items-center justify-end gap-2 w-full\">\n ${this.canCancel\n ? html`<axebow-button variant=\"default\" @click=${() => this.onCancel?.()}\n >${this.cancelLabel}</axebow-button\n >`\n : ''}\n ${this._buttons.map(\n (button) => html`\n <axebow-button\n variant=${button.variant ?? 'default'}\n ?outline=${button.outline}\n ?disabled=${button.disabled}\n ?loading=${button.loading}\n @click=${() => button.onClick?.()}\n >\n ${button.label}\n </axebow-button>\n `\n )}\n </div>\n `\n : ''}\n </sl-dialog>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ActionMenuItem } from './../cards/card.models.js';\nimport '../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-more-actions')\nexport class AxebowMoreActions extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: inline-block; }`,\n ];\n\n @property({ type: Boolean }) open = false;\n @property({ type: String }) placement: 'top' | 'bottom' = 'bottom';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Array }) options: ActionMenuItem[] = [];\n @property({ type: String }) title = '';\n @property({ type: String }) iconName = '';\n @property({ type: Boolean }) openToRight = false;\n @property({ type: String }) closeLabel = 'Close';\n @property({ type: String }) moreActionsLabel = 'More';\n\n @state() private _fixedPos = { top: 0, right: 0 };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n window.addEventListener('scroll', this._handleScroll, true);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n window.removeEventListener('scroll', this._handleScroll, true);\n }\n\n private _handleOutsideClick = (e: MouseEvent) => {\n if (this.open && !this.contains(e.target as Node)) {\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }\n };\n\n private _handleScroll = () => {\n if (this.open && this.openToRight) {\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }\n };\n\n private _toggle(e: Event) {\n if (this.disabled) return;\n e.stopPropagation();\n if (!this.open && this.openToRight) {\n const btn = this.shadowRoot?.querySelector<HTMLElement>('.trigger');\n if (btn) {\n const rect = btn.getBoundingClientRect();\n this._fixedPos = { top: rect.bottom + 8, right: window.innerWidth - rect.right };\n }\n }\n this.open = !this.open;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: this.open } }));\n }\n\n private _handleSlotClick() {\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }\n\n render() {\n const placementClass = this.placement === 'top' ? 'bottom-full mb-2' : 'top-full mt-2';\n const dropdownStyle = this.openToRight\n ? `position:fixed;top:${this._fixedPos.top}px;right:${this._fixedPos.right}px;z-index:1000;`\n : '';\n\n return html`\n <div class=\"relative w-full h-full flex justify-end\">\n <button\n class=\"trigger relative font-semibold text-xs text-(--axebow-tertiary) cursor-pointer py-1 px-2 h-full bg-transparent border-none transition-all duration-200 flex items-center hover:text-[var(--axebow-gray)] hover:bg-[var(--axebow-anti-flash-white)] hover:rounded-lg disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\"\n ?disabled=${this.disabled}\n @click=${this._toggle}\n >\n ${this.iconName\n ? html`<axebow-icon iconName=${this.iconName} size=\"small\" iconColor=\"var(--axebow-tertiary)\"></axebow-icon>`\n : this.open ? this.closeLabel : (this.title || this.moreActionsLabel)}\n </button>\n ${this.open\n ? html`\n <div\n class=\"absolute right-0 z-10 bg-white border border-(--axebow-gray) rounded-lg shadow-[2px_2px_25px_0px_rgba(0,0,0,0.1)] p-2 min-w-44 flex flex-col ${placementClass}\"\n style=${dropdownStyle}\n @click=${this._handleSlotClick}\n >\n ${this.options?.length\n ? this.options.map(\n (opt) => html`\n <button\n class=\"flex items-center gap-2 text-left py-1 px-2 cursor-pointer rounded-sm border border-transparent bg-transparent w-full hover:bg-gray-100\"\n @click=${(e: Event) => {\n e.stopPropagation();\n opt.onTap(e);\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }}\n @mouseenter=${(e: Event) => ((e.currentTarget as HTMLElement).style.borderColor = `var(--axebow-${opt.type})`)}\n @mouseleave=${(e: Event) => ((e.currentTarget as HTMLElement).style.borderColor = 'transparent')}\n >\n <axebow-icon iconName=${opt.icon} iconColor=\"var(--axebow-${opt.type})\" size=\"small\"></axebow-icon>\n <p class=\"m-0 whitespace-nowrap\" style=\"color:var(--axebow-${opt.type});\">${opt.label}</p>\n </button>\n `\n )\n : html`<slot></slot>`}\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-card-cloud-logo')\nexport class AxebowCardCloudLogo extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: contents; }`,\n ];\n\n @property({ type: String }) src: string | null = null;\n @property({ type: String }) size: 'small' | 'large' = 'large';\n\n render() {\n if (!this.src) return html``;\n\n return this.size === 'small'\n ? html`<div class=\"flex items-center justify-center shrink-0\" style=\"height:1.125rem;width:1.125rem;\"><img src=${this.src} class=\"max-h-full max-w-full object-contain\" /></div>`\n : html`<div class=\"flex items-center justify-center shrink-0\" style=\"height:3.125rem;width:3.125rem;\"><img src=${this.src} class=\"max-h-full max-w-full object-contain\" /></div>`;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { RevisionItem } from '../card.models.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\n@customElement('axebow-card-version-selector')\nexport class AxebowCardVersionSelector extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: inline-block; width: auto; max-width: 120px; margin-block: 0.25rem; }\n sl-select {\n --sl-input-background-color: transparent;\n --sl-input-border-color: transparent;\n --sl-input-background-color-focus: transparent;\n --sl-input-border-color-focus: transparent;\n --sl-focus-ring-width: 0px;\n --sl-color-primary-500: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-input-spacing-small: 0.1875rem;\n --sl-input-height-small: auto;\n --sl-input-font-size-small: var(--text-base, 0.75rem);\n --sl-font-size-medium: var(--text-base, 0.75rem);\n --sl-spacing-small: 0;\n display: inline-flex !important;\n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n min-width: 0;\n width: fit-content !important;\n max-width: 120px !important;\n }\n sl-select::part(form-control) {\n display: inline-block;\n width: fit-content;\n border: none;\n background-color: transparent;\n padding: 0;\n min-width: 0;\n }\n sl-select::part(form-control-input) {\n display: inline-block;\n width: fit-content;\n }\n sl-select::part(display-input) { padding: 0; color: var(--axebow-tertiary); font-size: 0.75rem !important; transition: color 0.15s ease; }\n sl-select::part(combobox) {\n padding-inline-start: 0.25rem !important;\n padding-block: 0.125rem !important;\n gap: 0.25rem !important;\n justify-content: flex-start;\n cursor: pointer;\n border: none;\n outline: 1px solid transparent;\n outline-offset: -1px;\n border-radius: 0.375rem;\n background-color: transparent;\n transition: background-color 0.15s ease, outline-color 0.15s ease;\n }\n sl-select[open]::part(combobox) {\n outline-color: var(--axebow-tertiary);\n border-radius: 0.375rem 0.375rem 0 0;\n background-color: white;\n }\n sl-select::part(expand-icon) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 1.125rem;\n height: 1.125rem;\n border: 1px solid var(--axebow-tertiary);\n border-radius: 0.25rem;\n color: var(--axebow-tertiary);\n background-color: transparent;\n transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;\n }\n sl-select::part(listbox) {\n border-color: var(--axebow-tertiary);\n border-top: none;\n border-radius: 0 0 0.375rem 0.375rem;\n box-shadow: none;\n margin-top: -1px;\n }\n sl-option::part(base) { font-size: 0.75rem; padding-inline-start: 0.25rem !important; }\n sl-option::part(checked-icon) { display: none; }\n\n sl-select:hover::part(display-input) { color: var(--axebow-gray); }\n sl-select:hover::part(expand-icon) { color: var(--axebow-gray); border-color: var(--axebow-gray); }\n\n sl-select[open]::part(expand-icon) {\n color: white;\n border-color: var(--axebow-tertiary);\n background-color: var(--axebow-tertiary);\n }\n `,\n ];\n\n @property({ type: Array }) revisions: RevisionItem[] = [];\n @property({ type: String }) displayedRevision = '';\n\n private _formatRevision(id: string): string {\n if (!id) return '';\n const parts = id.split('/');\n return parts[parts.length - 1] ?? id;\n }\n\n render() {\n return html`\n <sl-select size=\"small\" value=${this.displayedRevision} @sl-change=${this._onChange}>\n ${this.revisions.map(\n (rev) => html`\n <sl-option value=${rev.id}>\n ${this._formatRevision(rev.id)}\n ${rev.id !== this.displayedRevision\n ? html`<axebow-icon slot=\"suffix\" iconName=\"update\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>`\n : ''}\n </sl-option>\n `\n )}\n </sl-select>\n `;\n }\n\n private _onChange(e: CustomEvent) {\n const revision = (e.target as HTMLSelectElement).value;\n this.dispatchEvent(new CustomEvent('revision-change', { detail: { revision }, bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/tooltip/tooltip.js';\n\n@customElement('axebow-role-tooltip')\nexport class AxebowRoleTooltip extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: contents; }\n sl-tooltip::part(body) {\n background-color: var(--axebow-white);\n color: var(--axebow-primary);\n padding: 1rem;\n border: 3px solid var(--axebow-table-border);\n width: 280px;\n }\n ul {\n margin: 0.5rem 0 0;\n padding-left: 1.2rem;\n list-style: disc;\n }\n li {\n font-size: 0.8rem;\n line-height: 1.5;\n }\n `,\n ];\n\n @property({ type: String }) heading = '';\n @property({ type: Array }) items: string[] = [];\n @property({ type: String }) color = 'var(--axebow-primary)';\n\n render() {\n if (!this.heading) return html``;\n\n return html`\n <sl-tooltip placement=\"right\" hoist>\n <div slot=\"content\">\n <strong>${this.heading}</strong>\n <ul>\n ${this.items.map((item) => html`<li>${item}</li>`)}\n </ul>\n </div>\n <axebow-icon iconName=\"info\" size=\"small\" class=\"cursor-pointer\" iconColor=${this.color}></axebow-icon>\n </sl-tooltip>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { CardBadge, CardType, RevisionItem, RoleTooltipContent } from '../card.models.js';\nimport '@shoelace-style/shoelace/dist/components/tooltip/tooltip.js';\nimport '@shoelace-style/shoelace/dist/components/badge/badge.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-card-cloud-logo.js';\nimport './axebow-card-version-selector.js';\nimport './axebow-role-tooltip.js';\n\n@customElement('axebow-card-header')\nexport class AxebowCardHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; }\n sl-badge::part(base) { background-color: var(--axebow-secondary); color: white; }\n `,\n ];\n\n @property({ type: String }) logoSrc: string | null = null;\n @property({ type: String }) tenantOrAccount = '';\n @property({ type: String }) name = '';\n @property({ type: String }) badge: CardBadge = 'none';\n @property({ type: String }) subtitle = '';\n @property({ type: String }) cardType: CardType = 'account';\n @property({ type: Array }) revisions: RevisionItem[] = [];\n @property({ type: String }) displayedRevision = '';\n @property({ type: String }) freeIaasLabel = 'Free IaaS';\n @property({ type: String }) freeIaasTitle = 'Free Infrastructure';\n @property({ type: String }) freeIaasDesc = 'This environment uses free infrastructure.';\n @property({ type: String }) haLabel = 'Highly Available';\n @property({ type: String }) haTitle = 'High Availability enabled';\n @property({ type: String }) role = '';\n @property({ type: Object }) roleTooltips: Record<string, RoleTooltipContent> = {};\n @property({ type: String }) roleTooltipColor = 'var(--axebow-primary)';\n\n private _renderBadge() {\n if (this.badge === 'free-iaas') {\n return html`\n <sl-tooltip>\n <div slot=\"content\" style=\"max-width:300px;\">\n <strong>${this.freeIaasTitle}</strong>\n <p style=\"margin-top:0.5rem;\">${this.freeIaasDesc}</p>\n </div>\n <div class=\"flex items-center gap-2 cursor-pointer\">\n <axebow-icon iconName=\"info\" iconColor=\"var(--axebow-gray)\" size=\"small\"></axebow-icon>\n <span class=\"text-(--axebow-rich-black)\">${this.freeIaasLabel}</span>\n </div>\n </sl-tooltip>\n `;\n }\n if (this.badge === 'ha') {\n return html`\n <sl-tooltip content=${this.haTitle}>\n <sl-badge variant=\"neutral\" pill size=\"small\" class=\"cursor-pointer\">${this.haLabel}</sl-badge>\n </sl-tooltip>\n `;\n }\n return html``;\n }\n\n private _headerHeight(): string {\n switch (this.cardType) {\n case 'tenant':\n return '4.5625rem';\n case 'environment':\n return '3.6875rem';\n case 'account':\n case 'runtime':\n default:\n return '4.125rem';\n }\n }\n\n render() {\n const isTenant = this.cardType === 'tenant';\n const isCompact = this.cardType === 'environment' || isTenant;\n const isRuntime = this.cardType === 'runtime';\n const heightStyle = `height:${this._headerHeight()}`;\n\n if (isCompact) {\n return html`\n <div class=\"w-full bg-(--axebow-anti-flash-white) rounded-lg flex flex-col justify-center px-5 py-3 box-border\" style=${heightStyle}>\n <div class=\"flex flex-col flex-1 min-w-0\">\n ${this.tenantOrAccount || this.logoSrc\n ? html`\n <div class=\"flex gap-2 items-center leading-none mt-1\">\n <axebow-card-cloud-logo .src=${this.logoSrc} size=\"small\"></axebow-card-cloud-logo>\n <span class=\"font-semibold text-(--axebow-gray) leading-none\">${this.tenantOrAccount}</span>\n </div>\n `\n : ''}\n <div class=\"flex justify-between items-center\">\n <span class=\"font-bold text-lg text-(--axebow-primary) leading-snug pt-0.5\">${this.name}</span>\n ${this._renderBadge()}\n </div>\n ${this.subtitle\n ? html`\n <div class=\"text-(--axebow-gray) flex items-center gap-1 mt-1\">\n ${this.subtitle}\n ${isTenant && this.roleTooltips[this.role]\n ? html`\n <axebow-role-tooltip\n .heading=${this.roleTooltips[this.role].title}\n .items=${this.roleTooltips[this.role].items}\n color=${this.roleTooltipColor}\n ></axebow-role-tooltip>\n `\n : html`<slot name=\"subtitle-tooltip\"></slot>`}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"w-full bg-(--axebow-anti-flash-white) rounded-lg flex items-center gap-3 py-2 px-3 box-border\" style=${heightStyle}>\n <axebow-card-cloud-logo .src=${this.logoSrc} size=\"large\"></axebow-card-cloud-logo>\n <div class=\"flex flex-col flex-1 min-w-0 ${isRuntime ? 'justify-center' : ''}\">\n ${!isRuntime && this.tenantOrAccount\n ? html`<span class=\"font-semibold text-(--axebow-gray) leading-none\">${this.tenantOrAccount}</span>`\n : ''}\n <div class=\"flex justify-between items-center ${isRuntime ? 'mt-1.5' : ''}\">\n <span class=\"font-bold text-lg text-(--axebow-primary) leading-snug ${isRuntime ? 'pl-1' : 'pt-0.5'}\">${this.name}</span>\n ${this._renderBadge()}\n </div>\n ${isRuntime\n ? html`\n <div class=\"revision-wrap flex items-center mt-0\">\n <axebow-card-version-selector\n .revisions=${this.revisions}\n .displayedRevision=${this.displayedRevision}\n @revision-change=${this._onRevisionChange}\n ></axebow-card-version-selector>\n </div>\n `\n : this.subtitle\n ? html`<div class=\"text-xs text-(--axebow-gray) flex items-center gap-1 mt-1\">${this.subtitle}<slot name=\"subtitle-tooltip\"></slot></div>`\n : ''}\n </div>\n </div>\n `;\n }\n\n private _onRevisionChange(e: CustomEvent) {\n this.dispatchEvent(new CustomEvent('revision-change', { detail: e.detail, bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-card-stat-item')\nexport class AxebowCardStatItem extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Number }) value: number = 0;\n @property({ type: String }) title = '';\n @property({ type: String }) label = '';\n @property({ type: Boolean }) active = true;\n\n render() {\n return html`\n <div class=\"flex flex-col items-center justify-start text-center gap-0.5 w-30 h-17.25\">\n <h4 class=\"text-lg text-(--axebow-primary) font-bold leading-snug m-0\">${this.value}</h4>\n <p class=\"text-base m-0 leading-snug\">${this.title}</p>\n <div class=\"h-3.5 flex items-center justify-center\">\n ${this.label\n ? html`\n <span\n class=\"text-(--axebow-gray) font-semibold text-base ${this.active ? 'cursor-pointer opacity-100' : 'cursor-not-allowed opacity-50'}\"\n @click=${this._onClick}\n >${this.label}</span>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private _onClick() {\n if (this.active) {\n this.dispatchEvent(new CustomEvent('label-click', { bubbles: true, composed: true }));\n }\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { CardType, MainStatsType } from '../card.models.js';\nimport './axebow-card-stat-item.js';\n\n@customElement('axebow-card-stats-row')\nexport class AxebowCardStatsRow extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Array }) stats: MainStatsType[] = [];\n @property({ type: String }) cardType: CardType = 'account';\n\n private _hasButtons(): boolean {\n return this.cardType === 'account' || this.cardType === 'environment';\n }\n\n render() {\n const heightClass = this._hasButtons() ? 'h-17.25' : 'h-11.25';\n\n return html`\n <div class=\"grid grid-cols-3 gap-1 w-91 ${heightClass} box-border\">\n ${this.stats.map(\n (stat, index) => html`\n <axebow-card-stat-item\n .value=${stat.value}\n .title=${stat.title}\n .label=${stat.label}\n .active=${stat.active !== false}\n @label-click=${() => this._handleLabelClick(index)}\n ></axebow-card-stat-item>\n `\n )}\n </div>\n `;\n }\n\n private _handleLabelClick(index: number) {\n this.dispatchEvent(\n new CustomEvent('stat-label-click', { detail: { index }, bubbles: true, composed: true })\n );\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-filter-item')\nexport class AxebowCardFilterItem extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: String }) name = '';\n @property({ type: Boolean }) showAttention = false;\n\n render() {\n return html`\n <div\n class=\"w-full py-1 px-2 flex justify-between items-center cursor-pointer hover:bg-(--axebow-light-gray)\"\n @click=${this._onClick}\n >\n <p class=\"m-0\">${this.name}</p>\n ${this.showAttention\n ? html`<axebow-icon iconName=\"error\" size=\"small\" iconColor=\"var(--axebow-error)\"></axebow-icon>`\n : ''}\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(\n new CustomEvent('item-select', { detail: { name: this.name }, bubbles: true, composed: true })\n );\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { CardFilterItem } from '../card.models.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-card-filter-item.js';\n\n@customElement('axebow-card-filter')\nexport class AxebowCardFilter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Array }) items: CardFilterItem[] = [];\n @property({ type: String }) selected: string | null = null;\n @property({ type: String }) emptyLabel = '';\n @property({ type: String }) emptyActionLabel = '';\n @property({ type: String }) attentionLabel = 'Attention needed';\n @property({ type: Boolean }) showAttention = false;\n @property({ type: Boolean }) opened = false;\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: Boolean }) isDisabled = false;\n\n render() {\n const showEmpty = !this.selected && this.items.length === 0;\n\n return html`\n <div class=\"relative\">\n <div class=\"flex justify-between items-center border-b border-(--axebow-light-gray) w-87 h-7 box-border px-2 cursor-pointer\">\n ${showEmpty\n ? html`\n <p\n class=\"m-0 ${this.isPlainRole || this.isDisabled\n ? 'text-(--axebow-gray) cursor-default opacity-50'\n : 'text-(--axebow-tertiary) cursor-pointer'}\"\n @click=${this.isPlainRole || this.isDisabled ? undefined : this._onEmptyAction}\n >\n ${this.emptyActionLabel}\n </p>\n `\n : html`\n <div\n class=\"flex w-full justify-between items-center ${this.isDisabled ? 'opacity-50 cursor-not-allowed' : ''}\"\n @click=${this.isDisabled ? undefined : this._onToggle}\n >\n <span class=\"text-(--axebow-tertiary)\">${this.selected ?? this.emptyLabel}</span>\n <div class=\"flex items-center gap-2\">\n ${this.showAttention\n ? html`<p class=\"text-(--axebow-error) m-0 text-xs\">${this.attentionLabel}</p>`\n : ''}\n <axebow-icon iconName=\"chevron_right\" rotate=\"90\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>\n </div>\n </div>\n `}\n </div>\n\n <div class=\"${this.opened ? '' : 'hidden'} absolute top-full left-0 right-0 z-10 flex flex-col bg-white rounded-b-lg border border-(--axebow-light-gray) shadow-[2px_2px_25px_0px_rgba(0,0,0,0.1)] max-h-40 overflow-y-auto\">\n <p class=\"w-full p-2 cursor-pointer m-0 hover:bg-(--axebow-light-gray)\" @click=${() => this._onSelect(null)}>${this.emptyLabel}</p>\n ${this.items.map(\n (item) => html`\n <axebow-card-filter-item\n .name=${item.name}\n .showAttention=${item.showAttention}\n @item-select=${(e: CustomEvent) => this._onSelect(e.detail.name)}\n ></axebow-card-filter-item>\n `\n )}\n </div>\n </div>\n `;\n }\n\n private _onToggle() {\n this.dispatchEvent(new CustomEvent('toggle-open', { bubbles: true, composed: true }));\n }\n\n private _onSelect(name: string | null) {\n this.dispatchEvent(new CustomEvent('filter-select', { detail: { name }, bubbles: true, composed: true }));\n }\n\n private _onEmptyAction() {\n this.dispatchEvent(new CustomEvent('empty-action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { RuntimeFilterRole } from '../card.models.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-table-header')\nexport class AxebowCardTableHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Boolean }) opened = false;\n @property({ type: String }) filterDisplayText = '';\n @property({ type: String }) allLabel = 'All Roles & Instances';\n @property({ type: String }) attentionLabel = 'Attention needed';\n @property({ type: Boolean }) showAttention = false;\n @property({ type: Array }) filterRoles: RuntimeFilterRole[] = [];\n\n render() {\n return html`\n <div class=\"relative\">\n <div\n class=\"flex justify-between items-center border-b border-(--axebow-light-gray) w-87 h-7 box-border px-2 cursor-pointer\"\n @click=${this._onToggle}\n >\n <span class=\"text-(--axebow-tertiary)\">${this.filterDisplayText || this.allLabel}</span>\n <div class=\"flex items-center gap-2\">\n ${this.showAttention ? html`<p class=\"text-(--axebow-error) m-0 text-xs\">${this.attentionLabel}</p>` : ''}\n <axebow-icon iconName=\"chevron_right\" rotate=\"90\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>\n </div>\n </div>\n\n <div class=\"${this.opened ? '' : 'hidden'} absolute top-full left-0 right-0 z-10 flex flex-col bg-white rounded-b-lg border border-(--axebow-light-gray) shadow-[2px_2px_25px_0px_rgba(0,0,0,0.1)] max-h-40 overflow-y-auto\">\n <p class=\"w-full p-2 cursor-pointer m-0 hover:bg-(--axebow-light-gray)\" @click=${() => this._onSelect('', 'all')}>${this.allLabel}</p>\n ${this.filterRoles.map(\n (role) => html`\n <div\n class=\"w-full py-1 px-2 flex justify-between items-center cursor-pointer hover:bg-(--axebow-light-gray)\"\n @click=${() => this._onSelect(role.name, 'role')}\n >\n <div class=\"flex items-center gap-2\">\n ${role.logo ? html`<img src=${role.logo} class=\"w-5 h-5\" />` : ''}\n <p class=\"m-0\">${role.name}</p>\n </div>\n </div>\n ${role.instances.map(\n (inst) => html`\n <div\n class=\"w-full py-1 px-2 pl-6 flex justify-between items-center cursor-pointer hover:bg-(--axebow-light-gray)\"\n @click=${() => this._onSelect(inst.name, 'instance')}\n >\n <div class=\"flex items-center gap-2\">\n <axebow-icon iconName=\"subdirectory_arrow_right\" size=\"small\"></axebow-icon>\n <p class=\"m-0\">${inst.name}</p>\n </div>\n ${inst.needsAttention\n ? html`<axebow-icon iconName=\"warning\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>`\n : ''}\n </div>\n `\n )}\n `\n )}\n </div>\n </div>\n `;\n }\n\n private _onToggle() {\n this.dispatchEvent(new CustomEvent('toggle-open', { bubbles: true, composed: true }));\n }\n\n private _onSelect(selected: string, type: 'instance' | 'role' | 'all') {\n this.dispatchEvent(new CustomEvent('filter-change', { detail: { selected, type }, bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport { TableStatsType } from '../card.models.js';\n\n@customElement('axebow-card-resource-row')\nexport class AxebowCardResourceRow extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: contents; }`,\n ];\n\n @property({ type: Object }) stat!: TableStatsType;\n @property({ type: Number }) attentionThreshold = 90;\n @property({ type: Boolean }) isLast = false;\n @property({ type: Boolean }) allEmpty = false;\n\n render() {\n const stat = this.stat;\n const showDivider = !stat.hidden && !this.isLast;\n const textClass = stat.isSecondary ? 'text-sm font-normal' : 'text-base font-semibold';\n const barHeightClass = stat.isSecondary ? 'h-2.25' : 'h-2.75';\n const divider = showDivider\n ? html`<div class=\"col-span-4 border-t border-dashed border-(--axebow-light-gray)\"></div>`\n : '';\n\n if (stat.hidden) {\n return html`\n <div class=\"flex items-center w-full h-5.75 box-border\"></div>\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\"></div>\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\"></div>\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\"></div>\n ${divider}\n `;\n }\n\n return html`\n <div class=\"flex items-center w-full h-5.75 box-border\">\n <div class=\"flex items-center gap-1\">\n <axebow-icon iconName=${stat.icon} size=\"small\" rotate=${stat.iconRotation ?? 0}></axebow-icon>\n <span class=\"${textClass}\">${stat.title}</span>\n </div>\n </div>\n\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\">\n <p class=\"${textClass} m-0\">${stat.value ?? '-.-'}</p>\n </div>\n\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\">\n <div class=\"${barHeightClass} w-35 bg-(--axebow-light-gray) rounded-md relative overflow-hidden\">\n <div\n class=\"absolute h-full ${stat.percentage >= this.attentionThreshold ? 'bg-(--axebow-error)' : 'bg-(--axebow-gray)'}\"\n style=\"width:${stat.percentage}%;\"\n ></div>\n </div>\n </div>\n\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\">\n <p class=\"${textClass} m-0\">\n ${this.allEmpty\n ? '-.-'\n : html`${stat.maxValue ?? '-.-'}<span class=\"font-normal\">${stat.title === 'vCPU' ? '' : stat.tagValue ?? ''}</span>`}\n </p>\n </div>\n ${divider}\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TableStatsType } from '../card.models.js';\nimport './axebow-card-resource-row.js';\n\n@customElement('axebow-card-resource-table')\nexport class AxebowCardResourceTable extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Array }) rows: TableStatsType[] = [];\n @property({ type: Number }) attentionThreshold = 90;\n\n render() {\n const visibleRows = this.rows.filter((r) => !r.hidden);\n const lastVisible = visibleRows[visibleRows.length - 1];\n const allEmpty = visibleRows.every((r) => Number(r.maxValue ?? 0) === 0);\n\n return html`\n <div class=\"grid grid-cols-[auto_auto_1fr_auto] gap-x-2 w-87 px-2 box-border\">\n ${this.rows.map(\n (stat) => html`\n <axebow-card-resource-row\n .stat=${stat}\n .attentionThreshold=${this.attentionThreshold}\n .isLast=${stat === lastVisible}\n .allEmpty=${allEmpty}\n ></axebow-card-resource-row>\n `\n )}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-attention-banner')\nexport class AxebowCardAttentionBanner extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; }\n .error-bg { background-color: color-mix(in srgb, var(--axebow-error) 10%, white); }\n .clickable { cursor: pointer; }\n .clickable:hover { background-color: var(--axebow-base); --axebow-error: var(--axebow-gray); }\n axebow-button::part(label) { color: var(--axebow-error); font-weight: 600; display: flex; align-items: center; gap: 2px; }\n axebow-button::part(base) { padding: 0; height: auto; min-height: unset; pointer-events: none; background-color: transparent; }\n axebow-icon { display: inline-flex; align-items: center; line-height: 1; }\n `,\n ];\n\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: String }) label = 'View details';\n @property({ type: String }) askOwnerLabel = 'Ask an owner or admin to solve this problem';\n\n render() {\n return html`\n <div\n class=\"${this.isPlainRole ? '' : 'error-bg clickable'} flex items-center justify-center gap-1 w-87 h-6.5 box-border px-3 text-sm text-center overflow-hidden\"\n @click=${this.isPlainRole ? undefined : this._onClick}\n >\n ${this.isPlainRole\n ? html`<span class=\"text-(--axebow-error)\">${this.askOwnerLabel}</span>`\n : html`\n <axebow-button variant=\"text\" size=\"small\">\n ${this.label}\n <axebow-icon iconName=\"arrow_forward\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>\n </axebow-button>\n `}\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-action-banner')\nexport class AxebowCardActionBanner extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; }\n .tertiary-bg { background-color: color-mix(in srgb, var(--axebow-tertiary) 10%, white); }\n .clickable { cursor: pointer; }\n .clickable:hover { background-color: var(--axebow-base); --axebow-tertiary: var(--axebow-gray); }\n axebow-button::part(label) { color: var(--axebow-tertiary); font-weight: 600; display: flex; align-items: center; gap: 2px; }\n axebow-button::part(base) { padding: 0; height: auto; min-height: unset; pointer-events: none; background-color: transparent; }\n axebow-icon { display: inline-flex; align-items: center; line-height: 1; }\n `,\n ];\n\n @property({ type: String }) label = 'View details';\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: String }) notAllowedLabel = '';\n\n render() {\n return html`\n <div\n class=\"${this.isPlainRole ? '' : 'tertiary-bg clickable'} flex items-center justify-center gap-1 w-87 h-6.5 box-border px-3 text-sm text-center overflow-hidden\"\n @click=${this.isPlainRole ? undefined : this._onClick}\n >\n ${this.isPlainRole\n ? html`<span class=\"text-(--axebow-gray)\">${this.notAllowedLabel}</span>`\n : html`\n <axebow-button variant=\"text\" size=\"small\">\n ${this.label}\n <axebow-icon iconName=\"arrow_forward\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>\n </axebow-button>\n `}\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/tooltip/tooltip.js';\nimport '@shoelace-style/shoelace/dist/components/spinner/spinner.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-status')\nexport class AxebowCardStatus extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; flex: 1; min-width: 0; }\n sl-tooltip::part(base) { max-width: none; white-space: normal; word-break: break-word; }\n `,\n ];\n\n @property({ type: String }) statusCode = '';\n @property({ type: String }) statusMessage = '';\n @property({ type: String }) borderColor = '';\n @property({ type: Boolean }) showSpinner = false;\n\n render() {\n if (!this.statusCode) {\n return html`<div class=\"w-full whitespace-nowrap overflow-hidden text-ellipsis\"><slot></slot></div>`;\n }\n\n return html`\n <div class=\"flex items-center gap-1 min-w-0 w-full\">\n ${this.showSpinner ? html`<sl-spinner style=\"--indicator-color:${this.borderColor};\"></sl-spinner>` : ''}\n <p class=\"font-bold m-0 line-clamp-1\" style=\"color:${this.borderColor};\" title=${this.statusCode}>${this.statusCode}</p>\n <sl-tooltip content=${this.statusMessage}>\n <axebow-icon class=\"cursor-pointer shrink-0\" iconColor=${this.borderColor} iconName=\"info\" size=\"small\"></axebow-icon>\n </sl-tooltip>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ActionMenuItem } from '../card.models.js';\nimport './../../axebow-more-actions/axebow-more-actions.js';\nimport './axebow-card-status.js';\n\n@customElement('axebow-card-footer')\nexport class AxebowCardFooter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Boolean }) isFreeIaaS = false;\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: String }) statusCode = '';\n @property({ type: String }) statusMessage = '';\n @property({ type: String }) borderColor = '';\n @property({ type: Boolean }) showSpinner = false;\n @property({ type: Boolean }) moreActionsOpen = false;\n @property({ type: Array }) moreActionsOptions: ActionMenuItem[] = [];\n @property({ type: String }) closeLabel = 'Close';\n @property({ type: String }) moreActionsLabel = 'More';\n @property({ type: String }) actionLabel = '';\n\n render() {\n const showDropdown = !this.isFreeIaaS && !this.isPlainRole && this.moreActionsOptions.length > 0;\n const showAction = !showDropdown && !!this.actionLabel;\n\n return html`\n <div class=\"flex justify-between items-center relative h-6 gap-2\">\n <axebow-card-status\n .statusCode=${this.statusCode}\n .statusMessage=${this.statusMessage}\n .borderColor=${this.borderColor}\n .showSpinner=${this.showSpinner}\n >\n <slot></slot>\n </axebow-card-status>\n ${showDropdown\n ? html`\n <axebow-more-actions\n class=\"shrink-0 mr-2\"\n placement=\"top\"\n .open=${this.moreActionsOpen}\n .options=${this.moreActionsOptions}\n .closeLabel=${this.closeLabel}\n .moreActionsLabel=${this.moreActionsLabel}\n @toggled=${this._onToggled}\n ></axebow-more-actions>\n `\n : showAction\n ? html`<axebow-button variant=\"text\" size=\"medium\" @click=${this._onAction}>${this.actionLabel}</axebow-button>`\n : ''}\n </div>\n `;\n }\n\n private _onToggled(e: CustomEvent) {\n this.dispatchEvent(\n new CustomEvent('more-actions-toggled', { detail: { open: e.detail.open }, bubbles: true, composed: true })\n );\n }\n\n private _onAction() {\n this.dispatchEvent(new CustomEvent('footer-action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport {\n ActionMenuItem,\n CardBadge,\n CardFilterItem,\n CardType,\n MainStatsType,\n RevisionItem,\n RoleTooltipContent,\n RuntimeFilterRole,\n TableStatsType,\n} from './card.models.js';\nimport './../axebow-more-actions/axebow-more-actions.js';\nimport './parts/axebow-card-header.js';\nimport './parts/axebow-card-stats-row.js';\nimport './parts/axebow-card-filter.js';\nimport './parts/axebow-card-table-header.js';\nimport './parts/axebow-card-resource-table.js';\nimport './parts/axebow-card-attention-banner.js';\nimport './parts/axebow-card-action-banner.js';\nimport './parts/axebow-card-footer.js';\n\n@customElement('axebow-base-card')\nexport class AxebowBaseCard extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: inline-block; max-width: 100%; }\n .deploy-time {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n `,\n ];\n\n @property({ type: String, reflect: true, attribute: 'card-type' }) cardType: CardType = 'account';\n @property({ type: String }) name = '';\n @property({ type: String }) logoSrc: string | null = null;\n @property({ type: String }) tenantOrAccount = '';\n @property({ type: String }) badge: CardBadge = 'none';\n @property({ type: String }) subtitle = '';\n\n @property({ type: Array }) mainStats: MainStatsType[] = [];\n\n @property({ type: Array }) tableStats: TableStatsType[] = [];\n @property({ type: Number }) attentionThreshold = 90;\n\n @property({ type: Array }) filterItems: CardFilterItem[] = [];\n @property({ type: String }) selected: string | null = null;\n @property({ type: Boolean }) filterOpened = false;\n @property({ type: String }) emptyLabel = '';\n @property({ type: String }) emptyActionLabel = '';\n @property({ type: String }) attentionLabel = 'Attention needed';\n @property({ type: Boolean }) showAttention = false;\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: Boolean }) isDeleting = false;\n @property({ type: Boolean }) isDisabled = false;\n\n @property({ type: Array }) revisions: RevisionItem[] = [];\n @property({ type: String }) displayedRevision = '';\n @property({ type: Boolean }) isDeployed = false;\n @property({ type: String }) deployedLabel = 'Deployed';\n\n @property({ type: Array }) filterRoles: RuntimeFilterRole[] = [];\n @property({ type: String }) filterDisplayText = '';\n @property({ type: String }) allLabel = 'All Roles & Instances';\n\n @property({ type: String }) borderColor = '';\n @property({ type: String }) statusCode = '';\n @property({ type: String }) statusMessage = '';\n @property({ type: String }) serviceDetailLabel = 'Service detail';\n\n @property({ type: Boolean }) showActionBanner = false;\n @property({ type: Boolean }) showWarningBanner = false;\n @property({ type: String }) manageLabel = 'Manage';\n @property({ type: String }) askOwnerLabel = 'Ask your owner';\n @property({ type: String }) invalidCredsLabel = 'Invalid credentials.';\n @property({ type: String }) limitReachedLabel = 'Limit reached.';\n @property({ type: String }) andLabel = 'and';\n @property({ type: String }) actionBannerLabel = '';\n @property({ type: String }) notAllowedLabel = '';\n\n @property({ type: Boolean }) moreActionsOpen = false;\n @property({ type: Array }) moreActionsOptions: ActionMenuItem[] = [];\n @property({ type: Boolean }) isFreeIaaS = false;\n @property({ type: String }) closeLabel = 'Close';\n @property({ type: String }) moreActionsLabel = 'More';\n\n @property({ type: String }) freeIaasLabel = 'Free IaaS';\n @property({ type: String }) freeIaasTitle = 'Free Infrastructure';\n @property({ type: String }) freeIaasDesc = 'This environment uses free infrastructure.';\n @property({ type: String }) haLabel = 'Highly Available';\n @property({ type: String }) haTitle = 'High Availability enabled';\n\n @property({ type: String }) role = '';\n @property({ type: Object }) roleTooltips: Record<string, RoleTooltipContent> = {};\n @property({ type: String }) roleTooltipColor = 'var(--axebow-primary)';\n\n private static readonly SIZE_CLASSES: Record<CardType, string> = {\n tenant: 'w-95 h-92.25',\n account: 'w-95 h-103.25',\n environment: 'w-95 h-101.5',\n runtime: 'w-95 h-94.75',\n };\n\n private _hasAttention(): boolean {\n const primary = this.tableStats.slice(0, 3).map((r) => r.title);\n return this.tableStats.some((s) => primary.includes(s.title) && s.percentage >= this.attentionThreshold);\n }\n\n render() {\n const isRuntime = this.cardType === 'runtime';\n\n const hasError = this.showWarningBanner || this._hasAttention();\n const showErrorBanner = this.showActionBanner && hasError;\n const showNormalBanner = this.showActionBanner && !hasError;\n const showBanner = showErrorBanner || showNormalBanner;\n\n return html`\n <div\n class=\"${AxebowBaseCard.SIZE_CLASSES[this.cardType]} bg-(--axebow-white) rounded-lg px-2 pt-2 pb-4 flex flex-col justify-between gap-2 box-border ${isRuntime ? 'border-t-4' : ''} transition-shadow duration-200 ease-in-out hover:shadow-[0_4px_12px_0_rgba(13,24,33,0.08)] ${this.isDeleting ? 'pointer-events-none cursor-not-allowed grayscale' : ''}\"\n style=${isRuntime ? `border-top-color:${this.borderColor};` : ''}\n ?inert=${this.isDeleting}\n >\n <div class=\"flex flex-col gap-2\">\n <axebow-card-header\n .cardType=${this.cardType}\n .logoSrc=${this.logoSrc}\n .tenantOrAccount=${this.tenantOrAccount}\n .name=${this.name}\n .badge=${this.badge}\n .subtitle=${this.subtitle}\n .revisions=${this.revisions}\n .displayedRevision=${this.displayedRevision}\n .freeIaasLabel=${this.freeIaasLabel}\n .freeIaasTitle=${this.freeIaasTitle}\n .freeIaasDesc=${this.freeIaasDesc}\n .haLabel=${this.haLabel}\n .haTitle=${this.haTitle}\n .role=${this.role}\n .roleTooltips=${this.roleTooltips}\n .roleTooltipColor=${this.roleTooltipColor}\n @revision-change=${(e: CustomEvent) =>\n this.dispatchEvent(new CustomEvent('revision-change', { detail: e.detail, bubbles: true, composed: true }))}\n >\n <slot slot=\"subtitle-tooltip\" name=\"subtitle-tooltip\"></slot>\n </axebow-card-header>\n\n <div class=\"w-full px-2 flex flex-col gap-2\">\n ${isRuntime\n ? html`\n <div class=\"flex flex-row justify-between items-center min-h-10 max-h-10 overflow-hidden\">\n <span class=\"deploy-time text-(--axebow-secondary)\"><slot name=\"time-elapsed\"></slot></span>\n ${this.isDeployed\n ? html`<span class=\"text-(--axebow-secondary) border-2 border-(--axebow-secondary) rounded-lg py-0.5 px-1.5 whitespace-nowrap text-xs\">${this.deployedLabel}</span>`\n : ''}\n </div>\n `\n : html`\n <axebow-card-stats-row\n .stats=${this.mainStats}\n .cardType=${this.cardType}\n @stat-label-click=${(e: CustomEvent) =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('stat-label-click', { detail: e.detail, bubbles: true, composed: true }))}\n ></axebow-card-stats-row>\n `}\n\n <div class=\"flex flex-col w-full h-full\">\n <div class=\"w-full border border-(--axebow-light-gray) box-border ${showBanner ? 'rounded-t-md' : 'rounded-md'}\">\n ${isRuntime\n ? html`\n <axebow-card-table-header\n .opened=${this.filterOpened}\n .filterDisplayText=${this.filterDisplayText}\n .allLabel=${this.allLabel}\n .attentionLabel=${this.attentionLabel}\n .showAttention=${this.showAttention}\n .filterRoles=${this.filterRoles}\n @toggle-open=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('toggle-filter', { bubbles: true, composed: true }))}\n @filter-change=${(e: CustomEvent) =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('filter-change', { detail: e.detail, bubbles: true, composed: true }))}\n ></axebow-card-table-header>\n `\n : html`\n <axebow-card-filter\n .items=${this.filterItems}\n .selected=${this.selected}\n .emptyLabel=${this.emptyLabel}\n .emptyActionLabel=${this.emptyActionLabel}\n .attentionLabel=${this.attentionLabel}\n .showAttention=${this.showAttention}\n .opened=${this.filterOpened}\n .isPlainRole=${this.isPlainRole}\n .isDisabled=${this.isDeleting || this.isDisabled}\n @filter-select=${(e: CustomEvent) =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('filter-select', { detail: e.detail, bubbles: true, composed: true }))}\n @toggle-open=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('toggle-filter', { bubbles: true, composed: true }))}\n @empty-action-click=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('empty-action-click', { bubbles: true, composed: true }))}\n ></axebow-card-filter>\n `}\n\n <axebow-card-resource-table\n .rows=${this.tableStats}\n .attentionThreshold=${this.attentionThreshold}\n ></axebow-card-resource-table>\n </div>\n\n <div class=\"h-6.5 box-border ${showBanner ? 'border-x border-b border-(--axebow-light-gray) rounded-b-md overflow-hidden' : ''}\">\n ${showErrorBanner\n ? html`<axebow-card-attention-banner\n .isPlainRole=${this.isPlainRole}\n .label=${this.actionBannerLabel}\n .askOwnerLabel=${this.askOwnerLabel}\n @action-click=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }))}\n ></axebow-card-attention-banner>`\n : showNormalBanner\n ? html`<axebow-card-action-banner\n .label=${this.actionBannerLabel}\n .isPlainRole=${this.isPlainRole}\n .notAllowedLabel=${this.notAllowedLabel}\n @action-click=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }))}\n ></axebow-card-action-banner>`\n : ''}\n </div>\n </div>\n\n <slot name=\"extra-features\"></slot>\n </div>\n </div>\n\n <axebow-card-footer\n class=\"mb-1 pl-2\"\n .isFreeIaaS=${this.isFreeIaaS}\n .isPlainRole=${this.isPlainRole}\n .statusCode=${isRuntime ? this.statusCode : ''}\n .statusMessage=${isRuntime ? this.statusMessage : ''}\n .borderColor=${this.borderColor}\n .showSpinner=${isRuntime && this.borderColor === 'var(--axebow-gray)'}\n .moreActionsOpen=${this.moreActionsOpen}\n .moreActionsOptions=${isRuntime ? [] : this.moreActionsOptions}\n .closeLabel=${this.closeLabel}\n .moreActionsLabel=${this.moreActionsLabel}\n .actionLabel=${isRuntime ? this.serviceDetailLabel : ''}\n @more-actions-toggled=${(e: CustomEvent) =>\n this.dispatchEvent(new CustomEvent('more-actions-toggled', { detail: e.detail, bubbles: true, composed: true }))}\n @footer-action-click=${() =>\n this.dispatchEvent(new CustomEvent('service-detail-click', { bubbles: true, composed: true }))}\n >\n <slot name=\"status-footer\"></slot>\n </axebow-card-footer>\n\n <slot name=\"dialogs\"></slot>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-special-link')\nexport class AxebowCardSpecialLink extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: inline-flex; }`,\n ];\n\n @property({ type: String }) label = '';\n @property({ type: String }) color = 'var(--axebow-error)';\n @property({ type: String }) icon = 'arrow_forward';\n\n render() {\n return html`\n <span class=\"cursor-pointer\" style=\"color:${this.color};\" @click=${this._onClick}>\n ${this.label}\n <axebow-icon iconName=${this.icon} iconColor=${this.color} size=\"small\"></axebow-icon>\n </span>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('link-click', { bubbles: true, composed: true }));\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/styles/axebow-theme.ts","../src/components/axebow-icon/axebow-icon.ts","../src/components/axebow-filter-bar/axebow-filter-bar.ts","../src/components/axebow-header/parts/axebow-quick-action-card.ts","../src/components/axebow-header/parts/axebow-quick-actions.ts","../src/components/axebow-header/parts/axebow-header-actions.ts","../src/components/axebow-header/axebow-header.ts","../src/components/axebow-sidebar/axebow-sidebar.ts","../src/components/axebow-footer/axebow-footer.ts","../src/components/axebow-breadcrumb-header/axebow-breadcrumb-header.ts","../src/components/axebow-button/axebow-button.ts","../src/components/axebow-search/axebow-search.ts","../src/components/axebow-input/axebow-input-base.ts","../src/components/axebow-input/axebow-text-input.ts","../src/components/axebow-input/axebow-numeric-input.ts","../src/components/axebow-input/axebow-checkbox-input.ts","../src/components/axebow-input/axebow-carousel-input.ts","../src/components/axebow-input/axebow-providers-input.ts","../src/components/axebow-input/axebow-select-input.ts","../src/components/axebow-input/axebow-input.ts","../src/components/axebow-dialog/axebow-dialog.ts","../src/components/axebow-more-actions/axebow-more-actions.ts","../src/components/cards/parts/axebow-card-cloud-logo.ts","../src/components/cards/parts/axebow-card-version-selector.ts","../src/components/cards/parts/axebow-role-tooltip.ts","../src/components/cards/parts/axebow-card-header.ts","../src/components/cards/parts/axebow-card-stat-item.ts","../src/components/cards/parts/axebow-card-stats-row.ts","../src/components/cards/parts/axebow-card-filter-item.ts","../src/components/cards/parts/axebow-card-filter.ts","../src/components/cards/parts/axebow-card-table-header.ts","../src/components/cards/parts/axebow-card-resource-row.ts","../src/components/cards/parts/axebow-card-resource-table.ts","../src/components/cards/parts/axebow-card-attention-banner.ts","../src/components/cards/parts/axebow-card-action-banner.ts","../src/components/cards/parts/axebow-card-status.ts","../src/components/cards/parts/axebow-card-footer.ts","../src/components/cards/axebow-base-card.ts","../src/components/cards/parts/axebow-card-special-link.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const axebowTheme = css`\n :host, .theme {\n --axebow-primary: var(--color-primary, #34495e);\n --axebow-primary-light: var(--color-primary-light, #b4cded);\n --axebow-tertiary: var(--color-tertiary, #006bff);\n --axebow-success: var(--color-success, #0ecd9a);\n --axebow-secondary: var(--color-secondary, #78787a);\n --axebow-base: var(--color-base, #f0f1f5);\n --axebow-error: var(--color-error, #e93a3a);\n --axebow-white: var(--color-white, #ffffff);\n --axebow-black: var(--color-black, #000000);\n --axebow-warning: var(--color-warning, #f9cf6c);\n --axebow-table-border: var(--color-table-border, #ddd);\n --axebow-gray: var(--color-gray, #8a94ae);\n --axebow-light-gray: var(--color-light-gray, #d9d9d9);\n\n --axebow-clickable-blue: var(--color-clickable-blue, #006bff);\n --axebow-sky-gray: var(--color-sky-gray, #8a94ee);\n --axebow-rich-black: var(--color-rich-black, #0d1821);\n --axebow-anti-flash-white: var(--color-anti-flash-white, #f0f1f5);\n --axebow-strong-gray: var(--color-strong-gray, #78787a);\n\n --axebow-bg-primary: var(--color-bg-primary, #f0f1f5);\n\n --axebow-text-gray: var(--color-text-gray, #78787a);\n\n --axebow-premium-label: var(--color-premium-label, #b9935a33);\n --axebow-premium-text: var(--color-premium-text, #b9935a);\n --axebow-deleting-link: var(--color-deleting-link, #a0a0a0);\n --axebow-border-gray: var(--color-border-gray, #9ca3af);\n font-family: var(--font-sans, \"Open Sans\", sans-serif);\n font-size: var(--text-base, 0.75rem);\n line-height: var(--text-base--line-height, 1rem);\n }\n\n /** Axebow switch */\n sl-switch::part(control) {\n background-color: var(--axebow-light-gray);\n }\n sl-switch[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n }\n sl-switch::part(thumb) {\n background-color: white;\n }\n\n /** Axebow checkbox */\n sl-checkbox[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n }\n\n /** Axebow select and input global focus */\n sl-input:focus-within::part(base),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black) !important;\n box-shadow: 0 0 0 1px var(--axebow-black) !important;\n }\n sl-select sl-option:hover::part(base) {\n background-color: #e9ecef;\n }\n sl-select {\n --sl-color-primary-50: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n }\n sl-select sl-option[checked]::part(base),\n sl-select sl-option[current]::part(base),\n sl-select sl-option[aria-selected='true']::part(base) {\n background-color: var(--axebow-tertiary) !important;\n color: white !important;\n }\n\n /** Axebow tab group */\n sl-tab-group {\n --indicator-color: var(--axebow-tertiary);\n }\n sl-tab {\n --sl-font-size-small: var(--text-base); /* 12px */\n }\n sl-tab::part(base) {\n font-size: var(--text-base); /* 12px */\n }\n sl-tab[active]::part(base) {\n color: var(--axebow-tertiary);\n }\n sl-tab:hover::part(base) {\n color: var(--axebow-tertiary);\n }\n`;\n\nexport const STATUS_COLORS = {\n HEALTHY: 'var(--axebow-success)',\n ERROR: 'var(--axebow-error)',\n WARNING: 'var(--axebow-warning)',\n DEFAULT: 'var(--axebow-gray)',\n} as const;\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { html, unsafeCSS, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-icon')\nexport class AxebowIcon extends LitElement {\n @property({ type: String }) iconName = 'home';\n @property({ type: String }) iconColor = 'var(--axebow-primary)';\n @property({ type: Number }) rotate = 0;\n @property({ type: Boolean }) filled = false;\n @property({ type: String }) size: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' = 'medium';\n @property({ type: Number }) marginBottom = 0;\n\n static styles = unsafeCSS(tailwindCss);\n\n render() {\n const filled = \"[font-variation-settings:'FILL'_1,'wght'_400,'GRAD'_0,'opsz'_24]\";\n const outlined = \"[font-variation-settings:'FILL'_0,'wght'_400,'GRAD'_0,'opsz'_24]\";\n return html`\n <span\n class=\"font-[Material_Symbols_Outlined] inline-block align-middle whitespace-nowrap ${this.filled\n ? filled\n : outlined}\"\n style=\"color: ${this.iconColor}; transform: rotate(${this.rotate}deg); font-size: ${this.size === 'xx-small'\n ? 'var(--text-sm)'\n : this.size === 'x-small'\n ? 'var(--text-base)'\n : this.size === 'small'\n ? 'var(--text-md)'\n : this.size === 'medium'\n ? 'var(--text-xl)'\n : this.size === 'large'\n ? 'var(--text-3xl)'\n : this.size === 'x-large'\n ? 'var(--text-5xl)'\n : 'var(--text-xl)'};\n margin-bottom: ${this.size === 'xx-small'\n ? '0'\n : this.size === 'x-small'\n ? '0'\n : this.size === 'small'\n ? '0'\n : this.size === 'medium'\n ? '0'\n : this.size === 'large'\n ? '0.375rem'\n : this.size === 'x-large'\n ? '0.5rem'\n : `${this.marginBottom}px`};\"\n >\n ${this.iconName}\n </span>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\nexport interface AxebowFilterBarOption {\n label: string;\n value: string;\n}\n\nexport interface AxebowFilterBarItem {\n key: string;\n label: string;\n placeholder: string;\n value: string;\n options: AxebowFilterBarOption[];\n separate?: boolean;\n}\n\n/**\n * Purely presentational row of dropdown filters. Receives fully-resolved\n * items to render and only emits `option-change`; it holds no business\n * state, that is the responsibility of the consumer.\n */\n@customElement('axebow-filter-bar')\nexport class AxebowFilterBar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n sl-select {\n --sl-color-primary-500: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-focus-ring-width: 0px;\n }\n sl-select::part(combobox) {\n min-height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n padding-inline: 0.75rem;\n padding-block: 0.5rem;\n gap: 0.5rem;\n box-shadow: none;\n background-color: var(--axebow-white, white);\n }\n sl-select:hover::part(combobox) {\n border-color: var(--axebow-gray);\n }\n sl-select[open]::part(combobox),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black);\n }\n sl-select::part(display-input) {\n color: var(--axebow-secondary);\n font-size: 0.875rem;\n padding: 0;\n }\n sl-select::part(expand-icon) {\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n sl-option::part(checked-icon) {\n display: none;\n }\n sl-option::part(base) {\n font-size: 0.875rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: AxebowFilterBarItem[] = [];\n\n private _resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this._updateSeparateLayout());\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n }\n\n firstUpdated() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (container) this._resizeObserver?.observe(container);\n this._updateSeparateLayout();\n }\n\n updated() {\n requestAnimationFrame(() => this._updateSeparateLayout());\n }\n\n private _updateSeparateLayout() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (!container) return;\n const items = Array.from(container.querySelectorAll<HTMLElement>('.filter-bar-item'));\n if (items.length < 2) return;\n const firstTop = items[0].offsetTop;\n const isSingleRow = items.every((item) => item.offsetTop === firstTop);\n const firstSeparate = container.querySelector<HTMLElement>('.filter-bar-item[data-separate]');\n if (firstSeparate) {\n firstSeparate.style.marginLeft = isSingleRow ? 'auto' : '';\n }\n }\n\n private _onChange(e: CustomEvent, key: string) {\n const value = (e.target as HTMLSelectElement).value;\n this.dispatchEvent(new CustomEvent('option-change', { detail: { key, value }, bubbles: true, composed: true }));\n }\n\n private _renderItem(item: AxebowFilterBarItem) {\n return html`\n <div\n class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36 max-w-[23.75rem]\"\n ?data-separate=${item.separate}\n >\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\n class=\"w-full\"\n placeholder=${item.placeholder}\n value=${item.value}\n data-key=${item.key}\n @sl-change=${(e: CustomEvent) => this._onChange(e, item.key)}\n >\n <axebow-icon\n slot=\"expand-icon\"\n iconName=\"chevron_right\"\n rotate=\"90\"\n size=\"small\"\n iconColor=\"var(--axebow-secondary)\"\n ></axebow-icon>\n ${item.options.map((option) => html`<sl-option value=${option.value}>${option.label}</sl-option>`)}\n </sl-select>\n </div>\n `;\n }\n\n render() {\n return html`\n <div class=\"filter-bar flex items-end gap-4 flex-wrap py-8\">\n ${this.items.map((item) => this._renderItem(item))}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-quick-action-card')\nexport class AxebowQuickActionCard extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: block; }`];\n\n @property({ type: String }) icon = '';\n @property({ type: String }) label = '';\n\n render() {\n return html`\n <div\n class=\"flex flex-col items-center justify-center gap-1 w-[10.5rem] px-4 py-3 rounded bg-white hover:bg-(--axebow-base) cursor-pointer transition-colors duration-150\"\n @click=${this._onClick}\n >\n <axebow-icon iconName=${this.icon} iconColor=\"var(--axebow-primary)\" size=\"medium\"></axebow-icon>\n <span class=\"text-base font-semibold text-(--axebow-primary) text-center whitespace-nowrap\">${this.label}</span>\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('card-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-quick-action-card.js';\n\nexport interface QuickAction {\n icon: string;\n label: string;\n visible: boolean;\n onClick: () => void;\n}\n\n/**\n * Trigger + flyout panel. Drops below the trigger, offset by the trigger's own\n * width so it clears the sidebar column instead of appearing underneath it.\n * First 3 actions render as the infra-creation row, the rest as the\n * deploy/service row (wraps after 3 to match the 168px card width).\n */\n@customElement('axebow-quick-actions')\nexport class AxebowQuickActions extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: inline-block; }`];\n\n @property({ type: String }) label = '';\n @property({ type: Array }) actions: QuickAction[] = [];\n\n @state() private open = false;\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n private _handleOutsideClick = (e: MouseEvent) => {\n if (this.open && !this.contains(e.target as Node)) {\n this.open = false;\n }\n };\n\n private _toggle(e: Event) {\n e.stopPropagation();\n this.open = !this.open;\n }\n\n private _select(action: QuickAction) {\n action.onClick();\n this.open = false;\n }\n\n render() {\n const row1 = this.actions.slice(0, 3).filter((a) => a.visible);\n const row2 = this.actions.slice(3, 7).filter((a) => a.visible);\n\n return html`\n <div class=\"relative\">\n <button\n type=\"button\"\n class=\"group flex flex-col items-center justify-center gap-1 w-20 h-16 border-none cursor-pointer transition-colors duration-150 ${this\n .open\n ? 'bg-(--axebow-base)'\n : 'bg-(--axebow-primary) hover:bg-(--axebow-base)'}\"\n @click=${this._toggle}\n >\n <span\n class=\"flex flex-col items-center justify-center gap-1 ${this.open\n ? 'text-(--axebow-primary)'\n : 'text-white group-hover:text-(--axebow-primary)'}\"\n >\n <axebow-icon iconName=${this.open ? 'close' : 'apps'} iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n <span\n class=\"text-xs whitespace-nowrap ${this.open ? 'font-semibold' : 'font-normal group-hover:font-semibold'}\"\n >${this.label}</span\n >\n </span>\n </button>\n\n ${this.open\n ? html`\n <div\n class=\"absolute top-full left-full mt-2 z-2000 flex flex-col gap-1 p-1 bg-white border border-solid border-(--axebow-light-gray) rounded-lg axebow-shadow\"\n >\n <div class=\"flex gap-1\">\n ${row1.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n ${row2.length\n ? html`\n <div class=\"h-[0.0625rem] w-full bg-(--axebow-light-gray)\"></div>\n <div class=\"flex flex-wrap gap-x-1 gap-y-[0.1875rem]\">\n ${row2.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n `\n : ''}\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/dropdown/dropdown.js';\nimport '@shoelace-style/shoelace/dist/components/menu/menu.js';\nimport '@shoelace-style/shoelace/dist/components/switch/switch.js';\nimport '@shoelace-style/shoelace/dist/components/tab-group/tab-group.js';\nimport '@shoelace-style/shoelace/dist/components/tab/tab.js';\nimport '@shoelace-style/shoelace/dist/components/tab-panel/tab-panel.js';\n\nexport interface ProfileMenuItem {\n name: string;\n onClick: () => void;\n}\n\nexport interface NotificationAction {\n label: string;\n color: string;\n action: () => void;\n}\n\nexport interface FormattedNotificationVM {\n id: string;\n title: string;\n description: string;\n icon: string;\n color: string;\n status: 'read' | 'unread';\n date: string;\n callToAction: boolean;\n actions?: NotificationAction[];\n onClick: () => void;\n}\n\n/**\n * Right-hand header cluster: notifications dropdown + profile menu.\n */\n@customElement('axebow-header-actions')\nexport class AxebowHeaderActions extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n sl-dropdown::part(panel) {\n max-width: 500px;\n }\n .notification-description code {\n display: inline-block;\n white-space: pre-wrap;\n word-break: break-all;\n }\n .notification-description pre {\n white-space: pre-wrap;\n }\n `,\n ];\n\n @property({ type: String }) userName = '';\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n @state() private showUnreadOnly = false;\n\n private handleShowUnreadOnlyChange(e: any) {\n this.showUnreadOnly = e.target.checked;\n }\n\n render() {\n const unreadNotifications = this.notifications.filter((n) => n.status === 'unread');\n const notificationsToShow = this.showUnreadOnly ? unreadNotifications : this.notifications;\n\n return html`\n <div class=\"flex items-center gap-2 z-10 shrink-0 min-w-0 ml-auto\">\n <sl-dropdown>\n <div\n class=\"relative group w-9 h-9 rounded-lg flex items-center justify-center cursor-pointer transition-colors duration-150 hover:bg-[#344966]\"\n slot=\"trigger\"\n >\n <span class=\"inline-block transition-transform duration-200 group-hover:rotate-15\">\n <axebow-icon iconName=\"notifications\" iconColor=\"white\"></axebow-icon>\n </span>\n ${unreadNotifications.length > 0\n ? html`<div\n class=\"absolute bottom-0.5 right-0.5 flex items-center justify-center rounded-full bg-(--axebow-error) text-white font-bold z-10 pointer-events-none ${unreadNotifications.length <\n 10\n ? 'w-4 h-4 text-sm'\n : 'h-4 min-w-4 px-0.5 text-sm'}\"\n >\n ${unreadNotifications.length > 99 ? '99+' : unreadNotifications.length}\n </div>`\n : ''}\n <span\n class=\"absolute top-1/2 -translate-y-1/2 right-[calc(100%+10px)] translate-x-1 opacity-0 group-hover:opacity-100 group-hover:translate-x-0 text-base transition-all duration-120 bg-[#b4cded] text-[#344966] font-semibold leading-none px-3.5 py-2 rounded-lg whitespace-nowrap shadow-[0_6px_16px_rgba(13,24,33,0.18)] pointer-events-none z-2001\"\n >${this.notificationsLabel}</span\n >\n </div>\n <sl-tab-group class=\"bg-white rounded-lg w-120 text-base\">\n <sl-tab slot=\"nav\" panel=\"my_notifications\">${this.myNotificationsTabLabel}</sl-tab>\n <sl-tab slot=\"nav\" panel=\"action_needed\">${this.actionNeededTabLabel}</sl-tab>\n\n <sl-tab-panel class=\"bg-gray-100\" name=\"my_notifications\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.notifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n <div class=\"flex justify-between items-center flex-wrap gap-4\">\n <div class=\"flex items-center py-1\">\n <p class=\"mr-4 text-base\">${this.showUnreadOnlyLabel}</p>\n <sl-switch @sl-change=${(e: any) => this.handleShowUnreadOnlyChange(e)}></sl-switch>\n <p class=\"italic text-gray-400 text-base\">\n ${this.showUnreadOnly ? this.onLabel : this.offLabel}\n </p>\n </div>\n <button class=\"text-gray-500 cursor-pointer text-base\" @click=${() => this.onMarkAllAsRead()}>\n ${this.markAllAsReadLabel}\n </button>\n </div>\n ${this.showUnreadOnly && unreadNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noUnreadNotificationsLabel}</p>\n </div>`\n : html` ${notificationsToShow.map((item) => this.renderNotificationCard(item))} `}\n </div>\n `}\n </div>\n </sl-tab-panel>\n <sl-tab-panel class=\"bg-gray-100\" name=\"action_needed\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.actionNeededNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center p-4\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noActionNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n ${this.actionNeededNotifications.map((item) => this.renderNotificationCard(item))}\n </div>\n `}\n </div>\n </sl-tab-panel>\n </sl-tab-group>\n </sl-dropdown>\n <sl-dropdown class=\"shrink-0\">\n <div\n slot=\"trigger\"\n class=\"group flex items-center gap-2 h-9 px-3 rounded-lg text-white font-semibold cursor-pointer whitespace-nowrap transition-all duration-150 hover:bg-white hover:text-[#344966] hover:shadow-[0_2px_6px_rgba(13,24,33,0.14)] text-base\"\n >\n <span class=\"text-white group-hover:text-(--axebow-primary) transition-colors duration-150\">\n <axebow-icon iconName=\"account_circle\" iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n </span>\n ${this.userName}\n </div>\n <sl-menu class=\"bg-white rounded-lg p-2 min-w-55 axebow-shadow\">\n ${this.profileMenuItems.map(\n (item) => html`\n <button\n class=\"w-full flex text-base items-center justify-between ml-auto px-4 py-2 cursor-pointer rounded-lg hover:bg-gray-200 transition-colors ease-in-out duration-200 hover:text-(--axebow-tertiary)\"\n @click=${() => item.onClick()}\n >\n <span class=\"text-(--axebow-primary)\">${item.name}</span>\n <axebow-icon iconName=\"arrow_right_alt\" size=\"medium\"></axebow-icon>\n </button>\n `\n )}\n <button\n class=\"ml-auto flex items-center justify-between w-full px-4 py-2 text-(--axebow-error) cursor-pointer rounded-lg text-base\"\n @click=${() => this.onLogout()}\n >\n <span class=\"text-(--axebow-error) mt-1\">${this.logoutLabel}</span>\n <axebow-icon iconName=\"mode_off_on\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>\n </button>\n </sl-menu>\n </sl-dropdown>\n </div>\n `;\n }\n\n private renderNotificationCard(item: FormattedNotificationVM) {\n return html`\n <div\n class=\"relative flex gap-2 p-2 w-full rounded-md border-2 border-solid text-base ${item.status === 'unread'\n ? 'border-gray-500 hover:border-(--axebow-tertiary) text-gray-600'\n : 'border-gray-300 text-gray-400'} \"\n @click=${() => item.onClick()}\n >\n ${item.status === 'unread'\n ? html` <div class=\"absolute top-[-7px] left-[-7px] h-3.5 w-3.5 rounded-full bg-(--axebow-success)\"></div>`\n : ''}\n <axebow-icon\n iconName=${item.icon}\n size=\"medium\"\n iconColor=${item.status === 'unread' ? item.color : 'gray'}\n ></axebow-icon>\n <div class=\"flex flex-1 flex-col gap-1 py-1.25 min-w-0 overflow-hidden\">\n <div class=\"flex justify-between gap-2\">\n <h4 class=\"font-semibold wrap-break-word\">${item.title}</h4>\n <span class=\"ms-auto min-w-fit shrink-0 text-gray-400\">${item.date}</span>\n </div>\n <div\n class=\"notification-description leading-tight max-w-full pe-4 overflow-x-hidden overflow-y-auto max-h-75 wrap-break-word\"\n .innerHTML=${item.description}\n ></div>\n ${item.actions && item.actions.length > 0\n ? html`\n <div class=\"flex gap-4 ml-auto pe-4 flex-wrap\">\n ${item.actions.map(\n (action) => html`\n <button class=\"text-sm font-semibold text-[${action.color}] hover:underline\" @click=${action.action}>\n ${action.label}\n </button>\n `\n )}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport './parts/axebow-quick-actions.js';\nimport './parts/axebow-header-actions.js';\nimport type { QuickAction } from './parts/axebow-quick-actions.js';\nimport type { ProfileMenuItem, FormattedNotificationVM } from './parts/axebow-header-actions.js';\n\n/**\n * Purely presentational app header. Receives fully-resolved data and\n * callback props; quick-actions open state and the notifications\n * unread-only filter are owned by their respective sub-components.\n */\n@customElement('axebow-header')\nexport class AxebowHeader extends LitElement {\n @property({ type: Boolean, reflect: true }) minimal = false;\n @property({ type: String }) logoUrl = '';\n @property({ type: String }) logoAlt = '';\n @property({ attribute: false }) onLogoClick: () => void = () => {};\n @property({ type: String }) userName = '';\n @property({ type: String }) quickActionsLabel = '';\n @property({ type: Array }) quickActions: QuickAction[] = [];\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n static styles = [unsafeCSS(tailwindCss), axebowTheme];\n\n render() {\n return html`\n <header class=\"relative flex items-center justify-between h-full pe-4 py-2\">\n ${this.minimal\n ? html`\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n `\n : html`\n <axebow-quick-actions .label=${this.quickActionsLabel} .actions=${this.quickActions}></axebow-quick-actions>\n\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n\n <axebow-header-actions\n .userName=${this.userName}\n .profileMenuItems=${this.profileMenuItems}\n .logoutLabel=${this.logoutLabel}\n .onLogout=${this.onLogout}\n .notificationsLabel=${this.notificationsLabel}\n .notifications=${this.notifications}\n .actionNeededNotifications=${this.actionNeededNotifications}\n .myNotificationsTabLabel=${this.myNotificationsTabLabel}\n .actionNeededTabLabel=${this.actionNeededTabLabel}\n .noNotificationsLabel=${this.noNotificationsLabel}\n .noUnreadNotificationsLabel=${this.noUnreadNotificationsLabel}\n .noActionNotificationsLabel=${this.noActionNotificationsLabel}\n .showUnreadOnlyLabel=${this.showUnreadOnlyLabel}\n .onLabel=${this.onLabel}\n .offLabel=${this.offLabel}\n .markAllAsReadLabel=${this.markAllAsReadLabel}\n .onMarkAllAsRead=${this.onMarkAllAsRead}\n ></axebow-header-actions>\n `}\n </header>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html, css, LitElement, unsafeCSS } from 'lit';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/divider/divider.js';\n\nexport interface NavItem {\n key: string;\n label: string;\n icon: string;\n onClick: () => void;\n isRoot?: boolean;\n openInNewTab?: boolean;\n}\n\nexport interface NavDivider {\n divider: true;\n}\n\nexport type SidebarEntry = NavItem | NavDivider;\n\n/**\n * Purely presentational app sidebar. Receives fully-resolved nav entries,\n * the currently-selected item key, and the reserved bottom padding (driven\n * by the app's own footer-height tracking); owns only hover-tooltip UI\n * state.\n */\n@customElement('axebow-sidebar')\nexport class AxebowSidebar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n position: relative;\n width: 4rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: SidebarEntry[] = [];\n @property({ type: Array }) bottomItems: NavItem[] = [];\n @property({ type: String }) selectedKey: string | null = null;\n @property({ type: Number }) paddingBottom = 10;\n\n @state() private hoveredItem: NavItem | null = null;\n @state() private tooltipTop = 0;\n @state() private tooltipLeft = 0;\n\n private handleMouseEnter(event: MouseEvent, item: NavItem) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n this.tooltipTop = rect.top + 10;\n this.tooltipLeft = rect.right - 8;\n this.hoveredItem = item;\n }\n\n private handleMouseLeave() {\n this.hoveredItem = null;\n }\n\n private _isSelected(item: NavItem): boolean {\n return this.selectedKey === item.key || (!!item.isRoot && this.selectedKey === null);\n }\n\n render() {\n return html`\n <nav\n style=\"padding-bottom: ${this.paddingBottom}px;\"\n class=\"h-full flex flex-col justify-between overflow-x-hidden pt-2\"\n >\n <ul class=\"flex flex-col gap-0 w-full pb-4\">\n ${this.items.map((entry) =>\n 'divider' in entry\n ? html` <sl-divider class=\"w-[calc(100%-10px)] my-2 h-px bg-(--axebow-light-gray)\"></sl-divider> `\n : this._renderNavItem(entry, this._isSelected(entry))\n )}\n </ul>\n <ul>\n ${this.bottomItems.map((item) => this._renderBottomItem(item))}\n </ul>\n </nav>\n\n ${this.hoveredItem\n ? html`\n <div\n class=\"fixed ps-4 flex items-center pointer-events-none z-9999\"\n style=\"left: ${this.tooltipLeft}px; top: ${this.tooltipTop}px; height: 3rem;\"\n >\n <span\n class=\"flex items-center gap-1 px-2 py-1 bg-white rounded-lg text-base border border-solid border-(--axebow-gray) shadow-lg\"\n >${this.hoveredItem.label}${this.hoveredItem.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n `\n : ''}\n `;\n }\n\n private _renderNavItem(item: NavItem, selected: boolean) {\n return html`\n <li\n class=\"${selected\n ? 'bg-(--axebow-base) rounded-l-xl cursor-default'\n : 'cursor-pointer'} flex flex-col w-full h-16 items-center justify-center relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-xs overflow-hidden whitespace-nowrap opacity-100 max-w-full\">${item.label}</span>\n </div>\n\n ${!selected\n ? html`\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n `\n : ''}\n </li>\n `;\n }\n\n private _renderBottomItem(item: NavItem) {\n return html`\n <li\n class=\"flex flex-col w-full items-center justify-center cursor-pointer relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center py-3\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-sm overflow-hidden whitespace-nowrap opacity-100 max-w-full\"\n >${item.label}${item.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n </li>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface FooterLink {\n label: string;\n url: string;\n onClick: () => void;\n}\n\n/**\n * Purely presentational site footer. Receives already-filtered, already\n * translated links; owns only the footer-height broadcast used by\n * axebow-sidebar to reserve bottom padding.\n */\n@customElement('axebow-footer')\nexport class AxebowFooter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n position: relative;\n z-index: 1001;\n overflow: hidden;\n }\n `,\n ];\n\n @property({ type: Array }) links: FooterLink[] = [];\n\n private resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.emitFooterHeight();\n });\n this.resizeObserver.observe(this);\n window.addEventListener('resize', this.emitFooterHeight);\n window.addEventListener('scroll', this.emitFooterHeight, true);\n setTimeout(() => this.emitFooterHeight(), 0);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n window.removeEventListener('resize', this.emitFooterHeight);\n window.removeEventListener('scroll', this.emitFooterHeight, true);\n }\n\n private emitFooterHeight = () => {\n const rect = this.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n let visible = 0;\n if (rect.top < windowHeight && rect.bottom > 0) {\n const visibleBottom = Math.min(rect.bottom, windowHeight);\n const visibleTop = Math.max(rect.top, 0);\n visible = visibleBottom - visibleTop;\n }\n visible = Math.max(0, visible);\n this.dispatchEvent(\n new CustomEvent('footer-height-changed', {\n detail: { height: visible },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n render() {\n return html`\n <footer\n class=\"text-center text-sm flex w-full bg-(--axebow-primary) text-white justify-center items-center h-8 px-2 md:gap-8 gap-4 flex-wrap\"\n >\n ${this.links.map(\n (link) => html`\n <button\n class=\"h-7 text-sm p-1 inline-flex items-center gap-1 opacity-70 hover:opacity-100 transition-opacity duration-150 text-(--axebow-anti-flash-white) bg-transparent border-0 cursor-pointer\"\n @click=${link.onClick}\n >\n ${link.label}\n <axebow-icon iconName=\"open_in_new\" iconColor=\"var(--axebow-anti-flash-white)\" size=\"small\"></axebow-icon>\n </button>\n `\n )}\n </footer>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface BreadcrumbSecondaryPage {\n label: string;\n onClick?: () => void;\n}\n\n/**\n * Purely presentational page breadcrumb: optional home block, optional\n * clickable secondary-page trail, the current page title, and an optional\n * \"required field\" note. Receives all copy and navigation as properties.\n */\n@customElement('axebow-breadcrumb-header')\nexport class AxebowBreadcrumbHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n `,\n ];\n\n @property({ type: Boolean }) padded = false;\n @property({ type: Boolean }) showHomeBlock = true;\n @property({ attribute: false }) onHomeClick: () => void = () => {};\n @property({ type: Boolean }) showSecondaryPages = false;\n @property({ type: Array }) secondaryPages: BreadcrumbSecondaryPage[] = [];\n @property({ type: String }) mainPage = '';\n @property({ type: Boolean }) showRequiredField = false;\n @property({ type: String }) requiredFieldLabel = '';\n\n render() {\n return html`\n <div class=\"flex flex-col gap-1 py-8 ${this.padded ? 'ps-8' : ''}\">\n <div class=\"flex flex-wrap items-center gap-2 text-xl text-[#344966]\">\n ${this.showHomeBlock\n ? html`\n <span class=\"flex items-center gap-2 cursor-pointer\" @click=${() => this.onHomeClick()}>\n <axebow-icon iconName=\"home\" iconColor=\"#344966\" size=\"medium\"></axebow-icon>\n <span class=\"font-normal\">/</span>\n </span>\n `\n : ''}\n ${this.showSecondaryPages\n ? this.secondaryPages.map(\n (page) => html`\n <span\n class=\"font-normal ${page.onClick ? 'cursor-pointer hover:underline' : ''}\"\n @click=${page.onClick ? () => page.onClick!() : undefined}\n >${page.label} /</span\n >\n `\n )\n : ''}\n <span class=\"font-semibold\">${this.mainPage}</span>\n </div>\n ${this.showRequiredField\n ? html`\n <div class=\"text-sm\">\n <span class=\"font-bold text-(--axebow-error)\">*</span>\n <span class=\"font-normal text-(--axebow-rich-black)\"> ${this.requiredFieldLabel}</span>\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import { html, LitElement, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport '@shoelace-style/shoelace/dist/components/button/button.js';\n\n@customElement('axebow-button')\nexport class AxebowButton extends LitElement {\n @property({ type: String, reflect: true }) variant:\n | 'default'\n | 'primary'\n | 'success'\n | 'neutral'\n | 'warning'\n | 'danger'\n | 'text' = 'default';\n\n @property({ type: String, reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n @property({ type: Boolean, reflect: true }) outline = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n @property({ type: Boolean, reflect: true }) circle = false;\n @property({ type: Boolean, attribute: false }) disabled = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean, reflect: true }) caret = false;\n @property({ type: String }) type: 'button' | 'submit' | 'reset' = 'button';\n @property({ type: String }) href?: string;\n @property({ type: String }) target?: string;\n @property({ type: String }) name?: string;\n @property({ type: String }) value?: string;\n\n constructor() {\n super();\n this.addEventListener('click', this._guardDisabledClick, { capture: true });\n }\n\n private _guardDisabledClick = (event: MouseEvent) => {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-button {\n width: 100%;\n }\n\n /**\n * Hover is always a plain recolor to axebow-gray, no matter the\n * variant - nothing else about the button's structure changes.\n */\n\n /** Default / neutral button */\n sl-button[variant='default']:hover::part(base),\n sl-button[variant='neutral']:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Primary button */\n sl-button[variant='primary']::part(base) {\n background: var(--axebow-tertiary);\n color: white;\n border-color: transparent;\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary']:hover::part(base) {\n background: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Outlined primary button */\n sl-button[variant='primary'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Text button */\n sl-button[variant='text']::part(base) {\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='text']::part(label) {\n color: var(--axebow-tertiary);\n }\n sl-button[variant='text']:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n sl-button[variant='text']:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Success button */\n sl-button[variant='success']::part(base) {\n background: var(--axebow-success);\n border-color: var(--axebow-success);\n color: white;\n border-radius: 8px;\n outline-color: var(--axebow-success);\n }\n sl-button[variant='success']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger button */\n sl-button[variant='danger']::part(base) {\n background: var(--axebow-error);\n border-color: var(--axebow-error);\n color: white;\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger outlined */\n sl-button[variant='danger'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-error);\n border-color: var(--axebow-error);\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger text (host class) */\n :host(.axebow-red-button-text) sl-button::part(base) {\n outline-color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button::part(label) {\n color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Warning button (host class) */\n :host(.axebow-warning-button-bg) sl-button::part(base) {\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n :host(.axebow-warning-button-bg) sl-button:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n `,\n ];\n\n render() {\n return html`\n <sl-button\n exportparts=\"base, label, prefix, suffix, caret\"\n variant=${this.variant}\n size=${this.size}\n ?outline=${this.outline}\n ?pill=${this.pill}\n ?circle=${this.circle}\n ?disabled=${this.disabled}\n ?loading=${this.loading}\n ?caret=${this.caret}\n type=${this.type}\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n name=${ifDefined(this.name)}\n value=${ifDefined(this.value)}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n </sl-button>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\n\n/**\n * Purely presentational search box, fixed at 320x40px. Receives its value\n * and placeholder as properties and emits `search-change` with the new\n * value on input/clear; it holds no business state.\n */\n@customElement('axebow-search')\nexport class AxebowSearch extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-input {\n width: 20rem;\n --sl-focus-ring-width: 0px;\n }\n sl-input::part(base) {\n height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n box-shadow: none;\n }\n sl-input:focus-within::part(base) {\n border-color: var(--axebow-tertiary);\n }\n sl-input::part(input) {\n color: var(--axebow-rich-black, #0d1821);\n font-size: 0.875rem;\n }\n sl-input::part(prefix) {\n padding-inline-start: 0.75rem;\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n\n private _emitChange(value: string) {\n this.dispatchEvent(\n new CustomEvent('search-change', { detail: { value }, bubbles: true, composed: true })\n );\n }\n\n private _onInput(e: Event) {\n this._emitChange((e.target as HTMLInputElement).value);\n }\n\n private _onClear() {\n this._emitChange('');\n }\n\n render() {\n return html`\n <sl-input placeholder=${this.placeholder} .value=${this.value} clearable @sl-input=${this._onInput} @sl-clear=${this._onClear}>\n <axebow-icon slot=\"prefix\" iconName=\"search\" iconColor=\"var(--axebow-gray)\" size=\"small\"></axebow-icon>\n </sl-input>\n `;\n }\n}\n","import { html, css, LitElement, unsafeCSS, TemplateResult } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport '../axebow-icon/axebow-icon.js';\n\n/**\n * Template-method base for every axebow-*-input control: owns the shared\n * label/description/error wrapper markup and the disabled-aware value\n * change plumbing. Concrete inputs only implement their own field markup\n * via render().\n */\nexport abstract class AxebowInputBase extends LitElement {\n static baseStyles = [\n unsafeCSS(tailwindCss),\n axebowTheme,\n css`\n sl-input,\n sl-select {\n width: 100%;\n }\n sl-input::part(base),\n sl-select::part(combobox) {\n --sl-input-focus-ring-color: transparent;\n --sl-color-primary-600: transparent;\n --sl-input-border-color-focus: transparent;\n }\n .input-error sl-input,\n .input-error sl-select {\n --sl-input-border-color: var(--axebow-error, #e53e3e);\n --sl-input-border-color-focus: var(--axebow-error, #e53e3e);\n --sl-input-border-color-hover: var(--axebow-error, #e53e3e);\n }\n .input-error sl-input::part(input),\n .input-error sl-select::part(display-input) {\n color: var(--axebow-error, #e53e3e);\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n @property({ type: String }) label = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) required = false;\n @property({ type: Boolean }) disabled = false;\n @property({ type: Boolean }) hasError = false;\n @property({ type: String }) errorMessage = '';\n @property({ type: Number }) maxlength?: number;\n @property({ attribute: false }) callback?: (e: Event) => void;\n @property({ type: Boolean }) compact = false;\n\n protected handleChange(e: Event) {\n if (this.disabled) return;\n const target = e.target as HTMLInputElement | HTMLSelectElement;\n this.value = target.value;\n this.callback?.(e);\n }\n\n protected renderWrapper(content: TemplateResult): TemplateResult {\n return html`\n <div class=\"flex flex-col justify-end gap-2 w-full relative\">\n ${!this.compact || this.label\n ? html`<div class=\"flex items-baseline gap-2 ${this.description ? 'my-2' : ''}\">\n <p class=\"text-(--axebow-error)\">${this.required ? '*' : ''}</p>\n <h4 class=\"${this.compact ? 'font-normal text-sm' : 'font-bold text-base'}\">${this.label}</h4>\n </div>`\n : ''}\n ${this.description\n ? html`<p class=\"text-m h-12 overflow-hidden line-clamp-2 mb-1\" title=\"${this.description}\">\n ${this.description}\n </p>`\n : ''}\n ${content}\n ${!this.compact && this.hasError && this.errorMessage\n ? html`<div class=\"mt-1 min-h-5 text-(--axebow-error) text-sm flex items-center gap-1\">\n <span class=\"text-base shrink-0\"\n ><axebow-icon iconName=\"error\" iconColor=\"var(--axebow-error)\"></axebow-icon\n ></span>\n ${this.errorMessage}\n </div>`\n : ''}\n </div>\n `;\n }\n}\n","import { html, css } from 'lit';\nimport { customElement } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\n@customElement('axebow-text-input')\nexport class AxebowTextInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n /* Anatomy for the labeled text-input case: label 17px tall, 4px gap\n to an optional description (also 17px tall, omitted entirely when\n absent - no reserved blank space), 8px gap to the 40px input box.\n 265.5px (16.59375rem) is the floor width - it grows with whatever\n space the parent gives it. */\n .fixed-field {\n display: flex;\n flex-direction: column;\n width: 100%;\n min-width: 16.59375rem;\n }\n .fixed-field .field-label,\n .fixed-field .field-description {\n width: 100%;\n height: 1.0625rem;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n .fixed-field .field-label {\n margin-bottom: 0.25rem;\n }\n .fixed-field .field-description {\n margin-bottom: 0.5rem;\n }\n .fixed-field sl-input {\n width: 100%;\n }\n .fixed-field sl-input::part(base) {\n height: 2.5rem;\n }\n .fixed-field sl-input::part(input) {\n font-size: 0.875rem;\n }\n `,\n ];\n\n private renderFixedField() {\n const containerClass = this.hasError ? 'input-error' : '';\n return html`\n <div class=\"fixed-field\">\n <div class=\"flex items-baseline gap-2 field-label\">\n <p class=\"text-(--axebow-error) text-base leading-[1.0625rem] m-0\">${this.required ? '*' : ''}</p>\n <h4 class=\"font-semibold text-base leading-[1.0625rem] m-0 overflow-hidden text-ellipsis\">${this.label}</h4>\n </div>\n ${this.description\n ? html`<p class=\"field-description text-base leading-[1.0625rem] m-0\" title=\"${this.description}\">\n ${this.description}\n </p>`\n : ''}\n <div class=\"${containerClass}\">\n <sl-input\n @sl-input=\"${this.handleChange}\"\n placeholder=\"${this.placeholder}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n maxlength=\"${this.maxlength ?? 255}\"\n ></sl-input>\n </div>\n ${this.hasError && this.errorMessage\n ? html`<div class=\"mt-1 min-h-5 text-(--axebow-error) text-sm flex items-center gap-1\">\n <span class=\"text-base shrink-0\"\n ><axebow-icon iconName=\"error\" iconColor=\"var(--axebow-error)\"></axebow-icon\n ></span>\n ${this.errorMessage}\n </div>`\n : ''}\n </div>\n `;\n }\n\n render() {\n if (this.label && !this.compact) {\n return this.renderFixedField();\n }\n\n const containerClass = this.hasError ? 'input-error' : '';\n return this.renderWrapper(html`\n <div class=\"${containerClass}\">\n <sl-input\n @sl-input=\"${this.handleChange}\"\n placeholder=\"${this.placeholder}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n maxlength=\"${this.maxlength ?? 255}\"\n ></sl-input>\n </div>\n `);\n }\n}\n","import { html } from 'lit';\nimport { live } from 'lit/directives/live.js';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\n@customElement('axebow-numeric-input')\nexport class AxebowNumericInput extends AxebowInputBase {\n static styles = [...AxebowInputBase.baseStyles];\n\n @property({ type: Number }) max = Number.MAX_SAFE_INTEGER;\n @property({ type: Number }) min = 0;\n @property({ type: Boolean }) integerOnly = false;\n\n protected handleChange(e: Event) {\n if (this.disabled) return;\n if (this.integerOnly) {\n const target = e.target as HTMLInputElement;\n let truncated = Math.trunc(Number(target.value));\n if (truncated > this.max) {\n truncated = this.max;\n }\n target.value = truncated.toString();\n this.value = target.value;\n this.callback?.(e);\n return;\n }\n super.handleChange(e);\n }\n\n protected handleKeyDown(e: KeyboardEvent) {\n if (this.integerOnly && (e.key === '.' || e.key === ',' || e.key === 'e' || e.key === 'E')) {\n e.preventDefault();\n }\n }\n\n render() {\n const containerClass = this.hasError ? 'input-error' : '';\n return this.renderWrapper(html`\n <div class=\"${containerClass}\">\n <sl-input\n type=\"number\"\n placeholder=\"${this.placeholder}\"\n @sl-input=\"${this.handleChange}\"\n @keydown=\"${this.handleKeyDown}\"\n .value=\"${live(this.value)}\"\n ?disabled=\"${this.disabled}\"\n max=${this.max}\n min=${this.min}\n step=${this.integerOnly ? '1' : 'any'}\n ></sl-input>\n </div>\n `);\n }\n}\n","import { html, css } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/checkbox/checkbox.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\nexport interface CheckboxOption {\n value: string;\n label: string;\n}\n\n@customElement('axebow-checkbox-input')\nexport class AxebowCheckboxInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n sl-checkbox::part(base) {\n display: flex;\n align-items: flex-start;\n margin-bottom: 20px;\n margin-top: 0;\n }\n sl-checkbox::part(control) {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n sl-checkbox::part(label) {\n display: flex;\n align-items: center;\n }\n `,\n ];\n\n @property({ type: Array }) options: CheckboxOption[] = [];\n\n render() {\n return this.renderWrapper(html`\n <div class=\"flex items-center gap-12 mt-6 ml-12\">\n ${this.options.map(\n (opt) => html`\n <sl-checkbox\n .value=${opt.value}\n .checked=${this.value === opt.value}\n @sl-input=${(e: Event) => {\n if (this.disabled) return;\n this.value = (e.target as HTMLInputElement).value;\n this.requestUpdate();\n this.callback?.(e);\n }}\n ?disabled=${this.disabled}\n >\n ${opt.label}\n </sl-checkbox>\n `\n )}\n </div>\n `);\n }\n}\n","import { html, css } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/carousel/carousel.js';\nimport '@shoelace-style/shoelace/dist/components/carousel-item/carousel-item.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\nexport interface CarouselItem {\n id: string;\n content: string;\n registry?: string;\n name?: string;\n}\n\n@customElement('axebow-carousel-input')\nexport class AxebowCarouselInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n sl-carousel-item > div {\n width: 100%;\n box-sizing: border-box;\n }\n `,\n ];\n\n @property({ type: Array }) carouselItems: CarouselItem[] = [];\n @property({ attribute: false }) carouselItemRenderer?: (item: CarouselItem) => unknown;\n\n @state() private slidesPerPage = 3.4;\n private resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this.updateSlidesPerPage();\n this.resizeObserver = new ResizeObserver(() => this.updateSlidesPerPage());\n this.resizeObserver.observe(document.body);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n }\n\n private updateSlidesPerPage() {\n const width = window.innerWidth;\n let newSlidesPerPage: number;\n if (width < 480) newSlidesPerPage = 1.5;\n else if (width < 640) newSlidesPerPage = 2;\n else if (width < 768) newSlidesPerPage = 3;\n else if (width < 1024) newSlidesPerPage = 4;\n else if (width < 1400) newSlidesPerPage = 5;\n else newSlidesPerPage = 6;\n\n if (this.slidesPerPage !== newSlidesPerPage) {\n this.slidesPerPage = newSlidesPerPage;\n this.requestUpdate();\n }\n }\n\n render() {\n return this.renderWrapper(html`\n <div class=\"flex flex-wrap gap-4 justify-between\">\n <sl-carousel\n class=\"flex gap-5 w-full\"\n navigation\n slides-per-page=\"${this.slidesPerPage}\"\n @sl-input=\"${this.handleChange}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n >\n ${this.carouselItems.map((item) =>\n this.carouselItemRenderer\n ? this.carouselItemRenderer(item)\n : html`\n <sl-carousel-item>\n <div\n class=\"rounded-lg border-2 border-solid border-transparent p-4 transition-all duration-300 cursor-pointer text-center flex gap-4 items-center\"\n >\n ${item.content}\n </div>\n </sl-carousel-item>\n `\n )}\n </sl-carousel>\n </div>\n `);\n }\n}\n","import { html } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\nimport { CarouselItem } from './axebow-carousel-input.js';\n\n@customElement('axebow-providers-input')\nexport class AxebowProvidersInput extends AxebowInputBase {\n static styles = [...AxebowInputBase.baseStyles];\n\n @property({ type: Array }) carouselItems: CarouselItem[] = [];\n @property({ attribute: false }) carouselItemRenderer?: (item: CarouselItem) => unknown;\n\n render() {\n return this.renderWrapper(html`\n <div class=\"flex flex-wrap gap-3 mt-0\">\n ${this.carouselItems.map((item) =>\n this.carouselItemRenderer\n ? this.carouselItemRenderer(item)\n : html`\n <div>\n <img src=\"${item.content}\" alt=\"${item.id}\" />\n <p>${item.id}</p>\n </div>\n `\n )}\n </div>\n `);\n }\n}\n","import { html, css, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\nimport '@shoelace-style/shoelace/dist/components/dialog/dialog.js';\nimport '../axebow-button/axebow-button.js';\nimport { AxebowInputBase } from './axebow-input-base.js';\n\nexport interface SelectOption {\n value: string;\n label: string | TemplateResult;\n}\n\n/**\n * Copy for the built-in \"add new option\" dialog. Grouped into one object\n * (rather than flat props) since it's a single cohesive sub-feature only\n * relevant when allowAddNew is set; the host app supplies its own\n * translated strings, this component holds no i18n dependency of its own.\n */\nexport interface AddDialogLabels {\n title: string;\n intro: string;\n nameLabel: string;\n namePlaceholder: string;\n requiredField: string;\n duplicateItem: string;\n cancel: string;\n save: string;\n}\n\nexport const DEFAULT_ADD_DIALOG_LABELS: AddDialogLabels = {\n title: 'Add New Item',\n intro: 'Enter the information for the new item.',\n nameLabel: 'Name',\n namePlaceholder: '',\n requiredField: 'This field is required',\n duplicateItem: 'An item with this name already exists',\n cancel: 'Cancel',\n save: 'Save',\n};\n\n@customElement('axebow-select-input')\nexport class AxebowSelectInput extends AxebowInputBase {\n static styles = [\n ...AxebowInputBase.baseStyles,\n css`\n .add-option {\n font-weight: bold;\n color: var(--axebow-tertiary);\n }\n `,\n ];\n\n @property({ type: Array }) options: SelectOption[] = [];\n @property({ type: Boolean }) allowAddNew = false;\n @property({ type: String }) addNewLabel = '+ Add new...';\n @property({ type: String }) emptyOptionLabel = 'Select option';\n @property({ type: Boolean }) showAddDialogInside = true;\n @property({ type: Boolean }) clearable = true;\n @property({ attribute: false }) onAddNew?: (newItem: { value: string; label: string; description?: string }) => void;\n @property({ attribute: false }) addDialogLabels: AddDialogLabels = DEFAULT_ADD_DIALOG_LABELS;\n\n @state() private showAddDialog = false;\n @state() private newItemName = '';\n @state() private newItemDescription = '';\n\n private handleSelectChange(e: Event) {\n if (this.disabled) return;\n const target = e.target as HTMLSelectElement;\n if (this.allowAddNew && target.value === '__add_new__') {\n setTimeout(() => {\n target.value = this.value;\n }, 0);\n if (this.showAddDialogInside) {\n this.showAddDialog = true;\n this.updateComplete.then(() => {\n const input = this.shadowRoot?.querySelector('#new-item-input') as any;\n setTimeout(() => input?.focus(), 100);\n });\n } else {\n this.onAddNew?.({ value: '__add_new__', label: this.addNewLabel });\n }\n return;\n }\n this.handleChange(e);\n }\n\n private createSlug(name: string): string {\n return name\n .toLowerCase()\n .normalize('NFD')\n .replace(new RegExp('[\\\\u0300-\\\\u036f]', 'g'), '')\n .replace(/[^a-z0-9\\s-]/g, '')\n .replace(/\\s+/g, '-')\n .replace(/-+/g, '-')\n .replace(/^-|-$/g, '');\n }\n\n private saveNewItem() {\n const input = this.shadowRoot?.querySelector('#new-item-input') as any;\n if (!this.newItemName.trim()) {\n input?.setCustomValidity(this.addDialogLabels.requiredField);\n input?.reportValidity();\n return;\n }\n input?.setCustomValidity('');\n const itemValue = this.createSlug(this.newItemName);\n if (this.options.find((opt) => opt.value === itemValue)) {\n input?.setCustomValidity(this.addDialogLabels.duplicateItem);\n input?.reportValidity();\n return;\n }\n const newItem = {\n value: itemValue,\n label: this.newItemName.trim(),\n description: this.newItemDescription.trim(),\n };\n this.onAddNew?.(newItem);\n this.closeAddDialog();\n }\n\n private cancelNewItem() {\n this.closeAddDialog();\n }\n\n private closeAddDialog() {\n this.showAddDialog = false;\n this.newItemName = '';\n this.newItemDescription = '';\n const input = this.shadowRoot?.querySelector('#new-item-input') as any;\n input?.setCustomValidity('');\n }\n\n private handleDialogKeydown(e: KeyboardEvent) {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n this.saveNewItem();\n }\n }\n\n render() {\n const containerClass = this.hasError ? 'input-error' : '';\n const selectOptions = this.allowAddNew\n ? [...this.options, { value: '__add_new__', label: this.addNewLabel }]\n : this.options;\n\n const selectTemplate = html`\n <div class=\"${containerClass}\">\n <sl-select\n placeholder=\"${this.placeholder || this.emptyOptionLabel}\"\n @sl-input=\"${this.allowAddNew ? this.handleSelectChange : this.handleChange}\"\n .value=\"${this.value}\"\n ?disabled=\"${this.disabled}\"\n ?clearable=${this.clearable}\n >\n ${selectOptions.map(\n (opt) =>\n html`<sl-option value=\"${opt.value}\" class=\"${opt.value === '__add_new__' ? 'add-option' : ''}\"\n >${opt.label}</sl-option\n >`\n )}\n </sl-select>\n </div>\n `;\n\n const dialogTemplate = this.allowAddNew\n ? html`\n <sl-dialog\n ?open=\"${this.showAddDialog}\"\n label=\"${this.addDialogLabels.title}\"\n @sl-after-hide=\"${this.closeAddDialog}\"\n >\n <div class=\"flex flex-col gap-4\">\n <p>${this.addDialogLabels.intro}</p>\n <sl-input\n id=\"new-item-input\"\n label=\"${this.addDialogLabels.nameLabel}\"\n placeholder=\"${this.addDialogLabels.namePlaceholder}\"\n .value=\"${this.newItemName}\"\n @sl-input=\"${(e: Event) => {\n this.newItemName = (e.target as HTMLInputElement).value;\n }}\"\n @keydown=\"${this.handleDialogKeydown}\"\n required\n maxlength=\"100\"\n ></sl-input>\n </div>\n <div class=\"flex justify-end gap-3 mt-6\" slot=\"footer\">\n <axebow-button variant=\"default\" @click=\"${this.cancelNewItem}\"\n >${this.addDialogLabels.cancel}</axebow-button\n >\n <axebow-button variant=\"primary\" @click=\"${this.saveNewItem}\"\n >${this.addDialogLabels.save}</axebow-button\n >\n </div>\n </sl-dialog>\n `\n : '';\n\n return this.renderWrapper(html`${selectTemplate}${dialogTemplate}`);\n }\n}\n","import { html, css, LitElement, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport { CarouselItem } from './axebow-carousel-input.js';\nimport { AddDialogLabels, DEFAULT_ADD_DIALOG_LABELS } from './axebow-select-input.js';\nimport './axebow-text-input.js';\nimport './axebow-numeric-input.js';\nimport './axebow-select-input.js';\nimport './axebow-checkbox-input.js';\nimport './axebow-carousel-input.js';\nimport './axebow-providers-input.js';\n\nexport type ControlType = 'input' | 'select' | 'carousel' | 'numeric' | 'integer' | 'checkbox' | 'providers' | 'small-input';\nexport interface Option {\n value: string;\n label: string | TemplateResult;\n}\n\nexport type { CarouselItem, AddDialogLabels };\n\n/**\n * Factory/dispatcher: picks the right concrete axebow-*-input for the\n * requested controlType and forwards the shared props to it. Adding a new\n * control type only means adding a case here (Open/Closed) - callers never\n * need to know which concrete input backs a given controlType.\n */\n@customElement('axebow-input')\nexport class AxebowInput extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n axebowTheme,\n css`\n sl-input,\n sl-select {\n width: 100%;\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n @property({ type: String }) label = '';\n @property({ type: String }) description = '';\n @property({ type: Boolean }) required = false;\n @property({ attribute: false }) callback?: (e: Event) => void;\n @property({ type: String }) controlType: ControlType = 'input';\n @property({ type: Array }) options: Option[] = [];\n @property({ type: Array }) carouselItems: CarouselItem[] = [];\n @property({ type: Boolean, attribute: false }) disabled = false;\n @property({ attribute: false }) carouselItemRenderer?: (item: CarouselItem) => unknown;\n @property({ type: String }) errorMessage = '';\n @property({ type: Boolean }) hasError = false;\n @property({ type: Number }) max = Number.MAX_SAFE_INTEGER;\n @property({ type: Number }) min = 0;\n @property({ type: Number }) maxlength?: number;\n @property({ type: Boolean }) allowAddNew = false;\n @property({ type: String }) addNewLabel = '+ Add new...';\n @property({ type: String }) emptyOptionLabel = 'Select option';\n @property({ type: Boolean }) showAddDialogInside = true;\n @property({ type: Boolean }) clearable = true;\n @property({ attribute: false }) onAddNew?: (newItem: { value: string; label: string; description?: string }) => void;\n @property({ attribute: false }) addDialogLabels: AddDialogLabels = DEFAULT_ADD_DIALOG_LABELS;\n @property({ type: Boolean }) compact = false;\n @property({ type: Boolean }) integerOnly = false;\n\n render() {\n switch (this.controlType) {\n case 'input':\n return html`\n <axebow-text-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .maxlength=${this.maxlength}\n .compact=${this.compact}\n ></axebow-text-input>\n `;\n case 'numeric':\n return html`\n <axebow-numeric-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .max=${this.max}\n .min=${this.min}\n .compact=${this.compact}\n ></axebow-numeric-input>\n `;\n case 'integer':\n return html`\n <axebow-numeric-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .max=${this.max}\n .min=${this.min}\n .integerOnly=${true}\n .compact=${this.compact}\n ></axebow-numeric-input>\n `;\n case 'select':\n return html`\n <axebow-select-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .options=${this.options}\n .allowAddNew=${this.allowAddNew}\n .addNewLabel=${this.addNewLabel}\n .emptyOptionLabel=${this.emptyOptionLabel}\n .showAddDialogInside=${this.showAddDialogInside}\n .clearable=${this.clearable}\n .onAddNew=${this.onAddNew}\n .addDialogLabels=${this.addDialogLabels}\n ></axebow-select-input>\n `;\n case 'checkbox':\n return html`\n <axebow-checkbox-input\n .value=${this.value}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .options=${this.options}\n ></axebow-checkbox-input>\n `;\n case 'carousel':\n return html`\n <axebow-carousel-input\n .value=${this.value}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .carouselItems=${this.carouselItems}\n .carouselItemRenderer=${this.carouselItemRenderer}\n ></axebow-carousel-input>\n `;\n case 'small-input':\n return html`\n <sl-input\n type=\"number\"\n size=\"small\"\n min=${this.min}\n max=${this.max}\n step=${this.integerOnly ? '1' : 'any'}\n .value=${this.value}\n ?disabled=${this.disabled}\n style=\"${this.hasError\n ? '--sl-input-border-color: var(--axebow-error, #e53e3e); --sl-input-border-color-focus: var(--axebow-error, #e53e3e); --sl-input-border-color-hover: var(--axebow-error, #e53e3e);'\n : ''}\"\n @sl-input=${(e: Event) => {\n if (this.disabled) return;\n if (this.integerOnly) {\n const target = e.target as HTMLInputElement;\n let truncated = Math.trunc(Number(target.value));\n if (truncated > this.max) truncated = this.max;\n target.value = truncated.toString();\n }\n if (this.callback) this.callback(e);\n }}\n @keydown=${(e: KeyboardEvent) => {\n if (this.integerOnly && (e.key === '.' || e.key === ',' || e.key === 'e' || e.key === 'E')) {\n e.preventDefault();\n }\n }}\n ></sl-input>\n `;\n case 'providers':\n return html`\n <axebow-providers-input\n .value=${this.value}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .carouselItems=${this.carouselItems}\n .carouselItemRenderer=${this.carouselItemRenderer}\n ></axebow-providers-input>\n `;\n default:\n return html`\n <axebow-text-input\n .value=${this.value}\n .placeholder=${this.placeholder}\n .label=${this.label}\n .description=${this.description}\n .required=${this.required}\n .disabled=${this.disabled}\n .hasError=${this.hasError}\n .errorMessage=${this.errorMessage}\n .callback=${this.callback}\n .maxlength=${this.maxlength}\n .compact=${this.compact}\n ></axebow-text-input>\n `;\n }\n }\n}\n","import { html, css, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/dialog/dialog.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '../axebow-button/axebow-button.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\n\nexport type DialogType = 'basic' | 'form' | 'custom';\nexport type DialogButtonVariant = 'default' | 'primary' | 'success' | 'neutral' | 'warning' | 'danger' | 'text';\n\nexport interface DialogButtonConfig {\n label: string;\n variant?: DialogButtonVariant;\n outline?: boolean;\n disabled?: boolean;\n loading?: boolean;\n onClick?: () => void;\n}\n\n@customElement('axebow-dialog')\nexport class AxebowDialog extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n sl-dialog {\n --width: 36.1875rem;\n }\n sl-dialog::part(body) {\n padding: 1.5rem 1.5rem 0 1.5rem;\n }\n sl-dialog::part(footer) {\n padding: 2rem 1.5rem 1.5rem 1.5rem;\n }\n `,\n ];\n\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: String }) type: DialogType = 'basic';\n @property({ type: String }) dialogTitle = '';\n @property({ type: String }) icon = '';\n @property({ type: String }) iconColor = '';\n @property({ type: String }) description = '';\n\n @property({ attribute: false }) button1?: DialogButtonConfig;\n @property({ attribute: false }) button2?: DialogButtonConfig;\n @property({ attribute: false }) button3?: DialogButtonConfig;\n\n @property({ type: Boolean }) canCancel = false;\n @property({ type: String }) cancelLabel = 'Cancel';\n @property({ attribute: false }) onCancel?: () => void;\n\n @property({ type: Boolean }) canClose = false;\n @property({ type: String }) closeLabel = 'Close';\n @property({ attribute: false }) onClose?: () => void;\n @property({ type: String }) closeIcon = 'close';\n @property({ type: String }) closeIconColor = 'var(--axebow-primary)';\n\n @state() private _hasDescriptionSlotContent = false;\n\n private _onDescriptionSlotChange(e: Event) {\n const slot = e.target as HTMLSlotElement;\n this._hasDescriptionSlotContent = slot.assignedNodes({ flatten: true }).some((node) => {\n return node.nodeType === Node.ELEMENT_NODE || !!node.textContent?.trim();\n });\n }\n\n private get _buttons(): DialogButtonConfig[] {\n return [this.button1, this.button2, this.button3].filter((button): button is DialogButtonConfig => !!button);\n }\n\n render() {\n const hasTrailingContent = this.type === 'form' || this.type === 'custom';\n const showDescription = !!this.description || this._hasDescriptionSlotContent;\n\n return html`\n <sl-dialog\n ?open=${this.open}\n no-header\n label=${this.dialogTitle}\n @sl-request-close=${(e: CustomEvent) => e.preventDefault()}\n >\n <div class=\"flex items-center justify-between gap-4 mb-6\">\n <div class=\"flex items-center gap-4 min-w-0\">\n ${this.icon\n ? html`<axebow-icon iconName=${this.icon} iconColor=${this.iconColor}></axebow-icon>`\n : ''}\n <h2 class=\"m-0 font-semibold text-lg truncate\">${this.dialogTitle}</h2>\n </div>\n ${this.canClose\n ? html`\n <button\n class=\"p-0 border-0 bg-transparent cursor-pointer flex items-center justify-center shrink-0\"\n aria-label=${this.closeLabel}\n @click=${() => this.onClose?.()}\n >\n <axebow-icon iconName=${this.closeIcon} iconColor=${this.closeIconColor} size=\"small\"></axebow-icon>\n </button>\n `\n : ''}\n </div>\n\n <div class=\"${showDescription && hasTrailingContent ? 'mb-8' : ''}\" ?hidden=${!showDescription}>\n ${this.description\n ? html`<p class=\"m-0\">${this.description}</p>`\n : html`<slot name=\"description\" @slotchange=${this._onDescriptionSlotChange}></slot>`}\n </div>\n\n ${this.type === 'form' ? html`<div><slot name=\"form\"></slot></div>` : ''}\n ${this.type === 'custom' ? html`<div><slot name=\"body\"></slot></div>` : ''}\n\n ${this.canCancel || this._buttons.length > 0\n ? html`\n <div slot=\"footer\" class=\"flex items-center justify-end gap-2 w-full\">\n ${this.canCancel\n ? html`<axebow-button variant=\"default\" @click=${() => this.onCancel?.()}\n >${this.cancelLabel}</axebow-button\n >`\n : ''}\n ${this._buttons.map(\n (button) => html`\n <axebow-button\n variant=${button.variant ?? 'default'}\n ?outline=${button.outline}\n .disabled=${button.disabled}\n ?loading=${button.loading}\n @click=${() => button.onClick?.()}\n >\n ${button.label}\n </axebow-button>\n `\n )}\n </div>\n `\n : ''}\n </sl-dialog>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { ActionMenuItem } from './../cards/card.models.js';\nimport '../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-more-actions')\nexport class AxebowMoreActions extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: inline-block; }`,\n ];\n\n @property({ type: Boolean }) open = false;\n @property({ type: String }) placement: 'top' | 'bottom' = 'bottom';\n @property({ type: Boolean }) disabled = false;\n @property({ type: Array }) options: ActionMenuItem[] = [];\n @property({ type: String }) title = '';\n @property({ type: String }) iconName = '';\n @property({ type: Boolean }) openToRight = false;\n @property({ type: String }) closeLabel = 'Close';\n @property({ type: String }) moreActionsLabel = 'More';\n\n @state() private _fixedPos = { top: 0, right: 0 };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n window.addEventListener('scroll', this._handleScroll, true);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n window.removeEventListener('scroll', this._handleScroll, true);\n }\n\n private _handleOutsideClick = (e: MouseEvent) => {\n if (this.open && !this.contains(e.target as Node)) {\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }\n };\n\n private _handleScroll = () => {\n if (this.open && this.openToRight) {\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }\n };\n\n private _toggle(e: Event) {\n if (this.disabled) return;\n e.stopPropagation();\n if (!this.open && this.openToRight) {\n const btn = this.shadowRoot?.querySelector<HTMLElement>('.trigger');\n if (btn) {\n const rect = btn.getBoundingClientRect();\n this._fixedPos = { top: rect.bottom + 8, right: window.innerWidth - rect.right };\n }\n }\n this.open = !this.open;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: this.open } }));\n }\n\n private _handleSlotClick() {\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }\n\n render() {\n const placementClass = this.placement === 'top' ? 'bottom-full mb-2' : 'top-full mt-2';\n const dropdownStyle = this.openToRight\n ? `position:fixed;top:${this._fixedPos.top}px;right:${this._fixedPos.right}px;z-index:1000;`\n : '';\n\n return html`\n <div class=\"relative w-full h-full flex justify-end\">\n <button\n class=\"trigger relative font-semibold text-xs text-(--axebow-tertiary) cursor-pointer py-1 px-2 h-full bg-transparent border-none transition-all duration-200 flex items-center hover:text-[var(--axebow-gray)] hover:bg-[var(--axebow-anti-flash-white)] hover:rounded-lg disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\"\n ?disabled=${this.disabled}\n @click=${this._toggle}\n >\n ${this.iconName\n ? html`<axebow-icon iconName=${this.iconName} size=\"small\" iconColor=\"var(--axebow-tertiary)\"></axebow-icon>`\n : this.open ? this.closeLabel : (this.title || this.moreActionsLabel)}\n </button>\n ${this.open\n ? html`\n <div\n class=\"absolute right-0 z-10 bg-white border border-(--axebow-gray) rounded-lg shadow-[2px_2px_25px_0px_rgba(0,0,0,0.1)] p-2 min-w-44 flex flex-col ${placementClass}\"\n style=${dropdownStyle}\n @click=${this._handleSlotClick}\n >\n ${this.options?.length\n ? this.options.map(\n (opt) => html`\n <button\n class=\"flex items-center gap-2 text-left py-1 px-2 cursor-pointer rounded-sm border border-transparent bg-transparent w-full hover:bg-gray-100\"\n @click=${(e: Event) => {\n e.stopPropagation();\n opt.onTap(e);\n this.open = false;\n this.dispatchEvent(new CustomEvent('toggled', { detail: { open: false } }));\n }}\n @mouseenter=${(e: Event) => ((e.currentTarget as HTMLElement).style.borderColor = `var(--axebow-${opt.type})`)}\n @mouseleave=${(e: Event) => ((e.currentTarget as HTMLElement).style.borderColor = 'transparent')}\n >\n <axebow-icon iconName=${opt.icon} iconColor=\"var(--axebow-${opt.type})\" size=\"small\"></axebow-icon>\n <p class=\"m-0 whitespace-nowrap\" style=\"color:var(--axebow-${opt.type});\">${opt.label}</p>\n </button>\n `\n )\n : html`<slot></slot>`}\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-card-cloud-logo')\nexport class AxebowCardCloudLogo extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: contents; }`,\n ];\n\n @property({ type: String }) src: string | null = null;\n @property({ type: String }) size: 'small' | 'large' = 'large';\n\n render() {\n if (!this.src) return html``;\n\n return this.size === 'small'\n ? html`<div class=\"flex items-center justify-center shrink-0\" style=\"height:1.125rem;width:1.125rem;\"><img src=${this.src} class=\"max-h-full max-w-full object-contain\" /></div>`\n : html`<div class=\"flex items-center justify-center shrink-0\" style=\"height:3.125rem;width:3.125rem;\"><img src=${this.src} class=\"max-h-full max-w-full object-contain\" /></div>`;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { RevisionItem } from '../card.models.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\n@customElement('axebow-card-version-selector')\nexport class AxebowCardVersionSelector extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: inline-block; width: auto; max-width: 120px; margin-block: 0.25rem; }\n sl-select {\n --sl-input-background-color: transparent;\n --sl-input-border-color: transparent;\n --sl-input-background-color-focus: transparent;\n --sl-input-border-color-focus: transparent;\n --sl-focus-ring-width: 0px;\n --sl-color-primary-500: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-input-spacing-small: 0.1875rem;\n --sl-input-height-small: auto;\n --sl-input-font-size-small: var(--text-base, 0.75rem);\n --sl-font-size-medium: var(--text-base, 0.75rem);\n --sl-spacing-small: 0;\n display: inline-flex !important;\n border: none;\n background: transparent;\n padding: 0;\n margin: 0;\n min-width: 0;\n width: fit-content !important;\n max-width: 120px !important;\n }\n sl-select::part(form-control) {\n display: inline-block;\n width: fit-content;\n border: none;\n background-color: transparent;\n padding: 0;\n min-width: 0;\n }\n sl-select::part(form-control-input) {\n display: inline-block;\n width: fit-content;\n }\n sl-select::part(display-input) { padding: 0; color: var(--axebow-tertiary); font-size: 0.75rem !important; transition: color 0.15s ease; }\n sl-select::part(combobox) {\n padding-inline-start: 0.25rem !important;\n padding-block: 0.125rem !important;\n gap: 0.25rem !important;\n justify-content: flex-start;\n cursor: pointer;\n border: none;\n outline: 1px solid transparent;\n outline-offset: -1px;\n border-radius: 0.375rem;\n background-color: transparent;\n transition: background-color 0.15s ease, outline-color 0.15s ease;\n }\n sl-select[open]::part(combobox) {\n outline-color: var(--axebow-tertiary);\n border-radius: 0.375rem 0.375rem 0 0;\n background-color: white;\n }\n sl-select::part(expand-icon) {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n width: 1.125rem;\n height: 1.125rem;\n border: 1px solid var(--axebow-tertiary);\n border-radius: 0.25rem;\n color: var(--axebow-tertiary);\n background-color: transparent;\n transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;\n }\n sl-select::part(listbox) {\n border-color: var(--axebow-tertiary);\n border-top: none;\n border-radius: 0 0 0.375rem 0.375rem;\n box-shadow: none;\n margin-top: -1px;\n }\n sl-option::part(base) { font-size: 0.75rem; padding-inline-start: 0.25rem !important; }\n sl-option::part(checked-icon) { display: none; }\n\n sl-select:hover::part(display-input) { color: var(--axebow-gray); }\n sl-select:hover::part(expand-icon) { color: var(--axebow-gray); border-color: var(--axebow-gray); }\n\n sl-select[open]::part(expand-icon) {\n color: white;\n border-color: var(--axebow-tertiary);\n background-color: var(--axebow-tertiary);\n }\n `,\n ];\n\n @property({ type: Array }) revisions: RevisionItem[] = [];\n @property({ type: String }) displayedRevision = '';\n\n private _formatRevision(id: string): string {\n if (!id) return '';\n const parts = id.split('/');\n return parts[parts.length - 1] ?? id;\n }\n\n render() {\n return html`\n <sl-select size=\"small\" value=${this.displayedRevision} @sl-change=${this._onChange}>\n ${this.revisions.map(\n (rev) => html`\n <sl-option value=${rev.id}>\n ${this._formatRevision(rev.id)}\n ${rev.id !== this.displayedRevision\n ? html`<axebow-icon slot=\"suffix\" iconName=\"update\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>`\n : ''}\n </sl-option>\n `\n )}\n </sl-select>\n `;\n }\n\n private _onChange(e: CustomEvent) {\n const revision = (e.target as HTMLSelectElement).value;\n this.dispatchEvent(new CustomEvent('revision-change', { detail: { revision }, bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/tooltip/tooltip.js';\n\n@customElement('axebow-role-tooltip')\nexport class AxebowRoleTooltip extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: contents; }\n sl-tooltip::part(body) {\n background-color: var(--axebow-white);\n color: var(--axebow-primary);\n padding: 1rem;\n border: 3px solid var(--axebow-table-border);\n width: 280px;\n }\n ul {\n margin: 0.5rem 0 0;\n padding-left: 1.2rem;\n list-style: disc;\n }\n li {\n font-size: 0.8rem;\n line-height: 1.5;\n }\n `,\n ];\n\n @property({ type: String }) heading = '';\n @property({ type: Array }) items: string[] = [];\n @property({ type: String }) color = 'var(--axebow-primary)';\n\n render() {\n if (!this.heading) return html``;\n\n return html`\n <sl-tooltip placement=\"right\" hoist>\n <div slot=\"content\">\n <strong>${this.heading}</strong>\n <ul>\n ${this.items.map((item) => html`<li>${item}</li>`)}\n </ul>\n </div>\n <axebow-icon iconName=\"info\" size=\"small\" class=\"cursor-pointer\" iconColor=${this.color}></axebow-icon>\n </sl-tooltip>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { CardBadge, CardType, RevisionItem, RoleTooltipContent } from '../card.models.js';\nimport '@shoelace-style/shoelace/dist/components/tooltip/tooltip.js';\nimport '@shoelace-style/shoelace/dist/components/badge/badge.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-card-cloud-logo.js';\nimport './axebow-card-version-selector.js';\nimport './axebow-role-tooltip.js';\n\n@customElement('axebow-card-header')\nexport class AxebowCardHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; }\n sl-badge::part(base) { background-color: var(--axebow-secondary); color: white; }\n `,\n ];\n\n @property({ type: String }) logoSrc: string | null = null;\n @property({ type: String }) tenantOrAccount = '';\n @property({ type: String }) name = '';\n @property({ type: String }) badge: CardBadge = 'none';\n @property({ type: String }) subtitle = '';\n @property({ type: String }) cardType: CardType = 'account';\n @property({ type: Array }) revisions: RevisionItem[] = [];\n @property({ type: String }) displayedRevision = '';\n @property({ type: String }) freeIaasLabel = 'Free IaaS';\n @property({ type: String }) freeIaasTitle = 'Free Infrastructure';\n @property({ type: String }) freeIaasDesc = 'This environment uses free infrastructure.';\n @property({ type: String }) haLabel = 'Highly Available';\n @property({ type: String }) haTitle = 'High Availability enabled';\n @property({ type: String }) role = '';\n @property({ type: Object }) roleTooltips: Record<string, RoleTooltipContent> = {};\n @property({ type: String }) roleTooltipColor = 'var(--axebow-primary)';\n\n private _renderBadge() {\n if (this.badge === 'free-iaas') {\n return html`\n <sl-tooltip>\n <div slot=\"content\" style=\"max-width:300px;\">\n <strong>${this.freeIaasTitle}</strong>\n <p style=\"margin-top:0.5rem;\">${this.freeIaasDesc}</p>\n </div>\n <div class=\"flex items-center gap-2 cursor-pointer\">\n <axebow-icon iconName=\"info\" iconColor=\"var(--axebow-gray)\" size=\"small\"></axebow-icon>\n <span class=\"text-(--axebow-rich-black)\">${this.freeIaasLabel}</span>\n </div>\n </sl-tooltip>\n `;\n }\n if (this.badge === 'ha') {\n return html`\n <sl-tooltip content=${this.haTitle}>\n <sl-badge variant=\"neutral\" pill size=\"small\" class=\"cursor-pointer\">${this.haLabel}</sl-badge>\n </sl-tooltip>\n `;\n }\n return html``;\n }\n\n private _headerHeight(): string {\n switch (this.cardType) {\n case 'tenant':\n return '4.5625rem';\n case 'environment':\n return '3.6875rem';\n case 'account':\n case 'runtime':\n default:\n return '4.125rem';\n }\n }\n\n render() {\n const isTenant = this.cardType === 'tenant';\n const isCompact = this.cardType === 'environment' || isTenant;\n const isRuntime = this.cardType === 'runtime';\n const heightStyle = `height:${this._headerHeight()}`;\n\n if (isCompact) {\n return html`\n <div class=\"w-full bg-(--axebow-anti-flash-white) rounded-lg flex flex-col justify-center px-5 py-3 box-border\" style=${heightStyle}>\n <div class=\"flex flex-col flex-1 min-w-0\">\n ${this.tenantOrAccount || this.logoSrc\n ? html`\n <div class=\"flex gap-2 items-center leading-none mt-1\">\n <axebow-card-cloud-logo .src=${this.logoSrc} size=\"small\"></axebow-card-cloud-logo>\n <span class=\"font-semibold text-(--axebow-gray) leading-none\">${this.tenantOrAccount}</span>\n </div>\n `\n : ''}\n <div class=\"flex justify-between items-center\">\n <span class=\"font-bold text-lg text-(--axebow-primary) leading-snug pt-0.5\">${this.name}</span>\n ${this._renderBadge()}\n </div>\n ${this.subtitle\n ? html`\n <div class=\"text-(--axebow-gray) flex items-center gap-1 mt-1\">\n ${this.subtitle}\n ${isTenant && this.roleTooltips[this.role]\n ? html`\n <axebow-role-tooltip\n .heading=${this.roleTooltips[this.role].title}\n .items=${this.roleTooltips[this.role].items}\n color=${this.roleTooltipColor}\n ></axebow-role-tooltip>\n `\n : html`<slot name=\"subtitle-tooltip\"></slot>`}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n return html`\n <div class=\"w-full bg-(--axebow-anti-flash-white) rounded-lg flex items-center gap-3 py-2 px-3 box-border\" style=${heightStyle}>\n <axebow-card-cloud-logo .src=${this.logoSrc} size=\"large\"></axebow-card-cloud-logo>\n <div class=\"flex flex-col flex-1 min-w-0 ${isRuntime ? 'justify-center' : ''}\">\n ${!isRuntime && this.tenantOrAccount\n ? html`<span class=\"font-semibold text-(--axebow-gray) leading-none\">${this.tenantOrAccount}</span>`\n : ''}\n <div class=\"flex justify-between items-center ${isRuntime ? 'mt-1.5' : ''}\">\n <span class=\"font-bold text-lg text-(--axebow-primary) leading-snug ${isRuntime ? 'pl-1' : 'pt-0.5'}\">${this.name}</span>\n ${this._renderBadge()}\n </div>\n ${isRuntime\n ? html`\n <div class=\"revision-wrap flex items-center mt-0\">\n <axebow-card-version-selector\n .revisions=${this.revisions}\n .displayedRevision=${this.displayedRevision}\n @revision-change=${this._onRevisionChange}\n ></axebow-card-version-selector>\n </div>\n `\n : this.subtitle\n ? html`<div class=\"text-xs text-(--axebow-gray) flex items-center gap-1 mt-1\">${this.subtitle}<slot name=\"subtitle-tooltip\"></slot></div>`\n : ''}\n </div>\n </div>\n `;\n }\n\n private _onRevisionChange(e: CustomEvent) {\n this.dispatchEvent(new CustomEvent('revision-change', { detail: e.detail, bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-card-stat-item')\nexport class AxebowCardStatItem extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Number }) value: number = 0;\n @property({ type: String }) title = '';\n @property({ type: String }) label = '';\n @property({ type: Boolean }) active = true;\n\n render() {\n return html`\n <div class=\"flex flex-col items-center justify-start text-center gap-0.5 w-30 h-17.25\">\n <h4 class=\"text-lg text-(--axebow-primary) font-bold leading-snug m-0\">${this.value}</h4>\n <p class=\"text-base m-0 leading-snug\">${this.title}</p>\n <div class=\"h-3.5 flex items-center justify-center\">\n ${this.label\n ? html`\n <span\n class=\"text-(--axebow-gray) font-semibold text-base ${this.active ? 'cursor-pointer opacity-100' : 'cursor-not-allowed opacity-50'}\"\n @click=${this._onClick}\n >${this.label}</span>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private _onClick() {\n if (this.active) {\n this.dispatchEvent(new CustomEvent('label-click', { bubbles: true, composed: true }));\n }\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { CardType, MainStatsType } from '../card.models.js';\nimport './axebow-card-stat-item.js';\n\n@customElement('axebow-card-stats-row')\nexport class AxebowCardStatsRow extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Array }) stats: MainStatsType[] = [];\n @property({ type: String }) cardType: CardType = 'account';\n\n private _hasButtons(): boolean {\n return this.cardType === 'account' || this.cardType === 'environment';\n }\n\n render() {\n const heightClass = this._hasButtons() ? 'h-17.25' : 'h-11.25';\n\n return html`\n <div class=\"grid grid-cols-3 gap-1 w-91 ${heightClass} box-border\">\n ${this.stats.map(\n (stat, index) => html`\n <axebow-card-stat-item\n .value=${stat.value}\n .title=${stat.title}\n .label=${stat.label}\n .active=${stat.active !== false}\n @label-click=${() => this._handleLabelClick(index)}\n ></axebow-card-stat-item>\n `\n )}\n </div>\n `;\n }\n\n private _handleLabelClick(index: number) {\n this.dispatchEvent(\n new CustomEvent('stat-label-click', { detail: { index }, bubbles: true, composed: true })\n );\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-filter-item')\nexport class AxebowCardFilterItem extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: String }) name = '';\n @property({ type: Boolean }) showAttention = false;\n\n render() {\n return html`\n <div\n class=\"w-full py-1 px-2 flex justify-between items-center cursor-pointer hover:bg-(--axebow-light-gray)\"\n @click=${this._onClick}\n >\n <p class=\"m-0\">${this.name}</p>\n ${this.showAttention\n ? html`<axebow-icon iconName=\"error\" size=\"small\" iconColor=\"var(--axebow-error)\"></axebow-icon>`\n : ''}\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(\n new CustomEvent('item-select', { detail: { name: this.name }, bubbles: true, composed: true })\n );\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { CardFilterItem } from '../card.models.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-card-filter-item.js';\n\n@customElement('axebow-card-filter')\nexport class AxebowCardFilter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Array }) items: CardFilterItem[] = [];\n @property({ type: String }) selected: string | null = null;\n @property({ type: String }) emptyLabel = '';\n @property({ type: String }) emptyActionLabel = '';\n @property({ type: String }) attentionLabel = 'Attention needed';\n @property({ type: Boolean }) showAttention = false;\n @property({ type: Boolean }) opened = false;\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: Boolean }) isDisabled = false;\n\n render() {\n const showEmpty = !this.selected && this.items.length === 0;\n\n return html`\n <div class=\"relative\">\n <div class=\"flex justify-between items-center border-b border-(--axebow-light-gray) w-87 h-7 box-border px-2 cursor-pointer\">\n ${showEmpty\n ? html`\n <p\n class=\"m-0 ${this.isPlainRole || this.isDisabled\n ? 'text-(--axebow-gray) cursor-default opacity-50'\n : 'text-(--axebow-tertiary) cursor-pointer'}\"\n @click=${this.isPlainRole || this.isDisabled ? undefined : this._onEmptyAction}\n >\n ${this.emptyActionLabel}\n </p>\n `\n : html`\n <div\n class=\"flex w-full justify-between items-center ${this.isDisabled ? 'opacity-50 cursor-not-allowed' : ''}\"\n @click=${this.isDisabled ? undefined : this._onToggle}\n >\n <span class=\"text-(--axebow-tertiary)\">${this.selected ?? this.emptyLabel}</span>\n <div class=\"flex items-center gap-2\">\n ${this.showAttention\n ? html`<p class=\"text-(--axebow-error) m-0 text-xs\">${this.attentionLabel}</p>`\n : ''}\n <axebow-icon iconName=\"chevron_right\" rotate=\"90\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>\n </div>\n </div>\n `}\n </div>\n\n <div class=\"${this.opened ? '' : 'hidden'} absolute top-full left-0 right-0 z-10 flex flex-col bg-white rounded-b-lg border border-(--axebow-light-gray) shadow-[2px_2px_25px_0px_rgba(0,0,0,0.1)] max-h-40 overflow-y-auto\">\n <p class=\"w-full p-2 cursor-pointer m-0 hover:bg-(--axebow-light-gray)\" @click=${() => this._onSelect(null)}>${this.emptyLabel}</p>\n ${this.items.map(\n (item) => html`\n <axebow-card-filter-item\n .name=${item.name}\n .showAttention=${item.showAttention}\n @item-select=${(e: CustomEvent) => this._onSelect(e.detail.name)}\n ></axebow-card-filter-item>\n `\n )}\n </div>\n </div>\n `;\n }\n\n private _onToggle() {\n this.dispatchEvent(new CustomEvent('toggle-open', { bubbles: true, composed: true }));\n }\n\n private _onSelect(name: string | null) {\n this.dispatchEvent(new CustomEvent('filter-select', { detail: { name }, bubbles: true, composed: true }));\n }\n\n private _onEmptyAction() {\n this.dispatchEvent(new CustomEvent('empty-action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { RuntimeFilterRole } from '../card.models.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-table-header')\nexport class AxebowCardTableHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Boolean }) opened = false;\n @property({ type: String }) filterDisplayText = '';\n @property({ type: String }) allLabel = 'All Roles & Instances';\n @property({ type: String }) attentionLabel = 'Attention needed';\n @property({ type: Boolean }) showAttention = false;\n @property({ type: Array }) filterRoles: RuntimeFilterRole[] = [];\n\n render() {\n return html`\n <div class=\"relative\">\n <div\n class=\"flex justify-between items-center border-b border-(--axebow-light-gray) w-87 h-7 box-border px-2 cursor-pointer\"\n @click=${this._onToggle}\n >\n <span class=\"text-(--axebow-tertiary)\">${this.filterDisplayText || this.allLabel}</span>\n <div class=\"flex items-center gap-2\">\n ${this.showAttention ? html`<p class=\"text-(--axebow-error) m-0 text-xs\">${this.attentionLabel}</p>` : ''}\n <axebow-icon iconName=\"chevron_right\" rotate=\"90\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>\n </div>\n </div>\n\n <div class=\"${this.opened ? '' : 'hidden'} absolute top-full left-0 right-0 z-10 flex flex-col bg-white rounded-b-lg border border-(--axebow-light-gray) shadow-[2px_2px_25px_0px_rgba(0,0,0,0.1)] max-h-40 overflow-y-auto\">\n <p class=\"w-full p-2 cursor-pointer m-0 hover:bg-(--axebow-light-gray)\" @click=${() => this._onSelect('', 'all')}>${this.allLabel}</p>\n ${this.filterRoles.map(\n (role) => html`\n <div\n class=\"w-full py-1 px-2 flex justify-between items-center cursor-pointer hover:bg-(--axebow-light-gray)\"\n @click=${() => this._onSelect(role.name, 'role')}\n >\n <div class=\"flex items-center gap-2\">\n ${role.logo ? html`<img src=${role.logo} class=\"w-5 h-5\" />` : ''}\n <p class=\"m-0\">${role.name}</p>\n </div>\n </div>\n ${role.instances.map(\n (inst) => html`\n <div\n class=\"w-full py-1 px-2 pl-6 flex justify-between items-center cursor-pointer hover:bg-(--axebow-light-gray)\"\n @click=${() => this._onSelect(inst.name, 'instance')}\n >\n <div class=\"flex items-center gap-2\">\n <axebow-icon iconName=\"subdirectory_arrow_right\" size=\"small\"></axebow-icon>\n <p class=\"m-0\">${inst.name}</p>\n </div>\n ${inst.needsAttention\n ? html`<axebow-icon iconName=\"warning\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>`\n : ''}\n </div>\n `\n )}\n `\n )}\n </div>\n </div>\n `;\n }\n\n private _onToggle() {\n this.dispatchEvent(new CustomEvent('toggle-open', { bubbles: true, composed: true }));\n }\n\n private _onSelect(selected: string, type: 'instance' | 'role' | 'all') {\n this.dispatchEvent(new CustomEvent('filter-change', { detail: { selected, type }, bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport { TableStatsType } from '../card.models.js';\n\n@customElement('axebow-card-resource-row')\nexport class AxebowCardResourceRow extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: contents; }`,\n ];\n\n @property({ type: Object }) stat!: TableStatsType;\n @property({ type: Number }) attentionThreshold = 90;\n @property({ type: Boolean }) isLast = false;\n @property({ type: Boolean }) allEmpty = false;\n\n render() {\n const stat = this.stat;\n const showDivider = !stat.hidden && !this.isLast;\n const textClass = stat.isSecondary ? 'text-sm font-normal' : 'text-base font-semibold';\n const barHeightClass = stat.isSecondary ? 'h-2.25' : 'h-2.75';\n const divider = showDivider\n ? html`<div class=\"col-span-4 border-t border-dashed border-(--axebow-light-gray)\"></div>`\n : '';\n\n if (stat.hidden) {\n return html`\n <div class=\"flex items-center w-full h-5.75 box-border\"></div>\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\"></div>\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\"></div>\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\"></div>\n ${divider}\n `;\n }\n\n return html`\n <div class=\"flex items-center w-full h-5.75 box-border\">\n <div class=\"flex items-center gap-1\">\n <axebow-icon iconName=${stat.icon} size=\"small\" rotate=${stat.iconRotation ?? 0}></axebow-icon>\n <span class=\"${textClass}\">${stat.title}</span>\n </div>\n </div>\n\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\">\n <p class=\"${textClass} m-0\">${stat.value ?? '-.-'}</p>\n </div>\n\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\">\n <div class=\"${barHeightClass} w-35 bg-(--axebow-light-gray) rounded-md relative overflow-hidden\">\n <div\n class=\"absolute h-full ${stat.percentage >= this.attentionThreshold ? 'bg-(--axebow-error)' : 'bg-(--axebow-gray)'}\"\n style=\"width:${stat.percentage}%;\"\n ></div>\n </div>\n </div>\n\n <div class=\"flex items-center justify-end w-full h-5.75 box-border\">\n <p class=\"${textClass} m-0\">\n ${this.allEmpty\n ? '-.-'\n : html`${stat.maxValue ?? '-.-'}<span class=\"font-normal\">${stat.title === 'vCPU' ? '' : stat.tagValue ?? ''}</span>`}\n </p>\n </div>\n ${divider}\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TableStatsType } from '../card.models.js';\nimport './axebow-card-resource-row.js';\n\n@customElement('axebow-card-resource-table')\nexport class AxebowCardResourceTable extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Array }) rows: TableStatsType[] = [];\n @property({ type: Number }) attentionThreshold = 90;\n\n render() {\n const visibleRows = this.rows.filter((r) => !r.hidden);\n const lastVisible = visibleRows[visibleRows.length - 1];\n const allEmpty = visibleRows.every((r) => Number(r.maxValue ?? 0) === 0);\n\n return html`\n <div class=\"grid grid-cols-[auto_auto_1fr_auto] gap-x-2 w-87 px-2 box-border\">\n ${this.rows.map(\n (stat) => html`\n <axebow-card-resource-row\n .stat=${stat}\n .attentionThreshold=${this.attentionThreshold}\n .isLast=${stat === lastVisible}\n .allEmpty=${allEmpty}\n ></axebow-card-resource-row>\n `\n )}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-attention-banner')\nexport class AxebowCardAttentionBanner extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; }\n .error-bg { background-color: color-mix(in srgb, var(--axebow-error) 10%, white); }\n .clickable { cursor: pointer; }\n .clickable:hover { background-color: var(--axebow-base); --axebow-error: var(--axebow-gray); }\n axebow-button::part(label) { color: var(--axebow-error); font-weight: 600; display: flex; align-items: center; gap: 2px; }\n axebow-button::part(base) { padding: 0; height: auto; min-height: unset; pointer-events: none; background-color: transparent; }\n axebow-icon { display: inline-flex; align-items: center; line-height: 1; }\n `,\n ];\n\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: String }) label = 'View details';\n @property({ type: String }) askOwnerLabel = 'Ask an owner or admin to solve this problem';\n\n render() {\n return html`\n <div\n class=\"${this.isPlainRole ? '' : 'error-bg clickable'} flex items-center justify-center gap-1 w-87 h-6.5 box-border px-3 text-sm text-center overflow-hidden\"\n @click=${this.isPlainRole ? undefined : this._onClick}\n >\n ${this.isPlainRole\n ? html`<span class=\"text-(--axebow-error)\">${this.askOwnerLabel}</span>`\n : html`\n <axebow-button variant=\"text\" size=\"small\">\n ${this.label}\n <axebow-icon iconName=\"arrow_forward\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>\n </axebow-button>\n `}\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-action-banner')\nexport class AxebowCardActionBanner extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; }\n .tertiary-bg { background-color: color-mix(in srgb, var(--axebow-tertiary) 10%, white); }\n .clickable { cursor: pointer; }\n .clickable:hover { background-color: var(--axebow-base); --axebow-tertiary: var(--axebow-gray); }\n axebow-button::part(label) { color: var(--axebow-tertiary); font-weight: 600; display: flex; align-items: center; gap: 2px; }\n axebow-button::part(base) { padding: 0; height: auto; min-height: unset; pointer-events: none; background-color: transparent; }\n axebow-icon { display: inline-flex; align-items: center; line-height: 1; }\n `,\n ];\n\n @property({ type: String }) label = 'View details';\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: String }) notAllowedLabel = '';\n\n render() {\n return html`\n <div\n class=\"${this.isPlainRole ? '' : 'tertiary-bg clickable'} flex items-center justify-center gap-1 w-87 h-6.5 box-border px-3 text-sm text-center overflow-hidden\"\n @click=${this.isPlainRole ? undefined : this._onClick}\n >\n ${this.isPlainRole\n ? html`<span class=\"text-(--axebow-gray)\">${this.notAllowedLabel}</span>`\n : html`\n <axebow-button variant=\"text\" size=\"small\">\n ${this.label}\n <axebow-icon iconName=\"arrow_forward\" iconColor=\"var(--axebow-tertiary)\" size=\"small\"></axebow-icon>\n </axebow-button>\n `}\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '@shoelace-style/shoelace/dist/components/tooltip/tooltip.js';\nimport '@shoelace-style/shoelace/dist/components/spinner/spinner.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-status')\nexport class AxebowCardStatus extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: block; flex: 1; min-width: 0; }\n sl-tooltip::part(base) { max-width: none; white-space: normal; word-break: break-word; }\n `,\n ];\n\n @property({ type: String }) statusCode = '';\n @property({ type: String }) statusMessage = '';\n @property({ type: String }) borderColor = '';\n @property({ type: Boolean }) showSpinner = false;\n\n render() {\n if (!this.statusCode) {\n return html`<div class=\"w-full whitespace-nowrap overflow-hidden text-ellipsis\"><slot></slot></div>`;\n }\n\n return html`\n <div class=\"flex items-center gap-1 min-w-0 w-full\">\n ${this.showSpinner ? html`<sl-spinner style=\"--indicator-color:${this.borderColor};\"></sl-spinner>` : ''}\n <p class=\"font-bold m-0 line-clamp-1\" style=\"color:${this.borderColor};\" title=${this.statusCode}>${this.statusCode}</p>\n <sl-tooltip content=${this.statusMessage}>\n <axebow-icon class=\"cursor-pointer shrink-0\" iconColor=${this.borderColor} iconName=\"info\" size=\"small\"></axebow-icon>\n </sl-tooltip>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ActionMenuItem } from '../card.models.js';\nimport './../../axebow-more-actions/axebow-more-actions.js';\nimport './axebow-card-status.js';\n\n@customElement('axebow-card-footer')\nexport class AxebowCardFooter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: block; }`,\n ];\n\n @property({ type: Boolean }) isFreeIaaS = false;\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: String }) statusCode = '';\n @property({ type: String }) statusMessage = '';\n @property({ type: String }) borderColor = '';\n @property({ type: Boolean }) showSpinner = false;\n @property({ type: Boolean }) moreActionsOpen = false;\n @property({ type: Array }) moreActionsOptions: ActionMenuItem[] = [];\n @property({ type: String }) closeLabel = 'Close';\n @property({ type: String }) moreActionsLabel = 'More';\n @property({ type: String }) actionLabel = '';\n\n render() {\n const showDropdown = !this.isFreeIaaS && !this.isPlainRole && this.moreActionsOptions.length > 0;\n const showAction = !showDropdown && !!this.actionLabel;\n\n return html`\n <div class=\"flex justify-between items-center relative h-6 gap-2\">\n <axebow-card-status\n .statusCode=${this.statusCode}\n .statusMessage=${this.statusMessage}\n .borderColor=${this.borderColor}\n .showSpinner=${this.showSpinner}\n >\n <slot></slot>\n </axebow-card-status>\n ${showDropdown\n ? html`\n <axebow-more-actions\n class=\"shrink-0 mr-2\"\n placement=\"top\"\n .open=${this.moreActionsOpen}\n .options=${this.moreActionsOptions}\n .closeLabel=${this.closeLabel}\n .moreActionsLabel=${this.moreActionsLabel}\n @toggled=${this._onToggled}\n ></axebow-more-actions>\n `\n : showAction\n ? html`<axebow-button variant=\"text\" size=\"medium\" @click=${this._onAction}>${this.actionLabel}</axebow-button>`\n : ''}\n </div>\n `;\n }\n\n private _onToggled(e: CustomEvent) {\n this.dispatchEvent(\n new CustomEvent('more-actions-toggled', { detail: { open: e.detail.open }, bubbles: true, composed: true })\n );\n }\n\n private _onAction() {\n this.dispatchEvent(new CustomEvent('footer-action-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport {\n ActionMenuItem,\n CardBadge,\n CardFilterItem,\n CardType,\n MainStatsType,\n RevisionItem,\n RoleTooltipContent,\n RuntimeFilterRole,\n TableStatsType,\n} from './card.models.js';\nimport './../axebow-more-actions/axebow-more-actions.js';\nimport './parts/axebow-card-header.js';\nimport './parts/axebow-card-stats-row.js';\nimport './parts/axebow-card-filter.js';\nimport './parts/axebow-card-table-header.js';\nimport './parts/axebow-card-resource-table.js';\nimport './parts/axebow-card-attention-banner.js';\nimport './parts/axebow-card-action-banner.js';\nimport './parts/axebow-card-footer.js';\n\n@customElement('axebow-base-card')\nexport class AxebowBaseCard extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host { display: inline-block; max-width: 100%; }\n .deploy-time {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n `,\n ];\n\n @property({ type: String, reflect: true, attribute: 'card-type' }) cardType: CardType = 'account';\n @property({ type: String }) name = '';\n @property({ type: String }) logoSrc: string | null = null;\n @property({ type: String }) tenantOrAccount = '';\n @property({ type: String }) badge: CardBadge = 'none';\n @property({ type: String }) subtitle = '';\n\n @property({ type: Array }) mainStats: MainStatsType[] = [];\n\n @property({ type: Array }) tableStats: TableStatsType[] = [];\n @property({ type: Number }) attentionThreshold = 90;\n\n @property({ type: Array }) filterItems: CardFilterItem[] = [];\n @property({ type: String }) selected: string | null = null;\n @property({ type: Boolean }) filterOpened = false;\n @property({ type: String }) emptyLabel = '';\n @property({ type: String }) emptyActionLabel = '';\n @property({ type: String }) attentionLabel = 'Attention needed';\n @property({ type: Boolean }) showAttention = false;\n @property({ type: Boolean }) isPlainRole = false;\n @property({ type: Boolean }) isDeleting = false;\n @property({ type: Boolean }) isDisabled = false;\n\n @property({ type: Array }) revisions: RevisionItem[] = [];\n @property({ type: String }) displayedRevision = '';\n @property({ type: Boolean }) isDeployed = false;\n @property({ type: String }) deployedLabel = 'Deployed';\n\n @property({ type: Array }) filterRoles: RuntimeFilterRole[] = [];\n @property({ type: String }) filterDisplayText = '';\n @property({ type: String }) allLabel = 'All Roles & Instances';\n\n @property({ type: String }) borderColor = '';\n @property({ type: String }) statusCode = '';\n @property({ type: String }) statusMessage = '';\n @property({ type: String }) serviceDetailLabel = 'Service detail';\n\n @property({ type: Boolean }) showActionBanner = false;\n @property({ type: Boolean }) showWarningBanner = false;\n @property({ type: String }) manageLabel = 'Manage';\n @property({ type: String }) askOwnerLabel = 'Ask your owner';\n @property({ type: String }) invalidCredsLabel = 'Invalid credentials.';\n @property({ type: String }) limitReachedLabel = 'Limit reached.';\n @property({ type: String }) andLabel = 'and';\n @property({ type: String }) actionBannerLabel = '';\n @property({ type: String }) notAllowedLabel = '';\n\n @property({ type: Boolean }) moreActionsOpen = false;\n @property({ type: Array }) moreActionsOptions: ActionMenuItem[] = [];\n @property({ type: Boolean }) isFreeIaaS = false;\n @property({ type: String }) closeLabel = 'Close';\n @property({ type: String }) moreActionsLabel = 'More';\n\n @property({ type: String }) freeIaasLabel = 'Free IaaS';\n @property({ type: String }) freeIaasTitle = 'Free Infrastructure';\n @property({ type: String }) freeIaasDesc = 'This environment uses free infrastructure.';\n @property({ type: String }) haLabel = 'Highly Available';\n @property({ type: String }) haTitle = 'High Availability enabled';\n\n @property({ type: String }) role = '';\n @property({ type: Object }) roleTooltips: Record<string, RoleTooltipContent> = {};\n @property({ type: String }) roleTooltipColor = 'var(--axebow-primary)';\n\n private static readonly SIZE_CLASSES: Record<CardType, string> = {\n tenant: 'w-95 h-92.25',\n account: 'w-95 h-103.25',\n environment: 'w-95 h-101.5',\n runtime: 'w-95 h-94.75',\n };\n\n private _hasAttention(): boolean {\n const primary = this.tableStats.slice(0, 3).map((r) => r.title);\n return this.tableStats.some((s) => primary.includes(s.title) && s.percentage >= this.attentionThreshold);\n }\n\n render() {\n const isRuntime = this.cardType === 'runtime';\n\n const hasError = this.showWarningBanner || this._hasAttention();\n const showErrorBanner = this.showActionBanner && hasError;\n const showNormalBanner = this.showActionBanner && !hasError;\n const showBanner = showErrorBanner || showNormalBanner;\n\n return html`\n <div\n class=\"${AxebowBaseCard.SIZE_CLASSES[this.cardType]} bg-(--axebow-white) rounded-lg px-2 pt-2 pb-4 flex flex-col justify-between gap-2 box-border ${isRuntime ? 'border-t-4' : ''} transition-shadow duration-200 ease-in-out hover:shadow-[0_4px_12px_0_rgba(13,24,33,0.08)] ${this.isDeleting ? 'pointer-events-none cursor-not-allowed grayscale' : ''}\"\n style=${isRuntime ? `border-top-color:${this.borderColor};` : ''}\n ?inert=${this.isDeleting}\n >\n <div class=\"flex flex-col gap-2\">\n <axebow-card-header\n .cardType=${this.cardType}\n .logoSrc=${this.logoSrc}\n .tenantOrAccount=${this.tenantOrAccount}\n .name=${this.name}\n .badge=${this.badge}\n .subtitle=${this.subtitle}\n .revisions=${this.revisions}\n .displayedRevision=${this.displayedRevision}\n .freeIaasLabel=${this.freeIaasLabel}\n .freeIaasTitle=${this.freeIaasTitle}\n .freeIaasDesc=${this.freeIaasDesc}\n .haLabel=${this.haLabel}\n .haTitle=${this.haTitle}\n .role=${this.role}\n .roleTooltips=${this.roleTooltips}\n .roleTooltipColor=${this.roleTooltipColor}\n @revision-change=${(e: CustomEvent) =>\n this.dispatchEvent(new CustomEvent('revision-change', { detail: e.detail, bubbles: true, composed: true }))}\n >\n <slot slot=\"subtitle-tooltip\" name=\"subtitle-tooltip\"></slot>\n </axebow-card-header>\n\n <div class=\"w-full px-2 flex flex-col gap-2\">\n ${isRuntime\n ? html`\n <div class=\"flex flex-row justify-between items-center min-h-10 max-h-10 overflow-hidden\">\n <span class=\"deploy-time text-(--axebow-secondary)\"><slot name=\"time-elapsed\"></slot></span>\n ${this.isDeployed\n ? html`<span class=\"text-(--axebow-secondary) border-2 border-(--axebow-secondary) rounded-lg py-0.5 px-1.5 whitespace-nowrap text-xs\">${this.deployedLabel}</span>`\n : ''}\n </div>\n `\n : html`\n <axebow-card-stats-row\n .stats=${this.mainStats}\n .cardType=${this.cardType}\n @stat-label-click=${(e: CustomEvent) =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('stat-label-click', { detail: e.detail, bubbles: true, composed: true }))}\n ></axebow-card-stats-row>\n `}\n\n <div class=\"flex flex-col w-full h-full\">\n <div class=\"w-full border border-(--axebow-light-gray) box-border ${showBanner ? 'rounded-t-md' : 'rounded-md'}\">\n ${isRuntime\n ? html`\n <axebow-card-table-header\n .opened=${this.filterOpened}\n .filterDisplayText=${this.filterDisplayText}\n .allLabel=${this.allLabel}\n .attentionLabel=${this.attentionLabel}\n .showAttention=${this.showAttention}\n .filterRoles=${this.filterRoles}\n @toggle-open=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('toggle-filter', { bubbles: true, composed: true }))}\n @filter-change=${(e: CustomEvent) =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('filter-change', { detail: e.detail, bubbles: true, composed: true }))}\n ></axebow-card-table-header>\n `\n : html`\n <axebow-card-filter\n .items=${this.filterItems}\n .selected=${this.selected}\n .emptyLabel=${this.emptyLabel}\n .emptyActionLabel=${this.emptyActionLabel}\n .attentionLabel=${this.attentionLabel}\n .showAttention=${this.showAttention}\n .opened=${this.filterOpened}\n .isPlainRole=${this.isPlainRole}\n .isDisabled=${this.isDeleting || this.isDisabled}\n @filter-select=${(e: CustomEvent) =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('filter-select', { detail: e.detail, bubbles: true, composed: true }))}\n @toggle-open=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('toggle-filter', { bubbles: true, composed: true }))}\n @empty-action-click=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('empty-action-click', { bubbles: true, composed: true }))}\n ></axebow-card-filter>\n `}\n\n <axebow-card-resource-table\n .rows=${this.tableStats}\n .attentionThreshold=${this.attentionThreshold}\n ></axebow-card-resource-table>\n </div>\n\n <div class=\"h-6.5 box-border ${showBanner ? 'border-x border-b border-(--axebow-light-gray) rounded-b-md overflow-hidden' : ''}\">\n ${showErrorBanner\n ? html`<axebow-card-attention-banner\n .isPlainRole=${this.isPlainRole}\n .label=${this.actionBannerLabel}\n .askOwnerLabel=${this.askOwnerLabel}\n @action-click=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }))}\n ></axebow-card-attention-banner>`\n : showNormalBanner\n ? html`<axebow-card-action-banner\n .label=${this.actionBannerLabel}\n .isPlainRole=${this.isPlainRole}\n .notAllowedLabel=${this.notAllowedLabel}\n @action-click=${() =>\n !this.isDeleting && this.dispatchEvent(new CustomEvent('action-click', { bubbles: true, composed: true }))}\n ></axebow-card-action-banner>`\n : ''}\n </div>\n </div>\n\n <slot name=\"extra-features\"></slot>\n </div>\n </div>\n\n <axebow-card-footer\n class=\"mb-1 pl-2\"\n .isFreeIaaS=${this.isFreeIaaS}\n .isPlainRole=${this.isPlainRole}\n .statusCode=${isRuntime ? this.statusCode : ''}\n .statusMessage=${isRuntime ? this.statusMessage : ''}\n .borderColor=${this.borderColor}\n .showSpinner=${isRuntime && this.borderColor === 'var(--axebow-gray)'}\n .moreActionsOpen=${this.moreActionsOpen}\n .moreActionsOptions=${isRuntime ? [] : this.moreActionsOptions}\n .closeLabel=${this.closeLabel}\n .moreActionsLabel=${this.moreActionsLabel}\n .actionLabel=${isRuntime ? this.serviceDetailLabel : ''}\n @more-actions-toggled=${(e: CustomEvent) =>\n this.dispatchEvent(new CustomEvent('more-actions-toggled', { detail: e.detail, bubbles: true, composed: true }))}\n @footer-action-click=${() =>\n this.dispatchEvent(new CustomEvent('service-detail-click', { bubbles: true, composed: true }))}\n >\n <slot name=\"status-footer\"></slot>\n </axebow-card-footer>\n\n <slot name=\"dialogs\"></slot>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-card-special-link')\nexport class AxebowCardSpecialLink extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`:host { display: inline-flex; }`,\n ];\n\n @property({ type: String }) label = '';\n @property({ type: String }) color = 'var(--axebow-error)';\n @property({ type: String }) icon = 'arrow_forward';\n\n render() {\n return html`\n <span class=\"cursor-pointer\" style=\"color:${this.color};\" @click=${this._onClick}>\n ${this.label}\n <axebow-icon iconName=${this.icon} iconColor=${this.color} size=\"small\"></axebow-icon>\n </span>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('link-click', { bubbles: true, composed: true }));\n }\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kumori/aurora-wui-components",
3
- "version": "0.0.66",
3
+ "version": "0.0.68",
4
4
  "description": "Aurora web component library",
5
5
  "license": "ISC",
6
6
  "type": "module",