@declarion/react 0.47.0 → 0.48.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 (31) hide show
  1. package/dist-lib/{DraggableChildrenTable-B6KjWkwD.js → DraggableChildrenTable-p2ZSdwzj.js} +1 -1
  2. package/dist-lib/{Grid-OdquWJNX.js → Grid-CjLFAKMZ.js} +2 -2
  3. package/dist-lib/{LayoutRenderer-CzAdhjNT.js → LayoutRenderer-X3p4yfo_.js} +124 -118
  4. package/dist-lib/{MarkdownRenderer-C6bhrAIe.js → MarkdownRenderer-Sb7zcvj0.js} +1 -1
  5. package/dist-lib/{RefreshControl-F9Ib9asP.js → RefreshControl-Cnl9nE0x.js} +255 -225
  6. package/dist-lib/{SmartDetailPage.impl-DdSu3kmW.js → SmartDetailPage.impl-bb0UNOII.js} +465 -463
  7. package/dist-lib/{SmartRecordListPage.impl-SkIp0_Rd.js → SmartRecordListPage.impl-BFh8auUZ.js} +141 -139
  8. package/dist-lib/api/agents.d.ts +8 -11
  9. package/dist-lib/components/agents/AgentChatPanel.d.ts +1 -0
  10. package/dist-lib/components/agents/AgentPicker.d.ts +9 -0
  11. package/dist-lib/components/primitives/Tooltip.d.ts +4 -0
  12. package/dist-lib/components/shared/ResponsiveActionBar.d.ts +10 -5
  13. package/dist-lib/declarion-react.css +1 -1
  14. package/dist-lib/hooks/useAgentConversation.d.ts +5 -7
  15. package/dist-lib/hooks/useBrandingChrome.d.ts +11 -0
  16. package/dist-lib/hooks/useLongPress.d.ts +29 -0
  17. package/dist-lib/hooks/useResponsiveMode.d.ts +2 -21
  18. package/dist-lib/index.d.ts +2 -2
  19. package/dist-lib/index.js +2351 -2144
  20. package/dist-lib/lib/actions.d.ts +12 -4
  21. package/dist-lib/lib/longPressGesture.d.ts +55 -0
  22. package/dist-lib/lib/page-inset.d.ts +3 -0
  23. package/dist-lib/lib/viewport-category.d.ts +44 -0
  24. package/dist-lib/{registry-C2VD-5MD.js → registry-CWDnxiLJ.js} +1013 -954
  25. package/dist-lib/testing.js +10 -10
  26. package/dist-lib/types/api.d.ts +15 -2
  27. package/dist-lib/{useCurrentScreen-ow4r-nWa.js → useCurrentScreen-BshVTPVq.js} +979 -971
  28. package/dist-lib/{useProperties-lEKfzm2X.js → useProperties-B5p9mIH8.js} +2 -2
  29. package/dist-lib/{value-CXohNH6a.js → value-B1O6QikE.js} +1 -1
  30. package/package.json +1 -1
  31. package/dist-lib/components/agents/AgentVisualHints.d.ts +0 -6
@@ -1,6 +1,6 @@
1
1
  import { s as e, t } from "./DynamicIcon-Dc2j-rg_.js";
2
- import { A as n, An as r, Dn as i, En as a, Gt as o, In as s, Kn as c, Ln as l, M as u, Sn as d, Tn as f, X as p, Z as m, Zn as h, _t as g, ar as _, bn as v, cr as y, f as b, j as x, jn as S, kt as C, lr as w, mn as T, rr as E, rt as D, ur as O, vt as k, wn as A, xn as j, yt as M } from "./useCurrentScreen-ow4r-nWa.js";
3
- import { E as ee, G as N, H as P, J as F, K as I, U as L, V as R, W as te, bt as z, d as B, dt as V, et as ne, f as re, ft as ie, j as ae, o as oe, r as se, t as ce, tt as le, xt as ue } from "./registry-C2VD-5MD.js";
2
+ import { A as n, An as r, Dn as i, En as a, Gt as o, In as s, Kn as c, Ln as l, M as u, Sn as d, Tn as f, X as p, Z as m, Zn as h, _t as g, ar as _, bn as v, cr as y, f as b, j as x, jn as S, kt as C, lr as w, mn as T, rt as E, tr as D, ur as O, vt as k, wn as A, xn as j, yt as M } from "./useCurrentScreen-BshVTPVq.js";
3
+ import { E as ee, G as N, H as P, J as F, K as I, St as L, U as R, V as z, W as te, d as B, et as V, f as ne, ft as re, j as ie, o as ae, pt as oe, r as se, t as ce, tt as le, xt as ue } from "./registry-CWDnxiLJ.js";
4
4
  import { n as de, r as fe, t as pe } from "./dataTableStyles-vwD1mVOP.js";
5
5
  import { Suspense as me, createContext as he, lazy as ge, useCallback as H, useContext as _e, useEffect as U, useId as ve, useLayoutEffect as ye, useMemo as W, useRef as G, useState as K } from "react";
6
6
  import { useInfiniteQuery as be, useMutation as xe, useQueryClient as Se } from "@tanstack/react-query";
@@ -61,16 +61,16 @@ function Te({ config: e, ctx: t }) {
61
61
  }, [u, p]), h = u ?? p(), g = e.height ? De(e.height) : void 0;
