@kumori/aurora-wui-components 0.0.53 → 0.0.54

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.
@@ -0,0 +1,23 @@
1
+ import { LitElement } from 'lit';
2
+ export interface BreadcrumbSecondaryPage {
3
+ label: string;
4
+ onClick?: () => void;
5
+ }
6
+ /**
7
+ * Purely presentational page breadcrumb: optional home block, optional
8
+ * clickable secondary-page trail, the current page title, and an optional
9
+ * "required field" note. Receives all copy and navigation as properties.
10
+ */
11
+ export declare class AxebowBreadcrumbHeader extends LitElement {
12
+ static styles: import('lit').CSSResult[];
13
+ padded: boolean;
14
+ showHomeBlock: boolean;
15
+ onHomeClick: () => void;
16
+ showSecondaryPages: boolean;
17
+ secondaryPages: BreadcrumbSecondaryPage[];
18
+ mainPage: string;
19
+ showRequiredField: boolean;
20
+ requiredFieldLabel: string;
21
+ render(): import('lit-html').TemplateResult<1>;
22
+ }
23
+ //# sourceMappingURL=axebow-breadcrumb-header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"axebow-breadcrumb-header.d.ts","sourceRoot":"","sources":["../../../src/components/axebow-breadcrumb-header/axebow-breadcrumb-header.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAwB,MAAM,KAAK,CAAC;AAEvD,OAAO,+BAA+B,CAAC;AAEvC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;GAIG;AACH,qBACa,sBAAuB,SAAQ,UAAU;IACpD,MAAM,CAAC,MAAM,4BAQX;IAE2B,MAAM,UAAS;IACf,aAAa,UAAQ;IAClB,WAAW,EAAE,MAAM,IAAI,CAAY;IACtC,kBAAkB,UAAS;IAC7B,cAAc,EAAE,uBAAuB,EAAE,CAAM;IAC9C,QAAQ,SAAM;IACb,iBAAiB,UAAS;IAC3B,kBAAkB,SAAM;IAEpD,MAAM;CAoCP"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './components/axebow-filter-bar/axebow-filter-bar.js';
4
4
  export * from './components/axebow-header/axebow-header.js';
5
5
  export * from './components/axebow-sidebar/axebow-sidebar.js';
6
6
  export * from './components/axebow-footer/axebow-footer.js';
7
+ export * from './components/axebow-breadcrumb-header/axebow-breadcrumb-header.js';
7
8
  export * from './components/cards/card.models.js';
8
9
  export * from './components/axebow-more-actions/axebow-more-actions.js';
9
10
  export * from './components/cards/axebow-base-card.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mCAAmC,CAAC;AAClD,cAAc,yDAAyD,CAAC;AACxE,cAAc,wCAAwC,CAAC;AACvD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0DAA0D,CAAC;AACzE,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,qDAAqD,CAAC;AACpE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,wDAAwD,CAAC;AACvE,cAAc,sDAAsD,CAAC;AACrE,cAAc,0DAA0D,CAAC;AACzE,cAAc,uDAAuD,CAAC;AACtE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,yCAAyC,CAAC;AACxD,cAAc,qDAAqD,CAAC;AACpE,cAAc,6CAA6C,CAAC;AAC5D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,6CAA6C,CAAC;AAC5D,cAAc,mEAAmE,CAAC;AAClF,cAAc,mCAAmC,CAAC;AAClD,cAAc,yDAAyD,CAAC;AACxE,cAAc,wCAAwC,CAAC;AACvD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,oDAAoD,CAAC;AACnE,cAAc,0DAA0D,CAAC;AACzE,cAAc,iDAAiD,CAAC;AAChE,cAAc,mDAAmD,CAAC;AAClE,cAAc,mDAAmD,CAAC;AAClE,cAAc,qDAAqD,CAAC;AACpE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,wDAAwD,CAAC;AACvE,cAAc,sDAAsD,CAAC;AACrE,cAAc,0DAA0D,CAAC;AACzE,cAAc,uDAAuD,CAAC;AACtE,cAAc,gDAAgD,CAAC;AAC/D,cAAc,gDAAgD,CAAC"}
package/dist/index.js CHANGED
@@ -110,7 +110,7 @@ var STATUS_COLORS = {
110
110
  };
111
111
  //#endregion
112
112
  //#region src/styles/tailwind.css?inline
