@webx-ui/module-notifications 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,12 @@
1
+ type __VLS_Props = {
2
+ channel?: number | null;
3
+ token?: string;
4
+ /** Chats already on the list: shown ticked and not added twice. */
5
+ chosen?: string[];
6
+ };
7
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
8
+ channel: number | null;
9
+ token: string;
10
+ chosen: string[];
11
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
12
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLElement>;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import { NotificationsMeta } from './types';
2
+ type __VLS_Props = {
3
+ meta: NotificationsMeta;
4
+ };
5
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
6
+ export default _default;
@@ -0,0 +1,669 @@
1
+ import { defineComponent as le, ref as m, computed as f, openBlock as p, createBlock as k, unref as a, isRef as We, withCtx as n, createVNode as s, createTextVNode as u, toDisplayString as o, watch as H, createElementBlock as J, createCommentVNode as T, createElementVNode as z, withModifiers as K } from "vue";
2
+ import { useRoute as ze, useRouter as Ce } from "vue-router";
3
+ import { useModal as Ne, WxDialog as $e, WxText as v, WxFormItem as A, WxSegmented as Be, WxSelect as E, WxSpace as Se, WxButton as Q, createModal as Te, WxAlert as Ue, WxTable as X, WxSwitch as Y, WxBadge as R, WxIcon as Me, toast as d, confirm as Z } from "@webx-ui/core";
4
+ import { useTranslate as ne, useAdmin as je, useErrorText as qe, rowMenuWidth as ee, WxListScreen as Re, WxRowMenu as ae, WxDate as te } from "@webx-ui/module-admin";
5
+ import { u as ie, c as Ae, _ as De } from "./index-DIeEPPSh.js";
6
+ const Fe = /* @__PURE__ */ le({
7
+ name: "WxNotificationsNewChannel",
8
+ __name: "NewChannelDialog",
9
+ props: {
10
+ meta: {}
11
+ },
12
+ setup(D) {
13
+ const x = D, { open: w, resolve: b, dismiss: U } = Ne();
14
+ ie();
15
+ const y = ne("webx-notifications"), l = m(x.meta.providers[0]?.key ?? ""), c = m(null), V = f(
16
+ () => x.meta.providers.map((g) => ({ value: g.key, label: g.label, icon: g.icon }))
17
+ ), M = f(() => [
18
+ { value: "", label: y("panel.any-event") },
19
+ ...x.meta.events.map((g) => ({ value: g.key, label: g.label }))
20
+ ]);
21
+ function _() {
22
+ b({ provider: l.value, event: c.value === "" ? null : c.value });
23
+ }
24
+ return (g, r) => (p(), k(a($e), {
25
+ open: a(w),
26
+ "onUpdate:open": r[3] || (r[3] = (h) => We(w) ? w.value = h : null),
27
+ title: a(y)("panel.new-title"),
28
+ width: 460
29
+ }, {
30
+ footer: n(() => [
31
+ s(a(Se), { size: "sm" }, {
32
+ default: n(() => [
33
+ s(a(Q), {
34
+ variant: "outline",
35
+ onClick: r[2] || (r[2] = (h) => a(U)())
36
+ }, {
37
+ default: n(() => [
38
+ u(o(a(y)("panel.cancel")), 1)
39
+ ]),
40
+ _: 1
41
+ }),
42
+ s(a(Q), {
43
+ type: "primary",
44
+ disabled: l.value === "",
45
+ onClick: _
46
+ }, {
47
+ default: n(() => [
48
+ u(o(a(y)("panel.new-create")), 1)
49
+ ]),
50
+ _: 1
51
+ }, 8, ["disabled"])
52
+ ]),
53
+ _: 1
54
+ })
55
+ ]),
56
+ default: n(() => [
57
+ s(a(v), {
58
+ size: "sm",
59
+ tone: "muted"
60
+ }, {
61
+ default: n(() => [
62
+ u(o(a(y)("panel.new-help")), 1)
63
+ ]),
64
+ _: 1
65
+ }),
66
+ s(a(A), {
67
+ label: a(y)("panel.new-provider")
68
+ }, {
69
+ default: n(() => [
70
+ s(a(Be), {
71
+ modelValue: l.value,
72
+ "onUpdate:modelValue": r[0] || (r[0] = (h) => l.value = h),
73
+ options: V.value
74
+ }, null, 8, ["modelValue", "options"])
75
+ ]),
76
+ _: 1
77
+ }, 8, ["label"]),
78
+ s(a(A), {
79
+ label: a(y)("panel.new-event")
80
+ }, {
81
+ default: n(() => [
82
+ s(a(E), {
83
+ "model-value": c.value ?? "",
84
+ options: M.value,
85
+ "onUpdate:modelValue": r[1] || (r[1] = (h) => c.value = h === "" ? null : String(h))
86
+ }, null, 8, ["model-value", "options"])
87
+ ]),
88
+ _: 1
89
+ }, 8, ["label"])
90
+ ]),
91
+ _: 1
92
+ }, 8, ["open", "title"]));
93
+ }
94
+ }), Oe = {
95
+ key: 0,
96
+ class: "wx-notifications-list__note"
97
+ }, Pe = { class: "wx-notifications-list__name" }, Ee = { class: "wx-notifications-list__text" }, Ie = {
98
+ key: 0,
99
+ class: "wx-notifications-list__last"
100
+ }, Le = { class: "wx-notifications-list__text" }, Ge = { class: "wx-notifications-list__last" }, He = { class: "wx-notifications-list__details" }, Je = /* @__PURE__ */ le({
101
+ __name: "NotificationsPage",
102
+ props: {
103
+ base: { default: "/notifications" }
104
+ },
105
+ setup(D) {
106
+ const x = D, w = je(), b = Ae(w), U = ze(), y = Ce();
107
+ ie();
108
+ const l = ne("webx-notifications"), c = qe(), V = f(() => w.can("notifications.manage")), M = f(
109
+ () => w.state.manifest?.modules.find((e) => e.id === "notifications")?.title ?? l("module.title")
110
+ ), _ = f({
111
+ get: () => {
112
+ const e = U.query.view;
113
+ return e === "log" || e === "bin" ? e : "";
114
+ },
115
+ set: (e) => {
116
+ y.replace({
117
+ query: { ...U.query, view: e === "" ? void 0 : e, page: void 0 }
118
+ });
119
+ }
120
+ }), g = m(null), r = m([]), h = m([]), j = m("production"), F = m(!0), se = f(() => [
121
+ { value: "", label: l("panel.channels"), badge: r.value.length },
122
+ { value: "log", label: l("panel.log") },
123
+ { value: "bin", label: l("panel.bin"), badge: h.value.length || void 0 }
124
+ ]);
125
+ async function $() {
126
+ F.value = !0;
127
+ try {
128
+ const [e, i] = await Promise.all([b.channels(), b.channels({ trashed: !0 })]);
129
+ r.value = e.data, h.value = i.data, j.value = e.environment;
130
+ } catch (e) {
131
+ d.danger(c(e));
132
+ } finally {
133
+ F.value = !1;
134
+ }
135
+ }
136
+ $(), b.meta().then((e) => g.value = e).catch(() => {
137
+ });
138
+ const oe = Te(
139
+ Fe
140
+ );
141
+ async function ue() {
142
+ if (g.value === null) return;
143
+ const e = await oe({ meta: g.value });
144
+ e && y.push({
145
+ path: `${x.base}/channels/new`,
146
+ query: { provider: e.provider, ...e.event ? { event: e.event } : {} }
147
+ });
148
+ }
149
+ function I(e) {
150
+ y.push(`${x.base}/channels/${e.id}`);
151
+ }
152
+ async function re(e, i) {
153
+ try {
154
+ const t = await b.save(e.id, { enabled: i });
155
+ r.value = r.value.map((W) => W.id === e.id ? t.channel : W), d.success(l(i ? "panel.enabled" : "panel.disabled"));
156
+ } catch (t) {
157
+ const W = t.body;
158
+ d.danger(W?.errors ? Object.values(W.errors).flat().join(" ") : c(t));
159
+ }
160
+ }
161
+ async function de(e) {
162
+ try {
163
+ const i = await b.copy(e.id);
164
+ d.success(l("panel.copied", { name: i.channel.name })), await $();
165
+ } catch (i) {
166
+ d.danger(c(i));
167
+ }
168
+ }
169
+ async function ce(e) {
170
+ if (await Z({
171
+ title: l("panel.delete-title", { title: e.name }),
172
+ message: l("panel.delete-text"),
173
+ confirmText: l("panel.delete"),
174
+ cancelText: l("panel.cancel"),
175
+ tone: "danger"
176
+ }))
177
+ try {
178
+ await b.remove(e.id), d.success(l("panel.deleted")), await $();
179
+ } catch (t) {
180
+ d.danger(c(t));
181
+ }
182
+ }
183
+ async function pe(e) {
184
+ try {
185
+ await b.restore(e.id), d.success(l("panel.restored")), await $();
186
+ } catch (i) {
187
+ d.danger(c(i));
188
+ }
189
+ }
190
+ async function ve(e) {
191
+ if (await Z({
192
+ title: l("panel.purge-title", { title: e.name }),
193
+ message: l("panel.purge-text"),
194
+ confirmText: l("panel.purge"),
195
+ cancelText: l("panel.cancel"),
196
+ tone: "danger"
197
+ }))
198
+ try {
199
+ await b.purge(e.id), d.success(l("panel.purged")), await $();
200
+ } catch (t) {
201
+ d.danger(c(t));
202
+ }
203
+ }
204
+ function me(e) {
205
+ return _.value === "bin" ? V.value ? [
206
+ {
207
+ key: "restore",
208
+ label: l("panel.restore"),
209
+ icon: "refresh",
210
+ run: () => {
211
+ pe(e);
212
+ }
213
+ },
214
+ {
215
+ key: "purge",
216
+ label: l("panel.purge"),
217
+ icon: "trash",
218
+ danger: !0,
219
+ run: () => {
220
+ ve(e);
221
+ }
222
+ }
223
+ ] : [] : [
224
+ { key: "edit", label: l("panel.edit"), icon: "edit", run: () => I(e) },
225
+ ...V.value ? [
226
+ {
227
+ key: "copy",
228
+ label: l("panel.copy"),
229
+ icon: "copy",
230
+ run: () => {
231
+ de(e);
232
+ }
233
+ },
234
+ {
235
+ key: "delete",
236
+ label: l("panel.delete"),
237
+ icon: "trash",
238
+ danger: !0,
239
+ run: () => {
240
+ ce(e);
241
+ }
242
+ }
243
+ ] : []
244
+ ];
245
+ }
246
+ const fe = f(() => [
247
+ { key: "name", label: l("module.channel"), minWidth: 160 },
248
+ { key: "event", label: l("panel.new-event"), width: 200, hideBelow: 720 },
249
+ { key: "last_delivery", label: l("panel.column-status"), width: 170, hideBelow: 560 },
250
+ ..._.value === "bin" ? [] : [{ key: "enabled", label: "", width: 64, align: "center" }],
251
+ { key: "actions", label: "", width: ee, align: "right" }
252
+ ]), be = f(() => _.value === "bin" ? h.value : r.value);
253
+ function ye(e) {
254
+ return e.icon ?? (e.provider === "telegram" ? "send" : "mail");
255
+ }
256
+ const O = m(null), P = m(!1), C = m(""), N = m(""), B = m(!0), S = m(void 0);
257
+ async function q(e) {
258
+ S.value = e ?? S.value, P.value = !0;
259
+ try {
260
+ O.value = await b.deliveries({
261
+ page: S.value?.page ?? 1,
262
+ per_page: S.value?.perPage,
263
+ status: C.value === "" ? null : C.value,
264
+ channel: N.value === "" ? null : N.value,
265
+ tests: B.value
266
+ }), j.value = O.value.environment;
267
+ } catch (i) {
268
+ d.danger(c(i));
269
+ } finally {
270
+ P.value = !1;
271
+ }
272
+ }
273
+ H(
274
+ _,
275
+ (e) => {
276
+ e === "log" && q();
277
+ },
278
+ { immediate: !0 }
279
+ ), H(
280
+ [C, N, B],
281
+ () => {
282
+ q({ ...S.value ?? {}, page: 1 });
283
+ }
284
+ );
285
+ const ge = f(
286
+ () => +(C.value !== "") + +(N.value !== "") + +!B.value
287
+ ), _e = f(() => [
288
+ { value: "", label: l("panel.all-statuses") },
289
+ ...["queued", "sent", "failed", "skipped"].map((e) => ({
290
+ value: e,
291
+ label: l(`module.statuses.${e}`)
292
+ }))
293
+ ]), he = f(() => [
294
+ { value: "", label: l("panel.all-channels") },
295
+ ...r.value.map((e) => ({ value: e.id, label: e.name }))
296
+ ]), ke = f(() => [
297
+ { key: "created_at", label: l("panel.column-when"), width: 150 },
298
+ { key: "recipient", label: l("panel.column-recipient"), minWidth: 160 },
299
+ { key: "channel_name", label: l("panel.column-channel"), width: 180, hideBelow: 760 },
300
+ { key: "status", label: l("panel.column-status"), width: 140 },
301
+ { key: "attempts", label: l("panel.column-attempts"), width: 90, align: "right", hideBelow: 900 },
302
+ { key: "actions", label: "", width: ee, align: "right" }
303
+ ]), L = {
304
+ sent: "success",
305
+ failed: "danger",
306
+ queued: "warning",
307
+ skipped: "default"
308
+ };
309
+ async function xe(e) {
310
+ try {
311
+ await b.retry(e.id), d.success(l("panel.retried")), await q();
312
+ } catch (i) {
313
+ d.danger(c(i));
314
+ }
315
+ }
316
+ function we(e) {
317
+ const i = [];
318
+ return e.subject_url && i.push({
319
+ key: "open",
320
+ label: l("panel.open-subject"),
321
+ icon: "external-link",
322
+ href: e.subject_url,
323
+ target: "_self"
324
+ }), e.channel_id !== null && i.push({
325
+ key: "channel",
326
+ label: l("panel.edit"),
327
+ icon: "edit",
328
+ run: () => {
329
+ y.push(`${x.base}/channels/${e.channel_id}`);
330
+ }
331
+ }), e.retryable && V.value && i.push({
332
+ key: "retry",
333
+ label: l("panel.retry"),
334
+ icon: "refresh",
335
+ run: () => {
336
+ xe(e);
337
+ }
338
+ }), i;
339
+ }
340
+ function G(e) {
341
+ return e.error ? e.error : e.reason ? l(`module.reasons.${e.reason}`) : null;
342
+ }
343
+ const Ve = f(
344
+ () => V.value ? [
345
+ {
346
+ key: "new",
347
+ label: l("panel.new"),
348
+ icon: "plus",
349
+ primary: !0,
350
+ disabled: g.value === null,
351
+ run: () => {
352
+ ue();
353
+ }
354
+ }
355
+ ] : []
356
+ );
357
+ return (e, i) => (p(), k(a(Re), {
358
+ view: _.value,
359
+ "onUpdate:view": i[6] || (i[6] = (t) => _.value = t),
360
+ title: M.value,
361
+ views: se.value,
362
+ actions: Ve.value
363
+ }, {
364
+ default: n(() => [
365
+ j.value !== "production" ? (p(), J("div", Oe, [
366
+ s(a(Ue), {
367
+ type: "info",
368
+ variant: "soft",
369
+ description: a(l)("panel.environment", { environment: j.value })
370
+ }, null, 8, ["description"])
371
+ ])) : T("", !0),
372
+ _.value !== "log" ? (p(), k(a(X), {
373
+ key: 1,
374
+ data: be.value,
375
+ columns: fe.value,
376
+ "row-key": "id",
377
+ hover: "",
378
+ clickable: "",
379
+ flush: "",
380
+ layout: "fixed",
381
+ loading: F.value,
382
+ "cards-below": 0,
383
+ pagination: !1,
384
+ "empty-text": _.value === "bin" ? a(l)("panel.empty-bin") : a(l)("panel.empty-channels-text"),
385
+ "aria-label": M.value,
386
+ onRowClick: i[2] || (i[2] = (t) => _.value !== "bin" && I(t))
387
+ }, {
388
+ "cell-name": n(({ row: t }) => [
389
+ z("span", Pe, [
390
+ s(a(Me), {
391
+ name: ye(t),
392
+ class: "wx-notifications-list__icon"
393
+ }, null, 8, ["name"]),
394
+ z("span", Ee, [
395
+ s(a(v), {
396
+ truncate: "",
397
+ weight: "medium"
398
+ }, {
399
+ default: n(() => [
400
+ u(o(t.name), 1)
401
+ ]),
402
+ _: 2
403
+ }, 1024),
404
+ s(a(v), {
405
+ size: "sm",
406
+ tone: "muted",
407
+ truncate: ""
408
+ }, {
409
+ default: n(() => [
410
+ u(o(t.provider_label) + " · " + o(a(l)("panel.recipients", { count: String(t.recipients) })), 1)
411
+ ]),
412
+ _: 2
413
+ }, 1024)
414
+ ])
415
+ ])
416
+ ]),
417
+ "cell-event": n(({ row: t }) => [
418
+ t.event_declared ? (p(), k(a(v), {
419
+ key: 1,
420
+ size: "sm",
421
+ tone: t.event ? "default" : "muted",
422
+ truncate: ""
423
+ }, {
424
+ default: n(() => [
425
+ u(o(t.event_label ?? a(l)("panel.any-event")), 1)
426
+ ]),
427
+ _: 2
428
+ }, 1032, ["tone"])) : (p(), k(a(R), {
429
+ key: 0,
430
+ type: "warning"
431
+ }, {
432
+ default: n(() => [
433
+ u(o(a(l)("panel.event-undeclared")), 1)
434
+ ]),
435
+ _: 1
436
+ }))
437
+ ]),
438
+ "cell-last_delivery": n(({ row: t }) => [
439
+ t.last_delivery ? (p(), J("span", Ie, [
440
+ s(a(R), {
441
+ type: L[t.last_delivery.status],
442
+ dot: ""
443
+ }, {
444
+ default: n(() => [
445
+ u(o(a(l)(`module.statuses.${t.last_delivery.status}`)), 1)
446
+ ]),
447
+ _: 2
448
+ }, 1032, ["type"]),
449
+ s(a(te), {
450
+ value: t.last_delivery.at,
451
+ class: "wx-notifications-list__when"
452
+ }, null, 8, ["value"])
453
+ ])) : (p(), k(a(v), {
454
+ key: 1,
455
+ size: "sm",
456
+ tone: "muted"
457
+ }, {
458
+ default: n(() => [
459
+ u(o(a(l)("panel.never-sent")), 1)
460
+ ]),
461
+ _: 1
462
+ }))
463
+ ]),
464
+ "cell-enabled": n(({ row: t }) => [
465
+ z("span", {
466
+ onClick: i[0] || (i[0] = K(() => {
467
+ }, ["stop"]))
468
+ }, [
469
+ s(a(Y), {
470
+ "model-value": t.enabled,
471
+ disabled: !V.value,
472
+ "aria-label": a(l)("panel.enable"),
473
+ size: "sm",
474
+ "onUpdate:modelValue": (W) => re(t, !!W)
475
+ }, null, 8, ["model-value", "disabled", "aria-label", "onUpdate:modelValue"])
476
+ ])
477
+ ]),
478
+ "cell-actions": n(({ row: t }) => [
479
+ z("span", {
480
+ onClick: i[1] || (i[1] = K(() => {
481
+ }, ["stop"]))
482
+ }, [
483
+ s(a(ae), {
484
+ actions: me(t),
485
+ label: t.name
486
+ }, null, 8, ["actions", "label"])
487
+ ])
488
+ ]),
489
+ _: 1
490
+ }, 8, ["data", "columns", "loading", "empty-text", "aria-label"])) : (p(), k(a(X), {
491
+ key: 2,
492
+ data: O.value,
493
+ columns: ke.value,
494
+ "row-key": "id",
495
+ hover: "",
496
+ flush: "",
497
+ layout: "fixed",
498
+ expandable: "",
499
+ loading: P.value,
500
+ "cards-below": 0,
501
+ "filters-count": ge.value,
502
+ "filters-label": a(l)("panel.filters"),
503
+ "empty-text": a(l)("panel.log-empty"),
504
+ "aria-label": a(l)("panel.log"),
505
+ onStateChange: q
506
+ }, {
507
+ filters: n(() => [
508
+ s(a(A), {
509
+ label: a(l)("panel.column-status")
510
+ }, {
511
+ default: n(() => [
512
+ s(a(E), {
513
+ modelValue: C.value,
514
+ "onUpdate:modelValue": i[3] || (i[3] = (t) => C.value = t),
515
+ options: _e.value,
516
+ size: "sm"
517
+ }, null, 8, ["modelValue", "options"])
518
+ ]),
519
+ _: 1
520
+ }, 8, ["label"]),
521
+ s(a(A), {
522
+ label: a(l)("panel.column-channel")
523
+ }, {
524
+ default: n(() => [
525
+ s(a(E), {
526
+ modelValue: N.value,
527
+ "onUpdate:modelValue": i[4] || (i[4] = (t) => N.value = t),
528
+ options: he.value,
529
+ size: "sm"
530
+ }, null, 8, ["modelValue", "options"])
531
+ ]),
532
+ _: 1
533
+ }, 8, ["label"]),
534
+ s(a(Y), {
535
+ modelValue: B.value,
536
+ "onUpdate:modelValue": i[5] || (i[5] = (t) => B.value = t),
537
+ size: "sm"
538
+ }, {
539
+ default: n(() => [
540
+ u(o(a(l)("panel.with-tests")), 1)
541
+ ]),
542
+ _: 1
543
+ }, 8, ["modelValue"])
544
+ ]),
545
+ "cell-created_at": n(({ row: t }) => [
546
+ s(a(te), {
547
+ value: t.sent_at ?? t.created_at
548
+ }, null, 8, ["value"])
549
+ ]),
550
+ "cell-recipient": n(({ row: t }) => [
551
+ z("span", Le, [
552
+ s(a(v), { truncate: "" }, {
553
+ default: n(() => [
554
+ u(o(t.recipient_label ?? t.recipient), 1)
555
+ ]),
556
+ _: 2
557
+ }, 1024),
558
+ s(a(v), {
559
+ size: "sm",
560
+ tone: "muted",
561
+ truncate: ""
562
+ }, {
563
+ default: n(() => [
564
+ u(o(t.event_label ?? t.event), 1)
565
+ ]),
566
+ _: 2
567
+ }, 1024)
568
+ ])
569
+ ]),
570
+ "cell-channel_name": n(({ row: t }) => [
571
+ s(a(v), {
572
+ size: "sm",
573
+ truncate: "",
574
+ tone: t.channel_id === null ? "muted" : "default"
575
+ }, {
576
+ default: n(() => [
577
+ u(o(t.channel_name) + o(t.channel_id === null ? ` (${a(l)("panel.channel-gone")})` : ""), 1)
578
+ ]),
579
+ _: 2
580
+ }, 1032, ["tone"])
581
+ ]),
582
+ "cell-status": n(({ row: t }) => [
583
+ z("span", Ge, [
584
+ s(a(R), {
585
+ type: L[t.status],
586
+ dot: ""
587
+ }, {
588
+ default: n(() => [
589
+ u(o(a(l)(`module.statuses.${t.status}`)), 1)
590
+ ]),
591
+ _: 2
592
+ }, 1032, ["type"]),
593
+ t.is_test ? (p(), k(a(R), { key: 0 }, {
594
+ default: n(() => [
595
+ u(o(a(l)("panel.test-mark")), 1)
596
+ ]),
597
+ _: 1
598
+ })) : T("", !0)
599
+ ])
600
+ ]),
601
+ "cell-attempts": n(({ row: t }) => [
602
+ s(a(v), { size: "sm" }, {
603
+ default: n(() => [
604
+ u(o(t.attempts), 1)
605
+ ]),
606
+ _: 2
607
+ }, 1024)
608
+ ]),
609
+ "cell-actions": n(({ row: t }) => [
610
+ s(a(ae), {
611
+ actions: we(t),
612
+ label: t.recipient
613
+ }, null, 8, ["actions", "label"])
614
+ ]),
615
+ expanded: n(({ row: t }) => [
616
+ z("div", He, [
617
+ G(t) ? (p(), k(a(v), {
618
+ key: 0,
619
+ size: "sm",
620
+ tone: t.status === "failed" ? "danger" : "muted"
621
+ }, {
622
+ default: n(() => [
623
+ u(o(G(t)), 1)
624
+ ]),
625
+ _: 2
626
+ }, 1032, ["tone"])) : T("", !0),
627
+ t.unknown_variables.length > 0 ? (p(), k(a(v), {
628
+ key: 1,
629
+ size: "sm",
630
+ tone: "muted"
631
+ }, {
632
+ default: n(() => [
633
+ u(o(a(l)("panel.unknown-variables", { names: t.unknown_variables.join(", ") })), 1)
634
+ ]),
635
+ _: 2
636
+ }, 1024)) : T("", !0),
637
+ t.truncated ? (p(), k(a(v), {
638
+ key: 2,
639
+ size: "sm",
640
+ tone: "muted"
641
+ }, {
642
+ default: n(() => [
643
+ u(o(a(l)("panel.cut-mark")), 1)
644
+ ]),
645
+ _: 1
646
+ })) : T("", !0),
647
+ s(a(v), {
648
+ size: "sm",
649
+ tone: "muted",
650
+ mono: ""
651
+ }, {
652
+ default: n(() => [
653
+ u(o(t.recipient), 1)
654
+ ]),
655
+ _: 2
656
+ }, 1024)
657
+ ])
658
+ ]),
659
+ _: 1
660
+ }, 8, ["data", "columns", "loading", "filters-count", "filters-label", "empty-text", "aria-label"]))
661
+ ]),
662
+ _: 1
663
+ }, 8, ["view", "title", "views", "actions"]));
664
+ }
665
+ }), ea = /* @__PURE__ */ De(Je, [["__scopeId", "data-v-69806e68"]]);
666
+ export {
667
+ ea as default
668
+ };
669
+ //# sourceMappingURL=NotificationsPage-qWdhMayl.js.map