@pablo2410/shared-ui 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,6 @@
1
+ import {
2
+ readActiveEnterpriseCookie
3
+ } from "./chunk-4ATPOBMZ.js";
1
4
  import {
2
5
  Avatar,
3
6
  AvatarFallback,
@@ -130,8 +133,58 @@ function HealthFooter({
130
133
  );
131
134
  }
132
135
 
133
- // src/layout/DashboardLayout.tsx
136
+ // src/layout/EnterpriseDebugLabel.tsx
137
+ import { useEffect as useEffect2, useState as useState2 } from "react";
134
138
  import { Fragment, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
139
+ function EnterpriseDebugLabel({
140
+ selectionEnterpriseId,
141
+ cookieEnterpriseName,
142
+ className
143
+ }) {
144
+ const [cookieId, setCookieId] = useState2(null);
145
+ useEffect2(() => {
146
+ const read = () => setCookieId(readActiveEnterpriseCookie());
147
+ read();
148
+ window.addEventListener("focus", read);
149
+ document.addEventListener("visibilitychange", read);
150
+ return () => {
151
+ window.removeEventListener("focus", read);
152
+ document.removeEventListener("visibilitychange", read);
153
+ };
154
+ }, []);
155
+ const cookieNum = cookieId !== null && cookieId !== "" ? Number(cookieId) : null;
156
+ const hasSelection = selectionEnterpriseId !== void 0 && selectionEnterpriseId !== null;
157
+ const mismatch = hasSelection && cookieNum !== null && cookieNum !== selectionEnterpriseId;
158
+ const noActive = cookieNum === null;
159
+ return /* @__PURE__ */ jsxs2(
160
+ "div",
161
+ {
162
+ className: cn(
163
+ "flex items-center gap-1.5 px-2 py-1 rounded-md border font-mono text-[10px] leading-none whitespace-nowrap",
164
+ mismatch ? "bg-[#EF4444]/15 border-[#EF4444]/40 text-[#FCA5A5]" : noActive ? "bg-[#F59E0B]/15 border-[#F59E0B]/40 text-[#FCD34D]" : "bg-[#10B981]/10 border-[#10B981]/30 text-[#6EE7B7]",
165
+ className
166
+ ),
167
+ title: "TEMP DIAGNOSTIC: enterprise the loaded data is scoped to (cookie) vs. the UI hierarchy selection. Remove once subdomain data issue is fixed.",
168
+ children: [
169
+ /* @__PURE__ */ jsx2("span", { "aria-hidden": true, children: "\u{1F50D}" }),
170
+ noActive ? /* @__PURE__ */ jsx2("span", { children: "no active enterprise (cookie unset)" }) : /* @__PURE__ */ jsxs2(Fragment, { children: [
171
+ /* @__PURE__ */ jsxs2("span", { children: [
172
+ "data ENT #",
173
+ cookieNum,
174
+ cookieEnterpriseName ? ` \xB7 ${cookieEnterpriseName}` : ""
175
+ ] }),
176
+ hasSelection && /* @__PURE__ */ jsxs2("span", { children: [
177
+ mismatch ? " \u26A0 \u2260 sel #" : " \xB7 sel #",
178
+ selectionEnterpriseId
179
+ ] })
180
+ ] })
181
+ ]
182
+ }
183
+ );
184
+ }
185
+
186
+ // src/layout/DashboardLayout.tsx
187
+ import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
135
188
  var DEFAULT_SERVICE_HUB_URL = "https://portal.oplytics.digital/app";
136
189
  var DEFAULT_USER_SETTINGS_URL = "https://portal.oplytics.digital/account";
137
190
  function UserMenu({
@@ -140,17 +193,17 @@ function UserMenu({
140
193
  userSettingsUrl = DEFAULT_USER_SETTINGS_URL
141
194
  }) {
142
195
  const initials = (user.name || "U").split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
143
- return /* @__PURE__ */ jsxs2(DropdownMenu, { children: [
144
- /* @__PURE__ */ jsx2(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs2("button", { className: "flex items-center gap-2 rounded-md px-2 py-1 hover:bg-[#1E2738] transition-colors outline-none focus-visible:ring-1 focus-visible:ring-[#8C34E9]", children: [
145
- /* @__PURE__ */ jsx2(Avatar, { className: "h-7 w-7 border border-[#2A2A3E]", children: /* @__PURE__ */ jsx2(AvatarFallback, { className: "text-[10px] font-medium bg-[#8C34E9]/20 text-[#C084FC]", children: initials }) }),
146
- /* @__PURE__ */ jsx2("span", { className: "hidden md:block text-xs text-[#E2E8F0] truncate max-w-[100px]", children: user.name || "User" })
196
+ return /* @__PURE__ */ jsxs3(DropdownMenu, { children: [
197
+ /* @__PURE__ */ jsx3(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs3("button", { className: "flex items-center gap-2 rounded-md px-2 py-1 hover:bg-[#1E2738] transition-colors outline-none focus-visible:ring-1 focus-visible:ring-[#8C34E9]", children: [
198
+ /* @__PURE__ */ jsx3(Avatar, { className: "h-7 w-7 border border-[#2A2A3E]", children: /* @__PURE__ */ jsx3(AvatarFallback, { className: "text-[10px] font-medium bg-[#8C34E9]/20 text-[#C084FC]", children: initials }) }),
199
+ /* @__PURE__ */ jsx3("span", { className: "hidden md:block text-xs text-[#E2E8F0] truncate max-w-[100px]", children: user.name || "User" })
147
200
  ] }) }),
148
- /* @__PURE__ */ jsxs2(DropdownMenuContent, { align: "end", className: "w-48 bg-[#0D1220] border-[#1E2738]", children: [
149
- /* @__PURE__ */ jsxs2("div", { className: "px-3 py-2 border-b border-[#1E2738]", children: [
150
- /* @__PURE__ */ jsx2("p", { className: "text-xs font-medium text-[#E2E8F0] truncate", children: user.name }),
151
- /* @__PURE__ */ jsx2("p", { className: "text-[10px] text-[#596475] truncate", children: user.role })
201
+ /* @__PURE__ */ jsxs3(DropdownMenuContent, { align: "end", className: "w-48 bg-[#0D1220] border-[#1E2738]", children: [
202
+ /* @__PURE__ */ jsxs3("div", { className: "px-3 py-2 border-b border-[#1E2738]", children: [
203
+ /* @__PURE__ */ jsx3("p", { className: "text-xs font-medium text-[#E2E8F0] truncate", children: user.name }),
204
+ /* @__PURE__ */ jsx3("p", { className: "text-[10px] text-[#596475] truncate", children: user.role })
152
205
  ] }),
153
- /* @__PURE__ */ jsxs2(
206
+ /* @__PURE__ */ jsxs3(
154
207
  DropdownMenuItem,
155
208
  {
156
209
  onClick: () => {
@@ -158,19 +211,19 @@ function UserMenu({
158
211
  },
159
212
  className: "text-xs text-[#E2E8F0] hover:bg-[#1E2738] cursor-pointer focus:bg-[#1E2738]",
160
213
  children: [
161
- /* @__PURE__ */ jsx2(Settings, { className: "h-3.5 w-3.5 mr-2 text-[#8890A0]" }),
214
+ /* @__PURE__ */ jsx3(Settings, { className: "h-3.5 w-3.5 mr-2 text-[#8890A0]" }),
162
215
  "User Settings"
163
216
  ]
164
217
  }
165
218
  ),
166
- /* @__PURE__ */ jsx2(DropdownMenuSeparator, { className: "bg-[#1E2738]" }),
167
- /* @__PURE__ */ jsxs2(
219
+ /* @__PURE__ */ jsx3(DropdownMenuSeparator, { className: "bg-[#1E2738]" }),
220
+ /* @__PURE__ */ jsxs3(
168
221
  DropdownMenuItem,
169
222
  {
170
223
  onClick: () => onLogout?.(),
171
224
  className: "text-xs text-[#EF4444] hover:bg-[#EF4444]/10 cursor-pointer focus:bg-[#EF4444]/10 focus:text-[#EF4444]",
172
225
  children: [
173
- /* @__PURE__ */ jsx2(LogOut, { className: "h-3.5 w-3.5 mr-2" }),
226
+ /* @__PURE__ */ jsx3(LogOut, { className: "h-3.5 w-3.5 mr-2" }),
174
227
  "Sign Out"
175
228
  ]
176
229
  }
@@ -180,9 +233,9 @@ function UserMenu({
180
233
  }
181
234
  function EnterpriseBadge({ enterprise }) {
182
235
  if (!enterprise) return null;
183
- return /* @__PURE__ */ jsxs2("div", { className: "hidden lg:flex items-center gap-1.5 px-2 py-1 rounded-md bg-[#8C34E9]/10 border border-[#8C34E9]/20", children: [
184
- /* @__PURE__ */ jsx2("div", { className: "h-4 w-4 rounded-sm bg-[#8C34E9]/30 flex items-center justify-center", children: /* @__PURE__ */ jsx2("span", { className: "text-[8px] font-bold text-[#C084FC]", children: enterprise.name.charAt(0).toUpperCase() }) }),
185
- /* @__PURE__ */ jsx2("span", { className: "text-[10px] font-medium text-[#C084FC] truncate max-w-[80px]", children: enterprise.code || enterprise.name })
236
+ return /* @__PURE__ */ jsxs3("div", { className: "hidden lg:flex items-center gap-1.5 px-2 py-1 rounded-md bg-[#8C34E9]/10 border border-[#8C34E9]/20", children: [
237
+ /* @__PURE__ */ jsx3("div", { className: "h-4 w-4 rounded-sm bg-[#8C34E9]/30 flex items-center justify-center", children: /* @__PURE__ */ jsx3("span", { className: "text-[8px] font-bold text-[#C084FC]", children: enterprise.name.charAt(0).toUpperCase() }) }),
238
+ /* @__PURE__ */ jsx3("span", { className: "text-[10px] font-medium text-[#C084FC] truncate max-w-[80px]", children: enterprise.code || enterprise.name })
186
239
  ] });
187
240
  }
188
241
  function NavSection({
@@ -193,12 +246,12 @@ function NavSection({
193
246
  onNavigate
194
247
  }) {
195
248
  const label = section.title ?? section.label;
196
- return /* @__PURE__ */ jsxs2(Fragment, { children: [
197
- label && /* @__PURE__ */ jsx2("div", { className: cn("px-4 py-2", marginTop && "mt-2"), children: !isCollapsed && /* @__PURE__ */ jsx2("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: label }) }),
198
- /* @__PURE__ */ jsx2(SidebarMenu, { className: "px-2 py-1", children: section.items.map((item) => {
249
+ return /* @__PURE__ */ jsxs3(Fragment2, { children: [
250
+ label && /* @__PURE__ */ jsx3("div", { className: cn("px-4 py-2", marginTop && "mt-2"), children: !isCollapsed && /* @__PURE__ */ jsx3("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: label }) }),
251
+ /* @__PURE__ */ jsx3(SidebarMenu, { className: "px-2 py-1", children: section.items.map((item) => {
199
252
  const active = resolveActive(item.path);
200
253
  const Icon = item.icon;
201
- return /* @__PURE__ */ jsx2(SidebarMenuItem, { children: /* @__PURE__ */ jsxs2(
254
+ return /* @__PURE__ */ jsx3(SidebarMenuItem, { children: /* @__PURE__ */ jsxs3(
202
255
  SidebarMenuButton,
203
256
  {
204
257
  isActive: active,
@@ -206,8 +259,8 @@ function NavSection({
206
259
  tooltip: item.label,
207
260
  className: "h-10 transition-all font-normal",
208
261
  children: [
209
- Icon && /* @__PURE__ */ jsx2(Icon, { className: cn("h-4 w-4", active && "text-primary") }),
210
- /* @__PURE__ */ jsx2("span", { children: item.label })
262
+ Icon && /* @__PURE__ */ jsx3(Icon, { className: cn("h-4 w-4", active && "text-primary") }),
263
+ /* @__PURE__ */ jsx3("span", { children: item.label })
211
264
  ]
212
265
  }
213
266
  ) }, item.path);
@@ -239,25 +292,25 @@ function DashboardShell({
239
292
  const isCollapsed = state === "collapsed";
240
293
  const navigate = onNavigate;
241
294
  const resolveActive = (path) => isActive ? isActive(path, activePath) : isMenuItemActive(path, activePath);
242
- return /* @__PURE__ */ jsxs2(Fragment, { children: [
243
- /* @__PURE__ */ jsxs2(Sidebar, { collapsible: "icon", className: "border-r-0", children: [
244
- /* @__PURE__ */ jsx2(SidebarHeader, { className: "h-16 justify-center", children: /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-3 px-2 transition-all w-full", children: [
245
- /* @__PURE__ */ jsx2(
295
+ return /* @__PURE__ */ jsxs3(Fragment2, { children: [
296
+ /* @__PURE__ */ jsxs3(Sidebar, { collapsible: "icon", className: "border-r-0", children: [
297
+ /* @__PURE__ */ jsx3(SidebarHeader, { className: "h-16 justify-center", children: /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3 px-2 transition-all w-full", children: [
298
+ /* @__PURE__ */ jsx3(
246
299
  "button",
247
300
  {
248
301
  onClick: toggleSidebar,
249
302
  className: "h-8 w-8 flex items-center justify-center hover:bg-accent rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring shrink-0",
250
303
  "aria-label": "Toggle navigation",
251
- children: /* @__PURE__ */ jsx2(PanelLeft, { className: "h-4 w-4 text-muted-foreground" })
304
+ children: /* @__PURE__ */ jsx3(PanelLeft, { className: "h-4 w-4 text-muted-foreground" })
252
305
  }
253
306
  ),
254
- !isCollapsed ? /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 min-w-0", children: [
255
- serviceIcon && /* @__PURE__ */ jsx2("span", { className: "text-[#8C34E9] shrink-0", children: serviceIcon }),
256
- /* @__PURE__ */ jsx2("span", { className: "font-semibold tracking-tight truncate", children: serviceName })
307
+ !isCollapsed ? /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 min-w-0", children: [
308
+ serviceIcon && /* @__PURE__ */ jsx3("span", { className: "text-[#8C34E9] shrink-0", children: serviceIcon }),
309
+ /* @__PURE__ */ jsx3("span", { className: "font-semibold tracking-tight truncate", children: serviceName })
257
310
  ] }) : null
258
311
  ] }) }),
259
- /* @__PURE__ */ jsxs2(SidebarContent, { className: "gap-0", children: [
260
- serviceHubUrl && /* @__PURE__ */ jsx2(SidebarMenu, { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx2(SidebarMenuItem, { children: /* @__PURE__ */ jsxs2(
312
+ /* @__PURE__ */ jsxs3(SidebarContent, { className: "gap-0", children: [
313
+ serviceHubUrl && /* @__PURE__ */ jsx3(SidebarMenu, { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx3(SidebarMenuItem, { children: /* @__PURE__ */ jsxs3(
261
314
  SidebarMenuButton,
262
315
  {
263
316
  onClick: () => {
@@ -266,12 +319,12 @@ function DashboardShell({
266
319
  tooltip: "Back to Service Hub",
267
320
  className: "h-10 transition-all font-normal text-muted-foreground hover:text-foreground",
268
321
  children: [
269
- /* @__PURE__ */ jsx2(ArrowLeft, { className: "h-4 w-4" }),
270
- /* @__PURE__ */ jsx2("span", { children: "Service Hub" })
322
+ /* @__PURE__ */ jsx3(ArrowLeft, { className: "h-4 w-4" }),
323
+ /* @__PURE__ */ jsx3("span", { children: "Service Hub" })
271
324
  ]
272
325
  }
273
326
  ) }) }),
274
- menuSections.map((section, i) => /* @__PURE__ */ jsx2(
327
+ menuSections.map((section, i) => /* @__PURE__ */ jsx3(
275
328
  NavSection,
276
329
  {
277
330
  section,
@@ -281,7 +334,7 @@ function DashboardShell({
281
334
  },
282
335
  section.title ?? section.label ?? `section-${i}`
283
336
  )),
284
- isAdmin && adminSections?.map((section, i) => /* @__PURE__ */ jsx2(
337
+ isAdmin && adminSections?.map((section, i) => /* @__PURE__ */ jsx3(
285
338
  NavSection,
286
339
  {
287
340
  section,
@@ -293,21 +346,21 @@ function DashboardShell({
293
346
  section.title ?? section.label ?? `admin-${i}`
294
347
  ))
295
348
  ] }),
296
- settingsPath && /* @__PURE__ */ jsx2(SidebarFooter, { className: "p-2", children: /* @__PURE__ */ jsx2(SidebarMenu, { children: /* @__PURE__ */ jsx2(SidebarMenuItem, { children: /* @__PURE__ */ jsxs2(
349
+ settingsPath && /* @__PURE__ */ jsx3(SidebarFooter, { className: "p-2", children: /* @__PURE__ */ jsx3(SidebarMenu, { children: /* @__PURE__ */ jsx3(SidebarMenuItem, { children: /* @__PURE__ */ jsxs3(
297
350
  SidebarMenuButton,
298
351
  {
299
352
  onClick: () => navigate(settingsPath),
300
353
  tooltip: "Settings",
301
354
  className: "h-10 transition-all font-normal text-muted-foreground hover:text-foreground",
302
355
  children: [
303
- /* @__PURE__ */ jsx2(Settings, { className: "h-4 w-4" }),
304
- /* @__PURE__ */ jsx2("span", { children: "Settings" })
356
+ /* @__PURE__ */ jsx3(Settings, { className: "h-4 w-4" }),
357
+ /* @__PURE__ */ jsx3("span", { children: "Settings" })
305
358
  ]
306
359
  }
307
360
  ) }) }) })
308
361
  ] }),
309
- /* @__PURE__ */ jsxs2(SidebarInset, { children: [
310
- /* @__PURE__ */ jsxs2(
362
+ /* @__PURE__ */ jsxs3(SidebarInset, { children: [
363
+ /* @__PURE__ */ jsxs3(
311
364
  "header",
312
365
  {
313
366
  className: cn(
@@ -317,35 +370,42 @@ function DashboardShell({
317
370
  "sticky top-0 z-40"
318
371
  ),
319
372
  children: [
320
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
321
- /* @__PURE__ */ jsx2(SidebarTrigger, { className: "h-9 w-9 rounded-lg bg-background shrink-0 md:hidden" }),
322
- serviceIcon && /* @__PURE__ */ jsx2("span", { className: "text-[#8C34E9] shrink-0 hidden sm:block", children: serviceIcon }),
323
- hierarchyNavigator && /* @__PURE__ */ jsx2("div", { className: "min-w-0 overflow-x-auto scrollbar-none", children: hierarchyNavigator })
373
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
374
+ /* @__PURE__ */ jsx3(SidebarTrigger, { className: "h-9 w-9 rounded-lg bg-background shrink-0 md:hidden" }),
375
+ serviceIcon && /* @__PURE__ */ jsx3("span", { className: "text-[#8C34E9] shrink-0 hidden sm:block", children: serviceIcon }),
376
+ hierarchyNavigator && /* @__PURE__ */ jsx3("div", { className: "min-w-0 overflow-x-auto scrollbar-none", children: hierarchyNavigator })
324
377
  ] }),
325
- /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2 shrink-0", children: [
378
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 shrink-0", children: [
326
379
  reportingToolbar,
327
- /* @__PURE__ */ jsx2(EnterpriseBadge, { enterprise }),
328
- /* @__PURE__ */ jsx2("div", { className: "w-px h-6 bg-[#1E2738] hidden md:block" }),
329
- user && /* @__PURE__ */ jsx2(UserMenu, { user, onLogout, userSettingsUrl })
380
+ /* @__PURE__ */ jsx3(
381
+ EnterpriseDebugLabel,
382
+ {
383
+ selectionEnterpriseId: enterprise?.id ?? null,
384
+ cookieEnterpriseName: enterprise?.name ?? null
385
+ }
386
+ ),
387
+ /* @__PURE__ */ jsx3(EnterpriseBadge, { enterprise }),
388
+ /* @__PURE__ */ jsx3("div", { className: "w-px h-6 bg-[#1E2738] hidden md:block" }),
389
+ user && /* @__PURE__ */ jsx3(UserMenu, { user, onLogout, userSettingsUrl })
330
390
  ] })
331
391
  ]
332
392
  }
333
393
  ),
334
- /* @__PURE__ */ jsx2("main", { className: "flex-1 p-4 md:p-6 pb-14", children })
394
+ /* @__PURE__ */ jsx3("main", { className: "flex-1 p-4 md:p-6 pb-14", children })
335
395
  ] }),
336
396
  footer,
337
- showHealthFooter && user?.role === "platform_admin" && /* @__PURE__ */ jsx2(HealthFooter, { user, enterprise })
397
+ showHealthFooter && user?.role === "platform_admin" && /* @__PURE__ */ jsx3(HealthFooter, { user, enterprise })
338
398
  ] });
339
399
  }
340
400
  function DashboardLayout(props) {
341
401
  const isMobile = useIsMobile();
342
- return /* @__PURE__ */ jsx2(SidebarProvider, { defaultOpen: props.defaultOpen ?? !isMobile, children: /* @__PURE__ */ jsx2(DashboardShell, { ...props }) });
402
+ return /* @__PURE__ */ jsx3(SidebarProvider, { defaultOpen: props.defaultOpen ?? !isMobile, children: /* @__PURE__ */ jsx3(DashboardShell, { ...props }) });
343
403
  }
344
404
 
345
405
  // src/layout/DashboardLayoutSkeleton.tsx
346
- import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
406
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
347
407
  function Skeleton({ className }) {
348
- return /* @__PURE__ */ jsx3(
408
+ return /* @__PURE__ */ jsx4(
349
409
  "div",
350
410
  {
351
411
  className: cn(
@@ -356,47 +416,47 @@ function Skeleton({ className }) {
356
416
  );
357
417
  }
358
418
  function DashboardLayoutSkeleton({ className }) {
359
- return /* @__PURE__ */ jsxs3("div", { className: cn("flex min-h-screen bg-[#0A0E1A]", className), children: [
360
- /* @__PURE__ */ jsxs3("div", { className: "w-[260px] border-r border-[#1E2738] bg-[#0D1220] p-4 space-y-6", children: [
361
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3 px-2", children: [
362
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-8 w-8 rounded-md" }),
363
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-4 w-24" })
419
+ return /* @__PURE__ */ jsxs4("div", { className: cn("flex min-h-screen bg-[#0A0E1A]", className), children: [
420
+ /* @__PURE__ */ jsxs4("div", { className: "w-[260px] border-r border-[#1E2738] bg-[#0D1220] p-4 space-y-6", children: [
421
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3 px-2", children: [
422
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-8 w-8 rounded-md" }),
423
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-4 w-24" })
364
424
  ] }),
365
- /* @__PURE__ */ jsxs3("div", { className: "space-y-2 px-2", children: [
366
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-full rounded-lg" }),
367
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-full rounded-lg" }),
368
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-full rounded-lg" }),
369
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-full rounded-lg" })
425
+ /* @__PURE__ */ jsxs4("div", { className: "space-y-2 px-2", children: [
426
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-full rounded-lg" }),
427
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-full rounded-lg" }),
428
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-full rounded-lg" }),
429
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-full rounded-lg" })
370
430
  ] }),
371
- /* @__PURE__ */ jsxs3("div", { className: "px-2", children: [
372
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-3 w-16 mb-3" }),
373
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-full rounded-lg" }),
374
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-full rounded-lg mt-2" })
431
+ /* @__PURE__ */ jsxs4("div", { className: "px-2", children: [
432
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-3 w-16 mb-3" }),
433
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-full rounded-lg" }),
434
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-full rounded-lg mt-2" })
375
435
  ] }),
376
- /* @__PURE__ */ jsx3("div", { className: "absolute bottom-4 left-4 right-4", children: /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3 px-1", children: [
377
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-8 w-8 rounded-full" }),
378
- /* @__PURE__ */ jsxs3("div", { className: "flex-1 space-y-2", children: [
379
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-3 w-20" }),
380
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-2 w-32" })
436
+ /* @__PURE__ */ jsx4("div", { className: "absolute bottom-4 left-4 right-4", children: /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3 px-1", children: [
437
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-8 w-8 rounded-full" }),
438
+ /* @__PURE__ */ jsxs4("div", { className: "flex-1 space-y-2", children: [
439
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-3 w-20" }),
440
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-2 w-32" })
381
441
  ] })
382
442
  ] }) })
383
443
  ] }),
384
- /* @__PURE__ */ jsxs3("div", { className: "flex-1 p-6 space-y-4", children: [
385
- /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between", children: [
386
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-8 w-48 rounded-lg" }),
387
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-9 w-24 rounded-lg" })
444
+ /* @__PURE__ */ jsxs4("div", { className: "flex-1 p-6 space-y-4", children: [
445
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-between", children: [
446
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-8 w-48 rounded-lg" }),
447
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-9 w-24 rounded-lg" })
388
448
  ] }),
389
- /* @__PURE__ */ jsxs3("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4", children: [
390
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-24 rounded-xl" }),
391
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-24 rounded-xl" }),
392
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-24 rounded-xl" }),
393
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-24 rounded-xl" })
449
+ /* @__PURE__ */ jsxs4("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4", children: [
450
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-24 rounded-xl" }),
451
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-24 rounded-xl" }),
452
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-24 rounded-xl" }),
453
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-24 rounded-xl" })
394
454
  ] }),
395
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-64 rounded-xl" }),
396
- /* @__PURE__ */ jsxs3("div", { className: "space-y-2", children: [
397
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-10 w-full rounded-lg" }),
398
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-10 w-full rounded-lg" }),
399
- /* @__PURE__ */ jsx3(Skeleton, { className: "h-10 w-full rounded-lg" })
455
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-64 rounded-xl" }),
456
+ /* @__PURE__ */ jsxs4("div", { className: "space-y-2", children: [
457
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-10 w-full rounded-lg" }),
458
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-10 w-full rounded-lg" }),
459
+ /* @__PURE__ */ jsx4(Skeleton, { className: "h-10 w-full rounded-lg" })
400
460
  ] })
401
461
  ] })
402
462
  ] });
@@ -404,7 +464,7 @@ function DashboardLayoutSkeleton({ className }) {
404
464
 
405
465
  // src/layout/SharedPageHeader.tsx
406
466
  import { ChevronLeft } from "lucide-react";
407
- import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
467
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
408
468
  function SharedPageHeader({
409
469
  title,
410
470
  subtitle,
@@ -417,7 +477,7 @@ function SharedPageHeader({
417
477
  className,
418
478
  children
419
479
  }) {
420
- return /* @__PURE__ */ jsxs4(
480
+ return /* @__PURE__ */ jsxs5(
421
481
  "div",
422
482
  {
423
483
  className: cn(
@@ -427,10 +487,10 @@ function SharedPageHeader({
427
487
  className
428
488
  ),
429
489
  children: [
430
- breadcrumbs && /* @__PURE__ */ jsx4("div", { className: cn("mb-2", compact && "mb-1"), children: breadcrumbs }),
431
- /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-between gap-4", children: [
432
- /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3 min-w-0", children: [
433
- onBack && /* @__PURE__ */ jsx4(
490
+ breadcrumbs && /* @__PURE__ */ jsx5("div", { className: cn("mb-2", compact && "mb-1"), children: breadcrumbs }),
491
+ /* @__PURE__ */ jsxs5("div", { className: "flex items-center justify-between gap-4", children: [
492
+ /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-3 min-w-0", children: [
493
+ onBack && /* @__PURE__ */ jsx5(
434
494
  "button",
435
495
  {
436
496
  onClick: onBack,
@@ -441,12 +501,12 @@ function SharedPageHeader({
441
501
  "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#8C34E9]"
442
502
  ),
443
503
  "aria-label": "Go back",
444
- children: /* @__PURE__ */ jsx4(ChevronLeft, { className: compact ? "h-4 w-4" : "h-5 w-5" })
504
+ children: /* @__PURE__ */ jsx5(ChevronLeft, { className: compact ? "h-4 w-4" : "h-5 w-5" })
445
505
  }
446
506
  ),
447
- icon && /* @__PURE__ */ jsx4("div", { className: "shrink-0 text-[#8C34E9]", children: icon }),
448
- /* @__PURE__ */ jsxs4("div", { className: "min-w-0", children: [
449
- /* @__PURE__ */ jsx4(
507
+ icon && /* @__PURE__ */ jsx5("div", { className: "shrink-0 text-[#8C34E9]", children: icon }),
508
+ /* @__PURE__ */ jsxs5("div", { className: "min-w-0", children: [
509
+ /* @__PURE__ */ jsx5(
450
510
  "h1",
451
511
  {
452
512
  className: cn(
@@ -457,7 +517,7 @@ function SharedPageHeader({
457
517
  children: title
458
518
  }
459
519
  ),
460
- subtitle && /* @__PURE__ */ jsx4(
520
+ subtitle && /* @__PURE__ */ jsx5(
461
521
  "p",
462
522
  {
463
523
  className: cn(
@@ -470,16 +530,16 @@ function SharedPageHeader({
470
530
  )
471
531
  ] })
472
532
  ] }),
473
- actions && /* @__PURE__ */ jsx4("div", { className: "shrink-0 flex items-center gap-2", children: actions })
533
+ actions && /* @__PURE__ */ jsx5("div", { className: "shrink-0 flex items-center gap-2", children: actions })
474
534
  ] }),
475
- children && /* @__PURE__ */ jsx4("div", { className: cn("mt-3", compact && "mt-2"), children })
535
+ children && /* @__PURE__ */ jsx5("div", { className: cn("mt-3", compact && "mt-2"), children })
476
536
  ]
477
537
  }
478
538
  );
479
539
  }
480
540
 
481
541
  // src/layout/SharedFooter.tsx
482
- import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
542
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
483
543
  var FOOTER_SERVICES = [
484
544
  { name: "SQDCP", slug: "sqdcp", localRoute: "/services/sqdcp", externalUrl: "https://sqdcp.oplytics.digital" },
485
545
  { name: "OEE Manager", slug: "oee-manager", localRoute: "/services/oee-manager", externalUrl: "https://oee.oplytics.digital" },
@@ -501,7 +561,7 @@ function SharedFooter({
501
561
  year
502
562
  }) {
503
563
  const currentYear = year ?? (/* @__PURE__ */ new Date()).getFullYear();
504
- return /* @__PURE__ */ jsx5(
564
+ return /* @__PURE__ */ jsx6(
505
565
  "footer",
506
566
  {
507
567
  className: cn(
@@ -510,25 +570,25 @@ function SharedFooter({
510
570
  "font-[Space_Grotesk,sans-serif]",
511
571
  className
512
572
  ),
513
- children: /* @__PURE__ */ jsxs5("div", { className: "max-w-7xl mx-auto px-6 py-10", children: [
514
- /* @__PURE__ */ jsxs5("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-8 mb-8", children: [
515
- /* @__PURE__ */ jsxs5("div", { className: "md:col-span-1", children: [
516
- /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2 mb-3", children: [
517
- /* @__PURE__ */ jsx5(
573
+ children: /* @__PURE__ */ jsxs6("div", { className: "max-w-7xl mx-auto px-6 py-10", children: [
574
+ /* @__PURE__ */ jsxs6("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-8 mb-8", children: [
575
+ /* @__PURE__ */ jsxs6("div", { className: "md:col-span-1", children: [
576
+ /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2 mb-3", children: [
577
+ /* @__PURE__ */ jsx6(
518
578
  "div",
519
579
  {
520
580
  className: "w-7 h-7 rounded-full flex items-center justify-center",
521
581
  style: { background: "#8C34E9" },
522
- children: /* @__PURE__ */ jsx5("span", { className: "text-white font-bold text-xs", children: "O" })
582
+ children: /* @__PURE__ */ jsx6("span", { className: "text-white font-bold text-xs", children: "O" })
523
583
  }
524
584
  ),
525
- /* @__PURE__ */ jsx5("span", { className: "text-[#E2E8F0] font-semibold text-sm font-[Montserrat,sans-serif]", children: "Oplytics.digital" })
585
+ /* @__PURE__ */ jsx6("span", { className: "text-[#E2E8F0] font-semibold text-sm font-[Montserrat,sans-serif]", children: "Oplytics.digital" })
526
586
  ] }),
527
- /* @__PURE__ */ jsx5("p", { className: "text-xs text-[#596475] leading-relaxed", children: "Operational intelligence platform for manufacturing excellence." })
587
+ /* @__PURE__ */ jsx6("p", { className: "text-xs text-[#596475] leading-relaxed", children: "Operational intelligence platform for manufacturing excellence." })
528
588
  ] }),
529
- /* @__PURE__ */ jsxs5("div", { children: [
530
- /* @__PURE__ */ jsx5("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Services" }),
531
- /* @__PURE__ */ jsx5("ul", { className: "space-y-2", children: services.map((service) => /* @__PURE__ */ jsx5("li", { children: /* @__PURE__ */ jsx5(
589
+ /* @__PURE__ */ jsxs6("div", { children: [
590
+ /* @__PURE__ */ jsx6("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Services" }),
591
+ /* @__PURE__ */ jsx6("ul", { className: "space-y-2", children: services.map((service) => /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
532
592
  "a",
533
593
  {
534
594
  href: useExternalUrls && service.externalUrl ? service.externalUrl : service.localRoute,
@@ -538,10 +598,10 @@ function SharedFooter({
538
598
  }
539
599
  ) }, service.slug)) })
540
600
  ] }),
541
- /* @__PURE__ */ jsxs5("div", { children: [
542
- /* @__PURE__ */ jsx5("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Company" }),
543
- /* @__PURE__ */ jsxs5("ul", { className: "space-y-2", children: [
544
- showPricing && /* @__PURE__ */ jsx5("li", { children: /* @__PURE__ */ jsx5(
601
+ /* @__PURE__ */ jsxs6("div", { children: [
602
+ /* @__PURE__ */ jsx6("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Company" }),
603
+ /* @__PURE__ */ jsxs6("ul", { className: "space-y-2", children: [
604
+ showPricing && /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
545
605
  "a",
546
606
  {
547
607
  href: "/pricing",
@@ -550,7 +610,7 @@ function SharedFooter({
550
610
  children: "Pricing"
551
611
  }
552
612
  ) }),
553
- /* @__PURE__ */ jsx5("li", { children: /* @__PURE__ */ jsx5(
613
+ /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
554
614
  "a",
555
615
  {
556
616
  href: "/about",
@@ -558,7 +618,7 @@ function SharedFooter({
558
618
  children: "About"
559
619
  }
560
620
  ) }),
561
- /* @__PURE__ */ jsx5("li", { children: /* @__PURE__ */ jsx5(
621
+ /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
562
622
  "a",
563
623
  {
564
624
  href: "/contact",
@@ -568,10 +628,10 @@ function SharedFooter({
568
628
  ) })
569
629
  ] })
570
630
  ] }),
571
- /* @__PURE__ */ jsxs5("div", { children: [
572
- /* @__PURE__ */ jsx5("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Legal" }),
573
- /* @__PURE__ */ jsxs5("ul", { className: "space-y-2", children: [
574
- /* @__PURE__ */ jsx5("li", { children: /* @__PURE__ */ jsx5(
631
+ /* @__PURE__ */ jsxs6("div", { children: [
632
+ /* @__PURE__ */ jsx6("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Legal" }),
633
+ /* @__PURE__ */ jsxs6("ul", { className: "space-y-2", children: [
634
+ /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
575
635
  "a",
576
636
  {
577
637
  href: "/privacy",
@@ -579,7 +639,7 @@ function SharedFooter({
579
639
  children: "Privacy Policy"
580
640
  }
581
641
  ) }),
582
- /* @__PURE__ */ jsx5("li", { children: /* @__PURE__ */ jsx5(
642
+ /* @__PURE__ */ jsx6("li", { children: /* @__PURE__ */ jsx6(
583
643
  "a",
584
644
  {
585
645
  href: "/terms",
@@ -588,7 +648,7 @@ function SharedFooter({
588
648
  }
589
649
  ) })
590
650
  ] }),
591
- showSignIn && /* @__PURE__ */ jsx5("div", { className: "mt-4", children: /* @__PURE__ */ jsx5(
651
+ showSignIn && /* @__PURE__ */ jsx6("div", { className: "mt-4", children: /* @__PURE__ */ jsx6(
592
652
  "a",
593
653
  {
594
654
  href: "/login",
@@ -600,14 +660,14 @@ function SharedFooter({
600
660
  ] })
601
661
  ] }),
602
662
  children,
603
- /* @__PURE__ */ jsxs5("div", { className: "pt-6 border-t border-[#1E2738] flex flex-col sm:flex-row items-center justify-between gap-3", children: [
604
- /* @__PURE__ */ jsxs5("p", { className: "text-xs text-[#596475]", children: [
663
+ /* @__PURE__ */ jsxs6("div", { className: "pt-6 border-t border-[#1E2738] flex flex-col sm:flex-row items-center justify-between gap-3", children: [
664
+ /* @__PURE__ */ jsxs6("p", { className: "text-xs text-[#596475]", children: [
605
665
  "\xA9 ",
606
666
  currentYear,
607
667
  " Oplytics.digital. All rights reserved."
608
668
  ] }),
609
- /* @__PURE__ */ jsx5("p", { className: "text-xs text-[#3E4A5C]", children: "Built for manufacturing excellence" }),
610
- typeof __APP_VERSION__ !== "undefined" && /* @__PURE__ */ jsxs5("p", { className: "text-xs text-[#3E4A5C]", children: [
669
+ /* @__PURE__ */ jsx6("p", { className: "text-xs text-[#3E4A5C]", children: "Built for manufacturing excellence" }),
670
+ typeof __APP_VERSION__ !== "undefined" && /* @__PURE__ */ jsxs6("p", { className: "text-xs text-[#3E4A5C]", children: [
611
671
  "Platform v",
612
672
  __APP_VERSION__
613
673
  ] })
@@ -618,7 +678,7 @@ function SharedFooter({
618
678
  }
619
679
 
620
680
  // src/layout/ServiceFooter.tsx
621
- import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
681
+ import { Fragment as Fragment3, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
622
682
  var ENV_LABELS = {
623
683
  production: { label: "prod", color: "#10b981" },
624
684
  staging: { label: "stg", color: "#f59e0b" },
@@ -637,7 +697,7 @@ function ServiceFooter({
637
697
  const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
638
698
  const env = environment ? ENV_LABELS[environment] : null;
639
699
  const version = buildVersion ?? (typeof __APP_VERSION__ !== "undefined" ? __APP_VERSION__ : void 0);
640
- return /* @__PURE__ */ jsxs6(
700
+ return /* @__PURE__ */ jsxs7(
641
701
  "footer",
642
702
  {
643
703
  className: cn(
@@ -648,60 +708,60 @@ function ServiceFooter({
648
708
  className
649
709
  ),
650
710
  children: [
651
- /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2 min-w-0", children: [
652
- /* @__PURE__ */ jsx6(
711
+ /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2 min-w-0", children: [
712
+ /* @__PURE__ */ jsx7(
653
713
  "div",
654
714
  {
655
715
  className: "w-5 h-5 rounded-full flex items-center justify-center shrink-0",
656
716
  style: { background: "#8C34E9" },
657
- children: /* @__PURE__ */ jsx6("span", { className: "text-white font-bold", style: { fontSize: 9 }, children: "O" })
717
+ children: /* @__PURE__ */ jsx7("span", { className: "text-white font-bold", style: { fontSize: 9 }, children: "O" })
658
718
  }
659
719
  ),
660
- /* @__PURE__ */ jsx6("span", { className: "text-[10px] text-[#596475] whitespace-nowrap hidden sm:inline", children: "Operational Excellence. One Digital Platform." })
720
+ /* @__PURE__ */ jsx7("span", { className: "text-[10px] text-[#596475] whitespace-nowrap hidden sm:inline", children: "Operational Excellence. One Digital Platform." })
661
721
  ] }),
662
- showHealthMonitor && /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-1.5 text-[10px] text-[#3E4A5C] min-w-0 overflow-hidden", children: [
663
- enterpriseName && /* @__PURE__ */ jsxs6(Fragment2, { children: [
664
- /* @__PURE__ */ jsxs6("span", { className: "whitespace-nowrap", children: [
665
- /* @__PURE__ */ jsx6("span", { className: "text-[#596475]", children: enterpriseName }),
666
- enterpriseId != null && /* @__PURE__ */ jsxs6("span", { className: "text-[#3E4A5C]", children: [
722
+ showHealthMonitor && /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-1.5 text-[10px] text-[#3E4A5C] min-w-0 overflow-hidden", children: [
723
+ enterpriseName && /* @__PURE__ */ jsxs7(Fragment3, { children: [
724
+ /* @__PURE__ */ jsxs7("span", { className: "whitespace-nowrap", children: [
725
+ /* @__PURE__ */ jsx7("span", { className: "text-[#596475]", children: enterpriseName }),
726
+ enterpriseId != null && /* @__PURE__ */ jsxs7("span", { className: "text-[#3E4A5C]", children: [
667
727
  " (",
668
728
  enterpriseId,
669
729
  ")"
670
730
  ] })
671
731
  ] }),
672
- /* @__PURE__ */ jsx6(Separator, {})
732
+ /* @__PURE__ */ jsx7(Separator, {})
673
733
  ] }),
674
- userEmail && /* @__PURE__ */ jsxs6(Fragment2, { children: [
675
- /* @__PURE__ */ jsx6("span", { className: "whitespace-nowrap text-[#596475]", children: userEmail }),
676
- userRole && /* @__PURE__ */ jsxs6("span", { className: "text-[#3E4A5C]", children: [
734
+ userEmail && /* @__PURE__ */ jsxs7(Fragment3, { children: [
735
+ /* @__PURE__ */ jsx7("span", { className: "whitespace-nowrap text-[#596475]", children: userEmail }),
736
+ userRole && /* @__PURE__ */ jsxs7("span", { className: "text-[#3E4A5C]", children: [
677
737
  " (",
678
738
  userRole,
679
739
  ")"
680
740
  ] }),
681
- /* @__PURE__ */ jsx6(Separator, {})
741
+ /* @__PURE__ */ jsx7(Separator, {})
682
742
  ] }),
683
- env && /* @__PURE__ */ jsxs6(Fragment2, { children: [
684
- /* @__PURE__ */ jsxs6("span", { className: "whitespace-nowrap", children: [
743
+ env && /* @__PURE__ */ jsxs7(Fragment3, { children: [
744
+ /* @__PURE__ */ jsxs7("span", { className: "whitespace-nowrap", children: [
685
745
  "ENV:",
686
746
  " ",
687
- /* @__PURE__ */ jsx6("span", { style: { color: env.color }, className: "font-semibold", children: env.label })
747
+ /* @__PURE__ */ jsx7("span", { style: { color: env.color }, className: "font-semibold", children: env.label })
688
748
  ] }),
689
- /* @__PURE__ */ jsx6(Separator, {})
749
+ /* @__PURE__ */ jsx7(Separator, {})
690
750
  ] }),
691
- version && /* @__PURE__ */ jsxs6("span", { className: "whitespace-nowrap text-[#3E4A5C] font-mono", children: [
751
+ version && /* @__PURE__ */ jsxs7("span", { className: "whitespace-nowrap text-[#3E4A5C] font-mono", children: [
692
752
  "v.",
693
753
  version
694
754
  ] })
695
755
  ] }),
696
- /* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-2 text-[10px] text-[#3E4A5C] whitespace-nowrap shrink-0", children: [
697
- /* @__PURE__ */ jsxs6("span", { children: [
756
+ /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2 text-[10px] text-[#3E4A5C] whitespace-nowrap shrink-0", children: [
757
+ /* @__PURE__ */ jsxs7("span", { children: [
698
758
  "\xA9 ",
699
759
  currentYear,
700
760
  " Oplytics.digital"
701
761
  ] }),
702
- !showHealthMonitor && version && /* @__PURE__ */ jsxs6(Fragment2, { children: [
703
- /* @__PURE__ */ jsx6(Separator, {}),
704
- /* @__PURE__ */ jsxs6("span", { className: "font-mono", children: [
762
+ !showHealthMonitor && version && /* @__PURE__ */ jsxs7(Fragment3, { children: [
763
+ /* @__PURE__ */ jsx7(Separator, {}),
764
+ /* @__PURE__ */ jsxs7("span", { className: "font-mono", children: [
705
765
  "v.",
706
766
  version
707
767
  ] })
@@ -712,7 +772,7 @@ function ServiceFooter({
712
772
  );
713
773
  }
714
774
  function Separator() {
715
- return /* @__PURE__ */ jsx6("span", { className: "text-[#1E2738] select-none", "aria-hidden": true, children: "|" });
775
+ return /* @__PURE__ */ jsx7("span", { className: "text-[#1E2738] select-none", "aria-hidden": true, children: "|" });
716
776
  }
717
777
 
718
778
  // src/layout/createServiceLayout.tsx
@@ -881,6 +941,7 @@ export {
881
941
  isMenuItemActive,
882
942
  useSidebarResize,
883
943
  HealthFooter,
944
+ EnterpriseDebugLabel,
884
945
  DashboardLayout,
885
946
  DashboardLayoutSkeleton,
886
947
  SharedPageHeader,
@@ -895,4 +956,4 @@ export {
895
956
  policyDeploymentConfig,
896
957
  SERVICE_CONFIGS
897
958
  };
898
- //# sourceMappingURL=chunk-GU3OMCTY.js.map
959
+ //# sourceMappingURL=chunk-RQEAFIJQ.js.map