@burdenoff/microfe-proserviceworld 2026.624.1 → 2026.625.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/proserviceworld/pages/AdminReportsPage.js +365 -332
  2. package/dist/proserviceworld/pages/AdminReportsPage.js.map +1 -1
  3. package/dist/proserviceworld/pages/AdminUsersPage.js +257 -237
  4. package/dist/proserviceworld/pages/AdminUsersPage.js.map +1 -1
  5. package/dist/proserviceworld/pages/AnalyticsPage.js +343 -315
  6. package/dist/proserviceworld/pages/AnalyticsPage.js.map +1 -1
  7. package/dist/proserviceworld/pages/BookingsPage.js +191 -174
  8. package/dist/proserviceworld/pages/BookingsPage.js.map +1 -1
  9. package/dist/proserviceworld/pages/DashboardPage.js +383 -346
  10. package/dist/proserviceworld/pages/DashboardPage.js.map +1 -1
  11. package/dist/proserviceworld/pages/DocumentsPage.js +383 -318
  12. package/dist/proserviceworld/pages/DocumentsPage.js.map +1 -1
  13. package/dist/proserviceworld/pages/MessagesPage.js +70 -75
  14. package/dist/proserviceworld/pages/MessagesPage.js.map +1 -1
  15. package/dist/proserviceworld/pages/PaymentsPage.js +367 -340
  16. package/dist/proserviceworld/pages/PaymentsPage.js.map +1 -1
  17. package/dist/proserviceworld/pages/ProjectsPage.js +428 -381
  18. package/dist/proserviceworld/pages/ProjectsPage.js.map +1 -1
  19. package/dist/proserviceworld/pages/ProviderDetailPage.js +390 -346
  20. package/dist/proserviceworld/pages/ProviderDetailPage.js.map +1 -1
  21. package/dist/proserviceworld/pages/ProvidersPage.js +245 -244
  22. package/dist/proserviceworld/pages/ProvidersPage.js.map +1 -1
  23. package/dist/proserviceworld/pages/ReviewsPage.js +14 -14
  24. package/dist/proserviceworld/pages/ReviewsPage.js.map +1 -1
  25. package/dist/proserviceworld/pages/ServiceDetailsPage.js +338 -305
  26. package/dist/proserviceworld/pages/ServiceDetailsPage.js.map +1 -1
  27. package/dist/proserviceworld/pages/ServicesPage.js +156 -153
  28. package/dist/proserviceworld/pages/ServicesPage.js.map +1 -1
  29. package/dist/proserviceworld/pages/VerificationPage.js +260 -251
  30. package/dist/proserviceworld/pages/VerificationPage.js.map +1 -1
  31. package/package.json +2 -2
@@ -2,10 +2,10 @@ import { useProServiceWorldStore as e } from "../store/proserviceworldStore.js";
2
2
  import { useState as t } from "react";
3
3
  import { Activity as n, ArrowDownRight as r, ArrowUpRight as i, BarChart3 as a, Calendar as o, DollarSign as s, Download as c, Globe as l, Minus as u, TrendingDown as d, TrendingUp as f, Users as p } from "lucide-react";
4
4
  import { jsx as m, jsxs as h } from "react/jsx-runtime";
5
- import { Badge as g, Button as _, Card as v, CardContent as y, CardHeader as b, CardTitle as x } from "@burdenoff/fe-libs/ui";
5
+ import { AuroraBackground as g, Badge as _, Button as v, Card as y, CardContent as b, CardHeader as x, CardTitle as S, EmphasisPanel as C, GlassCard as w, GradientText as T } from "@burdenoff/fe-libs/ui";
6
6
  //#region src/proserviceworld/pages/AnalyticsPage.tsx
