@declarion/react 0.31.1 → 0.32.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.
Files changed (41) hide show
  1. package/dist-lib/{ActionRunner-BzaZQtiI.js → ActionRunner-CaSrGpBi.js} +264 -260
  2. package/dist-lib/{DraggableChildrenTable-DILqStHQ.js → DraggableChildrenTable-CAHg7paQ.js} +1 -1
  3. package/dist-lib/{Grid-BIsiUwPh.js → Grid-DDbBhqcl.js} +2 -2
  4. package/dist-lib/{LayoutRenderer-3RvIsC9M.js → LayoutRenderer-CelsqsZ6.js} +433 -433
  5. package/dist-lib/{MarkdownRenderer-CaHhWrfm.js → MarkdownRenderer-DThy2ixe.js} +1 -1
  6. package/dist-lib/RefreshControl-CorluL6r.js +582 -0
  7. package/dist-lib/{SmartDetailPage.impl--EO-9fos.js → SmartDetailPage.impl-USIxbl-8.js} +449 -411
  8. package/dist-lib/{SmartRecordListPage.impl-B1iws8yf.js → SmartRecordListPage.impl-BKIpTNK7.js} +210 -210
  9. package/dist-lib/api/data.d.ts +4 -4
  10. package/dist-lib/api/params.d.ts +1 -1
  11. package/dist-lib/components/layout/Rail.d.ts +5 -5
  12. package/dist-lib/components/layout/TopBar.d.ts +3 -1
  13. package/dist-lib/components/pages/auth/AuthShell.d.ts +1 -1
  14. package/dist-lib/components/pages/list/ListHeader.d.ts +1 -1
  15. package/dist-lib/components/primitives/BrandLogo.d.ts +1 -1
  16. package/dist-lib/components/shared/ActionRunner.d.ts +1 -0
  17. package/dist-lib/components/shared/ObjectActionBar.d.ts +29 -0
  18. package/dist-lib/components/shared/PageHeader.d.ts +1 -1
  19. package/dist-lib/components/shared/RecordHeader.d.ts +2 -1
  20. package/dist-lib/components/shared/RefreshControl.d.ts +6 -0
  21. package/dist-lib/hooks/useBranding.d.ts +8 -0
  22. package/dist-lib/hooks/useBrandingChrome.d.ts +6 -0
  23. package/dist-lib/hooks/useLiveObject.d.ts +9 -0
  24. package/dist-lib/hooks/useMutations.d.ts +3 -3
  25. package/dist-lib/hooks/useObject.d.ts +10 -0
  26. package/dist-lib/hooks/usePageStateRuntime.d.ts +1 -1
  27. package/dist-lib/hooks/useParams.d.ts +10 -1
  28. package/dist-lib/index.d.ts +11 -5
  29. package/dist-lib/index.js +1890 -1722
  30. package/dist-lib/lib/actions.d.ts +6 -2
  31. package/dist-lib/lib/branding.d.ts +10 -1
  32. package/dist-lib/{registry-2KliNTHB.js → registry-KQyyL5Gt.js} +1452 -1401
  33. package/dist-lib/testing.d.ts +5 -3
  34. package/dist-lib/testing.js +35 -31
  35. package/dist-lib/types/api.d.ts +70 -3
  36. package/dist-lib/types/schema.d.ts +1 -15
  37. package/dist-lib/{useProperties-Co3RdtuT.js → useProperties-D74hyWIa.js} +53 -53
  38. package/dist-lib/{value-BooGwUik.js → value-BfXXl5EE.js} +1 -1
  39. package/package.json +1 -1
  40. package/dist-lib/hooks/useEntityItem.d.ts +0 -10
  41. package/dist-lib/peekDraftStore-yyzMbaiI.js +0 -468
@@ -1,4 +1,4 @@
1
- import { T as e } from "./ActionRunner-BzaZQtiI.js";
1
+ import { T as e } from "./ActionRunner-CaSrGpBi.js";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  import r, { defaultUrlTransform as i } from "react-markdown";
4
4
  import a from "remark-breaks";
