@optifye/dashboard-core 6.12.41 → 6.12.43

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.mjs CHANGED
@@ -14897,12 +14897,14 @@ var logDebug = (...args) => {
14897
14897
  if (!DEBUG_DASHBOARD_LOGS) return;
14898
14898
  console.log(...args);
14899
14899
  };
14900
- var buildMetricsScopeKey = (lineId, lineIds, blueComparisonLineIds) => {
14900
+ var buildMetricsScopeKey = (lineId, lineIds, blueComparisonLineIds, selectorLineIds) => {
14901
14901
  const normalizedLineIds = Array.from(new Set((lineIds || []).filter(Boolean))).sort();
14902
14902
  const normalizedBlueComparisonLineIds = Array.from(new Set((blueComparisonLineIds || []).filter(Boolean))).sort();
14903
+ const normalizedSelectorLineIds = Array.from(new Set((selectorLineIds || []).filter(Boolean))).sort();
14903
14904
  const lineKey = normalizedLineIds.length > 0 ? normalizedLineIds.join(",") : lineId;
14904
14905
  const comparisonKey = normalizedBlueComparisonLineIds.length > 0 ? normalizedBlueComparisonLineIds.join(",") : lineKey;
14905
- return `${lineId}|${lineKey}|blue:${comparisonKey}`;
14906
+ const selectorKey = normalizedSelectorLineIds.length > 0 ? normalizedSelectorLineIds.join(",") : "";
14907
+ return `${lineId}|${lineKey}|blue:${comparisonKey}|selector:${selectorKey}`;
14906
14908
  };
14907
14909
  var parseEfficiencyLegend = (legend) => {
14908
14910
  if (!legend) return null;
@@ -14925,6 +14927,7 @@ var useDashboardMetrics = ({
14925
14927
  lineId,
14926
14928
  lineIds,
14927
14929
  blueComparisonLineIds,
14930
+ selectorLineIds,
14928
14931
  userAccessibleLineIds,
14929
14932
  enabled = true
14930
14933
  }) => {
@@ -14951,6 +14954,10 @@ var useDashboardMetrics = ({
14951
14954
  () => Array.from(new Set((blueComparisonLineIds || []).filter(Boolean))),
14952
14955
  [blueComparisonLineIds]
14953
14956
  );
14957
+ const normalizedSelectorLineIds = useMemo(
14958
+ () => Array.from(new Set((selectorLineIds || []).filter(Boolean))),
14959
+ [selectorLineIds]
14960
+ );
14954
14961
  const { shiftConfig: staticShiftConfig } = useDashboardConfig();
14955
14962
  const {
14956
14963
  shiftConfigMap: multiLineShiftConfigMap,
@@ -14986,9 +14993,9 @@ var useDashboardMetrics = ({
14986
14993
  const configuredLineMetricsTable = databaseConfig?.tables?.lineMetrics ?? "line_metrics";
14987
14994
  const schema = databaseConfig?.schema ?? "public";
14988
14995
  const supabase = useSupabase();
14989
- const [metrics2, setMetrics] = useState({ workspaceMetrics: [], lineMetrics: [] });
14996
+ const [metrics2, setMetrics] = useState({ workspaceMetrics: [], lineMetrics: [], selectorLineMetrics: [] });
14990
14997
  const [metricsLineId, setMetricsLineId] = useState(lineId ?? null);
14991
- const [metricsScopeKey, setMetricsScopeKey] = useState(() => buildMetricsScopeKey(lineId, lineIds, blueComparisonLineIds));
14998
+ const [metricsScopeKey, setMetricsScopeKey] = useState(() => buildMetricsScopeKey(lineId, lineIds, blueComparisonLineIds, selectorLineIds));
14992
14999
  const [isLoading, setIsLoading] = useState(true);
14993
15000
  const [error, setError] = useState(null);
14994
15001
  const lineIdRef = useRef(lineId);
@@ -15007,6 +15014,7 @@ var useDashboardMetrics = ({
15007
15014
  const configuredLineIdsRef = useRef(configuredLineIds);
15008
15015
  const userAccessibleLineIdsRef = useRef(userAccessibleLineIds);
15009
15016
  const explicitLineIdsRef = useRef(lineIds);
15017
+ const selectorLineIdsRef = useRef(selectorLineIds);
15010
15018
  useEffect(() => {
15011
15019
  onLineMetricsUpdateRef.current = onLineMetricsUpdate;
15012
15020
  }, [onLineMetricsUpdate]);
@@ -15025,6 +15033,9 @@ var useDashboardMetrics = ({
15025
15033
  useEffect(() => {
15026
15034
  explicitLineIdsRef.current = lineIds;
15027
15035
  }, [lineIds]);
15036
+ useEffect(() => {
15037
+ selectorLineIdsRef.current = selectorLineIds;
15038
+ }, [selectorLineIds]);
15028
15039
  const companySpecificMetricsTable = useMemo(
15029
15040
  () => getCompanyMetricsTableName(entityConfig.companyId, "performance_metrics"),
15030
15041
  [entityConfig.companyId]
@@ -15033,9 +15044,10 @@ var useDashboardMetrics = ({
15033
15044
  () => buildMetricsScopeKey(
15034
15045
  lineId,
15035
15046
  isFactoryView ? targetFactoryLineIds : void 0,
15036
- normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0
15047
+ normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0,
15048
+ normalizedSelectorLineIds.length ? normalizedSelectorLineIds : void 0
15037
15049
  ),
15038
- [isFactoryView, lineId, targetFactoryLineIds, normalizedBlueComparisonLineIds]
15050
+ [isFactoryView, lineId, targetFactoryLineIds, normalizedBlueComparisonLineIds, normalizedSelectorLineIds]
15039
15051
  );
15040
15052
  useEffect(() => {
15041
15053
  lineIdRef.current = lineId;
@@ -15067,13 +15079,15 @@ var useDashboardMetrics = ({
15067
15079
  const targetLineIdsKey = targetLineIds.slice().sort().join(",");
15068
15080
  const effectiveBlueComparisonLineIds = normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : targetLineIds;
15069
15081
  const blueComparisonLineIdsKey = effectiveBlueComparisonLineIds.slice().sort().join(",");
15082
+ const selectorLineIdsKey = normalizedSelectorLineIds.slice().sort().join(",");
15070
15083
  const usesShiftGroups = isFactory && shiftGroups.length > 0;
15071
15084
  const singleShiftDetails = usesShiftGroups ? null : shiftConfig ? getCurrentShift(defaultTimezone, shiftConfig) : shiftGroups.length === 1 ? { date: shiftGroups[0].date, shiftId: shiftGroups[0].shiftId } : getCurrentShift(defaultTimezone, staticShiftConfig);
15072
- const fetchKey = usesShiftGroups ? `factory|${companyId || "unknown"}|${shiftGroupsKey}|blue:${blueComparisonLineIdsKey}` : isFactory ? `factory|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|${targetLineIdsKey}|blue:${blueComparisonLineIdsKey}` : `${currentLineIdToUse}|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|blue:${blueComparisonLineIdsKey}`;
15085
+ const fetchKey = usesShiftGroups ? `factory|${companyId || "unknown"}|${shiftGroupsKey}|blue:${blueComparisonLineIdsKey}|selector:${selectorLineIdsKey}` : isFactory ? `factory|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|${targetLineIdsKey}|blue:${blueComparisonLineIdsKey}|selector:${selectorLineIdsKey}` : `${currentLineIdToUse}|${companyId || "unknown"}|${singleShiftDetails?.date}|${singleShiftDetails?.shiftId}|blue:${blueComparisonLineIdsKey}|selector:${selectorLineIdsKey}`;
15073
15086
  const responseScopeKey = buildMetricsScopeKey(
15074
15087
  currentLineIdToUse,
15075
15088
  isFactory ? targetLineIds : void 0,
15076
- normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0
15089
+ normalizedBlueComparisonLineIds.length ? normalizedBlueComparisonLineIds : void 0,
15090
+ normalizedSelectorLineIds.length ? normalizedSelectorLineIds : void 0
15077
15091
  );
15078
15092
  logDebug("[useDashboardMetrics] Fetch key details:", {
15079
15093
  isFactory,
@@ -15105,6 +15119,7 @@ var useDashboardMetrics = ({
15105
15119
  workspaceMetrics: [],
15106
15120
  blueComparisonWorkspaceMetrics: [],
15107
15121
  lineMetrics: [],
15122
+ selectorLineMetrics: [],
15108
15123
  metadata: void 0,
15109
15124
  efficiencyLegend: DEFAULT_EFFICIENCY_LEGEND
15110
15125
  });
@@ -15116,6 +15131,7 @@ var useDashboardMetrics = ({
15116
15131
  let allWorkspaceMetrics = [];
15117
15132
  let allBlueComparisonWorkspaceMetrics = [];
15118
15133
  let allLineMetrics = [];
15134
+ let allSelectorLineMetrics = [];
15119
15135
  let hasFlowBuffers = false;
15120
15136
  let idleTimeVlmByLine = {};
15121
15137
  let efficiencyLegend;
@@ -15125,7 +15141,8 @@ var useDashboardMetrics = ({
15125
15141
  const buildMetricsEndpoint = (params) => {
15126
15142
  const lineIdsParam = isFactory ? `line_ids=${params.groupLineIds.join(",")}` : `line_id=${params.groupLineIds[0]}`;
15127
15143
  const blueComparisonParam = effectiveBlueComparisonLineIds.length ? `&blue_comparison_line_ids=${effectiveBlueComparisonLineIds.join(",")}` : "";
15128
- return `/api/dashboard/metrics?${lineIdsParam}${blueComparisonParam}&date=${params.date}&shift_id=${params.shiftId}&company_id=${companyId}${forceParam}${qaGreenStreakParams}`;
15144
+ const selectorParam = normalizedSelectorLineIds.length ? `&selector_line_ids=${encodeURIComponent(normalizedSelectorLineIds.join(","))}` : "";
15145
+ return `/api/dashboard/metrics?${lineIdsParam}${blueComparisonParam}${selectorParam}&date=${params.date}&shift_id=${params.shiftId}&company_id=${companyId}${forceParam}${qaGreenStreakParams}`;
15129
15146
  };
15130
15147
  if (usesShiftGroups) {
15131
15148
  logDebug("[useDashboardMetrics] Factory view shift groups fetch:", {
@@ -15181,6 +15198,9 @@ var useDashboardMetrics = ({
15181
15198
  if (result.line_metrics) {
15182
15199
  allLineMetrics.push(...result.line_metrics);
15183
15200
  }
15201
+ if (result.selector_line_metrics) {
15202
+ allSelectorLineMetrics.push(...result.selector_line_metrics);
15203
+ }
15184
15204
  });
15185
15205
  if (allBlueComparisonWorkspaceMetrics.length === 0) {
15186
15206
  allBlueComparisonWorkspaceMetrics = allWorkspaceMetrics;
@@ -15224,6 +15244,7 @@ var useDashboardMetrics = ({
15224
15244
  allWorkspaceMetrics = backendData.workspace_metrics || [];
15225
15245
  allBlueComparisonWorkspaceMetrics = backendData.blue_comparison_workspace_metrics || allWorkspaceMetrics;
15226
15246
  allLineMetrics = backendData.line_metrics || [];
15247
+ allSelectorLineMetrics = backendData.selector_line_metrics || [];
15227
15248
  hasFlowBuffers = Boolean(backendData?.metadata?.has_flow_buffers);
15228
15249
  if (backendData?.metadata?.idle_time_vlm_by_line && typeof backendData.metadata.idle_time_vlm_by_line === "object") {
15229
15250
  idleTimeVlmByLine = backendData.metadata.idle_time_vlm_by_line;
@@ -15255,6 +15276,7 @@ var useDashboardMetrics = ({
15255
15276
  workspaceMetrics: transformedWorkspaceData,
15256
15277
  blueComparisonWorkspaceMetrics: transformedBlueComparisonWorkspaceData.length ? transformedBlueComparisonWorkspaceData : transformedWorkspaceData,
15257
15278
  lineMetrics: allLineMetrics || [],
15279
+ selectorLineMetrics: allSelectorLineMetrics || [],
15258
15280
  metadata: { hasFlowBuffers, idleTimeVlmByLine },
15259
15281
  efficiencyLegend: efficiencyLegend ?? DEFAULT_EFFICIENCY_LEGEND
15260
15282
  };
@@ -15325,6 +15347,7 @@ var useDashboardMetrics = ({
15325
15347
  configuredLineIds,
15326
15348
  targetFactoryLineIds,
15327
15349
  normalizedBlueComparisonLineIds,
15350
+ normalizedSelectorLineIds,
15328
15351
  isFactoryView,
15329
15352
  multiLineShiftConfigMap,
15330
15353
  staticShiftConfig,
@@ -15441,7 +15464,8 @@ var useDashboardMetrics = ({
15441
15464
  const isFactory = lineId === (entityConfig.factoryViewId || "factory");
15442
15465
  if (isFactory && shiftGroups.length === 0) return null;
15443
15466
  const shiftGroupsKeyPart = isFactory ? shiftGroups.map((g) => `${g.date}-${g.shiftId}-${g.lineIds.join("_")}`).join("|") : operationalShiftKey;
15444
- return `${lineId}|${entityConfig.companyId}|${shiftGroupsKeyPart}`;
15467
+ const selectorLineIdsKeyPart = (selectorLineIds || []).filter(Boolean).slice().sort().join(",");
15468
+ return `${lineId}|${entityConfig.companyId}|${shiftGroupsKeyPart}|selector:${selectorLineIdsKeyPart}`;
15445
15469
  }, [
15446
15470
  enabled,
15447
15471
  supabase,
@@ -15451,7 +15475,8 @@ var useDashboardMetrics = ({
15451
15475
  shiftLoading,
15452
15476
  isTimezoneLoading,
15453
15477
  shiftGroups,
15454
- operationalShiftKey
15478
+ operationalShiftKey,
15479
+ selectorLineIds
15455
15480
  ]);
15456
15481
  useEffect(() => {
15457
15482
  const currentLineIdToUse = lineIdRef.current;
@@ -15488,7 +15513,7 @@ var useDashboardMetrics = ({
15488
15513
  });
15489
15514
  const targetFactoryLineIdsForSubscriptions = explicitLineIdsRef.current !== void 0 ? explicitLineIdsRef.current : currentUserAccessibleLineIds !== void 0 ? currentUserAccessibleLineIds : currentConfiguredLineIds;
15490
15515
  const targetFactoryLineIdSet = new Set(
15491
- (targetFactoryLineIdsForSubscriptions || []).filter(Boolean)
15516
+ [...targetFactoryLineIdsForSubscriptions || [], ...selectorLineIdsRef.current || []].filter(Boolean)
15492
15517
  );
15493
15518
  currentShiftGroups.forEach((group, index) => {
15494
15519
  const groupLineIds = group.lineIds.filter(
@@ -15658,7 +15683,10 @@ var useDashboardMetrics = ({
15658
15683
  const currentShiftDetails = shiftConfig ? getCurrentShift(defaultTimezone, shiftConfig) : getCurrentShift(defaultTimezone, staticShiftConfig);
15659
15684
  const operationalDateForSubscription = currentShiftDetails.date;
15660
15685
  const targetLineIds = isFactory ? explicitLineIdsRef.current || currentUserAccessibleLineIds || currentConfiguredLineIds : [currentLineIdToUse];
15661
- const filteredLineIds = targetLineIds.filter((id3) => id3 && id3 !== factoryViewIdentifier);
15686
+ const filteredLineIds = Array.from(/* @__PURE__ */ new Set([
15687
+ ...targetLineIds,
15688
+ ...selectorLineIdsRef.current || []
15689
+ ])).filter((id3) => id3 && id3 !== factoryViewIdentifier);
15662
15690
  if (filteredLineIds.length === 0) {
15663
15691
  logDebug("[useDashboardMetrics] Realtime setup skipped: no line IDs after filtering", {
15664
15692
  targetLineIds,
@@ -15765,11 +15793,12 @@ var useDashboardMetrics = ({
15765
15793
  const isCurrentScopeResolved = metricsScopeKey === requestedScopeKey;
15766
15794
  const hasLastGoodMetrics = metrics2.workspaceMetrics.length > 0 || metrics2.lineMetrics.length > 0;
15767
15795
  const canReuseLastGoodMetrics = hasLastGoodMetrics && !isCurrentScopeResolved && (isLoading || !!error);
15768
- const safeMetrics = isCurrentScopeResolved || canReuseLastGoodMetrics ? metrics2 : { workspaceMetrics: [], blueComparisonWorkspaceMetrics: [], lineMetrics: [], metadata: void 0, efficiencyLegend: DEFAULT_EFFICIENCY_LEGEND };
15796
+ const safeMetrics = isCurrentScopeResolved || canReuseLastGoodMetrics ? metrics2 : { workspaceMetrics: [], blueComparisonWorkspaceMetrics: [], lineMetrics: [], selectorLineMetrics: [], metadata: void 0, efficiencyLegend: DEFAULT_EFFICIENCY_LEGEND };
15769
15797
  return {
15770
15798
  workspaceMetrics: safeMetrics?.workspaceMetrics || [],
15771
15799
  blueComparisonWorkspaceMetrics: safeMetrics?.blueComparisonWorkspaceMetrics || safeMetrics?.workspaceMetrics || [],
15772
15800
  lineMetrics: safeMetrics?.lineMetrics || [],
15801
+ selectorLineMetrics: safeMetrics?.selectorLineMetrics || [],
15773
15802
  efficiencyLegend: safeMetrics?.efficiencyLegend || DEFAULT_EFFICIENCY_LEGEND,
15774
15803
  metadata: safeMetrics?.metadata,
15775
15804
  isLoading: enabled ? isLoading || !isCurrentScopeResolved && !canReuseLastGoodMetrics : false,
@@ -20114,6 +20143,77 @@ var useWorkspaceHourSummary = () => {
20114
20143
  reset
20115
20144
  };
20116
20145
  };
20146
+ function useCompanyWorkspaceHourAiSummaryEnabled(companyId) {
20147
+ const { user, loading } = useAuth();
20148
+ const supabase = useSupabase();
20149
+ const company = user?.company || user?.properties?.company;
20150
+ const authCompanyId = company?.id || (typeof user?.company_id === "string" ? user.company_id : void 0) || (typeof user?.properties?.company_id === "string" ? user.properties.company_id : void 0);
20151
+ const targetCompanyId = companyId || authCompanyId || null;
20152
+ const authExplicitValue = company?.features?.workspace_hour_ai_summary;
20153
+ const canUseAuthCompanyFlag = Boolean(
20154
+ targetCompanyId && authCompanyId && targetCompanyId === authCompanyId
20155
+ );
20156
+ const [remoteFlag, setRemoteFlag] = useState(null);
20157
+ useEffect(() => {
20158
+ if (loading || !targetCompanyId || canUseAuthCompanyFlag) {
20159
+ setRemoteFlag(null);
20160
+ return;
20161
+ }
20162
+ let cancelled = false;
20163
+ setRemoteFlag(null);
20164
+ fetchBackendJson(
20165
+ supabase,
20166
+ `/api/dashboard/company-features?company_id=${encodeURIComponent(targetCompanyId)}`,
20167
+ {
20168
+ timeoutMs: 1e4,
20169
+ retries: 0,
20170
+ sentry: {
20171
+ surface: "workspace_hour_ai_summary_feature_flag",
20172
+ route: "/api/dashboard/company-features"
20173
+ }
20174
+ }
20175
+ ).then((response) => {
20176
+ if (cancelled) return;
20177
+ setRemoteFlag({
20178
+ companyId: targetCompanyId,
20179
+ enabled: response.features?.workspace_hour_ai_summary === true
20180
+ });
20181
+ }).catch(() => {
20182
+ if (cancelled) return;
20183
+ setRemoteFlag({
20184
+ companyId: targetCompanyId,
20185
+ enabled: false
20186
+ });
20187
+ });
20188
+ return () => {
20189
+ cancelled = true;
20190
+ };
20191
+ }, [canUseAuthCompanyFlag, loading, supabase, targetCompanyId]);
20192
+ return useMemo(() => {
20193
+ if (!targetCompanyId) {
20194
+ return {
20195
+ isWorkspaceHourAiSummaryEnabled: false,
20196
+ isResolved: !loading
20197
+ };
20198
+ }
20199
+ if (canUseAuthCompanyFlag) {
20200
+ return {
20201
+ isWorkspaceHourAiSummaryEnabled: authExplicitValue === true,
20202
+ isResolved: !loading || typeof authExplicitValue === "boolean"
20203
+ };
20204
+ }
20205
+ if (remoteFlag?.companyId === targetCompanyId) {
20206
+ return {
20207
+ isWorkspaceHourAiSummaryEnabled: remoteFlag.enabled,
20208
+ isResolved: true
20209
+ };
20210
+ }
20211
+ return {
20212
+ isWorkspaceHourAiSummaryEnabled: false,
20213
+ isResolved: false
20214
+ };
20215
+ }, [authExplicitValue, canUseAuthCompanyFlag, loading, remoteFlag, targetCompanyId]);
20216
+ }
20117
20217
  var MAX_RETRIES = 10;
20118
20218
  var RETRY_DELAY = 500;
20119
20219
  function useNavigation(customNavigate) {
@@ -65581,6 +65681,7 @@ var createEmptyState = () => ({
65581
65681
  workspaceMetrics: [],
65582
65682
  blueComparisonWorkspaceMetrics: [],
65583
65683
  lineMetrics: [],
65684
+ selectorLineMetrics: [],
65584
65685
  kpiTrend: null,
65585
65686
  activeBreaks: [],
65586
65687
  videoStreamsByWorkspaceId: {},
@@ -65594,7 +65695,7 @@ var normalizeMetadata = (metadata) => ({
65594
65695
  cacheStatus: metadata?.cache_status,
65595
65696
  warnings: metadata?.warnings ?? []
65596
65697
  });
65597
- var createResolvedScopeLookup = (resolvedScope, workspaces, blueComparisonWorkspaces) => {
65698
+ var createResolvedScopeLookup = (resolvedScope, workspaces, blueComparisonWorkspaces, selectorLineMetrics) => {
65598
65699
  const lookup = /* @__PURE__ */ new Set();
65599
65700
  const addEntry = (lineId, date, shiftId) => {
65600
65701
  if (!lineId || !date || shiftId === void 0 || shiftId === null) return;
@@ -65603,11 +65704,13 @@ var createResolvedScopeLookup = (resolvedScope, workspaces, blueComparisonWorksp
65603
65704
  resolvedScope.forEach((entry) => addEntry(entry.line_id, entry.date, entry.shift_id));
65604
65705
  workspaces.forEach((workspace) => addEntry(workspace.line_id, workspace.date, workspace.shift_id));
65605
65706
  blueComparisonWorkspaces.forEach((workspace) => addEntry(workspace.line_id, workspace.date, workspace.shift_id));
65707
+ selectorLineMetrics.forEach((lineMetric) => addEntry(lineMetric.line_id, lineMetric.date, lineMetric.shift_id));
65606
65708
  return lookup;
65607
65709
  };
65608
65710
  var useLiveMonitorBootstrap = ({
65609
65711
  lineIds,
65610
65712
  blueComparisonLineIds,
65713
+ selectorLineIds,
65611
65714
  companyId,
65612
65715
  enabled = true,
65613
65716
  appTimezone,
@@ -65623,6 +65726,7 @@ var useLiveMonitorBootstrap = ({
65623
65726
  const effectiveTimezone = appTimezone || "Asia/Kolkata";
65624
65727
  const rawLineIdsKey = (lineIds || []).filter(Boolean).join(",");
65625
65728
  const rawBlueComparisonLineIdsKey = (blueComparisonLineIds || lineIds || []).filter(Boolean).join(",");
65729
+ const rawSelectorLineIdsKey = (selectorLineIds || []).filter(Boolean).join(",");
65626
65730
  const normalizedLineIds = useMemo(
65627
65731
  () => Array.from(new Set(rawLineIdsKey ? rawLineIdsKey.split(",") : [])),
65628
65732
  [rawLineIdsKey]
@@ -65631,13 +65735,17 @@ var useLiveMonitorBootstrap = ({
65631
65735
  () => Array.from(new Set(rawBlueComparisonLineIdsKey ? rawBlueComparisonLineIdsKey.split(",") : [])),
65632
65736
  [rawBlueComparisonLineIdsKey]
65633
65737
  );
65738
+ const normalizedSelectorLineIds = useMemo(
65739
+ () => Array.from(new Set(rawSelectorLineIdsKey ? rawSelectorLineIdsKey.split(",") : [])),
65740
+ [rawSelectorLineIdsKey]
65741
+ );
65634
65742
  const realtimeLineIds = useMemo(
65635
- () => Array.from(new Set([...normalizedLineIds, ...normalizedBlueComparisonLineIds].filter(Boolean))).sort(),
65636
- [normalizedLineIds, normalizedBlueComparisonLineIds]
65743
+ () => Array.from(new Set([...normalizedLineIds, ...normalizedBlueComparisonLineIds, ...normalizedSelectorLineIds].filter(Boolean))).sort(),
65744
+ [normalizedLineIds, normalizedBlueComparisonLineIds, normalizedSelectorLineIds]
65637
65745
  );
65638
65746
  const requestKey = useMemo(
65639
- () => `${normalizedLineIds.slice().sort().join(",")}|blue:${normalizedBlueComparisonLineIds.slice().sort().join(",")}`,
65640
- [normalizedLineIds, normalizedBlueComparisonLineIds]
65747
+ () => `${normalizedLineIds.slice().sort().join(",")}|blue:${normalizedBlueComparisonLineIds.slice().sort().join(",")}|selector:${normalizedSelectorLineIds.slice().sort().join(",")}`,
65748
+ [normalizedLineIds, normalizedBlueComparisonLineIds, normalizedSelectorLineIds]
65641
65749
  );
65642
65750
  const realtimeLineIdsKey = useMemo(() => realtimeLineIds.join(","), [realtimeLineIds]);
65643
65751
  const companySpecificMetricsTable = useMemo(
@@ -65669,6 +65777,9 @@ var useLiveMonitorBootstrap = ({
65669
65777
  if (normalizedBlueComparisonLineIds.length) {
65670
65778
  searchParams.set("blue_comparison_line_ids", normalizedBlueComparisonLineIds.join(","));
65671
65779
  }
65780
+ if (normalizedSelectorLineIds.length) {
65781
+ searchParams.set("selector_line_ids", normalizedSelectorLineIds.join(","));
65782
+ }
65672
65783
  if (force) {
65673
65784
  searchParams.set("force_refresh", "true");
65674
65785
  }
@@ -65702,6 +65813,7 @@ var useLiveMonitorBootstrap = ({
65702
65813
  company_id: resolvedCompanyId,
65703
65814
  line_ids: normalizedLineIds,
65704
65815
  blue_comparison_line_ids: normalizedBlueComparisonLineIds,
65816
+ selector_line_ids: normalizedSelectorLineIds,
65705
65817
  force_refresh: force,
65706
65818
  pathname: typeof window !== "undefined" ? window.location.pathname : "unknown"
65707
65819
  }
@@ -65719,6 +65831,7 @@ var useLiveMonitorBootstrap = ({
65719
65831
  resolvedCompanyId,
65720
65832
  normalizedLineIds,
65721
65833
  normalizedBlueComparisonLineIds,
65834
+ normalizedSelectorLineIds,
65722
65835
  requestKey
65723
65836
  ]);
65724
65837
  const fetchBootstrapRef = useRef(fetchBootstrap);
@@ -65830,6 +65943,7 @@ var useLiveMonitorBootstrap = ({
65830
65943
  workspaceMetrics,
65831
65944
  blueComparisonWorkspaceMetrics: blueComparisonWorkspaceMetrics.length ? blueComparisonWorkspaceMetrics : workspaceMetrics,
65832
65945
  lineMetrics: rawState.response.line_metrics || [],
65946
+ selectorLineMetrics: rawState.response.selector_line_metrics || [],
65833
65947
  kpiTrend: rawState.response.kpi_trend || null,
65834
65948
  activeBreaks,
65835
65949
  videoStreamsByWorkspaceId,
@@ -65866,8 +65980,9 @@ var useLiveMonitorBootstrap = ({
65866
65980
  const realtimeScopeKey = useMemo(() => Array.from(createResolvedScopeLookup(
65867
65981
  state.resolvedScope,
65868
65982
  state.workspaceMetrics,
65869
- state.blueComparisonWorkspaceMetrics
65870
- )).sort().join("||"), [state.resolvedScope, state.workspaceMetrics, state.blueComparisonWorkspaceMetrics]);
65983
+ state.blueComparisonWorkspaceMetrics,
65984
+ state.selectorLineMetrics
65985
+ )).sort().join("||"), [state.resolvedScope, state.workspaceMetrics, state.blueComparisonWorkspaceMetrics, state.selectorLineMetrics]);
65871
65986
  useEffect(() => {
65872
65987
  if (!enabled || !resolvedCompanyId || !realtimeLineIdsKey || !supabase) {
65873
65988
  return void 0;
@@ -65973,6 +66088,7 @@ var useLiveMonitorBootstrap = ({
65973
66088
  workspaceMetrics: state.workspaceMetrics,
65974
66089
  blueComparisonWorkspaceMetrics: state.blueComparisonWorkspaceMetrics,
65975
66090
  lineMetrics: state.lineMetrics,
66091
+ selectorLineMetrics: state.selectorLineMetrics,
65976
66092
  kpiTrend: state.kpiTrend,
65977
66093
  activeBreaks: state.activeBreaks,
65978
66094
  videoStreamsByWorkspaceId: state.videoStreamsByWorkspaceId,
@@ -66487,6 +66603,7 @@ function HomeView({
66487
66603
  workspaceMetrics: legacyWorkspaceMetrics,
66488
66604
  blueComparisonWorkspaceMetrics: legacyMetricsBlueComparisonWorkspaceMetrics,
66489
66605
  lineMetrics: legacyLineMetrics,
66606
+ selectorLineMetrics: legacySelectorLineMetrics = [],
66490
66607
  efficiencyLegend: legacyEfficiencyLegend,
66491
66608
  metadata: legacyMetricsMetadata,
66492
66609
  isLoading: legacyMetricsLoading,
@@ -66497,6 +66614,7 @@ function HomeView({
66497
66614
  lineId: metricsScopeLineId,
66498
66615
  lineIds: selectedLineIds,
66499
66616
  blueComparisonLineIds,
66617
+ selectorLineIds: visibleLineIds,
66500
66618
  onLineMetricsUpdate: handleLineMetricsUpdate,
66501
66619
  userAccessibleLineIds: visibleLineIds,
66502
66620
  enabled: shouldEnableMetricsFetch && !isBootstrapMonitorMode
@@ -66552,6 +66670,7 @@ function HomeView({
66552
66670
  const bootstrapMonitor = useLiveMonitorBootstrap({
66553
66671
  lineIds: selectedLineIds,
66554
66672
  blueComparisonLineIds,
66673
+ selectorLineIds: visibleLineIds,
66555
66674
  companyId: userCompanyId,
66556
66675
  enabled: shouldEnableMetricsFetch && !isLegacyMonitorMode,
66557
66676
  appTimezone: timezone,
@@ -66562,12 +66681,32 @@ function HomeView({
66562
66681
  const currentWorkspaceMetrics = isBootstrapMonitorMode ? bootstrapMonitor.workspaceMetrics : legacyWorkspaceMetrics;
66563
66682
  const currentBlueComparisonWorkspaceMetrics = isBootstrapMonitorMode ? bootstrapMonitor.blueComparisonWorkspaceMetrics : legacyMetricsBlueComparisonWorkspaceMetrics;
66564
66683
  const currentLineMetrics = isBootstrapMonitorMode ? bootstrapMonitor.lineMetrics : legacyLineMetrics;
66684
+ const currentSelectorLineMetrics = isBootstrapMonitorMode ? bootstrapMonitor.selectorLineMetrics : legacySelectorLineMetrics;
66565
66685
  const currentEfficiencyLegend = isBootstrapMonitorMode ? bootstrapMonitor.efficiencyLegend : legacyEfficiencyLegend;
66566
66686
  const currentMetricsMetadata = isBootstrapMonitorMode ? bootstrapMonitor.metadata : legacyMetricsMetadata;
66567
66687
  const currentMetricsLoading = isBootstrapMonitorMode ? bootstrapMonitor.isLoading : legacyMetricsLoading;
66568
66688
  const currentIsCurrentScopeResolved = isBootstrapMonitorMode ? bootstrapMonitor.isCurrentScopeResolved : legacyIsCurrentScopeResolved;
66569
66689
  const currentMetricsError = isBootstrapMonitorMode ? bootstrapMonitor.error : legacyMetricsError;
66570
66690
  const currentRefetchMetrics = isBootstrapMonitorMode ? bootstrapMonitor.refetch : refetchLegacyMetrics;
66691
+ const lineSelectorSignalStatusByLine = useMemo(() => {
66692
+ const statusByLine = /* @__PURE__ */ new Map();
66693
+ const legend = currentEfficiencyLegend || DEFAULT_EFFICIENCY_LEGEND;
66694
+ const addRows = (rows) => {
66695
+ (rows || []).forEach((row) => {
66696
+ const lineId = typeof row?.line_id === "string" ? row.line_id : "";
66697
+ if (!lineId || statusByLine.has(lineId)) {
66698
+ return;
66699
+ }
66700
+ const status = getKpiSignalStatus(row?.line_signal, legend);
66701
+ if (status) {
66702
+ statusByLine.set(lineId, status);
66703
+ }
66704
+ });
66705
+ };
66706
+ addRows(currentSelectorLineMetrics);
66707
+ addRows(currentLineMetrics);
66708
+ return statusByLine;
66709
+ }, [currentEfficiencyLegend, currentLineMetrics, currentSelectorLineMetrics]);
66571
66710
  const metricsDisplayNames = useMemo(() => {
66572
66711
  const nextDisplayNames = {};
66573
66712
  currentWorkspaceMetrics.forEach((workspace) => {
@@ -67425,6 +67564,8 @@ function HomeView({
67425
67564
  ] }),
67426
67565
  /* @__PURE__ */ jsx("div", { className: "max-h-56 space-y-0.5 overflow-y-auto pr-1", children: visibleLineIds.map((lineId) => {
67427
67566
  const isChecked = pendingSelectedLineIds.includes(lineId);
67567
+ const signalStatus = lineSelectorSignalStatusByLine.get(lineId);
67568
+ const signalDotClass = signalStatus === "stable" ? "bg-green-500" : signalStatus === "warning" ? "bg-yellow-400" : signalStatus === "attention" ? "bg-red-500" : "";
67428
67569
  return /* @__PURE__ */ jsxs(
67429
67570
  "label",
67430
67571
  {
@@ -67449,7 +67590,15 @@ function HomeView({
67449
67590
  }
67450
67591
  }
67451
67592
  ),
67452
- /* @__PURE__ */ jsx("span", { className: "truncate", children: mergedLineNames[lineId] || `Line ${lineId.substring(0, 4)}` })
67593
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: mergedLineNames[lineId] || `Line ${lineId.substring(0, 4)}` }),
67594
+ /* @__PURE__ */ jsx("span", { className: "flex h-2.5 w-2.5 flex-shrink-0 items-center justify-center", children: signalStatus ? /* @__PURE__ */ jsx(
67595
+ "span",
67596
+ {
67597
+ "data-testid": `line-selector-signal-dot-${lineId}`,
67598
+ className: `h-2 w-2 rounded-full ${signalDotClass}`,
67599
+ "aria-hidden": "true"
67600
+ }
67601
+ ) : null })
67453
67602
  ]
67454
67603
  },
67455
67604
  lineId
@@ -67478,6 +67627,7 @@ function HomeView({
67478
67627
  mergedLineNames,
67479
67628
  selectedLineIds,
67480
67629
  pendingSelectedLineIds,
67630
+ lineSelectorSignalStatusByLine,
67481
67631
  visibleLineIds,
67482
67632
  updateSelectedLineIds,
67483
67633
  isAllLinesSelection
@@ -80102,8 +80252,18 @@ var WorkspaceDetailView = ({
80102
80252
  const monitoringMode = workspace?.monitoring_mode ?? "output";
80103
80253
  const isUptimeMode = monitoringMode === "uptime";
80104
80254
  const idleTimeVlmEnabled = isIdleTimeVlmEnabled(resolvedLineId);
80105
- const showHourSummaryPanel = Boolean(selectedHour && !isUptimeMode);
80106
80255
  const hourSummaryCompanyId = workspace?.company_id || dashboardConfig?.entityConfig?.companyId || null;
80256
+ const {
80257
+ isWorkspaceHourAiSummaryEnabled,
80258
+ isResolved: isWorkspaceHourAiSummaryResolved
80259
+ } = useCompanyWorkspaceHourAiSummaryEnabled(hourSummaryCompanyId);
80260
+ const showHourSummaryPanel = Boolean(selectedHour && !isUptimeMode && isWorkspaceHourAiSummaryEnabled);
80261
+ useEffect(() => {
80262
+ if (isWorkspaceHourAiSummaryResolved && !isWorkspaceHourAiSummaryEnabled) {
80263
+ setSelectedHour(null);
80264
+ setAiSummaryHour(null);
80265
+ }
80266
+ }, [isWorkspaceHourAiSummaryEnabled, isWorkspaceHourAiSummaryResolved]);
80107
80267
  const hourSummaryDate = workspace?.date || date || calculatedOperationalDate || null;
80108
80268
  const hourSummaryShiftId = workspace?.shift_id ?? parsedShiftId ?? null;
80109
80269
  useEffect(() => {
@@ -81022,8 +81182,8 @@ var WorkspaceDetailView = ({
81022
81182
  showIdleTime: showChartIdleTime,
81023
81183
  idleTimeData: hourlyIdleMinutes,
81024
81184
  idleTimeSlots: hourlyIdleSlots,
81025
- selectedHourIndex: selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
81026
- onHourClick: handleCycleHourSelect
81185
+ selectedHourIndex: isWorkspaceHourAiSummaryEnabled && selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
81186
+ onHourClick: isWorkspaceHourAiSummaryEnabled ? handleCycleHourSelect : void 0
81027
81187
  }
81028
81188
  ) : null : /* @__PURE__ */ jsx(
81029
81189
  HourlyOutputChart2,
@@ -81042,10 +81202,10 @@ var WorkspaceDetailView = ({
81042
81202
  timezone: effectiveCycleTimeTimezone,
81043
81203
  skuSegments: isSkuAware ? skuSegments : void 0,
81044
81204
  activeSkuId,
81045
- selectedHourIndex: selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null,
81046
- onHourClick: handleOutputHourSelect,
81205
+ selectedHourIndex: isWorkspaceHourAiSummaryEnabled ? selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null : null,
81206
+ onHourClick: isWorkspaceHourAiSummaryEnabled ? handleOutputHourSelect : void 0,
81047
81207
  onWatchClipsClick: handleWatchClipsFromChart,
81048
- onAiSummaryClick: handleAiSummaryClick
81208
+ onAiSummaryClick: isWorkspaceHourAiSummaryEnabled ? handleAiSummaryClick : void 0
81049
81209
  }
81050
81210
  )
81051
81211
  }
@@ -81195,8 +81355,8 @@ var WorkspaceDetailView = ({
81195
81355
  showIdleTime: showChartIdleTime,
81196
81356
  idleTimeData: hourlyIdleMinutes,
81197
81357
  idleTimeSlots: hourlyIdleSlots,
81198
- selectedHourIndex: selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
81199
- onHourClick: handleCycleHourSelect
81358
+ selectedHourIndex: isWorkspaceHourAiSummaryEnabled && selectedHour?.source === "cycle" ? selectedHour.hourIndex : null,
81359
+ onHourClick: isWorkspaceHourAiSummaryEnabled ? handleCycleHourSelect : void 0
81200
81360
  }
81201
81361
  ) : null : /* @__PURE__ */ jsx(
81202
81362
  HourlyOutputChart2,
@@ -81215,10 +81375,10 @@ var WorkspaceDetailView = ({
81215
81375
  timezone: effectiveCycleTimeTimezone,
81216
81376
  skuSegments: isSkuAware ? skuSegments : void 0,
81217
81377
  activeSkuId,
81218
- selectedHourIndex: selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null,
81219
- onHourClick: handleOutputHourSelect,
81378
+ selectedHourIndex: isWorkspaceHourAiSummaryEnabled ? selectedHour?.source === "output" ? selectedHour.hourIndex : aiSummaryHour?.hourIndex ?? null : null,
81379
+ onHourClick: isWorkspaceHourAiSummaryEnabled ? handleOutputHourSelect : void 0,
81220
81380
  onWatchClipsClick: handleWatchClipsFromChart,
81221
- onAiSummaryClick: handleAiSummaryClick
81381
+ onAiSummaryClick: isWorkspaceHourAiSummaryEnabled ? handleAiSummaryClick : void 0
81222
81382
  }
81223
81383
  ) })
81224
81384
  ]
@@ -81372,7 +81532,7 @@ var WorkspaceDetailView = ({
81372
81532
  ) })
81373
81533
  ] })
81374
81534
  ] }),
81375
- aiSummaryHour && /* @__PURE__ */ jsx(
81535
+ isWorkspaceHourAiSummaryEnabled && aiSummaryHour && /* @__PURE__ */ jsx(
81376
81536
  "div",
81377
81537
  {
81378
81538
  className: "fixed inset-0 bg-slate-900/40 backdrop-blur-sm flex items-center justify-center p-4 z-[9999]",
@@ -90711,4 +90871,4 @@ var RecentFlowSnapshotGrid = ({
90711
90871
  );
90712
90872
  };
90713
90873
 
90714
- export { ACTION_FAMILIES, ACTION_NAMES, AIAgentView_default as AIAgentView, AcceptInvite, AcceptInviteView_default as AcceptInviteView, AdvancedFilterDialog, AdvancedFilterPanel, AudioService, AuthCallback, AuthCallbackView_default as AuthCallbackView, AuthProvider, AuthService, AuthenticatedBottleneckClipsView, AuthenticatedFactoryView, AuthenticatedHelpView, AuthenticatedHomeView, AuthenticatedShiftsView, AuthenticatedTargetsView, AuthenticatedTicketsView, AuthenticatedWorkspaceHealthView, AvatarUpload, AxelNotificationPopup, AxelOrb, BackButton, BackButtonMinimal, BarChart, BaseHistoryCalendar, BottleneckClipsModal, BottleneckClipsView_default as BottleneckClipsView, BottlenecksContent, BreakNotificationPopup, CachePrefetchStatus, Card2 as Card, CardContent2 as CardContent, CardDescription2 as CardDescription, CardFooter2 as CardFooter, CardHeader2 as CardHeader, CardTitle2 as CardTitle, ChangeRoleDialog, ClipFilterProvider, ClipsCostView_default as ClipsCostView, CompactWorkspaceHealthCard, ConfirmRemoveUserDialog, CongratulationsOverlay, CroppedHlsVideoPlayer, CroppedVideoPlayer, CycleTimeChart, CycleTimeOverTimeChart, DEFAULT_ANALYTICS_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_DATE_TIME_CONFIG, DEFAULT_ENDPOINTS_CONFIG, DEFAULT_ENTITY_CONFIG, DEFAULT_HOME_VIEW_CONFIG, DEFAULT_MAP_VIEW_CONFIG, DEFAULT_SHIFT_CONFIG, DEFAULT_SHIFT_DATA, DEFAULT_THEME_CONFIG, DEFAULT_VIDEO_CONFIG, DEFAULT_WORKSPACE_CONFIG, DEFAULT_WORKSPACE_POSITIONS, DashboardHeader, DashboardLayout, DashboardOverridesProvider, DashboardProvider, DateDisplay_default as DateDisplay, DateTimeDisplay, DebugAuth, DebugAuthView_default as DebugAuthView, DetailedHealthStatus, DiagnosisVideoModal, EFFICIENCY_ON_TRACK_THRESHOLD, EmptyStateMessage, EncouragementOverlay, FactoryAssignmentDropdown, FactoryView_default as FactoryView, FileManagerFilters, FilterDialogTrigger, FirstTimeLoginDebug, FirstTimeLoginHandler, FittingTitle, GaugeChart, GridComponentsPlaceholder, HamburgerButton, Header, HealthDateShiftSelector, HealthStatusGrid, HealthStatusIndicator, HelpView_default as HelpView, HlsVideoPlayer, HomeView_default as HomeView, HourlyOutputChart2 as HourlyOutputChart, HourlyUptimeChart, ISTTimer_default as ISTTimer, IdleTimeVlmConfigProvider, ImprovementCenterView_default as ImprovementCenterView, InlineEditableText, InteractiveOnboardingTour, InvitationService, InvitationsTable, InviteUserDialog, KPICard, KPIDetailView_default as KPIDetailView, KPIGrid, KPIHeader, KPISection, KPI_SIGNAL_LABELS, KPIsOverviewView_default as KPIsOverviewView, LINE_1_UUID, LINE_2_UUID, LargeOutputProgressChart, LeaderboardDetailView_default as LeaderboardDetailView, Legend5 as Legend, LineAssignmentDropdown, LineChart, LineHistoryCalendar, LineMonthlyHistory, LineMonthlyPdfGenerator, LineOvertakeNotificationManager, LinePdfExportButton, LinePdfGenerator, LineWhatsAppShareButton, LinesService, LiveTimer, LoadingInline, LoadingOverlay_default as LoadingOverlay, LoadingPage_default as LoadingPage, LoadingSkeleton, LoadingState, LoginPage, LoginView_default as LoginView, Logo, MainLayout, MapGridView, MetricCard_default as MetricCard, MinimalOnboardingPopup, MobileMenuProvider, NewClipsNotification, NoWorkspaceData, OnboardingDemo, OnboardingTour, OptifyeAgentClient, OptifyeLogoLoader_default as OptifyeLogoLoader, OutputProgressChart, PageHeader, PieChart4 as PieChart, PlantHeadView_default as PlantHeadView, PlayPauseIndicator, PrefetchConfigurationError, PrefetchError, PrefetchEvents, PrefetchStatus, PrefetchTimeoutError, ProductionPlanApiError, ProductionPlanView_default as ProductionPlanView, ProfileView_default as ProfileView, ROOT_DASHBOARD_EVENT_NAMES, RecentFlowSnapshotGrid, RegistryProvider, RoleBadge, S3ClipsSupabaseService as S3ClipsService, S3Service, SENTRY_HANDLED_EVENT_SESSION_LIMIT, SENTRY_HANDLED_EVENT_WINDOW_MS, SENTRY_QUOTA_STORAGE_KEY, SKUManagementView, SOPComplianceChart, SSEChatClient, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionTracker, SessionTrackingContext, SessionTrackingProvider, SettingsPopup, ShiftDisplay_default as ShiftDisplay, ShiftsView_default as ShiftsView, SideNavBar, SignupWithInvitation, SilentErrorBoundary, SimpleOnboardingPopup, SingleVideoStream_default as SingleVideoStream, Skeleton, SubscriptionManager, SubscriptionManagerProvider, SupabaseProvider, SupervisorDropdown_default as SupervisorDropdown, SupervisorManagementView_default as SupervisorManagementView, SupervisorService, TargetWorkspaceGrid, TargetsView_default as TargetsView, TeamManagementView_default as TeamManagementView, ThreadSidebar, TicketHistory_default as TicketHistory, TicketHistoryService, TicketsView_default as TicketsView, TimeDisplay_default as TimeDisplay, TimePickerDropdown, Timer_default as Timer, TimezoneProvider, TimezoneService, UptimeDonutChart, UptimeLineChart, UptimeMetricCards, UserAvatar, UserManagementService, UserManagementTable, UserService, UserUsageDetailModal, UserUsageStats, VideoCard, VideoGridView, VideoPlayer, VideoPreloader, WORKSPACE_POSITIONS, WhatsAppShareButton, WorkspaceCard, WorkspaceCycleTimeMetricCards, WorkspaceDetailView_default as WorkspaceDetailView, WorkspaceDisplayNameExample, WorkspaceGrid, WorkspaceGridItem, WorkspaceHealthCard, WorkspaceHealthView_default as WorkspaceHealthView, WorkspaceHistoryCalendar, WorkspaceMetricCards, WorkspaceMetricCardsImpl, WorkspaceMonthlyDataFetcher, WorkspaceMonthlyHistory, WorkspaceMonthlyPdfGenerator, WorkspacePdfExportButton, WorkspacePdfGenerator, WorkspaceWhatsAppShareButton, actionService, addSentryBreadcrumb, aggregateKPIsFromLineMetricsRows, aggregateLineSignals, alertsService, apiUtils, areAllLinesOnSameShift, authCoreService, authOTPService, authRateLimitService, awardsService, buildDateKey, buildKPIsFromLineMetricsRow, buildKpiLineHierarchy, buildLegacyLineOvertakeEventKey, buildLineLeaderboardRows, buildLineOvertakeEventKey, buildLineSkuBreakdown, buildShiftGroupsKey, canPermissionEditProductionPlan, canRoleAccessDashboardPath, canRoleAccessTeamManagement, canRoleAssignFactories, canRoleAssignLines, canRoleChangeRole, canRoleEditProductionPlan, canRoleInviteRole, canRoleManageCompany, canRoleManageTargets, canRoleManageUsers, canRoleRemoveUser, canRoleViewClipsCost, canRoleViewUsageStats, captureHandledFrontendException, captureSentryException, captureSentryMessage, checkRateLimit2 as checkRateLimit, clearAllRateLimits2 as clearAllRateLimits, clearRateLimit2 as clearRateLimit, clearS3VideoCache, clearS3VideoFromCache, clearSentryContext, clearWorkspaceDisplayNamesCache, cn, combineLineMetricsRows, countRealSkus, createDefaultKPIs, createInvitationService, createLinesService, createSessionTracker, createStorageService, createStreamProxyHandler, createSupabaseClient, createSupervisorService, createThrottledReload, createUserManagementService, createUserService, dashboardService, deleteThread, detectLineOvertakeEvents, fetchIdleTimeReasons, fetchLineDummySkuId, fetchLineSkuCatalog, filterDataByDateKeyRange, filterRealSkuBreakdown, forceRefreshWorkspaceDisplayNames, formatAwardMonth, formatDateInZone, formatDateKeyForDisplay, formatDateTimeInZone, formatDuration2 as formatDuration, formatISTDate, formatIdleTime, formatRangeLabel, formatReasonLabel, formatRelativeTime, formatTimeInZone, fromUrlFriendlyName, getActionDisplayName, getActiveShift, getAllLineDisplayNames, getAllThreadMessages, getAllWorkspaceDisplayNamesAsync, getAllWorkspaceDisplayNamesSnapshot, getAnonClient, getAssignableRoles, getAssignmentColumnLabel, getAvailableShiftIds, getAwardBadgeType, getAwardDescription, getAwardTitle, getBrowserName, getCameraNumber, getCompanyMetricsTableName, getConfigurableShortWorkspaceDisplayName, getConfigurableWorkspaceDisplayName, getConfiguredLineIds, getCoreSessionRecordingProperties, getCoreSessionReplayUrl, getCurrentShift, getCurrentShiftForLine, getCurrentTimeInZone, getCurrentWeekFullRange, getCurrentWeekToDateRange, getDashboardHeaderTimeInZone, getDateKeyFromDate, getDateKeyFromValue, getDayDateKey, getDaysDifferenceInZone, getDefaultCameraStreamUrl, getDefaultLineId, getDefaultTabForWorkspace, getInitials, getKpiSignalLabel, getKpiSignalStatus, getLineDisplayName, getManufacturingInsights, getMetricsTablePrefix, getMonthKeyBounds, getMonthWeekRanges, getMonthlyTrendComparisonLabel, getNextUpdateInterval, getOperationalDate, getRoleAssignmentKind, getRoleDescription, getRoleLabel, getRoleMetadata, getRoleNavPaths, getS3SignedUrl, getS3VideoSrc, getShiftData, getShiftNameById, getShiftWorkDurationSeconds, getShortShiftName, getShortWorkspaceDisplayName, getShortWorkspaceDisplayNameAsync, getStoredWorkspaceMappings, getSubscriptionManager, getThreadMessages, getUniformShiftGroup, getUserThreads, getUserThreadsPaginated, getVisibleRolesForCurrentUser, getWorkspaceDisplayName, getWorkspaceDisplayNameAsync, getWorkspaceDisplayNamesMap, getWorkspaceFromUrl, getWorkspaceNavigationParams, groupLinesByShift, hasAnyShiftData, identifyCoreUser, initializeCoreMixpanel, isEfficiencyOnTrack, isFactoryScopedRole, isFullMonthRange, isIgnorableFrontendError, isLegacyConfiguration, isLoopbackHostname, isPrefetchError, isRealSku, isRecentFlowVideoGridMetricMode, isSafari, isSupervisorRole, isTransitionPeriod, isUrlPermanentlyFailed, isValidFactoryViewConfiguration, isValidLineInfoPayload, isValidPrefetchParams, isValidPrefetchStatus, isValidWorkspaceDetailedMetricsPayload, isValidWorkspaceMetricsPayload, isWipGatedVideoGridMetricMode, isWorkspaceDisplayNamesLoaded, isWorkspaceDisplayNamesLoading, lineLeaderboardService, linesService, mergeWithDefaultConfig, migrateLegacyConfiguration, normalizeActionFamily, normalizeDateKeyRange, normalizeDateKeyRangeUnbounded, normalizeRoleLevel, normalizeVideoGridMetricMode, optifyeAgentClient, parseDateKeyToDate, parseS3Uri, pickPreferredLineMetricsRow, preInitializeWorkspaceDisplayNames, preloadS3Video, preloadS3VideoUrl, preloadS3VideosUrl, preloadVideoUrl, preloadVideosUrl, productionPlanService, qualityService, realtimeService, refreshWorkspaceDisplayNames, resetCoreMixpanel, resetFailedUrl, resetSentryQuotaForTests, resetSubscriptionManager, resolveDefaultSkuId, resolveLiveSkuId, s3VideoPreloader, selectPreferredLineMetricsRow, setSentryUserContext, setSentryWorkspaceContext, shouldEnableLocalDevTestLogin, shuffleArray, simulateApiDelay, skuService, startCoreSessionRecording, stopCoreSessionRecording, storeWorkspaceMapping, streamProxyConfig, subscribeWorkspaceDisplayNames, throttledReloadDashboard, toUrlFriendlyName, trackCoreEvent, trackCorePageView, transformToChartData, updateThreadTitle, upsertWorkspaceDisplayNameInCache, useAccessControl, useActiveBreaks, useActiveLineId, useAllWorkspaceMetrics, useAnalyticsConfig, useAppTimezone, useAudioService, useAuth, useAuthConfig, useAxelNotifications, useCanSaveTargets, useClipFilter, useClipTypes, useClipTypesWithCounts, useClipsInit, useCompanyClipsCost, useCompanyFastSlowClipFiltersEnabled, useCompanyHasVlmEnabledLine, useCompanyUsersUsage, useComponentOverride, useCustomConfig, useDashboardConfig, useDashboardMetrics, useDatabaseConfig, useDateFormatter, useDateTimeConfig, useDynamicShiftConfig, useEndpointsConfig, useEntityConfig, useFactoryOverviewMetrics, useFeatureFlags, useFormatNumber, useHasLineAccess, useHideMobileHeader, useHistoricWorkspaceMetrics, useHlsStream, useHlsStreamWithCropping, useHookOverride, useHourEndTimer, useHourlyTargetAchievements, useHourlyTargetMisses, useIdleTimeClipClassifications, useIdleTimeReasons, useIdleTimeVlmConfig, useKpiTrends, useLeaderboardMetrics, useLineDetailedMetrics, useLineKPIs, useLineMetrics, useLineShiftConfig, useLineSupervisor, useLineWorkspaceMetrics, useLines, useMessages, useMetrics, useMobileMenu, useMonthlyTrend, useMultiLineShiftConfigs, useNavigation, useOperationalShiftKey, useOptionalSupabase, useOverrides, usePageOverride, usePrefetchClipCounts, useRealtimeLineMetrics, useRegistry, useSKUs, useSessionKeepAlive, useSessionTracking, useSessionTrackingContext, useShiftConfig, useShiftGroups, useShifts, useSubscriptionManager, useSubscriptionManagerSafe, useSupabase, useSupabaseClient, useSupervisorsByLineIds, useTargets, useTeamManagementPermissions, useTheme, useThemeConfig, useThreads, useTicketHistory, useTimezoneContext, useUserLineAccess, useUserUsage, useVideoConfig, useWorkspaceConfig, useWorkspaceDetailedMetrics, useWorkspaceDisplayName, useWorkspaceDisplayNames, useWorkspaceDisplayNamesMap, useWorkspaceHealthById, useWorkspaceHealthLastSeen, useWorkspaceHealthStatus, useWorkspaceHourSummary, useWorkspaceMetrics, useWorkspaceNavigation, useWorkspaceOperators, useWorkspaceUptimeTimeline, useWorkspaceVideoStreams, userService, videoPrefetchManager, videoPreloader, weeklyTopPerformerService, whatsappService, withAccessControl, withAuth, withRegistry, withTimezone, workspaceHealthService, workspaceService };
90874
+ export { ACTION_FAMILIES, ACTION_NAMES, AIAgentView_default as AIAgentView, AcceptInvite, AcceptInviteView_default as AcceptInviteView, AdvancedFilterDialog, AdvancedFilterPanel, AudioService, AuthCallback, AuthCallbackView_default as AuthCallbackView, AuthProvider, AuthService, AuthenticatedBottleneckClipsView, AuthenticatedFactoryView, AuthenticatedHelpView, AuthenticatedHomeView, AuthenticatedShiftsView, AuthenticatedTargetsView, AuthenticatedTicketsView, AuthenticatedWorkspaceHealthView, AvatarUpload, AxelNotificationPopup, AxelOrb, BackButton, BackButtonMinimal, BarChart, BaseHistoryCalendar, BottleneckClipsModal, BottleneckClipsView_default as BottleneckClipsView, BottlenecksContent, BreakNotificationPopup, CachePrefetchStatus, Card2 as Card, CardContent2 as CardContent, CardDescription2 as CardDescription, CardFooter2 as CardFooter, CardHeader2 as CardHeader, CardTitle2 as CardTitle, ChangeRoleDialog, ClipFilterProvider, ClipsCostView_default as ClipsCostView, CompactWorkspaceHealthCard, ConfirmRemoveUserDialog, CongratulationsOverlay, CroppedHlsVideoPlayer, CroppedVideoPlayer, CycleTimeChart, CycleTimeOverTimeChart, DEFAULT_ANALYTICS_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_CONFIG, DEFAULT_DATABASE_CONFIG, DEFAULT_DATE_TIME_CONFIG, DEFAULT_ENDPOINTS_CONFIG, DEFAULT_ENTITY_CONFIG, DEFAULT_HOME_VIEW_CONFIG, DEFAULT_MAP_VIEW_CONFIG, DEFAULT_SHIFT_CONFIG, DEFAULT_SHIFT_DATA, DEFAULT_THEME_CONFIG, DEFAULT_VIDEO_CONFIG, DEFAULT_WORKSPACE_CONFIG, DEFAULT_WORKSPACE_POSITIONS, DashboardHeader, DashboardLayout, DashboardOverridesProvider, DashboardProvider, DateDisplay_default as DateDisplay, DateTimeDisplay, DebugAuth, DebugAuthView_default as DebugAuthView, DetailedHealthStatus, DiagnosisVideoModal, EFFICIENCY_ON_TRACK_THRESHOLD, EmptyStateMessage, EncouragementOverlay, FactoryAssignmentDropdown, FactoryView_default as FactoryView, FileManagerFilters, FilterDialogTrigger, FirstTimeLoginDebug, FirstTimeLoginHandler, FittingTitle, GaugeChart, GridComponentsPlaceholder, HamburgerButton, Header, HealthDateShiftSelector, HealthStatusGrid, HealthStatusIndicator, HelpView_default as HelpView, HlsVideoPlayer, HomeView_default as HomeView, HourlyOutputChart2 as HourlyOutputChart, HourlyUptimeChart, ISTTimer_default as ISTTimer, IdleTimeVlmConfigProvider, ImprovementCenterView_default as ImprovementCenterView, InlineEditableText, InteractiveOnboardingTour, InvitationService, InvitationsTable, InviteUserDialog, KPICard, KPIDetailView_default as KPIDetailView, KPIGrid, KPIHeader, KPISection, KPI_SIGNAL_LABELS, KPIsOverviewView_default as KPIsOverviewView, LINE_1_UUID, LINE_2_UUID, LargeOutputProgressChart, LeaderboardDetailView_default as LeaderboardDetailView, Legend5 as Legend, LineAssignmentDropdown, LineChart, LineHistoryCalendar, LineMonthlyHistory, LineMonthlyPdfGenerator, LineOvertakeNotificationManager, LinePdfExportButton, LinePdfGenerator, LineWhatsAppShareButton, LinesService, LiveTimer, LoadingInline, LoadingOverlay_default as LoadingOverlay, LoadingPage_default as LoadingPage, LoadingSkeleton, LoadingState, LoginPage, LoginView_default as LoginView, Logo, MainLayout, MapGridView, MetricCard_default as MetricCard, MinimalOnboardingPopup, MobileMenuProvider, NewClipsNotification, NoWorkspaceData, OnboardingDemo, OnboardingTour, OptifyeAgentClient, OptifyeLogoLoader_default as OptifyeLogoLoader, OutputProgressChart, PageHeader, PieChart4 as PieChart, PlantHeadView_default as PlantHeadView, PlayPauseIndicator, PrefetchConfigurationError, PrefetchError, PrefetchEvents, PrefetchStatus, PrefetchTimeoutError, ProductionPlanApiError, ProductionPlanView_default as ProductionPlanView, ProfileView_default as ProfileView, ROOT_DASHBOARD_EVENT_NAMES, RecentFlowSnapshotGrid, RegistryProvider, RoleBadge, S3ClipsSupabaseService as S3ClipsService, S3Service, SENTRY_HANDLED_EVENT_SESSION_LIMIT, SENTRY_HANDLED_EVENT_WINDOW_MS, SENTRY_QUOTA_STORAGE_KEY, SKUManagementView, SOPComplianceChart, SSEChatClient, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SessionTracker, SessionTrackingContext, SessionTrackingProvider, SettingsPopup, ShiftDisplay_default as ShiftDisplay, ShiftsView_default as ShiftsView, SideNavBar, SignupWithInvitation, SilentErrorBoundary, SimpleOnboardingPopup, SingleVideoStream_default as SingleVideoStream, Skeleton, SubscriptionManager, SubscriptionManagerProvider, SupabaseProvider, SupervisorDropdown_default as SupervisorDropdown, SupervisorManagementView_default as SupervisorManagementView, SupervisorService, TargetWorkspaceGrid, TargetsView_default as TargetsView, TeamManagementView_default as TeamManagementView, ThreadSidebar, TicketHistory_default as TicketHistory, TicketHistoryService, TicketsView_default as TicketsView, TimeDisplay_default as TimeDisplay, TimePickerDropdown, Timer_default as Timer, TimezoneProvider, TimezoneService, UptimeDonutChart, UptimeLineChart, UptimeMetricCards, UserAvatar, UserManagementService, UserManagementTable, UserService, UserUsageDetailModal, UserUsageStats, VideoCard, VideoGridView, VideoPlayer, VideoPreloader, WORKSPACE_POSITIONS, WhatsAppShareButton, WorkspaceCard, WorkspaceCycleTimeMetricCards, WorkspaceDetailView_default as WorkspaceDetailView, WorkspaceDisplayNameExample, WorkspaceGrid, WorkspaceGridItem, WorkspaceHealthCard, WorkspaceHealthView_default as WorkspaceHealthView, WorkspaceHistoryCalendar, WorkspaceMetricCards, WorkspaceMetricCardsImpl, WorkspaceMonthlyDataFetcher, WorkspaceMonthlyHistory, WorkspaceMonthlyPdfGenerator, WorkspacePdfExportButton, WorkspacePdfGenerator, WorkspaceWhatsAppShareButton, actionService, addSentryBreadcrumb, aggregateKPIsFromLineMetricsRows, aggregateLineSignals, alertsService, apiUtils, areAllLinesOnSameShift, authCoreService, authOTPService, authRateLimitService, awardsService, buildDateKey, buildKPIsFromLineMetricsRow, buildKpiLineHierarchy, buildLegacyLineOvertakeEventKey, buildLineLeaderboardRows, buildLineOvertakeEventKey, buildLineSkuBreakdown, buildShiftGroupsKey, canPermissionEditProductionPlan, canRoleAccessDashboardPath, canRoleAccessTeamManagement, canRoleAssignFactories, canRoleAssignLines, canRoleChangeRole, canRoleEditProductionPlan, canRoleInviteRole, canRoleManageCompany, canRoleManageTargets, canRoleManageUsers, canRoleRemoveUser, canRoleViewClipsCost, canRoleViewUsageStats, captureHandledFrontendException, captureSentryException, captureSentryMessage, checkRateLimit2 as checkRateLimit, clearAllRateLimits2 as clearAllRateLimits, clearRateLimit2 as clearRateLimit, clearS3VideoCache, clearS3VideoFromCache, clearSentryContext, clearWorkspaceDisplayNamesCache, cn, combineLineMetricsRows, countRealSkus, createDefaultKPIs, createInvitationService, createLinesService, createSessionTracker, createStorageService, createStreamProxyHandler, createSupabaseClient, createSupervisorService, createThrottledReload, createUserManagementService, createUserService, dashboardService, deleteThread, detectLineOvertakeEvents, fetchIdleTimeReasons, fetchLineDummySkuId, fetchLineSkuCatalog, filterDataByDateKeyRange, filterRealSkuBreakdown, forceRefreshWorkspaceDisplayNames, formatAwardMonth, formatDateInZone, formatDateKeyForDisplay, formatDateTimeInZone, formatDuration2 as formatDuration, formatISTDate, formatIdleTime, formatRangeLabel, formatReasonLabel, formatRelativeTime, formatTimeInZone, fromUrlFriendlyName, getActionDisplayName, getActiveShift, getAllLineDisplayNames, getAllThreadMessages, getAllWorkspaceDisplayNamesAsync, getAllWorkspaceDisplayNamesSnapshot, getAnonClient, getAssignableRoles, getAssignmentColumnLabel, getAvailableShiftIds, getAwardBadgeType, getAwardDescription, getAwardTitle, getBrowserName, getCameraNumber, getCompanyMetricsTableName, getConfigurableShortWorkspaceDisplayName, getConfigurableWorkspaceDisplayName, getConfiguredLineIds, getCoreSessionRecordingProperties, getCoreSessionReplayUrl, getCurrentShift, getCurrentShiftForLine, getCurrentTimeInZone, getCurrentWeekFullRange, getCurrentWeekToDateRange, getDashboardHeaderTimeInZone, getDateKeyFromDate, getDateKeyFromValue, getDayDateKey, getDaysDifferenceInZone, getDefaultCameraStreamUrl, getDefaultLineId, getDefaultTabForWorkspace, getInitials, getKpiSignalLabel, getKpiSignalStatus, getLineDisplayName, getManufacturingInsights, getMetricsTablePrefix, getMonthKeyBounds, getMonthWeekRanges, getMonthlyTrendComparisonLabel, getNextUpdateInterval, getOperationalDate, getRoleAssignmentKind, getRoleDescription, getRoleLabel, getRoleMetadata, getRoleNavPaths, getS3SignedUrl, getS3VideoSrc, getShiftData, getShiftNameById, getShiftWorkDurationSeconds, getShortShiftName, getShortWorkspaceDisplayName, getShortWorkspaceDisplayNameAsync, getStoredWorkspaceMappings, getSubscriptionManager, getThreadMessages, getUniformShiftGroup, getUserThreads, getUserThreadsPaginated, getVisibleRolesForCurrentUser, getWorkspaceDisplayName, getWorkspaceDisplayNameAsync, getWorkspaceDisplayNamesMap, getWorkspaceFromUrl, getWorkspaceNavigationParams, groupLinesByShift, hasAnyShiftData, identifyCoreUser, initializeCoreMixpanel, isEfficiencyOnTrack, isFactoryScopedRole, isFullMonthRange, isIgnorableFrontendError, isLegacyConfiguration, isLoopbackHostname, isPrefetchError, isRealSku, isRecentFlowVideoGridMetricMode, isSafari, isSupervisorRole, isTransitionPeriod, isUrlPermanentlyFailed, isValidFactoryViewConfiguration, isValidLineInfoPayload, isValidPrefetchParams, isValidPrefetchStatus, isValidWorkspaceDetailedMetricsPayload, isValidWorkspaceMetricsPayload, isWipGatedVideoGridMetricMode, isWorkspaceDisplayNamesLoaded, isWorkspaceDisplayNamesLoading, lineLeaderboardService, linesService, mergeWithDefaultConfig, migrateLegacyConfiguration, normalizeActionFamily, normalizeDateKeyRange, normalizeDateKeyRangeUnbounded, normalizeRoleLevel, normalizeVideoGridMetricMode, optifyeAgentClient, parseDateKeyToDate, parseS3Uri, pickPreferredLineMetricsRow, preInitializeWorkspaceDisplayNames, preloadS3Video, preloadS3VideoUrl, preloadS3VideosUrl, preloadVideoUrl, preloadVideosUrl, productionPlanService, qualityService, realtimeService, refreshWorkspaceDisplayNames, resetCoreMixpanel, resetFailedUrl, resetSentryQuotaForTests, resetSubscriptionManager, resolveDefaultSkuId, resolveLiveSkuId, s3VideoPreloader, selectPreferredLineMetricsRow, setSentryUserContext, setSentryWorkspaceContext, shouldEnableLocalDevTestLogin, shuffleArray, simulateApiDelay, skuService, startCoreSessionRecording, stopCoreSessionRecording, storeWorkspaceMapping, streamProxyConfig, subscribeWorkspaceDisplayNames, throttledReloadDashboard, toUrlFriendlyName, trackCoreEvent, trackCorePageView, transformToChartData, updateThreadTitle, upsertWorkspaceDisplayNameInCache, useAccessControl, useActiveBreaks, useActiveLineId, useAllWorkspaceMetrics, useAnalyticsConfig, useAppTimezone, useAudioService, useAuth, useAuthConfig, useAxelNotifications, useCanSaveTargets, useClipFilter, useClipTypes, useClipTypesWithCounts, useClipsInit, useCompanyClipsCost, useCompanyFastSlowClipFiltersEnabled, useCompanyHasVlmEnabledLine, useCompanyUsersUsage, useCompanyWorkspaceHourAiSummaryEnabled, useComponentOverride, useCustomConfig, useDashboardConfig, useDashboardMetrics, useDatabaseConfig, useDateFormatter, useDateTimeConfig, useDynamicShiftConfig, useEndpointsConfig, useEntityConfig, useFactoryOverviewMetrics, useFeatureFlags, useFormatNumber, useHasLineAccess, useHideMobileHeader, useHistoricWorkspaceMetrics, useHlsStream, useHlsStreamWithCropping, useHookOverride, useHourEndTimer, useHourlyTargetAchievements, useHourlyTargetMisses, useIdleTimeClipClassifications, useIdleTimeReasons, useIdleTimeVlmConfig, useKpiTrends, useLeaderboardMetrics, useLineDetailedMetrics, useLineKPIs, useLineMetrics, useLineShiftConfig, useLineSupervisor, useLineWorkspaceMetrics, useLines, useMessages, useMetrics, useMobileMenu, useMonthlyTrend, useMultiLineShiftConfigs, useNavigation, useOperationalShiftKey, useOptionalSupabase, useOverrides, usePageOverride, usePrefetchClipCounts, useRealtimeLineMetrics, useRegistry, useSKUs, useSessionKeepAlive, useSessionTracking, useSessionTrackingContext, useShiftConfig, useShiftGroups, useShifts, useSubscriptionManager, useSubscriptionManagerSafe, useSupabase, useSupabaseClient, useSupervisorsByLineIds, useTargets, useTeamManagementPermissions, useTheme, useThemeConfig, useThreads, useTicketHistory, useTimezoneContext, useUserLineAccess, useUserUsage, useVideoConfig, useWorkspaceConfig, useWorkspaceDetailedMetrics, useWorkspaceDisplayName, useWorkspaceDisplayNames, useWorkspaceDisplayNamesMap, useWorkspaceHealthById, useWorkspaceHealthLastSeen, useWorkspaceHealthStatus, useWorkspaceHourSummary, useWorkspaceMetrics, useWorkspaceNavigation, useWorkspaceOperators, useWorkspaceUptimeTimeline, useWorkspaceVideoStreams, userService, videoPrefetchManager, videoPreloader, weeklyTopPerformerService, whatsappService, withAccessControl, withAuth, withRegistry, withTimezone, workspaceHealthService, workspaceService };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optifye/dashboard-core",
3
- "version": "6.12.41",
3
+ "version": "6.12.43",
4
4
  "description": "Reusable UI & logic for Optifye dashboard",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",