7
- function S() {
8
- let { analyticsMetrics: S, revenueData: C, clientData: w, servicePerformance: T, geographicData: E } = e(), [D, O] = t("overview"), [k, A] = t("6m"), j = [
7
+ function E() {
8
+ let { analyticsMetrics: E, revenueData: D, clientData: O, servicePerformance: k, geographicData: A } = e(), [j, M] = t("overview"), [N, P] = t("6m"), F = [
9
9
  {
10
10
  key: "overview",
11
11
  label: "Overview",
@@ -31,84 +31,91 @@ function S() {
31
31
  label: "Performance",
32
32
  icon: f
33
33
  }
34
- ], M = (e) => e === "positive" ? /* @__PURE__ */ m(f, { className: "h-4 w-4 text-green-500" }) : e === "negative" ? /* @__PURE__ */ m(d, { className: "h-4 w-4 text-red-500" }) : /* @__PURE__ */ m(u, { className: "h-4 w-4 text-gray-400" }), N = Math.max(...C.map((e) => e.value)), P = Math.max(...w.map((e) => e.value)), F = Math.max(...T.map((e) => e.value));
34
+ ], I = (e) => e === "positive" ? /* @__PURE__ */ m(f, { className: "h-4 w-4 text-status-success-text" }) : e === "negative" ? /* @__PURE__ */ m(d, { className: "h-4 w-4 text-status-error-text" }) : /* @__PURE__ */ m(u, { className: "h-4 w-4 text-text-muted" }), L = Math.max(...D.map((e) => e.value)), R = Math.max(...O.map((e) => e.value)), z = Math.max(...k.map((e) => e.value));
35
35
  return /* @__PURE__ */ h("div", {
36
- className: "space-y-6 p-6",
36
+ className: "space-y-6 p-6 bg-bg-canvas min-h-screen",
37
37
  children: [
38
38
  /* @__PURE__ */ h("div", {
39
- className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
40
- children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
41
- className: "text-2xl font-semibold",
42
- children: "Analytics"
43
- }), /* @__PURE__ */ m("p", {
44
- className: "text-sm text-text-secondary",
45
- children: "Insights and performance metrics for your professional services."
46
- })] }), /* @__PURE__ */ h("div", {
47
- className: "flex items-center gap-2",
48
- children: [/* @__PURE__ */ m("div", {
49
- className: "flex rounded border",
50
- children: [
51
- "1m",
52
- "3m",
53
- "6m",
54
- "1y"
55
- ].map((e) => /* @__PURE__ */ m("button", {
56
- onClick: () => A(e),
57
- className: `px-3 py-1 text-xs font-medium ${k === e ? "bg-action-primary-bg text-action-primary-text" : "text-text-secondary hover:bg-bg-sunken/50"}`,
58
- children: e.toUpperCase()
59
- }, e))
60
- }), /* @__PURE__ */ h(_, {
61
- variant: "outline",
62
- size: "sm",
63
- children: [/* @__PURE__ */ m(c, { className: "mr-2 h-4 w-4" }), " Export"]
39
+ className: "relative overflow-hidden rounded-card -mx-2 px-2 pt-1",
40
+ children: [/* @__PURE__ */ m(g, { intensity: "subtle" }), /* @__PURE__ */ h("div", {
41
+ className: "flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between",
42
+ children: [/* @__PURE__ */ h("div", { children: [/* @__PURE__ */ m("h1", {
43
+ className: "text-2xl font-semibold tracking-tight",
44
+ children: /* @__PURE__ */ m(T, { children: "Analytics" })
45
+ }), /* @__PURE__ */ m("p", {
46
+ className: "text-sm text-text-secondary",
47
+ children: "Insights and performance metrics for your professional services."
48
+ })] }), /* @__PURE__ */ h("div", {
49
+ className: "flex items-center gap-2",
50
+ children: [/* @__PURE__ */ m("div", {
51
+ className: "flex rounded border border-border-seam overflow-hidden",
52
+ children: [
53
+ "1m",
54
+ "3m",
55
+ "6m",
56
+ "1y"
57
+ ].map((e) => /* @__PURE__ */ m("button", {
58
+ onClick: () => P(e),
59
+ "aria-pressed": N === e,
60
+ className: `px-3 py-1 text-xs font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${N === e ? "bg-action-primary-bg text-action-primary-text" : "text-text-secondary hover:bg-bg-sunken/50"}`,
61
+ children: e.toUpperCase()
62
+ }, e))
63
+ }), /* @__PURE__ */ h(v, {
64
+ variant: "outline",
65
+ size: "sm",
66
+ children: [/* @__PURE__ */ m(c, { className: "mr-2 h-4 w-4" }), " Export"]
67
+ })]
64
68
  })]
65
69
  })]
66
70
  }),
67
71
  /* @__PURE__ */ m("div", {
68
- className: "flex gap-1 border-b",
69
- children: j.map(({ key: e, label: t, icon: n }) => /* @__PURE__ */ h("button", {
70
- onClick: () => O(e),
71
- className: `flex items-center gap-2 border-b-2 px-4 py-2 text-sm font-medium transition-colors ${D === e ? "border-primary text-primary" : "border-transparent text-text-secondary hover:text-text-primary"}`,
72
+ className: "flex flex-wrap gap-1 border-b border-border-seam",
73
+ children: F.map(({ key: e, label: t, icon: n }) => /* @__PURE__ */ h("button", {
74
+ onClick: () => M(e),
75
+ "aria-pressed": j === e,
76
+ className: `flex items-center gap-2 border-b-2 px-4 py-2 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-border-focus ${j === e ? "border-action-primary-bg text-text-primary" : "border-transparent text-text-secondary hover:text-text-primary"}`,
72
77
  children: [/* @__PURE__ */ m(n, { className: "h-4 w-4" }), t]
73
78
  }, e))
74
79
  }),
75
80
  /* @__PURE__ */ m("div", {
76
81
  className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-5",
77
- children: S.map((e, t) => /* @__PURE__ */ m(v, { children: /* @__PURE__ */ h(y, {
78
- className: "pt-4",
82
+ children: E.map((e, t) => /* @__PURE__ */ h(w, {
83
+ treatment: t === 0 ? "glass" : "metric",
84
+ glow: t === 0,
85
+ className: "border-border-seam",
79
86
  children: [
80
87
  /* @__PURE__ */ h("div", {
81
88
  className: "flex items-center justify-between",
82
89
  children: [/* @__PURE__ */ m("p", {
83
90
  className: "text-xs font-medium text-text-secondary",
84
91
  children: e.label
85
- }), M(e.changeType)]
92
+ }), I(e.changeType)]
86
93
  }),
87
94
  /* @__PURE__ */ m("p", {
88
- className: "mt-1 text-2xl font-bold",
95
+ className: "mt-1 text-2xl font-bold tabular-nums",
89
96
  children: e.value
90
97
  }),
91
98
  /* @__PURE__ */ h("p", {
92
- className: `mt-0.5 text-xs ${e.changeType === "positive" ? "text-green-600" : e.changeType === "negative" ? "text-red-600" : "text-gray-500"}`,
99
+ className: `mt-0.5 text-xs ${e.changeType === "positive" ? "text-status-success-text" : e.changeType === "negative" ? "text-status-error-text" : "text-text-muted"}`,
93
100
  children: [e.change, " from last period"]
94
101
  })
95
102
  ]
96
- }) }, t))
103
+ }, t))
97
104
  }),
98
- D === "overview" && /* @__PURE__ */ h("div", {
105
+ j === "overview" && /* @__PURE__ */ h("div", {
99
106
  className: "grid gap-6 lg:grid-cols-2",
100
- children: [/* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ h("div", {
101
- className: "flex items-center justify-between",
102
- children: [/* @__PURE__ */ m(x, {
103
- className: "text-base",
107
+ children: [/* @__PURE__ */ h(C, { children: [/* @__PURE__ */ h("div", {
108
+ className: "flex items-center justify-between mb-4",
109
+ children: [/* @__PURE__ */ m("h2", {
110
+ className: "text-base font-semibold tracking-tight",
104
111
  children: "Revenue Trend"
105
- }), /* @__PURE__ */ m(g, {
112
+ }), /* @__PURE__ */ m(_, {
106
113
  variant: "secondary",
107
114
  children: "Last 6 months"
108
115
  })]
109
- }) }), /* @__PURE__ */ m(y, {
116
+ }), /* @__PURE__ */ m("div", {
110
117
  className: "space-y-3",
111
- children: C.map((e) => /* @__PURE__ */ h("div", {
118
+ children: D.map((e) => /* @__PURE__ */ h("div", {
112
119
  className: "flex items-center gap-3",
113
120
  children: [
114
121
  /* @__PURE__ */ m("span", {
@@ -118,15 +125,15 @@ function S() {
118
125
  /* @__PURE__ */ h("div", {
119
126
  className: "relative flex-1 h-6 bg-bg-sunken rounded overflow-hidden",
120
127
  children: [e.prev !== void 0 && /* @__PURE__ */ m("div", {
121
- className: "absolute h-6 bg-muted-foreground/10 rounded",
122
- style: { width: `${e.prev / N * 100}%` }
128
+ className: "absolute h-6 bg-text-muted/15 rounded",
129
+ style: { width: `${e.prev / L * 100}%` }
123
130
  }), /* @__PURE__ */ m("div", {
124
- className: "relative h-6 bg-action-primary-bg rounded",
125
- style: { width: `${e.value / N * 100}%` }
131
+ className: "relative h-6 bg-action-primary-bg rounded shadow-[var(--shadow-glow)]",
132
+ style: { width: `${e.value / L * 100}%` }
126
133
  })]
127
134
  }),
128
135
  /* @__PURE__ */ h("span", {
129
- className: "w-20 text-right text-xs font-medium",
136
+ className: "w-20 text-right text-xs font-medium tabular-nums",
130
137
  children: [
131
138
  "$",
132
139
  (e.value / 1e3).toFixed(1),
@@ -135,299 +142,320 @@ function S() {
135
142
  })
136
143
  ]
137
144
  }, e.name))
138
- })] }), /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ h("div", {
139
- className: "flex items-center justify-between",
140
- children: [/* @__PURE__ */ m(x, {
141
- className: "text-base",
142
- children: "Client Growth"
143
- }), /* @__PURE__ */ m(g, {
144
- variant: "secondary",
145
- children: "Monthly"
146
- })]
147
- }) }), /* @__PURE__ */ m(y, {
148
- className: "space-y-3",
149
- children: w.map((e) => /* @__PURE__ */ h("div", {
150
- className: "flex items-center gap-3",
151
- children: [
152
- /* @__PURE__ */ m("span", {
153
- className: "w-10 text-xs text-text-secondary",
154
- children: e.name
155
- }),
156
- /* @__PURE__ */ m("div", {
157
- className: "flex-1 h-6 bg-bg-sunken rounded overflow-hidden",
158
- children: /* @__PURE__ */ m("div", {
159
- className: "h-6 bg-blue-500 rounded",
160
- style: { width: `${e.value / P * 100}%` }
145
+ })] }), /* @__PURE__ */ h(y, {
146
+ className: "border-border-seam",
147
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
148
+ className: "flex items-center justify-between",
149
+ children: [/* @__PURE__ */ m(S, {
150
+ className: "text-base",
151
+ children: "Client Growth"
152
+ }), /* @__PURE__ */ m(_, {
153
+ variant: "secondary",
154
+ children: "Monthly"
155
+ })]
156
+ }) }), /* @__PURE__ */ m(b, {
157
+ className: "space-y-3",
158
+ children: O.map((e) => /* @__PURE__ */ h("div", {
159
+ className: "flex items-center gap-3",
160
+ children: [
161
+ /* @__PURE__ */ m("span", {
162
+ className: "w-10 text-xs text-text-secondary",
163
+ children: e.name
164
+ }),
165
+ /* @__PURE__ */ m("div", {
166
+ className: "flex-1 h-6 bg-bg-sunken rounded overflow-hidden",
167
+ children: /* @__PURE__ */ m("div", {
168
+ className: "h-6 bg-accent-blue rounded",
169
+ style: { width: `${e.value / R * 100}%` }
170
+ })
171
+ }),
172
+ /* @__PURE__ */ m("span", {
173
+ className: "w-12 text-right text-xs font-medium tabular-nums",
174
+ children: e.value
161
175
  })
162
- }),
163
- /* @__PURE__ */ m("span", {
164
- className: "w-12 text-right text-xs font-medium",
165
- children: e.value
166
- })
167
- ]
168
- }, e.name))
169
- })] })]
176
+ ]
177
+ }, e.name))
178
+ })]
179
+ })]
170
180
  }),
171
- D === "revenue" && /* @__PURE__ */ m("div", {
181
+ j === "revenue" && /* @__PURE__ */ m("div", {
172
182
  className: "space-y-6",
173
- children: /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ m(x, {
174
- className: "text-base",
175
- children: "Revenue Breakdown"
176
- }) }), /* @__PURE__ */ m(y, { children: /* @__PURE__ */ m("div", {
177
- className: "space-y-4",
178
- children: C.map((e) => {
179
- let t = e.prev ? ((e.value - e.prev) / e.prev * 100).toFixed(1) : "0", n = e.prev ? e.value >= e.prev : !0;
180
- return /* @__PURE__ */ h("div", {
181
- className: "flex items-center justify-between rounded-lg border p-4",
182
- children: [/* @__PURE__ */ h("div", {
183
- className: "flex items-center gap-4",
184
- children: [/* @__PURE__ */ m("div", {
185
- className: "flex h-10 w-10 items-center justify-center rounded-lg bg-action-primary-bg/10",
186
- children: /* @__PURE__ */ m(o, { className: "h-5 w-5 text-primary" })
187
- }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
188
- className: "font-medium",
189
- children: [e.name, " 2025"]
190
- }), /* @__PURE__ */ h("p", {
191
- className: "text-sm text-text-secondary",
192
- children: [
193
- "Previous: $",
194
- ((e.prev ?? 0) / 1e3).toFixed(1),
195
- "k"
196
- ]
197
- })] })]
198
- }), /* @__PURE__ */ h("div", {
199
- className: "text-right",
200
- children: [/* @__PURE__ */ h("p", {
201
- className: "text-lg font-bold",
202
- children: [
203
- "$",
204
- (e.value / 1e3).toFixed(1),
205
- "k"
206
- ]
207
- }), /* @__PURE__ */ h("p", {
208
- className: `flex items-center gap-1 text-xs ${n ? "text-green-600" : "text-red-600"}`,
209
- children: [
210
- m(n ? i : r, { className: "h-3 w-3" }),
211
- t,
212
- "%"
213
- ]
183
+ children: /* @__PURE__ */ h(y, {
184
+ className: "border-border-seam",
185
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ m(S, {
186
+ className: "text-base",
187
+ children: "Revenue Breakdown"
188
+ }) }), /* @__PURE__ */ m(b, { children: /* @__PURE__ */ m("div", {
189
+ className: "space-y-4",
190
+ children: D.map((e) => {
191
+ let t = e.prev ? ((e.value - e.prev) / e.prev * 100).toFixed(1) : "0", n = e.prev ? e.value >= e.prev : !0;
192
+ return /* @__PURE__ */ h("div", {
193
+ className: "flex items-center justify-between rounded-lg border border-border-seam p-4 transition-shadow hover:shadow-pop",
194
+ children: [/* @__PURE__ */ h("div", {
195
+ className: "flex items-center gap-4",
196
+ children: [/* @__PURE__ */ m("div", {
197
+ className: "flex h-10 w-10 items-center justify-center rounded-lg bg-accent-soft",
198
+ children: /* @__PURE__ */ m(o, { className: "h-5 w-5 text-text-primary" })
199
+ }), /* @__PURE__ */ h("div", { children: [/* @__PURE__ */ h("p", {
200
+ className: "font-medium",
201
+ children: [e.name, " 2025"]
202
+ }), /* @__PURE__ */ h("p", {
203
+ className: "text-sm text-text-secondary tabular-nums",
204
+ children: [
205
+ "Previous: $",
206
+ ((e.prev ?? 0) / 1e3).toFixed(1),
207
+ "k"
208
+ ]
209
+ })] })]
210
+ }), /* @__PURE__ */ h("div", {
211
+ className: "text-right",
212
+ children: [/* @__PURE__ */ h("p", {
213
+ className: "text-lg font-bold tabular-nums",
214
+ children: [
215
+ "$",
216
+ (e.value / 1e3).toFixed(1),
217
+ "k"
218
+ ]
219
+ }), /* @__PURE__ */ h("p", {
220
+ className: `flex items-center justify-end gap-1 text-xs tabular-nums ${n ? "text-status-success-text" : "text-status-error-text"}`,
221
+ children: [
222
+ m(n ? i : r, { className: "h-3 w-3" }),
223
+ t,
224
+ "%"
225
+ ]
226
+ })]
214
227
  })]
215
- })]
216
- }, e.name);
217
- })
218
- }) })] })
228
+ }, e.name);
229
+ })
230
+ }) })]
231
+ })
219
232
  }),
