@zealsolutions/zeal-ui 1.0.0-alpha.341 → 1.0.0-alpha.343
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/header/index.js +89 -89
- package/dist/config/tailwind/index.js +49 -0
- package/dist/css/theme.css +85 -0
- package/dist/style.css +1 -1
- package/package.json +120 -119
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import { openBlock as l, createElementBlock as u, createVNode as T, createElementVNode as a, createTextVNode as
|
|
1
|
+
import { openBlock as l, createElementBlock as u, createVNode as T, createElementVNode as a, createTextVNode as j, mergeModels as te, useModel as ge, getCurrentInstance as ie, ref as g, computed as $, watch as K, nextTick as ne, onMounted as ke, onBeforeUnmount as we, createBlock as E, Teleport as Ce, withModifiers as N, withDirectives as G, vModelText as $e, createCommentVNode as m, normalizeClass as M, toDisplayString as b, Fragment as H, renderList as P, normalizeStyle as q, pushScopeId as Se, popScopeId as _e, Transition as ce, withCtx as ue, resolveDynamicComponent as pe, unref as F, vShow as de, renderSlot as V } from "vue";
|
|
2
2
|
import Me from "../../HouseIcon-BxmNyxvv.js";
|
|
3
3
|
import Te from "../../ArrowLeftIcon-Cgsy08pY.js";
|
|
4
4
|
import fe from "../../MagnifyingGlassIcon-ChYNIA-H.js";
|
|
5
5
|
import { _ as Ae } from "../../_plugin-vue_export-helper-CHgC5LLL.js";
|
|
6
|
-
import { o as
|
|
6
|
+
import { o as he } from "../../index-CedrSBIl.js";
|
|
7
7
|
import oe from "../../BellIcon-lK5EZXNf.js";
|
|
8
8
|
import Ie from "../../CircleCheckIcon-CA15yXgI.js";
|
|
9
9
|
import Ee from "../../XMarkIcon-DKJ_--uA.js";
|
|
10
|
-
const Ne = /* @__PURE__ */ a("span", { class: "hidden whitespace-nowrap sm:inline" }, "Search", -1), He = /* @__PURE__ */ a("kbd", { class: "hidden items-center gap-px rounded border border-proclusteal-300 bg-proclusteal-100 px-[5px] py-0.5 font-sans text-[11px] font-bold leading-none text-proclusteal-500 sm:inline-flex" }, [
|
|
10
|
+
const Ne = /* @__PURE__ */ a("span", { class: "hidden whitespace-nowrap sm:inline" }, "Search", -1), He = /* @__PURE__ */ a("kbd", { class: "zui-search-kbd hidden items-center gap-px rounded border border-proclusteal-300 bg-proclusteal-100 px-[5px] py-0.5 font-sans text-[11px] font-bold leading-none text-proclusteal-500 sm:inline-flex" }, [
|
|
11
11
|
/* @__PURE__ */ a("span", null, "⌘"),
|
|
12
|
-
/* @__PURE__ */
|
|
12
|
+
/* @__PURE__ */ j("K ")
|
|
13
13
|
], -1), Oe = {
|
|
14
14
|
__name: "GlobalSearchPill",
|
|
15
15
|
emits: ["click"],
|
|
16
16
|
setup(e) {
|
|
17
17
|
return (i, o) => (l(), u("button", {
|
|
18
18
|
type: "button",
|
|
19
|
-
class: "inline-flex h-[34px] cursor-pointer items-center justify-center gap-[7px] rounded-lg border border-proclusteal-300 bg-white pl-[11px] pr-[9px] font-sans text-[13px] font-semibold text-proclusteal-600 transition-[border-color,color,box-shadow] duration-150 hover:border-proclusteal-950 hover:text-proclusteal-800 hover:shadow-[0_1px_3px_rgba(20,40,45,0.08)] focus:border-proclusteal-950 focus:text-proclusteal-800 focus:outline-none",
|
|
19
|
+
class: "zui-search-pill inline-flex h-[34px] cursor-pointer items-center justify-center gap-[7px] rounded-lg border border-proclusteal-300 bg-white pl-[11px] pr-[9px] font-sans text-[13px] font-semibold text-proclusteal-600 transition-[border-color,color,box-shadow] duration-150 hover:border-proclusteal-950 hover:text-proclusteal-800 hover:shadow-[0_1px_3px_rgba(20,40,45,0.08)] focus:border-proclusteal-950 focus:text-proclusteal-800 focus:outline-none",
|
|
20
20
|
title: "Search (Ctrl K)",
|
|
21
21
|
"aria-label": "Search (Ctrl K)",
|
|
22
22
|
onClick: o[0] || (o[0] = (y) => i.$emit("click"))
|
|
@@ -26,7 +26,7 @@ const Ne = /* @__PURE__ */ a("span", { class: "hidden whitespace-nowrap sm:inlin
|
|
|
26
26
|
He
|
|
27
27
|
]));
|
|
28
28
|
}
|
|
29
|
-
},
|
|
29
|
+
}, D = {
|
|
30
30
|
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"/>' },
|
|
31
31
|
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"/>' },
|
|
32
32
|
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"/>' },
|
|
@@ -43,11 +43,11 @@ const Ne = /* @__PURE__ */ a("span", { class: "hidden whitespace-nowrap sm:inlin
|
|
|
43
43
|
colour: "#9aa4ad",
|
|
44
44
|
icon: '<circle cx="11" cy="11" r="7"/><line x1="21" y1="21" x2="16.65" y2="16.65"/>'
|
|
45
45
|
};
|
|
46
|
-
function
|
|
47
|
-
const o = { ...
|
|
46
|
+
function ze(e, i = {}) {
|
|
47
|
+
const o = { ...D, ...i };
|
|
48
48
|
return Object.prototype.hasOwnProperty.call(o, e) ? o[e] : { ...Le, label: e };
|
|
49
49
|
}
|
|
50
|
-
function
|
|
50
|
+
function De(e) {
|
|
51
51
|
return (e == null ? "" : String(e)).replace(/[&<>"']/g, (i) => ({
|
|
52
52
|
"&": "&",
|
|
53
53
|
"<": "<",
|
|
@@ -56,7 +56,7 @@ function je(e) {
|
|
|
56
56
|
"'": "'"
|
|
57
57
|
})[i]);
|
|
58
58
|
}
|
|
59
|
-
function
|
|
59
|
+
function xe(e) {
|
|
60
60
|
if (!e)
|
|
61
61
|
return "";
|
|
62
62
|
const i = String(e).trim();
|
|
@@ -76,23 +76,23 @@ function O(e) {
|
|
|
76
76
|
}
|
|
77
77
|
return o.protocol === "http:" || o.protocol === "https:" ? i : "";
|
|
78
78
|
}
|
|
79
|
-
function
|
|
79
|
+
function je(e) {
|
|
80
80
|
return String(e || "").toLowerCase().split(/\s+/).filter((i) => i.length >= 2);
|
|
81
81
|
}
|
|
82
82
|
function le(e, i) {
|
|
83
|
-
const o =
|
|
83
|
+
const o = De(e);
|
|
84
84
|
if (!i || !i.length)
|
|
85
85
|
return o;
|
|
86
86
|
const y = new RegExp(`(${i.map((d) => d.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join("|")})`, "ig");
|
|
87
87
|
return o.replace(y, "<mark>$1</mark>");
|
|
88
88
|
}
|
|
89
|
-
const
|
|
89
|
+
const Pe = (e) => (Se("data-v-facb4f52"), e = e(), _e(), e), Ue = { class: "zui-search-field flex items-center gap-2.5 border-b border-proclusteal-200 px-4 py-3.5" }, Be = ["placeholder"], Re = {
|
|
90
90
|
key: 0,
|
|
91
91
|
class: "px-[18px] pb-0.5 pt-3.5 text-[15px] font-extrabold text-[#1e262c]"
|
|
92
92
|
}, Ve = {
|
|
93
93
|
key: 1,
|
|
94
94
|
class: "border-b border-proclusteal-200 px-[18px] pb-3 pt-2.5"
|
|
95
|
-
}, Ke = ["onClick"], qe = { class: "sticky top-0 z-[1] border-t border-proclusteal-200 bg-proclusteal-150 px-[18px] py-2 text-[12px] font-extrabold tracking-[0.3px] text-proclusteal-700" }, Ge = { class: "ml-0.5 text-[#667079]" }, Fe = ["href", "data-row-idx", "onClick", "onMouseenter"], Qe = ["innerHTML"], Ye = { class: "min-w-0 flex-1" }, Xe = ["innerHTML"], Je = ["innerHTML"], We = /* @__PURE__ */
|
|
95
|
+
}, Ke = ["onClick"], qe = { class: "zui-search-group sticky top-0 z-[1] border-t border-proclusteal-200 bg-proclusteal-150 px-[18px] py-2 text-[12px] font-extrabold tracking-[0.3px] text-proclusteal-700" }, Ge = { class: "ml-0.5 text-[#667079]" }, Fe = ["href", "data-row-idx", "onClick", "onMouseenter"], Qe = ["innerHTML"], Ye = { class: "min-w-0 flex-1" }, Xe = ["innerHTML"], Je = ["innerHTML"], We = /* @__PURE__ */ Pe(() => /* @__PURE__ */ a("svg", {
|
|
96
96
|
class: "h-4 w-4 flex-none text-[#c2cad1]",
|
|
97
97
|
viewBox: "0 0 24 24",
|
|
98
98
|
fill: "none",
|
|
@@ -102,7 +102,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
102
102
|
"stroke-linejoin": "round"
|
|
103
103
|
}, [
|
|
104
104
|
/* @__PURE__ */ a("polyline", { points: "9 18 15 12 9 6" })
|
|
105
|
-
], -1)), ae = "mb-2 mr-2 inline-flex cursor-pointer items-center gap-[7px] rounded-[20px] border border-[#dde3e8] bg-[#f4f6f8] px-3.5 py-1.5 text-[13px] font-bold text-proclusteal-700 hover:border-proclusteal-950", re = "!border-proclusteal-950 !bg-proclusteal-950 !text-white", R = "px-5 py-[26px] text-center text-[13px] font-medium text-[#667079]", Ze = {
|
|
105
|
+
], -1)), ae = "zui-search-chip mb-2 mr-2 inline-flex cursor-pointer items-center gap-[7px] rounded-[20px] border border-[#dde3e8] bg-[#f4f6f8] px-3.5 py-1.5 text-[13px] font-bold text-proclusteal-700 hover:border-proclusteal-950", re = "!border-proclusteal-950 !bg-proclusteal-950 !text-white", R = "zui-search-state px-5 py-[26px] text-center text-[13px] font-medium text-[#667079]", Ze = {
|
|
106
106
|
__name: "GlobalSearchModal",
|
|
107
107
|
props: /* @__PURE__ */ te({
|
|
108
108
|
searchProvider: {
|
|
@@ -131,47 +131,47 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
131
131
|
}),
|
|
132
132
|
emits: /* @__PURE__ */ te(["navigate"], ["update:open"]),
|
|
133
133
|
setup(e, { emit: i }) {
|
|
134
|
-
const o = e, y = i, d = ge(e, "open"),
|
|
134
|
+
const o = e, y = i, d = ge(e, "open"), h = ie(), w = g(null), _ = g(null), A = g(null), k = g(""), S = g(""), v = g([]), f = g("all"), n = g("zero"), c = g(-1);
|
|
135
135
|
let p = null, C = 0, L = null, I = null;
|
|
136
|
-
const Q = $(() =>
|
|
136
|
+
const Q = $(() => je(S.value)), Y = (t) => ze(t, o.types), X = $(() => {
|
|
137
137
|
let t = 0;
|
|
138
138
|
return v.value.filter((s) => f.value === "all" || s.type === f.value).map((s) => {
|
|
139
139
|
const r = Y(s.type);
|
|
140
140
|
return {
|
|
141
141
|
type: s.type,
|
|
142
142
|
label: r.label,
|
|
143
|
-
items: s.items.map((
|
|
144
|
-
url: O(
|
|
145
|
-
titleHtml: le(
|
|
146
|
-
subtitleHtml: le(
|
|
147
|
-
tileColour:
|
|
143
|
+
items: s.items.map((x) => ({
|
|
144
|
+
url: O(x.Url),
|
|
145
|
+
titleHtml: le(x.Title, Q.value),
|
|
146
|
+
subtitleHtml: le(x.Subtitle, Q.value),
|
|
147
|
+
tileColour: xe(x.Colour) || r.colour,
|
|
148
148
|
tileIcon: r.icon,
|
|
149
149
|
flatIdx: t++
|
|
150
150
|
}))
|
|
151
151
|
};
|
|
152
152
|
});
|
|
153
153
|
}), J = $(() => X.value.flatMap((t) => t.items)), ye = $(() => v.value.reduce((t, s) => t + s.items.length, 0));
|
|
154
|
-
function
|
|
154
|
+
function U(t) {
|
|
155
155
|
const s = J.value;
|
|
156
156
|
if (!s.length) {
|
|
157
157
|
c.value = -1;
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
160
|
c.value = Math.min(Math.max(t, 0), s.length - 1), ne(() => {
|
|
161
|
-
var
|
|
162
|
-
const r = (
|
|
161
|
+
var x;
|
|
162
|
+
const r = (x = A.value) == null ? void 0 : x.querySelector(`[data-row-idx="${c.value}"]`);
|
|
163
163
|
r == null || r.scrollIntoView({ block: "nearest" });
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
function W(t) {
|
|
167
167
|
var s;
|
|
168
|
-
f.value = t,
|
|
168
|
+
f.value = t, U(0), (s = w.value) == null || s.focus();
|
|
169
169
|
}
|
|
170
170
|
function Z(t) {
|
|
171
171
|
var s, r;
|
|
172
|
-
t && (y("navigate", t), (r = (s =
|
|
172
|
+
t && (y("navigate", t), (r = (s = h == null ? void 0 : h.vnode) == null ? void 0 : s.props) != null && r.onNavigate || (window.location.href = t), z());
|
|
173
173
|
}
|
|
174
|
-
function
|
|
174
|
+
function z() {
|
|
175
175
|
d.value = !1;
|
|
176
176
|
}
|
|
177
177
|
async function ve(t) {
|
|
@@ -181,7 +181,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
181
181
|
const r = await o.searchProvider(t);
|
|
182
182
|
if (s !== C || !d.value)
|
|
183
183
|
return;
|
|
184
|
-
v.value = r && r.groups || [], f.value = "all", n.value = v.value.length ? "results" : "empty",
|
|
184
|
+
v.value = r && r.groups || [], f.value = "all", n.value = v.value.length ? "results" : "empty", U(0);
|
|
185
185
|
} catch {
|
|
186
186
|
if (s !== C || !d.value)
|
|
187
187
|
return;
|
|
@@ -205,15 +205,15 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
205
205
|
function me(t) {
|
|
206
206
|
var s;
|
|
207
207
|
if (t.key === "Escape") {
|
|
208
|
-
t.preventDefault(),
|
|
208
|
+
t.preventDefault(), z();
|
|
209
209
|
return;
|
|
210
210
|
}
|
|
211
211
|
if (t.key === "ArrowDown") {
|
|
212
|
-
t.preventDefault(),
|
|
212
|
+
t.preventDefault(), U(c.value + 1);
|
|
213
213
|
return;
|
|
214
214
|
}
|
|
215
215
|
if (t.key === "ArrowUp") {
|
|
216
|
-
t.preventDefault(),
|
|
216
|
+
t.preventDefault(), U(c.value - 1);
|
|
217
217
|
return;
|
|
218
218
|
}
|
|
219
219
|
if (t.key === "Enter") {
|
|
@@ -229,8 +229,8 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
229
229
|
const r = (s = _.value) == null ? void 0 : s.querySelectorAll('input, button, a[href], [tabindex]:not([tabindex="-1"])');
|
|
230
230
|
if (!(r != null && r.length))
|
|
231
231
|
return;
|
|
232
|
-
const
|
|
233
|
-
t.shiftKey && document.activeElement ===
|
|
232
|
+
const x = r[0], B = r[r.length - 1];
|
|
233
|
+
t.shiftKey && document.activeElement === x ? (t.preventDefault(), B.focus()) : !t.shiftKey && document.activeElement === B && (t.preventDefault(), x.focus());
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
function be(t) {
|
|
@@ -241,7 +241,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
241
241
|
}
|
|
242
242
|
function ee(t) {
|
|
243
243
|
if (t.key === "Escape" && d.value) {
|
|
244
|
-
t.preventDefault(),
|
|
244
|
+
t.preventDefault(), z();
|
|
245
245
|
return;
|
|
246
246
|
}
|
|
247
247
|
if ((t.ctrlKey || t.metaKey) && (t.key === "k" || t.key === "K")) {
|
|
@@ -257,19 +257,19 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
257
257
|
}), (t, s) => (l(), E(Ce, { to: "body" }, [
|
|
258
258
|
d.value ? (l(), u("div", {
|
|
259
259
|
key: 0,
|
|
260
|
-
class: "fixed inset-0 z-[20000] flex items-start justify-center bg-[#11181c]/45",
|
|
261
|
-
onMousedown: N(
|
|
260
|
+
class: "zui-search-overlay fixed inset-0 z-[20000] flex items-start justify-center bg-[#11181c]/45",
|
|
261
|
+
onMousedown: N(z, ["self"]),
|
|
262
262
|
onKeydown: me
|
|
263
263
|
}, [
|
|
264
264
|
a("div", {
|
|
265
265
|
ref_key: "panelEl",
|
|
266
266
|
ref: _,
|
|
267
|
-
class: "mt-[4vh] flex max-h-[88vh] w-[94%] max-w-[720px] flex-col overflow-hidden rounded-[14px] bg-white font-sans shadow-[0_30px_80px_rgba(0,0,0,0.3)] sm:mt-[8vh] sm:max-h-[82vh]",
|
|
267
|
+
class: "zui-search-panel mt-[4vh] flex max-h-[88vh] w-[94%] max-w-[720px] flex-col overflow-hidden rounded-[14px] bg-white font-sans shadow-[0_30px_80px_rgba(0,0,0,0.3)] sm:mt-[8vh] sm:max-h-[82vh]",
|
|
268
268
|
role: "dialog",
|
|
269
269
|
"aria-modal": "true",
|
|
270
270
|
"aria-label": "Search"
|
|
271
271
|
}, [
|
|
272
|
-
a("div",
|
|
272
|
+
a("div", Ue, [
|
|
273
273
|
T(fe, { class: "!h-[18px] !w-[18px] flex-none text-proclusteal-400" }),
|
|
274
274
|
G(a("input", {
|
|
275
275
|
ref_key: "inputEl",
|
|
@@ -278,7 +278,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
278
278
|
type: "text",
|
|
279
279
|
autocomplete: "off",
|
|
280
280
|
placeholder: e.placeholder,
|
|
281
|
-
class: "flex-1 border-0 bg-transparent p-0 text-[16px] text-[#1e262c] outline-none placeholder:text-proclusteal-400 focus:ring-0"
|
|
281
|
+
class: "zui-search-input flex-1 border-0 bg-transparent p-0 text-[16px] text-[#1e262c] outline-none placeholder:text-proclusteal-400 focus:ring-0"
|
|
282
282
|
}, null, 8, Be), [
|
|
283
283
|
[$e, k.value]
|
|
284
284
|
]),
|
|
@@ -287,7 +287,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
287
287
|
class: "cursor-pointer border-0 bg-transparent px-1 text-[22px] leading-none text-proclusteal-400 hover:text-proclusteal-700",
|
|
288
288
|
"aria-label": "Close search",
|
|
289
289
|
title: "Close (Esc)",
|
|
290
|
-
onClick:
|
|
290
|
+
onClick: z
|
|
291
291
|
}, "×")
|
|
292
292
|
]),
|
|
293
293
|
n.value === "results" ? (l(), u("div", Re, " Search results ")) : m("", !0),
|
|
@@ -297,18 +297,18 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
297
297
|
class: M([ae, f.value === "all" ? re : ""]),
|
|
298
298
|
onClick: s[1] || (s[1] = (r) => W("all"))
|
|
299
299
|
}, [
|
|
300
|
-
|
|
300
|
+
j(" All "),
|
|
301
301
|
a("span", {
|
|
302
302
|
class: M(["font-bold", f.value === "all" ? "opacity-85" : "opacity-60"])
|
|
303
303
|
}, "(" + b(ye.value) + ")", 3)
|
|
304
304
|
], 2),
|
|
305
|
-
(l(!0), u(H, null,
|
|
305
|
+
(l(!0), u(H, null, P(v.value, (r) => (l(), u("button", {
|
|
306
306
|
key: r.type,
|
|
307
307
|
type: "button",
|
|
308
308
|
class: M([ae, f.value === r.type ? re : ""]),
|
|
309
|
-
onClick: (
|
|
309
|
+
onClick: (x) => W(r.type)
|
|
310
310
|
}, [
|
|
311
|
-
|
|
311
|
+
j(b(Y(r.type).label) + " ", 1),
|
|
312
312
|
a("span", {
|
|
313
313
|
class: M(["font-bold", f.value === r.type ? "opacity-85" : "opacity-60"])
|
|
314
314
|
}, "(" + b(r.items.length) + ")", 3)
|
|
@@ -317,7 +317,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
317
317
|
a("div", {
|
|
318
318
|
ref_key: "resultsEl",
|
|
319
319
|
ref: A,
|
|
320
|
-
class: "overflow-y-auto pb-2.5"
|
|
320
|
+
class: "zui-search-results overflow-y-auto pb-2.5"
|
|
321
321
|
}, [
|
|
322
322
|
n.value === "zero" ? (l(), u("div", {
|
|
323
323
|
key: 0,
|
|
@@ -331,24 +331,24 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
331
331
|
}, " No results for “" + b(S.value) + "” — try a broader term or a code. ", 1)) : n.value === "error" ? (l(), u("div", {
|
|
332
332
|
key: 3,
|
|
333
333
|
class: M(R)
|
|
334
|
-
}, " Search is temporarily unavailable. ")) : (l(!0), u(H, { key: 4 },
|
|
334
|
+
}, " Search is temporarily unavailable. ")) : (l(!0), u(H, { key: 4 }, P(X.value, (r) => (l(), u("div", {
|
|
335
335
|
key: r.type
|
|
336
336
|
}, [
|
|
337
337
|
a("div", qe, [
|
|
338
|
-
|
|
338
|
+
j(b(r.label) + " ", 1),
|
|
339
339
|
a("span", Ge, "(" + b(r.items.length) + ")", 1)
|
|
340
340
|
]),
|
|
341
|
-
(l(!0), u(H, null,
|
|
342
|
-
key:
|
|
343
|
-
href:
|
|
344
|
-
class: M(["flex items-center gap-[13px] px-[18px] py-[11px] text-[#1e262c] no-underline", { "bg-proclusteal-50":
|
|
345
|
-
"data-row-idx":
|
|
346
|
-
onClick: N((B) => Z(
|
|
347
|
-
onMouseenter: (B) => c.value =
|
|
341
|
+
(l(!0), u(H, null, P(r.items, (x) => (l(), u("a", {
|
|
342
|
+
key: x.flatIdx,
|
|
343
|
+
href: x.url || null,
|
|
344
|
+
class: M(["zui-search-row flex items-center gap-[13px] px-[18px] py-[11px] text-[#1e262c] no-underline", { "bg-proclusteal-50": x.flatIdx === c.value }]),
|
|
345
|
+
"data-row-idx": x.flatIdx,
|
|
346
|
+
onClick: N((B) => Z(x.url), ["exact", "prevent"]),
|
|
347
|
+
onMouseenter: (B) => c.value = x.flatIdx
|
|
348
348
|
}, [
|
|
349
349
|
a("span", {
|
|
350
350
|
class: "inline-flex h-[42px] w-[42px] flex-none items-center justify-center rounded-[10px] text-white",
|
|
351
|
-
style: q({ background:
|
|
351
|
+
style: q({ background: x.tileColour })
|
|
352
352
|
}, [
|
|
353
353
|
(l(), u("svg", {
|
|
354
354
|
class: "h-5 w-5",
|
|
@@ -358,17 +358,17 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
358
358
|
"stroke-width": "2",
|
|
359
359
|
"stroke-linecap": "round",
|
|
360
360
|
"stroke-linejoin": "round",
|
|
361
|
-
innerHTML:
|
|
361
|
+
innerHTML: x.tileIcon
|
|
362
362
|
}, null, 8, Qe))
|
|
363
363
|
], 4),
|
|
364
364
|
a("span", Ye, [
|
|
365
365
|
a("span", {
|
|
366
366
|
class: "gs-marked block truncate text-[14px] font-bold",
|
|
367
|
-
innerHTML:
|
|
367
|
+
innerHTML: x.titleHtml
|
|
368
368
|
}, null, 8, Xe),
|
|
369
369
|
a("span", {
|
|
370
370
|
class: "gs-marked mt-0.5 block truncate text-[12.5px] text-[#5b6570]",
|
|
371
|
-
innerHTML:
|
|
371
|
+
innerHTML: x.subtitleHtml
|
|
372
372
|
}, null, 8, Je)
|
|
373
373
|
]),
|
|
374
374
|
We
|
|
@@ -379,7 +379,7 @@ const Ue = (e) => (Se("data-v-b4eb0ff3"), e = e(), _e(), e), ze = { class: "flex
|
|
|
379
379
|
], 32)) : m("", !0)
|
|
380
380
|
]));
|
|
381
381
|
}
|
|
382
|
-
}, et = /* @__PURE__ */ Ae(Ze, [["__scopeId", "data-v-
|
|
382
|
+
}, et = /* @__PURE__ */ Ae(Ze, [["__scopeId", "data-v-facb4f52"]]), se = {
|
|
383
383
|
"reference library": "RefLib",
|
|
384
384
|
reflib: "RefLib",
|
|
385
385
|
repository: "RefLib",
|
|
@@ -404,13 +404,13 @@ function tt(e) {
|
|
|
404
404
|
if (!i)
|
|
405
405
|
return "";
|
|
406
406
|
let o = null;
|
|
407
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
407
|
+
if (Object.prototype.hasOwnProperty.call(D, i))
|
|
408
408
|
o = i;
|
|
409
409
|
else {
|
|
410
|
-
const y = i.toLowerCase(), d = Object.keys(
|
|
410
|
+
const y = i.toLowerCase(), d = Object.keys(D).find((h) => h.toLowerCase() === y);
|
|
411
411
|
d ? o = d : Object.prototype.hasOwnProperty.call(se, y) && (o = se[y]);
|
|
412
412
|
}
|
|
413
|
-
return !o || !Object.prototype.hasOwnProperty.call(
|
|
413
|
+
return !o || !Object.prototype.hasOwnProperty.call(D, o) ? "" : D[o].icon || "";
|
|
414
414
|
}
|
|
415
415
|
function nt(e) {
|
|
416
416
|
if (!e)
|
|
@@ -429,10 +429,10 @@ const ot = {
|
|
|
429
429
|
}, st = {
|
|
430
430
|
key: 1,
|
|
431
431
|
class: "px-5 py-[26px] text-center text-[13px] font-medium text-[#667079]"
|
|
432
|
-
}, it = ["onClick"], ct = { class: "inline-flex h-[42px] w-[42px] flex-none items-center justify-center rounded-[10px] bg-proclusteal-950 text-white" }, ut = ["innerHTML"], pt = { class: "min-w-0 flex-1" }, dt = { class: "block truncate text-[14px] font-bold text-[#1e262c]" }, ft = { class: "block truncate text-[12.5px] text-[#5b6570]" },
|
|
432
|
+
}, it = ["onClick"], ct = { class: "inline-flex h-[42px] w-[42px] flex-none items-center justify-center rounded-[10px] bg-proclusteal-950 text-white" }, ut = ["innerHTML"], pt = { class: "min-w-0 flex-1" }, dt = { class: "block truncate text-[14px] font-bold text-[#1e262c]" }, ft = { class: "block truncate text-[12.5px] text-[#5b6570]" }, ht = {
|
|
433
433
|
key: 0,
|
|
434
434
|
class: "mt-0.5 block text-[12px] text-proclusteal-500"
|
|
435
|
-
},
|
|
435
|
+
}, xt = { class: "flex flex-none flex-col items-center gap-2 pt-0.5 text-proclusteal-600" }, yt = ["onClick"], vt = ["onClick"], mt = ["href"], bt = {
|
|
436
436
|
__name: "HeaderNotificationDropdown",
|
|
437
437
|
props: {
|
|
438
438
|
// The feed as /personal/GetNotifications.ashx returns it: { data: [...] }. Null means
|
|
@@ -461,15 +461,15 @@ const ot = {
|
|
|
461
461
|
},
|
|
462
462
|
emits: ["markAsRead", "deleteNotification", "navigate", "open"],
|
|
463
463
|
setup(e, { emit: i }) {
|
|
464
|
-
const o = e, y = i, d = g(null),
|
|
464
|
+
const o = e, y = i, d = g(null), h = g(!1), w = $(() => {
|
|
465
465
|
var n;
|
|
466
466
|
return ((n = o.notifications) == null ? void 0 : n.data) || [];
|
|
467
467
|
}), _ = $(() => o.unreadCount !== null && o.unreadCount !== void 0 ? o.unreadCount > 0 : w.value.some((n) => n.ClassRead === "unread"));
|
|
468
|
-
|
|
469
|
-
|
|
468
|
+
he(d, () => {
|
|
469
|
+
h.value = !1;
|
|
470
470
|
});
|
|
471
471
|
function A() {
|
|
472
|
-
|
|
472
|
+
h.value = !h.value, h.value && y("open");
|
|
473
473
|
}
|
|
474
474
|
function k(n) {
|
|
475
475
|
return n && Object.prototype.hasOwnProperty.call(o.iconMap, n) && o.iconMap[n] || null;
|
|
@@ -488,7 +488,7 @@ const ot = {
|
|
|
488
488
|
unread: n.ClassRead === "unread"
|
|
489
489
|
})));
|
|
490
490
|
function f(n) {
|
|
491
|
-
|
|
491
|
+
h.value = !1;
|
|
492
492
|
const c = O(n);
|
|
493
493
|
c && y("navigate", c);
|
|
494
494
|
}
|
|
@@ -519,7 +519,7 @@ const ot = {
|
|
|
519
519
|
G(a("div", lt, [
|
|
520
520
|
a("div", at, [
|
|
521
521
|
e.notifications ? w.value.length ? m("", !0) : (l(), u("div", st, " No notifications. ")) : (l(), u("div", rt, " Loading notifications… ")),
|
|
522
|
-
(l(!0), u(H, null,
|
|
522
|
+
(l(!0), u(H, null, P(v.value, (p) => (l(), u("div", {
|
|
523
523
|
key: p.item.NotifyID,
|
|
524
524
|
class: M(["flex cursor-pointer items-start gap-3 border-b border-proclusteal-200 px-4 py-3", p.unread ? "bg-proclusteal-50" : "bg-white"]),
|
|
525
525
|
onClick: (C) => f(p.item.url)
|
|
@@ -543,9 +543,9 @@ const ot = {
|
|
|
543
543
|
a("span", pt, [
|
|
544
544
|
a("span", dt, b(p.item.notifyname), 1),
|
|
545
545
|
a("span", ft, b(p.item.summary), 1),
|
|
546
|
-
p.date ? (l(), u("span",
|
|
546
|
+
p.date ? (l(), u("span", ht, b(p.date), 1)) : m("", !0)
|
|
547
547
|
]),
|
|
548
|
-
a("span",
|
|
548
|
+
a("span", xt, [
|
|
549
549
|
p.unread ? (l(), u("button", {
|
|
550
550
|
key: 0,
|
|
551
551
|
type: "button",
|
|
@@ -574,7 +574,7 @@ const ot = {
|
|
|
574
574
|
onClick: c[0] || (c[0] = N((p) => f(e.notificationsUrl), ["exact", "prevent"]))
|
|
575
575
|
}, " See all notifications ", 8, mt)
|
|
576
576
|
], 512), [
|
|
577
|
-
[de,
|
|
577
|
+
[de, h.value]
|
|
578
578
|
])
|
|
579
579
|
]),
|
|
580
580
|
_: 1
|
|
@@ -601,16 +601,16 @@ const ot = {
|
|
|
601
601
|
},
|
|
602
602
|
emits: ["select"],
|
|
603
603
|
setup(e, { emit: i }) {
|
|
604
|
-
const o = e, y = i, d = g(null),
|
|
604
|
+
const o = e, y = i, d = g(null), h = g(!1), w = g(!1);
|
|
605
605
|
K(() => o.user.avatarUrl, () => {
|
|
606
606
|
w.value = !1;
|
|
607
607
|
});
|
|
608
608
|
const _ = $(() => `${o.user.firstName || ""} ${o.user.surname || ""}`.trim()), A = $(() => `${(o.user.firstName || "").charAt(0)}${(o.user.surname || "").charAt(0)}`.toUpperCase());
|
|
609
|
-
|
|
610
|
-
|
|
609
|
+
he(d, () => {
|
|
610
|
+
h.value = !1;
|
|
611
611
|
});
|
|
612
612
|
function k(S) {
|
|
613
|
-
|
|
613
|
+
h.value = !1, y("select", S);
|
|
614
614
|
}
|
|
615
615
|
return (S, v) => (l(), u("div", {
|
|
616
616
|
ref_key: "rootEl",
|
|
@@ -622,7 +622,7 @@ const ot = {
|
|
|
622
622
|
class: "flex cursor-pointer items-center justify-center",
|
|
623
623
|
title: "View Menu Options",
|
|
624
624
|
"aria-label": "View Menu Options",
|
|
625
|
-
onClick: v[1] || (v[1] = (f) =>
|
|
625
|
+
onClick: v[1] || (v[1] = (f) => h.value = !h.value)
|
|
626
626
|
}, [
|
|
627
627
|
e.user.avatarUrl && !w.value ? (l(), u("img", {
|
|
628
628
|
key: 0,
|
|
@@ -648,7 +648,7 @@ const ot = {
|
|
|
648
648
|
a("span", _t, b(e.user.orgName), 1)
|
|
649
649
|
]),
|
|
650
650
|
Mt,
|
|
651
|
-
(l(!0), u(H, null,
|
|
651
|
+
(l(!0), u(H, null, P(e.menuItems, (f, n) => (l(), u(H, { key: n }, [
|
|
652
652
|
f.divider ? (l(), u("div", Tt)) : (l(), u("a", {
|
|
653
653
|
key: 1,
|
|
654
654
|
href: f.href && F(O)(f.href) || null,
|
|
@@ -663,7 +663,7 @@ const ot = {
|
|
|
663
663
|
], 8, At))
|
|
664
664
|
], 64))), 128))
|
|
665
665
|
], 512), [
|
|
666
|
-
[de,
|
|
666
|
+
[de, h.value]
|
|
667
667
|
])
|
|
668
668
|
]),
|
|
669
669
|
_: 1
|
|
@@ -676,7 +676,7 @@ const ot = {
|
|
|
676
676
|
}, Ot = {
|
|
677
677
|
key: 0,
|
|
678
678
|
class: "font-normal text-black-800"
|
|
679
|
-
}, Lt = ["href", "title", "aria-label"],
|
|
679
|
+
}, Lt = ["href", "title", "aria-label"], zt = { class: "flex items-center gap-[18px] sm:gap-[25px]" }, Gt = {
|
|
680
680
|
__name: "AppHeader",
|
|
681
681
|
props: {
|
|
682
682
|
title: {
|
|
@@ -754,7 +754,7 @@ const ot = {
|
|
|
754
754
|
"notifications-open"
|
|
755
755
|
],
|
|
756
756
|
setup(e, { emit: i }) {
|
|
757
|
-
const o = e, y = i, d = ie(),
|
|
757
|
+
const o = e, y = i, d = ie(), h = g(!1), w = $(() => !!o.notifications || o.unreadCount !== null && o.unreadCount !== void 0), _ = $(() => xe(o.accentColour)), A = $(() => _.value || "#1c6f63");
|
|
758
758
|
function k(n) {
|
|
759
759
|
var p, C;
|
|
760
760
|
if (!n)
|
|
@@ -775,7 +775,7 @@ const ot = {
|
|
|
775
775
|
a("div", Nt, [
|
|
776
776
|
V(n.$slots, "logo"),
|
|
777
777
|
e.title ? (l(), u("span", Ht, [
|
|
778
|
-
|
|
778
|
+
j(b(e.title), 1),
|
|
779
779
|
e.subtitle ? (l(), u("span", Ot, " " + b(e.subtitle), 1)) : m("", !0)
|
|
780
780
|
])) : m("", !0),
|
|
781
781
|
_.value ? (l(), u("span", {
|
|
@@ -811,11 +811,11 @@ const ot = {
|
|
|
811
811
|
], 4),
|
|
812
812
|
V(n.$slots, "left")
|
|
813
813
|
]),
|
|
814
|
-
a("div",
|
|
814
|
+
a("div", zt, [
|
|
815
815
|
V(n.$slots, "right"),
|
|
816
816
|
e.searchProvider ? (l(), E(Oe, {
|
|
817
817
|
key: 0,
|
|
818
|
-
onClick: c[0] || (c[0] = (p) =>
|
|
818
|
+
onClick: c[0] || (c[0] = (p) => h.value = !0)
|
|
819
819
|
})) : m("", !0),
|
|
820
820
|
w.value ? (l(), E(bt, {
|
|
821
821
|
key: 1,
|
|
@@ -837,8 +837,8 @@ const ot = {
|
|
|
837
837
|
]),
|
|
838
838
|
e.searchProvider ? (l(), E(et, {
|
|
839
839
|
key: 0,
|
|
840
|
-
open:
|
|
841
|
-
"onUpdate:open": c[4] || (c[4] = (p) =>
|
|
840
|
+
open: h.value,
|
|
841
|
+
"onUpdate:open": c[4] || (c[4] = (p) => h.value = p),
|
|
842
842
|
"search-provider": e.searchProvider,
|
|
843
843
|
placeholder: e.searchPlaceholder,
|
|
844
844
|
types: e.searchTypes,
|
|
@@ -849,7 +849,7 @@ const ot = {
|
|
|
849
849
|
};
|
|
850
850
|
export {
|
|
851
851
|
Gt as AppHeader,
|
|
852
|
-
|
|
852
|
+
D as DEFAULT_SEARCH_TYPES,
|
|
853
853
|
et as GlobalSearchModal,
|
|
854
854
|
Oe as GlobalSearchPill,
|
|
855
855
|
bt as HeaderNotificationDropdown,
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Semantic theme token helper.
|
|
3
|
+
*
|
|
4
|
+
* Resolves a colour from the `--zui-*-rgb` channel triplets defined in
|
|
5
|
+
* `public/css/theme.css`, keeping Tailwind's slash-opacity modifier working
|
|
6
|
+
* (`bg-surface/50`) because the value is emitted as `rgb(R G B / <alpha-value>)`.
|
|
7
|
+
*
|
|
8
|
+
* The second argument is a hard-coded fallback equal to the LIGHT value of the
|
|
9
|
+
* token. It means these utilities still render sane light-mode colours in an app
|
|
10
|
+
* that has not imported `theme.css` yet, instead of collapsing to an invalid
|
|
11
|
+
* declaration. Adoption is therefore safe in either order.
|
|
12
|
+
*/
|
|
13
|
+
const themeToken = (name, lightFallback) =>
|
|
14
|
+
`rgb(var(--zui-${name}-rgb, ${lightFallback}) / <alpha-value>)`;
|
|
15
|
+
|
|
1
16
|
/** @type {import('tailwindcss').Config} */
|
|
2
17
|
export default {
|
|
3
18
|
content: [
|
|
@@ -365,6 +380,40 @@ export default {
|
|
|
365
380
|
},
|
|
366
381
|
white: '#ffffff',
|
|
367
382
|
|
|
383
|
+
// ---------------------------------------------------------------
|
|
384
|
+
// Semantic theme tokens (theme-aware; see public/css/theme.css).
|
|
385
|
+
//
|
|
386
|
+
// ADDITIVE. These are new names — no existing scale above is
|
|
387
|
+
// renumbered, remapped or altered. They are the ONLY colours in this
|
|
388
|
+
// file that change between light and dark.
|
|
389
|
+
//
|
|
390
|
+
// NEUTRALS ONLY, on purpose. Brand and status colours (error,
|
|
391
|
+
// success, warning, gra, tis, grp, nhsop*/nssop*/ncsop*/nmsop* and
|
|
392
|
+
// every per-module scale) stay fixed across themes: in an
|
|
393
|
+
// emergency-services product a risk or status indicator must not
|
|
394
|
+
// change hue with the theme.
|
|
395
|
+
//
|
|
396
|
+
// bg-surface bg-surface-raised bg-surface-sunken bg-surface-hover
|
|
397
|
+
// text-content text-content-muted
|
|
398
|
+
// border-line border-line-strong
|
|
399
|
+
// ring-focus outline-focus
|
|
400
|
+
// ---------------------------------------------------------------
|
|
401
|
+
surface: {
|
|
402
|
+
DEFAULT: themeToken('surface', '241 242 243'),
|
|
403
|
+
raised: themeToken('surface-raised', '255 255 255'),
|
|
404
|
+
sunken: themeToken('surface-sunken', '228 230 232'),
|
|
405
|
+
hover: themeToken('surface-hover', '238 247 245'),
|
|
406
|
+
},
|
|
407
|
+
content: {
|
|
408
|
+
DEFAULT: themeToken('content', '23 36 44'),
|
|
409
|
+
muted: themeToken('content-muted', '90 102 108'),
|
|
410
|
+
},
|
|
411
|
+
line: {
|
|
412
|
+
DEFAULT: themeToken('line', '227 232 234'),
|
|
413
|
+
strong: themeToken('line-strong', '200 206 208'),
|
|
414
|
+
},
|
|
415
|
+
focus: themeToken('focus', '26 138 125'),
|
|
416
|
+
|
|
368
417
|
// SOP colours
|
|
369
418
|
nhsop01: '#14968C',
|
|
370
419
|
nhsop02: '#42124C',
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/* ============================================================================
|
|
2
|
+
zeal-ui semantic theme tokens
|
|
3
|
+
----------------------------------------------------------------------------
|
|
4
|
+
OPT-IN. This file is not imported by base.css. Nothing in a consuming app
|
|
5
|
+
changes until the app imports it:
|
|
6
|
+
|
|
7
|
+
import '@zealsolutions/zeal-ui/css/theme.css'
|
|
8
|
+
|
|
9
|
+
Light mode is the default (plain :root). Dark mode is opted into by setting
|
|
10
|
+
data-theme on the root element:
|
|
11
|
+
|
|
12
|
+
document.documentElement.dataset.theme = 'dark' // or delete to go light
|
|
13
|
+
|
|
14
|
+
Values are stored as space-separated RGB channel triplets (`--zui-*-rgb`) so
|
|
15
|
+
Tailwind's slash-opacity modifier works (`bg-surface/50`). Each triplet has a
|
|
16
|
+
matching ready-to-use colour var (`--zui-*`) for hand-written CSS, derived
|
|
17
|
+
from the triplet so there is one source of truth per token.
|
|
18
|
+
|
|
19
|
+
WHAT FLIPS AND WHAT DOES NOT
|
|
20
|
+
----------------------------------------------------------------------------
|
|
21
|
+
FLIPS — neutrals only: surfaces, text, hairlines, focus ring. These carry no
|
|
22
|
+
meaning beyond depth and legibility, so inverting them is safe.
|
|
23
|
+
FIXED — every brand and status colour in the Tailwind palette (error,
|
|
24
|
+
success, warning, gra, tis, grp, the nhsop/nssop/ncsop/nmsop sets and
|
|
25
|
+
every per-module scale). This is an emergency-services product: a
|
|
26
|
+
risk or status indicator must read as the same hue in both themes.
|
|
27
|
+
Deliberately NOT tokenised here. See MIGRATION.md for the contrast
|
|
28
|
+
caveat that comes with holding those hues fixed.
|
|
29
|
+
========================================================================== */
|
|
30
|
+
|
|
31
|
+
:root {
|
|
32
|
+
color-scheme: light;
|
|
33
|
+
|
|
34
|
+
/* -- surfaces: sunken < surface < raised, by lightness -- */
|
|
35
|
+
--zui-surface-rgb: 241 242 243; /* #f1f2f3 steel-100 */
|
|
36
|
+
--zui-surface-raised-rgb: 255 255 255; /* #ffffff white */
|
|
37
|
+
--zui-surface-sunken-rgb: 228 230 232; /* #e4e6e8 steel-200 */
|
|
38
|
+
--zui-surface-hover-rgb: 238 247 245; /* #eef7f5 proclusteal-50 */
|
|
39
|
+
|
|
40
|
+
/* -- ink -- */
|
|
41
|
+
--zui-content-rgb: 23 36 44; /* #17242c black-900 */
|
|
42
|
+
--zui-content-muted-rgb: 90 102 108; /* #5a666c proclusteal-600 */
|
|
43
|
+
|
|
44
|
+
/* -- hairlines -- */
|
|
45
|
+
--zui-line-rgb: 227 232 234; /* #e3e8ea proclusteal-300 */
|
|
46
|
+
--zui-line-strong-rgb: 200 206 208; /* #c8ced0 black-600 */
|
|
47
|
+
|
|
48
|
+
/* -- focus ring -- */
|
|
49
|
+
--zui-focus-rgb: 26 138 125; /* #1a8a7d proclusteal-950 */
|
|
50
|
+
|
|
51
|
+
/* -- derived colour values, for CSS that is not going through Tailwind -- */
|
|
52
|
+
--zui-surface: rgb(var(--zui-surface-rgb));
|
|
53
|
+
--zui-surface-raised: rgb(var(--zui-surface-raised-rgb));
|
|
54
|
+
--zui-surface-sunken: rgb(var(--zui-surface-sunken-rgb));
|
|
55
|
+
--zui-surface-hover: rgb(var(--zui-surface-hover-rgb));
|
|
56
|
+
--zui-content: rgb(var(--zui-content-rgb));
|
|
57
|
+
--zui-content-muted: rgb(var(--zui-content-muted-rgb));
|
|
58
|
+
--zui-line: rgb(var(--zui-line-rgb));
|
|
59
|
+
--zui-line-strong: rgb(var(--zui-line-strong-rgb));
|
|
60
|
+
--zui-focus: rgb(var(--zui-focus-rgb));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
:root[data-theme="dark"] {
|
|
64
|
+
color-scheme: dark;
|
|
65
|
+
|
|
66
|
+
/* -- surfaces: sunken < surface < raised, by lightness (ladder preserved) -- */
|
|
67
|
+
--zui-surface-rgb: 23 36 44; /* #17242c black-900 */
|
|
68
|
+
--zui-surface-raised-rgb: 31 47 56; /* #1f2f38 new */
|
|
69
|
+
--zui-surface-sunken-rgb: 7 21 30; /* #07151e black-950 */
|
|
70
|
+
--zui-surface-hover-rgb: 38 54 63; /* #26363f new */
|
|
71
|
+
|
|
72
|
+
/* -- ink -- */
|
|
73
|
+
--zui-content-rgb: 229 231 232; /* #e5e7e8 black-100 */
|
|
74
|
+
--zui-content-muted-rgb: 154 164 173; /* #9aa4ad proclusteal-400 */
|
|
75
|
+
|
|
76
|
+
/* -- hairlines -- */
|
|
77
|
+
--zui-line-rgb: 44 58 67; /* #2c3a43 new */
|
|
78
|
+
--zui-line-strong-rgb: 68 81 90; /* #44515a new */
|
|
79
|
+
|
|
80
|
+
/* -- focus ring: lifted from proclusteal-950 so it stays visible on dark -- */
|
|
81
|
+
--zui-focus-rgb: 47 185 168; /* #2fb9a8 new */
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* The derived `--zui-*` colour vars above reference the triplets, so they follow
|
|
85
|
+
the theme automatically and are not repeated in the dark block. */
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.preview-content[data-v-e4d41bb0] ul{list-style:disc;margin-left:1.5rem}.preview-content[data-v-e4d41bb0] ol{list-style:decimal;margin-left:1.5rem}.preview-content[data-v-e4d41bb0] p{margin-bottom:.5rem}.preview-content[data-v-e4d41bb0] a{color:#326d68;text-decoration:underline}.preview-content[data-v-e4d41bb0] img{max-width:100%;height:auto}.preview-content[data-v-e4d41bb0] table{border-collapse:collapse}.preview-content[data-v-e4d41bb0] td,.preview-content[data-v-e4d41bb0] th{border:1px solid #c8ced0;padding:4px 8px}.preview-content[data-v-e4d41bb0] ins{text-decoration:none;background-color:#d4fcbc}.preview-content[data-v-e4d41bb0] del{text-decoration:line-through;background-color:#fbb6c2;color:#555}.gs-marked[data-v-
|
|
1
|
+
.preview-content[data-v-e4d41bb0] ul{list-style:disc;margin-left:1.5rem}.preview-content[data-v-e4d41bb0] ol{list-style:decimal;margin-left:1.5rem}.preview-content[data-v-e4d41bb0] p{margin-bottom:.5rem}.preview-content[data-v-e4d41bb0] a{color:#326d68;text-decoration:underline}.preview-content[data-v-e4d41bb0] img{max-width:100%;height:auto}.preview-content[data-v-e4d41bb0] table{border-collapse:collapse}.preview-content[data-v-e4d41bb0] td,.preview-content[data-v-e4d41bb0] th{border:1px solid #c8ced0;padding:4px 8px}.preview-content[data-v-e4d41bb0] ins{text-decoration:none;background-color:#d4fcbc}.preview-content[data-v-e4d41bb0] del{text-decoration:line-through;background-color:#fbb6c2;color:#555}.gs-marked[data-v-facb4f52] mark{background:#1a8a7d33;color:inherit;border-radius:3px;padding:0 2px}.columns-container[data-v-3f6f48fb]{position:relative;margin:16px 0;border-radius:8px}.columns-content[data-v-3f6f48fb]{min-height:100px}@media (max-width: 767px){.columns-content[data-v-3f6f48fb]{flex-direction:column!important}}.v-enter-active,.v-leave-active{transition:opacity .3s ease}.v-enter-from,.v-leave-to{opacity:0}
|
package/package.json
CHANGED
|
@@ -1,121 +1,122 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
2
|
+
"name": "@zealsolutions/zeal-ui",
|
|
3
|
+
"version": "1.0.0-alpha.343",
|
|
4
|
+
"description": "UI library for Zeal Solutions",
|
|
5
|
+
"author": "Zeal Solutions",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"bugs": {
|
|
8
|
+
"url": "https://github.com/zeal-solutions/zeal-ui/issues"
|
|
9
|
+
},
|
|
10
|
+
"homepage": "https://github.com/zeal-solutions/zeal-ui#readme",
|
|
11
|
+
"keywords": [
|
|
12
|
+
"zeal",
|
|
13
|
+
"ui"
|
|
14
|
+
],
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "git+https://github.com/zeal-solutions/zeal-ui.git"
|
|
18
|
+
},
|
|
19
|
+
"main": "dist/index.js",
|
|
20
|
+
"browser": "dist/index.js",
|
|
21
|
+
"module": "dist/index.js",
|
|
22
|
+
"files": [
|
|
23
|
+
"dist/*"
|
|
24
|
+
],
|
|
25
|
+
"exports": {
|
|
26
|
+
"./css/typography.css": "./dist/css/typography.css",
|
|
27
|
+
"./css/base.css": "./dist/css/base.css",
|
|
28
|
+
"./css/editorStyles.css": "./dist/css/editorStyles.css",
|
|
29
|
+
"./css/theme.css": "./dist/css/theme.css",
|
|
30
|
+
"./config/tailwind": "./dist/config/tailwind/index.js",
|
|
31
|
+
"./buttons": "./dist/components/buttons/index.js",
|
|
32
|
+
"./forms": "./dist/components/forms/index.js",
|
|
33
|
+
"./header": "./dist/components/header/index.js",
|
|
34
|
+
"./icons": "./dist/components/icons/index.js",
|
|
35
|
+
"./inputs": "./dist/components/inputs/index.js",
|
|
36
|
+
"./layouts": "./dist/components/layouts/index.js",
|
|
37
|
+
"./logos": "./dist/components/logos/index.js",
|
|
38
|
+
"./menus": "./dist/components/menus/index.js",
|
|
39
|
+
"./modals": "./dist/components/modals/index.js",
|
|
40
|
+
"./navigation": "./dist/components/navigation/index.js",
|
|
41
|
+
"./overlays": "./dist/components/overlays/index.js",
|
|
42
|
+
"./session": "./dist/components/session/index.js",
|
|
43
|
+
"./sop-diff": "./dist/components/sop-diff/index.js",
|
|
44
|
+
"./style.css": "./dist/style.css",
|
|
45
|
+
"./tiptap": "./dist/components/tiptap/index.js",
|
|
46
|
+
"./tooltips": "./dist/components/tooltips/index.js",
|
|
47
|
+
"./transitions": "./dist/components/transitions/index.js",
|
|
48
|
+
"./utils": "./dist/utils/index",
|
|
49
|
+
"./tables": "./dist/components/tables/index.js"
|
|
50
|
+
},
|
|
51
|
+
"type": "module",
|
|
52
|
+
"scripts": {
|
|
53
|
+
"dev": "vite",
|
|
54
|
+
"build": "vite build",
|
|
55
|
+
"build:publish": "npm run build && npm publish",
|
|
56
|
+
"prepublishOnly": "npm run build",
|
|
57
|
+
"preview": "vite preview",
|
|
58
|
+
"test": "vitest run",
|
|
59
|
+
"storybook": "storybook dev -p 6006",
|
|
60
|
+
"build-storybook": "storybook build",
|
|
61
|
+
"chromatic": "npx chromatic --project-token=chpt_368bf7fc8d469c1"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"@floating-ui/dom": "^1.7.2",
|
|
65
|
+
"@floating-ui/vue": "^1.1.7",
|
|
66
|
+
"@gocapsule/column-extension": "^1.0.0-beta-3",
|
|
67
|
+
"@tailwindcss/forms": "^0.5.7",
|
|
68
|
+
"@tailwindcss/line-clamp": "^0.4.4",
|
|
69
|
+
"@tiptap-extend/columns": "^2.1.6",
|
|
70
|
+
"@tiptap/core": "^2.6.6",
|
|
71
|
+
"@tiptap/extension-bubble-menu": "^2.6.6",
|
|
72
|
+
"@tiptap/extension-color": "^2.6.6",
|
|
73
|
+
"@tiptap/extension-document": "^2.6.6",
|
|
74
|
+
"@tiptap/extension-gapcursor": "^2.8.0",
|
|
75
|
+
"@tiptap/extension-heading": "^2.6.6",
|
|
76
|
+
"@tiptap/extension-link": "^2.23.0",
|
|
77
|
+
"@tiptap/extension-list-item": "^2.6.6",
|
|
78
|
+
"@tiptap/extension-paragraph": "^2.6.6",
|
|
79
|
+
"@tiptap/extension-placeholder": "^2.12.0",
|
|
80
|
+
"@tiptap/extension-table": "^2.8.0",
|
|
81
|
+
"@tiptap/extension-table-cell": "^2.8.0",
|
|
82
|
+
"@tiptap/extension-table-header": "^2.8.0",
|
|
83
|
+
"@tiptap/extension-table-row": "^2.8.0",
|
|
84
|
+
"@tiptap/extension-text": "^2.6.6",
|
|
85
|
+
"@tiptap/extension-text-align": "^2.7.2",
|
|
86
|
+
"@tiptap/extension-text-style": "^2.6.6",
|
|
87
|
+
"@tiptap/extension-underline": "^2.6.6",
|
|
88
|
+
"@tiptap/pm": "^2.6.6",
|
|
89
|
+
"@tiptap/starter-kit": "^2.6.6",
|
|
90
|
+
"@tiptap/vue-3": "^2.7.2",
|
|
91
|
+
"@vueuse/core": "^11.2.0",
|
|
92
|
+
"axios": "^1.6.8",
|
|
93
|
+
"i": "^0.3.7",
|
|
94
|
+
"less": "^4.2.0",
|
|
95
|
+
"lodash": "^4.17.21",
|
|
96
|
+
"postcss": "^8.4.38",
|
|
97
|
+
"tailwindcss": "^3.4.3",
|
|
98
|
+
"tailwindcss-convert-px-to-rem": "^1.0.4",
|
|
99
|
+
"vue": "^3.4.21"
|
|
100
|
+
},
|
|
101
|
+
"devDependencies": {
|
|
102
|
+
"@chromatic-com/storybook": "^1.6.0",
|
|
103
|
+
"@storybook/addon-essentials": "^8.1.11",
|
|
104
|
+
"@storybook/addon-interactions": "^8.1.11",
|
|
105
|
+
"@storybook/addon-links": "^8.1.11",
|
|
106
|
+
"@storybook/addon-mdx-gfm": "^8.1.11",
|
|
107
|
+
"@storybook/blocks": "^8.1.11",
|
|
108
|
+
"@storybook/test": "^8.1.11",
|
|
109
|
+
"@storybook/vue3": "^8.1.11",
|
|
110
|
+
"@storybook/vue3-vite": "^8.1.11",
|
|
111
|
+
"@vitejs/plugin-vue": "^5.0.4",
|
|
112
|
+
"@vue/test-utils": "^2.4.11",
|
|
113
|
+
"@whitespace/storybook-addon-html": "^6.1.1",
|
|
114
|
+
"autoprefixer": "^10.4.19",
|
|
115
|
+
"chromatic": "^11.3.1",
|
|
116
|
+
"jsdom": "^25.0.0",
|
|
117
|
+
"storybook": "^8.1.11",
|
|
118
|
+
"vite": "^5.2.8",
|
|
119
|
+
"vite-plugin-vue-devtools": "^7.0.25",
|
|
120
|
+
"vitest": "^3.0.0"
|
|
121
|
+
}
|
|
121
122
|
}
|