@burdenoff/microfe-adaptercloud 2026.706.1 → 2026.706.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/adaptercloud/AdapterCloudRoutes.js +5 -1
  2. package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -1
  3. package/dist/adaptercloud/components/ConfirmDialog.js +27 -0
  4. package/dist/adaptercloud/components/ConfirmDialog.js.map +1 -0
  5. package/dist/adaptercloud/components/DataState.js +1 -1
  6. package/dist/adaptercloud/components/DataState.js.map +1 -1
  7. package/dist/adaptercloud/hooks/useAdapterCloudApi.js +50 -31
  8. package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -1
  9. package/dist/adaptercloud/pages/OverviewPage.js +159 -156
  10. package/dist/adaptercloud/pages/OverviewPage.js.map +1 -1
  11. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js +102 -89
  12. package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js.map +1 -1
  13. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js +2 -0
  14. package/dist/adaptercloud/pages/adapters/AdapterFormPage.js.map +1 -1
  15. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js +2 -0
  16. package/dist/adaptercloud/pages/adapters/AdaptersListPage.js.map +1 -1
  17. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js +141 -124
  18. package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js.map +1 -1
  19. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js +2 -0
  20. package/dist/adaptercloud/pages/connections/ConnectionFormPage.js.map +1 -1
  21. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js +1 -0
  22. package/dist/adaptercloud/pages/connections/ConnectionsListPage.js.map +1 -1
  23. package/dist/adaptercloud/pages/costs/CostsPage.js +112 -87
  24. package/dist/adaptercloud/pages/costs/CostsPage.js.map +1 -1
  25. package/dist/adaptercloud/pages/drift/DriftListPage.js +81 -59
  26. package/dist/adaptercloud/pages/drift/DriftListPage.js.map +1 -1
  27. package/dist/adaptercloud/pages/policies/PoliciesListPage.js +2 -0
  28. package/dist/adaptercloud/pages/policies/PoliciesListPage.js.map +1 -1
  29. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js +109 -91
  30. package/dist/adaptercloud/pages/policies/PolicyDetailPage.js.map +1 -1
  31. package/dist/adaptercloud/pages/policies/PolicyFormPage.js +211 -184
  32. package/dist/adaptercloud/pages/policies/PolicyFormPage.js.map +1 -1
  33. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js +153 -111
  34. package/dist/adaptercloud/pages/resources/ResourceDetailPage.js.map +1 -1
  35. package/dist/adaptercloud/pages/resources/ResourcesListPage.js +111 -83
  36. package/dist/adaptercloud/pages/resources/ResourcesListPage.js.map +1 -1
  37. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js +108 -86
  38. package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js.map +1 -1
  39. package/dist/adaptercloud/pages/violations/ViolationsListPage.js +11 -3
  40. package/dist/adaptercloud/pages/violations/ViolationsListPage.js.map +1 -1
  41. package/package.json +1 -1
@@ -1,27 +1,30 @@
1
1
  import { useAdapterCloud as e } from "../context/AdapterCloudContext.js";
2
2
  import { PageLayout as t } from "../components/PageLayout.js";
3
3
  import { MetricsCard as n } from "../components/MetricsCard.js";
