@kumori/aurora-wui-components 0.0.264-dev4114.4 → 0.0.264-dev4114.40

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.
Files changed (31) hide show
  1. package/dist/components/axebow-channel-config-panel/axebow-channel-config-panel.d.ts +3 -0
  2. package/dist/components/axebow-channel-config-panel/axebow-channel-config-panel.d.ts.map +1 -1
  3. package/dist/components/axebow-expandable-card/axebow-expandable-card.d.ts +6 -0
  4. package/dist/components/axebow-expandable-card/axebow-expandable-card.d.ts.map +1 -0
  5. package/dist/components/axebow-instances-table/axebow-instances-table.d.ts +56 -0
  6. package/dist/components/axebow-instances-table/axebow-instances-table.d.ts.map +1 -0
  7. package/dist/components/axebow-observability-container/axebow-observability-container.d.ts +49 -0
  8. package/dist/components/axebow-observability-container/axebow-observability-container.d.ts.map +1 -0
  9. package/dist/components/axebow-progress-bar/axebow-progress-bar.d.ts +11 -0
  10. package/dist/components/axebow-progress-bar/axebow-progress-bar.d.ts.map +1 -0
  11. package/dist/components/axebow-refresh-period-panel/axebow-refresh-period-panel.d.ts +20 -0
  12. package/dist/components/axebow-refresh-period-panel/axebow-refresh-period-panel.d.ts.map +1 -0
  13. package/dist/components/axebow-role-card/axebow-role-card.d.ts +18 -0
  14. package/dist/components/axebow-role-card/axebow-role-card.d.ts.map +1 -0
  15. package/dist/components/axebow-role-container-dropdown/axebow-role-container-dropdown.d.ts +41 -0
  16. package/dist/components/axebow-role-container-dropdown/axebow-role-container-dropdown.d.ts.map +1 -0
  17. package/dist/components/axebow-tenants-table/axebow-tenants-table.d.ts +34 -0
  18. package/dist/components/axebow-tenants-table/axebow-tenants-table.d.ts.map +1 -0
  19. package/dist/components/axebow-time-range-panel/axebow-time-range-panel.d.ts +29 -0
  20. package/dist/components/axebow-time-range-panel/axebow-time-range-panel.d.ts.map +1 -0
  21. package/dist/components/axebow-undeploy-card/axebow-undeploy-card.d.ts +23 -0
  22. package/dist/components/axebow-undeploy-card/axebow-undeploy-card.d.ts.map +1 -0
  23. package/dist/components/axebow-underline-tab-selector/axebow-underline-tab-selector.d.ts +18 -0
  24. package/dist/components/axebow-underline-tab-selector/axebow-underline-tab-selector.d.ts.map +1 -0
  25. package/dist/components/axebow-usage-tooltip/axebow-usage-tooltip.d.ts +13 -0
  26. package/dist/components/axebow-usage-tooltip/axebow-usage-tooltip.d.ts.map +1 -0
  27. package/dist/index.d.ts +12 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +1961 -482
  30. package/dist/index.js.map +1 -1
  31. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -26,6 +26,7 @@ import Chart from "chart.js/auto";
26
26
  import { unsafeHTML } from "lit/directives/unsafe-html.js";
27
27
  import "@shoelace-style/shoelace/dist/components/icon-button/icon-button.js";
28
28
  import "@shoelace-style/shoelace/dist/components/card/card.js";
29
+ import "@shoelace-style/shoelace/dist/components/progress-bar/progress-bar.js";
29
30
  //#region src/styles/axebow-theme.ts
