@pablo2410/shared-ui 0.9.3 → 0.9.4
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.
- package/dist/{HealthFooter-BP7S_iT-.d.ts → HealthFooter-wAa7a7WR.d.ts} +14 -1
- package/dist/chunk-3E3GLIQV.js +112 -0
- package/dist/chunk-3E3GLIQV.js.map +1 -0
- package/dist/{chunk-NXSFRNI7.js → chunk-3G43UG63.js} +1 -35
- package/dist/chunk-3G43UG63.js.map +1 -0
- package/dist/chunk-HNOROBPK.js +159 -0
- package/dist/chunk-HNOROBPK.js.map +1 -0
- package/dist/{chunk-QAQ4SQBH.js → chunk-POOTKX4M.js} +227 -180
- package/dist/chunk-POOTKX4M.js.map +1 -0
- package/dist/chunk-PS4K7FKB.js +37 -0
- package/dist/chunk-PS4K7FKB.js.map +1 -0
- package/dist/{chunk-4ATPOBMZ.js → chunk-ZLOUWBQN.js} +24 -4
- package/dist/chunk-ZLOUWBQN.js.map +1 -0
- package/dist/crossNav-Bd8-0qoi.d.ts +44 -0
- package/dist/hierarchy/core.d.ts +3 -89
- package/dist/hierarchy/core.js +6 -4
- package/dist/hierarchy/index.d.ts +58 -3
- package/dist/hierarchy/index.js +24 -6
- package/dist/layout/index.d.ts +4 -2
- package/dist/layout/index.js +7 -3
- package/dist/orgHierarchy-BLW4dt8Q.d.ts +90 -0
- package/dist/services/index.d.ts +3 -0
- package/dist/services/index.js +21 -116
- package/dist/services/index.js.map +1 -1
- package/dist/shell/index.d.ts +4 -2
- package/dist/shell/index.js +12 -4
- package/dist/shell/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-4ATPOBMZ.js.map +0 -1
- package/dist/chunk-NXSFRNI7.js.map +0 -1
- package/dist/chunk-QAQ4SQBH.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readActiveEnterpriseCookie
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZLOUWBQN.js";
|
|
4
4
|
import {
|
|
5
5
|
Avatar,
|
|
6
6
|
AvatarFallback,
|
|
@@ -90,8 +90,52 @@ function useSidebarResize(config) {
|
|
|
90
90
|
// src/layout/DashboardLayout.tsx
|
|
91
91
|
import { ArrowLeft, LogOut, PanelLeft, Settings } from "lucide-react";
|
|
92
92
|
|
|
93
|
+
// src/layout/CrossServiceNav.tsx
|
|
94
|
+
import {
|
|
95
|
+
ClipboardCheck,
|
|
96
|
+
Gauge,
|
|
97
|
+
LayoutGrid,
|
|
98
|
+
Target,
|
|
99
|
+
ExternalLink
|
|
100
|
+
} from "lucide-react";
|
|
101
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
102
|
+
var ICONS = {
|
|
103
|
+
Target,
|
|
104
|
+
LayoutGrid,
|
|
105
|
+
Gauge,
|
|
106
|
+
ClipboardCheck
|
|
107
|
+
};
|
|
108
|
+
function CrossServiceNav({
|
|
109
|
+
links,
|
|
110
|
+
label = "Services"
|
|
111
|
+
}) {
|
|
112
|
+
const { state } = useSidebar();
|
|
113
|
+
const isCollapsed = state === "collapsed";
|
|
114
|
+
if (links.length === 0) return null;
|
|
115
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
116
|
+
!isCollapsed && /* @__PURE__ */ jsx("div", { className: "px-4 pt-2", children: /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: label }) }),
|
|
117
|
+
/* @__PURE__ */ jsx(SidebarMenu, { className: "px-2 py-1", children: links.map((link) => {
|
|
118
|
+
const Icon = ICONS[link.icon] ?? ExternalLink;
|
|
119
|
+
return /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsxs(
|
|
120
|
+
SidebarMenuButton,
|
|
121
|
+
{
|
|
122
|
+
onClick: () => {
|
|
123
|
+
window.location.href = link.url;
|
|
124
|
+
},
|
|
125
|
+
tooltip: link.name,
|
|
126
|
+
className: "h-10 transition-all font-normal text-muted-foreground hover:text-foreground",
|
|
127
|
+
children: [
|
|
128
|
+
/* @__PURE__ */ jsx(Icon, { className: "h-4 w-4" }),
|
|
129
|
+
/* @__PURE__ */ jsx("span", { children: link.name })
|
|
130
|
+
]
|
|
131
|
+
}
|
|
132
|
+
) }, link.slug);
|
|
133
|
+
}) })
|
|
134
|
+
] });
|
|
135
|
+
}
|
|
136
|
+
|
|
93
137
|
// src/layout/HealthFooter.tsx
|
|
94
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
138
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
95
139
|
function formatBuildDate(iso) {
|
|
96
140
|
if (!iso) return void 0;
|
|
97
141
|
const d = new Date(iso);
|
|
@@ -117,39 +161,39 @@ function HealthFooter({
|
|
|
117
161
|
buildDate ?? (typeof __BUILD_DATE__ !== "undefined" ? __BUILD_DATE__ : void 0)
|
|
118
162
|
);
|
|
119
163
|
const buildStamp = [version && `v${version}`, commit, builtAt].filter(Boolean).join(" \xB7 ");
|
|
120
|
-
return /* @__PURE__ */
|
|
164
|
+
return /* @__PURE__ */ jsxs2(
|
|
121
165
|
"div",
|
|
122
166
|
{
|
|
123
167
|
className: "fixed bottom-0 left-0 right-0 h-8 bg-zinc-900 border-t border-zinc-800 flex items-center px-4 gap-6 text-[11px] text-zinc-400 z-50 font-mono" + (className ? ` ${className}` : ""),
|
|
124
168
|
style,
|
|
125
169
|
"data-slot": "health-footer",
|
|
126
170
|
children: [
|
|
127
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ jsxs2("span", { children: [
|
|
128
172
|
"role: ",
|
|
129
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ jsx2("span", { className: "text-zinc-200", children: user?.role ?? "\u2013" })
|
|
130
174
|
] }),
|
|
131
|
-
/* @__PURE__ */
|
|
175
|
+
/* @__PURE__ */ jsxs2("span", { children: [
|
|
132
176
|
"jwt.eid:",
|
|
133
177
|
" ",
|
|
134
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ jsx2("span", { className: "text-zinc-200", children: user?.enterpriseId ?? "null" })
|
|
135
179
|
] }),
|
|
136
|
-
/* @__PURE__ */
|
|
180
|
+
/* @__PURE__ */ jsxs2("span", { children: [
|
|
137
181
|
"hierarchy.eid:",
|
|
138
182
|
" ",
|
|
139
|
-
/* @__PURE__ */
|
|
183
|
+
/* @__PURE__ */ jsx2("span", { className: "text-zinc-200", children: enterprise?.id ?? "\u2013" })
|
|
140
184
|
] }),
|
|
141
|
-
/* @__PURE__ */
|
|
185
|
+
/* @__PURE__ */ jsxs2("span", { children: [
|
|
142
186
|
"enterprise:",
|
|
143
187
|
" ",
|
|
144
|
-
/* @__PURE__ */
|
|
188
|
+
/* @__PURE__ */ jsx2("span", { className: "text-zinc-200", children: enterprise?.name ?? "\u2013" })
|
|
145
189
|
] }),
|
|
146
|
-
/* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ jsxs2("span", { children: [
|
|
147
191
|
"user: ",
|
|
148
|
-
/* @__PURE__ */
|
|
192
|
+
/* @__PURE__ */ jsx2("span", { className: "text-zinc-200", children: user?.openId ?? "\u2013" })
|
|
149
193
|
] }),
|
|
150
|
-
buildStamp && /* @__PURE__ */
|
|
194
|
+
buildStamp && /* @__PURE__ */ jsxs2("span", { className: "ml-auto text-zinc-500", title: "Deployed build (version \xB7 commit \xB7 build date UTC)", children: [
|
|
151
195
|
"build: ",
|
|
152
|
-
/* @__PURE__ */
|
|
196
|
+
/* @__PURE__ */ jsx2("span", { className: "text-zinc-300", children: buildStamp })
|
|
153
197
|
] })
|
|
154
198
|
]
|
|
155
199
|
}
|
|
@@ -158,7 +202,7 @@ function HealthFooter({
|
|
|
158
202
|
|
|
159
203
|
// src/layout/EnterpriseDebugLabel.tsx
|
|
160
204
|
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
161
|
-
import { Fragment, jsx as
|
|
205
|
+
import { Fragment as Fragment2, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
162
206
|
function EnterpriseDebugLabel({
|
|
163
207
|
selectionEnterpriseId,
|
|
164
208
|
cookieEnterpriseName,
|
|
@@ -179,7 +223,7 @@ function EnterpriseDebugLabel({
|
|
|
179
223
|
const hasSelection = selectionEnterpriseId !== void 0 && selectionEnterpriseId !== null;
|
|
180
224
|
const mismatch = hasSelection && cookieNum !== null && cookieNum !== selectionEnterpriseId;
|
|
181
225
|
const noActive = cookieNum === null;
|
|
182
|
-
return /* @__PURE__ */
|
|
226
|
+
return /* @__PURE__ */ jsxs3(
|
|
183
227
|
"div",
|
|
184
228
|
{
|
|
185
229
|
className: cn(
|
|
@@ -189,14 +233,14 @@ function EnterpriseDebugLabel({
|
|
|
189
233
|
),
|
|
190
234
|
title: "TEMP DIAGNOSTIC: enterprise the loaded data is scoped to (cookie) vs. the UI hierarchy selection. Remove once subdomain data issue is fixed.",
|
|
191
235
|
children: [
|
|
192
|
-
/* @__PURE__ */
|
|
193
|
-
noActive ? /* @__PURE__ */
|
|
194
|
-
/* @__PURE__ */
|
|
236
|
+
/* @__PURE__ */ jsx3("span", { "aria-hidden": true, children: "\u{1F50D}" }),
|
|
237
|
+
noActive ? /* @__PURE__ */ jsx3("span", { children: "no active enterprise (cookie unset)" }) : /* @__PURE__ */ jsxs3(Fragment2, { children: [
|
|
238
|
+
/* @__PURE__ */ jsxs3("span", { children: [
|
|
195
239
|
"data ENT #",
|
|
196
240
|
cookieNum,
|
|
197
241
|
cookieEnterpriseName ? ` \xB7 ${cookieEnterpriseName}` : ""
|
|
198
242
|
] }),
|
|
199
|
-
hasSelection && /* @__PURE__ */
|
|
243
|
+
hasSelection && /* @__PURE__ */ jsxs3("span", { children: [
|
|
200
244
|
mismatch ? " \u26A0 \u2260 sel #" : " \xB7 sel #",
|
|
201
245
|
selectionEnterpriseId
|
|
202
246
|
] })
|
|
@@ -207,7 +251,7 @@ function EnterpriseDebugLabel({
|
|
|
207
251
|
}
|
|
208
252
|
|
|
209
253
|
// src/layout/DashboardLayout.tsx
|
|
210
|
-
import { Fragment as
|
|
254
|
+
import { Fragment as Fragment3, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
211
255
|
var DEFAULT_SERVICE_HUB_URL = "https://portal.oplytics.digital/app";
|
|
212
256
|
var DEFAULT_USER_SETTINGS_URL = "https://portal.oplytics.digital/account";
|
|
213
257
|
function UserMenu({
|
|
@@ -217,24 +261,24 @@ function UserMenu({
|
|
|
217
261
|
enterprise
|
|
218
262
|
}) {
|
|
219
263
|
const initials = (user.name || "U").split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
|
|
220
|
-
return /* @__PURE__ */
|
|
221
|
-
/* @__PURE__ */
|
|
222
|
-
/* @__PURE__ */
|
|
223
|
-
/* @__PURE__ */
|
|
264
|
+
return /* @__PURE__ */ jsxs4(DropdownMenu, { children: [
|
|
265
|
+
/* @__PURE__ */ jsx4(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs4("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: [
|
|
266
|
+
/* @__PURE__ */ jsx4(Avatar, { className: "h-7 w-7 border border-[#2A2A3E]", children: /* @__PURE__ */ jsx4(AvatarFallback, { className: "text-[10px] font-medium bg-[#8C34E9]/20 text-[#C084FC]", children: initials }) }),
|
|
267
|
+
/* @__PURE__ */ jsx4("span", { className: "hidden md:block text-xs text-[#E2E8F0] truncate max-w-[100px]", children: user.name || "User" })
|
|
224
268
|
] }) }),
|
|
225
|
-
/* @__PURE__ */
|
|
226
|
-
/* @__PURE__ */
|
|
227
|
-
/* @__PURE__ */
|
|
228
|
-
/* @__PURE__ */
|
|
269
|
+
/* @__PURE__ */ jsxs4(DropdownMenuContent, { align: "end", className: "w-48 bg-[#0D1220] border-[#1E2738]", children: [
|
|
270
|
+
/* @__PURE__ */ jsxs4("div", { className: "px-3 py-2 border-b border-[#1E2738]", children: [
|
|
271
|
+
/* @__PURE__ */ jsx4("p", { className: "text-xs font-medium text-[#E2E8F0] truncate", children: user.name }),
|
|
272
|
+
/* @__PURE__ */ jsx4("p", { className: "text-[10px] text-[#596475] truncate", children: user.role })
|
|
229
273
|
] }),
|
|
230
|
-
/* @__PURE__ */
|
|
274
|
+
/* @__PURE__ */ jsx4("div", { className: "px-2 py-2 border-b border-[#1E2738]", children: /* @__PURE__ */ jsx4(
|
|
231
275
|
EnterpriseDebugLabel,
|
|
232
276
|
{
|
|
233
277
|
selectionEnterpriseId: enterprise?.id ?? null,
|
|
234
278
|
cookieEnterpriseName: enterprise?.name ?? null
|
|
235
279
|
}
|
|
236
280
|
) }),
|
|
237
|
-
/* @__PURE__ */
|
|
281
|
+
/* @__PURE__ */ jsxs4(
|
|
238
282
|
DropdownMenuItem,
|
|
239
283
|
{
|
|
240
284
|
onClick: () => {
|
|
@@ -242,19 +286,19 @@ function UserMenu({
|
|
|
242
286
|
},
|
|
243
287
|
className: "text-xs text-[#E2E8F0] hover:bg-[#1E2738] cursor-pointer focus:bg-[#1E2738]",
|
|
244
288
|
children: [
|
|
245
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ jsx4(Settings, { className: "h-3.5 w-3.5 mr-2 text-[#8890A0]" }),
|
|
246
290
|
"User Settings"
|
|
247
291
|
]
|
|
248
292
|
}
|
|
249
293
|
),
|
|
250
|
-
/* @__PURE__ */
|
|
251
|
-
/* @__PURE__ */
|
|
294
|
+
/* @__PURE__ */ jsx4(DropdownMenuSeparator, { className: "bg-[#1E2738]" }),
|
|
295
|
+
/* @__PURE__ */ jsxs4(
|
|
252
296
|
DropdownMenuItem,
|
|
253
297
|
{
|
|
254
298
|
onClick: () => onLogout?.(),
|
|
255
299
|
className: "text-xs text-[#EF4444] hover:bg-[#EF4444]/10 cursor-pointer focus:bg-[#EF4444]/10 focus:text-[#EF4444]",
|
|
256
300
|
children: [
|
|
257
|
-
/* @__PURE__ */
|
|
301
|
+
/* @__PURE__ */ jsx4(LogOut, { className: "h-3.5 w-3.5 mr-2" }),
|
|
258
302
|
"Sign Out"
|
|
259
303
|
]
|
|
260
304
|
}
|
|
@@ -264,9 +308,9 @@ function UserMenu({
|
|
|
264
308
|
}
|
|
265
309
|
function EnterpriseBadge({ enterprise }) {
|
|
266
310
|
if (!enterprise) return null;
|
|
267
|
-
return /* @__PURE__ */
|
|
268
|
-
/* @__PURE__ */
|
|
269
|
-
/* @__PURE__ */
|
|
311
|
+
return /* @__PURE__ */ jsxs4("div", { className: "hidden lg:flex items-center gap-1.5 px-2 py-1 rounded-md bg-[#8C34E9]/10 border border-[#8C34E9]/20", children: [
|
|
312
|
+
/* @__PURE__ */ jsx4("div", { className: "h-4 w-4 rounded-sm bg-[#8C34E9]/30 flex items-center justify-center", children: /* @__PURE__ */ jsx4("span", { className: "text-[8px] font-bold text-[#C084FC]", children: enterprise.name.charAt(0).toUpperCase() }) }),
|
|
313
|
+
/* @__PURE__ */ jsx4("span", { className: "text-[10px] font-medium text-[#C084FC] truncate max-w-[80px]", children: enterprise.code || enterprise.name })
|
|
270
314
|
] });
|
|
271
315
|
}
|
|
272
316
|
function NavSection({
|
|
@@ -277,12 +321,12 @@ function NavSection({
|
|
|
277
321
|
onNavigate
|
|
278
322
|
}) {
|
|
279
323
|
const label = section.title ?? section.label;
|
|
280
|
-
return /* @__PURE__ */
|
|
281
|
-
label && /* @__PURE__ */
|
|
282
|
-
/* @__PURE__ */
|
|
324
|
+
return /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
325
|
+
label && /* @__PURE__ */ jsx4("div", { className: cn("px-4 py-2", marginTop && "mt-2"), children: !isCollapsed && /* @__PURE__ */ jsx4("span", { className: "text-xs font-medium text-muted-foreground uppercase tracking-wider", children: label }) }),
|
|
326
|
+
/* @__PURE__ */ jsx4(SidebarMenu, { className: "px-2 py-1", children: section.items.map((item) => {
|
|
283
327
|
const active = resolveActive(item.path);
|
|
284
328
|
const Icon = item.icon;
|
|
285
|
-
return /* @__PURE__ */
|
|
329
|
+
return /* @__PURE__ */ jsx4(SidebarMenuItem, { children: /* @__PURE__ */ jsxs4(
|
|
286
330
|
SidebarMenuButton,
|
|
287
331
|
{
|
|
288
332
|
isActive: active,
|
|
@@ -290,8 +334,8 @@ function NavSection({
|
|
|
290
334
|
tooltip: item.label,
|
|
291
335
|
className: "h-10 transition-all font-normal",
|
|
292
336
|
children: [
|
|
293
|
-
Icon && /* @__PURE__ */
|
|
294
|
-
/* @__PURE__ */
|
|
337
|
+
Icon && /* @__PURE__ */ jsx4(Icon, { className: cn("h-4 w-4", active && "text-primary") }),
|
|
338
|
+
/* @__PURE__ */ jsx4("span", { children: item.label })
|
|
295
339
|
]
|
|
296
340
|
}
|
|
297
341
|
) }, item.path);
|
|
@@ -308,6 +352,7 @@ function DashboardShell({
|
|
|
308
352
|
onNavigate,
|
|
309
353
|
isActive,
|
|
310
354
|
serviceHubUrl = DEFAULT_SERVICE_HUB_URL,
|
|
355
|
+
crossServiceLinks,
|
|
311
356
|
settingsPath,
|
|
312
357
|
user,
|
|
313
358
|
onLogout,
|
|
@@ -326,25 +371,25 @@ function DashboardShell({
|
|
|
326
371
|
const isCollapsed = state === "collapsed";
|
|
327
372
|
const navigate = onNavigate;
|
|
328
373
|
const resolveActive = (path) => isActive ? isActive(path, activePath) : isMenuItemActive(path, activePath);
|
|
329
|
-
return /* @__PURE__ */
|
|
330
|
-
/* @__PURE__ */
|
|
331
|
-
/* @__PURE__ */
|
|
332
|
-
/* @__PURE__ */
|
|
374
|
+
return /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
375
|
+
/* @__PURE__ */ jsxs4(Sidebar, { collapsible: "icon", className: "border-r-0", children: [
|
|
376
|
+
/* @__PURE__ */ jsx4(SidebarHeader, { className: "h-16 justify-center", children: /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3 px-2 transition-all w-full", children: [
|
|
377
|
+
/* @__PURE__ */ jsx4(
|
|
333
378
|
"button",
|
|
334
379
|
{
|
|
335
380
|
onClick: toggleSidebar,
|
|
336
381
|
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",
|
|
337
382
|
"aria-label": "Toggle navigation",
|
|
338
|
-
children: /* @__PURE__ */
|
|
383
|
+
children: /* @__PURE__ */ jsx4(PanelLeft, { className: "h-4 w-4 text-muted-foreground" })
|
|
339
384
|
}
|
|
340
385
|
),
|
|
341
|
-
!isCollapsed ? /* @__PURE__ */
|
|
342
|
-
serviceIcon && /* @__PURE__ */
|
|
343
|
-
/* @__PURE__ */
|
|
386
|
+
!isCollapsed ? /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
387
|
+
serviceIcon && /* @__PURE__ */ jsx4("span", { className: "text-[#8C34E9] shrink-0", children: serviceIcon }),
|
|
388
|
+
/* @__PURE__ */ jsx4("span", { className: "font-semibold tracking-tight truncate", children: serviceName })
|
|
344
389
|
] }) : null
|
|
345
390
|
] }) }),
|
|
346
|
-
/* @__PURE__ */
|
|
347
|
-
serviceHubUrl && /* @__PURE__ */
|
|
391
|
+
/* @__PURE__ */ jsxs4(SidebarContent, { className: "gap-0", children: [
|
|
392
|
+
serviceHubUrl && /* @__PURE__ */ jsx4(SidebarMenu, { className: "px-2 pt-2 pb-1", children: /* @__PURE__ */ jsx4(SidebarMenuItem, { children: /* @__PURE__ */ jsxs4(
|
|
348
393
|
SidebarMenuButton,
|
|
349
394
|
{
|
|
350
395
|
onClick: () => {
|
|
@@ -353,12 +398,13 @@ function DashboardShell({
|
|
|
353
398
|
tooltip: "Back to Service Hub",
|
|
354
399
|
className: "h-10 transition-all font-normal text-muted-foreground hover:text-foreground",
|
|
355
400
|
children: [
|
|
356
|
-
/* @__PURE__ */
|
|
357
|
-
/* @__PURE__ */
|
|
401
|
+
/* @__PURE__ */ jsx4(ArrowLeft, { className: "h-4 w-4" }),
|
|
402
|
+
/* @__PURE__ */ jsx4("span", { children: "Service Hub" })
|
|
358
403
|
]
|
|
359
404
|
}
|
|
360
405
|
) }) }),
|
|
361
|
-
|
|
406
|
+
/* @__PURE__ */ jsx4(CrossServiceNav, { links: crossServiceLinks ?? [] }),
|
|
407
|
+
menuSections.map((section, i) => /* @__PURE__ */ jsx4(
|
|
362
408
|
NavSection,
|
|
363
409
|
{
|
|
364
410
|
section,
|
|
@@ -368,7 +414,7 @@ function DashboardShell({
|
|
|
368
414
|
},
|
|
369
415
|
section.title ?? section.label ?? `section-${i}`
|
|
370
416
|
)),
|
|
371
|
-
isAdmin && adminSections?.map((section, i) => /* @__PURE__ */
|
|
417
|
+
isAdmin && adminSections?.map((section, i) => /* @__PURE__ */ jsx4(
|
|
372
418
|
NavSection,
|
|
373
419
|
{
|
|
374
420
|
section,
|
|
@@ -380,21 +426,21 @@ function DashboardShell({
|
|
|
380
426
|
section.title ?? section.label ?? `admin-${i}`
|
|
381
427
|
))
|
|
382
428
|
] }),
|
|
383
|
-
settingsPath && /* @__PURE__ */
|
|
429
|
+
settingsPath && /* @__PURE__ */ jsx4(SidebarFooter, { className: "p-2", children: /* @__PURE__ */ jsx4(SidebarMenu, { children: /* @__PURE__ */ jsx4(SidebarMenuItem, { children: /* @__PURE__ */ jsxs4(
|
|
384
430
|
SidebarMenuButton,
|
|
385
431
|
{
|
|
386
432
|
onClick: () => navigate(settingsPath),
|
|
387
433
|
tooltip: "Settings",
|
|
388
434
|
className: "h-10 transition-all font-normal text-muted-foreground hover:text-foreground",
|
|
389
435
|
children: [
|
|
390
|
-
/* @__PURE__ */
|
|
391
|
-
/* @__PURE__ */
|
|
436
|
+
/* @__PURE__ */ jsx4(Settings, { className: "h-4 w-4" }),
|
|
437
|
+
/* @__PURE__ */ jsx4("span", { children: "Settings" })
|
|
392
438
|
]
|
|
393
439
|
}
|
|
394
440
|
) }) }) })
|
|
395
441
|
] }),
|
|
396
|
-
/* @__PURE__ */
|
|
397
|
-
/* @__PURE__ */
|
|
442
|
+
/* @__PURE__ */ jsxs4(SidebarInset, { children: [
|
|
443
|
+
/* @__PURE__ */ jsxs4(
|
|
398
444
|
"header",
|
|
399
445
|
{
|
|
400
446
|
className: cn(
|
|
@@ -404,16 +450,16 @@ function DashboardShell({
|
|
|
404
450
|
"sticky top-0 z-40"
|
|
405
451
|
),
|
|
406
452
|
children: [
|
|
407
|
-
/* @__PURE__ */
|
|
408
|
-
/* @__PURE__ */
|
|
409
|
-
serviceIcon && /* @__PURE__ */
|
|
410
|
-
hierarchyNavigator && /* @__PURE__ */
|
|
453
|
+
/* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
|
|
454
|
+
/* @__PURE__ */ jsx4(SidebarTrigger, { className: "h-9 w-9 rounded-lg bg-background shrink-0 md:hidden" }),
|
|
455
|
+
serviceIcon && /* @__PURE__ */ jsx4("span", { className: "text-[#8C34E9] shrink-0 hidden sm:block", children: serviceIcon }),
|
|
456
|
+
hierarchyNavigator && /* @__PURE__ */ jsx4("div", { className: "min-w-0 overflow-x-auto scrollbar-none", children: hierarchyNavigator })
|
|
411
457
|
] }),
|
|
412
|
-
/* @__PURE__ */
|
|
458
|
+
/* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2 shrink-0", children: [
|
|
413
459
|
reportingToolbar,
|
|
414
|
-
/* @__PURE__ */
|
|
415
|
-
/* @__PURE__ */
|
|
416
|
-
user && /* @__PURE__ */
|
|
460
|
+
/* @__PURE__ */ jsx4(EnterpriseBadge, { enterprise }),
|
|
461
|
+
/* @__PURE__ */ jsx4("div", { className: "w-px h-6 bg-[#1E2738] hidden md:block" }),
|
|
462
|
+
user && /* @__PURE__ */ jsx4(
|
|
417
463
|
UserMenu,
|
|
418
464
|
{
|
|
419
465
|
user,
|
|
@@ -426,10 +472,10 @@ function DashboardShell({
|
|
|
426
472
|
]
|
|
427
473
|
}
|
|
428
474
|
),
|
|
429
|
-
/* @__PURE__ */
|
|
475
|
+
/* @__PURE__ */ jsx4("main", { className: "flex-1 p-4 md:p-6 pb-14", children })
|
|
430
476
|
] }),
|
|
431
477
|
footer,
|
|
432
|
-
showHealthFooter && user?.role === "platform_admin" && /* @__PURE__ */
|
|
478
|
+
showHealthFooter && user?.role === "platform_admin" && /* @__PURE__ */ jsx4(
|
|
433
479
|
HealthFooter,
|
|
434
480
|
{
|
|
435
481
|
user,
|
|
@@ -443,13 +489,13 @@ function DashboardShell({
|
|
|
443
489
|
}
|
|
444
490
|
function DashboardLayout(props) {
|
|
445
491
|
const isMobile = useIsMobile();
|
|
446
|
-
return /* @__PURE__ */
|
|
492
|
+
return /* @__PURE__ */ jsx4(SidebarProvider, { defaultOpen: props.defaultOpen ?? !isMobile, children: /* @__PURE__ */ jsx4(DashboardShell, { ...props }) });
|
|
447
493
|
}
|
|
448
494
|
|
|
449
495
|
// src/layout/DashboardLayoutSkeleton.tsx
|
|
450
|
-
import { jsx as
|
|
496
|
+
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
451
497
|
function Skeleton({ className }) {
|
|
452
|
-
return /* @__PURE__ */
|
|
498
|
+
return /* @__PURE__ */ jsx5(
|
|
453
499
|
"div",
|
|
454
500
|
{
|
|
455
501
|
className: cn(
|
|
@@ -460,47 +506,47 @@ function Skeleton({ className }) {
|
|
|
460
506
|
);
|
|
461
507
|
}
|
|
462
508
|
function DashboardLayoutSkeleton({ className }) {
|
|
463
|
-
return /* @__PURE__ */
|
|
464
|
-
/* @__PURE__ */
|
|
465
|
-
/* @__PURE__ */
|
|
466
|
-
/* @__PURE__ */
|
|
467
|
-
/* @__PURE__ */
|
|
509
|
+
return /* @__PURE__ */ jsxs5("div", { className: cn("flex min-h-screen bg-[#0A0E1A]", className), children: [
|
|
510
|
+
/* @__PURE__ */ jsxs5("div", { className: "w-[260px] border-r border-[#1E2738] bg-[#0D1220] p-4 space-y-6", children: [
|
|
511
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-3 px-2", children: [
|
|
512
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-8 w-8 rounded-md" }),
|
|
513
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-4 w-24" })
|
|
468
514
|
] }),
|
|
469
|
-
/* @__PURE__ */
|
|
470
|
-
/* @__PURE__ */
|
|
471
|
-
/* @__PURE__ */
|
|
472
|
-
/* @__PURE__ */
|
|
473
|
-
/* @__PURE__ */
|
|
515
|
+
/* @__PURE__ */ jsxs5("div", { className: "space-y-2 px-2", children: [
|
|
516
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-full rounded-lg" }),
|
|
517
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-full rounded-lg" }),
|
|
518
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-full rounded-lg" }),
|
|
519
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-full rounded-lg" })
|
|
474
520
|
] }),
|
|
475
|
-
/* @__PURE__ */
|
|
476
|
-
/* @__PURE__ */
|
|
477
|
-
/* @__PURE__ */
|
|
478
|
-
/* @__PURE__ */
|
|
521
|
+
/* @__PURE__ */ jsxs5("div", { className: "px-2", children: [
|
|
522
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-3 w-16 mb-3" }),
|
|
523
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-full rounded-lg" }),
|
|
524
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-full rounded-lg mt-2" })
|
|
479
525
|
] }),
|
|
480
|
-
/* @__PURE__ */
|
|
481
|
-
/* @__PURE__ */
|
|
482
|
-
/* @__PURE__ */
|
|
483
|
-
/* @__PURE__ */
|
|
484
|
-
/* @__PURE__ */
|
|
526
|
+
/* @__PURE__ */ jsx5("div", { className: "absolute bottom-4 left-4 right-4", children: /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-3 px-1", children: [
|
|
527
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-8 w-8 rounded-full" }),
|
|
528
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex-1 space-y-2", children: [
|
|
529
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-3 w-20" }),
|
|
530
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-2 w-32" })
|
|
485
531
|
] })
|
|
486
532
|
] }) })
|
|
487
533
|
] }),
|
|
488
|
-
/* @__PURE__ */
|
|
489
|
-
/* @__PURE__ */
|
|
490
|
-
/* @__PURE__ */
|
|
491
|
-
/* @__PURE__ */
|
|
534
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex-1 p-6 space-y-4", children: [
|
|
535
|
+
/* @__PURE__ */ jsxs5("div", { className: "flex items-center justify-between", children: [
|
|
536
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-8 w-48 rounded-lg" }),
|
|
537
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-9 w-24 rounded-lg" })
|
|
492
538
|
] }),
|
|
493
|
-
/* @__PURE__ */
|
|
494
|
-
/* @__PURE__ */
|
|
495
|
-
/* @__PURE__ */
|
|
496
|
-
/* @__PURE__ */
|
|
497
|
-
/* @__PURE__ */
|
|
539
|
+
/* @__PURE__ */ jsxs5("div", { className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4", children: [
|
|
540
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-24 rounded-xl" }),
|
|
541
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-24 rounded-xl" }),
|
|
542
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-24 rounded-xl" }),
|
|
543
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-24 rounded-xl" })
|
|
498
544
|
] }),
|
|
499
|
-
/* @__PURE__ */
|
|
500
|
-
/* @__PURE__ */
|
|
501
|
-
/* @__PURE__ */
|
|
502
|
-
/* @__PURE__ */
|
|
503
|
-
/* @__PURE__ */
|
|
545
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-64 rounded-xl" }),
|
|
546
|
+
/* @__PURE__ */ jsxs5("div", { className: "space-y-2", children: [
|
|
547
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-10 w-full rounded-lg" }),
|
|
548
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-10 w-full rounded-lg" }),
|
|
549
|
+
/* @__PURE__ */ jsx5(Skeleton, { className: "h-10 w-full rounded-lg" })
|
|
504
550
|
] })
|
|
505
551
|
] })
|
|
506
552
|
] });
|
|
@@ -508,7 +554,7 @@ function DashboardLayoutSkeleton({ className }) {
|
|
|
508
554
|
|
|
509
555
|
// src/layout/SharedPageHeader.tsx
|
|
510
556
|
import { ChevronLeft } from "lucide-react";
|
|
511
|
-
import { jsx as
|
|
557
|
+
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
512
558
|
function SharedPageHeader({
|
|
513
559
|
title,
|
|
514
560
|
subtitle,
|
|
@@ -521,7 +567,7 @@ function SharedPageHeader({
|
|
|
521
567
|
className,
|
|
522
568
|
children
|
|
523
569
|
}) {
|
|
524
|
-
return /* @__PURE__ */
|
|
570
|
+
return /* @__PURE__ */ jsxs6(
|
|
525
571
|
"div",
|
|
526
572
|
{
|
|
527
573
|
className: cn(
|
|
@@ -531,10 +577,10 @@ function SharedPageHeader({
|
|
|
531
577
|
className
|
|
532
578
|
),
|
|
533
579
|
children: [
|
|
534
|
-
breadcrumbs && /* @__PURE__ */
|
|
535
|
-
/* @__PURE__ */
|
|
536
|
-
/* @__PURE__ */
|
|
537
|
-
onBack && /* @__PURE__ */
|
|
580
|
+
breadcrumbs && /* @__PURE__ */ jsx6("div", { className: cn("mb-2", compact && "mb-1"), children: breadcrumbs }),
|
|
581
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-center justify-between gap-4", children: [
|
|
582
|
+
/* @__PURE__ */ jsxs6("div", { className: "flex items-center gap-3 min-w-0", children: [
|
|
583
|
+
onBack && /* @__PURE__ */ jsx6(
|
|
538
584
|
"button",
|
|
539
585
|
{
|
|
540
586
|
onClick: onBack,
|
|
@@ -545,12 +591,12 @@ function SharedPageHeader({
|
|
|
545
591
|
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-[#8C34E9]"
|
|
546
592
|
),
|
|
547
593
|
"aria-label": "Go back",
|
|
548
|
-
children: /* @__PURE__ */
|
|
594
|
+
children: /* @__PURE__ */ jsx6(ChevronLeft, { className: compact ? "h-4 w-4" : "h-5 w-5" })
|
|
549
595
|
}
|
|
550
596
|
),
|
|
551
|
-
icon && /* @__PURE__ */
|
|
552
|
-
/* @__PURE__ */
|
|
553
|
-
/* @__PURE__ */
|
|
597
|
+
icon && /* @__PURE__ */ jsx6("div", { className: "shrink-0 text-[#8C34E9]", children: icon }),
|
|
598
|
+
/* @__PURE__ */ jsxs6("div", { className: "min-w-0", children: [
|
|
599
|
+
/* @__PURE__ */ jsx6(
|
|
554
600
|
"h1",
|
|
555
601
|
{
|
|
556
602
|
className: cn(
|
|
@@ -561,7 +607,7 @@ function SharedPageHeader({
|
|
|
561
607
|
children: title
|
|
562
608
|
}
|
|
563
609
|
),
|
|
564
|
-
subtitle && /* @__PURE__ */
|
|
610
|
+
subtitle && /* @__PURE__ */ jsx6(
|
|
565
611
|
"p",
|
|
566
612
|
{
|
|
567
613
|
className: cn(
|
|
@@ -574,16 +620,16 @@ function SharedPageHeader({
|
|
|
574
620
|
)
|
|
575
621
|
] })
|
|
576
622
|
] }),
|
|
577
|
-
actions && /* @__PURE__ */
|
|
623
|
+
actions && /* @__PURE__ */ jsx6("div", { className: "shrink-0 flex items-center gap-2", children: actions })
|
|
578
624
|
] }),
|
|
579
|
-
children && /* @__PURE__ */
|
|
625
|
+
children && /* @__PURE__ */ jsx6("div", { className: cn("mt-3", compact && "mt-2"), children })
|
|
580
626
|
]
|
|
581
627
|
}
|
|
582
628
|
);
|
|
583
629
|
}
|
|
584
630
|
|
|
585
631
|
// src/layout/SharedFooter.tsx
|
|
586
|
-
import { jsx as
|
|
632
|
+
import { jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
587
633
|
var FOOTER_SERVICES = [
|
|
588
634
|
{ name: "SQDCP", slug: "sqdcp", localRoute: "/services/sqdcp", externalUrl: "https://sqdcp.oplytics.digital" },
|
|
589
635
|
{ name: "OEE Manager", slug: "oee-manager", localRoute: "/services/oee-manager", externalUrl: "https://oee.oplytics.digital" },
|
|
@@ -605,7 +651,7 @@ function SharedFooter({
|
|
|
605
651
|
year
|
|
606
652
|
}) {
|
|
607
653
|
const currentYear = year ?? (/* @__PURE__ */ new Date()).getFullYear();
|
|
608
|
-
return /* @__PURE__ */
|
|
654
|
+
return /* @__PURE__ */ jsx7(
|
|
609
655
|
"footer",
|
|
610
656
|
{
|
|
611
657
|
className: cn(
|
|
@@ -614,25 +660,25 @@ function SharedFooter({
|
|
|
614
660
|
"font-[Space_Grotesk,sans-serif]",
|
|
615
661
|
className
|
|
616
662
|
),
|
|
617
|
-
children: /* @__PURE__ */
|
|
618
|
-
/* @__PURE__ */
|
|
619
|
-
/* @__PURE__ */
|
|
620
|
-
/* @__PURE__ */
|
|
621
|
-
/* @__PURE__ */
|
|
663
|
+
children: /* @__PURE__ */ jsxs7("div", { className: "max-w-7xl mx-auto px-6 py-10", children: [
|
|
664
|
+
/* @__PURE__ */ jsxs7("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-8 mb-8", children: [
|
|
665
|
+
/* @__PURE__ */ jsxs7("div", { className: "md:col-span-1", children: [
|
|
666
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-2 mb-3", children: [
|
|
667
|
+
/* @__PURE__ */ jsx7(
|
|
622
668
|
"div",
|
|
623
669
|
{
|
|
624
670
|
className: "w-7 h-7 rounded-full flex items-center justify-center",
|
|
625
671
|
style: { background: "#8C34E9" },
|
|
626
|
-
children: /* @__PURE__ */
|
|
672
|
+
children: /* @__PURE__ */ jsx7("span", { className: "text-white font-bold text-xs", children: "O" })
|
|
627
673
|
}
|
|
628
674
|
),
|
|
629
|
-
/* @__PURE__ */
|
|
675
|
+
/* @__PURE__ */ jsx7("span", { className: "text-[#E2E8F0] font-semibold text-sm font-[Montserrat,sans-serif]", children: "Oplytics.digital" })
|
|
630
676
|
] }),
|
|
631
|
-
/* @__PURE__ */
|
|
677
|
+
/* @__PURE__ */ jsx7("p", { className: "text-xs text-[#596475] leading-relaxed", children: "Operational intelligence platform for manufacturing excellence." })
|
|
632
678
|
] }),
|
|
633
|
-
/* @__PURE__ */
|
|
634
|
-
/* @__PURE__ */
|
|
635
|
-
/* @__PURE__ */
|
|
679
|
+
/* @__PURE__ */ jsxs7("div", { children: [
|
|
680
|
+
/* @__PURE__ */ jsx7("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Services" }),
|
|
681
|
+
/* @__PURE__ */ jsx7("ul", { className: "space-y-2", children: services.map((service) => /* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
636
682
|
"a",
|
|
637
683
|
{
|
|
638
684
|
href: useExternalUrls && service.externalUrl ? service.externalUrl : service.localRoute,
|
|
@@ -642,10 +688,10 @@ function SharedFooter({
|
|
|
642
688
|
}
|
|
643
689
|
) }, service.slug)) })
|
|
644
690
|
] }),
|
|
645
|
-
/* @__PURE__ */
|
|
646
|
-
/* @__PURE__ */
|
|
647
|
-
/* @__PURE__ */
|
|
648
|
-
showPricing && /* @__PURE__ */
|
|
691
|
+
/* @__PURE__ */ jsxs7("div", { children: [
|
|
692
|
+
/* @__PURE__ */ jsx7("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Company" }),
|
|
693
|
+
/* @__PURE__ */ jsxs7("ul", { className: "space-y-2", children: [
|
|
694
|
+
showPricing && /* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
649
695
|
"a",
|
|
650
696
|
{
|
|
651
697
|
href: "/pricing",
|
|
@@ -654,7 +700,7 @@ function SharedFooter({
|
|
|
654
700
|
children: "Pricing"
|
|
655
701
|
}
|
|
656
702
|
) }),
|
|
657
|
-
/* @__PURE__ */
|
|
703
|
+
/* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
658
704
|
"a",
|
|
659
705
|
{
|
|
660
706
|
href: "/about",
|
|
@@ -662,7 +708,7 @@ function SharedFooter({
|
|
|
662
708
|
children: "About"
|
|
663
709
|
}
|
|
664
710
|
) }),
|
|
665
|
-
/* @__PURE__ */
|
|
711
|
+
/* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
666
712
|
"a",
|
|
667
713
|
{
|
|
668
714
|
href: "/contact",
|
|
@@ -672,10 +718,10 @@ function SharedFooter({
|
|
|
672
718
|
) })
|
|
673
719
|
] })
|
|
674
720
|
] }),
|
|
675
|
-
/* @__PURE__ */
|
|
676
|
-
/* @__PURE__ */
|
|
677
|
-
/* @__PURE__ */
|
|
678
|
-
/* @__PURE__ */
|
|
721
|
+
/* @__PURE__ */ jsxs7("div", { children: [
|
|
722
|
+
/* @__PURE__ */ jsx7("h4", { className: "text-[#E2E8F0] font-medium text-xs uppercase tracking-wider mb-3 font-[Montserrat,sans-serif]", children: "Legal" }),
|
|
723
|
+
/* @__PURE__ */ jsxs7("ul", { className: "space-y-2", children: [
|
|
724
|
+
/* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
679
725
|
"a",
|
|
680
726
|
{
|
|
681
727
|
href: "/privacy",
|
|
@@ -683,7 +729,7 @@ function SharedFooter({
|
|
|
683
729
|
children: "Privacy Policy"
|
|
684
730
|
}
|
|
685
731
|
) }),
|
|
686
|
-
/* @__PURE__ */
|
|
732
|
+
/* @__PURE__ */ jsx7("li", { children: /* @__PURE__ */ jsx7(
|
|
687
733
|
"a",
|
|
688
734
|
{
|
|
689
735
|
href: "/terms",
|
|
@@ -692,7 +738,7 @@ function SharedFooter({
|
|
|
692
738
|
}
|
|
693
739
|
) })
|
|
694
740
|
] }),
|
|
695
|
-
showSignIn && /* @__PURE__ */
|
|
741
|
+
showSignIn && /* @__PURE__ */ jsx7("div", { className: "mt-4", children: /* @__PURE__ */ jsx7(
|
|
696
742
|
"a",
|
|
697
743
|
{
|
|
698
744
|
href: "/login",
|
|
@@ -704,14 +750,14 @@ function SharedFooter({
|
|
|
704
750
|
] })
|
|
705
751
|
] }),
|
|
706
752
|
children,
|
|
707
|
-
/* @__PURE__ */
|
|
708
|
-
/* @__PURE__ */
|
|
753
|
+
/* @__PURE__ */ jsxs7("div", { className: "pt-6 border-t border-[#1E2738] flex flex-col sm:flex-row items-center justify-between gap-3", children: [
|
|
754
|
+
/* @__PURE__ */ jsxs7("p", { className: "text-xs text-[#596475]", children: [
|
|
709
755
|
"\xA9 ",
|
|
710
756
|
currentYear,
|
|
711
757
|
" Oplytics.digital. All rights reserved."
|
|
712
758
|
] }),
|
|
713
|
-
/* @__PURE__ */
|
|
714
|
-
typeof __APP_VERSION__ !== "undefined" && /* @__PURE__ */
|
|
759
|
+
/* @__PURE__ */ jsx7("p", { className: "text-xs text-[#3E4A5C]", children: "Built for manufacturing excellence" }),
|
|
760
|
+
typeof __APP_VERSION__ !== "undefined" && /* @__PURE__ */ jsxs7("p", { className: "text-xs text-[#3E4A5C]", children: [
|
|
715
761
|
"Platform v",
|
|
716
762
|
__APP_VERSION__
|
|
717
763
|
] })
|
|
@@ -722,7 +768,7 @@ function SharedFooter({
|
|
|
722
768
|
}
|
|
723
769
|
|
|
724
770
|
// src/layout/ServiceFooter.tsx
|
|
725
|
-
import { Fragment as
|
|
771
|
+
import { Fragment as Fragment4, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
726
772
|
function formatBuildDate2(iso) {
|
|
727
773
|
if (!iso) return void 0;
|
|
728
774
|
const d = new Date(iso);
|
|
@@ -758,7 +804,7 @@ function ServiceFooter({
|
|
|
758
804
|
buildDate ?? (typeof __BUILD_DATE__ !== "undefined" ? __BUILD_DATE__ : void 0)
|
|
759
805
|
);
|
|
760
806
|
const buildStamp = [version && `v.${version}`, commit, builtAt].filter(Boolean).join(" \xB7 ");
|
|
761
|
-
return /* @__PURE__ */
|
|
807
|
+
return /* @__PURE__ */ jsxs8(
|
|
762
808
|
"footer",
|
|
763
809
|
{
|
|
764
810
|
className: cn(
|
|
@@ -769,57 +815,57 @@ function ServiceFooter({
|
|
|
769
815
|
className
|
|
770
816
|
),
|
|
771
817
|
children: [
|
|
772
|
-
/* @__PURE__ */
|
|
773
|
-
/* @__PURE__ */
|
|
818
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 min-w-0", children: [
|
|
819
|
+
/* @__PURE__ */ jsx8(
|
|
774
820
|
"div",
|
|
775
821
|
{
|
|
776
822
|
className: "w-5 h-5 rounded-full flex items-center justify-center shrink-0",
|
|
777
823
|
style: { background: "#8C34E9" },
|
|
778
|
-
children: /* @__PURE__ */
|
|
824
|
+
children: /* @__PURE__ */ jsx8("span", { className: "text-white font-bold", style: { fontSize: 9 }, children: "O" })
|
|
779
825
|
}
|
|
780
826
|
),
|
|
781
|
-
/* @__PURE__ */
|
|
827
|
+
/* @__PURE__ */ jsx8("span", { className: "text-[10px] text-[#596475] whitespace-nowrap hidden sm:inline", children: "Operational Excellence. One Digital Platform." })
|
|
782
828
|
] }),
|
|
783
|
-
showHealthMonitor && /* @__PURE__ */
|
|
784
|
-
enterpriseName && /* @__PURE__ */
|
|
785
|
-
/* @__PURE__ */
|
|
786
|
-
/* @__PURE__ */
|
|
787
|
-
enterpriseId != null && /* @__PURE__ */
|
|
829
|
+
showHealthMonitor && /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-1.5 text-[10px] text-[#3E4A5C] min-w-0 overflow-hidden", children: [
|
|
830
|
+
enterpriseName && /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
831
|
+
/* @__PURE__ */ jsxs8("span", { className: "whitespace-nowrap", children: [
|
|
832
|
+
/* @__PURE__ */ jsx8("span", { className: "text-[#596475]", children: enterpriseName }),
|
|
833
|
+
enterpriseId != null && /* @__PURE__ */ jsxs8("span", { className: "text-[#3E4A5C]", children: [
|
|
788
834
|
" (",
|
|
789
835
|
enterpriseId,
|
|
790
836
|
")"
|
|
791
837
|
] })
|
|
792
838
|
] }),
|
|
793
|
-
/* @__PURE__ */
|
|
839
|
+
/* @__PURE__ */ jsx8(Separator, {})
|
|
794
840
|
] }),
|
|
795
|
-
userEmail && /* @__PURE__ */
|
|
796
|
-
/* @__PURE__ */
|
|
797
|
-
userRole && /* @__PURE__ */
|
|
841
|
+
userEmail && /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
842
|
+
/* @__PURE__ */ jsx8("span", { className: "whitespace-nowrap text-[#596475]", children: userEmail }),
|
|
843
|
+
userRole && /* @__PURE__ */ jsxs8("span", { className: "text-[#3E4A5C]", children: [
|
|
798
844
|
" (",
|
|
799
845
|
userRole,
|
|
800
846
|
")"
|
|
801
847
|
] }),
|
|
802
|
-
/* @__PURE__ */
|
|
848
|
+
/* @__PURE__ */ jsx8(Separator, {})
|
|
803
849
|
] }),
|
|
804
|
-
env && /* @__PURE__ */
|
|
805
|
-
/* @__PURE__ */
|
|
850
|
+
env && /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
851
|
+
/* @__PURE__ */ jsxs8("span", { className: "whitespace-nowrap", children: [
|
|
806
852
|
"ENV:",
|
|
807
853
|
" ",
|
|
808
|
-
/* @__PURE__ */
|
|
854
|
+
/* @__PURE__ */ jsx8("span", { style: { color: env.color }, className: "font-semibold", children: env.label })
|
|
809
855
|
] }),
|
|
810
|
-
/* @__PURE__ */
|
|
856
|
+
/* @__PURE__ */ jsx8(Separator, {})
|
|
811
857
|
] }),
|
|
812
|
-
buildStamp && /* @__PURE__ */
|
|
858
|
+
buildStamp && /* @__PURE__ */ jsx8("span", { className: "whitespace-nowrap text-[#3E4A5C] font-mono", title: "Deployed build", children: buildStamp })
|
|
813
859
|
] }),
|
|
814
|
-
/* @__PURE__ */
|
|
815
|
-
/* @__PURE__ */
|
|
860
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2 text-[10px] text-[#3E4A5C] whitespace-nowrap shrink-0", children: [
|
|
861
|
+
/* @__PURE__ */ jsxs8("span", { children: [
|
|
816
862
|
"\xA9 ",
|
|
817
863
|
currentYear,
|
|
818
864
|
" Oplytics.digital"
|
|
819
865
|
] }),
|
|
820
|
-
!showHealthMonitor && buildStamp && /* @__PURE__ */
|
|
821
|
-
/* @__PURE__ */
|
|
822
|
-
/* @__PURE__ */
|
|
866
|
+
!showHealthMonitor && buildStamp && /* @__PURE__ */ jsxs8(Fragment4, { children: [
|
|
867
|
+
/* @__PURE__ */ jsx8(Separator, {}),
|
|
868
|
+
/* @__PURE__ */ jsx8("span", { className: "font-mono", title: "Deployed build", children: buildStamp })
|
|
823
869
|
] })
|
|
824
870
|
] })
|
|
825
871
|
]
|
|
@@ -827,7 +873,7 @@ function ServiceFooter({
|
|
|
827
873
|
);
|
|
828
874
|
}
|
|
829
875
|
function Separator() {
|
|
830
|
-
return /* @__PURE__ */
|
|
876
|
+
return /* @__PURE__ */ jsx8("span", { className: "text-[#1E2738] select-none", "aria-hidden": true, children: "|" });
|
|
831
877
|
}
|
|
832
878
|
|
|
833
879
|
// src/layout/createServiceLayout.tsx
|
|
@@ -995,6 +1041,7 @@ export {
|
|
|
995
1041
|
getInitials,
|
|
996
1042
|
isMenuItemActive,
|
|
997
1043
|
useSidebarResize,
|
|
1044
|
+
CrossServiceNav,
|
|
998
1045
|
HealthFooter,
|
|
999
1046
|
EnterpriseDebugLabel,
|
|
1000
1047
|
DashboardLayout,
|
|
@@ -1011,4 +1058,4 @@ export {
|
|
|
1011
1058
|
policyDeploymentConfig,
|
|
1012
1059
|
SERVICE_CONFIGS
|
|
1013
1060
|
};
|
|
1014
|
-
//# sourceMappingURL=chunk-
|
|
1061
|
+
//# sourceMappingURL=chunk-POOTKX4M.js.map
|