4
- import { formatMoney as r, severityRank as i, syncKindLabels as ee } from "../utils/domain.js";
5
- import { StatusBadge as a } from "../components/StatusBadge.js";
6
- import { SeverityBadge as o } from "../components/SeverityBadge.js";
7
- import { DataState as s } from "../components/DataState.js";
8
- import { useAdapters as c, useConnections as l, useCostSummary as u, useDriftRecords as d, useResources as f, useSyncRuns as p, useViolations as m } from "../hooks/useAdapterCloudApi.js";
9
- import { formatRelativeTime as h } from "../utils/formatters.js";
10
- import { useCallback as g, useMemo as _ } from "react";
11
- import { useI18n as v } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
12
- import { Activity as y, AlertCircle as b, ArrowRight as x, Boxes as S, Cable as C, DollarSign as w, GitCompareArrows as T, Plug as E, RefreshCw as D, Server as O, ShieldAlert as k } from "lucide-react";
13
- import { jsx as A, jsxs as j } from "react/jsx-runtime";
14
- import { EmphasisPanel as M, GlassCard as N, PagePurpose as P } from "@burdenoff/fe-libs/ui";
4
+ import { formatMoney as r, severityRank as i, syncKindLabels as a } from "../utils/domain.js";
5
+ import { StatusBadge as o } from "../components/StatusBadge.js";
6
+ import { SeverityBadge as s } from "../components/SeverityBadge.js";
7
+ import { DataState as c } from "../components/DataState.js";
8
+ import { useAdapters as l, useConnections as u, useCostSummary as d, useDriftRecords as f, useResources as p, useSyncRuns as m, useViolations as h } from "../hooks/useAdapterCloudApi.js";
9
+ import { formatRelativeTime as g } from "../utils/formatters.js";
10
+ import { useCallback as _, useMemo as v } from "react";
11
+ import { useI18n as y } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
12
+ import { Activity as b, AlertCircle as x, ArrowRight as S, Boxes as C, Cable as w, DollarSign as T, GitCompareArrows as E, Plug as D, RefreshCw as O, Server as k, ShieldAlert as A } from "lucide-react";
13
+ import { jsx as j, jsxs as M } from "react/jsx-runtime";
14
+ import { EmphasisPanel as ee, GlassCard as N, PagePurpose as P } from "@burdenoff/fe-libs/ui";
15
15
  //#region src/adaptercloud/pages/OverviewPage.tsx