30
31
  var axebowTheme = css`
31
32
  :host, .theme {
@@ -125,7 +126,7 @@ var STATUS_COLORS = {
125
126
  };
126
127
  //#endregion
127
128
  //#region src/styles/tailwind.css?inline
128
- 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-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: 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 --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\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-red-50: oklch(97.1% .013 17.38);\n --color-red-200: oklch(88.5% .062 18.334);\n --color-red-300: oklch(80.8% .114 19.571);\n --color-red-500: oklch(63.7% .237 25.331);\n --color-red-600: oklch(57.7% .245 27.325);\n --color-yellow-50: oklch(98.7% .026 102.212);\n --color-yellow-200: oklch(94.5% .129 101.54);\n --color-yellow-600: oklch(68.1% .162 75.834);\n --color-yellow-800: oklch(47.6% .114 61.907);\n --color-green-50: oklch(98.2% .018 155.826);\n --color-green-200: oklch(92.5% .084 155.995);\n --color-green-600: oklch(62.7% .194 149.214);\n --color-green-800: oklch(44.8% .119 151.328);\n --color-sky-50: oklch(97.7% .013 236.62);\n --color-sky-100: oklch(95.1% .026 236.824);\n --color-blue-50: oklch(97% .014 254.604);\n --color-blue-100: oklch(93.2% .032 255.585);\n --color-blue-200: oklch(88.2% .059 254.128);\n --color-blue-500: oklch(62.3% .214 259.815);\n --color-blue-600: oklch(54.6% .245 262.881);\n --color-blue-800: oklch(42.4% .199 265.638);\n --color-gray-50: oklch(98.5% .002 247.839);\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-gray-700: oklch(37.3% .034 259.733);\n --color-gray-900: oklch(21% .034 264.665);\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-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n --tracking-wider: .05em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-relaxed: 1.625;\n --radius-sm: .25rem;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --radius-2xl: 1rem;\n --ease-out: cubic-bezier(0, 0, .2, 1);\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 --text-md--line-height: 1.5rem;\n --spacing-30: 7.5rem;\n --spacing-38: 9.5rem;\n --spacing-43: 10.75rem;\n --spacing-50: 12.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 {\n top: var(--spacing);\n }\n\n .top-1\\/2 {\n top: 50%;\n }\n\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n\n .top-25 {\n top: calc(var(--spacing) * 25);\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-1 {\n right: var(--spacing);\n }\n\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n\n .right-\\[calc\\(100\\%\\+10px\\)\\] {\n right: calc(100% + 10px);\n }\n\n .bottom-0 {\n bottom: 0;\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-50 {\n z-index: 50;\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 .row-1 {\n grid-row: 1;\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 .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n\n .mx-6 {\n margin-inline: calc(var(--spacing) * 6);\n }\n\n .mx-12 {\n margin-inline: calc(var(--spacing) * 12);\n }\n\n .mx-auto {\n margin-inline: auto;\n }\n\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * .5);\n }\n\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\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-1\\.75 {\n margin-top: calc(var(--spacing) * 1.75);\n }\n\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n\n .mt-2\\.25 {\n margin-top: calc(var(--spacing) * 2.25);\n }\n\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n\n .mt-4\\.5 {\n margin-top: calc(var(--spacing) * 4.5);\n }\n\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n\n .mr-0\\.5 {\n margin-right: calc(var(--spacing) * .5);\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-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n\n .mb-6\\.5 {\n margin-bottom: calc(var(--spacing) * 6.5);\n }\n\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n\n .ml-1 {\n margin-left: var(--spacing);\n }\n\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n\n .ml-12 {\n margin-left: calc(var(--spacing) * 12);\n }\n\n .ml-auto {\n margin-left: auto;\n }\n\n .box-border {\n box-sizing: border-box;\n }\n\n .box-content {\n box-sizing: content-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 .line-clamp-2 {\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .line-clamp-11 {\n -webkit-line-clamp: 11;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .\\!hidden {\n display: none !important;\n }\n\n .block {\n display: block;\n }\n\n .contents {\n display: contents;\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 {\n display: inline;\n }\n\n .inline-block {\n display: inline-block;\n }\n\n .inline-flex {\n display: inline-flex;\n }\n\n .table {\n display: table;\n }\n\n .aspect-square {\n aspect-ratio: 1;\n }\n\n .h-2 {\n height: calc(var(--spacing) * 2);\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 {\n height: calc(var(--spacing) * 3);\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-4\\.5 {\n height: calc(var(--spacing) * 4.5);\n }\n\n .h-4\\.25 {\n height: calc(var(--spacing) * 4.25);\n }\n\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n\n .h-5\\.5 {\n height: calc(var(--spacing) * 5.5);\n }\n\n .h-5\\.25 {\n height: calc(var(--spacing) * 5.25);\n }\n\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n\n .h-7\\.5 {\n height: calc(var(--spacing) * 7.5);\n }\n\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .h-8\\.5 {\n height: calc(var(--spacing) * 8.5);\n }\n\n .h-8\\.75 {\n height: calc(var(--spacing) * 8.75);\n }\n\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .h-9\\.5 {\n height: calc(var(--spacing) * 9.5);\n }\n\n .h-9\\.75 {\n height: calc(var(--spacing) * 9.75);\n }\n\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .h-10\\.5 {\n height: calc(var(--spacing) * 10.5);\n }\n\n .h-11 {\n height: calc(var(--spacing) * 11);\n }\n\n .h-11\\.5 {\n height: calc(var(--spacing) * 11.5);\n }\n\n .h-11\\.25 {\n height: calc(var(--spacing) * 11.25);\n }\n\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n\n .h-12\\.5 {\n height: calc(var(--spacing) * 12.5);\n }\n\n .h-12\\.25 {\n height: calc(var(--spacing) * 12.25);\n }\n\n .h-12\\.75 {\n height: calc(var(--spacing) * 12.75);\n }\n\n .h-14\\.25 {\n height: calc(var(--spacing) * 14.25);\n }\n\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n\n .h-17\\.75 {\n height: calc(var(--spacing) * 17.75);\n }\n\n .h-19\\.75 {\n height: calc(var(--spacing) * 19.75);\n }\n\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n\n .h-21\\.25 {\n height: calc(var(--spacing) * 21.25);\n }\n\n .h-24\\.75 {\n height: calc(var(--spacing) * 24.75);\n }\n\n .h-32\\.75 {\n height: calc(var(--spacing) * 32.75);\n }\n\n .h-49\\.5 {\n height: calc(var(--spacing) * 49.5);\n }\n\n .h-52\\.75 {\n height: calc(var(--spacing) * 52.75);\n }\n\n .h-57\\.5 {\n height: calc(var(--spacing) * 57.5);\n }\n\n .h-77\\.25 {\n height: calc(var(--spacing) * 77.25);\n }\n\n .h-\\[0\\.0625rem\\] {\n height: .0625rem;\n }\n\n .h-\\[8\\.26375rem\\] {\n height: 8.26375rem;\n }\n\n .h-auto {\n height: auto;\n }\n\n .h-fit {\n height: fit-content;\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-48 {\n max-height: calc(var(--spacing) * 48);\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-0 {\n min-height: 0;\n }\n\n .min-h-5 {\n min-height: calc(var(--spacing) * 5);\n }\n\n .min-h-9 {\n min-height: calc(var(--spacing) * 9);\n }\n\n .min-h-10 {\n min-height: calc(var(--spacing) * 10);\n }\n\n .min-h-12 {\n min-height: calc(var(--spacing) * 12);\n }\n\n .min-h-35 {\n min-height: calc(var(--spacing) * 35);\n }\n\n .min-h-102\\.5 {\n min-height: calc(var(--spacing) * 102.5);\n }\n\n .min-h-107\\.5 {\n min-height: calc(var(--spacing) * 107.5);\n }\n\n .min-h-113\\.25 {\n min-height: calc(var(--spacing) * 113.25);\n }\n\n .w-1\\/3 {\n width: 33.3333%;\n }\n\n .w-2 {\n width: calc(var(--spacing) * 2);\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-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n }\n\n .w-4\\.25 {\n width: calc(var(--spacing) * 4.25);\n }\n\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n\n .w-9\\.5 {\n width: calc(var(--spacing) * 9.5);\n }\n\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n\n .w-10\\.5 {\n width: calc(var(--spacing) * 10.5);\n }\n\n .w-11\\.5 {\n width: calc(var(--spacing) * 11.5);\n }\n\n .w-11\\.25 {\n width: calc(var(--spacing) * 11.25);\n }\n\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n\n .w-12\\.5 {\n width: calc(var(--spacing) * 12.5);\n }\n\n .w-15\\.25 {\n width: calc(var(--spacing) * 15.25);\n }\n\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n\n .w-17 {\n width: calc(var(--spacing) * 17);\n }\n\n .w-18\\.5 {\n width: calc(var(--spacing) * 18.5);\n }\n\n .w-18\\.75 {\n width: calc(var(--spacing) * 18.75);\n }\n\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n\n .w-20\\.5 {\n width: calc(var(--spacing) * 20.5);\n }\n\n .w-21\\.5 {\n width: calc(var(--spacing) * 21.5);\n }\n\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n\n .w-24\\.75 {\n width: calc(var(--spacing) * 24.75);\n }\n\n .w-26\\.25 {\n width: calc(var(--spacing) * 26.25);\n }\n\n .w-27 {\n width: calc(var(--spacing) * 27);\n }\n\n .w-27\\.5 {\n width: calc(var(--spacing) * 27.5);\n }\n\n .w-30 {\n width: var(--spacing-30);\n }\n\n .w-30\\.75 {\n width: calc(var(--spacing) * 30.75);\n }\n\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n\n .w-33\\.25 {\n width: calc(var(--spacing) * 33.25);\n }\n\n .w-35 {\n width: calc(var(--spacing) * 35);\n }\n\n .w-36 {\n width: calc(var(--spacing) * 36);\n }\n\n .w-40\\.25 {\n width: calc(var(--spacing) * 40.25);\n }\n\n .w-41 {\n width: calc(var(--spacing) * 41);\n }\n\n .w-41\\.75 {\n width: calc(var(--spacing) * 41.75);\n }\n\n .w-47\\.75 {\n width: calc(var(--spacing) * 47.75);\n }\n\n .w-56\\.5 {\n width: calc(var(--spacing) * 56.5);\n }\n\n .w-57\\.5 {\n width: calc(var(--spacing) * 57.5);\n }\n\n .w-60\\.5 {\n width: calc(var(--spacing) * 60.5);\n }\n\n .w-62\\.5 {\n width: calc(var(--spacing) * 62.5);\n }\n\n .w-63\\.75 {\n width: calc(var(--spacing) * 63.75);\n }\n\n .w-66 {\n width: calc(var(--spacing) * 66);\n }\n\n .w-70\\.5 {\n width: calc(var(--spacing) * 70.5);\n }\n\n .w-71 {\n width: calc(var(--spacing) * 71);\n }\n\n .w-87 {\n width: calc(var(--spacing) * 87);\n }\n\n .w-88\\.5 {\n width: calc(var(--spacing) * 88.5);\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-99\\.75 {\n width: calc(var(--spacing) * 99.75);\n }\n\n .w-100\\.5 {\n width: calc(var(--spacing) * 100.5);\n }\n\n .w-117 {\n width: var(--spacing-117);\n }\n\n .w-120 {\n width: var(--spacing-120);\n }\n\n .w-120\\.75 {\n width: calc(var(--spacing) * 120.75);\n }\n\n .w-121 {\n width: calc(var(--spacing) * 121);\n }\n\n .w-130\\.25 {\n width: calc(var(--spacing) * 130.25);\n }\n\n .w-131 {\n width: calc(var(--spacing) * 131);\n }\n\n .w-139 {\n width: calc(var(--spacing) * 139);\n }\n\n .w-194\\.25 {\n width: calc(var(--spacing) * 194.25);\n }\n\n .w-270 {\n width: calc(var(--spacing) * 270);\n }\n\n .w-282 {\n width: calc(var(--spacing) * 282);\n }\n\n .w-293\\.5 {\n width: calc(var(--spacing) * 293.5);\n }\n\n .w-294 {\n width: calc(var(--spacing) * 294);\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-auto {\n width: auto;\n }\n\n .w-full {\n width: 100%;\n }\n\n .w-px {\n width: 1px;\n }\n\n .max-w-36 {\n max-width: calc(var(--spacing) * 36);\n }\n\n .max-w-38 {\n max-width: var(--spacing-38);\n }\n\n .max-w-43 {\n max-width: var(--spacing-43);\n }\n\n .max-w-44 {\n max-width: calc(var(--spacing) * 44);\n }\n\n .max-w-51\\.5 {\n max-width: calc(var(--spacing) * 51.5);\n }\n\n .max-w-65 {\n max-width: calc(var(--spacing) * 65);\n }\n\n .max-w-194\\.25 {\n max-width: calc(var(--spacing) * 194.25);\n }\n\n .max-w-\\[23\\.75rem\\] {\n max-width: 23.75rem;\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-20 {\n min-width: calc(var(--spacing) * 20);\n }\n\n .min-w-30 {\n min-width: var(--spacing-30);\n }\n\n .min-w-32 {\n min-width: calc(var(--spacing) * 32);\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-50 {\n min-width: var(--spacing-50);\n }\n\n .min-w-55 {\n min-width: calc(var(--spacing) * 55);\n }\n\n .min-w-56 {\n min-width: calc(var(--spacing) * 56);\n }\n\n .min-w-160 {\n min-width: calc(var(--spacing) * 160);\n }\n\n .min-w-\\[8\\.2rem\\] {\n min-width: 8.2rem;\n }\n\n .min-w-fit {\n min-width: fit-content;\n }\n\n .flex-1 {\n flex: 1;\n }\n\n .flex-shrink {\n flex-shrink: 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 .scale-\\[1\\.02\\] {\n scale: 1.02;\n }\n\n .rotate-180 {\n rotate: 180deg;\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-grab {\n cursor: grab;\n }\n\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .cursor-pointer {\n cursor: pointer;\n }\n\n .cursor-text {\n cursor: text;\n }\n\n .touch-none {\n touch-action: none;\n }\n\n .resize {\n resize: both;\n }\n\n .appearance-none {\n appearance: none;\n }\n\n .grid-cols-\\[7\\.5rem_7\\.5rem_7\\.5rem\\] {\n grid-template-columns: 7.5rem 7.5rem 7.5rem;\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-baseline {\n align-items: baseline;\n }\n\n .items-center {\n align-items: center;\n }\n\n .items-end {\n align-items: flex-end;\n }\n\n .items-start {\n align-items: flex-start;\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 .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-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n\n .gap-1\\.25 {\n gap: calc(var(--spacing) * 1.25);\n }\n\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\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-5 {\n gap: calc(var(--spacing) * 5);\n }\n\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n .gap-8\\.75 {\n gap: calc(var(--spacing) * 8.75);\n }\n\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n\n .gap-19 {\n gap: calc(var(--spacing) * 19);\n }\n\n .gap-\\[2\\%\\] {\n gap: 2%;\n }\n\n :where(.space-y-1 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));\n margin-block-end: calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-2 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-3 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\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-x-4 {\n column-gap: calc(var(--spacing) * 4);\n }\n\n .gap-x-6 {\n column-gap: calc(var(--spacing) * 6);\n }\n\n .gap-y-1 {\n row-gap: var(--spacing);\n }\n\n .gap-y-\\[0\\.1875rem\\] {\n row-gap: .1875rem;\n }\n\n .self-end {\n align-self: flex-end;\n }\n\n .truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .overflow-auto {\n overflow: auto;\n }\n\n .overflow-hidden {\n overflow: hidden;\n }\n\n .overflow-visible {\n overflow: visible;\n }\n\n .overflow-x-auto {\n overflow-x: auto;\n }\n\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n\n .overflow-y-auto {\n overflow-y: auto;\n }\n\n .overflow-y-hidden {\n overflow-y: hidden;\n }\n\n .rounded {\n border-radius: .25rem;\n }\n\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n\n .rounded-\\[0\\.3125rem\\] {\n border-radius: .3125rem;\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-none {\n border-radius: 0;\n }\n\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\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-t-xl {\n border-top-left-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\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-tl-xl {\n border-top-left-radius: var(--radius-xl);\n }\n\n .rounded-r-md {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n\n .rounded-tr-xl {\n border-top-right-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 .rounded-b-xl {\n border-bottom-right-radius: var(--radius-xl);\n border-bottom-left-radius: var(--radius-xl);\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-0 {\n border-top-style: var(--tw-border-style);\n border-top-width: 0;\n }\n\n .border-t-4 {\n border-top-style: var(--tw-border-style);\n border-top-width: 4px;\n }\n\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n\n .border-r-0 {\n border-right-style: var(--tw-border-style);\n border-right-width: 0;\n }\n\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .border-b-0 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0;\n }\n\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n\n .border-l-0 {\n border-left-style: var(--tw-border-style);\n border-left-width: 0;\n }\n\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\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-border-gray\\) {\n border-color: var(--axebow-border-gray);\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-premium-text\\) {\n border-color: var(--axebow-premium-text);\n }\n\n .border-\\(--axebow-primary\\) {\n border-color: var(--axebow-primary);\n }\n\n .border-\\(--axebow-secondary\\) {\n border-color: var(--axebow-secondary);\n }\n\n .border-\\(--axebow-table-border\\) {\n border-color: var(--axebow-table-border);\n }\n\n .border-\\(--axebow-table-header-border\\) {\n border-color: var(--axebow-table-header-border);\n }\n\n .border-\\(--axebow-tertiary\\) {\n border-color: var(--axebow-tertiary);\n }\n\n .border-\\[\\#344966\\] {\n border-color: #344966;\n }\n\n .border-\\[\\#DBDDE4\\] {\n border-color: #dbdde4;\n }\n\n .border-\\[var\\(--axebow-error\\)\\] {\n border-color: var(--axebow-error);\n }\n\n .border-\\[var\\(--axebow-gray\\)\\] {\n border-color: var(--axebow-gray);\n }\n\n .border-\\[var\\(--axebow-tertiary\\)\\] {\n border-color: var(--axebow-tertiary);\n }\n\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n\n .border-gray-400 {\n border-color: var(--color-gray-400);\n }\n\n .border-gray-500 {\n border-color: var(--color-gray-500);\n }\n\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n\n .border-transparent {\n border-color: #0000;\n }\n\n .border-white {\n border-color: var(--color-white);\n }\n\n .border-yellow-200 {\n border-color: var(--color-yellow-200);\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\\), .bg-\\(--axebow-light-gray\\)\\/80 {\n background-color: var(--axebow-light-gray);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-\\(--axebow-light-gray\\)\\/80 {\n background-color: color-mix(in oklab, var(--axebow-light-gray) 80%, transparent);\n }\n }\n\n .bg-\\(--axebow-primary\\) {\n background-color: var(--axebow-primary);\n }\n\n .bg-\\(--axebow-primary-light\\) {\n background-color: var(--axebow-primary-light);\n }\n\n .bg-\\(--axebow-success\\) {\n background-color: var(--axebow-success);\n }\n\n .bg-\\(--axebow-tertiary\\), .bg-\\(--axebow-tertiary\\)\\/15 {\n background-color: var(--axebow-tertiary);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-\\(--axebow-tertiary\\)\\/15 {\n background-color: color-mix(in oklab, var(--axebow-tertiary) 15%, transparent);\n }\n }\n\n .bg-\\(--axebow-warning\\) {\n background-color: var(--axebow-warning);\n }\n\n .bg-\\(--axebow-white\\) {\n background-color: var(--axebow-white);\n }\n\n .bg-\\[\\#006BFF\\] {\n background-color: #006bff;\n }\n\n .bg-\\[\\#C7DCFA\\] {\n background-color: #c7dcfa;\n }\n\n .bg-\\[\\#F0F1F5\\] {\n background-color: #f0f1f5;\n }\n\n .bg-\\[var\\(--axebow-gray\\)\\] {\n background-color: var(--axebow-gray);\n }\n\n .bg-\\[var\\(--axebow-tertiary\\)\\] {\n background-color: var(--axebow-tertiary);\n }\n\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .bg-gray-50\\/50 {\n background-color: #f9fafb80;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-50\\/50 {\n background-color: color-mix(in oklab, var(--color-gray-50) 50%, transparent);\n }\n }\n\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n\n .bg-gray-200 {\n background-color: var(--color-gray-200);\n }\n\n .bg-gray-300 {\n background-color: var(--color-gray-300);\n }\n\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n\n .bg-sky-50 {\n background-color: var(--color-sky-50);\n }\n\n .bg-sky-100 {\n background-color: var(--color-sky-100);\n }\n\n .bg-transparent {\n background-color: #0000;\n }\n\n .bg-white {\n background-color: var(--color-white);\n }\n\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n\n .object-contain {\n object-fit: contain;\n }\n\n .p-0 {\n padding: 0;\n }\n\n .p-1 {\n padding: var(--spacing);\n }\n\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n\n .p-3\\.25 {\n padding: calc(var(--spacing) * 3.25);\n }\n\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * .5);\n }\n\n .px-1 {\n padding-inline: var(--spacing);\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 .px-6 {\n padding-inline: calc(var(--spacing) * 6);\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\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\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-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n\n .py-2\\.75 {\n padding-block: calc(var(--spacing) * 2.75);\n }\n\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n\n .py-4\\.75 {\n padding-block: calc(var(--spacing) * 4.75);\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-1 {\n padding-top: var(--spacing);\n }\n\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n\n .pt-px {\n padding-top: 1px;\n }\n\n .pr-1 {\n padding-right: var(--spacing);\n }\n\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n\n .pr-4\\.5 {\n padding-right: calc(var(--spacing) * 4.5);\n }\n\n .pr-5 {\n padding-right: calc(var(--spacing) * 5);\n }\n\n .pb-0 {\n padding-bottom: 0;\n }\n\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n\n .pb-3\\.5 {\n padding-bottom: calc(var(--spacing) * 3.5);\n }\n\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n\n .pl-1 {\n padding-left: var(--spacing);\n }\n\n .pl-1\\.5 {\n padding-left: calc(var(--spacing) * 1.5);\n }\n\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n\n .pl-11\\.75 {\n padding-left: calc(var(--spacing) * 11.75);\n }\n\n .pl-px {\n padding-left: 1px;\n }\n\n .text-center {\n text-align: center;\n }\n\n .text-left {\n text-align: left;\n }\n\n .text-right {\n text-align: right;\n }\n\n .text-start {\n text-align: start;\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 .font-\\[inherit\\] {\n font-family: inherit;\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-md {\n font-size: var(--text-md);\n line-height: var(--tw-leading, var(--text-md--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 .text-\\[0\\.9375rem\\] {\n font-size: .9375rem;\n }\n\n .text-\\[18px\\] {\n font-size: 18px;\n }\n\n .leading-3\\.5 {\n --tw-leading: calc(var(--spacing) * 3.5);\n line-height: calc(var(--spacing) * 3.5);\n }\n\n .leading-4\\.25 {\n --tw-leading: calc(var(--spacing) * 4.25);\n line-height: calc(var(--spacing) * 4.25);\n }\n\n .leading-\\[1\\.125rem\\] {\n --tw-leading: 1.125rem;\n line-height: 1.125rem;\n }\n\n .leading-\\[1\\.0625rem\\] {\n --tw-leading: 1.0625rem;\n line-height: 1.0625rem;\n }\n\n .leading-\\[1\\.21875rem\\] {\n --tw-leading: 1.21875rem;\n line-height: 1.21875rem;\n }\n\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\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-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\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 .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n\n .wrap-break-word {\n overflow-wrap: break-word;\n }\n\n .break-all {\n word-break: break-all;\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-black\\) {\n color: var(--axebow-black);\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-strong-gray\\) {\n color: var(--axebow-strong-gray);\n }\n\n .text-\\(--axebow-tertiary\\) {\n color: var(--axebow-tertiary);\n }\n\n .text-\\[\\#006BFF\\] {\n color: #006bff;\n }\n\n .text-\\[\\#78787A\\] {\n color: #78787a;\n }\n\n .text-\\[\\#344966\\] {\n color: #344966;\n }\n\n .text-\\[\\#E93A3A\\] {\n color: #e93a3a;\n }\n\n .text-\\[var\\(--axebow-error\\)\\] {\n color: var(--axebow-error);\n }\n\n .text-\\[var\\(--axebow-gray\\)\\] {\n color: var(--axebow-gray);\n }\n\n .text-black {\n color: var(--color-black);\n }\n\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n\n .text-gray-300 {\n color: var(--color-gray-300);\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-gray-700 {\n color: var(--color-gray-700);\n }\n\n .text-gray-900 {\n color: var(--color-gray-900);\n }\n\n .text-green-600 {\n color: var(--color-green-600);\n }\n\n .text-green-800 {\n color: var(--color-green-800);\n }\n\n .text-inherit {\n color: inherit;\n }\n\n .text-red-500 {\n color: var(--color-red-500);\n }\n\n .text-white {\n color: var(--color-white);\n }\n\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n\n .capitalize {\n text-transform: capitalize;\n }\n\n .uppercase {\n text-transform: uppercase;\n }\n\n .italic {\n font-style: italic;\n }\n\n .no-underline {\n text-decoration-line: none;\n }\n\n .underline {\n text-decoration-line: underline;\n }\n\n .decoration-\\(--axebow-error\\) {\n -webkit-text-decoration-color: var(--axebow-error);\n -webkit-text-decoration-color: var(--axebow-error);\n text-decoration-color: var(--axebow-error);\n }\n\n .placeholder-gray-400::placeholder {\n color: var(--color-gray-400);\n }\n\n .opacity-0 {\n opacity: 0;\n }\n\n .opacity-40 {\n opacity: .4;\n }\n\n .opacity-50 {\n opacity: .5;\n }\n\n .opacity-60 {\n opacity: .6;\n }\n\n .opacity-70 {\n opacity: .7;\n }\n\n .opacity-100 {\n opacity: 1;\n }\n\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px 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-\\[0_-8px_8px_-8px_rgba\\(13\\,24\\,33\\,0\\.15\\)\\] {\n --tw-shadow: 0 -8px 8px -8px var(--tw-shadow-color, #0d182126);\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-\\[0_2px_6px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\] {\n --tw-shadow: 0 2px 6px var(--tw-shadow-color, #0003);\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-\\[0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\] {\n --tw-shadow: 0 4px 12px 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-\\[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 .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px 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-none {\n --tw-shadow: 0 0 #0000;\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-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px 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 .axebow-shadow-hover {\n transition: box-shadow .2s ease-in-out;\n }\n\n .axebow-shadow-hover:hover {\n box-shadow: 0 4px 12px #0d182114;\n }\n\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .blur {\n --tw-blur: blur(8px);\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 .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-\\[filter\\] {\n transition-property: filter;\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 .delay-100 {\n transition-delay: .1s;\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 .duration-300 {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n .select-none {\n -webkit-user-select: none;\n user-select: none;\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\\:text-red-500:is(:where(.group):hover *) {\n color: var(--color-red-500);\n }\n\n .group-hover\\:opacity-100:is(:where(.group):hover *) {\n opacity: 1;\n }\n\n .group-hover\\:invert:is(:where(.group):hover *) {\n --tw-invert: invert(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\n .last\\:border-b-0:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0;\n }\n\n .focus-within\\:border-\\(--axebow-tertiary\\):focus-within {\n border-color: var(--axebow-tertiary);\n }\n\n .focus-within\\:border-blue-500:focus-within {\n border-color: var(--color-blue-500);\n }\n\n .focus-within\\:ring-2:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\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 .focus-within\\:ring-blue-100:focus-within {\n --tw-ring-color: var(--color-blue-100);\n }\n\n @media (hover: hover) {\n .hover\\:scale-105:hover {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .hover\\:rounded-md:hover {\n border-radius: var(--radius-md);\n }\n\n .hover\\:border-2:hover {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .hover\\:border-solid:hover {\n --tw-border-style: solid;\n border-style: solid;\n }\n\n .hover\\:border-\\(--axebow-gray\\):hover {\n border-color: var(--axebow-gray);\n }\n\n .hover\\:border-\\(--axebow-primary\\):hover {\n border-color: var(--axebow-primary);\n }\n\n .hover\\:border-\\(--axebow-tertiary\\):hover, .hover\\:border-\\[var\\(--axebow-tertiary\\)\\]:hover {\n border-color: var(--axebow-tertiary);\n }\n\n .hover\\:border-red-300:hover {\n border-color: var(--color-red-300);\n }\n\n .hover\\:bg-\\(--axebow-anti-flash-white\\):hover {\n background-color: var(--axebow-anti-flash-white);\n }\n\n .hover\\:bg-\\(--axebow-base\\):hover {\n background-color: var(--axebow-base);\n }\n\n .hover\\:bg-\\(--axebow-gray\\):hover {\n background-color: var(--axebow-gray);\n }\n\n .hover\\:bg-\\(--axebow-light-gray\\):hover {\n background-color: var(--axebow-light-gray);\n }\n\n .hover\\:bg-\\(--axebow-primary\\):hover {\n background-color: var(--axebow-primary);\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-50:hover {\n background-color: var(--color-gray-50);\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-red-50:hover {\n background-color: var(--color-red-50);\n }\n\n .hover\\:bg-white:hover {\n background-color: var(--color-white);\n }\n\n .hover\\:px-\\[1\\.375rem\\]:hover {\n padding-inline: 1.375rem;\n }\n\n .hover\\:text-\\(--axebow-gray\\):hover {\n color: var(--axebow-gray);\n }\n\n .hover\\:text-\\(--axebow-primary\\):hover {\n color: var(--axebow-primary);\n }\n\n .hover\\:text-\\(--axebow-tertiary\\):hover {\n color: var(--axebow-tertiary);\n }\n\n .hover\\:text-\\[var\\(--axebow-gray\\)\\]:hover {\n color: var(--axebow-gray);\n }\n\n .hover\\:text-black:hover {\n color: var(--color-black);\n }\n\n .hover\\:text-gray-700:hover {\n color: var(--color-gray-700);\n }\n\n .hover\\:text-red-600:hover {\n color: var(--color-red-600);\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 .hover\\:shadow-lg:hover {\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\n .focus\\:outline-2:focus {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n\n .focus\\:outline-offset-1:focus {\n outline-offset: 1px;\n }\n\n .focus\\:outline-blue-500:focus {\n outline-color: var(--color-blue-500);\n }\n\n .focus\\:outline-none:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n .focus-visible\\:ring-2:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\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 .focus-visible\\:ring-\\[\\#006BFF\\]:focus-visible {\n --tw-ring-color: #006bff;\n }\n\n .focus-visible\\:outline-2:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n\n .focus-visible\\:outline-\\(--axebow-tertiary\\):focus-visible {\n outline-color: var(--axebow-tertiary);\n }\n\n .active\\:cursor-grabbing:active {\n cursor: grabbing;\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 @media (min-width: 64rem) {\n .lg\\:sticky {\n position: sticky;\n }\n\n .lg\\:block {\n display: block;\n }\n\n .lg\\:flex {\n display: flex;\n }\n\n .lg\\:hidden {\n display: none;\n }\n\n .lg\\:inline {\n display: inline;\n }\n\n .lg\\:min-h-\\(--card-height\\) {\n min-height: var(--card-height);\n }\n\n .lg\\:min-h-\\[calc\\(100vh-6\\.25rem\\)\\] {\n min-height: calc(100vh - 6.25rem);\n }\n\n .lg\\:w-\\(--card-width\\) {\n width: var(--card-width);\n }\n\n .lg\\:cursor-default {\n cursor: default;\n }\n\n .lg\\:rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .lg\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .lg\\:text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n\n .lg\\:text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n\n .lg\\:shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px 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}\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-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\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-tracking {\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\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n";
129
+ 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-space-y-reverse: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-tracking: 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 --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-scale-z: 1;\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-red-50: oklch(97.1% .013 17.38);\n --color-red-100: oklch(93.6% .032 17.717);\n --color-red-200: oklch(88.5% .062 18.334);\n --color-red-300: oklch(80.8% .114 19.571);\n --color-red-500: oklch(63.7% .237 25.331);\n --color-red-600: oklch(57.7% .245 27.325);\n --color-red-800: oklch(44.4% .177 26.899);\n --color-yellow-50: oklch(98.7% .026 102.212);\n --color-yellow-200: oklch(94.5% .129 101.54);\n --color-yellow-600: oklch(68.1% .162 75.834);\n --color-yellow-800: oklch(47.6% .114 61.907);\n --color-green-50: oklch(98.2% .018 155.826);\n --color-green-200: oklch(92.5% .084 155.995);\n --color-green-600: oklch(62.7% .194 149.214);\n --color-green-800: oklch(44.8% .119 151.328);\n --color-sky-50: oklch(97.7% .013 236.62);\n --color-sky-100: oklch(95.1% .026 236.824);\n --color-blue-50: oklch(97% .014 254.604);\n --color-blue-100: oklch(93.2% .032 255.585);\n --color-blue-200: oklch(88.2% .059 254.128);\n --color-blue-500: oklch(62.3% .214 259.815);\n --color-blue-600: oklch(54.6% .245 262.881);\n --color-blue-800: oklch(42.4% .199 265.638);\n --color-gray-50: oklch(98.5% .002 247.839);\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-gray-700: oklch(37.3% .034 259.733);\n --color-gray-900: oklch(21% .034 264.665);\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-light: 300;\n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n --font-weight-black: 900;\n --tracking-wider: .05em;\n --leading-tight: 1.25;\n --leading-snug: 1.375;\n --leading-relaxed: 1.625;\n --radius-sm: .25rem;\n --radius-md: .375rem;\n --radius-lg: .5rem;\n --radius-xl: .75rem;\n --radius-2xl: 1rem;\n --ease-out: cubic-bezier(0, 0, .2, 1);\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 --text-md--line-height: 1.5rem;\n --spacing-30: 7.5rem;\n --spacing-38: 9.5rem;\n --spacing-43: 10.75rem;\n --spacing-50: 12.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-auto {\n pointer-events: auto;\n }\n\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 {\n top: var(--spacing);\n }\n\n .top-1\\/2 {\n top: 50%;\n }\n\n .top-3 {\n top: calc(var(--spacing) * 3);\n }\n\n .top-25 {\n top: calc(var(--spacing) * 25);\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-1 {\n right: var(--spacing);\n }\n\n .right-1\\.5 {\n right: calc(var(--spacing) * 1.5);\n }\n\n .right-3 {\n right: calc(var(--spacing) * 3);\n }\n\n .right-\\[calc\\(100\\%\\+10px\\)\\] {\n right: calc(100% + 10px);\n }\n\n .bottom-0 {\n bottom: 0;\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-50 {\n z-index: 50;\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 .row-1 {\n grid-row: 1;\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 .mx-2 {\n margin-inline: calc(var(--spacing) * 2);\n }\n\n .mx-6 {\n margin-inline: calc(var(--spacing) * 6);\n }\n\n .mx-12 {\n margin-inline: calc(var(--spacing) * 12);\n }\n\n .mx-auto {\n margin-inline: auto;\n }\n\n .my-0\\.5 {\n margin-block: calc(var(--spacing) * .5);\n }\n\n .my-2 {\n margin-block: calc(var(--spacing) * 2);\n }\n\n .my-4 {\n margin-block: calc(var(--spacing) * 4);\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-1\\.75 {\n margin-top: calc(var(--spacing) * 1.75);\n }\n\n .mt-2 {\n margin-top: calc(var(--spacing) * 2);\n }\n\n .mt-2\\.25 {\n margin-top: calc(var(--spacing) * 2.25);\n }\n\n .mt-3 {\n margin-top: calc(var(--spacing) * 3);\n }\n\n .mt-4 {\n margin-top: calc(var(--spacing) * 4);\n }\n\n .mt-4\\.5 {\n margin-top: calc(var(--spacing) * 4.5);\n }\n\n .mt-5 {\n margin-top: calc(var(--spacing) * 5);\n }\n\n .mt-6 {\n margin-top: calc(var(--spacing) * 6);\n }\n\n .mt-6\\.75 {\n margin-top: calc(var(--spacing) * 6.75);\n }\n\n .mt-8 {\n margin-top: calc(var(--spacing) * 8);\n }\n\n .mr-0\\.5 {\n margin-right: calc(var(--spacing) * .5);\n }\n\n .mr-1 {\n margin-right: var(--spacing);\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-1\\.5 {\n margin-bottom: calc(var(--spacing) * 1.5);\n }\n\n .mb-2 {\n margin-bottom: calc(var(--spacing) * 2);\n }\n\n .mb-3 {\n margin-bottom: calc(var(--spacing) * 3);\n }\n\n .mb-4 {\n margin-bottom: calc(var(--spacing) * 4);\n }\n\n .mb-6 {\n margin-bottom: calc(var(--spacing) * 6);\n }\n\n .mb-6\\.5 {\n margin-bottom: calc(var(--spacing) * 6.5);\n }\n\n .mb-8 {\n margin-bottom: calc(var(--spacing) * 8);\n }\n\n .ml-1 {\n margin-left: var(--spacing);\n }\n\n .ml-2 {\n margin-left: calc(var(--spacing) * 2);\n }\n\n .ml-4 {\n margin-left: calc(var(--spacing) * 4);\n }\n\n .ml-12 {\n margin-left: calc(var(--spacing) * 12);\n }\n\n .ml-auto {\n margin-left: auto;\n }\n\n .box-border {\n box-sizing: border-box;\n }\n\n .box-content {\n box-sizing: content-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 .line-clamp-2 {\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .line-clamp-11 {\n -webkit-line-clamp: 11;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n overflow: hidden;\n }\n\n .\\!hidden {\n display: none !important;\n }\n\n .block {\n display: block;\n }\n\n .contents {\n display: contents;\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 {\n display: inline;\n }\n\n .inline-block {\n display: inline-block;\n }\n\n .inline-flex {\n display: inline-flex;\n }\n\n .table {\n display: table;\n }\n\n .aspect-square {\n aspect-ratio: 1;\n }\n\n .h-2 {\n height: calc(var(--spacing) * 2);\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 {\n height: calc(var(--spacing) * 3);\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-4\\.5 {\n height: calc(var(--spacing) * 4.5);\n }\n\n .h-4\\.25 {\n height: calc(var(--spacing) * 4.25);\n }\n\n .h-4\\.75 {\n height: calc(var(--spacing) * 4.75);\n }\n\n .h-5 {\n height: calc(var(--spacing) * 5);\n }\n\n .h-5\\.5 {\n height: calc(var(--spacing) * 5.5);\n }\n\n .h-5\\.25 {\n height: calc(var(--spacing) * 5.25);\n }\n\n .h-6 {\n height: calc(var(--spacing) * 6);\n }\n\n .h-7 {\n height: calc(var(--spacing) * 7);\n }\n\n .h-7\\.5 {\n height: calc(var(--spacing) * 7.5);\n }\n\n .h-7\\.25 {\n height: calc(var(--spacing) * 7.25);\n }\n\n .h-8 {\n height: calc(var(--spacing) * 8);\n }\n\n .h-8\\.5 {\n height: calc(var(--spacing) * 8.5);\n }\n\n .h-8\\.75 {\n height: calc(var(--spacing) * 8.75);\n }\n\n .h-9 {\n height: calc(var(--spacing) * 9);\n }\n\n .h-9\\.5 {\n height: calc(var(--spacing) * 9.5);\n }\n\n .h-9\\.75 {\n height: calc(var(--spacing) * 9.75);\n }\n\n .h-10 {\n height: calc(var(--spacing) * 10);\n }\n\n .h-10\\.5 {\n height: calc(var(--spacing) * 10.5);\n }\n\n .h-10\\.25 {\n height: calc(var(--spacing) * 10.25);\n }\n\n .h-11 {\n height: calc(var(--spacing) * 11);\n }\n\n .h-11\\.5 {\n height: calc(var(--spacing) * 11.5);\n }\n\n .h-11\\.25 {\n height: calc(var(--spacing) * 11.25);\n }\n\n .h-12 {\n height: calc(var(--spacing) * 12);\n }\n\n .h-12\\.5 {\n height: calc(var(--spacing) * 12.5);\n }\n\n .h-12\\.25 {\n height: calc(var(--spacing) * 12.25);\n }\n\n .h-12\\.75 {\n height: calc(var(--spacing) * 12.75);\n }\n\n .h-14 {\n height: calc(var(--spacing) * 14);\n }\n\n .h-14\\.25 {\n height: calc(var(--spacing) * 14.25);\n }\n\n .h-16 {\n height: calc(var(--spacing) * 16);\n }\n\n .h-17\\.75 {\n height: calc(var(--spacing) * 17.75);\n }\n\n .h-19\\.75 {\n height: calc(var(--spacing) * 19.75);\n }\n\n .h-20 {\n height: calc(var(--spacing) * 20);\n }\n\n .h-20\\.75 {\n height: calc(var(--spacing) * 20.75);\n }\n\n .h-21\\.25 {\n height: calc(var(--spacing) * 21.25);\n }\n\n .h-22\\.75 {\n height: calc(var(--spacing) * 22.75);\n }\n\n .h-24\\.75 {\n height: calc(var(--spacing) * 24.75);\n }\n\n .h-32\\.75 {\n height: calc(var(--spacing) * 32.75);\n }\n\n .h-49\\.5 {\n height: calc(var(--spacing) * 49.5);\n }\n\n .h-52\\.75 {\n height: calc(var(--spacing) * 52.75);\n }\n\n .h-57\\.5 {\n height: calc(var(--spacing) * 57.5);\n }\n\n .h-77\\.25 {\n height: calc(var(--spacing) * 77.25);\n }\n\n .h-79 {\n height: calc(var(--spacing) * 79);\n }\n\n .h-83\\.25 {\n height: calc(var(--spacing) * 83.25);\n }\n\n .h-89\\.25 {\n height: calc(var(--spacing) * 89.25);\n }\n\n .h-112 {\n height: calc(var(--spacing) * 112);\n }\n\n .h-\\[0\\.0625rem\\] {\n height: .0625rem;\n }\n\n .h-\\[8\\.26375rem\\] {\n height: 8.26375rem;\n }\n\n .h-auto {\n height: auto;\n }\n\n .h-fit {\n height: fit-content;\n }\n\n .h-full {\n height: 100%;\n }\n\n .h-px {\n height: 1px;\n }\n\n .h-screen {\n height: 100vh;\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-48 {\n max-height: calc(var(--spacing) * 48);\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-0 {\n min-height: 0;\n }\n\n .min-h-5 {\n min-height: calc(var(--spacing) * 5);\n }\n\n .min-h-9 {\n min-height: calc(var(--spacing) * 9);\n }\n\n .min-h-10 {\n min-height: calc(var(--spacing) * 10);\n }\n\n .min-h-12 {\n min-height: calc(var(--spacing) * 12);\n }\n\n .min-h-35 {\n min-height: calc(var(--spacing) * 35);\n }\n\n .min-h-102\\.5 {\n min-height: calc(var(--spacing) * 102.5);\n }\n\n .min-h-107\\.5 {\n min-height: calc(var(--spacing) * 107.5);\n }\n\n .min-h-113\\.25 {\n min-height: calc(var(--spacing) * 113.25);\n }\n\n .w-0\\.25 {\n width: calc(var(--spacing) * .25);\n }\n\n .w-1\\/3 {\n width: 33.3333%;\n }\n\n .w-2 {\n width: calc(var(--spacing) * 2);\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-4\\.5 {\n width: calc(var(--spacing) * 4.5);\n }\n\n .w-4\\.25 {\n width: calc(var(--spacing) * 4.25);\n }\n\n .w-5 {\n width: calc(var(--spacing) * 5);\n }\n\n .w-6 {\n width: calc(var(--spacing) * 6);\n }\n\n .w-7 {\n width: calc(var(--spacing) * 7);\n }\n\n .w-8 {\n width: calc(var(--spacing) * 8);\n }\n\n .w-9 {\n width: calc(var(--spacing) * 9);\n }\n\n .w-9\\.5 {\n width: calc(var(--spacing) * 9.5);\n }\n\n .w-10 {\n width: calc(var(--spacing) * 10);\n }\n\n .w-10\\.5 {\n width: calc(var(--spacing) * 10.5);\n }\n\n .w-11\\.5 {\n width: calc(var(--spacing) * 11.5);\n }\n\n .w-11\\.25 {\n width: calc(var(--spacing) * 11.25);\n }\n\n .w-12 {\n width: calc(var(--spacing) * 12);\n }\n\n .w-12\\.5 {\n width: calc(var(--spacing) * 12.5);\n }\n\n .w-12\\.75 {\n width: calc(var(--spacing) * 12.75);\n }\n\n .w-15\\.25 {\n width: calc(var(--spacing) * 15.25);\n }\n\n .w-16 {\n width: calc(var(--spacing) * 16);\n }\n\n .w-16\\.5 {\n width: calc(var(--spacing) * 16.5);\n }\n\n .w-17 {\n width: calc(var(--spacing) * 17);\n }\n\n .w-18\\.5 {\n width: calc(var(--spacing) * 18.5);\n }\n\n .w-18\\.75 {\n width: calc(var(--spacing) * 18.75);\n }\n\n .w-20 {\n width: calc(var(--spacing) * 20);\n }\n\n .w-20\\.5 {\n width: calc(var(--spacing) * 20.5);\n }\n\n .w-21\\.5 {\n width: calc(var(--spacing) * 21.5);\n }\n\n .w-24 {\n width: calc(var(--spacing) * 24);\n }\n\n .w-24\\.75 {\n width: calc(var(--spacing) * 24.75);\n }\n\n .w-25\\.5 {\n width: calc(var(--spacing) * 25.5);\n }\n\n .w-25\\.25 {\n width: calc(var(--spacing) * 25.25);\n }\n\n .w-26\\.25 {\n width: calc(var(--spacing) * 26.25);\n }\n\n .w-27 {\n width: calc(var(--spacing) * 27);\n }\n\n .w-27\\.5 {\n width: calc(var(--spacing) * 27.5);\n }\n\n .w-30 {\n width: var(--spacing-30);\n }\n\n .w-30\\.75 {\n width: calc(var(--spacing) * 30.75);\n }\n\n .w-32 {\n width: calc(var(--spacing) * 32);\n }\n\n .w-33\\.25 {\n width: calc(var(--spacing) * 33.25);\n }\n\n .w-34\\.25 {\n width: calc(var(--spacing) * 34.25);\n }\n\n .w-35 {\n width: calc(var(--spacing) * 35);\n }\n\n .w-36 {\n width: calc(var(--spacing) * 36);\n }\n\n .w-38\\.5 {\n width: calc(var(--spacing) * 38.5);\n }\n\n .w-39\\.5 {\n width: calc(var(--spacing) * 39.5);\n }\n\n .w-40\\.25 {\n width: calc(var(--spacing) * 40.25);\n }\n\n .w-41 {\n width: calc(var(--spacing) * 41);\n }\n\n .w-41\\.75 {\n width: calc(var(--spacing) * 41.75);\n }\n\n .w-45 {\n width: calc(var(--spacing) * 45);\n }\n\n .w-47\\.75 {\n width: calc(var(--spacing) * 47.75);\n }\n\n .w-48 {\n width: calc(var(--spacing) * 48);\n }\n\n .w-48\\.5 {\n width: calc(var(--spacing) * 48.5);\n }\n\n .w-53 {\n width: calc(var(--spacing) * 53);\n }\n\n .w-56\\.5 {\n width: calc(var(--spacing) * 56.5);\n }\n\n .w-57\\.5 {\n width: calc(var(--spacing) * 57.5);\n }\n\n .w-60\\.5 {\n width: calc(var(--spacing) * 60.5);\n }\n\n .w-62\\.5 {\n width: calc(var(--spacing) * 62.5);\n }\n\n .w-63\\.75 {\n width: calc(var(--spacing) * 63.75);\n }\n\n .w-66 {\n width: calc(var(--spacing) * 66);\n }\n\n .w-68 {\n width: calc(var(--spacing) * 68);\n }\n\n .w-70\\.5 {\n width: calc(var(--spacing) * 70.5);\n }\n\n .w-71 {\n width: calc(var(--spacing) * 71);\n }\n\n .w-74\\.75 {\n width: calc(var(--spacing) * 74.75);\n }\n\n .w-87 {\n width: calc(var(--spacing) * 87);\n }\n\n .w-88\\.5 {\n width: calc(var(--spacing) * 88.5);\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-99\\.75 {\n width: calc(var(--spacing) * 99.75);\n }\n\n .w-100\\.5 {\n width: calc(var(--spacing) * 100.5);\n }\n\n .w-102 {\n width: calc(var(--spacing) * 102);\n }\n\n .w-117 {\n width: var(--spacing-117);\n }\n\n .w-120 {\n width: var(--spacing-120);\n }\n\n .w-120\\.75 {\n width: calc(var(--spacing) * 120.75);\n }\n\n .w-121 {\n width: calc(var(--spacing) * 121);\n }\n\n .w-127\\.75 {\n width: calc(var(--spacing) * 127.75);\n }\n\n .w-130\\.25 {\n width: calc(var(--spacing) * 130.25);\n }\n\n .w-131 {\n width: calc(var(--spacing) * 131);\n }\n\n .w-139 {\n width: calc(var(--spacing) * 139);\n }\n\n .w-186\\.5 {\n width: calc(var(--spacing) * 186.5);\n }\n\n .w-186\\.25 {\n width: calc(var(--spacing) * 186.25);\n }\n\n .w-194\\.25 {\n width: calc(var(--spacing) * 194.25);\n }\n\n .w-198\\.25 {\n width: calc(var(--spacing) * 198.25);\n }\n\n .w-270 {\n width: calc(var(--spacing) * 270);\n }\n\n .w-282 {\n width: calc(var(--spacing) * 282);\n }\n\n .w-293\\.5 {\n width: calc(var(--spacing) * 293.5);\n }\n\n .w-294 {\n width: calc(var(--spacing) * 294);\n }\n\n .w-\\[10\\.5rem\\] {\n width: 10.5rem;\n }\n\n .w-\\[73\\.375rem\\] {\n width: 73.375rem;\n }\n\n .w-\\[calc\\(100\\%-10px\\)\\] {\n width: calc(100% - 10px);\n }\n\n .w-auto {\n width: auto;\n }\n\n .w-full {\n width: 100%;\n }\n\n .w-px {\n width: 1px;\n }\n\n .max-w-36 {\n max-width: calc(var(--spacing) * 36);\n }\n\n .max-w-38 {\n max-width: var(--spacing-38);\n }\n\n .max-w-43 {\n max-width: var(--spacing-43);\n }\n\n .max-w-44 {\n max-width: calc(var(--spacing) * 44);\n }\n\n .max-w-51\\.5 {\n max-width: calc(var(--spacing) * 51.5);\n }\n\n .max-w-65 {\n max-width: calc(var(--spacing) * 65);\n }\n\n .max-w-194\\.25 {\n max-width: calc(var(--spacing) * 194.25);\n }\n\n .max-w-\\[23\\.75rem\\] {\n max-width: 23.75rem;\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-10 {\n min-width: calc(var(--spacing) * 10);\n }\n\n .min-w-20 {\n min-width: calc(var(--spacing) * 20);\n }\n\n .min-w-30 {\n min-width: var(--spacing-30);\n }\n\n .min-w-32 {\n min-width: calc(var(--spacing) * 32);\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-50 {\n min-width: var(--spacing-50);\n }\n\n .min-w-55 {\n min-width: calc(var(--spacing) * 55);\n }\n\n .min-w-56 {\n min-width: calc(var(--spacing) * 56);\n }\n\n .min-w-160 {\n min-width: calc(var(--spacing) * 160);\n }\n\n .min-w-\\[8\\.2rem\\] {\n min-width: 8.2rem;\n }\n\n .min-w-fit {\n min-width: fit-content;\n }\n\n .flex-1 {\n flex: 1;\n }\n\n .flex-595 {\n flex: 595;\n }\n\n .flex-\\[563\\] {\n flex: 563;\n }\n\n .flex-shrink {\n flex-shrink: 1;\n }\n\n .shrink-0 {\n flex-shrink: 0;\n }\n\n .border-collapse {\n border-collapse: collapse;\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 .scale-\\[1\\.02\\] {\n scale: 1.02;\n }\n\n .rotate-180 {\n rotate: 180deg;\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-grab {\n cursor: grab;\n }\n\n .cursor-not-allowed {\n cursor: not-allowed;\n }\n\n .cursor-pointer {\n cursor: pointer;\n }\n\n .cursor-text {\n cursor: text;\n }\n\n .touch-none {\n touch-action: none;\n }\n\n .resize {\n resize: both;\n }\n\n .appearance-none {\n appearance: none;\n }\n\n .grid-cols-\\[7\\.5rem_7\\.5rem_7\\.5rem\\] {\n grid-template-columns: 7.5rem 7.5rem 7.5rem;\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-baseline {\n align-items: baseline;\n }\n\n .items-center {\n align-items: center;\n }\n\n .items-end {\n align-items: flex-end;\n }\n\n .items-start {\n align-items: flex-start;\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 .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-1\\.5 {\n gap: calc(var(--spacing) * 1.5);\n }\n\n .gap-1\\.25 {\n gap: calc(var(--spacing) * 1.25);\n }\n\n .gap-2 {\n gap: calc(var(--spacing) * 2);\n }\n\n .gap-2\\.5 {\n gap: calc(var(--spacing) * 2.5);\n }\n\n .gap-2\\.25 {\n gap: calc(var(--spacing) * 2.25);\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-5 {\n gap: calc(var(--spacing) * 5);\n }\n\n .gap-6 {\n gap: calc(var(--spacing) * 6);\n }\n\n .gap-8 {\n gap: calc(var(--spacing) * 8);\n }\n\n .gap-8\\.75 {\n gap: calc(var(--spacing) * 8.75);\n }\n\n .gap-12 {\n gap: calc(var(--spacing) * 12);\n }\n\n .gap-19 {\n gap: calc(var(--spacing) * 19);\n }\n\n .gap-\\[2\\%\\] {\n gap: 2%;\n }\n\n :where(.space-y-1 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(var(--spacing) * var(--tw-space-y-reverse));\n margin-block-end: calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-2 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));\n }\n\n :where(.space-y-3 > :not(:last-child)) {\n --tw-space-y-reverse: 0;\n margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));\n margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));\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-x-4 {\n column-gap: calc(var(--spacing) * 4);\n }\n\n .gap-x-6 {\n column-gap: calc(var(--spacing) * 6);\n }\n\n .gap-y-1 {\n row-gap: var(--spacing);\n }\n\n .gap-y-\\[0\\.1875rem\\] {\n row-gap: .1875rem;\n }\n\n .self-end {\n align-self: flex-end;\n }\n\n .self-start {\n align-self: flex-start;\n }\n\n .truncate {\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n }\n\n .overflow-auto {\n overflow: auto;\n }\n\n .overflow-hidden {\n overflow: hidden;\n }\n\n .overflow-visible {\n overflow: visible;\n }\n\n .overflow-x-auto {\n overflow-x: auto;\n }\n\n .overflow-x-hidden {\n overflow-x: hidden;\n }\n\n .overflow-y-auto {\n overflow-y: auto;\n }\n\n .overflow-y-hidden {\n overflow-y: hidden;\n }\n\n .rounded {\n border-radius: .25rem;\n }\n\n .rounded-2xl {\n border-radius: var(--radius-2xl);\n }\n\n .rounded-\\[0\\.375rem\\] {\n border-radius: .375rem;\n }\n\n .rounded-\\[0\\.3125rem\\] {\n border-radius: .3125rem;\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-none {\n border-radius: 0;\n }\n\n .rounded-none\\! {\n border-radius: 0 !important;\n }\n\n .rounded-sm {\n border-radius: var(--radius-sm);\n }\n\n .rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .rounded-t-lg {\n border-top-left-radius: var(--radius-lg);\n border-top-right-radius: var(--radius-lg);\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-t-xl {\n border-top-left-radius: var(--radius-xl);\n border-top-right-radius: var(--radius-xl);\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-tl-xl {\n border-top-left-radius: var(--radius-xl);\n }\n\n .rounded-r-md {\n border-top-right-radius: var(--radius-md);\n border-bottom-right-radius: var(--radius-md);\n }\n\n .rounded-tr-xl {\n border-top-right-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 .rounded-b-xl {\n border-bottom-right-radius: var(--radius-xl);\n border-bottom-left-radius: var(--radius-xl);\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-0 {\n border-top-style: var(--tw-border-style);\n border-top-width: 0;\n }\n\n .border-t-4 {\n border-top-style: var(--tw-border-style);\n border-top-width: 4px;\n }\n\n .border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n\n .border-r-0 {\n border-right-style: var(--tw-border-style);\n border-right-width: 0;\n }\n\n .border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n\n .border-b-0 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0;\n }\n\n .border-b-2 {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 2px;\n }\n\n .border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n\n .border-l-0 {\n border-left-style: var(--tw-border-style);\n border-left-width: 0;\n }\n\n .border-l-4 {\n border-left-style: var(--tw-border-style);\n border-left-width: 4px;\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-border-gray\\) {\n border-color: var(--axebow-border-gray);\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-premium-text\\) {\n border-color: var(--axebow-premium-text);\n }\n\n .border-\\(--axebow-primary\\) {\n border-color: var(--axebow-primary);\n }\n\n .border-\\(--axebow-secondary\\) {\n border-color: var(--axebow-secondary);\n }\n\n .border-\\(--axebow-table-border\\) {\n border-color: var(--axebow-table-border);\n }\n\n .border-\\(--axebow-table-header-border\\) {\n border-color: var(--axebow-table-header-border);\n }\n\n .border-\\(--axebow-tertiary\\) {\n border-color: var(--axebow-tertiary);\n }\n\n .border-\\[\\#344966\\] {\n border-color: #344966;\n }\n\n .border-\\[\\#DBDDE4\\] {\n border-color: #dbdde4;\n }\n\n .border-\\[var\\(--axebow-error\\)\\] {\n border-color: var(--axebow-error);\n }\n\n .border-\\[var\\(--axebow-gray\\)\\] {\n border-color: var(--axebow-gray);\n }\n\n .border-\\[var\\(--axebow-tertiary\\)\\] {\n border-color: var(--axebow-tertiary);\n }\n\n .border-black\\/10 {\n border-color: #0000001a;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .border-black\\/10 {\n border-color: color-mix(in oklab, var(--color-black) 10%, transparent);\n }\n }\n\n .border-blue-200 {\n border-color: var(--color-blue-200);\n }\n\n .border-gray-100 {\n border-color: var(--color-gray-100);\n }\n\n .border-gray-200 {\n border-color: var(--color-gray-200);\n }\n\n .border-gray-300 {\n border-color: var(--color-gray-300);\n }\n\n .border-gray-400 {\n border-color: var(--color-gray-400);\n }\n\n .border-gray-500 {\n border-color: var(--color-gray-500);\n }\n\n .border-green-200 {\n border-color: var(--color-green-200);\n }\n\n .border-red-200 {\n border-color: var(--color-red-200);\n }\n\n .border-transparent {\n border-color: #0000;\n }\n\n .border-white {\n border-color: var(--color-white);\n }\n\n .border-yellow-200 {\n border-color: var(--color-yellow-200);\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\\), .bg-\\(--axebow-light-gray\\)\\/80 {\n background-color: var(--axebow-light-gray);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-\\(--axebow-light-gray\\)\\/80 {\n background-color: color-mix(in oklab, var(--axebow-light-gray) 80%, transparent);\n }\n }\n\n .bg-\\(--axebow-primary\\) {\n background-color: var(--axebow-primary);\n }\n\n .bg-\\(--axebow-primary-light\\) {\n background-color: var(--axebow-primary-light);\n }\n\n .bg-\\(--axebow-success\\) {\n background-color: var(--axebow-success);\n }\n\n .bg-\\(--axebow-tertiary\\), .bg-\\(--axebow-tertiary\\)\\/15 {\n background-color: var(--axebow-tertiary);\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-\\(--axebow-tertiary\\)\\/15 {\n background-color: color-mix(in oklab, var(--axebow-tertiary) 15%, transparent);\n }\n }\n\n .bg-\\(--axebow-warning\\) {\n background-color: var(--axebow-warning);\n }\n\n .bg-\\(--axebow-white\\) {\n background-color: var(--axebow-white);\n }\n\n .bg-\\[\\#006BFF\\] {\n background-color: #006bff;\n }\n\n .bg-\\[\\#C7DCFA\\] {\n background-color: #c7dcfa;\n }\n\n .bg-\\[\\#F0F1F5\\] {\n background-color: #f0f1f5;\n }\n\n .bg-\\[var\\(--axebow-gray\\)\\] {\n background-color: var(--axebow-gray);\n }\n\n .bg-\\[var\\(--axebow-tertiary\\)\\] {\n background-color: var(--axebow-tertiary);\n }\n\n .bg-blue-50 {\n background-color: var(--color-blue-50);\n }\n\n .bg-gray-50 {\n background-color: var(--color-gray-50);\n }\n\n .bg-gray-50\\/50 {\n background-color: #f9fafb80;\n }\n\n @supports (color: color-mix(in lab, red, red)) {\n .bg-gray-50\\/50 {\n background-color: color-mix(in oklab, var(--color-gray-50) 50%, transparent);\n }\n }\n\n .bg-gray-100 {\n background-color: var(--color-gray-100);\n }\n\n .bg-gray-200 {\n background-color: var(--color-gray-200);\n }\n\n .bg-gray-300 {\n background-color: var(--color-gray-300);\n }\n\n .bg-green-50 {\n background-color: var(--color-green-50);\n }\n\n .bg-red-50 {\n background-color: var(--color-red-50);\n }\n\n .bg-red-100 {\n background-color: var(--color-red-100);\n }\n\n .bg-sky-50 {\n background-color: var(--color-sky-50);\n }\n\n .bg-sky-100 {\n background-color: var(--color-sky-100);\n }\n\n .bg-transparent {\n background-color: #0000;\n }\n\n .bg-white {\n background-color: var(--color-white);\n }\n\n .bg-yellow-50 {\n background-color: var(--color-yellow-50);\n }\n\n .object-contain {\n object-fit: contain;\n }\n\n .p-0 {\n padding: 0;\n }\n\n .p-1 {\n padding: var(--spacing);\n }\n\n .p-1\\.5 {\n padding: calc(var(--spacing) * 1.5);\n }\n\n .p-2 {\n padding: calc(var(--spacing) * 2);\n }\n\n .p-3 {\n padding: calc(var(--spacing) * 3);\n }\n\n .p-3\\.25 {\n padding: calc(var(--spacing) * 3.25);\n }\n\n .p-4 {\n padding: calc(var(--spacing) * 4);\n }\n\n .p-5 {\n padding: calc(var(--spacing) * 5);\n }\n\n .p-6 {\n padding: calc(var(--spacing) * 6);\n }\n\n .px-0\\.5 {\n padding-inline: calc(var(--spacing) * .5);\n }\n\n .px-1 {\n padding-inline: var(--spacing);\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 .px-6 {\n padding-inline: calc(var(--spacing) * 6);\n }\n\n .px-8 {\n padding-inline: calc(var(--spacing) * 8);\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\\.5 {\n padding-block: calc(var(--spacing) * 1.5);\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-2\\.5 {\n padding-block: calc(var(--spacing) * 2.5);\n }\n\n .py-2\\.75 {\n padding-block: calc(var(--spacing) * 2.75);\n }\n\n .py-3 {\n padding-block: calc(var(--spacing) * 3);\n }\n\n .py-4 {\n padding-block: calc(var(--spacing) * 4);\n }\n\n .py-4\\.75 {\n padding-block: calc(var(--spacing) * 4.75);\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-1 {\n padding-top: var(--spacing);\n }\n\n .pt-2 {\n padding-top: calc(var(--spacing) * 2);\n }\n\n .pt-3 {\n padding-top: calc(var(--spacing) * 3);\n }\n\n .pt-4 {\n padding-top: calc(var(--spacing) * 4);\n }\n\n .pt-6 {\n padding-top: calc(var(--spacing) * 6);\n }\n\n .pt-8 {\n padding-top: calc(var(--spacing) * 8);\n }\n\n .pt-px {\n padding-top: 1px;\n }\n\n .pr-1 {\n padding-right: var(--spacing);\n }\n\n .pr-2 {\n padding-right: calc(var(--spacing) * 2);\n }\n\n .pr-3\\.25 {\n padding-right: calc(var(--spacing) * 3.25);\n }\n\n .pr-4 {\n padding-right: calc(var(--spacing) * 4);\n }\n\n .pr-4\\.5 {\n padding-right: calc(var(--spacing) * 4.5);\n }\n\n .pr-5 {\n padding-right: calc(var(--spacing) * 5);\n }\n\n .pb-0 {\n padding-bottom: 0;\n }\n\n .pb-2 {\n padding-bottom: calc(var(--spacing) * 2);\n }\n\n .pb-3 {\n padding-bottom: calc(var(--spacing) * 3);\n }\n\n .pb-3\\.5 {\n padding-bottom: calc(var(--spacing) * 3.5);\n }\n\n .pb-4 {\n padding-bottom: calc(var(--spacing) * 4);\n }\n\n .pb-6 {\n padding-bottom: calc(var(--spacing) * 6);\n }\n\n .pl-1 {\n padding-left: var(--spacing);\n }\n\n .pl-1\\.5 {\n padding-left: calc(var(--spacing) * 1.5);\n }\n\n .pl-2 {\n padding-left: calc(var(--spacing) * 2);\n }\n\n .pl-4 {\n padding-left: calc(var(--spacing) * 4);\n }\n\n .pl-4\\.25 {\n padding-left: calc(var(--spacing) * 4.25);\n }\n\n .pl-5 {\n padding-left: calc(var(--spacing) * 5);\n }\n\n .pl-6 {\n padding-left: calc(var(--spacing) * 6);\n }\n\n .pl-11\\.75 {\n padding-left: calc(var(--spacing) * 11.75);\n }\n\n .pl-px {\n padding-left: 1px;\n }\n\n .text-center {\n text-align: center;\n }\n\n .text-left {\n text-align: left;\n }\n\n .text-right {\n text-align: right;\n }\n\n .text-start {\n text-align: start;\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 .font-\\[inherit\\] {\n font-family: inherit;\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-md {\n font-size: var(--text-md);\n line-height: var(--tw-leading, var(--text-md--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 .text-\\[0\\.9375rem\\] {\n font-size: .9375rem;\n }\n\n .text-\\[1\\.25rem\\] {\n font-size: 1.25rem;\n }\n\n .text-\\[18px\\] {\n font-size: 18px;\n }\n\n .leading-3\\.5 {\n --tw-leading: calc(var(--spacing) * 3.5);\n line-height: calc(var(--spacing) * 3.5);\n }\n\n .leading-4\\.25 {\n --tw-leading: calc(var(--spacing) * 4.25);\n line-height: calc(var(--spacing) * 4.25);\n }\n\n .leading-\\[1\\.125rem\\] {\n --tw-leading: 1.125rem;\n line-height: 1.125rem;\n }\n\n .leading-\\[1\\.0625rem\\] {\n --tw-leading: 1.0625rem;\n line-height: 1.0625rem;\n }\n\n .leading-\\[1\\.21875rem\\] {\n --tw-leading: 1.21875rem;\n line-height: 1.21875rem;\n }\n\n .leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n\n .leading-relaxed {\n --tw-leading: var(--leading-relaxed);\n line-height: var(--leading-relaxed);\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-black {\n --tw-font-weight: var(--font-weight-black);\n font-weight: var(--font-weight-black);\n }\n\n .font-bold {\n --tw-font-weight: var(--font-weight-bold);\n font-weight: var(--font-weight-bold);\n }\n\n .font-light {\n --tw-font-weight: var(--font-weight-light);\n font-weight: var(--font-weight-light);\n }\n\n .font-medium {\n --tw-font-weight: var(--font-weight-medium);\n font-weight: var(--font-weight-medium);\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 .tracking-wider {\n --tw-tracking: var(--tracking-wider);\n letter-spacing: var(--tracking-wider);\n }\n\n .wrap-break-word {\n overflow-wrap: break-word;\n }\n\n .break-all {\n word-break: break-all;\n }\n\n .text-ellipsis {\n text-overflow: ellipsis;\n }\n\n .whitespace-normal {\n white-space: normal;\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-black\\) {\n color: var(--axebow-black);\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-strong-gray\\) {\n color: var(--axebow-strong-gray);\n }\n\n .text-\\(--axebow-tertiary\\) {\n color: var(--axebow-tertiary);\n }\n\n .text-\\[\\#006BFF\\] {\n color: #006bff;\n }\n\n .text-\\[\\#8A94AE\\] {\n color: #8a94ae;\n }\n\n .text-\\[\\#78787A\\] {\n color: #78787a;\n }\n\n .text-\\[\\#344966\\] {\n color: #344966;\n }\n\n .text-\\[\\#E93A3A\\] {\n color: #e93a3a;\n }\n\n .text-\\[var\\(--axebow-error\\)\\] {\n color: var(--axebow-error);\n }\n\n .text-\\[var\\(--axebow-gray\\)\\] {\n color: var(--axebow-gray);\n }\n\n .text-\\[var\\(--axebow-tertiary\\)\\] {\n color: var(--axebow-tertiary);\n }\n\n .text-black {\n color: var(--color-black);\n }\n\n .text-blue-600 {\n color: var(--color-blue-600);\n }\n\n .text-blue-800 {\n color: var(--color-blue-800);\n }\n\n .text-gray-300 {\n color: var(--color-gray-300);\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-gray-700 {\n color: var(--color-gray-700);\n }\n\n .text-gray-900 {\n color: var(--color-gray-900);\n }\n\n .text-green-600 {\n color: var(--color-green-600);\n }\n\n .text-green-800 {\n color: var(--color-green-800);\n }\n\n .text-inherit {\n color: inherit;\n }\n\n .text-red-500 {\n color: var(--color-red-500);\n }\n\n .text-red-800 {\n color: var(--color-red-800);\n }\n\n .text-white {\n color: var(--color-white);\n }\n\n .text-yellow-600 {\n color: var(--color-yellow-600);\n }\n\n .text-yellow-800 {\n color: var(--color-yellow-800);\n }\n\n .capitalize {\n text-transform: capitalize;\n }\n\n .uppercase {\n text-transform: uppercase;\n }\n\n .italic {\n font-style: italic;\n }\n\n .no-underline {\n text-decoration-line: none;\n }\n\n .underline {\n text-decoration-line: underline;\n }\n\n .decoration-\\(--axebow-error\\) {\n -webkit-text-decoration-color: var(--axebow-error);\n -webkit-text-decoration-color: var(--axebow-error);\n text-decoration-color: var(--axebow-error);\n }\n\n .placeholder-gray-400::placeholder {\n color: var(--color-gray-400);\n }\n\n .opacity-0 {\n opacity: 0;\n }\n\n .opacity-40 {\n opacity: .4;\n }\n\n .opacity-50 {\n opacity: .5;\n }\n\n .opacity-60 {\n opacity: .6;\n }\n\n .opacity-70 {\n opacity: .7;\n }\n\n .opacity-100 {\n opacity: 1;\n }\n\n .shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px 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-\\[0_-8px_8px_-8px_rgba\\(13\\,24\\,33\\,0\\.15\\)\\] {\n --tw-shadow: 0 -8px 8px -8px var(--tw-shadow-color, #0d182126);\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-\\[0_2px_6px_rgba\\(0\\,0\\,0\\,0\\.2\\)\\] {\n --tw-shadow: 0 2px 6px var(--tw-shadow-color, #0003);\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-\\[0_4px_12px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\] {\n --tw-shadow: 0 4px 12px 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-\\[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 .shadow-md {\n --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, #0000001a), 0 2px 4px -2px 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-none {\n --tw-shadow: 0 0 #0000;\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-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px 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 .axebow-shadow-hover {\n transition: box-shadow .2s ease-in-out;\n }\n\n .axebow-shadow-hover:hover {\n box-shadow: 0 4px 12px #0d182114;\n }\n\n .outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n\n .blur {\n --tw-blur: blur(8px);\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 .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-\\[filter\\] {\n transition-property: filter;\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 .delay-100 {\n transition-delay: .1s;\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 .duration-300 {\n --tw-duration: .3s;\n transition-duration: .3s;\n }\n\n .ease-in-out {\n --tw-ease: var(--ease-in-out);\n transition-timing-function: var(--ease-in-out);\n }\n\n .ease-out {\n --tw-ease: var(--ease-out);\n transition-timing-function: var(--ease-out);\n }\n\n .outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n .select-none {\n -webkit-user-select: none;\n user-select: none;\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\\:text-red-500:is(:where(.group):hover *) {\n color: var(--color-red-500);\n }\n\n .group-hover\\:opacity-100:is(:where(.group):hover *) {\n opacity: 1;\n }\n\n .group-hover\\:invert:is(:where(.group):hover *) {\n --tw-invert: invert(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\n .last\\:border-b-0:last-child {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 0;\n }\n\n .focus-within\\:border-\\(--axebow-tertiary\\):focus-within {\n border-color: var(--axebow-tertiary);\n }\n\n .focus-within\\:border-blue-500:focus-within {\n border-color: var(--color-blue-500);\n }\n\n .focus-within\\:ring-2:focus-within {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\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 .focus-within\\:ring-blue-100:focus-within {\n --tw-ring-color: var(--color-blue-100);\n }\n\n @media (hover: hover) {\n .hover\\:scale-105:hover {\n --tw-scale-x: 105%;\n --tw-scale-y: 105%;\n --tw-scale-z: 105%;\n scale: var(--tw-scale-x) var(--tw-scale-y);\n }\n\n .hover\\:rounded-md:hover {\n border-radius: var(--radius-md);\n }\n\n .hover\\:border-2:hover {\n border-style: var(--tw-border-style);\n border-width: 2px;\n }\n\n .hover\\:border-solid:hover {\n --tw-border-style: solid;\n border-style: solid;\n }\n\n .hover\\:border-\\(--axebow-gray\\):hover {\n border-color: var(--axebow-gray);\n }\n\n .hover\\:border-\\(--axebow-primary\\):hover {\n border-color: var(--axebow-primary);\n }\n\n .hover\\:border-\\(--axebow-tertiary\\):hover, .hover\\:border-\\[var\\(--axebow-tertiary\\)\\]:hover {\n border-color: var(--axebow-tertiary);\n }\n\n .hover\\:border-red-300:hover {\n border-color: var(--color-red-300);\n }\n\n .hover\\:bg-\\(--axebow-anti-flash-white\\):hover {\n background-color: var(--axebow-anti-flash-white);\n }\n\n .hover\\:bg-\\(--axebow-base\\):hover {\n background-color: var(--axebow-base);\n }\n\n .hover\\:bg-\\(--axebow-gray\\):hover {\n background-color: var(--axebow-gray);\n }\n\n .hover\\:bg-\\(--axebow-light-gray\\):hover {\n background-color: var(--axebow-light-gray);\n }\n\n .hover\\:bg-\\(--axebow-primary\\):hover {\n background-color: var(--axebow-primary);\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-50:hover {\n background-color: var(--color-gray-50);\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-red-50:hover {\n background-color: var(--color-red-50);\n }\n\n .hover\\:bg-white:hover {\n background-color: var(--color-white);\n }\n\n .hover\\:px-\\[1\\.375rem\\]:hover {\n padding-inline: 1.375rem;\n }\n\n .hover\\:text-\\(--axebow-gray\\):hover {\n color: var(--axebow-gray);\n }\n\n .hover\\:text-\\(--axebow-primary\\):hover {\n color: var(--axebow-primary);\n }\n\n .hover\\:text-\\(--axebow-tertiary\\):hover {\n color: var(--axebow-tertiary);\n }\n\n .hover\\:text-\\[var\\(--axebow-gray\\)\\]:hover {\n color: var(--axebow-gray);\n }\n\n .hover\\:text-black:hover {\n color: var(--color-black);\n }\n\n .hover\\:text-gray-700:hover {\n color: var(--color-gray-700);\n }\n\n .hover\\:text-red-600:hover {\n color: var(--color-red-600);\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 .hover\\:shadow-lg:hover {\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\n .focus\\:outline-2:focus {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n\n .focus\\:outline-offset-1:focus {\n outline-offset: 1px;\n }\n\n .focus\\:outline-blue-500:focus {\n outline-color: var(--color-blue-500);\n }\n\n .focus\\:outline-none:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n\n .focus-visible\\:ring-2:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset, ) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\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 .focus-visible\\:ring-\\[\\#006BFF\\]:focus-visible {\n --tw-ring-color: #006bff;\n }\n\n .focus-visible\\:outline-2:focus-visible {\n outline-style: var(--tw-outline-style);\n outline-width: 2px;\n }\n\n .focus-visible\\:outline-\\(--axebow-tertiary\\):focus-visible {\n outline-color: var(--axebow-tertiary);\n }\n\n .active\\:cursor-grabbing:active {\n cursor: grabbing;\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 @media (min-width: 64rem) {\n .lg\\:sticky {\n position: sticky;\n }\n\n .lg\\:block {\n display: block;\n }\n\n .lg\\:flex {\n display: flex;\n }\n\n .lg\\:hidden {\n display: none;\n }\n\n .lg\\:inline {\n display: inline;\n }\n\n .lg\\:min-h-\\(--card-height\\) {\n min-height: var(--card-height);\n }\n\n .lg\\:min-h-\\[calc\\(100vh-6\\.25rem\\)\\] {\n min-height: calc(100vh - 6.25rem);\n }\n\n .lg\\:w-\\(--card-width\\) {\n width: var(--card-width);\n }\n\n .lg\\:cursor-default {\n cursor: default;\n }\n\n .lg\\:rounded-xl {\n border-radius: var(--radius-xl);\n }\n\n .lg\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n\n .lg\\:text-base {\n font-size: var(--text-base);\n line-height: var(--tw-leading, var(--text-base--line-height));\n }\n\n .lg\\:text-lg {\n font-size: var(--text-lg);\n line-height: var(--tw-leading, var(--text-lg--line-height));\n }\n\n .lg\\:shadow {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, #0000001a), 0 1px 2px -1px 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}\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-space-y-reverse {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\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-tracking {\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\n@property --tw-scale-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n\n@property --tw-scale-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 1;\n}\n";
129
130
  //#endregion
130
131
  //#region \0@oxc-project+runtime@0.139.0/helpers/esm/decorate.js
131
132
  function __decorate(decorators, target, key, desc) {
@@ -6017,6 +6018,8 @@ var AxebowChannelConfigPanel = class AxebowChannelConfigPanel extends LitElement
6017
6018
  this.empty = true;
6018
6019
  this.channelTypeLabel = "";
6019
6020
  this.canEditAll = true;
6021
+ this.disabled = false;
6022
+ this.height = "80vh";
6020
6023
  }
6021
6024
  static {
6022
6025
  this.styles = [
@@ -6035,20 +6038,20 @@ var AxebowChannelConfigPanel = class AxebowChannelConfigPanel extends LitElement
6035
6038
  <div
6036
6039
  class="bg-white rounded-md axebow-shadow p-2 w-62.5 flex-col gap-3 transition-all duration-300 ease-in-out overflow-hidden
6037
6040
  hidden lg:flex ${this.empty ? "justify-center items-center text-(--axebow-gray)" : ""}"
6038
- style="height: 80vh;"
6041
+ style="height: ${this.height};"
6039
6042
  >
6040
6043
  ${this.empty ? "" : html`
