react-semaphor 0.1.537 → 0.1.539

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 (174) hide show
  1. package/dist/analytics-protocol/index.js +352 -341
  2. package/dist/assistant-context/index.js +10 -0
  3. package/dist/assistant-protocol/index.js +104 -0
  4. package/dist/brand-studio/index.js +35 -31
  5. package/dist/briefings/index.js +46 -45
  6. package/dist/chunks/_commonjsHelpers-BkfeUUK-.js +28 -0
  7. package/dist/chunks/add-to-dashboard-CxtTfISD.js +56 -0
  8. package/dist/chunks/aggregate-table-row-presentation-BjK9YfMI.js +979 -0
  9. package/dist/chunks/analytics-base-schemas-BFAoRlkU.js +472 -0
  10. package/dist/chunks/apply-dashboard-operations-C-iahGka.js +402 -0
  11. package/dist/chunks/assistant-chat-DgiSuFT4.js +8083 -0
  12. package/dist/chunks/availability-Bp5Gfu1I.js +44 -0
  13. package/dist/chunks/{bookmark-state-B-I9BDD0.js → bookmark-state-k7y5SNGf.js} +9 -9
  14. package/dist/chunks/{braces-8TRlDwDw.js → braces-o9UiRQes.js} +1 -1
  15. package/dist/chunks/calculated-field-identity-DcBS2NPP.js +2161 -0
  16. package/dist/chunks/calendar-day-equality-Bpl15IBo.js +487 -0
  17. package/dist/chunks/class-utils-Df1OVOT1.js +2315 -0
  18. package/dist/chunks/{field-dependencies-CpRUwr9J.js → common-types-CUf03Htv.js} +65 -58
  19. package/dist/chunks/context-HD9usB1P.js +349 -0
  20. package/dist/chunks/conversation-sQiWYUOb.js +16 -0
  21. package/dist/chunks/csv-utils-GUfKyT1J.js +56 -0
  22. package/dist/chunks/custom-visual-inputs-BrUOIwln.js +3288 -0
  23. package/dist/chunks/{dashboard-briefing-launcher-A2uVpHCp.js → dashboard-briefing-launcher-Bl3gCeBR.js} +580 -556
  24. package/dist/chunks/{dashboard-controls-DxTuVis_.js → dashboard-controls-0EX0HiJt.js} +683 -686
  25. package/dist/chunks/{common-types-g7yS12Cg.js → dashboard-filter-value-compatibility-D95O4nd7.js} +18 -24
  26. package/dist/chunks/dashboard-json-6X_2BDiL.js +69 -0
  27. package/dist/chunks/{dashboard-BPJo-Fnd.js → dashboard-y5BwcvzT.js} +1 -1
  28. package/dist/chunks/document-dashboard-inputs-BrYYlRVo.js +10678 -0
  29. package/dist/chunks/document-sheet-utils-C1eEldxs.js +1076 -0
  30. package/dist/chunks/{edit-dashboard-visual-ByV0OwSp.js → edit-dashboard-visual-Bzchfgga.js} +4744 -4746
  31. package/dist/chunks/editor-draft-sync-BN5qYHPF.js +15 -0
  32. package/dist/chunks/filter-value-text-BhWugPWE.js +163 -0
  33. package/dist/chunks/index-CqMiAkay.js +3164 -0
  34. package/dist/chunks/index-CuHybtft.js +51 -0
  35. package/dist/chunks/layout-grid-Bgzth8vd.js +16 -0
  36. package/dist/chunks/{matrix-analytical-definition-CgBTD6H8.js → matrix-analytical-definition-bcprSe4u.js} +1 -1
  37. package/dist/chunks/{matrix-card-CAdizkUl.js → matrix-card-CJn1hB5V.js} +13 -12
  38. package/dist/chunks/matrix-definition-DQDI2okF.js +206 -0
  39. package/dist/chunks/{matrix-formatter-DJCk8Znf.js → matrix-formatter-DQ8avoIQ.js} +648 -457
  40. package/dist/chunks/matrix-member-presentation-BNPSDKBG.js +105 -0
  41. package/dist/chunks/{matrix-operation-contract-BKupLHXL.js → matrix-operation-contract-B8PBF1Gd.js} +134 -133
  42. package/dist/chunks/{metric-comparison-BKHyvnAy.js → metric-comparison-CojWeLqx.js} +1 -1
  43. package/dist/chunks/{palette-Cp1hqZtm.js → palette-D10o_yYX.js} +1 -1
  44. package/dist/chunks/pivot-header-presentation-MkcKnjn3.js +42 -0
  45. package/dist/chunks/{pivot-result-identity-Bs4tLtLo.js → pivot-result-identity-D6hhcRXi.js} +1 -1
  46. package/dist/chunks/pivot-result-lifecycle-8qCDmpKc.js +804 -0
  47. package/dist/chunks/raw-temporal-D61lr48Y.js +1464 -0
  48. package/dist/chunks/{raw-temporal-contract-mLFS-9wk.js → raw-temporal-contract-C51YG48G.js} +1 -1
  49. package/dist/chunks/report-preferences-dialog-CWhSbc5_.js +1808 -0
  50. package/dist/chunks/{report-runtime-context-CG_I0PPW.js → report-runtime-context-B984Nq1E.js} +8 -7
  51. package/dist/chunks/save-CfJpQQ68.js +21 -0
  52. package/dist/chunks/saved-dashboard-context-Dqve2jlB.js +566 -0
  53. package/dist/chunks/{selection-reducer-CiDEtmAq.js → selection-reducer-vKIb_jS6.js} +2 -2
  54. package/dist/chunks/{semaphor-ready-indicator-CHu1L-lo.js → semaphor-ready-indicator-ldcwmLoY.js} +65803 -62954
  55. package/dist/chunks/{shelf-drop-preview-context-i-H6DFyU.js → shelf-drop-preview-context-BWxunXTq.js} +199 -196
  56. package/dist/chunks/{source-entity-resolution-C-oNyYMp.js → source-entity-resolution-CVA1a85c.js} +8 -8
  57. package/dist/chunks/switch-CvItuC1Q.js +8199 -0
  58. package/dist/chunks/{temporal-bucket-DlFuhCnT.js → temporal-bucket-D8JF7zKz.js} +86 -71
  59. package/dist/chunks/{temporal-bucket-contract-D2OuaVZ7.js → temporal-bucket-contract-DaOajRC7.js} +1 -1
  60. package/dist/chunks/{token-types-DtSJOUjh.js → token-types-bxUxXDX2.js} +1 -1
  61. package/dist/chunks/{upload-CAIpsti1.js → upload-BFX7apKV.js} +1 -1
  62. package/dist/chunks/{use-create-flow-overlay-state-Bj63WwHc.js → use-create-flow-overlay-state-RHgzVfcz.js} +331 -339
  63. package/dist/chunks/{validators-DMSH81OM.js → validators-Ej1DdCXa.js} +1050 -1510
  64. package/dist/chunks/visual-choice-JiJ-_3bi.js +204 -0
  65. package/dist/chunks/x-4f5U2XwU.js +100 -0
  66. package/dist/chunks/{zoned-wall-clock-1qlWCE20.js → zoned-wall-clock-MulfA26h.js} +2 -2
  67. package/dist/dashboard/index.js +2 -2
  68. package/dist/dashboard-authoring/index.js +823 -661
  69. package/dist/data-app-sdk/index.js +32 -30
  70. package/dist/data-app-sdk-adapters/index.js +23 -22
  71. package/dist/data-app-sdk-validation/index.js +23 -22
  72. package/dist/format-utils/index.js +173 -168
  73. package/dist/index.js +267 -258
  74. package/dist/layouts/index.js +236 -24
  75. package/dist/report-runtime-context/index.js +2 -2
  76. package/dist/style.css +1 -1
  77. package/dist/surfboard/index.js +2 -2
  78. package/dist/types/assistant-context.d.ts +2 -0
  79. package/dist/types/assistant-protocol.d.ts +2 -0
  80. package/dist/types/components/assistant/assistant-entry-points.d.ts +18 -0
  81. package/dist/types/components/assistant/assistant-provider.d.ts +19 -0
  82. package/dist/types/components/assistant/assistant-store.d.ts +52 -0
  83. package/dist/types/components/assistant/use-assistant.d.ts +38 -0
  84. package/dist/types/components/index.d.ts +5 -1
  85. package/dist/types/components/surfboard/filter/types.d.ts +5 -2
  86. package/dist/types/index.js +50 -51
  87. package/dist/types/lib/api/invalidate-token.d.ts +7 -0
  88. package/dist/types/lib/charts/cartesian-fields.d.ts +64 -0
  89. package/dist/types/lib/charts/types.d.ts +7 -0
  90. package/dist/types/lib/dashboard-inputs/dashboard-filter-mapping-storage-transition.d.ts +14 -2
  91. package/dist/types/lib/dashboard-inputs/dashboard-input-target-context.d.ts +5 -6
  92. package/dist/types/lib/dashboard-inputs/dashboard-input-values.d.ts +8 -3
  93. package/dist/types/lib/dashboard-inputs/resolve-dashboard-input-context.d.ts +11 -6
  94. package/dist/types/lib/dashboard-pagination/dashboard-card-pagination.d.ts +7 -0
  95. package/dist/types/lib/dashboard-viewer/compatibility-input-storage.d.ts +79 -0
  96. package/dist/types/lib/dashboard-viewer/viewer-state.d.ts +3 -2
  97. package/dist/types/lib/document/document-table-data-policy.d.ts +15 -0
  98. package/dist/types/lib/filter-values/filter-mode.d.ts +22 -0
  99. package/dist/types/lib/hooks/use-calendar-context.d.ts +5 -0
  100. package/dist/types/lib/hooks/use-filter-option-browse.d.ts +5 -0
  101. package/dist/types/lib/hooks/use-text-filter.d.ts +9 -0
  102. package/dist/types/lib/print/print-inputs.d.ts +4 -2
  103. package/dist/types/lib/query-context/build-card-query-context.d.ts +12 -4
  104. package/dist/types/lib/query-context/build-dashboard-execution-snapshot.d.ts +93 -0
  105. package/dist/types/lib/query-context/card-server-request.d.ts +72 -0
  106. package/dist/types/lib/query-context/compile-dashboard-card-filters.d.ts +7 -0
  107. package/dist/types/lib/query-context/describe-card-execution-snapshot.d.ts +56 -0
  108. package/dist/types/lib/query-context/document-section-card-query.d.ts +45 -0
  109. package/dist/types/lib/query-context/resolve-runtime-card-filters.d.ts +17 -2
  110. package/dist/types/lib/stores/dashboard-store.d.ts +34 -11
  111. package/dist/types/lib/stores/editor-store.d.ts +4 -2
  112. package/dist/types/lib/types/token-types.d.ts +11 -0
  113. package/dist/types/lib/utils/card-type-change.d.ts +30 -0
  114. package/dist/types/lib/utils/comparison-window-caption.d.ts +12 -0
  115. package/dist/types/lib/utils/filter-default-value-utils.d.ts +13 -2
  116. package/dist/types/shared/analytics-protocol/applied-constraints.d.ts +74 -0
  117. package/dist/types/shared/analytics-protocol/contracts.d.ts +3 -0
  118. package/dist/types/shared/analytics-protocol/filter-field-ownership.d.ts +43 -0
  119. package/dist/types/shared/analytics-protocol/index.d.ts +3 -0
  120. package/dist/types/shared/analytics-protocol/matrix-window-contract.d.ts +1 -1
  121. package/dist/types/shared/analytics-protocol/visual-choice.d.ts +75 -0
  122. package/dist/types/shared/assistant-context/index.d.ts +9 -0
  123. package/dist/types/shared/assistant-context/project-context.d.ts +55 -0
  124. package/dist/types/shared/assistant-context/saved-dashboard-context.d.ts +130 -0
  125. package/dist/types/shared/assistant-protocol/add-to-dashboard.d.ts +17 -0
  126. package/dist/types/shared/assistant-protocol/artifact.d.ts +63 -0
  127. package/dist/types/shared/assistant-protocol/availability.d.ts +39 -0
  128. package/dist/types/shared/assistant-protocol/context.d.ts +952 -0
  129. package/dist/types/shared/assistant-protocol/conversation.d.ts +38 -0
  130. package/dist/types/shared/assistant-protocol/index.d.ts +16 -0
  131. package/dist/types/shared/assistant-protocol/limits.d.ts +53 -0
  132. package/dist/types/shared/assistant-protocol/parts.d.ts +140 -0
  133. package/dist/types/shared/assistant-protocol/request.d.ts +77 -0
  134. package/dist/types/shared/assistant-protocol/sources.d.ts +27 -0
  135. package/dist/types/shared/assistant-protocol/token-config.d.ts +32 -0
  136. package/dist/types/shared/assistant-protocol/transcript.d.ts +40 -0
  137. package/dist/types/shared/dashboard-authoring/card-query-request.d.ts +112 -0
  138. package/dist/types/shared/dashboard-authoring/control-execution-contract.d.ts +1794 -0
  139. package/dist/types/shared/dashboard-authoring/index.d.ts +5 -0
  140. package/dist/types/shared/dashboard-authoring/new-card.d.ts +10 -0
  141. package/dist/types/shared/dashboard-authoring/operations/apply-dashboard-operations.d.ts +40 -0
  142. package/dist/types/shared/dashboard-authoring/resolved-primary-date-field-validation.d.ts +16 -0
  143. package/dist/types/shared/format-utils/filter-detail.d.ts +70 -0
  144. package/dist/types/shared/format-utils/filter-value-text.d.ts +15 -0
  145. package/dist/types/shared/format-utils/index.d.ts +3 -0
  146. package/dist/types/shared/format-utils/raw-temporal.d.ts +7 -0
  147. package/dist/types/shared/format-utils/temporal-bucket.d.ts +7 -0
  148. package/dist/types/shared/layouts/frame-layouts.d.ts +23 -0
  149. package/dist/types/shared/layouts/index.d.ts +1 -0
  150. package/package.json +12 -2
  151. package/dist/chunks/calculated-field-identity-BptYhyOP.js +0 -1326
  152. package/dist/chunks/calendar-day-equality-BRjN1S9h.js +0 -383
  153. package/dist/chunks/card-config-utils-BOM1dxCk.js +0 -1150
  154. package/dist/chunks/constants-DNWVy8Y3.js +0 -9
  155. package/dist/chunks/dashboard-json-B1dEQu98.js +0 -65
  156. package/dist/chunks/field-aggregations-CoLzYHeL.js +0 -1229
  157. package/dist/chunks/index-DTcTAGGM.js +0 -4101
  158. package/dist/chunks/matrix-continuation-C4sRcjZU.js +0 -72
  159. package/dist/chunks/matrix-control-sources-DTqcA2_L.js +0 -636
  160. package/dist/chunks/matrix-definition-D9iShKZI.js +0 -87
  161. package/dist/chunks/matrix-member-presentation-Ct8GuxHt.js +0 -209
  162. package/dist/chunks/numeric-presentation-CWu3gunq.js +0 -537
  163. package/dist/chunks/pivot-header-presentation-CHs2GFrM.js +0 -753
  164. package/dist/chunks/pivot-result-lifecycle-DQz_gjGu.js +0 -789
  165. package/dist/chunks/raw-temporal-iMXRK-Qz.js +0 -930
  166. package/dist/chunks/report-preferences-dialog-DXPjteCU.js +0 -1623
  167. package/dist/chunks/save-kO6cIaob.js +0 -34
  168. package/dist/chunks/semantic-format-DiqYeKwU.js +0 -192
  169. package/dist/chunks/switch-DO8a0EfJ.js +0 -25004
  170. package/dist/chunks/temporal-input-presentation-BD7YNUzu.js +0 -195
  171. package/dist/chunks/x-CXDkqdur.js +0 -149
  172. package/dist/types/lib/class-utils.d.ts +0 -2
  173. package/dist/types/lib/document/document-input-runtime.d.ts +0 -26
  174. package/dist/types/lib/utils.d.ts +0 -51
@@ -1,24 +1,31 @@
1
- import { jsx as t, jsxs as s, Fragment as $ } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as i, Fragment as $ } from "react/jsx-runtime";
2
2
  import * as ue from "react";
3
3
  import _t, { useState as F, useEffect as J, useCallback as j, useMemo as oe, useLayoutEffect as Pt, useRef as ge, useContext as pr } from "react";
4
- import { B as U, m as Te, r as dt, L as ie, a2 as Je, $ as pe, u as L, aO as R, a1 as ee, k as Ot, d as ut, c as X, j as fr, aY as qe, aP as gr, P as He, a as Qe, b as Ge, aZ as br, S as $t, a_ as vr, a$ as xr, b0 as yr, b1 as Cr, aK as wr } from "./switch-DO8a0EfJ.js";
5
- import { c8 as ht, b8 as Ue, b9 as Re, bb as Ve, c9 as Nr, ca as Sr, aK as Be, aI as et, cb as Dr, cc as tt, cd as mt, ce as Er, cf as kr, cg as Ar, aW as Ir, ch as Fr, ci as Pr, aE as Se, bO as zt, av as Ke, k as Lr, g as Tr, cj as Ur, c0 as pt, c1 as ft, c2 as gt, c3 as bt, c4 as vt, c5 as xt, c6 as yt, c7 as jt, at as Ct, ck as Rr, cl as Vr, cm as ot, bP as rt, bQ as at, cn as Wt, bR as nt, bv as Y, b_ as Br, bZ as Xe, co as Mr, bt as _r, ba as wt, bc as Nt, cp as Or, b7 as $r, cq as qt, cr as St, cs as zr, bC as jr, u as Wr, ct as qr, z as xe, ao as Le, ak as Ht, al as Ye, cu as Q, A as Qt, aj as Hr, cv as Qr, aq as Gr, R as Gt, cw as Kr, am as Lt, H as Xr, cx as Yr, cy as Zr, cz as Jr, cA as ea, cB as ta, cC as ra, cD as Kt, cE as aa, cF as na, cG as sa, bS as Xt, cH as oa, cI as ze, cJ as ia, cK as la, cL as ca, af as da, ag as ua, X as ha, W as ma, T as pa, Q as fa, N as ga, K as ba, cM as va, cN as xa, cO as ya, cP as Ca, cQ as wa, ad as Na, cR as Sa, cS as Da, a1 as Ea, cT as ka, cU as Aa, cV as Ia } from "./semaphor-ready-indicator-CHu1L-lo.js";
6
- import { L as Dt, S as Yt } from "./save-kO6cIaob.js";
7
- import { c as De, X as Me, C as Zt } from "./x-CXDkqdur.js";
8
- import { t as Fa } from "./validators-DMSH81OM.js";
9
- import "./matrix-operation-contract-BKupLHXL.js";
4
+ import { u as V, v as Tt, s as fr } from "./custom-visual-inputs-BrUOIwln.js";
5
+ import { B as U, l as Le, q as dt, L as ie, j as Ot, c as ut, i as gr, Q as br, P as qe, a as He, b as Qe, S as $t } from "./switch-CvItuC1Q.js";
6
+ import { cq as ht, bt as Ue, bu as Ve, bw as Re, cr as vr, cs as xr, aX as Be, aV as Je, ct as yr, cu as et, cv as mt, _ as tt, X as pe, u as T, cw as Cr, cx as wr, cy as Nr, Z as ee, b6 as Sr, cz as Dr, cA as Er, aR as Se, cf as zt, aI as Ge, l as kr, h as Ar, cB as Ir, ci as pt, cj as ft, ck as gt, cl as bt, cm as vt, cn as xt, co as yt, cp as jt, aG as Ct, cC as Fr, cD as Pr, c7 as ot, c4 as rt, c5 as at, cE as Wt, c6 as nt, bQ as X, cg as Tr, ce as Ke, cF as Lr, bO as Ur, bv as wt, bx as Nt, cG as Vr, bs as Rr, cH as qt, cI as St, cJ as Br, bU as Mr, f as _r, cK as Or, J as xe, aB as Te, ax as Ht, ay as Xe, cL as Q, K as Qt, aw as $r, cM as zr, aD as jr, R as Gt, cN as Wr, az as Lt, N as qr, cO as Hr, cP as Qr, cQ as Gr, cR as Kr, cS as Kt, cT as Xr, cU as Yr, cV as Zr, cW as Xt, cX as Jr, cY as ze, cZ as ea, c_ as ta, c$ as ra, as as aa, at as na, a8 as sa, a7 as oa, a6 as ia, a5 as la, a2 as ca, a0 as da, d0 as ua, d1 as ha, d2 as ma, d3 as pa, d4 as fa, aq as ga, d5 as ba, d6 as va, ae as xa, d7 as ya, d8 as Ca, d9 as wa } from "./semaphor-ready-indicator-ldcwmLoY.js";
7
+ import { L as Dt } from "./layout-grid-Bgzth8vd.js";
8
+ import { c as De, X as Me, C as Yt } from "./x-4f5U2XwU.js";
9
+ import "./index-CuHybtft.js";
10
+ import { t as Na } from "./validators-Ej1DdCXa.js";
11
+ import "./matrix-operation-contract-B8PBF1Gd.js";
12
+ import "./analytics-base-schemas-BFAoRlkU.js";
10
13
  import "zod";
11
14
  import "../value-format-preferences/index.js";
12
- import { S as Pa } from "./selection-reducer-CiDEtmAq.js";
15
+ import { c as Y } from "./class-utils-Df1OVOT1.js";
16
+ import { S as Sa } from "./selection-reducer-vKIb_jS6.js";
13
17
  import { s as je } from "./normalize-dashboard-for-dirty-check-Bk3VYv_q.js";
14
- import { f as La, V as Ta, L as Ua, a as Ra, u as Jt, C as er, F as Va, b as Ba } from "./use-create-flow-overlay-state-Bj63WwHc.js";
18
+ import { f as Da } from "./editor-draft-sync-BN5qYHPF.js";
19
+ import { ae as Ye, af as Ea, k as ka, ag as Aa, ah as Ia, ai as Fa, aj as Pa, ak as Ta } from "./document-dashboard-inputs-BrYYlRVo.js";
15
20
  import "react-dom";
