@akiraka/quark-big-screen-ui 0.1.5 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -10,6 +10,18 @@ The single visual source for Quark big-screen cards. `QuarkAi` and `QuarkNovo` m
10
10
 
11
11
  It deliberately excludes application routing, authentication, API/SSE fetching, and either application's general UI library.
12
12
 
13
+ ## Editor preview data
14
+
15
+ Use the package fixture in an editor preview; do not create a second mock-data set in the consuming application.
16
+
17
+ ```ts
18
+ import { getBigScreenPreviewData } from '@akiraka/quark-big-screen-ui'
19
+
20
+ const data = getBigScreenPreviewData('alert_latest')
21
+ ```
22
+
23
+ `getBigScreenPreviewData()` returns a fresh copy. It is only for preview rendering and must never be used as runtime fallback data.
24
+
13
25
  ## Release policy
14
26
 
15
27
  Publish a new version whenever a shared visual component changes. Upgrade both consumers to the same version and run visual checks at 1920×1080 and 3440×1440.
@@ -0,0 +1,33 @@
1
+ export interface BigScreenDutyUser {
2
+ userId: number | string;
3
+ nickName?: string;
4
+ username?: string;
5
+ }
6
+ export interface BigScreenDutyGroup {
7
+ groupId: number | string;
8
+ groupName: string;
9
+ users: BigScreenDutyUser[];
10
+ }
11
+ type __VLS_Props = {
12
+ /** Compact single-person presentation used by an operational runtime screen. */
13
+ compact?: boolean;
14
+ personName?: string;
15
+ personPhone?: string;
16
+ personTag?: string;
17
+ date?: string;
18
+ totalGroups?: number;
19
+ totalUsers?: number;
20
+ groups?: BigScreenDutyGroup[];
21
+ };
22
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
23
+ compact: boolean;
24
+ personName: string;
25
+ personPhone: string;
26
+ personTag: string;
27
+ date: string;
28
+ totalGroups: number;
29
+ totalUsers: number;
30
+ groups: BigScreenDutyGroup[];
31
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
32
+ export default _default;
33
+ //# sourceMappingURL=BigScreenDutyContent.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BigScreenDutyContent.vue.d.ts","sourceRoot":"","sources":["../../src/components/BigScreenDutyContent.vue"],"names":[],"mappings":"AAmEA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAC3B;AAED,KAAK,WAAW,GAAG;IACjB,gFAAgF;IAChF,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAA;CAC9B,CAAC;;aARU,OAAO;gBACJ,MAAM;iBACL,MAAM;eACR,MAAM;UACX,MAAM;iBACC,MAAM;gBACP,MAAM;YACV,kBAAkB,EAAE;;AAqL/B,wBAOG"}
package/dist/index.css CHANGED
@@ -1 +1 @@
1
- :root{--qbs-surface-top: rgba(13, 24, 39, .92);--qbs-surface-bottom: rgba(8, 16, 28, .96);--qbs-border: rgba(142, 161, 178, .2);--qbs-text: #f6f8fb;--qbs-muted: #9fb2c7;--qbs-radius: 20px;--qbs-shadow: 0 18px 48px rgba(4, 10, 18, .28)}.qbs-panel[data-v-749400b6]{position:relative;display:flex;height:100%;min-height:0;flex-direction:column;border:1px solid oklch(.6 .12 220 / .28);border-radius:10px;background:linear-gradient(160deg,#091b318c,#050f2066);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#c8e4e9}.qbs-panel--overflow-hidden[data-v-749400b6]{overflow:hidden}.qbs-panel--padding-md[data-v-749400b6]{padding:14px 16px}.qbs-panel--padding-compact[data-v-749400b6]{padding:10px 12px}.qbs-panel--padding-tight[data-v-749400b6]{padding:12px 8px}.qbs-panel__corner[data-v-749400b6]{position:absolute;width:12px;height:12px;border:2px solid var(--qbs-accent);pointer-events:none}.qbs-panel__corner--tl[data-v-749400b6]{top:-1px;left:-1px;border-right:0;border-bottom:0}.qbs-panel__corner--tr[data-v-749400b6]{top:-1px;right:-1px;border-left:0;border-bottom:0}.qbs-panel__corner--bl[data-v-749400b6]{bottom:-1px;left:-1px;border-right:0;border-top:0}.qbs-panel__corner--br[data-v-749400b6]{right:-1px;bottom:-1px;border-left:0;border-top:0}.qbs-panel__header[data-v-749400b6]{display:flex;align-items:center;gap:8px;margin:0 0 10px;min-width:0;font-weight:700;letter-spacing:1px}.qbs-panel__header--md[data-v-749400b6]{font-size:14px}.qbs-panel__header--sm[data-v-749400b6]{margin-bottom:8px;font-size:13px}.qbs-panel__bar[data-v-749400b6]{width:4px;height:14px;flex-shrink:0;border-radius:2px;background:var(--qbs-accent);box-shadow:0 0 8px var(--qbs-accent)}.qbs-panel__title[data-v-749400b6]{flex-shrink:0}.qbs-panel__header-prefix[data-v-749400b6]{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.qbs-panel__header-center[data-v-749400b6]{display:inline-flex;flex:1;min-width:0;justify-content:center}.qbs-panel__header-extra[data-v-749400b6]{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:0;margin-left:auto}.qbs-panel__live[data-v-749400b6]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:1px;color:#ff5050;color:oklch(.68 .22 25)}.qbs-panel__live-dot[data-v-749400b6]{width:7px;height:7px;border-radius:50%;background:#ff5050;background:oklch(.68 .22 25);box-shadow:0 0 8px #ff5050;box-shadow:0 0 8px oklch(.68 .22 25);animation:qbs-panel-blink-749400b6 1s steps(1,end) infinite}.qbs-panel__body[data-v-749400b6]{display:flex;flex:1;min-height:0;flex-direction:column}.qbs-panel--layout-metric .qbs-panel__body[data-v-749400b6]{align-items:center;justify-content:center;gap:4px;text-align:center}@keyframes qbs-panel-blink-749400b6{50%{opacity:.25}}
1
+ :root{--qbs-surface-top: rgba(13, 24, 39, .92);--qbs-surface-bottom: rgba(8, 16, 28, .96);--qbs-border: rgba(142, 161, 178, .2);--qbs-text: #f6f8fb;--qbs-muted: #9fb2c7;--qbs-radius: 20px;--qbs-shadow: 0 18px 48px rgba(4, 10, 18, .28)}.qbs-panel[data-v-749400b6]{position:relative;display:flex;height:100%;min-height:0;flex-direction:column;border:1px solid oklch(.6 .12 220 / .28);border-radius:10px;background:linear-gradient(160deg,#091b318c,#050f2066);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#c8e4e9}.qbs-panel--overflow-hidden[data-v-749400b6]{overflow:hidden}.qbs-panel--padding-md[data-v-749400b6]{padding:14px 16px}.qbs-panel--padding-compact[data-v-749400b6]{padding:10px 12px}.qbs-panel--padding-tight[data-v-749400b6]{padding:12px 8px}.qbs-panel__corner[data-v-749400b6]{position:absolute;width:12px;height:12px;border:2px solid var(--qbs-accent);pointer-events:none}.qbs-panel__corner--tl[data-v-749400b6]{top:-1px;left:-1px;border-right:0;border-bottom:0}.qbs-panel__corner--tr[data-v-749400b6]{top:-1px;right:-1px;border-left:0;border-bottom:0}.qbs-panel__corner--bl[data-v-749400b6]{bottom:-1px;left:-1px;border-right:0;border-top:0}.qbs-panel__corner--br[data-v-749400b6]{right:-1px;bottom:-1px;border-left:0;border-top:0}.qbs-panel__header[data-v-749400b6]{display:flex;align-items:center;gap:8px;margin:0 0 10px;min-width:0;font-weight:700;letter-spacing:1px}.qbs-panel__header--md[data-v-749400b6]{font-size:14px}.qbs-panel__header--sm[data-v-749400b6]{margin-bottom:8px;font-size:13px}.qbs-panel__bar[data-v-749400b6]{width:4px;height:14px;flex-shrink:0;border-radius:2px;background:var(--qbs-accent);box-shadow:0 0 8px var(--qbs-accent)}.qbs-panel__title[data-v-749400b6]{flex-shrink:0}.qbs-panel__header-prefix[data-v-749400b6]{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.qbs-panel__header-center[data-v-749400b6]{display:inline-flex;flex:1;min-width:0;justify-content:center}.qbs-panel__header-extra[data-v-749400b6]{display:inline-flex;align-items:center;justify-content:flex-end;flex-shrink:0;margin-left:auto}.qbs-panel__live[data-v-749400b6]{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;letter-spacing:1px;color:#ff5050;color:oklch(.68 .22 25)}.qbs-panel__live-dot[data-v-749400b6]{width:7px;height:7px;border-radius:50%;background:#ff5050;background:oklch(.68 .22 25);box-shadow:0 0 8px #ff5050;box-shadow:0 0 8px oklch(.68 .22 25);animation:qbs-panel-blink-749400b6 1s steps(1,end) infinite}.qbs-panel__body[data-v-749400b6]{display:flex;flex:1;min-height:0;flex-direction:column}.qbs-panel--layout-metric .qbs-panel__body[data-v-749400b6]{align-items:center;justify-content:center;gap:4px;text-align:center}@keyframes qbs-panel-blink-749400b6{50%{opacity:.25}}.qbs-duty-compact[data-v-f5721bce]{display:flex;align-items:center;gap:12px}.qbs-duty-compact__avatar[data-v-f5721bce]{display:flex;width:42px;height:42px;align-items:center;justify-content:center;border-radius:10px;background:#34dde5;box-shadow:0 0 14px #34dde599;color:#050e1a;font-size:18px;font-weight:700}.qbs-duty-compact__info[data-v-f5721bce]{display:flex;flex-direction:column}.qbs-duty-compact__name[data-v-f5721bce]{color:#cfebf0;font-size:15px;font-weight:700}.qbs-duty-compact__phone[data-v-f5721bce]{color:#7d939e;font-family:var(--font-mono,monospace);font-size:12px}.qbs-duty-compact__tag[data-v-f5721bce]{margin-left:auto;padding:4px 10px;border:1px solid oklch(.82 .13 200 / .4);border-radius:20px;background:#34dde51a;color:#34dde5;font-size:11px}.qbs-duty[data-v-f5721bce]{display:flex;height:100%;min-height:0;flex-direction:column;gap:14px}.qbs-duty__summary[data-v-f5721bce]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.qbs-duty__summary-chip[data-v-f5721bce]{padding:10px 12px;border:1px solid rgba(157,176,198,.12);border-radius:14px;background:#0f1927bd}.qbs-duty__summary-chip span[data-v-f5721bce]{display:block;margin-bottom:6px;color:#8ca0b4;font-size:11px}.qbs-duty__summary-chip strong[data-v-f5721bce]{color:#f5f8fc;font-size:15px;line-height:1.2}.qbs-duty__list[data-v-f5721bce]{display:grid;min-height:0;gap:10px;overflow:auto}.qbs-duty__group[data-v-f5721bce]{padding:12px;border:1px solid rgba(157,176,198,.1);border-radius:16px;background:#0d1723c2}.qbs-duty__group-header[data-v-f5721bce]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;color:#edf3f9;font-size:13px}.qbs-duty__group-header span[data-v-f5721bce]{color:#8ca0b4}.qbs-duty__users[data-v-f5721bce]{display:flex;flex-wrap:wrap;gap:8px}.qbs-duty__user[data-v-f5721bce]{padding:5px 10px;border-radius:999px;background:#19293ed1;color:#bfd0e0;font-size:12px}.qbs-duty__empty[data-v-f5721bce]{display:grid;min-height:140px;place-items:center;border:1px dashed rgba(157,176,198,.14);border-radius:16px;background:#0c162280;color:#7d91a6;font-size:13px}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { default as BigScreenPanel } from './components/BigScreenPanel.vue';
2
+ export { default as BigScreenDutyContent } from './components/BigScreenDutyContent.vue';
3
+ export type { BigScreenDutyGroup, BigScreenDutyUser } from './components/BigScreenDutyContent.vue';
2
4
  export { bigScreenPreviewFixtures, getBigScreenPreviewData } from './fixtures/big-screen';
3
5
  export type { BigScreenPreviewWidgetType } from './fixtures/big-screen';
4
6
  export type { BigScreenPanelProps, BigScreenPreviewFixtures, BigScreenTone } from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACzF,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AACvF,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAClG,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAA;AACzF,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACvE,YAAY,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -1,35 +1,35 @@
1
- import { defineComponent as b, openBlock as a, createElementBlock as s, normalizeStyle as p, normalizeClass as i, createCommentVNode as n, toDisplayString as u, renderSlot as d, createElementVNode as c, createTextVNode as y } from "vue";
2
- const m = {
1
+ import { defineComponent as m, openBlock as a, createElementBlock as n, normalizeStyle as h, normalizeClass as p, createCommentVNode as r, toDisplayString as l, renderSlot as i, createElementVNode as s, createTextVNode as f, Fragment as y, renderList as b } from "vue";
2
+ const v = {
3
3
  key: 0,
4
4
  class: "qbs-panel__corner qbs-panel__corner--tl"
5
- }, g = {
5
+ }, q = {
6
6
  key: 1,
7
7
  class: "qbs-panel__corner qbs-panel__corner--tr"
8
- }, _ = {
8
+ }, N = {
9
9
  key: 2,
10
10
  class: "qbs-panel__corner qbs-panel__corner--bl"
11
- }, h = {
11
+ }, k = {
12
12
  key: 3,
13
13
  class: "qbs-panel__corner qbs-panel__corner--br"
14
- }, f = {
14
+ }, I = {
15
15
  key: 0,
16
16
  class: "qbs-panel__bar"
17
- }, v = {
17
+ }, $ = {
18
18
  key: 1,
19
19
  class: "qbs-panel__title"
20
- }, q = {
20
+ }, T = {
21
21
  key: 2,
22
22
  class: "qbs-panel__header-prefix"
23
- }, I = {
23
+ }, C = {
24
24
  key: 3,
25
25
  class: "qbs-panel__header-center"
26
- }, N = {
26
+ }, S = {
27
27
  key: 4,
28
28
  class: "qbs-panel__header-extra"
29
- }, k = {
29
+ }, w = {
30
30
  key: 0,
31
31
  class: "qbs-panel__live"
32
- }, C = { class: "qbs-panel__body" }, S = /* @__PURE__ */ b({
32
+ }, x = { class: "qbs-panel__body" }, B = /* @__PURE__ */ m({
33
33
  __name: "BigScreenPanel",
34
34
  props: {
35
35
  title: { default: "" },
@@ -44,53 +44,124 @@ const m = {
44
44
  },
45
45
  setup(e) {
46
46
  const o = e;
47
- function r(t) {
47
+ function u(t) {
48
48
  return o.corners === "all" ? !0 : o.corners === "none" ? !1 : t === "tl" || t === "br";
49
49
  }
50
- return (t, l) => (a(), s("section", {
51
- class: i(["qbs-panel", [
50
+ return (t, d) => (a(), n("section", {
51
+ class: p(["qbs-panel", [
52
52
  `qbs-panel--padding-${e.padding}`,
53
53
  `qbs-panel--layout-${e.bodyLayout}`,
54
54
  { "qbs-panel--overflow-hidden": e.overflowHidden }
55
55
  ]]),
56
- style: p({ "--qbs-accent": e.accent })
56
+ style: h({ "--qbs-accent": e.accent })
57
57
  }, [
58
- r("tl") ? (a(), s("span", m)) : n("", !0),
59
- r("tr") ? (a(), s("span", g)) : n("", !0),
60
- r("bl") ? (a(), s("span", _)) : n("", !0),
61
- r("br") ? (a(), s("span", h)) : n("", !0),
62
- e.title || e.liveLabel || t.$slots["header-center"] || t.$slots["header-extra"] ? (a(), s("header", {
58
+ u("tl") ? (a(), n("span", v)) : r("", !0),
59
+ u("tr") ? (a(), n("span", q)) : r("", !0),
60
+ u("bl") ? (a(), n("span", N)) : r("", !0),
61
+ u("br") ? (a(), n("span", k)) : r("", !0),
62
+ e.title || e.liveLabel || t.$slots["header-center"] || t.$slots["header-extra"] ? (a(), n("header", {
63
63
  key: 4,
64
- class: i(["qbs-panel__header", `qbs-panel__header--${e.titleSize}`])
64
+ class: p(["qbs-panel__header", `qbs-panel__header--${e.titleSize}`])
65
65
  }, [
66
- e.showBar ? (a(), s("span", f)) : n("", !0),
67
- e.title ? (a(), s("span", v, u(e.title), 1)) : n("", !0),
68
- t.$slots["header-prefix"] ? (a(), s("span", q, [
69
- d(t.$slots, "header-prefix", {}, void 0, !0)
70
- ])) : n("", !0),
71
- t.$slots["header-center"] ? (a(), s("span", I, [
72
- d(t.$slots, "header-center", {}, void 0, !0)
73
- ])) : n("", !0),
74
- t.$slots["header-extra"] || e.liveLabel ? (a(), s("span", N, [
75
- d(t.$slots, "header-extra", {}, () => [
76
- e.liveLabel ? (a(), s("span", k, [
77
- l[0] || (l[0] = c("span", { class: "qbs-panel__live-dot" }, null, -1)),
78
- y(u(e.liveLabel), 1)
79
- ])) : n("", !0)
66
+ e.showBar ? (a(), n("span", I)) : r("", !0),
67
+ e.title ? (a(), n("span", $, l(e.title), 1)) : r("", !0),
68
+ t.$slots["header-prefix"] ? (a(), n("span", T, [
69
+ i(t.$slots, "header-prefix", {}, void 0, !0)
70
+ ])) : r("", !0),
71
+ t.$slots["header-center"] ? (a(), n("span", C, [
72
+ i(t.$slots, "header-center", {}, void 0, !0)
73
+ ])) : r("", !0),
74
+ t.$slots["header-extra"] || e.liveLabel ? (a(), n("span", S, [
75
+ i(t.$slots, "header-extra", {}, () => [
76
+ e.liveLabel ? (a(), n("span", w, [
77
+ d[0] || (d[0] = s("span", { class: "qbs-panel__live-dot" }, null, -1)),
78
+ f(l(e.liveLabel), 1)
79
+ ])) : r("", !0)
80
80
  ], !0)
81
- ])) : n("", !0)
82
- ], 2)) : n("", !0),
83
- c("div", C, [
84
- d(t.$slots, "default", {}, void 0, !0)
81
+ ])) : r("", !0)
82
+ ], 2)) : r("", !0),
83
+ s("div", x, [
84
+ i(t.$slots, "default", {}, void 0, !0)
85
85
  ])
86
86
  ], 6));
87
87
  }
88
- }), T = (e, o) => {
89
- const r = e.__vccOpts || e;
90
- for (const [t, l] of o)
91
- r[t] = l;
92
- return r;
93
- }, A = /* @__PURE__ */ T(S, [["__scopeId", "data-v-749400b6"]]), w = {
88
+ }), g = (e, o) => {
89
+ const u = e.__vccOpts || e;
90
+ for (const [t, d] of o)
91
+ u[t] = d;
92
+ return u;
93
+ }, Q = /* @__PURE__ */ g(B, [["__scopeId", "data-v-749400b6"]]), A = {
94
+ key: 0,
95
+ class: "qbs-duty-compact"
96
+ }, L = { class: "qbs-duty-compact__avatar" }, P = { class: "qbs-duty-compact__info" }, R = { class: "qbs-duty-compact__name" }, G = { class: "qbs-duty-compact__phone" }, z = {
97
+ key: 0,
98
+ class: "qbs-duty-compact__tag"
99
+ }, D = {
100
+ key: 1,
101
+ class: "qbs-duty"
102
+ }, U = { class: "qbs-duty__summary" }, O = { class: "qbs-duty__summary-chip" }, j = { class: "qbs-duty__summary-chip" }, F = { class: "qbs-duty__summary-chip" }, V = { class: "qbs-duty__list" }, E = { class: "qbs-duty__group-header" }, H = { class: "qbs-duty__users" }, J = {
103
+ key: 0,
104
+ class: "qbs-duty__empty"
105
+ }, M = /* @__PURE__ */ m({
106
+ __name: "BigScreenDutyContent",
107
+ props: {
108
+ compact: { type: Boolean, default: !1 },
109
+ personName: { default: "" },
110
+ personPhone: { default: "" },
111
+ personTag: { default: "" },
112
+ date: { default: "" },
113
+ totalGroups: { default: void 0 },
114
+ totalUsers: { default: void 0 },
115
+ groups: { default: () => [] }
116
+ },
117
+ setup(e) {
118
+ const o = e;
119
+ return (u, t) => o.compact ? (a(), n("div", A, [
120
+ s("div", L, l(o.personName.charAt(0) || "-"), 1),
121
+ s("div", P, [
122
+ s("span", R, l(o.personName || "暂未排班"), 1),
123
+ s("span", G, l(o.personPhone || "—"), 1)
124
+ ]),
125
+ o.personTag ? (a(), n("span", z, l(o.personTag), 1)) : r("", !0)
126
+ ])) : (a(), n("div", D, [
127
+ s("div", U, [
128
+ s("div", O, [
129
+ t[0] || (t[0] = s("span", null, "日期", -1)),
130
+ s("strong", null, l(o.date || "未同步"), 1)
131
+ ]),
132
+ s("div", j, [
133
+ t[1] || (t[1] = s("span", null, "值班组", -1)),
134
+ s("strong", null, l(o.totalGroups ?? o.groups.length), 1)
135
+ ]),
136
+ s("div", F, [
137
+ t[2] || (t[2] = s("span", null, "值班人数", -1)),
138
+ s("strong", null, l(o.totalUsers ?? 0), 1)
139
+ ])
140
+ ]),
141
+ s("div", V, [
142
+ (a(!0), n(y, null, b(o.groups, (d) => {
143
+ var _;
144
+ return a(), n("article", {
145
+ key: d.groupId,
146
+ class: "qbs-duty__group"
147
+ }, [
148
+ s("div", E, [
149
+ s("strong", null, l(d.groupName), 1),
150
+ s("span", null, l(((_ = d.users) == null ? void 0 : _.length) || 0) + " 人", 1)
151
+ ]),
152
+ s("div", H, [
153
+ (a(!0), n(y, null, b(d.users || [], (c) => (a(), n("span", {
154
+ key: c.userId,
155
+ class: "qbs-duty__user"
156
+ }, l(c.nickName || c.username), 1))), 128))
157
+ ])
158
+ ]);
159
+ }), 128)),
160
+ o.groups.length ? r("", !0) : (a(), n("div", J, "暂无值班数据"))
161
+ ])
162
+ ]));
163
+ }
164
+ }), X = /* @__PURE__ */ g(M, [["__scopeId", "data-v-f5721bce"]]), W = {
94
165
  screen_header: {
95
166
  dateText: "2026-07-27",
96
167
  timeText: "14:30",
@@ -143,11 +214,12 @@ const m = {
143
214
  ]
144
215
  }
145
216
  };
146
- function $(e) {
147
- return JSON.parse(JSON.stringify(w[e]));
217
+ function Y(e) {
218
+ return JSON.parse(JSON.stringify(W[e]));
148
219
  }
149
220
  export {
150
- A as BigScreenPanel,
151
- w as bigScreenPreviewFixtures,
152
- $ as getBigScreenPreviewData
221
+ X as BigScreenDutyContent,
222
+ Q as BigScreenPanel,
223
+ W as bigScreenPreviewFixtures,
224
+ Y as getBigScreenPreviewData
153
225
  };
@@ -1 +1 @@
1
- (function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.QuarkBigScreenUi={},n.Vue))})(this,(function(n,e){"use strict";const d={key:0,class:"qbs-panel__corner qbs-panel__corner--tl"},i={key:1,class:"qbs-panel__corner qbs-panel__corner--tr"},c={key:2,class:"qbs-panel__corner qbs-panel__corner--bl"},u={key:3,class:"qbs-panel__corner qbs-panel__corner--br"},m={key:0,class:"qbs-panel__bar"},p={key:1,class:"qbs-panel__title"},b={key:2,class:"qbs-panel__header-prefix"},y={key:3,class:"qbs-panel__header-center"},g={key:4,class:"qbs-panel__header-extra"},f={key:0,class:"qbs-panel__live"},k={class:"qbs-panel__body"},_=((t,s)=>{const o=t.__vccOpts||t;for(const[a,r]of s)o[a]=r;return o})(e.defineComponent({__name:"BigScreenPanel",props:{title:{default:""},accent:{default:"oklch(.82 .13 200)"},liveLabel:{default:""},showBar:{type:Boolean,default:!0},corners:{default:"tl-br"},padding:{default:"md"},bodyLayout:{default:"default"},titleSize:{default:"md"},overflowHidden:{type:Boolean,default:!0}},setup(t){const s=t;function o(a){return s.corners==="all"?!0:s.corners==="none"?!1:a==="tl"||a==="br"}return(a,r)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["qbs-panel",[`qbs-panel--padding-${t.padding}`,`qbs-panel--layout-${t.bodyLayout}`,{"qbs-panel--overflow-hidden":t.overflowHidden}]]),style:e.normalizeStyle({"--qbs-accent":t.accent})},[o("tl")?(e.openBlock(),e.createElementBlock("span",d)):e.createCommentVNode("",!0),o("tr")?(e.openBlock(),e.createElementBlock("span",i)):e.createCommentVNode("",!0),o("bl")?(e.openBlock(),e.createElementBlock("span",c)):e.createCommentVNode("",!0),o("br")?(e.openBlock(),e.createElementBlock("span",u)):e.createCommentVNode("",!0),t.title||t.liveLabel||a.$slots["header-center"]||a.$slots["header-extra"]?(e.openBlock(),e.createElementBlock("header",{key:4,class:e.normalizeClass(["qbs-panel__header",`qbs-panel__header--${t.titleSize}`])},[t.showBar?(e.openBlock(),e.createElementBlock("span",m)):e.createCommentVNode("",!0),t.title?(e.openBlock(),e.createElementBlock("span",p,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),a.$slots["header-prefix"]?(e.openBlock(),e.createElementBlock("span",b,[e.renderSlot(a.$slots,"header-prefix",{},void 0,!0)])):e.createCommentVNode("",!0),a.$slots["header-center"]?(e.openBlock(),e.createElementBlock("span",y,[e.renderSlot(a.$slots,"header-center",{},void 0,!0)])):e.createCommentVNode("",!0),a.$slots["header-extra"]||t.liveLabel?(e.openBlock(),e.createElementBlock("span",g,[e.renderSlot(a.$slots,"header-extra",{},()=>[t.liveLabel?(e.openBlock(),e.createElementBlock("span",f,[r[0]||(r[0]=e.createElementVNode("span",{class:"qbs-panel__live-dot"},null,-1)),e.createTextVNode(e.toDisplayString(t.liveLabel),1)])):e.createCommentVNode("",!0)],!0)])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",k,[e.renderSlot(a.$slots,"default",{},void 0,!0)])],6))}}),[["__scopeId","data-v-749400b6"]]),l={screen_header:{dateText:"2026-07-27",timeText:"14:30",weekdayText:"星期一"},robot:{status:"online",mode:"guard",emotion:"neutral",generatedAt:"2026-07-27 14:30:00",summary:{dutyGroups:3,todayAlerts:12,buildingCount:4,endpointNodes:86},alerts:{todayTotal:12,todayPending:3,criticalCount:1,warningCount:5},builds:{buildingCount:4,todayBuilds:28,successRate:98.6}},duty_today:{date:"2026-07-27",totalGroups:3,totalUsers:8,groups:[{groupId:1,groupName:"平台组",users:[{userId:101,nickName:"张工",username:"zhang"},{userId:102,nickName:"李工",username:"li"}]},{groupId:2,groupName:"网络组",users:[{userId:103,nickName:"王工",username:"wang"}]}]},alert_latest:{total:3,stats:{todayTotal:12,todayPending:3,overdueTotal:1,criticalCount:1,warningCount:5,infoCount:6},items:[{id:1,alertId:"AL-20260727-001",title:"边缘节点延迟升高",severity:"WARN",severityText:"警告",status:"pending",statusText:"待处理",source:"edge-01",firedAt:"14:20",groupNames:["网络组"]},{id:2,alertId:"AL-20260727-002",title:"构建队列等待时间过长",severity:"CRITICAL",severityText:"严重",status:"processing",statusText:"处理中",source:"CI/CD",firedAt:"14:08",groupNames:["平台组"]},{id:3,alertId:"AL-20260727-003",title:"磁盘使用率接近阈值",severity:"INFO",severityText:"提示",status:"pending",statusText:"待处理",source:"node-03",firedAt:"13:56",groupNames:["运维组"]}]},build_projects:{summary:{buildingCount:4,todayBuilds:28,successRate:98.6},items:[{pipelineId:1,buildId:101,jobName:"eagle-eye-web",statusText:"构建中",currentStage:"测试",buildUser:"system",progress:68},{pipelineId:2,buildId:102,jobName:"quark-api",statusText:"构建中",currentStage:"镜像打包",buildUser:"李工",progress:42}]},build_distribution:{total:100,items:[{name:"应用构建",count:42},{name:"镜像构建",count:27},{name:"基础设施",count:18},{name:"其他任务",count:13}]},endpoint_distribution:{summary:{total:3},items:[{id:1,nodeName:"edge-01",nodeIp:"10.10.2.11",nodeStatus:!0,heartbeatResults:[{targetName:"API Gateway",targetIp:"10.10.1.10",latencyMs:12.4}]},{id:2,nodeName:"edge-02",nodeIp:"10.10.2.12",nodeStatus:!0,heartbeatResults:[{targetName:"API Gateway",targetIp:"10.10.1.10",latencyMs:18.7}]},{id:3,nodeName:"edge-03",nodeIp:"10.10.2.13",nodeStatus:!1,heartbeatResults:[]}]}};function h(t){return JSON.parse(JSON.stringify(l[t]))}n.BigScreenPanel=_,n.bigScreenPreviewFixtures=l,n.getBigScreenPreviewData=h,Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(o,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(o=typeof globalThis<"u"?globalThis:o||self,e(o.QuarkBigScreenUi={},o.Vue))})(this,(function(o,e){"use strict";const m={key:0,class:"qbs-panel__corner qbs-panel__corner--tl"},p={key:1,class:"qbs-panel__corner qbs-panel__corner--tr"},_={key:2,class:"qbs-panel__corner qbs-panel__corner--bl"},u={key:3,class:"qbs-panel__corner qbs-panel__corner--br"},y={key:0,class:"qbs-panel__bar"},g={key:1,class:"qbs-panel__title"},b={key:2,class:"qbs-panel__header-prefix"},k={key:3,class:"qbs-panel__header-center"},N={key:4,class:"qbs-panel__header-extra"},f={key:0,class:"qbs-panel__live"},h={class:"qbs-panel__body"},B=e.defineComponent({__name:"BigScreenPanel",props:{title:{default:""},accent:{default:"oklch(.82 .13 200)"},liveLabel:{default:""},showBar:{type:Boolean,default:!0},corners:{default:"tl-br"},padding:{default:"md"},bodyLayout:{default:"default"},titleSize:{default:"md"},overflowHidden:{type:Boolean,default:!0}},setup(t){const s=t;function r(n){return s.corners==="all"?!0:s.corners==="none"?!1:n==="tl"||n==="br"}return(n,a)=>(e.openBlock(),e.createElementBlock("section",{class:e.normalizeClass(["qbs-panel",[`qbs-panel--padding-${t.padding}`,`qbs-panel--layout-${t.bodyLayout}`,{"qbs-panel--overflow-hidden":t.overflowHidden}]]),style:e.normalizeStyle({"--qbs-accent":t.accent})},[r("tl")?(e.openBlock(),e.createElementBlock("span",m)):e.createCommentVNode("",!0),r("tr")?(e.openBlock(),e.createElementBlock("span",p)):e.createCommentVNode("",!0),r("bl")?(e.openBlock(),e.createElementBlock("span",_)):e.createCommentVNode("",!0),r("br")?(e.openBlock(),e.createElementBlock("span",u)):e.createCommentVNode("",!0),t.title||t.liveLabel||n.$slots["header-center"]||n.$slots["header-extra"]?(e.openBlock(),e.createElementBlock("header",{key:4,class:e.normalizeClass(["qbs-panel__header",`qbs-panel__header--${t.titleSize}`])},[t.showBar?(e.openBlock(),e.createElementBlock("span",y)):e.createCommentVNode("",!0),t.title?(e.openBlock(),e.createElementBlock("span",g,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),n.$slots["header-prefix"]?(e.openBlock(),e.createElementBlock("span",b,[e.renderSlot(n.$slots,"header-prefix",{},void 0,!0)])):e.createCommentVNode("",!0),n.$slots["header-center"]?(e.openBlock(),e.createElementBlock("span",k,[e.renderSlot(n.$slots,"header-center",{},void 0,!0)])):e.createCommentVNode("",!0),n.$slots["header-extra"]||t.liveLabel?(e.openBlock(),e.createElementBlock("span",N,[e.renderSlot(n.$slots,"header-extra",{},()=>[t.liveLabel?(e.openBlock(),e.createElementBlock("span",f,[a[0]||(a[0]=e.createElementVNode("span",{class:"qbs-panel__live-dot"},null,-1)),e.createTextVNode(e.toDisplayString(t.liveLabel),1)])):e.createCommentVNode("",!0)],!0)])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("div",h,[e.renderSlot(n.$slots,"default",{},void 0,!0)])],6))}}),d=(t,s)=>{const r=t.__vccOpts||t;for(const[n,a]of s)r[n]=a;return r},q=d(B,[["__scopeId","data-v-749400b6"]]),E={key:0,class:"qbs-duty-compact"},S={class:"qbs-duty-compact__avatar"},V={class:"qbs-duty-compact__info"},C={class:"qbs-duty-compact__name"},I={class:"qbs-duty-compact__phone"},$={key:0,class:"qbs-duty-compact__tag"},T={key:1,class:"qbs-duty"},D={class:"qbs-duty__summary"},w={class:"qbs-duty__summary-chip"},x={class:"qbs-duty__summary-chip"},P={class:"qbs-duty__summary-chip"},A={class:"qbs-duty__list"},L={class:"qbs-duty__group-header"},R={class:"qbs-duty__users"},z={key:0,class:"qbs-duty__empty"},G=d(e.defineComponent({__name:"BigScreenDutyContent",props:{compact:{type:Boolean,default:!1},personName:{default:""},personPhone:{default:""},personTag:{default:""},date:{default:""},totalGroups:{default:void 0},totalUsers:{default:void 0},groups:{default:()=>[]}},setup(t){const s=t;return(r,n)=>s.compact?(e.openBlock(),e.createElementBlock("div",E,[e.createElementVNode("div",S,e.toDisplayString(s.personName.charAt(0)||"-"),1),e.createElementVNode("div",V,[e.createElementVNode("span",C,e.toDisplayString(s.personName||"暂未排班"),1),e.createElementVNode("span",I,e.toDisplayString(s.personPhone||"—"),1)]),s.personTag?(e.openBlock(),e.createElementBlock("span",$,e.toDisplayString(s.personTag),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("div",T,[e.createElementVNode("div",D,[e.createElementVNode("div",w,[n[0]||(n[0]=e.createElementVNode("span",null,"日期",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.date||"未同步"),1)]),e.createElementVNode("div",x,[n[1]||(n[1]=e.createElementVNode("span",null,"值班组",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.totalGroups??s.groups.length),1)]),e.createElementVNode("div",P,[n[2]||(n[2]=e.createElementVNode("span",null,"值班人数",-1)),e.createElementVNode("strong",null,e.toDisplayString(s.totalUsers??0),1)])]),e.createElementVNode("div",A,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.groups,a=>{var i;return e.openBlock(),e.createElementBlock("article",{key:a.groupId,class:"qbs-duty__group"},[e.createElementVNode("div",L,[e.createElementVNode("strong",null,e.toDisplayString(a.groupName),1),e.createElementVNode("span",null,e.toDisplayString(((i=a.users)==null?void 0:i.length)||0)+" 人",1)]),e.createElementVNode("div",R,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.users||[],l=>(e.openBlock(),e.createElementBlock("span",{key:l.userId,class:"qbs-duty__user"},e.toDisplayString(l.nickName||l.username),1))),128))])])}),128)),s.groups.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("div",z,"暂无值班数据"))])]))}}),[["__scopeId","data-v-f5721bce"]]),c={screen_header:{dateText:"2026-07-27",timeText:"14:30",weekdayText:"星期一"},robot:{status:"online",mode:"guard",emotion:"neutral",generatedAt:"2026-07-27 14:30:00",summary:{dutyGroups:3,todayAlerts:12,buildingCount:4,endpointNodes:86},alerts:{todayTotal:12,todayPending:3,criticalCount:1,warningCount:5},builds:{buildingCount:4,todayBuilds:28,successRate:98.6}},duty_today:{date:"2026-07-27",totalGroups:3,totalUsers:8,groups:[{groupId:1,groupName:"平台组",users:[{userId:101,nickName:"张工",username:"zhang"},{userId:102,nickName:"李工",username:"li"}]},{groupId:2,groupName:"网络组",users:[{userId:103,nickName:"王工",username:"wang"}]}]},alert_latest:{total:3,stats:{todayTotal:12,todayPending:3,overdueTotal:1,criticalCount:1,warningCount:5,infoCount:6},items:[{id:1,alertId:"AL-20260727-001",title:"边缘节点延迟升高",severity:"WARN",severityText:"警告",status:"pending",statusText:"待处理",source:"edge-01",firedAt:"14:20",groupNames:["网络组"]},{id:2,alertId:"AL-20260727-002",title:"构建队列等待时间过长",severity:"CRITICAL",severityText:"严重",status:"processing",statusText:"处理中",source:"CI/CD",firedAt:"14:08",groupNames:["平台组"]},{id:3,alertId:"AL-20260727-003",title:"磁盘使用率接近阈值",severity:"INFO",severityText:"提示",status:"pending",statusText:"待处理",source:"node-03",firedAt:"13:56",groupNames:["运维组"]}]},build_projects:{summary:{buildingCount:4,todayBuilds:28,successRate:98.6},items:[{pipelineId:1,buildId:101,jobName:"eagle-eye-web",statusText:"构建中",currentStage:"测试",buildUser:"system",progress:68},{pipelineId:2,buildId:102,jobName:"quark-api",statusText:"构建中",currentStage:"镜像打包",buildUser:"李工",progress:42}]},build_distribution:{total:100,items:[{name:"应用构建",count:42},{name:"镜像构建",count:27},{name:"基础设施",count:18},{name:"其他任务",count:13}]},endpoint_distribution:{summary:{total:3},items:[{id:1,nodeName:"edge-01",nodeIp:"10.10.2.11",nodeStatus:!0,heartbeatResults:[{targetName:"API Gateway",targetIp:"10.10.1.10",latencyMs:12.4}]},{id:2,nodeName:"edge-02",nodeIp:"10.10.2.12",nodeStatus:!0,heartbeatResults:[{targetName:"API Gateway",targetIp:"10.10.1.10",latencyMs:18.7}]},{id:3,nodeName:"edge-03",nodeIp:"10.10.2.13",nodeStatus:!1,heartbeatResults:[]}]}};function U(t){return JSON.parse(JSON.stringify(c[t]))}o.BigScreenDutyContent=G,o.BigScreenPanel=q,o.bigScreenPreviewFixtures=c,o.getBigScreenPreviewData=U,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akiraka/quark-big-screen-ui",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "description": "Shared visual components for Quark big-screen applications.",
5
5
  "type": "module",
6
6
  "files": [