6041
6044
  <div
6042
6045
  class="flex flex-col gap-3 opacity-100 transition-opacity duration-300 delay-100 w-full h-full overflow-y-auto"
6043
6046
  >
6044
- <div class="flex justify-between items-center gap-2">
6047
+ <div class="flex justify-between items-center gap-2 pointer-events-auto">
6045
6048
  <h1
6046
6049
  class="font-semibold text-sm text-(--axebow-secondary) truncate m-0"
6047
6050
  style="width: 14.625rem; height: 1rem; line-height: 1rem;"
6048
6051
  >
6049
6052
  ${this.channelTypeLabel}
6050
6053
  </h1>
6051
- ${this.canEditAll ? html`
6054
+ ${this.canEditAll && !this.disabled ? html`
6052
6055
  <div
6053
6056
  class="w-4.5 h-4.5 shrink-0 flex items-center justify-center cursor-pointer"
6054
6057
  @click=${this._handleDelete}
@@ -6056,8 +6059,16 @@ var AxebowChannelConfigPanel = class AxebowChannelConfigPanel extends LitElement
6056
6059
  <axebow-icon iconName="delete" iconColor="var(--axebow-error)" size="base"></axebow-icon>
6057
6060
  </div>
6058
6061
  ` : ""}
6062
+ ${this.disabled ? html`
6063
+ <div
6064
+ class="w-4.5 h-4.5 shrink-0 flex items-center justify-center cursor-pointer pointer-events-auto"
6065
+ @click=${this._handleClose}
6066
+ >
6067
+ <axebow-icon iconName="close" iconColor="var(--axebow-gray)" size="base"></axebow-icon>
6068
+ </div>
6069
+ ` : ""}
6059
6070
  </div>
6060
- <div class="flex flex-col gap-2 w-full">
6071
+ <div class="flex flex-col gap-2 w-full ${this.disabled ? "pointer-events-none" : ""}">
6061
6072
  <slot name="name-input"></slot>
6062
6073
  <slot name="port-input"></slot>
6063
6074
  <slot name="gateway-toggle"></slot>
@@ -6074,10 +6085,18 @@ var AxebowChannelConfigPanel = class AxebowChannelConfigPanel extends LitElement
6074
6085
  composed: true
6075
6086
  }));
6076
6087
  }
6088
+ _handleClose() {
6089
+ this.dispatchEvent(new CustomEvent("close", {
6090
+ bubbles: true,
6091
+ composed: true
6092
+ }));
6093
+ }
6077
6094
  };
6078
6095
  __decorate([property({ type: Boolean })], AxebowChannelConfigPanel.prototype, "empty", void 0);
6079
6096
  __decorate([property({ type: String })], AxebowChannelConfigPanel.prototype, "channelTypeLabel", void 0);
6080
6097
  __decorate([property({ type: Boolean })], AxebowChannelConfigPanel.prototype, "canEditAll", void 0);
6098
+ __decorate([property({ type: Boolean })], AxebowChannelConfigPanel.prototype, "disabled", void 0);
6099
+ __decorate([property({ type: String })], AxebowChannelConfigPanel.prototype, "height", void 0);
6081
6100
  AxebowChannelConfigPanel = __decorate([customElement("axebow-channel-config-panel")], AxebowChannelConfigPanel);
6082
6101
  //#endregion
6083
6102
  //#region src/components/axebow-mesh-node-renderer/axebow-mesh-node-renderer.ts
@@ -7545,15 +7564,15 @@ var AxebowServiceDetailHeader = class AxebowServiceDetailHeader extends LitEleme
7545
7564
  <div
7546
7565
  class="w-66 h-19.75 box-border flex items-center justify-between gap-6 bg-(--axebow-base) rounded-[0.3125rem] py-4.75 px-4"
7547
7566
  >
7548
- <div class="flex flex-col items-center gap-0.5">
7567
+ <div class="flex flex-col items-start gap-0.5">
7549
7568
  <span class="text-lg font-semibold text-(--axebow-primary)">${limits.cpu}</span>
7550
7569
  <span class="text-base text-(--axebow-gray) whitespace-nowrap">${this.vcpusLabel}</span>
7551
7570
  </div>
7552
- <div class="flex flex-col items-center gap-0.5">
7571
+ <div class="flex flex-col items-start gap-0.5">
7553
7572
  <span class="text-lg font-semibold text-(--axebow-primary)">${limits.memory}</span>
7554
7573
  <span class="text-base text-(--axebow-gray) whitespace-nowrap">${this.gbRamLabel}</span>
7555
7574
  </div>
7556
- <div class="flex flex-col items-center gap-0.5">
7575
+ <div class="flex flex-col items-start gap-0.5">
7557
7576
  <span class="text-lg font-semibold text-(--axebow-primary)">${limits.storage}</span>
7558
7577
  <div class="flex items-center gap-1">
7559
7578
  <span class="text-base text-(--axebow-gray) whitespace-nowrap">${this.gbStorageLabel}</span>
@@ -7568,7 +7587,7 @@ var AxebowServiceDetailHeader = class AxebowServiceDetailHeader extends LitEleme
7568
7587
  return html`
7569
7588
  <div class="flex flex-col gap-1 w-41.75 shrink-0">
7570
7589
  ${this._renderTitle(this.runningVersionTitle)}
7571
- <div class="w-41.75 h-19.75 box-border flex flex-col justify-between">
7590
+ <div class="w-41.75 h-19.75 box-border flex flex-col gap-2">
7572
7591
  <axebow-card-version-selector
7573
7592
  .revisions=${this.revisions}
7574
7593
  displayedRevision=${this.displayedRevision}
@@ -8449,123 +8468,222 @@ __decorate([state()], AxebowTabSelector.prototype, "_tabCount", void 0);
8449
8468
  __decorate([state()], AxebowTabSelector.prototype, "_tabDisabled", void 0);
8450
8469
  AxebowTabSelector = __decorate([customElement("axebow-tab-selector")], AxebowTabSelector);
8451
8470
  //#endregion
8452
- //#region src/components/axebow-resource-limits/parts/axebow-resource-limit-input.ts
8453
- var AxebowResourceLimitInput = class AxebowResourceLimitInput extends LitElement {
8471
+ //#region src/components/axebow-underline-tab-selector/axebow-underline-tab-selector.ts
8472
+ var AxebowUnderlineTabSelector = class AxebowUnderlineTabSelector extends LitElement {
8454
8473
  constructor(..._args) {
8455
8474
  super(..._args);
8456
- this.label = "";
8457
- this.unit = "";
8458
- this.value = "";
8459
- this.max = Number.MAX_SAFE_INTEGER;
8460
- this.min = 0;
8461
- this.required = false;
8462
8475
  this.disabled = false;
8463
- this.hasError = false;
8476
+ this._activeTab = 0;
8477
+ this._tabCount = 0;
8478
+ this._tabDisabled = [];
8479
+ this._observer = null;
8464
8480
  }
8465
8481
  static {
8466
- this.styles = [unsafeCSS(tailwind_default), axebowTheme];
8482
+ this.styles = [
8483
+ unsafeCSS(tailwind_default),
8484
+ axebowTheme,
8485
+ css`
8486
+ :host {
8487
+ display: block;
8488
+ }
8489
+ button {
8490
+ font-family: inherit;
8491
+ }
8492
+ :host([disabled]) {
8493
+ opacity: 0.6;
8494
+ pointer-events: none;
8495
+ cursor: not-allowed;
8496
+ }
8497
+ `
8498
+ ];
8499
+ }
8500
+ connectedCallback() {
8501
+ super.connectedCallback();
8502
+ this._observer = new MutationObserver(() => this._updateTabCount());
8503
+ this._observer.observe(this, {
8504
+ childList: true,
8505
+ attributes: true,
8506
+ attributeFilter: ["disabled"],
8507
+ subtree: true
8508
+ });
8509
+ this._updateTabCount();
8510
+ }
8511
+ disconnectedCallback() {
8512
+ super.disconnectedCallback();
8513
+ this._observer?.disconnect();
8514
+ }
8515
+ firstUpdated() {
8516
+ this._updateTabCount();
8517
+ }
8518
+ updated(changedProperties) {
8519
+ if (changedProperties.has("activeTab") && this.activeTab !== void 0 && this._activeTab !== this.activeTab) this._activeTab = this.activeTab;
8520
+ if (changedProperties.has("disabled")) this.toggleAttribute("disabled", this.disabled);
8521
+ }
8522
+ _updateTabCount() {
8523
+ const count = Array.from(this.children).filter((el) => el.getAttribute("slot")?.startsWith("tab-label-")).length;
8524
+ if (count !== this._tabCount) {
8525
+ if (this._activeTab >= count) this._activeTab = 0;
8526
+ this._tabCount = count;
8527
+ }
8528
+ this._tabDisabled = Array.from({ length: this._tabCount }, (_, i) => {
8529
+ return this.querySelector(`[slot="tab-label-${i}"]`)?.hasAttribute("disabled") ?? false;
8530
+ });
8531
+ }
8532
+ _selectTab(index) {
8533
+ if (this.disabled || this._tabDisabled[index]) return;
8534
+ this._activeTab = index;
8535
+ this.dispatchEvent(new CustomEvent("tab-change", {
8536
+ detail: { index },
8537
+ bubbles: true,
8538
+ composed: true
8539
+ }));
8467
8540
  }
8468
8541
  render() {
8542
+ const tabs = Array.from({ length: this._tabCount }, (_, i) => i);
8469
8543
  return html`
8470
- <div class="flex flex-col items-center gap-2 w-24.75 shrink-0">
8471
- <div class="flex items-center gap-1">
8472
- ${this.required ? html`<span class="text-(--axebow-error)">*</span>` : ""}
8473
- <span class="text-sm font-semibold text-center">${this.label}</span>
8474
- </div>
8475
- <axebow-input
8476
- controlType="integer"
8477
- .compact=${true}
8478
- .value=${this.value}
8479
- .max=${this.max}
8480
- .min=${this.min}
8481
- .disabled=${this.disabled}
8482
- .hasError=${this.hasError}
8483
- .callback=${this.callback}
8484
- fixedWidth="6.1875rem"
8485
- fixedHeight="2.5rem"
8486
- ></axebow-input>
8487
- <span class="text-sm text-(--axebow-secondary)">${this.unit}</span>
8544
+ <div class="w-293.5 flex">
8545
+ ${tabs.map((i) => {
8546
+ const active = this._activeTab === i;
8547
+ const isDisabled = this._tabDisabled[i];
8548
+ return html`
8549
+ <button
8550
+ class="shrink-0 h-8 px-8 flex items-center justify-center text-base bg-transparent
8551
+ transition-colors duration-200
8552
+ focus-visible:outline-2 focus-visible:outline-(--axebow-tertiary)
8553
+ ${isDisabled ? "opacity-50 cursor-not-allowed" : "cursor-pointer"}
8554
+ ${active ? "font-semibold text-(--axebow-primary) border-b-2 border-solid border-(--axebow-primary) border-t-0 border-l-0 border-r-0" : "font-medium text-[#8A94AE] border-b border-solid border-(--axebow-light-gray) border-t-0 border-l-0 border-r-0"}"
8555
+ ?disabled=${isDisabled}
8556
+ @click=${() => this._selectTab(i)}
8557
+ >
8558
+ <slot name="tab-label-${i}"></slot>
8559
+ </button>
8560
+ `;
8561
+ })}
8562
+ <div class="flex-1 border-b border-solid border-(--axebow-light-gray) border-t-0 border-l-0 border-r-0"></div>
8488
8563
  </div>
8564
+ ${tabs.map((i) => html`
8565
+ <div class="${this._activeTab === i ? "block" : "hidden"}">
8566
+ <slot name="tab-panel-${i}"></slot>
8567
+ </div>
8568
+ `)}
8489
8569
  `;
8490
8570
  }
8491
8571
  };
8492
- __decorate([property({ type: String })], AxebowResourceLimitInput.prototype, "label", void 0);
8493
- __decorate([property({ type: String })], AxebowResourceLimitInput.prototype, "unit", void 0);
8494
- __decorate([property({ type: String })], AxebowResourceLimitInput.prototype, "value", void 0);
8495
- __decorate([property({ type: Number })], AxebowResourceLimitInput.prototype, "max", void 0);
8496
- __decorate([property({ type: Number })], AxebowResourceLimitInput.prototype, "min", void 0);
8497
- __decorate([property({ type: Boolean })], AxebowResourceLimitInput.prototype, "required", void 0);
8498
- __decorate([property({ type: Boolean })], AxebowResourceLimitInput.prototype, "disabled", void 0);
8499
- __decorate([property({ type: Boolean })], AxebowResourceLimitInput.prototype, "hasError", void 0);
8500
- __decorate([property({ attribute: false })], AxebowResourceLimitInput.prototype, "callback", void 0);
8501
- AxebowResourceLimitInput = __decorate([customElement("axebow-resource-limit-input")], AxebowResourceLimitInput);
8572
+ __decorate([property({
8573
+ type: Boolean,
8574
+ attribute: false
8575
+ })], AxebowUnderlineTabSelector.prototype, "disabled", void 0);
8576
+ __decorate([property({ type: Number })], AxebowUnderlineTabSelector.prototype, "activeTab", void 0);
8577
+ __decorate([state()], AxebowUnderlineTabSelector.prototype, "_activeTab", void 0);
8578
+ __decorate([state()], AxebowUnderlineTabSelector.prototype, "_tabCount", void 0);
8579
+ __decorate([state()], AxebowUnderlineTabSelector.prototype, "_tabDisabled", void 0);
8580
+ AxebowUnderlineTabSelector = __decorate([customElement("axebow-underline-tab-selector")], AxebowUnderlineTabSelector);
8502
8581
  //#endregion
8503
- //#region src/components/axebow-resource-limits/axebow-resource-limits-panel.ts
8504
- var AxebowResourceLimitsPanel = class AxebowResourceLimitsPanel extends LitElement {
8582
+ //#region src/components/axebow-role-card/axebow-role-card.ts
8583
+ var AxebowRoleCard = class AxebowRoleCard extends LitElement {
8505
8584
  constructor(..._args) {
8506
8585
  super(..._args);
8507
- this.storageFields = [];
8586
+ this.name = "";
8587
+ this.logoUrl = "";
8588
+ this.descriptionPrefix = "";
8589
+ this.description = "";
8590
+ this.resourceLimitsTitle = "";
8591
+ this.resources = [];
8508
8592
  }
8509
8593
  static {
8510
- this.styles = [unsafeCSS(tailwind_default), axebowTheme];
8511
- }
8512
- _handleChange(field, e) {
8513
- const target = e.target;
8514
- let value = Math.trunc(Number(target.value));
8515
- if (value > field.max) value = field.max;
8516
- target.value = value.toString();
8517
- this.dispatchEvent(new CustomEvent("resource-limit-change", {
8518
- detail: {
8519
- key: field.key,
8520
- value
8521
- },
8522
- bubbles: true,
8523
- composed: true
8524
- }));
8594
+ this.styles = [
8595
+ unsafeCSS(tailwind_default),
8596
+ axebowTheme,
8597
+ css`
8598
+ :host {
8599
+ display: block;
8600
+ }
8601
+ sl-divider {
8602
+ --color: var(--axebow-gray);
8603
+ --width: 1px;
8604
+ }
8605
+ sl-input::part(base) {
8606
+ width: 100%;
8607
+ height: 2.5rem;
8608
+ }
8609
+ sl-input::part(input) {
8610
+ text-align: center;
8611
+ }
8612
+ `
8613
+ ];
8525
8614
  }
8526
- _renderField(field) {
8615
+ _renderResource(resource) {
8527
8616
  return html`
8528
- <axebow-resource-limit-input
8529
- label=${field.label}
8530
- unit=${field.unit}
8531
- value=${field.value?.toString() ?? ""}
8532
- .max=${field.max}
8533
- .min=${field.min ?? 0}
8534
- ?required=${field.required}
8535
- ?disabled=${field.disabled}
8536
- ?hasError=${field.hasError}
8537
- .callback=${(e) => this._handleChange(field, e)}
8538
- ></axebow-resource-limit-input>
8617
+ <div class="w-24.75 h-20.75 shrink-0 flex flex-col items-center justify-center gap-1">
8618
+ <h3 class="m-0 text-base font-semibold self-start">${resource.title}</h3>
8619
+ <sl-input class="w-full" type="number" value=${resource.value} disabled></sl-input>
8620
+ <p class="m-0 text-xs">${resource.unit}</p>
8621
+ </div>
8539
8622
  `;
8540
8623
  }
8541
8624
  render() {
8542
- if (!this.cpu || !this.memory) return html``;
8543
8625
  return html`
8544
- <div class="flex items-center flex-wrap gap-19">
8545
- <div class="flex items-start gap-6">${this._renderField(this.cpu)} ${this._renderField(this.memory)}</div>
8546
- <div class="flex items-start gap-4 w-100.5 p-4 border border-(--axebow-table-header-border) rounded-md box-border">
8547
- ${this.storageFields.map((field) => this._renderField(field))}
8626
+ <div class="w-95 h-83.25 box-border bg-white rounded-md p-4 flex flex-col">
8627
+ <div class="w-87 h-4.25 flex items-center">
8628
+ <h1 class="m-0 uppercase text-left text-base font-semibold text-(--axebow-gray) truncate">${this.name}</h1>
8629
+ </div>
8630
+ <sl-divider></sl-divider>
8631
+ <div class="w-12.5 h-12.5 shrink-0">
8632
+ <img src=${this.logoUrl} class="w-full h-full object-contain" />
8633
+ </div>
8634
+ <div class="w-87 h-12.75 mt-4 overflow-hidden">
8635
+ <p class="m-0 wrap-break-word whitespace-normal">
8636
+ <strong>${this.descriptionPrefix}</strong> ${this.description}
8637
+ </p>
8638
+ </div>
8639
+ <div class="w-27 h-4.25 mt-4 flex items-center">
8640
+ <h4 class="m-0 text-base font-semibold text-black">${this.resourceLimitsTitle}</h4>
8641
+ </div>
8642
+ <div class="w-87 h-22.75 mt-4 flex items-center gap-2.25">
8643
+ ${this.resources.map((resource, i) => html`
8644
+ ${i === 2 ? html`<div class="w-6 h-full flex items-center justify-center shrink-0">
8645
+ <axebow-icon iconName="border_horizontal" size="md"></axebow-icon>
8646
+ </div>` : ""}
8647
+ ${this._renderResource(resource)}
8648
+ `)}
8548
8649
  </div>
8549
8650
  </div>
8550
8651
  `;
8551
8652
  }
8552
8653
  };
8553
- __decorate([property({ type: Object })], AxebowResourceLimitsPanel.prototype, "cpu", void 0);
8554
- __decorate([property({ type: Object })], AxebowResourceLimitsPanel.prototype, "memory", void 0);
8555
- __decorate([property({ type: Array })], AxebowResourceLimitsPanel.prototype, "storageFields", void 0);
8556
- AxebowResourceLimitsPanel = __decorate([customElement("axebow-resource-limits-panel")], AxebowResourceLimitsPanel);
8654
+ __decorate([property({ type: String })], AxebowRoleCard.prototype, "name", void 0);
8655
+ __decorate([property({ type: String })], AxebowRoleCard.prototype, "logoUrl", void 0);
8656
+ __decorate([property({ type: String })], AxebowRoleCard.prototype, "descriptionPrefix", void 0);
8657
+ __decorate([property({ type: String })], AxebowRoleCard.prototype, "description", void 0);
8658
+ __decorate([property({ type: String })], AxebowRoleCard.prototype, "resourceLimitsTitle", void 0);
8659
+ __decorate([property({ attribute: false })], AxebowRoleCard.prototype, "resources", void 0);
8660
+ AxebowRoleCard = __decorate([customElement("axebow-role-card")], AxebowRoleCard);
8557
8661
  //#endregion
8558
- //#region src/components/axebow-selector-slider/axebow-selector-slider.ts
8559
- var AxebowSelectorSlider = class AxebowSelectorSlider extends LitElement {
8662
+ //#region src/components/axebow-time-range-panel/axebow-time-range-panel.ts
8663
+ var AxebowTimeRangePanel = class AxebowTimeRangePanel extends LitElement {
8560
8664
  constructor(..._args) {
8561
8665
  super(..._args);
8562
- this.quantity = 0;
8563
- this.minTag = 0;
8564
- this.mediumTag = "Y";
8565
- this.maxTag = "X";
8566
- this.step = 1;
8567
- this.disabled = false;
8568
- this._isDragging = false;
8666
+ this.title = "";
8667
+ this.buttonText = "";
8668
+ this.searchPlaceholder = "";
8669
+ this.searchValue = "";
8670
+ this.ranges = [];
8671
+ this.absoluteTitle = "";
8672
+ this.fromLabel = "";
8673
+ this.fromValue = "";
8674
+ this.toLabel = "";
8675
+ this.toValue = "";
8676
+ this.applyLabel = "";
8677
+ this._handleSearchChange = (e) => {
8678
+ this._emit("search-change", { value: e.detail.value });
8679
+ };
8680
+ this._handleFromChange = (e) => {
8681
+ this._emit("from-change", { value: e.target.value });
8682
+ };
8683
+ this._handleApply = () => {
8684
+ this._emit("apply");
8685
+ this.renderRoot.querySelector("sl-dropdown")?.hide();
8686
+ };
8569
8687
  }
8570
8688
  static {
8571
8689
  this.styles = [
@@ -8574,183 +8692,301 @@ var AxebowSelectorSlider = class AxebowSelectorSlider extends LitElement {
8574
8692
  css`
8575
8693
  :host {
8576
8694
  display: block;
8695
+ }
8696
+ sl-input::part(input) {
8697
+ font-size: 0.95rem;
8698
+ color: var(--axebow-strong-gray);
8699
+ background-color: #f3f4f6;
8700
+ }
8701
+ sl-input::part(base) {
8702
+ background-color: #f3f4f6;
8577
8703
  width: 100%;
8578
8704
  }
8705
+ .apply-button::part(base) {
8706
+ font-size: 0.875rem !important;
8707
+ }
8579
8708
  `
8580
8709
  ];
8581
8710
  }
8582
- get value() {
8583
- return this.quantity;
8584
- }
8585
- set value(val) {
8586
- this.quantity = val;
8711
+ _emit(eventName, detail) {
8712
+ this.dispatchEvent(new CustomEvent(eventName, {
8713
+ detail,
8714
+ bubbles: true,
8715
+ composed: true
8716
+ }));
8587
8717
  }
8588
- get _minVal() {
8589
- if (typeof this.min === "number") return this.min;
8590
- const n = Number(this.minTag);
8591
- return isNaN(n) ? 0 : n;
8718
+ _handleRangeSelect(range) {
8719
+ this._emit("range-select", { value: range.value });
8720
+ }
8721
+ _renderQuickRanges() {
8722
+ return html`
8723
+ <sl-menu class="w-53 h-112 box-border p-2 rounded-none!">
8724
+ <axebow-search
8725
+ placeholder=${this.searchPlaceholder}
8726
+ .value=${this.searchValue}
8727
+ width="12.25rem"
8728
+ height="2.5rem"
8729
+ @search-change=${this._handleSearchChange}
8730
+ ></axebow-search>
8731
+ ${this.ranges.map((range) => html`
8732
+ <sl-menu-item @click=${() => this._handleRangeSelect(range)} ?selected=${range.selected}>
8733
+ ${range.label}
8734
+ </sl-menu-item>
8735
+ `)}
8736
+ </sl-menu>
8737
+ `;
8592
8738
  }
8593
- get _maxVal() {
8594
- if (typeof this.max === "number") return this.max;
8595
- const n = Number(this.maxTag);
8596
- return isNaN(n) ? 100 : n;
8739
+ _renderAbsoluteTimeSection() {
8740
+ return html`
8741
+ <div class="w-74.75 h-112 box-border flex flex-col p-4 gap-2 bg-white border-l border-solid border-gray-100">
8742
+ <h2 class="font-bold">${this.absoluteTitle}</h2>
8743
+ <label for="from-datetime">${this.fromLabel}</label>
8744
+ <sl-input
8745
+ id="from-datetime"
8746
+ type="datetime-local"
8747
+ .value=${this.fromValue}
8748
+ @sl-change=${this._handleFromChange}
8749
+ ></sl-input>
8750
+ <label for="to-datetime">${this.toLabel}</label>
8751
+ <sl-input id="to-datetime" type="text" value=${this.toValue} disabled></sl-input>
8752
+ <axebow-button
8753
+ variant="primary"
8754
+ fixedWidth="16.421875rem"
8755
+ fixedHeight="2.5rem"
8756
+ class="mt-4 apply-button"
8757
+ @click=${this._handleApply}
8758
+ >
8759
+ ${this.applyLabel}
8760
+ </axebow-button>
8761
+ </div>
8762
+ `;
8597
8763
  }
8598
- get _numericQuantity() {
8599
- if (typeof this.quantity === "string") {
8600
- const str = this.quantity.toLowerCase();
8601
- if (str === "min") return this._minVal;
8602
- if (str === "max") return this._maxVal;
8603
- if (str === "middle") return Math.round((this._minVal + this._maxVal) / 2);
8604
- const parsed = Number(this.quantity);
8605
- if (!isNaN(parsed)) return parsed;
8606
- }
8607
- return typeof this.quantity === "number" ? this.quantity : this._minVal;
8608
- }
8609
- get _percentage() {
8610
- const min = this._minVal;
8611
- const max = this._maxVal;
8612
- if (max <= min) return 0;
8613
- return (Math.max(min, Math.min(max, this._numericQuantity)) - min) / (max - min) * 100;
8764
+ render() {
8765
+ return html`
8766
+ <div class="flex flex-col gap-2.5">
8767
+ <div class="w-70.5 h-4.25 flex items-center">
8768
+ <h1 class="m-0 text-base font-semibold">${this.title}</h1>
8769
+ </div>
8770
+ <sl-dropdown class="w-70.5">
8771
+ <axebow-button class="w-full" slot="trigger" caret fixedWidth="17.625rem" fixedHeight="2.5rem">
8772
+ ${this.buttonText}
8773
+ </axebow-button>
8774
+ <div
8775
+ class="w-127.75 h-112 box-border my-2 flex text-sm border border-solid border-(--axebow-primary) rounded-[0.375rem] overflow-hidden"
8776
+ >
8777
+ ${this._renderQuickRanges()} ${this._renderAbsoluteTimeSection()}
8778
+ </div>
8779
+ </sl-dropdown>
8780
+ </div>
8781
+ `;
8614
8782
  }
8615
- _setValue(newValue) {
8616
- const min = this._minVal;
8617
- const max = this._maxVal;
8618
- const clamped = Math.max(min, Math.min(max, newValue));
8619
- if (this._numericQuantity !== clamped) {
8620
- this.quantity = clamped;
8621
- this.dispatchEvent(new CustomEvent("change", {
8622
- detail: {
8623
- value: clamped,
8624
- quantity: clamped
8625
- },
8783
+ };
8784
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "title", void 0);
8785
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "buttonText", void 0);
8786
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "searchPlaceholder", void 0);
8787
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "searchValue", void 0);
8788
+ __decorate([property({ attribute: false })], AxebowTimeRangePanel.prototype, "ranges", void 0);
8789
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "absoluteTitle", void 0);
8790
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "fromLabel", void 0);
8791
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "fromValue", void 0);
8792
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "toLabel", void 0);
8793
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "toValue", void 0);
8794
+ __decorate([property({ type: String })], AxebowTimeRangePanel.prototype, "applyLabel", void 0);
8795
+ AxebowTimeRangePanel = __decorate([customElement("axebow-time-range-panel")], AxebowTimeRangePanel);
8796
+ //#endregion
8797
+ //#region src/components/axebow-role-container-dropdown/axebow-role-container-dropdown.ts
8798
+ var AxebowRoleContainerDropdown = class AxebowRoleContainerDropdown extends LitElement {
8799
+ constructor(..._args) {
8800
+ super(..._args);
8801
+ this.title = "";
8802
+ this.buttonText = "";
8803
+ this.allContainersLabel = "";
8804
+ this.allContainersSelected = false;
8805
+ this.roles = [];
8806
+ this.clearAllLabel = "";
8807
+ this.applyFilterLabel = "";
8808
+ this._handleClearAll = () => {
8809
+ this.dispatchEvent(new CustomEvent("clear-all", {
8626
8810
  bubbles: true,
8627
8811
  composed: true
8628
8812
  }));
8629
- }
8630
- }
8631
- _handlePointerDown(e) {
8632
- if (this.disabled) return;
8633
- this._isDragging = true;
8634
- this._updateFromPointer(e);
8635
- const handlePointerMove = (moveEv) => {
8636
- if (this._isDragging) this._updateFromPointer(moveEv);
8637
8813
  };
8638
- const handlePointerUp = () => {
8639
- this._isDragging = false;
8640
- window.removeEventListener("pointermove", handlePointerMove);
8641
- window.removeEventListener("pointerup", handlePointerUp);
8814
+ this._handleApplyFilter = () => {
8815
+ this.dispatchEvent(new CustomEvent("apply-filter", {
8816
+ bubbles: true,
8817
+ composed: true
8818
+ }));
8819
+ this.renderRoot.querySelector("sl-dropdown")?.hide();
8642
8820
  };
8643
- window.addEventListener("pointermove", handlePointerMove);
8644
- window.addEventListener("pointerup", handlePointerUp);
8645
8821
  }
8646
- _updateFromPointer(e) {
8647
- if (!this._trackContainer) return;
8648
- const rect = this._trackContainer.getBoundingClientRect();
8649
- const x = e.clientX - rect.left;
8650
- const width = rect.width;
8651
- if (width <= 0) return;
8652
- const ratio = Math.max(0, Math.min(1, x / width));
8653
- const min = this._minVal;
8654
- const rawVal = min + ratio * (this._maxVal - min);
8655
- const step = this.step || 1;
8656
- const stepped = Math.round((rawVal - min) / step) * step + min;
8657
- this._setValue(stepped);
8822
+ static {
8823
+ this.styles = [
8824
+ unsafeCSS(tailwind_default),
8825
+ axebowTheme,
8826
+ css`
8827
+ :host {
8828
+ display: block;
8829
+ }
8830
+ sl-menu-item::part(base) {
8831
+ padding-top: 0.71875rem !important;
8832
+ padding-bottom: 0.71875rem !important;
8833
+ padding-left: 0.75rem !important;
8834
+ padding-right: 0.75rem !important;
8835
+ }
8836
+ sl-checkbox::part(base) {
8837
+ display: flex;
8838
+ align-items: center;
8839
+ }
8840
+ sl-checkbox::part(control) {
8841
+ margin-top: 0 !important;
8842
+ margin-bottom: 0 !important;
8843
+ }
8844
+ sl-checkbox::part(label) {
8845
+ display: flex;
8846
+ align-items: center;
8847
+ }
8848
+ .role-container-panel::part(popup) {
8849
+ z-index: var(--sl-z-index-dropdown);
8850
+ }
8851
+ `
8852
+ ];
8658
8853
  }
8659
- _handleKeyDown(e) {
8660
- if (this.disabled) return;
8661
- const min = this._minVal;
8662
- const max = this._maxVal;
8663
- const step = this.step || 1;
8664
- const current = this._numericQuantity;
8665
- if (e.key === "ArrowRight" || e.key === "ArrowUp") {
8666
- e.preventDefault();
8667
- this._setValue(Math.min(max, current + step));
8668
- } else if (e.key === "ArrowLeft" || e.key === "ArrowDown") {
8669
- e.preventDefault();
8670
- this._setValue(Math.max(min, current - step));
8671
- } else if (e.key === "Home") {
8672
- e.preventDefault();
8673
- this._setValue(min);
8674
- } else if (e.key === "End") {
8675
- e.preventDefault();
8676
- this._setValue(max);
8677
- }
8854
+ _emitToggle(selection) {
8855
+ this.dispatchEvent(new CustomEvent("item-toggle", {
8856
+ detail: { selection },
8857
+ bubbles: true,
8858
+ composed: true
8859
+ }));
8678
8860
  }
8679
- render() {
8680
- const percent = this._percentage;
8681
- const currentVal = this._numericQuantity;
8682
- const min = this._minVal;
8683
- const max = this._maxVal;
8684
- const mid = Math.round((min + max) / 2);
8861
+ _renderAllContainersOption() {
8685
8862
  return html`
8686
- <div class="w-full flex flex-col gap-2 select-none ${this.disabled ? "opacity-50 pointer-events-none" : ""}">
8687
- <!-- Slider Track Container -->
8688
- <div
8689
- class="relative w-full h-8 flex items-center cursor-pointer touch-none focus:outline-none focus-visible:ring-2 focus-visible:ring-[#006BFF] rounded-full"
8690
- tabindex=${this.disabled ? -1 : 0}
8691
- role="slider"
8692
- aria-valuemin=${min}
8693
- aria-valuemax=${max}
8694
- aria-valuenow=${currentVal}
8695
- aria-valuetext=${String(currentVal)}
8696
- @pointerdown=${this._handlePointerDown}
8697
- @keydown=${this._handleKeyDown}
8863
+ <sl-menu-item @click=${(e) => this._handleItemClick(e, { type: "all" })}>
8864
+ <sl-checkbox .checked=${this.allContainersSelected} @sl-change=${(e) => e.stopPropagation()}
8865
+ >${this.allContainersLabel}</sl-checkbox
8698
8866
  >
8699
- <!-- Outer track padding container for exact knob alignment -->
8700
- <div class="slider-track-container relative w-full h-3 rounded-full bg-[#C7DCFA] overflow-visible">
8701
- <!-- Active Fill Track -->
8702
- <div
8703
- class="absolute left-0 top-0 bottom-0 rounded-full bg-[#006BFF] transition-all duration-150 ease-out"
8704
- style="width: ${percent}%;"
8705
- ></div>
8706
-
8707
- <!-- Slider Thumb Knob -->
8708
- <div
8709
- class="absolute top-1/2 -translate-y-1/2 -translate-x-1/2 w-7 h-7 rounded-full bg-[#006BFF] border-2 border-white shadow-[0_2px_6px_rgba(0,0,0,0.2)] transition-all duration-150 ease-out cursor-grab active:cursor-grabbing hover:scale-105"
8710
- style="left: ${percent}%;"
8711
- ></div>
8867
+ </sl-menu-item>
8868
+ `;
8869
+ }
8870
+ _handleItemClick(e, selection) {
8871
+ e.preventDefault();
8872
+ e.stopPropagation();
8873
+ this._emitToggle(selection);
8874
+ this.renderRoot.querySelector("sl-dropdown")?.hide();
8875
+ }
8876
+ _renderInstance(role, instance, instanceIdx) {
8877
+ return html`
8878
+ <sl-menu-item
8879
+ @click=${(e) => this._handleItemClick(e, {
8880
+ type: "instance",
8881
+ role: role.name,
8882
+ instanceIdx
8883
+ })}
8884
+ >
8885
+ <sl-checkbox .checked=${instance.selected} @sl-change=${(e) => e.stopPropagation()}>
8886
+ <div class="flex items-center gap-2">
8887
+ <img src="${instance.logoUrl}" alt="role-logo" class="w-8 h-8" />
8888
+ <p>${instance.name}</p>
8889
+ </div>
8890
+ </sl-checkbox>
8891
+ ${instance.containers.length ? html`
8892
+ <div class="flex flex-col ml-4">
8893
+ ${instance.containers.map((container) => this._renderContainer(role.name, instanceIdx, container))}
8894
+ </div>
8895
+ ` : ""}
8896
+ </sl-menu-item>
8897
+ `;
8898
+ }
8899
+ _renderContainer(roleName, instanceIdx, container) {
8900
+ return html`
8901
+ <div
8902
+ class="cursor-pointer hover:bg-gray-50 p-1 rounded"
8903
+ @click=${(e) => this._handleItemClick(e, {
8904
+ type: "container",
8905
+ role: roleName,
8906
+ instanceIdx,
8907
+ container: container.name
8908
+ })}
8909
+ >
8910
+ <sl-checkbox .checked=${container.selected} @sl-change=${(e) => e.stopPropagation()}>
8911
+ <div class="flex items-center gap-2">
8912
+ <axebow-icon class="font-light" iconName="subdirectory_arrow_right" size="base"></axebow-icon>
8913
+ <p>${container.name}</p>
8712
8914
  </div>
8915
+ </sl-checkbox>
8916
+ </div>
8917
+ `;
8918
+ }
8919
+ _renderFooter() {
8920
+ return html`
8921
+ <div class="w-70.5 h-10.25 box-border flex items-center border-t border-solid border-(--axebow-gray)">
8922
+ <div
8923
+ class="w-34.25 h-10 box-border flex items-center text-base text-(--axebow-gray) cursor-pointer"
8924
+ style="padding: 0.71875rem 1.5rem 0.71875rem 1.75rem;"
8925
+ @click=${this._handleClearAll}
8926
+ >
8927
+ ${this.clearAllLabel}
8713
8928
  </div>
8714
-
8715
- <!-- Labels below -->
8716
- <div class="flex justify-between items-center text-sm font-semibold text-[#78787A] px-1">
8717
- <span class="w-1/3 text-left cursor-pointer" @click=${() => !this.disabled && this._setValue(min)}>
8718
- ${this.minTag}
8719
- </span>
8720
- <span class="w-1/3 text-center cursor-pointer" @click=${() => !this.disabled && this._setValue(mid)}>
8721
- ${this.mediumTag}
8722
- </span>
8723
- <span class="w-1/3 text-right cursor-pointer" @click=${() => !this.disabled && this._setValue(max)}>
8724
- ${this.maxTag}
8725
- </span>
8929
+ <span class="w-px h-full bg-(--axebow-light-gray) shrink-0"></span>
8930
+ <div
8931
+ class="w-34.25 h-10 box-border flex items-center text-base text-(--axebow-tertiary) cursor-pointer"
8932
+ style="padding: 0.71875rem 1.5rem 0.71875rem 1.75rem;"
8933
+ @click=${this._handleApplyFilter}
8934
+ >
8935
+ ${this.applyFilterLabel}
8936
+ </div>
8937
+ </div>
8938
+ `;
8939
+ }
8940
+ render() {
8941
+ return html`
8942
+ <div class="flex flex-col gap-2">
8943
+ <div class="w-70.5 h-4.25 flex items-center">
8944
+ <h1 class="m-0 text-base font-semibold">${this.title}</h1>
8726
8945
  </div>
8946
+ <sl-dropdown class="w-70.5">
8947
+ <axebow-button class="w-full" slot="trigger" caret fixedWidth="17.625rem" fixedHeight="2.5rem">
8948
+ ${this.buttonText}
8949
+ </axebow-button>
8950
+ <div
8951
+ class="role-container-panel w-70.5 h-89.25 box-border flex flex-col bg-white border border-solid border-(--axebow-tertiary) rounded-[0.375rem] overflow-hidden"
8952
+ >
8953
+ <sl-menu class="w-70.5 h-79 box-border overflow-y-auto">
8954
+ ${this._renderAllContainersOption()}
8955
+ ${this.roles.map((role) => role.instances.map((instance, instanceIdx) => this._renderInstance(role, instance, instanceIdx)))}
8956
+ </sl-menu>
8957
+ ${this._renderFooter()}
8958
+ </div>
8959
+ </sl-dropdown>
8727
8960
  </div>
8728
8961
  `;
8729
8962
  }
8730
8963
  };
8731
- __decorate([property({
8732
- type: Number,
8733
- reflect: true
8734
- })], AxebowSelectorSlider.prototype, "quantity", void 0);
8735
- __decorate([property()], AxebowSelectorSlider.prototype, "minTag", void 0);
8736
- __decorate([property()], AxebowSelectorSlider.prototype, "mediumTag", void 0);
8737
- __decorate([property()], AxebowSelectorSlider.prototype, "maxTag", void 0);
8738
- __decorate([property({ type: Number })], AxebowSelectorSlider.prototype, "min", void 0);
8739
- __decorate([property({ type: Number })], AxebowSelectorSlider.prototype, "max", void 0);
8740
- __decorate([property({ type: Number })], AxebowSelectorSlider.prototype, "step", void 0);
8741
- __decorate([property({ type: Boolean })], AxebowSelectorSlider.prototype, "disabled", void 0);
8742
- __decorate([property()], AxebowSelectorSlider.prototype, "value", null);
8743
- __decorate([query(".slider-track-container")], AxebowSelectorSlider.prototype, "_trackContainer", void 0);
8744
- AxebowSelectorSlider = __decorate([customElement("axebow-selector-slider")], AxebowSelectorSlider);
8964
+ __decorate([property({ type: String })], AxebowRoleContainerDropdown.prototype, "title", void 0);
8965
+ __decorate([property({ type: String })], AxebowRoleContainerDropdown.prototype, "buttonText", void 0);
8966
+ __decorate([property({ type: String })], AxebowRoleContainerDropdown.prototype, "allContainersLabel", void 0);
8967
+ __decorate([property({ type: Boolean })], AxebowRoleContainerDropdown.prototype, "allContainersSelected", void 0);
8968
+ __decorate([property({ attribute: false })], AxebowRoleContainerDropdown.prototype, "roles", void 0);
8969
+ __decorate([property({ type: String })], AxebowRoleContainerDropdown.prototype, "clearAllLabel", void 0);
8970
+ __decorate([property({ type: String })], AxebowRoleContainerDropdown.prototype, "applyFilterLabel", void 0);
8971
+ AxebowRoleContainerDropdown = __decorate([customElement("axebow-role-container-dropdown")], AxebowRoleContainerDropdown);
8745
8972
  //#endregion
8746
- //#region src/components/axebow-deploy-summary/axebow-deploy-summary.ts
8747
- var AxebowDeploySummary = class AxebowDeploySummary extends LitElement {
8973
+ //#region src/components/axebow-refresh-period-panel/axebow-refresh-period-panel.ts
8974
+ var AxebowRefreshPeriodPanel = class AxebowRefreshPeriodPanel extends LitElement {
8748
8975
  constructor(..._args) {
8749
8976
  super(..._args);
8750
- this.summaryTitle = "";
8751
- this.showDownloadButton = false;
8752
- this.downloadLabel = "";
8753
- this.currentStep = 0;
8977
+ this.title = "";
8978
+ this.buttonText = "";
8979
+ this.offLabel = "";
8980
+ this.offSelected = false;
8981
+ this.periods = [];
8982
+ this.refreshNowLabel = "";
8983
+ this.isManualRefreshing = false;
8984
+ this._handleRefreshNow = () => {
8985
+ this.dispatchEvent(new CustomEvent("refresh-now-click", {
8986
+ bubbles: true,
8987
+ composed: true
8988
+ }));
8989
+ };
8754
8990
  }
8755
8991
  static {
8756
8992
  this.styles = [
@@ -8759,37 +8995,420 @@ var AxebowDeploySummary = class AxebowDeploySummary extends LitElement {
8759
8995
  css`
8760
8996
  :host {
8761
8997
  display: block;
8762
- height: 100%;
8763
- }
8764
- axebow-summary-card {
8765
- display: block;
8766
- height: 100%;
8767
8998
  }
8768
- /* The plain, solid divider used between every summary section -
8769
- matches whatever separates the step titles. */
8770
- sl-divider.summary-title-divider {
8771
- --color: var(--axebow-table-header-border, #dbdde4);
8772
- --spacing: 0.75rem;
8999
+ .refresh-spin {
9000
+ animation: spin 1s linear infinite;
8773
9001
  }
8774
- /* Dashed variant used inside the autoscaling summary. */
8775
- sl-divider.summary-dashed-divider {
8776
- --color: var(--axebow-base);
8777
- --spacing: 0.75rem;
8778
- border-top-style: dashed !important;
9002
+ @keyframes spin {
9003
+ from {
9004
+ transform: rotate(0deg);
9005
+ }
9006
+ to {
9007
+ transform: rotate(360deg);
9008
+ }
8779
9009
  }
8780
9010
  `
8781
9011
  ];
8782
9012
  }
8783
- updated(changedProperties) {
8784
- super.updated(changedProperties);
8785
- if (changedProperties.has("currentStep")) {
8786
- const oldStep = changedProperties.get("currentStep");
8787
- if (oldStep !== void 0 && this.currentStep > oldStep) this._scrollToBottom();
8788
- }
9013
+ _handleSelect(value) {
9014
+ this.dispatchEvent(new CustomEvent("period-select", {
9015
+ detail: { value },
9016
+ bubbles: true,
9017
+ composed: true
9018
+ }));
9019
+ this.renderRoot.querySelector("sl-dropdown")?.hide();
8789
9020
  }
8790
- _scrollToBottom() {
8791
- setTimeout(() => {
8792
- const summaryCard = this.renderRoot.querySelector("axebow-summary-card");
9021
+ render() {
9022
+ return html`
9023
+ <div class="flex flex-col gap-2">
9024
+ <div class="w-45 h-4.25 flex items-center">
9025
+ <h1 class="m-0 text-base font-semibold">${this.title}</h1>
9026
+ </div>
9027
+ <div class="flex gap-4 items-center justify-center flex-wrap">
9028
+ <sl-dropdown class="w-45">
9029
+ <axebow-button class="w-full" slot="trigger" caret fixedWidth="11.25rem" fixedHeight="2.5rem">
9030
+ <div class="flex items-center gap-2">${this.buttonText}</div>
9031
+ </axebow-button>
9032
+ <sl-menu class="w-45 my-2">
9033
+ <sl-menu-item @click=${() => this._handleSelect(null)} ?selected=${this.offSelected}>
9034
+ <div class="flex items-center gap-2">${this.offLabel}</div>
9035
+ </sl-menu-item>
9036
+ <sl-divider></sl-divider>
9037
+ ${this.periods.map((period) => html`
9038
+ <sl-menu-item @click=${() => this._handleSelect(period.value)} ?selected=${period.selected}>
9039
+ <div class="flex items-center gap-2">${period.label}</div>
9040
+ </sl-menu-item>
9041
+ `)}
9042
+ </sl-menu>
9043
+ </sl-dropdown>
9044
+ <button
9045
+ class="text-[var(--axebow-tertiary)] flex items-center gap-2 cursor-pointer hover:opacity-80 transition-opacity ${this.isManualRefreshing ? "opacity-70" : ""}"
9046
+ @click=${this._handleRefreshNow}
9047
+ ?disabled=${this.isManualRefreshing}
9048
+ >
9049
+ <p class="font-bold">${this.refreshNowLabel}</p>
9050
+ <axebow-icon
9051
+ iconName="cached"
9052
+ size="3xl"
9053
+ iconColor="var(--axebow-tertiary)"
9054
+ class="${this.isManualRefreshing ? "refresh-spin" : ""}"
9055
+ ></axebow-icon>
9056
+ </button>
9057
+ </div>
9058
+ </div>
9059
+ `;
9060
+ }
9061
+ };
9062
+ __decorate([property({ type: String })], AxebowRefreshPeriodPanel.prototype, "title", void 0);
9063
+ __decorate([property({ type: String })], AxebowRefreshPeriodPanel.prototype, "buttonText", void 0);
9064
+ __decorate([property({ type: String })], AxebowRefreshPeriodPanel.prototype, "offLabel", void 0);
9065
+ __decorate([property({ type: Boolean })], AxebowRefreshPeriodPanel.prototype, "offSelected", void 0);
9066
+ __decorate([property({ attribute: false })], AxebowRefreshPeriodPanel.prototype, "periods", void 0);
9067
+ __decorate([property({ type: String })], AxebowRefreshPeriodPanel.prototype, "refreshNowLabel", void 0);
9068
+ __decorate([property({ type: Boolean })], AxebowRefreshPeriodPanel.prototype, "isManualRefreshing", void 0);
9069
+ AxebowRefreshPeriodPanel = __decorate([customElement("axebow-refresh-period-panel")], AxebowRefreshPeriodPanel);
9070
+ //#endregion
9071
+ //#region src/components/axebow-resource-limits/parts/axebow-resource-limit-input.ts
9072
+ var AxebowResourceLimitInput = class AxebowResourceLimitInput extends LitElement {
9073
+ constructor(..._args) {
9074
+ super(..._args);
9075
+ this.label = "";
9076
+ this.unit = "";
9077
+ this.value = "";
9078
+ this.max = Number.MAX_SAFE_INTEGER;
9079
+ this.min = 0;
9080
+ this.required = false;
9081
+ this.disabled = false;
9082
+ this.hasError = false;
9083
+ }
9084
+ static {
9085
+ this.styles = [unsafeCSS(tailwind_default), axebowTheme];
9086
+ }
9087
+ render() {
9088
+ return html`
9089
+ <div class="flex flex-col items-center gap-2 w-24.75 shrink-0">
9090
+ <div class="flex items-center gap-1">
9091
+ ${this.required ? html`<span class="text-(--axebow-error)">*</span>` : ""}
9092
+ <span class="text-sm font-semibold text-center">${this.label}</span>
9093
+ </div>
9094
+ <axebow-input
9095
+ controlType="integer"
9096
+ .compact=${true}
9097
+ .value=${this.value}
9098
+ .max=${this.max}
9099
+ .min=${this.min}
9100
+ .disabled=${this.disabled}
9101
+ .hasError=${this.hasError}
9102
+ .callback=${this.callback}
9103
+ fixedWidth="6.1875rem"
9104
+ fixedHeight="2.5rem"
9105
+ ></axebow-input>
9106
+ <span class="text-sm text-(--axebow-secondary)">${this.unit}</span>
9107
+ </div>
9108
+ `;
9109
+ }
9110
+ };
9111
+ __decorate([property({ type: String })], AxebowResourceLimitInput.prototype, "label", void 0);
9112
+ __decorate([property({ type: String })], AxebowResourceLimitInput.prototype, "unit", void 0);
9113
+ __decorate([property({ type: String })], AxebowResourceLimitInput.prototype, "value", void 0);
9114
+ __decorate([property({ type: Number })], AxebowResourceLimitInput.prototype, "max", void 0);
9115
+ __decorate([property({ type: Number })], AxebowResourceLimitInput.prototype, "min", void 0);
9116
+ __decorate([property({ type: Boolean })], AxebowResourceLimitInput.prototype, "required", void 0);
9117
+ __decorate([property({ type: Boolean })], AxebowResourceLimitInput.prototype, "disabled", void 0);
9118
+ __decorate([property({ type: Boolean })], AxebowResourceLimitInput.prototype, "hasError", void 0);
9119
+ __decorate([property({ attribute: false })], AxebowResourceLimitInput.prototype, "callback", void 0);
9120
+ AxebowResourceLimitInput = __decorate([customElement("axebow-resource-limit-input")], AxebowResourceLimitInput);
9121
+ //#endregion
9122
+ //#region src/components/axebow-resource-limits/axebow-resource-limits-panel.ts
9123
+ var AxebowResourceLimitsPanel = class AxebowResourceLimitsPanel extends LitElement {
9124
+ constructor(..._args) {
9125
+ super(..._args);
9126
+ this.storageFields = [];
9127
+ }
9128
+ static {
9129
+ this.styles = [unsafeCSS(tailwind_default), axebowTheme];
9130
+ }
9131
+ _handleChange(field, e) {
9132
+ const target = e.target;
9133
+ let value = Math.trunc(Number(target.value));
9134
+ if (value > field.max) value = field.max;
9135
+ target.value = value.toString();
9136
+ this.dispatchEvent(new CustomEvent("resource-limit-change", {
9137
+ detail: {
9138
+ key: field.key,
9139
+ value
9140
+ },
9141
+ bubbles: true,
9142
+ composed: true
9143
+ }));
9144
+ }
9145
+ _renderField(field) {
9146
+ return html`
9147
+ <axebow-resource-limit-input
9148
+ label=${field.label}
9149
+ unit=${field.unit}
9150
+ value=${field.value?.toString() ?? ""}
9151
+ .max=${field.max}
9152
+ .min=${field.min ?? 0}
9153
+ ?required=${field.required}
9154
+ ?disabled=${field.disabled}
9155
+ ?hasError=${field.hasError}
9156
+ .callback=${(e) => this._handleChange(field, e)}
9157
+ ></axebow-resource-limit-input>
9158
+ `;
9159
+ }
9160
+ render() {
9161
+ if (!this.cpu || !this.memory) return html``;
9162
+ return html`
9163
+ <div class="flex items-center flex-wrap gap-19">
9164
+ <div class="flex items-start gap-6">${this._renderField(this.cpu)} ${this._renderField(this.memory)}</div>
9165
+ <div class="flex items-start gap-4 w-100.5 p-4 border border-(--axebow-table-header-border) rounded-md box-border">
9166
+ ${this.storageFields.map((field) => this._renderField(field))}
9167
+ </div>
9168
+ </div>
9169
+ `;
9170
+ }
9171
+ };
9172
+ __decorate([property({ type: Object })], AxebowResourceLimitsPanel.prototype, "cpu", void 0);
9173
+ __decorate([property({ type: Object })], AxebowResourceLimitsPanel.prototype, "memory", void 0);
9174
+ __decorate([property({ type: Array })], AxebowResourceLimitsPanel.prototype, "storageFields", void 0);
9175
+ AxebowResourceLimitsPanel = __decorate([customElement("axebow-resource-limits-panel")], AxebowResourceLimitsPanel);
9176
+ //#endregion
9177
+ //#region src/components/axebow-selector-slider/axebow-selector-slider.ts
9178
+ var AxebowSelectorSlider = class AxebowSelectorSlider extends LitElement {
9179
+ constructor(..._args) {
9180
+ super(..._args);
9181
+ this.quantity = 0;
9182
+ this.minTag = 0;
9183
+ this.mediumTag = "Y";
9184
+ this.maxTag = "X";
9185
+ this.step = 1;
9186
+ this.disabled = false;
9187
+ this._isDragging = false;
9188
+ }
9189
+ static {
9190
+ this.styles = [
9191
+ unsafeCSS(tailwind_default),
9192
+ axebowTheme,
9193
+ css`
9194
+ :host {
9195
+ display: block;
9196
+ width: 100%;
9197
+ }
9198
+ `
9199
+ ];
9200
+ }
9201
+ get value() {
9202
+ return this.quantity;
9203
+ }
9204
+ set value(val) {
9205
+ this.quantity = val;
9206
+ }
9207
+ get _minVal() {
9208
+ if (typeof this.min === "number") return this.min;
9209
+ const n = Number(this.minTag);
9210
+ return isNaN(n) ? 0 : n;
9211
+ }
9212
+ get _maxVal() {
9213
+ if (typeof this.max === "number") return this.max;
9214
+ const n = Number(this.maxTag);
9215
+ return isNaN(n) ? 100 : n;
9216
+ }
9217
+ get _numericQuantity() {
9218
+ if (typeof this.quantity === "string") {
9219
+ const str = this.quantity.toLowerCase();
9220
+ if (str === "min") return this._minVal;
9221
+ if (str === "max") return this._maxVal;
9222
+ if (str === "middle") return Math.round((this._minVal + this._maxVal) / 2);
9223
+ const parsed = Number(this.quantity);
9224
+ if (!isNaN(parsed)) return parsed;
9225
+ }
9226
+ return typeof this.quantity === "number" ? this.quantity : this._minVal;
9227
+ }
9228
+ get _percentage() {
9229
+ const min = this._minVal;
9230
+ const max = this._maxVal;
9231
+ if (max <= min) return 0;
9232
+ return (Math.max(min, Math.min(max, this._numericQuantity)) - min) / (max - min) * 100;
9233
+ }
9234
+ _setValue(newValue) {
9235
+ const min = this._minVal;
9236
+ const max = this._maxVal;
9237
+ const clamped = Math.max(min, Math.min(max, newValue));
9238
+ if (this._numericQuantity !== clamped) {
9239
+ this.quantity = clamped;
9240
+ this.dispatchEvent(new CustomEvent("change", {
9241
+ detail: {
9242
+ value: clamped,
9243
+ quantity: clamped
9244
+ },
9245
+ bubbles: true,
9246
+ composed: true
9247
+ }));
9248
+ }
9249
+ }
9250
+ _handlePointerDown(e) {
9251
+ if (this.disabled) return;
9252
+ this._isDragging = true;
9253
+ this._updateFromPointer(e);
9254
+ const handlePointerMove = (moveEv) => {
9255
+ if (this._isDragging) this._updateFromPointer(moveEv);
9256
+ };
9257
+ const handlePointerUp = () => {
9258
+ this._isDragging = false;
9259
+ window.removeEventListener("pointermove", handlePointerMove);
9260
+ window.removeEventListener("pointerup", handlePointerUp);
9261
+ };
9262
+ window.addEventListener("pointermove", handlePointerMove);
9263
+ window.addEventListener("pointerup", handlePointerUp);
9264
+ }
9265
+ _updateFromPointer(e) {
9266
+ if (!this._trackContainer) return;
9267
+ const rect = this._trackContainer.getBoundingClientRect();
9268
+ const x = e.clientX - rect.left;
9269
+ const width = rect.width;
9270
+ if (width <= 0) return;
9271
+ const ratio = Math.max(0, Math.min(1, x / width));
9272
+ const min = this._minVal;
9273
+ const rawVal = min + ratio * (this._maxVal - min);
9274
+ const step = this.step || 1;
9275
+ const stepped = Math.round((rawVal - min) / step) * step + min;
9276
+ this._setValue(stepped);
9277
+ }
9278
+ _handleKeyDown(e) {
9279
+ if (this.disabled) return;
9280
+ const min = this._minVal;
9281
+ const max = this._maxVal;
9282
+ const step = this.step || 1;
9283
+ const current = this._numericQuantity;
9284
+ if (e.key === "ArrowRight" || e.key === "ArrowUp") {
9285
+ e.preventDefault();
9286
+ this._setValue(Math.min(max, current + step));
9287
+ } else if (e.key === "ArrowLeft" || e.key === "ArrowDown") {
9288
+ e.preventDefault();
9289
+ this._setValue(Math.max(min, current - step));
9290
+ } else if (e.key === "Home") {
9291
+ e.preventDefault();
9292
+ this._setValue(min);
9293
+ } else if (e.key === "End") {
9294
+ e.preventDefault();
9295
+ this._setValue(max);
9296
+ }
9297
+ }
9298
+ render() {
9299
+ const percent = this._percentage;
9300
+ const currentVal = this._numericQuantity;
9301
+ const min = this._minVal;
9302
+ const max = this._maxVal;
9303
+ const mid = Math.round((min + max) / 2);
9304
+ return html`
9305
+ <div class="w-full flex flex-col gap-2 select-none ${this.disabled ? "opacity-50 pointer-events-none" : ""}">
9306
+ <!-- Slider Track Container -->
9307
+ <div
9308
+ class="relative w-full h-8 flex items-center cursor-pointer touch-none focus:outline-none focus-visible:ring-2 focus-visible:ring-[#006BFF] rounded-full"
9309
+ tabindex=${this.disabled ? -1 : 0}
9310
+ role="slider"
9311
+ aria-valuemin=${min}
9312
+ aria-valuemax=${max}
9313
+ aria-valuenow=${currentVal}
9314
+ aria-valuetext=${String(currentVal)}
9315
+ @pointerdown=${this._handlePointerDown}
9316
+ @keydown=${this._handleKeyDown}
9317
+ >
9318
+ <!-- Outer track padding container for exact knob alignment -->
9319
+ <div class="slider-track-container relative w-full h-3 rounded-full bg-[#C7DCFA] overflow-visible">
9320
+ <!-- Active Fill Track -->
9321
+ <div
9322
+ class="absolute left-0 top-0 bottom-0 rounded-full bg-[#006BFF] transition-all duration-150 ease-out"
9323
+ style="width: ${percent}%;"
9324
+ ></div>
9325
+
9326
+ <!-- Slider Thumb Knob -->
9327
+ <div
9328
+ class="absolute top-1/2 -translate-y-1/2 -translate-x-1/2 w-7 h-7 rounded-full bg-[#006BFF] border-2 border-white shadow-[0_2px_6px_rgba(0,0,0,0.2)] transition-all duration-150 ease-out cursor-grab active:cursor-grabbing hover:scale-105"
9329
+ style="left: ${percent}%;"
9330
+ ></div>
9331
+ </div>
9332
+ </div>
9333
+
9334
+ <!-- Labels below -->
9335
+ <div class="flex justify-between items-center text-sm font-semibold text-[#78787A] px-1">
9336
+ <span class="w-1/3 text-left cursor-pointer" @click=${() => !this.disabled && this._setValue(min)}>
9337
+ ${this.minTag}
9338
+ </span>
9339
+ <span class="w-1/3 text-center cursor-pointer" @click=${() => !this.disabled && this._setValue(mid)}>
9340
+ ${this.mediumTag}
9341
+ </span>
9342
+ <span class="w-1/3 text-right cursor-pointer" @click=${() => !this.disabled && this._setValue(max)}>
9343
+ ${this.maxTag}
9344
+ </span>
9345
+ </div>
9346
+ </div>
9347
+ `;
9348
+ }
9349
+ };
9350
+ __decorate([property({
9351
+ type: Number,
9352
+ reflect: true
9353
+ })], AxebowSelectorSlider.prototype, "quantity", void 0);
9354
+ __decorate([property()], AxebowSelectorSlider.prototype, "minTag", void 0);
9355
+ __decorate([property()], AxebowSelectorSlider.prototype, "mediumTag", void 0);
9356
+ __decorate([property()], AxebowSelectorSlider.prototype, "maxTag", void 0);
9357
+ __decorate([property({ type: Number })], AxebowSelectorSlider.prototype, "min", void 0);
9358
+ __decorate([property({ type: Number })], AxebowSelectorSlider.prototype, "max", void 0);
9359
+ __decorate([property({ type: Number })], AxebowSelectorSlider.prototype, "step", void 0);
9360
+ __decorate([property({ type: Boolean })], AxebowSelectorSlider.prototype, "disabled", void 0);
9361
+ __decorate([property()], AxebowSelectorSlider.prototype, "value", null);
9362
+ __decorate([query(".slider-track-container")], AxebowSelectorSlider.prototype, "_trackContainer", void 0);
9363
+ AxebowSelectorSlider = __decorate([customElement("axebow-selector-slider")], AxebowSelectorSlider);
9364
+ //#endregion
9365
+ //#region src/components/axebow-deploy-summary/axebow-deploy-summary.ts
9366
+ var AxebowDeploySummary = class AxebowDeploySummary extends LitElement {
9367
+ constructor(..._args) {
9368
+ super(..._args);
9369
+ this.summaryTitle = "";
9370
+ this.showDownloadButton = false;
9371
+ this.downloadLabel = "";
9372
+ this.currentStep = 0;
9373
+ }
9374
+ static {
9375
+ this.styles = [
9376
+ unsafeCSS(tailwind_default),
9377
+ axebowTheme,
9378
+ css`
9379
+ :host {
9380
+ display: block;
9381
+ height: 100%;
9382
+ }
9383
+ axebow-summary-card {
9384
+ display: block;
9385
+ height: 100%;
9386
+ }
9387
+ /* The plain, solid divider used between every summary section -
9388
+ matches whatever separates the step titles. */
9389
+ sl-divider.summary-title-divider {
9390
+ --color: var(--axebow-table-header-border, #dbdde4);
9391
+ --spacing: 0.75rem;
9392
+ }
9393
+ /* Dashed variant used inside the autoscaling summary. */
9394
+ sl-divider.summary-dashed-divider {
9395
+ --color: var(--axebow-base);
9396
+ --spacing: 0.75rem;
9397
+ border-top-style: dashed !important;
9398
+ }
9399
+ `
9400
+ ];
9401
+ }
9402
+ updated(changedProperties) {
9403
+ super.updated(changedProperties);
9404
+ if (changedProperties.has("currentStep")) {
9405
+ const oldStep = changedProperties.get("currentStep");
9406
+ if (oldStep !== void 0 && this.currentStep > oldStep) this._scrollToBottom();
9407
+ }
9408
+ }
9409
+ _scrollToBottom() {
9410
+ setTimeout(() => {
9411
+ const summaryCard = this.renderRoot.querySelector("axebow-summary-card");
8793
9412
  if (summaryCard && summaryCard.scrollToBottom) summaryCard.scrollToBottom();
8794
9413
  const container = this.renderRoot.querySelector(".overflow-y-auto");
8795
9414
  if (container) container.scrollTop = container.scrollHeight;
@@ -10236,275 +10855,1135 @@ var AxebowResourceBoxForm = class AxebowResourceBoxForm extends LitElement {
10236
10855
  `;
10237
10856
  }
10238
10857
  render() {
10239
- const isDeleting = this.deleting;
10240
- const computedStatusColor = isDeleting ? "var(--axebow-error)" : this.statusColor;
10858
+ const isDeleting = this.deleting;
10859
+ const computedStatusColor = isDeleting ? "var(--axebow-error)" : this.statusColor;
10860
+ return html`
10861
+ <div
10862
+ class="flex flex-col gap-3 w-70.5 p-4 bg-white rounded-xl ${isDeleting ? "border border-solid border-[var(--axebow-error)]" : ""} ${isDeleting ? "pointer-events-none opacity-70 select-none" : ""} axebow-shadow-hover box-border"
10863
+ >
10864
+ <!-- Top Status Header -->
10865
+ <axebow-status
10866
+ .statusText=${this.statusText}
10867
+ .statusColor=${computedStatusColor}
10868
+ ?showTrash=${this.showTrash}
10869
+ ?deleting=${this.deleting}
10870
+ @delete=${this._handleDelete}
10871
+ ></axebow-status>
10872
+
10873
+ <!-- Form Fields List -->
10874
+ <div class="flex flex-col gap-2.5 w-full">
10875
+ ${this.items && this.items.length > 0 ? this.items.map((item) => this._renderField(isDeleting ? {
10876
+ ...item,
10877
+ type: "disabled"
10878
+ } : item)) : html`
10879
+ <div
10880
+ class="p-3 border border-dashed border-(--axebow-border-gray) rounded-lg text-center text-(--axebow-gray) text-xs"
10881
+ >
10882
+ No items configured.
10883
+ </div>
10884
+ `}
10885
+ </div>
10886
+ </div>
10887
+ `;
10888
+ }
10889
+ };
10890
+ __decorate([property({ type: String })], AxebowResourceBoxForm.prototype, "statusText", void 0);
10891
+ __decorate([property({ type: String })], AxebowResourceBoxForm.prototype, "statusColor", void 0);
10892
+ __decorate([property({ type: Boolean })], AxebowResourceBoxForm.prototype, "showTrash", void 0);
10893
+ __decorate([property({ type: Boolean })], AxebowResourceBoxForm.prototype, "deleting", void 0);
10894
+ __decorate([property({ type: Array })], AxebowResourceBoxForm.prototype, "items", void 0);
10895
+ __decorate([state()], AxebowResourceBoxForm.prototype, "_openMenuId", void 0);
10896
+ AxebowResourceBoxForm = __decorate([customElement("axebow-resource-box-form")], AxebowResourceBoxForm);
10897
+ //#endregion
10898
+ //#region src/components/axebow-manage-hyperlinks/axebow-manage-hyperlinks.ts
10899
+ var AxebowManageHyperlinks = class AxebowManageHyperlinks extends LitElement {
10900
+ constructor(..._args) {
10901
+ super(..._args);
10902
+ this.text = "";
10903
+ this.icon = "";
10904
+ this.color = "var(--axebow-tertiary)";
10905
+ this.iconColor = "";
10906
+ this.disabled = false;
10907
+ }
10908
+ static {
10909
+ this.styles = [unsafeCSS(tailwind_default), css`
10910
+ :host {
10911
+ display: inline-block;
10912
+ }
10913
+ button:hover:not(:disabled) {
10914
+ color: var(--axebow-gray) !important;
10915
+ }
10916
+ `];
10917
+ }
10918
+ _handleClick(e) {
10919
+ if (this.disabled) {
10920
+ e.preventDefault();
10921
+ e.stopPropagation();
10922
+ return;
10923
+ }
10924
+ this.dispatchEvent(new CustomEvent("hyperlink-click", {
10925
+ bubbles: true,
10926
+ composed: true,
10927
+ detail: { text: this.text }
10928
+ }));
10929
+ }
10930
+ render() {
10931
+ const buttonColor = this.color || "var(--axebow-tertiary)";
10932
+ const iconColorProp = this.iconColor || "currentColor";
10933
+ return html`
10934
+ <button
10935
+ type="button"
10936
+ ?disabled=${this.disabled}
10937
+ @click=${this._handleClick}
10938
+ style="color: ${buttonColor};"
10939
+ class="inline-flex items-center gap-1.5 bg-transparent border-none p-0 cursor-pointer font-semibold text-sm focus:outline-none transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
10940
+ >
10941
+ <span>${this.text}</span>
10942
+ ${this.icon ? html`<axebow-icon iconName="${this.icon}" iconColor="${iconColorProp}"></axebow-icon>` : ""}
10943
+ </button>`;
10944
+ }
10945
+ };
10946
+ __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "text", void 0);
10947
+ __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "icon", void 0);
10948
+ __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "color", void 0);
10949
+ __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "iconColor", void 0);
10950
+ __decorate([property({ type: Boolean })], AxebowManageHyperlinks.prototype, "disabled", void 0);
10951
+ AxebowManageHyperlinks = __decorate([customElement("axebow-manage-hyperlinks")], AxebowManageHyperlinks);
10952
+ //#endregion
10953
+ //#region src/components/axebow-box-section/axebow-box-section.ts
10954
+ var AxebowBoxSection = class AxebowBoxSection extends LitElement {
10955
+ constructor(..._args) {
10956
+ super(..._args);
10957
+ this.title = "";
10958
+ this.hyperlinks = [];
10959
+ this.showHyperlink = false;
10960
+ this.hyperlinkText = "";
10961
+ this.hyperlinkIcon = "";
10962
+ this.hyperlinkColor = "";
10963
+ this.hyperlinkDisabled = false;
10964
+ }
10965
+ static {
10966
+ this.styles = unsafeCSS(tailwind_default);
10967
+ }
10968
+ _handleItemClick(item, index) {
10969
+ if (item.onClick) item.onClick();
10970
+ this.dispatchEvent(new CustomEvent("hyperlink-click", {
10971
+ bubbles: true,
10972
+ composed: true,
10973
+ detail: {
10974
+ item,
10975
+ index,
10976
+ text: item.text
10977
+ }
10978
+ }));
10979
+ }
10980
+ render() {
10981
+ const itemsToRender = this.hyperlinks.length > 0 ? this.hyperlinks : this.showHyperlink || Boolean(this.hyperlinkText) ? [{
10982
+ text: this.hyperlinkText,
10983
+ icon: this.hyperlinkIcon,
10984
+ color: this.hyperlinkColor,
10985
+ disabled: this.hyperlinkDisabled
10986
+ }] : [];
10987
+ return html`
10988
+ <div class="flex flex-col rounded-md p-5 gap-4 bg-white">
10989
+ <div class="w-full flex justify-between items-center border-b border-solid border-[#DBDDE4] pb-3 gap-2">
10990
+ <span class="font-semibold uppercase text-(--axebow-primary)">${this.title}</span>
10991
+ <slot name="hyperlink">
10992
+ ${itemsToRender.length > 0 ? html`
10993
+ <div class="flex items-center gap-4">
10994
+ ${itemsToRender.map((item, index) => html`
10995
+ <axebow-manage-hyperlinks
10996
+ text="${item.text}"
10997
+ icon="${item.icon}"
10998
+ color="${item.color ?? ""}"
10999
+ ?disabled=${Boolean(item.disabled)}
11000
+ @hyperlink-click=${() => this._handleItemClick(item, index)}
11001
+ ></axebow-manage-hyperlinks>
11002
+ `)}
11003
+ </div>
11004
+ ` : ""}
11005
+ </slot>
11006
+ </div>
11007
+ <slot></slot>
11008
+ </div>`;
11009
+ }
11010
+ };
11011
+ __decorate([property({ type: String })], AxebowBoxSection.prototype, "title", void 0);
11012
+ __decorate([property({ type: Array })], AxebowBoxSection.prototype, "hyperlinks", void 0);
11013
+ __decorate([property({ type: Boolean })], AxebowBoxSection.prototype, "showHyperlink", void 0);
11014
+ __decorate([property({ type: String })], AxebowBoxSection.prototype, "hyperlinkText", void 0);
11015
+ __decorate([property({ type: String })], AxebowBoxSection.prototype, "hyperlinkIcon", void 0);
11016
+ __decorate([property({ type: String })], AxebowBoxSection.prototype, "hyperlinkColor", void 0);
11017
+ __decorate([property({ type: Boolean })], AxebowBoxSection.prototype, "hyperlinkDisabled", void 0);
11018
+ AxebowBoxSection = __decorate([customElement("axebow-box-section")], AxebowBoxSection);
11019
+ //#endregion
11020
+ //#region src/components/axebow-copy-box/axebow-copy-box.ts
11021
+ var AxebowCopyBox = class AxebowCopyBox extends LitElement {
11022
+ constructor(..._args) {
11023
+ super(..._args);
11024
+ this.value = "";
11025
+ this.copyValue = "";
11026
+ this.iconName = "content_copy";
11027
+ this.size = "lg";
11028
+ this.disabled = false;
11029
+ this._copied = false;
11030
+ }
11031
+ static {
11032
+ this.styles = unsafeCSS(tailwind_default);
11033
+ }
11034
+ async _handleCopy(e) {
11035
+ if (this.disabled) {
11036
+ e.preventDefault();
11037
+ e.stopPropagation();
11038
+ return;
11039
+ }
11040
+ let textToCopy = this.copyValue || this.value;
11041
+ if (!textToCopy) {
11042
+ const slot = this.shadowRoot?.querySelector("slot");
11043
+ if (slot) textToCopy = slot.assignedNodes({ flatten: true }).map((n) => n.textContent ?? "").join("").trim();
11044
+ if (!textToCopy) textToCopy = this.textContent?.trim() ?? "";
11045
+ }
11046
+ if (textToCopy) try {
11047
+ await navigator.clipboard.writeText(textToCopy);
11048
+ this._copied = true;
11049
+ setTimeout(() => {
11050
+ this._copied = false;
11051
+ }, 2e3);
11052
+ } catch (err) {
11053
+ console.error("Failed to copy text:", err);
11054
+ }
11055
+ this.dispatchEvent(new CustomEvent("copy", {
11056
+ bubbles: true,
11057
+ composed: true,
11058
+ detail: { value: textToCopy }
11059
+ }));
11060
+ }
11061
+ render() {
11062
+ const iconToShow = this._copied ? "check" : this.iconName;
11063
+ return html`
11064
+ <div
11065
+ @click=${this._handleCopy}
11066
+ class="h-10 w-10 bg-(--axebow-tertiary) hover:bg-(--axebow-gray) rounded-r-md flex items-center justify-center cursor-pointer transition-colors select-none ${this.disabled ? "opacity-50 cursor-not-allowed pointer-events-none" : ""}"
11067
+ title=${this._copied ? "Copied!" : "Copy"}
11068
+ >
11069
+ <axebow-icon iconName="${iconToShow}" iconColor="white" size="${this.size}"></axebow-icon>
11070
+ <slot class="hidden"></slot>
11071
+ </div>
11072
+ `;
11073
+ }
11074
+ };
11075
+ __decorate([property({ type: String })], AxebowCopyBox.prototype, "value", void 0);
11076
+ __decorate([property({ type: String })], AxebowCopyBox.prototype, "copyValue", void 0);
11077
+ __decorate([property({ type: String })], AxebowCopyBox.prototype, "iconName", void 0);
11078
+ __decorate([property({ type: String })], AxebowCopyBox.prototype, "size", void 0);
11079
+ __decorate([property({ type: Boolean })], AxebowCopyBox.prototype, "disabled", void 0);
11080
+ __decorate([state()], AxebowCopyBox.prototype, "_copied", void 0);
11081
+ AxebowCopyBox = __decorate([customElement("axebow-copy-box")], AxebowCopyBox);
11082
+ //#endregion
11083
+ //#region src/components/axebow-tabs-submenu/axebow-tabs-submenu.ts
11084
+ var AxebowTabsSubmenu = class AxebowTabsSubmenu extends LitElement {
11085
+ constructor(..._args) {
11086
+ super(..._args);
11087
+ this.tabs = [];
11088
+ this.activeTab = 0;
11089
+ this.disabled = false;
11090
+ this.stretch = true;
11091
+ }
11092
+ static {
11093
+ this.styles = unsafeCSS(tailwind_default);
11094
+ }
11095
+ _handleTabChange(e) {
11096
+ this.activeTab = e.detail.index;
11097
+ this.dispatchEvent(new CustomEvent("tab-change", {
11098
+ bubbles: true,
11099
+ composed: true,
11100
+ detail: e.detail
11101
+ }));
11102
+ }
11103
+ render() {
11104
+ return html`
11105
+ <axebow-tab-selector
11106
+ variant="sections-tab"
11107
+ .activeTab=${this.activeTab}
11108
+ ?disabled=${this.disabled}
11109
+ .stretch=${this.stretch}
11110
+ @tab-change=${this._handleTabChange}
11111
+ >
11112
+ ${this.tabs.map((tab, i) => html`
11113
+ <span slot="tab-label-${i}" ?disabled=${tab.disabled ?? false}>
11114
+ ${tab.label}
11115
+ </span>
11116
+ `)}
11117
+ </axebow-tab-selector>
11118
+ `;
11119
+ }
11120
+ };
11121
+ __decorate([property({ type: Array })], AxebowTabsSubmenu.prototype, "tabs", void 0);
11122
+ __decorate([property({ type: Number })], AxebowTabsSubmenu.prototype, "activeTab", void 0);
11123
+ __decorate([property({ type: Boolean })], AxebowTabsSubmenu.prototype, "disabled", void 0);
11124
+ __decorate([property({ type: Boolean })], AxebowTabsSubmenu.prototype, "stretch", void 0);
11125
+ AxebowTabsSubmenu = __decorate([customElement("axebow-tabs-submenu")], AxebowTabsSubmenu);
11126
+ //#endregion
11127
+ //#region src/components/axebow-progress-bar/axebow-progress-bar.ts
11128
+ var AxebowProgressBar = class AxebowProgressBar extends LitElement {
11129
+ constructor(..._args) {
11130
+ super(..._args);
11131
+ this.current = 0;
11132
+ this.max = 100;
11133
+ this.compact = false;
11134
+ }
11135
+ static {
11136
+ this.styles = [unsafeCSS(tailwind_default), css`
11137
+ sl-progress-bar {
11138
+ flex: 1;
11139
+ max-width: 120px;
11140
+ }
11141
+ :host([compact]) sl-progress-bar {
11142
+ flex: none;
11143
+ width: 3.75rem;
11144
+ max-width: 3.75rem;
11145
+ }
11146
+ `];
11147
+ }
11148
+ _percentage() {
11149
+ return Math.min(this.current / this.max * 100, 100);
11150
+ }
11151
+ _indicatorColor() {
11152
+ const pct = this.current / this.max * 100;
11153
+ if (pct < 70) return "var(--axebow-tertiary)";
11154
+ if (pct < 90) return "var(--axebow-warning)";
11155
+ return "var(--axebow-error)";
11156
+ }
11157
+ render() {
11158
+ return html`
11159
+ <div class="flex items-center ${this.compact ? "gap-1.25" : "gap-2 min-w-50"}">
11160
+ <span class="${this.compact ? "text-base" : "text-sm min-w-10 text-right"} text-(--axebow-gray)"
11161
+ >${this.current.toFixed(2)}</span
11162
+ >
11163
+ <sl-progress-bar
11164
+ style="--height: ${this.compact ? "0.6875rem" : "10px"}; --indicator-color: ${this._indicatorColor()};"
11165
+ value="${this._percentage()}"
11166
+ ></sl-progress-bar>
11167
+ <span class="${this.compact ? "text-base" : "text-sm min-w-10"} text-(--axebow-gray)"
11168
+ >${this.max.toFixed(2)}</span
11169
+ >
11170
+ </div>
11171
+ `;
11172
+ }
11173
+ };
11174
+ __decorate([property({ type: Number })], AxebowProgressBar.prototype, "current", void 0);
11175
+ __decorate([property({ type: Number })], AxebowProgressBar.prototype, "max", void 0);
11176
+ __decorate([property({
11177
+ type: Boolean,
11178
+ reflect: true
11179
+ })], AxebowProgressBar.prototype, "compact", void 0);
11180
+ AxebowProgressBar = __decorate([customElement("axebow-progress-bar")], AxebowProgressBar);
11181
+ //#endregion
11182
+ //#region src/components/axebow-usage-tooltip/axebow-usage-tooltip.ts
11183
+ var AxebowUsageTooltip = class AxebowUsageTooltip extends LitElement {
11184
+ constructor(..._args) {
11185
+ super(..._args);
11186
+ this.color = "var(--axebow-primary)";
11187
+ this.storageLabel = "";
11188
+ this.volatileLabel = "";
11189
+ this.nonRepPersLabel = "";
11190
+ this.persistentRepLabel = "";
11191
+ }
11192
+ static {
11193
+ this.styles = [unsafeCSS(tailwind_default), css`
11194
+ :host {
11195
+ display: flex;
11196
+ align-items: center;
11197
+ justify-content: center;
11198
+ }
11199
+ axebow-tooltip::part(body) {
11200
+ background-color: var(--axebow-white);
11201
+ color: var(--axebow-primary);
11202
+ padding: 1rem;
11203
+ border: 3px solid var(--axebow-table-border);
11204
+ width: 300px;
11205
+ }
11206
+ sl-divider.dotted-divider {
11207
+ border-top: 1.5px dashed var(--axebow-light-gray);
11208
+ }
11209
+ `];
11210
+ }
11211
+ render() {
11212
+ if (!this.usage) return null;
11213
+ const { current, limit } = this.usage;
10241
11214
  return html`
10242
- <div
10243
- class="flex flex-col gap-3 w-70.5 p-4 bg-white rounded-xl ${isDeleting ? "border border-solid border-[var(--axebow-error)]" : ""} ${isDeleting ? "pointer-events-none opacity-70 select-none" : ""} axebow-shadow-hover box-border"
10244
- >
10245
- <!-- Top Status Header -->
10246
- <axebow-status
10247
- .statusText=${this.statusText}
10248
- .statusColor=${computedStatusColor}
10249
- ?showTrash=${this.showTrash}
10250
- ?deleting=${this.deleting}
10251
- @delete=${this._handleDelete}
10252
- ></axebow-status>
10253
-
10254
- <!-- Form Fields List -->
10255
- <div class="flex flex-col gap-2.5 w-full">
10256
- ${this.items && this.items.length > 0 ? this.items.map((item) => this._renderField(isDeleting ? {
10257
- ...item,
10258
- type: "disabled"
10259
- } : item)) : html`
10260
- <div
10261
- class="p-3 border border-dashed border-(--axebow-border-gray) rounded-lg text-center text-(--axebow-gray) text-xs"
10262
- >
10263
- No items configured.
10264
- </div>
10265
- `}
11215
+ <axebow-tooltip placement="right">
11216
+ <div slot="content" class="mt-3">
11217
+ <div class="flex justify-between items-center">
11218
+ <axebow-icon iconName="database" size="xl"></axebow-icon>
11219
+ <span>${this.storageLabel} </span>
11220
+ <span class="tooltip-value"> ${current.storage} / ${limit.storage.max} GB</span>
11221
+ </div>
11222
+ <sl-divider class="dotted-divider"></sl-divider>
11223
+ <div class="flex space-between ml-2 items-center gap-1">
11224
+ <axebow-icon iconName="subdirectory_arrow_right" size="xl"></axebow-icon>
11225
+ <span>${this.volatileLabel} </span>
11226
+ <span class="tooltip-value"> ${current.volatileStorage} / ${limit.volatileStorage.max} GB</span>
11227
+ </div>
11228
+ <sl-divider class="dotted-divider"></sl-divider>
11229
+ <div class="flex space-between ml-2 items-center gap-1">
11230
+ <axebow-icon iconName="subdirectory_arrow_right" size="xl"></axebow-icon>
11231
+ <span>${this.nonRepPersLabel} </span>
11232
+ <span class="tooltip-value"> ${current.nonReplicatedStorage} / ${limit.nonReplicatedStorage.max} GB</span>
11233
+ </div>
11234
+ <sl-divider class="dotted-divider"></sl-divider>
11235
+ <div class="flex space-between ml-2 items-center gap-1">
11236
+ <axebow-icon iconName="subdirectory_arrow_right" size="xl"></axebow-icon>
11237
+ <span>${this.persistentRepLabel} </span>
11238
+ <span class="tooltip-value"> ${current.persistentStorage} / ${limit.persistentStorage.max} GB</span>
11239
+ </div>
10266
11240
  </div>
10267
- </div>
11241
+ <axebow-icon iconName="info" size="md" class="cursor-pointer" iconColor="${this.color}"></axebow-icon>
11242
+ </axebow-tooltip>
10268
11243
  `;
10269
11244
  }
10270
11245
  };
10271
- __decorate([property({ type: String })], AxebowResourceBoxForm.prototype, "statusText", void 0);
10272
- __decorate([property({ type: String })], AxebowResourceBoxForm.prototype, "statusColor", void 0);
10273
- __decorate([property({ type: Boolean })], AxebowResourceBoxForm.prototype, "showTrash", void 0);
10274
- __decorate([property({ type: Boolean })], AxebowResourceBoxForm.prototype, "deleting", void 0);
10275
- __decorate([property({ type: Array })], AxebowResourceBoxForm.prototype, "items", void 0);
10276
- __decorate([state()], AxebowResourceBoxForm.prototype, "_openMenuId", void 0);
10277
- AxebowResourceBoxForm = __decorate([customElement("axebow-resource-box-form")], AxebowResourceBoxForm);
11246
+ __decorate([property({ type: Object })], AxebowUsageTooltip.prototype, "usage", void 0);
11247
+ __decorate([property({ type: String })], AxebowUsageTooltip.prototype, "color", void 0);
11248
+ __decorate([property({ type: String })], AxebowUsageTooltip.prototype, "storageLabel", void 0);
11249
+ __decorate([property({ type: String })], AxebowUsageTooltip.prototype, "volatileLabel", void 0);
11250
+ __decorate([property({ type: String })], AxebowUsageTooltip.prototype, "nonRepPersLabel", void 0);
11251
+ __decorate([property({ type: String })], AxebowUsageTooltip.prototype, "persistentRepLabel", void 0);
11252
+ AxebowUsageTooltip = __decorate([customElement("axebow-usage-tooltip")], AxebowUsageTooltip);
10278
11253
  //#endregion
10279
- //#region src/components/axebow-manage-hyperlinks/axebow-manage-hyperlinks.ts
10280
- var AxebowManageHyperlinks = class AxebowManageHyperlinks extends LitElement {
11254
+ //#region src/components/axebow-instances-table/axebow-instances-table.ts
11255
+ var AxebowInstancesTable = class AxebowInstancesTable extends LitElement {
10281
11256
  constructor(..._args) {
10282
11257
  super(..._args);
10283
- this.text = "";
10284
- this.icon = "";
10285
- this.color = "var(--axebow-tertiary)";
10286
- this.iconColor = "";
10287
- this.disabled = false;
11258
+ this.instances = [];
11259
+ this.descriptionLabel = "";
11260
+ this.noInstancesLabel = "";
11261
+ this.colInstanceLabel = "";
11262
+ this.colCpuLabel = "";
11263
+ this.colMemoryLabel = "";
11264
+ this.colStorageLabel = "";
11265
+ this.colActionsLabel = "";
11266
+ this.rebootLabel = "";
11267
+ this.rebootAllLabel = "";
11268
+ this._expandedInstances = /* @__PURE__ */ new Set();
10288
11269
  }
10289
11270
  static {
10290
- this.styles = [unsafeCSS(tailwind_default), css`
10291
- :host {
10292
- display: inline-block;
10293
- }
10294
- button:hover:not(:disabled) {
10295
- color: var(--axebow-gray) !important;
10296
- }
10297
- `];
11271
+ this.styles = [
11272
+ unsafeCSS(tailwind_default),
11273
+ axebowTheme,
11274
+ css`
11275
+ :host {
11276
+ display: block;
11277
+ }
11278
+ .restart-button::part(base) {
11279
+ color: var(--axebow-tertiary);
11280
+ font-size: 0.875rem !important;
11281
+ }
11282
+ .restart-button::part(base):hover {
11283
+ color: var(--axebow-error);
11284
+ background-color: white;
11285
+ }
11286
+ .reboot-all-button::part(base) {
11287
+ color: var(--axebow-error);
11288
+ background-color: transparent;
11289
+ border-color: var(--axebow-error);
11290
+ }
11291
+ .reboot-all-button::part(base):hover {
11292
+ color: white;
11293
+ background-color: var(--axebow-error);
11294
+ border-color: var(--axebow-error);
11295
+ }
11296
+ `
11297
+ ];
10298
11298
  }
10299
- _handleClick(e) {
10300
- if (this.disabled) {
10301
- e.preventDefault();
10302
- e.stopPropagation();
10303
- return;
10304
- }
10305
- this.dispatchEvent(new CustomEvent("hyperlink-click", {
11299
+ _toggleInstance(instanceId) {
11300
+ if (this._expandedInstances.has(instanceId)) this._expandedInstances.delete(instanceId);
11301
+ else this._expandedInstances.add(instanceId);
11302
+ this.requestUpdate();
11303
+ }
11304
+ _isInstanceExpanded(instanceId) {
11305
+ return this._expandedInstances.has(instanceId);
11306
+ }
11307
+ _requestReboot(instanceName) {
11308
+ this.dispatchEvent(new CustomEvent("reboot-request", {
11309
+ detail: { instanceName },
10306
11310
  bubbles: true,
10307
- composed: true,
10308
- detail: { text: this.text }
11311
+ composed: true
10309
11312
  }));
10310
11313
  }
11314
+ _renderHeaderSeparator() {
11315
+ return html`<span class="w-px h-4 bg-(--axebow-gray) shrink-0"></span>`;
11316
+ }
11317
+ _renderHeader() {
11318
+ return html`
11319
+ <div class="w-186.5 h-7.25 box-border flex items-center p-1.5 gap-1 bg-white">
11320
+ <span class="w-48.5 h-4.25 text-base font-semibold text-(--axebow-primary)">${this.colInstanceLabel}</span>
11321
+ ${this._renderHeaderSeparator()}
11322
+ <span class="w-38.5 h-4.25 text-base font-semibold text-(--axebow-primary)">${this.colCpuLabel}</span>
11323
+ ${this._renderHeaderSeparator()}
11324
+ <span class="w-38.5 h-4.25 text-base font-semibold text-(--axebow-primary)">${this.colMemoryLabel}</span>
11325
+ ${this._renderHeaderSeparator()}
11326
+ <span class="w-25.5 h-4.25 text-base font-semibold text-(--axebow-primary)">${this.colStorageLabel}</span>
11327
+ ${this._renderHeaderSeparator()}
11328
+ <span class="w-25.5 h-4.25 text-base font-semibold text-(--axebow-primary)">${this.colActionsLabel}</span>
11329
+ </div>
11330
+ `;
11331
+ }
11332
+ _renderStatusBadge(text, isPositive) {
11333
+ return html`
11334
+ <div
11335
+ class="w-16.5 h-4.75 box-border flex items-center justify-center rounded ${isPositive ? "bg-(--axebow-success) text-white uppercase text-sm" : "bg-red-100 text-red-800 text-base"}"
11336
+ >
11337
+ ${text}
11338
+ </div>
11339
+ `;
11340
+ }
11341
+ _renderProgressCell(progress) {
11342
+ return html`
11343
+ <div class="w-39.5 h-4.25 box-border">
11344
+ <axebow-progress-bar compact current="${progress.current}" max="${progress.max}"></axebow-progress-bar>
11345
+ </div>
11346
+ `;
11347
+ }
11348
+ _renderStorageCell(storageLabel, usage) {
11349
+ return html`
11350
+ <div class="w-25.25 h-4.25 box-border flex items-center gap-1.5">
11351
+ <div class="w-12.75 h-4.25 box-border flex items-center text-base pl-4.25 shrink-0">${storageLabel}</div>
11352
+ <div class="w-3.5 h-3.5 flex items-center justify-center pr-3.25 shrink-0">
11353
+ <axebow-usage-tooltip
11354
+ .usage=${usage}
11355
+ storageLabel=${this.storageTooltipLabels.storage}
11356
+ volatileLabel=${this.storageTooltipLabels.volatile}
11357
+ nonRepPersLabel=${this.storageTooltipLabels.nonRepPers}
11358
+ persistentRepLabel=${this.storageTooltipLabels.persistentRep}
11359
+ ></axebow-usage-tooltip>
11360
+ </div>
11361
+ </div>
11362
+ `;
11363
+ }
11364
+ _renderInstanceRow(instance) {
11365
+ return html`
11366
+ <div
11367
+ class="w-186.5 h-14 box-border flex items-center gap-1 p-1.5 border-t border-(--axebow-table-border) cursor-pointer"
11368
+ @click="${() => this._toggleInstance(instance.id)}"
11369
+ >
11370
+ <div class="w-48 h-10 box-border flex flex-col gap-1 text-(--axebow-tertiary)">
11371
+ <div class="flex items-center gap-1 min-w-0">
11372
+ <axebow-icon
11373
+ iconName="${this._isInstanceExpanded(instance.id) ? "collapse_all" : "expand_all"}"
11374
+ iconColor="var(--axebow-tertiary)"
11375
+ size="md"
11376
+ class="shrink-0"
11377
+ ></axebow-icon>
11378
+ <span class="text-base truncate">${instance.name}</span>
11379
+ </div>
11380
+ ${this._renderStatusBadge(instance.statusLabel, instance.isRunning)}
11381
+ </div>
11382
+ ${this._renderProgressCell(instance.cpu)} ${this._renderProgressCell(instance.memory)}
11383
+ ${this._renderStorageCell(instance.storageLabel, instance.usage)}
11384
+ <div class="w-25.5 h-4.25 box-border flex items-center">
11385
+ <axebow-button
11386
+ class="restart-button"
11387
+ variant="text"
11388
+ fixedWidth="5.5625rem"
11389
+ fixedHeight="1.0625rem"
11390
+ @click="${(e) => {
11391
+ e.stopPropagation();
11392
+ this._requestReboot(instance.name);
11393
+ }}"
11394
+ >
11395
+ ${this.rebootLabel}
11396
+ </axebow-button>
11397
+ </div>
11398
+ </div>
11399
+ ${this._isInstanceExpanded(instance.id) && instance.containers.length > 0 ? instance.containers.map((container) => html`
11400
+ <div
11401
+ class="w-186.5 h-14 box-border flex items-center gap-1 p-1.5 border-t border-(--axebow-table-border)"
11402
+ >
11403
+ <div class="w-48 h-10 box-border flex flex-col gap-1">
11404
+ <div class="flex items-center gap-1 min-w-0">
11405
+ <axebow-icon iconName="subdirectory_arrow_right" size="md" class="shrink-0"></axebow-icon>
11406
+ <span class="text-base truncate">${container.name}</span>
11407
+ </div>
11408
+ ${this._renderStatusBadge(container.statusLabel, container.isReady)}
11409
+ </div>
11410
+ ${this._renderProgressCell(container.cpu)} ${this._renderProgressCell(container.memory)}
11411
+ <div class="w-25.25 h-4.25 box-border flex items-center text-base">-</div>
11412
+ <div class="w-25.5 h-4.25 box-border flex items-center text-base">-</div>
11413
+ </div>
11414
+ `) : ""}
11415
+ `;
11416
+ }
10311
11417
  render() {
10312
- const buttonColor = this.color || "var(--axebow-tertiary)";
10313
- const iconColorProp = this.iconColor || "currentColor";
11418
+ if (!this.instances.length) return html`<p>${this.noInstancesLabel}</p>`;
10314
11419
  return html`
10315
- <button
10316
- type="button"
10317
- ?disabled=${this.disabled}
10318
- @click=${this._handleClick}
10319
- style="color: ${buttonColor};"
10320
- class="inline-flex items-center gap-1.5 bg-transparent border-none p-0 cursor-pointer font-semibold text-sm focus:outline-none transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
10321
- >
10322
- <span>${this.text}</span>
10323
- ${this.icon ? html`<axebow-icon iconName="${this.icon}" iconColor="${iconColorProp}"></axebow-icon>` : ""}
10324
- </button>`;
11420
+ <p class="text-black mb-4">${this.descriptionLabel}</p>
11421
+ <div class="w-full">
11422
+ <div class="w-186.5 rounded-lg overflow-hidden border border-black/10">
11423
+ ${this._renderHeader()} ${this.instances.map((instance) => this._renderInstanceRow(instance))}
11424
+ </div>
11425
+ </div>
11426
+ <div class="flex justify-end mt-4">
11427
+ <axebow-button variant="primary" outlined class="reboot-all-button" @click="${() => this._requestReboot(null)}">
11428
+ ${this.rebootAllLabel}
11429
+ </axebow-button>
11430
+ </div>
11431
+ `;
10325
11432
  }
10326
11433
  };
10327
- __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "text", void 0);
10328
- __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "icon", void 0);
10329
- __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "color", void 0);
10330
- __decorate([property({ type: String })], AxebowManageHyperlinks.prototype, "iconColor", void 0);
10331
- __decorate([property({ type: Boolean })], AxebowManageHyperlinks.prototype, "disabled", void 0);
10332
- AxebowManageHyperlinks = __decorate([customElement("axebow-manage-hyperlinks")], AxebowManageHyperlinks);
11434
+ __decorate([property({ attribute: false })], AxebowInstancesTable.prototype, "instances", void 0);
11435
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "descriptionLabel", void 0);
11436
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "noInstancesLabel", void 0);
11437
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "colInstanceLabel", void 0);
11438
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "colCpuLabel", void 0);
11439
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "colMemoryLabel", void 0);
11440
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "colStorageLabel", void 0);
11441
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "colActionsLabel", void 0);
11442
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "rebootLabel", void 0);
11443
+ __decorate([property({ type: String })], AxebowInstancesTable.prototype, "rebootAllLabel", void 0);
11444
+ __decorate([property({ attribute: false })], AxebowInstancesTable.prototype, "storageTooltipLabels", void 0);
11445
+ __decorate([state()], AxebowInstancesTable.prototype, "_expandedInstances", void 0);
11446
+ AxebowInstancesTable = __decorate([customElement("axebow-instances-table")], AxebowInstancesTable);
10333
11447
  //#endregion
10334
- //#region src/components/axebow-box-section/axebow-box-section.ts
10335
- var AxebowBoxSection = class AxebowBoxSection extends LitElement {
11448
+ //#region src/components/axebow-tenants-table/axebow-tenants-table.ts
11449
+ var AxebowTenantsTable = class AxebowTenantsTable extends LitElement {
10336
11450
  constructor(..._args) {
10337
11451
  super(..._args);
10338
- this.title = "";
10339
- this.hyperlinks = [];
10340
- this.showHyperlink = false;
10341
- this.hyperlinkText = "";
10342
- this.hyperlinkIcon = "";
10343
- this.hyperlinkColor = "";
10344
- this.hyperlinkDisabled = false;
11452
+ this.accounts = [];
11453
+ this.noAccountsLabel = "";
11454
+ this.colAccountLabel = "";
11455
+ this.colVcpuLabel = "";
11456
+ this.colMemoryLabel = "";
11457
+ this.colStorageLabel = "";
11458
+ this._expandedAccounts = /* @__PURE__ */ new Set();
10345
11459
  }
10346
11460
  static {
10347
- this.styles = unsafeCSS(tailwind_default);
11461
+ this.styles = [unsafeCSS(tailwind_default), axebowTheme];
10348
11462
  }
10349
- _handleItemClick(item, index) {
10350
- if (item.onClick) item.onClick();
10351
- this.dispatchEvent(new CustomEvent("hyperlink-click", {
10352
- bubbles: true,
10353
- composed: true,
10354
- detail: {
10355
- item,
10356
- index,
10357
- text: item.text
10358
- }
10359
- }));
11463
+ _toggleAccount(accountName) {
11464
+ if (this._expandedAccounts.has(accountName)) this._expandedAccounts.delete(accountName);
11465
+ else this._expandedAccounts.add(accountName);
11466
+ this.requestUpdate();
11467
+ }
11468
+ _isAccountExpanded(accountName) {
11469
+ return this._expandedAccounts.has(accountName);
11470
+ }
11471
+ _renderTooltip(usage) {
11472
+ return html`
11473
+ <axebow-usage-tooltip
11474
+ .usage=${usage}
11475
+ storageLabel=${this.storageTooltipLabels.storage}
11476
+ volatileLabel=${this.storageTooltipLabels.volatile}
11477
+ nonRepPersLabel=${this.storageTooltipLabels.nonRepPers}
11478
+ persistentRepLabel=${this.storageTooltipLabels.persistentRep}
11479
+ ></axebow-usage-tooltip>
11480
+ `;
11481
+ }
11482
+ render() {
11483
+ if (!this.accounts.length) return html`<p>${this.noAccountsLabel}</p>`;
11484
+ return html`
11485
+ <table class="w-full border-collapse bg-white rounded-lg">
11486
+ <thead>
11487
+ <tr>
11488
+ <th class="border border-(--axebow-table-border) p-2 text-left rounded-lg">${this.colAccountLabel}</th>
11489
+ <th class="border border-(--axebow-table-border) p-2 text-left rounded-lg">${this.colVcpuLabel}</th>
11490
+ <th class="border border-(--axebow-table-border) p-2 text-left rounded-lg">${this.colMemoryLabel}</th>
11491
+ <th class="border border-(--axebow-table-border) p-2 text-left rounded-lg">${this.colStorageLabel}</th>
11492
+ </tr>
11493
+ </thead>
11494
+ <tbody>
11495
+ ${this.accounts.map((account) => html`
11496
+ <tr class="cursor-pointer" @click="${() => this._toggleAccount(account.name)}">
11497
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg text-(--axebow-tertiary)">
11498
+ ${this._isAccountExpanded(account.name) ? html`<axebow-icon
11499
+ iconName="collapse_all"
11500
+ class="mr-1"
11501
+ iconColor="var(--axebow-tertiary)"
11502
+ size="md"
11503
+ ></axebow-icon>` : html`<axebow-icon
11504
+ iconName="expand_all"
11505
+ class="mr-1"
11506
+ iconColor="var(--axebow-tertiary)"
11507
+ size="md"
11508
+ ></axebow-icon>`}
11509
+ ${account.name}
11510
+ </td>
11511
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">${account.cpu}</td>
11512
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">${account.memory}</td>
11513
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">
11514
+ ${account.storage} ${this._renderTooltip(account.usage)}
11515
+ </td>
11516
+ </tr>
11517
+ ${this._isAccountExpanded(account.name) ? account.environments.map((environment) => html`
11518
+ <tr>
11519
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">
11520
+ <axebow-icon iconName="subdirectory_arrow_right" class="mr-1" size="md"></axebow-icon>
11521
+ <span>${environment.name}</span>
11522
+ </td>
11523
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">${environment.cpu}</td>
11524
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">${environment.memory}</td>
11525
+ <td class="border border-(--axebow-table-border) p-2 rounded-lg">
11526
+ ${environment.storageTotal} ${this._renderTooltip(environment.usage)}
11527
+ </td>
11528
+ </tr>
11529
+ `) : ""}
11530
+ `)}
11531
+ </tbody>
11532
+ </table>
11533
+ `;
11534
+ }
11535
+ };
11536
+ __decorate([property({ attribute: false })], AxebowTenantsTable.prototype, "accounts", void 0);
11537
+ __decorate([property({ type: String })], AxebowTenantsTable.prototype, "noAccountsLabel", void 0);
11538
+ __decorate([property({ type: String })], AxebowTenantsTable.prototype, "colAccountLabel", void 0);
11539
+ __decorate([property({ type: String })], AxebowTenantsTable.prototype, "colVcpuLabel", void 0);
11540
+ __decorate([property({ type: String })], AxebowTenantsTable.prototype, "colMemoryLabel", void 0);
11541
+ __decorate([property({ type: String })], AxebowTenantsTable.prototype, "colStorageLabel", void 0);
11542
+ __decorate([property({ attribute: false })], AxebowTenantsTable.prototype, "storageTooltipLabels", void 0);
11543
+ __decorate([state()], AxebowTenantsTable.prototype, "_expandedAccounts", void 0);
11544
+ AxebowTenantsTable = __decorate([customElement("axebow-tenants-table")], AxebowTenantsTable);
11545
+ //#endregion
11546
+ //#region src/components/axebow-expandable-card/axebow-expandable-card.ts
11547
+ var AxebowExpandableCard = class AxebowExpandableCard extends LitElement {
11548
+ static {
11549
+ this.styles = [unsafeCSS(tailwind_default), css`
11550
+ :host {
11551
+ display: block;
11552
+ }
11553
+ `];
10360
11554
  }
10361
11555
  render() {
10362
- const itemsToRender = this.hyperlinks.length > 0 ? this.hyperlinks : this.showHyperlink || Boolean(this.hyperlinkText) ? [{
10363
- text: this.hyperlinkText,
10364
- icon: this.hyperlinkIcon,
10365
- color: this.hyperlinkColor,
10366
- disabled: this.hyperlinkDisabled
10367
- }] : [];
10368
11556
  return html`
10369
- <div class="flex flex-col rounded-md p-5 gap-4 bg-white">
10370
- <div class="w-full flex justify-between items-center border-b border-solid border-[#DBDDE4] pb-3 gap-2">
10371
- <span class="font-semibold uppercase text-(--axebow-primary)">${this.title}</span>
10372
- <slot name="hyperlink">
10373
- ${itemsToRender.length > 0 ? html`
10374
- <div class="flex items-center gap-4">
10375
- ${itemsToRender.map((item, index) => html`
10376
- <axebow-manage-hyperlinks
10377
- text="${item.text}"
10378
- icon="${item.icon}"
10379
- color="${item.color ?? ""}"
10380
- ?disabled=${Boolean(item.disabled)}
10381
- @hyperlink-click=${() => this._handleItemClick(item, index)}
10382
- ></axebow-manage-hyperlinks>
10383
- `)}
10384
- </div>
10385
- ` : ""}
10386
- </slot>
10387
- </div>
10388
- <slot></slot>
10389
- </div>`;
11557
+ <div class="box-border p-4 bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden">
11558
+ <slot></slot>
11559
+ </div>
11560
+ `;
10390
11561
  }
10391
11562
  };
10392
- __decorate([property({ type: String })], AxebowBoxSection.prototype, "title", void 0);
10393
- __decorate([property({ type: Array })], AxebowBoxSection.prototype, "hyperlinks", void 0);
10394
- __decorate([property({ type: Boolean })], AxebowBoxSection.prototype, "showHyperlink", void 0);
10395
- __decorate([property({ type: String })], AxebowBoxSection.prototype, "hyperlinkText", void 0);
10396
- __decorate([property({ type: String })], AxebowBoxSection.prototype, "hyperlinkIcon", void 0);
10397
- __decorate([property({ type: String })], AxebowBoxSection.prototype, "hyperlinkColor", void 0);
10398
- __decorate([property({ type: Boolean })], AxebowBoxSection.prototype, "hyperlinkDisabled", void 0);
10399
- AxebowBoxSection = __decorate([customElement("axebow-box-section")], AxebowBoxSection);
11563
+ AxebowExpandableCard = __decorate([customElement("axebow-expandable-card")], AxebowExpandableCard);
10400
11564
  //#endregion
10401
- //#region src/components/axebow-copy-box/axebow-copy-box.ts
10402
- var AxebowCopyBox = class AxebowCopyBox extends LitElement {
11565
+ //#region src/components/axebow-undeploy-card/axebow-undeploy-card.ts
11566
+ var AxebowUndeployCard = class AxebowUndeployCard extends LitElement {
10403
11567
  constructor(..._args) {
10404
11568
  super(..._args);
11569
+ this.title = "";
11570
+ this.deletePrefix = "";
11571
+ this.serviceName = "";
11572
+ this.deleteSuffix = "";
11573
+ this.warningPrefix = "";
11574
+ this.warningBold = "";
11575
+ this.confirmText = "";
11576
+ this.confirmLabelPrefix = "";
11577
+ this.confirmLabelHighlight = "";
11578
+ this.placeholder = "";
10405
11579
  this.value = "";
10406
- this.copyValue = "";
10407
- this.iconName = "content_copy";
10408
- this.size = "lg";
10409
- this.disabled = false;
10410
- this._copied = false;
11580
+ this.buttonLabel = "";
11581
+ this.buttonDisabled = false;
11582
+ this.isSubmitting = false;
11583
+ this.loadingLabel = "";
10411
11584
  }
10412
11585
  static {
10413
- this.styles = unsafeCSS(tailwind_default);
11586
+ this.styles = [
11587
+ unsafeCSS(tailwind_default),
11588
+ axebowTheme,
11589
+ css`
11590
+ :host {
11591
+ display: block;
11592
+ }
11593
+ `
11594
+ ];
10414
11595
  }
10415
- async _handleCopy(e) {
10416
- if (this.disabled) {
10417
- e.preventDefault();
10418
- e.stopPropagation();
10419
- return;
10420
- }
10421
- let textToCopy = this.copyValue || this.value;
10422
- if (!textToCopy) {
10423
- const slot = this.shadowRoot?.querySelector("slot");
10424
- if (slot) textToCopy = slot.assignedNodes({ flatten: true }).map((n) => n.textContent ?? "").join("").trim();
10425
- if (!textToCopy) textToCopy = this.textContent?.trim() ?? "";
10426
- }
10427
- if (textToCopy) try {
10428
- await navigator.clipboard.writeText(textToCopy);
10429
- this._copied = true;
10430
- setTimeout(() => {
10431
- this._copied = false;
10432
- }, 2e3);
10433
- } catch (err) {
10434
- console.error("Failed to copy text:", err);
10435
- }
10436
- this.dispatchEvent(new CustomEvent("copy", {
11596
+ _handleInput(e) {
11597
+ const target = e.target;
11598
+ this.dispatchEvent(new CustomEvent("confirm-input", {
11599
+ detail: { value: target.value },
10437
11600
  bubbles: true,
10438
- composed: true,
10439
- detail: { value: textToCopy }
11601
+ composed: true
11602
+ }));
11603
+ }
11604
+ _handleConfirm() {
11605
+ this.dispatchEvent(new CustomEvent("confirm", {
11606
+ bubbles: true,
11607
+ composed: true
10440
11608
  }));
10441
11609
  }
10442
11610
  render() {
10443
- const iconToShow = this._copied ? "check" : this.iconName;
10444
11611
  return html`
10445
- <div
10446
- @click=${this._handleCopy}
10447
- class="h-10 w-10 bg-(--axebow-tertiary) hover:bg-(--axebow-gray) rounded-r-md flex items-center justify-center cursor-pointer transition-colors select-none ${this.disabled ? "opacity-50 cursor-not-allowed pointer-events-none" : ""}"
10448
- title=${this._copied ? "Copied!" : "Copy"}
10449
- >
10450
- <axebow-icon iconName="${iconToShow}" iconColor="white" size="${this.size}"></axebow-icon>
10451
- <slot class="hidden"></slot>
11612
+ <div class="w-198.25 h-auto box-border bg-white rounded-md p-6 flex flex-col gap-8">
11613
+ <div class="w-186.25 flex gap-4">
11614
+ <div class="w-8 h-full flex flex-col items-start shrink-0">
11615
+ <div class="w-8 h-8 shrink-0 flex items-center justify-center">
11616
+ <axebow-icon iconName="error" iconColor="var(--axebow-error)" size="2rem"></axebow-icon>
10452
11617
  </div>
10453
- `;
11618
+ </div>
11619
+ <div class="flex-1 min-w-0 flex flex-col gap-6">
11620
+ <div class="w-full">
11621
+ <h2 class="m-0 text-[1.25rem] font-semibold text-black">${this.title}</h2>
11622
+ </div>
11623
+ <div class="w-full flex flex-col gap-2">
11624
+ <p class="m-0">${this.deletePrefix} <strong>${this.serviceName}</strong> ${this.deleteSuffix}</p>
11625
+ <p class="m-0">${this.warningPrefix} <strong>${this.warningBold}</strong></p>
11626
+ <p class="m-0">${this.confirmText}</p>
11627
+ </div>
11628
+ </div>
11629
+ </div>
11630
+ <div class="w-186.25 flex items-end gap-4 pl-11.75 box-border">
11631
+ <div class="w-102 flex flex-col gap-1">
11632
+ <p class="m-0 text-sm">
11633
+ ${this.confirmLabelPrefix} <span class="text-(--axebow-primary)">${this.confirmLabelHighlight}</span>
11634
+ </p>
11635
+ <axebow-input
11636
+ controlType="input"
11637
+ .value=${this.value}
11638
+ placeholder=${this.placeholder}
11639
+ .callback=${(e) => this._handleInput(e)}
11640
+ ></axebow-input>
11641
+ </div>
11642
+ <axebow-button variant="danger" .disabled=${this.buttonDisabled || this.isSubmitting} @click=${this._handleConfirm}>
11643
+ ${this.isSubmitting ? html`
11644
+ <div class="flex gap-1 items-center">
11645
+ <sl-spinner style="--indicator-color: red;"></sl-spinner>
11646
+ <p class="m-0">${this.loadingLabel}</p>
11647
+ </div>
11648
+ ` : this.buttonLabel}
11649
+ </axebow-button>
11650
+ </div>
11651
+ </div>
11652
+ `;
10454
11653
  }
10455
11654
  };
10456
- __decorate([property({ type: String })], AxebowCopyBox.prototype, "value", void 0);
10457
- __decorate([property({ type: String })], AxebowCopyBox.prototype, "copyValue", void 0);
10458
- __decorate([property({ type: String })], AxebowCopyBox.prototype, "iconName", void 0);
10459
- __decorate([property({ type: String })], AxebowCopyBox.prototype, "size", void 0);
10460
- __decorate([property({ type: Boolean })], AxebowCopyBox.prototype, "disabled", void 0);
10461
- __decorate([state()], AxebowCopyBox.prototype, "_copied", void 0);
10462
- AxebowCopyBox = __decorate([customElement("axebow-copy-box")], AxebowCopyBox);
11655
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "title", void 0);
11656
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "deletePrefix", void 0);
11657
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "serviceName", void 0);
11658
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "deleteSuffix", void 0);
11659
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "warningPrefix", void 0);
11660
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "warningBold", void 0);
11661
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "confirmText", void 0);
11662
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "confirmLabelPrefix", void 0);
11663
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "confirmLabelHighlight", void 0);
11664
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "placeholder", void 0);
11665
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "value", void 0);
11666
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "buttonLabel", void 0);
11667
+ __decorate([property({ type: Boolean })], AxebowUndeployCard.prototype, "buttonDisabled", void 0);
11668
+ __decorate([property({ type: Boolean })], AxebowUndeployCard.prototype, "isSubmitting", void 0);
11669
+ __decorate([property({ type: String })], AxebowUndeployCard.prototype, "loadingLabel", void 0);
11670
+ AxebowUndeployCard = __decorate([customElement("axebow-undeploy-card")], AxebowUndeployCard);
10463
11671
  //#endregion