220
- D === "clients" && /* @__PURE__ */ h("div", {
233
+ j === "clients" && /* @__PURE__ */ h("div", {
221
234
  className: "space-y-6",
222
- children: [/* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ m(x, {
223
- className: "text-base",
224
- children: "Client Acquisition"
225
- }) }), /* @__PURE__ */ m(y, {
226
- className: "space-y-3",
227
- children: w.map((e, t) => {
228
- let n = t > 0 ? w[t - 1]?.value ?? 0 : 0, r = n > 0 ? ((e.value - n) / n * 100).toFixed(0) : "N/A";
229
- return /* @__PURE__ */ h("div", {
230
- className: "flex items-center gap-4 rounded-lg border p-3",
231
- children: [/* @__PURE__ */ h("div", {
232
- className: "flex-1",
235
+ children: [/* @__PURE__ */ h(y, {
236
+ className: "border-border-seam",
237
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ m(S, {
238
+ className: "text-base",
239
+ children: "Client Acquisition"
240
+ }) }), /* @__PURE__ */ m(b, {
241
+ className: "space-y-3",
242
+ children: O.map((e, t) => {
243
+ let n = t > 0 ? O[t - 1]?.value ?? 0 : 0, r = n > 0 ? ((e.value - n) / n * 100).toFixed(0) : "N/A";
244
+ return /* @__PURE__ */ h("div", {
245
+ className: "flex items-center gap-4 rounded-lg border border-border-seam p-3",
233
246
  children: [/* @__PURE__ */ h("div", {
234
- className: "flex items-center justify-between",
235
- children: [/* @__PURE__ */ m("span", {
236
- className: "font-medium",
237
- children: e.name
238
- }), /* @__PURE__ */ h("span", {
239
- className: "text-lg font-bold",
240
- children: [e.value, " clients"]
247
+ className: "flex-1",
248
+ children: [/* @__PURE__ */ h("div", {
249
+ className: "flex items-center justify-between",
250
+ children: [/* @__PURE__ */ m("span", {
251
+ className: "font-medium",
252
+ children: e.name
253
+ }), /* @__PURE__ */ h("span", {
254
+ className: "text-lg font-bold tabular-nums",
255
+ children: [e.value, " clients"]
256
+ })]
257
+ }), /* @__PURE__ */ m("div", {
258
+ className: "mt-2 h-2 overflow-hidden rounded-full bg-bg-sunken",
259
+ children: /* @__PURE__ */ m("div", {
260
+ className: "h-2 rounded-full bg-accent-blue",
261
+ style: { width: `${e.value / R * 100}%` }
262
+ })
241
263
  })]
242
- }), /* @__PURE__ */ m("div", {
243
- className: "mt-2 h-2 overflow-hidden rounded-full bg-bg-sunken",
244
- children: /* @__PURE__ */ m("div", {
245
- className: "h-2 rounded-full bg-blue-500",
246
- style: { width: `${e.value / P * 100}%` }
247
- })
264
+ }), /* @__PURE__ */ m(_, {
265
+ variant: "secondary",
266
+ className: "text-xs tabular-nums",
267
+ children: typeof r == "string" ? r : `+${r}%`
248
268
  })]
249
- }), /* @__PURE__ */ m(g, {
250
- variant: "secondary",
251
- className: "text-xs",
252
- children: typeof r == "string" ? r : `+${r}%`
253
- })]
254
- }, e.name);
255
- })
256
- })] }), /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ h("div", {
257
- className: "flex items-center gap-2",
258
- children: [/* @__PURE__ */ m(l, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ m(x, {
259
- className: "text-base",
260
- children: "Geographic Distribution"
269
+ }, e.name);
270
+ })
261
271
  })]
262
- }) }), /* @__PURE__ */ m(y, { children: /* @__PURE__ */ m("div", {
263
- className: "overflow-x-auto",
264
- children: /* @__PURE__ */ h("table", {
265
- className: "w-full text-sm",
266
- children: [/* @__PURE__ */ m("thead", { children: /* @__PURE__ */ h("tr", {
267
- className: "border-b text-left text-text-secondary",
268
- children: [
269
- /* @__PURE__ */ m("th", {
270
- className: "p-3",
271
- children: "Country"
272
- }),
273
- /* @__PURE__ */ m("th", {
274
- className: "p-3 text-right",
275
- children: "Clients"
276
- }),
277
- /* @__PURE__ */ m("th", {
278
- className: "p-3 text-right",
279
- children: "Revenue"
280
- }),
281
- /* @__PURE__ */ m("th", {
282
- className: "p-3",
283
- children: "Distribution"
284
- })
285
- ]
286
- }) }), /* @__PURE__ */ m("tbody", { children: E.map((e) => {
287
- let t = E.reduce((e, t) => e + t.clients, 0), n = Math.round(e.clients / t * 100);
288
- return /* @__PURE__ */ h("tr", {
289
- className: "border-b hover:bg-bg-sunken/50",
272
+ }), /* @__PURE__ */ h(y, {
273
+ className: "border-border-seam",
274
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ h("div", {
275
+ className: "flex items-center gap-2",
276
+ children: [/* @__PURE__ */ m(l, { className: "h-5 w-5 text-text-secondary" }), /* @__PURE__ */ m(S, {
277
+ className: "text-base",
278
+ children: "Geographic Distribution"
279
+ })]
280
+ }) }), /* @__PURE__ */ m(b, { children: /* @__PURE__ */ m("div", {
281
+ className: "overflow-x-auto",
282
+ children: /* @__PURE__ */ h("table", {
283
+ className: "w-full text-sm",
284
+ children: [/* @__PURE__ */ m("thead", { children: /* @__PURE__ */ h("tr", {
285
+ className: "border-b border-border-seam text-left text-text-secondary",
290
286
  children: [
291
- /* @__PURE__ */ m("td", {
287
+ /* @__PURE__ */ m("th", {
292
288
  className: "p-3 font-medium",
293
- children: e.country
289
+ children: "Country"
294
290
  }),
295
- /* @__PURE__ */ m("td", {
296
- className: "p-3 text-right",
297
- children: e.clients
291
+ /* @__PURE__ */ m("th", {
292
+ className: "p-3 text-right font-medium",
293
+ children: "Clients"
298
294
  }),
299
- /* @__PURE__ */ h("td", {
300
- className: "p-3 text-right",
301
- children: [
302
- "$",
303
- (e.revenue / 1e3).toFixed(0),
304
- "k"
305
- ]
295
+ /* @__PURE__ */ m("th", {
296
+ className: "p-3 text-right font-medium",
297
+ children: "Revenue"
306
298
  }),
307
- /* @__PURE__ */ m("td", {
308
- className: "p-3",
309
- children: /* @__PURE__ */ h("div", {
310
- className: "flex items-center gap-2",
311
- children: [/* @__PURE__ */ m("div", {
312
- className: "h-2 flex-1 overflow-hidden rounded-full bg-bg-sunken",
313
- children: /* @__PURE__ */ m("div", {
314
- className: "h-2 rounded-full bg-action-primary-bg",
315
- style: { width: `${n}%` }
316
- })
317
- }), /* @__PURE__ */ h("span", {
318
- className: "w-10 text-right text-xs text-text-secondary",
319
- children: [n, "%"]
320
- })]
321
- })
299
+ /* @__PURE__ */ m("th", {
300
+ className: "p-3 font-medium",
301
+ children: "Distribution"
322
302
  })
323
303
  ]
324
- }, e.country);
325
- }) })]
326
- })
327
- }) })] })]
304
+ }) }), /* @__PURE__ */ m("tbody", { children: A.map((e) => {
305
+ let t = A.reduce((e, t) => e + t.clients, 0), n = Math.round(e.clients / t * 100);
306
+ return /* @__PURE__ */ h("tr", {
307
+ className: "border-b border-border-seam transition-colors hover:bg-bg-sunken/50",
308
+ children: [
309
+ /* @__PURE__ */ m("td", {
310
+ className: "p-3 font-medium",
311
+ children: e.country
312
+ }),
313
+ /* @__PURE__ */ m("td", {
314
+ className: "p-3 text-right tabular-nums",
315
+ children: e.clients
316
+ }),
317
+ /* @__PURE__ */ h("td", {
318
+ className: "p-3 text-right tabular-nums",
319
+ children: [
320
+ "$",
321
+ (e.revenue / 1e3).toFixed(0),
322
+ "k"
323
+ ]
324
+ }),
325
+ /* @__PURE__ */ m("td", {
326
+ className: "p-3",
327
+ children: /* @__PURE__ */ h("div", {
328
+ className: "flex items-center gap-2",
329
+ children: [/* @__PURE__ */ m("div", {
330
+ className: "h-2 flex-1 overflow-hidden rounded-full bg-bg-sunken",
331
+ children: /* @__PURE__ */ m("div", {
332
+ className: "h-2 rounded-full bg-action-primary-bg",
333
+ style: { width: `${n}%` }
334
+ })
335
+ }), /* @__PURE__ */ h("span", {
336
+ className: "w-10 text-right text-xs text-text-secondary tabular-nums",
337
+ children: [n, "%"]
338
+ })]
339
+ })
340
+ })
341
+ ]
342
+ }, e.country);
343
+ }) })]
344
+ })
345
+ }) })]
346
+ })]
328
347
  }),
329
- D === "services" && /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ m(x, {
330
- className: "text-base",
331
- children: "Service Performance (Total Bookings)"
332
- }) }), /* @__PURE__ */ m(y, {
333
- className: "space-y-3",
334
- children: [...T].sort((e, t) => t.value - e.value).map((e, t) => /* @__PURE__ */ h("div", {
335
- className: "flex items-center gap-4",
336
- children: [/* @__PURE__ */ h("span", {
337
- className: "w-6 text-sm font-medium text-text-secondary",
338
- children: ["#", t + 1]
339
- }), /* @__PURE__ */ h("div", {
340
- className: "flex-1",
341
- children: [/* @__PURE__ */ h("div", {
342
- className: "flex items-center justify-between",
343
- children: [/* @__PURE__ */ m("span", {
344
- className: "text-sm font-medium",
345
- children: e.name
346
- }), /* @__PURE__ */ m("span", {
347
- className: "text-sm font-bold",
348
- children: e.value
349
- })]
350
- }), /* @__PURE__ */ m("div", {
351
- className: "mt-1 h-3 overflow-hidden rounded-full bg-bg-sunken",
352
- children: /* @__PURE__ */ m("div", {
353
- className: "h-3 rounded-full bg-action-primary-bg transition-all",
354
- style: { width: `${e.value / F * 100}%` }
355
- })
356
- })]
357
- })]
358
- }, e.name))
359
- })] }),
360
- D === "performance" && /* @__PURE__ */ h("div", {
361
- className: "grid gap-6 lg:grid-cols-2",
362
- children: [/* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ m(x, {
348
+ j === "services" && /* @__PURE__ */ h(y, {
349
+ className: "border-border-seam",
350
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ m(S, {
363
351
  className: "text-base",
364
- children: "Monthly Revenue vs Previous"
365
- }) }), /* @__PURE__ */ h(y, {
352
+ children: "Service Performance (Total Bookings)"
353
+ }) }), /* @__PURE__ */ m(b, {
366
354
  className: "space-y-3",
367
- children: [C.map((e) => /* @__PURE__ */ h("div", {
368
- className: "space-y-1",
369
- children: [/* @__PURE__ */ h("div", {
370
- className: "flex items-center justify-between text-xs",
371
- children: [/* @__PURE__ */ m("span", {
372
- className: "font-medium",
373
- children: e.name
374
- }), /* @__PURE__ */ h("span", {
375
- className: "text-text-secondary",
376
- children: [
377
- "$",
378
- (e.value / 1e3).toFixed(1),
379
- "k vs $",
380
- ((e.prev ?? 0) / 1e3).toFixed(1),
381
- "k"
382
- ]
383
- })]
355
+ children: [...k].sort((e, t) => t.value - e.value).map((e, t) => /* @__PURE__ */ h("div", {
356
+ className: "flex items-center gap-4",
357
+ children: [/* @__PURE__ */ h("span", {
358
+ className: "w-6 text-sm font-medium text-text-secondary tabular-nums",
359
+ children: ["#", t + 1]
384
360
  }), /* @__PURE__ */ h("div", {
385
- className: "flex gap-1",
386
- children: [/* @__PURE__ */ m("div", {
387
- className: "h-4 rounded bg-action-primary-bg/30",
388
- style: { width: `${(e.prev ?? 0) / N * 100}%` }
361
+ className: "flex-1",
362
+ children: [/* @__PURE__ */ h("div", {
363
+ className: "flex items-center justify-between",
364
+ children: [/* @__PURE__ */ m("span", {
365
+ className: "text-sm font-medium",
366
+ children: e.name
367
+ }), /* @__PURE__ */ m("span", {
368
+ className: "text-sm font-bold tabular-nums",
369
+ children: e.value
370
+ })]
389
371
  }), /* @__PURE__ */ m("div", {
390
- className: "h-4 rounded bg-action-primary-bg",
391
- style: { width: `${e.value / N * 100 - (e.prev ?? 0) / N * 100}%` }
372
+ className: "mt-1 h-3 overflow-hidden rounded-full bg-bg-sunken",
373
+ children: /* @__PURE__ */ m("div", {
374
+ className: "h-3 rounded-full bg-action-primary-bg transition-all",
375
+ style: { width: `${e.value / z * 100}%` }
376
+ })
392
377
  })]
393
378
  })]
394
- }, e.name)), /* @__PURE__ */ h("div", {
395
- className: "mt-4 flex items-center gap-4 text-xs",
396
- children: [/* @__PURE__ */ h("span", {
397
- className: "flex items-center gap-1",
398
- children: [/* @__PURE__ */ m("div", { className: "h-3 w-3 rounded bg-action-primary-bg/30" }), " Previous"]
399
- }), /* @__PURE__ */ h("span", {
400
- className: "flex items-center gap-1",
401
- children: [/* @__PURE__ */ m("div", { className: "h-3 w-3 rounded bg-action-primary-bg" }), " Current"]
379
+ }, e.name))
380
+ })]
381
+ }),
382
+ j === "performance" && /* @__PURE__ */ h("div", {
383
+ className: "grid gap-6 lg:grid-cols-2",
384
+ children: [/* @__PURE__ */ h(y, {
385
+ className: "border-border-seam",
386
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ m(S, {
387
+ className: "text-base",
388
+ children: "Monthly Revenue vs Previous"
389
+ }) }), /* @__PURE__ */ h(b, {
390
+ className: "space-y-3",
391
+ children: [D.map((e) => /* @__PURE__ */ h("div", {
392
+ className: "space-y-1",
393
+ children: [/* @__PURE__ */ h("div", {
394
+ className: "flex items-center justify-between text-xs",
395
+ children: [/* @__PURE__ */ m("span", {
396
+ className: "font-medium",
397
+ children: e.name
398
+ }), /* @__PURE__ */ h("span", {
399
+ className: "text-text-secondary tabular-nums",
400
+ children: [
401
+ "$",
402
+ (e.value / 1e3).toFixed(1),
403
+ "k vs $",
404
+ ((e.prev ?? 0) / 1e3).toFixed(1),
405
+ "k"
406
+ ]
407
+ })]
408
+ }), /* @__PURE__ */ h("div", {
409
+ className: "flex gap-1",
410
+ children: [/* @__PURE__ */ m("div", {
411
+ className: "h-4 rounded bg-action-primary-bg/30",
412
+ style: { width: `${(e.prev ?? 0) / L * 100}%` }
413
+ }), /* @__PURE__ */ m("div", {
414
+ className: "h-4 rounded bg-action-primary-bg",
415
+ style: { width: `${e.value / L * 100 - (e.prev ?? 0) / L * 100}%` }
416
+ })]
417
+ })]
418
+ }, e.name)), /* @__PURE__ */ h("div", {
419
+ className: "mt-4 flex items-center gap-4 text-xs",
420
+ children: [/* @__PURE__ */ h("span", {
421
+ className: "flex items-center gap-1",
422
+ children: [/* @__PURE__ */ m("div", { className: "h-3 w-3 rounded bg-action-primary-bg/30" }), " Previous"]
423
+ }), /* @__PURE__ */ h("span", {
424
+ className: "flex items-center gap-1",
425
+ children: [/* @__PURE__ */ m("div", { className: "h-3 w-3 rounded bg-action-primary-bg" }), " Current"]
426
+ })]
402
427
  })]
403
428
  })]
404
- })] }), /* @__PURE__ */ h(v, { children: [/* @__PURE__ */ m(b, { children: /* @__PURE__ */ m(x, {
405
- className: "text-base",
406
- children: "Top Performing Services"
407
- }) }), /* @__PURE__ */ m(y, { children: /* @__PURE__ */ m("div", {
408
- className: "space-y-3",
409
- children: [...T].sort((e, t) => t.value - e.value).slice(0, 5).map((e, t) => /* @__PURE__ */ h("div", {
410
- className: "flex items-center justify-between rounded-lg border p-3",
411
- children: [/* @__PURE__ */ h("div", {
412
- className: "flex items-center gap-3",
413
- children: [/* @__PURE__ */ m("div", {
414
- className: `flex h-8 w-8 items-center justify-center rounded-full ${t === 0 ? "bg-yellow-100 text-yellow-700" : t === 1 ? "bg-gray-100 text-gray-600" : t === 2 ? "bg-orange-100 text-orange-600" : "bg-bg-sunken text-text-secondary"} text-sm font-bold`,
415
- children: t + 1
416
- }), /* @__PURE__ */ m("span", {
417
- className: "font-medium text-sm",
418
- children: e.name
429
+ }), /* @__PURE__ */ h(y, {
430
+ className: "border-border-seam",
431
+ children: [/* @__PURE__ */ m(x, { children: /* @__PURE__ */ m(S, {
432
+ className: "text-base",
433
+ children: "Top Performing Services"
434
+ }) }), /* @__PURE__ */ m(b, { children: /* @__PURE__ */ m("div", {
435
+ className: "space-y-3",
436
+ children: [...k].sort((e, t) => t.value - e.value).slice(0, 5).map((e, t) => /* @__PURE__ */ h("div", {
437
+ className: "flex items-center justify-between rounded-lg border border-border-seam p-3",
438
+ children: [/* @__PURE__ */ h("div", {
439
+ className: "flex items-center gap-3",
440
+ children: [/* @__PURE__ */ m("div", {
441
+ className: `flex h-8 w-8 items-center justify-center rounded-full text-sm font-bold tabular-nums ${t === 0 ? "bg-status-warning-bg-subtle text-status-warning-text" : t === 1 ? "bg-bg-sunken text-text-secondary" : t === 2 ? "bg-accent-soft text-text-primary" : "bg-bg-sunken text-text-secondary"}`,
442
+ children: t + 1
443
+ }), /* @__PURE__ */ m("span", {
444
+ className: "font-medium text-sm",
445
+ children: e.name
446
+ })]
447
+ }), /* @__PURE__ */ h(_, {
448
+ variant: "secondary",
449
+ children: [e.value, " bookings"]
419
450
  })]
420
- }), /* @__PURE__ */ h(g, {
421
- variant: "secondary",
422
- children: [e.value, " bookings"]
423
- })]
424
- }, e.name))
425
- }) })] })]
451
+ }, e.name))
452
+ }) })]
453
+ })]
426
454
  })
427
455
  ]
428
456
  });
429
457
  }
430
458
  //#endregion
431
- export { S as AnalyticsPage };
459
+ export { E as AnalyticsPage };
432
460
 
433
461
  //# sourceMappingURL=AnalyticsPage.js.map