113
- var tailwind_default = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n\n@layer theme {\n :root, :host {\n --font-sans: \"Open Sans\", sans-serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-gray-100: oklch(96.7% .003 264.542);\n --color-gray-200: oklch(92.8% .006 264.531);\n --color-gray-300: oklch(87.2% .01 258.338);\n --color-gray-400: oklch(70.7% .022 261.325);\n --color-gray-500: oklch(55.1% .027 264.364);\n --color-gray-600: oklch(44.6% .03 256.802);\n --color-black: #000;\n --color-white: #fff;\n --spacing: .25rem;\n --text-xs: .625rem;\n --text-xs--line-height: .875rem;\n --text-sm: .75rem;\n --text-sm--line-height: 1rem;\n --text-base: .875rem;\n --text-base--line-height: 1.25rem;\n --text-lg: 1.125rem;\n --text-lg--line-height: 1.75rem;\n --text-xl: 1.25rem;\n --text-3xl: 1.875rem;\n --text-5xl: 3rem;\n --font-weight-normal: 400;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --radius-sm: .25rem;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --ease-in-out: cubic-bezier(.4, 0, .2, 1);\n --default-transition-duration: .15s;\n --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --text-md: 1rem;\n --spacing-30: 7.5rem;\n --spacing-75: 18.75rem;\n --spacing-117: 29.25rem;\n --spacing-120: 30rem;\n }\n}\n\n@layer base {\n *, :after, :before, ::backdrop {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n ::file-selector-button {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n html, :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n line-height: 1.5;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n\n b, strong {\n font-weight: bolder;\n }\n\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n\n small {\n font-size: 80%;\n }\n\n sub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n\n sub {\n bottom: -.25em;\n }\n\n sup {\n top: -.5em;\n }\n\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n\n :-moz-focusring {\n outline: auto;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n summary {\n display: list-item;\n }\n\n ol, ul, menu {\n list-style: none;\n }\n\n img, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n }\n\n img, video {\n max-width: 100%;\n height: auto;\n }\n\n button, input, select, optgroup, textarea {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n\n ::placeholder {\n opacity: 1;\n }\n\n @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n\n textarea {\n resize: vertical;\n }\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n ::-webkit-datetime-edit {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-year-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-month-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-day-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-hour-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-minute-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-second-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-millisecond-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n\n :-moz-ui-invalid {\n box-shadow: none;\n }\n\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]) {\n appearance: button;\n }\n\n ::file-selector-button {\n appearance: button;\n }\n\n ::-webkit-inner-spin-button {\n height: auto;\n }\n\n ::-webkit-outer-spin-button {\n height: auto;\n }\n\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n\n@layer components;\n\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n\n .visible {\n visibility: visible;\n }\n\n .absolute {\n position: absolute;\n }\n\n .fixed {\n position: fixed;\n }\n\n .relative {\n position: relative;\n }\n\n .static {\n position: static;\n }\n\n .top-0 {\n top: 0;\n }\n\n .top-1\\/2 {\n top: 50%;\n }\n\n .top-\\[-7px\\] {\n top: -7px;\n }\n\n .top-full {\n top: 100%;\n }\n\n .right-0 {\n right: 0;\n }\n\n .right-0\\.5 {\n right: calc(var(--spacing) * .5);\n }\n\n .right-\\[calc\\(100\\%\\+10px\\)\\] {\n right: calc(100% + 10px);\n }\n\n .bottom-0\\.5 {\n bottom: calc(var(--spacing) * .5);\n }\n\n .bottom-full {\n bottom: 100%;\n }\n\n .left-0 {\n left: 0;\n }\n\n .left-1\\/2 {\n left: 50%;\n }\n\n .left-\\[-7px\\] {\n left: -7px;\n }\n\n .left-full {\n left: 100%;\n }\n\n .z-5 {\n z-index: 5;\n }\n\n .z-10 {\n z-index: 10;\n }\n\n .z-2000 {\n z-index: 2000;\n }\n\n .z-2001 {\n z-index: 2001;\n }\n\n .z-9999 {\n z-index: 9999;\n }\n\n .col-span-4 {\n grid-column: span 4 / span 4;\n }\n\n .container {\n width: 100%;\n }\n\n @media (min-width: 40rem) {\n .container {\n max-width: 40rem;\n }\n }\n\n @media (min-width: 48rem) {\n .container {\n max-width: 48rem;\n }\n }\n\n @media (min-width: 64rem) {\n .container {\n max-width: 64rem;\n }\n }\n\n @media (min-width: 80rem) {\n .container {\n max-width: 80rem;\n }\n }\n\n @media (min-width: 96rem) {\n .container {\n max-width: 96rem;\n }\n }\n\n .m-0 {\n margin: 0;\n }\n\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n\n .ms-auto {\n margin-inline-start: auto;\n }\n\n .mt-0 {\n margin-top: 0;\n }\n\n .mt-1 {\n margin-top: var(--spacing);\n }\n\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n\n .mb-1 {\n margin-bottom: var(--spacing);\n }\n\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n\n .ml-auto {\n margin-left: auto;\n }\n\n .box-border {\n box-sizing: border-box;\n }\n\n .line-clamp-1 {\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .flex {\n display: flex;\n }\n\n .grid {\n display: grid;\n }\n\n .hidden {\n display: none;\n }\n\n .inline-block {\n display: inline-block;\n }\n\n .inline-flex {\n display: inline-flex;\n }\n\n .h-2\\.25 {\n height: calc(var(--spacing) * 2.25);\n }\n\n .h-2\\.75 {\n height: calc(var(--spacing) * 2.75);\n }\n\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n\n .h-5\\.75 {\n height: calc(var(--spacing) * 5.75);\n }\n\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .h-6\\.5 {\n height: calc(var(--spacing) * 6.5);\n }\n\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .h-11\\.25 {\n height: calc(var(--spacing) * 11.25);\n }\n\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n\n .h-17\\.25 {\n height: calc(var(--spacing) * 17.25);\n }\n\n .h-92\\.25 {\n height: calc(var(--spacing) * 92.25);\n }\n\n .h-94\\.75 {\n height: calc(var(--spacing) * 94.75);\n }\n\n .h-101\\.5 {\n height: calc(var(--spacing) * 101.5);\n }\n\n .h-103\\.25 {\n height: calc(var(--spacing) * 103.25);\n }\n\n .h-\\[0\\.0625rem\\] {\n height: .0625rem;\n }\n\n .h-full {\n height: 100%;\n }\n\n .h-px {\n height: 1px;\n }\n\n .max-h-10 {\n max-height: calc(var(--spacing) * 10);\n }\n\n .max-h-40 {\n max-height: calc(var(--spacing) * 40);\n }\n\n .max-h-75 {\n max-height: var(--spacing-75);\n }\n\n .max-h-\\[40vh\\] {\n max-height: 40vh;\n }\n\n .max-h-full {\n max-height: 100%;\n }\n\n .min-h-10 {\n min-height: calc(var(--spacing) * 10);\n }\n\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n\n .w-30 {\n width: var(--spacing-30);\n }\n\n .w-35 {\n width: calc(var(--spacing) * 35);\n }\n\n .w-87 {\n width: calc(var(--spacing) * 87);\n }\n\n .w-91 {\n width: calc(var(--spacing) * 91);\n }\n\n .w-95 {\n width: calc(var(--spacing) * 95);\n }\n\n .w-117 {\n width: var(--spacing-117);\n }\n\n .w-120 {\n width: var(--spacing-120);\n }\n\n .w-\\[10\\.5rem\\] {\n width: 10.5rem;\n }\n\n .w-\\[calc\\(100\\%-10px\\)\\] {\n width: calc(100% - 10px);\n }\n\n .w-full {\n width: 100%;\n }\n\n .max-w-full {\n max-width: 100%;\n }\n\n .min-w-0 {\n min-width: 0;\n }\n\n .min-w-4 {\n min-width: calc(var(--spacing) * 4);\n }\n\n .min-w-36 {\n min-width: calc(var(--spacing) * 36);\n }\n\n .min-w-44 {\n min-width: calc(var(--spacing) * 44);\n }\n\n .min-w-55 {\n min-width: calc(var(--spacing) * 55);\n }\n\n .min-w-fit {\n min-width: fit-content;\n }\n\n .flex-1 {\n flex: 1;\n }\n\n .shrink-0 {\n flex-shrink: 0;\n }\n\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-x-1 {\n --tw-translate-x: var(--spacing);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .transform {\n transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );\n }\n\n .cursor-default {\n cursor: default;\n }\n\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .cursor-pointer {\n cursor: pointer;\n }\n\n .resize {\n resize: both;\n }\n\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .grid-cols-\\[auto_auto_1fr_auto\\] {\n grid-template-columns: auto auto 1fr auto;\n }\n\n .flex-col {\n flex-direction: column;\n }\n\n .flex-row {\n flex-direction: row;\n }\n\n .flex-wrap {\n flex-wrap: wrap;\n }\n\n .items-center {\n align-items: center;\n }\n\n .items-end {\n align-items: flex-end;\n }\n\n .justify-between {\n justify-content: space-between;\n }\n\n .justify-center {\n justify-content: center;\n }\n\n .justify-end {\n justify-content: flex-end;\n }\n\n .justify-start {\n justify-content: flex-start;\n }\n\n .gap-0 {\n gap: 0;\n }\n\n .gap-0\\.5 {\n gap: calc(var(--spacing) * .5);\n }\n\n .gap-1 {\n gap: var(--spacing);\n }\n\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .gap-x-1 {\n column-gap: var(--spacing);\n }\n\n .gap-x-2 {\n column-gap: calc(var(--spacing) * 2);\n }\n\n .gap-y-\\[0\\.1875rem\\] {\n row-gap: .1875rem;\n }\n\n .overflow-auto {\n overflow: auto;\n }\n\n .overflow-hidden {\n overflow: hidden;\n }\n\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n\n .overflow-y-auto {\n overflow-y: auto;\n }\n\n .rounded {\n border-radius: .25rem;\n }\n\n .rounded-full {\n border-radius: 3.40282e38px;\n }\n\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n\n .rounded-md {\n border-radius: var(--radius-md);\n }\n\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n\n .rounded-t-md {\n border-top-left-radius: var(--radius-md);\n border-top-right-radius: var(--radius-md);\n }\n\n .rounded-l-xl {\n border-top-left-radius: var(--radius-xl);\n border-bottom-left-radius: var(--radius-xl);\n }\n\n .rounded-b-lg {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n\n .rounded-b-md {\n border-bottom-right-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .border-x {\n border-inline-style: var(--tw-border-style);\n border-inline-width: 1px;\n }\n\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n\n .border-t-4 {\n border-top-style: var(--tw-border-style);\n border-top-width: 4px;\n }\n\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n\n .border-\\(--axebow-gray\\) {\n border-color: var(--axebow-gray);\n }\n\n .border-\\(--axebow-light-gray\\) {\n border-color: var(--axebow-light-gray);\n }\n\n .border-\\(--axebow-secondary\\) {\n border-color: var(--axebow-secondary);\n }\n\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n\n .border-gray-500 {\n border-color: var(--color-gray-500);\n }\n\n .border-transparent {\n border-color: #0000;\n }\n\n .bg-\\(--axebow-anti-flash-white\\) {\n background-color: var(--axebow-anti-flash-white);\n }\n\n .bg-\\(--axebow-base\\) {\n background-color: var(--axebow-base);\n }\n\n .bg-\\(--axebow-error\\) {\n background-color: var(--axebow-error);\n }\n\n .bg-\\(--axebow-gray\\) {\n background-color: var(--axebow-gray);\n }\n\n .bg-\\(--axebow-light-gray\\) {\n background-color: var(--axebow-light-gray);\n }\n\n .bg-\\(--axebow-primary\\) {\n background-color: var(--axebow-primary);\n }\n\n .bg-\\(--axebow-success\\) {\n background-color: var(--axebow-success);\n }\n\n .bg-\\(--axebow-white\\) {\n background-color: var(--axebow-white);\n }\n\n .bg-\\[\\#b4cded\\] {\n background-color: #b4cded;\n }\n\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n\n .bg-transparent {\n background-color: #0000;\n }\n\n .bg-white {\n background-color: var(--color-white);\n }\n\n .object-contain {\n object-fit: contain;\n }\n\n .p-1 {\n padding: var(--spacing);\n }\n\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * .5);\n }\n\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n\n .px-3\\.5 {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * .5);\n }\n\n .py-1 {\n padding-block: var(--spacing);\n }\n\n .py-1\\.25 {\n padding-block: calc(var(--spacing) * 1.25);\n }\n\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n\n .ps-4 {\n padding-inline-start: calc(var(--spacing) * 4);\n }\n\n .pe-4 {\n padding-inline-end: calc(var(--spacing) * 4);\n }\n\n .pt-0\\.5 {\n padding-top: calc(var(--spacing) * .5);\n }\n\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n\n .pl-1 {\n padding-left: var(--spacing);\n }\n\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n\n .text-center {\n text-align: center;\n }\n\n .text-left {\n text-align: left;\n }\n\n .align-middle {\n vertical-align: middle;\n }\n\n .font-\\[Material_Symbols_Outlined\\] {\n font-family: Material Symbols Outlined;\n }\n\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .wrap-break-word {\n overflow-wrap: break-word;\n }\n\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n\n .whitespace-nowrap {\n white-space: nowrap;\n }\n\n .text-\\(--axebow-anti-flash-white\\) {\n color: var(--axebow-anti-flash-white);\n }\n\n .text-\\(--axebow-error\\) {\n color: var(--axebow-error);\n }\n\n .text-\\(--axebow-gray\\) {\n color: var(--axebow-gray);\n }\n\n .text-\\(--axebow-primary\\) {\n color: var(--axebow-primary);\n }\n\n .text-\\(--axebow-rich-black\\) {\n color: var(--axebow-rich-black);\n }\n\n .text-\\(--axebow-secondary\\) {\n color: var(--axebow-secondary);\n }\n\n .text-\\(--axebow-tertiary\\) {\n color: var(--axebow-tertiary);\n }\n\n .text-\\[\\#344966\\] {\n color: #344966;\n }\n\n .text-black {\n color: var(--color-black);\n }\n\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n\n .text-gray-500 {\n color: var(--color-gray-500);\n }\n\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n\n .text-white {\n color: var(--color-white);\n }\n\n .italic {\n font-style: italic;\n }\n\n .opacity-0 {\n opacity: 0;\n }\n\n .opacity-50 {\n opacity: .5;\n }\n\n .opacity-70 {\n opacity: .7;\n }\n\n .opacity-100 {\n opacity: 1;\n }\n\n .shadow-\\[0_6px_16px_rgba\\(13\\,24\\,33\\,0\\.18\\)\\] {\n --tw-shadow: 0 6px 16px var(--tw-shadow-color, #0d18212e);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-\\[2px_2px_25px_0px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\] {\n --tw-shadow: 2px 2px 25px 0px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .filter {\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .duration-120 {\n --tw-duration: .12s;\n transition-duration: .12s;\n }\n\n .duration-150 {\n --tw-duration: .15s;\n transition-duration: .15s;\n }\n\n .duration-200 {\n --tw-duration: .2s;\n transition-duration: .2s;\n }\n\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .\\[font-variation-settings\\:\\'FILL\\'_0\\,\\'wght\\'_400\\,\\'GRAD\\'_0\\,\\'opsz\\'_24\\] {\n font-variation-settings: \"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;\n }\n\n .\\[font-variation-settings\\:\\'FILL\\'_1\\,\\'wght\\'_400\\,\\'GRAD\\'_0\\,\\'opsz\\'_24\\] {\n font-variation-settings: \"FILL\" 1,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;\n }\n\n @media (hover: hover) {\n .group-hover\\:translate-x-0:is(:where(.group):hover *) {\n --tw-translate-x: 0;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .group-hover\\:rotate-15:is(:where(.group):hover *) {\n rotate: 15deg;\n }\n\n .group-hover\\:font-semibold:is(:where(.group):hover *) {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .group-hover\\:text-\\(--axebow-primary\\):is(:where(.group):hover *) {\n color: var(--axebow-primary);\n }\n\n .group-hover\\:opacity-100:is(:where(.group):hover *) {\n opacity: 1;\n }\n\n .hover\\:rounded-lg:hover {\n border-radius: var(--radius-lg);\n }\n\n .hover\\:border-\\(--axebow-tertiary\\):hover {\n border-color: var(--axebow-tertiary);\n }\n\n .hover\\:bg-\\(--axebow-base\\):hover {\n background-color: var(--axebow-base);\n }\n\n .hover\\:bg-\\(--axebow-light-gray\\):hover {\n background-color: var(--axebow-light-gray);\n }\n\n .hover\\:bg-\\[\\#344966\\]:hover {\n background-color: #344966;\n }\n\n .hover\\:bg-\\[var\\(--axebow-anti-flash-white\\)\\]:hover {\n background-color: var(--axebow-anti-flash-white);\n }\n\n .hover\\:bg-gray-100:hover {\n background-color: var(--color-gray-100);\n }\n\n .hover\\:bg-gray-200:hover {\n background-color: var(--color-gray-200);\n }\n\n .hover\\:bg-white:hover {\n background-color: var(--color-white);\n }\n\n .hover\\:text-\\(--axebow-tertiary\\):hover {\n color: var(--axebow-tertiary);\n }\n\n .hover\\:text-\\[\\#344966\\]:hover {\n color: #344966;\n }\n\n .hover\\:text-\\[var\\(--axebow-gray\\)\\]:hover {\n color: var(--axebow-gray);\n }\n\n .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n\n .hover\\:opacity-80:hover {\n opacity: .8;\n }\n\n .hover\\:opacity-100:hover {\n opacity: 1;\n }\n\n .hover\\:shadow-\\[0_2px_6px_rgba\\(13\\,24\\,33\\,0\\.14\\)\\]:hover {\n --tw-shadow: 0 2px 6px var(--tw-shadow-color, #0d182124);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .hover\\:shadow-\\[0_4px_12px_0_rgba\\(13\\,24\\,33\\,0\\.08\\)\\]:hover {\n --tw-shadow: 0 4px 12px 0 var(--tw-shadow-color, #0d182114);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n\n .disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n }\n\n .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n }\n\n .disabled\\:opacity-50:disabled {\n opacity: .5;\n }\n\n @media (min-width: 48rem) {\n .md\\:gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n }\n}\n\n:host {\n font-family: var(--font-sans);\n font-size: var(--text-base);\n line-height: var(--text-base--line-height);\n --font-sans: \"Open Sans\", sans-serif;\n --text-xs: .625rem;\n --text-xs--line-height: .875rem;\n --text-sm: .75rem;\n --text-sm--line-height: 1rem;\n --text-base: .875rem;\n --text-base--line-height: 1.25rem;\n --text-md: 1rem;\n --text-md--line-height: 1.5rem;\n --text-lg: 1.125rem;\n --text-lg--line-height: 1.75rem;\n --text-xl: 1.25rem;\n --text-xl--line-height: 1.75rem;\n --text-2xl: 1.5rem;\n --text-2xl--line-height: 2rem;\n --text-3xl: 1.875rem;\n --text-3xl--line-height: 2.25rem;\n --text-4xl: 2.25rem;\n --text-4xl--line-height: 2.5rem;\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --text-8xl: 4.625rem;\n --text-8xl--line-height: 1;\n --text-9xl: 6.125rem;\n --text-9xl--line-height: 1;\n}\n\n:root {\n --sl-font-sans: \"Open Sans\", sans-serif;\n --sl-font-size-2x-small: var(--text-xs);\n --sl-font-size-x-small: var(--text-xs);\n --sl-font-size-small: var(--text-sm);\n --sl-font-size-medium: var(--text-base);\n --sl-font-size-large: var(--text-md);\n --sl-font-size-x-large: var(--text-lg);\n --sl-font-size-2x-large: var(--text-xl);\n --sl-font-size-3x-large: var(--text-3xl);\n --sl-font-size-4x-large: var(--text-5xl);\n --sl-input-font-size-small: var(--text-sm);\n --sl-input-font-size-medium: var(--text-base);\n --sl-input-font-size-large: var(--text-md);\n --sl-button-font-size-small: var(--text-sm);\n --sl-button-font-size-medium: var(--text-base);\n --sl-button-font-size-large: var(--text-md);\n --sl-tooltip-font-size: var(--text-base);\n}\n\nbutton, input, select, textarea {\n font-family: inherit;\n font-size: inherit;\n}\n\ninput, select, textarea, sl-menu-item::part(label), sl-option::part(label) {\n font-size: var(--text-base);\n}\n\n.axebow-blue-button::part(base) {\n background-color: var(--axebow-tertiary);\n}\n\n.info-container-page {\n flex-wrap: wrap;\n gap: 2rem;\n display: flex;\n}\n\nsl-divider {\n background: var(--axebow-light-gray);\n height: 1px;\n margin-top: .5rem;\n margin-bottom: .5rem;\n}\n\n.axebow-shadow {\n box-shadow: 2px 2px 25px #0000001a;\n}\n\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-leading {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-blur {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-invert {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-duration {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ease {\n syntax: \"*\";\n inherits: false\n}\n";
113
+ var tailwind_default = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties {\n @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {\n *, :before, :after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-rotate-x: initial;\n --tw-rotate-y: initial;\n --tw-rotate-z: initial;\n --tw-skew-x: initial;\n --tw-skew-y: initial;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-blur: initial;\n --tw-brightness: initial;\n --tw-contrast: initial;\n --tw-grayscale: initial;\n --tw-hue-rotate: initial;\n --tw-invert: initial;\n --tw-opacity: initial;\n --tw-saturate: initial;\n --tw-sepia: initial;\n --tw-drop-shadow: initial;\n --tw-drop-shadow-color: initial;\n --tw-drop-shadow-alpha: 100%;\n --tw-drop-shadow-size: initial;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n\n@layer theme {\n :root, :host {\n --font-sans: \"Open Sans\", sans-serif;\n --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --color-gray-100: oklch(96.7% .003 264.542);\n --color-gray-200: oklch(92.8% .006 264.531);\n --color-gray-300: oklch(87.2% .01 258.338);\n --color-gray-400: oklch(70.7% .022 261.325);\n --color-gray-500: oklch(55.1% .027 264.364);\n --color-gray-600: oklch(44.6% .03 256.802);\n --color-black: #000;\n --color-white: #fff;\n --spacing: .25rem;\n --text-xs: .625rem;\n --text-xs--line-height: .875rem;\n --text-sm: .75rem;\n --text-sm--line-height: 1rem;\n --text-base: .875rem;\n --text-base--line-height: 1.25rem;\n --text-lg: 1.125rem;\n --text-lg--line-height: 1.75rem;\n --text-xl: 1.25rem;\n --text-xl--line-height: 1.75rem;\n --text-3xl: 1.875rem;\n --text-5xl: 3rem;\n --font-weight-normal: 400;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --radius-sm: .25rem;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --ease-in-out: cubic-bezier(.4, 0, .2, 1);\n --default-transition-duration: .15s;\n --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);\n --default-font-family: var(--font-sans);\n --default-mono-font-family: var(--font-mono);\n --text-md: 1rem;\n --spacing-30: 7.5rem;\n --spacing-75: 18.75rem;\n --spacing-117: 29.25rem;\n --spacing-120: 30rem;\n }\n}\n\n@layer base {\n *, :after, :before, ::backdrop {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n ::file-selector-button {\n box-sizing: border-box;\n border: 0 solid;\n margin: 0;\n padding: 0;\n }\n\n html, :host {\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n line-height: 1.5;\n font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--default-font-feature-settings, normal);\n font-variation-settings: var(--default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n\n b, strong {\n font-weight: bolder;\n }\n\n code, kbd, samp, pre {\n font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--default-mono-font-feature-settings, normal);\n font-variation-settings: var(--default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n\n small {\n font-size: 80%;\n }\n\n sub, sup {\n vertical-align: baseline;\n font-size: 75%;\n line-height: 0;\n position: relative;\n }\n\n sub {\n bottom: -.25em;\n }\n\n sup {\n top: -.5em;\n }\n\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n\n :-moz-focusring {\n outline: auto;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n summary {\n display: list-item;\n }\n\n ol, ul, menu {\n list-style: none;\n }\n\n img, svg, video, canvas, audio, iframe, embed, object {\n vertical-align: middle;\n display: block;\n }\n\n img, video {\n max-width: 100%;\n height: auto;\n }\n\n button, input, select, optgroup, textarea {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n opacity: 1;\n background-color: #0000;\n border-radius: 0;\n }\n\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n\n ::placeholder {\n opacity: 1;\n }\n\n @supports (not ((-webkit-appearance: -apple-pay-button))) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentColor;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n ::placeholder {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n\n textarea {\n resize: vertical;\n }\n\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n\n ::-webkit-datetime-edit {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-year-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-month-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-day-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-hour-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-minute-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-second-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-millisecond-field {\n padding-block: 0;\n }\n\n ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n\n :-moz-ui-invalid {\n box-shadow: none;\n }\n\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]) {\n appearance: button;\n }\n\n ::file-selector-button {\n appearance: button;\n }\n\n ::-webkit-inner-spin-button {\n height: auto;\n }\n\n ::-webkit-outer-spin-button {\n height: auto;\n }\n\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n\n@layer components;\n\n@layer utilities {\n .pointer-events-none {\n pointer-events: none;\n }\n\n .visible {\n visibility: visible;\n }\n\n .absolute {\n position: absolute;\n }\n\n .fixed {\n position: fixed;\n }\n\n .relative {\n position: relative;\n }\n\n .static {\n position: static;\n }\n\n .top-0 {\n top: 0;\n }\n\n .top-1\\/2 {\n top: 50%;\n }\n\n .top-\\[-7px\\] {\n top: -7px;\n }\n\n .top-full {\n top: 100%;\n }\n\n .right-0 {\n right: 0;\n }\n\n .right-0\\.5 {\n right: calc(var(--spacing) * .5);\n }\n\n .right-\\[calc\\(100\\%\\+10px\\)\\] {\n right: calc(100% + 10px);\n }\n\n .bottom-0\\.5 {\n bottom: calc(var(--spacing) * .5);\n }\n\n .bottom-full {\n bottom: 100%;\n }\n\n .left-0 {\n left: 0;\n }\n\n .left-1\\/2 {\n left: 50%;\n }\n\n .left-\\[-7px\\] {\n left: -7px;\n }\n\n .left-full {\n left: 100%;\n }\n\n .z-5 {\n z-index: 5;\n }\n\n .z-10 {\n z-index: 10;\n }\n\n .z-2000 {\n z-index: 2000;\n }\n\n .z-2001 {\n z-index: 2001;\n }\n\n .z-9999 {\n z-index: 9999;\n }\n\n .col-span-4 {\n grid-column: span 4 / span 4;\n }\n\n .container {\n width: 100%;\n }\n\n @media (min-width: 40rem) {\n .container {\n max-width: 40rem;\n }\n }\n\n @media (min-width: 48rem) {\n .container {\n max-width: 48rem;\n }\n }\n\n @media (min-width: 64rem) {\n .container {\n max-width: 64rem;\n }\n }\n\n @media (min-width: 80rem) {\n .container {\n max-width: 80rem;\n }\n }\n\n @media (min-width: 96rem) {\n .container {\n max-width: 96rem;\n }\n }\n\n .m-0 {\n margin: 0;\n }\n\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n\n .ms-auto {\n margin-inline-start: auto;\n }\n\n .mt-0 {\n margin-top: 0;\n }\n\n .mt-1 {\n margin-top: var(--spacing);\n }\n\n .mt-1\\.5 {\n margin-top: calc(var(--spacing) * 1.5);\n }\n\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n\n .mr-2 {\n margin-right: calc(var(--spacing) * 2);\n }\n\n .mr-4 {\n margin-right: calc(var(--spacing) * 4);\n }\n\n .mb-1 {\n margin-bottom: var(--spacing);\n }\n\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n\n .ml-auto {\n margin-left: auto;\n }\n\n .box-border {\n box-sizing: border-box;\n }\n\n .line-clamp-1 {\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .flex {\n display: flex;\n }\n\n .grid {\n display: grid;\n }\n\n .hidden {\n display: none;\n }\n\n .inline-block {\n display: inline-block;\n }\n\n .inline-flex {\n display: inline-flex;\n }\n\n .h-2\\.25 {\n height: calc(var(--spacing) * 2.25);\n }\n\n .h-2\\.75 {\n height: calc(var(--spacing) * 2.75);\n }\n\n .h-3\\.5 {\n height: calc(var(--spacing) * 3.5);\n }\n\n .h-4 {\n height: calc(var(--spacing) * 4);\n }\n\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n\n .h-5\\.75 {\n height: calc(var(--spacing) * 5.75);\n }\n\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .h-6\\.5 {\n height: calc(var(--spacing) * 6.5);\n }\n\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .h-11\\.25 {\n height: calc(var(--spacing) * 11.25);\n }\n\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n\n .h-17\\.25 {\n height: calc(var(--spacing) * 17.25);\n }\n\n .h-92\\.25 {\n height: calc(var(--spacing) * 92.25);\n }\n\n .h-94\\.75 {\n height: calc(var(--spacing) * 94.75);\n }\n\n .h-101\\.5 {\n height: calc(var(--spacing) * 101.5);\n }\n\n .h-103\\.25 {\n height: calc(var(--spacing) * 103.25);\n }\n\n .h-\\[0\\.0625rem\\] {\n height: .0625rem;\n }\n\n .h-full {\n height: 100%;\n }\n\n .h-px {\n height: 1px;\n }\n\n .max-h-10 {\n max-height: calc(var(--spacing) * 10);\n }\n\n .max-h-40 {\n max-height: calc(var(--spacing) * 40);\n }\n\n .max-h-75 {\n max-height: var(--spacing-75);\n }\n\n .max-h-\\[40vh\\] {\n max-height: 40vh;\n }\n\n .max-h-full {\n max-height: 100%;\n }\n\n .min-h-10 {\n min-height: calc(var(--spacing) * 10);\n }\n\n .w-2\\.5 {\n width: calc(var(--spacing) * 2.5);\n }\n\n .w-3\\.5 {\n width: calc(var(--spacing) * 3.5);\n }\n\n .w-4 {\n width: calc(var(--spacing) * 4);\n }\n\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n\n .w-30 {\n width: var(--spacing-30);\n }\n\n .w-35 {\n width: calc(var(--spacing) * 35);\n }\n\n .w-87 {\n width: calc(var(--spacing) * 87);\n }\n\n .w-91 {\n width: calc(var(--spacing) * 91);\n }\n\n .w-95 {\n width: calc(var(--spacing) * 95);\n }\n\n .w-117 {\n width: var(--spacing-117);\n }\n\n .w-120 {\n width: var(--spacing-120);\n }\n\n .w-\\[10\\.5rem\\] {\n width: 10.5rem;\n }\n\n .w-\\[calc\\(100\\%-10px\\)\\] {\n width: calc(100% - 10px);\n }\n\n .w-full {\n width: 100%;\n }\n\n .max-w-full {\n max-width: 100%;\n }\n\n .min-w-0 {\n min-width: 0;\n }\n\n .min-w-4 {\n min-width: calc(var(--spacing) * 4);\n }\n\n .min-w-36 {\n min-width: calc(var(--spacing) * 36);\n }\n\n .min-w-44 {\n min-width: calc(var(--spacing) * 44);\n }\n\n .min-w-55 {\n min-width: calc(var(--spacing) * 55);\n }\n\n .min-w-fit {\n min-width: fit-content;\n }\n\n .flex-1 {\n flex: 1;\n }\n\n .shrink-0 {\n flex-shrink: 0;\n }\n\n .-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .translate-x-1 {\n --tw-translate-x: var(--spacing);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .transform {\n transform: var(--tw-rotate-x, ) var(--tw-rotate-y, ) var(--tw-rotate-z, ) var(--tw-skew-x, ) var(--tw-skew-y, );\n }\n\n .cursor-default {\n cursor: default;\n }\n\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .cursor-pointer {\n cursor: pointer;\n }\n\n .resize {\n resize: both;\n }\n\n .grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n }\n\n .grid-cols-\\[auto_auto_1fr_auto\\] {\n grid-template-columns: auto auto 1fr auto;\n }\n\n .flex-col {\n flex-direction: column;\n }\n\n .flex-row {\n flex-direction: row;\n }\n\n .flex-wrap {\n flex-wrap: wrap;\n }\n\n .items-center {\n align-items: center;\n }\n\n .items-end {\n align-items: flex-end;\n }\n\n .justify-between {\n justify-content: space-between;\n }\n\n .justify-center {\n justify-content: center;\n }\n\n .justify-end {\n justify-content: flex-end;\n }\n\n .justify-start {\n justify-content: flex-start;\n }\n\n .gap-0 {\n gap: 0;\n }\n\n .gap-0\\.5 {\n gap: calc(var(--spacing) * .5);\n }\n\n .gap-1 {\n gap: var(--spacing);\n }\n\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .gap-3 {\n gap: calc(var(--spacing) * 3);\n }\n\n .gap-4 {\n gap: calc(var(--spacing) * 4);\n }\n\n .gap-x-1 {\n column-gap: var(--spacing);\n }\n\n .gap-x-2 {\n column-gap: calc(var(--spacing) * 2);\n }\n\n .gap-y-\\[0\\.1875rem\\] {\n row-gap: .1875rem;\n }\n\n .overflow-auto {\n overflow: auto;\n }\n\n .overflow-hidden {\n overflow: hidden;\n }\n\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n\n .overflow-y-auto {\n overflow-y: auto;\n }\n\n .rounded {\n border-radius: .25rem;\n }\n\n .rounded-full {\n border-radius: 3.40282e38px;\n }\n\n .rounded-lg {\n border-radius: var(--radius-lg);\n }\n\n .rounded-md {\n border-radius: var(--radius-md);\n }\n\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n\n .rounded-t-md {\n border-top-left-radius: var(--radius-md);\n border-top-right-radius: var(--radius-md);\n }\n\n .rounded-l-xl {\n border-top-left-radius: var(--radius-xl);\n border-bottom-left-radius: var(--radius-xl);\n }\n\n .rounded-b-lg {\n border-bottom-right-radius: var(--radius-lg);\n border-bottom-left-radius: var(--radius-lg);\n }\n\n .rounded-b-md {\n border-bottom-right-radius: var(--radius-md);\n border-bottom-left-radius: var(--radius-md);\n }\n\n .border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .border-0 {\n border-style: var(--tw-border-style);\n border-width: 0;\n }\n\n .border-2 {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .border-x {\n border-inline-style: var(--tw-border-style);\n border-inline-width: 1px;\n }\n\n .border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n\n .border-t-4 {\n border-top-style: var(--tw-border-style);\n border-top-width: 4px;\n }\n\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n\n .border-none {\n --tw-border-style: none;\n border-style: none;\n }\n\n .border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n\n .border-\\(--axebow-gray\\) {\n border-color: var(--axebow-gray);\n }\n\n .border-\\(--axebow-light-gray\\) {\n border-color: var(--axebow-light-gray);\n }\n\n .border-\\(--axebow-secondary\\) {\n border-color: var(--axebow-secondary);\n }\n\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n\n .border-gray-500 {\n border-color: var(--color-gray-500);\n }\n\n .border-transparent {\n border-color: #0000;\n }\n\n .bg-\\(--axebow-anti-flash-white\\) {\n background-color: var(--axebow-anti-flash-white);\n }\n\n .bg-\\(--axebow-base\\) {\n background-color: var(--axebow-base);\n }\n\n .bg-\\(--axebow-error\\) {\n background-color: var(--axebow-error);\n }\n\n .bg-\\(--axebow-gray\\) {\n background-color: var(--axebow-gray);\n }\n\n .bg-\\(--axebow-light-gray\\) {\n background-color: var(--axebow-light-gray);\n }\n\n .bg-\\(--axebow-primary\\) {\n background-color: var(--axebow-primary);\n }\n\n .bg-\\(--axebow-success\\) {\n background-color: var(--axebow-success);\n }\n\n .bg-\\(--axebow-white\\) {\n background-color: var(--axebow-white);\n }\n\n .bg-\\[\\#b4cded\\] {\n background-color: #b4cded;\n }\n\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n\n .bg-transparent {\n background-color: #0000;\n }\n\n .bg-white {\n background-color: var(--color-white);\n }\n\n .object-contain {\n object-fit: contain;\n }\n\n .p-1 {\n padding: var(--spacing);\n }\n\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * .5);\n }\n\n .px-1\\.5 {\n padding-inline: calc(var(--spacing) * 1.5);\n }\n\n .px-2 {\n padding-inline: calc(var(--spacing) * 2);\n }\n\n .px-3 {\n padding-inline: calc(var(--spacing) * 3);\n }\n\n .px-3\\.5 {\n padding-inline: calc(var(--spacing) * 3.5);\n }\n\n .px-4 {\n padding-inline: calc(var(--spacing) * 4);\n }\n\n .px-5 {\n padding-inline: calc(var(--spacing) * 5);\n }\n\n .py-0\\.5 {\n padding-block: calc(var(--spacing) * .5);\n }\n\n .py-1 {\n padding-block: var(--spacing);\n }\n\n .py-1\\.25 {\n padding-block: calc(var(--spacing) * 1.25);\n }\n\n .py-2 {\n padding-block: calc(var(--spacing) * 2);\n }\n\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .py-8 {\n padding-block: calc(var(--spacing) * 8);\n }\n\n .ps-4 {\n padding-inline-start: calc(var(--spacing) * 4);\n }\n\n .ps-8 {\n padding-inline-start: calc(var(--spacing) * 8);\n }\n\n .pe-4 {\n padding-inline-end: calc(var(--spacing) * 4);\n }\n\n .pt-0\\.5 {\n padding-top: calc(var(--spacing) * .5);\n }\n\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n\n .pl-1 {\n padding-left: var(--spacing);\n }\n\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n\n .text-center {\n text-align: center;\n }\n\n .text-left {\n text-align: left;\n }\n\n .align-middle {\n vertical-align: middle;\n }\n\n .font-\\[Material_Symbols_Outlined\\] {\n font-family: Material Symbols Outlined;\n }\n\n .text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n\n .text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n\n .text-sm {\n font-size: var(--text-sm);\n line-height: var(--tw-leading, var(--text-sm--line-height));\n }\n\n .text-xl {\n font-size: var(--text-xl);\n line-height: var(--tw-leading, var(--text-xl--line-height));\n }\n\n .text-xs {\n font-size: var(--text-xs);\n line-height: var(--tw-leading, var(--text-xs--line-height));\n }\n\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n\n .leading-snug {\n --tw-leading: var(--leading-snug);\n line-height: var(--leading-snug);\n }\n\n .leading-tight {\n --tw-leading: var(--leading-tight);\n line-height: var(--leading-tight);\n }\n\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n\n .font-normal {\n --tw-font-weight: var(--font-weight-normal);\n font-weight: var(--font-weight-normal);\n }\n\n .font-semibold {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .wrap-break-word {\n overflow-wrap: break-word;\n }\n\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n\n .whitespace-nowrap {\n white-space: nowrap;\n }\n\n .text-\\(--axebow-anti-flash-white\\) {\n color: var(--axebow-anti-flash-white);\n }\n\n .text-\\(--axebow-error\\) {\n color: var(--axebow-error);\n }\n\n .text-\\(--axebow-gray\\) {\n color: var(--axebow-gray);\n }\n\n .text-\\(--axebow-primary\\) {\n color: var(--axebow-primary);\n }\n\n .text-\\(--axebow-rich-black\\) {\n color: var(--axebow-rich-black);\n }\n\n .text-\\(--axebow-secondary\\) {\n color: var(--axebow-secondary);\n }\n\n .text-\\(--axebow-tertiary\\) {\n color: var(--axebow-tertiary);\n }\n\n .text-\\[\\#344966\\] {\n color: #344966;\n }\n\n .text-black {\n color: var(--color-black);\n }\n\n .text-gray-400 {\n color: var(--color-gray-400);\n }\n\n .text-gray-500 {\n color: var(--color-gray-500);\n }\n\n .text-gray-600 {\n color: var(--color-gray-600);\n }\n\n .text-white {\n color: var(--color-white);\n }\n\n .italic {\n font-style: italic;\n }\n\n .opacity-0 {\n opacity: 0;\n }\n\n .opacity-50 {\n opacity: .5;\n }\n\n .opacity-70 {\n opacity: .7;\n }\n\n .opacity-100 {\n opacity: 1;\n }\n\n .shadow-\\[0_6px_16px_rgba\\(13\\,24\\,33\\,0\\.18\\)\\] {\n --tw-shadow: 0 6px 16px var(--tw-shadow-color, #0d18212e);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-\\[2px_2px_25px_0px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\] {\n --tw-shadow: 2px 2px 25px 0px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, #0000001a), 0 4px 6px -4px var(--tw-shadow-color, #0000001a);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .grayscale {\n --tw-grayscale: grayscale(100%);\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .filter {\n filter: var(--tw-blur, ) var(--tw-brightness, ) var(--tw-contrast, ) var(--tw-grayscale, ) var(--tw-hue-rotate, ) var(--tw-invert, ) var(--tw-saturate, ) var(--tw-sepia, ) var(--tw-drop-shadow, );\n }\n\n .transition {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, content-visibility, overlay, pointer-events;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-all {\n transition-property: all;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-shadow {\n transition-property: box-shadow;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--default-transition-duration));\n }\n\n .duration-120 {\n --tw-duration: .12s;\n transition-duration: .12s;\n }\n\n .duration-150 {\n --tw-duration: .15s;\n transition-duration: .15s;\n }\n\n .duration-200 {\n --tw-duration: .2s;\n transition-duration: .2s;\n }\n\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .\\[font-variation-settings\\:\\'FILL\\'_0\\,\\'wght\\'_400\\,\\'GRAD\\'_0\\,\\'opsz\\'_24\\] {\n font-variation-settings: \"FILL\" 0,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;\n }\n\n .\\[font-variation-settings\\:\\'FILL\\'_1\\,\\'wght\\'_400\\,\\'GRAD\\'_0\\,\\'opsz\\'_24\\] {\n font-variation-settings: \"FILL\" 1,\"wght\" 400,\"GRAD\" 0,\"opsz\" 24;\n }\n\n @media (hover: hover) {\n .group-hover\\:translate-x-0:is(:where(.group):hover *) {\n --tw-translate-x: 0;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n\n .group-hover\\:rotate-15:is(:where(.group):hover *) {\n rotate: 15deg;\n }\n\n .group-hover\\:font-semibold:is(:where(.group):hover *) {\n --tw-font-weight: var(--font-weight-semibold);\n font-weight: var(--font-weight-semibold);\n }\n\n .group-hover\\:text-\\(--axebow-primary\\):is(:where(.group):hover *) {\n color: var(--axebow-primary);\n }\n\n .group-hover\\:opacity-100:is(:where(.group):hover *) {\n opacity: 1;\n }\n\n .hover\\:rounded-lg:hover {\n border-radius: var(--radius-lg);\n }\n\n .hover\\:border-\\(--axebow-tertiary\\):hover {\n border-color: var(--axebow-tertiary);\n }\n\n .hover\\:bg-\\(--axebow-base\\):hover {\n background-color: var(--axebow-base);\n }\n\n .hover\\:bg-\\(--axebow-light-gray\\):hover {\n background-color: var(--axebow-light-gray);\n }\n\n .hover\\:bg-\\[\\#344966\\]:hover {\n background-color: #344966;\n }\n\n .hover\\:bg-\\[var\\(--axebow-anti-flash-white\\)\\]:hover {\n background-color: var(--axebow-anti-flash-white);\n }\n\n .hover\\:bg-gray-100:hover {\n background-color: var(--color-gray-100);\n }\n\n .hover\\:bg-gray-200:hover {\n background-color: var(--color-gray-200);\n }\n\n .hover\\:bg-white:hover {\n background-color: var(--color-white);\n }\n\n .hover\\:text-\\(--axebow-tertiary\\):hover {\n color: var(--axebow-tertiary);\n }\n\n .hover\\:text-\\[\\#344966\\]:hover {\n color: #344966;\n }\n\n .hover\\:text-\\[var\\(--axebow-gray\\)\\]:hover {\n color: var(--axebow-gray);\n }\n\n .hover\\:underline:hover {\n text-decoration-line: underline;\n }\n\n .hover\\:opacity-80:hover {\n opacity: .8;\n }\n\n .hover\\:opacity-100:hover {\n opacity: 1;\n }\n\n .hover\\:shadow-\\[0_2px_6px_rgba\\(13\\,24\\,33\\,0\\.14\\)\\]:hover {\n --tw-shadow: 0 2px 6px var(--tw-shadow-color, #0d182124);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n\n .hover\\:shadow-\\[0_4px_12px_0_rgba\\(13\\,24\\,33\\,0\\.08\\)\\]:hover {\n --tw-shadow: 0 4px 12px 0 var(--tw-shadow-color, #0d182114);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n }\n\n .disabled\\:pointer-events-none:disabled {\n pointer-events: none;\n }\n\n .disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n }\n\n .disabled\\:opacity-50:disabled {\n opacity: .5;\n }\n\n @media (min-width: 48rem) {\n .md\\:gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n }\n}\n\n:host {\n font-family: var(--font-sans);\n font-size: var(--text-base);\n line-height: var(--text-base--line-height);\n --font-sans: \"Open Sans\", sans-serif;\n --text-xs: .625rem;\n --text-xs--line-height: .875rem;\n --text-sm: .75rem;\n --text-sm--line-height: 1rem;\n --text-base: .875rem;\n --text-base--line-height: 1.25rem;\n --text-md: 1rem;\n --text-md--line-height: 1.5rem;\n --text-lg: 1.125rem;\n --text-lg--line-height: 1.75rem;\n --text-xl: 1.25rem;\n --text-xl--line-height: 1.75rem;\n --text-2xl: 1.5rem;\n --text-2xl--line-height: 2rem;\n --text-3xl: 1.875rem;\n --text-3xl--line-height: 2.25rem;\n --text-4xl: 2.25rem;\n --text-4xl--line-height: 2.5rem;\n --text-5xl: 3rem;\n --text-5xl--line-height: 1;\n --text-6xl: 3.75rem;\n --text-6xl--line-height: 1;\n --text-7xl: 4.5rem;\n --text-7xl--line-height: 1;\n --text-8xl: 4.625rem;\n --text-8xl--line-height: 1;\n --text-9xl: 6.125rem;\n --text-9xl--line-height: 1;\n}\n\n:root {\n --sl-font-sans: \"Open Sans\", sans-serif;\n --sl-font-size-2x-small: var(--text-xs);\n --sl-font-size-x-small: var(--text-xs);\n --sl-font-size-small: var(--text-sm);\n --sl-font-size-medium: var(--text-base);\n --sl-font-size-large: var(--text-md);\n --sl-font-size-x-large: var(--text-lg);\n --sl-font-size-2x-large: var(--text-xl);\n --sl-font-size-3x-large: var(--text-3xl);\n --sl-font-size-4x-large: var(--text-5xl);\n --sl-input-font-size-small: var(--text-sm);\n --sl-input-font-size-medium: var(--text-base);\n --sl-input-font-size-large: var(--text-md);\n --sl-button-font-size-small: var(--text-sm);\n --sl-button-font-size-medium: var(--text-base);\n --sl-button-font-size-large: var(--text-md);\n --sl-tooltip-font-size: var(--text-base);\n}\n\nbutton, input, select, textarea {\n font-family: inherit;\n font-size: inherit;\n}\n\ninput, select, textarea, sl-menu-item::part(label), sl-option::part(label) {\n font-size: var(--text-base);\n}\n\n.axebow-blue-button::part(base) {\n background-color: var(--axebow-tertiary);\n}\n\n.info-container-page {\n flex-wrap: wrap;\n gap: 2rem;\n display: flex;\n}\n\nsl-divider {\n background: var(--axebow-light-gray);\n height: 1px;\n margin-top: .5rem;\n margin-bottom: .5rem;\n}\n\n.axebow-shadow {\n box-shadow: 2px 2px 25px #0000001a;\n}\n\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-rotate-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-rotate-z {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-x {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-skew-y {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-leading {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0;\n}\n\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n\n@property --tw-blur {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-brightness {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-contrast {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-grayscale {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-hue-rotate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-invert {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-opacity {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-saturate {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-sepia {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-color {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-drop-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n\n@property --tw-drop-shadow-size {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-duration {\n syntax: \"*\";\n inherits: false\n}\n\n@property --tw-ease {\n syntax: \"*\";\n inherits: false\n}\n";
114
114
  //#endregion
115
115
  //#region \0@oxc-project+runtime@0.139.0/helpers/esm/decorate.js
116
116
  function __decorate(decorators, target, key, desc) {
@@ -880,6 +880,66 @@ var AxebowFooter = class AxebowFooter extends LitElement {
880
880
  __decorate([property({ type: Array })], AxebowFooter.prototype, "links", void 0);
881
881
  AxebowFooter = __decorate([customElement("axebow-footer")], AxebowFooter);
882
882
  //#endregion
883
+ //#region src/components/axebow-breadcrumb-header/axebow-breadcrumb-header.ts
884
+ var AxebowBreadcrumbHeader = class AxebowBreadcrumbHeader extends LitElement {
885
+ constructor(..._args) {
886
+ super(..._args);
887
+ this.padded = false;
888
+ this.showHomeBlock = true;
889
+ this.onHomeClick = () => {};
890
+ this.showSecondaryPages = false;
891
+ this.secondaryPages = [];
892
+ this.mainPage = "";
893
+ this.showRequiredField = false;
894
+ this.requiredFieldLabel = "";
895
+ }
896
+ static {
897
+ this.styles = [unsafeCSS(tailwind_default), css`
898
+ :host {
899
+ display: block;
900
+ width: 100%;
901
+ }
902
+ `];
903
+ }
904
+ render() {
905
+ return html`
906
+ <div class="flex flex-col gap-1 ${this.padded ? "ps-8" : ""}">
907
+ <div class="flex flex-wrap items-center gap-2 text-xl text-[#344966]">
908
+ ${this.showHomeBlock ? html`
909
+ <span class="flex items-center gap-2 cursor-pointer" @click=${() => this.onHomeClick()}>
910
+ <axebow-icon iconName="home" iconColor="#344966" size="medium"></axebow-icon>
911
+ <span class="font-normal">/</span>
912
+ </span>
913
+ ` : ""}
914
+ ${this.showSecondaryPages ? this.secondaryPages.map((page) => html`
915
+ <span
916
+ class="font-normal ${page.onClick ? "cursor-pointer hover:underline" : ""}"
917
+ @click=${page.onClick ? () => page.onClick() : void 0}
918
+ >${page.label} /</span
919
+ >
920
+ `) : ""}
921
+ <span class="font-semibold">${this.mainPage}</span>
922
+ </div>
923
+ ${this.showRequiredField ? html`
924
+ <div class="text-sm">
925
+ <span class="font-bold text-(--axebow-error)">*</span>
926
+ <span class="font-normal text-(--axebow-rich-black)"> ${this.requiredFieldLabel}</span>
927
+ </div>
928
+ ` : ""}
929
+ </div>
930
+ `;
931
+ }
932
+ };
933
+ __decorate([property({ type: Boolean })], AxebowBreadcrumbHeader.prototype, "padded", void 0);
934
+ __decorate([property({ type: Boolean })], AxebowBreadcrumbHeader.prototype, "showHomeBlock", void 0);
935
+ __decorate([property({ attribute: false })], AxebowBreadcrumbHeader.prototype, "onHomeClick", void 0);
936
+ __decorate([property({ type: Boolean })], AxebowBreadcrumbHeader.prototype, "showSecondaryPages", void 0);
937
+ __decorate([property({ type: Array })], AxebowBreadcrumbHeader.prototype, "secondaryPages", void 0);
938
+ __decorate([property({ type: String })], AxebowBreadcrumbHeader.prototype, "mainPage", void 0);
939
+ __decorate([property({ type: Boolean })], AxebowBreadcrumbHeader.prototype, "showRequiredField", void 0);
940
+ __decorate([property({ type: String })], AxebowBreadcrumbHeader.prototype, "requiredFieldLabel", void 0);
941
+ AxebowBreadcrumbHeader = __decorate([customElement("axebow-breadcrumb-header")], AxebowBreadcrumbHeader);
942
+ //#endregion
883
943
  //#region src/components/axebow-more-actions/axebow-more-actions.ts
884
944
  var AxebowMoreActions = class AxebowMoreActions extends LitElement {
885
945
  constructor(..._args) {
@@ -2244,6 +2304,6 @@ __decorate([property({ type: String })], AxebowCardSpecialLink.prototype, "color
2244
2304
  __decorate([property({ type: String })], AxebowCardSpecialLink.prototype, "icon", void 0);
2245
2305
  AxebowCardSpecialLink = __decorate([customElement("axebow-card-special-link")], AxebowCardSpecialLink);
2246
2306
  //#endregion
2247
- export { AxebowBaseCard, AxebowCardActionBanner, AxebowCardAttentionBanner, AxebowCardCloudLogo, AxebowCardFilter, AxebowCardFilterItem, AxebowCardFooter, AxebowCardHeader, AxebowCardResourceRow, AxebowCardResourceTable, AxebowCardSpecialLink, AxebowCardStatItem, AxebowCardStatsRow, AxebowCardStatus, AxebowCardTableHeader, AxebowCardVersionSelector, AxebowFilterBar, AxebowFooter, AxebowHeader, AxebowIcon, AxebowMoreActions, AxebowRoleTooltip, AxebowSidebar, STATUS_COLORS, axebowTheme };
2307
+ export { AxebowBaseCard, AxebowBreadcrumbHeader, AxebowCardActionBanner, AxebowCardAttentionBanner, AxebowCardCloudLogo, AxebowCardFilter, AxebowCardFilterItem, AxebowCardFooter, AxebowCardHeader, AxebowCardResourceRow, AxebowCardResourceTable, AxebowCardSpecialLink, AxebowCardStatItem, AxebowCardStatsRow, AxebowCardStatus, AxebowCardTableHeader, AxebowCardVersionSelector, AxebowFilterBar, AxebowFooter, AxebowHeader, AxebowIcon, AxebowMoreActions, AxebowRoleTooltip, AxebowSidebar, STATUS_COLORS, axebowTheme };
2248
2308
 
2249
2309
  //# sourceMappingURL=index.js.map
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-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 class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36\" ?data-separate=${item.separate}>\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\n 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, 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-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 class=\"filter-bar-item flex flex-col gap-2 flex-1 min-w-36\" ?data-separate=${item.separate}>\n <h4 class=\"m-0 text-base font-semibold text-black\">${item.label}</h4>\n <sl-select\n 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 ${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 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.53",
3
+ "version": "0.0.54",
4
4
  "description": "Aurora web component library",
5
5
  "license": "ISC",
6
6
  "type": "module",