62
62
  return /* @__PURE__ */ J("div", {
63
63
  ref: l,
64
- className: ie("flex", s && "flex-col"),
64
+ className: oe("flex", s && "flex-col"),
65
65
  style: {
66
66
  gap: r ? `${r}px` : void 0,
67
67
  ...g
68
68
  },
69
69
  children: n.map((r, a) => /* @__PURE__ */ Y("div", {
70
- className: ie("min-w-0 flex items-stretch", s && "w-full"),
70
+ className: oe("min-w-0 flex items-stretch", s && "w-full"),
71
71
  style: s ? void 0 : Ee(r.width ?? r.column?.width ?? r.row?.width ?? e.width, h[a], r.min_width, r.max_width),
72
72
  children: [/* @__PURE__ */ J("div", {
73
- className: ie("flex-1 min-w-0 flex flex-col", g && "overflow-y-auto overflow-x-hidden"),
73
+ className: oe("flex-1 min-w-0 flex flex-col", g && "overflow-y-auto overflow-x-hidden"),
74
74
  children: /* @__PURE__ */ J($, {
75
75
  node: r,
76
76
  ctx: t
@@ -144,7 +144,7 @@ function je(e, t) {
144
144
  //#endregion
145
145
  //#region src/components/detail-layout/LayoutTabs.tsx
146
146
  function Me({ config: e, ctx: n }) {
147
- let { items: r } = e, [i, a] = K(0), o = E(), s = n.detailTabsPresentation ?? (o.isPhone ? "sections" : "scroll");
147
+ let { items: r } = e, [i, a] = K(0), o = D(), s = n.detailTabsPresentation ?? (o.isPhone ? "sections" : "scroll");
148
148
  if (r.length === 0) return null;
149
149
  if (s === "sections") {
150
150
  let e = r.map((e, t) => `detail-tab-section-${t}`);
@@ -343,14 +343,14 @@ function Ne({ config: e, ctx: n }) {
343
343
  tone: c.tone,
344
344
  dot: c.dot
345
345
  } : void 0;
346
- return /* @__PURE__ */ J(ue, {
346
+ return /* @__PURE__ */ J(L, {
347
347
  title: f(r),
348
348
  defaultOpen: !a,
349
349
  icon: d,
350
350
  badge: p,
351
351
  emphasis: l,
352
352
  headingLevel: n.withinCard ? 3 : 2,
353
- children: /* @__PURE__ */ J(hn, {
353
+ children: /* @__PURE__ */ J(gn, {
354
354
  nodes: i,
355
355
  ctx: u
356
356
  })
@@ -566,7 +566,7 @@ function Ye(e, t, n, r) {
566
566
  //#endregion
567
567
  //#region src/components/detail-layout/QuickAddForm.tsx
568
568
  function Xe({ config: t, parentEntity: r, parentId: i, schema: a }) {
569
- let { values: o, quickAdd: s, childEntity: c, isPending: l, error: u, isReady: f, handleSubmit: p, handleFieldChange: m } = Ye(t, r, i, a), h = n(), g = E(), _ = ve();
569
+ let { values: o, quickAdd: s, childEntity: c, isPending: l, error: u, isReady: f, handleSubmit: p, handleFieldChange: m } = Ye(t, r, i, a), h = n(), g = D(), _ = ve();
570
570
  return !s || s.fields.length === 0 || !c ? null : /* @__PURE__ */ Y("form", {
571
571
  onSubmit: p,
572
572
  style: {
@@ -726,7 +726,7 @@ function et({ colId: e, onMouseDown: t }) {
726
726
  //#endregion
727
727
  //#region src/components/detail-layout/ChildrenTable.tsx
728
728
  function tt({ config: t, parentEntity: r, parentId: i, schema: a }) {
729
- let o = a.entities[t.entity], s = Array.isArray(t.foreign_key) ? t.foreign_key.join(",") : t.foreign_key, c = $e(Ze(r, t.entity, s)), f = n(), p = L((e) => e.degradedEntities), { data: m, isLoading: g, isError: _, isFetching: v, refetch: b } = N(r, i, t.entity, t.foreign_key, t.sort, t.limit), x = m?.data ?? [], C = m?.$refs, T = G(C);
729
+ let o = a.entities[t.entity], s = Array.isArray(t.foreign_key) ? t.foreign_key.join(",") : t.foreign_key, c = $e(Ze(r, t.entity, s)), f = n(), p = R((e) => e.degradedEntities), { data: m, isLoading: g, isError: _, isFetching: v, refetch: b } = N(r, i, t.entity, t.foreign_key, t.sort, t.limit), x = m?.data ?? [], C = m?.$refs, T = G(C);
730
730
  T.current = C;
731
731
  let E = t.columns, D = t.interaction === "navigate", O = E[0], k = D && o ? S(void 0, o, a.screens) : null, A = o ? Ge(o) : void 0, j = W(() => {
732
732
  let e = /* @__PURE__ */ new Map();
@@ -1631,7 +1631,7 @@ function bt({ config: e, parentEntity: t, parentId: n, schema: r }) {
1631
1631
  })] });
1632
1632
  }
1633
1633
  function xt({ row: t, rowId: r, childEntity: i, entityCode: a, parentEntity: o, parentId: s, timeline: c, editableFields: u, refs: f, isEditing: p, onStartEdit: m, onCancelEdit: g, onSaved: _, schema: v, optimistic: b = !1 }) {
1634
- let S = Se(), T = n(), [E, A] = K({}), j = H(() => {
1634
+ let S = Se(), T = n(), [D, A] = K({}), j = H(() => {
1635
1635
  S.invalidateQueries({ queryKey: [
1636
1636
  te,
1637
1637
  o,
@@ -1652,15 +1652,15 @@ function xt({ row: t, rowId: r, childEntity: i, entityCode: a, parentEntity: o,
1652
1652
  return C(a, r, i);
1653
1653
  },
1654
1654
  onSuccess: () => {
1655
- j(), D.success("Updated"), _();
1655
+ j(), E.success("Updated"), _();
1656
1656
  },
1657
- onError: (e) => D.error(e.message)
1657
+ onError: (e) => E.error(e.message)
1658
1658
  }), ee = xe({
1659
1659
  mutationFn: () => k(a, r),
1660
1660
  onSuccess: () => {
1661
- j(), D.success("Deleted");
1661
+ j(), E.success("Deleted");
1662
1662
  },
1663
- onError: (e) => D.error(e.message)
1663
+ onError: (e) => E.error(e.message)
1664
1664
  }), N = H(() => {
1665
1665
  let e = {};
1666
1666
  for (let n of u) e[n] = t[n] ?? "";
@@ -1698,10 +1698,10 @@ function xt({ row: t, rowId: r, childEntity: i, entityCode: a, parentEntity: o,
1698
1698
  }), x({
1699
1699
  field: t,
1700
1700
  fieldName: e,
1701
- value: E[e] ?? "",
1701
+ value: D[e] ?? "",
1702
1702
  mode: "edit",
1703
1703
  onChange: (t) => P(e, t),
1704
- record: E,
1704
+ record: D,
1705
1705
  locale: T
1706
1706
  })] }, e) : null;
1707
1707
  }), /* @__PURE__ */ Y("div", {
@@ -1715,7 +1715,7 @@ function xt({ row: t, rowId: r, childEntity: i, entityCode: a, parentEntity: o,
1715
1715
  kind: "primary",
1716
1716
  size: "xs",
1717
1717
  icon: M.isPending ? /* @__PURE__ */ J(h, { size: 12 }) : /* @__PURE__ */ J(e.check, { size: 12 }),
1718
- onClick: () => M.mutate(E),
1718
+ onClick: () => M.mutate(D),
1719
1719
  disabled: M.isPending,
1720
1720
  children: M.isPending ? "Saving…" : "Save"
1721
1721
  }), /* @__PURE__ */ J(O, {
@@ -1985,7 +1985,7 @@ function Dt(e, t) {
1985
1985
  //#endregion
1986
1986
  //#region src/components/detail-layout/EditableChildrenTable.tsx
1987
1987
  function Ot({ config: t, childEntity: r, schema: i, rows: a, onChange: o, validationErrors: s, refs: c, forceTablePresentation: u = !1 }) {
1988
- let f = n(), p = E(), m = G(null), h = t.columns, g = t.position_field, _ = new Set(Array.isArray(t.foreign_key) ? t.foreign_key : [t.foreign_key]), v = h.filter((e) => {
1988
+ let f = n(), p = D(), m = G(null), h = t.columns, g = t.position_field, _ = new Set(Array.isArray(t.foreign_key) ? t.foreign_key : [t.foreign_key]), v = h.filter((e) => {
1989
1989
  if (_.has(e) || t.position_field && e === t.position_field) return !1;
1990
1990
  let n = r.fields.get(e);
1991
1991
  return !(!n || n.auto || n.primary || n.source);
@@ -2034,7 +2034,7 @@ function Ot({ config: t, childEntity: r, schema: i, rows: a, onChange: o, valida
2034
2034
  ...t,
2035
2035
  _deleted: !1
2036
2036
  } : t));
2037
- }, [a, o]), D = H((e, t) => {
2037
+ }, [a, o]), E = H((e, t) => {
2038
2038
  if (!g) return;
2039
2039
  let n = a.filter((e) => !e._deleted), r = a.filter((e) => e._deleted), i = n.findIndex((t) => t._key === e), s = i + t;
2040
2040
  if (i < 0 || s < 0 || s >= n.length) return;
@@ -2123,13 +2123,13 @@ function Ot({ config: t, childEntity: r, schema: i, rows: a, onChange: o, valida
2123
2123
  children: [g && !o && /* @__PURE__ */ Y(q, { children: [/* @__PURE__ */ J(w, {
2124
2124
  size: 32,
2125
2125
  icon: /* @__PURE__ */ J(e.up, { size: 14 }),
2126
- onClick: () => D(t._key, -1),
2126
+ onClick: () => E(t._key, -1),
2127
2127
  disabled: m <= 0,
2128
2128
  title: "Move row up"
2129
2129
  }), /* @__PURE__ */ J(w, {
2130
2130
  size: 32,
2131
2131
  icon: /* @__PURE__ */ J(e.down, { size: 14 }),
2132
- onClick: () => D(t._key, 1),
2132
+ onClick: () => E(t._key, 1),
2133
2133
  disabled: m === -1 || m >= p.length - 1,
2134
2134
  title: "Move row down"
2135
2135
  })] }), o ? /* @__PURE__ */ J(w, {
@@ -2313,9 +2313,9 @@ function Ot({ config: t, childEntity: r, schema: i, rows: a, onChange: o, valida
2313
2313
  }
2314
2314
  //#endregion
2315
2315
  //#region src/components/detail-layout/ChildrenBlock.tsx
2316
- var kt = ge(() => import("./DraggableChildrenTable-B6KjWkwD.js").then((e) => ({ default: e.DraggableChildrenTable })));
2316
+ var kt = ge(() => import("./DraggableChildrenTable-p2ZSdwzj.js").then((e) => ({ default: e.DraggableChildrenTable })));
2317
2317
  function At({ node: e, ctx: n }) {
2318
- let r = E(), i = e.children;
2318
+ let r = D(), i = e.children;
2319
2319
  if (!i) return null;
2320
2320
  let a = r.isPhone && n.relatedRecordsPresentation === "table";
2321
2321
  if (n.isNew && n.mode !== "edit") return null;
@@ -2329,7 +2329,7 @@ function At({ node: e, ctx: n }) {
2329
2329
  className: "text-sm text-muted-foreground py-2",
2330
2330
  children: ["Entity not found: ", o.entity]
2331
2331
  });
2332
- let c = Pe(o, s, e), l = Ae(e, n), u = je(e, n), d = (e) => c.mode === "timeline" || n.withinCard ? e : /* @__PURE__ */ J(ue, {
2332
+ let c = Pe(o, s, e), l = Ae(e, n), u = je(e, n), d = (e) => c.mode === "timeline" || n.withinCard ? e : /* @__PURE__ */ J(L, {
2333
2333
  title: l,
2334
2334
  icon: u ? /* @__PURE__ */ J(t, {
2335
2335
  name: u,
@@ -2369,26 +2369,32 @@ function At({ node: e, ctx: n }) {
2369
2369
  }
2370
2370
  //#endregion
2371
2371
  //#region src/components/detail-layout/FieldRow.tsx
2372
- var jt = 150, Mt = 560, Nt = "20px", Pt = 4, Ft = /* @__PURE__ */ new Set([
2372
+ var jt = 150, Mt = 560, Nt = 270, Pt = "20px", Ft = 4, It = /* @__PURE__ */ new Set([
2373
2373
  "text",
2374
2374
  "rich_text",
2375
2375
  "json",
2376
2376
  "structure",
2377
2377
  "multilang_text"
2378
- ]), It = he({ columns: 2 });
2379
- function Lt({ columns: e = 2, children: t }) {
2380
- let n = G(null), [r, i] = K(!1);
2378
+ ]), Lt = he({
2379
+ columns: 2,
2380
+ stackPairs: !1
2381
+ });
2382
+ function Rt({ columns: e = 2, children: t }) {
2383
+ let n = G(null), [r, i] = K(null);
2381
2384
  U(() => {
2382
- let t = n.current;
2383
- if (!t || e === 1 || typeof ResizeObserver > "u") return;
2384
- let r = new ResizeObserver(([e]) => {
2385
- i(e.contentRect.width < Mt);
2385
+ let e = n.current;
2386
+ if (!e || typeof ResizeObserver > "u") return;
2387
+ let t = new ResizeObserver(([e]) => {
2388
+ i(e.contentRect.width);
2386
2389
  });
2387
- return r.observe(t), () => r.disconnect();
2388
- }, [e]);
2389
- let a = e === 1 || r ? 1 : e;
2390
- return /* @__PURE__ */ J(It.Provider, {
2391
- value: { columns: a },
2390
+ return t.observe(e), () => t.disconnect();
2391
+ }, []);
2392
+ let a = e === 1 || r !== null && r < Mt ? 1 : e, o = r === null ? null : (r - (a - 1) * 24) / a, s = o !== null && o < Nt;
2393
+ return /* @__PURE__ */ J(Lt.Provider, {
2394
+ value: {
2395
+ columns: a,
2396
+ stackPairs: s
2397
+ },
2392
2398
  children: /* @__PURE__ */ J("div", {
2393
2399
  ref: n,
2394
2400
  style: {
@@ -2401,8 +2407,8 @@ function Lt({ columns: e = 2, children: t }) {
2401
2407
  })
2402
2408
  });
2403
2409
  }
2404
- function Rt({ label: t, children: n, span: r = !1, required: i, error: a, hint: o, actions: s, copyValue: c, mode: l = "display", htmlFor: u, labelId: d, labelTitle: f, "data-testid": p }) {
2405
- let h = _e(It), g = r || h.columns === 1, _ = !!a;
2410
+ function zt({ label: t, children: n, span: r = !1, required: i, error: a, hint: o, actions: s, copyValue: c, mode: l = "display", htmlFor: u, labelId: d, labelTitle: f, "data-testid": p }) {
2411
+ let h = _e(Lt), g = r || h.stackPairs, _ = !!a;
2406
2412
  return /* @__PURE__ */ Y("div", {
2407
2413
  className: "detail-row",
2408
2414
  "data-error": _ || void 0,
@@ -2419,9 +2425,9 @@ function Rt({ label: t, children: n, span: r = !1, required: i, error: a, hint:
2419
2425
  style: {
2420
2426
  width: g ? "auto" : jt,
2421
2427
  flexShrink: 0,
2422
- paddingTop: g ? 0 : Pt,
2428
+ paddingTop: g ? 0 : Ft,
2423
2429
  fontSize: 12,
2424
- lineHeight: Nt,
2430
+ lineHeight: Pt,
2425
2431
  fontWeight: 500,
2426
2432
  color: "var(--text-3)",
2427
2433
  display: "flex",
@@ -2465,10 +2471,10 @@ function Rt({ label: t, children: n, span: r = !1, required: i, error: a, hint:
2465
2471
  flex: 1,
2466
2472
  minWidth: 0,
2467
2473
  fontSize: 13,
2468
- lineHeight: Nt,
2474
+ lineHeight: Pt,
2469
2475
  color: "var(--text)",
2470
2476
  overflowWrap: "anywhere",
2471
- paddingTop: l === "display" && !g ? Pt : 0
2477
+ paddingTop: l === "display" && !g ? Ft : 0
2472
2478
  },
2473
2479
  children: _ && l === "edit" ? /* @__PURE__ */ J("div", {
2474
2480
  style: {
@@ -2507,18 +2513,18 @@ function Rt({ label: t, children: n, span: r = !1, required: i, error: a, hint:
2507
2513
  }
2508
2514
  //#endregion
2509
2515
  //#region src/components/detail-layout/FieldsBlock.tsx
2510
- function zt({ fields: e, ctx: t }) {
2516
+ function Bt({ fields: e, ctx: t }) {
2511
2517
  let { entity: r, entityCode: i, record: a, mode: o, onFieldChange: s, schema: c } = t, u = n(), d = t.columns ?? 2, p = d === 1 && e.length === 1;
2512
- return /* @__PURE__ */ J(Lt, {
2518
+ return /* @__PURE__ */ J(Rt, {
2513
2519
  columns: d,
2514
2520
  children: e.map((e) => {
2515
- let n = e.name, d = `${i ?? "field"}-${n}`, m = `${d}-label`, h = r.fields.get(n), g = !!(h?.auto || h?.readonly || h?.source), _ = re(r, n), v = _?.read === "denied", y = _?.write === "denied", b = o === "display" ? v : y || v, x = g || o === "edit" && y ? "display" : o, S = b ? /* @__PURE__ */ J(z, {
2521
+ let n = e.name, d = `${i ?? "field"}-${n}`, m = `${d}-label`, h = r.fields.get(n), g = !!(h?.auto || h?.readonly || h?.source), _ = ne(r, n), v = _?.read === "denied", y = _?.write === "denied", b = o === "display" ? v : y || v, x = g || o === "edit" && y ? "display" : o, S = b ? /* @__PURE__ */ J(ue, {
2516
2522
  tier: _.classification,
2517
2523
  tierDef: B(c, r, n),
2518
2524
  requiredPermission: _?.required_permission,
2519
2525
  locale: u,
2520
2526
  variant: x === "edit" ? "input" : "value"
2521
- }) : ne({
2527
+ }) : V({
2522
2528
  entity: r,
2523
2529
  entityCode: i,
2524
2530
  fieldName: n,
@@ -2534,14 +2540,14 @@ function zt({ fields: e, ctx: t }) {
2534
2540
  structure: e.structure
2535
2541
  });
2536
2542
  if (!S) return null;
2537
- let C = o === "display" && e.actions && e.actions.length > 0 ? /* @__PURE__ */ J(q, { children: e.actions.map((e, t) => /* @__PURE__ */ J(R, {
2543
+ let C = o === "display" && e.actions && e.actions.length > 0 ? /* @__PURE__ */ J(q, { children: e.actions.map((e, t) => /* @__PURE__ */ J(z, {
2538
2544
  actionCode: `${n}.action[${t}]`,
2539
2545
  action: e,
2540
2546
  entityCode: i,
2541
2547
  row: a,
2542
2548
  variant: "ghost",
2543
2549
  size: "icon"
2544
- }, t)) }) : void 0, w = !!h && Ft.has(h.type), T = a?.[n], E = x === "display" && (h?.copyable || h?.type === "uuid") && T != null && T !== "" ? l(T) : void 0, D = f(h?.display?.description);
2550
+ }, t)) }) : void 0, w = !!h && It.has(h.type), T = a?.[n], E = x === "display" && (h?.copyable || h?.type === "uuid") && T != null && T !== "" ? l(T) : void 0, D = f(h?.display?.description);
2545
2551
  return p ? /* @__PURE__ */ Y("div", {
2546
2552
  style: { gridColumn: "1 / -1" },
2547
2553
  children: [S, x === "edit" && D && /* @__PURE__ */ J("div", {
@@ -2553,7 +2559,7 @@ function zt({ fields: e, ctx: t }) {
2553
2559
  },
2554
2560
  children: D
2555
2561
  })]
2556
- }, n) : /* @__PURE__ */ J(Rt, {
2562
+ }, n) : /* @__PURE__ */ J(zt, {
2557
2563
  "data-testid": `field-${n}`,
2558
2564
  label: le(r, n, c.entities),
2559
2565
  htmlFor: x === "edit" ? d : void 0,
@@ -2573,7 +2579,7 @@ function zt({ fields: e, ctx: t }) {
2573
2579
  }
2574
2580
  //#endregion
2575
2581
  //#region src/components/detail-layout/PropertiesBlock.tsx
2576
- var Bt = /* @__PURE__ */ new Set([
2582
+ var Vt = /* @__PURE__ */ new Set([
2577
2583
  "string",
2578
2584
  "text",
2579
2585
  "int",
@@ -2581,16 +2587,16 @@ var Bt = /* @__PURE__ */ new Set([
2581
2587
  "decimal",
2582
2588
  "email",
2583
2589
  "url"
2584
- ]), Vt = 500;
2585
- function Ht({ node: e, ctx: t }) {
2590
+ ]), Ht = 500;
2591
+ function Ut({ node: e, ctx: t }) {
2586
2592
  let { entity: n, objectProperties: i, onSetProperty: a, isNew: o, mode: s, refs: c } = t, l = n.properties ?? {};
2587
2593
  if (o) return null;
2588
2594
  let u = e.properties === !0 || e.properties, d = u === !0 ? Object.entries(l).sort(([e], [t]) => e.localeCompare(t)) : u.filter((e) => l[e] != null).map((e) => [e, l[e]]);
2589
- return d.length === 0 ? null : /* @__PURE__ */ J(Lt, {
2595
+ return d.length === 0 ? null : /* @__PURE__ */ J(Rt, {
2590
2596
  columns: 2,
2591
2597
  children: d.map(([e, o]) => {
2592
2598
  let l = i?.find((t) => t.property_code === e), u = r(o), d = o.readonly || !a ? "display" : s;
2593
- return /* @__PURE__ */ J(Ut, {
2599
+ return /* @__PURE__ */ J(Wt, {
2594
2600
  propCode: e,
2595
2601
  prop: o,
2596
2602
  field: u,
@@ -2604,23 +2610,23 @@ function Ht({ node: e, ctx: t }) {
2604
2610
  })
2605
2611
  });
2606
2612
  }
2607
- function Ut({ propCode: e, prop: t, field: r, value: i, mode: a, onSetProperty: o, refs: s, entity: c, schema: l }) {
2613
+ function Wt({ propCode: e, prop: t, field: r, value: i, mode: a, onSetProperty: o, refs: s, entity: c, schema: l }) {
2608
2614
  let u = n(), d = G(null);
2609
2615
  U(() => () => {
2610
2616
  d.current && clearTimeout(d.current);
2611
2617
  }, []);
2612
2618
  let p = H((n) => {
2613
- o && (Bt.has(t.type) ? (d.current && clearTimeout(d.current), d.current = setTimeout(() => o(e, n), Vt)) : o(e, n));
2619
+ o && (Vt.has(t.type) ? (d.current && clearTimeout(d.current), d.current = setTimeout(() => o(e, n), Ht)) : o(e, n));
2614
2620
  }, [
2615
2621
  e,
2616
2622
  t.type,
2617
2623
  o
2618
- ]), m = re(c, e), h = m?.read === "denied", g = m?.write === "denied", _ = a === "display" ? h : g || h, v = a === "edit" && g ? "display" : a;
2619
- return /* @__PURE__ */ J(Rt, {
2624
+ ]), m = ne(c, e), h = m?.read === "denied", g = m?.write === "denied", _ = a === "display" ? h : g || h, v = a === "edit" && g ? "display" : a;
2625
+ return /* @__PURE__ */ J(zt, {
2620
2626
  label: f(t.display?.name ?? t.name),
2621
2627
  mode: v,
2622
- span: Ft.has(t.type),
2623
- children: _ ? /* @__PURE__ */ J(z, {
2628
+ span: It.has(t.type),
2629
+ children: _ ? /* @__PURE__ */ J(ue, {
2624
2630
  tier: m.classification,
2625
2631
  tierDef: B(l, c, e),
2626
2632
  requiredPermission: m?.required_permission,
@@ -2639,7 +2645,7 @@ function Ut({ propCode: e, prop: t, field: r, value: i, mode: a, onSetProperty:
2639
2645
  }
2640
2646
  //#endregion
2641
2647
  //#region src/components/shared/StatusStepper.tsx
2642
- function Wt({ stages: t, current: n, selectable: r, onSelect: i, compact: a = !1 }) {
2648
+ function Gt({ stages: t, current: n, selectable: r, onSelect: i, compact: a = !1 }) {
2643
2649
  let o = t.findIndex((e) => e.code === n);
2644
2650
  return /* @__PURE__ */ J("div", {
2645
2651
  role: "list",
@@ -2706,7 +2712,7 @@ function Wt({ stages: t, current: n, selectable: r, onSelect: i, compact: a = !1
2706
2712
  }
2707
2713
  //#endregion
2708
2714
  //#region src/components/shared/StatusGroupsDisplay.tsx
2709
- function Gt({ statusGroups: e, objectStatuses: t, onSetStatus: n, isPending: r, mode: i = "edit" }) {
2715
+ function Kt({ statusGroups: e, objectStatuses: t, onSetStatus: n, isPending: r, mode: i = "edit" }) {
2710
2716
  return /* @__PURE__ */ J("div", {
2711
2717
  style: {
2712
2718
  display: "flex",
@@ -2738,7 +2744,7 @@ function Gt({ statusGroups: e, objectStatuses: t, onSetStatus: n, isPending: r,
2738
2744
  opacity: r ? .6 : 1,
2739
2745
  pointerEvents: r ? "none" : "auto"
2740
2746
  },
2741
- children: /* @__PURE__ */ J(Wt, {
2747
+ children: /* @__PURE__ */ J(Gt, {
2742
2748
  stages: a.statuses.map((e) => ({
2743
2749
  code: e.code,
2744
2750
  label: f(e.name)
@@ -2823,31 +2829,31 @@ function Gt({ statusGroups: e, objectStatuses: t, onSetStatus: n, isPending: r,
2823
2829
  }
2824
2830
  //#endregion
2825
2831
  //#region src/components/detail-layout/StatusesBlock.tsx
2826
- var Kt = () => {};
2827
- function qt({ node: e, ctx: t }) {
2832
+ var qt = () => {};
2833
+ function Jt({ node: e, ctx: t }) {
2828
2834
  let { entity: n, objectStatuses: r, onSetStatus: i, isStatusPending: a, isNew: o } = t, s = n.status_groups ?? {};
2829
2835
  if (o) return null;
2830
2836
  let c = e.statuses === !0 || e.statuses, l = Object.fromEntries(Object.entries(s).filter(([e]) => c === !0 || c.includes(e)));
2831
- return Object.keys(l).length === 0 ? null : /* @__PURE__ */ J(Gt, {
2837
+ return Object.keys(l).length === 0 ? null : /* @__PURE__ */ J(Kt, {
2832
2838
  statusGroups: l,
2833
2839
  objectStatuses: r,
2834
- onSetStatus: i ?? Kt,
2840
+ onSetStatus: i ?? qt,
2835
2841
  isPending: a ?? !1,
2836
2842
  mode: t.mode
2837
2843
  });
2838
2844
  }
2839
2845
  //#endregion
2840
2846
  //#region src/components/detail-layout/widgets/canonicalizeJson.ts
2841
- function Jt(e) {
2842
- if (Array.isArray(e)) return e.map(Jt);
2847
+ function Yt(e) {
2848
+ if (Array.isArray(e)) return e.map(Yt);
2843
2849
  if (typeof e == "object" && e) {
2844
2850
  let t = e, n = {};
2845
- for (let e of Object.keys(t).sort()) n[e] = Jt(t[e]);
2851
+ for (let e of Object.keys(t).sort()) n[e] = Yt(t[e]);
2846
2852
  return n;
2847
2853
  }
2848
2854
  return e;
2849
2855
  }
2850
- function Yt(e) {
2856
+ function Xt(e) {
2851
2857
  switch (typeof e) {
2852
2858
  case "string": return e;
2853
2859
  case "number":
@@ -2859,39 +2865,39 @@ function Yt(e) {
2859
2865
  default: return "";
2860
2866
  }
2861
2867
  }
2862
- function Xt(e) {
2868
+ function Zt(e) {
2863
2869
  if (e == null) return "";
2864
2870
  try {
2865
- return JSON.stringify(Jt(e), null, 2) ?? Yt(e);
2871
+ return JSON.stringify(Yt(e), null, 2) ?? Xt(e);
2866
2872
  } catch {
2867
- return Yt(e);
2873
+ return Xt(e);
2868
2874
  }
2869
2875
  }
2870
2876
  //#endregion
2871
2877
  //#region src/components/detail-layout/widgets/JsonDiffWidget.tsx
2872
- var Zt = "Audit change diff", Qt = ge(() => import("./MonacoJson-BG3S3GHX.js").then((e) => ({ default: e.MonacoJsonDiff }))), $t = ge(() => import("./MonacoJson-BG3S3GHX.js").then((e) => ({ default: e.MonacoJsonSource }))), en = ge(() => import("./JsonEditor-DoNmyrYd.js").then((e) => ({ default: e.JsonEditor })));
2873
- function tn() {
2878
+ var Qt = "Audit change diff", $t = ge(() => import("./MonacoJson-BG3S3GHX.js").then((e) => ({ default: e.MonacoJsonDiff }))), en = ge(() => import("./MonacoJson-BG3S3GHX.js").then((e) => ({ default: e.MonacoJsonSource }))), tn = ge(() => import("./JsonEditor-DoNmyrYd.js").then((e) => ({ default: e.JsonEditor })));
2879
+ function nn() {
2874
2880
  return /* @__PURE__ */ J("div", {
2875
2881
  className: "flex h-full w-full items-center justify-center text-sm text-muted-foreground",
2876
2882
  children: "Loading editor…"
2877
2883
  });
2878
2884
  }
2879
- function nn({ before: e, after: t }) {
2885
+ function rn({ before: e, after: t }) {
2880
2886
  return /* @__PURE__ */ J(me, {
2881
- fallback: /* @__PURE__ */ J(tn, {}),
2887
+ fallback: /* @__PURE__ */ J(nn, {}),
2882
2888
  children: /* @__PURE__ */ Y("div", {
2883
2889
  className: "flex h-full w-full gap-2",
2884
2890
  role: "group",
2885
- "aria-label": Zt,
2891
+ "aria-label": Qt,
2886
2892
  children: [/* @__PURE__ */ J("div", {
2887
2893
  className: "min-w-0 flex-1",
2888
- children: /* @__PURE__ */ J(en, {
2894
+ children: /* @__PURE__ */ J(tn, {
2889
2895
  value: e,
2890
2896
  readOnly: !0
2891
2897
  })
2892
2898
  }), /* @__PURE__ */ J("div", {
2893
2899
  className: "min-w-0 flex-1",
2894
- children: /* @__PURE__ */ J(en, {
2900
+ children: /* @__PURE__ */ J(tn, {
2895
2901
  value: t,
2896
2902
  readOnly: !0
2897
2903
  })
@@ -2899,7 +2905,7 @@ function nn({ before: e, after: t }) {
2899
2905
  })
2900
2906
  });
2901
2907
  }
2902
- function rn({ mode: e, onChange: t }) {
2908
+ function an({ mode: e, onChange: t }) {
2903
2909
  return /* @__PURE__ */ Y("div", {
2904
2910
  className: "inline-flex gap-1",
2905
2911
  role: "group",
@@ -2919,13 +2925,13 @@ function rn({ mode: e, onChange: t }) {
2919
2925
  })]
2920
2926
  });
2921
2927
  }
2922
- function an({ values: e, options: t }) {
2923
- let n = e.before, r = e.after, i = t?.default_mode === "source" ? "source" : "diff", [a, o] = K(i), s = Xt(n), c = Xt(r);
2928
+ function on({ values: e, options: t }) {
2929
+ let n = e.before, r = e.after, i = t?.default_mode === "source" ? "source" : "diff", [a, o] = K(i), s = Zt(n), c = Zt(r);
2924
2930
  return /* @__PURE__ */ Y("div", {
2925
2931
  className: "flex flex-col gap-2",
2926
2932
  children: [/* @__PURE__ */ Y("div", {
2927
2933
  className: "flex items-center justify-between",
2928
- children: [/* @__PURE__ */ J(rn, {
2934
+ children: [/* @__PURE__ */ J(an, {
2929
2935
  mode: a,
2930
2936
  onChange: o
2931
2937
  }), s === c && /* @__PURE__ */ J("span", {
@@ -2936,25 +2942,25 @@ function an({ values: e, options: t }) {
2936
2942
  }), /* @__PURE__ */ J("div", {
2937
2943
  className: "h-[480px] w-full overflow-hidden rounded border",
2938
2944
  role: "group",
2939
- "aria-label": Zt,
2940
- children: /* @__PURE__ */ J(oe, {
2941
- fallback: /* @__PURE__ */ J(nn, {
2945
+ "aria-label": Qt,
2946
+ children: /* @__PURE__ */ J(ae, {
2947
+ fallback: /* @__PURE__ */ J(rn, {
2942
2948
  before: n,
2943
2949
  after: r
2944
2950
  }),
2945
2951
  children: /* @__PURE__ */ J(me, {
2946
- fallback: /* @__PURE__ */ J(tn, {}),
2947
- children: a === "diff" ? /* @__PURE__ */ J(Qt, {
2952
+ fallback: /* @__PURE__ */ J(nn, {}),
2953
+ children: a === "diff" ? /* @__PURE__ */ J($t, {
2948
2954
  before: s,
2949
2955
  after: c
2950
2956
  }) : /* @__PURE__ */ Y("div", {
2951
2957
  className: "flex h-full w-full gap-2",
2952
2958
  children: [/* @__PURE__ */ J("div", {
2953
2959
  className: "min-w-0 flex-1",
2954
- children: /* @__PURE__ */ J($t, { value: s })
2960
+ children: /* @__PURE__ */ J(en, { value: s })
2955
2961
  }), /* @__PURE__ */ J("div", {
2956
2962
  className: "min-w-0 flex-1",
2957
- children: /* @__PURE__ */ J($t, { value: c })
2963
+ children: /* @__PURE__ */ J(en, { value: c })
2958
2964
  })]
2959
2965
  })
2960
2966
  })
@@ -2973,7 +2979,7 @@ function Q(e) {
2973
2979
  let n = Object.entries(t).filter((e) => typeof e[1] == "string");
2974
2980
  return n.length > 0 ? Object.fromEntries(n) : void 0;
2975
2981
  }
2976
- function on(e) {
2982
+ function sn(e) {
2977
2983
  return Array.isArray(e) ? e.flatMap((e) => {
2978
2984
  let t = Z(e);
2979
2985
  return !t || typeof t.field != "string" ? [] : [{
@@ -2983,7 +2989,7 @@ function on(e) {
2983
2989
  }];
2984
2990
  }) : [];
2985
2991
  }
2986
- function sn(e) {
2992
+ function cn(e) {
2987
2993
  if (!e || typeof e.entity != "string" || typeof e.scope_field != "string" || typeof e.window_field != "string") return;
2988
2994
  let t = Array.isArray(e.windows) ? e.windows.flatMap((e) => {
2989
2995
  let t = Z(e);
@@ -3018,7 +3024,7 @@ function sn(e) {
3018
3024
  filter_label: Q(r.filter_label),
3019
3025
  all_label: Q(r.all_label),
3020
3026
  empty_label: Q(r.empty_label),
3021
- columns: on(r.columns),
3027
+ columns: sn(r.columns),
3022
3028
  sort: typeof r.sort == "string" ? r.sort : void 0,
3023
3029
  limit: typeof r.limit == "number" ? Math.min(500, Math.max(1, r.limit)) : 200
3024
3030
  } : void 0, a = Z(e.drillthrough), o = a && typeof a.route == "string" && typeof a.scope_field == "string" && typeof a.window_field == "string" ? {
@@ -3043,7 +3049,7 @@ function sn(e) {
3043
3049
  drillthrough: o
3044
3050
  };
3045
3051
  }
3046
- function cn(e, t, n) {
3052
+ function ln(e, t, n) {
3047
3053
  if (e == null || e === "") return "N/A";
3048
3054
  if (t === "number") return new Intl.NumberFormat(n).format(Number(e));
3049
3055
  if (t === "percent_ratio") return new Intl.NumberFormat(n, {
@@ -3061,14 +3067,14 @@ function cn(e, t, n) {
3061
3067
  }
3062
3068
  return typeof e == "string" ? e : typeof e == "number" || typeof e == "bigint" || typeof e == "boolean" ? String(e) : "N/A";
3063
3069
  }
3064
- function ln(e, t) {
3070
+ function un(e, t) {
3065
3071
  return typeof e.id == "string" || typeof e.id == "number" ? String(e.id) : `row-${t}`;
3066
3072
  }
3067
- function un(e, t) {
3073
+ function dn(e, t) {
3068
3074
  return !t || Object.entries(t).every(([t, n]) => e[t] === n);
3069
3075
  }
3070
- function dn({ values: e, options: t }) {
3071
- let r = W(() => sn(t), [t]), i = n(), a = V(), o = e.scope, s = r?.windows.some((e) => e.code === r.default_window) ? r.default_window : r?.windows[0]?.code ?? "", [c, l] = K(s), [u, d] = K("");
3076
+ function fn({ values: e, options: t }) {
3077
+ let r = W(() => cn(t), [t]), i = n(), a = re(), o = e.scope, s = r?.windows.some((e) => e.code === r.default_window) ? r.default_window : r?.windows[0]?.code ?? "", [c, l] = K(s), [u, d] = K("");
3072
3078
  U(() => {
3073
3079
  l(s);
3074
3080
  }, [s]), U(() => {
@@ -3103,7 +3109,7 @@ function dn({ values: e, options: t }) {
3103
3109
  className: "rounded border border-destructive p-3 text-sm text-destructive",
3104
3110
  children: "Invalid entity_scorecard configuration."
3105
3111
  });
3106
- let y = h.data?.data?.[0], b = v.data?.data ?? [], x = g?.filter_field ? Array.from(new Set(b.map((e) => e[g.filter_field]).filter((e) => typeof e == "string" && e !== ""))).sort() : [], S = u && g?.filter_field ? b.filter((e) => e[g.filter_field] === u) : b, C = (e) => !u || !e.filtered || !g?.filter_field ? y?.[e.field] : b.find((t) => t[g.filter_field] === u && un(t, e.filtered?.where))?.[e.filtered.field], w = (e) => {
3112
+ let y = h.data?.data?.[0], b = v.data?.data ?? [], x = g?.filter_field ? Array.from(new Set(b.map((e) => e[g.filter_field]).filter((e) => typeof e == "string" && e !== ""))).sort() : [], S = u && g?.filter_field ? b.filter((e) => e[g.filter_field] === u) : b, C = (e) => !u || !e.filtered || !g?.filter_field ? y?.[e.field] : b.find((t) => t[g.filter_field] === u && dn(t, e.filtered?.where))?.[e.filtered.field], w = (e) => {
3107
3113
  let t = r.drillthrough;
3108
3114
  if (!t || !e.drillthrough_value) return;
3109
3115
  let n = [{
@@ -3197,7 +3203,7 @@ function dn({ values: e, options: t }) {
3197
3203
  }),
3198
3204
  /* @__PURE__ */ J("strong", {
3199
3205
  className: `mt-2 block text-2xl font-semibold ${e.attention && Number(t) > 0 ? "text-destructive" : "text-foreground"}`,
3200
- children: cn(t, e.format, i)
3206
+ children: ln(t, e.format, i)
3201
3207
  }),
3202
3208
  e.help && /* @__PURE__ */ J("span", {
3203
3209
  className: "mt-1 block text-xs text-muted-foreground",
@@ -3229,9 +3235,9 @@ function dn({ values: e, options: t }) {
3229
3235
  className: "border-b border-divider last:border-0",
3230
3236
  children: g.columns.map((t) => /* @__PURE__ */ J("td", {
3231
3237
  className: "px-3 py-2 text-foreground",
3232
- children: cn(e[t.field], t.format, i)
3238
+ children: ln(e[t.field], t.format, i)
3233
3239
  }, t.field))
3234
- }, ln(e, t))), !v.isLoading && S.length === 0 && /* @__PURE__ */ J("tr", { children: /* @__PURE__ */ J("td", {
3240
+ }, un(e, t))), !v.isLoading && S.length === 0 && /* @__PURE__ */ J("tr", { children: /* @__PURE__ */ J("td", {
3235
3241
  colSpan: Math.max(1, g.columns.length),
3236
3242
  className: "px-3 py-6 text-center text-muted-foreground",
3237
3243
  children: f(g.empty_label, i) || "No breakdown rows."
@@ -3243,14 +3249,14 @@ function dn({ values: e, options: t }) {
3243
3249
  }
3244
3250
  //#endregion
3245
3251
  //#region src/components/detail-layout/widgets/builtins.ts
3246
- var fn = !1;
3247
- function pn() {
3248
- fn ||= (se("json_diff", an), se("entity_scorecard", dn), !0);
3252
+ var pn = !1;
3253
+ function mn() {
3254
+ pn ||= (se("json_diff", on), se("entity_scorecard", fn), !0);
3249
3255
  }
3250
3256
  //#endregion
3251
3257
  //#region src/components/detail-layout/widgets/WidgetHost.tsx
3252
- pn();
3253
- function mn({ config: e, ctx: t }) {
3258
+ mn();
3259
+ function hn({ config: e, ctx: t }) {
3254
3260
  let n = ce(e.type);
3255
3261
  if (!n) return /* @__PURE__ */ J("span", {
3256
3262
  className: "text-sm text-muted-foreground",
@@ -3276,7 +3282,7 @@ function mn({ config: e, ctx: t }) {
3276
3282
  }
3277
3283
  //#endregion
3278
3284
  //#region src/components/detail-layout/LayoutRenderer.tsx
3279
- function hn({ nodes: e, ctx: t }) {
3285
+ function gn({ nodes: e, ctx: t }) {
3280
3286
  return /* @__PURE__ */ J(q, { children: e.map((e, n) => /* @__PURE__ */ J($, {
3281
3287
  node: e,
3282
3288
  ctx: t
@@ -3299,22 +3305,22 @@ function $({ node: e, ctx: t }) {
3299
3305
  }) : e.children ? /* @__PURE__ */ J(At, {
3300
3306
  node: e,
3301
3307
  ctx: t
3302
- }) : e.associated ? /* @__PURE__ */ J(ae, {
3308
+ }) : e.associated ? /* @__PURE__ */ J(ie, {
3303
3309
  node: e,
3304
3310
  ctx: t
3305
- }) : e.fields ? /* @__PURE__ */ J(zt, {
3311
+ }) : e.fields ? /* @__PURE__ */ J(Bt, {
3306
3312
  fields: e.fields,
3307
3313
  ctx: t
3308
- }) : e.properties == null ? e.statuses == null ? e.widget ? /* @__PURE__ */ J(mn, {
3314
+ }) : e.properties == null ? e.statuses == null ? e.widget ? /* @__PURE__ */ J(hn, {
3309
3315
  config: e.widget,
3310
3316
  ctx: t
3311
- }) : null : /* @__PURE__ */ J(qt, {
3317
+ }) : null : /* @__PURE__ */ J(Jt, {
3312
3318
  node: e,
3313
3319
  ctx: t
3314
- }) : /* @__PURE__ */ J(Ht, {
3320
+ }) : /* @__PURE__ */ J(Ut, {
3315
3321
  node: e,
3316
3322
  ctx: t
3317
3323
  });
3318
3324
  }
3319
3325
  //#endregion
3320
- export { Gt as n, hn as t };
3326
+ export { Kt as n, gn as t };