16
- import "./matrix-continuation-C4sRcjZU.js";
17
- import "./field-aggregations-CoLzYHeL.js";
18
- import { v as Tt, s as Ma } from "./card-config-utils-BOM1dxCk.js";
19
- import { l as _a } from "./bookmark-state-B-I9BDD0.js";
20
- import { l as Ut } from "./matrix-formatter-DJCk8Znf.js";
21
- import { d as me, e as Oa, h as $a } from "./index-DTcTAGGM.js";
21
+ import "./pivot-result-lifecycle-8qCDmpKc.js";
22
+ import "./calculated-field-identity-DcBS2NPP.js";
23
+ import { o as La } from "./bookmark-state-k7y5SNGf.js";
24
+ import { S as Zt } from "./save-CfJpQQ68.js";
25
+ import { V as Ua, L as Va, a as Ra, u as Jt, C as er, F as Ba, b as Ma } from "./use-create-flow-overlay-state-RHgzVfcz.js";
26
+ import { o as Ut } from "./matrix-formatter-DQ8avoIQ.js";
27
+ import { t as _a } from "./document-sheet-utils-C1eEldxs.js";
28
+ import { g as me, d as Oa, a as $a } from "./index-CqMiAkay.js";
22
29
  /**
23
30
  * @license lucide-react v0.453.0 - ISC
24
31
  *
@@ -102,13 +109,13 @@ const Qa = De("Newspaper", [
102
109
  ["path", { d: "M10 6h8v4h-8V6Z", key: "smlsk5" }]
103
110
  ]);
104
111
  function Ga() {
105
- return /* @__PURE__ */ t("div", { className: "space-y-1.5 py-1", children: [...Array(5)].map((e, r) => /* @__PURE__ */ s(
112
+ return /* @__PURE__ */ t("div", { className: "space-y-1.5 py-1", children: [...Array(5)].map((e, r) => /* @__PURE__ */ i(
106
113
  "div",
107
114
  {
108
115
  className: "flex animate-pulse items-start gap-3 rounded-xl border border-transparent px-2.5 py-2.5",
109
116
  children: [
110
117
  /* @__PURE__ */ t("div", { className: "mt-0.5 h-4 w-4 flex-shrink-0 rounded bg-muted/60" }),
111
- /* @__PURE__ */ s("div", { className: "flex-1 space-y-1.5", children: [
118
+ /* @__PURE__ */ i("div", { className: "flex-1 space-y-1.5", children: [
112
119
  /* @__PURE__ */ t("div", { className: "h-4 w-3/5 rounded bg-muted/60" }),
113
120
  /* @__PURE__ */ t("div", { className: "h-3 w-4/5 rounded bg-muted/40" })
114
121
  ] })
@@ -123,27 +130,27 @@ function Ka({
123
130
  onSubmit: o,
124
131
  isCreating: a
125
132
  }) {
126
- const n = ht("interactive"), [i, d] = F(""), [c, l] = F("");
133
+ const n = ht("interactive"), [s, d] = F(""), [c, l] = F("");
127
134
  J(() => {
128
135
  e || (d(""), l(""));
129
136
  }, [e]);
130
137
  const u = () => {
131
- i.trim() && o({ title: i, description: c });
138
+ s.trim() && o({ title: s, description: c });
132
139
  }, h = (p) => {
133
140
  r(p);
134
141
  };
135
- return /* @__PURE__ */ t(Ue, { open: e, onOpenChange: h, children: /* @__PURE__ */ s(
136
- Re,
142
+ return /* @__PURE__ */ t(Ue, { open: e, onOpenChange: h, children: /* @__PURE__ */ i(
143
+ Ve,
137
144
  {
138
145
  showCloseButton: !1,
139
146
  className: "flex max-w-lg grid-cols-none flex-col gap-0 overflow-hidden rounded-card border-border/60 p-0 shadow-lg sm:rounded-card",
140
147
  style: n.dialogStyle,
141
148
  children: [
142
- /* @__PURE__ */ s("div", { className: "flex h-10 shrink-0 items-center justify-between gap-2 border-b border-border/60 px-3", children: [
143
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-2", children: [
149
+ /* @__PURE__ */ i("div", { className: "flex h-10 shrink-0 items-center justify-between gap-2 border-b border-border/60 px-3", children: [
150
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-center gap-2", children: [
144
151
  /* @__PURE__ */ t(Dt, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
145
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-baseline gap-2", children: [
146
- /* @__PURE__ */ t(Ve, { className: "truncate text-[13px] font-medium leading-none tracking-normal", children: "New library visual" }),
152
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-baseline gap-2", children: [
153
+ /* @__PURE__ */ t(Re, { className: "truncate text-[13px] font-medium leading-none tracking-normal", children: "New library visual" }),
147
154
  /* @__PURE__ */ t("span", { className: "shrink-0 text-[10px] font-medium uppercase leading-none tracking-[0.08em] text-muted-foreground", children: "Visual" })
148
155
  ] })
149
156
  ] }),
@@ -160,17 +167,17 @@ function Ka({
160
167
  }
161
168
  )
162
169
  ] }),
163
- /* @__PURE__ */ s("div", { className: "space-y-3 px-4 py-3", children: [
170
+ /* @__PURE__ */ i("div", { className: "space-y-3 px-4 py-3", children: [
164
171
  /* @__PURE__ */ t("p", { className: "text-[12px] text-muted-foreground", children: "Create a saved visual that can be reused across dashboards." }),
165
- /* @__PURE__ */ s("div", { className: "space-y-1.5", children: [
166
- /* @__PURE__ */ t(Te, { htmlFor: "visual-title", className: "text-[12px]", children: "Name" }),
172
+ /* @__PURE__ */ i("div", { className: "space-y-1.5", children: [
173
+ /* @__PURE__ */ t(Le, { htmlFor: "visual-title", className: "text-[12px]", children: "Name" }),
167
174
  /* @__PURE__ */ t(
168
175
  dt,
169
176
  {
170
177
  id: "visual-title",
171
178
  size: "sm",
172
179
  placeholder: "Untitled visual",
173
- value: i,
180
+ value: s,
174
181
  onChange: (p) => d(p.target.value),
175
182
  disabled: a,
176
183
  onKeyDown: (p) => {
@@ -179,8 +186,8 @@ function Ka({
179
186
  }
180
187
  )
181
188
  ] }),
182
- /* @__PURE__ */ s("div", { className: "space-y-1.5", children: [
183
- /* @__PURE__ */ t(Te, { htmlFor: "visual-description", className: "text-[12px]", children: "Description" }),
189
+ /* @__PURE__ */ i("div", { className: "space-y-1.5", children: [
190
+ /* @__PURE__ */ t(Le, { htmlFor: "visual-description", className: "text-[12px]", children: "Description" }),
184
191
  /* @__PURE__ */ t(
185
192
  dt,
186
193
  {
@@ -194,7 +201,7 @@ function Ka({
194
201
  )
195
202
  ] })
196
203
  ] }),
197
- /* @__PURE__ */ s("div", { className: "flex shrink-0 justify-end gap-2 border-t border-border/60 px-4 py-2.5", children: [
204
+ /* @__PURE__ */ i("div", { className: "flex shrink-0 justify-end gap-2 border-t border-border/60 px-4 py-2.5", children: [
198
205
  /* @__PURE__ */ t(
199
206
  U,
200
207
  {
@@ -210,8 +217,8 @@ function Ka({
210
217
  {
211
218
  size: "xs",
212
219
  onClick: u,
213
- disabled: !i.trim() || a,
214
- children: a ? /* @__PURE__ */ s($, { children: [
220
+ disabled: !s.trim() || a,
221
+ children: a ? /* @__PURE__ */ i($, { children: [
215
222
  /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }),
216
223
  "Creating..."
217
224
  ] }) : "Create library visual"
@@ -223,13 +230,13 @@ function Ka({
223
230
  ) });
224
231
  }
225
232
  function Xa(e) {
226
- const [r, o] = F(null), [a, n] = F(null), i = Nr();
233
+ const [r, o] = F(null), [a, n] = F(null), s = vr();
227
234
  return J(() => {
228
235
  if (!e || e.trim() === "") {
229
236
  o(null), n(null);
230
237
  return;
231
238
  }
232
- if (!i)
239
+ if (!s)
233
240
  return;
234
241
  (async () => {
235
242
  try {
@@ -259,15 +266,15 @@ function Xa(e) {
259
266
  console.error("Failed to load remote chart store:", l), n(l), o(null);
260
267
  }
261
268
  })();
262
- }, [e, i]), r;
269
+ }, [e, s]), r;
263
270
  }
264
271
  function Ya(e, r) {
265
272
  if (e.length === 0)
266
273
  return "";
267
274
  const o = e.find(
268
275
  (a) => {
269
- var n, i;
270
- return ((n = a.customCardPreferences) == null ? void 0 : n.visualType) === "multiple" || !!((i = a.customCardPreferences) != null && i.dataInputCardIds);
276
+ var n, s;
277
+ return ((n = a.customCardPreferences) == null ? void 0 : n.visualType) === "multiple" || !!((s = a.customCardPreferences) != null && s.dataInputCardIds);
271
278
  }
272
279
  );
273
280
  if (o)
@@ -300,13 +307,13 @@ function Ja(e, r) {
300
307
  if (!e.dataSource) {
301
308
  if (!o)
302
309
  return;
303
- const a = r.selectedDatabaseName || e.lastSelectedDatabase, n = r.selectedSchemaName || e.lastSelectedSchema, i = r.selectedTableName || e.lastSelectedTable;
310
+ const a = r.selectedDatabaseName || e.lastSelectedDatabase, n = r.selectedSchemaName || e.lastSelectedSchema, s = r.selectedTableName || e.lastSelectedTable;
304
311
  return {
305
312
  connectionId: o,
306
313
  connectionType: "",
307
314
  mode: "database",
308
315
  selectedEntities: [],
309
- ...a && n && i ? {
316
+ ...a && n && s ? {
310
317
  dbSelection: {
311
318
  database: a,
312
319
  schema: n,
@@ -325,24 +332,24 @@ function en(e, {
325
332
  cardSql: o,
326
333
  selectedSchemaName: a,
327
334
  selectedDatamodelId: n,
328
- selectedDatabaseName: i,
335
+ selectedDatabaseName: s,
329
336
  selectedTableName: d,
330
337
  selectedConnectionId: c,
331
338
  remoteChartSettings: l,
332
339
  stripConfig: u
333
340
  }) {
334
- const h = r || Sr(e);
341
+ const h = r || xr(e);
335
342
  return {
336
343
  ...e,
337
344
  dataSource: Ja(e, {
338
345
  selectedConnectionId: c,
339
- selectedDatabaseName: i,
346
+ selectedDatabaseName: s,
340
347
  selectedSchemaName: a,
341
348
  selectedTableName: d
342
349
  }),
343
350
  lastSelectedSchema: a,
344
351
  lastSelectedDatamodelId: n,
345
- lastSelectedDatabase: i,
352
+ lastSelectedDatabase: s,
346
353
  lastSelectedTable: d,
347
354
  connectionId: c || e.connectionId,
348
355
  sql: h ? o || e.sql : void 0,
@@ -362,14 +369,14 @@ const tn = (e) => {
362
369
  const { detailTableBackup: r, ...o } = e;
363
370
  return o;
364
371
  };
365
- async function Rt(e, r, o, a, n = "Opening library visual...") {
372
+ async function Vt(e, r, o, a, n = "Opening library visual...") {
366
373
  if (!r || !o)
367
374
  throw new Error("Missing auth token or visual ID");
368
- const i = ["resource-by-id", "visual", o], d = a.getQueryData(i);
375
+ const s = ["resource-by-id", "visual", o], d = a.getQueryData(s);
369
376
  if (d)
370
377
  return console.log("Using cached visual data for:", o), { data: d, fromCache: !0 };
371
378
  console.log("Fetching visual data from network for:", o);
372
- const c = R.loading(n, {
379
+ const c = V.loading(n, {
373
380
  position: "top-center"
374
381
  });
375
382
  try {
@@ -384,9 +391,9 @@ async function Rt(e, r, o, a, n = "Opening library visual...") {
384
391
  if (!l.ok)
385
392
  throw new Error("Failed to load visual");
386
393
  const u = await l.json();
387
- return a.setQueryData(i, u), R.dismiss(c), { data: u, fromCache: !1 };
394
+ return a.setQueryData(s, u), V.dismiss(c), { data: u, fromCache: !1 };
388
395
  } catch (l) {
389
- throw R.dismiss(c), l;
396
+ throw V.dismiss(c), l;
390
397
  }
391
398
  }
392
399
  function tr(e) {
@@ -397,8 +404,8 @@ function tr(e) {
397
404
  throw new Error("Invalid frame object format");
398
405
  }
399
406
  function rn(e, r) {
400
- var i, d;
401
- const o = (e == null ? void 0 : e.frameObject) ?? ((i = e == null ? void 0 : e.visual) == null ? void 0 : i.frameObject);
407
+ var s, d;
408
+ const o = (e == null ? void 0 : e.frameObject) ?? ((s = e == null ? void 0 : e.visual) == null ? void 0 : s.frameObject);
402
409
  if (!o)
403
410
  return !1;
404
411
  const a = tr(o);
@@ -407,7 +414,7 @@ function rn(e, r) {
407
414
  const n = (d = a.cards) == null ? void 0 : d.find(
408
415
  (c) => c.id === a.activeCardId
409
416
  );
410
- return n ? (Ar({
417
+ return n ? (Nr({
411
418
  ...r,
412
419
  frame: a,
413
420
  card: n,
@@ -423,18 +430,18 @@ function an() {
423
430
  ), r = Xa(e);
424
431
  return { getUpdatedFrame: j(() => {
425
432
  var b;
426
- La();
433
+ Da();
427
434
  const {
428
435
  frame: a,
429
436
  card: n,
430
- isDevMode: i,
437
+ isDevMode: s,
431
438
  selectedSchemaName: d,
432
439
  selectedDatamodelId: c,
433
440
  selectedDatabaseName: l,
434
441
  selectedTableName: u,
435
442
  selectedConnectionId: h
436
443
  } = ee.getState(), p = n.sql, m = (b = r == null ? void 0 : r.getState()) == null ? void 0 : b.settings, g = en(n, {
437
- isDevMode: i,
444
+ isDevMode: s,
438
445
  cardSql: p,
439
446
  selectedSchemaName: d,
440
447
  selectedDatamodelId: c,
@@ -454,7 +461,7 @@ function an() {
454
461
  }, [r]) };
455
462
  }
456
463
  function Ee() {
457
- const { authToken: e, tokenProps: r } = Be(), o = et(), a = Dr(), n = tt(), { selectVisual: i } = mt(), {
464
+ const { authToken: e, tokenProps: r } = Be(), o = Je(), a = yr(), n = et(), { selectVisual: s } = mt(), {
458
465
  setFrame: d,
459
466
  setCard: c,
460
467
  setIsDevMode: l,
@@ -471,20 +478,20 @@ function Ee() {
471
478
  setInlineFilterValuesMap: E,
472
479
  setApplyFilters: N,
473
480
  clearEditorContext: y
474
- } = Je(), {
481
+ } = tt(), {
475
482
  setIsDashboardEditing: w,
476
483
  setIsVisualEditing: S,
477
484
  setSelectedFrameId: x,
478
485
  clearSelectedFrameId: B
479
- } = pe(), I = L((O) => O.selectedSheetId), W = L((O) => O.selectedFrameId), P = L((O) => O.dashboard), M = L((O) => O.filterValues), Z = L(
486
+ } = pe(), I = T((O) => O.selectedSheetId), W = T((O) => O.selectedFrameId), P = T((O) => O.dashboard), M = T((O) => O.filterValues), Z = T(
480
487
  (O) => O.inlineFilterValuesMap
481
- ), K = Er((n == null ? void 0 : n.id) || "", {
488
+ ), K = Cr((n == null ? void 0 : n.id) || "", {
482
489
  enabled: !!(n != null && n.id) && !!(e != null && e.accessToken)
483
490
  }), Ce = j(
484
491
  async (O) => {
485
492
  try {
486
- i(O), B(), y();
487
- const { data: te, fromCache: re } = await Rt(
493
+ s(O), B(), y();
494
+ const { data: te, fromCache: re } = await Vt(
488
495
  r.apiServiceUrl,
489
496
  (e == null ? void 0 : e.accessToken) || "",
490
497
  O.id,
@@ -525,7 +532,7 @@ function Ee() {
525
532
  e == null ? void 0 : e.accessToken,
526
533
  r.apiServiceUrl,
527
534
  o,
528
- i,
535
+ s,
529
536
  d,
530
537
  c,
531
538
  w,
@@ -554,24 +561,24 @@ function Ee() {
554
561
  ), ce = j(
555
562
  async (O) => {
556
563
  var re;
557
- const te = (T) => (R.error(T), { success: !1, error: T });
564
+ const te = (L) => (V.error(L), { success: !1, error: L });
558
565
  try {
559
- if (i(O), !I)
566
+ if (s(O), !I)
560
567
  return te("No sheet selected. Please select a sheet first.");
561
- const { data: T, fromCache: ae } = await Rt(
568
+ const { data: L, fromCache: ae } = await Vt(
562
569
  r.apiServiceUrl,
563
570
  (e == null ? void 0 : e.accessToken) || "",
564
571
  O.id,
565
572
  o,
566
573
  "Adding visual to dashboard..."
567
- ), le = (T == null ? void 0 : T.frameObject) ?? ((re = T == null ? void 0 : T.visual) == null ? void 0 : re.frameObject);
574
+ ), le = (L == null ? void 0 : L.frameObject) ?? ((re = L == null ? void 0 : L.visual) == null ? void 0 : re.frameObject);
568
575
  if (!le)
569
576
  return te("Visual has no frame data");
570
577
  const G = tr(le);
571
578
  if (!(G != null && G.cards) || G.cards.length === 0)
572
579
  return te("Visual frame is malformed");
573
580
  const be = {
574
- ...kr(G),
581
+ ...wr(G),
575
582
  visualId: O.id
576
583
  // Link this frame to the library visual
577
584
  };
@@ -580,9 +587,9 @@ function Ee() {
580
587
  be,
581
588
  "end"
582
589
  ), w(!0), x(be.id), { success: !0, fromCache: ae };
583
- } catch (T) {
584
- return console.error("Error adding visual:", T), te(
585
- T instanceof Error ? T.message : "Failed to add visual to dashboard"
590
+ } catch (L) {
591
+ return console.error("Error adding visual:", L), te(
592
+ L instanceof Error ? L.message : "Failed to add visual to dashboard"
586
593
  );
587
594
  }
588
595
  },
@@ -590,7 +597,7 @@ function Ee() {
590
597
  e == null ? void 0 : e.accessToken,
591
598
  r.apiServiceUrl,
592
599
  o,
593
- i,
600
+ s,
594
601
  I,
595
602
  w,
596
603
  x,
@@ -629,17 +636,17 @@ function nn(e, r) {
629
636
  }
630
637
  function sn(e) {
631
638
  const r = (e || "").toLowerCase();
632
- return r.includes("table") ? Ot : r.includes("pie") || r.includes("donut") ? Rr : r.includes("line") ? Vr : r.includes("bar") ? fr : Dt;
639
+ return r.includes("table") ? Ot : r.includes("pie") || r.includes("donut") ? Fr : r.includes("line") ? Pr : r.includes("bar") ? gr : Dt;
633
640
  }
634
641
  function on({ visual: e }) {
635
642
  const r = e.ownership.status === "public" ? "Public" : e.ownership.status === "shared" || e.ownership.sharedCount > 0 ? "Shared" : "Private";
636
643
  return /* @__PURE__ */ t("span", { className: "inline-flex items-center rounded-[4px] border border-border/60 px-1.5 py-px text-[11px] text-muted-foreground", children: r });
637
644
  }
638
- function _s({
645
+ function Hs({
639
646
  open: e,
640
647
  onOpenChange: r
641
648
  }) {
642
- const o = ht("interactive"), [a, n] = F(""), [i, d] = F(/* @__PURE__ */ new Set()), [c, l] = F(!1), [u, h] = F(
649
+ const o = ht("interactive"), [a, n] = F(""), [s, d] = F(/* @__PURE__ */ new Set()), [c, l] = F(!1), [u, h] = F(
643
650
  null
644
651
  ), [p, m] = F(
645
652
  null
@@ -647,7 +654,7 @@ function _s({
647
654
  d(/* @__PURE__ */ new Set()), h(null), m(null), f(!1), k(null);
648
655
  }, N = () => {
649
656
  r(!1), E();
650
- }, { selectVisual: y } = mt(), { handleAddLibraryVisual: w, handleEditLibraryVisual: S } = Ee(), { isConsoleMode: x } = Ir(), {
657
+ }, { selectVisual: y } = mt(), { handleAddLibraryVisual: w, handleEditLibraryVisual: S } = Ee(), { isConsoleMode: x } = Sr(), {
651
658
  resources: B,
652
659
  isLoading: I,
653
660
  isError: W,
@@ -657,7 +664,7 @@ function _s({
657
664
  duplicateResource: K,
658
665
  isCreating: Ce,
659
666
  isDeleting: ce
660
- } = Fr(
667
+ } = Dr(
661
668
  void 0,
662
669
  (C) => {
663
670
  l(!1), C && (y(C), S(C), N());
@@ -666,55 +673,55 @@ function _s({
666
673
  startUpdating: O,
667
674
  stopUpdating: te,
668
675
  isUpdating: re
669
- } = Pr(), T = B, ae = oe(() => {
676
+ } = Er(), L = B, ae = oe(() => {
670
677
  const C = a.trim().toLowerCase();
671
- return C ? T.filter(
672
- (V) => {
678
+ return C ? L.filter(
679
+ (R) => {
673
680
  var z, de, fe;
674
- return ((z = V.title) == null ? void 0 : z.toLowerCase().includes(C)) || ((de = V.description) == null ? void 0 : de.toLowerCase().includes(C)) || ((fe = V.kind) == null ? void 0 : fe.toLowerCase().includes(C));
681
+ return ((z = R.title) == null ? void 0 : z.toLowerCase().includes(C)) || ((de = R.description) == null ? void 0 : de.toLowerCase().includes(C)) || ((fe = R.kind) == null ? void 0 : fe.toLowerCase().includes(C));
675
682
  }
676
- ) : T;
677
- }, [a, T]), le = oe(
678
- () => T.filter(
679
- (C) => i.has(C.id)
683
+ ) : L;
684
+ }, [a, L]), le = oe(
685
+ () => L.filter(
686
+ (C) => s.has(C.id)
680
687
  ),
681
- [i, T]
688
+ [s, L]
682
689
  ), G = le.filter(
683
690
  (C) => C.permissions.canDelete
684
691
  ), be = le.filter(
685
692
  (C) => C.permissions.canShare
686
693
  ), ke = ae.length > 0 && ae.every(
687
- (C) => i.has(C.id)
694
+ (C) => s.has(C.id)
688
695
  ), ve = ae.some(
689
- (C) => i.has(C.id)
696
+ (C) => s.has(C.id)
690
697
  ), we = (C) => {
691
- const V = new Set(i);
692
- C(V), d(V);
698
+ const R = new Set(s);
699
+ C(R), d(R);
693
700
  }, se = (C) => {
694
- we((V) => {
695
- V.has(C) ? V.delete(C) : V.add(C);
701
+ we((R) => {
702
+ R.has(C) ? R.delete(C) : R.add(C);
696
703
  });
697
704
  }, Ae = () => {
698
705
  d((C) => {
699
- const V = new Set(C);
706
+ const R = new Set(C);
700
707
  return ke ? ae.forEach(
701
- (z) => V.delete(z.id)
708
+ (z) => R.delete(z.id)
702
709
  ) : ae.forEach(
703
- (z) => V.add(z.id)
704
- ), V;
710
+ (z) => R.add(z.id)
711
+ ), R;
705
712
  });
706
713
  }, q = async (C) => {
707
714
  (await w(C)).success && N();
708
715
  }, H = async () => {
709
716
  const C = le;
710
717
  if (C.length === 0) return;
711
- let V = !1;
718
+ let R = !1;
712
719
  for (const z of C)
713
720
  if (!(await w(z)).success) {
714
- V = !0;
721
+ R = !0;
715
722
  break;
716
723
  }
717
- V || N();
724
+ R || N();
718
725
  }, he = (C) => {
719
726
  S(C), N();
720
727
  }, Ne = (C) => {
@@ -723,17 +730,17 @@ function _s({
723
730
  });
724
731
  }, _e = () => {
725
732
  if (G.length === 0) {
726
- R.error("Select a visual you can delete");
733
+ V.error("Select a visual you can delete");
727
734
  return;
728
735
  }
729
736
  k(null), f(!0);
730
737
  }, st = async () => {
731
738
  const C = b ? [b] : G;
732
739
  try {
733
- for (const V of C)
734
- await Z(V.id);
735
- d((V) => {
736
- const z = new Set(V);
740
+ for (const R of C)
741
+ await Z(R.id);
742
+ d((R) => {
743
+ const z = new Set(R);
737
744
  return C.forEach(
738
745
  (de) => z.delete(de.id)
739
746
  ), z;
@@ -742,22 +749,22 @@ function _s({
742
749
  }
743
750
  }, Ie = () => {
744
751
  if (le.length !== 1) {
745
- R.error("Select one visual to share");
752
+ V.error("Select one visual to share");
746
753
  return;
747
754
  }
748
755
  const [C] = le;
749
756
  if (!C.permissions.canShare) {
750
- R.error("You do not have permission to share this visual");
757
+ V.error("You do not have permission to share this visual");
751
758
  return;
752
759
  }
753
760
  h(C);
754
761
  }, Fe = ({
755
762
  title: C,
756
- description: V
763
+ description: R
757
764
  }) => {
758
765
  if (!p) return;
759
766
  const z = {};
760
- if (C !== p.title && (z.title = C), (p.description || "") !== V && (z.description = V), Object.keys(z).length === 0) {
767
+ if (C !== p.title && (z.title = C), (p.description || "") !== R && (z.description = R), Object.keys(z).length === 0) {
761
768
  m(null);
762
769
  return;
763
770
  }
@@ -779,19 +786,19 @@ function _s({
779
786
  }, ne = (C) => {
780
787
  r(C), C || E();
781
788
  }, Pe = b ? 1 : G.length;
782
- return /* @__PURE__ */ s($, { children: [
783
- /* @__PURE__ */ t(Ue, { open: e, onOpenChange: ne, children: /* @__PURE__ */ s(
784
- Re,
789
+ return /* @__PURE__ */ i($, { children: [
790
+ /* @__PURE__ */ t(Ue, { open: e, onOpenChange: ne, children: /* @__PURE__ */ i(
791
+ Ve,
785
792
  {
786
793
  showCloseButton: !1,
787
794
  className: "flex max-h-[80vh] w-[min(72rem,calc(100vw-2rem))] max-w-none grid-cols-none flex-col gap-0 overflow-hidden rounded-card border-border/60 p-0 shadow-lg sm:rounded-card",
788
795
  style: o.dialogStyle,
789
796
  children: [
790
- /* @__PURE__ */ s("div", { className: "flex h-10 shrink-0 items-center justify-between gap-2 border-b border-border/60 px-3", children: [
791
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-2", children: [
797
+ /* @__PURE__ */ i("div", { className: "flex h-10 shrink-0 items-center justify-between gap-2 border-b border-border/60 px-3", children: [
798
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-center gap-2", children: [
792
799
  /* @__PURE__ */ t(Ot, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
793
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-baseline gap-2", children: [
794
- /* @__PURE__ */ t(Ve, { className: "truncate text-[13px] font-medium leading-none tracking-normal", children: "Visuals library" }),
800
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-baseline gap-2", children: [
801
+ /* @__PURE__ */ t(Re, { className: "truncate text-[13px] font-medium leading-none tracking-normal", children: "Visuals library" }),
795
802
  /* @__PURE__ */ t("span", { className: "shrink-0 text-[10px] font-medium uppercase leading-none tracking-[0.08em] text-muted-foreground", children: "Add to dashboard" })
796
803
  ] })
797
804
  ] }),
@@ -807,9 +814,9 @@ function _s({
807
814
  }
808
815
  )
809
816
  ] }),
810
- /* @__PURE__ */ s("div", { className: "flex shrink-0 items-center gap-2 border-b border-border/60 px-3 py-2", children: [
811
- /* @__PURE__ */ s("div", { className: "relative min-w-[12rem] flex-1 md:max-w-md", children: [
812
- /* @__PURE__ */ t(Pa, { className: "pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" }),
817
+ /* @__PURE__ */ i("div", { className: "flex shrink-0 items-center gap-2 border-b border-border/60 px-3 py-2", children: [
818
+ /* @__PURE__ */ i("div", { className: "relative min-w-[12rem] flex-1 md:max-w-md", children: [
819
+ /* @__PURE__ */ t(Sa, { className: "pointer-events-none absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" }),
813
820
  /* @__PURE__ */ t(
814
821
  "input",
815
822
  {
@@ -822,7 +829,7 @@ function _s({
822
829
  }
823
830
  )
824
831
  ] }),
825
- /* @__PURE__ */ s(
832
+ /* @__PURE__ */ i(
826
833
  U,
827
834
  {
828
835
  size: "xs",
@@ -836,7 +843,7 @@ function _s({
836
843
  }
837
844
  )
838
845
  ] }),
839
- /* @__PURE__ */ t("div", { className: "min-h-0 flex-1 overflow-auto", children: I ? /* @__PURE__ */ t("div", { className: "p-3", children: /* @__PURE__ */ t(Ga, {}) }) : W ? /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-2 px-4 py-12 text-center", children: /* @__PURE__ */ t("p", { className: "text-[13px] text-destructive", children: "Failed to load visuals" }) }) : ae.length === 0 ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center gap-2 px-4 py-12 text-center", children: [
846
+ /* @__PURE__ */ t("div", { className: "min-h-0 flex-1 overflow-auto", children: I ? /* @__PURE__ */ t("div", { className: "p-3", children: /* @__PURE__ */ t(Ga, {}) }) : W ? /* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-2 px-4 py-12 text-center", children: /* @__PURE__ */ t("p", { className: "text-[13px] text-destructive", children: "Failed to load visuals" }) }) : ae.length === 0 ? /* @__PURE__ */ i("div", { className: "flex flex-col items-center gap-2 px-4 py-12 text-center", children: [
840
847
  /* @__PURE__ */ t(Dt, { className: "h-5 w-5 text-muted-foreground/60" }),
841
848
  /* @__PURE__ */ t("p", { className: "text-[13px] font-medium", children: a ? "No visuals found" : "No visuals yet" }),
842
849
  /* @__PURE__ */ t("p", { className: "text-[12px] text-muted-foreground", children: a ? "Try a different search." : "Create a saved visual to add it here." })
@@ -844,7 +851,7 @@ function _s({
844
851
  ln,
845
852
  {
846
853
  visuals: ae,
847
- selectedIds: i,
854
+ selectedIds: s,
848
855
  allFilteredSelected: ke,
849
856
  someFilteredSelected: ve,
850
857
  onSelectAll: Ae,
@@ -862,10 +869,10 @@ function _s({
862
869
  isConsoleMode: x
863
870
  }
864
871
  ) }),
865
- /* @__PURE__ */ s("div", { className: "flex shrink-0 items-center justify-between gap-2 border-t border-border/60 px-3 py-2", children: [
866
- /* @__PURE__ */ t("div", { className: "flex min-w-0 items-center gap-1.5", children: i.size > 0 && /* @__PURE__ */ s($, { children: [
867
- /* @__PURE__ */ s("span", { className: "text-[12px] text-muted-foreground", children: [
868
- /* @__PURE__ */ t("span", { className: "font-medium tabular-nums text-foreground", children: i.size }),
872
+ /* @__PURE__ */ i("div", { className: "flex shrink-0 items-center justify-between gap-2 border-t border-border/60 px-3 py-2", children: [
873
+ /* @__PURE__ */ t("div", { className: "flex min-w-0 items-center gap-1.5", children: s.size > 0 && /* @__PURE__ */ i($, { children: [
874
+ /* @__PURE__ */ i("span", { className: "text-[12px] text-muted-foreground", children: [
875
+ /* @__PURE__ */ t("span", { className: "font-medium tabular-nums text-foreground", children: s.size }),
869
876
  " ",
870
877
  "selected"
871
878
  ] }),
@@ -878,7 +885,7 @@ function _s({
878
885
  children: "Clear"
879
886
  }
880
887
  ),
881
- /* @__PURE__ */ s(
888
+ /* @__PURE__ */ i(
882
889
  U,
883
890
  {
884
891
  size: "xs",
@@ -891,7 +898,7 @@ function _s({
891
898
  ]
892
899
  }
893
900
  ),
894
- /* @__PURE__ */ s(
901
+ /* @__PURE__ */ i(
895
902
  U,
896
903
  {
897
904
  size: "xs",
@@ -900,14 +907,14 @@ function _s({
900
907
  onClick: _e,
901
908
  disabled: G.length === 0,
902
909
  children: [
903
- /* @__PURE__ */ t(Ke, { className: "h-3.5 w-3.5" }),
910
+ /* @__PURE__ */ t(Ge, { className: "h-3.5 w-3.5" }),
904
911
  "Delete ",
905
- G.length || i.size
912
+ G.length || s.size
906
913
  ]
907
914
  }
908
915
  )
909
916
  ] }) }),
910
- /* @__PURE__ */ s("div", { className: "flex items-center gap-2", children: [
917
+ /* @__PURE__ */ i("div", { className: "flex items-center gap-2", children: [
911
918
  /* @__PURE__ */ t(
912
919
  U,
913
920
  {
@@ -917,15 +924,15 @@ function _s({
917
924
  children: "Close"
918
925
  }
919
926
  ),
920
- /* @__PURE__ */ s(
927
+ /* @__PURE__ */ i(
921
928
  U,
922
929
  {
923
930
  size: "xs",
924
931
  onClick: H,
925
- disabled: i.size === 0,
932
+ disabled: s.size === 0,
926
933
  children: [
927
934
  /* @__PURE__ */ t(ut, { className: "h-3.5 w-3.5" }),
928
- i.size === 0 ? "Add to dashboard" : `Add ${i.size} visual${i.size === 1 ? "" : "s"}`
935
+ s.size === 0 ? "Add to dashboard" : `Add ${s.size} visual${s.size === 1 ? "" : "s"}`
929
936
  ]
930
937
  }
931
938
  )
@@ -944,15 +951,15 @@ function _s({
944
951
  }
945
952
  ),
946
953
  u && /* @__PURE__ */ t(
947
- Lr,
954
+ kr,
948
955
  {
949
956
  resource: u,
950
- resourceType: Tr.VISUAL,
957
+ resourceType: Ar.VISUAL,
951
958
  onClose: () => h(null)
952
959
  }
953
960
  ),
954
961
  p && /* @__PURE__ */ t(
955
- Ur,
962
+ Ir,
956
963
  {
957
964
  open: !!p,
958
965
  resourceLabel: "Visual",
@@ -970,9 +977,9 @@ function _s({
970
977
  onOpenChange: (C) => {
971
978
  !C && ce || (f(C), C || k(null));
972
979
  },
973
- children: /* @__PURE__ */ s(ft, { children: [
974
- /* @__PURE__ */ s(gt, { children: [
975
- /* @__PURE__ */ s(bt, { children: [
980
+ children: /* @__PURE__ */ i(ft, { children: [
981
+ /* @__PURE__ */ i(gt, { children: [
982
+ /* @__PURE__ */ i(bt, { children: [
976
983
  "Delete ",
977
984
  Pe,
978
985
  " visual",
@@ -981,9 +988,9 @@ function _s({
981
988
  ] }),
982
989
  /* @__PURE__ */ t(vt, { children: "This cannot be undone. Visuals already added to dashboards may need to be removed from those dashboards separately." })
983
990
  ] }),
984
- /* @__PURE__ */ s(xt, { children: [
991
+ /* @__PURE__ */ i(xt, { children: [
985
992
  /* @__PURE__ */ t(yt, { disabled: ce, children: "Cancel" }),
986
- /* @__PURE__ */ s(
993
+ /* @__PURE__ */ i(
987
994
  jt,
988
995
  {
989
996
  onClick: (C) => {
@@ -991,7 +998,7 @@ function _s({
991
998
  },
992
999
  disabled: ce || Pe === 0,
993
1000
  children: [
994
- ce ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ t(Ke, { className: "h-3.5 w-3.5" }),
1001
+ ce ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ t(Ge, { className: "h-3.5 w-3.5" }),
995
1002
  ce ? "Deleting..." : "Delete"
996
1003
  ]
997
1004
  }
@@ -1008,7 +1015,7 @@ function ln({
1008
1015
  allFilteredSelected: o,
1009
1016
  someFilteredSelected: a,
1010
1017
  onSelectAll: n,
1011
- onToggleSelection: i,
1018
+ onToggleSelection: s,
1012
1019
  onAddVisual: d,
1013
1020
  onOpenVisual: c,
1014
1021
  onEditDetails: l,
@@ -1019,8 +1026,8 @@ function ln({
1019
1026
  isDeleting: g,
1020
1027
  isConsoleMode: f
1021
1028
  }) {
1022
- return /* @__PURE__ */ s("div", { className: "min-w-[48rem]", children: [
1023
- /* @__PURE__ */ s("div", { className: "grid h-9 grid-cols-[2.5rem_minmax(14rem,1.8fr)_minmax(10rem,1fr)_8rem_7rem_5rem_5.5rem] items-center border-b border-border/60 px-3 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground", children: [
1029
+ return /* @__PURE__ */ i("div", { className: "min-w-[48rem]", children: [
1030
+ /* @__PURE__ */ i("div", { className: "grid h-9 grid-cols-[2.5rem_minmax(14rem,1.8fr)_minmax(10rem,1fr)_8rem_7rem_5rem_5.5rem] items-center border-b border-border/60 px-3 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground", children: [
1024
1031
  /* @__PURE__ */ t(
1025
1032
  Ct,
1026
1033
  {
@@ -1041,7 +1048,7 @@ function ln({
1041
1048
  {
1042
1049
  visual: b,
1043
1050
  selected: r.has(b.id),
1044
- onToggleSelection: i,
1051
+ onToggleSelection: s,
1045
1052
  onAddVisual: d,
1046
1053
  onOpenVisual: c,
1047
1054
  onEditDetails: l,
@@ -1062,7 +1069,7 @@ function cn({
1062
1069
  onToggleSelection: o,
1063
1070
  onAddVisual: a,
1064
1071
  onOpenVisual: n,
1065
- onEditDetails: i,
1072
+ onEditDetails: s,
1066
1073
  onShareVisual: d,
1067
1074
  onDeleteVisual: c,
1068
1075
  onDuplicateVisual: l,
@@ -1074,10 +1081,10 @@ function cn({
1074
1081
  const m = sn(e.kind), g = () => {
1075
1082
  a(e);
1076
1083
  };
1077
- return /* @__PURE__ */ s(
1084
+ return /* @__PURE__ */ i(
1078
1085
  "div",
1079
1086
  {
1080
- className: X(
1087
+ className: Y(
1081
1088
  "group grid min-h-12 grid-cols-[2.5rem_minmax(14rem,1.8fr)_minmax(10rem,1fr)_8rem_7rem_5rem_5.5rem] items-center border-b border-border/50 px-3 text-[13px] hover:bg-muted/50",
1082
1089
  r && "bg-muted/70"
1083
1090
  ),
@@ -1090,7 +1097,7 @@ function cn({
1090
1097
  "aria-label": `Select ${e.title || "visual"}`
1091
1098
  }
1092
1099
  ) }),
1093
- /* @__PURE__ */ s(
1100
+ /* @__PURE__ */ i(
1094
1101
  "button",
1095
1102
  {
1096
1103
  type: "button",
@@ -1099,7 +1106,7 @@ function cn({
1099
1106
  "aria-label": `Add ${e.title || "visual"} to dashboard`,
1100
1107
  children: [
1101
1108
  /* @__PURE__ */ t(m, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
1102
- /* @__PURE__ */ s("div", { className: "min-w-0", children: [
1109
+ /* @__PURE__ */ i("div", { className: "min-w-0", children: [
1103
1110
  /* @__PURE__ */ t(
1104
1111
  "div",
1105
1112
  {
@@ -1120,7 +1127,7 @@ function cn({
1120
1127
  ]
1121
1128
  }
1122
1129
  ),
1123
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-2", children: [
1130
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-center gap-2", children: [
1124
1131
  /* @__PURE__ */ t("div", { className: "flex h-5 w-5 shrink-0 items-center justify-center rounded-full bg-muted text-[9px] font-medium text-muted-foreground", children: nn(e, p) }),
1125
1132
  /* @__PURE__ */ t("span", { className: "truncate text-muted-foreground", children: Et(e, p) })
1126
1133
  ] }),
@@ -1132,7 +1139,7 @@ function cn({
1132
1139
  {
1133
1140
  visual: e,
1134
1141
  onOpenVisual: n,
1135
- onEditDetails: i,
1142
+ onEditDetails: s,
1136
1143
  onShareVisual: d,
1137
1144
  onDeleteVisual: c,
1138
1145
  onDuplicateVisual: l,
@@ -1151,12 +1158,12 @@ function dn({
1151
1158
  onEditDetails: o,
1152
1159
  onShareVisual: a,
1153
1160
  onDeleteVisual: n,
1154
- onDuplicateVisual: i,
1161
+ onDuplicateVisual: s,
1155
1162
  duplicatingId: d,
1156
1163
  isDeleting: c,
1157
1164
  isConsoleMode: l
1158
1165
  }) {
1159
- return /* @__PURE__ */ s(
1166
+ return /* @__PURE__ */ i(
1160
1167
  "div",
1161
1168
  {
1162
1169
  className: "flex items-center justify-end gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 group-focus-within:opacity-100",
@@ -1173,7 +1180,7 @@ function dn({
1173
1180
  children: /* @__PURE__ */ t(ot, { className: "h-3.5 w-3.5" })
1174
1181
  }
1175
1182
  ),
1176
- /* @__PURE__ */ s(rt, { modal: !1, children: [
1183
+ /* @__PURE__ */ i(rt, { modal: !1, children: [
1177
1184
  /* @__PURE__ */ t(at, { asChild: !0, children: /* @__PURE__ */ t(
1178
1185
  U,
1179
1186
  {
@@ -1184,58 +1191,58 @@ function dn({
1184
1191
  children: /* @__PURE__ */ t(Wt, { className: "h-3.5 w-3.5" })
1185
1192
  }
1186
1193
  ) }),
1187
- /* @__PURE__ */ s(
1194
+ /* @__PURE__ */ i(
1188
1195
  nt,
1189
1196
  {
1190
1197
  align: "end",
1191
1198
  className: "z-[60] w-44 rounded-[6px] border-border/60 p-1 shadow-sm",
1192
1199
  children: [
1193
- /* @__PURE__ */ s(Y, { onClick: () => r(e), children: [
1200
+ /* @__PURE__ */ i(X, { onClick: () => r(e), children: [
1194
1201
  /* @__PURE__ */ t(ot, { className: "h-3.5 w-3.5" }),
1195
1202
  "Edit visual"
1196
1203
  ] }),
1197
- /* @__PURE__ */ s(
1198
- Y,
1204
+ /* @__PURE__ */ i(
1205
+ X,
1199
1206
  {
1200
- onClick: () => i(e.id),
1207
+ onClick: () => s(e.id),
1201
1208
  disabled: d === e.id,
1202
1209
  children: [
1203
- d === e.id ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ t(Br, { className: "h-3.5 w-3.5" }),
1210
+ d === e.id ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ t(Tr, { className: "h-3.5 w-3.5" }),
1204
1211
  d === e.id ? "Duplicating..." : "Duplicate"
1205
1212
  ]
1206
1213
  }
1207
1214
  ),
1208
- e.permissions.canEdit && /* @__PURE__ */ s(Y, { onClick: () => o(e), children: [
1215
+ e.permissions.canEdit && /* @__PURE__ */ i(X, { onClick: () => o(e), children: [
1209
1216
  /* @__PURE__ */ t(ot, { className: "h-3.5 w-3.5" }),
1210
1217
  "Edit details"
1211
1218
  ] }),
1212
- e.permissions.canShare && /* @__PURE__ */ s(Y, { onClick: () => a(e), children: [
1219
+ e.permissions.canShare && /* @__PURE__ */ i(X, { onClick: () => a(e), children: [
1213
1220
  /* @__PURE__ */ t(zt, { className: "h-3.5 w-3.5" }),
1214
1221
  "Share"
1215
1222
  ] }),
1216
- e.permissions.canDelete && /* @__PURE__ */ s($, { children: [
1217
- /* @__PURE__ */ t(Xe, {}),
1218
- /* @__PURE__ */ s(
1219
- Y,
1223
+ e.permissions.canDelete && /* @__PURE__ */ i($, { children: [
1224
+ /* @__PURE__ */ t(Ke, {}),
1225
+ /* @__PURE__ */ i(
1226
+ X,
1220
1227
  {
1221
1228
  className: "text-destructive focus:bg-destructive/10 focus:text-destructive",
1222
1229
  onClick: () => n(e),
1223
1230
  disabled: c,
1224
1231
  children: [
1225
- /* @__PURE__ */ t(Ke, { className: "h-3.5 w-3.5" }),
1232
+ /* @__PURE__ */ t(Ge, { className: "h-3.5 w-3.5" }),
1226
1233
  c ? "Deleting..." : "Delete"
1227
1234
  ]
1228
1235
  }
1229
1236
  )
1230
1237
  ] }),
1231
- /* @__PURE__ */ t(Xe, {}),
1232
- /* @__PURE__ */ s("div", { className: "space-y-1 px-2 py-1.5 text-[11px] text-muted-foreground", children: [
1233
- ar(e, l) && /* @__PURE__ */ s("div", { className: "flex items-center gap-1.5", children: [
1234
- /* @__PURE__ */ t(Mr, { className: "h-3 w-3" }),
1238
+ /* @__PURE__ */ t(Ke, {}),
1239
+ /* @__PURE__ */ i("div", { className: "space-y-1 px-2 py-1.5 text-[11px] text-muted-foreground", children: [
1240
+ ar(e, l) && /* @__PURE__ */ i("div", { className: "flex items-center gap-1.5", children: [
1241
+ /* @__PURE__ */ t(Lr, { className: "h-3 w-3" }),
1235
1242
  /* @__PURE__ */ t("span", { className: "truncate", children: Et(e, l) })
1236
1243
  ] }),
1237
- /* @__PURE__ */ s("div", { className: "flex items-center gap-1.5", children: [
1238
- /* @__PURE__ */ t(_r, { className: "h-3 w-3" }),
1244
+ /* @__PURE__ */ i("div", { className: "flex items-center gap-1.5", children: [
1245
+ /* @__PURE__ */ t(Ur, { className: "h-3 w-3" }),
1239
1246
  /* @__PURE__ */ t("span", { children: rr(e.updatedAt) })
1240
1247
  ] })
1241
1248
  ] })
@@ -1247,17 +1254,17 @@ function dn({
1247
1254
  }
1248
1255
  );
1249
1256
  }
1250
- function Os(e, r, o = !1) {
1251
- const a = L((u) => u.dashboard), n = L(
1257
+ function Qs(e, r, o = !1) {
1258
+ const a = T((u) => u.dashboard), n = T(
1252
1259
  (u) => u.isDashboardEditing
1253
- ), i = L(
1260
+ ), s = T(
1254
1261
  (u) => u.onDashboardLifecycleEvent
1255
1262
  ), d = j(() => {
1256
- const u = L.getState().dashboard;
1263
+ const u = T.getState().dashboard;
1257
1264
  return r || !e || !u || u.id !== e.id ? !1 : je(u) !== je(e);
1258
1265
  }, [e, r]);
1259
- Pt(() => (L.setState({ checkUnsavedDashboardChanges: d }), () => {
1260
- L.getState().checkUnsavedDashboardChanges === d && L.setState({ checkUnsavedDashboardChanges: null });
1266
+ Pt(() => (T.setState({ checkUnsavedDashboardChanges: d }), () => {
1267
+ T.getState().checkUnsavedDashboardChanges === d && T.setState({ checkUnsavedDashboardChanges: null });
1261
1268
  }), [d]);
1262
1269
  const c = oe(() => !o || r || !a || n && (!e || a.id !== e.id) ? null : {
1263
1270
  dashboardId: a.id,
@@ -1270,21 +1277,21 @@ function Os(e, r, o = !1) {
1270
1277
  a
1271
1278
  ]), l = ge(null);
1272
1279
  return Pt(() => {
1273
- if (!i || !c) {
1280
+ if (!s || !c) {
1274
1281
  l.current = null;
1275
1282
  return;
1276
1283
  }
1277
1284
  const u = l.current;
1278
- (u == null ? void 0 : u.callback) === i && u.dashboardId === c.dashboardId && u.dirty === c.dirty || (l.current = {
1279
- callback: i,
1285
+ (u == null ? void 0 : u.callback) === s && u.dashboardId === c.dashboardId && u.dirty === c.dirty || (l.current = {
1286
+ callback: s,
1280
1287
  dashboardId: c.dashboardId,
1281
1288
  dirty: c.dirty
1282
- }, i({
1289
+ }, s({
1283
1290
  type: "dashboard:dirty-state",
1284
1291
  dashboardId: c.dashboardId,
1285
1292
  payload: { dirty: c.dirty }
1286
1293
  }));
1287
- }, [c, i]), d;
1294
+ }, [c, s]), d;
1288
1295
  }
1289
1296
  function un({
1290
1297
  open: e,
@@ -1292,7 +1299,7 @@ function un({
1292
1299
  isLibraryVisual: o,
1293
1300
  currentVisualName: a,
1294
1301
  isSaving: n = !1,
1295
- destinationMode: i = "both",
1302
+ destinationMode: s = "both",
1296
1303
  onConfirm: d
1297
1304
  }) {
1298
1305
  const [c, l] = F(
@@ -1303,13 +1310,13 @@ function un({
1303
1310
  o && a ? `Copy of ${a}` : a || ""
1304
1311
  ), h(""));
1305
1312
  }, [e, o, a]);
1306
- const p = !!c.trim(), m = i === "local" ? {
1313
+ const p = !!c.trim(), m = s === "local" ? {
1307
1314
  saveToLibrary: !1,
1308
1315
  saveToCurrentDashboard: !0,
1309
1316
  badgeType: "local",
1310
1317
  description: "Creates a local copy on the current dashboard.",
1311
1318
  actionLabel: "Add to Dashboard (Local)"
1312
- } : i === "library" ? {
1319
+ } : s === "library" ? {
1313
1320
  saveToLibrary: !0,
1314
1321
  saveToCurrentDashboard: !1,
1315
1322
  badgeType: "library",
@@ -1329,12 +1336,12 @@ function un({
1329
1336
  saveToCurrentDashboard: m.saveToCurrentDashboard
1330
1337
  });
1331
1338
  };
1332
- return /* @__PURE__ */ t(Ue, { open: e, onOpenChange: r, children: /* @__PURE__ */ s(Re, { className: "sm:max-w-[500px]", children: [
1333
- /* @__PURE__ */ s(wt, { children: [
1334
- /* @__PURE__ */ s(Ve, { className: "flex items-center gap-2", children: [
1339
+ return /* @__PURE__ */ t(Ue, { open: e, onOpenChange: r, children: /* @__PURE__ */ i(Ve, { className: "sm:max-w-[500px]", children: [
1340
+ /* @__PURE__ */ i(wt, { children: [
1341
+ /* @__PURE__ */ i(Re, { className: "flex items-center gap-2", children: [
1335
1342
  /* @__PURE__ */ t("span", { children: "Save Visual As" }),
1336
1343
  m.badgeType !== "local" && /* @__PURE__ */ t(
1337
- Ta,
1344
+ Ua,
1338
1345
  {
1339
1346
  type: m.badgeType,
1340
1347
  showLabel: !0,
@@ -1344,9 +1351,9 @@ function un({
1344
1351
  ] }),
1345
1352
  /* @__PURE__ */ t(Nt, { children: m.description })
1346
1353
  ] }),
1347
- /* @__PURE__ */ s("div", { className: "grid gap-4 py-4", children: [
1348
- /* @__PURE__ */ s("div", { className: "grid gap-2", children: [
1349
- /* @__PURE__ */ t(Te, { htmlFor: "name", children: "Name" }),
1354
+ /* @__PURE__ */ i("div", { className: "grid gap-4 py-4", children: [
1355
+ /* @__PURE__ */ i("div", { className: "grid gap-2", children: [
1356
+ /* @__PURE__ */ t(Le, { htmlFor: "name", children: "Name" }),
1350
1357
  /* @__PURE__ */ t(
1351
1358
  dt,
1352
1359
  {
@@ -1358,10 +1365,10 @@ function un({
1358
1365
  }
1359
1366
  )
1360
1367
  ] }),
1361
- /* @__PURE__ */ s("div", { className: "grid gap-2", children: [
1362
- /* @__PURE__ */ t(Te, { htmlFor: "description", children: "Description (optional)" }),
1368
+ /* @__PURE__ */ i("div", { className: "grid gap-2", children: [
1369
+ /* @__PURE__ */ t(Le, { htmlFor: "description", children: "Description (optional)" }),
1363
1370
  /* @__PURE__ */ t(
1364
- Or,
1371
+ Vr,
1365
1372
  {
1366
1373
  id: "description",
1367
1374
  value: u,
@@ -1373,7 +1380,7 @@ function un({
1373
1380
  )
1374
1381
  ] })
1375
1382
  ] }),
1376
- /* @__PURE__ */ s($r, { children: [
1383
+ /* @__PURE__ */ i(Rr, { children: [
1377
1384
  /* @__PURE__ */ t(
1378
1385
  U,
1379
1386
  {
@@ -1383,7 +1390,7 @@ function un({
1383
1390
  children: "Cancel"
1384
1391
  }
1385
1392
  ),
1386
- /* @__PURE__ */ s(U, { onClick: g, disabled: !p || n, children: [
1393
+ /* @__PURE__ */ i(U, { onClick: g, disabled: !p || n, children: [
1387
1394
  n && /* @__PURE__ */ t(ie, { className: "mr-2 h-4 w-4 animate-spin" }),
1388
1395
  m.actionLabel
1389
1396
  ] })
@@ -1393,20 +1400,20 @@ function un({
1393
1400
  function kt(e) {
1394
1401
  var r;
1395
1402
  for (const o of e.cards)
1396
- if (o.type === "matrixTable" && !Fa.safeParse((r = o.config) == null ? void 0 : r.matrix).success)
1397
- return R.error("Matrix requires at least one row field, one metric, and valid settings."), !1;
1403
+ if (o.type === "matrixTable" && !Na.safeParse((r = o.config) == null ? void 0 : r.matrix).success)
1404
+ return V.error("Matrix requires at least one row field, one metric, and valid settings."), !1;
1398
1405
  return !0;
1399
1406
  }
1400
1407
  function it({
1401
1408
  className: e,
1402
1409
  variant: r = "outline"
1403
1410
  }) {
1404
- const o = ee((i) => i.onSave), { getUpdatedFrame: a } = Ee();
1411
+ const o = ee((s) => s.onSave), { getUpdatedFrame: a } = Ee();
1405
1412
  function n() {
1406
- const i = a();
1407
- kt(i) && (o == null || o(i));
1413
+ const s = a();
1414
+ kt(s) && (o == null || o(s));
1408
1415
  }
1409
- return /* @__PURE__ */ s(
1416
+ return /* @__PURE__ */ i(
1410
1417
  U,
1411
1418
  {
1412
1419
  onClick: n,
@@ -1424,7 +1431,7 @@ function hn({
1424
1431
  className: e,
1425
1432
  variant: r = "default"
1426
1433
  }) {
1427
- const o = et(), [a, n] = F(!1), { setIsVisualEditing: i } = pe(), { getUpdatedFrame: d } = Ee(), c = tt(), l = ee((p) => p.frame), u = qt();
1434
+ const o = Je(), [a, n] = F(!1), { setIsVisualEditing: s } = pe(), { getUpdatedFrame: d } = Ee(), c = et(), l = ee((p) => p.frame), u = qt();
1428
1435
  return /* @__PURE__ */ t(
1429
1436
  U,
1430
1437
  {
@@ -1434,7 +1441,7 @@ function hn({
1434
1441
  return;
1435
1442
  const m = (l == null ? void 0 : l.visualId) || (c == null ? void 0 : c.id);
1436
1443
  if (!m) {
1437
- R.error("No visual to save");
1444
+ V.error("No visual to save");
1438
1445
  return;
1439
1446
  }
1440
1447
  n(!0), u.mutate(
@@ -1446,13 +1453,13 @@ function hn({
1446
1453
  },
1447
1454
  {
1448
1455
  onSuccess: () => {
1449
- n(!1), R.success("Visual updated successfully"), o.invalidateQueries({
1456
+ n(!1), V.success("Visual updated successfully"), o.invalidateQueries({
1450
1457
  queryKey: ["resource-by-id", "visual", m],
1451
1458
  exact: !0
1452
1459
  });
1453
1460
  },
1454
1461
  onError: () => {
1455
- n(!1), R.error("Failed to update visual");
1462
+ n(!1), V.error("Failed to update visual");
1456
1463
  }
1457
1464
  }
1458
1465
  );
@@ -1460,11 +1467,11 @@ function hn({
1460
1467
  className: e,
1461
1468
  size: "xs",
1462
1469
  variant: r,
1463
- children: a ? /* @__PURE__ */ s($, { children: [
1470
+ children: a ? /* @__PURE__ */ i($, { children: [
1464
1471
  /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }),
1465
1472
  "Saving"
1466
- ] }) : /* @__PURE__ */ s($, { children: [
1467
- /* @__PURE__ */ t(Yt, { className: "h-3.5 w-3.5" }),
1473
+ ] }) : /* @__PURE__ */ i($, { children: [
1474
+ /* @__PURE__ */ t(Zt, { className: "h-3.5 w-3.5" }),
1468
1475
  "Save to Library"
1469
1476
  ] })
1470
1477
  }
@@ -1473,18 +1480,18 @@ function hn({
1473
1480
  function mn({
1474
1481
  className: e
1475
1482
  }) {
1476
- const r = et(), [o, a] = F(!1), n = tt(), i = ee((f) => f.frame), d = L((f) => f.selectedSheetId), c = L((f) => f.dashboard), { updateFrame: l, setIsVisualEditing: u } = pe(), { getUpdatedFrame: h } = Ee(), p = qt(), m = St();
1483
+ const r = Je(), [o, a] = F(!1), n = et(), s = ee((f) => f.frame), d = T((f) => f.selectedSheetId), c = T((f) => f.dashboard), { updateFrame: l, setIsVisualEditing: u } = pe(), { getUpdatedFrame: h } = Ee(), p = qt(), m = St();
1477
1484
  return /* @__PURE__ */ t(
1478
1485
  U,
1479
1486
  {
1480
1487
  onClick: async () => {
1481
1488
  if (!d) {
1482
- R.error("No sheet selected");
1489
+ V.error("No sheet selected");
1483
1490
  return;
1484
1491
  }
1485
- const f = (i == null ? void 0 : i.visualId) || (n == null ? void 0 : n.id);
1492
+ const f = (s == null ? void 0 : s.visualId) || (n == null ? void 0 : n.id);
1486
1493
  if (!f) {
1487
- R.error("No visual to update");
1494
+ V.error("No visual to update");
1488
1495
  return;
1489
1496
  }
1490
1497
  a(!0);
@@ -1498,7 +1505,7 @@ function mn({
1498
1505
  ...b,
1499
1506
  visualId: f
1500
1507
  // Keep the link to library visual
1501
- }, v = qe(c, k.id), D = await m(k, {
1508
+ }, v = Ye(c, k.id), D = await m(k, {
1502
1509
  previousFrame: v
1503
1510
  });
1504
1511
  await p.mutateAsync({
@@ -1508,11 +1515,11 @@ function mn({
1508
1515
  }
1509
1516
  }), l(d, k, {
1510
1517
  semanticExecutionPayload: D
1511
- }), r.invalidateQueries({ queryKey: ["visuals"] }), r.invalidateQueries({ queryKey: ["visual", f] }), R.success("Saved to library and applied locally"), setTimeout(() => {
1518
+ }), r.invalidateQueries({ queryKey: ["visuals"] }), r.invalidateQueries({ queryKey: ["visual", f] }), V.success("Saved to library and applied locally"), setTimeout(() => {
1512
1519
  u(!1);
1513
1520
  }, 300);
1514
1521
  } catch (b) {
1515
- console.error("Failed to save and apply:", b), R.error(
1522
+ console.error("Failed to save and apply:", b), V.error(
1516
1523
  b instanceof Error ? b.message : "Failed to save and apply changes"
1517
1524
  );
1518
1525
  } finally {
@@ -1523,26 +1530,26 @@ function mn({
1523
1530
  size: "xs",
1524
1531
  variant: "default",
1525
1532
  disabled: o,
1526
- children: o ? /* @__PURE__ */ s($, { children: [
1533
+ children: o ? /* @__PURE__ */ i($, { children: [
1527
1534
  /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin" }),
1528
1535
  "Saving..."
1529
- ] }) : /* @__PURE__ */ s($, { children: [
1530
- /* @__PURE__ */ t(Yt, { className: "h-3.5 w-3.5" }),
1536
+ ] }) : /* @__PURE__ */ i($, { children: [
1537
+ /* @__PURE__ */ t(Zt, { className: "h-3.5 w-3.5" }),
1531
1538
  "Save & Apply"
1532
1539
  ] })
1533
1540
  }
1534
1541
  );
1535
1542
  }
1536
1543
  function lt({ className: e }) {
1537
- const { setTempQueryData: r, setSqlGen: o } = Je(), a = et(), n = ee((c) => c.tempQueryData), i = ee((c) => c.onClose);
1544
+ const { setTempQueryData: r, setSqlGen: o } = tt(), a = Je(), n = ee((c) => c.tempQueryData), s = ee((c) => c.onClose);
1538
1545
  function d() {
1539
1546
  if (n) {
1540
1547
  const { queryKey: c, queryData: l } = n;
1541
1548
  c && l && a.setQueryData(c, l);
1542
1549
  }
1543
- o({}), i == null || i();
1550
+ o({}), s == null || s();
1544
1551
  }
1545
- return /* @__PURE__ */ s(
1552
+ return /* @__PURE__ */ i(
1546
1553
  U,
1547
1554
  {
1548
1555
  onClick: d,
@@ -1557,10 +1564,10 @@ function lt({ className: e }) {
1557
1564
  );
1558
1565
  }
1559
1566
  function pn() {
1560
- const [e, r] = F(!1), [o, a] = F(!1), [n, i] = F(null), [d, c] = F(null), l = ee((S) => S.frame), u = ee((S) => S.card), h = tt(), p = L((S) => S.selectedSheetId), m = L((S) => S.dashboard), { getUpdatedFrame: g } = Ee(), { selectVisual: f } = mt(), { addFrame: b, setSelectedFrameId: k, setIsVisualEditing: v } = pe(), D = St(), E = !!(l != null && l.visualId), N = (() => {
1567
+ const [e, r] = F(!1), [o, a] = F(!1), [n, s] = F(null), [d, c] = F(null), l = ee((S) => S.frame), u = ee((S) => S.card), h = et(), p = T((S) => S.selectedSheetId), m = T((S) => S.dashboard), { getUpdatedFrame: g } = Ee(), { selectVisual: f } = mt(), { addFrame: b, setSelectedFrameId: k, setIsVisualEditing: v } = pe(), D = St(), E = !!(l != null && l.visualId), N = (() => {
1561
1568
  var S, x;
1562
1569
  return ((S = l == null ? void 0 : l.cards) == null ? void 0 : S.length) === 1 && ((x = l.cards[0]) != null && x.title) ? l.cards[0].title : h != null && h.title ? h.title : (u == null ? void 0 : u.title) || "Untitled Visual";
1563
- })(), y = zr((S) => {
1570
+ })(), y = Br((S) => {
1564
1571
  S != null && S.id && (f(S), o && n && d && p && (async () => {
1565
1572
  try {
1566
1573
  const x = {
@@ -1570,14 +1577,14 @@ function pn() {
1570
1577
  // Link to the newly created library visual
1571
1578
  };
1572
1579
  b(p, x, {
1573
- position: "end",
1580
+ placement: "end",
1574
1581
  semanticExecutionPayload: d
1575
- }), k(x.id), a(!1), i(null), c(null), v(!1);
1582
+ }), k(x.id), a(!1), s(null), c(null), v(!1);
1576
1583
  } catch (x) {
1577
1584
  console.error(
1578
1585
  "Failed to promote semantic metadata for saved visual:",
1579
1586
  x
1580
- ), R.error(
1587
+ ), V.error(
1581
1588
  x instanceof Error ? x.message : "Failed to prepare semantic metadata for the saved visual"
1582
1589
  );
1583
1590
  }
@@ -1588,7 +1595,7 @@ function pn() {
1588
1595
  setSaveAsDialogOpen: r,
1589
1596
  handleSaveAs: async (S) => {
1590
1597
  if (!p) {
1591
- R.error("No sheet selected");
1598
+ V.error("No sheet selected");
1592
1599
  return;
1593
1600
  }
1594
1601
  const x = g(), I = x.cards.length === 1 ? {
@@ -1604,18 +1611,18 @@ function pn() {
1604
1611
  if (S.saveToCurrentDashboard)
1605
1612
  try {
1606
1613
  W = await D(I, {
1607
- previousFrame: qe(m, I.id)
1614
+ previousFrame: Ye(m, I.id)
1608
1615
  });
1609
1616
  } catch (M) {
1610
1617
  console.error(
1611
1618
  "Failed to prepare semantic metadata before saving visual:",
1612
1619
  M
1613
- ), R.error(
1620
+ ), V.error(
1614
1621
  M instanceof Error ? M.message : "Failed to prepare semantic metadata for the saved visual"
1615
1622
  );
1616
1623
  return;
1617
1624
  }
1618
- a(S.saveToCurrentDashboard), i(I), c(W);
1625
+ a(S.saveToCurrentDashboard), s(I), c(W);
1619
1626
  const P = {
1620
1627
  title: S.name,
1621
1628
  description: S.description,
@@ -1634,14 +1641,14 @@ function pn() {
1634
1641
  };
1635
1642
  try {
1636
1643
  const P = await D(I, {
1637
- previousFrame: qe(m, I.id)
1644
+ previousFrame: Ye(m, I.id)
1638
1645
  });
1639
1646
  b(p, W, {
1640
- position: "end",
1647
+ placement: "end",
1641
1648
  semanticExecutionPayload: P
1642
- }), k(W.id), R.success("Visual saved to dashboard"), r(!1), v(!1);
1649
+ }), k(W.id), V.success("Visual saved to dashboard"), r(!1), v(!1);
1643
1650
  } catch (P) {
1644
- console.error("Failed to save visual to dashboard:", P), R.error(
1651
+ console.error("Failed to save visual to dashboard:", P), V.error(
1645
1652
  P instanceof Error ? P.message : "Failed to prepare semantic metadata for the visual"
1646
1653
  );
1647
1654
  }
@@ -1652,8 +1659,8 @@ function pn() {
1652
1659
  isSaving: y.isPending
1653
1660
  };
1654
1661
  }
1655
- function $s(e = {}) {
1656
- const { isInspectionMode: r } = jr(), o = ee((P) => P.frame), a = ee((P) => P.editorContext), n = Wr((P) => P.selectedVisual), i = L((P) => P.selectedFrameId), d = L((P) => P.selectedSheetId), c = L((P) => P.dashboard), { setIsVisualEditing: l, updateFrame: u } = pe(), [h, p] = F(!1), [m, g] = F("both"), f = St(), b = (a == null ? void 0 : a.type) === "documentSection", k = !!(o != null && o.visualId || n != null && n.id), v = !!(o != null && o.visualId && i), D = k && !v, {
1662
+ function Gs(e = {}) {
1663
+ const { isInspectionMode: r } = Mr(), o = ee((P) => P.frame), a = ee((P) => P.editorContext), n = _r((P) => P.selectedVisual), s = T((P) => P.selectedFrameId), d = T((P) => P.selectedSheetId), c = T((P) => P.dashboard), { setIsVisualEditing: l, updateFrame: u } = pe(), [h, p] = F(!1), [m, g] = F("both"), f = St(), b = (a == null ? void 0 : a.type) === "documentSection", k = !!(o != null && o.visualId || n != null && n.id), v = !!(o != null && o.visualId && s), D = k && !v, {
1657
1664
  saveAsDialogOpen: E,
1658
1665
  setSaveAsDialogOpen: N,
1659
1666
  handleSaveAs: y,
@@ -1662,7 +1669,7 @@ function $s(e = {}) {
1662
1669
  isSaving: x
1663
1670
  } = pn(), { getUpdatedFrame: B } = Ee();
1664
1671
  if (r)
1665
- return /* @__PURE__ */ s($, { children: [
1672
+ return /* @__PURE__ */ i($, { children: [
1666
1673
  /* @__PURE__ */ t(
1667
1674
  it,
1668
1675
  {
@@ -1673,13 +1680,13 @@ function $s(e = {}) {
1673
1680
  /* @__PURE__ */ t(lt, {})
1674
1681
  ] });
1675
1682
  if (b)
1676
- return /* @__PURE__ */ s($, { children: [
1683
+ return /* @__PURE__ */ i($, { children: [
1677
1684
  /* @__PURE__ */ t(it, { className: "rounded-control", variant: "default" }),
1678
1685
  /* @__PURE__ */ t(lt, {})
1679
1686
  ] });
1680
1687
  const I = async () => {
1681
1688
  if (!d) {
1682
- R.error("No sheet selected");
1689
+ V.error("No sheet selected");
1683
1690
  return;
1684
1691
  }
1685
1692
  if (h) return;
@@ -1687,7 +1694,7 @@ function $s(e = {}) {
1687
1694
  const M = {
1688
1695
  ...B(),
1689
1696
  visualId: void 0
1690
- }, Z = qe(c, M.id);
1697
+ }, Z = Ye(c, M.id);
1691
1698
  try {
1692
1699
  const K = await f(M, {
1693
1700
  previousFrame: Z
@@ -1696,23 +1703,23 @@ function $s(e = {}) {
1696
1703
  semanticExecutionPayload: K
1697
1704
  });
1698
1705
  } catch (K) {
1699
- console.error("Failed to apply local semantic metadata:", K), p(!1), R.error(
1706
+ console.error("Failed to apply local semantic metadata:", K), p(!1), V.error(
1700
1707
  K instanceof Error ? K.message : "Failed to prepare semantic metadata for this visual"
1701
1708
  );
1702
1709
  return;
1703
1710
  }
1704
1711
  setTimeout(() => {
1705
- p(!1), R.success("Changes applied. Visual is now local to this dashboard"), l(!1);
1712
+ p(!1), V.success("Changes applied. Visual is now local to this dashboard"), l(!1);
1706
1713
  }, 300);
1707
1714
  }, W = (P) => {
1708
1715
  g(P), N(!0);
1709
1716
  };
1710
- return /* @__PURE__ */ s($, { children: [
1711
- /* @__PURE__ */ s("div", { className: "inline-flex items-center overflow-hidden rounded-control", children: [
1717
+ return /* @__PURE__ */ i($, { children: [
1718
+ /* @__PURE__ */ i("div", { className: "inline-flex items-center overflow-hidden rounded-control", children: [
1712
1719
  !k && /* @__PURE__ */ t(it, { className: "!rounded-none", variant: "default" }),
1713
1720
  k && D && /* @__PURE__ */ t(hn, { className: "!rounded-none", variant: "default" }),
1714
1721
  k && v && /* @__PURE__ */ t(mn, { className: "!rounded-none" }),
1715
- /* @__PURE__ */ s(rt, { modal: !1, children: [
1722
+ /* @__PURE__ */ i(rt, { modal: !1, children: [
1716
1723
  /* @__PURE__ */ t(at, { asChild: !0, children: /* @__PURE__ */ t(
1717
1724
  U,
1718
1725
  {
@@ -1721,18 +1728,18 @@ function $s(e = {}) {
1721
1728
  className: "w-7 !rounded-none border-l border-primary-foreground/20 px-0",
1722
1729
  "aria-label": "Open visual save options",
1723
1730
  disabled: x || h,
1724
- children: /* @__PURE__ */ t(Zt, { className: "h-3.5 w-3.5" })
1731
+ children: /* @__PURE__ */ t(Yt, { className: "h-3.5 w-3.5" })
1725
1732
  }
1726
1733
  ) }),
1727
- /* @__PURE__ */ s(
1734
+ /* @__PURE__ */ i(
1728
1735
  nt,
1729
1736
  {
1730
1737
  align: "end",
1731
1738
  className: "min-w-[220px] rounded-control border border-border/60 p-1 shadow-sm",
1732
1739
  children: [
1733
- v && /* @__PURE__ */ s($, { children: [
1734
- /* @__PURE__ */ s(
1735
- Y,
1740
+ v && /* @__PURE__ */ i($, { children: [
1741
+ /* @__PURE__ */ i(
1742
+ X,
1736
1743
  {
1737
1744
  onClick: I,
1738
1745
  disabled: h,
@@ -1742,10 +1749,10 @@ function $s(e = {}) {
1742
1749
  ]
1743
1750
  }
1744
1751
  ),
1745
- /* @__PURE__ */ t(Xe, {})
1752
+ /* @__PURE__ */ t(Ke, {})
1746
1753
  ] }),
1747
- /* @__PURE__ */ s(
1748
- Y,
1754
+ /* @__PURE__ */ i(
1755
+ X,
1749
1756
  {
1750
1757
  onClick: () => W("local"),
1751
1758
  disabled: x,
@@ -1755,19 +1762,19 @@ function $s(e = {}) {
1755
1762
  ]
1756
1763
  }
1757
1764
  ),
1758
- /* @__PURE__ */ s(
1759
- Y,
1765
+ /* @__PURE__ */ i(
1766
+ X,
1760
1767
  {
1761
1768
  onClick: () => W("library"),
1762
1769
  disabled: x,
1763
1770
  children: [
1764
- /* @__PURE__ */ t(Ua, { className: "h-3.5 w-3.5" }),
1771
+ /* @__PURE__ */ t(Va, { className: "h-3.5 w-3.5" }),
1765
1772
  "Save as Library Visual"
1766
1773
  ]
1767
1774
  }
1768
1775
  ),
1769
- /* @__PURE__ */ s(
1770
- Y,
1776
+ /* @__PURE__ */ i(
1777
+ X,
1771
1778
  {
1772
1779
  onClick: () => W("both"),
1773
1780
  disabled: x,
@@ -1799,19 +1806,19 @@ function $s(e = {}) {
1799
1806
  )
1800
1807
  ] });
1801
1808
  }
1802
- function zs({ className: e }) {
1803
- const r = ee((h) => h.isDevMode), o = ee((h) => h.card.type), a = L((h) => h.isVisualEditing), { setIsDevMode: n } = Je(), { config: i } = pr(qr).tokenProps, d = (i == null ? void 0 : i.showAdvancedMode) !== !1;
1804
- if (!a || !d || !Ma(o))
1809
+ function Ks({ className: e }) {
1810
+ const r = ee((h) => h.isDevMode), o = ee((h) => h.card.type), a = T((h) => h.isVisualEditing), { setIsDevMode: n } = tt(), { config: s } = pr(Or).tokenProps, d = (s == null ? void 0 : s.showAdvancedMode) !== !1;
1811
+ if (!a || !d || !fr(o))
1805
1812
  return null;
1806
1813
  const c = r ? Ha : Wa, l = r ? "Visual editor" : "SQL editor", u = r ? "Switch to visual editor" : "Switch to SQL editor";
1807
- return /* @__PURE__ */ s(
1814
+ return /* @__PURE__ */ i(
1808
1815
  "button",
1809
1816
  {
1810
1817
  type: "button",
1811
1818
  "aria-label": u,
1812
1819
  title: u,
1813
1820
  onClick: () => n(!r),
1814
- className: X(
1821
+ className: Y(
1815
1822
  "inline-flex h-7 items-center gap-1.5 rounded-control border border-input bg-background px-2 text-[12px] font-medium text-foreground transition-colors hover:bg-muted/40 focus-visible:border-ring focus-visible:outline-none",
1816
1823
  e
1817
1824
  ),
@@ -1822,13 +1829,13 @@ function zs({ className: e }) {
1822
1829
  }
1823
1830
  );
1824
1831
  }
1825
- function js({
1832
+ function Xs({
1826
1833
  open: e,
1827
1834
  onOpenChange: r,
1828
1835
  onSave: o,
1829
1836
  onDiscard: a,
1830
1837
  isSaving: n,
1831
- title: i = "Unsaved changes",
1838
+ title: s = "Unsaved changes",
1832
1839
  description: d = "You have unsaved changes to this dashboard. What would you like to do?",
1833
1840
  cancelLabel: c = "Cancel",
1834
1841
  discardLabel: l = "Discard changes",
@@ -1836,12 +1843,12 @@ function js({
1836
1843
  }) {
1837
1844
  return /* @__PURE__ */ t(pt, { open: e, onOpenChange: (p) => {
1838
1845
  !p && n || r(p);
1839
- }, children: /* @__PURE__ */ s(ft, { children: [
1840
- /* @__PURE__ */ s(gt, { children: [
1841
- /* @__PURE__ */ t(bt, { children: i }),
1846
+ }, children: /* @__PURE__ */ i(ft, { children: [
1847
+ /* @__PURE__ */ i(gt, { children: [
1848
+ /* @__PURE__ */ t(bt, { children: s }),
1842
1849
  /* @__PURE__ */ t(vt, { children: d })
1843
1850
  ] }),
1844
- /* @__PURE__ */ s(xt, { children: [
1851
+ /* @__PURE__ */ i(xt, { children: [
1845
1852
  /* @__PURE__ */ t(
1846
1853
  U,
1847
1854
  {
@@ -1855,13 +1862,29 @@ function js({
1855
1862
  }
1856
1863
  ),
1857
1864
  /* @__PURE__ */ t(yt, { disabled: n, children: c }),
1858
- /* @__PURE__ */ t(U, { type: "button", size: "xs", onClick: o, disabled: n, children: n ? /* @__PURE__ */ s($, { children: [
1865
+ /* @__PURE__ */ t(U, { type: "button", size: "xs", onClick: o, disabled: n, children: n ? /* @__PURE__ */ i($, { children: [
1859
1866
  /* @__PURE__ */ t(ie, { className: "mr-2 h-3.5 w-3.5 animate-spin" }),
1860
1867
  "Saving..."
1861
1868
  ] }) : u })
1862
1869
  ] })
1863
1870
  ] }) });
1864
1871
  }
1872
+ async function Ys(e) {
1873
+ var s, d;
1874
+ const r = (d = (s = T.getState()) == null ? void 0 : s.authToken) == null ? void 0 : d.accessToken;
1875
+ if (!r)
1876
+ return;
1877
+ const o = `${e}/v1/invalidate-token`, a = await fetch(o, {
1878
+ method: "POST",
1879
+ headers: {
1880
+ Authorization: `Bearer ${r}`
1881
+ }
1882
+ });
1883
+ if (!a.ok)
1884
+ throw new Error("Failed to invalidate token");
1885
+ const n = await a.json();
1886
+ return console.log("invalidateToken", n), n;
1887
+ }
1865
1888
  function At(e, r) {
1866
1889
  return {
1867
1890
  id: e.id,
@@ -1885,9 +1908,9 @@ const fn = 15e3;
1885
1908
  function ye(e) {
1886
1909
  const r = new AbortController();
1887
1910
  let o;
1888
- const a = new Promise((n, i) => {
1911
+ const a = new Promise((n, s) => {
1889
1912
  o = setTimeout(() => {
1890
- r.abort(), i(new Error("Export request timed out."));
1913
+ r.abort(), s(new Error("Export request timed out."));
1891
1914
  }, fn);
1892
1915
  });
1893
1916
  return Promise.race([e(r.signal), a]).finally(() => clearTimeout(o));
@@ -1900,13 +1923,13 @@ function Sn(e) {
1900
1923
  const r = Date.now() - e.getTime();
1901
1924
  return r < xn ? gn : r < yn ? bn : vn;
1902
1925
  }
1903
- function Ws() {
1926
+ function Zs() {
1904
1927
  const { authToken: e, tokenProps: r } = Be(), o = xe((m) => m.activeExports), [a, n] = F(
1905
1928
  typeof document < "u" ? !document.hidden : !0
1906
- ), i = ge(null), d = ge(!1), c = ge(void 0), l = r == null ? void 0 : r.apiServiceUrl, u = e == null ? void 0 : e.accessToken, h = j(() => {
1929
+ ), s = ge(null), d = ge(!1), c = ge(void 0), l = r == null ? void 0 : r.apiServiceUrl, u = e == null ? void 0 : e.accessToken, h = j(() => {
1907
1930
  const m = xe.getState().activeExports;
1908
1931
  return Array.from(m.values()).filter(
1909
- (g) => Le(g.status)
1932
+ (g) => Te(g.status)
1910
1933
  );
1911
1934
  }, []);
1912
1935
  J(() => {
@@ -1935,7 +1958,7 @@ function Ws() {
1935
1958
  let y;
1936
1959
  if (N.status === "completed")
1937
1960
  try {
1938
- y = await ye((w) => Ye(l, u, E.id, w));
1961
+ y = await ye((w) => Xe(l, u, E.id, w));
1939
1962
  } catch (w) {
1940
1963
  console.error(
1941
1964
  `[useExportPolling] Failed to get download URL for ${E.id}:`,
@@ -1952,12 +1975,12 @@ function Ws() {
1952
1975
  })
1953
1976
  ), { updateExport: b, applyServerStatus: k } = xe.getState().actions, v = (E) => {
1954
1977
  const N = xe.getState().activeExports.get(E);
1955
- return !!N && Le(N.status);
1978
+ return !!N && Te(N.status);
1956
1979
  };
1957
1980
  m.forEach((E, N) => {
1958
1981
  if (!v(E.id)) return;
1959
1982
  const y = f[N], w = y.status === "fulfilled" ? y.value : null;
1960
- if (g > Nn(E) && !(w && !Le(w.status))) {
1983
+ if (g > Nn(E) && !(w && !Te(w.status))) {
1961
1984
  b(E.id, {
1962
1985
  status: "failed",
1963
1986
  error: Q.unconfirmed,
@@ -1973,7 +1996,7 @@ function Ws() {
1973
1996
  (y, w) => w.startedAt < y ? w.startedAt : y,
1974
1997
  D[0].startedAt
1975
1998
  ), N = Sn(E);
1976
- i.current && clearTimeout(i.current), i.current = setTimeout(() => {
1999
+ s.current && clearTimeout(s.current), s.current = setTimeout(() => {
1977
2000
  var y;
1978
2001
  (y = c.current) == null || y.call(c);
1979
2002
  }, N);
@@ -1990,22 +2013,22 @@ function Ws() {
1990
2013
  const m = h();
1991
2014
  a && m.length > 0 && !d.current && (d.current = !0, (g = c.current) == null || g.call(c));
1992
2015
  }, [a, h]), J(() => {
1993
- !a && i.current && (clearTimeout(i.current), i.current = null, d.current = !1);
2016
+ !a && s.current && (clearTimeout(s.current), s.current = null, d.current = !1);
1994
2017
  }, [a]), J(() => () => {
1995
- i.current && (clearTimeout(i.current), i.current = null);
2018
+ s.current && (clearTimeout(s.current), s.current = null);
1996
2019
  }, []), {
1997
2020
  isPolling: d.current,
1998
2021
  isTabVisible: a,
1999
2022
  inProgressCount: h().length
2000
2023
  };
2001
2024
  }
2002
- function qs() {
2003
- const { authToken: e, tokenProps: r } = Be(), o = xe((c) => c.activeExports), { recoverExport: a } = Qt(), n = ge(!1), i = r == null ? void 0 : r.apiServiceUrl, d = e == null ? void 0 : e.accessToken;
2025
+ function Js() {
2026
+ const { authToken: e, tokenProps: r } = Be(), o = xe((c) => c.activeExports), { recoverExport: a } = Qt(), n = ge(!1), s = r == null ? void 0 : r.apiServiceUrl, d = e == null ? void 0 : e.accessToken;
2004
2027
  J(() => {
2005
- if (n.current || !i || !d) return;
2028
+ if (n.current || !s || !d) return;
2006
2029
  (async () => {
2007
2030
  try {
2008
- const { exports: l } = await ye((u) => Hr(i, d, {
2031
+ const { exports: l } = await ye((u) => $r(s, d, {
2009
2032
  status: ["pending", "processing", "chunking", "compacting", "completed", "failed", "cancelled"],
2010
2033
  limit: 20
2011
2034
  // Limit to recent exports
@@ -2015,7 +2038,7 @@ function qs() {
2015
2038
  let h;
2016
2039
  if (u.status === "completed")
2017
2040
  try {
2018
- h = await ye((m) => Ye(i, d, u.id, m));
2041
+ h = await ye((m) => Xe(s, d, u.id, m));
2019
2042
  } catch (m) {
2020
2043
  console.error(
2021
2044
  `[useExportRecovery] Failed to get download URL for ${u.id}:`,
@@ -2035,18 +2058,18 @@ function qs() {
2035
2058
  console.error("[useExportRecovery] Failed to recover exports:", l), n.current = !0;
2036
2059
  }
2037
2060
  })();
2038
- }, [i, d, a, o]);
2061
+ }, [s, d, a, o]);
2039
2062
  }
2040
2063
  function Dn(e) {
2041
- return e.title ? e.title : Le(
2064
+ return e.title ? e.title : Te(
2042
2065
  e.status
2043
2066
  ) ? "Export in progress..." : e.status === "completed" ? "Export completed" : e.status === "failed" ? "Export failed" : "Export";
2044
2067
  }
2045
2068
  function En(e, r = []) {
2046
2069
  let o = [];
2047
- function a(i, d) {
2070
+ function a(s, d) {
2048
2071
  const c = ue.createContext(d);
2049
- c.displayName = i + "Context";
2072
+ c.displayName = s + "Context";
2050
2073
  const l = o.length;
2051
2074
  o = [...o, d];
2052
2075
  const u = (p) => {
@@ -2054,20 +2077,20 @@ function En(e, r = []) {
2054
2077
  const { scope: m, children: g, ...f } = p, b = ((v = m == null ? void 0 : m[e]) == null ? void 0 : v[l]) || c, k = ue.useMemo(() => f, Object.values(f));
2055
2078
  return /* @__PURE__ */ t(b.Provider, { value: k, children: g });
2056
2079
  };
2057
- u.displayName = i + "Provider";
2080
+ u.displayName = s + "Provider";
2058
2081
  function h(p, m) {
2059
2082
  var b;
2060
2083
  const g = ((b = m == null ? void 0 : m[e]) == null ? void 0 : b[l]) || c, f = ue.useContext(g);
2061
2084
  if (f) return f;
2062
2085
  if (d !== void 0) return d;
2063
- throw new Error(`\`${p}\` must be used within \`${i}\``);
2086
+ throw new Error(`\`${p}\` must be used within \`${s}\``);
2064
2087
  }
2065
2088
  return [u, h];
2066
2089
  }
2067
2090
  const n = () => {
2068
- const i = o.map((d) => ue.createContext(d));
2091
+ const s = o.map((d) => ue.createContext(d));
2069
2092
  return function(c) {
2070
- const l = (c == null ? void 0 : c[e]) || i;
2093
+ const l = (c == null ? void 0 : c[e]) || s;
2071
2094
  return ue.useMemo(
2072
2095
  () => ({ [`__scope${e}`]: { ...c, [e]: l } }),
2073
2096
  [c, l]
@@ -2084,9 +2107,9 @@ function kn(...e) {
2084
2107
  useScope: n(),
2085
2108
  scopeName: n.scopeName
2086
2109
  }));
2087
- return function(i) {
2110
+ return function(s) {
2088
2111
  const d = a.reduce((c, { useScope: l, scopeName: u }) => {
2089
- const p = l(i)[`__scope${u}`];
2112
+ const p = l(s)[`__scope${u}`];
2090
2113
  return { ...c, ...p };
2091
2114
  }, {});
2092
2115
  return ue.useMemo(() => ({ [`__scope${r.scopeName}`]: d }), [d]);
@@ -2113,9 +2136,9 @@ var An = [
2113
2136
  "svg",
2114
2137
  "ul"
2115
2138
  ], nr = An.reduce((e, r) => {
2116
- const o = gr(`Primitive.${r}`), a = ue.forwardRef((n, i) => {
2139
+ const o = br(`Primitive.${r}`), a = ue.forwardRef((n, s) => {
2117
2140
  const { asChild: d, ...c } = n, l = d ? o : r;
2118
- return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ t(l, { ...c, ref: i });
2141
+ return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ t(l, { ...c, ref: s });
2119
2142
  });
2120
2143
  return a.displayName = `Primitive.${r}`, { ...e, [r]: a };
2121
2144
  }, {}), It = "Progress", Ft = 100, [In] = En(It), [Fn, Pn] = In(It), sr = ue.forwardRef(
@@ -2124,13 +2147,13 @@ var An = [
2124
2147
  __scopeProgress: o,
2125
2148
  value: a = null,
2126
2149
  max: n,
2127
- getValueLabel: i = Ln,
2150
+ getValueLabel: s = Tn,
2128
2151
  ...d
2129
2152
  } = e;
2130
- (n || n === 0) && !Vt(n) && console.error(Tn(`${n}`, "Progress"));
2131
- const c = Vt(n) ? n : Ft;
2153
+ (n || n === 0) && !Rt(n) && console.error(Ln(`${n}`, "Progress"));
2154
+ const c = Rt(n) ? n : Ft;
2132
2155
  a !== null && !Bt(a, c) && console.error(Un(`${a}`, "Progress"));
2133
- const l = Bt(a, c) ? a : null, u = Ze(l) ? i(l, c) : void 0;
2156
+ const l = Bt(a, c) ? a : null, u = Ze(l) ? s(l, c) : void 0;
2134
2157
  return /* @__PURE__ */ t(Fn, { scope: o, value: l, max: c, children: /* @__PURE__ */ t(
2135
2158
  nr.div,
2136
2159
  {
@@ -2165,7 +2188,7 @@ var or = "ProgressIndicator", ir = ue.forwardRef(
2165
2188
  }
2166
2189
  );
2167
2190
  ir.displayName = or;
2168
- function Ln(e, r) {
2191
+ function Tn(e, r) {
2169
2192
  return `${Math.round(e / r * 100)}%`;
2170
2193
  }
2171
2194
  function lr(e, r) {
@@ -2174,13 +2197,13 @@ function lr(e, r) {
2174
2197
  function Ze(e) {
2175
2198
  return typeof e == "number";
2176
2199
  }
2177
- function Vt(e) {
2200
+ function Rt(e) {
2178
2201
  return Ze(e) && !isNaN(e) && e > 0;
2179
2202
  }
2180
2203
  function Bt(e, r) {
2181
2204
  return Ze(e) && !isNaN(e) && e <= r && e >= 0;
2182
2205
  }
2183
- function Tn(e, r) {
2206
+ function Ln(e, r) {
2184
2207
  return `Invalid prop \`max\` of value \`${e}\` supplied to \`${r}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Ft}\`.`;
2185
2208
  }
2186
2209
  function Un(e, r) {
@@ -2191,18 +2214,18 @@ function Un(e, r) {
2191
2214
 
2192
2215
  Defaulting to \`null\`.`;
2193
2216
  }
2194
- var cr = sr, Rn = ir;
2217
+ var cr = sr, Vn = ir;
2195
2218
  const dr = ue.forwardRef(({ className: e, value: r, ...o }, a) => /* @__PURE__ */ t(
2196
2219
  cr,
2197
2220
  {
2198
2221
  ref: a,
2199
- className: X(
2222
+ className: Y(
2200
2223
  "relative h-4 w-full overflow-hidden rounded-full bg-secondary",
2201
2224
  e
2202
2225
  ),
2203
2226
  ...o,
2204
2227
  children: /* @__PURE__ */ t(
2205
- Rn,
2228
+ Vn,
2206
2229
  {
2207
2230
  className: "h-full w-full flex-1 bg-primary transition-all",
2208
2231
  style: { transform: `translateX(-${100 - (r || 0)}%)` }
@@ -2211,7 +2234,7 @@ const dr = ue.forwardRef(({ className: e, value: r, ...o }, a) => /* @__PURE__ *
2211
2234
  }
2212
2235
  ));
2213
2236
  dr.displayName = cr.displayName;
2214
- function Vn({
2237
+ function Rn({
2215
2238
  export: e,
2216
2239
  onRemove: r,
2217
2240
  onDownload: o
@@ -2220,7 +2243,7 @@ function Vn({
2220
2243
  J(() => {
2221
2244
  e.downloadUrl && n("idle");
2222
2245
  }, [e.downloadUrl]);
2223
- const i = async () => {
2246
+ const s = async () => {
2224
2247
  if (!o) {
2225
2248
  e.downloadUrl && window.open(e.downloadUrl, "_blank");
2226
2249
  return;
@@ -2230,21 +2253,21 @@ function Vn({
2230
2253
  n(b === "denied" ? "denied" : "idle");
2231
2254
  }, d = (b) => {
2232
2255
  b.stopPropagation(), r == null || r(e.id);
2233
- }, c = Le(e.status), l = e.status === "pending" ? { text: Q.queued } : e.status === "compacting" || e.phase === "finalizing" ? { text: Q.finalizing } : e.phase === "preparing" ? { text: Q.preparing } : e.phase === "acquiring" ? { text: Q.fetchingRows(e.rowsProcessed ?? 0) } : {
2256
+ }, c = Te(e.status), l = e.status === "pending" ? { text: Q.queued } : e.status === "compacting" || e.phase === "finalizing" ? { text: Q.finalizing } : e.phase === "preparing" ? { text: Q.preparing } : e.phase === "acquiring" ? { text: Q.fetchingRows(e.rowsProcessed ?? 0) } : {
2234
2257
  text: Q.processing,
2235
2258
  detail: e.progress !== null ? Q.percentComplete(e.progress) : e.rowsProcessed !== void 0 ? Q.rowsProcessed(e.rowsProcessed) : void 0,
2236
2259
  bar: e.progress
2237
- }, u = c && Date.now() - e.startedAt.getTime() >= Qr, h = e.status === "completed" ? "bg-emerald-500" : e.status === "failed" ? "bg-destructive" : e.status === "pending" || e.status === "cancelled" ? "bg-muted-foreground/40" : "animate-pulse bg-muted-foreground/60", p = e.status === "completed" ? Q.ready : e.status === "failed" ? Q.failed : e.status === "cancelled" ? Q.cancelled : Q.inProgress, m = Ut(e.startedAt, { addSuffix: !0 }), g = [
2260
+ }, u = c && Date.now() - e.startedAt.getTime() >= zr, h = e.status === "completed" ? "bg-emerald-500" : e.status === "failed" ? "bg-destructive" : e.status === "pending" || e.status === "cancelled" ? "bg-muted-foreground/40" : "animate-pulse bg-muted-foreground/60", p = e.status === "completed" ? Q.ready : e.status === "failed" ? Q.failed : e.status === "cancelled" ? Q.cancelled : Q.inProgress, m = Ut(e.startedAt, { addSuffix: !0 }), g = [
2238
2261
  e.status === "completed" && e.totalRows !== null ? `${e.totalRows.toLocaleString()} rows` : null,
2239
- e.status === "completed" && e.fileSize ? Gr(e.fileSize) : null
2262
+ e.status === "completed" && e.fileSize ? jr(e.fileSize) : null
2240
2263
  ].filter((b) => !!b), f = /* @__PURE__ */ t("span", { className: "text-muted-foreground/50", children: "·" });
2241
- return /* @__PURE__ */ s("div", { className: "group flex items-start gap-2.5 px-3 py-2 transition-colors hover:bg-muted/40 focus-within:bg-muted/40", children: [
2264
+ return /* @__PURE__ */ i("div", { className: "group flex items-start gap-2.5 px-3 py-2 transition-colors hover:bg-muted/40 focus-within:bg-muted/40", children: [
2242
2265
  /* @__PURE__ */ t("span", { className: "flex h-5 shrink-0 items-center", "aria-hidden": "true", children: /* @__PURE__ */ t("span", { className: `h-1.5 w-1.5 rounded-full ${h}` }) }),
2243
2266
  /* @__PURE__ */ t("span", { className: "sr-only", children: p }),
2244
- /* @__PURE__ */ s("div", { className: "min-w-0 flex-1", children: [
2245
- /* @__PURE__ */ s("div", { className: "flex h-5 items-center gap-2", children: [
2267
+ /* @__PURE__ */ i("div", { className: "min-w-0 flex-1", children: [
2268
+ /* @__PURE__ */ i("div", { className: "flex h-5 items-center gap-2", children: [
2246
2269
  /* @__PURE__ */ t("span", { className: "min-w-0 flex-1 truncate text-[13px] font-medium leading-5", children: e.title }),
2247
- e.status === "completed" && a === "preparing" && /* @__PURE__ */ s("span", { role: "status", className: "inline-flex shrink-0 items-center gap-1.5 text-[12px] text-muted-foreground", children: [
2270
+ e.status === "completed" && a === "preparing" && /* @__PURE__ */ i("span", { role: "status", className: "inline-flex shrink-0 items-center gap-1.5 text-[12px] text-muted-foreground", children: [
2248
2271
  /* @__PURE__ */ t(Gt, { className: "h-3 w-3 animate-spin", strokeWidth: 1.75 }),
2249
2272
  "Preparing"
2250
2273
  ] }),
@@ -2252,7 +2275,7 @@ function Vn({
2252
2275
  "button",
2253
2276
  {
2254
2277
  type: "button",
2255
- onClick: () => void i(),
2278
+ onClick: () => void s(),
2256
2279
  className: "shrink-0 text-[12px] font-medium text-foreground/80 underline-offset-2 hover:text-foreground hover:underline focus-visible:underline focus-visible:outline-none",
2257
2280
  children: "Download"
2258
2281
  }
@@ -2270,10 +2293,10 @@ function Vn({
2270
2293
  }
2271
2294
  )
2272
2295
  ] }),
2273
- e.status === "completed" && /* @__PURE__ */ s("div", { className: "flex items-center gap-1.5 text-[12px] leading-4 text-muted-foreground", children: [
2296
+ e.status === "completed" && /* @__PURE__ */ i("div", { className: "flex items-center gap-1.5 text-[12px] leading-4 text-muted-foreground", children: [
2274
2297
  g.length > 0 && // Disclosed on hover or focus only; the time is what a reader scans.
2275
- /* @__PURE__ */ s("span", { className: "hidden group-hover:contents group-focus-within:contents", children: [
2276
- g.map((b, k) => /* @__PURE__ */ s(_t.Fragment, { children: [
2298
+ /* @__PURE__ */ i("span", { className: "hidden group-hover:contents group-focus-within:contents", children: [
2299
+ g.map((b, k) => /* @__PURE__ */ i(_t.Fragment, { children: [
2277
2300
  k > 0 && f,
2278
2301
  /* @__PURE__ */ t("span", { children: b })
2279
2302
  ] }, k)),
@@ -2281,13 +2304,13 @@ function Vn({
2281
2304
  ] }),
2282
2305
  /* @__PURE__ */ t("span", { children: m })
2283
2306
  ] }),
2284
- e.status === "completed" && a === "denied" && /* @__PURE__ */ s("div", { role: "alert", className: "mt-1 flex items-start gap-1.5 text-[12px] leading-4 text-foreground", children: [
2285
- /* @__PURE__ */ t(Kr, { className: "mt-0.5 h-3 w-3 shrink-0 text-destructive", strokeWidth: 1.75 }),
2307
+ e.status === "completed" && a === "denied" && /* @__PURE__ */ i("div", { role: "alert", className: "mt-1 flex items-start gap-1.5 text-[12px] leading-4 text-foreground", children: [
2308
+ /* @__PURE__ */ t(Wr, { className: "mt-0.5 h-3 w-3 shrink-0 text-destructive", strokeWidth: 1.75 }),
2286
2309
  /* @__PURE__ */ t("span", { children: Q.linkExpired })
2287
2310
  ] }),
2288
- c && /* @__PURE__ */ s("div", { className: "text-[12px] leading-4 text-muted-foreground", children: [
2311
+ c && /* @__PURE__ */ i("div", { className: "text-[12px] leading-4 text-muted-foreground", children: [
2289
2312
  /* @__PURE__ */ t("span", { className: "tabular-nums", children: l.text }),
2290
- l.detail && /* @__PURE__ */ s($, { children: [
2313
+ l.detail && /* @__PURE__ */ i($, { children: [
2291
2314
  " ",
2292
2315
  f,
2293
2316
  " ",
@@ -2300,13 +2323,13 @@ function Vn({
2300
2323
  l.bar !== void 0 && l.bar !== null && /* @__PURE__ */ t(dr, { value: l.bar, className: "mt-1.5 h-1" }),
2301
2324
  u && /* @__PURE__ */ t("div", { className: "mt-1", children: Q.longRunning })
2302
2325
  ] }),
2303
- e.status === "cancelled" && /* @__PURE__ */ s("div", { className: "flex items-center gap-1.5 text-[12px] leading-4 text-muted-foreground", children: [
2326
+ e.status === "cancelled" && /* @__PURE__ */ i("div", { className: "flex items-center gap-1.5 text-[12px] leading-4 text-muted-foreground", children: [
2304
2327
  /* @__PURE__ */ t("span", { children: Q.cancelled }),
2305
2328
  f,
2306
2329
  /* @__PURE__ */ t("span", { children: m })
2307
2330
  ] }),
2308
- e.status === "failed" && /* @__PURE__ */ s($, { children: [
2309
- /* @__PURE__ */ s("div", { className: "flex items-center gap-1.5 text-[12px] leading-4 text-muted-foreground", children: [
2331
+ e.status === "failed" && /* @__PURE__ */ i($, { children: [
2332
+ /* @__PURE__ */ i("div", { className: "flex items-center gap-1.5 text-[12px] leading-4 text-muted-foreground", children: [
2310
2333
  /* @__PURE__ */ t("span", { children: Q.failed }),
2311
2334
  f,
2312
2335
  /* @__PURE__ */ t("span", { children: m })
@@ -2317,7 +2340,7 @@ function Vn({
2317
2340
  ] });
2318
2341
  }
2319
2342
  function Bn() {
2320
- const { authToken: e, tokenProps: r } = Be(), o = xe((v) => v.activeExports), { clearCompleted: a, removeExport: n, updateExport: i, applyServerStatus: d } = Qt(), [c, l] = F(!1), [u, h] = F(!1), p = Array.from(o.values()).sort(
2343
+ const { authToken: e, tokenProps: r } = Be(), o = xe((v) => v.activeExports), { clearCompleted: a, removeExport: n, updateExport: s, applyServerStatus: d } = Qt(), [c, l] = F(!1), [u, h] = F(!1), p = Array.from(o.values()).sort(
2321
2344
  (v, D) => D.startedAt.getTime() - v.startedAt.getTime()
2322
2345
  ), m = p.some(
2323
2346
  (v) => v.status === "completed" || v.status === "failed" || v.status === "cancelled"
@@ -2334,7 +2357,7 @@ function Bn() {
2334
2357
  let w;
2335
2358
  if (y.status === "completed")
2336
2359
  try {
2337
- w = await ye((S) => Ye(
2360
+ w = await ye((S) => Xe(
2338
2361
  v,
2339
2362
  D,
2340
2363
  N.id,
@@ -2345,7 +2368,7 @@ function Bn() {
2345
2368
  }
2346
2369
  d(N.id, At(y, w));
2347
2370
  } catch (y) {
2348
- i(N.id, { downloadUrl: void 0 }), console.error(`Failed to refresh export ${N.id}:`, y);
2371
+ s(N.id, { downloadUrl: void 0 }), console.error(`Failed to refresh export ${N.id}:`, y);
2349
2372
  }
2350
2373
  })
2351
2374
  );
@@ -2357,7 +2380,7 @@ function Bn() {
2357
2380
  o,
2358
2381
  e == null ? void 0 : e.accessToken,
2359
2382
  r == null ? void 0 : r.apiServiceUrl,
2360
- i,
2383
+ s,
2361
2384
  d
2362
2385
  ]), f = j(async () => {
2363
2386
  const v = r == null ? void 0 : r.apiServiceUrl, D = e == null ? void 0 : e.accessToken;
@@ -2403,23 +2426,23 @@ function Bn() {
2403
2426
  const D = r == null ? void 0 : r.apiServiceUrl, E = e == null ? void 0 : e.accessToken;
2404
2427
  if (!D || !E) return "denied";
2405
2428
  try {
2406
- const N = await ye((y) => Ye(D, E, v.id, y));
2407
- return i(v.id, { downloadUrl: N }), window.open(N, "_blank"), "opened";
2429
+ const N = await ye((y) => Xe(D, E, v.id, y));
2430
+ return s(v.id, { downloadUrl: N }), window.open(N, "_blank"), "opened";
2408
2431
  } catch (N) {
2409
- return console.error(`Failed to get download URL for ${v.id}:`, N), i(v.id, { downloadUrl: void 0 }), "denied";
2432
+ return console.error(`Failed to get download URL for ${v.id}:`, N), s(v.id, { downloadUrl: void 0 }), "denied";
2410
2433
  }
2411
2434
  },
2412
- [r == null ? void 0 : r.apiServiceUrl, e == null ? void 0 : e.accessToken, i]
2435
+ [r == null ? void 0 : r.apiServiceUrl, e == null ? void 0 : e.accessToken, s]
2413
2436
  );
2414
- return p.length === 0 ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center gap-1.5 px-6 py-8 text-center", children: [
2437
+ return p.length === 0 ? /* @__PURE__ */ i("div", { className: "flex flex-col items-center gap-1.5 px-6 py-8 text-center", children: [
2415
2438
  /* @__PURE__ */ t("span", { className: "flex h-8 w-8 items-center justify-center rounded-[6px] border border-border text-muted-foreground", children: /* @__PURE__ */ t(qa, { className: "h-3.5 w-3.5", strokeWidth: 1.75 }) }),
2416
2439
  /* @__PURE__ */ t("p", { className: "text-[13px] font-medium", children: "No exports yet" }),
2417
2440
  /* @__PURE__ */ t("p", { className: "text-[12px] text-muted-foreground", children: "Large exports run in the background and land here." })
2418
- ] }) : /* @__PURE__ */ s("div", { className: "flex flex-col", children: [
2419
- /* @__PURE__ */ s("div", { className: "flex h-8 items-center gap-2 border-b border-border px-3", children: [
2441
+ ] }) : /* @__PURE__ */ i("div", { className: "flex flex-col", children: [
2442
+ /* @__PURE__ */ i("div", { className: "flex h-8 items-center gap-2 border-b border-border px-3", children: [
2420
2443
  /* @__PURE__ */ t("span", { className: "text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground", children: "Exports" }),
2421
2444
  /* @__PURE__ */ t("span", { className: "text-[10px] tabular-nums text-muted-foreground/70", children: p.length }),
2422
- /* @__PURE__ */ s("div", { className: "ml-auto flex items-center gap-0.5", children: [
2445
+ /* @__PURE__ */ i("div", { className: "ml-auto flex items-center gap-0.5", children: [
2423
2446
  m && /* @__PURE__ */ t(
2424
2447
  U,
2425
2448
  {
@@ -2453,7 +2476,7 @@ function Bn() {
2453
2476
  ] })
2454
2477
  ] }),
2455
2478
  /* @__PURE__ */ t("div", { className: "max-h-[320px] overflow-y-auto", children: /* @__PURE__ */ t("div", { className: "divide-y divide-border/70", children: p.map((v) => /* @__PURE__ */ t(
2456
- Vn,
2479
+ Rn,
2457
2480
  {
2458
2481
  export: v,
2459
2482
  onRemove: b,
@@ -2463,14 +2486,14 @@ function Bn() {
2463
2486
  )) }) })
2464
2487
  ] });
2465
2488
  }
2466
- function Hs({
2489
+ function eo({
2467
2490
  variant: e
2468
2491
  }) {
2469
- const r = xe((l) => l.activeExports), o = Xr(), a = r.size > 0, n = Array.from(r.values()).some(
2492
+ const r = xe((l) => l.activeExports), o = qr(), a = r.size > 0, n = Array.from(r.values()).some(
2470
2493
  (l) => l.status === "completed" || l.status === "failed"
2471
2494
  ), d = o > 0 ? o > 9 ? "9+" : String(o) : null;
2472
- return /* @__PURE__ */ s(He, { children: [
2473
- /* @__PURE__ */ t(Qe, { asChild: !0, children: /* @__PURE__ */ s(
2495
+ return /* @__PURE__ */ i(qe, { children: [
2496
+ /* @__PURE__ */ t(He, { asChild: !0, children: /* @__PURE__ */ i(
2474
2497
  U,
2475
2498
  {
2476
2499
  variant: e ?? "ghost",
@@ -2478,7 +2501,7 @@ function Hs({
2478
2501
  className: "relative w-7 px-0 text-muted-foreground hover:text-foreground",
2479
2502
  "aria-label": "Export notifications",
2480
2503
  children: [
2481
- /* @__PURE__ */ t(Yr, { className: "h-3.5 w-3.5" }),
2504
+ /* @__PURE__ */ t(Hr, { className: "h-3.5 w-3.5" }),
2482
2505
  a && /* @__PURE__ */ t(
2483
2506
  "span",
2484
2507
  {
@@ -2489,7 +2512,7 @@ function Hs({
2489
2512
  ]
2490
2513
  }
2491
2514
  ) }),
2492
- /* @__PURE__ */ t(Ge, { className: "w-80 p-0", align: "end", sideOffset: 8, children: /* @__PURE__ */ t(Bn, {}) })
2515
+ /* @__PURE__ */ t(Qe, { className: "w-80 p-0", align: "end", sideOffset: 8, children: /* @__PURE__ */ t(Bn, {}) })
2493
2516
  ] });
2494
2517
  }
2495
2518
  function Mn(e) {
@@ -2508,7 +2531,7 @@ function _n({
2508
2531
  showTrigger: a = !0,
2509
2532
  initialMode: n = "manage"
2510
2533
  }) {
2511
- const i = n === "create", {
2534
+ const s = n === "create", {
2512
2535
  forceClose: d,
2513
2536
  handleOpenChange: c,
2514
2537
  isCreateFlowActive: l,
@@ -2526,7 +2549,7 @@ function _n({
2526
2549
  // create and make consumers use `forceClose()` from a dedicated
2527
2550
  // button.
2528
2551
  dismissMode: a ? "passive" : "explicit-only"
2529
- }), m = L((x) => x.dashboard), { setDashboardControlsModel: g } = pe(), { participants: f } = Zr(_a(m)), b = Array.from(
2552
+ }), m = T((x) => x.dashboard), { setDashboardControlsModel: g } = pe(), { participants: f } = Qr(La(m)), b = Array.from(
2530
2553
  new Map(
2531
2554
  f.flatMap(
2532
2555
  (x) => x.fieldChoices.map((B) => {
@@ -2556,29 +2579,29 @@ function _n({
2556
2579
  })
2557
2580
  )
2558
2581
  ).values()
2559
- ), v = br({
2582
+ ), v = Ea({
2560
2583
  ...m || {},
2561
2584
  controls: []
2562
- }), D = Jr(m), E = (x, B, I) => {
2585
+ }), D = Gr(m), E = (x, B, I) => {
2563
2586
  g(
2564
2587
  x,
2565
2588
  B,
2566
2589
  Mn(I)
2567
2590
  );
2568
2591
  }, N = j(() => {
2569
- if (i) {
2592
+ if (s) {
2570
2593
  d();
2571
2594
  return;
2572
2595
  }
2573
2596
  p(!1);
2574
- }, [i, d, p]), y = /* @__PURE__ */ t(
2597
+ }, [s, d, p]), y = /* @__PURE__ */ t(
2575
2598
  er,
2576
2599
  {
2577
2600
  scope: "dashboard",
2578
2601
  controls: m.controls || [],
2579
2602
  reservedControlIds: v,
2580
2603
  defaultValues: m.defaultControlValues || {},
2581
- usageByControlId: ea(m),
2604
+ usageByControlId: Kr(m),
2582
2605
  availableFieldChoices: b,
2583
2606
  availableMetricChoices: k,
2584
2607
  structuralParticipants: f,
@@ -2589,20 +2612,20 @@ function _n({
2589
2612
  onChange: E,
2590
2613
  emptyMessage: "No dashboard controls yet."
2591
2614
  }
2592
- ), w = l ? "Add dashboard control" : "Dashboard Controls", S = /* @__PURE__ */ s($, { children: [
2593
- /* @__PURE__ */ s("div", { className: "space-y-1", children: [
2615
+ ), w = l ? "Add dashboard control" : "Dashboard Controls", S = /* @__PURE__ */ i($, { children: [
2616
+ /* @__PURE__ */ i("div", { className: "space-y-1", children: [
2594
2617
  /* @__PURE__ */ t("h4", { className: "text-sm font-medium", children: "Dashboard Controls" }),
2595
2618
  /* @__PURE__ */ t("p", { className: "text-xs text-muted-foreground", children: "Add shared controls viewers can use across the dashboard. Each card can decide how to respond to the same control." })
2596
2619
  ] }),
2597
2620
  y
2598
2621
  ] });
2599
- return a ? /* @__PURE__ */ s(He, { open: h, onOpenChange: c, children: [
2600
- /* @__PURE__ */ t(Qe, { asChild: !0, children: o || /* @__PURE__ */ s(U, { variant: "outline", className: "h-7 px-2", size: "sm", children: [
2622
+ return a ? /* @__PURE__ */ i(qe, { open: h, onOpenChange: c, children: [
2623
+ /* @__PURE__ */ t(He, { asChild: !0, children: o || /* @__PURE__ */ i(U, { variant: "outline", className: "h-7 px-2", size: "sm", children: [
2601
2624
  /* @__PURE__ */ t($t, { className: "mr-2 h-4 w-4" }),
2602
2625
  "Controls"
2603
2626
  ] }) }),
2604
2627
  /* @__PURE__ */ t(
2605
- Ge,
2628
+ Qe,
2606
2629
  {
2607
2630
  className: "w-[620px] max-w-[95vw] space-y-4",
2608
2631
  align: "end",
@@ -2611,19 +2634,19 @@ function _n({
2611
2634
  children: S
2612
2635
  }
2613
2636
  )
2614
- ] }) : /* @__PURE__ */ t(Ue, { open: h, onOpenChange: c, children: /* @__PURE__ */ s(
2615
- Re,
2637
+ ] }) : /* @__PURE__ */ t(Ue, { open: h, onOpenChange: c, children: /* @__PURE__ */ i(
2638
+ Ve,
2616
2639
  {
2617
2640
  className: "flex max-h-[88vh] flex-col overflow-hidden sm:max-w-[600px]",
2618
2641
  onEscapeKeyDown: u,
2619
2642
  onPointerDownOutside: u,
2620
2643
  children: [
2621
- /* @__PURE__ */ s(
2644
+ /* @__PURE__ */ i(
2622
2645
  wt,
2623
2646
  {
2624
2647
  className: l ? "space-y-0" : void 0,
2625
2648
  children: [
2626
- /* @__PURE__ */ t(Ve, { className: "text-[15px]", children: w }),
2649
+ /* @__PURE__ */ t(Re, { className: "text-[15px]", children: w }),
2627
2650
  /* @__PURE__ */ t(
2628
2651
  Nt,
2629
2652
  {
@@ -2655,7 +2678,7 @@ function $n({
2655
2678
  var S;
2656
2679
  const a = o === "create", {
2657
2680
  forceClose: n,
2658
- handleOpenChange: i,
2681
+ handleOpenChange: s,
2659
2682
  isCreateFlowActive: d,
2660
2683
  preventPassiveDismissDuringCreate: c,
2661
2684
  resolvedOpen: l,
@@ -2665,10 +2688,10 @@ function $n({
2665
2688
  onOpenChange: r,
2666
2689
  initialCreateFlowActive: o === "create",
2667
2690
  dismissMode: "explicit-only"
2668
- }), h = L((x) => x.dashboard), p = L((x) => x.selectedSheetId), { setDashboardInputs: m } = pe(), g = (S = h.sheets) == null ? void 0 : S.find(
2691
+ }), h = T((x) => x.dashboard), p = T((x) => x.selectedSheetId), { setDashboardInputs: m } = pe(), g = (S = h.sheets) == null ? void 0 : S.find(
2669
2692
  (x) => x.id === p
2670
2693
  ), f = (g == null ? void 0 : g.kind) === "document" && !!g.document, b = oe(
2671
- () => f && (g != null && g.document) ? ta(h, g.id) : [],
2694
+ () => f && (g != null && g.document) ? ka(h, g.id) : [],
2672
2695
  [h, f, g == null ? void 0 : g.document, g == null ? void 0 : g.id]
2673
2696
  ), k = oe(
2674
2697
  () => b.filter(
@@ -2711,15 +2734,15 @@ function $n({
2711
2734
  m
2712
2735
  ]
2713
2736
  );
2714
- return !f || !(g != null && g.document) ? null : /* @__PURE__ */ t(Ue, { open: l, onOpenChange: i, children: /* @__PURE__ */ s(
2715
- Re,
2737
+ return !f || !(g != null && g.document) ? null : /* @__PURE__ */ t(Ue, { open: l, onOpenChange: s, children: /* @__PURE__ */ i(
2738
+ Ve,
2716
2739
  {
2717
2740
  className: "flex max-h-[88vh] flex-col overflow-hidden sm:max-w-[600px]",
2718
2741
  onEscapeKeyDown: c,
2719
2742
  onPointerDownOutside: c,
2720
2743
  children: [
2721
- /* @__PURE__ */ s(wt, { className: d ? "space-y-0" : void 0, children: [
2722
- /* @__PURE__ */ t(Ve, { className: "text-[15px]", children: d ? "Add document control" : "Document Controls" }),
2744
+ /* @__PURE__ */ i(wt, { className: d ? "space-y-0" : void 0, children: [
2745
+ /* @__PURE__ */ t(Re, { className: "text-[15px]", children: d ? "Add document control" : "Document Controls" }),
2723
2746
  /* @__PURE__ */ t(
2724
2747
  Nt,
2725
2748
  {
@@ -2773,14 +2796,14 @@ function qn({
2773
2796
  currentDocumentInputs: o,
2774
2797
  nextControls: a,
2775
2798
  nextDefaultValues: n,
2776
- change: i
2799
+ change: s
2777
2800
  }) {
2778
2801
  const d = new Map(
2779
2802
  a.map((m) => [
2780
2803
  m.id,
2781
2804
  Wn(m, n)
2782
2805
  ])
2783
- ), c = (i == null ? void 0 : i.type) === "rename" ? { oldId: i.oldId, newId: i.newId } : null, l = /* @__PURE__ */ new Set(), u = [];
2806
+ ), c = (s == null ? void 0 : s.type) === "rename" ? { oldId: s.oldId, newId: s.newId } : null, l = /* @__PURE__ */ new Set(), u = [];
2784
2807
  for (const m of o) {
2785
2808
  if (m.kind !== "control") {
2786
2809
  u.push(m);
@@ -2790,7 +2813,7 @@ function qn({
2790
2813
  if (!g)
2791
2814
  continue;
2792
2815
  l.add(g.id);
2793
- const f = vr(
2816
+ const f = Aa(
2794
2817
  g.id,
2795
2818
  [...e, ...u].filter(
2796
2819
  (k) => k.id !== m.id
@@ -2806,7 +2829,7 @@ function qn({
2806
2829
  }
2807
2830
  for (const m of d.values())
2808
2831
  l.has(m.id) || u.push(
2809
- ra({
2832
+ Ia({
2810
2833
  control: m,
2811
2834
  existingInputs: [...e, ...u],
2812
2835
  sheetId: r
@@ -2825,47 +2848,47 @@ function Hn({
2825
2848
  pickerContent: o,
2826
2849
  settingsContent: a,
2827
2850
  size: n = "default",
2828
- className: i,
2851
+ className: s,
2829
2852
  primaryButtonClassName: d,
2830
2853
  secondaryButtonClassName: c,
2831
2854
  pickerContentClassName: l,
2832
2855
  settingsContentClassName: u
2833
2856
  }) {
2834
2857
  const h = n === "toolbar", [p, m] = F(!1), g = ht("interactive");
2835
- return /* @__PURE__ */ s(
2858
+ return /* @__PURE__ */ i(
2836
2859
  "div",
2837
2860
  {
2838
- className: X(
2861
+ className: Y(
2839
2862
  // Height lives on the shell so the outer border is part of the
2840
2863
  // h-7 box (matches regular `size="xs"` buttons). Inner triggers
2841
2864
  // stretch to fill via `h-full`.
2842
2865
  "relative inline-flex items-stretch overflow-hidden rounded-control border border-input bg-background",
2843
2866
  h ? "h-8" : "h-7",
2844
- i
2867
+ s
2845
2868
  ),
2846
2869
  children: [
2847
- /* @__PURE__ */ s(He, { open: e, onOpenChange: r, children: [
2848
- /* @__PURE__ */ t(Qe, { asChild: !0, children: /* @__PURE__ */ s(
2870
+ /* @__PURE__ */ i(qe, { open: e, onOpenChange: r, children: [
2871
+ /* @__PURE__ */ t(He, { asChild: !0, children: /* @__PURE__ */ i(
2849
2872
  U,
2850
2873
  {
2851
2874
  variant: "ghost",
2852
2875
  size: "xs",
2853
- className: X(
2876
+ className: Y(
2854
2877
  "h-full rounded-none border-0 bg-transparent pl-2.5 pr-2 shadow-none hover:bg-accent/50 data-[state=open]:bg-accent/60",
2855
2878
  d
2856
2879
  ),
2857
2880
  children: [
2858
- e ? /* @__PURE__ */ t(Va, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ t(Kt, { className: "h-3.5 w-3.5" }),
2881
+ e ? /* @__PURE__ */ t(Ba, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ t(Kt, { className: "h-3.5 w-3.5" }),
2859
2882
  "Filter"
2860
2883
  ]
2861
2884
  }
2862
2885
  ) }),
2863
2886
  /* @__PURE__ */ t(
2864
- Ge,
2887
+ Qe,
2865
2888
  {
2866
2889
  align: "end",
2867
2890
  sideOffset: 6,
2868
- className: X(
2891
+ className: Y(
2869
2892
  "w-auto rounded-card border border-border/60 p-0 shadow-[0_10px_28px_rgba(0,0,0,0.14)] dark:shadow-[0_10px_28px_rgba(0,0,0,0.5)]",
2870
2893
  l
2871
2894
  ),
@@ -2874,26 +2897,26 @@ function Hn({
2874
2897
  }
2875
2898
  )
2876
2899
  ] }),
2877
- /* @__PURE__ */ s(He, { open: p, onOpenChange: m, children: [
2878
- /* @__PURE__ */ t(Qe, { asChild: !0, children: /* @__PURE__ */ t(
2900
+ /* @__PURE__ */ i(qe, { open: p, onOpenChange: m, children: [
2901
+ /* @__PURE__ */ t(He, { asChild: !0, children: /* @__PURE__ */ t(
2879
2902
  U,
2880
2903
  {
2881
2904
  variant: "ghost",
2882
2905
  size: "xs",
2883
- className: X(
2906
+ className: Y(
2884
2907
  "h-full w-7 rounded-none border-0 border-l border-border/60 bg-transparent px-0 shadow-none hover:bg-accent/50 data-[state=open]:bg-accent/60",
2885
2908
  c
2886
2909
  ),
2887
2910
  "aria-label": "Filter and control actions",
2888
- children: /* @__PURE__ */ t(Zt, { className: "h-3.5 w-3.5" })
2911
+ children: /* @__PURE__ */ t(Yt, { className: "h-3.5 w-3.5" })
2889
2912
  }
2890
2913
  ) }),
2891
2914
  /* @__PURE__ */ t(
2892
- Ge,
2915
+ Qe,
2893
2916
  {
2894
2917
  align: "end",
2895
2918
  sideOffset: 6,
2896
- className: X(
2919
+ className: Y(
2897
2920
  "w-auto rounded-card border border-border/60 p-0 shadow-[0_10px_28px_rgba(0,0,0,0.14)] dark:shadow-[0_10px_28px_rgba(0,0,0,0.5)]",
2898
2921
  u
2899
2922
  ),
@@ -2907,8 +2930,8 @@ function Hn({
2907
2930
  );
2908
2931
  }
2909
2932
  function Qn() {
2910
- Ba();
2911
- const e = L((l) => l.selectedSheetId), r = L((l) => l.selectedFrameId), o = L((l) => l.dashboard), a = L((l) => l.actions.getSelectedFrame), { setSelectedFrameId: n } = pe(), { setCard: i } = Je(), d = ee((l) => l.card.dataSource);
2933
+ Ma();
2934
+ const e = T((l) => l.selectedSheetId), r = T((l) => l.selectedFrameId), o = T((l) => l.dashboard), a = T((l) => l.actions.getSelectedFrame), { setSelectedFrameId: n } = pe(), { setCard: s } = tt(), d = ee((l) => l.card.dataSource);
2912
2935
  return J(() => {
2913
2936
  var u, h;
2914
2937
  let l = a();
@@ -2918,42 +2941,42 @@ function Qn() {
2918
2941
  }
2919
2942
  if (l) {
2920
2943
  const p = l.cards.find((m) => m.id === l.activeCardId);
2921
- p && i(p);
2944
+ p && s(p);
2922
2945
  }
2923
- }, [a, e, r, o, n, i]), {
2946
+ }, [a, e, r, o, n, s]), {
2924
2947
  hasEntities: !!(d != null && d.selectedEntities && d.selectedEntities.length > 0)
2925
2948
  };
2926
2949
  }
2927
2950
  function Gn() {
2928
- const e = L((l) => l.dashboard), r = L(
2951
+ const e = T((l) => l.dashboard), r = T(
2929
2952
  (l) => l.semanticExecutionPayload
2930
- ), o = L((l) => l.actions.addFilter), { hasEntities: a } = Qn(), { isLoading: n } = aa(), i = oe(
2931
- () => xr(e, r),
2953
+ ), o = T((l) => l.actions.addFilter), { hasEntities: a } = Qn(), { isLoading: n } = Xr(), s = oe(
2954
+ () => Fa(e, r),
2932
2955
  [e, r]
2933
- ), c = !yr(e.filters) && i.hasEligibleCards && !n;
2934
- return /* @__PURE__ */ s("div", { className: "flex h-[520px] w-[400px] flex-col", children: [
2935
- c && /* @__PURE__ */ t("div", { className: "border-b border-border/60 p-2", children: /* @__PURE__ */ s(
2956
+ ), c = !Pa(e.filters) && s.hasEligibleCards && !n;
2957
+ return /* @__PURE__ */ i("div", { className: "flex h-[520px] w-[400px] flex-col", children: [
2958
+ c && /* @__PURE__ */ t("div", { className: "border-b border-border/60 p-2", children: /* @__PURE__ */ i(
2936
2959
  "button",
2937
2960
  {
2938
2961
  type: "button",
2939
- onClick: () => o(Cr()),
2940
- title: `Applies to ${i.eligibleCardCount} of ${i.totalCardCount} date-aware cards`,
2962
+ onClick: () => o(Ta()),
2963
+ title: `Applies to ${s.eligibleCardCount} of ${s.totalCardCount} date-aware cards`,
2941
2964
  className: "flex w-full items-start gap-2 rounded-control px-2 py-1.5 text-left outline-none transition-colors hover:bg-muted/40 focus-visible:bg-muted/40 focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-border",
2942
2965
  children: [
2943
2966
  /* @__PURE__ */ t(ja, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
2944
- /* @__PURE__ */ s("span", { className: "flex min-w-0 flex-col", children: [
2967
+ /* @__PURE__ */ i("span", { className: "flex min-w-0 flex-col", children: [
2945
2968
  /* @__PURE__ */ t("span", { className: "text-[12px] font-medium text-foreground", children: "Add global date filter" }),
2946
2969
  /* @__PURE__ */ t("span", { className: "text-[11px] leading-[1.4] text-muted-foreground", children: "One date range across all date-aware cards." })
2947
2970
  ] })
2948
2971
  ]
2949
2972
  }
2950
2973
  ) }),
2951
- !a && /* @__PURE__ */ s("div", { className: "flex flex-1 flex-col items-center justify-center px-6 py-8 text-center", children: [
2952
- /* @__PURE__ */ t(na, { className: "mb-3 h-10 w-10 text-muted-foreground/50" }),
2974
+ !a && /* @__PURE__ */ i("div", { className: "flex flex-1 flex-col items-center justify-center px-6 py-8 text-center", children: [
2975
+ /* @__PURE__ */ t(Yr, { className: "mb-3 h-10 w-10 text-muted-foreground/50" }),
2953
2976
  /* @__PURE__ */ t("h3", { className: "mb-1 text-[13px] font-medium text-foreground", children: "No fields configured" }),
2954
2977
  /* @__PURE__ */ t("p", { className: "text-[11px] text-muted-foreground", children: "Configure a data source for this card to enable filtering." })
2955
2978
  ] }),
2956
- a && /* @__PURE__ */ t("div", { className: "flex flex-1 overflow-hidden", children: /* @__PURE__ */ t(sa, { context: "filter" }) })
2979
+ a && /* @__PURE__ */ t("div", { className: "flex flex-1 overflow-hidden", children: /* @__PURE__ */ t(Zr, { context: "filter" }) })
2957
2980
  ] });
2958
2981
  }
2959
2982
  const Mt = !1;
@@ -2963,13 +2986,13 @@ function Kn({
2963
2986
  onManageControls: o,
2964
2987
  onDismiss: a
2965
2988
  }) {
2966
- const n = L(
2989
+ const n = T(
2967
2990
  (c) => c.dashboard.filterLayout
2968
- ), { setFilterLayout: i } = pe();
2991
+ ), { setFilterLayout: s } = pe();
2969
2992
  n != null && n.displayMode;
2970
2993
  const d = (n == null ? void 0 : n.toolbarWrap) ?? !1;
2971
- return n == null || n.showDownloadButton, /* @__PURE__ */ s("div", { className: "w-[300px]", children: [
2972
- /* @__PURE__ */ s("div", { className: "p-1", children: [
2994
+ return n == null || n.showDownloadButton, /* @__PURE__ */ i("div", { className: "w-[300px]", children: [
2995
+ /* @__PURE__ */ i("div", { className: "p-1", children: [
2973
2996
  /* @__PURE__ */ t(
2974
2997
  ct,
2975
2998
  {
@@ -3002,7 +3025,7 @@ function Kn({
3002
3025
  )
3003
3026
  ] }),
3004
3027
  /* @__PURE__ */ t("div", { className: "border-t border-border/60" }),
3005
- /* @__PURE__ */ s("div", { className: "space-y-1 p-2", children: [
3028
+ /* @__PURE__ */ i("div", { className: "space-y-1 p-2", children: [
3006
3029
  /* @__PURE__ */ t("p", { className: "px-1 text-[10px] font-medium uppercase tracking-[0.08em] text-muted-foreground", children: "Display" }),
3007
3030
  Mt,
3008
3031
  /* @__PURE__ */ t(
@@ -3011,7 +3034,7 @@ function Kn({
3011
3034
  id: "filter-display-wrap",
3012
3035
  label: "Wrap to multiple lines",
3013
3036
  checked: d,
3014
- onCheckedChange: (c) => i({ toolbarWrap: c === !0 })
3037
+ onCheckedChange: (c) => s({ toolbarWrap: c === !0 })
3015
3038
  }
3016
3039
  ),
3017
3040
  Mt
@@ -3023,7 +3046,7 @@ function ct({
3023
3046
  label: r,
3024
3047
  onClick: o
3025
3048
  }) {
3026
- return /* @__PURE__ */ s(
3049
+ return /* @__PURE__ */ i(
3027
3050
  "button",
3028
3051
  {
3029
3052
  type: "button",
@@ -3042,10 +3065,10 @@ function Xn({
3042
3065
  checked: o,
3043
3066
  onCheckedChange: a
3044
3067
  }) {
3045
- return /* @__PURE__ */ s("div", { className: "flex items-center gap-2 rounded-control px-1 py-1 transition-colors hover:bg-muted/40 focus-within:bg-muted/40", children: [
3068
+ return /* @__PURE__ */ i("div", { className: "flex items-center gap-2 rounded-control px-1 py-1 transition-colors hover:bg-muted/40 focus-within:bg-muted/40", children: [
3046
3069
  /* @__PURE__ */ t(Ct, { id: e, checked: o, onCheckedChange: a }),
3047
3070
  /* @__PURE__ */ t(
3048
- Te,
3071
+ Le,
3049
3072
  {
3050
3073
  htmlFor: e,
3051
3074
  className: "cursor-pointer text-[12px] font-normal leading-[1.3]",
@@ -3054,18 +3077,18 @@ function Xn({
3054
3077
  )
3055
3078
  ] });
3056
3079
  }
3057
- function Qs({
3080
+ function to({
3058
3081
  size: e,
3059
3082
  className: r,
3060
3083
  primaryButtonClassName: o,
3061
3084
  secondaryButtonClassName: a,
3062
3085
  pickerContentClassName: n,
3063
- settingsContentClassName: i
3086
+ settingsContentClassName: s
3064
3087
  }) {
3065
3088
  var y;
3066
- const [d, c] = F(null), l = L((w) => w.dashboard), u = L((w) => w.selectedSheetId), h = L((w) => w.showFilters), p = L((w) => w.actions), { setDocumentPanelTarget: m, setShowFilters: g } = p, f = (y = l.sheets) == null ? void 0 : y.find(
3089
+ const [d, c] = F(null), l = T((w) => w.dashboard), u = T((w) => w.selectedSheetId), h = T((w) => w.showFilters), p = T((w) => w.actions), { setDocumentPanelTarget: m, setShowFilters: g } = p, f = (y = l.sheets) == null ? void 0 : y.find(
3067
3090
  (w) => w.id === u
3068
- ), b = wr(f), k = j((w) => {
3091
+ ), b = _a(f), k = j((w) => {
3069
3092
  window.setTimeout(() => {
3070
3093
  c(w);
3071
3094
  }, 0);
@@ -3093,7 +3116,7 @@ function Qs({
3093
3116
  }, [k]), N = j(() => {
3094
3117
  k("manage");
3095
3118
  }, [k]);
3096
- return /* @__PURE__ */ s($, { children: [
3119
+ return /* @__PURE__ */ i($, { children: [
3097
3120
  /* @__PURE__ */ t(
3098
3121
  Hn,
3099
3122
  {
@@ -3114,7 +3137,7 @@ function Qs({
3114
3137
  primaryButtonClassName: o,
3115
3138
  secondaryButtonClassName: a,
3116
3139
  pickerContentClassName: n,
3117
- settingsContentClassName: i
3140
+ settingsContentClassName: s
3118
3141
  }
3119
3142
  ),
3120
3143
  d ? b ? /* @__PURE__ */ t(
@@ -3146,14 +3169,14 @@ function Yn({
3146
3169
  onClick: a
3147
3170
  }) {
3148
3171
  const n = typeof r == "number" && r > 0;
3149
- return /* @__PURE__ */ s(
3172
+ return /* @__PURE__ */ i(
3150
3173
  U,
3151
3174
  {
3152
3175
  type: "button",
3153
3176
  size: "xs",
3154
3177
  variant: "outline",
3155
3178
  disabled: e,
3156
- className: X("gap-1.5", o),
3179
+ className: Y("gap-1.5", o),
3157
3180
  onClick: a,
3158
3181
  "aria-label": "Reports & briefings",
3159
3182
  children: [
@@ -3177,10 +3200,10 @@ function es(e) {
3177
3200
  if (a < 60) return `${a}m ago`;
3178
3201
  const n = Math.round(a / 60);
3179
3202
  if (n < 24) return `${n}h ago`;
3180
- const i = Math.round(n / 24);
3181
- if (i < 7) return `${i}d ago`;
3182
- const d = Math.round(i / 7);
3183
- return d < 5 ? `${d}w ago` : `${Math.round(i / 30)}mo ago`;
3203
+ const s = Math.round(n / 24);
3204
+ if (s < 7) return `${s}d ago`;
3205
+ const d = Math.round(s / 7);
3206
+ return d < 5 ? `${d}w ago` : `${Math.round(s / 30)}mo ago`;
3184
3207
  }
3185
3208
  function ts(e) {
3186
3209
  return e.scheduleExpr ? Oa(
@@ -3220,7 +3243,7 @@ function ns({
3220
3243
  role: "tab",
3221
3244
  "aria-selected": a,
3222
3245
  onClick: () => r(o),
3223
- className: X(
3246
+ className: Y(
3224
3247
  "h-6 rounded-[3px] px-2 text-[11px] transition-colors",
3225
3248
  a ? "bg-background font-medium text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground"
3226
3249
  ),
@@ -3238,7 +3261,7 @@ function ss({
3238
3261
  sourceView: o,
3239
3262
  error: a,
3240
3263
  loading: n,
3241
- onSourceViewChange: i,
3264
+ onSourceViewChange: s,
3242
3265
  onClose: d,
3243
3266
  onEdit: c,
3244
3267
  onNew: l,
@@ -3255,14 +3278,14 @@ function ss({
3255
3278
  hideHeader: E = !1
3256
3279
  }) {
3257
3280
  const N = e.length, y = e.filter((I) => I.status === "ACTIVE").length, w = D === "reports" ? N === 1 ? "report" : "reports" : D === "briefings" ? N === 1 ? "briefing" : "briefings" : N === 1 ? "item" : "items", S = e.find((I) => I.hasActiveRun) ?? null, x = D ?? "reports & briefings", B = o === "dashboard" ? r : `Project ${x}`;
3258
- return /* @__PURE__ */ s(
3281
+ return /* @__PURE__ */ i(
3259
3282
  "section",
3260
3283
  {
3261
3284
  "aria-label": `Dashboard ${x.replace("&", "and")}`,
3262
3285
  className: "flex h-full min-h-0 flex-col bg-background text-foreground",
3263
3286
  children: [
3264
- E ? null : /* @__PURE__ */ s("header", { className: "flex items-start justify-between gap-3 border-b border-border px-4 py-3", children: [
3265
- /* @__PURE__ */ s("div", { className: "min-w-0", children: [
3287
+ E ? null : /* @__PURE__ */ i("header", { className: "flex items-start justify-between gap-3 border-b border-border px-4 py-3", children: [
3288
+ /* @__PURE__ */ i("div", { className: "min-w-0", children: [
3266
3289
  /* @__PURE__ */ t("div", { className: Zn, children: x }),
3267
3290
  /* @__PURE__ */ t("h2", { className: "mt-0.5 truncate text-[14px] font-semibold leading-5", children: B })
3268
3291
  ] }),
@@ -3277,37 +3300,37 @@ function ss({
3277
3300
  }
3278
3301
  )
3279
3302
  ] }),
3280
- /* @__PURE__ */ s("div", { className: "flex items-center justify-between gap-3 border-b border-border px-4 py-2", children: [
3281
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-3", children: [
3303
+ /* @__PURE__ */ i("div", { className: "flex items-center justify-between gap-3 border-b border-border px-4 py-2", children: [
3304
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-center gap-3", children: [
3282
3305
  /* @__PURE__ */ t(
3283
3306
  ns,
3284
3307
  {
3285
3308
  activeView: o,
3286
- onChange: i
3309
+ onChange: s
3287
3310
  }
3288
3311
  ),
3289
- /* @__PURE__ */ t("div", { className: "flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground", children: n && N === 0 ? /* @__PURE__ */ s("span", { children: [
3312
+ /* @__PURE__ */ t("div", { className: "flex min-w-0 items-center gap-1.5 text-[11px] text-muted-foreground", children: n && N === 0 ? /* @__PURE__ */ i("span", { children: [
3290
3313
  "Loading ",
3291
3314
  x,
3292
3315
  "…"
3293
- ] }) : N === 0 ? /* @__PURE__ */ s("span", { children: [
3316
+ ] }) : N === 0 ? /* @__PURE__ */ i("span", { children: [
3294
3317
  "No ",
3295
3318
  x,
3296
3319
  " yet"
3297
- ] }) : /* @__PURE__ */ s($, { children: [
3298
- /* @__PURE__ */ s("span", { className: "font-medium text-foreground/80", children: [
3320
+ ] }) : /* @__PURE__ */ i($, { children: [
3321
+ /* @__PURE__ */ i("span", { className: "font-medium text-foreground/80", children: [
3299
3322
  N,
3300
3323
  " ",
3301
3324
  w
3302
3325
  ] }),
3303
3326
  /* @__PURE__ */ t("span", { className: "text-border", children: "·" }),
3304
- /* @__PURE__ */ s("span", { children: [
3327
+ /* @__PURE__ */ i("span", { children: [
3305
3328
  y,
3306
3329
  " active"
3307
3330
  ] })
3308
3331
  ] }) })
3309
3332
  ] }),
3310
- /* @__PURE__ */ s("div", { className: "flex items-center gap-1.5", children: [
3333
+ /* @__PURE__ */ i("div", { className: "flex items-center gap-1.5", children: [
3311
3334
  n ? (
3312
3335
  // Auto-refresh on open; surface a quiet spinner near the count
3313
3336
  // when a manual reload is in flight, but don't show a separate
@@ -3315,22 +3338,22 @@ function ss({
3315
3338
  // case without crowding the toolbar.
3316
3339
  /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin text-muted-foreground" })
3317
3340
  ) : null,
3318
- N > 0 && u ? p && h ? /* @__PURE__ */ s(rt, { children: [
3319
- /* @__PURE__ */ t(at, { asChild: !0, children: /* @__PURE__ */ s("button", { className: We, children: [
3341
+ N > 0 && u ? p && h ? /* @__PURE__ */ i(rt, { children: [
3342
+ /* @__PURE__ */ t(at, { asChild: !0, children: /* @__PURE__ */ i("button", { className: We, children: [
3320
3343
  /* @__PURE__ */ t(Se, { className: "h-3 w-3" }),
3321
3344
  " New"
3322
3345
  ] }) }),
3323
- /* @__PURE__ */ s(nt, { align: "end", children: [
3324
- /* @__PURE__ */ t(Y, { onClick: () => l("scheduled_report"), children: "Schedule a report" }),
3346
+ /* @__PURE__ */ i(nt, { align: "end", children: [
3347
+ /* @__PURE__ */ t(X, { onClick: () => l("scheduled_report"), children: "Schedule a report" }),
3325
3348
  /* @__PURE__ */ t(
3326
- Y,
3349
+ X,
3327
3350
  {
3328
3351
  onClick: () => l("analytical_briefing"),
3329
3352
  children: "Create analytical briefing"
3330
3353
  }
3331
3354
  )
3332
3355
  ] })
3333
- ] }) : h ? /* @__PURE__ */ s(
3356
+ ] }) : h ? /* @__PURE__ */ i(
3334
3357
  "button",
3335
3358
  {
3336
3359
  onClick: () => l("scheduled_report"),
@@ -3340,7 +3363,7 @@ function ss({
3340
3363
  " Schedule report"
3341
3364
  ]
3342
3365
  }
3343
- ) : p ? /* @__PURE__ */ s(
3366
+ ) : p ? /* @__PURE__ */ i(
3344
3367
  "button",
3345
3368
  {
3346
3369
  onClick: () => l("analytical_briefing"),
@@ -3353,13 +3376,13 @@ function ss({
3353
3376
  ) : null : null
3354
3377
  ] })
3355
3378
  ] }),
3356
- S ? /* @__PURE__ */ s("div", { className: "flex items-center gap-2 border-b border-border bg-muted/60 px-4 py-2 text-[12px]", children: [
3379
+ S ? /* @__PURE__ */ i("div", { className: "flex items-center gap-2 border-b border-border bg-muted/60 px-4 py-2 text-[12px]", children: [
3357
3380
  /* @__PURE__ */ t(ie, { className: "h-3 w-3 shrink-0 animate-spin text-muted-foreground" }),
3358
3381
  /* @__PURE__ */ t("span", { className: "font-medium text-foreground", children: S.name }),
3359
3382
  /* @__PURE__ */ t("span", { className: "text-border", children: "·" }),
3360
3383
  /* @__PURE__ */ t("span", { className: "truncate text-muted-foreground", children: hr(S) })
3361
3384
  ] }) : null,
3362
- /* @__PURE__ */ s("div", { className: "flex-1 overflow-y-auto", children: [
3385
+ /* @__PURE__ */ i("div", { className: "flex-1 overflow-y-auto", children: [
3363
3386
  a ? /* @__PURE__ */ t("div", { className: "m-4 rounded-card border border-destructive/30 bg-destructive/10 px-3 py-2 text-[12px] text-destructive", children: a }) : null,
3364
3387
  !n && e.length === 0 && !a ? /* @__PURE__ */ t(
3365
3388
  os,
@@ -3385,11 +3408,11 @@ function ss({
3385
3408
  I.id
3386
3409
  ))
3387
3410
  ] }),
3388
- v ? /* @__PURE__ */ t("div", { className: "border-t border-border px-4 py-2.5", children: /* @__PURE__ */ s(
3411
+ v ? /* @__PURE__ */ t("div", { className: "border-t border-border px-4 py-2.5", children: /* @__PURE__ */ i(
3389
3412
  "a",
3390
3413
  {
3391
3414
  href: v,
3392
- className: X(ur, "h-6 px-1 text-[11px]"),
3415
+ className: Y(ur, "h-6 px-1 text-[11px]"),
3393
3416
  children: [
3394
3417
  "Manage all reports & briefings",
3395
3418
  /* @__PURE__ */ t(za, { className: "h-3 w-3" })
@@ -3407,19 +3430,19 @@ function os({
3407
3430
  analyticalBriefingsEnabled: a,
3408
3431
  contentKind: n
3409
3432
  }) {
3410
- const i = n === "reports" ? {
3433
+ const s = n === "reports" ? {
3411
3434
  title: "No reports yet",
3412
3435
  description: "Schedule an emailed dashboard or visual report to see it here."
3413
3436
  } : n === "briefings" ? {
3414
3437
  title: "No briefings yet",
3415
3438
  description: "Create an analytical briefing to monitor this dashboard and brief your team."
3416
3439
  } : null;
3417
- return /* @__PURE__ */ s("div", { className: "flex h-full flex-col items-center justify-center px-8 py-12 text-center", children: [
3440
+ return /* @__PURE__ */ i("div", { className: "flex h-full flex-col items-center justify-center px-8 py-12 text-center", children: [
3418
3441
  /* @__PURE__ */ t(is, { className: "mb-5 h-[88px] w-[112px] text-border" }),
3419
- /* @__PURE__ */ t("div", { className: "text-[13px] font-medium text-foreground", children: (i == null ? void 0 : i.title) ?? "Have an analyst brief your team" }),
3420
- /* @__PURE__ */ t("p", { className: "mt-1.5 max-w-[320px] text-[12px] leading-5 text-muted-foreground", children: (i == null ? void 0 : i.description) ?? "Describe what to watch. An analyst digs into this dashboard and the data behind it, then briefs your team on the cadence you choose." }),
3421
- r ? /* @__PURE__ */ s("div", { className: "mt-4 flex flex-wrap justify-center gap-2", children: [
3422
- o ? /* @__PURE__ */ s(
3442
+ /* @__PURE__ */ t("div", { className: "text-[13px] font-medium text-foreground", children: (s == null ? void 0 : s.title) ?? "Have an analyst brief your team" }),
3443
+ /* @__PURE__ */ t("p", { className: "mt-1.5 max-w-[320px] text-[12px] leading-5 text-muted-foreground", children: (s == null ? void 0 : s.description) ?? "Describe what to watch. An analyst digs into this dashboard and the data behind it, then briefs your team on the cadence you choose." }),
3444
+ r ? /* @__PURE__ */ i("div", { className: "mt-4 flex flex-wrap justify-center gap-2", children: [
3445
+ o ? /* @__PURE__ */ i(
3423
3446
  "button",
3424
3447
  {
3425
3448
  onClick: () => e("scheduled_report"),
@@ -3442,7 +3465,7 @@ function os({
3442
3465
  ] });
3443
3466
  }
3444
3467
  function is({ className: e }) {
3445
- return /* @__PURE__ */ s(
3468
+ return /* @__PURE__ */ i(
3446
3469
  "svg",
3447
3470
  {
3448
3471
  viewBox: "0 0 112 88",
@@ -3624,19 +3647,19 @@ function ls({
3624
3647
  isBusy: o,
3625
3648
  onOpen: a,
3626
3649
  onRunNow: n,
3627
- onTogglePause: i,
3650
+ onTogglePause: s,
3628
3651
  onDelete: d
3629
3652
  }) {
3630
3653
  const c = e.status === "PAUSED", l = e.hasActiveRun, u = rs(e), h = es(e.lastRunAt), p = e.lastRunStatus, m = me(e), g = p === "SUCCESS" ? ze.success.dot : p === "FAILED" ? ze.danger.dot : p ? ze.warning.dot : ze.neutral.dot;
3631
- return /* @__PURE__ */ s(
3654
+ return /* @__PURE__ */ i(
3632
3655
  "div",
3633
3656
  {
3634
- className: X(
3657
+ className: Y(
3635
3658
  "group relative border-b border-border/60 px-4 py-3 transition-colors hover:bg-muted/60",
3636
3659
  c && "opacity-70"
3637
3660
  ),
3638
3661
  children: [
3639
- /* @__PURE__ */ s(
3662
+ /* @__PURE__ */ i(
3640
3663
  "div",
3641
3664
  {
3642
3665
  role: "button",
@@ -3647,30 +3670,30 @@ function ls({
3647
3670
  },
3648
3671
  className: "cursor-pointer pr-8",
3649
3672
  children: [
3650
- /* @__PURE__ */ s("div", { className: "flex min-w-0 items-center gap-2", children: [
3673
+ /* @__PURE__ */ i("div", { className: "flex min-w-0 items-center gap-2", children: [
3651
3674
  /* @__PURE__ */ t("span", { className: "truncate text-[13px] font-medium text-foreground", children: e.name }),
3652
3675
  c ? /* @__PURE__ */ t("span", { className: "shrink-0 text-[11px] text-muted-foreground", children: "· Paused" }) : null
3653
3676
  ] }),
3654
- /* @__PURE__ */ s("div", { className: "mt-1 flex flex-wrap items-center gap-x-1.5 text-[11px] text-muted-foreground", children: [
3677
+ /* @__PURE__ */ i("div", { className: "mt-1 flex flex-wrap items-center gap-x-1.5 text-[11px] text-muted-foreground", children: [
3655
3678
  /* @__PURE__ */ t("span", { children: m.typeLabel }),
3656
3679
  /* @__PURE__ */ t("span", { className: "text-border", children: "·" }),
3657
3680
  /* @__PURE__ */ t("span", { children: as(e) }),
3658
3681
  /* @__PURE__ */ t("span", { className: "text-border", children: "·" }),
3659
- /* @__PURE__ */ t(oa, { className: "h-3 w-3" }),
3682
+ /* @__PURE__ */ t(Jr, { className: "h-3 w-3" }),
3660
3683
  /* @__PURE__ */ t("span", { className: "truncate", children: ts(e) }),
3661
- e.lastRunAt ? /* @__PURE__ */ s($, { children: [
3684
+ e.lastRunAt ? /* @__PURE__ */ i($, { children: [
3662
3685
  /* @__PURE__ */ t("span", { className: "text-border", children: "·" }),
3663
- /* @__PURE__ */ s("span", { children: [
3686
+ /* @__PURE__ */ i("span", { children: [
3664
3687
  "Last run ",
3665
3688
  h
3666
3689
  ] })
3667
3690
  ] }) : null
3668
3691
  ] }),
3669
- u || l ? /* @__PURE__ */ s("div", { className: "mt-1.5 flex items-center gap-1.5 text-[12px] leading-[1.5] text-foreground/80", children: [
3692
+ u || l ? /* @__PURE__ */ i("div", { className: "mt-1.5 flex items-center gap-1.5 text-[12px] leading-[1.5] text-foreground/80", children: [
3670
3693
  l ? /* @__PURE__ */ t(ie, { className: "h-3 w-3 shrink-0 animate-spin text-muted-foreground/70" }) : /* @__PURE__ */ t(
3671
3694
  "span",
3672
3695
  {
3673
- className: X(
3696
+ className: Y(
3674
3697
  "inline-block h-1.5 w-1.5 shrink-0 rounded-full",
3675
3698
  g
3676
3699
  )
@@ -3681,7 +3704,7 @@ function ls({
3681
3704
  ]
3682
3705
  }
3683
3706
  ),
3684
- /* @__PURE__ */ t("div", { className: "absolute right-3 top-3", children: o ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin text-muted-foreground/70" }) : r ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin text-muted-foreground/70" }) : /* @__PURE__ */ s(rt, { children: [
3707
+ /* @__PURE__ */ t("div", { className: "absolute right-3 top-3", children: o ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin text-muted-foreground/70" }) : r ? /* @__PURE__ */ t(ie, { className: "h-3.5 w-3.5 animate-spin text-muted-foreground/70" }) : /* @__PURE__ */ i(rt, { children: [
3685
3708
  /* @__PURE__ */ t(at, { asChild: !0, children: /* @__PURE__ */ t(
3686
3709
  "button",
3687
3710
  {
@@ -3692,49 +3715,49 @@ function ls({
3692
3715
  children: /* @__PURE__ */ t(Wt, { className: "h-3.5 w-3.5" })
3693
3716
  }
3694
3717
  ) }),
3695
- /* @__PURE__ */ s(nt, { align: "end", className: "w-44", children: [
3696
- /* @__PURE__ */ s(Y, { onClick: a, children: [
3718
+ /* @__PURE__ */ i(nt, { align: "end", className: "w-44", children: [
3719
+ /* @__PURE__ */ i(X, { onClick: a, children: [
3697
3720
  /* @__PURE__ */ t(Xt, { className: "h-3.5 w-3.5" }),
3698
3721
  "Edit ",
3699
3722
  m.noun
3700
3723
  ] }),
3701
- /* @__PURE__ */ s(
3702
- Y,
3724
+ /* @__PURE__ */ i(
3725
+ X,
3703
3726
  {
3704
3727
  onClick: (f) => {
3705
3728
  f.preventDefault(), n();
3706
3729
  },
3707
3730
  children: [
3708
- /* @__PURE__ */ t(ia, { className: "h-3.5 w-3.5" }),
3731
+ /* @__PURE__ */ t(ea, { className: "h-3.5 w-3.5" }),
3709
3732
  "Run now"
3710
3733
  ]
3711
3734
  }
3712
3735
  ),
3713
3736
  e.scheduleExpr ? /* @__PURE__ */ t(
3714
- Y,
3737
+ X,
3715
3738
  {
3716
3739
  onClick: (f) => {
3717
- f.preventDefault(), i();
3740
+ f.preventDefault(), s();
3718
3741
  },
3719
- children: c ? /* @__PURE__ */ s($, { children: [
3720
- /* @__PURE__ */ t(la, { className: "h-3.5 w-3.5" }),
3742
+ children: c ? /* @__PURE__ */ i($, { children: [
3743
+ /* @__PURE__ */ t(ta, { className: "h-3.5 w-3.5" }),
3721
3744
  "Resume"
3722
- ] }) : /* @__PURE__ */ s($, { children: [
3723
- /* @__PURE__ */ t(ca, { className: "h-3.5 w-3.5" }),
3745
+ ] }) : /* @__PURE__ */ i($, { children: [
3746
+ /* @__PURE__ */ t(ra, { className: "h-3.5 w-3.5" }),
3724
3747
  "Pause"
3725
3748
  ] })
3726
3749
  }
3727
3750
  ) : null,
3728
- /* @__PURE__ */ t(Xe, {}),
3729
- /* @__PURE__ */ s(
3730
- Y,
3751
+ /* @__PURE__ */ t(Ke, {}),
3752
+ /* @__PURE__ */ i(
3753
+ X,
3731
3754
  {
3732
3755
  onClick: (f) => {
3733
3756
  f.preventDefault(), d();
3734
3757
  },
3735
3758
  className: "text-destructive focus:bg-destructive/10 focus:text-destructive",
3736
3759
  children: [
3737
- /* @__PURE__ */ t(Ke, { className: "h-3.5 w-3.5" }),
3760
+ /* @__PURE__ */ t(Ge, { className: "h-3.5 w-3.5" }),
3738
3761
  "Delete ",
3739
3762
  m.noun
3740
3763
  ]
@@ -3760,25 +3783,25 @@ function ms(e, r, o) {
3760
3783
  }
3761
3784
  async function ps(e) {
3762
3785
  const o = [];
3763
- let a = 1, n = 0, i = Number.POSITIVE_INFINITY;
3764
- for (; n < i; ) {
3786
+ let a = 1, n = 0, s = Number.POSITIVE_INFINITY;
3787
+ for (; n < s; ) {
3765
3788
  const d = await e.apiClient.listBriefings(
3766
3789
  e.apiServiceUrl,
3767
3790
  e.token,
3768
3791
  { scope: "organization", page: a, pageSize: 100 }
3769
3792
  );
3770
- if (o.push(...d.briefings), n += d.briefings.length, i = d.total, d.briefings.length === 0 || n >= i) break;
3793
+ if (o.push(...d.briefings), n += d.briefings.length, s = d.total, d.briefings.length === 0 || n >= s) break;
3771
3794
  a += 1;
3772
3795
  }
3773
3796
  return o;
3774
3797
  }
3775
3798
  const fs = {
3776
- listBriefings: ba,
3777
- getBriefing: ga,
3778
- pauseBriefing: fa,
3779
- resumeBriefing: pa,
3780
- deleteBriefing: ma,
3781
- runBriefingNow: ha
3799
+ listBriefings: da,
3800
+ getBriefing: ca,
3801
+ pauseBriefing: la,
3802
+ resumeBriefing: ia,
3803
+ deleteBriefing: oa,
3804
+ runBriefingNow: sa
3782
3805
  };
3783
3806
  function gs({
3784
3807
  briefingId: e,
@@ -3786,10 +3809,10 @@ function gs({
3786
3809
  apiServiceUrl: o,
3787
3810
  token: a,
3788
3811
  onTerminal: n,
3789
- onTimeout: i,
3812
+ onTimeout: s,
3790
3813
  onExpand: d
3791
3814
  }) {
3792
- const [c, l] = F(r), { startRun: u } = Da({
3815
+ const [c, l] = F(r), { startRun: u } = va({
3793
3816
  apiServiceUrl: o,
3794
3817
  token: a,
3795
3818
  intervalMs: cs,
@@ -3798,7 +3821,7 @@ function gs({
3798
3821
  apiServiceUrl: p,
3799
3822
  token: m,
3800
3823
  runId: g
3801
- }) => Ea(p, m, e, g),
3824
+ }) => xa(p, m, e, g),
3802
3825
  onRun: (p) => {
3803
3826
  l(p);
3804
3827
  },
@@ -3806,15 +3829,15 @@ function gs({
3806
3829
  n(p);
3807
3830
  },
3808
3831
  onTimeout: () => {
3809
- i();
3832
+ s();
3810
3833
  }
3811
3834
  }), h = ge(!1);
3812
3835
  return J(() => {
3813
- h.current || (h.current = !0, ka(r.status) ? u(r) : Aa(r.status) && n(r));
3814
- }, [r, n, u]), /* @__PURE__ */ t(Ia, { run: c, onExpand: d });
3836
+ h.current || (h.current = !0, ya(r.status) ? u(r) : Ca(r.status) && n(r));
3837
+ }, [r, n, u]), /* @__PURE__ */ t(wa, { run: c, onExpand: d });
3815
3838
  }
3816
- function Gs(e) {
3817
- return /* @__PURE__ */ t(da, { children: /* @__PURE__ */ t(bs, { ...e }) });
3839
+ function ro(e) {
3840
+ return /* @__PURE__ */ t(aa, { children: /* @__PURE__ */ t(bs, { ...e }) });
3818
3841
  }
3819
3842
  function bs({
3820
3843
  dashboardId: e,
@@ -3822,7 +3845,7 @@ function bs({
3822
3845
  apiServiceUrl: o,
3823
3846
  token: a,
3824
3847
  disabled: n,
3825
- className: i,
3848
+ className: s,
3826
3849
  manageBriefingsHref: d,
3827
3850
  open: c,
3828
3851
  onOpenChange: l,
@@ -3830,7 +3853,7 @@ function bs({
3830
3853
  workflowIntent: h,
3831
3854
  client: p
3832
3855
  }) {
3833
- const { authToken: m, tokenProps: g } = Be(), f = ua(), b = !h || f.canCreate && (h === "scheduled_report" || f.analyticalBriefingsEnabled), [k, v] = F(!1), D = c ?? k, E = (A) => {
3856
+ const { authToken: m, tokenProps: g } = Be(), f = na(), b = !h || f.canCreate && (h === "scheduled_report" || f.analyticalBriefingsEnabled), [k, v] = F(!1), D = c ?? k, E = (A) => {
3834
3857
  c === void 0 && v(A), l == null || l(A);
3835
3858
  }, [N, y] = F(
3836
3859
  h ? "author" : "list"
@@ -3838,7 +3861,7 @@ function bs({
3838
3861
  h ?? "analytical_briefing"
3839
3862
  ), [x, B] = F("dashboard"), [I, W] = F(
3840
3863
  []
3841
- ), [P, M] = F(null), Z = h && !b && !P ? "list" : N, [K, Ce] = F(!1), [ce, O] = F(null), [te, re] = F(null), [T, ae] = F(
3864
+ ), [P, M] = F(null), Z = h && !b && !P ? "list" : N, [K, Ce] = F(!1), [ce, O] = F(null), [te, re] = F(null), [L, ae] = F(
3842
3865
  null
3843
3866
  ), [le, G] = F(null), be = ge(null), ke = ge(D);
3844
3867
  J(() => {
@@ -3898,7 +3921,7 @@ function bs({
3898
3921
  M(null), B("dashboard"), y("list"), E(!0);
3899
3922
  }, C = (A) => {
3900
3923
  M(null), S(A), y("author");
3901
- }, V = async (A) => {
3924
+ }, R = async (A) => {
3902
3925
  if (!(!q || !H)) {
3903
3926
  O(A), G(null);
3904
3927
  try {
@@ -3927,7 +3950,7 @@ function bs({
3927
3950
  { requestId: vs() }
3928
3951
  ), ne();
3929
3952
  } catch (_) {
3930
- R.error(
3953
+ V.error(
3931
3954
  _ instanceof Error ? _.message : "Could not start the run."
3932
3955
  );
3933
3956
  } finally {
@@ -3948,19 +3971,19 @@ function bs({
3948
3971
  H,
3949
3972
  A.id
3950
3973
  );
3951
- R.success(
3974
+ V.success(
3952
3975
  $e.briefing.status === "PAUSED" ? `${Oe} paused` : `${Oe} resumed`
3953
3976
  ), ne();
3954
3977
  } catch ($e) {
3955
- R.error(
3978
+ V.error(
3956
3979
  $e instanceof Error ? $e.message : `Could not update the ${_} status.`
3957
3980
  );
3958
3981
  } finally {
3959
3982
  re(null);
3960
3983
  }
3961
3984
  }, fe = async () => {
3962
- if (!T || !q || !H) return;
3963
- const A = T;
3985
+ if (!L || !q || !H) return;
3986
+ const A = L;
3964
3987
  re(A.id);
3965
3988
  try {
3966
3989
  await he.deleteBriefing(
@@ -3969,27 +3992,27 @@ function bs({
3969
3992
  A.id
3970
3993
  );
3971
3994
  const { noun: _ } = me(A);
3972
- R.success(`${_ === "report" ? "Report" : "Briefing"} deleted`), ae(null), ne();
3995
+ V.success(`${_ === "report" ? "Report" : "Briefing"} deleted`), ae(null), ne();
3973
3996
  } catch (_) {
3974
- R.error(
3997
+ V.error(
3975
3998
  _ instanceof Error ? _.message : "Could not delete the briefing."
3976
3999
  );
3977
4000
  } finally {
3978
4001
  re(null);
3979
4002
  }
3980
4003
  }, mr = _e.length;
3981
- return f.surfaceVisible ? /* @__PURE__ */ s(va, { open: D, onOpenChange: E, children: [
4004
+ return f.surfaceVisible ? /* @__PURE__ */ i(ua, { open: D, onOpenChange: E, children: [
3982
4005
  u ? null : /* @__PURE__ */ t(
3983
4006
  Yn,
3984
4007
  {
3985
4008
  disabled: n || !Ie,
3986
4009
  briefingCount: mr,
3987
- className: i,
4010
+ className: s,
3988
4011
  onClick: Pe
3989
4012
  }
3990
4013
  ),
3991
- /* @__PURE__ */ s(
3992
- xa,
4014
+ /* @__PURE__ */ i(
4015
+ ha,
3993
4016
  {
3994
4017
  ref: be,
3995
4018
  side: "right",
@@ -4000,12 +4023,12 @@ function bs({
4000
4023
  A.preventDefault(), (_ = be.current) == null || _.focus({ preventScroll: !0 });
4001
4024
  },
4002
4025
  children: [
4003
- /* @__PURE__ */ s(ya, { className: "sr-only", children: [
4004
- /* @__PURE__ */ t(Ca, { children: "Reports & briefings" }),
4005
- /* @__PURE__ */ t(wa, { children: "Manage reports and briefings for this dashboard." })
4026
+ /* @__PURE__ */ i(ma, { className: "sr-only", children: [
4027
+ /* @__PURE__ */ t(pa, { children: "Reports & briefings" }),
4028
+ /* @__PURE__ */ t(fa, { children: "Manage reports and briefings for this dashboard." })
4006
4029
  ] }),
4007
- h ? /* @__PURE__ */ s("div", { className: "flex shrink-0 items-start justify-between gap-3 border-b border-border pl-4 pr-3 pt-2", children: [
4008
- /* @__PURE__ */ s(
4030
+ h ? /* @__PURE__ */ i("div", { className: "flex shrink-0 items-start justify-between gap-3 border-b border-border pl-4 pr-3 pt-2", children: [
4031
+ /* @__PURE__ */ i(
4009
4032
  "div",
4010
4033
  {
4011
4034
  className: "flex items-center gap-5",
@@ -4019,7 +4042,7 @@ function bs({
4019
4042
  role: "tab",
4020
4043
  "aria-selected": Z === "author",
4021
4044
  disabled: !b,
4022
- className: X(
4045
+ className: Y(
4023
4046
  "-mb-px border-b-2 px-0.5 pb-2 text-[12px] transition-colors",
4024
4047
  Z === "author" ? "border-foreground font-medium text-foreground" : "border-transparent text-muted-foreground hover:text-foreground",
4025
4048
  !b && "cursor-not-allowed opacity-50"
@@ -4036,7 +4059,7 @@ function bs({
4036
4059
  type: "button",
4037
4060
  role: "tab",
4038
4061
  "aria-selected": Z === "list",
4039
- className: X(
4062
+ className: Y(
4040
4063
  "-mb-px border-b-2 px-0.5 pb-2 text-[12px] transition-colors",
4041
4064
  Z === "list" ? "border-foreground font-medium text-foreground" : "border-transparent text-muted-foreground hover:text-foreground"
4042
4065
  ),
@@ -4069,7 +4092,7 @@ function bs({
4069
4092
  onSourceViewChange: B,
4070
4093
  onClose: () => E(!1),
4071
4094
  onEdit: (A) => {
4072
- V(A);
4095
+ R(A);
4073
4096
  },
4074
4097
  onNew: C,
4075
4098
  canCreate: !h && Fe.length > 0,
@@ -4093,7 +4116,7 @@ function bs({
4093
4116
  hideHeader: !!h
4094
4117
  }
4095
4118
  ) : /* @__PURE__ */ t(
4096
- Na,
4119
+ ga,
4097
4120
  {
4098
4121
  apiServiceUrl: q,
4099
4122
  token: H,
@@ -4107,7 +4130,7 @@ function bs({
4107
4130
  onCancel: () => E(!1),
4108
4131
  onDeleted: () => {
4109
4132
  const A = P ? me(P).noun : "briefing";
4110
- R.success(`${A === "report" ? "Report" : "Briefing"} deleted`), M(null), y("list"), ne();
4133
+ V.success(`${A === "report" ? "Report" : "Briefing"} deleted`), M(null), y("list"), ne();
4111
4134
  },
4112
4135
  onRunStarted: () => {
4113
4136
  },
@@ -4144,7 +4167,7 @@ function bs({
4144
4167
  }
4145
4168
  ) : null,
4146
4169
  se ? /* @__PURE__ */ t("div", { className: "fixed bottom-4 right-4 z-50 w-[360px]", children: /* @__PURE__ */ t(
4147
- Sa,
4170
+ ba,
4148
4171
  {
4149
4172
  title: se.run.status === "SUCCESS" ? `${se.briefing.name} is ready` : `${se.briefing.name} run failed`,
4150
4173
  durationSeconds: se.run.startedAt && se.run.completedAt ? Math.max(
@@ -4163,27 +4186,27 @@ function bs({
4163
4186
  /* @__PURE__ */ t(
4164
4187
  pt,
4165
4188
  {
4166
- open: !!T,
4189
+ open: !!L,
4167
4190
  onOpenChange: (A) => {
4168
4191
  A || ae(null);
4169
4192
  },
4170
- children: /* @__PURE__ */ s(ft, { children: [
4171
- /* @__PURE__ */ s(gt, { children: [
4172
- /* @__PURE__ */ s(bt, { children: [
4193
+ children: /* @__PURE__ */ i(ft, { children: [
4194
+ /* @__PURE__ */ i(gt, { children: [
4195
+ /* @__PURE__ */ i(bt, { children: [
4173
4196
  "Delete",
4174
4197
  " ",
4175
- T ? me(T).noun : "briefing",
4198
+ L ? me(L).noun : "briefing",
4176
4199
  "?"
4177
4200
  ] }),
4178
- /* @__PURE__ */ s(vt, { children: [
4201
+ /* @__PURE__ */ i(vt, { children: [
4179
4202
  "This permanently deletes ",
4180
- /* @__PURE__ */ t("strong", { children: T == null ? void 0 : T.name }),
4203
+ /* @__PURE__ */ t("strong", { children: L == null ? void 0 : L.name }),
4181
4204
  ". Recipients will stop receiving it."
4182
4205
  ] })
4183
4206
  ] }),
4184
- /* @__PURE__ */ s(xt, { children: [
4207
+ /* @__PURE__ */ i(xt, { children: [
4185
4208
  /* @__PURE__ */ t(yt, { children: "Cancel" }),
4186
- /* @__PURE__ */ s(
4209
+ /* @__PURE__ */ i(
4187
4210
  jt,
4188
4211
  {
4189
4212
  className: "bg-destructive/90 hover:bg-destructive",
@@ -4191,7 +4214,7 @@ function bs({
4191
4214
  children: [
4192
4215
  "Delete",
4193
4216
  " ",
4194
- T ? me(T).noun : "briefing"
4217
+ L ? me(L).noun : "briefing"
4195
4218
  ]
4196
4219
  }
4197
4220
  )
@@ -4205,20 +4228,21 @@ function vs() {
4205
4228
  return typeof crypto < "u" && typeof crypto.randomUUID == "function" ? crypto.randomUUID() : `briefing-run-now-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
4206
4229
  }
4207
4230
  export {
4208
- zs as A,
4231
+ Ks as A,
4209
4232
  _n as D,
4210
4233
  Bn as E,
4211
- Hs as N,
4212
- js as U,
4213
- _s as V,
4234
+ eo as N,
4235
+ Xs as U,
4236
+ Hs as V,
4214
4237
  Yn as W,
4215
- $s as a,
4216
- Vn as b,
4217
- Ws as c,
4218
- qs as d,
4238
+ Gs as a,
4239
+ Rn as b,
4240
+ Zs as c,
4241
+ Js as d,
4219
4242
  $n as e,
4220
4243
  Hn as f,
4221
- Qs as g,
4222
- Gs as h,
4223
- Os as u
4244
+ to as g,
4245
+ ro as h,
4246
+ Ys as i,
4247
+ Qs as u
4224
4248
  };