@kumori/aurora-wui-components 0.0.46 → 0.0.47

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.
@@ -1 +1 @@
1
- {"version":3,"file":"axebow-filter-bar.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-filter-bar/axebow-filter-bar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAEvD,OAAO,+BAA+B,CAAC;AACvC,OAAO,2DAA2D,CAAC;AACnE,OAAO,2DAA2D,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAM,4BAiDX;IAEyB,KAAK,EAAE,mBAAmB,EAAE,CAAM;IAE7D,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,iBAAiB;IAKjB,oBAAoB;IAKpB,YAAY;IAMZ,OAAO;IAIP,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;IAuBnB,MAAM;CAKP"}
1
+ {"version":3,"file":"axebow-filter-bar.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-filter-bar/axebow-filter-bar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAEvD,OAAO,+BAA+B,CAAC;AACvC,OAAO,2DAA2D,CAAC;AACnE,OAAO,2DAA2D,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,MAAM,CAAC,MAAM,4BAkDX;IAEyB,KAAK,EAAE,mBAAmB,EAAE,CAAM;IAE7D,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,iBAAiB;IAKjB,oBAAoB;IAKpB,YAAY;IAMZ,OAAO;IAIP,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;IAuBnB,MAAM;CAKP"}
package/dist/index.js CHANGED
@@ -158,6 +158,7 @@ var AxebowFilterBar = class AxebowFilterBar extends LitElement {
158
158
  :host {
159
159
  display: block;
160
160
  width: 100%;
161
+ padding-block: 2rem;
161
162
  }
162
163
  sl-select {
163
164
  width: 100%;
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-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 width: 100%;\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 class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36\" ?data-separate=${item.separate}>\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\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\">${this.items.map((item) => this._renderItem(item))}</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 { 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 sl-badge::part(base) { background-color: var(--axebow-secondary); color: white; }\n sl-dialog::part(panel) { width: 35vw; min-width: 400px; }\n sl-dialog::part(body) { padding-top: 0; }\n sl-alert::part(base) { border-top: 2px solid var(--axebow-error); }\n sl-range, sl-range:hover {\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-color-primary-500: var(--axebow-tertiary);\n }\n .deploy-time {\n display: -webkit-box;\n -webkit-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-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 padding-block: 2rem;\n }\n sl-select {\n width: 100%;\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 class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36\" ?data-separate=${item.separate}>\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\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\">${this.items.map((item) => this._renderItem(item))}</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 { 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 sl-badge::part(base) { background-color: var(--axebow-secondary); color: white; }\n sl-dialog::part(panel) { width: 35vw; min-width: 400px; }\n sl-dialog::part(body) { padding-top: 0; }\n sl-alert::part(base) { border-top: 2px solid var(--axebow-error); }\n sl-range, sl-range:hover {\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-color-primary-500: var(--axebow-tertiary);\n }\n .deploy-time {\n display: -webkit-box;\n -webkit-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.46",
3
+ "version": "0.0.47",
4
4
  "description": "Aurora web component library",
5
5
  "license": "ISC",
6
6
  "type": "module",