10464
- //#region src/components/axebow-tabs-submenu/axebow-tabs-submenu.ts
10465
- var AxebowTabsSubmenu = class AxebowTabsSubmenu extends LitElement {
11672
+ //#region src/components/axebow-observability-container/axebow-observability-container.ts
11673
+ var AxebowObservabilityContainer = class AxebowObservabilityContainer extends LitElement {
10466
11674
  constructor(..._args) {
10467
11675
  super(..._args);
10468
- this.tabs = [];
10469
- this.activeTab = 0;
10470
- this.disabled = false;
10471
- this.stretch = true;
11676
+ this.containerName = "";
11677
+ this.isLogsOn = true;
11678
+ this.isTerminalOn = false;
11679
+ this.logsLabel = "";
11680
+ this.logsOnLabel = "";
11681
+ this.logsOffLabel = "";
11682
+ this.terminalLabel = "";
11683
+ this.terminalOnLabel = "";
11684
+ this.terminalOffLabel = "";
11685
+ this.logFilters = [];
11686
+ this.logFilterTitle = "";
11687
+ this.cleanFilterLabel = "";
11688
+ this.addFilterLabel = "";
11689
+ this.selectOptionLabel = "";
11690
+ this.filterPlaceholder = "";
11691
+ this.cleanHistoryLabel = "";
11692
+ this.followLogs = false;
11693
+ this.autoScrollLabel = "";
11694
+ this.autoScrollOnLabel = "";
11695
+ this.autoScrollOffLabel = "";
11696
+ this.logsTitle = "";
11697
+ this.terminalTitle = "";
11698
+ this.logsUrl = "";
11699
+ this.terminalUrl = "";
11700
+ this.logsIframeId = "";
11701
+ this.terminalIframeId = "";
10472
11702
  }
10473
11703
  static {
10474
- this.styles = unsafeCSS(tailwind_default);
10475
- }
10476
- _handleTabChange(e) {
10477
- this.activeTab = e.detail.index;
10478
- this.dispatchEvent(new CustomEvent("tab-change", {
10479
- bubbles: true,
10480
- composed: true,
10481
- detail: e.detail
10482
- }));
11704
+ this.styles = [
11705
+ unsafeCSS(tailwind_default),
11706
+ axebowTheme,
11707
+ css`
11708
+ sl-input::part(input) {
11709
+ font-size: 0.95rem;
11710
+ color: var(--axebow-strong-gray);
11711
+ background-color: #f3f4f6;
11712
+ }
11713
+ sl-input::part(base) {
11714
+ background-color: #f3f4f6;
11715
+ width: 100%;
11716
+ }
11717
+ .log-filter-dropdown {
11718
+ display: block;
11719
+ width: 100%;
11720
+ }
11721
+ .log-filter-dropdown::part(trigger) {
11722
+ display: block !important;
11723
+ width: 100% !important;
11724
+ }
11725
+ .log-filter-dropdown::part(panel) {
11726
+ width: 17rem !important;
11727
+ }
11728
+ sl-divider {
11729
+ height: 0.0625rem !important;
11730
+ border-top: none !important;
11731
+ background-color: var(--axebow-light-gray);
11732
+ margin-bottom: 0.90625rem !important;
11733
+ }
11734
+ `
11735
+ ];
10483
11736
  }
10484
11737
  render() {
10485
11738
  return html`
10486
- <axebow-tab-selector
10487
- variant="sections-tab"
10488
- .activeTab=${this.activeTab}
10489
- ?disabled=${this.disabled}
10490
- .stretch=${this.stretch}
10491
- @tab-change=${this._handleTabChange}
10492
- >
10493
- ${this.tabs.map((tab, i) => html`
10494
- <span slot="tab-label-${i}" ?disabled=${tab.disabled ?? false}>
10495
- ${tab.label}
10496
- </span>
10497
- `)}
10498
- </axebow-tab-selector>
10499
- `;
11739
+ <div class="w-full flex flex-col gap-4">
11740
+ ${this._renderHeader()} ${this.isLogsOn ? this._renderLogFilters() : ""}
11741
+ <div class="flex w-[73.375rem] gap-4">
11742
+ ${this.isLogsOn ? this._renderLogsIframe() : null} ${this.isTerminalOn ? this._renderTerminalIframe() : null}
11743
+ </div>
11744
+ </div>
11745
+ `;
11746
+ }
11747
+ _renderHeader() {
11748
+ return html`
11749
+ <div class="flex justify-between w-full border-b border-solid border-gray-200 pb-2 gap-4 items-center">
11750
+ <h2 class="font-semibold text-lg text-ellipsis text-(--axebow-primary)">${this.containerName}</h2>
11751
+ <div class="flex items-center gap-4">
11752
+ ${this._renderToggle(this.logsLabel, this.isLogsOn, this.logsOnLabel, this.logsOffLabel, (checked) => this._dispatch("logs-toggle", { checked }))}
11753
+ <div class="h-full w-0.25 bg-(--axebow-gray)"></div>
11754
+ ${this._renderToggle(this.terminalLabel, this.isTerminalOn, this.terminalOnLabel, this.terminalOffLabel, (checked) => this._dispatch("terminal-toggle", { checked }))}
11755
+ <div class="h-full w-0.25 bg-(--axebow-gray)"></div>
11756
+ <div class="w-6 h-6 flex items-center justify-center">
11757
+ <axebow-icon
11758
+ class="cursor-pointer"
11759
+ iconName="open_in_new"
11760
+ size="2xl"
11761
+ iconColor="var(--axebow-tertiary)"
11762
+ @click=${() => this._dispatch("open-in-new")}
11763
+ ></axebow-icon>
11764
+ </div>
11765
+ <div class="h-full w-0.25 bg-(--axebow-gray)"></div>
11766
+ <div
11767
+ class="w-6 h-6 flex items-center justify-center cursor-pointer"
11768
+ @click=${() => this._dispatch("remove-container")}
11769
+ >
11770
+ <axebow-icon iconName="cancel" size="2xl" iconColor="var(--axebow-gray)"></axebow-icon>
11771
+ </div>
11772
+ </div>
11773
+ </div>
11774
+ `;
11775
+ }
11776
+ _renderToggle(label, checked, onLabel, offLabel, onChange) {
11777
+ return html`
11778
+ <div class="flex items-center gap-2">
11779
+ <p class="m-0 text-(--axebow-tertiary) font-bold">${label}</p>
11780
+ <axebow-switch .checked=${checked} .onChange=${(checked) => onChange(checked)}></axebow-switch>
11781
+ <p class="m-0 italic text-gray-400">${checked ? onLabel : offLabel}</p>
11782
+ </div>
11783
+ `;
11784
+ }
11785
+ _renderLogFilters() {
11786
+ return html`
11787
+ <div class="flex gap-4 items-start">
11788
+ ${this.logFilters.map((_, index) => this._renderLogFilterDropdown(index))}
11789
+ <axebow-button
11790
+ class="shrink-0 mt-6.75"
11791
+ variant="primary"
11792
+ outline
11793
+ fixedWidth="7.4375rem"
11794
+ fixedHeight="2.5rem"
11795
+ @click=${() => this._dispatch("add-filter")}
11796
+ >
11797
+ ${this.addFilterLabel}
11798
+ </axebow-button>
11799
+ </div>
11800
+ `;
11801
+ }
11802
+ _renderLogFilterDropdown(index) {
11803
+ const filter = this.logFilters[index];
11804
+ return html`
11805
+ <div class="w-68 h-auto flex flex-col gap-2">
11806
+ <div class="w-68 h-4.75 flex items-center justify-between">
11807
+ <h1 class="m-0 font-bold">${this.logFilterTitle}</h1>
11808
+ <button
11809
+ class="m-0 text-base text-(--axebow-tertiary) cursor-pointer"
11810
+ @click=${() => this._dispatch("clean-filter", { index })}
11811
+ >
11812
+ ${this.cleanFilterLabel}
11813
+ </button>
11814
+ </div>
11815
+ <sl-dropdown class="log-filter-dropdown" id="log-filter-dropdown-${index}">
11816
+ <axebow-button slot="trigger" caret fixedWidth="17rem" fixedHeight="2.5rem">
11817
+ ${filter.selected ?? this.selectOptionLabel}
11818
+ </axebow-button>
11819
+ <sl-menu class="w-full my-2">
11820
+ <sl-input
11821
+ type="text"
11822
+ placeholder=${this.filterPlaceholder}
11823
+ clearable
11824
+ .value=${""}
11825
+ @sl-change=${(e) => this._handleFilterInputChange(e, index)}
11826
+ @keydown=${(e) => this._handleFilterInputKeydown(e, index)}
11827
+ ></sl-input>
11828
+ ${filter.options.map((option) => html`
11829
+ <sl-menu-item @click=${() => this._selectFilterOption(index, option)}>${option}</sl-menu-item>
11830
+ `)}
11831
+ ${filter.options.length > 0 ? html`
11832
+ <button
11833
+ class="p-2 w-full border-t border-solid border-gray-200 text-center text-gray-500 hover:bg-gray-100 cursor-pointer"
11834
+ @click=${() => this._cleanFilterHistory(index)}
11835
+ >
11836
+ ${this.cleanHistoryLabel}
11837
+ </button>
11838
+ ` : null}
11839
+ </sl-menu>
11840
+ </sl-dropdown>
11841
+ </div>
11842
+ `;
11843
+ }
11844
+ _renderLogsIframe() {
11845
+ return html`
11846
+ <div class="flex-[563] h-full px-4 py-8 rounded-lg flex flex-col bg-white">
11847
+ <div class="flex justify-between items-center">
11848
+ <h1 class="m-0 text-base uppercase font-semibold text-(--axebow-gray)">${this.logsTitle}</h1>
11849
+ <div class="flex items-center gap-4">
11850
+ ${this._renderToggle(this.autoScrollLabel, this.followLogs, this.autoScrollOnLabel, this.autoScrollOffLabel, (checked) => this._dispatch("follow-logs-change", { checked }))}
11851
+ <div class="h-full w-0.25 bg-(--axebow-gray)"></div>
11852
+ <div class="w-6 h-6 flex items-center justify-center">
11853
+ <axebow-icon
11854
+ class="cursor-pointer"
11855
+ iconName="download_for_offline"
11856
+ size="2xl"
11857
+ iconColor="var(--axebow-tertiary)"
11858
+ @click=${() => this._dispatch("download-logs")}
11859
+ ></axebow-icon>
11860
+ </div>
11861
+ <div class="h-full w-0.25 bg-(--axebow-gray)"></div>
11862
+ <div class="w-6 h-6 flex items-center justify-center">
11863
+ <axebow-icon
11864
+ class="cursor-pointer"
11865
+ iconName="content_copy"
11866
+ size="2xl"
11867
+ iconColor="var(--axebow-tertiary)"
11868
+ @click=${() => this._copyLogs()}
11869
+ ></axebow-icon>
11870
+ </div>
11871
+ </div>
11872
+ </div>
11873
+ <sl-divider class="w-full"></sl-divider>
11874
+ <iframe
11875
+ id="${this.logsIframeId}"
11876
+ allow="storage-access"
11877
+ sandbox="${"allow-same-origin allow-scripts"}"
11878
+ class="w-full h-screen"
11879
+ src="${this.logsUrl}"
11880
+ ></iframe>
11881
+ </div>
11882
+ `;
11883
+ }
11884
+ async _copyLogs() {
11885
+ try {
11886
+ const text = (this.renderRoot?.querySelector(`#${this.logsIframeId}`))?.contentDocument?.body?.innerText ?? "";
11887
+ if (!text) {
11888
+ this._dispatch("logs-copy-failed");
11889
+ return;
11890
+ }
11891
+ await navigator.clipboard.writeText(text);
11892
+ this._dispatch("logs-copied");
11893
+ } catch (_) {
11894
+ this._dispatch("logs-copy-failed");
11895
+ }
11896
+ }
11897
+ _renderTerminalIframe() {
11898
+ return html`
11899
+ <div class="flex-595 h-full px-4 py-8 rounded-lg flex flex-col bg-white">
11900
+ <div class="flex justify-between items-center">
11901
+ <h1 class="m-0 text-base uppercase font-semibold text-(--axebow-gray)">${this.terminalTitle}</h1>
11902
+ </div>
11903
+ <sl-divider class="w-full"></sl-divider>
11904
+ <iframe
11905
+ id="${this.terminalIframeId}"
11906
+ allow="storage-access"
11907
+ sandbox="${"allow-same-origin allow-scripts"}"
11908
+ class="w-full h-screen"
11909
+ src="${this.terminalUrl}"
11910
+ ></iframe>
11911
+ </div>
11912
+ `;
11913
+ }
11914
+ _handleFilterInputChange(e, index) {
11915
+ const input = e.target;
11916
+ const value = input.value.trim();
11917
+ input.value = "";
11918
+ if (value) this._dispatch("filter-input-change", {
11919
+ index,
11920
+ value
11921
+ });
11922
+ }
11923
+ _handleFilterInputKeydown(e, index) {
11924
+ if (e.key !== "Enter") return;
11925
+ e.preventDefault();
11926
+ e.stopPropagation();
11927
+ const input = e.target;
11928
+ const value = input.value.trim();
11929
+ input.value = "";
11930
+ if (value) this._dispatch("filter-input-change", {
11931
+ index,
11932
+ value
11933
+ });
11934
+ this._closeDropdown(index);
11935
+ }
11936
+ _selectFilterOption(index, option) {
11937
+ this._dispatch("select-filter-option", {
11938
+ index,
11939
+ option
11940
+ });
11941
+ this._closeDropdown(index);
11942
+ }
11943
+ _cleanFilterHistory(index) {
11944
+ this._dispatch("clean-filter-history", { index });
11945
+ this._closeDropdown(index);
11946
+ }
11947
+ _closeDropdown(index) {
11948
+ const dropdown = this.renderRoot?.querySelector(`#log-filter-dropdown-${index}`);
11949
+ if (dropdown) dropdown.hide();
11950
+ }
11951
+ _dispatch(eventName, detail = {}) {
11952
+ this.dispatchEvent(new CustomEvent(eventName, {
11953
+ detail,
11954
+ bubbles: true,
11955
+ composed: true
11956
+ }));
10500
11957
  }
10501
11958
  };
