@zealsolutions/zeal-ui 1.0.0-alpha.362 → 1.0.0-alpha.364

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,33 +1,33 @@
1
- import { openBlock as a, createElementBlock as u, createVNode as T, createElementVNode as r, createTextVNode as j, mergeModels as ne, useModel as ke, getCurrentInstance as ce, ref as k, computed as $, watch as K, nextTick as oe, onMounted as ge, onBeforeUnmount as we, createBlock as I, Teleport as Ce, withModifiers as N, withDirectives as G, vModelText as $e, createCommentVNode as v, normalizeClass as M, toDisplayString as b, Fragment as H, renderList as P, normalizeStyle as q, pushScopeId as Se, popScopeId as _e, Transition as ue, withCtx as F, resolveDynamicComponent as de, unref as Q, vShow as pe, renderSlot as R } from "vue";
2
- import Me from "../../HouseIcon-BxmNyxvv.js";
3
- import Te from "../../ArrowLeftIcon-Cgsy08pY.js";
4
- import { _ as Ae } from "../../Tooltip-CQjz2EXM.js";
5
- import fe from "../../MagnifyingGlassIcon-ChYNIA-H.js";
6
- import { _ as Ie } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
7
- import { o as xe } from "../../index-D9ihCfA2.js";
8
- import ae from "../../BellIcon-lK5EZXNf.js";
9
- import Ee from "../../CircleCheckIcon-CA15yXgI.js";
10
- import Ne from "../../XMarkIcon-DKJ_--uA.js";
11
- const He = /* @__PURE__ */ r("span", { class: "hidden whitespace-nowrap sm:inline" }, "Search", -1), Oe = /* @__PURE__ */ r("kbd", { class: "zui-search-kbd hidden items-center gap-px rounded border-[1px] border-proclusteal-300 dark:border-line bg-proclusteal-100 dark:bg-surface px-[5px] py-0.5 font-sans text-[11px] font-bold leading-none text-proclusteal-500 dark:text-content-muted sm:inline-flex" }, [
1
+ import { openBlock as a, createElementBlock as i, createVNode as I, createElementVNode as r, createTextVNode as B, mergeModels as le, useModel as _e, getCurrentInstance as fe, ref as k, computed as C, watch as q, nextTick as se, onMounted as Se, onBeforeUnmount as Me, createBlock as T, Teleport as Ie, withModifiers as E, withDirectives as Y, vModelText as Ae, createCommentVNode as m, normalizeClass as M, toDisplayString as b, Fragment as N, renderList as L, unref as W, normalizeStyle as G, pushScopeId as Te, popScopeId as Ne, Transition as xe, withCtx as J, resolveDynamicComponent as he, vShow as ye, renderSlot as V } from "vue";
2
+ import ze from "../../HouseIcon-BxmNyxvv.js";
3
+ import Ee from "../../ArrowLeftIcon-Cgsy08pY.js";
4
+ import { _ as He } from "../../Tooltip-CQjz2EXM.js";
5
+ import ve from "../../MagnifyingGlassIcon-ChYNIA-H.js";
6
+ import { _ as Oe } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
7
+ import { o as me } from "../../index-D9ihCfA2.js";
8
+ import ie from "../../BellIcon-lK5EZXNf.js";
9
+ import Le from "../../CircleCheckIcon-CA15yXgI.js";
10
+ import je from "../../XMarkIcon-DKJ_--uA.js";
11
+ const De = /* @__PURE__ */ r("span", { class: "hidden whitespace-nowrap sm:inline" }, "Search", -1), Pe = /* @__PURE__ */ r("kbd", { class: "zui-search-kbd hidden items-center gap-px rounded border-[1px] border-surface-raised/40 bg-surface-raised/15 px-[5px] py-0.5 font-sans text-[11px] font-bold leading-none text-surface-raised/90 sm:inline-flex" }, [
12
12
  /* @__PURE__ */ r("span", null, "⌘"),
13
- /* @__PURE__ */ j("K ")
14
- ], -1), Le = {
13
+ /* @__PURE__ */ B("K ")
14
+ ], -1), Ue = {
15
15
  __name: "GlobalSearchPill",
16
16
  emits: ["click"],
17
17
  setup(e) {
18
- return (i, o) => (a(), u("button", {
18
+ return (l, n) => (a(), i("button", {
19
19
  type: "button",
20
- class: "zui-search-pill inline-flex h-[34px] cursor-pointer items-center justify-center gap-[7px] rounded-lg border-[1px] border-solid border-proclusteal-300 dark:border-line bg-surface-raised pl-[11px] pr-[9px] font-sans text-[13px] font-semibold text-proclusteal-600 dark:text-content-muted transition-[border-color,color,box-shadow] duration-150 hover:border-proclusteal-950 dark:hover:border-focus hover:text-proclusteal-800 dark:hover:text-content hover:shadow-[0_1px_3px_rgba(20,40,45,0.08)] focus:border-proclusteal-950 dark:focus:border-focus focus:text-proclusteal-800 dark:focus:text-content focus:outline-none",
20
+ class: "zui-search-pill inline-flex h-[34px] cursor-pointer items-center justify-center gap-[7px] rounded-lg border-[1px] border-solid border-content bg-content pl-[11px] pr-[9px] font-sans text-[13px] font-semibold text-surface-raised transition-[background-color,border-color,box-shadow] duration-150 hover:border-content-muted hover:bg-content-muted hover:shadow-[0_1px_3px_rgba(20,40,45,0.18)] focus:border-content-muted focus:bg-content-muted focus:outline-none",
21
21
  title: "Search (Ctrl K)",
22
22
  "aria-label": "Search (Ctrl K)",
23
- onClick: o[0] || (o[0] = (y) => i.$emit("click"))
23
+ onClick: n[0] || (n[0] = (h) => l.$emit("click"))
24
24
  }, [
25
- T(fe, { class: "!h-[15px] !w-[15px] flex-none text-proclusteal-950 dark:text-focus" }),
26
- He,
27
- Oe
25
+ I(ve, { class: "!h-[15px] !w-[15px] flex-none text-surface-raised" }),
26
+ De,
27
+ Pe
28
28
  ]));
29
29
  }
30
- }, D = {
30
+ }, U = {
31
31
  Contact: { label: "Contacts", colour: "#1a8a7d", icon: '<path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>' },
32
32
  Incident: { label: "Incidents", colour: "#cd5c5c", icon: '<path d="M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/><line x1="12" y1="9" x2="12" y2="13"/><line x1="12" y1="17" x2="12.01" y2="17"/>' },
33
33
  Asset: { label: "Assets", colour: "#8b4789", icon: '<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"/><polyline points="3.27 6.96 12 12.01 20.73 6.96"/><line x1="12" y1="22.08" x2="12" y2="12"/>' },
@@ -35,65 +35,125 @@ const He = /* @__PURE__ */ r("span", { class: "hidden whitespace-nowrap sm:inlin
35
35
  Change: { label: "Change", colour: "#8b008b", icon: '<polyline points="17 1 21 5 17 9"/><path d="M3 11V9a4 4 0 0 1 4-4h14"/><polyline points="7 23 3 19 7 15"/><path d="M21 13v2a4 4 0 0 1-4 4H3"/>' },
36
36
  Safety: { label: "Safety", colour: "#7cb342", icon: '<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/>' },
37
37
  LID: { label: "Lessons", colour: "#ff8c00", icon: '<path d="M9 18h6"/><path d="M10 22h4"/><path d="M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 1 0 6 8c0 1 .21 2.24 1.5 3.5.76.76 1.23 1.52 1.41 2.5"/>' },
38
- RefLib: { label: "Reference Library", colour: "#4a90b8", icon: '<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/>' },
39
- ActionCard: { label: "Action Cards", colour: "#8b0000", icon: '<rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/>' },
38
+ RefLib: { newWindow: !0, label: "Reference Library", colour: "#4a90b8", icon: '<path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/>' },
39
+ ActionCard: { newWindow: !0, label: "Action Cards", colour: "#8b0000", icon: '<rect x="1" y="4" width="22" height="16" rx="2" ry="2"/><line x1="1" y1="10" x2="23" y2="10"/>' },
40
40
  EDS: { label: "Equipment Data", colour: "#708090", icon: '<path d="M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2"/><rect x="8" y="2" width="8" height="4" rx="1" ry="1"/><line x1="8" y1="12" x2="16" y2="12"/><line x1="8" y1="16" x2="14" y2="16"/>' },
41
41
  TIS: { label: "Training Sheets", colour: "#4682b4", icon: '<line x1="8" y1="6" x2="21" y2="6"/><line x1="8" y1="12" x2="21" y2="12"/><line x1="8" y1="18" x2="21" y2="18"/><line x1="3" y1="6" x2="3.01" y2="6"/><line x1="3" y1="12" x2="3.01" y2="12"/><line x1="3" y1="18" x2="3.01" y2="18"/>' },
42
42
  Training: { label: "Training", colour: "#3f7cac", icon: '<path d="M22 10 12 5 2 10l10 5 10-5z"/><path d="M6 12v5c0 1 2.7 3 6 3s6-2 6-3v-5"/>' }
43
- }, ze = {
43
+ }, Be = {
44
44
  colour: "#9aa4ad",
45
45
  icon: '<circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/>'
46
46
  };
47
- function De(e, i = {}) {
48
- const o = { ...D, ...i };
49
- return Object.prototype.hasOwnProperty.call(o, e) ? o[e] : { ...ze, label: e };
47
+ function Re(e, l = {}) {
48
+ const n = { ...U, ...l };
49
+ return Object.prototype.hasOwnProperty.call(n, e) ? n[e] : { ...Be, label: e };
50
50
  }
51
- function je(e) {
52
- return (e == null ? "" : String(e)).replace(/[&<>"']/g, (i) => ({
51
+ function Ve(e) {
52
+ return (e == null ? "" : String(e)).replace(/[&<>"']/g, (l) => ({
53
53
  "&": "&amp;",
54
54
  "<": "&lt;",
55
55
  ">": "&gt;",
56
56
  '"': "&quot;",
57
57
  "'": "&#39;"
58
- })[i]);
58
+ })[l]);
59
59
  }
60
- function he(e) {
60
+ function be(e) {
61
61
  if (!e)
62
62
  return "";
63
- const i = String(e).trim();
64
- return /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(i) || /^(rgb|rgba|hsl|hsla)\([0-9.,%\s/]+\)$/i.test(i) || /^[a-z]{3,20}$/i.test(i) ? i : "";
63
+ const l = String(e).trim();
64
+ return /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(l) || /^(rgb|rgba|hsl|hsla)\([0-9.,%\s/]+\)$/i.test(l) || /^[a-z]{3,20}$/i.test(l) ? l : "";
65
65
  }
66
- function O(e) {
66
+ function j(e) {
67
67
  if (!e)
68
68
  return "";
69
- const i = String(e).trim();
70
- if (i.includes("\\"))
69
+ const l = String(e).trim();
70
+ if (l.includes("\\"))
71
71
  return "";
72
- let o;
72
+ let n;
73
73
  try {
74
- o = new URL(i, "https://url-check.invalid/");
74
+ n = new URL(l, "https://url-check.invalid/");
75
75
  } catch {
76
76
  return "";
77
77
  }
78
- return o.protocol === "http:" || o.protocol === "https:" ? i : "";
78
+ return n.protocol === "http:" || n.protocol === "https:" ? l : "";
79
79
  }
80
- function Pe(e) {
81
- return String(e || "").toLowerCase().split(/\s+/).filter((i) => i.length >= 2);
80
+ function Ke(e) {
81
+ return String(e || "").toLowerCase().split(/\s+/).filter((l) => l.length >= 2);
82
82
  }
83
- function re(e, i) {
84
- const o = je(e);
85
- if (!i || !i.length)
86
- return o;
87
- const y = new RegExp(`(${i.map((p) => p.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})`, "ig");
88
- return o.replace(y, "<mark>$1</mark>");
83
+ function ce(e, l) {
84
+ const n = Ve(e);
85
+ if (!l || !l.length)
86
+ return n;
87
+ const h = new RegExp(`(${l.map((f) => f.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})`, "ig");
88
+ return n.replace(h, "<mark>$1</mark>");
89
89
  }
90
- const Ue = (e) => (Se("data-v-80fd510b"), e = e(), _e(), e), Be = { class: "zui-search-field flex items-center gap-2.5 border-b-[1px] border-proclusteal-200 dark:border-line px-4 py-3.5" }, Re = ["placeholder"], Ve = {
90
+ const We = {
91
+ video: '<polygon points="23 7 16 12 23 17 23 7"/><rect x="1" y="5" width="15" height="14" rx="2" ry="2"/>',
92
+ image: '<rect x="3" y="3" width="18" height="18" rx="2" ry="2"/><circle cx="8.5" cy="8.5" r="1.5"/><polyline points="21 15 16 10 5 21"/>',
93
+ pdf: '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="9" y1="15" x2="15" y2="15"/>',
94
+ word: '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><polyline points="8 13 9.5 18 12 14 14.5 18 16 13"/>',
95
+ excel: '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="9" y1="13" x2="15" y2="19"/><line x1="15" y1="13" x2="9" y2="19"/>',
96
+ presentation: '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><rect x="8" y="12" width="8" height="5" rx="1"/>',
97
+ document: '<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/>'
98
+ };
99
+ function qe(e, l) {
100
+ return typeof e != "string" ? l : We[e.toLowerCase()] || l;
101
+ }
102
+ const Q = "zui.search.recent", ke = 5;
103
+ function F() {
104
+ try {
105
+ const e = window.localStorage.getItem(Q);
106
+ if (!e)
107
+ return [];
108
+ const l = JSON.parse(e);
109
+ return Array.isArray(l) ? l.filter((n) => typeof n == "string" && n.trim().length > 0).slice(0, ke) : [];
110
+ } catch {
111
+ return [];
112
+ }
113
+ }
114
+ function Ge(e) {
115
+ const l = typeof e == "string" ? e.trim() : "";
116
+ if (!l)
117
+ return F();
118
+ const n = [l, ...F().filter((h) => h.toLowerCase() !== l.toLowerCase())].slice(0, ke);
119
+ try {
120
+ window.localStorage.setItem(Q, JSON.stringify(n));
121
+ } catch {
122
+ }
123
+ return n;
124
+ }
125
+ function Fe() {
126
+ try {
127
+ window.localStorage.removeItem(Q);
128
+ } catch {
129
+ }
130
+ return [];
131
+ }
132
+ const X = (e) => (Te("data-v-24311187"), e = e(), Ne(), e), Ye = { class: "zui-search-field flex items-center gap-2.5 border-b-[1px] border-proclusteal-200 dark:border-line px-4 py-3.5" }, Je = ["placeholder"], Qe = {
91
133
  key: 0,
92
134
  class: "px-[18px] pb-0.5 pt-3.5 text-[15px] font-extrabold text-[#1e262c] dark:text-content"
93
- }, Ke = {
135
+ }, Xe = {
94
136
  key: 1,
95
137
  class: "border-b-[1px] border-proclusteal-200 dark:border-line px-[18px] pb-3 pt-2.5"
96
- }, qe = ["onClick"], Ge = { class: "zui-search-group sticky top-0 z-[1] border-t-[1px] border-proclusteal-200 dark:border-line bg-proclusteal-150 dark:bg-surface px-[18px] py-2 text-[12px] font-extrabold tracking-[0.3px] text-proclusteal-700 dark:text-content" }, Fe = { class: "ml-0.5 text-[#667079] dark:text-content-muted" }, Qe = ["href", "data-row-idx", "onClick", "onMouseenter"], Ye = ["innerHTML"], Xe = { class: "min-w-0 flex-1" }, Je = ["innerHTML"], We = ["innerHTML"], Ze = /* @__PURE__ */ Ue(() => /* @__PURE__ */ r("svg", {
138
+ }, Ze = ["onClick"], et = {
139
+ key: 0,
140
+ class: "zui-search-recent py-1.5"
141
+ }, tt = { class: "flex items-center justify-between px-[18px] py-2" }, nt = /* @__PURE__ */ X(() => /* @__PURE__ */ r("span", { class: "text-[12px] font-extrabold tracking-[0.3px] text-proclusteal-700 dark:text-content" }, "Recent searches", -1)), ot = ["onClick"], at = /* @__PURE__ */ X(() => /* @__PURE__ */ r("svg", {
142
+ class: "h-4 w-4 flex-none text-[#9aa4ad]",
143
+ viewBox: "0 0 24 24",
144
+ fill: "none",
145
+ stroke: "currentColor",
146
+ "stroke-width": "2",
147
+ "stroke-linecap": "round",
148
+ "stroke-linejoin": "round"
149
+ }, [
150
+ /* @__PURE__ */ r("circle", {
151
+ cx: "12",
152
+ cy: "12",
153
+ r: "10"
154
+ }),
155
+ /* @__PURE__ */ r("polyline", { points: "12 6 12 12 16 14" })
156
+ ], -1)), rt = { class: "min-w-0 flex-1 truncate" }, lt = { class: "zui-search-group sticky top-0 z-[1] border-t-[1px] border-proclusteal-200 dark:border-line bg-proclusteal-150 dark:bg-surface px-[18px] py-2 text-[12px] font-extrabold tracking-[0.3px] text-proclusteal-700 dark:text-content" }, st = { class: "ml-0.5 text-[#667079] dark:text-content-muted" }, it = ["href", "target", "rel", "data-row-idx", "onClick", "onMouseenter"], ct = ["innerHTML"], ut = { class: "min-w-0 flex-1" }, dt = ["innerHTML"], pt = ["innerHTML"], ft = /* @__PURE__ */ X(() => /* @__PURE__ */ r("svg", {
97
157
  class: "h-4 w-4 flex-none text-[#c2cad1] dark:text-content-muted",
98
158
  viewBox: "0 0 24 24",
99
159
  fill: "none",
@@ -103,9 +163,9 @@ const Ue = (e) => (Se("data-v-80fd510b"), e = e(), _e(), e), Be = { class: "zui-
103
163
  "stroke-linejoin": "round"
104
164
  }, [
105
165
  /* @__PURE__ */ r("polyline", { points: "9 18 15 12 9 6" })
106
- ], -1)), le = "zui-search-chip mb-2 mr-2 inline-flex cursor-pointer items-center gap-[7px] rounded-[20px] border-[1px] border-[#dde3e8] dark:border-line bg-[#f4f6f8] dark:bg-surface px-3.5 py-1.5 text-[13px] font-bold text-proclusteal-700 dark:text-content hover:border-proclusteal-950 dark:hover:border-focus", se = "!border-proclusteal-950 !bg-proclusteal-950 !text-white", V = "zui-search-state px-5 py-[26px] text-center text-[13px] font-medium text-[#667079] dark:text-content-muted", et = {
166
+ ], -1)), ue = "zui-search-chip mb-2 mr-2 inline-flex cursor-pointer items-center gap-[7px] rounded-[20px] border-[1px] border-[#dde3e8] dark:border-line bg-[#f4f6f8] dark:bg-surface px-3.5 py-1.5 text-[13px] font-bold text-proclusteal-700 dark:text-content hover:border-proclusteal-950 dark:hover:border-focus", de = "!border-proclusteal-950 !bg-proclusteal-950 !text-white", K = "zui-search-state px-5 py-[26px] text-center text-[13px] font-medium text-[#667079] dark:text-content-muted", xt = {
107
167
  __name: "GlobalSearchModal",
108
- props: /* @__PURE__ */ ne({
168
+ props: /* @__PURE__ */ le({
109
169
  searchProvider: {
110
170
  type: Function,
111
171
  required: !0
@@ -130,137 +190,150 @@ const Ue = (e) => (Se("data-v-80fd510b"), e = e(), _e(), e), Be = { class: "zui-
130
190
  open: { type: Boolean, default: !1 },
131
191
  openModifiers: {}
132
192
  }),
133
- emits: /* @__PURE__ */ ne(["navigate"], ["update:open"]),
134
- setup(e, { emit: i }) {
135
- const o = e, y = i, p = ke(e, "open"), x = ce(), w = k(null), _ = k(null), A = k(null), g = k(""), S = k(""), m = k([]), f = k("all"), n = k("zero"), c = k(-1);
136
- let d = null, C = 0, L = null, E = null;
137
- const Y = $(() => Pe(S.value)), X = (t) => De(t, o.types), J = $(() => {
193
+ emits: /* @__PURE__ */ le(["navigate"], ["update:open"]),
194
+ setup(e, { emit: l }) {
195
+ const n = e, h = l, f = _e(e, "open"), y = fe(), w = k(null), _ = k(null), A = k(null), g = k(""), $ = k(""), v = k([]), x = k("all"), o = k("zero"), u = k(-1), p = k([]);
196
+ let S = null, H = 0, D = null, z = null;
197
+ const Z = C(() => Ke($.value)), ee = (t) => Re(t, n.types), te = C(() => {
138
198
  let t = 0;
139
- return m.value.filter((s) => f.value === "all" || s.type === f.value).map((s) => {
140
- const l = X(s.type);
199
+ return v.value.filter((c) => x.value === "all" || c.type === x.value).map((c) => {
200
+ const s = ee(c.type);
141
201
  return {
142
- type: s.type,
143
- label: l.label,
144
- items: s.items.map((h) => ({
145
- url: O(h.Url),
146
- titleHtml: re(h.Title, Y.value),
147
- subtitleHtml: re(h.Subtitle, Y.value),
148
- tileColour: he(h.Colour) || l.colour,
149
- tileIcon: l.icon,
202
+ type: c.type,
203
+ label: s.label,
204
+ items: c.items.map((d) => ({
205
+ url: j(d.Url),
206
+ titleHtml: ce(d.Title, Z.value),
207
+ subtitleHtml: ce(d.Subtitle, Z.value),
208
+ tileColour: be(d.Colour) || s.colour,
209
+ // #518: the item's own kind wins, the group's icon is the fallback.
210
+ tileIcon: qe(d.Kind, s.icon),
211
+ // #519: a file opens in a new tab so the search - and whatever the user was
212
+ // doing behind it - is still there when they close the document. The ITEM may
213
+ // override its group, because one group can hold both files and pages.
214
+ newWindow: d.NewWindow === !0 || d.NewWindow !== !1 && s.newWindow === !0,
150
215
  flatIdx: t++
151
216
  }))
152
217
  };
153
218
  });
154
- }), W = $(() => J.value.flatMap((t) => t.items)), ye = $(() => m.value.reduce((t, s) => t + s.items.length, 0));
155
- function U(t) {
156
- const s = W.value;
157
- if (!s.length) {
158
- c.value = -1;
219
+ }), ne = C(() => te.value.flatMap((t) => t.items)), ge = C(() => v.value.reduce((t, c) => t + c.items.length, 0));
220
+ function R(t) {
221
+ const c = ne.value;
222
+ if (!c.length) {
223
+ u.value = -1;
159
224
  return;
160
225
  }
161
- c.value = Math.min(Math.max(t, 0), s.length - 1), oe(() => {
162
- var h;
163
- const l = (h = A.value) == null ? void 0 : h.querySelector(`[data-row-idx="${c.value}"]`);
164
- l == null || l.scrollIntoView({ block: "nearest" });
226
+ u.value = Math.min(Math.max(t, 0), c.length - 1), se(() => {
227
+ var d;
228
+ const s = (d = A.value) == null ? void 0 : d.querySelector(`[data-row-idx="${u.value}"]`);
229
+ s == null || s.scrollIntoView({ block: "nearest" });
165
230
  });
166
231
  }
167
- function Z(t) {
168
- var s;
169
- f.value = t, U(0), (s = w.value) == null || s.focus();
232
+ function oe(t) {
233
+ var c;
234
+ x.value = t, R(0), (c = w.value) == null || c.focus();
170
235
  }
171
- function ee(t) {
172
- var s, l;
173
- t && (y("navigate", t), (l = (s = x == null ? void 0 : x.vnode) == null ? void 0 : s.props) != null && l.onNavigate || (window.location.href = t), z());
236
+ function ae(t, c = !1) {
237
+ var s, d;
238
+ if (t) {
239
+ if (c) {
240
+ window.open(t, "_blank", "noopener"), O();
241
+ return;
242
+ }
243
+ h("navigate", t), (d = (s = y == null ? void 0 : y.vnode) == null ? void 0 : s.props) != null && d.onNavigate || (window.location.href = t), O();
244
+ }
174
245
  }
175
- function z() {
176
- p.value = !1;
246
+ function O() {
247
+ f.value = !1;
177
248
  }
178
- async function me(t) {
179
- const s = ++C;
180
- S.value = t;
249
+ async function we(t) {
250
+ const c = ++H;
251
+ $.value = t;
181
252
  try {
182
- const l = await o.searchProvider(t);
183
- if (s !== C || !p.value)
253
+ const s = await n.searchProvider(t);
254
+ if (c !== H || !f.value)
184
255
  return;
185
- m.value = l && l.groups || [], f.value = "all", n.value = m.value.length ? "results" : "empty", U(0);
256
+ v.value = s && s.groups || [], x.value = "all", o.value = v.value.length ? "results" : "empty", v.value.length && (p.value = Ge(t)), R(0);
186
257
  } catch {
187
- if (s !== C || !p.value)
258
+ if (c !== H || !f.value)
188
259
  return;
189
- m.value = [], n.value = "error", c.value = -1;
260
+ v.value = [], o.value = "error", u.value = -1;
190
261
  }
191
262
  }
192
- K(g, (t) => {
193
- clearTimeout(d);
194
- const s = t.trim();
195
- if (s.length < o.minChars) {
196
- C++, m.value = [], n.value = s.length ? "hint" : "zero", c.value = -1;
263
+ q(g, (t) => {
264
+ clearTimeout(S);
265
+ const c = t.trim();
266
+ if (c.length < n.minChars) {
267
+ H++, v.value = [], o.value = c.length ? "hint" : "zero", u.value = -1;
197
268
  return;
198
269
  }
199
- d = setTimeout(() => me(s), o.debounce);
200
- }), K(p, (t) => {
201
- t ? (L = document.activeElement, g.value = "", S.value = "", m.value = [], f.value = "all", n.value = "zero", c.value = -1, E = document.body.style.overflow, document.body.style.overflow = "hidden", oe(() => {
202
- var s;
203
- return (s = w.value) == null ? void 0 : s.focus();
204
- })) : (clearTimeout(d), C++, E !== null && (document.body.style.overflow = E, E = null), L != null && L.focus && L.focus());
270
+ S = setTimeout(() => we(c), n.debounce);
271
+ }), q(f, (t) => {
272
+ t ? (D = document.activeElement, p.value = F(), g.value = "", $.value = "", v.value = [], x.value = "all", o.value = "zero", u.value = -1, z = document.body.style.overflow, document.body.style.overflow = "hidden", se(() => {
273
+ var c;
274
+ return (c = w.value) == null ? void 0 : c.focus();
275
+ })) : (clearTimeout(S), H++, z !== null && (document.body.style.overflow = z, z = null), D != null && D.focus && D.focus());
205
276
  }, { immediate: !0 });
206
- function ve(t) {
207
- var s;
277
+ function Ce(t) {
278
+ var c;
208
279
  if (t.key === "Escape") {
209
- t.preventDefault(), z();
280
+ t.preventDefault(), O();
210
281
  return;
211
282
  }
212
283
  if (t.key === "ArrowDown") {
213
- t.preventDefault(), U(c.value + 1);
284
+ t.preventDefault(), R(u.value + 1);
214
285
  return;
215
286
  }
216
287
  if (t.key === "ArrowUp") {
217
- t.preventDefault(), U(c.value - 1);
288
+ t.preventDefault(), R(u.value - 1);
218
289
  return;
219
290
  }
220
291
  if (t.key === "Enter") {
221
292
  if (t.isComposing)
222
293
  return;
223
- const l = W.value;
224
- if (!l.length)
294
+ const s = ne.value;
295
+ if (!s.length)
225
296
  return;
226
- t.preventDefault(), ee(l[c.value >= 0 ? c.value : 0].url);
297
+ t.preventDefault();
298
+ const d = s[u.value >= 0 ? u.value : 0];
299
+ ae(d.url, d.newWindow);
227
300
  return;
228
301
  }
229
302
  if (t.key === "Tab") {
230
- const l = (s = _.value) == null ? void 0 : s.querySelectorAll('input, button, a[href], [tabindex]:not([tabindex="-1"])');
231
- if (!(l != null && l.length))
303
+ const s = (c = _.value) == null ? void 0 : c.querySelectorAll('input, button, a[href], [tabindex]:not([tabindex="-1"])');
304
+ if (!(s != null && s.length))
232
305
  return;
233
- const h = l[0], B = l[l.length - 1];
234
- t.shiftKey && document.activeElement === h ? (t.preventDefault(), B.focus()) : !t.shiftKey && document.activeElement === B && (t.preventDefault(), h.focus());
306
+ const d = s[0], P = s[s.length - 1];
307
+ t.shiftKey && document.activeElement === d ? (t.preventDefault(), P.focus()) : !t.shiftKey && document.activeElement === P && (t.preventDefault(), d.focus());
235
308
  }
236
309
  }
237
- function be(t) {
310
+ function $e(t) {
238
311
  if (!t)
239
312
  return !1;
240
- const s = (t.tagName || "").toLowerCase();
241
- return s === "input" || s === "textarea" || s === "select" || t.isContentEditable;
313
+ const c = (t.tagName || "").toLowerCase();
314
+ return c === "input" || c === "textarea" || c === "select" || t.isContentEditable;
242
315
  }
243
- function te(t) {
244
- if (t.key === "Escape" && p.value) {
245
- t.preventDefault(), z();
316
+ function re(t) {
317
+ if (t.key === "Escape" && f.value) {
318
+ t.preventDefault(), O();
246
319
  return;
247
320
  }
248
321
  if ((t.ctrlKey || t.metaKey) && (t.key === "k" || t.key === "K")) {
249
- t.preventDefault(), p.value = !p.value;
322
+ t.preventDefault(), f.value = !f.value;
250
323
  return;
251
324
  }
252
- t.key === "/" && !p.value && !be(document.activeElement) && (t.preventDefault(), p.value = !0);
325
+ t.key === "/" && !f.value && !$e(document.activeElement) && (t.preventDefault(), f.value = !0);
253
326
  }
254
- return ge(() => {
255
- document.addEventListener("keydown", te);
256
- }), we(() => {
257
- document.removeEventListener("keydown", te), clearTimeout(d), C++, E !== null && (document.body.style.overflow = E, E = null);
258
- }), (t, s) => (a(), I(Ce, { to: "body" }, [
259
- p.value ? (a(), u("div", {
327
+ return Se(() => {
328
+ document.addEventListener("keydown", re);
329
+ }), Me(() => {
330
+ document.removeEventListener("keydown", re), clearTimeout(S), H++, z !== null && (document.body.style.overflow = z, z = null);
331
+ }), (t, c) => (a(), T(Ie, { to: "body" }, [
332
+ f.value ? (a(), i("div", {
260
333
  key: 0,
261
334
  class: "zui-search-overlay fixed inset-0 z-[20000] flex items-start justify-center bg-[#11181c]/45",
262
- onMousedown: N(z, ["self"]),
263
- onKeydown: ve
335
+ onMousedown: E(O, ["self"]),
336
+ onKeydown: Ce
264
337
  }, [
265
338
  r("div", {
266
339
  ref_key: "panelEl",
@@ -270,88 +343,110 @@ const Ue = (e) => (Se("data-v-80fd510b"), e = e(), _e(), e), Be = { class: "zui-
270
343
  "aria-modal": "true",
271
344
  "aria-label": "Search"
272
345
  }, [
273
- r("div", Be, [
274
- T(fe, { class: "!h-[18px] !w-[18px] flex-none text-proclusteal-400 dark:text-content-muted" }),
275
- G(r("input", {
346
+ r("div", Ye, [
347
+ I(ve, { class: "!h-[18px] !w-[18px] flex-none text-proclusteal-400 dark:text-content-muted" }),
348
+ Y(r("input", {
276
349
  ref_key: "inputEl",
277
350
  ref: w,
278
- "onUpdate:modelValue": s[0] || (s[0] = (l) => g.value = l),
351
+ "onUpdate:modelValue": c[0] || (c[0] = (s) => g.value = s),
279
352
  type: "text",
280
353
  autocomplete: "off",
281
354
  placeholder: e.placeholder,
282
355
  class: "zui-search-input flex-1 border-0 bg-[transparent] p-0 text-[16px] text-[#1e262c] dark:text-content outline-none placeholder:text-proclusteal-400 dark:placeholder:text-content-muted focus:ring-0"
283
- }, null, 8, Re), [
284
- [$e, g.value]
356
+ }, null, 8, Je), [
357
+ [Ae, g.value]
285
358
  ]),
286
359
  r("button", {
287
360
  type: "button",
288
361
  class: "cursor-pointer border-0 bg-[transparent] px-1 text-[22px] leading-none text-proclusteal-400 dark:text-content-muted hover:text-proclusteal-700 dark:hover:text-content",
289
362
  "aria-label": "Close search",
290
363
  title: "Close (Esc)",
291
- onClick: z
364
+ onClick: O
292
365
  }, "×")
293
366
  ]),
294
- n.value === "results" ? (a(), u("div", Ve, " Search results ")) : v("", !0),
295
- n.value === "results" ? (a(), u("div", Ke, [
367
+ o.value === "results" ? (a(), i("div", Qe, " Search results ")) : m("", !0),
368
+ o.value === "results" ? (a(), i("div", Xe, [
296
369
  r("button", {
297
370
  type: "button",
298
- class: M([le, f.value === "all" ? se : ""]),
299
- onClick: s[1] || (s[1] = (l) => Z("all"))
371
+ class: M([ue, x.value === "all" ? de : ""]),
372
+ onClick: c[1] || (c[1] = (s) => oe("all"))
300
373
  }, [
301
- j(" All "),
374
+ B(" All "),
302
375
  r("span", {
303
- class: M(["font-bold", f.value === "all" ? "opacity-85" : "opacity-60"])
304
- }, "(" + b(ye.value) + ")", 3)
376
+ class: M(["font-bold", x.value === "all" ? "opacity-85" : "opacity-60"])
377
+ }, "(" + b(ge.value) + ")", 3)
305
378
  ], 2),
306
- (a(!0), u(H, null, P(m.value, (l) => (a(), u("button", {
307
- key: l.type,
379
+ (a(!0), i(N, null, L(v.value, (s) => (a(), i("button", {
380
+ key: s.type,
308
381
  type: "button",
309
- class: M([le, f.value === l.type ? se : ""]),
310
- onClick: (h) => Z(l.type)
382
+ class: M([ue, x.value === s.type ? de : ""]),
383
+ onClick: (d) => oe(s.type)
311
384
  }, [
312
- j(b(X(l.type).label) + " ", 1),
385
+ B(b(ee(s.type).label) + " ", 1),
313
386
  r("span", {
314
- class: M(["font-bold", f.value === l.type ? "opacity-85" : "opacity-60"])
315
- }, "(" + b(l.items.length) + ")", 3)
316
- ], 10, qe))), 128))
317
- ])) : v("", !0),
387
+ class: M(["font-bold", x.value === s.type ? "opacity-85" : "opacity-60"])
388
+ }, "(" + b(s.items.length) + ")", 3)
389
+ ], 10, Ze))), 128))
390
+ ])) : m("", !0),
318
391
  r("div", {
319
392
  ref_key: "resultsEl",
320
393
  ref: A,
321
394
  class: "zui-search-results overflow-y-auto pb-2.5"
322
395
  }, [
323
- n.value === "zero" ? (a(), u("div", {
324
- key: 0,
325
- class: M(V)
326
- }, " Search across SOPs, incidents, assets, people and more — you only ever see what you have access to. ")) : n.value === "hint" ? (a(), u("div", {
396
+ o.value === "zero" && p.value.length ? (a(), i("div", et, [
397
+ r("div", tt, [
398
+ nt,
399
+ r("button", {
400
+ type: "button",
401
+ class: "cursor-pointer border-0 bg-[transparent] p-0 text-[12px] font-semibold text-[#667079] dark:text-content-muted hover:text-proclusteal-950 dark:hover:text-focus",
402
+ "data-test": "search-recent-clear",
403
+ onClick: c[2] || (c[2] = (s) => p.value = W(Fe)())
404
+ }, "Clear")
405
+ ]),
406
+ (a(!0), i(N, null, L(p.value, (s, d) => (a(), i("button", {
407
+ key: s,
408
+ type: "button",
409
+ "data-test": "search-recent-item",
410
+ class: "zui-search-recent-row flex w-full cursor-pointer items-center gap-[13px] border-0 bg-[transparent] px-[18px] py-[9px] text-left text-[14px] text-[#1e262c] dark:text-content hover:bg-proclusteal-50 dark:hover:bg-surface-hover",
411
+ onClick: (P) => g.value = s
412
+ }, [
413
+ at,
414
+ r("span", rt, b(s), 1)
415
+ ], 8, ot))), 128))
416
+ ])) : o.value === "zero" ? (a(), i("div", {
327
417
  key: 1,
328
- class: M(V)
329
- }, " Keep typing… enter at least " + b(e.minChars) + " characters to search. ", 1)) : n.value === "empty" ? (a(), u("div", {
418
+ class: M(K)
419
+ }, " Search across SOPs, incidents, assets, people and more — you only ever see what you have access to. ")) : o.value === "hint" ? (a(), i("div", {
330
420
  key: 2,
331
- class: M(V)
332
- }, " No results for “" + b(S.value) + "” — try a broader term or a code. ", 1)) : n.value === "error" ? (a(), u("div", {
421
+ class: M(K)
422
+ }, " Keep typing… enter at least " + b(e.minChars) + " characters to search. ", 1)) : o.value === "empty" ? (a(), i("div", {
333
423
  key: 3,
334
- class: M(V)
335
- }, " Search is temporarily unavailable. ")) : (a(!0), u(H, { key: 4 }, P(J.value, (l) => (a(), u("div", {
336
- key: l.type
424
+ class: M(K)
425
+ }, " No results for “" + b($.value) + "” — try a broader term or a code. ", 1)) : o.value === "error" ? (a(), i("div", {
426
+ key: 4,
427
+ class: M(K)
428
+ }, " Search is temporarily unavailable. ")) : (a(!0), i(N, { key: 5 }, L(te.value, (s) => (a(), i("div", {
429
+ key: s.type
337
430
  }, [
338
- r("div", Ge, [
339
- j(b(l.label) + " ", 1),
340
- r("span", Fe, "(" + b(l.items.length) + ")", 1)
431
+ r("div", lt, [
432
+ B(b(s.label) + " ", 1),
433
+ r("span", st, "(" + b(s.items.length) + ")", 1)
341
434
  ]),
342
- (a(!0), u(H, null, P(l.items, (h) => (a(), u("a", {
343
- key: h.flatIdx,
344
- href: h.url || null,
345
- class: M(["zui-search-row flex items-center gap-[13px] px-[18px] py-[11px] text-[#1e262c] dark:text-content no-underline", { "bg-proclusteal-50 dark:bg-surface-hover": h.flatIdx === c.value }]),
346
- "data-row-idx": h.flatIdx,
347
- onClick: N((B) => ee(h.url), ["exact", "prevent"]),
348
- onMouseenter: (B) => c.value = h.flatIdx
435
+ (a(!0), i(N, null, L(s.items, (d) => (a(), i("a", {
436
+ key: d.flatIdx,
437
+ href: d.url || null,
438
+ target: d.newWindow ? "_blank" : null,
439
+ rel: d.newWindow ? "noopener noreferrer" : null,
440
+ class: M(["zui-search-row flex items-center gap-[13px] px-[18px] py-[11px] text-[#1e262c] dark:text-content no-underline", { "bg-proclusteal-50 dark:bg-surface-hover": d.flatIdx === u.value }]),
441
+ "data-row-idx": d.flatIdx,
442
+ onClick: E((P) => ae(d.url, d.newWindow), ["exact", "prevent"]),
443
+ onMouseenter: (P) => u.value = d.flatIdx
349
444
  }, [
350
445
  r("span", {
351
446
  class: "inline-flex h-[42px] w-[42px] flex-none items-center justify-center rounded-[10px] text-white",
352
- style: q({ background: h.tileColour })
447
+ style: G({ background: d.tileColour })
353
448
  }, [
354
- (a(), u("svg", {
449
+ (a(), i("svg", {
355
450
  class: "h-5 w-5",
356
451
  viewBox: "0 0 24 24",
357
452
  fill: "none",
@@ -359,28 +454,28 @@ const Ue = (e) => (Se("data-v-80fd510b"), e = e(), _e(), e), Be = { class: "zui-
359
454
  "stroke-width": "2",
360
455
  "stroke-linecap": "round",
361
456
  "stroke-linejoin": "round",
362
- innerHTML: h.tileIcon
363
- }, null, 8, Ye))
457
+ innerHTML: d.tileIcon
458
+ }, null, 8, ct))
364
459
  ], 4),
365
- r("span", Xe, [
460
+ r("span", ut, [
366
461
  r("span", {
367
462
  class: "gs-marked block truncate text-[14px] font-bold",
368
- innerHTML: h.titleHtml
369
- }, null, 8, Je),
463
+ innerHTML: d.titleHtml
464
+ }, null, 8, dt),
370
465
  r("span", {
371
466
  class: "gs-marked mt-0.5 block truncate text-[12.5px] text-[#5b6570] dark:text-content-muted",
372
- innerHTML: h.subtitleHtml
373
- }, null, 8, We)
467
+ innerHTML: d.subtitleHtml
468
+ }, null, 8, pt)
374
469
  ]),
375
- Ze
376
- ], 42, Qe))), 128))
470
+ ft
471
+ ], 42, it))), 128))
377
472
  ]))), 128))
378
473
  ], 512)
379
474
  ], 512)
380
- ], 32)) : v("", !0)
475
+ ], 32)) : m("", !0)
381
476
  ]));
382
477
  }
383
- }, tt = /* @__PURE__ */ Ie(et, [["__scopeId", "data-v-80fd510b"]]), ie = {
478
+ }, ht = /* @__PURE__ */ Oe(xt, [["__scopeId", "data-v-24311187"]]), pe = {
384
479
  "reference library": "RefLib",
385
480
  reflib: "RefLib",
386
481
  repository: "RefLib",
@@ -398,42 +493,42 @@ const Ue = (e) => (Se("data-v-80fd510b"), e = e(), _e(), e), Be = { class: "zui-
398
493
  directory: "Contact",
399
494
  "telephone directory": "Contact"
400
495
  };
401
- function nt(e) {
496
+ function yt(e) {
402
497
  if (!e)
403
498
  return "";
404
- const i = String(e).trim();
405
- if (!i)
499
+ const l = String(e).trim();
500
+ if (!l)
406
501
  return "";
407
- let o = null;
408
- if (Object.prototype.hasOwnProperty.call(D, i))
409
- o = i;
502
+ let n = null;
503
+ if (Object.prototype.hasOwnProperty.call(U, l))
504
+ n = l;
410
505
  else {
411
- const y = i.toLowerCase(), p = Object.keys(D).find((x) => x.toLowerCase() === y);
412
- p ? o = p : Object.prototype.hasOwnProperty.call(ie, y) && (o = ie[y]);
506
+ const h = l.toLowerCase(), f = Object.keys(U).find((y) => y.toLowerCase() === h);
507
+ f ? n = f : Object.prototype.hasOwnProperty.call(pe, h) && (n = pe[h]);
413
508
  }
414
- return !o || !Object.prototype.hasOwnProperty.call(D, o) ? "" : D[o].icon || "";
509
+ return !n || !Object.prototype.hasOwnProperty.call(U, n) ? "" : U[n].icon || "";
415
510
  }
416
- function ot(e) {
511
+ function vt(e) {
417
512
  if (!e)
418
513
  return "";
419
514
  if (e.dateText)
420
515
  return String(e.dateText);
421
- const i = e.notifyday != null ? String(e.notifyday).replace(/^0/, "") : "", o = e.notifymonthname ? String(e.notifymonthname) : "", y = e.notifyyear != null ? String(e.notifyyear) : "";
422
- return [i, o, y].filter(Boolean).join(" ");
516
+ const l = e.notifyday != null ? String(e.notifyday).replace(/^0/, "") : "", n = e.notifymonthname ? String(e.notifymonthname) : "", h = e.notifyyear != null ? String(e.notifyyear) : "";
517
+ return [l, n, h].filter(Boolean).join(" ");
423
518
  }
424
- const at = {
519
+ const mt = {
425
520
  key: 0,
426
521
  class: "absolute -right-[3px] -top-[3px] h-2 w-2 rounded-full bg-[#dd3730] ring-2 ring-white dark:ring-surface-raised"
427
- }, rt = { class: "absolute right-0 top-full z-30 mt-2 w-[400px] max-w-[90vw] origin-top-right overflow-hidden rounded-[10px] border-[1px] border-proclusteal-300 dark:border-line bg-surface-raised shadow-zeal-md" }, lt = { class: "max-h-[420px] overflow-y-auto" }, st = {
522
+ }, bt = { class: "absolute right-0 top-full z-30 mt-2 w-[400px] max-w-[90vw] origin-top-right overflow-hidden rounded-[10px] border-[1px] border-proclusteal-300 dark:border-line bg-surface-raised shadow-zeal-md" }, kt = { class: "max-h-[420px] overflow-y-auto" }, gt = {
428
523
  key: 0,
429
524
  class: "px-5 py-[26px] text-center text-[13px] font-medium text-[#667079] dark:text-content-muted"
430
- }, it = {
525
+ }, wt = {
431
526
  key: 1,
432
527
  class: "px-5 py-[26px] text-center text-[13px] font-medium text-[#667079] dark:text-content-muted"
433
- }, ct = ["onClick"], ut = { class: "inline-flex h-[42px] w-[42px] flex-none items-center justify-center rounded-[10px] bg-proclusteal-950 text-white" }, dt = ["innerHTML"], pt = { class: "min-w-0 flex-1" }, ft = { class: "block truncate text-[14px] font-bold text-[#1e262c] dark:text-content" }, xt = { class: "block truncate text-[12.5px] text-[#5b6570] dark:text-content-muted" }, ht = {
528
+ }, Ct = ["onClick"], $t = { class: "inline-flex h-[42px] w-[42px] flex-none items-center justify-center rounded-[10px] bg-proclusteal-950 text-white" }, _t = ["innerHTML"], St = { class: "min-w-0 flex-1" }, Mt = { class: "block truncate text-[14px] font-bold text-[#1e262c] dark:text-content" }, It = { class: "block truncate text-[12.5px] text-[#5b6570] dark:text-content-muted" }, At = {
434
529
  key: 0,
435
530
  class: "mt-0.5 block text-[12px] text-proclusteal-500 dark:text-content-muted"
436
- }, yt = { class: "flex flex-none flex-col items-center gap-2 pt-0.5 text-proclusteal-600 dark:text-content-muted" }, mt = ["onClick"], vt = ["onClick"], bt = ["href"], kt = {
531
+ }, Tt = { class: "flex flex-none flex-col items-center gap-2 pt-0.5 text-proclusteal-600 dark:text-content-muted" }, Nt = ["onClick"], zt = ["onClick"], Et = ["href"], Ht = {
437
532
  __name: "HeaderNotificationDropdown",
438
533
  props: {
439
534
  // The feed as /personal/GetNotifications.ashx returns it: { data: [...] }. Null means
@@ -461,41 +556,41 @@ const at = {
461
556
  }
462
557
  },
463
558
  emits: ["markAsRead", "deleteNotification", "navigate", "open"],
464
- setup(e, { emit: i }) {
465
- const o = e, y = i, p = k(null), x = k(!1), w = $(() => {
466
- var n;
467
- return ((n = o.notifications) == null ? void 0 : n.data) || [];
468
- }), _ = $(() => o.unreadCount !== null && o.unreadCount !== void 0 ? o.unreadCount > 0 : w.value.some((n) => n.ClassRead === "unread"));
469
- xe(p, () => {
470
- x.value = !1;
559
+ setup(e, { emit: l }) {
560
+ const n = e, h = l, f = k(null), y = k(!1), w = C(() => {
561
+ var o;
562
+ return ((o = n.notifications) == null ? void 0 : o.data) || [];
563
+ }), _ = C(() => n.unreadCount !== null && n.unreadCount !== void 0 ? n.unreadCount > 0 : w.value.some((o) => o.ClassRead === "unread"));
564
+ me(f, () => {
565
+ y.value = !1;
471
566
  });
472
567
  function A() {
473
- x.value = !x.value, x.value && y("open");
568
+ y.value = !y.value, y.value && h("open");
474
569
  }
475
- function g(n) {
476
- return n && Object.prototype.hasOwnProperty.call(o.iconMap, n) && o.iconMap[n] || null;
570
+ function g(o) {
571
+ return o && Object.prototype.hasOwnProperty.call(n.iconMap, o) && n.iconMap[o] || null;
477
572
  }
478
- function S(n) {
479
- const c = g(n.VueAppTypeIcon) || g(n.AppTypeName);
480
- if (c)
481
- return { component: c, path: "" };
482
- const d = nt(n.AppTypeName);
483
- return d ? { component: null, path: d } : { component: ae, path: "" };
573
+ function $(o) {
574
+ const u = g(o.VueAppTypeIcon) || g(o.AppTypeName);
575
+ if (u)
576
+ return { component: u, path: "" };
577
+ const p = yt(o.AppTypeName);
578
+ return p ? { component: null, path: p } : { component: ie, path: "" };
484
579
  }
485
- const m = $(() => w.value.map((n) => ({
486
- item: n,
487
- icon: S(n),
488
- date: ot(n),
489
- unread: n.ClassRead === "unread"
580
+ const v = C(() => w.value.map((o) => ({
581
+ item: o,
582
+ icon: $(o),
583
+ date: vt(o),
584
+ unread: o.ClassRead === "unread"
490
585
  })));
491
- function f(n) {
492
- x.value = !1;
493
- const c = O(n);
494
- c && y("navigate", c);
586
+ function x(o) {
587
+ y.value = !1;
588
+ const u = j(o);
589
+ u && h("navigate", u);
495
590
  }
496
- return (n, c) => (a(), u("div", {
591
+ return (o, u) => (a(), i("div", {
497
592
  ref_key: "rootEl",
498
- ref: p,
593
+ ref: f,
499
594
  class: "relative font-sans"
500
595
  }, [
501
596
  r("button", {
@@ -505,10 +600,10 @@ const at = {
505
600
  "aria-label": "View Notifications",
506
601
  onClick: A
507
602
  }, [
508
- T(ae, { class: "!h-[21px] !w-[21px]" }),
509
- _.value ? (a(), u("span", at)) : v("", !0)
603
+ I(ie, { class: "!h-[21px] !w-[21px]" }),
604
+ _.value ? (a(), i("span", mt)) : m("", !0)
510
605
  ]),
511
- T(ue, {
606
+ I(xe, {
512
607
  "enter-active-class": "transition-all ease-out duration-75",
513
608
  "enter-from-class": "scale-95 opacity-0",
514
609
  "enter-to-class": "scale-100 opacity-100",
@@ -516,20 +611,20 @@ const at = {
516
611
  "leave-from-class": "scale-100 opacity-100",
517
612
  "leave-to-class": "scale-95 opacity-0"
518
613
  }, {
519
- default: F(() => [
520
- G(r("div", rt, [
521
- r("div", lt, [
522
- e.notifications ? w.value.length ? v("", !0) : (a(), u("div", it, " No notifications. ")) : (a(), u("div", st, " Loading notifications… ")),
523
- (a(!0), u(H, null, P(m.value, (d) => (a(), u("div", {
524
- key: d.item.NotifyID,
525
- class: M(["flex cursor-pointer items-start gap-3 border-b-[1px] border-proclusteal-200 dark:border-line px-4 py-3", d.unread ? "bg-proclusteal-50 dark:bg-surface-hover" : "bg-surface-raised"]),
526
- onClick: (C) => f(d.item.url)
614
+ default: J(() => [
615
+ Y(r("div", bt, [
616
+ r("div", kt, [
617
+ e.notifications ? w.value.length ? m("", !0) : (a(), i("div", wt, " No notifications. ")) : (a(), i("div", gt, " Loading notifications… ")),
618
+ (a(!0), i(N, null, L(v.value, (p) => (a(), i("div", {
619
+ key: p.item.NotifyID,
620
+ class: M(["flex cursor-pointer items-start gap-3 border-b-[1px] border-proclusteal-200 dark:border-line px-4 py-3", p.unread ? "bg-proclusteal-50 dark:bg-surface-hover" : "bg-surface-raised"]),
621
+ onClick: (S) => x(p.item.url)
527
622
  }, [
528
- r("span", ut, [
529
- d.icon.component ? (a(), I(de(d.icon.component), {
623
+ r("span", $t, [
624
+ p.icon.component ? (a(), T(he(p.icon.component), {
530
625
  key: 0,
531
626
  class: "!h-5 !w-5"
532
- })) : (a(), u("svg", {
627
+ })) : (a(), i("svg", {
533
628
  key: 1,
534
629
  class: "h-5 w-5",
535
630
  viewBox: "0 0 24 24",
@@ -538,57 +633,57 @@ const at = {
538
633
  "stroke-width": "2",
539
634
  "stroke-linecap": "round",
540
635
  "stroke-linejoin": "round",
541
- innerHTML: d.icon.path
542
- }, null, 8, dt))
636
+ innerHTML: p.icon.path
637
+ }, null, 8, _t))
543
638
  ]),
544
- r("span", pt, [
545
- r("span", ft, b(d.item.notifyname), 1),
546
- r("span", xt, b(d.item.summary), 1),
547
- d.date ? (a(), u("span", ht, b(d.date), 1)) : v("", !0)
639
+ r("span", St, [
640
+ r("span", Mt, b(p.item.notifyname), 1),
641
+ r("span", It, b(p.item.summary), 1),
642
+ p.date ? (a(), i("span", At, b(p.date), 1)) : m("", !0)
548
643
  ]),
549
- r("span", yt, [
550
- d.unread ? (a(), u("button", {
644
+ r("span", Tt, [
645
+ p.unread ? (a(), i("button", {
551
646
  key: 0,
552
647
  type: "button",
553
648
  class: "hover:text-proclusteal-900 dark:hover:text-focus",
554
649
  title: "Mark notification as read",
555
650
  "aria-label": "Mark notification as read",
556
- onClick: N((C) => n.$emit("markAsRead", d.item.NotifyID), ["stop"])
651
+ onClick: E((S) => o.$emit("markAsRead", p.item.NotifyID), ["stop"])
557
652
  }, [
558
- T(Ee, { class: "!h-4 !w-4" })
559
- ], 8, mt)) : v("", !0),
653
+ I(Le, { class: "!h-4 !w-4" })
654
+ ], 8, Nt)) : m("", !0),
560
655
  r("button", {
561
656
  type: "button",
562
657
  class: "hover:text-[#dd3730]",
563
658
  title: "Delete notification",
564
659
  "aria-label": "Delete notification",
565
- onClick: N((C) => n.$emit("deleteNotification", d.item.NotifyID), ["stop"])
660
+ onClick: E((S) => o.$emit("deleteNotification", p.item.NotifyID), ["stop"])
566
661
  }, [
567
- T(Ne, { class: "!w-3" })
568
- ], 8, vt)
662
+ I(je, { class: "!w-3" })
663
+ ], 8, zt)
569
664
  ])
570
- ], 10, ct))), 128))
665
+ ], 10, Ct))), 128))
571
666
  ]),
572
667
  r("a", {
573
- href: Q(O)(e.notificationsUrl) || null,
668
+ href: W(j)(e.notificationsUrl) || null,
574
669
  class: "block border-t-[1px] border-proclusteal-200 dark:border-line px-4 py-2.5 text-center text-[13px] font-bold text-proclusteal-700 dark:text-content no-underline hover:bg-proclusteal-50 dark:hover:bg-surface-hover hover:text-proclusteal-900 dark:hover:text-focus",
575
- onClick: c[0] || (c[0] = N((d) => f(e.notificationsUrl), ["exact", "prevent"]))
576
- }, " See all notifications ", 8, bt)
670
+ onClick: u[0] || (u[0] = E((p) => x(e.notificationsUrl), ["exact", "prevent"]))
671
+ }, " See all notifications ", 8, Et)
577
672
  ], 512), [
578
- [pe, x.value]
673
+ [ye, y.value]
579
674
  ])
580
675
  ]),
581
676
  _: 1
582
677
  })
583
678
  ], 512));
584
679
  }
585
- }, gt = ["src"], wt = {
680
+ }, Ot = ["src"], Lt = {
586
681
  key: 1,
587
682
  class: "inline-flex h-[34px] w-[34px] items-center justify-center rounded-full bg-proclusteal-900 text-[13px] font-bold uppercase leading-none tracking-[0.5px] text-white"
588
- }, Ct = { class: "absolute right-0 top-full z-30 mt-2 w-[260px] origin-top-right rounded-[10px] border-[1px] border-proclusteal-300 dark:border-line bg-surface-raised py-1 shadow-zeal-md" }, $t = { class: "flex max-w-[260px] flex-col gap-0.5 whitespace-normal px-[18px] pb-2.5 pt-3" }, St = { class: "block text-[14px] font-bold text-proclusteal-800 dark:text-content" }, _t = /* @__PURE__ */ r("span", { class: "my-1.5 block h-0.5 w-8 flex-none rounded-[1px] bg-[#cdd4da] dark:bg-line-strong" }, null, -1), Mt = { class: "block break-words text-[12px] leading-[1.3] text-proclusteal-600 dark:text-content-muted" }, Tt = /* @__PURE__ */ r("div", { class: "h-px bg-proclusteal-200 dark:bg-line" }, null, -1), At = {
683
+ }, jt = { class: "absolute right-0 top-full z-30 mt-2 w-[260px] origin-top-right rounded-[10px] border-[1px] border-proclusteal-300 dark:border-line bg-surface-raised py-1 shadow-zeal-md" }, Dt = { class: "flex max-w-[260px] flex-col gap-0.5 whitespace-normal px-[18px] pb-2.5 pt-3" }, Pt = { class: "block text-[14px] font-bold text-proclusteal-800 dark:text-content" }, Ut = /* @__PURE__ */ r("span", { class: "my-1.5 block h-0.5 w-8 flex-none rounded-[1px] bg-[#cdd4da] dark:bg-line-strong" }, null, -1), Bt = { class: "block break-words text-[12px] leading-[1.3] text-proclusteal-600 dark:text-content-muted" }, Rt = /* @__PURE__ */ r("div", { class: "h-px bg-proclusteal-200 dark:bg-line" }, null, -1), Vt = {
589
684
  key: 0,
590
685
  class: "my-1 h-px bg-proclusteal-200 dark:bg-line"
591
- }, It = ["href", "onClick"], Et = {
686
+ }, Kt = ["href", "onClick"], Wt = {
592
687
  __name: "HeaderUserMenu",
593
688
  props: {
594
689
  user: {
@@ -601,21 +696,21 @@ const at = {
601
696
  }
602
697
  },
603
698
  emits: ["select"],
604
- setup(e, { emit: i }) {
605
- const o = e, y = i, p = k(null), x = k(!1), w = k(!1);
606
- K(() => o.user.avatarUrl, () => {
699
+ setup(e, { emit: l }) {
700
+ const n = e, h = l, f = k(null), y = k(!1), w = k(!1);
701
+ q(() => n.user.avatarUrl, () => {
607
702
  w.value = !1;
608
703
  });
609
- const _ = $(() => `${o.user.firstName || ""} ${o.user.surname || ""}`.trim()), A = $(() => `${(o.user.firstName || "").charAt(0)}${(o.user.surname || "").charAt(0)}`.toUpperCase());
610
- xe(p, () => {
611
- x.value = !1;
704
+ const _ = C(() => `${n.user.firstName || ""} ${n.user.surname || ""}`.trim()), A = C(() => `${(n.user.firstName || "").charAt(0)}${(n.user.surname || "").charAt(0)}`.toUpperCase());
705
+ me(f, () => {
706
+ y.value = !1;
612
707
  });
613
- function g(S) {
614
- x.value = !1, y("select", S);
708
+ function g($) {
709
+ y.value = !1, h("select", $);
615
710
  }
616
- return (S, m) => (a(), u("div", {
711
+ return ($, v) => (a(), i("div", {
617
712
  ref_key: "rootEl",
618
- ref: p,
713
+ ref: f,
619
714
  class: "relative font-sans"
620
715
  }, [
621
716
  r("button", {
@@ -623,17 +718,17 @@ const at = {
623
718
  class: "flex cursor-pointer items-center justify-center",
624
719
  title: "View Menu Options",
625
720
  "aria-label": "View Menu Options",
626
- onClick: m[1] || (m[1] = (f) => x.value = !x.value)
721
+ onClick: v[1] || (v[1] = (x) => y.value = !y.value)
627
722
  }, [
628
- e.user.avatarUrl && !w.value ? (a(), u("img", {
723
+ e.user.avatarUrl && !w.value ? (a(), i("img", {
629
724
  key: 0,
630
725
  src: e.user.avatarUrl,
631
726
  alt: "",
632
727
  class: "h-[34px] w-[34px] rounded-full object-cover",
633
- onError: m[0] || (m[0] = (f) => w.value = !0)
634
- }, null, 40, gt)) : (a(), u("span", wt, b(A.value), 1))
728
+ onError: v[0] || (v[0] = (x) => w.value = !0)
729
+ }, null, 40, Ot)) : (a(), i("span", Lt, b(A.value), 1))
635
730
  ]),
636
- T(ue, {
731
+ I(xe, {
637
732
  "enter-active-class": "transition-all ease-out duration-75",
638
733
  "enter-from-class": "scale-95 opacity-0",
639
734
  "enter-to-class": "scale-100 opacity-100",
@@ -641,43 +736,43 @@ const at = {
641
736
  "leave-from-class": "scale-100 opacity-100",
642
737
  "leave-to-class": "scale-95 opacity-0"
643
738
  }, {
644
- default: F(() => [
645
- G(r("div", Ct, [
646
- r("div", $t, [
647
- r("span", St, b(_.value), 1),
648
- _t,
649
- r("span", Mt, b(e.user.orgName), 1)
739
+ default: J(() => [
740
+ Y(r("div", jt, [
741
+ r("div", Dt, [
742
+ r("span", Pt, b(_.value), 1),
743
+ Ut,
744
+ r("span", Bt, b(e.user.orgName), 1)
650
745
  ]),
651
- Tt,
652
- (a(!0), u(H, null, P(e.menuItems, (f, n) => (a(), u(H, { key: n }, [
653
- f.divider ? (a(), u("div", At)) : (a(), u("a", {
746
+ Rt,
747
+ (a(!0), i(N, null, L(e.menuItems, (x, o) => (a(), i(N, { key: o }, [
748
+ x.divider ? (a(), i("div", Vt)) : (a(), i("a", {
654
749
  key: 1,
655
- href: f.href && Q(O)(f.href) || null,
750
+ href: x.href && W(j)(x.href) || null,
656
751
  class: "flex items-center gap-2.5 px-[18px] py-2 text-[13px] font-semibold text-proclusteal-700 dark:text-content no-underline hover:bg-proclusteal-50 dark:hover:bg-surface-hover hover:text-proclusteal-900 dark:hover:text-focus",
657
- onClick: N((c) => g(f), ["exact", "prevent"])
752
+ onClick: E((u) => g(x), ["exact", "prevent"])
658
753
  }, [
659
- f.icon ? (a(), I(de(f.icon), {
754
+ x.icon ? (a(), T(he(x.icon), {
660
755
  key: 0,
661
756
  class: "!h-4 !w-4 flex-none"
662
- })) : v("", !0),
663
- r("span", null, b(f.label), 1)
664
- ], 8, It))
757
+ })) : m("", !0),
758
+ r("span", null, b(x.label), 1)
759
+ ], 8, Kt))
665
760
  ], 64))), 128))
666
761
  ], 512), [
667
- [pe, x.value]
762
+ [ye, y.value]
668
763
  ])
669
764
  ]),
670
765
  _: 1
671
766
  })
672
767
  ], 512));
673
768
  }
674
- }, Nt = { class: "flex h-[70px] shrink-0 items-center justify-between border-b-[1px] border-proclusteal-300 dark:border-line bg-surface-raised px-[15px] font-sans shadow-[0_1px_3px_rgba(20,40,45,0.05)] sm:px-[25px]" }, Ht = { class: "flex min-w-0 items-center gap-[18px]" }, Ot = {
769
+ }, qt = { class: "flex h-[70px] shrink-0 items-center justify-between border-b-[1px] border-proclusteal-300 dark:border-line bg-surface-raised px-[15px] font-sans shadow-[0_1px_3px_rgba(20,40,45,0.05)] sm:px-[25px]" }, Gt = { class: "flex min-w-0 items-center gap-[18px]" }, Ft = {
675
770
  key: 0,
676
771
  class: "hidden whitespace-nowrap text-[18px] font-semibold text-proclusteal-800 dark:text-content sm:inline"
677
- }, Lt = {
772
+ }, Yt = {
678
773
  key: 0,
679
774
  class: "font-normal text-black-800 dark:text-content-muted"
680
- }, zt = ["href", "aria-label"], Dt = { class: "flex items-center gap-[18px] sm:gap-[25px]" }, Qt = {
775
+ }, Jt = ["href", "aria-label"], Qt = { class: "flex items-center gap-[18px] sm:gap-[25px]" }, cn = {
681
776
  __name: "AppHeader",
682
777
  props: {
683
778
  title: {
@@ -744,6 +839,13 @@ const at = {
744
839
  searchTypes: {
745
840
  type: Object,
746
841
  default: () => ({})
842
+ },
843
+ // #479: gate for the three top-right icons (search pill, bell, profile). Default true so
844
+ // existing consumers are unaffected; an app that loads its header data asynchronously passes
845
+ // false until user + notifications + search have all settled, then true to reveal all at once.
846
+ ready: {
847
+ type: Boolean,
848
+ default: !0
747
849
  }
748
850
  },
749
851
  emits: [
@@ -754,114 +856,116 @@ const at = {
754
856
  "deleteNotification",
755
857
  "notifications-open"
756
858
  ],
757
- setup(e, { emit: i }) {
758
- const o = e, y = i, p = ce(), x = k(!1), w = $(() => !!o.notifications || o.unreadCount !== null && o.unreadCount !== void 0), _ = $(() => he(o.accentColour)), A = $(() => _.value || "#1c6f63");
759
- function g(n) {
760
- var d, C;
761
- if (!n)
859
+ setup(e, { emit: l }) {
860
+ const n = e, h = l, f = fe(), y = k(!1), w = C(() => !!n.notifications || n.unreadCount !== null && n.unreadCount !== void 0), _ = C(() => be(n.accentColour)), A = C(() => _.value || "#1c6f63");
861
+ function g(o) {
862
+ var p, S;
863
+ if (!o)
762
864
  return;
763
- const c = O(n);
764
- c && (y("navigate", c), (C = (d = p == null ? void 0 : p.vnode) == null ? void 0 : d.props) != null && C.onNavigate || (window.location.href = c));
865
+ const u = j(o);
866
+ u && (h("navigate", u), (S = (p = f == null ? void 0 : f.vnode) == null ? void 0 : p.props) != null && S.onNavigate || (window.location.href = u));
765
867
  }
766
- function S() {
767
- y("home"), g(o.homeUrl);
868
+ function $() {
869
+ h("home"), g(n.homeUrl);
768
870
  }
769
- function m() {
871
+ function v() {
770
872
  window.history.back();
771
873
  }
772
- function f(n) {
773
- y("menu-select", n), n.href && g(n.href);
874
+ function x(o) {
875
+ h("menu-select", o), o.href && g(o.href);
774
876
  }
775
- return (n, c) => (a(), u("header", Nt, [
776
- r("div", Ht, [
777
- R(n.$slots, "logo"),
778
- e.title ? (a(), u("span", Ot, [
779
- j(b(e.title), 1),
780
- e.subtitle ? (a(), u("span", Lt, " " + b(e.subtitle), 1)) : v("", !0)
781
- ])) : v("", !0),
782
- _.value ? (a(), u("span", {
877
+ return (o, u) => (a(), i("header", qt, [
878
+ r("div", Gt, [
879
+ V(o.$slots, "logo"),
880
+ e.title ? (a(), i("span", Ft, [
881
+ B(b(e.title), 1),
882
+ e.subtitle ? (a(), i("span", Yt, " " + b(e.subtitle), 1)) : m("", !0)
883
+ ])) : m("", !0),
884
+ _.value ? (a(), i("span", {
783
885
  key: 1,
784
886
  class: "h-[45px] w-[2px] shrink-0",
785
- style: q({ background: _.value }),
887
+ style: G({ background: _.value }),
786
888
  "aria-hidden": "true"
787
- }, null, 4)) : v("", !0),
889
+ }, null, 4)) : m("", !0),
788
890
  r("nav", {
789
891
  class: "flex items-center gap-7 text-proclusteal-600 dark:text-content-muted",
790
- style: q({ "--hdr-accent": A.value })
892
+ style: G({ "--hdr-accent": A.value })
791
893
  }, [
792
- e.homeUrl ? (a(), I(Ae, {
894
+ e.homeUrl ? (a(), T(He, {
793
895
  key: 0,
794
896
  text: e.homeTooltip,
795
897
  position: "bottom"
796
898
  }, {
797
- default: F(() => [
899
+ default: J(() => [
798
900
  r("a", {
799
- href: Q(O)(e.homeUrl) || null,
901
+ href: W(j)(e.homeUrl) || null,
800
902
  class: "hover:text-[var(--hdr-accent)]",
801
903
  "aria-label": e.homeTooltip,
802
- onClick: N(S, ["exact", "prevent"])
904
+ onClick: E($, ["exact", "prevent"])
803
905
  }, [
804
- T(Me, { class: "!h-[22px] !w-[22px]" })
805
- ], 8, zt)
906
+ I(ze, { class: "!h-[22px] !w-[22px]" })
907
+ ], 8, Jt)
806
908
  ]),
807
909
  _: 1
808
- }, 8, ["text"])) : v("", !0),
809
- e.showBack ? (a(), u("button", {
910
+ }, 8, ["text"])) : m("", !0),
911
+ e.showBack ? (a(), i("button", {
810
912
  key: 1,
811
913
  type: "button",
812
914
  class: "cursor-pointer hover:text-[var(--hdr-accent)]",
813
915
  title: "Go Back",
814
916
  "aria-label": "Go Back",
815
- onClick: m
917
+ onClick: v
816
918
  }, [
817
- T(Te, { class: "!h-[22px] !w-[22px]" })
818
- ])) : v("", !0),
819
- R(n.$slots, "nav-extra")
919
+ I(Ee, { class: "!h-[22px] !w-[22px]" })
920
+ ])) : m("", !0),
921
+ V(o.$slots, "nav-extra")
820
922
  ], 4),
821
- R(n.$slots, "left")
923
+ V(o.$slots, "left")
822
924
  ]),
823
- r("div", Dt, [
824
- R(n.$slots, "right"),
825
- e.searchProvider ? (a(), I(Le, {
826
- key: 0,
827
- onClick: c[0] || (c[0] = (d) => x.value = !0)
828
- })) : v("", !0),
829
- w.value ? (a(), I(kt, {
830
- key: 1,
831
- notifications: e.notifications,
832
- "unread-count": e.unreadCount,
833
- "notifications-url": e.notificationsUrl,
834
- "icon-map": e.notificationIconMap,
835
- onMarkAsRead: c[1] || (c[1] = (d) => n.$emit("markAsRead", d)),
836
- onDeleteNotification: c[2] || (c[2] = (d) => n.$emit("deleteNotification", d)),
837
- onOpen: c[3] || (c[3] = (d) => n.$emit("notifications-open")),
838
- onNavigate: g
839
- }, null, 8, ["notifications", "unread-count", "notifications-url", "icon-map"])) : v("", !0),
840
- e.user ? (a(), I(Et, {
841
- key: 2,
842
- user: e.user,
843
- "menu-items": e.menuItems,
844
- onSelect: f
845
- }, null, 8, ["user", "menu-items"])) : v("", !0)
925
+ r("div", Qt, [
926
+ V(o.$slots, "right"),
927
+ e.ready ? (a(), i(N, { key: 0 }, [
928
+ e.searchProvider ? (a(), T(Ue, {
929
+ key: 0,
930
+ onClick: u[0] || (u[0] = (p) => y.value = !0)
931
+ })) : m("", !0),
932
+ w.value ? (a(), T(Ht, {
933
+ key: 1,
934
+ notifications: e.notifications,
935
+ "unread-count": e.unreadCount,
936
+ "notifications-url": e.notificationsUrl,
937
+ "icon-map": e.notificationIconMap,
938
+ onMarkAsRead: u[1] || (u[1] = (p) => o.$emit("markAsRead", p)),
939
+ onDeleteNotification: u[2] || (u[2] = (p) => o.$emit("deleteNotification", p)),
940
+ onOpen: u[3] || (u[3] = (p) => o.$emit("notifications-open")),
941
+ onNavigate: g
942
+ }, null, 8, ["notifications", "unread-count", "notifications-url", "icon-map"])) : m("", !0),
943
+ e.user ? (a(), T(Wt, {
944
+ key: 2,
945
+ user: e.user,
946
+ "menu-items": e.menuItems,
947
+ onSelect: x
948
+ }, null, 8, ["user", "menu-items"])) : m("", !0)
949
+ ], 64)) : m("", !0)
846
950
  ]),
847
- e.searchProvider ? (a(), I(tt, {
951
+ e.searchProvider ? (a(), T(ht, {
848
952
  key: 0,
849
- open: x.value,
850
- "onUpdate:open": c[4] || (c[4] = (d) => x.value = d),
953
+ open: y.value,
954
+ "onUpdate:open": u[4] || (u[4] = (p) => y.value = p),
851
955
  "search-provider": e.searchProvider,
852
956
  placeholder: e.searchPlaceholder,
853
957
  types: e.searchTypes,
854
958
  onNavigate: g
855
- }, null, 8, ["open", "search-provider", "placeholder", "types"])) : v("", !0)
959
+ }, null, 8, ["open", "search-provider", "placeholder", "types"])) : m("", !0)
856
960
  ]));
857
961
  }
858
962
  };
859
963
  export {
860
- Qt as AppHeader,
861
- D as DEFAULT_SEARCH_TYPES,
862
- tt as GlobalSearchModal,
863
- Le as GlobalSearchPill,
864
- kt as HeaderNotificationDropdown,
865
- Et as HeaderUserMenu,
866
- O as safeUrl
964
+ cn as AppHeader,
965
+ U as DEFAULT_SEARCH_TYPES,
966
+ ht as GlobalSearchModal,
967
+ Ue as GlobalSearchPill,
968
+ Ht as HeaderNotificationDropdown,
969
+ Wt as HeaderUserMenu,
970
+ j as safeUrl
867
971
  };