@@ -0,0 +1,582 @@
1
+ import { s as e } from "./DynamicIcon-DCRdxxZ7.js";
2
+ import { Bn as t, J as n, Ot as r, Vn as i, Y as a, kn as o, mt as s, rt as c } from "./ActionRunner-CaSrGpBi.js";
3
+ import { useCallback as l, useEffect as u, useMemo as d, useRef as f, useState as p } from "react";
4
+ import { useLocation as m } from "react-router-dom";
5
+ import { useQuery as h, useQueryClient as ee } from "@tanstack/react-query";
6
+ import { jsx as g, jsxs as _ } from "react/jsx-runtime";
7
+ import { create as te } from "zustand";
8
+ //#region src/components/primitives/Avatar.tsx
9
+ function ne({ name: e, size: t = 22, color: n }) {
10
+ let r = e.split(/\s+/).map((e) => e[0]).slice(0, 2).join("").toUpperCase(), i = e.split("").reduce((e, t) => e + t.charCodeAt(0), 0), a = [
11
+ "#DCE4F6",
12
+ "#E4DCF6",
13
+ "#F6DCE4",
14
+ "#F6E4DC",
15
+ "#DCF6E4",
16
+ "#DCF6F1",
17
+ "#F1F6DC",
18
+ "#F6DCF1"
19
+ ];
20
+ return /* @__PURE__ */ g("span", {
21
+ style: {
22
+ display: "inline-flex",
23
+ alignItems: "center",
24
+ justifyContent: "center",
25
+ width: t,
26
+ height: t,
27
+ borderRadius: 999,
28
+ background: n || a[i % a.length],
29
+ color: "#1E2A4A",
30
+ fontSize: t < 20 ? 9.5 : 10.5,
31
+ fontWeight: 600,
32
+ flexShrink: 0
33
+ },
34
+ children: r
35
+ });
36
+ }
37
+ //#endregion
38
+ //#region src/components/primitives/RecordIdBadge.tsx
39
+ var v = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, re = 1200;
40
+ function y({ value: t }) {
41
+ let [n, r] = p(!1), i = v.test(t) ? `${t.slice(0, 8)}…` : t;
42
+ return /* @__PURE__ */ _("button", {
43
+ type: "button",
44
+ onClick: l(async () => {
45
+ try {
46
+ await navigator.clipboard.writeText(t), r(!0), window.setTimeout(() => r(!1), re);
47
+ } catch {}
48
+ }, [t]),
49
+ title: n ? "Copied" : `Copy ${t}`,
50
+ className: "mono inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-[11px] text-text-4 hover:bg-surface-2 hover:text-text-3 transition-colors shrink-0 border border-transparent hover:border-border",
51
+ children: [/* @__PURE__ */ g("span", { children: i }), n ? /* @__PURE__ */ g(e.check, { size: 10 }) : /* @__PURE__ */ g(e.copy, {
52
+ size: 10,
53
+ style: { opacity: .6 }
54
+ })]
55
+ });
56
+ }
57
+ //#endregion
58
+ //#region src/lib/branding.ts
59
+ var b = "branding";
60
+ function ie(e) {
61
+ let t = {};
62
+ if (!e) return t;
63
+ for (let n of e) t[n.code] = n.value;
64
+ return t;
65
+ }
66
+ function ae(e, t) {
67
+ return e?.parameters.find((e) => e.code === t)?.value;
68
+ }
69
+ function x(e) {
70
+ return S(ae(e, b));
71
+ }
72
+ function S(e) {
73
+ if (w(e)) return e;
74
+ }
75
+ function C(e) {
76
+ let t = x(e)?.identity;
77
+ return w(t) ? t : void 0;
78
+ }
79
+ function w(e) {
80
+ return !!e && typeof e == "object" && !Array.isArray(e);
81
+ }
82
+ function oe(e) {
83
+ if (!e) return !1;
84
+ let t = e.trim();
85
+ return t ? t.startsWith("/") || t.startsWith("http://") || t.startsWith("https://") || t.startsWith("data:image/") : !1;
86
+ }
87
+ //#endregion
88
+ //#region src/api/params.ts
89
+ async function se() {
90
+ let e = (await r("/api/params/public")).data;
91
+ if (Array.isArray(e)) return { parameters: e };
92
+ let t = e ?? {};
93
+ return {
94
+ parameters: t.parameters ?? [],
95
+ accents: t.accents,
96
+ messages: t.messages,
97
+ meta: t.meta
98
+ };
99
+ }
100
+ async function T(e) {
101
+ return (await r(`/api/params/${encodeURIComponent(e)}`)).data;
102
+ }
103
+ async function ce(e, t, n) {
104
+ await c("user.__update", {
105
+ object_ids: [e],
106
+ entity: "user",
107
+ fields: { $params: [{
108
+ param_code: t,
109
+ value: n
110
+ }] }
111
+ });
112
+ }
113
+ //#endregion
114
+ //#region src/hooks/useParams.ts
115
+ function E() {
116
+ return h({
117
+ queryKey: ["params-public"],
118
+ queryFn: se,
119
+ staleTime: 300 * 1e3
120
+ });
121
+ }
122
+ function D(e, t = {}) {
123
+ let n = t.enabled ?? !0;
124
+ return h({
125
+ queryKey: ["params", e],
126
+ queryFn: () => T(e),
127
+ enabled: !!e && n,
128
+ staleTime: 60 * 1e3
129
+ });
130
+ }
131
+ function O(e) {
132
+ let t = s((e) => e.isAuthenticated), n = E(), r = D(e, { enabled: t }), i = k(n.data?.parameters, e);
133
+ if (t && r.data?.found) return {
134
+ value: r.data.value,
135
+ found: !0,
136
+ source: r.data.source,
137
+ loading: !1,
138
+ error: null
139
+ };
140
+ let a = i !== void 0;
141
+ return {
142
+ value: i?.value,
143
+ found: a,
144
+ source: a ? "public" : void 0,
145
+ loading: n.isLoading || t && r.isLoading && !r.data && !r.error,
146
+ error: r.error ?? n.error ?? null
147
+ };
148
+ }
149
+ function k(e, t) {
150
+ return e?.find((e) => e.code === t);
151
+ }
152
+ function A(e, t) {
153
+ let n = h({
154
+ queryKey: ["params", e],
155
+ queryFn: () => T(e),
156
+ enabled: !!e,
157
+ staleTime: 60 * 1e3
158
+ }), r = n.data, i = !!r?.found;
159
+ return {
160
+ value: i ? r.value : t,
161
+ found: i,
162
+ source: r?.source,
163
+ loading: n.isLoading,
164
+ error: n.error ?? null
165
+ };
166
+ }
167
+ //#endregion
168
+ //#region src/hooks/useBranding.ts
169
+ function j() {
170
+ let e = O(b);
171
+ return {
172
+ branding: S(e.value),
173
+ isLoading: e.loading
174
+ };
175
+ }
176
+ function le() {
177
+ return j().branding?.identity;
178
+ }
179
+ function ue() {
180
+ return j().branding?.chrome;
181
+ }
182
+ //#endregion
183
+ //#region src/stores/page-state.ts
184
+ var M = 1800 * 1e3, N = null;
185
+ function P(e) {
186
+ N = e;
187
+ }
188
+ function F(e) {
189
+ if (!(!e || !N)) for (let t of e.queryKeys) N.removeQueries({
190
+ queryKey: t,
191
+ exact: !0
192
+ });
193
+ }
194
+ function I(e, t) {
195
+ let n = e[t];
196
+ if (!n) return e;
197
+ F(n);
198
+ let r = { ...e };
199
+ return delete r[t], r;
200
+ }
201
+ function L(e, t) {
202
+ let n = e;
203
+ for (; Object.keys(n).length > 64;) {
204
+ let e = null, r = Infinity;
205
+ for (let [i, a] of Object.entries(n)) i !== t && a.lastActiveAt < r && (r = a.lastActiveAt, e = i);
206
+ if (e === null) break;
207
+ n = I(n, e);
208
+ }
209
+ return n;
210
+ }
211
+ var R = te((e, t) => ({
212
+ entries: {},
213
+ ttlMs: M,
214
+ setTtl: (n) => {
215
+ if (n <= 0) {
216
+ let { entries: r } = t();
217
+ for (let e of Object.keys(r)) F(r[e]);
218
+ e({
219
+ ttlMs: n,
220
+ entries: {}
221
+ });
222
+ return;
223
+ }
224
+ e({ ttlMs: n });
225
+ },
226
+ set: (n, r, i) => {
227
+ let a = t();
228
+ if (a.ttlMs <= 0) return;
229
+ let o = Date.now(), s = a.entries[n], c = s ? {
230
+ ...s,
231
+ bag: {
232
+ ...s.bag,
233
+ [r]: i
234
+ },
235
+ lastActiveAt: o
236
+ } : {
237
+ bag: { [r]: i },
238
+ lastActiveAt: o,
239
+ queryKeys: []
240
+ };
241
+ e({ entries: L({
242
+ ...a.entries,
243
+ [n]: c
244
+ }, n) });
245
+ },
246
+ read: (e, n) => {
247
+ let r = t();
248
+ if (!(r.ttlMs <= 0)) return r.entries[e]?.bag[n];
249
+ },
250
+ touch: (n) => {
251
+ let r = t();
252
+ if (r.ttlMs <= 0) return;
253
+ let i = r.entries[n];
254
+ i && e({ entries: {
255
+ ...r.entries,
256
+ [n]: {
257
+ ...i,
258
+ lastActiveAt: Date.now()
259
+ }
260
+ } });
261
+ },
262
+ registerQueryKey: (n, r) => {
263
+ let i = t();
264
+ if (i.ttlMs <= 0) return;
265
+ let a = Date.now(), o = i.entries[n], s = o?.queryKeys.some((e) => z(e, r));
266
+ if (o && s) return;
267
+ let c = o ? {
268
+ ...o,
269
+ queryKeys: [...o.queryKeys, r],
270
+ lastActiveAt: a
271
+ } : {
272
+ bag: {},
273
+ lastActiveAt: a,
274
+ queryKeys: [r]
275
+ };
276
+ e({ entries: L({
277
+ ...i.entries,
278
+ [n]: c
279
+ }, n) });
280
+ },
281
+ kill: (n) => {
282
+ let r = t(), i = I(r.entries, n);
283
+ i !== r.entries && e({ entries: i });
284
+ },
285
+ sweep: (n) => {
286
+ let { ttlMs: r, entries: i } = t(), a = i;
287
+ for (let [e, t] of Object.entries(i)) (r <= 0 || n - t.lastActiveAt > r) && (a = I(a, e));
288
+ a !== i && e({ entries: a });
289
+ },
290
+ clear: () => {
291
+ let { entries: n } = t();
292
+ if (Object.keys(n).length !== 0) {
293
+ for (let e of Object.keys(n)) F(n[e]);
294
+ e({ entries: {} });
295
+ }
296
+ }
297
+ }));
298
+ function z(e, t) {
299
+ if (e === t) return !0;
300
+ try {
301
+ return JSON.stringify(e) === JSON.stringify(t);
302
+ } catch {
303
+ return !1;
304
+ }
305
+ }
306
+ //#endregion
307
+ //#region src/lib/canonical-url.ts
308
+ function B(e) {
309
+ return e.length > 1 && e.endsWith("/") ? e.replace(/\/+$/, "") || "/" : e;
310
+ }
311
+ function V(e) {
312
+ let t = B(e.pathname), n = e.search ?? "", r = n.startsWith("?") ? n.slice(1) : n, i = new URLSearchParams(r);
313
+ for (let e of a) i.delete(e);
314
+ i.sort();
315
+ let o = i.toString();
316
+ return o ? `${t}?${o}` : t;
317
+ }
318
+ function H(e) {
319
+ return B(e.pathname);
320
+ }
321
+ //#endregion
322
+ //#region src/hooks/usePageStateTtl.ts
323
+ var U = "ui_page_state_ttl_ms";
324
+ function W() {
325
+ let { value: e } = A(U, M);
326
+ return typeof e != "number" || !Number.isFinite(e) || e < 0 ? M : e;
327
+ }
328
+ //#endregion
329
+ //#region src/hooks/usePageStateRuntime.ts
330
+ var G = [
331
+ ["entity-data"],
332
+ ["entity-count"],
333
+ ["entity-item"],
334
+ ["entity-data-cursor"],
335
+ ["entity-data-all"],
336
+ ["action-data"],
337
+ ["action-data-cursor"]
338
+ ], de = 6e4;
339
+ function K(e, t) {
340
+ for (let n of G) e.setQueryDefaults(n, { gcTime: t });
341
+ }
342
+ function fe() {
343
+ let e = ee(), t = W(), n = m(), r = f(n);
344
+ r.current = n, u(() => (P(e), () => P(null)), [e]), u(() => {
345
+ if (R.getState().setTtl(t), K(e, t), t <= 0) for (let t of G) e.removeQueries({ queryKey: t });
346
+ }, [e, t]), u(() => {
347
+ if (t <= 0) return;
348
+ let e = setInterval(() => {
349
+ let e = R.getState(), t = r.current;
350
+ e.touch(V(t)), e.touch(H(t)), e.sweep(Date.now());
351
+ }, de);
352
+ return () => clearInterval(e);
353
+ }, [t]);
354
+ }
355
+ function pe(e, t = !0) {
356
+ let n = V(m());
357
+ u(() => {
358
+ !t || !e || R.getState().registerQueryKey(n, e);
359
+ }, [
360
+ n,
361
+ e ? JSON.stringify(e) : "",
362
+ t
363
+ ]);
364
+ }
365
+ //#endregion
366
+ //#region src/hooks/useBrandingChrome.ts
367
+ function me(e) {
368
+ let t = n(), r = ue();
369
+ return d(() => {
370
+ let n = e ? { ...t.enabled ? r?.embed?.surfaces?.[e] : r?.full?.surfaces?.[e] } : { ...r?.full?.shell };
371
+ return {
372
+ ...n,
373
+ isVisible: (e) => n[e] !== !1
374
+ };
375
+ }, [
376
+ r,
377
+ t.enabled,
378
+ e
379
+ ]);
380
+ }
381
+ //#endregion
382
+ //#region src/lib/scroll-restoration.ts
383
+ var q = "scroll", J = 120, he = 24, Y = 600;
384
+ function X(e, t) {
385
+ return Number.isFinite(e) ? Math.max(0, Math.min(e, Number.isFinite(t) && t > 0 ? t : 0)) : 0;
386
+ }
387
+ function ge(e, t, n) {
388
+ let r = Number.isFinite(e) ? e : 0;
389
+ if (t) {
390
+ let e = n[t.index];
391
+ if (e !== void 0) return {
392
+ key: e,
393
+ delta: Math.max(0, r - t.start),
394
+ offset: r
395
+ };
396
+ }
397
+ return {
398
+ key: "",
399
+ delta: 0,
400
+ offset: r
401
+ };
402
+ }
403
+ function _e(e, t, n, r) {
404
+ if (!e) return null;
405
+ if (e.key) {
406
+ let i = t.indexOf(e.key);
407
+ if (i >= 0) {
408
+ let t = n(i);
409
+ if (t !== void 0) return X(t + e.delta, r);
410
+ }
411
+ }
412
+ return X(e.offset, r);
413
+ }
414
+ function Z(e = q) {
415
+ let t = m(), n = f(null);
416
+ if (n.current === null) {
417
+ let r = V(t), i = R.getState().read(r, e);
418
+ n.current = i && Number.isFinite(i.offset) ? Math.max(0, i.offset) : 0;
419
+ }
420
+ return n.current;
421
+ }
422
+ function ve(e) {
423
+ let t = 0, n = null, r = () => {
424
+ n = null, t = Date.now(), e();
425
+ };
426
+ return {
427
+ trigger() {
428
+ let e = Date.now() - t;
429
+ e >= J ? r() : n === null && (n = setTimeout(r, J - e));
430
+ },
431
+ flush() {
432
+ n !== null && (clearTimeout(n), n = null), e();
433
+ },
434
+ cancel() {
435
+ n !== null && (clearTimeout(n), n = null);
436
+ }
437
+ };
438
+ }
439
+ function ye(e) {
440
+ let { virtualizer: t, scrollElementRef: n, rowKeys: r } = e, i = e.stateKey ?? "scroll", a = e.enabled ?? !0, o = V(m()), s = f(t);
441
+ s.current = t;
442
+ let c = f(r);
443
+ c.current = r;
444
+ let l = f(null);
445
+ u(() => {
446
+ l.current !== o && (l.current = null);
447
+ }, [o]), u(() => {
448
+ if (!a) return;
449
+ let e = s.current;
450
+ if (!e || r.length === 0) return;
451
+ let t = R.getState().read(o, i), n = l.current !== o;
452
+ if (l.current = o, !t) {
453
+ n && e.scrollToOffset(0, {
454
+ align: "start",
455
+ behavior: "auto"
456
+ });
457
+ return;
458
+ }
459
+ let u = 0, d = 0, f = NaN, p = () => {
460
+ let e = s.current;
461
+ if (!e) return;
462
+ let n = _e(t, c.current, (t) => e.getOffsetForIndex(t, "start")?.[0], e.getTotalSize());
463
+ n !== null && (Number.isNaN(f) || Math.abs(n - f) > 1) && (e.scrollToOffset(n, {
464
+ align: "start",
465
+ behavior: "auto"
466
+ }), f = n, d++ < he && (u = requestAnimationFrame(p)));
467
+ };
468
+ return p(), () => {
469
+ u && cancelAnimationFrame(u);
470
+ };
471
+ }, [
472
+ a,
473
+ o,
474
+ r,
475
+ i
476
+ ]), Q(n, a, o, i, (e) => {
477
+ let t = s.current;
478
+ if (!t) return null;
479
+ let n = e.scrollTop, r = n > 0 ? n : t.scrollOffset ?? 0;
480
+ return ge(r, t.getVirtualItemForOffset(r), c.current);
481
+ });
482
+ }
483
+ function Q(e, t, n, r, i) {
484
+ let a = f(i);
485
+ a.current = i, u(() => {
486
+ if (!t) return;
487
+ let i = 0, o = Y, s = null, c = null, l = (e) => {
488
+ let t = a.current(e);
489
+ t && R.getState().set(n, r, t);
490
+ }, u = () => c?.trigger(), d = () => {
491
+ let t = e.current;
492
+ if (!t) {
493
+ o-- > 0 && (i = requestAnimationFrame(d));
494
+ return;
495
+ }
496
+ s = t, c = ve(() => l(t)), t.addEventListener("scroll", u, { passive: !0 });
497
+ };
498
+ return d(), () => {
499
+ i && cancelAnimationFrame(i), s && s.removeEventListener("scroll", u), c?.flush();
500
+ };
501
+ }, [
502
+ t,
503
+ e,
504
+ n,
505
+ r
506
+ ]);
507
+ }
508
+ function be(e) {
509
+ let { scrollElementRef: t } = e, n = e.stateKey ?? "scroll", r = e.enabled ?? !0, i = V(m()), a = f(null);
510
+ u(() => {
511
+ if (!r || a.current === i) return;
512
+ let e = 0, o = Y, s = () => {
513
+ let r = t.current;
514
+ if (!r) {
515
+ o-- > 0 && (e = requestAnimationFrame(s));
516
+ return;
517
+ }
518
+ a.current = i;
519
+ let c = R.getState().read(i, n);
520
+ c && (r.scrollTop = Number.isFinite(c.offset) ? Math.max(0, c.offset) : 0);
521
+ };
522
+ return s(), () => {
523
+ e && cancelAnimationFrame(e);
524
+ };
525
+ }, [
526
+ r,
527
+ i,
528
+ n,
529
+ t
530
+ ]), Q(t, r, i, n, (e) => ({
531
+ key: "",
532
+ delta: 0,
533
+ offset: e.scrollTop
534
+ }));
535
+ }
536
+ //#endregion
537
+ //#region src/components/list/peekDraftStore.ts
538
+ var $ = /* @__PURE__ */ new Map();
539
+ function xe(e, t) {
540
+ $.set(e, t);
541
+ }
542
+ function Se(e) {
543
+ let t = $.get(e);
544
+ return t === void 0 ? null : ($.delete(e), t);
545
+ }
546
+ function Ce(e) {
547
+ $.delete(e);
548
+ }
549
+ //#endregion
550
+ //#region src/components/shared/RefreshControl.tsx
551
+ function we({ liveObject: n, realtime: r = !0 }) {
552
+ return /* @__PURE__ */ _("span", {
553
+ style: {
554
+ display: "inline-flex",
555
+ alignItems: "center",
556
+ gap: 8
557
+ },
558
+ children: [/* @__PURE__ */ g(i, {
559
+ icon: n.isFetching ? /* @__PURE__ */ g("span", {
560
+ "data-testid": "refresh-spinner",
561
+ style: { display: "inline-flex" },
562
+ children: /* @__PURE__ */ g(o, { size: 14 })
563
+ }) : /* @__PURE__ */ g(e.refresh, { size: 14 }),
564
+ title: "Refresh",
565
+ disabled: n.isLoading || n.isFetching,
566
+ onClick: () => {
567
+ n.refetch();
568
+ }
569
+ }), r && /* @__PURE__ */ g("span", {
570
+ "data-testid": "live-indicator",
571
+ title: n.isLive ? "This view updates automatically in realtime." : "Realtime updates are paused. Refresh manually to load the latest data.",
572
+ children: /* @__PURE__ */ g(t, {
573
+ tone: n.isLive ? "emerald" : "amber",
574
+ size: "xs",
575
+ dot: !0,
576
+ children: n.isLive ? "Live" : "Updates paused"
577
+ })
578
+ })]
579
+ });
580
+ }
581
+ //#endregion
582
+ export { ne as A, E as C, oe as D, C as E, ie as O, A as S, ce as T, M as _, q as a, le as b, ye as c, fe as d, pe as f, V as g, H as h, Se as i, y as k, me as l, W as m, Ce as n, be as o, U as p, xe as r, Z as s, we as t, K as u, R as v, D as w, O as x, j as y };