10502
- __decorate([property({ type: Array })], AxebowTabsSubmenu.prototype, "tabs", void 0);
10503
- __decorate([property({ type: Number })], AxebowTabsSubmenu.prototype, "activeTab", void 0);
10504
- __decorate([property({ type: Boolean })], AxebowTabsSubmenu.prototype, "disabled", void 0);
10505
- __decorate([property({ type: Boolean })], AxebowTabsSubmenu.prototype, "stretch", void 0);
10506
- AxebowTabsSubmenu = __decorate([customElement("axebow-tabs-submenu")], AxebowTabsSubmenu);
11959
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "containerName", void 0);
11960
+ __decorate([property({ type: Boolean })], AxebowObservabilityContainer.prototype, "isLogsOn", void 0);
11961
+ __decorate([property({ type: Boolean })], AxebowObservabilityContainer.prototype, "isTerminalOn", void 0);
11962
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logsLabel", void 0);
11963
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logsOnLabel", void 0);
11964
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logsOffLabel", void 0);
11965
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "terminalLabel", void 0);
11966
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "terminalOnLabel", void 0);
11967
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "terminalOffLabel", void 0);
11968
+ __decorate([property({ attribute: false })], AxebowObservabilityContainer.prototype, "logFilters", void 0);
11969
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logFilterTitle", void 0);
11970
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "cleanFilterLabel", void 0);
11971
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "addFilterLabel", void 0);
11972
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "selectOptionLabel", void 0);
11973
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "filterPlaceholder", void 0);
11974
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "cleanHistoryLabel", void 0);
11975
+ __decorate([property({ type: Boolean })], AxebowObservabilityContainer.prototype, "followLogs", void 0);
11976
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "autoScrollLabel", void 0);
11977
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "autoScrollOnLabel", void 0);
11978
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "autoScrollOffLabel", void 0);
11979
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logsTitle", void 0);
11980
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "terminalTitle", void 0);
11981
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logsUrl", void 0);
11982
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "terminalUrl", void 0);
11983
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "logsIframeId", void 0);
11984
+ __decorate([property({ type: String })], AxebowObservabilityContainer.prototype, "terminalIframeId", void 0);
11985
+ AxebowObservabilityContainer = __decorate([customElement("axebow-observability-container")], AxebowObservabilityContainer);
10507
11986
  //#endregion
