@optifye/dashboard-core 6.11.7 → 6.11.8
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/index.css +27 -15
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +32 -21
- package/dist/index.mjs +32 -21
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -565,9 +565,6 @@ body {
|
|
|
565
565
|
.right-1\/2 {
|
|
566
566
|
right: 50%;
|
|
567
567
|
}
|
|
568
|
-
.right-16 {
|
|
569
|
-
right: 4rem;
|
|
570
|
-
}
|
|
571
568
|
.right-2 {
|
|
572
569
|
right: 0.5rem;
|
|
573
570
|
}
|
|
@@ -1110,18 +1107,12 @@ body {
|
|
|
1110
1107
|
.h-\[calc\(100\%-3rem\)\] {
|
|
1111
1108
|
height: calc(100% - 3rem);
|
|
1112
1109
|
}
|
|
1113
|
-
.h-\[calc\(100\%-8rem\)\] {
|
|
1114
|
-
height: calc(100% - 8rem);
|
|
1115
|
-
}
|
|
1116
1110
|
.h-\[calc\(100vh-100px\)\] {
|
|
1117
1111
|
height: calc(100vh - 100px);
|
|
1118
1112
|
}
|
|
1119
1113
|
.h-\[calc\(100vh-10rem\)\] {
|
|
1120
1114
|
height: calc(100vh - 10rem);
|
|
1121
1115
|
}
|
|
1122
|
-
.h-\[calc\(100vh-12rem\)\] {
|
|
1123
|
-
height: calc(100vh - 12rem);
|
|
1124
|
-
}
|
|
1125
1116
|
.h-\[calc\(100vh-64px\)\] {
|
|
1126
1117
|
height: calc(100vh - 64px);
|
|
1127
1118
|
}
|
|
@@ -1230,6 +1221,9 @@ body {
|
|
|
1230
1221
|
.min-h-\[300px\] {
|
|
1231
1222
|
min-height: 300px;
|
|
1232
1223
|
}
|
|
1224
|
+
.min-h-\[320px\] {
|
|
1225
|
+
min-height: 320px;
|
|
1226
|
+
}
|
|
1233
1227
|
.min-h-\[400px\] {
|
|
1234
1228
|
min-height: 400px;
|
|
1235
1229
|
}
|
|
@@ -1245,6 +1239,9 @@ body {
|
|
|
1245
1239
|
.min-h-\[80px\] {
|
|
1246
1240
|
min-height: 80px;
|
|
1247
1241
|
}
|
|
1242
|
+
.min-h-\[calc\(100dvh-12rem\)\] {
|
|
1243
|
+
min-height: calc(100dvh - 12rem);
|
|
1244
|
+
}
|
|
1248
1245
|
.min-h-\[calc\(100vh-100px\)\] {
|
|
1249
1246
|
min-height: calc(100vh - 100px);
|
|
1250
1247
|
}
|
|
@@ -1380,15 +1377,9 @@ body {
|
|
|
1380
1377
|
.w-\[22vw\] {
|
|
1381
1378
|
width: 22vw;
|
|
1382
1379
|
}
|
|
1383
|
-
.w-\[240px\] {
|
|
1384
|
-
width: 240px;
|
|
1385
|
-
}
|
|
1386
1380
|
.w-\[27vw\] {
|
|
1387
1381
|
width: 27vw;
|
|
1388
1382
|
}
|
|
1389
|
-
.w-\[280px\] {
|
|
1390
|
-
width: 280px;
|
|
1391
|
-
}
|
|
1392
1383
|
.w-\[340px\] {
|
|
1393
1384
|
width: 340px;
|
|
1394
1385
|
}
|
|
@@ -1404,6 +1395,12 @@ body {
|
|
|
1404
1395
|
.w-\[520px\] {
|
|
1405
1396
|
width: 520px;
|
|
1406
1397
|
}
|
|
1398
|
+
.w-\[min\(88vw\,240px\)\] {
|
|
1399
|
+
width: min(88vw, 240px);
|
|
1400
|
+
}
|
|
1401
|
+
.w-\[min\(92vw\,280px\)\] {
|
|
1402
|
+
width: min(92vw, 280px);
|
|
1403
|
+
}
|
|
1407
1404
|
.w-auto {
|
|
1408
1405
|
width: auto;
|
|
1409
1406
|
}
|
|
@@ -6152,6 +6149,9 @@ input[type=range]:active::-moz-range-thumb {
|
|
|
6152
6149
|
.sm\:right-0 {
|
|
6153
6150
|
right: 0px;
|
|
6154
6151
|
}
|
|
6152
|
+
.sm\:right-16 {
|
|
6153
|
+
right: 4rem;
|
|
6154
|
+
}
|
|
6155
6155
|
.sm\:right-3 {
|
|
6156
6156
|
right: 0.75rem;
|
|
6157
6157
|
}
|
|
@@ -6309,6 +6309,9 @@ input[type=range]:active::-moz-range-thumb {
|
|
|
6309
6309
|
.sm\:min-h-\[300px\] {
|
|
6310
6310
|
min-height: 300px;
|
|
6311
6311
|
}
|
|
6312
|
+
.sm\:min-h-\[320px\] {
|
|
6313
|
+
min-height: 320px;
|
|
6314
|
+
}
|
|
6312
6315
|
.sm\:w-12 {
|
|
6313
6316
|
width: 3rem;
|
|
6314
6317
|
}
|
|
@@ -7025,6 +7028,9 @@ input[type=range]:active::-moz-range-thumb {
|
|
|
7025
7028
|
.lg\:hidden {
|
|
7026
7029
|
display: none;
|
|
7027
7030
|
}
|
|
7031
|
+
.lg\:aspect-auto {
|
|
7032
|
+
aspect-ratio: auto;
|
|
7033
|
+
}
|
|
7028
7034
|
.lg\:h-14 {
|
|
7029
7035
|
height: 3.5rem;
|
|
7030
7036
|
}
|
|
@@ -7046,6 +7052,9 @@ input[type=range]:active::-moz-range-thumb {
|
|
|
7046
7052
|
.lg\:h-\[220px\] {
|
|
7047
7053
|
height: 220px;
|
|
7048
7054
|
}
|
|
7055
|
+
.lg\:h-\[calc\(100dvh-12rem\)\] {
|
|
7056
|
+
height: calc(100dvh - 12rem);
|
|
7057
|
+
}
|
|
7049
7058
|
.lg\:h-\[calc\(100vh-12rem\)\] {
|
|
7050
7059
|
height: calc(100vh - 12rem);
|
|
7051
7060
|
}
|
|
@@ -7100,6 +7109,9 @@ input[type=range]:active::-moz-range-thumb {
|
|
|
7100
7109
|
.lg\:flex-\[3\] {
|
|
7101
7110
|
flex: 3;
|
|
7102
7111
|
}
|
|
7112
|
+
.lg\:flex-shrink-0 {
|
|
7113
|
+
flex-shrink: 0;
|
|
7114
|
+
}
|
|
7103
7115
|
.lg\:grid-cols-1 {
|
|
7104
7116
|
grid-template-columns: repeat(1, minmax(0, 1fr));
|
|
7105
7117
|
}
|
package/dist/index.d.mts
CHANGED
|
@@ -1305,6 +1305,7 @@ interface BottleneckVideoData {
|
|
|
1305
1305
|
description: string;
|
|
1306
1306
|
type: VideoType;
|
|
1307
1307
|
originalUri: string;
|
|
1308
|
+
capture_fps?: number;
|
|
1308
1309
|
cycle_time_seconds?: number;
|
|
1309
1310
|
creation_timestamp?: string;
|
|
1310
1311
|
percentile?: number;
|
|
@@ -1339,6 +1340,10 @@ interface VideoMetadata {
|
|
|
1339
1340
|
camera_id?: string;
|
|
1340
1341
|
workspace_id?: string;
|
|
1341
1342
|
cycle_time?: number;
|
|
1343
|
+
playlist?: {
|
|
1344
|
+
fps?: number | string;
|
|
1345
|
+
[key: string]: any;
|
|
1346
|
+
};
|
|
1342
1347
|
sop_name?: string;
|
|
1343
1348
|
violation_start_frame?: number;
|
|
1344
1349
|
violation_end_frame?: number;
|
package/dist/index.d.ts
CHANGED
|
@@ -1305,6 +1305,7 @@ interface BottleneckVideoData {
|
|
|
1305
1305
|
description: string;
|
|
1306
1306
|
type: VideoType;
|
|
1307
1307
|
originalUri: string;
|
|
1308
|
+
capture_fps?: number;
|
|
1308
1309
|
cycle_time_seconds?: number;
|
|
1309
1310
|
creation_timestamp?: string;
|
|
1310
1311
|
percentile?: number;
|
|
@@ -1339,6 +1340,10 @@ interface VideoMetadata {
|
|
|
1339
1340
|
camera_id?: string;
|
|
1340
1341
|
workspace_id?: string;
|
|
1341
1342
|
cycle_time?: number;
|
|
1343
|
+
playlist?: {
|
|
1344
|
+
fps?: number | string;
|
|
1345
|
+
[key: string]: any;
|
|
1346
|
+
};
|
|
1342
1347
|
sop_name?: string;
|
|
1343
1348
|
violation_start_frame?: number;
|
|
1344
1349
|
violation_end_frame?: number;
|
package/dist/index.js
CHANGED
|
@@ -7438,6 +7438,16 @@ var getClipCycleTimeFrames = (metadata) => {
|
|
|
7438
7438
|
}
|
|
7439
7439
|
return parseFiniteNumber(metadata?.request?.metadata?.cycle_time);
|
|
7440
7440
|
};
|
|
7441
|
+
var getClipCaptureFps = (clip) => {
|
|
7442
|
+
return parseFiniteNumber(clip?.capture_fps) ?? parseFiniteNumber(clip?.metadata?.playlist?.fps) ?? 20;
|
|
7443
|
+
};
|
|
7444
|
+
var getClipCycleTimeSeconds = (clip) => {
|
|
7445
|
+
const cycleTimeFrames = getClipCycleTimeFrames(clip?.metadata);
|
|
7446
|
+
if (cycleTimeFrames === void 0) {
|
|
7447
|
+
return void 0;
|
|
7448
|
+
}
|
|
7449
|
+
return cycleTimeFrames / getClipCaptureFps(clip);
|
|
7450
|
+
};
|
|
7441
7451
|
var getSupabaseClient = () => {
|
|
7442
7452
|
const existing = _getSupabaseInstanceOptional();
|
|
7443
7453
|
if (existing) {
|
|
@@ -7950,10 +7960,10 @@ var S3ClipsSupabaseService = class {
|
|
|
7950
7960
|
const transformedClips = (response.clips || []).map((clip) => {
|
|
7951
7961
|
const clipId = clip.id ?? clip.clip_id;
|
|
7952
7962
|
const clipType = clip.type ?? clip.clip_type_name;
|
|
7953
|
-
const cycleTimeSeconds = parseFiniteNumber(clip.cycle_time_seconds) ?? (
|
|
7954
|
-
|
|
7955
|
-
|
|
7956
|
-
})
|
|
7963
|
+
const cycleTimeSeconds = parseFiniteNumber(clip.cycle_time_seconds) ?? getClipCycleTimeSeconds({
|
|
7964
|
+
capture_fps: clip.capture_fps,
|
|
7965
|
+
metadata: clip.metadata
|
|
7966
|
+
});
|
|
7957
7967
|
return {
|
|
7958
7968
|
id: clipId,
|
|
7959
7969
|
src: clip.src ?? clip.playlist,
|
|
@@ -39503,7 +39513,7 @@ var FileManagerFilters = ({
|
|
|
39503
39513
|
] }) })
|
|
39504
39514
|
] }, node.id);
|
|
39505
39515
|
};
|
|
39506
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `relative bg-white rounded-2xl shadow-lg border border-gray-100
|
|
39516
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `relative flex h-full min-h-[320px] flex-col bg-white rounded-2xl shadow-lg border border-gray-100 hover:shadow-xl transition-all duration-300 ease-out backdrop-blur-sm ${className}`, children: [
|
|
39507
39517
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-4 border-b border-gray-50 bg-gradient-to-br from-slate-50/80 via-white to-blue-50/30", children: [
|
|
39508
39518
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
39509
39519
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center", children: [
|
|
@@ -39585,7 +39595,7 @@ var FileManagerFilters = ({
|
|
|
39585
39595
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
39586
39596
|
"div",
|
|
39587
39597
|
{
|
|
39588
|
-
className: "absolute top-14 right-
|
|
39598
|
+
className: "absolute top-14 right-2 z-50 bg-white rounded-xl shadow-xl border border-slate-200 w-[min(88vw,240px)] sm:right-16 animate-in slide-in-from-top-2 duration-200",
|
|
39589
39599
|
onClick: (e) => e.stopPropagation(),
|
|
39590
39600
|
children: [
|
|
39591
39601
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 flex items-center justify-between border-b border-slate-200", children: [
|
|
@@ -39642,7 +39652,7 @@ var FileManagerFilters = ({
|
|
|
39642
39652
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
39643
39653
|
"div",
|
|
39644
39654
|
{
|
|
39645
|
-
className: "absolute top-14 right-
|
|
39655
|
+
className: "absolute top-14 right-2 z-50 bg-white rounded-xl shadow-xl border border-slate-200 w-[min(92vw,280px)] sm:right-4 animate-in slide-in-from-top-2 duration-200",
|
|
39646
39656
|
onClick: (e) => e.stopPropagation(),
|
|
39647
39657
|
children: [
|
|
39648
39658
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 flex items-center justify-between border-b border-slate-200", children: [
|
|
@@ -39759,7 +39769,7 @@ var FileManagerFilters = ({
|
|
|
39759
39769
|
}
|
|
39760
39770
|
)
|
|
39761
39771
|
] }),
|
|
39762
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 h-
|
|
39772
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 flex-1 min-h-0 overflow-y-auto scrollbar-thin", children: [
|
|
39763
39773
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-2", children: filterTree.map((node) => renderNode(node)) }),
|
|
39764
39774
|
filterTree.length === 0 && isTimeFilterActive && (startTime || endTime) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center py-12", children: [
|
|
39765
39775
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-slate-300 mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Clock, { className: "h-12 w-12 mx-auto" }) }),
|
|
@@ -41870,17 +41880,17 @@ var BottlenecksContent = ({
|
|
|
41870
41880
|
}
|
|
41871
41881
|
}, [workspaceTargetCycleTime]);
|
|
41872
41882
|
if (!dashboardConfig?.s3Config) {
|
|
41873
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center h-[calc(
|
|
41883
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center min-h-[calc(100dvh-12rem)] text-center", children: [
|
|
41874
41884
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "w-12 h-12 text-red-400 mb-3" }),
|
|
41875
41885
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-red-700 mb-1", children: "S3 Configuration Missing" }),
|
|
41876
41886
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-600 max-w-md", children: "S3 configuration is required to load video clips. Please check your dashboard configuration." })
|
|
41877
41887
|
] });
|
|
41878
41888
|
}
|
|
41879
41889
|
if (clipTypesLoading && allVideos.length === 0 && Object.keys(mergedCounts).length === 0) {
|
|
41880
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-grow p-4 flex items-center justify-center h-[calc(
|
|
41890
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-grow p-4 flex items-center justify-center min-h-[calc(100dvh-12rem)]", children: /* @__PURE__ */ jsxRuntime.jsx(OptifyeLogoLoader_default, { size: "lg", message: "Loading clips..." }) });
|
|
41881
41891
|
}
|
|
41882
41892
|
if (error && error.type === "fatal" && !hasInitialLoad || clipTypesError) {
|
|
41883
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center h-[calc(
|
|
41893
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center min-h-[calc(100dvh-12rem)] text-center", children: [
|
|
41884
41894
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { className: "w-12 h-12 text-red-400 mb-3" }),
|
|
41885
41895
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-lg font-semibold text-red-700 mb-1", children: "Error Loading Clips" }),
|
|
41886
41896
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-600 max-w-md", children: error?.message || clipTypesError })
|
|
@@ -41895,7 +41905,7 @@ var BottlenecksContent = ({
|
|
|
41895
41905
|
clipTypesError,
|
|
41896
41906
|
mergedCounts
|
|
41897
41907
|
});
|
|
41898
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-grow p-1.5 sm:p-2 lg:p-4 h-[calc(
|
|
41908
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-grow p-1.5 sm:p-2 lg:p-4 min-h-[calc(100dvh-12rem)] lg:h-[calc(100dvh-12rem)] relative", children: [
|
|
41899
41909
|
hasNewClips && newClipsNotification && /* @__PURE__ */ jsxRuntime.jsx(
|
|
41900
41910
|
NewClipsNotification,
|
|
41901
41911
|
{
|
|
@@ -41904,8 +41914,8 @@ var BottlenecksContent = ({
|
|
|
41904
41914
|
onDismiss: clearNotification
|
|
41905
41915
|
}
|
|
41906
41916
|
),
|
|
41907
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col lg:flex-row
|
|
41908
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "
|
|
41917
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 lg:flex-row lg:h-full", children: [
|
|
41918
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 w-full lg:flex-[3] lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "bg-white rounded-lg shadow-sm overflow-hidden lg:h-full", children: filteredVideos.length > 0 && currentVideo && !isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative group lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-full aspect-video lg:aspect-auto lg:h-full overflow-hidden rounded-md shadow-inner bg-gray-900", children: [
|
|
41909
41919
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41910
41920
|
"div",
|
|
41911
41921
|
{
|
|
@@ -42055,23 +42065,23 @@ var BottlenecksContent = ({
|
|
|
42055
42065
|
)
|
|
42056
42066
|
] }) }) }) : (
|
|
42057
42067
|
/* Priority 5: Show "no clips found" only if we have counts and there are truly no clips for workspace */
|
|
42058
|
-
hasInitialLoad && Object.keys(mergedCounts).length > 0 && Object.values(mergedCounts).every((count) => count === 0) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-8", children: [
|
|
42068
|
+
hasInitialLoad && Object.keys(mergedCounts).length > 0 && Object.values(mergedCounts).every((count) => count === 0) ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center min-h-[220px] sm:min-h-[320px] lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-8", children: [
|
|
42059
42069
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { className: "w-16 h-16 text-gray-300 mx-auto mb-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" }) }),
|
|
42060
42070
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-medium text-gray-700 mb-2", children: "No Clips Found" }),
|
|
42061
42071
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-500", children: "There were no video clips found for this workspace today." })
|
|
42062
42072
|
] }) }) : (
|
|
42063
42073
|
/* Priority 6: Show "no matching clips" only if we have data loaded and specifically no clips for this filter */
|
|
42064
|
-
hasInitialLoad && (mergedCounts[activeFilter] || 0) === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-8", children: [
|
|
42074
|
+
hasInitialLoad && (mergedCounts[activeFilter] || 0) === 0 ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center min-h-[220px] sm:min-h-[320px] lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-center p-8", children: [
|
|
42065
42075
|
/* @__PURE__ */ jsxRuntime.jsx("svg", { className: "w-16 h-16 text-gray-300 mx-auto mb-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" }) }),
|
|
42066
42076
|
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-xl font-medium text-gray-700 mb-2", children: "No Matching Clips" }),
|
|
42067
42077
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-gray-500", children: "There are no clips matching the selected filter." })
|
|
42068
42078
|
] }) }) : (
|
|
42069
42079
|
/* Priority 7: Default loading state for any other case */
|
|
42070
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full h-full overflow-hidden rounded-md shadow-inner bg-gray-900 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(OptifyeLogoLoader_default, { size: "md", message: "Loading..." }) }) }) })
|
|
42080
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-4 lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative lg:h-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative w-full min-h-[220px] sm:min-h-[320px] lg:min-h-0 lg:h-full overflow-hidden rounded-md shadow-inner bg-gray-900 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsx(OptifyeLogoLoader_default, { size: "md", message: "Loading..." }) }) }) })
|
|
42071
42081
|
)
|
|
42072
42082
|
)
|
|
42073
42083
|
) }) }),
|
|
42074
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-shrink-0 lg:flex-[1] lg:min-w-[280px] lg:max-w-[320px]", children: triageMode ? (
|
|
42084
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-full lg:flex-shrink-0 lg:flex-[1] lg:min-w-[280px] lg:max-w-[320px] lg:h-full", children: triageMode ? (
|
|
42075
42085
|
/* Triage Mode - Direct tile view for cycle completions and idle time */
|
|
42076
42086
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white rounded-lg shadow-sm h-full overflow-hidden flex flex-col", children: [
|
|
42077
42087
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "px-4 py-3 border-b border-gray-100", children: [
|
|
@@ -74713,7 +74723,8 @@ var OperationsOverviewHeader = React141__namespace.default.memo(({
|
|
|
74713
74723
|
mobileMenuContext ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
74714
74724
|
HamburgerButton,
|
|
74715
74725
|
{
|
|
74716
|
-
onClick: mobileMenuContext.onMobileMenuOpen
|
|
74726
|
+
onClick: mobileMenuContext.onMobileMenuOpen || (() => {
|
|
74727
|
+
}),
|
|
74717
74728
|
className: "flex-shrink-0 -ml-1"
|
|
74718
74729
|
}
|
|
74719
74730
|
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-8 flex-shrink-0" }),
|
|
@@ -75175,7 +75186,7 @@ var IdleBreakdownCard = React141__namespace.default.memo(({
|
|
|
75175
75186
|
}, [idle.scope.idle_time_vlm_enabled_line_count, scopedLineCount, showInitialSkeleton]);
|
|
75176
75187
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white rounded-xl shadow-sm border border-slate-100 flex flex-col overflow-hidden text-left", children: [
|
|
75177
75188
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-5 py-4 flex-none flex justify-between items-center border-b border-slate-50/50 relative", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-gray-700", children: "Idle Time Breakdown" }) }),
|
|
75178
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-h-
|
|
75189
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-h-[250px] p-4 pt-2 relative", children: showInitialSkeleton ? /* @__PURE__ */ jsxRuntime.jsx(OverviewIdleBreakdownSkeleton, {}) : showIdleModuleNotEnabledState ? /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full flex items-center justify-center rounded-xl border border-dashed border-slate-200 bg-slate-50/80 px-6 text-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
75179
75190
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-semibold text-slate-700", children: "Module not enabled" }),
|
|
75180
75191
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-xs text-slate-500", children: "Enable idle-time classification on at least one line to view this breakdown." })
|
|
75181
75192
|
] }) }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -75249,7 +75260,7 @@ var EfficiencyTrendCard = React141__namespace.default.memo(({
|
|
|
75249
75260
|
}, []);
|
|
75250
75261
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "bg-white rounded-xl shadow-[0_2px_10px_-3px_rgba(6,81,237,0.1)] border border-slate-100 flex flex-col overflow-hidden text-left", children: [
|
|
75251
75262
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 py-5 flex-none flex justify-between items-center border-b border-slate-50/50", children: /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-lg font-semibold text-gray-700", children: "Efficiency Trend" }) }),
|
|
75252
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-h-
|
|
75263
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex-1 min-h-[250px] w-full p-4 pt-4 relative", children: showInitialSkeleton ? /* @__PURE__ */ jsxRuntime.jsx(OverviewChartSkeleton, {}) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 pb-2 pr-4 pl-1", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
75253
75264
|
LineChart,
|
|
75254
75265
|
{
|
|
75255
75266
|
data: trendData,
|
package/dist/index.mjs
CHANGED
|
@@ -7409,6 +7409,16 @@ var getClipCycleTimeFrames = (metadata) => {
|
|
|
7409
7409
|
}
|
|
7410
7410
|
return parseFiniteNumber(metadata?.request?.metadata?.cycle_time);
|
|
7411
7411
|
};
|
|
7412
|
+
var getClipCaptureFps = (clip) => {
|
|
7413
|
+
return parseFiniteNumber(clip?.capture_fps) ?? parseFiniteNumber(clip?.metadata?.playlist?.fps) ?? 20;
|
|
7414
|
+
};
|
|
7415
|
+
var getClipCycleTimeSeconds = (clip) => {
|
|
7416
|
+
const cycleTimeFrames = getClipCycleTimeFrames(clip?.metadata);
|
|
7417
|
+
if (cycleTimeFrames === void 0) {
|
|
7418
|
+
return void 0;
|
|
7419
|
+
}
|
|
7420
|
+
return cycleTimeFrames / getClipCaptureFps(clip);
|
|
7421
|
+
};
|
|
7412
7422
|
var getSupabaseClient = () => {
|
|
7413
7423
|
const existing = _getSupabaseInstanceOptional();
|
|
7414
7424
|
if (existing) {
|
|
@@ -7921,10 +7931,10 @@ var S3ClipsSupabaseService = class {
|
|
|
7921
7931
|
const transformedClips = (response.clips || []).map((clip) => {
|
|
7922
7932
|
const clipId = clip.id ?? clip.clip_id;
|
|
7923
7933
|
const clipType = clip.type ?? clip.clip_type_name;
|
|
7924
|
-
const cycleTimeSeconds = parseFiniteNumber(clip.cycle_time_seconds) ?? (
|
|
7925
|
-
|
|
7926
|
-
|
|
7927
|
-
})
|
|
7934
|
+
const cycleTimeSeconds = parseFiniteNumber(clip.cycle_time_seconds) ?? getClipCycleTimeSeconds({
|
|
7935
|
+
capture_fps: clip.capture_fps,
|
|
7936
|
+
metadata: clip.metadata
|
|
7937
|
+
});
|
|
7928
7938
|
return {
|
|
7929
7939
|
id: clipId,
|
|
7930
7940
|
src: clip.src ?? clip.playlist,
|
|
@@ -39474,7 +39484,7 @@ var FileManagerFilters = ({
|
|
|
39474
39484
|
] }) })
|
|
39475
39485
|
] }, node.id);
|
|
39476
39486
|
};
|
|
39477
|
-
return /* @__PURE__ */ jsxs("div", { className: `relative bg-white rounded-2xl shadow-lg border border-gray-100
|
|
39487
|
+
return /* @__PURE__ */ jsxs("div", { className: `relative flex h-full min-h-[320px] flex-col bg-white rounded-2xl shadow-lg border border-gray-100 hover:shadow-xl transition-all duration-300 ease-out backdrop-blur-sm ${className}`, children: [
|
|
39478
39488
|
/* @__PURE__ */ jsxs("div", { className: "p-4 border-b border-gray-50 bg-gradient-to-br from-slate-50/80 via-white to-blue-50/30", children: [
|
|
39479
39489
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
39480
39490
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center", children: [
|
|
@@ -39556,7 +39566,7 @@ var FileManagerFilters = ({
|
|
|
39556
39566
|
/* @__PURE__ */ jsxs(
|
|
39557
39567
|
"div",
|
|
39558
39568
|
{
|
|
39559
|
-
className: "absolute top-14 right-
|
|
39569
|
+
className: "absolute top-14 right-2 z-50 bg-white rounded-xl shadow-xl border border-slate-200 w-[min(88vw,240px)] sm:right-16 animate-in slide-in-from-top-2 duration-200",
|
|
39560
39570
|
onClick: (e) => e.stopPropagation(),
|
|
39561
39571
|
children: [
|
|
39562
39572
|
/* @__PURE__ */ jsxs("div", { className: "px-4 py-3 flex items-center justify-between border-b border-slate-200", children: [
|
|
@@ -39613,7 +39623,7 @@ var FileManagerFilters = ({
|
|
|
39613
39623
|
/* @__PURE__ */ jsxs(
|
|
39614
39624
|
"div",
|
|
39615
39625
|
{
|
|
39616
|
-
className: "absolute top-14 right-
|
|
39626
|
+
className: "absolute top-14 right-2 z-50 bg-white rounded-xl shadow-xl border border-slate-200 w-[min(92vw,280px)] sm:right-4 animate-in slide-in-from-top-2 duration-200",
|
|
39617
39627
|
onClick: (e) => e.stopPropagation(),
|
|
39618
39628
|
children: [
|
|
39619
39629
|
/* @__PURE__ */ jsxs("div", { className: "px-4 py-3 flex items-center justify-between border-b border-slate-200", children: [
|
|
@@ -39730,7 +39740,7 @@ var FileManagerFilters = ({
|
|
|
39730
39740
|
}
|
|
39731
39741
|
)
|
|
39732
39742
|
] }),
|
|
39733
|
-
/* @__PURE__ */ jsxs("div", { className: "px-4 py-3 h-
|
|
39743
|
+
/* @__PURE__ */ jsxs("div", { className: "px-4 py-3 flex-1 min-h-0 overflow-y-auto scrollbar-thin", children: [
|
|
39734
39744
|
/* @__PURE__ */ jsx("div", { className: "space-y-2", children: filterTree.map((node) => renderNode(node)) }),
|
|
39735
39745
|
filterTree.length === 0 && isTimeFilterActive && (startTime || endTime) && /* @__PURE__ */ jsxs("div", { className: "text-center py-12", children: [
|
|
39736
39746
|
/* @__PURE__ */ jsx("div", { className: "text-slate-300 mb-4", children: /* @__PURE__ */ jsx(Clock, { className: "h-12 w-12 mx-auto" }) }),
|
|
@@ -41841,17 +41851,17 @@ var BottlenecksContent = ({
|
|
|
41841
41851
|
}
|
|
41842
41852
|
}, [workspaceTargetCycleTime]);
|
|
41843
41853
|
if (!dashboardConfig?.s3Config) {
|
|
41844
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center h-[calc(
|
|
41854
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center min-h-[calc(100dvh-12rem)] text-center", children: [
|
|
41845
41855
|
/* @__PURE__ */ jsx(XCircle, { className: "w-12 h-12 text-red-400 mb-3" }),
|
|
41846
41856
|
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-red-700 mb-1", children: "S3 Configuration Missing" }),
|
|
41847
41857
|
/* @__PURE__ */ jsx("p", { className: "text-gray-600 max-w-md", children: "S3 configuration is required to load video clips. Please check your dashboard configuration." })
|
|
41848
41858
|
] });
|
|
41849
41859
|
}
|
|
41850
41860
|
if (clipTypesLoading && allVideos.length === 0 && Object.keys(mergedCounts).length === 0) {
|
|
41851
|
-
return /* @__PURE__ */ jsx("div", { className: "flex-grow p-4 flex items-center justify-center h-[calc(
|
|
41861
|
+
return /* @__PURE__ */ jsx("div", { className: "flex-grow p-4 flex items-center justify-center min-h-[calc(100dvh-12rem)]", children: /* @__PURE__ */ jsx(OptifyeLogoLoader_default, { size: "lg", message: "Loading clips..." }) });
|
|
41852
41862
|
}
|
|
41853
41863
|
if (error && error.type === "fatal" && !hasInitialLoad || clipTypesError) {
|
|
41854
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center h-[calc(
|
|
41864
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex-grow p-4 flex flex-col items-center justify-center min-h-[calc(100dvh-12rem)] text-center", children: [
|
|
41855
41865
|
/* @__PURE__ */ jsx(XCircle, { className: "w-12 h-12 text-red-400 mb-3" }),
|
|
41856
41866
|
/* @__PURE__ */ jsx("h3", { className: "text-lg font-semibold text-red-700 mb-1", children: "Error Loading Clips" }),
|
|
41857
41867
|
/* @__PURE__ */ jsx("p", { className: "text-gray-600 max-w-md", children: error?.message || clipTypesError })
|
|
@@ -41866,7 +41876,7 @@ var BottlenecksContent = ({
|
|
|
41866
41876
|
clipTypesError,
|
|
41867
41877
|
mergedCounts
|
|
41868
41878
|
});
|
|
41869
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex-grow p-1.5 sm:p-2 lg:p-4 h-[calc(
|
|
41879
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex-grow p-1.5 sm:p-2 lg:p-4 min-h-[calc(100dvh-12rem)] lg:h-[calc(100dvh-12rem)] relative", children: [
|
|
41870
41880
|
hasNewClips && newClipsNotification && /* @__PURE__ */ jsx(
|
|
41871
41881
|
NewClipsNotification,
|
|
41872
41882
|
{
|
|
@@ -41875,8 +41885,8 @@ var BottlenecksContent = ({
|
|
|
41875
41885
|
onDismiss: clearNotification
|
|
41876
41886
|
}
|
|
41877
41887
|
),
|
|
41878
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col lg:flex-row
|
|
41879
|
-
/* @__PURE__ */ jsx("div", { className: "
|
|
41888
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 lg:flex-row lg:h-full", children: [
|
|
41889
|
+
/* @__PURE__ */ jsx("div", { className: "min-w-0 w-full lg:flex-[3] lg:h-full", children: /* @__PURE__ */ jsx("div", { className: "bg-white rounded-lg shadow-sm overflow-hidden lg:h-full", children: filteredVideos.length > 0 && currentVideo && !isFullscreen ? /* @__PURE__ */ jsx("div", { className: "p-4 lg:h-full", children: /* @__PURE__ */ jsx("div", { className: "relative group lg:h-full", children: /* @__PURE__ */ jsxs("div", { className: "relative w-full aspect-video lg:aspect-auto lg:h-full overflow-hidden rounded-md shadow-inner bg-gray-900", children: [
|
|
41880
41890
|
/* @__PURE__ */ jsx(
|
|
41881
41891
|
"div",
|
|
41882
41892
|
{
|
|
@@ -42026,23 +42036,23 @@ var BottlenecksContent = ({
|
|
|
42026
42036
|
)
|
|
42027
42037
|
] }) }) }) : (
|
|
42028
42038
|
/* Priority 5: Show "no clips found" only if we have counts and there are truly no clips for workspace */
|
|
42029
|
-
hasInitialLoad && Object.keys(mergedCounts).length > 0 && Object.values(mergedCounts).every((count) => count === 0) ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsxs("div", { className: "text-center p-8", children: [
|
|
42039
|
+
hasInitialLoad && Object.keys(mergedCounts).length > 0 && Object.values(mergedCounts).every((count) => count === 0) ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center min-h-[220px] sm:min-h-[320px] lg:h-full", children: /* @__PURE__ */ jsxs("div", { className: "text-center p-8", children: [
|
|
42030
42040
|
/* @__PURE__ */ jsx("svg", { className: "w-16 h-16 text-gray-300 mx-auto mb-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" }) }),
|
|
42031
42041
|
/* @__PURE__ */ jsx("h3", { className: "text-xl font-medium text-gray-700 mb-2", children: "No Clips Found" }),
|
|
42032
42042
|
/* @__PURE__ */ jsx("p", { className: "text-gray-500", children: "There were no video clips found for this workspace today." })
|
|
42033
42043
|
] }) }) : (
|
|
42034
42044
|
/* Priority 6: Show "no matching clips" only if we have data loaded and specifically no clips for this filter */
|
|
42035
|
-
hasInitialLoad && (mergedCounts[activeFilter] || 0) === 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-full", children: /* @__PURE__ */ jsxs("div", { className: "text-center p-8", children: [
|
|
42045
|
+
hasInitialLoad && (mergedCounts[activeFilter] || 0) === 0 ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center min-h-[220px] sm:min-h-[320px] lg:h-full", children: /* @__PURE__ */ jsxs("div", { className: "text-center p-8", children: [
|
|
42036
42046
|
/* @__PURE__ */ jsx("svg", { className: "w-16 h-16 text-gray-300 mx-auto mb-4", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.5, d: "M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z" }) }),
|
|
42037
42047
|
/* @__PURE__ */ jsx("h3", { className: "text-xl font-medium text-gray-700 mb-2", children: "No Matching Clips" }),
|
|
42038
42048
|
/* @__PURE__ */ jsx("p", { className: "text-gray-500", children: "There are no clips matching the selected filter." })
|
|
42039
42049
|
] }) }) : (
|
|
42040
42050
|
/* Priority 7: Default loading state for any other case */
|
|
42041
|
-
/* @__PURE__ */ jsx("div", { className: "p-4 h-full", children: /* @__PURE__ */ jsx("div", { className: "relative h-full", children: /* @__PURE__ */ jsx("div", { className: "relative w-full h-full overflow-hidden rounded-md shadow-inner bg-gray-900 flex items-center justify-center", children: /* @__PURE__ */ jsx(OptifyeLogoLoader_default, { size: "md", message: "Loading..." }) }) }) })
|
|
42051
|
+
/* @__PURE__ */ jsx("div", { className: "p-4 lg:h-full", children: /* @__PURE__ */ jsx("div", { className: "relative lg:h-full", children: /* @__PURE__ */ jsx("div", { className: "relative w-full min-h-[220px] sm:min-h-[320px] lg:min-h-0 lg:h-full overflow-hidden rounded-md shadow-inner bg-gray-900 flex items-center justify-center", children: /* @__PURE__ */ jsx(OptifyeLogoLoader_default, { size: "md", message: "Loading..." }) }) }) })
|
|
42042
42052
|
)
|
|
42043
42053
|
)
|
|
42044
42054
|
) }) }),
|
|
42045
|
-
/* @__PURE__ */ jsx("div", { className: "flex-shrink-0 lg:flex-[1] lg:min-w-[280px] lg:max-w-[320px]", children: triageMode ? (
|
|
42055
|
+
/* @__PURE__ */ jsx("div", { className: "w-full lg:flex-shrink-0 lg:flex-[1] lg:min-w-[280px] lg:max-w-[320px] lg:h-full", children: triageMode ? (
|
|
42046
42056
|
/* Triage Mode - Direct tile view for cycle completions and idle time */
|
|
42047
42057
|
/* @__PURE__ */ jsxs("div", { className: "bg-white rounded-lg shadow-sm h-full overflow-hidden flex flex-col", children: [
|
|
42048
42058
|
/* @__PURE__ */ jsxs("div", { className: "px-4 py-3 border-b border-gray-100", children: [
|
|
@@ -74684,7 +74694,8 @@ var OperationsOverviewHeader = React141__default.memo(({
|
|
|
74684
74694
|
mobileMenuContext ? /* @__PURE__ */ jsx(
|
|
74685
74695
|
HamburgerButton,
|
|
74686
74696
|
{
|
|
74687
|
-
onClick: mobileMenuContext.onMobileMenuOpen
|
|
74697
|
+
onClick: mobileMenuContext.onMobileMenuOpen || (() => {
|
|
74698
|
+
}),
|
|
74688
74699
|
className: "flex-shrink-0 -ml-1"
|
|
74689
74700
|
}
|
|
74690
74701
|
) : /* @__PURE__ */ jsx("div", { className: "w-8 flex-shrink-0" }),
|
|
@@ -75146,7 +75157,7 @@ var IdleBreakdownCard = React141__default.memo(({
|
|
|
75146
75157
|
}, [idle.scope.idle_time_vlm_enabled_line_count, scopedLineCount, showInitialSkeleton]);
|
|
75147
75158
|
return /* @__PURE__ */ jsxs("div", { className: "bg-white rounded-xl shadow-sm border border-slate-100 flex flex-col overflow-hidden text-left", children: [
|
|
75148
75159
|
/* @__PURE__ */ jsx("div", { className: "px-5 py-4 flex-none flex justify-between items-center border-b border-slate-50/50 relative", children: /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-gray-700", children: "Idle Time Breakdown" }) }),
|
|
75149
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-
|
|
75160
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-[250px] p-4 pt-2 relative", children: showInitialSkeleton ? /* @__PURE__ */ jsx(OverviewIdleBreakdownSkeleton, {}) : showIdleModuleNotEnabledState ? /* @__PURE__ */ jsx("div", { className: "h-full flex items-center justify-center rounded-xl border border-dashed border-slate-200 bg-slate-50/80 px-6 text-center", children: /* @__PURE__ */ jsxs("div", { children: [
|
|
75150
75161
|
/* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-slate-700", children: "Module not enabled" }),
|
|
75151
75162
|
/* @__PURE__ */ jsx("p", { className: "mt-1 text-xs text-slate-500", children: "Enable idle-time classification on at least one line to view this breakdown." })
|
|
75152
75163
|
] }) }) : /* @__PURE__ */ jsx(
|
|
@@ -75220,7 +75231,7 @@ var EfficiencyTrendCard = React141__default.memo(({
|
|
|
75220
75231
|
}, []);
|
|
75221
75232
|
return /* @__PURE__ */ jsxs("div", { className: "bg-white rounded-xl shadow-[0_2px_10px_-3px_rgba(6,81,237,0.1)] border border-slate-100 flex flex-col overflow-hidden text-left", children: [
|
|
75222
75233
|
/* @__PURE__ */ jsx("div", { className: "px-6 py-5 flex-none flex justify-between items-center border-b border-slate-50/50", children: /* @__PURE__ */ jsx("h2", { className: "text-lg font-semibold text-gray-700", children: "Efficiency Trend" }) }),
|
|
75223
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-
|
|
75234
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-[250px] w-full p-4 pt-4 relative", children: showInitialSkeleton ? /* @__PURE__ */ jsx(OverviewChartSkeleton, {}) : /* @__PURE__ */ jsx("div", { className: "absolute inset-0 pb-2 pr-4 pl-1", children: /* @__PURE__ */ jsx(
|
|
75224
75235
|
LineChart,
|
|
75225
75236
|
{
|
|
75226
75237
|
data: trendData,
|