@dataengineeringformachinelearning/viking-ui 4.0.6 → 4.1.0
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.
- package/README.md +5 -5
- package/dist/README.md +5 -5
- package/dist/design-tokens.css +1 -1
- package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs +1178 -57
- package/dist/fesm2022/dataengineeringformachinelearning-viking-ui.mjs.map +1 -1
- package/dist/package.json +1 -1
- package/dist/types/dataengineeringformachinelearning-viking-ui.d.ts +120 -14
- package/dist/viking-components.css +30 -1
- package/dist/viking-ui-elements.js +634 -109
- package/dist/viking-ui.css +1 -1
- package/dist/web-components.js +964 -38
- package/dist/widget.js +2 -296
- package/package.json +1 -1
|
@@ -364,7 +364,7 @@ const attachShadowStyles = (shadow, css) => {
|
|
|
364
364
|
shadow.append(style);
|
|
365
365
|
};
|
|
366
366
|
/** Reads a boolean attribute presence/value. */
|
|
367
|
-
const readBoolAttr = (el, name) => el.hasAttribute(name) && el.getAttribute(name) !== "false";
|
|
367
|
+
const readBoolAttr$1 = (el, name) => el.hasAttribute(name) && el.getAttribute(name) !== "false";
|
|
368
368
|
/** Safely sets form value when ElementInternals is fully supported (e.g. not in jsdom). */
|
|
369
369
|
const setFormValue = (internals, value) => {
|
|
370
370
|
if (internals && typeof internals.setFormValue === "function") {
|
|
@@ -1124,14 +1124,29 @@ const VIKING_BUTTON_STYLES = `
|
|
|
1124
1124
|
.viking-btn-label {
|
|
1125
1125
|
display: inline-flex;
|
|
1126
1126
|
align-items: center;
|
|
1127
|
+
justify-content: center;
|
|
1127
1128
|
gap: var(--viking-space-1);
|
|
1128
1129
|
line-height: 1.2;
|
|
1129
1130
|
min-width: 0;
|
|
1130
|
-
justify-content: center;
|
|
1131
1131
|
text-align: center;
|
|
1132
1132
|
white-space: nowrap;
|
|
1133
1133
|
}
|
|
1134
1134
|
|
|
1135
|
+
.viking-btn-label ::slotted(*) {
|
|
1136
|
+
display: inline-flex;
|
|
1137
|
+
align-items: center;
|
|
1138
|
+
justify-content: center;
|
|
1139
|
+
flex: 0 0 auto;
|
|
1140
|
+
line-height: 1;
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
.viking-btn-label ::slotted([data-viking-icon]),
|
|
1144
|
+
.viking-btn-label ::slotted(svg),
|
|
1145
|
+
.viking-btn-label ::slotted(viking-icon) {
|
|
1146
|
+
width: var(--viking-icon-size-md);
|
|
1147
|
+
height: var(--viking-icon-size-md);
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1135
1150
|
.viking-btn-spinner {
|
|
1136
1151
|
flex: 0 0 auto;
|
|
1137
1152
|
width: var(--viking-icon-size-sm, 18px);
|
|
@@ -1659,6 +1674,11 @@ const VIKING_MODAL_STYLES = `
|
|
|
1659
1674
|
display: contents;
|
|
1660
1675
|
}
|
|
1661
1676
|
|
|
1677
|
+
.viking-modal-backdrop:not([open]) {
|
|
1678
|
+
display: none !important;
|
|
1679
|
+
pointer-events: none;
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1662
1682
|
.viking-modal-backdrop {
|
|
1663
1683
|
position: fixed;
|
|
1664
1684
|
inset: 0;
|
|
@@ -2026,7 +2046,7 @@ const VIKING_SEARCH_PALETTE_STYLES = `
|
|
|
2026
2046
|
}
|
|
2027
2047
|
`;
|
|
2028
2048
|
|
|
2029
|
-
const TONES$
|
|
2049
|
+
const TONES$3 = new Set([
|
|
2030
2050
|
"accent",
|
|
2031
2051
|
"secondary",
|
|
2032
2052
|
"success",
|
|
@@ -2070,7 +2090,7 @@ class VikingBadgeWc extends HTMLElementBase {
|
|
|
2070
2090
|
}
|
|
2071
2091
|
get tone() {
|
|
2072
2092
|
const value = (this.getAttribute("tone") ?? "");
|
|
2073
|
-
return TONES$
|
|
2093
|
+
return TONES$3.has(value) ? value : null;
|
|
2074
2094
|
}
|
|
2075
2095
|
get size() {
|
|
2076
2096
|
return this.getAttribute("size") === "sm" ? "sm" : null;
|
|
@@ -2126,14 +2146,15 @@ const VARIANTS = new Set([
|
|
|
2126
2146
|
const SIZES = new Set(["sm", "xs"]);
|
|
2127
2147
|
/**
|
|
2128
2148
|
* Framework-agnostic Viking button Web Component.
|
|
2129
|
-
* Tag: `viking-button` (
|
|
2149
|
+
* Tag: `viking-button-wc` (Angular reserves `viking-button` for its wrapper component)
|
|
2130
2150
|
*
|
|
2131
2151
|
* @example
|
|
2132
|
-
* <viking-button variant="primary">Launch</viking-button>
|
|
2152
|
+
* <viking-button-wc variant="primary">Launch</viking-button-wc>
|
|
2133
2153
|
*/
|
|
2134
2154
|
class VikingButtonWc extends HTMLElementBase {
|
|
2135
|
-
|
|
2136
|
-
static
|
|
2155
|
+
/** Reserved for Angular `viking-button` — do not register as a custom element. */
|
|
2156
|
+
static angularTag = "viking-button";
|
|
2157
|
+
static tag = "viking-button-wc";
|
|
2137
2158
|
static get observedAttributes() {
|
|
2138
2159
|
return [
|
|
2139
2160
|
"variant",
|
|
@@ -2159,7 +2180,6 @@ class VikingButtonWc extends HTMLElementBase {
|
|
|
2159
2180
|
}
|
|
2160
2181
|
connectedCallback() {
|
|
2161
2182
|
this.render();
|
|
2162
|
-
this.syncHostSemantics();
|
|
2163
2183
|
this.control?.addEventListener("click", this.onClick);
|
|
2164
2184
|
}
|
|
2165
2185
|
disconnectedCallback() {
|
|
@@ -2168,7 +2188,6 @@ class VikingButtonWc extends HTMLElementBase {
|
|
|
2168
2188
|
attributeChangedCallback() {
|
|
2169
2189
|
if (this.isConnected) {
|
|
2170
2190
|
this.render();
|
|
2171
|
-
this.syncHostSemantics();
|
|
2172
2191
|
}
|
|
2173
2192
|
}
|
|
2174
2193
|
onClick = (event) => {
|
|
@@ -2192,18 +2211,13 @@ class VikingButtonWc extends HTMLElementBase {
|
|
|
2192
2211
|
return value && SIZES.has(value) ? value : null;
|
|
2193
2212
|
}
|
|
2194
2213
|
get disabled() {
|
|
2195
|
-
return readBoolAttr(this, "disabled");
|
|
2214
|
+
return readBoolAttr$1(this, "disabled");
|
|
2196
2215
|
}
|
|
2197
2216
|
get loading() {
|
|
2198
|
-
return readBoolAttr(this, "loading");
|
|
2217
|
+
return readBoolAttr$1(this, "loading");
|
|
2199
2218
|
}
|
|
2200
2219
|
get square() {
|
|
2201
|
-
return readBoolAttr(this, "square");
|
|
2202
|
-
}
|
|
2203
|
-
syncHostSemantics() {
|
|
2204
|
-
if (!this.hasAttribute("role")) {
|
|
2205
|
-
this.setAttribute("role", this.getAttribute("href") ? "link" : "button");
|
|
2206
|
-
}
|
|
2220
|
+
return readBoolAttr$1(this, "square");
|
|
2207
2221
|
}
|
|
2208
2222
|
render() {
|
|
2209
2223
|
const href = this.getAttribute("href");
|
|
@@ -2244,10 +2258,9 @@ class VikingButtonWc extends HTMLElementBase {
|
|
|
2244
2258
|
}
|
|
2245
2259
|
const registerVikingButtonWc = () => {
|
|
2246
2260
|
defineCustomElement(VikingButtonWc.tag, VikingButtonWc);
|
|
2247
|
-
defineCustomElementAlias(VikingButtonWc.legacyTag, VikingButtonWc);
|
|
2248
2261
|
};
|
|
2249
2262
|
|
|
2250
|
-
const TONES = new Set([
|
|
2263
|
+
const TONES$2 = new Set([
|
|
2251
2264
|
"accent",
|
|
2252
2265
|
"secondary",
|
|
2253
2266
|
"success",
|
|
@@ -2290,7 +2303,7 @@ class VikingCalloutWc extends HTMLElementBase {
|
|
|
2290
2303
|
}
|
|
2291
2304
|
get tone() {
|
|
2292
2305
|
const value = (this.getAttribute("tone") ?? "info");
|
|
2293
|
-
return TONES.has(value) ? value : "info";
|
|
2306
|
+
return TONES$2.has(value) ? value : "info";
|
|
2294
2307
|
}
|
|
2295
2308
|
get dismissible() {
|
|
2296
2309
|
return (this.hasAttribute("dismissible") &&
|
|
@@ -2458,7 +2471,7 @@ class VikingFieldWc extends HTMLElementBase {
|
|
|
2458
2471
|
control.removeAttribute("error");
|
|
2459
2472
|
}
|
|
2460
2473
|
}
|
|
2461
|
-
if (readBoolAttr(this, "required")) {
|
|
2474
|
+
if (readBoolAttr$1(this, "required")) {
|
|
2462
2475
|
control.setAttribute("required", "");
|
|
2463
2476
|
}
|
|
2464
2477
|
};
|
|
@@ -2466,7 +2479,7 @@ class VikingFieldWc extends HTMLElementBase {
|
|
|
2466
2479
|
const label = this.getAttribute("label") ?? "";
|
|
2467
2480
|
const description = this.getAttribute("description") ?? "";
|
|
2468
2481
|
const error = this.getAttribute("error") ?? "";
|
|
2469
|
-
const required = readBoolAttr(this, "required");
|
|
2482
|
+
const required = readBoolAttr$1(this, "required");
|
|
2470
2483
|
this.shadow.innerHTML = `
|
|
2471
2484
|
<div class="viking-field" part="field" role="group" aria-labelledby="${this.labelId}">
|
|
2472
2485
|
${label
|
|
@@ -2566,16 +2579,16 @@ class VikingInputWc extends HTMLElementBase {
|
|
|
2566
2579
|
this.syncFormValue();
|
|
2567
2580
|
}
|
|
2568
2581
|
get disabled() {
|
|
2569
|
-
return readBoolAttr(this, "disabled");
|
|
2582
|
+
return readBoolAttr$1(this, "disabled");
|
|
2570
2583
|
}
|
|
2571
2584
|
get loading() {
|
|
2572
|
-
return readBoolAttr(this, "loading");
|
|
2585
|
+
return readBoolAttr$1(this, "loading");
|
|
2573
2586
|
}
|
|
2574
2587
|
get clearable() {
|
|
2575
|
-
return readBoolAttr(this, "clearable");
|
|
2588
|
+
return readBoolAttr$1(this, "clearable");
|
|
2576
2589
|
}
|
|
2577
2590
|
get bare() {
|
|
2578
|
-
return readBoolAttr(this, "bare");
|
|
2591
|
+
return readBoolAttr$1(this, "bare");
|
|
2579
2592
|
}
|
|
2580
2593
|
onInput = () => {
|
|
2581
2594
|
const next = this.input?.value ?? "";
|
|
@@ -2615,8 +2628,8 @@ class VikingInputWc extends HTMLElementBase {
|
|
|
2615
2628
|
const maxLength = escapeHtml(this.getAttribute("maxlength") ?? "");
|
|
2616
2629
|
const pattern = escapeHtml(this.getAttribute("pattern") ?? "");
|
|
2617
2630
|
const error = this.getAttribute("error") ?? "";
|
|
2618
|
-
const required = readBoolAttr(this, "required");
|
|
2619
|
-
const readonly = readBoolAttr(this, "readonly");
|
|
2631
|
+
const required = readBoolAttr$1(this, "required");
|
|
2632
|
+
const readonly = readBoolAttr$1(this, "readonly");
|
|
2620
2633
|
const showClear = this.clearable && value.length > 0 && !this.loading && !this.bare;
|
|
2621
2634
|
const nativeAttrs = `
|
|
2622
2635
|
${this.disabled || this.loading ? "disabled" : ""}
|
|
@@ -2674,7 +2687,7 @@ const registerVikingInputWc = () => {
|
|
|
2674
2687
|
|
|
2675
2688
|
/**
|
|
2676
2689
|
* Framework-agnostic modal Web Component using native `<dialog>` semantics.
|
|
2677
|
-
* Tag: `viking-modal` (
|
|
2690
|
+
* Tag: `viking-modal-wc` (Angular reserves `viking-modal`; alias: `viking-dialog`)
|
|
2678
2691
|
*
|
|
2679
2692
|
* @attr open - When present, shows the modal
|
|
2680
2693
|
* @attr title - Dialog title for aria-label / heading
|
|
@@ -2689,14 +2702,15 @@ const registerVikingInputWc = () => {
|
|
|
2689
2702
|
* @event viking-close - Fired when the dialog closes
|
|
2690
2703
|
*
|
|
2691
2704
|
* @example
|
|
2692
|
-
* <viking-modal title="Confirm deploy">
|
|
2705
|
+
* <viking-modal-wc title="Confirm deploy">
|
|
2693
2706
|
* <p>Push v2.0.0 to production?</p>
|
|
2694
|
-
* <viking-button slot="actions" variant="primary">Deploy</viking-button>
|
|
2695
|
-
* </viking-modal>
|
|
2707
|
+
* <viking-button-wc slot="actions" variant="primary">Deploy</viking-button-wc>
|
|
2708
|
+
* </viking-modal-wc>
|
|
2696
2709
|
*/
|
|
2697
2710
|
class VikingModalWc extends HTMLElementBase {
|
|
2698
|
-
|
|
2699
|
-
static
|
|
2711
|
+
/** Reserved for Angular `viking-modal` — do not register as a custom element. */
|
|
2712
|
+
static angularTag = "viking-modal";
|
|
2713
|
+
static tag = "viking-modal-wc";
|
|
2700
2714
|
static dialogTag = "viking-dialog";
|
|
2701
2715
|
static get observedAttributes() {
|
|
2702
2716
|
return ["open", "title", "dismissible"];
|
|
@@ -2820,7 +2834,6 @@ class VikingModalWc extends HTMLElementBase {
|
|
|
2820
2834
|
}
|
|
2821
2835
|
const registerVikingModalWc = () => {
|
|
2822
2836
|
defineCustomElement(VikingModalWc.tag, VikingModalWc);
|
|
2823
|
-
defineCustomElementAlias(VikingModalWc.legacyTag, VikingModalWc);
|
|
2824
2837
|
defineCustomElementAlias(VikingModalWc.dialogTag, VikingModalWc);
|
|
2825
2838
|
};
|
|
2826
2839
|
|
|
@@ -3034,7 +3047,7 @@ class VikingSearchPaletteWc extends HTMLElementBase {
|
|
|
3034
3047
|
}
|
|
3035
3048
|
};
|
|
3036
3049
|
bindGlobalShortcut() {
|
|
3037
|
-
if (!readBoolAttr(this, "global-shortcut")) {
|
|
3050
|
+
if (!readBoolAttr$1(this, "global-shortcut")) {
|
|
3038
3051
|
return;
|
|
3039
3052
|
}
|
|
3040
3053
|
this.globalKeyHandler = (event) => {
|
|
@@ -3223,10 +3236,571 @@ class VikingSearchPaletteWc extends HTMLElementBase {
|
|
|
3223
3236
|
});
|
|
3224
3237
|
}
|
|
3225
3238
|
}
|
|
3226
|
-
const registerVikingSearchPaletteWc = () => {
|
|
3227
|
-
defineCustomElement(VikingSearchPaletteWc.tag, VikingSearchPaletteWc);
|
|
3228
|
-
defineCustomElementAlias(VikingSearchPaletteWc.searchTag, VikingSearchPaletteWc);
|
|
3229
|
-
defineCustomElementAlias(VikingSearchPaletteWc.legacyTag, VikingSearchPaletteWc);
|
|
3239
|
+
const registerVikingSearchPaletteWc = () => {
|
|
3240
|
+
defineCustomElement(VikingSearchPaletteWc.tag, VikingSearchPaletteWc);
|
|
3241
|
+
defineCustomElementAlias(VikingSearchPaletteWc.searchTag, VikingSearchPaletteWc);
|
|
3242
|
+
defineCustomElementAlias(VikingSearchPaletteWc.legacyTag, VikingSearchPaletteWc);
|
|
3243
|
+
};
|
|
3244
|
+
|
|
3245
|
+
const TONES$1 = new Set([
|
|
3246
|
+
"accent",
|
|
3247
|
+
"secondary",
|
|
3248
|
+
"success",
|
|
3249
|
+
"warning",
|
|
3250
|
+
"danger",
|
|
3251
|
+
"info",
|
|
3252
|
+
"muted",
|
|
3253
|
+
]);
|
|
3254
|
+
/**
|
|
3255
|
+
* Framework-agnostic status page card with title/subtitle, optional status chip,
|
|
3256
|
+
* and optional action slot.
|
|
3257
|
+
* Tag: `viking-status-card` (legacy alias: `viking-status-card-wc`)
|
|
3258
|
+
*
|
|
3259
|
+
* @attr title - Card heading
|
|
3260
|
+
* @attr subtitle - Supporting body text
|
|
3261
|
+
* @attr status - Optional status chip label
|
|
3262
|
+
* @attr status-tone - accent | secondary | success | warning | danger | info | muted
|
|
3263
|
+
* @attr status-clickable - Wrap status in anchor style token (visual-only)
|
|
3264
|
+
* @attr href - Optional outbound/intra-app card link
|
|
3265
|
+
* @attr compact - Reduce padding and spacing
|
|
3266
|
+
* @attr loading - Reserved loading state class
|
|
3267
|
+
*/
|
|
3268
|
+
class VikingStatusCardWc extends HTMLElementBase {
|
|
3269
|
+
static tag = "viking-status-card";
|
|
3270
|
+
static legacyTag = "viking-status-card-wc";
|
|
3271
|
+
static get observedAttributes() {
|
|
3272
|
+
return [
|
|
3273
|
+
"title",
|
|
3274
|
+
"subtitle",
|
|
3275
|
+
"status",
|
|
3276
|
+
"status-tone",
|
|
3277
|
+
"status-dot",
|
|
3278
|
+
"href",
|
|
3279
|
+
"target",
|
|
3280
|
+
"compact",
|
|
3281
|
+
"loading",
|
|
3282
|
+
"interactive",
|
|
3283
|
+
"aria-label",
|
|
3284
|
+
];
|
|
3285
|
+
}
|
|
3286
|
+
shadow = this.attachShadow({ mode: "open" });
|
|
3287
|
+
connectedCallback() {
|
|
3288
|
+
this.render();
|
|
3289
|
+
}
|
|
3290
|
+
attributeChangedCallback() {
|
|
3291
|
+
if (this.isConnected) {
|
|
3292
|
+
this.render();
|
|
3293
|
+
}
|
|
3294
|
+
}
|
|
3295
|
+
get compact() {
|
|
3296
|
+
const compact = this.getAttribute("compact");
|
|
3297
|
+
return compact !== null && compact !== "false";
|
|
3298
|
+
}
|
|
3299
|
+
get loading() {
|
|
3300
|
+
const loading = this.getAttribute("loading");
|
|
3301
|
+
return loading !== null && loading !== "false";
|
|
3302
|
+
}
|
|
3303
|
+
get interactive() {
|
|
3304
|
+
const interactive = this.getAttribute("interactive");
|
|
3305
|
+
return interactive !== null && interactive !== "false";
|
|
3306
|
+
}
|
|
3307
|
+
get href() {
|
|
3308
|
+
return this.getAttribute("href");
|
|
3309
|
+
}
|
|
3310
|
+
get target() {
|
|
3311
|
+
return this.getAttribute("target");
|
|
3312
|
+
}
|
|
3313
|
+
get statusTone() {
|
|
3314
|
+
const raw = (this.getAttribute("status-tone") ?? "muted");
|
|
3315
|
+
return TONES$1.has(raw) ? raw : "muted";
|
|
3316
|
+
}
|
|
3317
|
+
get statusDot() {
|
|
3318
|
+
const statusDot = this.getAttribute("status-dot");
|
|
3319
|
+
return statusDot !== null && statusDot !== "false";
|
|
3320
|
+
}
|
|
3321
|
+
get cardTitle() {
|
|
3322
|
+
return this.getAttribute("title") ?? "";
|
|
3323
|
+
}
|
|
3324
|
+
get subtitle() {
|
|
3325
|
+
return this.getAttribute("subtitle") ?? "";
|
|
3326
|
+
}
|
|
3327
|
+
get status() {
|
|
3328
|
+
return this.getAttribute("status") ?? "";
|
|
3329
|
+
}
|
|
3330
|
+
render() {
|
|
3331
|
+
const hasStatus = this.status.length > 0;
|
|
3332
|
+
const title = this.cardTitle;
|
|
3333
|
+
const subtitle = this.subtitle;
|
|
3334
|
+
const compactClass = this.compact ? " status-card--compact" : "";
|
|
3335
|
+
const loadingClass = this.loading ? " status-card--loading" : "";
|
|
3336
|
+
const interactiveClass = this.interactive ? " status-card--interactive" : "";
|
|
3337
|
+
const wrapperClass = `status-card${compactClass}${loadingClass}${interactiveClass}`;
|
|
3338
|
+
const rel = this.target === "_blank" ? ' rel="noopener noreferrer"' : "";
|
|
3339
|
+
const statusDot = this.statusDot
|
|
3340
|
+
? '<span class="status-card__status-dot" aria-hidden="true"></span>'
|
|
3341
|
+
: "";
|
|
3342
|
+
const statusChip = hasStatus
|
|
3343
|
+
? `<span class="status-card__status status-card__status-${this.statusTone}" part="status">${statusDot}<span>${escapeHtml(this.status)}</span></span>`
|
|
3344
|
+
: "";
|
|
3345
|
+
const safeHref = this.href ? escapeHtml(this.href) : "";
|
|
3346
|
+
const safeLabel = escapeHtml(this.getAttribute("aria-label") ?? "");
|
|
3347
|
+
const wrapperTag = safeHref ? "a" : "div";
|
|
3348
|
+
const header = `
|
|
3349
|
+
<header class="status-card__header">
|
|
3350
|
+
<div class="status-card__title-wrap">
|
|
3351
|
+
${title
|
|
3352
|
+
? `<h3 class="status-card__title" part="title">${escapeHtml(title)}</h3>`
|
|
3353
|
+
: ""}
|
|
3354
|
+
${subtitle
|
|
3355
|
+
? `<p class="status-card__subtitle" part="subtitle">${escapeHtml(subtitle)}</p>`
|
|
3356
|
+
: ""}
|
|
3357
|
+
</div>
|
|
3358
|
+
${hasStatus || statusDot
|
|
3359
|
+
? `<div class="status-card__status-wrap">${statusChip}</div>`
|
|
3360
|
+
: ""}
|
|
3361
|
+
</header>
|
|
3362
|
+
`;
|
|
3363
|
+
this.shadow.innerHTML = `
|
|
3364
|
+
<style>
|
|
3365
|
+
${VIKING_STATUS_CARD_STYLES}
|
|
3366
|
+
</style>
|
|
3367
|
+
<${wrapperTag}
|
|
3368
|
+
class="${wrapperClass}"
|
|
3369
|
+
part="card"
|
|
3370
|
+
${safeHref ? `href="${safeHref}"` : ""}
|
|
3371
|
+
${this.target ? `target="${escapeHtml(this.target)}"` : ""}
|
|
3372
|
+
${safeHref ? rel : ""}
|
|
3373
|
+
${safeLabel ? `aria-label="${safeLabel}"` : ""}
|
|
3374
|
+
>
|
|
3375
|
+
${header}
|
|
3376
|
+
<section class="status-card__body">
|
|
3377
|
+
<slot></slot>
|
|
3378
|
+
</section>
|
|
3379
|
+
</${wrapperTag}>
|
|
3380
|
+
`;
|
|
3381
|
+
}
|
|
3382
|
+
}
|
|
3383
|
+
const VIKING_STATUS_CARD_STYLES = `
|
|
3384
|
+
:host {
|
|
3385
|
+
display: block;
|
|
3386
|
+
}
|
|
3387
|
+
|
|
3388
|
+
:host([compact]) .status-card,
|
|
3389
|
+
:host .status-card--compact {
|
|
3390
|
+
padding: var(--viking-card-padding-compact);
|
|
3391
|
+
gap: var(--viking-space-2);
|
|
3392
|
+
}
|
|
3393
|
+
|
|
3394
|
+
.status-card {
|
|
3395
|
+
display: grid;
|
|
3396
|
+
gap: var(--viking-space-3);
|
|
3397
|
+
width: 100%;
|
|
3398
|
+
padding: var(--viking-card-padding);
|
|
3399
|
+
border-radius: var(--viking-radius-lg);
|
|
3400
|
+
border: 1px solid var(--viking-border);
|
|
3401
|
+
background: var(--viking-surface);
|
|
3402
|
+
color: var(--viking-text);
|
|
3403
|
+
box-shadow: var(--viking-shadow-sm);
|
|
3404
|
+
box-sizing: border-box;
|
|
3405
|
+
position: relative;
|
|
3406
|
+
transition: var(--viking-transition-interactive);
|
|
3407
|
+
text-decoration: none;
|
|
3408
|
+
overflow: hidden;
|
|
3409
|
+
}
|
|
3410
|
+
|
|
3411
|
+
.status-card::before {
|
|
3412
|
+
content: "";
|
|
3413
|
+
position: absolute;
|
|
3414
|
+
inset: 0 0 auto;
|
|
3415
|
+
height: 1px;
|
|
3416
|
+
background: linear-gradient(
|
|
3417
|
+
90deg,
|
|
3418
|
+
transparent,
|
|
3419
|
+
color-mix(in srgb, var(--viking-metallic-200) 24%, transparent),
|
|
3420
|
+
transparent
|
|
3421
|
+
);
|
|
3422
|
+
pointer-events: none;
|
|
3423
|
+
}
|
|
3424
|
+
|
|
3425
|
+
.status-card--interactive {
|
|
3426
|
+
cursor: pointer;
|
|
3427
|
+
}
|
|
3428
|
+
|
|
3429
|
+
.status-card--interactive:hover {
|
|
3430
|
+
border-color: var(--viking-accent-strong);
|
|
3431
|
+
box-shadow: var(--viking-shadow-hover);
|
|
3432
|
+
transform: translateY(var(--viking-state-hover-lift));
|
|
3433
|
+
}
|
|
3434
|
+
|
|
3435
|
+
.status-card--loading {
|
|
3436
|
+
pointer-events: none;
|
|
3437
|
+
opacity: var(--viking-state-disabled-opacity);
|
|
3438
|
+
}
|
|
3439
|
+
|
|
3440
|
+
.status-card__header {
|
|
3441
|
+
display: flex;
|
|
3442
|
+
justify-content: space-between;
|
|
3443
|
+
gap: var(--viking-space-3);
|
|
3444
|
+
align-items: flex-start;
|
|
3445
|
+
min-width: 0;
|
|
3446
|
+
}
|
|
3447
|
+
|
|
3448
|
+
.status-card__title-wrap {
|
|
3449
|
+
display: grid;
|
|
3450
|
+
gap: var(--viking-space-1);
|
|
3451
|
+
min-width: 0;
|
|
3452
|
+
}
|
|
3453
|
+
|
|
3454
|
+
.status-card__title {
|
|
3455
|
+
margin: 0;
|
|
3456
|
+
font-size: var(--viking-font-size-xl);
|
|
3457
|
+
font-weight: var(--viking-font-weight-bold);
|
|
3458
|
+
letter-spacing: var(--viking-letter-spacing-tight);
|
|
3459
|
+
line-height: var(--viking-line-height-tight);
|
|
3460
|
+
}
|
|
3461
|
+
|
|
3462
|
+
.status-card__subtitle {
|
|
3463
|
+
margin: 0;
|
|
3464
|
+
max-width: 60ch;
|
|
3465
|
+
color: var(--viking-text-muted);
|
|
3466
|
+
font-size: var(--viking-font-size-base);
|
|
3467
|
+
line-height: var(--viking-line-height-relaxed);
|
|
3468
|
+
}
|
|
3469
|
+
|
|
3470
|
+
.status-card__status-wrap {
|
|
3471
|
+
display: inline-flex;
|
|
3472
|
+
align-items: center;
|
|
3473
|
+
justify-content: flex-end;
|
|
3474
|
+
}
|
|
3475
|
+
|
|
3476
|
+
.status-card__status {
|
|
3477
|
+
display: inline-flex;
|
|
3478
|
+
align-items: center;
|
|
3479
|
+
gap: var(--viking-space-1);
|
|
3480
|
+
max-width: fit-content;
|
|
3481
|
+
padding: calc(var(--viking-space-half) - 1px) var(--viking-space-1);
|
|
3482
|
+
border-radius: var(--viking-radius-pill);
|
|
3483
|
+
border: 1px solid var(--viking-border-subtle);
|
|
3484
|
+
background: color-mix(in srgb, var(--viking-surface) 92%, transparent);
|
|
3485
|
+
color: var(--viking-text-muted);
|
|
3486
|
+
text-transform: capitalize;
|
|
3487
|
+
font-size: var(--viking-font-size-xs);
|
|
3488
|
+
font-weight: var(--viking-font-weight-semibold);
|
|
3489
|
+
letter-spacing: var(--viking-letter-spacing-wide);
|
|
3490
|
+
}
|
|
3491
|
+
|
|
3492
|
+
.status-card__status-dot {
|
|
3493
|
+
width: var(--viking-space-1);
|
|
3494
|
+
height: var(--viking-space-1);
|
|
3495
|
+
border-radius: var(--viking-radius-full);
|
|
3496
|
+
background: currentColor;
|
|
3497
|
+
flex: 0 0 auto;
|
|
3498
|
+
}
|
|
3499
|
+
|
|
3500
|
+
.status-card__status-success {
|
|
3501
|
+
background: color-mix(in srgb, var(--viking-success) 12%, var(--viking-surface));
|
|
3502
|
+
border-color: color-mix(in srgb, var(--viking-success) 40%, transparent);
|
|
3503
|
+
color: var(--viking-success);
|
|
3504
|
+
}
|
|
3505
|
+
|
|
3506
|
+
.status-card__status-warning {
|
|
3507
|
+
background: color-mix(in srgb, var(--viking-warning) 12%, var(--viking-surface));
|
|
3508
|
+
border-color: color-mix(in srgb, var(--viking-warning) 40%, transparent);
|
|
3509
|
+
color: var(--viking-warning);
|
|
3510
|
+
}
|
|
3511
|
+
|
|
3512
|
+
.status-card__status-danger {
|
|
3513
|
+
background: color-mix(in srgb, var(--viking-danger) 12%, var(--viking-surface));
|
|
3514
|
+
border-color: color-mix(in srgb, var(--viking-danger) 45%, transparent);
|
|
3515
|
+
color: var(--viking-danger-text);
|
|
3516
|
+
}
|
|
3517
|
+
|
|
3518
|
+
.status-card__status-accent {
|
|
3519
|
+
background: color-mix(in srgb, var(--viking-accent) 12%, var(--viking-surface));
|
|
3520
|
+
border-color: color-mix(in srgb, var(--viking-accent) 40%, transparent);
|
|
3521
|
+
color: var(--viking-accent);
|
|
3522
|
+
}
|
|
3523
|
+
|
|
3524
|
+
.status-card__status-secondary {
|
|
3525
|
+
background: color-mix(in srgb, var(--viking-accent-secondary) 12%, var(--viking-surface));
|
|
3526
|
+
border-color: color-mix(in srgb, var(--viking-accent-secondary) 40%, transparent);
|
|
3527
|
+
color: var(--viking-accent-secondary);
|
|
3528
|
+
}
|
|
3529
|
+
|
|
3530
|
+
.status-card__status-info {
|
|
3531
|
+
background: color-mix(in srgb, var(--viking-info) 12%, var(--viking-surface));
|
|
3532
|
+
border-color: color-mix(in srgb, var(--viking-info) 40%, transparent);
|
|
3533
|
+
color: var(--viking-info);
|
|
3534
|
+
}
|
|
3535
|
+
|
|
3536
|
+
.status-card__status-muted {
|
|
3537
|
+
background: var(--viking-surface);
|
|
3538
|
+
border-color: var(--viking-border-subtle);
|
|
3539
|
+
color: var(--viking-text-muted);
|
|
3540
|
+
}
|
|
3541
|
+
|
|
3542
|
+
.status-card__body {
|
|
3543
|
+
display: grid;
|
|
3544
|
+
gap: var(--viking-space-3);
|
|
3545
|
+
min-width: 0;
|
|
3546
|
+
}
|
|
3547
|
+
`;
|
|
3548
|
+
const registerVikingStatusCardWc = () => {
|
|
3549
|
+
defineCustomElement(VikingStatusCardWc.tag, VikingStatusCardWc);
|
|
3550
|
+
defineCustomElementAlias(VikingStatusCardWc.legacyTag, VikingStatusCardWc);
|
|
3551
|
+
};
|
|
3552
|
+
|
|
3553
|
+
const TONES = new Set([
|
|
3554
|
+
"accent",
|
|
3555
|
+
"secondary",
|
|
3556
|
+
"success",
|
|
3557
|
+
"warning",
|
|
3558
|
+
"danger",
|
|
3559
|
+
"info",
|
|
3560
|
+
"muted",
|
|
3561
|
+
]);
|
|
3562
|
+
/**
|
|
3563
|
+
* Framework-agnostic Viking status pill.
|
|
3564
|
+
* Tag: `viking-status-pill` (legacy alias: `viking-status-pill-wc`)
|
|
3565
|
+
*
|
|
3566
|
+
* @attr tone - accent | secondary | success | warning | danger | info | muted
|
|
3567
|
+
* @attr icon - Optional icon name for leading glyph
|
|
3568
|
+
* @attr href - Optional navigation target
|
|
3569
|
+
* @attr compact - Reduced pill footprint
|
|
3570
|
+
* @attr dot - Shows a status dot
|
|
3571
|
+
* @attr removable - Renders a close control; emits `viking-pill-removed`
|
|
3572
|
+
*/
|
|
3573
|
+
class VikingStatusPillWc extends HTMLElementBase {
|
|
3574
|
+
static tag = "viking-status-pill";
|
|
3575
|
+
static legacyTag = "viking-status-pill-wc";
|
|
3576
|
+
static get observedAttributes() {
|
|
3577
|
+
return ["tone", "icon", "href", "target", "compact", "dot", "removable", "aria-label"];
|
|
3578
|
+
}
|
|
3579
|
+
shadow;
|
|
3580
|
+
constructor() {
|
|
3581
|
+
super();
|
|
3582
|
+
this.shadow = this.attachShadow({ mode: "open" });
|
|
3583
|
+
attachShadowStyles(this.shadow, VIKING_STATUS_PILL_STYLES);
|
|
3584
|
+
}
|
|
3585
|
+
connectedCallback() {
|
|
3586
|
+
this.render();
|
|
3587
|
+
}
|
|
3588
|
+
attributeChangedCallback() {
|
|
3589
|
+
if (this.isConnected) {
|
|
3590
|
+
this.render();
|
|
3591
|
+
}
|
|
3592
|
+
}
|
|
3593
|
+
get tone() {
|
|
3594
|
+
const raw = (this.getAttribute("tone") ?? "muted");
|
|
3595
|
+
return TONES.has(raw) ? raw : "muted";
|
|
3596
|
+
}
|
|
3597
|
+
get compact() {
|
|
3598
|
+
const compact = this.getAttribute("compact");
|
|
3599
|
+
return compact !== null && compact !== "false";
|
|
3600
|
+
}
|
|
3601
|
+
get removable() {
|
|
3602
|
+
const removable = this.getAttribute("removable");
|
|
3603
|
+
return removable !== null && removable !== "false";
|
|
3604
|
+
}
|
|
3605
|
+
get href() {
|
|
3606
|
+
return this.getAttribute("href");
|
|
3607
|
+
}
|
|
3608
|
+
get icon() {
|
|
3609
|
+
return this.getAttribute("icon");
|
|
3610
|
+
}
|
|
3611
|
+
get showDot() {
|
|
3612
|
+
const dot = this.getAttribute("dot");
|
|
3613
|
+
return dot !== null && dot !== "false";
|
|
3614
|
+
}
|
|
3615
|
+
onRemove = () => {
|
|
3616
|
+
this.dispatchEvent(new CustomEvent("viking-pill-removed", {
|
|
3617
|
+
bubbles: true,
|
|
3618
|
+
composed: true,
|
|
3619
|
+
}));
|
|
3620
|
+
};
|
|
3621
|
+
render() {
|
|
3622
|
+
const tone = this.tone;
|
|
3623
|
+
const compact = this.compact ? " status-pill--compact" : "";
|
|
3624
|
+
const icon = this.icon ? renderInlineIcon(this.icon, 14, "status-pill__icon") : "";
|
|
3625
|
+
const dot = this.showDot
|
|
3626
|
+
? `<span class="status-pill__dot" aria-hidden="true"></span>`
|
|
3627
|
+
: "";
|
|
3628
|
+
const label = `<span class="status-pill__label" part="label"><slot></slot></span>`;
|
|
3629
|
+
const ariaLabel = escapeHtml(this.getAttribute("aria-label") ?? "");
|
|
3630
|
+
const href = this.href;
|
|
3631
|
+
const target = this.getAttribute("target");
|
|
3632
|
+
const rel = href && target === "_blank" ? ' rel="noopener noreferrer"' : "";
|
|
3633
|
+
if (href) {
|
|
3634
|
+
this.shadow.innerHTML = `
|
|
3635
|
+
<a
|
|
3636
|
+
class="status-pill status-pill-${tone}${compact}"
|
|
3637
|
+
part="control"
|
|
3638
|
+
href="${escapeHtml(href)}"
|
|
3639
|
+
${target ? `target="${escapeHtml(target)}"${rel}` : ""}
|
|
3640
|
+
${ariaLabel ? `aria-label="${ariaLabel}"` : ""}
|
|
3641
|
+
>
|
|
3642
|
+
${dot}
|
|
3643
|
+
${icon}
|
|
3644
|
+
${label}
|
|
3645
|
+
</a>
|
|
3646
|
+
`;
|
|
3647
|
+
return;
|
|
3648
|
+
}
|
|
3649
|
+
this.shadow.innerHTML = `
|
|
3650
|
+
<span
|
|
3651
|
+
class="status-pill status-pill-${tone}${compact}"
|
|
3652
|
+
part="control"
|
|
3653
|
+
${ariaLabel ? `role="status" aria-label="${ariaLabel}"` : ""}
|
|
3654
|
+
>
|
|
3655
|
+
${dot}
|
|
3656
|
+
${icon}
|
|
3657
|
+
${label}
|
|
3658
|
+
${this.removable
|
|
3659
|
+
? '<button type="button" class="status-pill__remove" part="remove" aria-label="Remove"><span class="status-pill__remove-icon" aria-hidden="true">×</span></button>'
|
|
3660
|
+
: ""}
|
|
3661
|
+
</span>
|
|
3662
|
+
`;
|
|
3663
|
+
this.shadow
|
|
3664
|
+
.querySelector(".status-pill__remove")
|
|
3665
|
+
?.addEventListener("click", this.onRemove);
|
|
3666
|
+
}
|
|
3667
|
+
}
|
|
3668
|
+
const VIKING_STATUS_PILL_STYLES = `
|
|
3669
|
+
:host {
|
|
3670
|
+
display: inline-flex;
|
|
3671
|
+
}
|
|
3672
|
+
|
|
3673
|
+
.status-pill {
|
|
3674
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-surface-alt) 88%, var(--viking-surface));
|
|
3675
|
+
--viking-status-pill-text: var(--viking-text-muted);
|
|
3676
|
+
--viking-status-pill-border: var(--viking-border-subtle);
|
|
3677
|
+
--viking-status-pill-shadow: var(--viking-shadow-xs);
|
|
3678
|
+
|
|
3679
|
+
display: inline-flex;
|
|
3680
|
+
align-items: center;
|
|
3681
|
+
gap: var(--viking-space-half);
|
|
3682
|
+
padding: var(--viking-space-half) var(--viking-space-2);
|
|
3683
|
+
border-radius: var(--viking-radius-pill);
|
|
3684
|
+
border: 1px solid var(--viking-status-pill-border);
|
|
3685
|
+
background: var(--viking-status-pill-bg);
|
|
3686
|
+
color: var(--viking-status-pill-text);
|
|
3687
|
+
font-family: var(--viking-font-family);
|
|
3688
|
+
font-size: var(--viking-font-size-xs);
|
|
3689
|
+
font-weight: var(--viking-font-weight-semibold);
|
|
3690
|
+
letter-spacing: var(--viking-letter-spacing-caps);
|
|
3691
|
+
line-height: var(--viking-line-height-snug);
|
|
3692
|
+
white-space: nowrap;
|
|
3693
|
+
text-transform: uppercase;
|
|
3694
|
+
box-shadow: var(--viking-status-pill-shadow);
|
|
3695
|
+
}
|
|
3696
|
+
|
|
3697
|
+
:host(:hover) .status-pill {
|
|
3698
|
+
text-decoration: none;
|
|
3699
|
+
}
|
|
3700
|
+
|
|
3701
|
+
.status-pill--compact {
|
|
3702
|
+
padding: var(--viking-space-half);
|
|
3703
|
+
font-size: var(--viking-font-size-2xs);
|
|
3704
|
+
}
|
|
3705
|
+
|
|
3706
|
+
.status-pill__label {
|
|
3707
|
+
display: inline-flex;
|
|
3708
|
+
align-items: center;
|
|
3709
|
+
}
|
|
3710
|
+
|
|
3711
|
+
.status-pill__dot {
|
|
3712
|
+
width: var(--viking-space-1);
|
|
3713
|
+
height: var(--viking-space-1);
|
|
3714
|
+
border-radius: var(--viking-radius-full);
|
|
3715
|
+
background: currentColor;
|
|
3716
|
+
flex: 0 0 auto;
|
|
3717
|
+
}
|
|
3718
|
+
|
|
3719
|
+
.status-pill__icon,
|
|
3720
|
+
::slotted([data-viking-icon]) {
|
|
3721
|
+
width: var(--viking-space-3);
|
|
3722
|
+
height: var(--viking-space-3);
|
|
3723
|
+
color: currentColor;
|
|
3724
|
+
flex-shrink: 0;
|
|
3725
|
+
}
|
|
3726
|
+
|
|
3727
|
+
.status-pill__remove {
|
|
3728
|
+
display: inline-flex;
|
|
3729
|
+
align-items: center;
|
|
3730
|
+
justify-content: center;
|
|
3731
|
+
border: 1px solid transparent;
|
|
3732
|
+
background: transparent;
|
|
3733
|
+
color: currentColor;
|
|
3734
|
+
border-radius: var(--viking-radius-full);
|
|
3735
|
+
width: var(--viking-touch-target-min);
|
|
3736
|
+
height: var(--viking-touch-target-min);
|
|
3737
|
+
margin-right: calc(var(--viking-space-half) * -1);
|
|
3738
|
+
padding: 0;
|
|
3739
|
+
cursor: pointer;
|
|
3740
|
+
}
|
|
3741
|
+
|
|
3742
|
+
.status-pill__remove:hover {
|
|
3743
|
+
background: color-mix(in srgb, currentColor 10%, transparent);
|
|
3744
|
+
}
|
|
3745
|
+
|
|
3746
|
+
.status-pill__remove:focus-visible {
|
|
3747
|
+
outline: var(--viking-ring-width) solid var(--viking-ring);
|
|
3748
|
+
outline-offset: var(--viking-ring-offset);
|
|
3749
|
+
}
|
|
3750
|
+
|
|
3751
|
+
.status-pill-accent {
|
|
3752
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-accent) 18%, var(--viking-surface));
|
|
3753
|
+
--viking-status-pill-text: var(--viking-accent);
|
|
3754
|
+
--viking-status-pill-border: color-mix(in srgb, var(--viking-accent) 52%, transparent);
|
|
3755
|
+
}
|
|
3756
|
+
|
|
3757
|
+
.status-pill-secondary {
|
|
3758
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-accent-secondary) 16%, var(--viking-surface));
|
|
3759
|
+
--viking-status-pill-text: var(--viking-accent-secondary);
|
|
3760
|
+
--viking-status-pill-border: color-mix(in srgb, var(--viking-accent-secondary) 52%, transparent);
|
|
3761
|
+
}
|
|
3762
|
+
|
|
3763
|
+
.status-pill-success {
|
|
3764
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-success) 16%, var(--viking-surface));
|
|
3765
|
+
--viking-status-pill-text: var(--viking-success);
|
|
3766
|
+
--viking-status-pill-border: color-mix(in srgb, var(--viking-success) 55%, transparent);
|
|
3767
|
+
}
|
|
3768
|
+
|
|
3769
|
+
.status-pill-warning {
|
|
3770
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-warning) 16%, var(--viking-surface));
|
|
3771
|
+
--viking-status-pill-text: var(--viking-warning);
|
|
3772
|
+
--viking-status-pill-border: color-mix(in srgb, var(--viking-warning) 55%, transparent);
|
|
3773
|
+
}
|
|
3774
|
+
|
|
3775
|
+
.status-pill-danger {
|
|
3776
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-danger) 14%, var(--viking-surface));
|
|
3777
|
+
--viking-status-pill-text: var(--viking-danger-text);
|
|
3778
|
+
--viking-status-pill-border: color-mix(in srgb, var(--viking-danger) 50%, transparent);
|
|
3779
|
+
}
|
|
3780
|
+
|
|
3781
|
+
.status-pill-info {
|
|
3782
|
+
--viking-status-pill-bg: color-mix(in srgb, var(--viking-info) 14%, var(--viking-surface));
|
|
3783
|
+
--viking-status-pill-text: var(--viking-info);
|
|
3784
|
+
--viking-status-pill-border: color-mix(in srgb, var(--viking-info) 50%, transparent);
|
|
3785
|
+
}
|
|
3786
|
+
|
|
3787
|
+
.status-pill-muted {
|
|
3788
|
+
--viking-status-pill-bg: var(--viking-surface);
|
|
3789
|
+
--viking-status-pill-text: var(--viking-text-muted);
|
|
3790
|
+
--viking-status-pill-border: var(--viking-border-subtle);
|
|
3791
|
+
}
|
|
3792
|
+
|
|
3793
|
+
.status-pill a {
|
|
3794
|
+
color: inherit;
|
|
3795
|
+
}
|
|
3796
|
+
|
|
3797
|
+
a.status-pill {
|
|
3798
|
+
text-decoration: none;
|
|
3799
|
+
}
|
|
3800
|
+
`;
|
|
3801
|
+
const registerVikingStatusPillWc = () => {
|
|
3802
|
+
defineCustomElement(VikingStatusPillWc.tag, VikingStatusPillWc);
|
|
3803
|
+
defineCustomElementAlias(VikingStatusPillWc.legacyTag, VikingStatusPillWc);
|
|
3230
3804
|
};
|
|
3231
3805
|
|
|
3232
3806
|
/** Primary navbar links (desktop + mobile). Shown on every surface. */
|
|
@@ -3446,6 +4020,381 @@ const DEFAULT_SITE_URLS = {
|
|
|
3446
4020
|
backend: "https://backend.deml.app",
|
|
3447
4021
|
};
|
|
3448
4022
|
|
|
4023
|
+
const VALID_CONTEXTS$3 = new Set([
|
|
4024
|
+
"app",
|
|
4025
|
+
"marketing",
|
|
4026
|
+
"backend",
|
|
4027
|
+
"docs",
|
|
4028
|
+
]);
|
|
4029
|
+
const detectContext$3 = () => {
|
|
4030
|
+
const explicit = document.documentElement.getAttribute("data-deml-context");
|
|
4031
|
+
if (explicit && VALID_CONTEXTS$3.has(explicit)) {
|
|
4032
|
+
return explicit;
|
|
4033
|
+
}
|
|
4034
|
+
const host = window.location.hostname;
|
|
4035
|
+
if (host.startsWith("backend.")) {
|
|
4036
|
+
return "backend";
|
|
4037
|
+
}
|
|
4038
|
+
if (host.includes("deml.app")) {
|
|
4039
|
+
return "app";
|
|
4040
|
+
}
|
|
4041
|
+
return "marketing";
|
|
4042
|
+
};
|
|
4043
|
+
const readContext$3 = (el) => {
|
|
4044
|
+
const attr = el.getAttribute("context");
|
|
4045
|
+
if (attr && VALID_CONTEXTS$3.has(attr)) {
|
|
4046
|
+
return attr;
|
|
4047
|
+
}
|
|
4048
|
+
return detectContext$3();
|
|
4049
|
+
};
|
|
4050
|
+
const readUrls$3 = (el) => {
|
|
4051
|
+
const env = globalThis.__DEML ?? {};
|
|
4052
|
+
return {
|
|
4053
|
+
app: el.getAttribute("app-url") ?? env.app ?? DEFAULT_SITE_URLS.app,
|
|
4054
|
+
marketing: el.getAttribute("marketing-url") ?? env.marketing ?? DEFAULT_SITE_URLS.marketing,
|
|
4055
|
+
backend: el.getAttribute("backend-url") ?? env.backend ?? DEFAULT_SITE_URLS.backend,
|
|
4056
|
+
};
|
|
4057
|
+
};
|
|
4058
|
+
const readYear = (el) => {
|
|
4059
|
+
const raw = el.getAttribute("year");
|
|
4060
|
+
const value = raw ? Number(raw) : new Date().getFullYear();
|
|
4061
|
+
return Number.isFinite(value) ? value : new Date().getFullYear();
|
|
4062
|
+
};
|
|
4063
|
+
const renderFooterLinks = (context, urls) => {
|
|
4064
|
+
return SITE_FOOTER_COLUMNS.map((column) => {
|
|
4065
|
+
const links = column.links
|
|
4066
|
+
.map((link) => {
|
|
4067
|
+
const href = resolveFooterHref(link, context, urls);
|
|
4068
|
+
return `
|
|
4069
|
+
<li>
|
|
4070
|
+
<a href="${escapeHtml(href)}">${escapeHtml(link.label)}</a>
|
|
4071
|
+
</li>
|
|
4072
|
+
`;
|
|
4073
|
+
})
|
|
4074
|
+
.join("");
|
|
4075
|
+
return `
|
|
4076
|
+
<div class="footer-column">
|
|
4077
|
+
<h3 class="footer-column-title">${escapeHtml(column.title)}</h3>
|
|
4078
|
+
<ul class="footer-list">
|
|
4079
|
+
${links}
|
|
4080
|
+
</ul>
|
|
4081
|
+
</div>
|
|
4082
|
+
`;
|
|
4083
|
+
}).join("");
|
|
4084
|
+
};
|
|
4085
|
+
/**
|
|
4086
|
+
* viking-site-footer-wc — unified static Drakkar footer for non-Angular surfaces.
|
|
4087
|
+
*/
|
|
4088
|
+
class VikingSiteFooterWc extends HTMLElement {
|
|
4089
|
+
static tag = "viking-site-footer";
|
|
4090
|
+
static legacyTag = "viking-site-footer-wc";
|
|
4091
|
+
static get observedAttributes() {
|
|
4092
|
+
return ["context", "app-url", "marketing-url", "backend-url", "year"];
|
|
4093
|
+
}
|
|
4094
|
+
connectedCallback() {
|
|
4095
|
+
this.render();
|
|
4096
|
+
}
|
|
4097
|
+
attributeChangedCallback() {
|
|
4098
|
+
if (this.isConnected) {
|
|
4099
|
+
this.render();
|
|
4100
|
+
}
|
|
4101
|
+
}
|
|
4102
|
+
render() {
|
|
4103
|
+
const context = readContext$3(this);
|
|
4104
|
+
const urls = readUrls$3(this);
|
|
4105
|
+
const year = readYear(this);
|
|
4106
|
+
const links = renderFooterLinks(context, urls);
|
|
4107
|
+
this.innerHTML = `
|
|
4108
|
+
<footer class="mega-footer">
|
|
4109
|
+
<div class="footer-content">
|
|
4110
|
+
<nav class="footer-directory" aria-label="Footer Directory">
|
|
4111
|
+
${links}
|
|
4112
|
+
</nav>
|
|
4113
|
+
|
|
4114
|
+
<section class="footer-bottom">
|
|
4115
|
+
<div class="footer-badges-top">
|
|
4116
|
+
<span
|
|
4117
|
+
class="usa-badge"
|
|
4118
|
+
id="usa-badge"
|
|
4119
|
+
role="button"
|
|
4120
|
+
tabindex="0"
|
|
4121
|
+
aria-label="Made in the U.S.A."
|
|
4122
|
+
>
|
|
4123
|
+
<span class="usa-badge-icon" aria-hidden="true">🇺🇸</span>
|
|
4124
|
+
<span>Made in the U.S.A</span>
|
|
4125
|
+
</span>
|
|
4126
|
+
</div>
|
|
4127
|
+
|
|
4128
|
+
<div class="footer-compliance-row">
|
|
4129
|
+
<div class="copyright-info">
|
|
4130
|
+
<span class="copyright-text">
|
|
4131
|
+
Copyright © ${year} Data Engineering for Machine Learning by
|
|
4132
|
+
<a href="https://joealongi.dev/" target="_blank" rel="noopener noreferrer">Joe Alongi</a>.
|
|
4133
|
+
All rights reserved.
|
|
4134
|
+
</span>
|
|
4135
|
+
</div>
|
|
4136
|
+
</div>
|
|
4137
|
+
</section>
|
|
4138
|
+
</div>
|
|
4139
|
+
</footer>
|
|
4140
|
+
`;
|
|
4141
|
+
}
|
|
4142
|
+
}
|
|
4143
|
+
const registerVikingSiteFooterWc = () => {
|
|
4144
|
+
defineCustomElement(VikingSiteFooterWc.tag, VikingSiteFooterWc);
|
|
4145
|
+
defineCustomElementAlias(VikingSiteFooterWc.legacyTag, VikingSiteFooterWc);
|
|
4146
|
+
};
|
|
4147
|
+
|
|
4148
|
+
const VALID_CONTEXTS$2 = new Set([
|
|
4149
|
+
"app",
|
|
4150
|
+
"marketing",
|
|
4151
|
+
"backend",
|
|
4152
|
+
"docs",
|
|
4153
|
+
]);
|
|
4154
|
+
const detectContext$2 = () => {
|
|
4155
|
+
const explicit = document.documentElement.getAttribute("data-deml-context");
|
|
4156
|
+
if (explicit && VALID_CONTEXTS$2.has(explicit)) {
|
|
4157
|
+
return explicit;
|
|
4158
|
+
}
|
|
4159
|
+
const host = window.location.hostname;
|
|
4160
|
+
if (host.startsWith("ui.")) {
|
|
4161
|
+
return "docs";
|
|
4162
|
+
}
|
|
4163
|
+
if (host.startsWith("backend.")) {
|
|
4164
|
+
return "backend";
|
|
4165
|
+
}
|
|
4166
|
+
if (host.includes("deml.app")) {
|
|
4167
|
+
return "app";
|
|
4168
|
+
}
|
|
4169
|
+
return "marketing";
|
|
4170
|
+
};
|
|
4171
|
+
const readContext$2 = (el) => {
|
|
4172
|
+
const attr = el.getAttribute("context");
|
|
4173
|
+
if (attr && VALID_CONTEXTS$2.has(attr)) {
|
|
4174
|
+
return attr;
|
|
4175
|
+
}
|
|
4176
|
+
return detectContext$2();
|
|
4177
|
+
};
|
|
4178
|
+
const readBoolAttr = (el, name) => {
|
|
4179
|
+
const value = el.getAttribute(name);
|
|
4180
|
+
return value !== null && value !== "false";
|
|
4181
|
+
};
|
|
4182
|
+
const readUrls$2 = (el) => {
|
|
4183
|
+
const env = globalThis.__DEML ?? {};
|
|
4184
|
+
return {
|
|
4185
|
+
app: el.getAttribute("app-url") ?? env.app ?? DEFAULT_SITE_URLS.app,
|
|
4186
|
+
marketing: el.getAttribute("marketing-url") ?? env.marketing ?? DEFAULT_SITE_URLS.marketing,
|
|
4187
|
+
backend: el.getAttribute("backend-url") ?? env.backend ?? DEFAULT_SITE_URLS.backend,
|
|
4188
|
+
};
|
|
4189
|
+
};
|
|
4190
|
+
const readAuthState = (el) => readBoolAttr(el, "authenticated");
|
|
4191
|
+
const readShowSearch = (el) => {
|
|
4192
|
+
const explicit = el.getAttribute("show-search");
|
|
4193
|
+
if (explicit === null) {
|
|
4194
|
+
return true;
|
|
4195
|
+
}
|
|
4196
|
+
return readBoolAttr(el, "show-search");
|
|
4197
|
+
};
|
|
4198
|
+
const readSignInHref = (el, urls) => {
|
|
4199
|
+
const explicit = el.getAttribute("sign-in-href");
|
|
4200
|
+
if (explicit) {
|
|
4201
|
+
return explicit;
|
|
4202
|
+
}
|
|
4203
|
+
const landing = el.getAttribute("return-url") ?? window.location.href;
|
|
4204
|
+
return `${urls.app}/login?returnUrl=${encodeURIComponent(landing)}`;
|
|
4205
|
+
};
|
|
4206
|
+
/**
|
|
4207
|
+
* viking-site-navbar-wc — unified static Drakkar navbar for non-Angular surfaces.
|
|
4208
|
+
* Styling is supplied by viking-ui global CSS.
|
|
4209
|
+
*/
|
|
4210
|
+
class VikingSiteNavbarWc extends HTMLElement {
|
|
4211
|
+
static tag = "viking-site-navbar";
|
|
4212
|
+
static legacyTag = "viking-site-navbar-wc";
|
|
4213
|
+
static get observedAttributes() {
|
|
4214
|
+
return [
|
|
4215
|
+
"context",
|
|
4216
|
+
"app-url",
|
|
4217
|
+
"marketing-url",
|
|
4218
|
+
"backend-url",
|
|
4219
|
+
"authenticated",
|
|
4220
|
+
"show-search",
|
|
4221
|
+
"sign-in-href",
|
|
4222
|
+
"dashboard-href",
|
|
4223
|
+
"return-url",
|
|
4224
|
+
];
|
|
4225
|
+
}
|
|
4226
|
+
connectedCallback() {
|
|
4227
|
+
this.render();
|
|
4228
|
+
}
|
|
4229
|
+
attributeChangedCallback() {
|
|
4230
|
+
if (this.isConnected) {
|
|
4231
|
+
this.render();
|
|
4232
|
+
}
|
|
4233
|
+
}
|
|
4234
|
+
renderNavLinks(context, urls, kind = "desktop") {
|
|
4235
|
+
const linkClass = kind === "mobile" ? "mobile-nav-btn" : "nav-btn";
|
|
4236
|
+
return SITE_NAV_LINKS.map((link) => {
|
|
4237
|
+
const href = resolveNavHref(link, context, urls);
|
|
4238
|
+
const isProtected = link.requireAuth;
|
|
4239
|
+
const hidden = isProtected ? " hidden" : "";
|
|
4240
|
+
const authAttr = isProtected ? ' data-require-auth="true"' : "";
|
|
4241
|
+
return `
|
|
4242
|
+
<a
|
|
4243
|
+
href="${escapeHtml(href)}"
|
|
4244
|
+
class="${linkClass}"
|
|
4245
|
+
data-nav-id="${escapeHtml(link.id)}"
|
|
4246
|
+
${authAttr}
|
|
4247
|
+
${hidden}
|
|
4248
|
+
>
|
|
4249
|
+
<span data-viking-icon="${escapeHtml(link.icon)}" data-viking-icon-size="16" aria-hidden="true"></span>
|
|
4250
|
+
<span>${escapeHtml(link.label)}</span>
|
|
4251
|
+
</a>
|
|
4252
|
+
`;
|
|
4253
|
+
}).join("");
|
|
4254
|
+
}
|
|
4255
|
+
renderAuthDesktop(authenticated, signInHref, dashboardHref) {
|
|
4256
|
+
const href = authenticated ? dashboardHref : signInHref;
|
|
4257
|
+
return `
|
|
4258
|
+
<div class="desktop-auth">
|
|
4259
|
+
<viking-button-wc
|
|
4260
|
+
variant="primary"
|
|
4261
|
+
class="auth-btn"
|
|
4262
|
+
href="${escapeHtml(href)}"
|
|
4263
|
+
id="auth-btn-desktop"
|
|
4264
|
+
>
|
|
4265
|
+
<span
|
|
4266
|
+
id="auth-icon-desktop"
|
|
4267
|
+
data-viking-icon="${authenticated ? "home" : "arrow-right"}"
|
|
4268
|
+
data-viking-icon-size="16"
|
|
4269
|
+
aria-hidden="true"
|
|
4270
|
+
></span>
|
|
4271
|
+
<span id="auth-text-desktop">${authenticated ? "Dashboard" : "Sign In"}</span>
|
|
4272
|
+
</viking-button-wc>
|
|
4273
|
+
<viking-button-wc
|
|
4274
|
+
variant="ghost"
|
|
4275
|
+
class="auth-btn auth-signout-btn"
|
|
4276
|
+
id="auth-signout-desktop"
|
|
4277
|
+
${authenticated ? "" : " hidden"}
|
|
4278
|
+
>
|
|
4279
|
+
Sign Out
|
|
4280
|
+
</viking-button-wc>
|
|
4281
|
+
</div>
|
|
4282
|
+
`;
|
|
4283
|
+
}
|
|
4284
|
+
renderAuthMobile(authenticated, dashboardHref, signInHref) {
|
|
4285
|
+
return `
|
|
4286
|
+
<div class="mobile-divider"></div>
|
|
4287
|
+
<viking-button-wc
|
|
4288
|
+
variant="primary"
|
|
4289
|
+
full-width
|
|
4290
|
+
class="mobile-auth-btn auth-btn"
|
|
4291
|
+
href="${escapeHtml(authenticated ? dashboardHref : signInHref)}"
|
|
4292
|
+
id="auth-btn-mobile"
|
|
4293
|
+
>
|
|
4294
|
+
<span
|
|
4295
|
+
id="auth-icon-mobile"
|
|
4296
|
+
data-viking-icon="${authenticated ? "home" : "arrow-right"}"
|
|
4297
|
+
data-viking-icon-size="16"
|
|
4298
|
+
aria-hidden="true"
|
|
4299
|
+
></span>
|
|
4300
|
+
<span id="auth-text-mobile">${authenticated ? "Dashboard" : "Sign In"}</span>
|
|
4301
|
+
</viking-button-wc>
|
|
4302
|
+
<viking-button-wc
|
|
4303
|
+
variant="ghost"
|
|
4304
|
+
full-width
|
|
4305
|
+
class="mobile-auth-btn auth-btn auth-signout-btn"
|
|
4306
|
+
id="auth-signout-mobile"
|
|
4307
|
+
${authenticated ? "" : " hidden"}
|
|
4308
|
+
>
|
|
4309
|
+
Sign Out
|
|
4310
|
+
</viking-button-wc>
|
|
4311
|
+
`;
|
|
4312
|
+
}
|
|
4313
|
+
renderSearchButton(showSearch) {
|
|
4314
|
+
if (!showSearch) {
|
|
4315
|
+
return "";
|
|
4316
|
+
}
|
|
4317
|
+
const shortcut = navigator.platform.match(/Mac|iPhone|iPad/i)
|
|
4318
|
+
? "⌘K"
|
|
4319
|
+
: "Ctrl+K";
|
|
4320
|
+
return `
|
|
4321
|
+
<div class="navbar-search" role="search">
|
|
4322
|
+
<viking-button-wc
|
|
4323
|
+
variant="outline"
|
|
4324
|
+
square
|
|
4325
|
+
compact
|
|
4326
|
+
class="navbar-search-trigger"
|
|
4327
|
+
aria-label="Open search (${shortcut})"
|
|
4328
|
+
id="navbar-search-trigger"
|
|
4329
|
+
>
|
|
4330
|
+
<span data-viking-icon="search" data-viking-icon-size="20" aria-hidden="true"></span>
|
|
4331
|
+
</viking-button-wc>
|
|
4332
|
+
</div>
|
|
4333
|
+
`;
|
|
4334
|
+
}
|
|
4335
|
+
render() {
|
|
4336
|
+
const context = readContext$2(this);
|
|
4337
|
+
const urls = readUrls$2(this);
|
|
4338
|
+
const authenticated = readAuthState(this);
|
|
4339
|
+
const showSearch = readShowSearch(this);
|
|
4340
|
+
const brandHref = resolveBrandHref(context, urls);
|
|
4341
|
+
const signInHref = readSignInHref(this, urls);
|
|
4342
|
+
const dashboardHref = this.getAttribute("dashboard-href") ?? `${urls.app}/dashboard`;
|
|
4343
|
+
const desktopNavLinks = this.renderNavLinks(context, urls, "desktop");
|
|
4344
|
+
const mobileNavLinks = this.renderNavLinks(context, urls, "mobile");
|
|
4345
|
+
const desktopAuth = this.renderAuthDesktop(authenticated, signInHref, dashboardHref);
|
|
4346
|
+
const mobileAuth = this.renderAuthMobile(authenticated, dashboardHref, signInHref);
|
|
4347
|
+
const search = this.renderSearchButton(showSearch);
|
|
4348
|
+
this.innerHTML = `
|
|
4349
|
+
<header class="navbar">
|
|
4350
|
+
<div class="navbar-content">
|
|
4351
|
+
<div class="navbar-left">
|
|
4352
|
+
<a href="${escapeHtml(brandHref)}" class="navbar-brand" aria-label="Go to homepage" id="navbar-brand-link">
|
|
4353
|
+
<span
|
|
4354
|
+
class="brand-icon navbar-logo"
|
|
4355
|
+
data-viking-icon="drakkar"
|
|
4356
|
+
data-viking-icon-color="accent"
|
|
4357
|
+
data-viking-icon-size="28"
|
|
4358
|
+
aria-hidden="true"
|
|
4359
|
+
></span>
|
|
4360
|
+
</a>
|
|
4361
|
+
</div>
|
|
4362
|
+
|
|
4363
|
+
<nav class="navbar-center desktop-nav" aria-label="Main navigation">
|
|
4364
|
+
${desktopNavLinks}
|
|
4365
|
+
</nav>
|
|
4366
|
+
|
|
4367
|
+
<div class="navbar-right">
|
|
4368
|
+
${search}
|
|
4369
|
+
${desktopAuth}
|
|
4370
|
+
<viking-theme-toggle-wc class="theme-toggle-btn" aria-label="Toggle light and dark theme"></viking-theme-toggle-wc>
|
|
4371
|
+
<viking-button-wc
|
|
4372
|
+
variant="outline"
|
|
4373
|
+
square
|
|
4374
|
+
class="menu-toggle-btn"
|
|
4375
|
+
aria-label="Toggle navigation menu"
|
|
4376
|
+
aria-controls="mobile-menu"
|
|
4377
|
+
aria-expanded="false"
|
|
4378
|
+
id="mobile-menu-btn"
|
|
4379
|
+
>
|
|
4380
|
+
<span data-viking-icon="menu" data-viking-icon-size="24" aria-hidden="true"></span>
|
|
4381
|
+
</viking-button-wc>
|
|
4382
|
+
</div>
|
|
4383
|
+
</div>
|
|
4384
|
+
|
|
4385
|
+
<nav class="mobile-menu" id="mobile-menu" aria-label="Mobile navigation" hidden>
|
|
4386
|
+
${mobileNavLinks}
|
|
4387
|
+
${mobileAuth}
|
|
4388
|
+
</nav>
|
|
4389
|
+
</header>
|
|
4390
|
+
`;
|
|
4391
|
+
}
|
|
4392
|
+
}
|
|
4393
|
+
const registerVikingSiteNavbarWc = () => {
|
|
4394
|
+
defineCustomElement(VikingSiteNavbarWc.tag, VikingSiteNavbarWc);
|
|
4395
|
+
defineCustomElementAlias(VikingSiteNavbarWc.legacyTag, VikingSiteNavbarWc);
|
|
4396
|
+
};
|
|
4397
|
+
|
|
3449
4398
|
const dedupeItems = (items) => {
|
|
3450
4399
|
const seen = new Set();
|
|
3451
4400
|
return items.filter((item) => {
|
|
@@ -3721,7 +4670,7 @@ class VikingSuiteSearchPaletteWc extends HTMLElementBase {
|
|
|
3721
4670
|
return;
|
|
3722
4671
|
}
|
|
3723
4672
|
if (name === "global-shortcut" && this.paletteEl) {
|
|
3724
|
-
if (readBoolAttr(this, "global-shortcut") ||
|
|
4673
|
+
if (readBoolAttr$1(this, "global-shortcut") ||
|
|
3725
4674
|
!this.hasAttribute("global-shortcut")) {
|
|
3726
4675
|
this.paletteEl.setAttribute("global-shortcut", "");
|
|
3727
4676
|
}
|
|
@@ -3755,7 +4704,7 @@ class VikingSuiteSearchPaletteWc extends HTMLElementBase {
|
|
|
3755
4704
|
const placeholder = this.getAttribute("placeholder") ??
|
|
3756
4705
|
"Search documentation, dashboard, settings…";
|
|
3757
4706
|
this.paletteEl.setAttribute("placeholder", placeholder);
|
|
3758
|
-
if (readBoolAttr(this, "global-shortcut") ||
|
|
4707
|
+
if (readBoolAttr$1(this, "global-shortcut") ||
|
|
3759
4708
|
!this.hasAttribute("global-shortcut")) {
|
|
3760
4709
|
this.paletteEl.setAttribute("global-shortcut", "");
|
|
3761
4710
|
}
|
|
@@ -3867,22 +4816,29 @@ class VikingThemeToggleWc extends HTMLElementBase {
|
|
|
3867
4816
|
button = null;
|
|
3868
4817
|
sunIcon = null;
|
|
3869
4818
|
moonIcon = null;
|
|
4819
|
+
onStorage = () => {
|
|
4820
|
+
this.syncIcons();
|
|
4821
|
+
};
|
|
3870
4822
|
constructor() {
|
|
3871
4823
|
super();
|
|
3872
4824
|
this.shadow = this.attachShadow({ mode: "open" });
|
|
3873
4825
|
attachShadowStyles(this.shadow, VIKING_THEME_TOGGLE_STYLES);
|
|
3874
4826
|
}
|
|
3875
4827
|
connectedCallback() {
|
|
3876
|
-
if (!this.hasAttribute("role")) {
|
|
3877
|
-
this.setAttribute("role", "button");
|
|
3878
|
-
}
|
|
3879
4828
|
this.render();
|
|
3880
4829
|
this.syncIcons();
|
|
3881
4830
|
this.button?.addEventListener("click", this.onClick);
|
|
4831
|
+
window.addEventListener("storage", this.onStorage);
|
|
4832
|
+
window.addEventListener("viking-theme-change", this.onThemeChange);
|
|
3882
4833
|
}
|
|
3883
4834
|
disconnectedCallback() {
|
|
3884
4835
|
this.button?.removeEventListener("click", this.onClick);
|
|
4836
|
+
window.removeEventListener("storage", this.onStorage);
|
|
4837
|
+
window.removeEventListener("viking-theme-change", this.onThemeChange);
|
|
3885
4838
|
}
|
|
4839
|
+
onThemeChange = () => {
|
|
4840
|
+
this.syncIcons();
|
|
4841
|
+
};
|
|
3886
4842
|
onClick = () => {
|
|
3887
4843
|
const next = readTheme() === "light" ? "dark" : "light";
|
|
3888
4844
|
applyTheme(next);
|
|
@@ -3894,9 +4850,10 @@ class VikingThemeToggleWc extends HTMLElementBase {
|
|
|
3894
4850
|
}));
|
|
3895
4851
|
};
|
|
3896
4852
|
syncIcons = () => {
|
|
3897
|
-
|
|
3898
|
-
|
|
3899
|
-
this.
|
|
4853
|
+
// Match Angular viking-theme-toggle: sun in dark mode (switch to light).
|
|
4854
|
+
const isDark = readTheme() === "dark";
|
|
4855
|
+
this.sunIcon?.classList.toggle("is-visible", isDark);
|
|
4856
|
+
this.moonIcon?.classList.toggle("is-visible", !isDark);
|
|
3900
4857
|
};
|
|
3901
4858
|
render() {
|
|
3902
4859
|
const label = this.getAttribute("aria-label") ?? "Toggle light and dark theme";
|
|
@@ -4494,7 +5451,7 @@ class VikingSuiteHeaderWc extends HTMLElementBase {
|
|
|
4494
5451
|
render() {
|
|
4495
5452
|
const context = readContext(this);
|
|
4496
5453
|
const urls = readUrls(this);
|
|
4497
|
-
const authenticated = readBoolAttr(this, "authenticated");
|
|
5454
|
+
const authenticated = readBoolAttr$1(this, "authenticated");
|
|
4498
5455
|
const navLinks = this.renderNavLinks(context, urls, authenticated);
|
|
4499
5456
|
const brandHref = resolveBrandHref(context, urls);
|
|
4500
5457
|
const shortcut = `${modKeyLabel()}K`;
|
|
@@ -4766,8 +5723,12 @@ const registerVikingElements = () => {
|
|
|
4766
5723
|
registerVikingSelectWc();
|
|
4767
5724
|
registerVikingModalWc();
|
|
4768
5725
|
registerVikingSearchPaletteWc();
|
|
5726
|
+
registerVikingStatusCardWc();
|
|
5727
|
+
registerVikingStatusPillWc();
|
|
4769
5728
|
registerVikingSuiteHeaderWc();
|
|
4770
5729
|
registerVikingSuiteSearchPaletteWc();
|
|
5730
|
+
registerVikingSiteNavbarWc();
|
|
5731
|
+
registerVikingSiteFooterWc();
|
|
4771
5732
|
registerVikingThemeToggleWc();
|
|
4772
5733
|
};
|
|
4773
5734
|
// Auto-register when loaded as a script bundle (Astro, Django, static HTML).
|
|
@@ -5083,7 +6044,7 @@ class VikingButton {
|
|
|
5083
6044
|
} @else if (icon()) {
|
|
5084
6045
|
<viking-icon [name]="icon()!" [size]="iconSize()" />
|
|
5085
6046
|
}
|
|
5086
|
-
<
|
|
6047
|
+
<ng-content />
|
|
5087
6048
|
@if (!loading() && iconTrailing()) {
|
|
5088
6049
|
<viking-icon [name]="iconTrailing()!" [size]="iconSize()" />
|
|
5089
6050
|
}
|
|
@@ -5119,7 +6080,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
5119
6080
|
} @else if (icon()) {
|
|
5120
6081
|
<viking-icon [name]="icon()!" [size]="iconSize()" />
|
|
5121
6082
|
}
|
|
5122
|
-
<
|
|
6083
|
+
<ng-content />
|
|
5123
6084
|
@if (!loading() && iconTrailing()) {
|
|
5124
6085
|
<viking-icon [name]="iconTrailing()!" [size]="iconSize()" />
|
|
5125
6086
|
}
|
|
@@ -5214,6 +6175,22 @@ class VikingSiteNavbar {
|
|
|
5214
6175
|
closeMobileMenu() {
|
|
5215
6176
|
this.mobileMenuOpen.set(false);
|
|
5216
6177
|
}
|
|
6178
|
+
closeMobileMenuOnOutsideClick(event) {
|
|
6179
|
+
if (!this.mobileMenuOpen())
|
|
6180
|
+
return;
|
|
6181
|
+
const target = event.target;
|
|
6182
|
+
if (!(target instanceof Node))
|
|
6183
|
+
return;
|
|
6184
|
+
const path = typeof event.composedPath === 'function' ? event.composedPath() : [target];
|
|
6185
|
+
const menu = document.getElementById('mobile-menu');
|
|
6186
|
+
const toggle = document.getElementById('mobile-menu-btn');
|
|
6187
|
+
const clickedInside = path.some((node) => node instanceof Node &&
|
|
6188
|
+
((menu && (node === menu || menu.contains(node))) ||
|
|
6189
|
+
(toggle && (node === toggle || toggle.contains(node)))));
|
|
6190
|
+
if (!clickedInside) {
|
|
6191
|
+
this.closeMobileMenu();
|
|
6192
|
+
}
|
|
6193
|
+
}
|
|
5217
6194
|
openSearch() {
|
|
5218
6195
|
this.closeMobileMenu();
|
|
5219
6196
|
this.searchOpen.emit();
|
|
@@ -5230,7 +6207,7 @@ class VikingSiteNavbar {
|
|
|
5230
6207
|
this.closeMobileMenu();
|
|
5231
6208
|
}
|
|
5232
6209
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: VikingSiteNavbar, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5233
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: VikingSiteNavbar, isStandalone: true, selector: "viking-site-navbar", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, urls: { classPropertyName: "urls", publicName: "urls", isSignal: true, isRequired: false, transformFunction: null }, isAuthenticated: { classPropertyName: "isAuthenticated", publicName: "isAuthenticated", isSignal: true, isRequired: false, transformFunction: null }, isBusy: { classPropertyName: "isBusy", publicName: "isBusy", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { login: "login", logout: "logout", themeToggle: "themeToggle", searchOpen: "searchOpen" }, host: { listeners: { "window:resize": "closeMobileMenuOnDesktop()", "document:keydown.escape": "closeMobileMenuOnEscape()" } }, ngImport: i0, template: `
|
|
6210
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", type: VikingSiteNavbar, isStandalone: true, selector: "viking-site-navbar", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, urls: { classPropertyName: "urls", publicName: "urls", isSignal: true, isRequired: false, transformFunction: null }, isAuthenticated: { classPropertyName: "isAuthenticated", publicName: "isAuthenticated", isSignal: true, isRequired: false, transformFunction: null }, isBusy: { classPropertyName: "isBusy", publicName: "isBusy", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, showSearch: { classPropertyName: "showSearch", publicName: "showSearch", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { login: "login", logout: "logout", themeToggle: "themeToggle", searchOpen: "searchOpen" }, host: { listeners: { "document:click": "closeMobileMenuOnOutsideClick($event)", "window:resize": "closeMobileMenuOnDesktop()", "document:keydown.escape": "closeMobileMenuOnEscape()" } }, ngImport: i0, template: `
|
|
5234
6211
|
<header class="navbar">
|
|
5235
6212
|
<div class="navbar-content">
|
|
5236
6213
|
<div class="navbar-left">
|
|
@@ -5639,7 +6616,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
5639
6616
|
</nav>
|
|
5640
6617
|
</header>
|
|
5641
6618
|
` }]
|
|
5642
|
-
}], propDecorators: { context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }], urls: [{ type: i0.Input, args: [{ isSignal: true, alias: "urls", required: false }] }], isAuthenticated: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAuthenticated", required: false }] }], isBusy: [{ type: i0.Input, args: [{ isSignal: true, alias: "isBusy", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], showSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSearch", required: false }] }], login: [{ type: i0.Output, args: ["login"] }], logout: [{ type: i0.Output, args: ["logout"] }], themeToggle: [{ type: i0.Output, args: ["themeToggle"] }], searchOpen: [{ type: i0.Output, args: ["searchOpen"] }],
|
|
6619
|
+
}], propDecorators: { context: [{ type: i0.Input, args: [{ isSignal: true, alias: "context", required: false }] }], urls: [{ type: i0.Input, args: [{ isSignal: true, alias: "urls", required: false }] }], isAuthenticated: [{ type: i0.Input, args: [{ isSignal: true, alias: "isAuthenticated", required: false }] }], isBusy: [{ type: i0.Input, args: [{ isSignal: true, alias: "isBusy", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], showSearch: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSearch", required: false }] }], login: [{ type: i0.Output, args: ["login"] }], logout: [{ type: i0.Output, args: ["logout"] }], themeToggle: [{ type: i0.Output, args: ["themeToggle"] }], searchOpen: [{ type: i0.Output, args: ["searchOpen"] }], closeMobileMenuOnOutsideClick: [{
|
|
6620
|
+
type: HostListener,
|
|
6621
|
+
args: ['document:click', ['$event']]
|
|
6622
|
+
}], closeMobileMenuOnDesktop: [{
|
|
5643
6623
|
type: HostListener,
|
|
5644
6624
|
args: ["window:resize"]
|
|
5645
6625
|
}], closeMobileMenuOnEscape: [{
|
|
@@ -8636,6 +9616,12 @@ class VikingModal {
|
|
|
8636
9616
|
}
|
|
8637
9617
|
});
|
|
8638
9618
|
}
|
|
9619
|
+
ngOnDestroy() {
|
|
9620
|
+
const dialog = this.dialogRef()?.nativeElement;
|
|
9621
|
+
if (dialog?.open) {
|
|
9622
|
+
dialog.close();
|
|
9623
|
+
}
|
|
9624
|
+
}
|
|
8639
9625
|
onBackdropClick = (event) => {
|
|
8640
9626
|
if (this.dismissible() && event.target === this.dialogRef().nativeElement) {
|
|
8641
9627
|
this.open.set(false);
|
|
@@ -8674,7 +9660,7 @@ class VikingModal {
|
|
|
8674
9660
|
</footer>
|
|
8675
9661
|
</div>
|
|
8676
9662
|
</dialog>
|
|
8677
|
-
`, isInline: true, styles: [".viking-modal{padding:0;border:1px solid var(--viking-border-strong);border-radius:var(--viking-radius-lg);background:var(--viking-surface);color:var(--viking-text);box-shadow:var(--viking-shadow-lg);width:min(522px,calc(100vw - var(--viking-space-4)));animation:viking-modal-in var(--viking-duration) var(--viking-ease-default);overflow:hidden}.viking-modal::backdrop{background:var(--viking-overlay-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:viking-backdrop-in var(--viking-duration-fast) var(--viking-ease-default)}.viking-modal-surface{display:flex;flex-direction:column;padding:var(--viking-space-3);gap:var(--viking-space-2);font-family:var(--viking-font-family);position:relative}.viking-modal-surface:before{content:\"\";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--viking-metallic-200) 22%,transparent),transparent);pointer-events:none}.viking-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--viking-space-2);padding-bottom:var(--viking-space-1);border-bottom:1px solid var(--viking-border-subtle)}.viking-modal-heading{margin:0;font-size:var(--viking-font-size-md);font-weight:var(--viking-font-weight-bold);letter-spacing:var(--viking-letter-spacing-tight);color:var(--viking-text);line-height:var(--viking-line-height-tight)}.viking-modal-close{display:inline-flex;align-items:center;justify-content:center;width:var(--viking-control-height-sm);height:var(--viking-control-height-sm);border:1px solid transparent;background:transparent;color:var(--viking-text-muted);cursor:pointer;padding:0;border-radius:var(--viking-radius);transition:var(--viking-transition-interactive);flex-shrink:0}.viking-modal-close:hover{color:var(--viking-text);background:var(--viking-accent-soft);border-color:var(--viking-border-subtle)}.viking-modal-close:active{transform:scale(var(--viking-state-active-scale))}.viking-modal-close:focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}.viking-modal-body{font-size:var(--viking-font-size);line-height:var(--viking-line-height-relaxed);color:var(--viking-text-muted);animation:viking-fade-in var(--viking-duration) var(--viking-ease-default)}.viking-modal-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);padding-top:var(--viking-space-2);border-top:1px solid var(--viking-border-subtle)}.viking-modal-footer:empty{display:none}:host ::ng-deep .viking-modal-footer [vikingModalActions]{display:flex;flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);width:100%}@media(prefers-reduced-motion:reduce){.viking-modal{animation:none}.viking-modal::backdrop{animation:none}.viking-modal-body{animation:none}}\n"], dependencies: [{ kind: "component", type: VikingIcon, selector: "viking-icon", inputs: ["name", "size", "sizePreset", "variant", "color", "backdrop", "backdropTone", "spin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
9663
|
+
`, isInline: true, styles: [".viking-modal{padding:0;border:1px solid var(--viking-border-strong);border-radius:var(--viking-radius-lg);background:var(--viking-surface);color:var(--viking-text);box-shadow:var(--viking-shadow-lg);width:min(522px,calc(100vw - var(--viking-space-4)));animation:viking-modal-in var(--viking-duration) var(--viking-ease-default);overflow:hidden}.viking-modal:not([open]){display:none!important;pointer-events:none}.viking-modal::backdrop{background:var(--viking-overlay-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:viking-backdrop-in var(--viking-duration-fast) var(--viking-ease-default)}.viking-modal-surface{display:flex;flex-direction:column;padding:var(--viking-space-3);gap:var(--viking-space-2);font-family:var(--viking-font-family);position:relative}.viking-modal-surface:before{content:\"\";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--viking-metallic-200) 22%,transparent),transparent);pointer-events:none}.viking-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--viking-space-2);padding-bottom:var(--viking-space-1);border-bottom:1px solid var(--viking-border-subtle)}.viking-modal-heading{margin:0;font-size:var(--viking-font-size-md);font-weight:var(--viking-font-weight-bold);letter-spacing:var(--viking-letter-spacing-tight);color:var(--viking-text);line-height:var(--viking-line-height-tight)}.viking-modal-close{display:inline-flex;align-items:center;justify-content:center;width:var(--viking-control-height-sm);height:var(--viking-control-height-sm);border:1px solid transparent;background:transparent;color:var(--viking-text-muted);cursor:pointer;padding:0;border-radius:var(--viking-radius);transition:var(--viking-transition-interactive);flex-shrink:0}.viking-modal-close:hover{color:var(--viking-text);background:var(--viking-accent-soft);border-color:var(--viking-border-subtle)}.viking-modal-close:active{transform:scale(var(--viking-state-active-scale))}.viking-modal-close:focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}.viking-modal-body{font-size:var(--viking-font-size);line-height:var(--viking-line-height-relaxed);color:var(--viking-text-muted);animation:viking-fade-in var(--viking-duration) var(--viking-ease-default)}.viking-modal-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);padding-top:var(--viking-space-2);border-top:1px solid var(--viking-border-subtle)}.viking-modal-footer:empty{display:none}:host ::ng-deep .viking-modal-footer [vikingModalActions]{display:flex;flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);width:100%}@media(prefers-reduced-motion:reduce){.viking-modal{animation:none}.viking-modal::backdrop{animation:none}.viking-modal-body{animation:none}}\n"], dependencies: [{ kind: "component", type: VikingIcon, selector: "viking-icon", inputs: ["name", "size", "sizePreset", "variant", "color", "backdrop", "backdropTone", "spin"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
8678
9664
|
}
|
|
8679
9665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: VikingModal, decorators: [{
|
|
8680
9666
|
type: Component,
|
|
@@ -8710,7 +9696,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
8710
9696
|
</footer>
|
|
8711
9697
|
</div>
|
|
8712
9698
|
</dialog>
|
|
8713
|
-
`, styles: [".viking-modal{padding:0;border:1px solid var(--viking-border-strong);border-radius:var(--viking-radius-lg);background:var(--viking-surface);color:var(--viking-text);box-shadow:var(--viking-shadow-lg);width:min(522px,calc(100vw - var(--viking-space-4)));animation:viking-modal-in var(--viking-duration) var(--viking-ease-default);overflow:hidden}.viking-modal::backdrop{background:var(--viking-overlay-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:viking-backdrop-in var(--viking-duration-fast) var(--viking-ease-default)}.viking-modal-surface{display:flex;flex-direction:column;padding:var(--viking-space-3);gap:var(--viking-space-2);font-family:var(--viking-font-family);position:relative}.viking-modal-surface:before{content:\"\";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--viking-metallic-200) 22%,transparent),transparent);pointer-events:none}.viking-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--viking-space-2);padding-bottom:var(--viking-space-1);border-bottom:1px solid var(--viking-border-subtle)}.viking-modal-heading{margin:0;font-size:var(--viking-font-size-md);font-weight:var(--viking-font-weight-bold);letter-spacing:var(--viking-letter-spacing-tight);color:var(--viking-text);line-height:var(--viking-line-height-tight)}.viking-modal-close{display:inline-flex;align-items:center;justify-content:center;width:var(--viking-control-height-sm);height:var(--viking-control-height-sm);border:1px solid transparent;background:transparent;color:var(--viking-text-muted);cursor:pointer;padding:0;border-radius:var(--viking-radius);transition:var(--viking-transition-interactive);flex-shrink:0}.viking-modal-close:hover{color:var(--viking-text);background:var(--viking-accent-soft);border-color:var(--viking-border-subtle)}.viking-modal-close:active{transform:scale(var(--viking-state-active-scale))}.viking-modal-close:focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}.viking-modal-body{font-size:var(--viking-font-size);line-height:var(--viking-line-height-relaxed);color:var(--viking-text-muted);animation:viking-fade-in var(--viking-duration) var(--viking-ease-default)}.viking-modal-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);padding-top:var(--viking-space-2);border-top:1px solid var(--viking-border-subtle)}.viking-modal-footer:empty{display:none}:host ::ng-deep .viking-modal-footer [vikingModalActions]{display:flex;flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);width:100%}@media(prefers-reduced-motion:reduce){.viking-modal{animation:none}.viking-modal::backdrop{animation:none}.viking-modal-body{animation:none}}\n"] }]
|
|
9699
|
+
`, styles: [".viking-modal{padding:0;border:1px solid var(--viking-border-strong);border-radius:var(--viking-radius-lg);background:var(--viking-surface);color:var(--viking-text);box-shadow:var(--viking-shadow-lg);width:min(522px,calc(100vw - var(--viking-space-4)));animation:viking-modal-in var(--viking-duration) var(--viking-ease-default);overflow:hidden}.viking-modal:not([open]){display:none!important;pointer-events:none}.viking-modal::backdrop{background:var(--viking-overlay-backdrop);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:viking-backdrop-in var(--viking-duration-fast) var(--viking-ease-default)}.viking-modal-surface{display:flex;flex-direction:column;padding:var(--viking-space-3);gap:var(--viking-space-2);font-family:var(--viking-font-family);position:relative}.viking-modal-surface:before{content:\"\";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--viking-metallic-200) 22%,transparent),transparent);pointer-events:none}.viking-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--viking-space-2);padding-bottom:var(--viking-space-1);border-bottom:1px solid var(--viking-border-subtle)}.viking-modal-heading{margin:0;font-size:var(--viking-font-size-md);font-weight:var(--viking-font-weight-bold);letter-spacing:var(--viking-letter-spacing-tight);color:var(--viking-text);line-height:var(--viking-line-height-tight)}.viking-modal-close{display:inline-flex;align-items:center;justify-content:center;width:var(--viking-control-height-sm);height:var(--viking-control-height-sm);border:1px solid transparent;background:transparent;color:var(--viking-text-muted);cursor:pointer;padding:0;border-radius:var(--viking-radius);transition:var(--viking-transition-interactive);flex-shrink:0}.viking-modal-close:hover{color:var(--viking-text);background:var(--viking-accent-soft);border-color:var(--viking-border-subtle)}.viking-modal-close:active{transform:scale(var(--viking-state-active-scale))}.viking-modal-close:focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}.viking-modal-body{font-size:var(--viking-font-size);line-height:var(--viking-line-height-relaxed);color:var(--viking-text-muted);animation:viking-fade-in var(--viking-duration) var(--viking-ease-default)}.viking-modal-footer{display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);padding-top:var(--viking-space-2);border-top:1px solid var(--viking-border-subtle)}.viking-modal-footer:empty{display:none}:host ::ng-deep .viking-modal-footer [vikingModalActions]{display:flex;flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:var(--viking-space-2);width:100%}@media(prefers-reduced-motion:reduce){.viking-modal{animation:none}.viking-modal::backdrop{animation:none}.viking-modal-body{animation:none}}\n"] }]
|
|
8714
9700
|
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { dialogRef: [{ type: i0.ViewChild, args: ["dialog", { isSignal: true }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], heading: [{ type: i0.Input, args: [{ isSignal: true, alias: "heading", required: false }] }], dismissible: [{ type: i0.Input, args: [{ isSignal: true, alias: "dismissible", required: false }] }] } });
|
|
8715
9701
|
|
|
8716
9702
|
/**
|
|
@@ -12693,6 +13679,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
12693
13679
|
}, template: `<ng-content />`, styles: [":host(.viking-sidebar-nav){padding:var(--viking-space-1) var(--viking-space-1) var(--viking-space-1);display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px}@media(min-width:901px){:host(.viking-sidebar-nav){padding:var(--viking-space-2) 0;flex-direction:column;flex-wrap:nowrap;gap:var(--viking-space-1)}}:host(.viking-sidebar-nav-link){display:contents}:host(.viking-sidebar-nav-link) a{display:flex;align-items:center;gap:var(--viking-space-1);padding:10px 14px;color:var(--text-color);text-decoration:none;font-weight:var(--viking-font-weight-semibold);font-size:var(--viking-font-size-base);transition:color var(--viking-duration) var(--viking-ease-default),background-color var(--viking-duration) var(--viking-ease-default),border-color var(--viking-duration) var(--viking-ease-default);border-left:3px solid transparent;border-bottom:3px solid transparent;border-radius:var(--viking-radius);flex:0 0 auto;min-height:44px;white-space:nowrap;cursor:pointer;background:transparent;font-family:var(--viking-font-family);box-sizing:border-box;width:auto}:host(.viking-sidebar-nav-link) a:hover{background-color:var(--sidebar-hover-bg);color:var(--text-color)}:host(.viking-sidebar-nav-link) a:focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}:host(.viking-sidebar-nav-link) a.viking-sidebar-nav-link-active{background:var(--sidebar-active-bg);border-left-color:transparent;border-bottom-color:var(--sidebar-active-border);color:var(--sidebar-active-border)}@media(min-width:901px){:host(.viking-sidebar-nav-link) a{width:100%;padding:var(--viking-space-1) var(--viking-space-2);border-bottom:none;border-left:3px solid transparent;border-radius:0;min-height:0}:host(.viking-sidebar-nav-link) a.viking-sidebar-nav-link-active{border-left-color:var(--sidebar-active-border);border-bottom-color:transparent}}:host(.viking-sidebar-nav-tree){display:flex;flex-direction:column;flex:1 1 100%;width:100%;margin:4px 0 0;padding-top:var(--viking-space-1);border-top:1px solid var(--sidebar-border)}@media(min-width:901px){:host(.viking-sidebar-nav-tree){flex:none;width:auto;margin:var(--viking-space-1) 0;padding-top:0;border-top:none}}:host(.viking-sidebar-nav-tree-header){display:flex;align-items:center;justify-content:space-between;padding:var(--viking-space-1) var(--viking-space-2) var(--viking-space-1) 56px;color:var(--text-muted);font-size:var(--viking-font-size-base);font-weight:var(--viking-font-weight-bold);text-transform:uppercase;letter-spacing:var(--viking-letter-spacing-wide);cursor:pointer;transition:color var(--viking-duration) var(--viking-ease-default);font-family:var(--viking-font-family);border:none;background:transparent;width:100%;text-align:left}:host(.viking-sidebar-nav-tree-header):hover{color:var(--text-color)}:host(.viking-sidebar-nav-tree-header):focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}:host(.viking-sidebar-nav-tree-children){display:flex;flex-direction:column;padding:0;margin:0;border:none}:host(.viking-sidebar-nav-tree-item){display:flex;align-items:center;gap:var(--viking-space-1);padding:var(--viking-space-1) var(--viking-space-2) var(--viking-space-1) 56px;color:var(--text-muted);font-size:var(--viking-font-size-base);font-weight:var(--viking-font-weight-medium);cursor:pointer;transition:color var(--viking-duration) var(--viking-ease-default),background-color var(--viking-duration) var(--viking-ease-default),border-color var(--viking-duration) var(--viking-ease-default);border-left:3px solid transparent;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:transparent;font-family:var(--viking-font-family);border-top:none;border-right:none;border-bottom:none;width:100%;text-align:left;box-sizing:border-box}:host(.viking-sidebar-nav-tree-item):hover{background-color:var(--sidebar-hover-bg);color:var(--text-color)}:host(.viking-sidebar-nav-tree-item):focus-visible{outline:var(--viking-ring-width) solid var(--viking-ring);outline-offset:var(--viking-ring-offset)}:host(.viking-sidebar-nav-tree-item).viking-sidebar-nav-tree-item-active{background:var(--sidebar-active-bg);border-left-color:var(--sidebar-active-border);color:var(--sidebar-active-border);font-weight:var(--viking-font-weight-semibold)}:host(.viking-sidebar-nav-tree-item).viking-sidebar-nav-tree-item-empty{font-style:italic;color:var(--text-muted);cursor:default}:host(.viking-sidebar-nav-tree-item).viking-sidebar-nav-tree-item-empty:hover{background-color:transparent;color:var(--text-muted)}:host(.viking-sidebar-nav-tree-item).viking-sidebar-nav-tree-item-accent{color:var(--status-accent);font-weight:var(--viking-font-weight-semibold);border-left:3px solid transparent}:host(.viking-sidebar-nav-tree-item).viking-sidebar-nav-tree-item-accent:hover{background-color:var(--sidebar-hover-bg);color:var(--status-accent)}.viking-sidebar-nav-tree-arrow{font-size:20px;width:20px;height:20px;line-height:20px;color:var(--text-muted)}.viking-sidebar-nav-tree-icon{font-size:var(--viking-icon-size-md, var(--base-font-size));width:var(--viking-icon-size-md, var(--base-font-size));height:var(--viking-icon-size-md, var(--base-font-size));line-height:var(--viking-icon-size-md, var(--base-font-size))}\n"] }]
|
|
12694
13680
|
}], propDecorators: { active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], activated: [{ type: i0.Output, args: ["activated"] }] } });
|
|
12695
13681
|
|
|
13682
|
+
registerVikingElements();
|
|
13683
|
+
/**
|
|
13684
|
+
* viking-status-card — wrapper around the web component.
|
|
13685
|
+
*/
|
|
13686
|
+
class VikingStatusCard {
|
|
13687
|
+
title = input("", /* @ts-ignore */
|
|
13688
|
+
...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
13689
|
+
subtitle = input("", /* @ts-ignore */
|
|
13690
|
+
...(ngDevMode ? [{ debugName: "subtitle" }] : /* istanbul ignore next */ []));
|
|
13691
|
+
status = input("", /* @ts-ignore */
|
|
13692
|
+
...(ngDevMode ? [{ debugName: "status" }] : /* istanbul ignore next */ []));
|
|
13693
|
+
statusTone = input("muted", /* @ts-ignore */
|
|
13694
|
+
...(ngDevMode ? [{ debugName: "statusTone" }] : /* istanbul ignore next */ []));
|
|
13695
|
+
statusDot = input(false, /* @ts-ignore */
|
|
13696
|
+
...(ngDevMode ? [{ debugName: "statusDot" }] : /* istanbul ignore next */ []));
|
|
13697
|
+
href = input("", /* @ts-ignore */
|
|
13698
|
+
...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
|
|
13699
|
+
target = input("", /* @ts-ignore */
|
|
13700
|
+
...(ngDevMode ? [{ debugName: "target" }] : /* istanbul ignore next */ []));
|
|
13701
|
+
compact = input(false, /* @ts-ignore */
|
|
13702
|
+
...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
13703
|
+
loading = input(false, /* @ts-ignore */
|
|
13704
|
+
...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
13705
|
+
interactive = input(false, /* @ts-ignore */
|
|
13706
|
+
...(ngDevMode ? [{ debugName: "interactive" }] : /* istanbul ignore next */ []));
|
|
13707
|
+
ariaLabel = input("", /* @ts-ignore */
|
|
13708
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
13709
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: VikingStatusCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13710
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: VikingStatusCard, isStandalone: true, selector: "viking-status-card", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, statusTone: { classPropertyName: "statusTone", publicName: "statusTone", isSignal: true, isRequired: false, transformFunction: null }, statusDot: { classPropertyName: "statusDot", publicName: "statusDot", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, interactive: { classPropertyName: "interactive", publicName: "interactive", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
13711
|
+
<viking-status-card-wc
|
|
13712
|
+
[attr.title]="title()"
|
|
13713
|
+
[attr.subtitle]="subtitle()"
|
|
13714
|
+
[attr.status]="status()"
|
|
13715
|
+
[attr.status-tone]="statusTone()"
|
|
13716
|
+
[attr.status-dot]="statusDot() || null"
|
|
13717
|
+
[attr.href]="href()"
|
|
13718
|
+
[attr.target]="target()"
|
|
13719
|
+
[attr.compact]="compact() || null"
|
|
13720
|
+
[attr.loading]="loading() || null"
|
|
13721
|
+
[attr.interactive]="interactive() || null"
|
|
13722
|
+
[attr.aria-label]="ariaLabel()"
|
|
13723
|
+
>
|
|
13724
|
+
<ng-content />
|
|
13725
|
+
</viking-status-card-wc>
|
|
13726
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13727
|
+
}
|
|
13728
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: VikingStatusCard, decorators: [{
|
|
13729
|
+
type: Component,
|
|
13730
|
+
args: [{
|
|
13731
|
+
selector: "viking-status-card",
|
|
13732
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
13733
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13734
|
+
template: `
|
|
13735
|
+
<viking-status-card-wc
|
|
13736
|
+
[attr.title]="title()"
|
|
13737
|
+
[attr.subtitle]="subtitle()"
|
|
13738
|
+
[attr.status]="status()"
|
|
13739
|
+
[attr.status-tone]="statusTone()"
|
|
13740
|
+
[attr.status-dot]="statusDot() || null"
|
|
13741
|
+
[attr.href]="href()"
|
|
13742
|
+
[attr.target]="target()"
|
|
13743
|
+
[attr.compact]="compact() || null"
|
|
13744
|
+
[attr.loading]="loading() || null"
|
|
13745
|
+
[attr.interactive]="interactive() || null"
|
|
13746
|
+
[attr.aria-label]="ariaLabel()"
|
|
13747
|
+
>
|
|
13748
|
+
<ng-content />
|
|
13749
|
+
</viking-status-card-wc>
|
|
13750
|
+
`,
|
|
13751
|
+
}]
|
|
13752
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], status: [{ type: i0.Input, args: [{ isSignal: true, alias: "status", required: false }] }], statusTone: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusTone", required: false }] }], statusDot: [{ type: i0.Input, args: [{ isSignal: true, alias: "statusDot", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], interactive: [{ type: i0.Input, args: [{ isSignal: true, alias: "interactive", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
13753
|
+
|
|
12696
13754
|
/**
|
|
12697
13755
|
* viking-status-metric-row — icon + title/subtitle + value row for status cards.
|
|
12698
13756
|
*/
|
|
@@ -12749,6 +13807,69 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
12749
13807
|
`, styles: [":host{display:flex;align-items:center;justify-content:space-between;gap:var(--viking-space-2);padding:var(--viking-space-2);border:1px solid var(--viking-border);border-radius:var(--viking-radius-lg);background:var(--viking-surface)}.stat-info{display:flex;align-items:center;gap:var(--viking-space-2);min-width:0}.stat-title{display:block;font-size:var(--viking-font-size-sm);font-weight:var(--viking-font-weight-semibold);color:var(--viking-text)}.stat-subtitle{display:block;font-size:var(--viking-font-size-sm);color:var(--viking-text-muted)}.stat-value{font-size:calc(var(--viking-font-size) * 1.25);font-weight:700;color:var(--viking-text)}\n"] }]
|
|
12750
13808
|
}], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: true }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: true }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }] } });
|
|
12751
13809
|
|
|
13810
|
+
registerVikingElements();
|
|
13811
|
+
/**
|
|
13812
|
+
* viking-status-pill — status badge for status cards and operational states.
|
|
13813
|
+
*/
|
|
13814
|
+
class VikingStatusPill {
|
|
13815
|
+
tone = input("muted", /* @ts-ignore */
|
|
13816
|
+
...(ngDevMode ? [{ debugName: "tone" }] : /* istanbul ignore next */ []));
|
|
13817
|
+
icon = input("", /* @ts-ignore */
|
|
13818
|
+
...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
13819
|
+
dot = input(false, /* @ts-ignore */
|
|
13820
|
+
...(ngDevMode ? [{ debugName: "dot" }] : /* istanbul ignore next */ []));
|
|
13821
|
+
compact = input(false, /* @ts-ignore */
|
|
13822
|
+
...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
13823
|
+
removable = input(false, /* @ts-ignore */
|
|
13824
|
+
...(ngDevMode ? [{ debugName: "removable" }] : /* istanbul ignore next */ []));
|
|
13825
|
+
href = input("", /* @ts-ignore */
|
|
13826
|
+
...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
|
|
13827
|
+
target = input("", /* @ts-ignore */
|
|
13828
|
+
...(ngDevMode ? [{ debugName: "target" }] : /* istanbul ignore next */ []));
|
|
13829
|
+
ariaLabel = input("", /* @ts-ignore */
|
|
13830
|
+
...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
13831
|
+
removed = output();
|
|
13832
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: VikingStatusPill, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13833
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.5", type: VikingStatusPill, isStandalone: true, selector: "viking-status-pill", inputs: { tone: { classPropertyName: "tone", publicName: "tone", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, dot: { classPropertyName: "dot", publicName: "dot", isSignal: true, isRequired: false, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, removable: { classPropertyName: "removable", publicName: "removable", isSignal: true, isRequired: false, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { removed: "removed" }, ngImport: i0, template: `
|
|
13834
|
+
<viking-status-pill-wc
|
|
13835
|
+
[attr.tone]="tone()"
|
|
13836
|
+
[attr.icon]="icon()"
|
|
13837
|
+
[attr.dot]="dot() || null"
|
|
13838
|
+
[attr.compact]="compact() || null"
|
|
13839
|
+
[attr.removable]="removable() || null"
|
|
13840
|
+
[attr.href]="href()"
|
|
13841
|
+
[attr.target]="target()"
|
|
13842
|
+
[attr.aria-label]="ariaLabel()"
|
|
13843
|
+
(viking-pill-removed)="removed.emit()"
|
|
13844
|
+
>
|
|
13845
|
+
<ng-content />
|
|
13846
|
+
</viking-status-pill-wc>
|
|
13847
|
+
`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
13848
|
+
}
|
|
13849
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: VikingStatusPill, decorators: [{
|
|
13850
|
+
type: Component,
|
|
13851
|
+
args: [{
|
|
13852
|
+
selector: "viking-status-pill",
|
|
13853
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
13854
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
13855
|
+
template: `
|
|
13856
|
+
<viking-status-pill-wc
|
|
13857
|
+
[attr.tone]="tone()"
|
|
13858
|
+
[attr.icon]="icon()"
|
|
13859
|
+
[attr.dot]="dot() || null"
|
|
13860
|
+
[attr.compact]="compact() || null"
|
|
13861
|
+
[attr.removable]="removable() || null"
|
|
13862
|
+
[attr.href]="href()"
|
|
13863
|
+
[attr.target]="target()"
|
|
13864
|
+
[attr.aria-label]="ariaLabel()"
|
|
13865
|
+
(viking-pill-removed)="removed.emit()"
|
|
13866
|
+
>
|
|
13867
|
+
<ng-content />
|
|
13868
|
+
</viking-status-pill-wc>
|
|
13869
|
+
`,
|
|
13870
|
+
}]
|
|
13871
|
+
}], propDecorators: { tone: [{ type: i0.Input, args: [{ isSignal: true, alias: "tone", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], dot: [{ type: i0.Input, args: [{ isSignal: true, alias: "dot", required: false }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], removable: [{ type: i0.Input, args: [{ isSignal: true, alias: "removable", required: false }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], removed: [{ type: i0.Output, args: ["removed"] }] } });
|
|
13872
|
+
|
|
12752
13873
|
/**
|
|
12753
13874
|
* viking-slider — range slider.
|
|
12754
13875
|
* ControlValueAccessor-compatible.
|
|
@@ -13971,5 +15092,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.5", ngImpor
|
|
|
13971
15092
|
* Generated bundle index. Do not edit.
|
|
13972
15093
|
*/
|
|
13973
15094
|
|
|
13974
|
-
export { BUG_REPORT_QUERY, COOKIE_SETTINGS_QUERY, DEFAULT_SITE_URLS, MATERIAL_ICON_ALIASES$1 as MATERIAL_ICON_ALIASES, SITE_FOOTER_COLUMNS, SITE_NAV_LINKS, VIKING_BRAND_ICON_FILLED_PATHS$1 as VIKING_BRAND_ICON_FILLED_PATHS, VIKING_BRAND_ICON_NAMES$1 as VIKING_BRAND_ICON_NAMES, VIKING_BRAND_ICON_NAMES_LIST$1 as VIKING_BRAND_ICON_NAMES_LIST, VIKING_BRAND_ICON_PATHS$1 as VIKING_BRAND_ICON_PATHS, VIKING_DRAKKAR_ICON_FILLED_PATHS$1 as VIKING_DRAKKAR_ICON_FILLED_PATHS, VIKING_DRAKKAR_ICON_NAMES_LIST$1 as VIKING_DRAKKAR_ICON_NAMES_LIST, VIKING_DRAKKAR_ICON_PATHS$1 as VIKING_DRAKKAR_ICON_PATHS, VIKING_FILLED_ICON_NAMES$1 as VIKING_FILLED_ICON_NAMES, VIKING_ICON_FILLED_PATHS$1 as VIKING_ICON_FILLED_PATHS, VIKING_ICON_NAMES$1 as VIKING_ICON_NAMES, VIKING_ICON_PATHS$1 as VIKING_ICON_PATHS, VIKING_ICON_SIZE_PRESETS$1 as VIKING_ICON_SIZE_PRESETS, VIKING_INTEGRATION_BRAND_COLORS$1 as VIKING_INTEGRATION_BRAND_COLORS, VIKING_INTEGRATION_BRAND_NAMES$1 as VIKING_INTEGRATION_BRAND_NAMES, VIKING_INTEGRATION_BRAND_SVGS$1 as VIKING_INTEGRATION_BRAND_SVGS, VIKING_INTEGRATION_ICON_NAMES_LIST$1 as VIKING_INTEGRATION_ICON_NAMES_LIST, VIKING_INTEGRATION_ICON_PATHS$1 as VIKING_INTEGRATION_ICON_PATHS, VIKING_LUCIDE_ICON_NAMES$1 as VIKING_LUCIDE_ICON_NAMES, VIKING_SERIES_DEFAULT, VIKING_SERIES_PRESETS, VIKING_TABS, VIKING_TOGGLE_GROUP, VikingAccordion, VikingAccordionItem, VikingAppHeader, VikingAppSidebar, VikingAuthPanel, VikingAutocomplete, VikingAvatar, VikingBadge, VikingBadgeWc, VikingBar, VikingBrand, VikingBreadcrumbs, VikingButton, VikingButtonGroup, VikingButtonWc, VikingCalendar, VikingCallout, VikingCalloutWc, VikingCard, VikingCardFooter, VikingCardHeader, VikingCardTitle, VikingCardWc, VikingCarousel, VikingCarouselSlide, VikingChart, VikingChartCardHeader, VikingChartEmptyState, VikingChartPanel, VikingCheckbox, VikingColorPicker, VikingCommand, VikingComposer, VikingConfirmDialog, VikingContext, VikingControl, VikingDatePicker, VikingDialogService, VikingDropdown, VikingEditor, VikingEmptyState, VikingFab, VikingField, VikingFieldWc, VikingFileUpload, VikingFooter, VikingFormPanel, VikingFormSection, VikingGaugeArc, VikingHeading, VikingHudPanel, VikingIcon, VikingIconBadge, VikingIcon as VikingIconComponent, VikingIconHeading, VikingIconText, VikingInput, VikingInputWc, VikingKanban, VikingKbd, VikingLabel, VikingLoadingOverlay, VikingMenuItem, VikingMenubar, VikingMenubarItem, VikingMetricCard, VikingMetricRow, VikingModal, VikingModalWc, VikingNativeSelect, VikingNavbar, VikingNavbarItem, VikingNavigationMenu, VikingOtpInput, VikingPageBackLink, VikingPageHeader, VikingPagination, VikingPillbox, VikingPopover, VikingProfile, VikingProgress, VikingRadioGroup, VikingRingGauge, VikingScrollArea, VikingSearchPalette, VikingSearchPaletteWc, VikingSelect, VikingSelectWc, VikingSeparator, VikingSheet, VikingSidebarNav, VikingSidebarNavLink, VikingSidebarNavTree, VikingSidebarNavTreeChildren, VikingSidebarNavTreeHeader, VikingSidebarNavTreeItem, VikingSiteFooter, VikingSiteNavbar, VikingSkeleton, VikingSlider, VikingSpinner, VikingStatusMetricRow, VikingSuiteHeaderWc, VikingSuiteSearchPalette, VikingSuiteSearchPaletteWc, VikingSwitch, VikingTab, VikingTabPanel, VikingTable, VikingTabs, VikingText, VikingTextarea, VikingThemeToggle, VikingThemeToggleWc, VikingTimePicker, VikingTimeline, VikingTimelineItem, VikingToastService, VikingToaster, VikingToggle, VikingToggleGroup, VikingTooltip, VikingUptimeBar, VikingVerificationCodeField, VikingWhitepaperCta, VikingWizard, bugReportHref, buildSuiteSearchItems, clampChartWindow, cookieSettingsHref, fullChartWindow, isAppRouterPath, isIntegrationBrandIcon$1 as isIntegrationBrandIcon, panChartWindow, provideVikingCva, registerVikingBadgeWc, registerVikingButtonWc, registerVikingCalloutWc, registerVikingCardWc, registerVikingElements, registerVikingFieldWc, registerVikingInputWc, registerVikingModalWc, registerVikingSearchPaletteWc, registerVikingSelectWc, registerVikingSuiteHeaderWc, registerVikingSuiteSearchPaletteWc, registerVikingThemeToggleWc, resolveBrandHref, resolveFooterHref, resolveNavHref, resolveVikingIcon$1 as resolveVikingIcon, resolveVikingIconColor$1 as resolveVikingIconColor, resolveVikingIconSize$1 as resolveVikingIconSize, sliceChartData, vikingIconViewBox$1 as vikingIconViewBox, visibleNavLinks, zoomChartWindow };
|
|
15095
|
+
export { BUG_REPORT_QUERY, COOKIE_SETTINGS_QUERY, DEFAULT_SITE_URLS, MATERIAL_ICON_ALIASES$1 as MATERIAL_ICON_ALIASES, SITE_FOOTER_COLUMNS, SITE_NAV_LINKS, VIKING_BRAND_ICON_FILLED_PATHS$1 as VIKING_BRAND_ICON_FILLED_PATHS, VIKING_BRAND_ICON_NAMES$1 as VIKING_BRAND_ICON_NAMES, VIKING_BRAND_ICON_NAMES_LIST$1 as VIKING_BRAND_ICON_NAMES_LIST, VIKING_BRAND_ICON_PATHS$1 as VIKING_BRAND_ICON_PATHS, VIKING_DRAKKAR_ICON_FILLED_PATHS$1 as VIKING_DRAKKAR_ICON_FILLED_PATHS, VIKING_DRAKKAR_ICON_NAMES_LIST$1 as VIKING_DRAKKAR_ICON_NAMES_LIST, VIKING_DRAKKAR_ICON_PATHS$1 as VIKING_DRAKKAR_ICON_PATHS, VIKING_FILLED_ICON_NAMES$1 as VIKING_FILLED_ICON_NAMES, VIKING_ICON_FILLED_PATHS$1 as VIKING_ICON_FILLED_PATHS, VIKING_ICON_NAMES$1 as VIKING_ICON_NAMES, VIKING_ICON_PATHS$1 as VIKING_ICON_PATHS, VIKING_ICON_SIZE_PRESETS$1 as VIKING_ICON_SIZE_PRESETS, VIKING_INTEGRATION_BRAND_COLORS$1 as VIKING_INTEGRATION_BRAND_COLORS, VIKING_INTEGRATION_BRAND_NAMES$1 as VIKING_INTEGRATION_BRAND_NAMES, VIKING_INTEGRATION_BRAND_SVGS$1 as VIKING_INTEGRATION_BRAND_SVGS, VIKING_INTEGRATION_ICON_NAMES_LIST$1 as VIKING_INTEGRATION_ICON_NAMES_LIST, VIKING_INTEGRATION_ICON_PATHS$1 as VIKING_INTEGRATION_ICON_PATHS, VIKING_LUCIDE_ICON_NAMES$1 as VIKING_LUCIDE_ICON_NAMES, VIKING_SERIES_DEFAULT, VIKING_SERIES_PRESETS, VIKING_TABS, VIKING_TOGGLE_GROUP, VikingAccordion, VikingAccordionItem, VikingAppHeader, VikingAppSidebar, VikingAuthPanel, VikingAutocomplete, VikingAvatar, VikingBadge, VikingBadgeWc, VikingBar, VikingBrand, VikingBreadcrumbs, VikingButton, VikingButtonGroup, VikingButtonWc, VikingCalendar, VikingCallout, VikingCalloutWc, VikingCard, VikingCardFooter, VikingCardHeader, VikingCardTitle, VikingCardWc, VikingCarousel, VikingCarouselSlide, VikingChart, VikingChartCardHeader, VikingChartEmptyState, VikingChartPanel, VikingCheckbox, VikingColorPicker, VikingCommand, VikingComposer, VikingConfirmDialog, VikingContext, VikingControl, VikingDatePicker, VikingDialogService, VikingDropdown, VikingEditor, VikingEmptyState, VikingFab, VikingField, VikingFieldWc, VikingFileUpload, VikingFooter, VikingFormPanel, VikingFormSection, VikingGaugeArc, VikingHeading, VikingHudPanel, VikingIcon, VikingIconBadge, VikingIcon as VikingIconComponent, VikingIconHeading, VikingIconText, VikingInput, VikingInputWc, VikingKanban, VikingKbd, VikingLabel, VikingLoadingOverlay, VikingMenuItem, VikingMenubar, VikingMenubarItem, VikingMetricCard, VikingMetricRow, VikingModal, VikingModalWc, VikingNativeSelect, VikingNavbar, VikingNavbarItem, VikingNavigationMenu, VikingOtpInput, VikingPageBackLink, VikingPageHeader, VikingPagination, VikingPillbox, VikingPopover, VikingProfile, VikingProgress, VikingRadioGroup, VikingRingGauge, VikingScrollArea, VikingSearchPalette, VikingSearchPaletteWc, VikingSelect, VikingSelectWc, VikingSeparator, VikingSheet, VikingSidebarNav, VikingSidebarNavLink, VikingSidebarNavTree, VikingSidebarNavTreeChildren, VikingSidebarNavTreeHeader, VikingSidebarNavTreeItem, VikingSiteFooter, VikingSiteNavbar, VikingSkeleton, VikingSlider, VikingSpinner, VikingStatusCard, VikingStatusCardWc, VikingStatusMetricRow, VikingStatusPill, VikingStatusPillWc, VikingSuiteHeaderWc, VikingSuiteSearchPalette, VikingSuiteSearchPaletteWc, VikingSwitch, VikingTab, VikingTabPanel, VikingTable, VikingTabs, VikingText, VikingTextarea, VikingThemeToggle, VikingThemeToggleWc, VikingTimePicker, VikingTimeline, VikingTimelineItem, VikingToastService, VikingToaster, VikingToggle, VikingToggleGroup, VikingTooltip, VikingUptimeBar, VikingVerificationCodeField, VikingWhitepaperCta, VikingWizard, bugReportHref, buildSuiteSearchItems, clampChartWindow, cookieSettingsHref, fullChartWindow, isAppRouterPath, isIntegrationBrandIcon$1 as isIntegrationBrandIcon, panChartWindow, provideVikingCva, registerVikingBadgeWc, registerVikingButtonWc, registerVikingCalloutWc, registerVikingCardWc, registerVikingElements, registerVikingFieldWc, registerVikingInputWc, registerVikingModalWc, registerVikingSearchPaletteWc, registerVikingSelectWc, registerVikingStatusCardWc, registerVikingStatusPillWc, registerVikingSuiteHeaderWc, registerVikingSuiteSearchPaletteWc, registerVikingThemeToggleWc, resolveBrandHref, resolveFooterHref, resolveNavHref, resolveVikingIcon$1 as resolveVikingIcon, resolveVikingIconColor$1 as resolveVikingIconColor, resolveVikingIconSize$1 as resolveVikingIconSize, sliceChartData, vikingIconViewBox$1 as vikingIconViewBox, visibleNavLinks, zoomChartWindow };
|
|
13975
15096
|
//# sourceMappingURL=dataengineeringformachinelearning-viking-ui.mjs.map
|