10508
- export { AxebowActionsFooter, AxebowAdjustmentResourcesCounter, AxebowAlert, AxebowBanner, AxebowBaseCard, AxebowBoxSection, AxebowBreadcrumbHeader, AxebowButton, AxebowCardActionBanner, AxebowCardAttentionBanner, AxebowCardCloudLogo, AxebowCardFilter, AxebowCardFilterItem, AxebowCardFooter, AxebowCardHeader, AxebowCardResourceRow, AxebowCardResourceTable, AxebowCardSpecialLink, AxebowCardStatItem, AxebowCardStatsRow, AxebowCardStatus, AxebowCardTableHeader, AxebowCardVersionSelector, AxebowCarouselInput, AxebowCarouselSelectorItem, AxebowCarouselSelectorTenant, AxebowChannelConfigPanel, AxebowCheckboxInput, AxebowCollaboratorsDialog, AxebowCopyBox, AxebowDeployCard, AxebowDeploySummary, AxebowDialog, AxebowDragDropUploadFile, AxebowDraggableService, AxebowExpandableHeader, AxebowFilterBar, AxebowFooter, AxebowFormPanelField, AxebowGettingStartedCard, AxebowHeader, AxebowHelpBubble, AxebowIcon, AxebowInfrastructureCard, AxebowInput, AxebowInputBase, AxebowLimitsCounter, AxebowManageHyperlinks, AxebowMarketplaceCard, AxebowModalsConfirmation, AxebowMoreActions, AxebowNumberCard, AxebowNumbersSection, AxebowNumericInput, AxebowPill, AxebowProvidersInput, AxebowQuickTipButton, AxebowQuickTipSection, AxebowResourceBar, AxebowResourceBoxForm, AxebowResourceCard, AxebowResourceLimitInput, AxebowResourceLimitsPanel, AxebowResourcesCounter, AxebowRoleTooltip, AxebowRuntimeZipDialog, AxebowSearch, AxebowSearchBarFilters, AxebowSelectInput, AxebowSelectorSlider, AxebowServiceDetailHeader, AxebowServicesPanel, AxebowSidebar, AxebowStatus, AxebowStepHeader, AxebowSummaryCard, AxebowSummaryFlavors, AxebowSummaryKeyValue, AxebowSummaryLimits, AxebowSummaryStep, AxebowSummaryStepHeader, AxebowSwitch, AxebowSwitchInput, AxebowTabSelector, AxebowTabsSubmenu, AxebowTenantCard, AxebowTenantResourceTable, AxebowTextInput, AxebowTooltip, CustomHomePageBody, DEFAULT_ADD_DIALOG_LABELS, DeployModalComponent, DeployModalFooter, DeployModalHeader, DeployPageBody, STATUS_COLORS, TableChart, axebowTheme, buildAddButton, buildExternalNodeContent, buildMainNodeContent, createElement, createIcon };
11987
+ export { AxebowActionsFooter, AxebowAdjustmentResourcesCounter, AxebowAlert, AxebowBanner, AxebowBaseCard, AxebowBoxSection, AxebowBreadcrumbHeader, AxebowButton, AxebowCardActionBanner, AxebowCardAttentionBanner, AxebowCardCloudLogo, AxebowCardFilter, AxebowCardFilterItem, AxebowCardFooter, AxebowCardHeader, AxebowCardResourceRow, AxebowCardResourceTable, AxebowCardSpecialLink, AxebowCardStatItem, AxebowCardStatsRow, AxebowCardStatus, AxebowCardTableHeader, AxebowCardVersionSelector, AxebowCarouselInput, AxebowCarouselSelectorItem, AxebowCarouselSelectorTenant, AxebowChannelConfigPanel, AxebowCheckboxInput, AxebowCollaboratorsDialog, AxebowCopyBox, AxebowDeployCard, AxebowDeploySummary, AxebowDialog, AxebowDragDropUploadFile, AxebowDraggableService, AxebowExpandableCard, AxebowExpandableHeader, AxebowFilterBar, AxebowFooter, AxebowFormPanelField, AxebowGettingStartedCard, AxebowHeader, AxebowHelpBubble, AxebowIcon, AxebowInfrastructureCard, AxebowInput, AxebowInputBase, AxebowInstancesTable, AxebowLimitsCounter, AxebowManageHyperlinks, AxebowMarketplaceCard, AxebowModalsConfirmation, AxebowMoreActions, AxebowNumberCard, AxebowNumbersSection, AxebowNumericInput, AxebowObservabilityContainer, AxebowPill, AxebowProgressBar, AxebowProvidersInput, AxebowQuickTipButton, AxebowQuickTipSection, AxebowRefreshPeriodPanel, AxebowResourceBar, AxebowResourceBoxForm, AxebowResourceCard, AxebowResourceLimitInput, AxebowResourceLimitsPanel, AxebowResourcesCounter, AxebowRoleCard, AxebowRoleContainerDropdown, AxebowRoleTooltip, AxebowRuntimeZipDialog, AxebowSearch, AxebowSearchBarFilters, AxebowSelectInput, AxebowSelectorSlider, AxebowServiceDetailHeader, AxebowServicesPanel, AxebowSidebar, AxebowStatus, AxebowStepHeader, AxebowSummaryCard, AxebowSummaryFlavors, AxebowSummaryKeyValue, AxebowSummaryLimits, AxebowSummaryStep, AxebowSummaryStepHeader, AxebowSwitch, AxebowSwitchInput, AxebowTabSelector, AxebowTabsSubmenu, AxebowTenantCard, AxebowTenantResourceTable, AxebowTenantsTable, AxebowTextInput, AxebowTimeRangePanel, AxebowTooltip, AxebowUndeployCard, AxebowUnderlineTabSelector, AxebowUsageTooltip, CustomHomePageBody, DEFAULT_ADD_DIALOG_LABELS, DeployModalComponent, DeployModalFooter, DeployModalHeader, DeployPageBody, STATUS_COLORS, TableChart, axebowTheme, buildAddButton, buildExternalNodeContent, buildMainNodeContent, createElement, createIcon };
10509
11988
 
10510
11989
  //# sourceMappingURL=index.js.map