@kumori/aurora-wui-components 0.0.60 → 0.0.61

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-search.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-search/axebow-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAEvD,OAAO,+BAA+B,CAAC;AACvC,OAAO,yDAAyD,CAAC;AAEjE;;;;GAIG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,MAAM,4BAwBX;IAE0B,KAAK,SAAM;IACX,WAAW,SAAM;IAE7C,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,MAAM;CAOP"}
1
+ {"version":3,"file":"axebow-search.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-search/axebow-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAEvD,OAAO,+BAA+B,CAAC;AACvC,OAAO,yDAAyD,CAAC;AAEjE;;;;GAIG;AACH,qBACa,YAAa,SAAQ,UAAU;IAC1C,MAAM,CAAC,MAAM,4BA2BX;IAE0B,KAAK,SAAM;IACX,WAAW,SAAM;IAE7C,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,QAAQ;IAIhB,MAAM;CAOP"}
package/dist/index.js CHANGED
@@ -1188,6 +1188,9 @@ var AxebowSearch = class AxebowSearch extends LitElement {
1188
1188
  color: var(--axebow-rich-black, #0d1821);
1189
1189
  font-size: 0.875rem;
1190
1190
  }
1191
+ sl-input::part(prefix) {
1192
+ padding-inline-start: 0.75rem;
1193
+ }
1191
1194
  `];
1192
1195
  }
1193
1196
  _emitChange(value) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/styles/axebow-theme.ts","../src/components/axebow-icon/axebow-icon.ts","../src/components/axebow-filter-bar/axebow-filter-bar.ts","../src/components/axebow-header/parts/axebow-quick-action-card.ts","../src/components/axebow-header/parts/axebow-quick-actions.ts","../src/components/axebow-header/parts/axebow-header-actions.ts","../src/components/axebow-header/axebow-header.ts","../src/components/axebow-sidebar/axebow-sidebar.ts","../src/components/axebow-footer/axebow-footer.ts","../src/components/axebow-breadcrumb-header/axebow-breadcrumb-header.ts","../src/components/axebow-button/axebow-button.ts","../src/components/axebow-search/axebow-search.ts","../src/components/axebow-more-actions/axebow-more-actions.ts","../src/components/cards/parts/axebow-card-cloud-logo.ts","../src/components/cards/parts/axebow-card-version-selector.ts","../src/components/cards/parts/axebow-role-tooltip.ts","../src/components/cards/parts/axebow-card-header.ts","../src/components/cards/parts/axebow-card-stat-item.ts","../src/components/cards/parts/axebow-card-stats-row.ts","../src/components/cards/parts/axebow-card-filter-item.ts","../src/components/cards/parts/axebow-card-filter.ts","../src/components/cards/parts/axebow-card-table-header.ts","../src/components/cards/parts/axebow-card-resource-row.ts","../src/components/cards/parts/axebow-card-resource-table.ts","../src/components/cards/parts/axebow-card-attention-banner.ts","../src/components/cards/parts/axebow-card-action-banner.ts","../src/components/cards/parts/axebow-card-status.ts","../src/components/cards/parts/axebow-card-footer.ts","../src/components/cards/axebow-base-card.ts","../src/components/cards/parts/axebow-card-special-link.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const axebowTheme = css`\n :host, .theme {\n --axebow-primary: var(--color-primary, #34495e);\n --axebow-primary-light: var(--color-primary-light, #b4cded);\n --axebow-tertiary: var(--color-tertiary, #006bff);\n --axebow-success: var(--color-success, #0ecd9a);\n --axebow-secondary: var(--color-secondary, #78787a);\n --axebow-base: var(--color-base, #f0f1f5);\n --axebow-error: var(--color-error, #e93a3a);\n --axebow-white: var(--color-white, #ffffff);\n --axebow-black: var(--color-black, #000000);\n --axebow-warning: var(--color-warning, #f9cf6c);\n --axebow-table-border: var(--color-table-border, #ddd);\n --axebow-gray: var(--color-gray, #8a94ae);\n --axebow-light-gray: var(--color-light-gray, #d9d9d9);\n\n --axebow-clickable-blue: var(--color-clickable-blue, #006bff);\n --axebow-sky-gray: var(--color-sky-gray, #8a94ee);\n --axebow-rich-black: var(--color-rich-black, #0d1821);\n --axebow-anti-flash-white: var(--color-anti-flash-white, #f0f1f5);\n --axebow-strong-gray: var(--color-strong-gray, #78787a);\n\n --axebow-bg-primary: var(--color-bg-primary, #f0f1f5);\n\n --axebow-text-gray: var(--color-text-gray, #78787a);\n\n --axebow-premium-label: var(--color-premium-label, #b9935a33);\n --axebow-premium-text: var(--color-premium-text, #b9935a);\n --axebow-deleting-link: var(--color-deleting-link, #a0a0a0);\n --axebow-border-gray: var(--color-border-gray, #9ca3af);\n font-family: var(--font-sans, \"Open Sans\", sans-serif);\n font-size: var(--text-base, 0.75rem);\n line-height: var(--text-base--line-height, 1rem);\n }\n\n /** Axebow switch */\n sl-switch::part(control) {\n background-color: var(--axebow-light-gray);\n }\n sl-switch[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n }\n sl-switch::part(thumb) {\n background-color: white;\n }\n\n /** Axebow checkbox */\n sl-checkbox[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n }\n\n /** Axebow select and input global focus */\n sl-input:focus-within::part(base),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black) !important;\n box-shadow: 0 0 0 1px var(--axebow-black) !important;\n }\n sl-select sl-option:hover::part(base) {\n background-color: #e9ecef;\n }\n sl-select {\n --sl-color-primary-50: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n }\n sl-select sl-option[checked]::part(base),\n sl-select sl-option[current]::part(base),\n sl-select sl-option[aria-selected='true']::part(base) {\n background-color: var(--axebow-tertiary) !important;\n color: white !important;\n }\n\n /** Axebow tab group */\n sl-tab-group {\n --indicator-color: var(--axebow-tertiary);\n }\n sl-tab {\n --sl-font-size-small: var(--text-base); /* 12px */\n }\n sl-tab::part(base) {\n font-size: var(--text-base); /* 12px */\n }\n sl-tab[active]::part(base) {\n color: var(--axebow-tertiary);\n }\n sl-tab:hover::part(base) {\n color: var(--axebow-tertiary);\n }\n`;\n\nexport const STATUS_COLORS = {\n HEALTHY: 'var(--axebow-success)',\n ERROR: 'var(--axebow-error)',\n WARNING: 'var(--axebow-warning)',\n DEFAULT: 'var(--axebow-gray)',\n} as const;\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { html, unsafeCSS, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-icon')\nexport class AxebowIcon extends LitElement {\n @property({ type: String }) iconName = 'home';\n @property({ type: String }) iconColor = 'var(--axebow-primary)';\n @property({ type: Number }) rotate = 0;\n @property({ type: Boolean }) filled = false;\n @property({ type: String }) size: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' = 'medium';\n @property({ type: Number }) marginBottom = 0;\n\n static styles = unsafeCSS(tailwindCss);\n\n render() {\n const filled = \"[font-variation-settings:'FILL'_1,'wght'_400,'GRAD'_0,'opsz'_24]\";\n const outlined = \"[font-variation-settings:'FILL'_0,'wght'_400,'GRAD'_0,'opsz'_24]\";\n return html`\n <span\n class=\"font-[Material_Symbols_Outlined] inline-block align-middle whitespace-nowrap ${this.filled\n ? filled\n : outlined}\"\n style=\"color: ${this.iconColor}; transform: rotate(${this.rotate}deg); font-size: ${this.size === 'xx-small'\n ? 'var(--text-sm)'\n : this.size === 'x-small'\n ? 'var(--text-base)'\n : this.size === 'small'\n ? 'var(--text-md)'\n : this.size === 'medium'\n ? 'var(--text-xl)'\n : this.size === 'large'\n ? 'var(--text-3xl)'\n : this.size === 'x-large'\n ? 'var(--text-5xl)'\n : 'var(--text-xl)'};\n margin-bottom: ${this.size === 'xx-small'\n ? '0'\n : this.size === 'x-small'\n ? '0'\n : this.size === 'small'\n ? '0'\n : this.size === 'medium'\n ? '0'\n : this.size === 'large'\n ? '0.375rem'\n : this.size === 'x-large'\n ? '0.5rem'\n : `${this.marginBottom}px`};\"\n >\n ${this.iconName}\n </span>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\nexport interface AxebowFilterBarOption {\n label: string;\n value: string;\n}\n\nexport interface AxebowFilterBarItem {\n key: string;\n label: string;\n placeholder: string;\n value: string;\n options: AxebowFilterBarOption[];\n separate?: boolean;\n}\n\n/**\n * Purely presentational row of dropdown filters. Receives fully-resolved\n * items to render and only emits `option-change`; it holds no business\n * state, that is the responsibility of the consumer.\n */\n@customElement('axebow-filter-bar')\nexport class AxebowFilterBar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n sl-select {\n --sl-color-primary-500: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-focus-ring-width: 0px;\n }\n sl-select::part(combobox) {\n min-height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n padding-inline: 0.75rem;\n padding-block: 0.5rem;\n gap: 0.5rem;\n box-shadow: none;\n background-color: var(--axebow-white, white);\n }\n sl-select:hover::part(combobox) {\n border-color: var(--axebow-gray);\n }\n sl-select[open]::part(combobox),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black);\n }\n sl-select::part(display-input) {\n color: var(--axebow-secondary);\n font-size: 0.875rem;\n padding: 0;\n }\n sl-select::part(expand-icon) {\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n sl-option::part(checked-icon) {\n display: none;\n }\n sl-option::part(base) {\n font-size: 0.875rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: AxebowFilterBarItem[] = [];\n\n private _resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this._updateSeparateLayout());\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n }\n\n firstUpdated() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (container) this._resizeObserver?.observe(container);\n this._updateSeparateLayout();\n }\n\n updated() {\n requestAnimationFrame(() => this._updateSeparateLayout());\n }\n\n private _updateSeparateLayout() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (!container) return;\n const items = Array.from(container.querySelectorAll<HTMLElement>('.filter-bar-item'));\n if (items.length < 2) return;\n const firstTop = items[0].offsetTop;\n const isSingleRow = items.every((item) => item.offsetTop === firstTop);\n const firstSeparate = container.querySelector<HTMLElement>('.filter-bar-item[data-separate]');\n if (firstSeparate) {\n firstSeparate.style.marginLeft = isSingleRow ? 'auto' : '';\n }\n }\n\n private _onChange(e: CustomEvent, key: string) {\n const value = (e.target as HTMLSelectElement).value;\n this.dispatchEvent(new CustomEvent('option-change', { detail: { key, value }, bubbles: true, composed: true }));\n }\n\n private _renderItem(item: AxebowFilterBarItem) {\n return html`\n <div\n class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36 max-w-[23.75rem]\"\n ?data-separate=${item.separate}\n >\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\n class=\"w-full\"\n placeholder=${item.placeholder}\n value=${item.value}\n data-key=${item.key}\n @sl-change=${(e: CustomEvent) => this._onChange(e, item.key)}\n >\n <axebow-icon\n slot=\"expand-icon\"\n iconName=\"chevron_right\"\n rotate=\"90\"\n size=\"small\"\n iconColor=\"var(--axebow-secondary)\"\n ></axebow-icon>\n ${item.options.map((option) => html`<sl-option value=${option.value}>${option.label}</sl-option>`)}\n </sl-select>\n </div>\n `;\n }\n\n render() {\n return html`\n <div class=\"filter-bar flex items-end gap-4 flex-wrap py-8\">\n ${this.items.map((item) => this._renderItem(item))}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-quick-action-card')\nexport class AxebowQuickActionCard extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: block; }`];\n\n @property({ type: String }) icon = '';\n @property({ type: String }) label = '';\n\n render() {\n return html`\n <div\n class=\"flex flex-col items-center justify-center gap-1 w-[10.5rem] px-4 py-3 rounded bg-white hover:bg-(--axebow-base) cursor-pointer transition-colors duration-150\"\n @click=${this._onClick}\n >\n <axebow-icon iconName=${this.icon} iconColor=\"var(--axebow-primary)\" size=\"medium\"></axebow-icon>\n <span class=\"text-base font-semibold text-(--axebow-primary) text-center whitespace-nowrap\">${this.label}</span>\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('card-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-quick-action-card.js';\n\nexport interface QuickAction {\n icon: string;\n label: string;\n visible: boolean;\n onClick: () => void;\n}\n\n/**\n * Trigger + flyout panel. Drops below the trigger, offset by the trigger's own\n * width so it clears the sidebar column instead of appearing underneath it.\n * First 3 actions render as the infra-creation row, the rest as the\n * deploy/service row (wraps after 3 to match the 168px card width).\n */\n@customElement('axebow-quick-actions')\nexport class AxebowQuickActions extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: inline-block; }`];\n\n @property({ type: String }) label = '';\n @property({ type: Array }) actions: QuickAction[] = [];\n\n @state() private open = false;\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n private _handleOutsideClick = (e: MouseEvent) => {\n if (this.open && !this.contains(e.target as Node)) {\n this.open = false;\n }\n };\n\n private _toggle(e: Event) {\n e.stopPropagation();\n this.open = !this.open;\n }\n\n private _select(action: QuickAction) {\n action.onClick();\n this.open = false;\n }\n\n render() {\n const row1 = this.actions.slice(0, 3).filter((a) => a.visible);\n const row2 = this.actions.slice(3, 7).filter((a) => a.visible);\n\n return html`\n <div class=\"relative\">\n <button\n type=\"button\"\n class=\"group flex flex-col items-center justify-center gap-1 w-20 h-16 border-none cursor-pointer transition-colors duration-150 ${this\n .open\n ? 'bg-(--axebow-base)'\n : 'bg-(--axebow-primary) hover:bg-(--axebow-base)'}\"\n @click=${this._toggle}\n >\n <span\n class=\"flex flex-col items-center justify-center gap-1 ${this.open\n ? 'text-(--axebow-primary)'\n : 'text-white group-hover:text-(--axebow-primary)'}\"\n >\n <axebow-icon iconName=${this.open ? 'close' : 'apps'} iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n <span\n class=\"text-xs whitespace-nowrap ${this.open ? 'font-semibold' : 'font-normal group-hover:font-semibold'}\"\n >${this.label}</span\n >\n </span>\n </button>\n\n ${this.open\n ? html`\n <div\n class=\"absolute top-full left-full mt-2 z-2000 flex flex-col gap-1 p-1 bg-white border border-solid border-(--axebow-light-gray) rounded-lg axebow-shadow\"\n >\n <div class=\"flex gap-1\">\n ${row1.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n ${row2.length\n ? html`\n <div class=\"h-[0.0625rem] w-full bg-(--axebow-light-gray)\"></div>\n <div class=\"flex flex-wrap gap-x-1 gap-y-[0.1875rem]\">\n ${row2.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n `\n : ''}\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/dropdown/dropdown.js';\nimport '@shoelace-style/shoelace/dist/components/menu/menu.js';\nimport '@shoelace-style/shoelace/dist/components/switch/switch.js';\nimport '@shoelace-style/shoelace/dist/components/tab-group/tab-group.js';\nimport '@shoelace-style/shoelace/dist/components/tab/tab.js';\nimport '@shoelace-style/shoelace/dist/components/tab-panel/tab-panel.js';\n\nexport interface ProfileMenuItem {\n name: string;\n onClick: () => void;\n}\n\nexport interface NotificationAction {\n label: string;\n color: string;\n action: () => void;\n}\n\nexport interface FormattedNotificationVM {\n id: string;\n title: string;\n description: string;\n icon: string;\n color: string;\n status: 'read' | 'unread';\n date: string;\n callToAction: boolean;\n actions?: NotificationAction[];\n onClick: () => void;\n}\n\n/**\n * Right-hand header cluster: notifications dropdown + profile menu.\n */\n@customElement('axebow-header-actions')\nexport class AxebowHeaderActions extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n sl-dropdown::part(panel) {\n max-width: 500px;\n }\n .notification-description code {\n display: inline-block;\n white-space: pre-wrap;\n word-break: break-all;\n }\n .notification-description pre {\n white-space: pre-wrap;\n }\n `,\n ];\n\n @property({ type: String }) userName = '';\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n @state() private showUnreadOnly = false;\n\n private handleShowUnreadOnlyChange(e: any) {\n this.showUnreadOnly = e.target.checked;\n }\n\n render() {\n const unreadNotifications = this.notifications.filter((n) => n.status === 'unread');\n const notificationsToShow = this.showUnreadOnly ? unreadNotifications : this.notifications;\n\n return html`\n <div class=\"flex items-center gap-2 z-10 shrink-0 min-w-0 ml-auto\">\n <sl-dropdown>\n <div\n class=\"relative group w-9 h-9 rounded-lg flex items-center justify-center cursor-pointer transition-colors duration-150 hover:bg-[#344966]\"\n slot=\"trigger\"\n >\n <span class=\"inline-block transition-transform duration-200 group-hover:rotate-15\">\n <axebow-icon iconName=\"notifications\" iconColor=\"white\"></axebow-icon>\n </span>\n ${unreadNotifications.length > 0\n ? html`<div\n class=\"absolute bottom-0.5 right-0.5 flex items-center justify-center rounded-full bg-(--axebow-error) text-white font-bold z-10 pointer-events-none ${unreadNotifications.length <\n 10\n ? 'w-4 h-4 text-sm'\n : 'h-4 min-w-4 px-0.5 text-sm'}\"\n >\n ${unreadNotifications.length > 99 ? '99+' : unreadNotifications.length}\n </div>`\n : ''}\n <span\n class=\"absolute top-1/2 -translate-y-1/2 right-[calc(100%+10px)] translate-x-1 opacity-0 group-hover:opacity-100 group-hover:translate-x-0 text-base transition-all duration-120 bg-[#b4cded] text-[#344966] font-semibold leading-none px-3.5 py-2 rounded-lg whitespace-nowrap shadow-[0_6px_16px_rgba(13,24,33,0.18)] pointer-events-none z-2001\"\n >${this.notificationsLabel}</span\n >\n </div>\n <sl-tab-group class=\"bg-white rounded-lg w-120 text-base\">\n <sl-tab slot=\"nav\" panel=\"my_notifications\">${this.myNotificationsTabLabel}</sl-tab>\n <sl-tab slot=\"nav\" panel=\"action_needed\">${this.actionNeededTabLabel}</sl-tab>\n\n <sl-tab-panel class=\"bg-gray-100\" name=\"my_notifications\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.notifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n <div class=\"flex justify-between items-center flex-wrap gap-4\">\n <div class=\"flex items-center py-1\">\n <p class=\"mr-4 text-base\">${this.showUnreadOnlyLabel}</p>\n <sl-switch @sl-change=${(e: any) => this.handleShowUnreadOnlyChange(e)}></sl-switch>\n <p class=\"italic text-gray-400 text-base\">\n ${this.showUnreadOnly ? this.onLabel : this.offLabel}\n </p>\n </div>\n <button class=\"text-gray-500 cursor-pointer text-base\" @click=${() => this.onMarkAllAsRead()}>\n ${this.markAllAsReadLabel}\n </button>\n </div>\n ${this.showUnreadOnly && unreadNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noUnreadNotificationsLabel}</p>\n </div>`\n : html` ${notificationsToShow.map((item) => this.renderNotificationCard(item))} `}\n </div>\n `}\n </div>\n </sl-tab-panel>\n <sl-tab-panel class=\"bg-gray-100\" name=\"action_needed\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.actionNeededNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center p-4\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noActionNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n ${this.actionNeededNotifications.map((item) => this.renderNotificationCard(item))}\n </div>\n `}\n </div>\n </sl-tab-panel>\n </sl-tab-group>\n </sl-dropdown>\n <sl-dropdown class=\"shrink-0\">\n <div\n slot=\"trigger\"\n class=\"group flex items-center gap-2 h-9 px-3 rounded-lg text-white font-semibold cursor-pointer whitespace-nowrap transition-all duration-150 hover:bg-white hover:text-[#344966] hover:shadow-[0_2px_6px_rgba(13,24,33,0.14)] text-base\"\n >\n <span class=\"text-white group-hover:text-(--axebow-primary) transition-colors duration-150\">\n <axebow-icon iconName=\"account_circle\" iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n </span>\n ${this.userName}\n </div>\n <sl-menu class=\"bg-white rounded-lg p-2 min-w-55 axebow-shadow\">\n ${this.profileMenuItems.map(\n (item) => html`\n <button\n class=\"w-full flex text-base items-center justify-between ml-auto px-4 py-2 cursor-pointer rounded-lg hover:bg-gray-200 transition-colors ease-in-out duration-200 hover:text-(--axebow-tertiary)\"\n @click=${() => item.onClick()}\n >\n <span class=\"text-(--axebow-primary)\">${item.name}</span>\n <axebow-icon iconName=\"arrow_right_alt\" size=\"medium\"></axebow-icon>\n </button>\n `\n )}\n <button\n class=\"ml-auto flex items-center justify-between w-full px-4 py-2 text-(--axebow-error) cursor-pointer rounded-lg text-base\"\n @click=${() => this.onLogout()}\n >\n <span class=\"text-(--axebow-error) mt-1\">${this.logoutLabel}</span>\n <axebow-icon iconName=\"mode_off_on\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>\n </button>\n </sl-menu>\n </sl-dropdown>\n </div>\n `;\n }\n\n private renderNotificationCard(item: FormattedNotificationVM) {\n return html`\n <div\n class=\"relative flex gap-2 p-2 w-full rounded-md border-2 border-solid text-base ${item.status === 'unread'\n ? 'border-gray-500 hover:border-(--axebow-tertiary) text-gray-600'\n : 'border-gray-300 text-gray-400'} \"\n @click=${() => item.onClick()}\n >\n ${item.status === 'unread'\n ? html` <div class=\"absolute top-[-7px] left-[-7px] h-3.5 w-3.5 rounded-full bg-(--axebow-success)\"></div>`\n : ''}\n <axebow-icon\n iconName=${item.icon}\n size=\"medium\"\n iconColor=${item.status === 'unread' ? item.color : 'gray'}\n ></axebow-icon>\n <div class=\"flex flex-1 flex-col gap-1 py-1.25 min-w-0 overflow-hidden\">\n <div class=\"flex justify-between gap-2\">\n <h4 class=\"font-semibold wrap-break-word\">${item.title}</h4>\n <span class=\"ms-auto min-w-fit shrink-0 text-gray-400\">${item.date}</span>\n </div>\n <div\n class=\"notification-description leading-tight max-w-full pe-4 overflow-x-hidden overflow-y-auto max-h-75 wrap-break-word\"\n .innerHTML=${item.description}\n ></div>\n ${item.actions && item.actions.length > 0\n ? html`\n <div class=\"flex gap-4 ml-auto pe-4 flex-wrap\">\n ${item.actions.map(\n (action) => html`\n <button class=\"text-sm font-semibold text-[${action.color}] hover:underline\" @click=${action.action}>\n ${action.label}\n </button>\n `\n )}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport './parts/axebow-quick-actions.js';\nimport './parts/axebow-header-actions.js';\nimport type { QuickAction } from './parts/axebow-quick-actions.js';\nimport type { ProfileMenuItem, FormattedNotificationVM } from './parts/axebow-header-actions.js';\n\n/**\n * Purely presentational app header. Receives fully-resolved data and\n * callback props; quick-actions open state and the notifications\n * unread-only filter are owned by their respective sub-components.\n */\n@customElement('axebow-header')\nexport class AxebowHeader extends LitElement {\n @property({ type: Boolean, reflect: true }) minimal = false;\n @property({ type: String }) logoUrl = '';\n @property({ type: String }) logoAlt = '';\n @property({ attribute: false }) onLogoClick: () => void = () => {};\n @property({ type: String }) userName = '';\n @property({ type: String }) quickActionsLabel = '';\n @property({ type: Array }) quickActions: QuickAction[] = [];\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n static styles = [unsafeCSS(tailwindCss), axebowTheme];\n\n render() {\n return html`\n <header class=\"relative flex items-center justify-between h-full pe-4 py-2\">\n ${this.minimal\n ? html`\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n `\n : html`\n <axebow-quick-actions .label=${this.quickActionsLabel} .actions=${this.quickActions}></axebow-quick-actions>\n\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n\n <axebow-header-actions\n .userName=${this.userName}\n .profileMenuItems=${this.profileMenuItems}\n .logoutLabel=${this.logoutLabel}\n .onLogout=${this.onLogout}\n .notificationsLabel=${this.notificationsLabel}\n .notifications=${this.notifications}\n .actionNeededNotifications=${this.actionNeededNotifications}\n .myNotificationsTabLabel=${this.myNotificationsTabLabel}\n .actionNeededTabLabel=${this.actionNeededTabLabel}\n .noNotificationsLabel=${this.noNotificationsLabel}\n .noUnreadNotificationsLabel=${this.noUnreadNotificationsLabel}\n .noActionNotificationsLabel=${this.noActionNotificationsLabel}\n .showUnreadOnlyLabel=${this.showUnreadOnlyLabel}\n .onLabel=${this.onLabel}\n .offLabel=${this.offLabel}\n .markAllAsReadLabel=${this.markAllAsReadLabel}\n .onMarkAllAsRead=${this.onMarkAllAsRead}\n ></axebow-header-actions>\n `}\n </header>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html, css, LitElement, unsafeCSS } from 'lit';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/divider/divider.js';\n\nexport interface NavItem {\n key: string;\n label: string;\n icon: string;\n onClick: () => void;\n isRoot?: boolean;\n openInNewTab?: boolean;\n}\n\nexport interface NavDivider {\n divider: true;\n}\n\nexport type SidebarEntry = NavItem | NavDivider;\n\n/**\n * Purely presentational app sidebar. Receives fully-resolved nav entries,\n * the currently-selected item key, and the reserved bottom padding (driven\n * by the app's own footer-height tracking); owns only hover-tooltip UI\n * state.\n */\n@customElement('axebow-sidebar')\nexport class AxebowSidebar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n position: relative;\n width: 4rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: SidebarEntry[] = [];\n @property({ type: Array }) bottomItems: NavItem[] = [];\n @property({ type: String }) selectedKey: string | null = null;\n @property({ type: Number }) paddingBottom = 10;\n\n @state() private hoveredItem: NavItem | null = null;\n @state() private tooltipTop = 0;\n @state() private tooltipLeft = 0;\n\n private handleMouseEnter(event: MouseEvent, item: NavItem) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n this.tooltipTop = rect.top + 10;\n this.tooltipLeft = rect.right - 8;\n this.hoveredItem = item;\n }\n\n private handleMouseLeave() {\n this.hoveredItem = null;\n }\n\n private _isSelected(item: NavItem): boolean {\n return this.selectedKey === item.key || (!!item.isRoot && this.selectedKey === null);\n }\n\n render() {\n return html`\n <nav\n style=\"padding-bottom: ${this.paddingBottom}px;\"\n class=\"h-full flex flex-col justify-between overflow-x-hidden pt-2\"\n >\n <ul class=\"flex flex-col gap-0 w-full pb-4\">\n ${this.items.map((entry) =>\n 'divider' in entry\n ? html` <sl-divider class=\"w-[calc(100%-10px)] my-2 h-px bg-(--axebow-light-gray)\"></sl-divider> `\n : this._renderNavItem(entry, this._isSelected(entry))\n )}\n </ul>\n <ul>\n ${this.bottomItems.map((item) => this._renderBottomItem(item))}\n </ul>\n </nav>\n\n ${this.hoveredItem\n ? html`\n <div\n class=\"fixed ps-4 flex items-center pointer-events-none z-9999\"\n style=\"left: ${this.tooltipLeft}px; top: ${this.tooltipTop}px; height: 3rem;\"\n >\n <span\n class=\"flex items-center gap-1 px-2 py-1 bg-white rounded-lg text-base border border-solid border-(--axebow-gray) shadow-lg\"\n >${this.hoveredItem.label}${this.hoveredItem.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n `\n : ''}\n `;\n }\n\n private _renderNavItem(item: NavItem, selected: boolean) {\n return html`\n <li\n class=\"${selected\n ? 'bg-(--axebow-base) rounded-l-xl cursor-default'\n : 'cursor-pointer'} flex flex-col w-full h-16 items-center justify-center relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-xs overflow-hidden whitespace-nowrap opacity-100 max-w-full\">${item.label}</span>\n </div>\n\n ${!selected\n ? html`\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n `\n : ''}\n </li>\n `;\n }\n\n private _renderBottomItem(item: NavItem) {\n return html`\n <li\n class=\"flex flex-col w-full items-center justify-center cursor-pointer relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center py-3\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-sm overflow-hidden whitespace-nowrap opacity-100 max-w-full\"\n >${item.label}${item.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n </li>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface FooterLink {\n label: string;\n url: string;\n onClick: () => void;\n}\n\n/**\n * Purely presentational site footer. Receives already-filtered, already\n * translated links; owns only the footer-height broadcast used by\n * axebow-sidebar to reserve bottom padding.\n */\n@customElement('axebow-footer')\nexport class AxebowFooter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n position: relative;\n z-index: 1001;\n overflow: hidden;\n }\n `,\n ];\n\n @property({ type: Array }) links: FooterLink[] = [];\n\n private resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.emitFooterHeight();\n });\n this.resizeObserver.observe(this);\n window.addEventListener('resize', this.emitFooterHeight);\n window.addEventListener('scroll', this.emitFooterHeight, true);\n setTimeout(() => this.emitFooterHeight(), 0);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n window.removeEventListener('resize', this.emitFooterHeight);\n window.removeEventListener('scroll', this.emitFooterHeight, true);\n }\n\n private emitFooterHeight = () => {\n const rect = this.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n let visible = 0;\n if (rect.top < windowHeight && rect.bottom > 0) {\n const visibleBottom = Math.min(rect.bottom, windowHeight);\n const visibleTop = Math.max(rect.top, 0);\n visible = visibleBottom - visibleTop;\n }\n visible = Math.max(0, visible);\n this.dispatchEvent(\n new CustomEvent('footer-height-changed', {\n detail: { height: visible },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n render() {\n return html`\n <footer\n class=\"text-center text-sm flex w-full bg-(--axebow-primary) text-white justify-center items-center h-8 px-2 md:gap-8 gap-4 flex-wrap\"\n >\n ${this.links.map(\n (link) => html`\n <button\n class=\"h-7 text-sm p-1 inline-flex items-center gap-1 opacity-70 hover:opacity-100 transition-opacity duration-150 text-(--axebow-anti-flash-white) bg-transparent border-0 cursor-pointer\"\n @click=${link.onClick}\n >\n ${link.label}\n <axebow-icon iconName=\"open_in_new\" iconColor=\"var(--axebow-anti-flash-white)\" size=\"small\"></axebow-icon>\n </button>\n `\n )}\n </footer>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface BreadcrumbSecondaryPage {\n label: string;\n onClick?: () => void;\n}\n\n/**\n * Purely presentational page breadcrumb: optional home block, optional\n * clickable secondary-page trail, the current page title, and an optional\n * \"required field\" note. Receives all copy and navigation as properties.\n */\n@customElement('axebow-breadcrumb-header')\nexport class AxebowBreadcrumbHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n `,\n ];\n\n @property({ type: Boolean }) padded = false;\n @property({ type: Boolean }) showHomeBlock = true;\n @property({ attribute: false }) onHomeClick: () => void = () => {};\n @property({ type: Boolean }) showSecondaryPages = false;\n @property({ type: Array }) secondaryPages: BreadcrumbSecondaryPage[] = [];\n @property({ type: String }) mainPage = '';\n @property({ type: Boolean }) showRequiredField = false;\n @property({ type: String }) requiredFieldLabel = '';\n\n render() {\n return html`\n <div class=\"flex flex-col gap-1 py-8 ${this.padded ? 'ps-8' : ''}\">\n <div class=\"flex flex-wrap items-center gap-2 text-xl text-[#344966]\">\n ${this.showHomeBlock\n ? html`\n <span class=\"flex items-center gap-2 cursor-pointer\" @click=${() => this.onHomeClick()}>\n <axebow-icon iconName=\"home\" iconColor=\"#344966\" size=\"medium\"></axebow-icon>\n <span class=\"font-normal\">/</span>\n </span>\n `\n : ''}\n ${this.showSecondaryPages\n ? this.secondaryPages.map(\n (page) => html`\n <span\n class=\"font-normal ${page.onClick ? 'cursor-pointer hover:underline' : ''}\"\n @click=${page.onClick ? () => page.onClick!() : undefined}\n >${page.label} /</span\n >\n `\n )\n : ''}\n <span class=\"font-semibold\">${this.mainPage}</span>\n </div>\n ${this.showRequiredField\n ? html`\n <div class=\"text-sm\">\n <span class=\"font-bold text-(--axebow-error)\">*</span>\n <span class=\"font-normal text-(--axebow-rich-black)\"> ${this.requiredFieldLabel}</span>\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import { html, LitElement, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport '@shoelace-style/shoelace/dist/components/button/button.js';\n\n@customElement('axebow-button')\nexport class AxebowButton extends LitElement {\n @property({ type: String, reflect: true }) variant:\n | 'default'\n | 'primary'\n | 'success'\n | 'neutral'\n | 'warning'\n | 'danger'\n | 'text' = 'default';\n\n @property({ type: String, reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n @property({ type: Boolean, reflect: true }) outline = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n @property({ type: Boolean, reflect: true }) circle = false;\n @property({ type: Boolean, attribute: false }) disabled = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean, reflect: true }) caret = false;\n @property({ type: String }) type: 'button' | 'submit' | 'reset' = 'button';\n @property({ type: String }) href?: string;\n @property({ type: String }) target?: string;\n @property({ type: String }) name?: string;\n @property({ type: String }) value?: string;\n\n constructor() {\n super();\n this.addEventListener('click', this._guardDisabledClick, { capture: true });\n }\n\n private _guardDisabledClick = (event: MouseEvent) => {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-button {\n width: 100%;\n }\n\n /**\n * Hover is always a plain recolor to axebow-gray, no matter the\n * variant - nothing else about the button's structure changes.\n */\n\n /** Default / neutral button */\n sl-button[variant='default']:hover::part(base),\n sl-button[variant='neutral']:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Primary button */\n sl-button[variant='primary']::part(base) {\n background: var(--axebow-tertiary);\n color: white;\n border-color: transparent;\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary']:hover::part(base) {\n background: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Outlined primary button */\n sl-button[variant='primary'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Text button */\n sl-button[variant='text']::part(base) {\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='text']::part(label) {\n color: var(--axebow-tertiary);\n }\n sl-button[variant='text']:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n sl-button[variant='text']:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Success button */\n sl-button[variant='success']::part(base) {\n background: var(--axebow-success);\n border-color: var(--axebow-success);\n color: white;\n border-radius: 8px;\n outline-color: var(--axebow-success);\n }\n sl-button[variant='success']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger button */\n sl-button[variant='danger']::part(base) {\n background: var(--axebow-error);\n border-color: var(--axebow-error);\n color: white;\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger outlined */\n sl-button[variant='danger'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-error);\n border-color: var(--axebow-error);\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger text (host class) */\n :host(.axebow-red-button-text) sl-button::part(base) {\n outline-color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button::part(label) {\n color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Warning button (host class) */\n :host(.axebow-warning-button-bg) sl-button::part(base) {\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n :host(.axebow-warning-button-bg) sl-button:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n `,\n ];\n\n render() {\n return html`\n <sl-button\n exportparts=\"base, label, prefix, suffix, caret\"\n variant=${this.variant}\n size=${this.size}\n ?outline=${this.outline}\n ?pill=${this.pill}\n ?circle=${this.circle}\n ?disabled=${this.disabled}\n ?loading=${this.loading}\n ?caret=${this.caret}\n type=${this.type}\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n name=${ifDefined(this.name)}\n value=${ifDefined(this.value)}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n </sl-button>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\n\n/**\n * Purely presentational search box, fixed at 320x40px. Receives its value\n * and placeholder as properties and emits `search-change` with the new\n * value on input/clear; it holds no business state.\n */\n@customElement('axebow-search')\nexport class AxebowSearch extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-input {\n width: 20rem;\n --sl-focus-ring-width: 0px;\n }\n sl-input::part(base) {\n height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n box-shadow: none;\n }\n sl-input:focus-within::part(base) {\n border-color: var(--axebow-tertiary);\n }\n sl-input::part(input) {\n color: var(--axebow-rich-black, #0d1821);\n font-size: 0.875rem;\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n\n private _emitChange(value: string) {\n this.dispatchEvent(\n new CustomEvent('search-change', { detail: { value }, bubbles: true, composed: true })\n );\n }\n\n private _onInput(e: Event) {\n this._emitChange((e.target as HTMLInputElement).value);\n }\n\n private _onClear() {\n this._emitChange('');\n }\n\n render() {\n return html`\n <sl-input placeholder=${this.placeholder} .value=${this.value} clearable @sl-input=${this._onInput} @sl-clear=${this._onClear}>\n <axebow-icon slot=\"prefix\" iconName=\"search\" iconColor=\"var(--axebow-gray)\" size=\"small\"></axebow-icon>\n </sl-input>\n `;\n }\n}\n","import 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-header/parts/axebow-quick-action-card.ts","../src/components/axebow-header/parts/axebow-quick-actions.ts","../src/components/axebow-header/parts/axebow-header-actions.ts","../src/components/axebow-header/axebow-header.ts","../src/components/axebow-sidebar/axebow-sidebar.ts","../src/components/axebow-footer/axebow-footer.ts","../src/components/axebow-breadcrumb-header/axebow-breadcrumb-header.ts","../src/components/axebow-button/axebow-button.ts","../src/components/axebow-search/axebow-search.ts","../src/components/axebow-more-actions/axebow-more-actions.ts","../src/components/cards/parts/axebow-card-cloud-logo.ts","../src/components/cards/parts/axebow-card-version-selector.ts","../src/components/cards/parts/axebow-role-tooltip.ts","../src/components/cards/parts/axebow-card-header.ts","../src/components/cards/parts/axebow-card-stat-item.ts","../src/components/cards/parts/axebow-card-stats-row.ts","../src/components/cards/parts/axebow-card-filter-item.ts","../src/components/cards/parts/axebow-card-filter.ts","../src/components/cards/parts/axebow-card-table-header.ts","../src/components/cards/parts/axebow-card-resource-row.ts","../src/components/cards/parts/axebow-card-resource-table.ts","../src/components/cards/parts/axebow-card-attention-banner.ts","../src/components/cards/parts/axebow-card-action-banner.ts","../src/components/cards/parts/axebow-card-status.ts","../src/components/cards/parts/axebow-card-footer.ts","../src/components/cards/axebow-base-card.ts","../src/components/cards/parts/axebow-card-special-link.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const axebowTheme = css`\n :host, .theme {\n --axebow-primary: var(--color-primary, #34495e);\n --axebow-primary-light: var(--color-primary-light, #b4cded);\n --axebow-tertiary: var(--color-tertiary, #006bff);\n --axebow-success: var(--color-success, #0ecd9a);\n --axebow-secondary: var(--color-secondary, #78787a);\n --axebow-base: var(--color-base, #f0f1f5);\n --axebow-error: var(--color-error, #e93a3a);\n --axebow-white: var(--color-white, #ffffff);\n --axebow-black: var(--color-black, #000000);\n --axebow-warning: var(--color-warning, #f9cf6c);\n --axebow-table-border: var(--color-table-border, #ddd);\n --axebow-gray: var(--color-gray, #8a94ae);\n --axebow-light-gray: var(--color-light-gray, #d9d9d9);\n\n --axebow-clickable-blue: var(--color-clickable-blue, #006bff);\n --axebow-sky-gray: var(--color-sky-gray, #8a94ee);\n --axebow-rich-black: var(--color-rich-black, #0d1821);\n --axebow-anti-flash-white: var(--color-anti-flash-white, #f0f1f5);\n --axebow-strong-gray: var(--color-strong-gray, #78787a);\n\n --axebow-bg-primary: var(--color-bg-primary, #f0f1f5);\n\n --axebow-text-gray: var(--color-text-gray, #78787a);\n\n --axebow-premium-label: var(--color-premium-label, #b9935a33);\n --axebow-premium-text: var(--color-premium-text, #b9935a);\n --axebow-deleting-link: var(--color-deleting-link, #a0a0a0);\n --axebow-border-gray: var(--color-border-gray, #9ca3af);\n font-family: var(--font-sans, \"Open Sans\", sans-serif);\n font-size: var(--text-base, 0.75rem);\n line-height: var(--text-base--line-height, 1rem);\n }\n\n /** Axebow switch */\n sl-switch::part(control) {\n background-color: var(--axebow-light-gray);\n }\n sl-switch[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n }\n sl-switch::part(thumb) {\n background-color: white;\n }\n\n /** Axebow checkbox */\n sl-checkbox[checked]::part(control) {\n background-color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n }\n\n /** Axebow select and input global focus */\n sl-input:focus-within::part(base),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black) !important;\n box-shadow: 0 0 0 1px var(--axebow-black) !important;\n }\n sl-select sl-option:hover::part(base) {\n background-color: #e9ecef;\n }\n sl-select {\n --sl-color-primary-50: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n }\n sl-select sl-option[checked]::part(base),\n sl-select sl-option[current]::part(base),\n sl-select sl-option[aria-selected='true']::part(base) {\n background-color: var(--axebow-tertiary) !important;\n color: white !important;\n }\n\n /** Axebow tab group */\n sl-tab-group {\n --indicator-color: var(--axebow-tertiary);\n }\n sl-tab {\n --sl-font-size-small: var(--text-base); /* 12px */\n }\n sl-tab::part(base) {\n font-size: var(--text-base); /* 12px */\n }\n sl-tab[active]::part(base) {\n color: var(--axebow-tertiary);\n }\n sl-tab:hover::part(base) {\n color: var(--axebow-tertiary);\n }\n`;\n\nexport const STATUS_COLORS = {\n HEALTHY: 'var(--axebow-success)',\n ERROR: 'var(--axebow-error)',\n WARNING: 'var(--axebow-warning)',\n DEFAULT: 'var(--axebow-gray)',\n} as const;\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { html, unsafeCSS, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\n@customElement('axebow-icon')\nexport class AxebowIcon extends LitElement {\n @property({ type: String }) iconName = 'home';\n @property({ type: String }) iconColor = 'var(--axebow-primary)';\n @property({ type: Number }) rotate = 0;\n @property({ type: Boolean }) filled = false;\n @property({ type: String }) size: 'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' = 'medium';\n @property({ type: Number }) marginBottom = 0;\n\n static styles = unsafeCSS(tailwindCss);\n\n render() {\n const filled = \"[font-variation-settings:'FILL'_1,'wght'_400,'GRAD'_0,'opsz'_24]\";\n const outlined = \"[font-variation-settings:'FILL'_0,'wght'_400,'GRAD'_0,'opsz'_24]\";\n return html`\n <span\n class=\"font-[Material_Symbols_Outlined] inline-block align-middle whitespace-nowrap ${this.filled\n ? filled\n : outlined}\"\n style=\"color: ${this.iconColor}; transform: rotate(${this.rotate}deg); font-size: ${this.size === 'xx-small'\n ? 'var(--text-sm)'\n : this.size === 'x-small'\n ? 'var(--text-base)'\n : this.size === 'small'\n ? 'var(--text-md)'\n : this.size === 'medium'\n ? 'var(--text-xl)'\n : this.size === 'large'\n ? 'var(--text-3xl)'\n : this.size === 'x-large'\n ? 'var(--text-5xl)'\n : 'var(--text-xl)'};\n margin-bottom: ${this.size === 'xx-small'\n ? '0'\n : this.size === 'x-small'\n ? '0'\n : this.size === 'small'\n ? '0'\n : this.size === 'medium'\n ? '0'\n : this.size === 'large'\n ? '0.375rem'\n : this.size === 'x-large'\n ? '0.5rem'\n : `${this.marginBottom}px`};\"\n >\n ${this.iconName}\n </span>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/select/select.js';\nimport '@shoelace-style/shoelace/dist/components/option/option.js';\n\nexport interface AxebowFilterBarOption {\n label: string;\n value: string;\n}\n\nexport interface AxebowFilterBarItem {\n key: string;\n label: string;\n placeholder: string;\n value: string;\n options: AxebowFilterBarOption[];\n separate?: boolean;\n}\n\n/**\n * Purely presentational row of dropdown filters. Receives fully-resolved\n * items to render and only emits `option-change`; it holds no business\n * state, that is the responsibility of the consumer.\n */\n@customElement('axebow-filter-bar')\nexport class AxebowFilterBar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n sl-select {\n --sl-color-primary-500: var(--axebow-tertiary);\n --sl-color-primary-600: var(--axebow-tertiary);\n --sl-focus-ring-width: 0px;\n }\n sl-select::part(combobox) {\n min-height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n padding-inline: 0.75rem;\n padding-block: 0.5rem;\n gap: 0.5rem;\n box-shadow: none;\n background-color: var(--axebow-white, white);\n }\n sl-select:hover::part(combobox) {\n border-color: var(--axebow-gray);\n }\n sl-select[open]::part(combobox),\n sl-select:focus-within::part(combobox) {\n border-color: var(--axebow-black);\n }\n sl-select::part(display-input) {\n color: var(--axebow-secondary);\n font-size: 0.875rem;\n padding: 0;\n }\n sl-select::part(expand-icon) {\n width: 1rem;\n height: 1rem;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n sl-option::part(checked-icon) {\n display: none;\n }\n sl-option::part(base) {\n font-size: 0.875rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: AxebowFilterBarItem[] = [];\n\n private _resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => this._updateSeparateLayout());\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._resizeObserver?.disconnect();\n }\n\n firstUpdated() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (container) this._resizeObserver?.observe(container);\n this._updateSeparateLayout();\n }\n\n updated() {\n requestAnimationFrame(() => this._updateSeparateLayout());\n }\n\n private _updateSeparateLayout() {\n const container = this.shadowRoot?.querySelector<HTMLElement>('.filter-bar');\n if (!container) return;\n const items = Array.from(container.querySelectorAll<HTMLElement>('.filter-bar-item'));\n if (items.length < 2) return;\n const firstTop = items[0].offsetTop;\n const isSingleRow = items.every((item) => item.offsetTop === firstTop);\n const firstSeparate = container.querySelector<HTMLElement>('.filter-bar-item[data-separate]');\n if (firstSeparate) {\n firstSeparate.style.marginLeft = isSingleRow ? 'auto' : '';\n }\n }\n\n private _onChange(e: CustomEvent, key: string) {\n const value = (e.target as HTMLSelectElement).value;\n this.dispatchEvent(new CustomEvent('option-change', { detail: { key, value }, bubbles: true, composed: true }));\n }\n\n private _renderItem(item: AxebowFilterBarItem) {\n return html`\n <div\n class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36 max-w-[23.75rem]\"\n ?data-separate=${item.separate}\n >\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\n class=\"w-full\"\n placeholder=${item.placeholder}\n value=${item.value}\n data-key=${item.key}\n @sl-change=${(e: CustomEvent) => this._onChange(e, item.key)}\n >\n <axebow-icon\n slot=\"expand-icon\"\n iconName=\"chevron_right\"\n rotate=\"90\"\n size=\"small\"\n iconColor=\"var(--axebow-secondary)\"\n ></axebow-icon>\n ${item.options.map((option) => html`<sl-option value=${option.value}>${option.label}</sl-option>`)}\n </sl-select>\n </div>\n `;\n }\n\n render() {\n return html`\n <div class=\"filter-bar flex items-end gap-4 flex-wrap py-8\">\n ${this.items.map((item) => this._renderItem(item))}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\n\n@customElement('axebow-quick-action-card')\nexport class AxebowQuickActionCard extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: block; }`];\n\n @property({ type: String }) icon = '';\n @property({ type: String }) label = '';\n\n render() {\n return html`\n <div\n class=\"flex flex-col items-center justify-center gap-1 w-[10.5rem] px-4 py-3 rounded bg-white hover:bg-(--axebow-base) cursor-pointer transition-colors duration-150\"\n @click=${this._onClick}\n >\n <axebow-icon iconName=${this.icon} iconColor=\"var(--axebow-primary)\" size=\"medium\"></axebow-icon>\n <span class=\"text-base font-semibold text-(--axebow-primary) text-center whitespace-nowrap\">${this.label}</span>\n </div>\n `;\n }\n\n private _onClick() {\n this.dispatchEvent(new CustomEvent('card-click', { bubbles: true, composed: true }));\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport './axebow-quick-action-card.js';\n\nexport interface QuickAction {\n icon: string;\n label: string;\n visible: boolean;\n onClick: () => void;\n}\n\n/**\n * Trigger + flyout panel. Drops below the trigger, offset by the trigger's own\n * width so it clears the sidebar column instead of appearing underneath it.\n * First 3 actions render as the infra-creation row, the rest as the\n * deploy/service row (wraps after 3 to match the 168px card width).\n */\n@customElement('axebow-quick-actions')\nexport class AxebowQuickActions extends LitElement {\n static styles = [unsafeCSS(tailwindCss), css`:host { display: inline-block; }`];\n\n @property({ type: String }) label = '';\n @property({ type: Array }) actions: QuickAction[] = [];\n\n @state() private open = false;\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener('click', this._handleOutsideClick);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n document.removeEventListener('click', this._handleOutsideClick);\n }\n\n private _handleOutsideClick = (e: MouseEvent) => {\n if (this.open && !this.contains(e.target as Node)) {\n this.open = false;\n }\n };\n\n private _toggle(e: Event) {\n e.stopPropagation();\n this.open = !this.open;\n }\n\n private _select(action: QuickAction) {\n action.onClick();\n this.open = false;\n }\n\n render() {\n const row1 = this.actions.slice(0, 3).filter((a) => a.visible);\n const row2 = this.actions.slice(3, 7).filter((a) => a.visible);\n\n return html`\n <div class=\"relative\">\n <button\n type=\"button\"\n class=\"group flex flex-col items-center justify-center gap-1 w-20 h-16 border-none cursor-pointer transition-colors duration-150 ${this\n .open\n ? 'bg-(--axebow-base)'\n : 'bg-(--axebow-primary) hover:bg-(--axebow-base)'}\"\n @click=${this._toggle}\n >\n <span\n class=\"flex flex-col items-center justify-center gap-1 ${this.open\n ? 'text-(--axebow-primary)'\n : 'text-white group-hover:text-(--axebow-primary)'}\"\n >\n <axebow-icon iconName=${this.open ? 'close' : 'apps'} iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n <span\n class=\"text-xs whitespace-nowrap ${this.open ? 'font-semibold' : 'font-normal group-hover:font-semibold'}\"\n >${this.label}</span\n >\n </span>\n </button>\n\n ${this.open\n ? html`\n <div\n class=\"absolute top-full left-full mt-2 z-2000 flex flex-col gap-1 p-1 bg-white border border-solid border-(--axebow-light-gray) rounded-lg axebow-shadow\"\n >\n <div class=\"flex gap-1\">\n ${row1.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n ${row2.length\n ? html`\n <div class=\"h-[0.0625rem] w-full bg-(--axebow-light-gray)\"></div>\n <div class=\"flex flex-wrap gap-x-1 gap-y-[0.1875rem]\">\n ${row2.map(\n (action) => html`\n <axebow-quick-action-card\n icon=${action.icon}\n label=${action.label}\n @card-click=${() => this._select(action)}\n ></axebow-quick-action-card>\n `\n )}\n </div>\n `\n : ''}\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import tailwindCss from '../../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport '../../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/dropdown/dropdown.js';\nimport '@shoelace-style/shoelace/dist/components/menu/menu.js';\nimport '@shoelace-style/shoelace/dist/components/switch/switch.js';\nimport '@shoelace-style/shoelace/dist/components/tab-group/tab-group.js';\nimport '@shoelace-style/shoelace/dist/components/tab/tab.js';\nimport '@shoelace-style/shoelace/dist/components/tab-panel/tab-panel.js';\n\nexport interface ProfileMenuItem {\n name: string;\n onClick: () => void;\n}\n\nexport interface NotificationAction {\n label: string;\n color: string;\n action: () => void;\n}\n\nexport interface FormattedNotificationVM {\n id: string;\n title: string;\n description: string;\n icon: string;\n color: string;\n status: 'read' | 'unread';\n date: string;\n callToAction: boolean;\n actions?: NotificationAction[];\n onClick: () => void;\n}\n\n/**\n * Right-hand header cluster: notifications dropdown + profile menu.\n */\n@customElement('axebow-header-actions')\nexport class AxebowHeaderActions extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n sl-dropdown::part(panel) {\n max-width: 500px;\n }\n .notification-description code {\n display: inline-block;\n white-space: pre-wrap;\n word-break: break-all;\n }\n .notification-description pre {\n white-space: pre-wrap;\n }\n `,\n ];\n\n @property({ type: String }) userName = '';\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n @state() private showUnreadOnly = false;\n\n private handleShowUnreadOnlyChange(e: any) {\n this.showUnreadOnly = e.target.checked;\n }\n\n render() {\n const unreadNotifications = this.notifications.filter((n) => n.status === 'unread');\n const notificationsToShow = this.showUnreadOnly ? unreadNotifications : this.notifications;\n\n return html`\n <div class=\"flex items-center gap-2 z-10 shrink-0 min-w-0 ml-auto\">\n <sl-dropdown>\n <div\n class=\"relative group w-9 h-9 rounded-lg flex items-center justify-center cursor-pointer transition-colors duration-150 hover:bg-[#344966]\"\n slot=\"trigger\"\n >\n <span class=\"inline-block transition-transform duration-200 group-hover:rotate-15\">\n <axebow-icon iconName=\"notifications\" iconColor=\"white\"></axebow-icon>\n </span>\n ${unreadNotifications.length > 0\n ? html`<div\n class=\"absolute bottom-0.5 right-0.5 flex items-center justify-center rounded-full bg-(--axebow-error) text-white font-bold z-10 pointer-events-none ${unreadNotifications.length <\n 10\n ? 'w-4 h-4 text-sm'\n : 'h-4 min-w-4 px-0.5 text-sm'}\"\n >\n ${unreadNotifications.length > 99 ? '99+' : unreadNotifications.length}\n </div>`\n : ''}\n <span\n class=\"absolute top-1/2 -translate-y-1/2 right-[calc(100%+10px)] translate-x-1 opacity-0 group-hover:opacity-100 group-hover:translate-x-0 text-base transition-all duration-120 bg-[#b4cded] text-[#344966] font-semibold leading-none px-3.5 py-2 rounded-lg whitespace-nowrap shadow-[0_6px_16px_rgba(13,24,33,0.18)] pointer-events-none z-2001\"\n >${this.notificationsLabel}</span\n >\n </div>\n <sl-tab-group class=\"bg-white rounded-lg w-120 text-base\">\n <sl-tab slot=\"nav\" panel=\"my_notifications\">${this.myNotificationsTabLabel}</sl-tab>\n <sl-tab slot=\"nav\" panel=\"action_needed\">${this.actionNeededTabLabel}</sl-tab>\n\n <sl-tab-panel class=\"bg-gray-100\" name=\"my_notifications\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.notifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n <div class=\"flex justify-between items-center flex-wrap gap-4\">\n <div class=\"flex items-center py-1\">\n <p class=\"mr-4 text-base\">${this.showUnreadOnlyLabel}</p>\n <sl-switch @sl-change=${(e: any) => this.handleShowUnreadOnlyChange(e)}></sl-switch>\n <p class=\"italic text-gray-400 text-base\">\n ${this.showUnreadOnly ? this.onLabel : this.offLabel}\n </p>\n </div>\n <button class=\"text-gray-500 cursor-pointer text-base\" @click=${() => this.onMarkAllAsRead()}>\n ${this.markAllAsReadLabel}\n </button>\n </div>\n ${this.showUnreadOnly && unreadNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center w-117\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noUnreadNotificationsLabel}</p>\n </div>`\n : html` ${notificationsToShow.map((item) => this.renderNotificationCard(item))} `}\n </div>\n `}\n </div>\n </sl-tab-panel>\n <sl-tab-panel class=\"bg-gray-100\" name=\"action_needed\">\n <div class=\"flex flex-col gap-2 px-4 max-h-[40vh] overflow-auto w-full\">\n ${this.actionNeededNotifications.length === 0\n ? html`<div class=\"flex flex-row gap-4 items-center p-4\">\n <axebow-icon iconName=\"info\"></axebow-icon>\n <p class=\"text-black\">${this.noActionNotificationsLabel}</p>\n </div>`\n : html`\n <div class=\"flex flex-col text-black gap-4\">\n ${this.actionNeededNotifications.map((item) => this.renderNotificationCard(item))}\n </div>\n `}\n </div>\n </sl-tab-panel>\n </sl-tab-group>\n </sl-dropdown>\n <sl-dropdown class=\"shrink-0\">\n <div\n slot=\"trigger\"\n class=\"group flex items-center gap-2 h-9 px-3 rounded-lg text-white font-semibold cursor-pointer whitespace-nowrap transition-all duration-150 hover:bg-white hover:text-[#344966] hover:shadow-[0_2px_6px_rgba(13,24,33,0.14)] text-base\"\n >\n <span class=\"text-white group-hover:text-(--axebow-primary) transition-colors duration-150\">\n <axebow-icon iconName=\"account_circle\" iconColor=\"currentColor\" size=\"medium\"></axebow-icon>\n </span>\n ${this.userName}\n </div>\n <sl-menu class=\"bg-white rounded-lg p-2 min-w-55 axebow-shadow\">\n ${this.profileMenuItems.map(\n (item) => html`\n <button\n class=\"w-full flex text-base items-center justify-between ml-auto px-4 py-2 cursor-pointer rounded-lg hover:bg-gray-200 transition-colors ease-in-out duration-200 hover:text-(--axebow-tertiary)\"\n @click=${() => item.onClick()}\n >\n <span class=\"text-(--axebow-primary)\">${item.name}</span>\n <axebow-icon iconName=\"arrow_right_alt\" size=\"medium\"></axebow-icon>\n </button>\n `\n )}\n <button\n class=\"ml-auto flex items-center justify-between w-full px-4 py-2 text-(--axebow-error) cursor-pointer rounded-lg text-base\"\n @click=${() => this.onLogout()}\n >\n <span class=\"text-(--axebow-error) mt-1\">${this.logoutLabel}</span>\n <axebow-icon iconName=\"mode_off_on\" iconColor=\"var(--axebow-error)\" size=\"small\"></axebow-icon>\n </button>\n </sl-menu>\n </sl-dropdown>\n </div>\n `;\n }\n\n private renderNotificationCard(item: FormattedNotificationVM) {\n return html`\n <div\n class=\"relative flex gap-2 p-2 w-full rounded-md border-2 border-solid text-base ${item.status === 'unread'\n ? 'border-gray-500 hover:border-(--axebow-tertiary) text-gray-600'\n : 'border-gray-300 text-gray-400'} \"\n @click=${() => item.onClick()}\n >\n ${item.status === 'unread'\n ? html` <div class=\"absolute top-[-7px] left-[-7px] h-3.5 w-3.5 rounded-full bg-(--axebow-success)\"></div>`\n : ''}\n <axebow-icon\n iconName=${item.icon}\n size=\"medium\"\n iconColor=${item.status === 'unread' ? item.color : 'gray'}\n ></axebow-icon>\n <div class=\"flex flex-1 flex-col gap-1 py-1.25 min-w-0 overflow-hidden\">\n <div class=\"flex justify-between gap-2\">\n <h4 class=\"font-semibold wrap-break-word\">${item.title}</h4>\n <span class=\"ms-auto min-w-fit shrink-0 text-gray-400\">${item.date}</span>\n </div>\n <div\n class=\"notification-description leading-tight max-w-full pe-4 overflow-x-hidden overflow-y-auto max-h-75 wrap-break-word\"\n .innerHTML=${item.description}\n ></div>\n ${item.actions && item.actions.length > 0\n ? html`\n <div class=\"flex gap-4 ml-auto pe-4 flex-wrap\">\n ${item.actions.map(\n (action) => html`\n <button class=\"text-sm font-semibold text-[${action.color}] hover:underline\" @click=${action.action}>\n ${action.label}\n </button>\n `\n )}\n </div>\n `\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { axebowTheme } from '../../styles/axebow-theme.js';\nimport { html, LitElement, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport './parts/axebow-quick-actions.js';\nimport './parts/axebow-header-actions.js';\nimport type { QuickAction } from './parts/axebow-quick-actions.js';\nimport type { ProfileMenuItem, FormattedNotificationVM } from './parts/axebow-header-actions.js';\n\n/**\n * Purely presentational app header. Receives fully-resolved data and\n * callback props; quick-actions open state and the notifications\n * unread-only filter are owned by their respective sub-components.\n */\n@customElement('axebow-header')\nexport class AxebowHeader extends LitElement {\n @property({ type: Boolean, reflect: true }) minimal = false;\n @property({ type: String }) logoUrl = '';\n @property({ type: String }) logoAlt = '';\n @property({ attribute: false }) onLogoClick: () => void = () => {};\n @property({ type: String }) userName = '';\n @property({ type: String }) quickActionsLabel = '';\n @property({ type: Array }) quickActions: QuickAction[] = [];\n @property({ type: Array }) profileMenuItems: ProfileMenuItem[] = [];\n @property({ type: String }) logoutLabel = '';\n @property({ attribute: false }) onLogout: () => void = () => {};\n @property({ type: String }) notificationsLabel = '';\n @property({ type: Array }) notifications: FormattedNotificationVM[] = [];\n @property({ type: Array }) actionNeededNotifications: FormattedNotificationVM[] = [];\n @property({ type: String }) myNotificationsTabLabel = '';\n @property({ type: String }) actionNeededTabLabel = '';\n @property({ type: String }) noNotificationsLabel = '';\n @property({ type: String }) noUnreadNotificationsLabel = '';\n @property({ type: String }) noActionNotificationsLabel = '';\n @property({ type: String }) showUnreadOnlyLabel = '';\n @property({ type: String }) onLabel = '';\n @property({ type: String }) offLabel = '';\n @property({ type: String }) markAllAsReadLabel = '';\n @property({ attribute: false }) onMarkAllAsRead: () => void = () => {};\n\n static styles = [unsafeCSS(tailwindCss), axebowTheme];\n\n render() {\n return html`\n <header class=\"relative flex items-center justify-between h-full pe-4 py-2\">\n ${this.minimal\n ? html`\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n `\n : html`\n <axebow-quick-actions .label=${this.quickActionsLabel} .actions=${this.quickActions}></axebow-quick-actions>\n\n <div\n class=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 z-5 cursor-pointer hover:opacity-80 transition-opacity duration-200\"\n @click=${() => this.onLogoClick()}\n >\n <div class=\"flex items-center gap-2 text-white\">\n <img src=\"${this.logoUrl}\" alt=\"${this.logoAlt}\" class=\"h-10\" />\n </div>\n </div>\n\n <axebow-header-actions\n .userName=${this.userName}\n .profileMenuItems=${this.profileMenuItems}\n .logoutLabel=${this.logoutLabel}\n .onLogout=${this.onLogout}\n .notificationsLabel=${this.notificationsLabel}\n .notifications=${this.notifications}\n .actionNeededNotifications=${this.actionNeededNotifications}\n .myNotificationsTabLabel=${this.myNotificationsTabLabel}\n .actionNeededTabLabel=${this.actionNeededTabLabel}\n .noNotificationsLabel=${this.noNotificationsLabel}\n .noUnreadNotificationsLabel=${this.noUnreadNotificationsLabel}\n .noActionNotificationsLabel=${this.noActionNotificationsLabel}\n .showUnreadOnlyLabel=${this.showUnreadOnlyLabel}\n .onLabel=${this.onLabel}\n .offLabel=${this.offLabel}\n .markAllAsReadLabel=${this.markAllAsReadLabel}\n .onMarkAllAsRead=${this.onMarkAllAsRead}\n ></axebow-header-actions>\n `}\n </header>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { html, css, LitElement, unsafeCSS } from 'lit';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/divider/divider.js';\n\nexport interface NavItem {\n key: string;\n label: string;\n icon: string;\n onClick: () => void;\n isRoot?: boolean;\n openInNewTab?: boolean;\n}\n\nexport interface NavDivider {\n divider: true;\n}\n\nexport type SidebarEntry = NavItem | NavDivider;\n\n/**\n * Purely presentational app sidebar. Receives fully-resolved nav entries,\n * the currently-selected item key, and the reserved bottom padding (driven\n * by the app's own footer-height tracking); owns only hover-tooltip UI\n * state.\n */\n@customElement('axebow-sidebar')\nexport class AxebowSidebar extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n position: relative;\n width: 4rem;\n }\n `,\n ];\n\n @property({ type: Array }) items: SidebarEntry[] = [];\n @property({ type: Array }) bottomItems: NavItem[] = [];\n @property({ type: String }) selectedKey: string | null = null;\n @property({ type: Number }) paddingBottom = 10;\n\n @state() private hoveredItem: NavItem | null = null;\n @state() private tooltipTop = 0;\n @state() private tooltipLeft = 0;\n\n private handleMouseEnter(event: MouseEvent, item: NavItem) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n this.tooltipTop = rect.top + 10;\n this.tooltipLeft = rect.right - 8;\n this.hoveredItem = item;\n }\n\n private handleMouseLeave() {\n this.hoveredItem = null;\n }\n\n private _isSelected(item: NavItem): boolean {\n return this.selectedKey === item.key || (!!item.isRoot && this.selectedKey === null);\n }\n\n render() {\n return html`\n <nav\n style=\"padding-bottom: ${this.paddingBottom}px;\"\n class=\"h-full flex flex-col justify-between overflow-x-hidden pt-2\"\n >\n <ul class=\"flex flex-col gap-0 w-full pb-4\">\n ${this.items.map((entry) =>\n 'divider' in entry\n ? html` <sl-divider class=\"w-[calc(100%-10px)] my-2 h-px bg-(--axebow-light-gray)\"></sl-divider> `\n : this._renderNavItem(entry, this._isSelected(entry))\n )}\n </ul>\n <ul>\n ${this.bottomItems.map((item) => this._renderBottomItem(item))}\n </ul>\n </nav>\n\n ${this.hoveredItem\n ? html`\n <div\n class=\"fixed ps-4 flex items-center pointer-events-none z-9999\"\n style=\"left: ${this.tooltipLeft}px; top: ${this.tooltipTop}px; height: 3rem;\"\n >\n <span\n class=\"flex items-center gap-1 px-2 py-1 bg-white rounded-lg text-base border border-solid border-(--axebow-gray) shadow-lg\"\n >${this.hoveredItem.label}${this.hoveredItem.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n `\n : ''}\n `;\n }\n\n private _renderNavItem(item: NavItem, selected: boolean) {\n return html`\n <li\n class=\"${selected\n ? 'bg-(--axebow-base) rounded-l-xl cursor-default'\n : 'cursor-pointer'} flex flex-col w-full h-16 items-center justify-center relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-xs overflow-hidden whitespace-nowrap opacity-100 max-w-full\">${item.label}</span>\n </div>\n\n ${!selected\n ? html`\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n `\n : ''}\n </li>\n `;\n }\n\n private _renderBottomItem(item: NavItem) {\n return html`\n <li\n class=\"flex flex-col w-full items-center justify-center cursor-pointer relative group\"\n @click=\"${() => item.onClick()}\"\n @mouseenter=\"${(e: MouseEvent) => this.handleMouseEnter(e, item)}\"\n @mouseleave=\"${() => this.handleMouseLeave()}\"\n title=\"${item.label}\"\n >\n <div class=\"flex flex-col items-center justify-center py-3\">\n <axebow-icon iconName=\"${item.icon}\" size=\"medium\"></axebow-icon>\n <span class=\"text-sm overflow-hidden whitespace-nowrap opacity-100 max-w-full\"\n >${item.label}${item.openInNewTab\n ? html`<axebow-icon iconName=\"open_in_new\" size=\"xx-small\"></axebow-icon>`\n : ''}</span\n >\n </div>\n\n <div\n class=\"absolute top-0 right-0 h-full w-2.5 rounded-l-xl bg-(--axebow-base) opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200\"\n ></div>\n </li>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface FooterLink {\n label: string;\n url: string;\n onClick: () => void;\n}\n\n/**\n * Purely presentational site footer. Receives already-filtered, already\n * translated links; owns only the footer-height broadcast used by\n * axebow-sidebar to reserve bottom padding.\n */\n@customElement('axebow-footer')\nexport class AxebowFooter extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n position: relative;\n z-index: 1001;\n overflow: hidden;\n }\n `,\n ];\n\n @property({ type: Array }) links: FooterLink[] = [];\n\n private resizeObserver?: ResizeObserver;\n\n connectedCallback() {\n super.connectedCallback();\n this.resizeObserver = new ResizeObserver(() => {\n this.emitFooterHeight();\n });\n this.resizeObserver.observe(this);\n window.addEventListener('resize', this.emitFooterHeight);\n window.addEventListener('scroll', this.emitFooterHeight, true);\n setTimeout(() => this.emitFooterHeight(), 0);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.resizeObserver?.disconnect();\n window.removeEventListener('resize', this.emitFooterHeight);\n window.removeEventListener('scroll', this.emitFooterHeight, true);\n }\n\n private emitFooterHeight = () => {\n const rect = this.getBoundingClientRect();\n const windowHeight = window.innerHeight;\n let visible = 0;\n if (rect.top < windowHeight && rect.bottom > 0) {\n const visibleBottom = Math.min(rect.bottom, windowHeight);\n const visibleTop = Math.max(rect.top, 0);\n visible = visibleBottom - visibleTop;\n }\n visible = Math.max(0, visible);\n this.dispatchEvent(\n new CustomEvent('footer-height-changed', {\n detail: { height: visible },\n bubbles: true,\n composed: true,\n })\n );\n };\n\n render() {\n return html`\n <footer\n class=\"text-center text-sm flex w-full bg-(--axebow-primary) text-white justify-center items-center h-8 px-2 md:gap-8 gap-4 flex-wrap\"\n >\n ${this.links.map(\n (link) => html`\n <button\n class=\"h-7 text-sm p-1 inline-flex items-center gap-1 opacity-70 hover:opacity-100 transition-opacity duration-150 text-(--axebow-anti-flash-white) bg-transparent border-0 cursor-pointer\"\n @click=${link.onClick}\n >\n ${link.label}\n <axebow-icon iconName=\"open_in_new\" iconColor=\"var(--axebow-anti-flash-white)\" size=\"small\"></axebow-icon>\n </button>\n `\n )}\n </footer>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\n\nexport interface BreadcrumbSecondaryPage {\n label: string;\n onClick?: () => void;\n}\n\n/**\n * Purely presentational page breadcrumb: optional home block, optional\n * clickable secondary-page trail, the current page title, and an optional\n * \"required field\" note. Receives all copy and navigation as properties.\n */\n@customElement('axebow-breadcrumb-header')\nexport class AxebowBreadcrumbHeader extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: block;\n width: 100%;\n }\n `,\n ];\n\n @property({ type: Boolean }) padded = false;\n @property({ type: Boolean }) showHomeBlock = true;\n @property({ attribute: false }) onHomeClick: () => void = () => {};\n @property({ type: Boolean }) showSecondaryPages = false;\n @property({ type: Array }) secondaryPages: BreadcrumbSecondaryPage[] = [];\n @property({ type: String }) mainPage = '';\n @property({ type: Boolean }) showRequiredField = false;\n @property({ type: String }) requiredFieldLabel = '';\n\n render() {\n return html`\n <div class=\"flex flex-col gap-1 py-8 ${this.padded ? 'ps-8' : ''}\">\n <div class=\"flex flex-wrap items-center gap-2 text-xl text-[#344966]\">\n ${this.showHomeBlock\n ? html`\n <span class=\"flex items-center gap-2 cursor-pointer\" @click=${() => this.onHomeClick()}>\n <axebow-icon iconName=\"home\" iconColor=\"#344966\" size=\"medium\"></axebow-icon>\n <span class=\"font-normal\">/</span>\n </span>\n `\n : ''}\n ${this.showSecondaryPages\n ? this.secondaryPages.map(\n (page) => html`\n <span\n class=\"font-normal ${page.onClick ? 'cursor-pointer hover:underline' : ''}\"\n @click=${page.onClick ? () => page.onClick!() : undefined}\n >${page.label} /</span\n >\n `\n )\n : ''}\n <span class=\"font-semibold\">${this.mainPage}</span>\n </div>\n ${this.showRequiredField\n ? html`\n <div class=\"text-sm\">\n <span class=\"font-bold text-(--axebow-error)\">*</span>\n <span class=\"font-normal text-(--axebow-rich-black)\"> ${this.requiredFieldLabel}</span>\n </div>\n `\n : ''}\n </div>\n `;\n }\n}\n","import { html, LitElement, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport tailwindCss from '../../styles/tailwind.css?inline';\nimport '@shoelace-style/shoelace/dist/components/button/button.js';\n\n@customElement('axebow-button')\nexport class AxebowButton extends LitElement {\n @property({ type: String, reflect: true }) variant:\n | 'default'\n | 'primary'\n | 'success'\n | 'neutral'\n | 'warning'\n | 'danger'\n | 'text' = 'default';\n\n @property({ type: String, reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';\n @property({ type: Boolean, reflect: true }) outline = false;\n @property({ type: Boolean, reflect: true }) pill = false;\n @property({ type: Boolean, reflect: true }) circle = false;\n @property({ type: Boolean, attribute: false }) disabled = false;\n @property({ type: Boolean, reflect: true }) loading = false;\n @property({ type: Boolean, reflect: true }) caret = false;\n @property({ type: String }) type: 'button' | 'submit' | 'reset' = 'button';\n @property({ type: String }) href?: string;\n @property({ type: String }) target?: string;\n @property({ type: String }) name?: string;\n @property({ type: String }) value?: string;\n\n constructor() {\n super();\n this.addEventListener('click', this._guardDisabledClick, { capture: true });\n }\n\n private _guardDisabledClick = (event: MouseEvent) => {\n if (this.disabled || this.loading) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-button {\n width: 100%;\n }\n\n /**\n * Hover is always a plain recolor to axebow-gray, no matter the\n * variant - nothing else about the button's structure changes.\n */\n\n /** Default / neutral button */\n sl-button[variant='default']:hover::part(base),\n sl-button[variant='neutral']:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Primary button */\n sl-button[variant='primary']::part(base) {\n background: var(--axebow-tertiary);\n color: white;\n border-color: transparent;\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary']:hover::part(base) {\n background: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Outlined primary button */\n sl-button[variant='primary'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='primary'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Text button */\n sl-button[variant='text']::part(base) {\n outline-color: var(--axebow-tertiary);\n }\n sl-button[variant='text']::part(label) {\n color: var(--axebow-tertiary);\n }\n sl-button[variant='text']:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n sl-button[variant='text']:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Success button */\n sl-button[variant='success']::part(base) {\n background: var(--axebow-success);\n border-color: var(--axebow-success);\n color: white;\n border-radius: 8px;\n outline-color: var(--axebow-success);\n }\n sl-button[variant='success']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger button */\n sl-button[variant='danger']::part(base) {\n background: var(--axebow-error);\n border-color: var(--axebow-error);\n color: white;\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger']:hover::part(base) {\n background: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger outlined */\n sl-button[variant='danger'][outline]::part(base) {\n background: transparent;\n color: var(--axebow-error);\n border-color: var(--axebow-error);\n outline-color: var(--axebow-error);\n }\n sl-button[variant='danger'][outline]:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n\n /** Danger text (host class) */\n :host(.axebow-red-button-text) sl-button::part(base) {\n outline-color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button::part(label) {\n color: var(--axebow-error);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(base) {\n outline-color: var(--axebow-gray);\n }\n :host(.axebow-red-button-text) sl-button:hover::part(label) {\n color: var(--axebow-gray);\n }\n\n /** Warning button (host class) */\n :host(.axebow-warning-button-bg) sl-button::part(base) {\n color: var(--axebow-tertiary);\n border-color: var(--axebow-tertiary);\n outline-color: var(--axebow-tertiary);\n }\n :host(.axebow-warning-button-bg) sl-button:hover::part(base) {\n color: var(--axebow-gray);\n border-color: var(--axebow-gray);\n outline-color: var(--axebow-gray);\n }\n `,\n ];\n\n render() {\n return html`\n <sl-button\n exportparts=\"base, label, prefix, suffix, caret\"\n variant=${this.variant}\n size=${this.size}\n ?outline=${this.outline}\n ?pill=${this.pill}\n ?circle=${this.circle}\n ?disabled=${this.disabled}\n ?loading=${this.loading}\n ?caret=${this.caret}\n type=${this.type}\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n name=${ifDefined(this.name)}\n value=${ifDefined(this.value)}\n >\n <slot name=\"prefix\" slot=\"prefix\"></slot>\n <slot></slot>\n <slot name=\"suffix\" slot=\"suffix\"></slot>\n </sl-button>\n `;\n }\n}\n","import tailwindCss from '../../styles/tailwind.css?inline';\nimport { LitElement, html, css, unsafeCSS } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport '../axebow-icon/axebow-icon.js';\nimport '@shoelace-style/shoelace/dist/components/input/input.js';\n\n/**\n * Purely presentational search box, fixed at 320x40px. Receives its value\n * and placeholder as properties and emits `search-change` with the new\n * value on input/clear; it holds no business state.\n */\n@customElement('axebow-search')\nexport class AxebowSearch extends LitElement {\n static styles = [\n unsafeCSS(tailwindCss),\n css`\n :host {\n display: inline-block;\n }\n sl-input {\n width: 20rem;\n --sl-focus-ring-width: 0px;\n }\n sl-input::part(base) {\n height: 2.5rem;\n border: 1px solid #dbdde4;\n border-radius: 0.375rem;\n box-shadow: none;\n }\n sl-input:focus-within::part(base) {\n border-color: var(--axebow-tertiary);\n }\n sl-input::part(input) {\n color: var(--axebow-rich-black, #0d1821);\n font-size: 0.875rem;\n }\n sl-input::part(prefix) {\n padding-inline-start: 0.75rem;\n }\n `,\n ];\n\n @property({ type: String }) value = '';\n @property({ type: String }) placeholder = '';\n\n private _emitChange(value: string) {\n this.dispatchEvent(\n new CustomEvent('search-change', { detail: { value }, bubbles: true, composed: true })\n );\n }\n\n private _onInput(e: Event) {\n this._emitChange((e.target as HTMLInputElement).value);\n }\n\n private _onClear() {\n this._emitChange('');\n }\n\n render() {\n return html`\n <sl-input placeholder=${this.placeholder} .value=${this.value} clearable @sl-input=${this._onInput} @sl-clear=${this._onClear}>\n <axebow-icon slot=\"prefix\" iconName=\"search\" iconColor=\"var(--axebow-gray)\" size=\"small\"></axebow-icon>\n </sl-input>\n `;\n }\n}\n","import 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.60",
3
+ "version": "0.0.61",
4
4
  "description": "Aurora web component library",
5
5
  "license": "ISC",
6
6
  "type": "module",