@dataengineeringformachinelearning/viking-ui 4.1.1 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2859 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { Type, Provider, ElementRef, OnDestroy, InjectionToken, OnInit, AfterViewInit } from '@angular/core';
3
+ import { ControlValueAccessor } from '@angular/forms';
4
+ import * as _dataengineeringformachinelearning_viking_ui from '@dataengineeringformachinelearning/viking-ui';
5
+ import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
6
+ import { Params } from '@angular/router';
7
+
8
+ /**
9
+ * AUTO-GENERATED by scripts/sync_lucide_icons.mjs — do not edit by hand.
10
+ * Lucide paths are inlined at build time; lucide is a devDependency only.
11
+ * @see https://lucide.dev
12
+ */
13
+ declare const LUCIDE_ICON_PATHS: {
14
+ readonly "alert-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"/><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"/>";
15
+ readonly "alert-triangle": "<path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/>";
16
+ readonly "arrow-left": "<path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/>";
17
+ readonly "arrow-right": "<path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/>";
18
+ readonly "arrow-up-right": "<path d=\"M7 7h10v10\"/><path d=\"M7 17 17 7\"/>";
19
+ readonly "bar-chart": "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"M18 17V9\"/><path d=\"M13 17V5\"/><path d=\"M8 17v-3\"/>";
20
+ readonly bell: "<path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/><path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\"/>";
21
+ readonly bold: "<path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\"/>";
22
+ readonly bolt: "<path d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\"/>";
23
+ readonly brain: "<path d=\"M12 18V5\"/><path d=\"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\"/><path d=\"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5\"/><path d=\"M17.997 5.125a4 4 0 0 1 2.526 5.77\"/><path d=\"M18 18a4 4 0 0 0 2-7.464\"/><path d=\"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\"/><path d=\"M6 18a4 4 0 0 1-2-7.464\"/><path d=\"M6.003 5.125a4 4 0 0 0-2.526 5.77\"/>";
24
+ readonly bug: "<path d=\"M12 20v-9\"/><path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\"/><path d=\"M14.12 3.88 16 2\"/><path d=\"M21 21a4 4 0 0 0-3.81-4\"/><path d=\"M21 5a4 4 0 0 1-3.55 3.97\"/><path d=\"M22 13h-4\"/><path d=\"M3 21a4 4 0 0 1 3.81-4\"/><path d=\"M3 5a4 4 0 0 0 3.55 3.97\"/><path d=\"M6 13H2\"/><path d=\"m8 2 1.88 1.88\"/><path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\"/>";
25
+ readonly building: "<path d=\"M12 10h.01\"/><path d=\"M12 14h.01\"/><path d=\"M12 6h.01\"/><path d=\"M16 10h.01\"/><path d=\"M16 14h.01\"/><path d=\"M16 6h.01\"/><path d=\"M8 10h.01\"/><path d=\"M8 14h.01\"/><path d=\"M8 6h.01\"/><path d=\"M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\"/><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"/>";
26
+ readonly calendar: "<path d=\"M8 2v4\"/><path d=\"M16 2v4\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"/><path d=\"M3 10h18\"/>";
27
+ readonly check: "<path d=\"M20 6 9 17l-5-5\"/>";
28
+ readonly "check-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/>";
29
+ readonly "chevron-down": "<path d=\"m6 9 6 6 6-6\"/>";
30
+ readonly "chevron-left": "<path d=\"m15 18-6-6 6-6\"/>";
31
+ readonly "chevron-right": "<path d=\"m9 18 6-6-6-6\"/>";
32
+ readonly "chevron-up": "<path d=\"m18 15-6-6-6 6\"/>";
33
+ readonly chip: "<path d=\"M12 20v2\"/><path d=\"M12 2v2\"/><path d=\"M17 20v2\"/><path d=\"M17 2v2\"/><path d=\"M2 12h2\"/><path d=\"M2 17h2\"/><path d=\"M2 7h2\"/><path d=\"M20 12h2\"/><path d=\"M20 17h2\"/><path d=\"M20 7h2\"/><path d=\"M7 20v2\"/><path d=\"M7 2v2\"/><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\"/><rect x=\"8\" y=\"8\" width=\"8\" height=\"8\" rx=\"1\"/>";
34
+ readonly clock: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/>";
35
+ readonly cloud: "<path d=\"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\"/>";
36
+ readonly cookie: "<path d=\"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5\"/><path d=\"M8.5 8.5v.01\"/><path d=\"M16 15.5v.01\"/><path d=\"M12 12v.01\"/><path d=\"M11 17v.01\"/><path d=\"M7 14v.01\"/>";
37
+ readonly copy: "<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>";
38
+ readonly "dots-horizontal": "<circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"19\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"5\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
39
+ readonly "dots-vertical": "<circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
40
+ readonly download: "<path d=\"M12 15V3\"/><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><path d=\"m7 10 5 5 5-5\"/>";
41
+ readonly external: "<path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>";
42
+ readonly eye: "<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>";
43
+ readonly "eye-off": "<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"/><path d=\"m2 2 20 20\"/>";
44
+ readonly file: "<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>";
45
+ readonly filter: "<path d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\"/>";
46
+ readonly fingerprint: "<path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"/><path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\"/><path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"/><path d=\"M2 12a10 10 0 0 1 18-6\"/><path d=\"M2 16h.01\"/><path d=\"M21.8 16c.2-2 .131-5.354 0-6\"/><path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"/><path d=\"M8.65 22c.21-.66.45-1.32.57-2\"/><path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\"/>";
47
+ readonly folder: "<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>";
48
+ readonly globe: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"/><path d=\"M2 12h20\"/>";
49
+ readonly "grip-vertical": "<circle cx=\"9\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"9\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"9\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
50
+ readonly heart: "<path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"/>";
51
+ readonly home: "<path d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"/><path d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/>";
52
+ readonly image: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/>";
53
+ readonly info: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/>";
54
+ readonly insights: "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"m19 9-5 5-4-4-3 3\"/>";
55
+ readonly italic: "<line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\"/><line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\"/><line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\"/>";
56
+ readonly key: "<path d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\"/><circle cx=\"16.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"/>";
57
+ readonly link: "<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>";
58
+ readonly list: "<path d=\"M3 5h.01\"/><path d=\"M3 12h.01\"/><path d=\"M3 19h.01\"/><path d=\"M8 5h13\"/><path d=\"M8 12h13\"/><path d=\"M8 19h13\"/>";
59
+ readonly "list-ordered": "<path d=\"M11 5h10\"/><path d=\"M11 12h10\"/><path d=\"M11 19h10\"/><path d=\"M4 4h1v5\"/><path d=\"M4 9h2\"/><path d=\"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\"/>";
60
+ readonly loader: "<path d=\"M21 12a9 9 0 1 1-6.219-8.56\"/>";
61
+ readonly lock: "<rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>";
62
+ readonly "log-in": "<path d=\"m10 17 5-5-5-5\"/><path d=\"M15 12H3\"/><path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/>";
63
+ readonly "log-out": "<path d=\"m16 17 5-5-5-5\"/><path d=\"M21 12H9\"/><path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/>";
64
+ readonly mail: "<path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"/><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"/>";
65
+ readonly menu: "<path d=\"M4 5h16\"/><path d=\"M4 12h16\"/><path d=\"M4 19h16\"/>";
66
+ readonly minus: "<path d=\"M5 12h14\"/>";
67
+ readonly moon: "<path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/>";
68
+ readonly network: "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>";
69
+ readonly paperclip: "<path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\"/>";
70
+ readonly pencil: "<path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/><path d=\"m15 5 4 4\"/>";
71
+ readonly phone: "<path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\"/>";
72
+ readonly play: "<path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" fill=\"currentColor\" stroke=\"none\"/>";
73
+ readonly plus: "<path d=\"M5 12h14\"/><path d=\"M12 5v14\"/>";
74
+ readonly policy: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/><path d=\"m9 12 2 2 4-4\"/>";
75
+ readonly refresh: "<path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"/><path d=\"M21 3v5h-5\"/><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"/><path d=\"M8 16H3v5\"/>";
76
+ readonly rocket: "<path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\"/><path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"/><path d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"/><path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"/>";
77
+ readonly search: "<path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/>";
78
+ readonly "search-off": "<path d=\"m13.5 8.5-5 5\"/><path d=\"m8.5 8.5 5 5\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>";
79
+ readonly send: "<path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\"/><path d=\"m21.854 2.147-10.94 10.939\"/>";
80
+ readonly server: "<rect width=\"20\" height=\"8\" x=\"2\" y=\"2\" rx=\"2\" ry=\"2\"/><rect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\" ry=\"2\"/><line x1=\"6\" x2=\"6.01\" y1=\"6\" y2=\"6\"/><line x1=\"6\" x2=\"6.01\" y1=\"18\" y2=\"18\"/>";
81
+ readonly settings: "<path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>";
82
+ readonly shield: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>";
83
+ readonly ship: "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
84
+ readonly sparkle: "<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/><path d=\"M20 2v4\"/><path d=\"M22 4h-4\"/><circle cx=\"4\" cy=\"20\" r=\"2\"/>";
85
+ readonly speed: "<path d=\"m12 14 4-4\"/><path d=\"M3.34 19a10 10 0 1 1 17.32 0\"/>";
86
+ readonly star: "<path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\"/>";
87
+ readonly sun: "<circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2\"/><path d=\"M12 20v2\"/><path d=\"m4.93 4.93 1.41 1.41\"/><path d=\"m17.66 17.66 1.41 1.41\"/><path d=\"M2 12h2\"/><path d=\"M20 12h2\"/><path d=\"m6.34 17.66-1.41 1.41\"/><path d=\"m19.07 4.93-1.41 1.41\"/>";
88
+ readonly terminal: "<path d=\"M12 19h8\"/><path d=\"m4 17 6-6-6-6\"/>";
89
+ readonly trash: "<path d=\"M10 11v6\"/><path d=\"M14 11v6\"/><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"/><path d=\"M3 6h18\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/>";
90
+ readonly "trending-up": "<path d=\"M16 7h6v6\"/><path d=\"m22 7-8.5 8.5-5-5L2 17\"/>";
91
+ readonly underline: "<path d=\"M6 4v6a6 6 0 0 0 12 0V4\"/><line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\"/>";
92
+ readonly upload: "<path d=\"M12 3v12\"/><path d=\"m17 8-5-5-5 5\"/><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>";
93
+ readonly user: "<path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/>";
94
+ readonly "user-shield": "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/><path d=\"M6.376 18.91a6 6 0 0 1 11.249.003\"/><circle cx=\"12\" cy=\"11\" r=\"4\"/>";
95
+ readonly x: "<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>";
96
+ };
97
+
98
+ /**
99
+ * DEML branded icon paths — optimized SVG geometry (not sourced from Lucide).
100
+ * Use via viking-icon name="deml" | "deml-compact" | "deml-lockup".
101
+ */
102
+ declare const VIKING_BRAND_ICON_PATHS: {
103
+ /** Primary bar-chart mark in rounded frame (outline). */
104
+ readonly deml: "<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M8 17V13M12 17V8M16 17V11\"/>";
105
+ /** Compact monogram for favicons and dense Drakkar shell. */
106
+ readonly "deml-compact": "<rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"3\"/><path d=\"M9 16V12M12 16V9M15 16V13\"/>";
107
+ /** Lockup mark with baseline accent bar. */
108
+ readonly "deml-lockup": "<rect x=\"3\" y=\"3\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"M8 17V13M12 17V8M16 17V11\"/><path d=\"M3 20h18\"/>";
109
+ };
110
+ /** Drakkar — Viking-UI / site shell brand marks (Lucide ship, build-time inlined). */
111
+ declare const VIKING_DRAKKAR_ICON_PATHS: {
112
+ /** Primary Drakkar longship mark (outline). */
113
+ readonly drakkar: "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
114
+ /** Compact tile for favicons and dense navbar chrome. */
115
+ readonly "drakkar-compact": "<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
116
+ /** Lockup mark with baseline accent bar. */
117
+ readonly "drakkar-lockup": "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/><path d=\"M3 21h18\"/>";
118
+ };
119
+ /** Filled-path overrides for DEML brand marks. */
120
+ declare const VIKING_BRAND_ICON_FILLED_PATHS: Partial<Record<keyof typeof VIKING_BRAND_ICON_PATHS, string>>;
121
+ /** Filled-path overrides for Drakkar brand marks. */
122
+ declare const VIKING_DRAKKAR_ICON_FILLED_PATHS: Partial<Record<keyof typeof VIKING_DRAKKAR_ICON_PATHS, string>>;
123
+ type VikingBrandIconName = keyof typeof VIKING_BRAND_ICON_PATHS;
124
+ type VikingDrakkarIconName = keyof typeof VIKING_DRAKKAR_ICON_PATHS;
125
+ declare const VIKING_BRAND_ICON_NAMES_LIST: VikingBrandIconName[];
126
+ declare const VIKING_DRAKKAR_ICON_NAMES_LIST: VikingDrakkarIconName[];
127
+
128
+ /** Official platform brand colors — exception for recognizable integration marks (same policy as Google/Apple in viking-icon). */
129
+ declare const VIKING_INTEGRATION_BRAND_COLORS: {
130
+ readonly kubernetes: "#326CE5";
131
+ readonly tensorflow: "#FF6F00";
132
+ readonly pytorch: "#EE4C2C";
133
+ readonly "apache-spark": "#E25A1C";
134
+ readonly databricks: "#FF3621";
135
+ readonly "aws-redshift": "#8C4FFF";
136
+ };
137
+ type VikingIntegrationBrandName = keyof typeof VIKING_INTEGRATION_BRAND_COLORS;
138
+ declare const VIKING_INTEGRATION_BRAND_NAMES: VikingIntegrationBrandName[];
139
+ declare const isIntegrationBrandIcon: (name: string) => name is VikingIntegrationBrandName;
140
+ /** Multi-path brand SVG markup (24×24 viewBox) — official product logos at brand hue. */
141
+ declare const VIKING_INTEGRATION_BRAND_SVGS: Record<VikingIntegrationBrandName, string>;
142
+ /** Path markup for icon registry / viking-icon-paths.json sync. */
143
+ declare const VIKING_INTEGRATION_ICON_PATHS: Record<VikingIntegrationBrandName, string>;
144
+ type VikingIntegrationIconName = VikingIntegrationBrandName;
145
+ declare const VIKING_INTEGRATION_ICON_NAMES_LIST: ("kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift")[];
146
+
147
+ /**
148
+ * Zero-dependency inline SVG icon registry (24×24 stroke icons).
149
+ * Lucide paths are synced at build time; DEML brand marks are custom artwork.
150
+ */
151
+
152
+ type VikingIconName$1 = keyof typeof VIKING_ICON_PATHS$1;
153
+ type VikingIconSizePreset = "sm" | "md" | "lg";
154
+ type VikingIconVariant = "outline" | "filled";
155
+ /** Semantic color tokens resolved to CSS custom properties. */
156
+ type VikingIconColorToken = "inherit" | "accent" | "success" | "warning" | "danger" | "info" | "muted" | "text";
157
+ /** Pixel sizes for sm / md / lg presets. */
158
+ declare const VIKING_ICON_SIZE_PRESETS: Record<VikingIconSizePreset, number>;
159
+ declare const VIKING_ICON_PATHS$1: {
160
+ readonly hub: "<circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M18.4 5.6l-2.1 2.1M7.7 16.3l-2.1 2.1\"/>";
161
+ readonly model: "<rect x=\"4\" y=\"8\" width=\"16\" height=\"10\" rx=\"2\"/><path d=\"M8 8V6a4 4 0 0 1 8 0v2\"/>";
162
+ readonly google: "<path d=\"M12 11.2v2.4h6.6c-.3 1.5-1.8 4.4-6.6 4.4-4 0-7.2-3.3-7.2-7.3S8 3.4 12 3.4c2.3 0 3.9 1 4.8 1.8l3.2-3.1C17.5.8 14.9 0 12 0 5.4 0 0 5.4 0 12s5.4 12 12 12c6.9 0 11.5-4.8 11.5-11.6 0-.8-.1-1.4-.2-1.9H12z\"/>";
163
+ readonly apple: "<path d=\"M16.365 12.14c.02 2.53 2.21 3.38 2.23 3.39-.02.07-.35 1.21-1.16 2.4-.7 1.02-1.43 2.03-2.58 2.05-1.13.02-1.49-.67-2.78-.67-1.29 0-1.69.65-2.75.69-1.11.04-1.95-1.12-2.66-2.13-1.44-2.08-2.54-5.87-1.07-8.43.73-1.27 2.04-2.08 3.46-2.1 1.08-.02 2.1.72 2.78.72.67 0 2.14-.89 3.61-.76.61.03 2.33.25 3.44 1.88-.09.06-2.05 1.2-2.03 3.55M13.75 3.64c.59-.71 1-1.7.89-2.68-.86.03-1.9.57-2.52 1.28-.55.63-1.03 1.65-.9 2.62.95.07 1.92-.49 2.53-1.22\"/>";
164
+ readonly kubernetes: string;
165
+ readonly tensorflow: string;
166
+ readonly pytorch: string;
167
+ readonly "apache-spark": string;
168
+ readonly databricks: string;
169
+ readonly "aws-redshift": string;
170
+ readonly drakkar: "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
171
+ readonly "drakkar-compact": "<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
172
+ readonly "drakkar-lockup": "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/><path d=\"M3 21h18\"/>";
173
+ readonly deml: "<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M8 17V13M12 17V8M16 17V11\"/>";
174
+ readonly "deml-compact": "<rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"3\"/><path d=\"M9 16V12M12 16V9M15 16V13\"/>";
175
+ readonly "deml-lockup": "<rect x=\"3\" y=\"3\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"M8 17V13M12 17V8M16 17V11\"/><path d=\"M3 20h18\"/>";
176
+ readonly "alert-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"/><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"/>";
177
+ readonly "alert-triangle": "<path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/>";
178
+ readonly "arrow-left": "<path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/>";
179
+ readonly "arrow-right": "<path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/>";
180
+ readonly "arrow-up-right": "<path d=\"M7 7h10v10\"/><path d=\"M7 17 17 7\"/>";
181
+ readonly "bar-chart": "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"M18 17V9\"/><path d=\"M13 17V5\"/><path d=\"M8 17v-3\"/>";
182
+ readonly bell: "<path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/><path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\"/>";
183
+ readonly bold: "<path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\"/>";
184
+ readonly bolt: "<path d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\"/>";
185
+ readonly brain: "<path d=\"M12 18V5\"/><path d=\"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\"/><path d=\"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5\"/><path d=\"M17.997 5.125a4 4 0 0 1 2.526 5.77\"/><path d=\"M18 18a4 4 0 0 0 2-7.464\"/><path d=\"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\"/><path d=\"M6 18a4 4 0 0 1-2-7.464\"/><path d=\"M6.003 5.125a4 4 0 0 0-2.526 5.77\"/>";
186
+ readonly bug: "<path d=\"M12 20v-9\"/><path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\"/><path d=\"M14.12 3.88 16 2\"/><path d=\"M21 21a4 4 0 0 0-3.81-4\"/><path d=\"M21 5a4 4 0 0 1-3.55 3.97\"/><path d=\"M22 13h-4\"/><path d=\"M3 21a4 4 0 0 1 3.81-4\"/><path d=\"M3 5a4 4 0 0 0 3.55 3.97\"/><path d=\"M6 13H2\"/><path d=\"m8 2 1.88 1.88\"/><path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\"/>";
187
+ readonly building: "<path d=\"M12 10h.01\"/><path d=\"M12 14h.01\"/><path d=\"M12 6h.01\"/><path d=\"M16 10h.01\"/><path d=\"M16 14h.01\"/><path d=\"M16 6h.01\"/><path d=\"M8 10h.01\"/><path d=\"M8 14h.01\"/><path d=\"M8 6h.01\"/><path d=\"M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\"/><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"/>";
188
+ readonly calendar: "<path d=\"M8 2v4\"/><path d=\"M16 2v4\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"/><path d=\"M3 10h18\"/>";
189
+ readonly check: "<path d=\"M20 6 9 17l-5-5\"/>";
190
+ readonly "check-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/>";
191
+ readonly "chevron-down": "<path d=\"m6 9 6 6 6-6\"/>";
192
+ readonly "chevron-left": "<path d=\"m15 18-6-6 6-6\"/>";
193
+ readonly "chevron-right": "<path d=\"m9 18 6-6-6-6\"/>";
194
+ readonly "chevron-up": "<path d=\"m18 15-6-6-6 6\"/>";
195
+ readonly chip: "<path d=\"M12 20v2\"/><path d=\"M12 2v2\"/><path d=\"M17 20v2\"/><path d=\"M17 2v2\"/><path d=\"M2 12h2\"/><path d=\"M2 17h2\"/><path d=\"M2 7h2\"/><path d=\"M20 12h2\"/><path d=\"M20 17h2\"/><path d=\"M20 7h2\"/><path d=\"M7 20v2\"/><path d=\"M7 2v2\"/><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\"/><rect x=\"8\" y=\"8\" width=\"8\" height=\"8\" rx=\"1\"/>";
196
+ readonly clock: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/>";
197
+ readonly cloud: "<path d=\"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\"/>";
198
+ readonly cookie: "<path d=\"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5\"/><path d=\"M8.5 8.5v.01\"/><path d=\"M16 15.5v.01\"/><path d=\"M12 12v.01\"/><path d=\"M11 17v.01\"/><path d=\"M7 14v.01\"/>";
199
+ readonly copy: "<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>";
200
+ readonly "dots-horizontal": "<circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"19\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"5\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
201
+ readonly "dots-vertical": "<circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
202
+ readonly download: "<path d=\"M12 15V3\"/><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><path d=\"m7 10 5 5 5-5\"/>";
203
+ readonly external: "<path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>";
204
+ readonly eye: "<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>";
205
+ readonly "eye-off": "<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"/><path d=\"m2 2 20 20\"/>";
206
+ readonly file: "<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>";
207
+ readonly filter: "<path d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\"/>";
208
+ readonly fingerprint: "<path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"/><path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\"/><path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"/><path d=\"M2 12a10 10 0 0 1 18-6\"/><path d=\"M2 16h.01\"/><path d=\"M21.8 16c.2-2 .131-5.354 0-6\"/><path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"/><path d=\"M8.65 22c.21-.66.45-1.32.57-2\"/><path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\"/>";
209
+ readonly folder: "<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>";
210
+ readonly globe: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"/><path d=\"M2 12h20\"/>";
211
+ readonly "grip-vertical": "<circle cx=\"9\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"9\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"9\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
212
+ readonly heart: "<path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"/>";
213
+ readonly home: "<path d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"/><path d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/>";
214
+ readonly image: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/>";
215
+ readonly info: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/>";
216
+ readonly insights: "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"m19 9-5 5-4-4-3 3\"/>";
217
+ readonly italic: "<line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\"/><line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\"/><line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\"/>";
218
+ readonly key: "<path d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\"/><circle cx=\"16.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"/>";
219
+ readonly link: "<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>";
220
+ readonly list: "<path d=\"M3 5h.01\"/><path d=\"M3 12h.01\"/><path d=\"M3 19h.01\"/><path d=\"M8 5h13\"/><path d=\"M8 12h13\"/><path d=\"M8 19h13\"/>";
221
+ readonly "list-ordered": "<path d=\"M11 5h10\"/><path d=\"M11 12h10\"/><path d=\"M11 19h10\"/><path d=\"M4 4h1v5\"/><path d=\"M4 9h2\"/><path d=\"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\"/>";
222
+ readonly loader: "<path d=\"M21 12a9 9 0 1 1-6.219-8.56\"/>";
223
+ readonly lock: "<rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>";
224
+ readonly "log-in": "<path d=\"m10 17 5-5-5-5\"/><path d=\"M15 12H3\"/><path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/>";
225
+ readonly "log-out": "<path d=\"m16 17 5-5-5-5\"/><path d=\"M21 12H9\"/><path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/>";
226
+ readonly mail: "<path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"/><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"/>";
227
+ readonly menu: "<path d=\"M4 5h16\"/><path d=\"M4 12h16\"/><path d=\"M4 19h16\"/>";
228
+ readonly minus: "<path d=\"M5 12h14\"/>";
229
+ readonly moon: "<path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/>";
230
+ readonly network: "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>";
231
+ readonly paperclip: "<path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\"/>";
232
+ readonly pencil: "<path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/><path d=\"m15 5 4 4\"/>";
233
+ readonly phone: "<path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\"/>";
234
+ readonly play: "<path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" fill=\"currentColor\" stroke=\"none\"/>";
235
+ readonly plus: "<path d=\"M5 12h14\"/><path d=\"M12 5v14\"/>";
236
+ readonly policy: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/><path d=\"m9 12 2 2 4-4\"/>";
237
+ readonly refresh: "<path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"/><path d=\"M21 3v5h-5\"/><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"/><path d=\"M8 16H3v5\"/>";
238
+ readonly rocket: "<path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\"/><path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"/><path d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"/><path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"/>";
239
+ readonly search: "<path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/>";
240
+ readonly "search-off": "<path d=\"m13.5 8.5-5 5\"/><path d=\"m8.5 8.5 5 5\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>";
241
+ readonly send: "<path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\"/><path d=\"m21.854 2.147-10.94 10.939\"/>";
242
+ readonly server: "<rect width=\"20\" height=\"8\" x=\"2\" y=\"2\" rx=\"2\" ry=\"2\"/><rect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\" ry=\"2\"/><line x1=\"6\" x2=\"6.01\" y1=\"6\" y2=\"6\"/><line x1=\"6\" x2=\"6.01\" y1=\"18\" y2=\"18\"/>";
243
+ readonly settings: "<path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>";
244
+ readonly shield: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>";
245
+ readonly ship: "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
246
+ readonly sparkle: "<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/><path d=\"M20 2v4\"/><path d=\"M22 4h-4\"/><circle cx=\"4\" cy=\"20\" r=\"2\"/>";
247
+ readonly speed: "<path d=\"m12 14 4-4\"/><path d=\"M3.34 19a10 10 0 1 1 17.32 0\"/>";
248
+ readonly star: "<path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\"/>";
249
+ readonly sun: "<circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2\"/><path d=\"M12 20v2\"/><path d=\"m4.93 4.93 1.41 1.41\"/><path d=\"m17.66 17.66 1.41 1.41\"/><path d=\"M2 12h2\"/><path d=\"M20 12h2\"/><path d=\"m6.34 17.66-1.41 1.41\"/><path d=\"m19.07 4.93-1.41 1.41\"/>";
250
+ readonly terminal: "<path d=\"M12 19h8\"/><path d=\"m4 17 6-6-6-6\"/>";
251
+ readonly trash: "<path d=\"M10 11v6\"/><path d=\"M14 11v6\"/><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"/><path d=\"M3 6h18\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/>";
252
+ readonly "trending-up": "<path d=\"M16 7h6v6\"/><path d=\"m22 7-8.5 8.5-5-5L2 17\"/>";
253
+ readonly underline: "<path d=\"M6 4v6a6 6 0 0 0 12 0V4\"/><line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\"/>";
254
+ readonly upload: "<path d=\"M12 3v12\"/><path d=\"m17 8-5-5-5 5\"/><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>";
255
+ readonly user: "<path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/>";
256
+ readonly "user-shield": "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/><path d=\"M6.376 18.91a6 6 0 0 1 11.249.003\"/><circle cx=\"12\" cy=\"11\" r=\"4\"/>";
257
+ readonly x: "<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>";
258
+ };
259
+ /** Filled-path overrides used when variant="filled" (brand marks, solid shapes). */
260
+ declare const VIKING_ICON_FILLED_PATHS: Partial<Record<VikingIconName$1, string>>;
261
+ /** Legacy Material Icons ligature names → Viking icon registry keys. */
262
+ declare const MATERIAL_ICON_ALIASES: Record<string, VikingIconName$1>;
263
+ /** Icons always rendered with fill (play triangle, dot grids). */
264
+ declare const VIKING_FILLED_ICON_NAMES: readonly ["play", "dots-horizontal", "dots-vertical", "grip-vertical"];
265
+ /** OAuth / vendor marks rendered with official brand artwork in viking-icon. */
266
+ declare const VIKING_BRAND_ICON_NAMES: readonly ["google", "apple", ...("deml" | "deml-compact" | "deml-lockup")[]];
267
+ declare const vikingIconViewBox: (_name: VikingIconName$1) => string;
268
+ /** Resolve pixel size from preset or explicit value. */
269
+ declare const resolveVikingIconSize: (size: number | undefined, preset: VikingIconSizePreset | null | undefined) => number;
270
+ /** Resolve semantic color token or raw CSS value for icon tinting. */
271
+ declare const resolveVikingIconColor: (color: VikingIconColorToken | string | undefined) => string | undefined;
272
+ /** Resolve a Viking or legacy Material icon name to a registry key. */
273
+ declare const resolveVikingIcon: (name: string) => VikingIconName$1;
274
+ declare const VIKING_ICON_NAMES: VikingIconName$1[];
275
+ /** Lucide-sourced icon names (for docs and showcase grouping). */
276
+ declare const VIKING_LUCIDE_ICON_NAMES: (keyof typeof LUCIDE_ICON_PATHS)[];
277
+
278
+ /** Semantic tones — every tone resolves to a THEME.md token. */
279
+ type VikingTone = "accent" | "secondary" | "success" | "warning" | "danger" | "info" | "muted";
280
+ type VikingSize = "base" | "sm" | "xs";
281
+ interface VikingSelectOption<T = unknown> {
282
+ label: string;
283
+ value: T;
284
+ disabled?: boolean;
285
+ }
286
+ interface VikingCommandItem {
287
+ id: string;
288
+ label: string;
289
+ group?: string;
290
+ icon?: VikingIconName$1;
291
+ kbd?: string;
292
+ }
293
+ interface VikingKanbanCard {
294
+ id: string;
295
+ title: string;
296
+ description?: string;
297
+ tone?: VikingTone;
298
+ }
299
+ interface VikingKanbanColumn {
300
+ id: string;
301
+ title: string;
302
+ cards: VikingKanbanCard[];
303
+ }
304
+ interface VikingKanbanMove {
305
+ cardId: string;
306
+ fromColumnId: string;
307
+ toColumnId: string;
308
+ toIndex: number;
309
+ }
310
+ interface VikingChartSeries {
311
+ name: string;
312
+ data: number[];
313
+ tone?: VikingTone;
314
+ }
315
+ type VikingChartKind = "line" | "area" | "bar" | "grouped-bar" | "stacked-bar" | "sparkline" | "donut";
316
+ type VikingChartCurve = "linear" | "smooth";
317
+ interface VikingDonutSegment {
318
+ label: string;
319
+ value: number;
320
+ tone?: VikingTone;
321
+ }
322
+ interface VikingToastOptions {
323
+ heading?: string;
324
+ text: string;
325
+ tone?: VikingTone;
326
+ /** Auto-dismiss duration in ms. 0 disables auto-dismiss. */
327
+ duration?: number;
328
+ }
329
+ interface VikingToastInstance extends Required<Omit<VikingToastOptions, "heading">> {
330
+ id: number;
331
+ heading: string;
332
+ }
333
+
334
+ /** Fixed series palette — keep in sync with viking-tokens.json and THEME.md §8.4 */
335
+ declare const VIKING_SERIES_PRESETS: readonly ["var(--viking-electric-500)", "var(--viking-crimson-600)", "var(--viking-green-500)", "var(--viking-gold-500)", "var(--viking-crimson-500)", "var(--viking-blue-500)", "var(--viking-charcoal-700)", "var(--viking-metallic-500)"];
336
+ declare const VIKING_SERIES_DEFAULT: "var(--viking-electric-500)";
337
+ type VikingSeriesPreset = (typeof VIKING_SERIES_PRESETS)[number];
338
+
339
+ /** Registers a component as a ControlValueAccessor. */
340
+ declare const provideVikingCva: (component: Type<unknown>) => Provider;
341
+ /** Shared ControlValueAccessor plumbing for Viking-Material form controls. */
342
+ declare abstract class VikingControl<T> implements ControlValueAccessor {
343
+ protected onChange: (value: T) => void;
344
+ protected onTouched: () => void;
345
+ /** Disabled state driven by Angular forms (setDisabledState). */
346
+ readonly formDisabled: _angular_core.WritableSignal<boolean>;
347
+ abstract writeValue(value: T): void;
348
+ registerOnChange(fn: (value: T) => void): void;
349
+ registerOnTouched(fn: () => void): void;
350
+ setDisabledState(isDisabled: boolean): void;
351
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingControl<any>, never>;
352
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<VikingControl<any>, never, never, {}, {}, never, never, true, never>;
353
+ }
354
+
355
+ declare const HTMLElementBase: typeof HTMLElement;
356
+
357
+ /**
358
+ * Framework-agnostic Viking badge Web Component.
359
+ * Tag: `viking-badge` (legacy alias: `viking-badge-wc`)
360
+ *
361
+ * @attr tone - Semantic color: accent | secondary | success | warning | danger | info | muted
362
+ * @attr size - Compact density: sm
363
+ * @attr icon - Viking icon registry name (pairs with label for a11y)
364
+ * @attr removable - Shows remove control; dispatches `viking-removed`
365
+ *
366
+ * @example
367
+ * <viking-badge-wc tone="success" icon="check">Healthy</viking-badge-wc>
368
+ */
369
+ declare class VikingBadgeWc extends HTMLElementBase {
370
+ static readonly tag = "viking-badge";
371
+ static readonly legacyTag = "viking-badge-wc";
372
+ static get observedAttributes(): string[];
373
+ private readonly shadow;
374
+ constructor();
375
+ connectedCallback(): void;
376
+ attributeChangedCallback(): void;
377
+ private get tone();
378
+ private get size();
379
+ private get removable();
380
+ private readonly onRemove;
381
+ private render;
382
+ }
383
+ declare const registerVikingBadgeWc: () => void;
384
+
385
+ /**
386
+ * Framework-agnostic Viking button Web Component.
387
+ * Tag: `viking-button-wc` (Angular reserves `viking-button` for its wrapper component)
388
+ *
389
+ * @example
390
+ * <viking-button-wc variant="primary">Launch</viking-button-wc>
391
+ */
392
+ declare class VikingButtonWc extends HTMLElementBase {
393
+ /** Reserved for Angular `viking-button` — do not register as a custom element. */
394
+ static readonly angularTag = "viking-button";
395
+ static readonly tag = "viking-button-wc";
396
+ static get observedAttributes(): string[];
397
+ private readonly shadow;
398
+ private control;
399
+ constructor();
400
+ connectedCallback(): void;
401
+ disconnectedCallback(): void;
402
+ attributeChangedCallback(): void;
403
+ private readonly onClick;
404
+ private get variant();
405
+ private get size();
406
+ private get disabled();
407
+ private get loading();
408
+ private get square();
409
+ private render;
410
+ }
411
+ declare const registerVikingButtonWc: () => void;
412
+
413
+ /**
414
+ * Framework-agnostic Viking callout Web Component.
415
+ * Tag: `viking-callout` (legacy alias: `viking-callout-wc`)
416
+ *
417
+ * @attr tone - Semantic tone (default: info)
418
+ * @attr heading - Bold callout title
419
+ * @attr icon - Override leading icon from the Viking registry
420
+ * @attr dismissible - Shows dismiss control; dispatches `viking-close`
421
+ *
422
+ * @example
423
+ * <viking-callout-wc tone="warning" heading="Degraded worker">Lag exceeds 3s.</viking-callout-wc>
424
+ */
425
+ declare class VikingCalloutWc extends HTMLElementBase {
426
+ static readonly tag = "viking-callout";
427
+ static readonly legacyTag = "viking-callout-wc";
428
+ static get observedAttributes(): string[];
429
+ private readonly shadow;
430
+ constructor();
431
+ connectedCallback(): void;
432
+ attributeChangedCallback(): void;
433
+ private get tone();
434
+ private get dismissible();
435
+ private readonly onDismiss;
436
+ private render;
437
+ }
438
+ declare const registerVikingCalloutWc: () => void;
439
+
440
+ /**
441
+ * Framework-agnostic Viking card Web Component (light DOM — inherits global viking-card CSS).
442
+ * Tag: `viking-card` (legacy alias: `viking-card-wc`)
443
+ *
444
+ * Uses light DOM so slotted content inherits `viking-card`, `viking-card-header`, and related
445
+ * classes from the synced static CSS bundle.
446
+ *
447
+ * @attr compact - Applies `viking-card-compact` padding
448
+ * @attr interactive - Hover lift for clickable cards
449
+ * @attr title - Accessible name when the card is a landmark region
450
+ *
451
+ * @example
452
+ * <viking-card-wc compact title="Event throughput">
453
+ * <div class="viking-card-header">
454
+ * <h3 class="viking-heading viking-heading-sm">Event throughput</h3>
455
+ * </div>
456
+ * <p class="viking-text-muted">8.2K events/sec</p>
457
+ * </viking-card-wc>
458
+ */
459
+ declare class VikingCardWc extends HTMLElementBase {
460
+ static readonly tag = "viking-card";
461
+ static readonly legacyTag = "viking-card-wc";
462
+ static get observedAttributes(): string[];
463
+ connectedCallback(): void;
464
+ attributeChangedCallback(): void;
465
+ private syncClasses;
466
+ }
467
+ declare const registerVikingCardWc: () => void;
468
+
469
+ /**
470
+ * Framework-agnostic Viking field stack Web Component.
471
+ * Tag: `viking-field` (legacy alias: `viking-field-wc`)
472
+ *
473
+ * @attr label - Visible field label
474
+ * @attr description - Helper text below the control
475
+ * @attr error - Validation message; sets aria-invalid on the slotted control
476
+ * @attr required - Adds a non-color-only required marker
477
+ * @attr width - full | half
478
+ *
479
+ * @slot default - Form control, usually `viking-input`, `viking-select`, or native input/select
480
+ */
481
+ declare class VikingFieldWc extends HTMLElementBase {
482
+ static readonly tag = "viking-field";
483
+ static readonly legacyTag = "viking-field-wc";
484
+ static get observedAttributes(): string[];
485
+ private readonly shadow;
486
+ private readonly labelId;
487
+ private readonly descriptionId;
488
+ private readonly errorId;
489
+ private slotEl;
490
+ constructor();
491
+ connectedCallback(): void;
492
+ disconnectedCallback(): void;
493
+ attributeChangedCallback(): void;
494
+ private get control();
495
+ private readonly focusControl;
496
+ private readonly syncControlA11y;
497
+ private render;
498
+ }
499
+ declare const registerVikingFieldWc: () => void;
500
+
501
+ /**
502
+ * Framework-agnostic Viking input Web Component with form association.
503
+ * Tag: `viking-input` (legacy alias: `viking-input-wc`)
504
+ *
505
+ * @example
506
+ * <viking-input placeholder="Email" name="email" type="email"></viking-input>
507
+ */
508
+ declare class VikingInputWc extends HTMLElementBase {
509
+ static readonly formAssociated = true;
510
+ static readonly tag = "viking-input";
511
+ static readonly legacyTag = "viking-input-wc";
512
+ static get observedAttributes(): string[];
513
+ private readonly shadow;
514
+ private readonly internals;
515
+ private input;
516
+ constructor();
517
+ connectedCallback(): void;
518
+ attributeChangedCallback(name: string): void;
519
+ get value(): string;
520
+ set value(next: string);
521
+ private get disabled();
522
+ private get loading();
523
+ private get clearable();
524
+ private get bare();
525
+ private readonly onInput;
526
+ private readonly onBlur;
527
+ private readonly onClear;
528
+ private syncFormValue;
529
+ private render;
530
+ }
531
+ declare const registerVikingInputWc: () => void;
532
+
533
+ /**
534
+ * Framework-agnostic modal Web Component using native `<dialog>` semantics.
535
+ * Tag: `viking-modal-wc` (Angular reserves `viking-modal`; alias: `viking-dialog`)
536
+ *
537
+ * @attr open - When present, shows the modal
538
+ * @attr title - Dialog title for aria-label / heading
539
+ * @attr dismissible - Allow Escape and backdrop click to close (default: true)
540
+ *
541
+ * @slot default - Modal body content
542
+ * @slot actions - Footer action buttons
543
+ *
544
+ * @method openModal() - Programmatically open
545
+ * @method closeModal() - Programmatically close
546
+ *
547
+ * @event viking-close - Fired when the dialog closes
548
+ *
549
+ * @example
550
+ * <viking-modal-wc title="Confirm deploy">
551
+ * <p>Push v2.0.0 to production?</p>
552
+ * <viking-button-wc slot="actions" variant="primary">Deploy</viking-button-wc>
553
+ * </viking-modal-wc>
554
+ */
555
+ declare class VikingModalWc extends HTMLElementBase {
556
+ /** Reserved for Angular `viking-modal` — do not register as a custom element. */
557
+ static readonly angularTag = "viking-modal";
558
+ static readonly tag = "viking-modal-wc";
559
+ static readonly dialogTag = "viking-dialog";
560
+ static get observedAttributes(): string[];
561
+ private readonly shadow;
562
+ private dialogEl;
563
+ constructor();
564
+ connectedCallback(): void;
565
+ disconnectedCallback(): void;
566
+ attributeChangedCallback(name: string): void;
567
+ /** Opens the modal dialog. */
568
+ openModal(): void;
569
+ /** Closes the modal dialog. */
570
+ closeModal(): void;
571
+ /** @deprecated Use openModal() */
572
+ open(): void;
573
+ /** @deprecated Use closeModal() */
574
+ close(): void;
575
+ private get dismissible();
576
+ private readonly onClose;
577
+ private readonly onBackdropClick;
578
+ private syncOpen;
579
+ private updateTitle;
580
+ private render;
581
+ }
582
+ declare const registerVikingModalWc: () => void;
583
+
584
+ /** Shared Web Component item types. */
585
+ type VikingSearchPaletteItem = {
586
+ title: string;
587
+ href: string;
588
+ snippet?: string;
589
+ group?: string;
590
+ keywords?: string[];
591
+ action?: "cookie-settings" | "bug-report";
592
+ };
593
+ type VikingWcTone = "accent" | "secondary" | "success" | "warning" | "danger" | "info" | "muted" | "subtle";
594
+
595
+ /**
596
+ * Framework-agnostic command palette / search overlay Web Component.
597
+ * Tag: `viking-command-palette`
598
+ * Aliases: `viking-search-palette`, `viking-search-palette-wc`
599
+ *
600
+ * @attr open - When present, shows the palette
601
+ * @attr global-shortcut - Bind ⌘K / Ctrl+K to open
602
+ * @attr placeholder - Search input placeholder
603
+ * @attr items - JSON array of `{ title, href, snippet?, group? }`
604
+ *
605
+ * @method openPalette() - Programmatically open
606
+ * @method closePalette() - Programmatically close
607
+ *
608
+ * @event viking-close - Palette closed
609
+ * @event viking-query - `{ detail: { query: string } }` on input
610
+ * @event viking-select - `{ detail: { item } }` when a result is activated
611
+ *
612
+ * @example
613
+ * <viking-command-palette
614
+ * global-shortcut
615
+ * items='[{"title":"Components","href":"/components","group":"Docs"}]'
616
+ * ></viking-command-palette>
617
+ */
618
+ declare class VikingSearchPaletteWc extends HTMLElementBase {
619
+ static readonly tag = "viking-command-palette";
620
+ static readonly searchTag = "viking-search-palette";
621
+ static readonly legacyTag = "viking-search-palette-wc";
622
+ static get observedAttributes(): string[];
623
+ private readonly shadow;
624
+ private dialogEl;
625
+ private inputEl;
626
+ private resultsEl;
627
+ private globalKeyHandler;
628
+ private readonly resultsId;
629
+ private readonly inputId;
630
+ private query;
631
+ private activeIndex;
632
+ private flatResults;
633
+ constructor();
634
+ connectedCallback(): void;
635
+ disconnectedCallback(): void;
636
+ attributeChangedCallback(name: string): void;
637
+ /** Opens the command palette. */
638
+ openPalette(): void;
639
+ /** Closes the command palette. */
640
+ closePalette(): void;
641
+ /** Sets the query string and re-renders filtered results. */
642
+ search(query: string): void;
643
+ private readonly onClose;
644
+ private readonly onBackdropClick;
645
+ private readonly onInput;
646
+ private readonly onInputKeydown;
647
+ private bindGlobalShortcut;
648
+ private unbindGlobalShortcut;
649
+ private syncOpen;
650
+ private scrollActiveIntoView;
651
+ private activateItem;
652
+ private renderResults;
653
+ private render;
654
+ }
655
+ declare const registerVikingSearchPaletteWc: () => void;
656
+
657
+ /**
658
+ * Framework-agnostic status page card with title/subtitle, optional status chip,
659
+ * and optional action slot.
660
+ * Tag: `viking-status-card` (legacy alias: `viking-status-card-wc`)
661
+ *
662
+ * @attr title - Card heading
663
+ * @attr subtitle - Supporting body text
664
+ * @attr status - Optional status chip label
665
+ * @attr status-tone - accent | secondary | success | warning | danger | info | muted
666
+ * @attr status-clickable - Wrap status in anchor style token (visual-only)
667
+ * @attr href - Optional outbound/intra-app card link
668
+ * @attr compact - Reduce padding and spacing
669
+ * @attr loading - Reserved loading state class
670
+ */
671
+ declare class VikingStatusCardWc extends HTMLElementBase {
672
+ static readonly tag = "viking-status-card";
673
+ static readonly legacyTag = "viking-status-card-wc";
674
+ static get observedAttributes(): string[];
675
+ private readonly shadow;
676
+ connectedCallback(): void;
677
+ attributeChangedCallback(): void;
678
+ private get compact();
679
+ private get loading();
680
+ private get interactive();
681
+ private get href();
682
+ private get target();
683
+ private get statusTone();
684
+ private get statusDot();
685
+ private get cardTitle();
686
+ private get subtitle();
687
+ private get status();
688
+ private render;
689
+ }
690
+ declare const registerVikingStatusCardWc: () => void;
691
+
692
+ /**
693
+ * Framework-agnostic Viking status pill.
694
+ * Tag: `viking-status-pill` (legacy alias: `viking-status-pill-wc`)
695
+ *
696
+ * @attr tone - accent | secondary | success | warning | danger | info | muted
697
+ * @attr icon - Optional icon name for leading glyph
698
+ * @attr href - Optional navigation target
699
+ * @attr compact - Reduced pill footprint
700
+ * @attr dot - Shows a status dot
701
+ * @attr removable - Renders a close control; emits `viking-pill-removed`
702
+ */
703
+ declare class VikingStatusPillWc extends HTMLElementBase {
704
+ static readonly tag = "viking-status-pill";
705
+ static readonly legacyTag = "viking-status-pill-wc";
706
+ static get observedAttributes(): string[];
707
+ private readonly shadow;
708
+ constructor();
709
+ connectedCallback(): void;
710
+ attributeChangedCallback(): void;
711
+ private get tone();
712
+ private get compact();
713
+ private get removable();
714
+ private get href();
715
+ private get icon();
716
+ private get showDot();
717
+ private readonly onRemove;
718
+ private render;
719
+ }
720
+ declare const registerVikingStatusPillWc: () => void;
721
+
722
+ /**
723
+ * Unified cross-suite command palette Web Component.
724
+ * Tag: `viking-suite-command-palette`
725
+ * Aliases: `viking-suite-search-palette`, `viking-suite-search-palette-wc`
726
+ *
727
+ * Curated ⌘K navigation for marketing, docs, deml.app, and backend surfaces.
728
+ * Composes `viking-command-palette` with suite links from site-drakkar config.
729
+ *
730
+ * @attr context - Surface: app | marketing | backend | docs (auto-detected when omitted)
731
+ * @attr app-url - Override deml.app origin
732
+ * @attr marketing-url - Override marketing origin
733
+ * @attr backend-url - Override backend origin
734
+ * @attr global-shortcut - Bind ⌘K / Ctrl+K (default: on)
735
+ * @attr placeholder - Search input placeholder
736
+ *
737
+ * @method openPalette() - Programmatically open
738
+ * @method closePalette() - Programmatically close
739
+ *
740
+ * @example
741
+ * <viking-suite-command-palette context="marketing" global-shortcut></viking-suite-command-palette>
742
+ */
743
+ declare class VikingSuiteSearchPaletteWc extends HTMLElementBase {
744
+ static readonly tag = "viking-suite-command-palette";
745
+ static readonly searchTag = "viking-suite-search-palette";
746
+ static readonly legacyTag = "viking-suite-search-palette-wc";
747
+ static get observedAttributes(): string[];
748
+ private paletteEl;
749
+ private itemsLoaded;
750
+ connectedCallback(): void;
751
+ attributeChangedCallback(name: string): void;
752
+ /** Opens the unified command palette. */
753
+ openPalette(): void;
754
+ /** Closes the unified command palette. */
755
+ closePalette(): void;
756
+ private ensurePalette;
757
+ private loadItems;
758
+ }
759
+ declare const registerVikingSuiteSearchPaletteWc: () => void;
760
+
761
+ /**
762
+ * Unified framework-agnostic DEML suite header.
763
+ * Tag: `viking-suite-header`
764
+ *
765
+ * @attr context - Surface: app | marketing | backend | docs (auto-detected when omitted)
766
+ * @attr authenticated - Render the user menu instead of Sign In
767
+ * @attr user-name - Display name for the authenticated user menu
768
+ * @attr user-email - Secondary user menu label
769
+ * @attr sign-in-href - Fallback href for static Sign In navigation
770
+ */
771
+ declare class VikingSuiteHeaderWc extends HTMLElementBase {
772
+ static readonly tag = "viking-suite-header";
773
+ static get observedAttributes(): string[];
774
+ private readonly shadow;
775
+ private menuOpen;
776
+ private userMenuOpen;
777
+ private paletteEl;
778
+ constructor();
779
+ connectedCallback(): void;
780
+ disconnectedCallback(): void;
781
+ attributeChangedCallback(): void;
782
+ openSearch(): void;
783
+ private readonly onDocumentClick;
784
+ private readonly onSearchClick;
785
+ private readonly onMenuClick;
786
+ private readonly onUserClick;
787
+ private readonly onSignInClick;
788
+ private readonly onSignOutClick;
789
+ private syncOpenState;
790
+ private renderNavLinks;
791
+ private renderAuth;
792
+ private getDashboardHref;
793
+ private render;
794
+ }
795
+ declare const registerVikingSuiteHeaderWc: () => void;
796
+
797
+ /**
798
+ * Framework-agnostic native select Web Component with form association.
799
+ * Tag: `viking-select` (legacy alias: `viking-select-wc`)
800
+ *
801
+ * Place `<option>` elements as light DOM children; they are mirrored into the shadow select.
802
+ *
803
+ * @attr label - Visible field label
804
+ * @attr name - Form field name (participates in form submission via ElementInternals)
805
+ * @attr value - Selected option value
806
+ * @attr placeholder - Placeholder option text when no value is selected
807
+ * @attr description - Helper text below the control
808
+ * @attr error - Validation message; sets aria-invalid
809
+ * @attr width - full | half (default: half)
810
+ * @attr disabled - Disables the control
811
+ * @attr required - Marks field as required
812
+ *
813
+ * @event viking-change - `{ detail: { value: string } }`
814
+ *
815
+ * @example
816
+ * <viking-select-wc label="Retention" name="retention" value="30d">
817
+ * <option value="7d">7 days</option>
818
+ * <option value="30d">30 days</option>
819
+ * </viking-select-wc>
820
+ */
821
+ declare class VikingSelectWc extends HTMLElementBase {
822
+ static readonly formAssociated = true;
823
+ static readonly tag = "viking-select";
824
+ static readonly legacyTag = "viking-select-wc";
825
+ static get observedAttributes(): string[];
826
+ private readonly shadow;
827
+ private readonly internals;
828
+ private selectEl;
829
+ private optionObserver;
830
+ private readonly controlId;
831
+ constructor();
832
+ connectedCallback(): void;
833
+ disconnectedCallback(): void;
834
+ attributeChangedCallback(name: string): void;
835
+ get value(): string;
836
+ set value(next: string);
837
+ private readonly onChange;
838
+ private syncFormValue;
839
+ private observeOptions;
840
+ private render;
841
+ private syncOptions;
842
+ }
843
+ declare const registerVikingSelectWc: () => void;
844
+
845
+ /**
846
+ * Framework-agnostic theme toggle Web Component.
847
+ * Tag: `viking-theme-toggle-wc`
848
+ */
849
+ declare class VikingThemeToggleWc extends HTMLElementBase {
850
+ static readonly tag = "viking-theme-toggle-wc";
851
+ private readonly shadow;
852
+ private button;
853
+ private sunIcon;
854
+ private moonIcon;
855
+ private readonly onStorage;
856
+ constructor();
857
+ connectedCallback(): void;
858
+ disconnectedCallback(): void;
859
+ private readonly onThemeChange;
860
+ private readonly onClick;
861
+ private syncIcons;
862
+ private render;
863
+ }
864
+ declare const registerVikingThemeToggleWc: () => void;
865
+
866
+ /** Register all Viking-UI Web Components. Safe to call multiple times. */
867
+ declare const registerVikingElements: () => void;
868
+
869
+ /**
870
+ * Zero-dependency inline SVG icon registry (24×24 stroke icons).
871
+ * Lucide paths are synced at build time; DEML brand marks are custom artwork.
872
+ */
873
+
874
+ type VikingIconName = keyof typeof VIKING_ICON_PATHS;
875
+ declare const VIKING_ICON_PATHS: {
876
+ readonly hub: "<circle cx=\"12\" cy=\"12\" r=\"3\"/><path d=\"M12 3v3M12 18v3M3 12h3M18 12h3M5.6 5.6l2.1 2.1M16.3 16.3l2.1 2.1M18.4 5.6l-2.1 2.1M7.7 16.3l-2.1 2.1\"/>";
877
+ readonly model: "<rect x=\"4\" y=\"8\" width=\"16\" height=\"10\" rx=\"2\"/><path d=\"M8 8V6a4 4 0 0 1 8 0v2\"/>";
878
+ readonly google: "<path d=\"M12 11.2v2.4h6.6c-.3 1.5-1.8 4.4-6.6 4.4-4 0-7.2-3.3-7.2-7.3S8 3.4 12 3.4c2.3 0 3.9 1 4.8 1.8l3.2-3.1C17.5.8 14.9 0 12 0 5.4 0 0 5.4 0 12s5.4 12 12 12c6.9 0 11.5-4.8 11.5-11.6 0-.8-.1-1.4-.2-1.9H12z\"/>";
879
+ readonly apple: "<path d=\"M16.365 12.14c.02 2.53 2.21 3.38 2.23 3.39-.02.07-.35 1.21-1.16 2.4-.7 1.02-1.43 2.03-2.58 2.05-1.13.02-1.49-.67-2.78-.67-1.29 0-1.69.65-2.75.69-1.11.04-1.95-1.12-2.66-2.13-1.44-2.08-2.54-5.87-1.07-8.43.73-1.27 2.04-2.08 3.46-2.1 1.08-.02 2.1.72 2.78.72.67 0 2.14-.89 3.61-.76.61.03 2.33.25 3.44 1.88-.09.06-2.05 1.2-2.03 3.55M13.75 3.64c.59-.71 1-1.7.89-2.68-.86.03-1.9.57-2.52 1.28-.55.63-1.03 1.65-.9 2.62.95.07 1.92-.49 2.53-1.22\"/>";
880
+ readonly kubernetes: string;
881
+ readonly tensorflow: string;
882
+ readonly pytorch: string;
883
+ readonly "apache-spark": string;
884
+ readonly databricks: string;
885
+ readonly "aws-redshift": string;
886
+ readonly drakkar: "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
887
+ readonly "drakkar-compact": "<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
888
+ readonly "drakkar-lockup": "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/><path d=\"M3 21h18\"/>";
889
+ readonly deml: "<rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/><path d=\"M8 17V13M12 17V8M16 17V11\"/>";
890
+ readonly "deml-compact": "<rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"3\"/><path d=\"M9 16V12M12 16V9M15 16V13\"/>";
891
+ readonly "deml-lockup": "<rect x=\"3\" y=\"3\" width=\"18\" height=\"14\" rx=\"2\"/><path d=\"M8 17V13M12 17V8M16 17V11\"/><path d=\"M3 20h18\"/>";
892
+ readonly "alert-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/><line x1=\"12\" x2=\"12\" y1=\"8\" y2=\"12\"/><line x1=\"12\" x2=\"12.01\" y1=\"16\" y2=\"16\"/>";
893
+ readonly "alert-triangle": "<path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/>";
894
+ readonly "arrow-left": "<path d=\"m12 19-7-7 7-7\"/><path d=\"M19 12H5\"/>";
895
+ readonly "arrow-right": "<path d=\"M5 12h14\"/><path d=\"m12 5 7 7-7 7\"/>";
896
+ readonly "arrow-up-right": "<path d=\"M7 7h10v10\"/><path d=\"M7 17 17 7\"/>";
897
+ readonly "bar-chart": "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"M18 17V9\"/><path d=\"M13 17V5\"/><path d=\"M8 17v-3\"/>";
898
+ readonly bell: "<path d=\"M10.268 21a2 2 0 0 0 3.464 0\"/><path d=\"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326\"/>";
899
+ readonly bold: "<path d=\"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\"/>";
900
+ readonly bolt: "<path d=\"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\"/>";
901
+ readonly brain: "<path d=\"M12 18V5\"/><path d=\"M15 13a4.17 4.17 0 0 1-3-4 4.17 4.17 0 0 1-3 4\"/><path d=\"M17.598 6.5A3 3 0 1 0 12 5a3 3 0 1 0-5.598 1.5\"/><path d=\"M17.997 5.125a4 4 0 0 1 2.526 5.77\"/><path d=\"M18 18a4 4 0 0 0 2-7.464\"/><path d=\"M19.967 17.483A4 4 0 1 1 12 18a4 4 0 1 1-7.967-.517\"/><path d=\"M6 18a4 4 0 0 1-2-7.464\"/><path d=\"M6.003 5.125a4 4 0 0 0-2.526 5.77\"/>";
902
+ readonly bug: "<path d=\"M12 20v-9\"/><path d=\"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z\"/><path d=\"M14.12 3.88 16 2\"/><path d=\"M21 21a4 4 0 0 0-3.81-4\"/><path d=\"M21 5a4 4 0 0 1-3.55 3.97\"/><path d=\"M22 13h-4\"/><path d=\"M3 21a4 4 0 0 1 3.81-4\"/><path d=\"M3 5a4 4 0 0 0 3.55 3.97\"/><path d=\"M6 13H2\"/><path d=\"m8 2 1.88 1.88\"/><path d=\"M9 7.13V6a3 3 0 1 1 6 0v1.13\"/>";
903
+ readonly building: "<path d=\"M12 10h.01\"/><path d=\"M12 14h.01\"/><path d=\"M12 6h.01\"/><path d=\"M16 10h.01\"/><path d=\"M16 14h.01\"/><path d=\"M16 6h.01\"/><path d=\"M8 10h.01\"/><path d=\"M8 14h.01\"/><path d=\"M8 6h.01\"/><path d=\"M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3\"/><rect x=\"4\" y=\"2\" width=\"16\" height=\"20\" rx=\"2\"/>";
904
+ readonly calendar: "<path d=\"M8 2v4\"/><path d=\"M16 2v4\"/><rect width=\"18\" height=\"18\" x=\"3\" y=\"4\" rx=\"2\"/><path d=\"M3 10h18\"/>";
905
+ readonly check: "<path d=\"M20 6 9 17l-5-5\"/>";
906
+ readonly "check-circle": "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"m9 12 2 2 4-4\"/>";
907
+ readonly "chevron-down": "<path d=\"m6 9 6 6 6-6\"/>";
908
+ readonly "chevron-left": "<path d=\"m15 18-6-6 6-6\"/>";
909
+ readonly "chevron-right": "<path d=\"m9 18 6-6-6-6\"/>";
910
+ readonly "chevron-up": "<path d=\"m18 15-6-6-6 6\"/>";
911
+ readonly chip: "<path d=\"M12 20v2\"/><path d=\"M12 2v2\"/><path d=\"M17 20v2\"/><path d=\"M17 2v2\"/><path d=\"M2 12h2\"/><path d=\"M2 17h2\"/><path d=\"M2 7h2\"/><path d=\"M20 12h2\"/><path d=\"M20 17h2\"/><path d=\"M20 7h2\"/><path d=\"M7 20v2\"/><path d=\"M7 2v2\"/><rect x=\"4\" y=\"4\" width=\"16\" height=\"16\" rx=\"2\"/><rect x=\"8\" y=\"8\" width=\"8\" height=\"8\" rx=\"1\"/>";
912
+ readonly clock: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 6v6l4 2\"/>";
913
+ readonly cloud: "<path d=\"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\"/>";
914
+ readonly cookie: "<path d=\"M12 2a10 10 0 1 0 10 10 4 4 0 0 1-5-5 4 4 0 0 1-5-5\"/><path d=\"M8.5 8.5v.01\"/><path d=\"M16 15.5v.01\"/><path d=\"M12 12v.01\"/><path d=\"M11 17v.01\"/><path d=\"M7 14v.01\"/>";
915
+ readonly copy: "<rect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"/><path d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"/>";
916
+ readonly "dots-horizontal": "<circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"19\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"5\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
917
+ readonly "dots-vertical": "<circle cx=\"12\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"12\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
918
+ readonly download: "<path d=\"M12 15V3\"/><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/><path d=\"m7 10 5 5 5-5\"/>";
919
+ readonly external: "<path d=\"M15 3h6v6\"/><path d=\"M10 14 21 3\"/><path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"/>";
920
+ readonly eye: "<path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>";
921
+ readonly "eye-off": "<path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"/><path d=\"m2 2 20 20\"/>";
922
+ readonly file: "<path d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"/><path d=\"M14 2v5a1 1 0 0 0 1 1h5\"/>";
923
+ readonly filter: "<path d=\"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z\"/>";
924
+ readonly fingerprint: "<path d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\"/><path d=\"M14 13.12c0 2.38 0 6.38-1 8.88\"/><path d=\"M17.29 21.02c.12-.6.43-2.3.5-3.02\"/><path d=\"M2 12a10 10 0 0 1 18-6\"/><path d=\"M2 16h.01\"/><path d=\"M21.8 16c.2-2 .131-5.354 0-6\"/><path d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\"/><path d=\"M8.65 22c.21-.66.45-1.32.57-2\"/><path d=\"M9 6.8a6 6 0 0 1 9 5.2v2\"/>";
925
+ readonly folder: "<path d=\"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z\"/>";
926
+ readonly globe: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"/><path d=\"M2 12h20\"/>";
927
+ readonly "grip-vertical": "<circle cx=\"9\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"9\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"9\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"12\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"5\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/><circle cx=\"15\" cy=\"19\" r=\"1\" fill=\"currentColor\" stroke=\"none\"/>";
928
+ readonly heart: "<path d=\"M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5\"/>";
929
+ readonly home: "<path d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"/><path d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"/>";
930
+ readonly image: "<rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\" ry=\"2\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/><path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/>";
931
+ readonly info: "<circle cx=\"12\" cy=\"12\" r=\"10\"/><path d=\"M12 16v-4\"/><path d=\"M12 8h.01\"/>";
932
+ readonly insights: "<path d=\"M3 3v16a2 2 0 0 0 2 2h16\"/><path d=\"m19 9-5 5-4-4-3 3\"/>";
933
+ readonly italic: "<line x1=\"19\" x2=\"10\" y1=\"4\" y2=\"4\"/><line x1=\"14\" x2=\"5\" y1=\"20\" y2=\"20\"/><line x1=\"15\" x2=\"9\" y1=\"4\" y2=\"20\"/>";
934
+ readonly key: "<path d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\"/><circle cx=\"16.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"/>";
935
+ readonly link: "<path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\"/><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\"/>";
936
+ readonly list: "<path d=\"M3 5h.01\"/><path d=\"M3 12h.01\"/><path d=\"M3 19h.01\"/><path d=\"M8 5h13\"/><path d=\"M8 12h13\"/><path d=\"M8 19h13\"/>";
937
+ readonly "list-ordered": "<path d=\"M11 5h10\"/><path d=\"M11 12h10\"/><path d=\"M11 19h10\"/><path d=\"M4 4h1v5\"/><path d=\"M4 9h2\"/><path d=\"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\"/>";
938
+ readonly loader: "<path d=\"M21 12a9 9 0 1 1-6.219-8.56\"/>";
939
+ readonly lock: "<rect width=\"18\" height=\"11\" x=\"3\" y=\"11\" rx=\"2\" ry=\"2\"/><path d=\"M7 11V7a5 5 0 0 1 10 0v4\"/>";
940
+ readonly "log-in": "<path d=\"m10 17 5-5-5-5\"/><path d=\"M15 12H3\"/><path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"/>";
941
+ readonly "log-out": "<path d=\"m16 17 5-5-5-5\"/><path d=\"M21 12H9\"/><path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\"/>";
942
+ readonly mail: "<path d=\"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"/><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"/>";
943
+ readonly menu: "<path d=\"M4 5h16\"/><path d=\"M4 12h16\"/><path d=\"M4 19h16\"/>";
944
+ readonly minus: "<path d=\"M5 12h14\"/>";
945
+ readonly moon: "<path d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"/>";
946
+ readonly network: "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>";
947
+ readonly paperclip: "<path d=\"m16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551\"/>";
948
+ readonly pencil: "<path d=\"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z\"/><path d=\"m15 5 4 4\"/>";
949
+ readonly phone: "<path d=\"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384\"/>";
950
+ readonly play: "<path d=\"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\" fill=\"currentColor\" stroke=\"none\"/>";
951
+ readonly plus: "<path d=\"M5 12h14\"/><path d=\"M12 5v14\"/>";
952
+ readonly policy: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/><path d=\"m9 12 2 2 4-4\"/>";
953
+ readonly refresh: "<path d=\"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\"/><path d=\"M21 3v5h-5\"/><path d=\"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\"/><path d=\"M8 16H3v5\"/>";
954
+ readonly rocket: "<path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\"/><path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"/><path d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"/><path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"/>";
955
+ readonly search: "<path d=\"m21 21-4.34-4.34\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/>";
956
+ readonly "search-off": "<path d=\"m13.5 8.5-5 5\"/><path d=\"m8.5 8.5 5 5\"/><circle cx=\"11\" cy=\"11\" r=\"8\"/><path d=\"m21 21-4.3-4.3\"/>";
957
+ readonly send: "<path d=\"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z\"/><path d=\"m21.854 2.147-10.94 10.939\"/>";
958
+ readonly server: "<rect width=\"20\" height=\"8\" x=\"2\" y=\"2\" rx=\"2\" ry=\"2\"/><rect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\" ry=\"2\"/><line x1=\"6\" x2=\"6.01\" y1=\"6\" y2=\"6\"/><line x1=\"6\" x2=\"6.01\" y1=\"18\" y2=\"18\"/>";
959
+ readonly settings: "<path d=\"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915\"/><circle cx=\"12\" cy=\"12\" r=\"3\"/>";
960
+ readonly shield: "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/>";
961
+ readonly ship: "<path d=\"M12 10.189V14\"/><path d=\"M12 2v3\"/><path d=\"M19 13V7a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v6\"/><path d=\"M19.38 20A11.6 11.6 0 0 0 21 14l-8.188-3.639a2 2 0 0 0-1.624 0L3 14a11.6 11.6 0 0 0 2.81 7.76\"/><path d=\"M2 21c.6.5 1.2 1 2.5 1 2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1s1.2 1 2.5 1c2.5 0 2.5-2 5-2 1.3 0 1.9.5 2.5 1\"/>";
962
+ readonly sparkle: "<path d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z\"/><path d=\"M20 2v4\"/><path d=\"M22 4h-4\"/><circle cx=\"4\" cy=\"20\" r=\"2\"/>";
963
+ readonly speed: "<path d=\"m12 14 4-4\"/><path d=\"M3.34 19a10 10 0 1 1 17.32 0\"/>";
964
+ readonly star: "<path d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z\"/>";
965
+ readonly sun: "<circle cx=\"12\" cy=\"12\" r=\"4\"/><path d=\"M12 2v2\"/><path d=\"M12 20v2\"/><path d=\"m4.93 4.93 1.41 1.41\"/><path d=\"m17.66 17.66 1.41 1.41\"/><path d=\"M2 12h2\"/><path d=\"M20 12h2\"/><path d=\"m6.34 17.66-1.41 1.41\"/><path d=\"m19.07 4.93-1.41 1.41\"/>";
966
+ readonly terminal: "<path d=\"M12 19h8\"/><path d=\"m4 17 6-6-6-6\"/>";
967
+ readonly trash: "<path d=\"M10 11v6\"/><path d=\"M14 11v6\"/><path d=\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\"/><path d=\"M3 6h18\"/><path d=\"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\"/>";
968
+ readonly "trending-up": "<path d=\"M16 7h6v6\"/><path d=\"m22 7-8.5 8.5-5-5L2 17\"/>";
969
+ readonly underline: "<path d=\"M6 4v6a6 6 0 0 0 12 0V4\"/><line x1=\"4\" x2=\"20\" y1=\"20\" y2=\"20\"/>";
970
+ readonly upload: "<path d=\"M12 3v12\"/><path d=\"m17 8-5-5-5 5\"/><path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\"/>";
971
+ readonly user: "<path d=\"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\"/><circle cx=\"12\" cy=\"7\" r=\"4\"/>";
972
+ readonly "user-shield": "<path d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"/><path d=\"M6.376 18.91a6 6 0 0 1 11.249.003\"/><circle cx=\"12\" cy=\"11\" r=\"4\"/>";
973
+ readonly x: "<path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/>";
974
+ };
975
+
976
+ /**
977
+ * Drakkar — the Viking longship that carries the site shell (navbar, footer, nav links)
978
+ * across marketing, app, and backend surfaces.
979
+ */
980
+ /** Which DEML surface the Drakkar shell is rendering on (navbar + footer). */
981
+ type SiteDrakkarContext = "app" | "marketing" | "backend" | "docs";
982
+ interface SiteUrls {
983
+ app: string;
984
+ marketing: string;
985
+ backend: string;
986
+ }
987
+ interface SiteNavLink {
988
+ id: string;
989
+ label: string;
990
+ icon: VikingIconName;
991
+ appHref: string;
992
+ marketingHref: string;
993
+ external?: boolean;
994
+ requireAuth?: boolean;
995
+ /** Routes served by deml.app — resolved to absolute app URLs off-app. */
996
+ platform?: boolean;
997
+ }
998
+ interface SiteFooterLink {
999
+ label: string;
1000
+ appHref: string;
1001
+ marketingHref: string;
1002
+ external?: boolean;
1003
+ action?: "cookie-settings" | "bug-report";
1004
+ /** Routes served by deml.app — resolved to absolute app URLs off-app. */
1005
+ platform?: boolean;
1006
+ }
1007
+ interface SiteFooterColumn {
1008
+ title: string;
1009
+ links: SiteFooterLink[];
1010
+ }
1011
+ /** Primary navbar links (desktop + mobile). Shown on every surface. */
1012
+ declare const SITE_NAV_LINKS: readonly SiteNavLink[];
1013
+ declare const SITE_FOOTER_COLUMNS: readonly SiteFooterColumn[];
1014
+ declare const BUG_REPORT_QUERY = "reportBug=1";
1015
+ declare const COOKIE_SETTINGS_QUERY = "cookieSettings=1";
1016
+ declare const bugReportHref: (urls: SiteUrls) => string;
1017
+ declare const cookieSettingsHref: (urls: SiteUrls) => string;
1018
+ declare const resolveNavHref: (link: SiteNavLink, context: SiteDrakkarContext, urls: SiteUrls) => string;
1019
+ declare const resolveFooterHref: (link: SiteFooterLink, context: SiteDrakkarContext, urls: SiteUrls) => string;
1020
+ declare const resolveBrandHref: (context: SiteDrakkarContext, urls: SiteUrls) => string;
1021
+ /** Navbar links; auth-gated entries appear only when the session is active. */
1022
+ declare const visibleNavLinks: (links: readonly SiteNavLink[], isAuthenticated?: boolean) => SiteNavLink[];
1023
+ declare const isAppRouterPath: (href: string) => boolean;
1024
+ declare const DEFAULT_SITE_URLS: SiteUrls;
1025
+
1026
+ /** Curated command-palette entry for cross-surface navigation. */
1027
+ type SuiteSearchItem = {
1028
+ title: string;
1029
+ href: string;
1030
+ snippet?: string;
1031
+ group?: string;
1032
+ keywords?: string[];
1033
+ action?: "cookie-settings" | "bug-report";
1034
+ };
1035
+ /**
1036
+ * Builds curated command-palette links for deml.app, marketing, backend, and docs.
1037
+ * Used by the static widget and Angular `viking-suite-search-palette`.
1038
+ */
1039
+ declare const buildSuiteSearchItems: (context: SiteDrakkarContext, urls: SiteUrls, options?: {
1040
+ docsOrigin?: string;
1041
+ }) => SuiteSearchItem[];
1042
+
1043
+ /**
1044
+ * viking-site-navbar — canonical site header shared across DEML surfaces.
1045
+ * Uses `.navbar` markup + viking-ui.css (same structure as marketing/backend static HTML).
1046
+ */
1047
+ declare class VikingSiteNavbar {
1048
+ readonly context: _angular_core.InputSignal<SiteDrakkarContext>;
1049
+ readonly urls: _angular_core.InputSignal<SiteUrls>;
1050
+ readonly isAuthenticated: _angular_core.InputSignal<boolean>;
1051
+ readonly isBusy: _angular_core.InputSignal<boolean>;
1052
+ readonly theme: _angular_core.InputSignal<"dark" | "light">;
1053
+ readonly showSearch: _angular_core.InputSignal<boolean>;
1054
+ readonly login: _angular_core.OutputEmitterRef<void>;
1055
+ readonly logout: _angular_core.OutputEmitterRef<void>;
1056
+ readonly themeToggle: _angular_core.OutputEmitterRef<void>;
1057
+ readonly searchOpen: _angular_core.OutputEmitterRef<void>;
1058
+ protected readonly mobileMenuOpen: _angular_core.WritableSignal<boolean>;
1059
+ protected readonly navLinks: _angular_core.Signal<_dataengineeringformachinelearning_viking_ui.SiteNavLink[]>;
1060
+ protected readonly brandHref: _angular_core.Signal<string>;
1061
+ protected resolveHref: (link: (typeof SITE_NAV_LINKS)[number]) => string;
1062
+ protected isAppRouterPath: (href: string) => boolean;
1063
+ protected onBrandClick(event: MouseEvent): void;
1064
+ protected toggleMobileMenu(): void;
1065
+ protected closeMobileMenu(): void;
1066
+ protected closeMobileMenuOnOutsideClick(event: MouseEvent): void;
1067
+ protected openSearch(): void;
1068
+ protected closeMobileMenuOnDesktop(): void;
1069
+ protected closeMobileMenuOnEscape(): void;
1070
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSiteNavbar, never>;
1071
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSiteNavbar, "viking-site-navbar", never, { "context": { "alias": "context"; "required": false; "isSignal": true; }; "urls": { "alias": "urls"; "required": false; "isSignal": true; }; "isAuthenticated": { "alias": "isAuthenticated"; "required": false; "isSignal": true; }; "isBusy": { "alias": "isBusy"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; }, { "login": "login"; "logout": "logout"; "themeToggle": "themeToggle"; "searchOpen": "searchOpen"; }, never, never, true, never>;
1072
+ }
1073
+
1074
+ /**
1075
+ * viking-site-footer — canonical site footer shared across DEML surfaces.
1076
+ */
1077
+ declare class VikingSiteFooter {
1078
+ readonly context: _angular_core.InputSignal<SiteDrakkarContext>;
1079
+ readonly urls: _angular_core.InputSignal<SiteUrls>;
1080
+ readonly year: _angular_core.InputSignal<number>;
1081
+ readonly cookieSettings: _angular_core.OutputEmitterRef<Event>;
1082
+ readonly bugReport: _angular_core.OutputEmitterRef<Event>;
1083
+ readonly usaBadgeHover: _angular_core.OutputEmitterRef<Event>;
1084
+ protected readonly columns: readonly _dataengineeringformachinelearning_viking_ui.SiteFooterColumn[];
1085
+ protected readonly cookieSettingsUrl: () => string;
1086
+ protected resolveHref: (link: SiteFooterLink) => string;
1087
+ protected isAppRoute: (link: SiteFooterLink) => boolean;
1088
+ protected onCookieSettings(event: Event): void;
1089
+ protected onBugReport(event: Event): void;
1090
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSiteFooter, never>;
1091
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSiteFooter, "viking-site-footer", never, { "context": { "alias": "context"; "required": false; "isSignal": true; }; "urls": { "alias": "urls"; "required": false; "isSignal": true; }; "year": { "alias": "year"; "required": false; "isSignal": true; }; }, { "cookieSettings": "cookieSettings"; "bugReport": "bugReport"; "usaBadgeHover": "usaBadgeHover"; }, never, never, true, never>;
1092
+ }
1093
+
1094
+ /**
1095
+ * viking-theme-toggle — navbar utility control for light/dark theme switching.
1096
+ * Uses `.theme-toggle-btn` styles from viking-ui.css (static-navbar.scss).
1097
+ */
1098
+ declare class VikingThemeToggle {
1099
+ readonly theme: _angular_core.InputSignal<"dark" | "light">;
1100
+ readonly toggle: _angular_core.OutputEmitterRef<void>;
1101
+ protected readonly icon: _angular_core.Signal<"sun" | "moon">;
1102
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingThemeToggle, never>;
1103
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingThemeToggle, "viking-theme-toggle", never, { "theme": { "alias": "theme"; "required": false; "isSignal": true; }; }, { "toggle": "toggle"; }, never, never, true, never>;
1104
+ }
1105
+
1106
+ /**
1107
+ * viking-app-header — sticky application header with brand, nav, actions, and mobile menu slots.
1108
+ * Styles live in the component library so all apps share one navbar implementation.
1109
+ */
1110
+ declare class VikingAppHeader {
1111
+ readonly mobileMenuOpen: _angular_core.InputSignal<boolean>;
1112
+ readonly mobileMenuLabel: _angular_core.InputSignal<string>;
1113
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAppHeader, never>;
1114
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAppHeader, "viking-app-header", never, { "mobileMenuOpen": { "alias": "mobileMenuOpen"; "required": false; "isSignal": true; }; "mobileMenuLabel": { "alias": "mobileMenuLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[vikingAppHeaderBrand]", "[vikingAppHeaderNav]", "[vikingAppHeaderAuth]", "[vikingAppHeaderActions]", "[vikingAppHeaderMobile]"], true, never>;
1115
+ }
1116
+
1117
+ /**
1118
+ * viking-app-sidebar — dashboard sidebar shell styles (project nav markup inside).
1119
+ * Width is driven by the `--viking-sidebar-width` CSS variable on the host.
1120
+ */
1121
+ declare class VikingAppSidebar {
1122
+ readonly collapsed: _angular_core.InputSignal<boolean>;
1123
+ readonly dragging: _angular_core.InputSignal<boolean>;
1124
+ readonly width: _angular_core.InputSignal<number>;
1125
+ readonly resizeStart: _angular_core.OutputEmitterRef<MouseEvent>;
1126
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAppSidebar, never>;
1127
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAppSidebar, "viking-app-sidebar", never, { "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "dragging": { "alias": "dragging"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "resizeStart": "resizeStart"; }, never, ["*"], true, never>;
1128
+ }
1129
+
1130
+ /**
1131
+ * viking-accordion — collapsible content panels.
1132
+ * Set exclusive to allow only one open item at a time.
1133
+ */
1134
+ declare class VikingAccordion {
1135
+ readonly exclusive: _angular_core.InputSignal<boolean>;
1136
+ private openItem;
1137
+ /** Called by items when they open, to enforce exclusive mode. */
1138
+ readonly notifyOpened: (item: VikingAccordionItem) => void;
1139
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAccordion, never>;
1140
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAccordion, "viking-accordion", never, { "exclusive": { "alias": "exclusive"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1141
+ }
1142
+ /** A single expandable section within viking-accordion. */
1143
+ declare class VikingAccordionItem {
1144
+ private readonly accordion;
1145
+ constructor(accordion: VikingAccordion | null);
1146
+ readonly heading: _angular_core.InputSignal<string>;
1147
+ readonly expanded: _angular_core.ModelSignal<boolean>;
1148
+ protected readonly panelId: string;
1149
+ protected toggle: () => void;
1150
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAccordionItem, [{ optional: true; }]>;
1151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAccordionItem, "viking-accordion-item", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, never, ["*"], true, never>;
1152
+ }
1153
+
1154
+ /**
1155
+ * viking-auth-panel — access portal / sign-in layout template.
1156
+ * Full-width stacked actions, Google + Apple OAuth row, WCAG-friendly structure.
1157
+ */
1158
+ declare class VikingAuthPanel {
1159
+ readonly tag: _angular_core.InputSignal<string>;
1160
+ readonly title: _angular_core.InputSignal<string>;
1161
+ readonly subtitle: _angular_core.InputSignal<string>;
1162
+ readonly showSocial: _angular_core.InputSignal<boolean>;
1163
+ readonly socialLoading: _angular_core.InputSignal<boolean>;
1164
+ readonly googleSignIn: _angular_core.OutputEmitterRef<void>;
1165
+ readonly appleSignIn: _angular_core.OutputEmitterRef<void>;
1166
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAuthPanel, never>;
1167
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAuthPanel, "viking-auth-panel", never, { "tag": { "alias": "tag"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "showSocial": { "alias": "showSocial"; "required": false; "isSignal": true; }; "socialLoading": { "alias": "socialLoading"; "required": false; "isSignal": true; }; }, { "googleSignIn": "googleSignIn"; "appleSignIn": "appleSignIn"; }, never, ["*", "[vikingAuthLinks]", "[vikingAuthFooter]"], true, never>;
1168
+ }
1169
+
1170
+ /**
1171
+ * viking-autocomplete — text input with filtered suggestions
1172
+ *. ControlValueAccessor-compatible.
1173
+ */
1174
+ declare class VikingAutocomplete extends VikingControl<string> {
1175
+ private readonly host;
1176
+ readonly suggestions: _angular_core.InputSignal<string[]>;
1177
+ readonly value: _angular_core.ModelSignal<string>;
1178
+ readonly placeholder: _angular_core.InputSignal<string>;
1179
+ readonly label: _angular_core.InputSignal<string>;
1180
+ readonly disabled: _angular_core.InputSignal<boolean>;
1181
+ readonly selected: _angular_core.OutputEmitterRef<string>;
1182
+ constructor(host: ElementRef<HTMLElement>);
1183
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1184
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
1185
+ protected readonly panelId: string;
1186
+ protected readonly filtered: _angular_core.Signal<string[]>;
1187
+ writeValue(value: string): void;
1188
+ protected onInput: (event: Event) => void;
1189
+ protected pick: (item: string) => void;
1190
+ protected onKeydown: (event: KeyboardEvent) => void;
1191
+ protected onDocumentClick: (event: Event) => void;
1192
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAutocomplete, never>;
1193
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAutocomplete, "viking-autocomplete", never, { "suggestions": { "alias": "suggestions"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "selected": "selected"; }, never, never, true, never>;
1194
+ }
1195
+
1196
+ /**
1197
+ * viking-avatar — image or initials avatar with optional status indicator
1198
+ *.
1199
+ */
1200
+ declare class VikingAvatar {
1201
+ readonly src: _angular_core.InputSignal<string | null>;
1202
+ readonly name: _angular_core.InputSignal<string>;
1203
+ readonly size: _angular_core.InputSignal<number>;
1204
+ readonly square: _angular_core.InputSignal<boolean>;
1205
+ readonly status: _angular_core.InputSignal<VikingTone | null>;
1206
+ protected readonly imageFailed: _angular_core.WritableSignal<boolean>;
1207
+ protected readonly initials: _angular_core.Signal<string>;
1208
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingAvatar, never>;
1209
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingAvatar, "viking-avatar", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "square": { "alias": "square"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1210
+ }
1211
+
1212
+ /**
1213
+ * viking-badge — status pill.
1214
+ * Tones map to THEME.md semantic colors only.
1215
+ */
1216
+ declare class VikingBadge {
1217
+ readonly tone: _angular_core.InputSignal<VikingTone | "neutral">;
1218
+ readonly size: _angular_core.InputSignal<VikingSize>;
1219
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1220
+ readonly removable: _angular_core.InputSignal<boolean>;
1221
+ readonly removed: _angular_core.OutputEmitterRef<void>;
1222
+ protected readonly hostClass: _angular_core.Signal<{
1223
+ [x: string]: boolean;
1224
+ "viking-badge-sm": boolean;
1225
+ }>;
1226
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingBadge, never>;
1227
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingBadge, "viking-badge", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
1228
+ }
1229
+
1230
+ /** viking-bar — vertical bar for mock charts and decorative grids. */
1231
+ declare class VikingBar {
1232
+ readonly height: _angular_core.InputSignal<number>;
1233
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingBar, never>;
1234
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingBar, "viking-bar", never, { "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1235
+ }
1236
+
1237
+ /**
1238
+ * viking-brand — logo + wordmark lockup.
1239
+ * Project a custom logo (img/svg) or fall back to a monogram tile.
1240
+ */
1241
+ declare class VikingBrand {
1242
+ readonly name: _angular_core.InputSignal<string>;
1243
+ readonly logoSrc: _angular_core.InputSignal<string | null>;
1244
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingBrand, never>;
1245
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingBrand, "viking-brand", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1246
+ }
1247
+
1248
+ interface VikingBreadcrumb {
1249
+ label: string;
1250
+ href?: string;
1251
+ }
1252
+ /**
1253
+ * viking-breadcrumbs — hierarchy navigation.
1254
+ */
1255
+ declare class VikingBreadcrumbs {
1256
+ readonly items: _angular_core.InputSignal<VikingBreadcrumb[]>;
1257
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingBreadcrumbs, never>;
1258
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingBreadcrumbs, "viking-breadcrumbs", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1259
+ }
1260
+
1261
+ type VikingButtonVariant = "outline" | "primary" | "secondary" | "filled" | "danger" | "ghost" | "subtle";
1262
+ /**
1263
+ * viking-button — thin Angular wrapper around `viking-button-wc`.
1264
+ * Variants: outline (default), primary, filled, danger, ghost, subtle.
1265
+ */
1266
+ declare class VikingButton {
1267
+ readonly variant: _angular_core.InputSignal<VikingButtonVariant>;
1268
+ readonly size: _angular_core.InputSignal<VikingSize>;
1269
+ readonly type: _angular_core.InputSignal<"button" | "submit">;
1270
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1271
+ readonly iconTrailing: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1272
+ readonly disabled: _angular_core.InputSignal<boolean>;
1273
+ readonly loading: _angular_core.InputSignal<boolean>;
1274
+ readonly square: _angular_core.InputSignal<boolean>;
1275
+ readonly fullWidth: _angular_core.InputSignal<boolean>;
1276
+ readonly compact: _angular_core.InputSignal<boolean>;
1277
+ readonly href: _angular_core.InputSignal<string | null>;
1278
+ readonly target: _angular_core.InputSignal<string | null>;
1279
+ readonly kbd: _angular_core.InputSignal<string | null>;
1280
+ readonly label: _angular_core.InputSignal<string>;
1281
+ readonly pressed: _angular_core.OutputEmitterRef<MouseEvent>;
1282
+ protected readonly iconSize: _angular_core.Signal<20 | 18>;
1283
+ protected onPress: (event: Event) => void;
1284
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingButton, never>;
1285
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingButton, "viking-button", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconTrailing": { "alias": "iconTrailing"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "square": { "alias": "square"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "kbd": { "alias": "kbd"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "pressed": "pressed"; }, never, ["*"], true, never>;
1286
+ }
1287
+
1288
+ /**
1289
+ * viking-button-group — fuses buttons with shared borders
1290
+ *.
1291
+ */
1292
+ declare class VikingButtonGroup {
1293
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingButtonGroup, never>;
1294
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingButtonGroup, "viking-button-group", never, {}, {}, never, ["*"], true, never>;
1295
+ }
1296
+
1297
+ interface CalendarDay {
1298
+ iso: string;
1299
+ day: number;
1300
+ inMonth: boolean;
1301
+ isToday: boolean;
1302
+ }
1303
+ /**
1304
+ * viking-calendar — month-grid date selection.
1305
+ * Value is an ISO date string (YYYY-MM-DD). ControlValueAccessor-compatible.
1306
+ */
1307
+ declare class VikingCalendar extends VikingControl<string | null> {
1308
+ readonly value: _angular_core.ModelSignal<string | null>;
1309
+ protected readonly weekdays: string[];
1310
+ protected readonly viewDate: _angular_core.WritableSignal<Date>;
1311
+ protected readonly title: _angular_core.Signal<string>;
1312
+ protected readonly days: _angular_core.Signal<CalendarDay[]>;
1313
+ writeValue(value: string | null): void;
1314
+ protected move: (delta: number) => void;
1315
+ protected pick: (day: CalendarDay) => void;
1316
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCalendar, never>;
1317
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCalendar, "viking-calendar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1318
+ }
1319
+
1320
+ /**
1321
+ * viking-callout — highlighted message block.
1322
+ */
1323
+ declare class VikingCallout {
1324
+ readonly tone: _angular_core.InputSignal<VikingTone>;
1325
+ readonly heading: _angular_core.InputSignal<string>;
1326
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1327
+ readonly dismissible: _angular_core.InputSignal<boolean>;
1328
+ readonly closed: _angular_core.OutputEmitterRef<void>;
1329
+ protected readonly dismissed: _angular_core.WritableSignal<boolean>;
1330
+ protected readonly resolvedIcon: _angular_core.Signal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1331
+ protected dismiss: () => void;
1332
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCallout, never>;
1333
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCallout, "viking-callout", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, ["*"], true, never>;
1334
+ }
1335
+
1336
+ /**
1337
+ * viking-card — surface container.
1338
+ * Compose with viking-card-header / viking-card-footer for structured layouts.
1339
+ */
1340
+ declare class VikingCard {
1341
+ private readonly host;
1342
+ readonly interactive: _angular_core.InputSignal<boolean>;
1343
+ readonly loading: _angular_core.InputSignal<boolean>;
1344
+ readonly compact: _angular_core.InputSignal<boolean>;
1345
+ constructor(host: ElementRef<HTMLElement>);
1346
+ protected onActivate: (event: Event) => void;
1347
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCard, never>;
1348
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCard, "viking-card", never, { "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1349
+ }
1350
+ /** Header row for viking-card. */
1351
+ declare class VikingCardHeader {
1352
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCardHeader, never>;
1353
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCardHeader, "viking-card-header", never, {}, {}, never, ["*"], true, never>;
1354
+ }
1355
+ /** Footer row for viking-card. */
1356
+ declare class VikingCardFooter {
1357
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCardFooter, never>;
1358
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCardFooter, "viking-card-footer", never, {}, {}, never, ["*"], true, never>;
1359
+ }
1360
+
1361
+ type VikingIconBadgeTone = "default" | "success" | "warning" | "danger" | "info";
1362
+ /**
1363
+ * viking-icon-badge — consistent icon backdrop for empty states, callouts, and metric headers.
1364
+ */
1365
+ declare class VikingIconBadge {
1366
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1367
+ readonly tone: _angular_core.InputSignal<VikingIconBadgeTone>;
1368
+ readonly size: _angular_core.InputSignal<number | undefined>;
1369
+ readonly sizePreset: _angular_core.InputSignal<VikingIconSizePreset | null>;
1370
+ readonly color: _angular_core.InputSignal<string | undefined>;
1371
+ readonly variant: _angular_core.InputSignal<"outline" | "filled">;
1372
+ readonly decorative: _angular_core.InputSignal<boolean>;
1373
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingIconBadge, never>;
1374
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingIconBadge, "viking-icon-badge", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "sizePreset": { "alias": "sizePreset"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "decorative": { "alias": "decorative"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1375
+ }
1376
+
1377
+ /**
1378
+ * viking-card-title — card header title row with tokenized icon badge + heading.
1379
+ * Compose inside viking-card-header for premium, consistent section titles.
1380
+ */
1381
+ declare class VikingCardTitle {
1382
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1383
+ readonly tone: _angular_core.InputSignal<VikingIconBadgeTone>;
1384
+ readonly level: _angular_core.InputSignal<2 | 1 | 4 | 3>;
1385
+ readonly size: _angular_core.InputSignal<"sm" | "lg" | "base" | "xl">;
1386
+ readonly iconSize: _angular_core.InputSignal<number>;
1387
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCardTitle, never>;
1388
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCardTitle, "viking-card-title", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1389
+ }
1390
+
1391
+ /** A single slide inside viking-carousel. */
1392
+ declare class VikingCarouselSlide {
1393
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCarouselSlide, never>;
1394
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCarouselSlide, "viking-carousel-slide", never, {}, {}, never, ["*"], true, never>;
1395
+ }
1396
+ /**
1397
+ * viking-carousel — scroll-snap slideshow.
1398
+ */
1399
+ declare class VikingCarousel {
1400
+ private readonly viewport;
1401
+ protected readonly slides: _angular_core.Signal<readonly VikingCarouselSlide[]>;
1402
+ protected readonly index: _angular_core.WritableSignal<number>;
1403
+ protected goTo: (target: number) => void;
1404
+ protected onScroll: () => void;
1405
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCarousel, never>;
1406
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCarousel, "viking-carousel", never, {}, {}, ["slides"], ["*"], true, never>;
1407
+ }
1408
+
1409
+ /** Visible index window for chart zoom/pan (inclusive start, exclusive end). */
1410
+ interface ChartZoomWindow {
1411
+ start: number;
1412
+ end: number;
1413
+ }
1414
+ declare const fullChartWindow: (count: number) => ChartZoomWindow;
1415
+ /** Clamp zoom window to valid bounds with a minimum visible span. */
1416
+ declare const clampChartWindow: (window: ChartZoomWindow, count: number, minSpan?: number) => ChartZoomWindow;
1417
+ /** Wheel delta → narrower/wider window centered on cursor fraction (0–1). */
1418
+ declare const zoomChartWindow: (current: ChartZoomWindow, count: number, cursorFraction: number, deltaY: number, minSpan?: number) => ChartZoomWindow;
1419
+ /** Drag delta in data points → pan window. */
1420
+ declare const panChartWindow: (current: ChartZoomWindow, count: number, deltaPoints: number, minSpan?: number) => ChartZoomWindow;
1421
+ /** Slice series rows and category labels for the active window. */
1422
+ declare const sliceChartData: <T>(values: T[], window: ChartZoomWindow) => T[];
1423
+
1424
+ interface ChartPath {
1425
+ name: string;
1426
+ tone: VikingTone;
1427
+ line: string;
1428
+ area: string;
1429
+ }
1430
+ interface ChartPoint {
1431
+ x: number;
1432
+ y: number;
1433
+ tone: VikingTone;
1434
+ }
1435
+ interface BarRect {
1436
+ x: number;
1437
+ y: number;
1438
+ width: number;
1439
+ height: number;
1440
+ tone: VikingTone;
1441
+ radiusTop: boolean;
1442
+ }
1443
+ interface DonutSlice {
1444
+ label: string;
1445
+ tone: VikingTone;
1446
+ path: string;
1447
+ }
1448
+ interface AxisLabel {
1449
+ x: number;
1450
+ y: number;
1451
+ text: string;
1452
+ anchor: "start" | "middle" | "end";
1453
+ }
1454
+ interface TickMark {
1455
+ x: number;
1456
+ y1: number;
1457
+ y2: number;
1458
+ }
1459
+ interface Gutter {
1460
+ top: number;
1461
+ right: number;
1462
+ bottom: number;
1463
+ left: number;
1464
+ }
1465
+ /**
1466
+ * viking-chart — zero-dependency native SVG charts styled after Viking UI.
1467
+ */
1468
+ declare class VikingChart {
1469
+ protected readonly chartId: string;
1470
+ readonly kind: _angular_core.InputSignal<VikingChartKind>;
1471
+ readonly series: _angular_core.InputSignal<VikingChartSeries[]>;
1472
+ readonly categories: _angular_core.InputSignal<string[]>;
1473
+ readonly segments: _angular_core.InputSignal<VikingDonutSegment[]>;
1474
+ readonly label: _angular_core.InputSignal<string>;
1475
+ readonly showArea: _angular_core.InputSignal<boolean>;
1476
+ readonly compact: _angular_core.InputSignal<boolean>;
1477
+ readonly fill: _angular_core.InputSignal<boolean>;
1478
+ readonly curve: _angular_core.InputSignal<VikingChartCurve>;
1479
+ readonly showPoints: _angular_core.InputSignal<boolean>;
1480
+ readonly pointRadius: _angular_core.InputSignal<number>;
1481
+ readonly barWidth: _angular_core.InputSignal<number>;
1482
+ readonly barRadius: _angular_core.InputSignal<number>;
1483
+ readonly barMinHeight: _angular_core.InputSignal<number>;
1484
+ readonly gutter: _angular_core.InputSignal<string | number | undefined>;
1485
+ readonly tickCount: _angular_core.InputSignal<number>;
1486
+ readonly showLegend: _angular_core.InputSignal<boolean | undefined>;
1487
+ readonly summary: _angular_core.InputSignal<string>;
1488
+ /** Enable wheel zoom + drag pan on line/bar charts (Flux-style interaction). */
1489
+ readonly zoomable: _angular_core.InputSignal<boolean>;
1490
+ private readonly zoomWindow;
1491
+ private panStartX;
1492
+ private panStartWindow;
1493
+ constructor();
1494
+ /** Slice series/categories to the active zoom window. */
1495
+ protected readonly dataWindow: _angular_core.Signal<ChartZoomWindow>;
1496
+ protected readonly effectiveSeries: _angular_core.Signal<{
1497
+ data: number[];
1498
+ name: string;
1499
+ tone?: VikingTone;
1500
+ }[]>;
1501
+ protected readonly effectiveCategories: _angular_core.Signal<string[]>;
1502
+ protected readonly zoomActive: _angular_core.Signal<boolean>;
1503
+ protected resetZoom: () => void;
1504
+ protected onWheel: (event: WheelEvent) => void;
1505
+ protected onPanStart: (event: PointerEvent) => void;
1506
+ protected onPanMove: (event: PointerEvent) => void;
1507
+ protected onPanEnd: () => void;
1508
+ protected readonly width = 720;
1509
+ protected readonly isSparkline: _angular_core.Signal<boolean>;
1510
+ protected readonly resolvedGutter: _angular_core.Signal<Gutter>;
1511
+ protected readonly legendVisible: _angular_core.Signal<boolean>;
1512
+ protected readonly height: _angular_core.Signal<720 | 240 | 200 | 400 | 48>;
1513
+ protected readonly preserveAspectRatio: _angular_core.Signal<string>;
1514
+ protected readonly plotBottom: _angular_core.Signal<number>;
1515
+ protected readonly plotTop: _angular_core.Signal<number>;
1516
+ protected readonly plotCy: _angular_core.Signal<number>;
1517
+ protected readonly donutInnerRadius: _angular_core.Signal<number>;
1518
+ protected readonly isBarKind: _angular_core.Signal<boolean>;
1519
+ protected readonly isLineKind: _angular_core.Signal<boolean>;
1520
+ protected readonly renderArea: _angular_core.Signal<boolean>;
1521
+ protected readonly renderPoints: _angular_core.Signal<boolean>;
1522
+ protected toneVar: (tone: VikingTone) => string;
1523
+ protected readonly valueRange: _angular_core.Signal<{
1524
+ min: number;
1525
+ max: number;
1526
+ }>;
1527
+ protected readonly gridLines: _angular_core.Signal<number[]>;
1528
+ protected readonly yAxisLabels: _angular_core.Signal<AxisLabel[]>;
1529
+ protected readonly xAxisLabels: _angular_core.Signal<AxisLabel[]>;
1530
+ protected readonly xTickMarks: _angular_core.Signal<TickMark[]>;
1531
+ protected readonly paths: _angular_core.Signal<ChartPath[]>;
1532
+ protected readonly linePoints: _angular_core.Signal<ChartPoint[]>;
1533
+ protected readonly barRects: _angular_core.Signal<BarRect[]>;
1534
+ private readonly singleBarRects;
1535
+ private readonly groupedBarRects;
1536
+ private readonly stackedBarRects;
1537
+ protected readonly donutTotalLabel: _angular_core.Signal<string>;
1538
+ protected readonly donutSlices: _angular_core.Signal<DonutSlice[]>;
1539
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingChart, never>;
1540
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingChart, "viking-chart", never, { "kind": { "alias": "kind"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "categories": { "alias": "categories"; "required": false; "isSignal": true; }; "segments": { "alias": "segments"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showArea": { "alias": "showArea"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "curve": { "alias": "curve"; "required": false; "isSignal": true; }; "showPoints": { "alias": "showPoints"; "required": false; "isSignal": true; }; "pointRadius": { "alias": "pointRadius"; "required": false; "isSignal": true; }; "barWidth": { "alias": "barWidth"; "required": false; "isSignal": true; }; "barRadius": { "alias": "barRadius"; "required": false; "isSignal": true; }; "barMinHeight": { "alias": "barMinHeight"; "required": false; "isSignal": true; }; "gutter": { "alias": "gutter"; "required": false; "isSignal": true; }; "tickCount": { "alias": "tickCount"; "required": false; "isSignal": true; }; "showLegend": { "alias": "showLegend"; "required": false; "isSignal": true; }; "summary": { "alias": "summary"; "required": false; "isSignal": true; }; "zoomable": { "alias": "zoomable"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1541
+ }
1542
+
1543
+ type VikingDialogKind = "confirm" | "search" | "onboarding";
1544
+ interface VikingConfirmDialogData {
1545
+ title?: string;
1546
+ message: string;
1547
+ type?: "alert" | "confirm" | "prompt";
1548
+ confirmText?: string;
1549
+ confirmBtnText?: string;
1550
+ confirmBtnColor?: "primary" | "warn" | "accent";
1551
+ }
1552
+ interface VikingDialogState {
1553
+ kind: VikingDialogKind;
1554
+ data?: VikingConfirmDialogData & {
1555
+ force?: boolean;
1556
+ };
1557
+ }
1558
+ /** Programmatic confirm / prompt / overlay orchestration for Viking-UI modals. */
1559
+ declare class VikingDialogService {
1560
+ readonly active: _angular_core.WritableSignal<VikingDialogState | null>;
1561
+ private confirmResolver;
1562
+ private onboardingResolver;
1563
+ openConfirm(data: VikingConfirmDialogData): Promise<boolean>;
1564
+ resolveConfirm(result: boolean): void;
1565
+ openSearch(): void;
1566
+ closeSearch(): void;
1567
+ openOnboarding(force?: boolean): Promise<boolean | undefined>;
1568
+ resolveOnboarding(result?: boolean): void;
1569
+ closeActive(cancelPending?: boolean): void;
1570
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingDialogService, never>;
1571
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<VikingDialogService>;
1572
+ }
1573
+
1574
+ /**
1575
+ * viking-confirm-dialog — alert / confirm / prompt modal wired to VikingDialogService.
1576
+ */
1577
+ declare class VikingConfirmDialog {
1578
+ private readonly vikingDialog;
1579
+ constructor(vikingDialog: VikingDialogService);
1580
+ protected readonly inputValue: _angular_core.WritableSignal<string>;
1581
+ protected readonly data: _angular_core.Signal<VikingConfirmDialogData | null>;
1582
+ protected readonly open: _angular_core.Signal<boolean>;
1583
+ protected readonly heading: _angular_core.Signal<string>;
1584
+ protected readonly iconName: _angular_core.Signal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1585
+ protected readonly isValid: _angular_core.Signal<boolean>;
1586
+ protected onCancel: () => void;
1587
+ protected onConfirm: () => void;
1588
+ protected onOpenChange: (next: boolean) => void;
1589
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingConfirmDialog, never>;
1590
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingConfirmDialog, "viking-confirm-dialog", never, {}, {}, never, never, true, never>;
1591
+ }
1592
+
1593
+ /**
1594
+ * viking-chart-card-header — shared label / value / trend header for analytics chart cards.
1595
+ */
1596
+ declare class VikingChartCardHeader {
1597
+ readonly title: _angular_core.InputSignal<string>;
1598
+ readonly value: _angular_core.InputSignal<string>;
1599
+ readonly emptyLabel: _angular_core.InputSignal<string>;
1600
+ readonly trend: _angular_core.InputSignal<string>;
1601
+ readonly hasData: _angular_core.InputSignal<boolean>;
1602
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingChartCardHeader, never>;
1603
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingChartCardHeader, "viking-chart-card-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "hasData": { "alias": "hasData"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1604
+ }
1605
+
1606
+ /**
1607
+ * viking-icon-heading — icon + title row with shared vertical alignment.
1608
+ * Use in bento cards, integration tiles, and docs panels.
1609
+ */
1610
+ declare class VikingIconHeading {
1611
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1612
+ readonly size: _angular_core.InputSignal<"md" | "lg">;
1613
+ readonly headingLevel: _angular_core.InputSignal<"h2" | "h3">;
1614
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingIconHeading, never>;
1615
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingIconHeading, "viking-icon-heading", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "headingLevel": { "alias": "headingLevel"; "required": false; "isSignal": true; }; }, {}, never, ["*", "*"], true, never>;
1616
+ }
1617
+
1618
+ type VikingChartEmptyTone = "default" | "secure";
1619
+ type VikingChartEmptyLayout = "fill" | "overlay" | "compact" | "inline";
1620
+ /**
1621
+ * viking-chart-empty-state — standardized dashed “waiting for data” overlay for chart panels.
1622
+ * Fills its parent chart body by default; use layout="overlay" for map/canvas stacks.
1623
+ */
1624
+ declare class VikingChartEmptyState {
1625
+ readonly title: _angular_core.InputSignal<string>;
1626
+ readonly description: _angular_core.InputSignal<string>;
1627
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1628
+ readonly tone: _angular_core.InputSignal<VikingChartEmptyTone>;
1629
+ readonly layout: _angular_core.InputSignal<VikingChartEmptyLayout>;
1630
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingChartEmptyState, never>;
1631
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingChartEmptyState, "viking-chart-empty-state", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1632
+ }
1633
+
1634
+ type VikingChartPanelSize = "large" | "medium";
1635
+ type VikingChartPanelBody = "default" | "origin-map";
1636
+ /**
1637
+ * viking-chart-panel — outlined analytics card shell with consistent header/body rhythm.
1638
+ */
1639
+ declare class VikingChartPanel {
1640
+ readonly size: _angular_core.InputSignal<VikingChartPanelSize>;
1641
+ readonly body: _angular_core.InputSignal<VikingChartPanelBody>;
1642
+ protected readonly bodyClasses: _angular_core.Signal<string>;
1643
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingChartPanel, never>;
1644
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingChartPanel, "viking-chart-panel", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "body": { "alias": "body"; "required": false; "isSignal": true; }; }, {}, never, ["viking-chart-card-header", "*"], true, never>;
1645
+ }
1646
+
1647
+ /**
1648
+ * viking-checkbox — custom checkbox.
1649
+ * ControlValueAccessor-compatible.
1650
+ */
1651
+ declare class VikingCheckbox extends VikingControl<boolean> {
1652
+ readonly checked: _angular_core.ModelSignal<boolean>;
1653
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
1654
+ readonly disabled: _angular_core.InputSignal<boolean>;
1655
+ readonly description: _angular_core.InputSignal<string>;
1656
+ writeValue(value: boolean): void;
1657
+ protected toggle: (event: Event) => void;
1658
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCheckbox, never>;
1659
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCheckbox, "viking-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
1660
+ }
1661
+
1662
+ /**
1663
+ * viking-color-picker — swatch presets + custom color input
1664
+ *. ControlValueAccessor-compatible.
1665
+ * Default presets are the THEME.md palette.
1666
+ */
1667
+ declare class VikingColorPicker extends VikingControl<string> {
1668
+ readonly value: _angular_core.ModelSignal<string>;
1669
+ readonly label: _angular_core.InputSignal<string>;
1670
+ readonly disabled: _angular_core.InputSignal<boolean>;
1671
+ /** Preset swatches — THEME.md Series color palette (premium charcoal / teal / crimson). */
1672
+ readonly presets: _angular_core.InputSignal<string[]>;
1673
+ writeValue(value: string): void;
1674
+ protected pick: (color: string) => void;
1675
+ protected onInput: (event: Event) => void;
1676
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingColorPicker, never>;
1677
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingColorPicker, "viking-color-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1678
+ }
1679
+
1680
+ /**
1681
+ * viking-command — command palette.
1682
+ * Toggle with the `open` model; emits `executed` when an item is chosen.
1683
+ */
1684
+ declare class VikingCommand {
1685
+ readonly items: _angular_core.InputSignal<VikingCommandItem[]>;
1686
+ readonly open: _angular_core.ModelSignal<boolean>;
1687
+ readonly placeholder: _angular_core.InputSignal<string>;
1688
+ readonly executed: _angular_core.OutputEmitterRef<VikingCommandItem>;
1689
+ private readonly queryInput;
1690
+ protected readonly query: _angular_core.WritableSignal<string>;
1691
+ protected readonly activeId: _angular_core.WritableSignal<string>;
1692
+ constructor();
1693
+ protected readonly filtered: _angular_core.Signal<VikingCommandItem[]>;
1694
+ protected readonly groups: _angular_core.Signal<{
1695
+ name: string;
1696
+ items: VikingCommandItem[];
1697
+ }[]>;
1698
+ protected onQuery: (event: Event) => void;
1699
+ protected run: (item: VikingCommandItem) => void;
1700
+ protected onKeydown: (event: KeyboardEvent) => void;
1701
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingCommand, never>;
1702
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingCommand, "viking-command", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "executed": "executed"; }, never, never, true, never>;
1703
+ }
1704
+
1705
+ /**
1706
+ * viking-composer — message composer with attachments and send action
1707
+ *.
1708
+ */
1709
+ declare class VikingComposer {
1710
+ readonly value: _angular_core.ModelSignal<string>;
1711
+ readonly placeholder: _angular_core.InputSignal<string>;
1712
+ readonly disabled: _angular_core.InputSignal<boolean>;
1713
+ readonly allowAttachments: _angular_core.InputSignal<boolean>;
1714
+ readonly sent: _angular_core.OutputEmitterRef<string>;
1715
+ readonly attach: _angular_core.OutputEmitterRef<void>;
1716
+ protected onInput: (event: Event) => void;
1717
+ protected onKeydown: (event: KeyboardEvent) => void;
1718
+ protected send: () => void;
1719
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingComposer, never>;
1720
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingComposer, "viking-composer", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowAttachments": { "alias": "allowAttachments"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "sent": "sent"; "attach": "attach"; }, never, ["*"], true, never>;
1721
+ }
1722
+
1723
+ /**
1724
+ * viking-context — right-click context menu.
1725
+ * Wrap the target content and project menu content with the `vikingMenu` attribute
1726
+ * (typically viking-menu-item elements).
1727
+ */
1728
+ declare class VikingContext {
1729
+ private readonly host;
1730
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1731
+ protected readonly position: _angular_core.WritableSignal<{
1732
+ x: number;
1733
+ y: number;
1734
+ }>;
1735
+ constructor(host: ElementRef<HTMLElement>);
1736
+ protected onContextMenu: (event: MouseEvent) => void;
1737
+ protected closed: () => void;
1738
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingContext, never>;
1739
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingContext, "viking-context", never, {}, {}, never, ["*", "[vikingMenu]"], true, never>;
1740
+ }
1741
+
1742
+ /**
1743
+ * viking-date-picker — input + calendar popover.
1744
+ * Value is an ISO date string (YYYY-MM-DD). ControlValueAccessor-compatible.
1745
+ */
1746
+ declare class VikingDatePicker extends VikingControl<string | null> {
1747
+ private readonly host;
1748
+ readonly value: _angular_core.ModelSignal<string | null>;
1749
+ readonly placeholder: _angular_core.InputSignal<string>;
1750
+ readonly label: _angular_core.InputSignal<string>;
1751
+ readonly disabled: _angular_core.InputSignal<boolean>;
1752
+ protected readonly open: _angular_core.WritableSignal<boolean>;
1753
+ constructor(host: ElementRef<HTMLElement>);
1754
+ writeValue(value: string | null): void;
1755
+ protected pick: (iso: string | null) => void;
1756
+ protected onDocumentClick: (event: Event) => void;
1757
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingDatePicker, never>;
1758
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingDatePicker, "viking-date-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1759
+ }
1760
+
1761
+ /**
1762
+ * viking-dropdown — expandable menu.
1763
+ * Project the trigger with `vikingTrigger`; fill the menu with viking-menu-item.
1764
+ */
1765
+ declare class VikingDropdown {
1766
+ private readonly host;
1767
+ readonly open: _angular_core.ModelSignal<boolean>;
1768
+ readonly align: _angular_core.InputSignal<"end" | "start">;
1769
+ constructor(host: ElementRef<HTMLElement>);
1770
+ /** Closes the menu; called by viking-menu-item on selection. */
1771
+ readonly close: () => void;
1772
+ /** Toggles when the (focusable, projected) trigger is activated. */
1773
+ protected onHostClick: (event: Event) => void;
1774
+ protected onDocumentClick: (event: Event) => void;
1775
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingDropdown, never>;
1776
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingDropdown, "viking-dropdown", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["[vikingTrigger]", "*"], true, never>;
1777
+ }
1778
+ /**
1779
+ * viking-menu-item — action row inside viking-dropdown / viking-context menus.
1780
+ */
1781
+ declare class VikingMenuItem {
1782
+ private readonly dropdown;
1783
+ constructor(dropdown: VikingDropdown | null);
1784
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1785
+ readonly kbd: _angular_core.InputSignal<string | null>;
1786
+ readonly danger: _angular_core.InputSignal<boolean>;
1787
+ readonly disabled: _angular_core.InputSignal<boolean>;
1788
+ readonly selected: _angular_core.OutputEmitterRef<MouseEvent>;
1789
+ protected select: (event: MouseEvent) => void;
1790
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingMenuItem, [{ optional: true; }]>;
1791
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingMenuItem, "viking-menu-item", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "kbd": { "alias": "kbd"; "required": false; "isSignal": true; }; "danger": { "alias": "danger"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "selected": "selected"; }, never, ["*"], true, never>;
1792
+ }
1793
+
1794
+ /**
1795
+ * viking-empty-state — reusable empty / zero-data placeholder.
1796
+ */
1797
+ declare class VikingEmptyState {
1798
+ readonly heading: _angular_core.InputSignal<string>;
1799
+ readonly description: _angular_core.InputSignal<string>;
1800
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1801
+ readonly iconSize: _angular_core.InputSignal<number>;
1802
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingEmptyState, never>;
1803
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingEmptyState, "viking-empty-state", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1804
+ }
1805
+
1806
+ interface EditorAction {
1807
+ icon: VikingIconName$1;
1808
+ command: string;
1809
+ label: string;
1810
+ }
1811
+ /**
1812
+ * viking-editor — lightweight rich text editor.
1813
+ * Zero-dependency contenteditable with a formatting toolbar.
1814
+ * Value is HTML. ControlValueAccessor-compatible.
1815
+ */
1816
+ declare class VikingEditor extends VikingControl<string> {
1817
+ private readonly surface;
1818
+ private readonly document;
1819
+ readonly value: _angular_core.ModelSignal<string>;
1820
+ readonly placeholder: _angular_core.InputSignal<string>;
1821
+ readonly label: _angular_core.InputSignal<string>;
1822
+ protected readonly actions: EditorAction[];
1823
+ constructor(elementRef: ElementRef<HTMLElement>);
1824
+ writeValue(value: string): void;
1825
+ protected exec: (command: string) => void;
1826
+ protected onInput: () => void;
1827
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingEditor, never>;
1828
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingEditor, "viking-editor", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
1829
+ }
1830
+
1831
+ /**
1832
+ * viking-fab — floating action button (fixed bottom-right).
1833
+ */
1834
+ declare class VikingFab {
1835
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1836
+ readonly label: _angular_core.InputSignal<string>;
1837
+ readonly disabled: _angular_core.InputSignal<boolean>;
1838
+ readonly pressed: _angular_core.OutputEmitterRef<MouseEvent>;
1839
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingFab, never>;
1840
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingFab, "viking-fab", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "pressed": "pressed"; }, never, never, true, never>;
1841
+ }
1842
+
1843
+ /**
1844
+ * viking-field — label / description / error wrapper for any control
1845
+ *.
1846
+ * The projected control is associated with the label by wrapping.
1847
+ */
1848
+ declare class VikingField {
1849
+ readonly label: _angular_core.InputSignal<string>;
1850
+ readonly description: _angular_core.InputSignal<string>;
1851
+ readonly error: _angular_core.InputSignal<string>;
1852
+ readonly required: _angular_core.InputSignal<boolean>;
1853
+ protected readonly descriptionId: string;
1854
+ protected readonly errorId: string;
1855
+ protected readonly labelId: string;
1856
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingField, never>;
1857
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingField, "viking-field", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1858
+ }
1859
+
1860
+ /**
1861
+ * viking-footer — site-wide Drakkar footer shell. Project directory columns and bottom row via slots.
1862
+ * Static apps (marketing, backend) use the same class names from viking-ui.css.
1863
+ */
1864
+ declare class VikingFooter {
1865
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingFooter, never>;
1866
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingFooter, "viking-footer", never, {}, {}, never, ["[vikingFooterDirectory]", "[vikingFooterBottom]"], true, never>;
1867
+ }
1868
+
1869
+ type VikingFormSectionLayout = "inline" | "stack" | "status";
1870
+ /**
1871
+ * viking-form-panel — groups related form sections inside a card without nested outlines.
1872
+ */
1873
+ declare class VikingFormPanel {
1874
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingFormPanel, never>;
1875
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingFormPanel, "viking-form-panel", never, {}, {}, never, ["*"], true, never>;
1876
+ }
1877
+ /**
1878
+ * viking-form-section — standard dashboard form row: heading, fields, and actions.
1879
+ * Use inside viking-form-panel (or a card body) to avoid nested bordered sub-forms.
1880
+ */
1881
+ declare class VikingFormSection {
1882
+ readonly heading: _angular_core.InputSignal<string>;
1883
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1884
+ readonly layout: _angular_core.InputSignal<VikingFormSectionLayout>;
1885
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingFormSection, never>;
1886
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingFormSection, "viking-form-section", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[vikingFormActions]", "[vikingFormFooter]"], true, never>;
1887
+ }
1888
+
1889
+ /**
1890
+ * viking-file-upload — drag & drop file zone.
1891
+ */
1892
+ declare class VikingFileUpload {
1893
+ readonly heading: _angular_core.InputSignal<string>;
1894
+ readonly hint: _angular_core.InputSignal<string>;
1895
+ readonly accept: _angular_core.InputSignal<string>;
1896
+ readonly multiple: _angular_core.InputSignal<boolean>;
1897
+ readonly disabled: _angular_core.InputSignal<boolean>;
1898
+ readonly filesChanged: _angular_core.OutputEmitterRef<File[]>;
1899
+ protected readonly dragOver: _angular_core.WritableSignal<boolean>;
1900
+ protected readonly fileList: _angular_core.WritableSignal<File[]>;
1901
+ protected onDragOver: (event: DragEvent) => void;
1902
+ protected onDrop: (event: DragEvent) => void;
1903
+ protected onSelect: (event: Event) => void;
1904
+ protected removeFile: (file: File) => void;
1905
+ protected formatSize: (bytes: number) => string;
1906
+ private addFiles;
1907
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingFileUpload, never>;
1908
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingFileUpload, "viking-file-upload", never, { "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "filesChanged": "filesChanged"; }, never, never, true, never>;
1909
+ }
1910
+
1911
+ /** viking-gauge-arc — semicircle gauge fill driven by value / max. */
1912
+ declare class VikingGaugeArc {
1913
+ readonly value: _angular_core.InputSignal<number>;
1914
+ readonly max: _angular_core.InputSignal<number>;
1915
+ readonly circumference: _angular_core.InputSignal<number>;
1916
+ readonly tone: _angular_core.InputSignal<"accent" | "danger" | "primary" | "amber">;
1917
+ protected readonly strokeDasharray: _angular_core.Signal<string>;
1918
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingGaugeArc, never>;
1919
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingGaugeArc, "viking-gauge-arc", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "circumference": { "alias": "circumference"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1920
+ }
1921
+
1922
+ /** viking-hud-panel — bordered dashboard panel with icon header. */
1923
+ declare class VikingHudPanel {
1924
+ readonly title: _angular_core.InputSignal<string>;
1925
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1926
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingHudPanel, never>;
1927
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingHudPanel, "viking-hud-panel", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; }, {}, never, ["[vikingHudPanelBadge]", "*"], true, never>;
1928
+ }
1929
+
1930
+ /**
1931
+ * viking-icon — themeable inline SVG icon (Lucide-sourced registry + DEML brand marks).
1932
+ * Zero runtime dependencies; paths are inlined at build time from Lucide.
1933
+ *
1934
+ * @example Outline with semantic color
1935
+ * ```html
1936
+ * <viking-icon name="search" sizePreset="md" color="accent" />
1937
+ * ```
1938
+ *
1939
+ * @example Brand mark (outline)
1940
+ * ```html
1941
+ * <viking-icon name="drakkar" [size]="28" color="accent" />
1942
+ * ```
1943
+ */
1944
+ declare class VikingIcon {
1945
+ private readonly sanitizer;
1946
+ readonly name: _angular_core.InputSignal<string>;
1947
+ /** Explicit pixel size — overridden by sizePreset when set. */
1948
+ readonly size: _angular_core.InputSignal<number | undefined>;
1949
+ /** sm (16px) · md (20px) · lg (24px) */
1950
+ readonly sizePreset: _angular_core.InputSignal<VikingIconSizePreset | null>;
1951
+ /** outline (stroke) or filled (solid) */
1952
+ readonly variant: _angular_core.InputSignal<VikingIconVariant>;
1953
+ /** Semantic token (accent, success, …) or any CSS color value. */
1954
+ readonly color: _angular_core.InputSignal<string | undefined>;
1955
+ /** Renders icon inside a padded tokenized backdrop (matches viking-icon-badge). */
1956
+ readonly backdrop: _angular_core.InputSignal<boolean>;
1957
+ readonly backdropTone: _angular_core.InputSignal<"success" | "warning" | "danger" | "info" | "default">;
1958
+ readonly spin: _angular_core.InputSignal<boolean>;
1959
+ protected readonly resolvedName: _angular_core.Signal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
1960
+ protected readonly resolvedSize: _angular_core.Signal<number>;
1961
+ protected readonly resolvedColor: _angular_core.Signal<string | undefined>;
1962
+ protected readonly viewBox: _angular_core.Signal<string>;
1963
+ protected readonly isFilled: _angular_core.Signal<boolean>;
1964
+ protected readonly isDrakkarBrand: _angular_core.Signal<boolean>;
1965
+ protected readonly isIntegrationBrand: _angular_core.Signal<boolean>;
1966
+ protected readonly integrationBrandSvg: _angular_core.Signal<SafeHtml>;
1967
+ protected readonly paths: _angular_core.Signal<SafeHtml>;
1968
+ constructor(sanitizer: DomSanitizer);
1969
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingIcon, never>;
1970
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingIcon, "viking-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "sizePreset": { "alias": "sizePreset"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "backdrop": { "alias": "backdrop"; "required": false; "isSignal": true; }; "backdropTone": { "alias": "backdropTone"; "required": false; "isSignal": true; }; "spin": { "alias": "spin"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1971
+ }
1972
+
1973
+ /**
1974
+ * viking-icon-text — icon aligned beside a title and optional description.
1975
+ * Use for status rows (MFA enrolled, connected accounts, subscription state).
1976
+ */
1977
+ declare class VikingIconText {
1978
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1979
+ readonly title: _angular_core.InputSignal<string>;
1980
+ readonly description: _angular_core.InputSignal<string>;
1981
+ readonly tone: _angular_core.InputSignal<VikingTone>;
1982
+ readonly iconSize: _angular_core.InputSignal<number>;
1983
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingIconText, never>;
1984
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingIconText, "viking-icon-text", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "iconSize": { "alias": "iconSize"; "required": false; "isSignal": true; }; }, {}, never, ["[vikingIconTextIcon]", "[vikingIconTextDesc]"], true, never>;
1985
+ }
1986
+
1987
+ /**
1988
+ * viking-input — thin Angular wrapper around `viking-input-wc`.
1989
+ * ControlValueAccessor-compatible.
1990
+ */
1991
+ declare class VikingInput extends VikingControl<string> {
1992
+ readonly value: _angular_core.ModelSignal<string>;
1993
+ readonly type: _angular_core.InputSignal<string>;
1994
+ readonly placeholder: _angular_core.InputSignal<string>;
1995
+ readonly label: _angular_core.InputSignal<string>;
1996
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1997
+ readonly iconTrailing: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
1998
+ readonly kbd: _angular_core.InputSignal<string | null>;
1999
+ readonly clearable: _angular_core.InputSignal<boolean>;
2000
+ readonly loading: _angular_core.InputSignal<boolean>;
2001
+ readonly disabled: _angular_core.InputSignal<boolean>;
2002
+ readonly autocomplete: _angular_core.InputSignal<string>;
2003
+ readonly cleared: _angular_core.OutputEmitterRef<void>;
2004
+ protected isDisabled: () => boolean;
2005
+ writeValue(value: string): void;
2006
+ protected onWcInput: (event: Event) => void;
2007
+ protected clear: () => void;
2008
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingInput, never>;
2009
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingInput, "viking-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconTrailing": { "alias": "iconTrailing"; "required": false; "isSignal": true; }; "kbd": { "alias": "kbd"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "cleared": "cleared"; }, never, never, true, never>;
2010
+ }
2011
+
2012
+ /**
2013
+ * viking-kanban — drag & drop board.
2014
+ * Native HTML5 drag and drop; emits `moved` and updates the `columns` model.
2015
+ */
2016
+ declare class VikingKanban {
2017
+ readonly columns: _angular_core.ModelSignal<VikingKanbanColumn[]>;
2018
+ readonly moved: _angular_core.OutputEmitterRef<VikingKanbanMove>;
2019
+ protected readonly draggingId: _angular_core.WritableSignal<string | null>;
2020
+ protected readonly dropColumnId: _angular_core.WritableSignal<string | null>;
2021
+ private dragSource;
2022
+ protected onDragStart: (card: VikingKanbanCard, columnId: string) => void;
2023
+ protected onDragOver: (event: DragEvent, columnId: string) => void;
2024
+ protected onDrop: (event: DragEvent, toColumnId: string) => void;
2025
+ protected resetDrag: () => void;
2026
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingKanban, never>;
2027
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingKanban, "viking-kanban", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, { "columns": "columnsChange"; "moved": "moved"; }, never, never, true, never>;
2028
+ }
2029
+
2030
+ /**
2031
+ * viking-kbd — keyboard hint chip.
2032
+ */
2033
+ declare class VikingKbd {
2034
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingKbd, never>;
2035
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingKbd, "viking-kbd", never, {}, {}, never, ["*"], true, never>;
2036
+ }
2037
+
2038
+ /**
2039
+ * viking-label — accessible form label.
2040
+ */
2041
+ declare class VikingLabel {
2042
+ readonly htmlFor: _angular_core.InputSignal<string>;
2043
+ readonly required: _angular_core.InputSignal<boolean>;
2044
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingLabel, never>;
2045
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingLabel, "viking-label", never, { "htmlFor": { "alias": "htmlFor"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2046
+ }
2047
+
2048
+ /**
2049
+ * viking-loading-overlay — blocks interaction with a centered spinner.
2050
+ * Use on cards, panels, or full-page surfaces during async operations.
2051
+ */
2052
+ declare class VikingLoadingOverlay {
2053
+ readonly label: _angular_core.InputSignal<string>;
2054
+ readonly message: _angular_core.InputSignal<string>;
2055
+ readonly spinnerSize: _angular_core.InputSignal<number>;
2056
+ readonly full: _angular_core.InputSignal<boolean>;
2057
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingLoadingOverlay, never>;
2058
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingLoadingOverlay, "viking-loading-overlay", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "spinnerSize": { "alias": "spinnerSize"; "required": false; "isSignal": true; }; "full": { "alias": "full"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2059
+ }
2060
+
2061
+ /** viking-metric-row — responsive grid row for HUD metric cards. */
2062
+ declare class VikingMetricRow {
2063
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingMetricRow, never>;
2064
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingMetricRow, "viking-metric-row", never, {}, {}, never, ["*"], true, never>;
2065
+ }
2066
+ /** viking-metric-card — single KPI tile in a metric row. */
2067
+ declare class VikingMetricCard {
2068
+ readonly label: _angular_core.InputSignal<string>;
2069
+ readonly value: _angular_core.InputSignal<string | number>;
2070
+ readonly variant: _angular_core.InputSignal<"warning" | "default" | "critical">;
2071
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingMetricCard, never>;
2072
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingMetricCard, "viking-metric-card", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2073
+ }
2074
+
2075
+ /**
2076
+ * viking-menubar — horizontal application menu bar.
2077
+ */
2078
+ declare class VikingMenubar {
2079
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingMenubar, never>;
2080
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingMenubar, "viking-menubar", never, {}, {}, never, ["*"], true, never>;
2081
+ }
2082
+ /**
2083
+ * viking-menubar-item — menu item trigger for viking-menubar.
2084
+ */
2085
+ declare class VikingMenubarItem {
2086
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingMenubarItem, never>;
2087
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingMenubarItem, "viking-menubar-item", never, {}, {}, never, ["*"], true, never>;
2088
+ }
2089
+
2090
+ /**
2091
+ * viking-modal — dialog built on the native <dialog> element
2092
+ *. Toggle via the `open` model.
2093
+ */
2094
+ declare class VikingModal implements OnDestroy {
2095
+ private readonly dialogRef;
2096
+ readonly open: _angular_core.ModelSignal<boolean>;
2097
+ readonly heading: _angular_core.InputSignal<string>;
2098
+ readonly dismissible: _angular_core.InputSignal<boolean>;
2099
+ constructor(host: ElementRef<HTMLElement>);
2100
+ ngOnDestroy(): void;
2101
+ protected onBackdropClick: (event: MouseEvent) => void;
2102
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingModal, never>;
2103
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingModal, "viking-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[vikingModalActions]"], true, never>;
2104
+ }
2105
+
2106
+ type VikingSelectWidth = "full" | "half";
2107
+ /**
2108
+ * viking-select — custom listbox select.
2109
+ * ControlValueAccessor-compatible with full keyboard support.
2110
+ */
2111
+ declare class VikingSelect extends VikingControl<unknown> {
2112
+ private readonly host;
2113
+ readonly options: _angular_core.InputSignal<VikingSelectOption<unknown>[]>;
2114
+ readonly value: _angular_core.ModelSignal<unknown>;
2115
+ readonly placeholder: _angular_core.InputSignal<string>;
2116
+ readonly label: _angular_core.InputSignal<string>;
2117
+ readonly disabled: _angular_core.InputSignal<boolean>;
2118
+ readonly width: _angular_core.InputSignal<VikingSelectWidth>;
2119
+ constructor(host: ElementRef<HTMLElement>);
2120
+ protected readonly open: _angular_core.WritableSignal<boolean>;
2121
+ protected readonly activeIndex: _angular_core.WritableSignal<number>;
2122
+ protected readonly selectedLabel: _angular_core.Signal<string>;
2123
+ writeValue(value: unknown): void;
2124
+ protected toggle: () => void;
2125
+ protected pick: (option: VikingSelectOption) => void;
2126
+ protected onKeydown: (event: KeyboardEvent) => void;
2127
+ protected onDocumentClick: (event: Event) => void;
2128
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSelect, never>;
2129
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSelect, "viking-select", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2130
+ }
2131
+
2132
+ /**
2133
+ * viking-native-select — styled native &lt;select&gt;.
2134
+ */
2135
+ declare class VikingNativeSelect extends VikingControl<string | number | null> {
2136
+ readonly label: _angular_core.InputSignal<string>;
2137
+ readonly placeholder: _angular_core.InputSignal<string>;
2138
+ readonly options: _angular_core.InputSignal<VikingSelectOption<unknown>[]>;
2139
+ readonly disabled: _angular_core.InputSignal<boolean>;
2140
+ readonly width: _angular_core.InputSignal<VikingSelectWidth>;
2141
+ readonly value: _angular_core.ModelSignal<string | number | null>;
2142
+ protected readonly selectId: string;
2143
+ writeValue(value: string | number | null): void;
2144
+ protected onSelectChange: (event: Event) => void;
2145
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingNativeSelect, never>;
2146
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingNativeSelect, "viking-native-select", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2147
+ }
2148
+
2149
+ interface VikingNavItem {
2150
+ label: string;
2151
+ href?: string;
2152
+ active?: boolean;
2153
+ disabled?: boolean;
2154
+ }
2155
+ /**
2156
+ * viking-navigation-menu — primary nav links with active indicator.
2157
+ */
2158
+ declare class VikingNavigationMenu {
2159
+ readonly label: _angular_core.InputSignal<string>;
2160
+ readonly items: _angular_core.InputSignal<VikingNavItem[]>;
2161
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingNavigationMenu, never>;
2162
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingNavigationMenu, "viking-navigation-menu", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2163
+ }
2164
+
2165
+ /**
2166
+ * viking-navbar — horizontal navigation container.
2167
+ * Compose with viking-navbar-item and any other inline content.
2168
+ */
2169
+ declare class VikingNavbar {
2170
+ readonly label: _angular_core.InputSignal<string>;
2171
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingNavbar, never>;
2172
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingNavbar, "viking-navbar", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2173
+ }
2174
+ /** Navigation link/button inside viking-navbar. */
2175
+ declare class VikingNavbarItem {
2176
+ readonly href: _angular_core.InputSignal<string | null>;
2177
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
2178
+ readonly current: _angular_core.InputSignal<boolean>;
2179
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingNavbarItem, never>;
2180
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingNavbarItem, "viking-navbar-item", never, { "href": { "alias": "href"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "current": { "alias": "current"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2181
+ }
2182
+
2183
+ /**
2184
+ * viking-otp-input — one-time-passcode input.
2185
+ * Auto-advances between cells and supports paste. ControlValueAccessor-compatible.
2186
+ */
2187
+ declare class VikingOtpInput extends VikingControl<string> {
2188
+ private readonly host;
2189
+ readonly length: _angular_core.InputSignal<number>;
2190
+ readonly value: _angular_core.ModelSignal<string>;
2191
+ readonly label: _angular_core.InputSignal<string>;
2192
+ readonly disabled: _angular_core.InputSignal<boolean>;
2193
+ readonly centered: _angular_core.InputSignal<boolean>;
2194
+ readonly completed: _angular_core.OutputEmitterRef<string>;
2195
+ constructor(host: ElementRef<HTMLElement>);
2196
+ protected readonly indexes: _angular_core.Signal<number[]>;
2197
+ writeValue(value: string): void;
2198
+ private commit;
2199
+ private focusCell;
2200
+ protected onCellInput: (event: Event, index: number) => void;
2201
+ protected onKeydown: (event: KeyboardEvent, index: number) => void;
2202
+ protected onPaste: (event: ClipboardEvent) => void;
2203
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingOtpInput, never>;
2204
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingOtpInput, "viking-otp-input", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "centered": { "alias": "centered"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "completed": "completed"; }, never, never, true, never>;
2205
+ }
2206
+
2207
+ /**
2208
+ * viking-verification-code-field — labeled, centered OTP entry for MFA and phone verification flows.
2209
+ */
2210
+ declare class VikingVerificationCodeField extends VikingControl<string> {
2211
+ readonly length: _angular_core.InputSignal<number>;
2212
+ readonly label: _angular_core.InputSignal<string>;
2213
+ readonly description: _angular_core.InputSignal<string>;
2214
+ readonly error: _angular_core.InputSignal<string>;
2215
+ readonly required: _angular_core.InputSignal<boolean>;
2216
+ readonly disabled: _angular_core.InputSignal<boolean>;
2217
+ readonly completed: _angular_core.OutputEmitterRef<string>;
2218
+ protected readonly value: _angular_core.WritableSignal<string>;
2219
+ protected readonly labelId: string;
2220
+ protected readonly descriptionId: string;
2221
+ protected readonly errorId: string;
2222
+ writeValue(value: string): void;
2223
+ protected onValueChange: (next: string) => void;
2224
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingVerificationCodeField, never>;
2225
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingVerificationCodeField, "viking-verification-code-field", never, { "length": { "alias": "length"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "completed": "completed"; }, never, never, true, never>;
2226
+ }
2227
+
2228
+ /**
2229
+ * viking-page-back-link — consistent dashboard back navigation with fixed spacing
2230
+ * below the control so page titles never sit flush against the link.
2231
+ */
2232
+ declare class VikingPageBackLink {
2233
+ readonly route: _angular_core.InputSignal<string | readonly string[]>;
2234
+ readonly queryParams: _angular_core.InputSignal<Params | null>;
2235
+ readonly label: _angular_core.InputSignal<string>;
2236
+ readonly navLabel: _angular_core.InputSignal<string>;
2237
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingPageBackLink, never>;
2238
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingPageBackLink, "viking-page-back-link", never, { "route": { "alias": "route"; "required": false; "isSignal": true; }; "queryParams": { "alias": "queryParams"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "navLabel": { "alias": "navLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2239
+ }
2240
+
2241
+ /**
2242
+ * viking-page-header — unified HUD page title block (tag, title, subtitle) with
2243
+ * optional back navigation and action slots.
2244
+ */
2245
+ declare class VikingPageHeader {
2246
+ readonly tag: _angular_core.InputSignal<string>;
2247
+ readonly title: _angular_core.InputSignal<string>;
2248
+ readonly subtitle: _angular_core.InputSignal<string>;
2249
+ readonly layout: _angular_core.InputSignal<"hud" | "sidebar">;
2250
+ readonly backTo: _angular_core.InputSignal<string | readonly string[] | null>;
2251
+ readonly backQueryParams: _angular_core.InputSignal<Params | null>;
2252
+ readonly backLabel: _angular_core.InputSignal<string>;
2253
+ readonly backNavLabel: _angular_core.InputSignal<string>;
2254
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingPageHeader, never>;
2255
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingPageHeader, "viking-page-header", never, { "tag": { "alias": "tag"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "backTo": { "alias": "backTo"; "required": false; "isSignal": true; }; "backQueryParams": { "alias": "backQueryParams"; "required": false; "isSignal": true; }; "backLabel": { "alias": "backLabel"; "required": false; "isSignal": true; }; "backNavLabel": { "alias": "backNavLabel"; "required": false; "isSignal": true; }; }, {}, never, ["[vikingPageHeaderBack]", "[vikingPageHeaderExtra]", "[vikingPageHeaderActions]"], true, never>;
2256
+ }
2257
+
2258
+ /**
2259
+ * viking-pagination — page navigation.
2260
+ */
2261
+ declare class VikingPagination {
2262
+ readonly page: _angular_core.ModelSignal<number>;
2263
+ readonly totalPages: _angular_core.InputSignal<number>;
2264
+ /** Windowed page list with null entries marking ellipses. */
2265
+ protected readonly pageItems: _angular_core.Signal<(number | null)[]>;
2266
+ protected goTo: (target: number) => void;
2267
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingPagination, never>;
2268
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingPagination, "viking-pagination", never, { "page": { "alias": "page"; "required": false; "isSignal": true; }; "totalPages": { "alias": "totalPages"; "required": true; "isSignal": true; }; }, { "page": "pageChange"; }, never, never, true, never>;
2269
+ }
2270
+
2271
+ /**
2272
+ * viking-pillbox — multi-value tag input.
2273
+ * Type and press Enter (or comma) to add pills. ControlValueAccessor-compatible.
2274
+ */
2275
+ declare class VikingPillbox extends VikingControl<string[]> {
2276
+ readonly values: _angular_core.ModelSignal<string[]>;
2277
+ readonly placeholder: _angular_core.InputSignal<string>;
2278
+ readonly label: _angular_core.InputSignal<string>;
2279
+ readonly disabled: _angular_core.InputSignal<boolean>;
2280
+ protected readonly draft: _angular_core.WritableSignal<string>;
2281
+ writeValue(value: string[]): void;
2282
+ protected onKeydown: (event: KeyboardEvent) => void;
2283
+ protected remove: (pill: string) => void;
2284
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingPillbox, never>;
2285
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingPillbox, "viking-pillbox", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "values": "valuesChange"; }, never, never, true, never>;
2286
+ }
2287
+
2288
+ /**
2289
+ * viking-popover — anchored floating panel.
2290
+ * Project the trigger with the `vikingTrigger` attribute; everything else becomes
2291
+ * the panel content. Closes on Escape or outside interaction.
2292
+ */
2293
+ declare class VikingPopover {
2294
+ private readonly host;
2295
+ readonly open: _angular_core.ModelSignal<boolean>;
2296
+ readonly align: _angular_core.InputSignal<"end" | "start">;
2297
+ constructor(host: ElementRef<HTMLElement>);
2298
+ /** Toggles when the (focusable, projected) trigger is activated. */
2299
+ protected onHostClick: (event: Event) => void;
2300
+ protected onDocumentClick: (event: Event) => void;
2301
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingPopover, never>;
2302
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingPopover, "viking-popover", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["[vikingTrigger]", "*"], true, never>;
2303
+ }
2304
+
2305
+ /**
2306
+ * viking-profile — user identity block.
2307
+ * Project actions (e.g. viking-button) as content.
2308
+ */
2309
+ declare class VikingProfile {
2310
+ readonly name: _angular_core.InputSignal<string>;
2311
+ readonly detail: _angular_core.InputSignal<string>;
2312
+ readonly avatarSrc: _angular_core.InputSignal<string | null>;
2313
+ readonly status: _angular_core.InputSignal<VikingTone | null>;
2314
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingProfile, never>;
2315
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingProfile, "viking-profile", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "detail": { "alias": "detail"; "required": false; "isSignal": true; }; "avatarSrc": { "alias": "avatarSrc"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2316
+ }
2317
+
2318
+ /**
2319
+ * viking-progress — determinate/indeterminate progress bar
2320
+ *.
2321
+ */
2322
+ declare class VikingProgress {
2323
+ readonly value: _angular_core.InputSignal<number>;
2324
+ readonly label: _angular_core.InputSignal<string>;
2325
+ readonly tone: _angular_core.InputSignal<VikingTone>;
2326
+ readonly indeterminate: _angular_core.InputSignal<boolean>;
2327
+ protected readonly clamped: _angular_core.Signal<number>;
2328
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingProgress, never>;
2329
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingProgress, "viking-progress", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2330
+ }
2331
+
2332
+ /**
2333
+ * viking-radio-group — radio group.
2334
+ * ControlValueAccessor-compatible; options-driven for symmetry with viking-select.
2335
+ */
2336
+ declare class VikingRadioGroup extends VikingControl<unknown> {
2337
+ readonly options: _angular_core.InputSignal<VikingSelectOption<unknown>[]>;
2338
+ readonly value: _angular_core.ModelSignal<unknown>;
2339
+ readonly label: _angular_core.InputSignal<string>;
2340
+ readonly disabled: _angular_core.InputSignal<boolean>;
2341
+ readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
2342
+ protected readonly groupName: string;
2343
+ writeValue(value: unknown): void;
2344
+ protected select: (option: VikingSelectOption) => void;
2345
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingRadioGroup, never>;
2346
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingRadioGroup, "viking-radio-group", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2347
+ }
2348
+
2349
+ /** viking-ring-gauge — circular progress ring for health/score displays. */
2350
+ declare class VikingRingGauge {
2351
+ readonly value: _angular_core.InputSignal<number>;
2352
+ readonly max: _angular_core.InputSignal<number>;
2353
+ readonly circumference: _angular_core.InputSignal<number>;
2354
+ readonly status: _angular_core.InputSignal<string>;
2355
+ protected readonly strokeDasharray: _angular_core.Signal<string>;
2356
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingRingGauge, never>;
2357
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingRingGauge, "viking-ring-gauge", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "circumference": { "alias": "circumference"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2358
+ }
2359
+
2360
+ /**
2361
+ * viking-search-palette — command-palette style search overlay (Product Hunt / Algolia inspired).
2362
+ * Project custom result lists into the body slot; ⌘K / Ctrl+K wired by host app static widget.
2363
+ */
2364
+ declare class VikingSearchPalette {
2365
+ readonly open: _angular_core.ModelSignal<boolean>;
2366
+ readonly query: _angular_core.ModelSignal<string>;
2367
+ readonly placeholder: _angular_core.InputSignal<string>;
2368
+ readonly paletteKeydown: _angular_core.OutputEmitterRef<KeyboardEvent>;
2369
+ private readonly queryInput;
2370
+ constructor();
2371
+ protected onQueryInput(event: Event): void;
2372
+ protected close(): void;
2373
+ /** Platform modifier label for footer shortcut hint. */
2374
+ protected modKey: () => string;
2375
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSearchPalette, never>;
2376
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSearchPalette, "viking-search-palette", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "query": { "alias": "query"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "query": "queryChange"; "paletteKeydown": "paletteKeydown"; }, never, ["*", "[vikingSearchPaletteFooter]"], true, never>;
2377
+ }
2378
+
2379
+ /**
2380
+ * viking-separator — horizontal/vertical rule with optional label
2381
+ *.
2382
+ */
2383
+ declare class VikingSeparator {
2384
+ readonly orientation: _angular_core.InputSignal<"horizontal" | "vertical">;
2385
+ readonly text: _angular_core.InputSignal<string>;
2386
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSeparator, never>;
2387
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSeparator, "viking-separator", never, { "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2388
+ }
2389
+
2390
+ /**
2391
+ * viking-scroll-area — constrained scroll region with clinical scrollbar styling.
2392
+ */
2393
+ declare class VikingScrollArea {
2394
+ readonly maxHeight: _angular_core.InputSignal<string>;
2395
+ readonly maxWidth: _angular_core.InputSignal<string>;
2396
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingScrollArea, never>;
2397
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingScrollArea, "viking-scroll-area", never, { "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "maxWidth": { "alias": "maxWidth"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2398
+ }
2399
+
2400
+ type VikingSheetSide = "left" | "right";
2401
+ /**
2402
+ * viking-sheet — slide-over panel.
2403
+ */
2404
+ declare class VikingSheet {
2405
+ readonly open: _angular_core.ModelSignal<boolean>;
2406
+ readonly heading: _angular_core.InputSignal<string>;
2407
+ readonly dismissible: _angular_core.InputSignal<boolean>;
2408
+ readonly side: _angular_core.InputSignal<VikingSheetSide>;
2409
+ private readonly dialogRef;
2410
+ constructor();
2411
+ protected onBackdropClick: (event: MouseEvent) => void;
2412
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSheet, never>;
2413
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSheet, "viking-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, { "open": "openChange"; }, never, ["*", "[vikingSheetActions]"], true, never>;
2414
+ }
2415
+
2416
+ /**
2417
+ * viking-sidebar-nav — composable sidebar navigation container.
2418
+ */
2419
+ declare class VikingSidebarNav {
2420
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSidebarNav, never>;
2421
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSidebarNav, "viking-sidebar-nav", never, {}, {}, never, ["*"], true, never>;
2422
+ }
2423
+ /**
2424
+ * viking-sidebar-nav-link — router-aware sidebar nav item.
2425
+ */
2426
+ declare class VikingSidebarNavLink {
2427
+ readonly routerLink: _angular_core.InputSignal<string | string[]>;
2428
+ readonly routerLinkActiveOptions: _angular_core.InputSignal<{
2429
+ exact: boolean;
2430
+ }>;
2431
+ readonly title: _angular_core.InputSignal<string>;
2432
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSidebarNavLink, never>;
2433
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSidebarNavLink, "viking-sidebar-nav-link", never, { "routerLink": { "alias": "routerLink"; "required": true; "isSignal": true; }; "routerLinkActiveOptions": { "alias": "routerLinkActiveOptions"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2434
+ }
2435
+ /**
2436
+ * viking-sidebar-nav-tree — expandable tree section within sidebar nav.
2437
+ */
2438
+ declare class VikingSidebarNavTree {
2439
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSidebarNavTree, never>;
2440
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSidebarNavTree, "viking-sidebar-nav-tree", never, {}, {}, never, ["*"], true, never>;
2441
+ }
2442
+ /**
2443
+ * viking-sidebar-nav-tree-header — collapsible tree section header.
2444
+ */
2445
+ declare class VikingSidebarNavTreeHeader {
2446
+ readonly label: _angular_core.InputSignal<string>;
2447
+ readonly expanded: _angular_core.InputSignal<boolean>;
2448
+ readonly toggled: _angular_core.OutputEmitterRef<void>;
2449
+ protected onToggle: () => void;
2450
+ protected onSpace: (event: Event) => void;
2451
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSidebarNavTreeHeader, never>;
2452
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSidebarNavTreeHeader, "viking-sidebar-nav-tree-header", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "toggled": "toggled"; }, never, ["[vikingSidebarTreeArrow]"], true, never>;
2453
+ }
2454
+ /**
2455
+ * viking-sidebar-nav-tree-children — tree item list container.
2456
+ */
2457
+ declare class VikingSidebarNavTreeChildren {
2458
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSidebarNavTreeChildren, never>;
2459
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSidebarNavTreeChildren, "viking-sidebar-nav-tree-children", never, {}, {}, never, ["*"], true, never>;
2460
+ }
2461
+ type VikingSidebarNavTreeItemVariant = "default" | "empty" | "accent";
2462
+ /**
2463
+ * viking-sidebar-nav-tree-item — selectable tree leaf or action row.
2464
+ */
2465
+ declare class VikingSidebarNavTreeItem {
2466
+ readonly active: _angular_core.InputSignal<boolean>;
2467
+ readonly variant: _angular_core.InputSignal<VikingSidebarNavTreeItemVariant>;
2468
+ readonly activated: _angular_core.OutputEmitterRef<void>;
2469
+ protected onActivate: (event: Event) => void;
2470
+ protected onSpace: (event: Event) => void;
2471
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSidebarNavTreeItem, never>;
2472
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSidebarNavTreeItem, "viking-sidebar-nav-tree-item", never, { "active": { "alias": "active"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; }, { "activated": "activated"; }, never, ["*"], true, never>;
2473
+ }
2474
+
2475
+ /**
2476
+ * viking-skeleton — loading placeholder.
2477
+ */
2478
+ declare class VikingSkeleton {
2479
+ readonly shape: _angular_core.InputSignal<"line" | "circle" | "rect">;
2480
+ readonly width: _angular_core.InputSignal<string>;
2481
+ readonly height: _angular_core.InputSignal<string>;
2482
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSkeleton, never>;
2483
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSkeleton, "viking-skeleton", never, { "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2484
+ }
2485
+
2486
+ /**
2487
+ * viking-spinner — clinical loading indicator.
2488
+ */
2489
+ declare class VikingSpinner {
2490
+ readonly size: _angular_core.InputSignal<number>;
2491
+ readonly label: _angular_core.InputSignal<string>;
2492
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSpinner, never>;
2493
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSpinner, "viking-spinner", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2494
+ }
2495
+
2496
+ /**
2497
+ * viking-status-card — wrapper around the web component.
2498
+ */
2499
+ declare class VikingStatusCard {
2500
+ readonly title: _angular_core.InputSignal<string>;
2501
+ readonly subtitle: _angular_core.InputSignal<string>;
2502
+ readonly status: _angular_core.InputSignal<string>;
2503
+ readonly statusTone: _angular_core.InputSignal<VikingTone>;
2504
+ readonly statusDot: _angular_core.InputSignal<boolean>;
2505
+ readonly href: _angular_core.InputSignal<string>;
2506
+ readonly target: _angular_core.InputSignal<string>;
2507
+ readonly compact: _angular_core.InputSignal<boolean>;
2508
+ readonly loading: _angular_core.InputSignal<boolean>;
2509
+ readonly interactive: _angular_core.InputSignal<boolean>;
2510
+ readonly ariaLabel: _angular_core.InputSignal<string>;
2511
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingStatusCard, never>;
2512
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingStatusCard, "viking-status-card", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "statusTone": { "alias": "statusTone"; "required": false; "isSignal": true; }; "statusDot": { "alias": "statusDot"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2513
+ }
2514
+
2515
+ /**
2516
+ * viking-status-metric-row — icon + title/subtitle + value row for status cards.
2517
+ */
2518
+ declare class VikingStatusMetricRow {
2519
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x">;
2520
+ readonly title: _angular_core.InputSignal<string>;
2521
+ readonly subtitle: _angular_core.InputSignal<string>;
2522
+ readonly value: _angular_core.InputSignal<string | number>;
2523
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingStatusMetricRow, never>;
2524
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingStatusMetricRow, "viking-status-metric-row", never, { "icon": { "alias": "icon"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2525
+ }
2526
+
2527
+ /**
2528
+ * viking-status-pill — status badge for status cards and operational states.
2529
+ */
2530
+ declare class VikingStatusPill {
2531
+ readonly tone: _angular_core.InputSignal<VikingTone>;
2532
+ readonly icon: _angular_core.InputSignal<string>;
2533
+ readonly dot: _angular_core.InputSignal<boolean>;
2534
+ readonly compact: _angular_core.InputSignal<boolean>;
2535
+ readonly removable: _angular_core.InputSignal<boolean>;
2536
+ readonly href: _angular_core.InputSignal<string>;
2537
+ readonly target: _angular_core.InputSignal<string>;
2538
+ readonly ariaLabel: _angular_core.InputSignal<string>;
2539
+ readonly removed: _angular_core.OutputEmitterRef<void>;
2540
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingStatusPill, never>;
2541
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingStatusPill, "viking-status-pill", never, { "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "dot": { "alias": "dot"; "required": false; "isSignal": true; }; "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "removable": { "alias": "removable"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "removed": "removed"; }, never, ["*"], true, never>;
2542
+ }
2543
+
2544
+ /**
2545
+ * viking-slider — range slider.
2546
+ * ControlValueAccessor-compatible.
2547
+ */
2548
+ declare class VikingSlider extends VikingControl<number> {
2549
+ readonly value: _angular_core.ModelSignal<number>;
2550
+ readonly min: _angular_core.InputSignal<number>;
2551
+ readonly max: _angular_core.InputSignal<number>;
2552
+ readonly step: _angular_core.InputSignal<number>;
2553
+ readonly label: _angular_core.InputSignal<string>;
2554
+ readonly showValue: _angular_core.InputSignal<boolean>;
2555
+ readonly disabled: _angular_core.InputSignal<boolean>;
2556
+ protected readonly fillPercent: _angular_core.Signal<number>;
2557
+ writeValue(value: number): void;
2558
+ protected onInput: (event: Event) => void;
2559
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSlider, never>;
2560
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSlider, "viking-slider", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2561
+ }
2562
+
2563
+ /**
2564
+ * viking-switch — toggle switch.
2565
+ * ControlValueAccessor-compatible.
2566
+ */
2567
+ declare class VikingSwitch extends VikingControl<boolean> {
2568
+ readonly checked: _angular_core.ModelSignal<boolean>;
2569
+ readonly disabled: _angular_core.InputSignal<boolean>;
2570
+ readonly description: _angular_core.InputSignal<string>;
2571
+ writeValue(value: boolean): void;
2572
+ protected toggle: (event: Event) => void;
2573
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSwitch, never>;
2574
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSwitch, "viking-switch", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; }, never, ["*"], true, never>;
2575
+ }
2576
+
2577
+ /**
2578
+ * viking-table — clinical data table wrapper.
2579
+ */
2580
+ declare class VikingTable {
2581
+ readonly compact: _angular_core.InputSignal<boolean>;
2582
+ readonly striped: _angular_core.InputSignal<boolean>;
2583
+ readonly loading: _angular_core.InputSignal<boolean>;
2584
+ readonly emptyMessage: _angular_core.InputSignal<string>;
2585
+ readonly emptyDescription: _angular_core.InputSignal<string>;
2586
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTable, never>;
2587
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTable, "viking-table", never, { "compact": { "alias": "compact"; "required": false; "isSignal": true; }; "striped": { "alias": "striped"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "emptyDescription": { "alias": "emptyDescription"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2588
+ }
2589
+
2590
+ declare const VIKING_TABS: InjectionToken<VikingTabs>;
2591
+ /**
2592
+ * viking-tabs — tablist container with roving keyboard navigation.
2593
+ */
2594
+ declare class VikingTabs {
2595
+ private readonly tabComponents;
2596
+ readonly value: _angular_core.ModelSignal<string>;
2597
+ protected onTabKeydown: (event: KeyboardEvent) => void;
2598
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTabs, never>;
2599
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTabs, "viking-tabs", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, ["tabComponents"], ["viking-tab", "viking-tab-panel"], true, never>;
2600
+ }
2601
+
2602
+ /**
2603
+ * viking-tab — tab trigger button inside viking-tabs.
2604
+ */
2605
+ declare class VikingTab {
2606
+ private readonly tabs;
2607
+ constructor(tabs: VikingTabs | null);
2608
+ readonly value: _angular_core.InputSignal<string>;
2609
+ readonly disabled: _angular_core.InputSignal<boolean>;
2610
+ protected readonly tabId: _angular_core.Signal<string>;
2611
+ protected readonly panelId: _angular_core.Signal<string>;
2612
+ protected active: () => boolean;
2613
+ protected select: () => void;
2614
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTab, [{ optional: true; }]>;
2615
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTab, "viking-tab", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2616
+ }
2617
+
2618
+ /**
2619
+ * viking-tab-panel — tabpanel region inside viking-tabs.
2620
+ */
2621
+ declare class VikingTabPanel {
2622
+ private readonly tabs;
2623
+ constructor(tabs: VikingTabs | null);
2624
+ readonly value: _angular_core.InputSignal<string>;
2625
+ protected readonly panelId: _angular_core.Signal<string>;
2626
+ protected readonly tabId: _angular_core.Signal<string>;
2627
+ protected hidden: () => boolean;
2628
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTabPanel, [{ optional: true; }]>;
2629
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTabPanel, "viking-tab-panel", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2630
+ }
2631
+
2632
+ /**
2633
+ * viking-textarea — auto-growing textarea.
2634
+ * ControlValueAccessor-compatible.
2635
+ */
2636
+ declare class VikingTextarea extends VikingControl<string> {
2637
+ readonly value: _angular_core.ModelSignal<string>;
2638
+ readonly placeholder: _angular_core.InputSignal<string>;
2639
+ readonly label: _angular_core.InputSignal<string>;
2640
+ readonly rows: _angular_core.InputSignal<number>;
2641
+ readonly autoGrow: _angular_core.InputSignal<boolean>;
2642
+ readonly disabled: _angular_core.InputSignal<boolean>;
2643
+ protected isDisabled: () => boolean;
2644
+ writeValue(value: string): void;
2645
+ protected onInput: (event: Event) => void;
2646
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTextarea, never>;
2647
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTextarea, "viking-textarea", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "autoGrow": { "alias": "autoGrow"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2648
+ }
2649
+
2650
+ declare const VIKING_TOGGLE_GROUP: InjectionToken<VikingToggleGroup>;
2651
+ /**
2652
+ * viking-toggle-group — exclusive or multi toggle cluster.
2653
+ */
2654
+ declare class VikingToggleGroup {
2655
+ readonly value: _angular_core.ModelSignal<string>;
2656
+ readonly exclusive: _angular_core.ModelSignal<boolean>;
2657
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingToggleGroup, never>;
2658
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingToggleGroup, "viking-toggle-group", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "exclusive": { "alias": "exclusive"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "exclusive": "exclusiveChange"; }, never, ["*"], true, never>;
2659
+ }
2660
+
2661
+ /**
2662
+ * viking-toggle — pressed-state button toggle.
2663
+ */
2664
+ declare class VikingToggle {
2665
+ private readonly group;
2666
+ constructor(group: VikingToggleGroup | null);
2667
+ readonly pressed: _angular_core.ModelSignal<boolean>;
2668
+ readonly value: _angular_core.InputSignal<string>;
2669
+ readonly disabled: _angular_core.InputSignal<boolean>;
2670
+ readonly label: _angular_core.InputSignal<string>;
2671
+ readonly toggled: _angular_core.OutputEmitterRef<boolean>;
2672
+ protected isPressed: () => boolean;
2673
+ protected toggle: () => void;
2674
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingToggle, [{ optional: true; }]>;
2675
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingToggle, "viking-toggle", never, { "pressed": { "alias": "pressed"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "pressed": "pressedChange"; "toggled": "toggled"; }, never, ["*"], true, never>;
2676
+ }
2677
+
2678
+ /**
2679
+ * viking-time-picker — dropdown time selection.
2680
+ * Value is a 24h HH:MM string. ControlValueAccessor-compatible.
2681
+ */
2682
+ declare class VikingTimePicker extends VikingControl<string | null> {
2683
+ private readonly host;
2684
+ readonly value: _angular_core.ModelSignal<string | null>;
2685
+ readonly placeholder: _angular_core.InputSignal<string>;
2686
+ readonly label: _angular_core.InputSignal<string>;
2687
+ readonly disabled: _angular_core.InputSignal<boolean>;
2688
+ /** Minute granularity for generated slots. */
2689
+ readonly stepMinutes: _angular_core.InputSignal<number>;
2690
+ constructor(host: ElementRef<HTMLElement>);
2691
+ protected readonly open: _angular_core.WritableSignal<boolean>;
2692
+ protected readonly slots: _angular_core.Signal<string[]>;
2693
+ writeValue(value: string | null): void;
2694
+ protected pick: (slot: string) => void;
2695
+ protected onDocumentClick: (event: Event) => void;
2696
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTimePicker, never>;
2697
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTimePicker, "viking-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "stepMinutes": { "alias": "stepMinutes"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
2698
+ }
2699
+
2700
+ /**
2701
+ * viking-timeline — vertical event feed.
2702
+ * Compose with viking-timeline-item.
2703
+ */
2704
+ declare class VikingTimeline {
2705
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTimeline, never>;
2706
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTimeline, "viking-timeline", never, {}, {}, never, ["*"], true, never>;
2707
+ }
2708
+ /** A single event on viking-timeline. */
2709
+ declare class VikingTimelineItem {
2710
+ readonly heading: _angular_core.InputSignal<string>;
2711
+ readonly timestamp: _angular_core.InputSignal<string>;
2712
+ readonly icon: _angular_core.InputSignal<"deml" | "deml-compact" | "deml-lockup" | "drakkar" | "drakkar-compact" | "drakkar-lockup" | "kubernetes" | "tensorflow" | "pytorch" | "apache-spark" | "databricks" | "aws-redshift" | "info" | "hub" | "model" | "google" | "apple" | "alert-circle" | "alert-triangle" | "arrow-left" | "arrow-right" | "arrow-up-right" | "bar-chart" | "bell" | "bold" | "bolt" | "brain" | "bug" | "building" | "calendar" | "check" | "check-circle" | "chevron-down" | "chevron-left" | "chevron-right" | "chevron-up" | "chip" | "clock" | "cloud" | "cookie" | "copy" | "dots-horizontal" | "dots-vertical" | "download" | "external" | "eye" | "eye-off" | "file" | "filter" | "fingerprint" | "folder" | "globe" | "grip-vertical" | "heart" | "home" | "image" | "insights" | "italic" | "key" | "link" | "list" | "list-ordered" | "loader" | "lock" | "log-in" | "log-out" | "mail" | "menu" | "minus" | "moon" | "network" | "paperclip" | "pencil" | "phone" | "play" | "plus" | "policy" | "refresh" | "rocket" | "search" | "search-off" | "send" | "server" | "settings" | "shield" | "ship" | "sparkle" | "speed" | "star" | "sun" | "terminal" | "trash" | "trending-up" | "underline" | "upload" | "user" | "user-shield" | "x" | null>;
2713
+ readonly tone: _angular_core.InputSignal<VikingTone>;
2714
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTimelineItem, never>;
2715
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingTimelineItem, "viking-timeline-item", never, { "heading": { "alias": "heading"; "required": true; "isSignal": true; }; "timestamp": { "alias": "timestamp"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2716
+ }
2717
+
2718
+ /**
2719
+ * VikingToastService — imperative toast API.
2720
+ * Render a single <viking-toaster> outlet near the app root.
2721
+ */
2722
+ declare class VikingToastService {
2723
+ private nextId;
2724
+ readonly toasts: _angular_core.WritableSignal<VikingToastInstance[]>;
2725
+ readonly show: (options: VikingToastOptions) => number;
2726
+ readonly dismiss: (id: number) => void;
2727
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingToastService, never>;
2728
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<VikingToastService>;
2729
+ }
2730
+ /**
2731
+ * viking-toaster — fixed-position outlet that renders active toasts.
2732
+ */
2733
+ declare class VikingToaster {
2734
+ protected readonly service: VikingToastService;
2735
+ readonly position: _angular_core.InputSignal<"bottom-end" | "top-end">;
2736
+ constructor(service: VikingToastService);
2737
+ protected toneIcon: (tone: string) => VikingIconName$1;
2738
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingToaster, never>;
2739
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingToaster, "viking-toaster", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2740
+ }
2741
+
2742
+ type VikingUptimeStatus = "operational" | "partial_outage" | "major_outage" | "no_data";
2743
+ /** viking-uptime-bar — timeline bar for uptime history visualizations. */
2744
+ declare class VikingUptimeBar {
2745
+ readonly status: _angular_core.InputSignal<VikingUptimeStatus>;
2746
+ readonly title: _angular_core.InputSignal<string>;
2747
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingUptimeBar, never>;
2748
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingUptimeBar, "viking-uptime-bar", never, { "status": { "alias": "status"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2749
+ }
2750
+
2751
+ /**
2752
+ * viking-whitepaper-cta — Polars-style animated research CTA with bar grid + sparkline.
2753
+ */
2754
+ declare class VikingWhitepaperCta {
2755
+ readonly tag: _angular_core.InputSignal<string>;
2756
+ readonly title: _angular_core.InputSignal<string>;
2757
+ readonly description: _angular_core.InputSignal<string>;
2758
+ readonly buttonLabel: _angular_core.InputSignal<string>;
2759
+ readonly href: _angular_core.InputSignal<string>;
2760
+ readonly external: _angular_core.InputSignal<boolean>;
2761
+ protected readonly headingId = "viking-whitepaper-cta-title";
2762
+ protected readonly barHeights: number[];
2763
+ protected readonly sparklineSeries: VikingChartSeries[];
2764
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingWhitepaperCta, never>;
2765
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingWhitepaperCta, "viking-whitepaper-cta", never, { "tag": { "alias": "tag"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "buttonLabel": { "alias": "buttonLabel"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "external": { "alias": "external"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2766
+ }
2767
+
2768
+ interface VikingWizardStep {
2769
+ id: string;
2770
+ label: string;
2771
+ }
2772
+ /**
2773
+ * viking-wizard — multi-step modal shell with progress and action slots.
2774
+ */
2775
+ declare class VikingWizard {
2776
+ readonly steps: _angular_core.InputSignal<VikingWizardStep[]>;
2777
+ readonly step: _angular_core.InputSignal<string>;
2778
+ protected readonly activeStep: _angular_core.Signal<VikingWizardStep>;
2779
+ protected readonly progressPercent: _angular_core.Signal<number>;
2780
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingWizard, never>;
2781
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingWizard, "viking-wizard", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; }, {}, never, ["*", "[vikingWizardActions]"], true, never>;
2782
+ }
2783
+
2784
+ /**
2785
+ * vikingTooltip — attribute directive tooltip.
2786
+ * Shows on hover and keyboard focus; positions itself relative to the host.
2787
+ */
2788
+ declare class VikingTooltip implements OnDestroy {
2789
+ private readonly host;
2790
+ private readonly document;
2791
+ constructor(host: ElementRef<HTMLElement>, document: Document);
2792
+ readonly vikingTooltip: _angular_core.InputSignal<string>;
2793
+ readonly tooltipPosition: _angular_core.InputSignal<"left" | "right" | "top" | "bottom">;
2794
+ readonly tooltipKbd: _angular_core.InputSignal<string>;
2795
+ protected readonly tooltipId: string;
2796
+ private element;
2797
+ protected visible: () => boolean;
2798
+ protected show: () => void;
2799
+ private position;
2800
+ protected hide: () => void;
2801
+ ngOnDestroy(): void;
2802
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingTooltip, never>;
2803
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<VikingTooltip, "[vikingTooltip]", never, { "vikingTooltip": { "alias": "vikingTooltip"; "required": true; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "tooltipKbd": { "alias": "tooltipKbd"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2804
+ }
2805
+
2806
+ /**
2807
+ * viking-heading — consistent heading sizes.
2808
+ */
2809
+ declare class VikingHeading {
2810
+ readonly size: _angular_core.InputSignal<"sm" | "lg" | "base" | "xl">;
2811
+ readonly level: _angular_core.InputSignal<2 | 1 | 4 | 3>;
2812
+ protected readonly ariaLevel: _angular_core.Signal<2 | 1 | 4 | 3>;
2813
+ protected readonly hostClass: _angular_core.Signal<string>;
2814
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingHeading, never>;
2815
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingHeading, "viking-heading", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "level": { "alias": "level"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2816
+ }
2817
+
2818
+ /**
2819
+ * viking-text — body text with semantic variants.
2820
+ */
2821
+ declare class VikingText {
2822
+ readonly variant: _angular_core.InputSignal<"accent" | "muted" | "strong" | "default">;
2823
+ readonly inline: _angular_core.InputSignal<boolean>;
2824
+ protected readonly hostClass: _angular_core.Signal<{
2825
+ [x: string]: boolean;
2826
+ "viking-text-inline": boolean;
2827
+ }>;
2828
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingText, never>;
2829
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingText, "viking-text", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "inline": { "alias": "inline"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
2830
+ }
2831
+
2832
+ /**
2833
+ * viking-suite-search-palette — thin Angular wrapper around `viking-suite-command-palette`.
2834
+ * Unified ⌘K command palette for deml.app with curated suite navigation.
2835
+ */
2836
+ declare class VikingSuiteSearchPalette implements OnInit, AfterViewInit {
2837
+ private readonly platformId;
2838
+ readonly context: _angular_core.InputSignal<SiteDrakkarContext>;
2839
+ readonly urls: _angular_core.InputSignal<SiteUrls>;
2840
+ readonly placeholder: _angular_core.InputSignal<string>;
2841
+ readonly bindShortcut: _angular_core.InputSignal<boolean>;
2842
+ /** Optional callback when the palette opens (e.g. SearchService bridge). */
2843
+ readonly onRegister: _angular_core.InputSignal<((handlers: {
2844
+ open: () => void;
2845
+ close: () => void;
2846
+ }) => void) | undefined>;
2847
+ private readonly paletteRef;
2848
+ ngOnInit(): void;
2849
+ ngAfterViewInit(): void;
2850
+ /** Opens the palette. */
2851
+ openPalette(): void;
2852
+ /** Closes the palette and clears the query. */
2853
+ closePalette(): void;
2854
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<VikingSuiteSearchPalette, never>;
2855
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VikingSuiteSearchPalette, "viking-suite-search-palette", never, { "context": { "alias": "context"; "required": false; "isSignal": true; }; "urls": { "alias": "urls"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "bindShortcut": { "alias": "bindShortcut"; "required": false; "isSignal": true; }; "onRegister": { "alias": "onRegister"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
2856
+ }
2857
+
2858
+ export { BUG_REPORT_QUERY, COOKIE_SETTINGS_QUERY, DEFAULT_SITE_URLS, MATERIAL_ICON_ALIASES, SITE_FOOTER_COLUMNS, SITE_NAV_LINKS, VIKING_BRAND_ICON_FILLED_PATHS, VIKING_BRAND_ICON_NAMES, VIKING_BRAND_ICON_NAMES_LIST, VIKING_BRAND_ICON_PATHS, VIKING_DRAKKAR_ICON_FILLED_PATHS, VIKING_DRAKKAR_ICON_NAMES_LIST, VIKING_DRAKKAR_ICON_PATHS, VIKING_FILLED_ICON_NAMES, VIKING_ICON_FILLED_PATHS, VIKING_ICON_NAMES, VIKING_ICON_PATHS$1 as VIKING_ICON_PATHS, VIKING_ICON_SIZE_PRESETS, VIKING_INTEGRATION_BRAND_COLORS, VIKING_INTEGRATION_BRAND_NAMES, VIKING_INTEGRATION_BRAND_SVGS, VIKING_INTEGRATION_ICON_NAMES_LIST, VIKING_INTEGRATION_ICON_PATHS, 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, panChartWindow, provideVikingCva, registerVikingBadgeWc, registerVikingButtonWc, registerVikingCalloutWc, registerVikingCardWc, registerVikingElements, registerVikingFieldWc, registerVikingInputWc, registerVikingModalWc, registerVikingSearchPaletteWc, registerVikingSelectWc, registerVikingStatusCardWc, registerVikingStatusPillWc, registerVikingSuiteHeaderWc, registerVikingSuiteSearchPaletteWc, registerVikingThemeToggleWc, resolveBrandHref, resolveFooterHref, resolveNavHref, resolveVikingIcon, resolveVikingIconColor, resolveVikingIconSize, sliceChartData, vikingIconViewBox, visibleNavLinks, zoomChartWindow };
2859
+ export type { ChartZoomWindow, SiteDrakkarContext, SiteFooterColumn, SiteFooterLink, SiteNavLink, SiteUrls, SuiteSearchItem, VikingBrandIconName, VikingBreadcrumb, VikingButtonVariant, VikingChartCurve, VikingChartEmptyLayout, VikingChartEmptyTone, VikingChartKind, VikingChartPanelBody, VikingChartPanelSize, VikingChartSeries, VikingCommandItem, VikingConfirmDialogData, VikingDialogKind, VikingDialogState, VikingDonutSegment, VikingDrakkarIconName, VikingFormSectionLayout, VikingIconBadgeTone, VikingIconColorToken, VikingIconName$1 as VikingIconName, VikingIconSizePreset, VikingIconVariant, VikingIntegrationBrandName, VikingIntegrationIconName, VikingKanbanCard, VikingKanbanColumn, VikingKanbanMove, VikingNavItem, VikingSearchPaletteItem, VikingSelectOption, VikingSelectWidth, VikingSeriesPreset, VikingSheetSide, VikingSidebarNavTreeItemVariant, VikingSize, VikingToastInstance, VikingToastOptions, VikingTone, VikingUptimeStatus, VikingWcTone, VikingWizardStep };