16
- function F() {
17
- let { navigateTo: F, currentUser: I } = e(), { t: L } = v(), R = g((e, t) => {
18
- let n = L(e);
16
+ function F(e) {
17
+ return e ? String(e.pageInfo.totalCount ?? e.items.length) : "—";
18
+ }
19
+ function I() {
20
+ let { navigateTo: I, currentUser: L } = e(), { t: R } = y(), z = _((e, t) => {
21
+ let n = R(e);
19
22
  return n === e ? t : n;
20
- }, [L]), z = c({ pagination: { limit: 100 } }), B = l({ pagination: { limit: 100 } }), V = f({ pagination: { limit: 100 } }), H = m({
23
+ }, [R]), B = l({ pagination: { limit: 100 } }), V = u({ pagination: { limit: 100 } }), H = p({ pagination: { limit: 100 } }), U = h({
21
24
  status: "OPEN",
22
25
  pagination: { limit: 50 }
23
- }), U = d({ status: "DETECTED" }), W = p({ pagination: { limit: 5 } }), G = u(), K = I?.firstName ?? I?.name ?? "there", q = _(() => {
24
- let e = B.data?.items ?? [], t = {
26
+ }), W = f({ status: "DETECTED" }), G = m({ pagination: { limit: 5 } }), K = d(), q = L?.firstName ?? L?.name ?? "there", J = v(() => {
27
+ let e = V.data?.items ?? [], t = {
25
28
  CONNECTED: 0,
26
29
  DEGRADED: 0,
27
30
  ERROR: 0,
@@ -30,72 +33,72 @@ function F() {
30
33
  };
31
34
  for (let n of e) t[n.status] += 1;
32
35
  return t;
33
- }, [B.data]), J = _(() => [...H.data?.items ?? []].sort((e, t) => i[t.severity] - i[e.severity]).slice(0, 5), [H.data]), Y = W.data?.items ?? [], X = _(() => [...G.data?.lines ?? []].sort((e, t) => t.total - e.total).slice(0, 6), [G.data]), Z = z.isLoading || B.isLoading || V.isLoading || H.isLoading || U.isLoading || G.isLoading, Q = z.isError || B.isError || V.isError || H.isError || U.isError || G.isError, $ = g(() => {
34
- z.refetch(), B.refetch(), V.refetch(), H.refetch(), U.refetch(), W.refetch(), G.refetch();
36
+ }, [V.data]), Y = v(() => [...U.data?.items ?? []].sort((e, t) => i[t.severity] - i[e.severity]).slice(0, 5), [U.data]), X = G.data?.items ?? [], Z = v(() => [...K.data?.lines ?? []].sort((e, t) => t.total - e.total).slice(0, 6), [K.data]), Q = B.isLoading || V.isLoading || H.isLoading || U.isLoading || W.isLoading || K.isLoading, te = B.isError || V.isError || H.isError || U.isError || W.isError || K.isError, $ = _(() => {
37
+ B.refetch(), V.refetch(), H.refetch(), U.refetch(), W.refetch(), G.refetch(), K.refetch();
35
38
  }, [
36
- z,
37
39
  B,
38
40
  V,
39
41
  H,
40
42
  U,
41
43
  W,
42
- G
43
- ]), te = [
44
+ G,
45
+ K
46
+ ]), ne = [
44
47
  {
45
- icon: /* @__PURE__ */ A(S, { className: "h-5 w-5" }),
46
- value: z.data?.items.length ? String(z.data.items.length) : z.data ? "0" : "—",
47
- label: R("adaptercloud.overview.adapters", "Adapters"),
48
- onClick: () => F("/adapters")
48
+ icon: /* @__PURE__ */ j(C, { className: "h-5 w-5" }),
49
+ value: F(B.data),
50
+ label: z("adaptercloud.overview.adapters", "Adapters"),
51
+ onClick: () => I("/adapters")
49
52
  },
50
53
  {
51
- icon: /* @__PURE__ */ A(C, { className: "h-5 w-5" }),
52
- value: B.data ? String(B.data.items.length) : "—",
53
- label: R("adaptercloud.overview.connections", "Connections"),
54
- onClick: () => F("/connections")
54
+ icon: /* @__PURE__ */ j(w, { className: "h-5 w-5" }),
55
+ value: F(V.data),
56
+ label: z("adaptercloud.overview.connections", "Connections"),
57
+ onClick: () => I("/connections")
55
58
  },
56
59
  {
57
- icon: /* @__PURE__ */ A(O, { className: "h-5 w-5" }),
58
- value: V.data ? String(V.data.items.length) : "—",
59
- label: R("adaptercloud.overview.resources", "Resources"),
60
- onClick: () => F("/resources")
60
+ icon: /* @__PURE__ */ j(k, { className: "h-5 w-5" }),
61
+ value: F(H.data),
62
+ label: z("adaptercloud.overview.resources", "Resources"),
63
+ onClick: () => I("/resources")
61
64
  },
62
65
  {
63
- icon: /* @__PURE__ */ A(k, { className: "h-5 w-5" }),
64
- value: H.data ? String(H.data.items.length) : "—",
65
- label: R("adaptercloud.overview.openViolations", "Open Violations"),
66
- onClick: () => F("/violations")
66
+ icon: /* @__PURE__ */ j(A, { className: "h-5 w-5" }),
67
+ value: F(U.data),
68
+ label: z("adaptercloud.overview.openViolations", "Open Violations"),
69
+ onClick: () => I("/violations")
67
70
  }
68
71
  ];
69
- return /* @__PURE__ */ j(t, {
70
- title: `${R("adaptercloud.overview.hello", "Welcome back")}, ${K}`,
71
- description: R("adaptercloud.overview.subtitle", "Your infrastructure continuum at a glance — fabric, governance, operations and cost."),
72
- actions: /* @__PURE__ */ j("button", {
72
+ return /* @__PURE__ */ M(t, {
73
+ title: `${z("adaptercloud.overview.hello", "Welcome back")}, ${q}`,
74
+ description: z("adaptercloud.overview.subtitle", "Your infrastructure continuum at a glance — fabric, governance, operations and cost."),
75
+ actions: /* @__PURE__ */ M("button", {
73
76
  type: "button",
74
77
  onClick: $,
75
78
  className: "inline-flex items-center gap-2 rounded-lg border border-border-subtle bg-bg-surface px-3 py-2 text-sm font-medium text-text-primary transition-colors hover:bg-accent",
76
- children: [/* @__PURE__ */ A(D, { className: "h-4 w-4" }), R("adaptercloud.common.refresh", "Refresh")]
79
+ children: [/* @__PURE__ */ j(O, { className: "h-4 w-4" }), z("adaptercloud.common.refresh", "Refresh")]
77
80
  }),
78
- children: [/* @__PURE__ */ A(P, {
81
+ children: [/* @__PURE__ */ j(P, {
79
82
  className: "mb-6",
80
- children: R("adaptercloud.overview.purpose", "AdapterCloud connects your fragmented infrastructure — multi-cloud, on-prem, edge and SaaS — into one governable fabric. This overview is your control plane: see what you run, how connected it is, what is out of policy, and what it costs.")
81
- }), /* @__PURE__ */ j(s, {
82
- isLoading: Z,
83
- isError: Q,
84
- error: z.error,
83
+ children: z("adaptercloud.overview.purpose", "AdapterCloud connects your fragmented infrastructure — multi-cloud, on-prem, edge and SaaS — into one governable fabric. This overview is your control plane: see what you run, how connected it is, what is out of policy, and what it costs.")
84
+ }), /* @__PURE__ */ M(c, {
85
+ isLoading: Q,
86
+ isError: te,
87
+ error: B.error,
85
88
  onRetry: $,
86
89
  children: [
87
- /* @__PURE__ */ j(M, {
90
+ /* @__PURE__ */ M(ee, {
88
91
  className: "mb-8",
89
- children: [/* @__PURE__ */ A("h2", {
92
+ children: [/* @__PURE__ */ j("h2", {
90
93
  className: "mb-4 text-lg font-semibold text-text-primary",
91
- children: R("adaptercloud.overview.estate", "Estate Summary")
92
- }), /* @__PURE__ */ A("div", {
94
+ children: z("adaptercloud.overview.estate", "Estate Summary")
95
+ }), /* @__PURE__ */ j("div", {
93
96
  className: "grid grid-cols-2 gap-4 lg:grid-cols-4",
94
- children: te.map((e) => /* @__PURE__ */ A("button", {
97
+ children: ne.map((e) => /* @__PURE__ */ j("button", {
95
98
  type: "button",
96
99
  onClick: e.onClick,
97
100
  className: "text-left",
98
- children: /* @__PURE__ */ A(n, {
101
+ children: /* @__PURE__ */ j(n, {
99
102
  icon: e.icon,
100
103
  value: e.value,
101
104
  label: e.label
@@ -103,223 +106,223 @@ function F() {
103
106
  }, e.label))
104
107
  })]
105
108
  }),
106
- /* @__PURE__ */ j("div", {
109
+ /* @__PURE__ */ M("div", {
107
110
  className: "mb-8 grid grid-cols-1 gap-6 lg:grid-cols-2",
108
- children: [/* @__PURE__ */ j("section", { children: [/* @__PURE__ */ j("div", {
111
+ children: [/* @__PURE__ */ M("section", { children: [/* @__PURE__ */ M("div", {
109
112
  className: "mb-4 flex items-center justify-between",
110
- children: [/* @__PURE__ */ A("h2", {
113
+ children: [/* @__PURE__ */ j("h2", {
111
114
  className: "text-lg font-semibold text-text-primary",
112
- children: R("adaptercloud.overview.connectionHealth", "Connection Health")
113
- }), /* @__PURE__ */ j("button", {
115
+ children: z("adaptercloud.overview.connectionHealth", "Connection Health")
116
+ }), /* @__PURE__ */ M("button", {
114
117
  type: "button",
115
- onClick: () => F("/connections"),
116
- className: "flex items-center gap-1 text-sm font-medium text-primary hover:underline",
118
+ onClick: () => I("/connections"),
119
+ className: "flex items-center gap-1 text-sm font-medium text-accent-blue hover:underline",
117
120
  children: [
118
- R("adaptercloud.common.viewAll", "View all"),
121
+ z("adaptercloud.common.viewAll", "View all"),
119
122
  " ",
120
- /* @__PURE__ */ A(x, { className: "h-3.5 w-3.5" })
123
+ /* @__PURE__ */ j(S, { className: "h-3.5 w-3.5" })
121
124
  ]
122
125
  })]
123
- }), /* @__PURE__ */ A(N, {
126
+ }), /* @__PURE__ */ j(N, {
124
127
  className: "p-5",
125
- children: B.data && B.data.items.length > 0 ? /* @__PURE__ */ A("ul", {
128
+ children: V.data && V.data.items.length > 0 ? /* @__PURE__ */ j("ul", {
126
129
  className: "space-y-3",
127
130
  children: [
128
- ["CONNECTED", q.CONNECTED],
129
- ["DEGRADED", q.DEGRADED],
130
- ["ERROR", q.ERROR],
131
- ["PENDING", q.PENDING],
132
- ["DISABLED", q.DISABLED]
133
- ].map(([e, t]) => /* @__PURE__ */ j("li", {
131
+ ["CONNECTED", J.CONNECTED],
132
+ ["DEGRADED", J.DEGRADED],
133
+ ["ERROR", J.ERROR],
134
+ ["PENDING", J.PENDING],
135
+ ["DISABLED", J.DISABLED]
136
+ ].map(([e, t]) => /* @__PURE__ */ M("li", {
134
137
  className: "flex items-center justify-between",
135
- children: [/* @__PURE__ */ A(a, { status: e }), /* @__PURE__ */ A("span", {
138
+ children: [/* @__PURE__ */ j(o, { status: e }), /* @__PURE__ */ j("span", {
136
139
  className: "text-sm font-semibold tabular-nums text-text-primary",
137
140
  children: t
138
141
  })]
139
142
  }, e))
140
- }) : /* @__PURE__ */ j("div", {
143
+ }) : /* @__PURE__ */ M("div", {
141
144
  className: "flex flex-col items-center gap-3 py-6 text-center",
142
145
  children: [
143
- /* @__PURE__ */ A(E, { className: "h-8 w-8 text-text-secondary" }),
144
- /* @__PURE__ */ A("p", {
146
+ /* @__PURE__ */ j(D, { className: "h-8 w-8 text-text-secondary" }),
147
+ /* @__PURE__ */ j("p", {
145
148
  className: "text-sm text-text-secondary",
146
- children: R("adaptercloud.overview.noConnections", "No connections yet. Connect a target to start discovering resources.")
149
+ children: z("adaptercloud.overview.noConnections", "No connections yet. Connect a target to start discovering resources.")
147
150
  }),
148
- /* @__PURE__ */ A("button", {
151
+ /* @__PURE__ */ j("button", {
149
152
  type: "button",
150
- onClick: () => F("/connections/new"),
153
+ onClick: () => I("/connections/new"),
151
154
  className: "rounded-lg bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text transition-colors hover:opacity-90",
152
- children: R("adaptercloud.overview.addConnection", "Add connection")
155
+ children: z("adaptercloud.overview.addConnection", "Add connection")
153
156
  })
154
157
  ]
155
158
  })
156
- })] }), /* @__PURE__ */ j("section", { children: [/* @__PURE__ */ j("div", {
159
+ })] }), /* @__PURE__ */ M("section", { children: [/* @__PURE__ */ M("div", {
157
160
  className: "mb-4 flex items-center justify-between",
158
- children: [/* @__PURE__ */ A("h2", {
161
+ children: [/* @__PURE__ */ j("h2", {
159
162
  className: "text-lg font-semibold text-text-primary",
160
- children: R("adaptercloud.overview.costByService", "Cost by Service")
161
- }), /* @__PURE__ */ j("button", {
163
+ children: z("adaptercloud.overview.costByService", "Cost by Service")
164
+ }), /* @__PURE__ */ M("button", {
162
165
  type: "button",
163
- onClick: () => F("/costs"),
164
- className: "flex items-center gap-1 text-sm font-medium text-primary hover:underline",
166
+ onClick: () => I("/costs"),
167
+ className: "flex items-center gap-1 text-sm font-medium text-accent-blue hover:underline",
165
168
  children: [
166
- R("adaptercloud.overview.finops", "FinOps"),
169
+ z("adaptercloud.overview.finops", "FinOps"),
167
170
  " ",
168
- /* @__PURE__ */ A(x, { className: "h-3.5 w-3.5" })
171
+ /* @__PURE__ */ j(S, { className: "h-3.5 w-3.5" })
169
172
  ]
170
173
  })]
171
- }), /* @__PURE__ */ j(N, {
174
+ }), /* @__PURE__ */ M(N, {
172
175
  className: "p-5",
173
- children: [/* @__PURE__ */ j("div", {
176
+ children: [/* @__PURE__ */ M("div", {
174
177
  className: "mb-4 flex items-baseline gap-2",
175
178
  children: [
176
- /* @__PURE__ */ A(w, { className: "h-5 w-5 text-text-secondary" }),
177
- /* @__PURE__ */ A("span", {
179
+ /* @__PURE__ */ j(T, { className: "h-5 w-5 text-text-secondary" }),
180
+ /* @__PURE__ */ j("span", {
178
181
  className: "text-2xl font-bold tabular-nums text-text-primary",
179
- children: G.data ? r(G.data.total, G.data.currency) : "—"
182
+ children: K.data ? r(K.data.total, K.data.currency) : "—"
180
183
  }),
181
- /* @__PURE__ */ A("span", {
184
+ /* @__PURE__ */ j("span", {
182
185
  className: "text-sm text-text-secondary",
183
- children: R("adaptercloud.overview.totalSpend", "total spend")
186
+ children: z("adaptercloud.overview.totalSpend", "total spend")
184
187
  })
185
188
  ]
186
- }), X.length > 0 ? /* @__PURE__ */ A("ul", {
189
+ }), Z.length > 0 ? /* @__PURE__ */ j("ul", {
187
190
  className: "space-y-2",
188
- children: X.map((e) => /* @__PURE__ */ j("li", {
191
+ children: Z.map((e) => /* @__PURE__ */ M("li", {
189
192
  className: "flex items-center justify-between text-sm",
190
- children: [/* @__PURE__ */ A("span", {
193
+ children: [/* @__PURE__ */ j("span", {
191
194
  className: "truncate text-text-primary",
192
195
  children: e.service
193
- }), /* @__PURE__ */ A("span", {
196
+ }), /* @__PURE__ */ j("span", {
194
197
  className: "tabular-nums text-text-secondary",
195
- children: r(e.total, G.data?.currency ?? "USD")
198
+ children: r(e.total, K.data?.currency ?? "USD")
196
199
  })]
197
200
  }, e.service))
198
- }) : /* @__PURE__ */ A("p", {
201
+ }) : /* @__PURE__ */ j("p", {
199
202
  className: "py-4 text-center text-sm text-text-secondary",
200
- children: R("adaptercloud.overview.noCost", "No cost records ingested yet. Run a cost-ingest sync to populate FinOps.")
203
+ children: z("adaptercloud.overview.noCost", "No cost records ingested yet. Run a cost-ingest sync to populate FinOps.")
201
204
  })]
202
205
  })] })]
203
206
  }),
204
- /* @__PURE__ */ j("div", {
207
+ /* @__PURE__ */ M("div", {
205
208
  className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
206
- children: [/* @__PURE__ */ j("section", { children: [
207
- /* @__PURE__ */ j("div", {
209
+ children: [/* @__PURE__ */ M("section", { children: [
210
+ /* @__PURE__ */ M("div", {
208
211
  className: "mb-4 flex items-center justify-between",
209
- children: [/* @__PURE__ */ A("h2", {
212
+ children: [/* @__PURE__ */ j("h2", {
210
213
  className: "text-lg font-semibold text-text-primary",
211
- children: R("adaptercloud.overview.priorityViolations", "Priority Violations")
212
- }), /* @__PURE__ */ j("button", {
214
+ children: z("adaptercloud.overview.priorityViolations", "Priority Violations")
215
+ }), /* @__PURE__ */ M("button", {
213
216
  type: "button",
214
- onClick: () => F("/violations"),
215
- className: "flex items-center gap-1 text-sm font-medium text-primary hover:underline",
217
+ onClick: () => I("/violations"),
218
+ className: "flex items-center gap-1 text-sm font-medium text-accent-blue hover:underline",
216
219
  children: [
217
- R("adaptercloud.overview.queue", "Queue"),
220
+ z("adaptercloud.overview.queue", "Queue"),
218
221
  " ",
219
- /* @__PURE__ */ A(x, { className: "h-3.5 w-3.5" })
222
+ /* @__PURE__ */ j(S, { className: "h-3.5 w-3.5" })
220
223
  ]
221
224
  })]
222
225
  }),
223
- /* @__PURE__ */ A("div", {
226
+ /* @__PURE__ */ j("div", {
224
227
  className: "divide-y divide-border rounded-xl border border-border-subtle bg-bg-surface",
225
- children: J.length > 0 ? J.map((e) => /* @__PURE__ */ j("button", {
228
+ children: Y.length > 0 ? Y.map((e) => /* @__PURE__ */ M("button", {
226
229
  type: "button",
227
- onClick: () => F("/violations"),
230
+ onClick: () => I("/violations"),
228
231
  className: "flex w-full items-start gap-3 px-4 py-3 text-left transition-colors hover:bg-accent/50",
229
232
  children: [
230
- /* @__PURE__ */ A(b, { className: "mt-0.5 h-4 w-4 shrink-0 text-status-error-text" }),
231
- /* @__PURE__ */ j("div", {
233
+ /* @__PURE__ */ j(x, { className: "mt-0.5 h-4 w-4 shrink-0 text-status-error-text" }),
234
+ /* @__PURE__ */ M("div", {
232
235
  className: "min-w-0 flex-1",
233
- children: [/* @__PURE__ */ A("p", {
236
+ children: [/* @__PURE__ */ j("p", {
234
237
  className: "truncate text-sm font-medium text-text-primary",
235
238
  children: e.message
236
- }), /* @__PURE__ */ j("p", {
239
+ }), /* @__PURE__ */ M("p", {
237
240
  className: "mt-0.5 text-xs text-text-secondary",
238
241
  children: [
239
- e.policy?.name ?? R("adaptercloud.overview.policy", "Policy"),
242
+ e.policy?.name ?? z("adaptercloud.overview.policy", "Policy"),
240
243
  " ·",
241
244
  " ",
242
- h(e.detectedAt)
245
+ g(e.detectedAt)
243
246
  ]
244
247
  })]
245
248
  }),
246
- /* @__PURE__ */ A(o, { severity: e.severity })
249
+ /* @__PURE__ */ j(s, { severity: e.severity })
247
250
  ]
248
- }, e.id)) : /* @__PURE__ */ j("div", {
251
+ }, e.id)) : /* @__PURE__ */ M("div", {
249
252
  className: "flex flex-col items-center gap-2 px-4 py-8 text-center",
250
- children: [/* @__PURE__ */ A(k, { className: "h-8 w-8 text-status-success-text" }), /* @__PURE__ */ A("p", {
253
+ children: [/* @__PURE__ */ j(A, { className: "h-8 w-8 text-status-success-text" }), /* @__PURE__ */ j("p", {
251
254
  className: "text-sm text-text-secondary",
252
- children: R("adaptercloud.overview.noViolations", "No open violations. Estate is clean.")
255
+ children: z("adaptercloud.overview.noViolations", "No open violations. Estate is clean.")
253
256
  })]
254
257
  })
255
258
  }),
256
- U.data && U.data.length > 0 && /* @__PURE__ */ j("button", {
259
+ W.data && W.data.length > 0 && /* @__PURE__ */ M("button", {
257
260
  type: "button",
258
- onClick: () => F("/drift"),
261
+ onClick: () => I("/drift"),
259
262
  className: "mt-3 flex w-full items-center gap-2 rounded-lg border border-border-subtle bg-bg-surface px-4 py-3 text-left text-sm transition-colors hover:bg-accent/50",
260
263
  children: [
261
- /* @__PURE__ */ A(T, { className: "h-4 w-4 text-status-warning-text" }),
262
- /* @__PURE__ */ j("span", {
264
+ /* @__PURE__ */ j(E, { className: "h-4 w-4 text-status-warning-text" }),
265
+ /* @__PURE__ */ M("span", {
263
266
  className: "text-text-primary",
264
267
  children: [
265
- U.data.length,
268
+ W.data.length,
266
269
  " ",
267
- R("adaptercloud.overview.driftDetected", "drift records detected")
270
+ z("adaptercloud.overview.driftDetected", "drift records detected")
268
271
  ]
269
272
  }),
270
- /* @__PURE__ */ A(x, { className: "ml-auto h-3.5 w-3.5 text-text-secondary" })
273
+ /* @__PURE__ */ j(S, { className: "ml-auto h-3.5 w-3.5 text-text-secondary" })
271
274
  ]
272
275
  })
273
- ] }), /* @__PURE__ */ j("section", { children: [/* @__PURE__ */ j("div", {
276
+ ] }), /* @__PURE__ */ M("section", { children: [/* @__PURE__ */ M("div", {
274
277
  className: "mb-4 flex items-center justify-between",
275
- children: [/* @__PURE__ */ A("h2", {
278
+ children: [/* @__PURE__ */ j("h2", {
276
279
  className: "text-lg font-semibold text-text-primary",
277
- children: R("adaptercloud.overview.recentRuns", "Recent Sync Runs")
278
- }), /* @__PURE__ */ j("button", {
280
+ children: z("adaptercloud.overview.recentRuns", "Recent Sync Runs")
281
+ }), /* @__PURE__ */ M("button", {
279
282
  type: "button",
280
- onClick: () => F("/sync-runs"),
281
- className: "flex items-center gap-1 text-sm font-medium text-primary hover:underline",
283
+ onClick: () => I("/sync-runs"),
284
+ className: "flex items-center gap-1 text-sm font-medium text-accent-blue hover:underline",
282
285
  children: [
283
- R("adaptercloud.common.viewAll", "View all"),
286
+ z("adaptercloud.common.viewAll", "View all"),
284
287
  " ",
285
- /* @__PURE__ */ A(x, { className: "h-3.5 w-3.5" })
288
+ /* @__PURE__ */ j(S, { className: "h-3.5 w-3.5" })
286
289
  ]
287
290
  })]
288
- }), /* @__PURE__ */ A("div", {
291
+ }), /* @__PURE__ */ j("div", {
289
292
  className: "divide-y divide-border rounded-xl border border-border-subtle bg-bg-surface",
290
- children: Y.length > 0 ? Y.map((e) => /* @__PURE__ */ j("button", {
293
+ children: X.length > 0 ? X.map((e) => /* @__PURE__ */ M("button", {
291
294
  type: "button",
292
- onClick: () => F("/sync-runs"),
295
+ onClick: () => I("/sync-runs"),
293
296
  className: "flex w-full items-center gap-3 px-4 py-3 text-left transition-colors hover:bg-accent/50",
294
297
  children: [
295
- /* @__PURE__ */ A("div", {
298
+ /* @__PURE__ */ j("div", {
296
299
  className: "flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-bg-sunken",
297
- children: /* @__PURE__ */ A(y, { className: "h-4 w-4 text-text-secondary" })
300
+ children: /* @__PURE__ */ j(b, { className: "h-4 w-4 text-text-secondary" })
298
301
  }),
299
- /* @__PURE__ */ j("div", {
302
+ /* @__PURE__ */ M("div", {
300
303
  className: "min-w-0 flex-1",
301
- children: [/* @__PURE__ */ A("p", {
304
+ children: [/* @__PURE__ */ j("p", {
302
305
  className: "text-sm font-medium text-text-primary",
303
- children: ee[e.kind]
304
- }), /* @__PURE__ */ j("p", {
306
+ children: a[e.kind]
307
+ }), /* @__PURE__ */ M("p", {
305
308
  className: "mt-0.5 text-xs text-text-secondary",
306
309
  children: [
307
310
  e.discoveredCount,
308
311
  " ",
309
- R("adaptercloud.overview.discovered", "discovered"),
312
+ z("adaptercloud.overview.discovered", "discovered"),
310
313
  " ",
311
314
  "· ",
312
- h(e.createdAt)
315
+ g(e.createdAt)
313
316
  ]
314
317
  })]
315
318
  }),
316
- /* @__PURE__ */ A(a, { status: e.status })
319
+ /* @__PURE__ */ j(o, { status: e.status })
317
320
  ]
318
- }, e.id)) : /* @__PURE__ */ j("div", {
321
+ }, e.id)) : /* @__PURE__ */ M("div", {
319
322
  className: "flex flex-col items-center gap-2 px-4 py-8 text-center",
320
- children: [/* @__PURE__ */ A(D, { className: "h-8 w-8 text-text-secondary" }), /* @__PURE__ */ A("p", {
323
+ children: [/* @__PURE__ */ j(O, { className: "h-8 w-8 text-text-secondary" }), /* @__PURE__ */ j("p", {
321
324
  className: "text-sm text-text-secondary",
322
- children: R("adaptercloud.overview.noRuns", "No sync runs yet.")
325
+ children: z("adaptercloud.overview.noRuns", "No sync runs yet.")
323
326
  })]
324
327
  })
325
328
  })] })]
@@ -329,6 +332,6 @@ function F() {
329
332
  });
330
333
  }
331
334
  //#endregion
332
- export { F as OverviewPage };
335
+ export { I as OverviewPage };
333
336
 
334
337
  //# sourceMappingURL=OverviewPage.js.map