@datarecce/ui 0.1.12 → 0.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/{LineageViewContext-BPpYWJ2B.d.mts → LineageViewContext-DEa54ZNF.d.mts} +1 -1
  2. package/dist/{LineageViewContext-DqJPwm_c.d.ts → LineageViewContext-DPVC8ak8.d.ts} +1 -1
  3. package/dist/{agGridStyles-L5J6VVIU.css → agGridStyles-VYALGSJU.css} +4 -3
  4. package/dist/api.d.mts +6 -5
  5. package/dist/api.d.ts +6 -5
  6. package/dist/api.js +13 -12
  7. package/dist/api.js.map +1 -1
  8. package/dist/api.mjs +13 -12
  9. package/dist/api.mjs.map +1 -1
  10. package/dist/components.d.mts +4 -4
  11. package/dist/components.d.ts +4 -4
  12. package/dist/components.js +1217 -879
  13. package/dist/components.js.map +1 -1
  14. package/dist/components.mjs +962 -623
  15. package/dist/components.mjs.map +1 -1
  16. package/dist/hooks.d.mts +23 -3
  17. package/dist/hooks.d.ts +23 -3
  18. package/dist/hooks.js +742 -538
  19. package/dist/hooks.js.map +1 -1
  20. package/dist/hooks.mjs +587 -383
  21. package/dist/hooks.mjs.map +1 -1
  22. package/dist/index.d.mts +2 -2
  23. package/dist/index.d.ts +2 -2
  24. package/dist/index.js +1311 -962
  25. package/dist/index.js.map +1 -1
  26. package/dist/index.mjs +998 -648
  27. package/dist/index.mjs.map +1 -1
  28. package/dist/{lineagecheck-BIlm5vq1.d.ts → lineagecheck-BQaKAQzn.d.mts} +3 -3
  29. package/dist/{lineagecheck-BIlm5vq1.d.mts → lineagecheck-BQaKAQzn.d.ts} +3 -3
  30. package/dist/{style-LYNBK7ND.css → style-466WWZLM.css} +36 -8
  31. package/dist/styles-JV3V5MVO.css +42 -0
  32. package/dist/{styles-PJUYW64Y.css → styles-QUPOR3LM.css} +7 -2
  33. package/dist/types.d.mts +2 -2
  34. package/dist/types.d.ts +2 -2
  35. package/package.json +5 -5
  36. package/dist/styles-VXS6KNFS.css +0 -9
@@ -1,7 +1,7 @@
1
1
  import CssBaseline from '@mui/material/CssBaseline';
2
- import { createTheme, ThemeProvider } from '@mui/material/styles';
3
- import { useTheme } from 'next-themes';
4
- import React3, { createContext, forwardRef, useRef, useImperativeHandle, useMemo, useState, useContext, useCallback, useEffect, useLayoutEffect, Fragment as Fragment$1 } from 'react';
2
+ import { createTheme, useTheme, alpha, ThemeProvider } from '@mui/material/styles';
3
+ import { useTheme as useTheme$1 } from 'next-themes';
4
+ import React4, { createContext, forwardRef, useRef, useImperativeHandle, useMemo, useState, useContext, useCallback, useEffect, useLayoutEffect, Fragment as Fragment$1 } from 'react';
5
5
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
6
6
  import MuiAlert from '@mui/material/Alert';
7
7
  import CircularProgress4 from '@mui/material/CircularProgress';
@@ -12,11 +12,12 @@ import Box35 from '@mui/material/Box';
12
12
  import Button11 from '@mui/material/Button';
13
13
  import { ErrorBoundary as ErrorBoundary$1 } from '@sentry/react';
14
14
  import ReactSplit from 'react-split';
15
- import './styles-PJUYW64Y.css';
16
- import { useReactFlow, useNodesState, useEdgesState, ReactFlow, Background, Controls, ControlButton, Panel, MiniMap, getNodesBounds, ReactFlowProvider, getBezierPath, BaseEdge, useStore, Handle, Position } from '@xyflow/react';
15
+ import './styles-QUPOR3LM.css';
16
+ import { useReactFlow, useNodesState, useEdgesState, ReactFlow, Background, BackgroundVariant, Controls, ControlButton, Panel, MiniMap, getNodesBounds, ReactFlowProvider, getBezierPath, BaseEdge, useStore, Handle, Position } from '@xyflow/react';
17
17
  import Divider from '@mui/material/Divider';
18
18
  import dagre from '@dagrejs/dagre';
19
19
  import '@xyflow/react/dist/style.css';
20
+ import './styles-JV3V5MVO.css';
20
21
  import { QueryClient, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
21
22
  import axios, { AxiosError } from 'axios';
22
23
  import { FiCopy, FiPackage, FiInfo, FiArrowRight, FiFrown } from 'react-icons/fi';
@@ -53,11 +54,11 @@ import { VscKebabVertical, VscHistory, VscDiffAdded, VscDiffRemoved, VscDiffModi
53
54
  import { PiWarning, PiCaretDown, PiInfo, PiX, PiRepeat, PiCopy, PiDotsThreeVertical, PiCheck, PiTrashFill, PiCheckCircle, PiInfoFill, PiPencilSimple, PiTrashSimple, PiBookmarkSimple, PiNotePencil, PiCircle, PiChatText, PiPlusCircle } from 'react-icons/pi';
54
55
  import MuiTooltip from '@mui/material/Tooltip';
55
56
  import { useCopyToClipboard } from 'usehooks-ts';
56
- import './style-LYNBK7ND.css';
57
+ import './style-466WWZLM.css';
57
58
  import ListSubheader3 from '@mui/material/ListSubheader';
58
59
  import { themeQuartz, ModuleRegistry, AllCommunityModule } from 'ag-grid-community';
59
60
  import { AgGridReact } from 'ag-grid-react';
60
- import './agGridStyles-L5J6VVIU.css';
61
+ import './agGridStyles-VYALGSJU.css';
61
62
  import ButtonGroup from '@mui/material/ButtonGroup';
62
63
  import { formatDistanceToNow, format, parseISO, formatDistance } from 'date-fns';
63
64
  import saveAs from 'file-saver';
@@ -65,7 +66,6 @@ import { toCanvas } from 'html-to-image';
65
66
  import { FaRegDotCircle, FaCube, FaDatabase, FaSeedling, FaCamera, FaCheckSquare, FaRegSquare, FaExpandArrowsAlt, FaCheckCircle, FaRegCheckCircle } from 'react-icons/fa';
66
67
  import { FaChartSimple, FaGauge, FaCircleNodes, FaPlay, FaBookmark } from 'react-icons/fa6';
67
68
  import Chip2 from '@mui/material/Chip';
68
- import './styles-VXS6KNFS.css';
69
69
  import Skeleton from '@mui/material/Skeleton';
70
70
  import { RiMindMap, RiSwapLine, RiArrowUpSFill, RiArrowDownSFill, RiTerminalBoxLine } from 'react-icons/ri';
71
71
  import { BiArrowFromBottom, BiArrowToBottom } from 'react-icons/bi';
@@ -104,7 +104,6 @@ import Markdown from 'react-markdown';
104
104
  import { Prism } from 'react-syntax-highlighter';
105
105
  import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism';
106
106
  import remarkGfm from 'remark-gfm';
107
- import Breadcrumbs from '@mui/material/Breadcrumbs';
108
107
  import SimpleBar from 'simplebar-react';
109
108
  import 'simplebar/dist/simplebar.min.css';
110
109
  import Card from '@mui/material/Card';
@@ -322,35 +321,8 @@ var buttonColorVariants = [
322
321
  ...createButtonColorVariants("red", colors.red),
323
322
  ...createButtonColorVariants("rose", colors.rose),
324
323
  ...createButtonColorVariants("fuchsia", colors.fuchsia),
325
- ...createButtonColorVariants("brand", colors.brand),
326
- // Neutral uses darker shades for better visibility
327
- {
328
- props: { color: "neutral", variant: "contained" },
329
- style: {
330
- backgroundColor: colors.neutral[700],
331
- color: "#FFFFFF",
332
- "&:hover": { backgroundColor: colors.neutral[800] }
333
- }
334
- },
335
- {
336
- props: { color: "neutral", variant: "outlined" },
337
- style: {
338
- borderColor: colors.neutral[300],
339
- // Lighter border (neutral.light)
340
- color: colors.neutral[900],
341
- "&:hover": {
342
- borderColor: colors.neutral[400],
343
- backgroundColor: colors.neutral[100]
344
- }
345
- }
346
- },
347
- {
348
- props: { color: "neutral", variant: "text" },
349
- style: {
350
- color: colors.neutral[700],
351
- "&:hover": { backgroundColor: colors.neutral[100] }
352
- }
353
- }
324
+ ...createButtonColorVariants("brand", colors.brand)
325
+ // Neutral variants are handled via styleOverrides for theme-awareness
354
326
  ];
355
327
  var progressColorVariants = [
356
328
  createProgressColorVariant("iochmara", colors.iochmara),
@@ -410,11 +382,31 @@ var componentOverrides = {
410
382
  ...buttonColorVariants
411
383
  ],
412
384
  styleOverrides: {
413
- root: {
385
+ root: ({ theme, ownerState }) => ({
414
386
  textTransform: "none",
415
387
  fontWeight: 500,
416
- borderRadius: 6
417
- },
388
+ borderRadius: 6,
389
+ // Theme-aware neutral button colors
390
+ ...ownerState.color === "neutral" && ownerState.variant === "contained" && {
391
+ backgroundColor: colors.neutral[700],
392
+ color: "#FFFFFF",
393
+ "&:hover": { backgroundColor: colors.neutral[800] }
394
+ },
395
+ ...ownerState.color === "neutral" && ownerState.variant === "outlined" && {
396
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[500] : colors.neutral[300],
397
+ color: theme.palette.mode === "dark" ? colors.neutral[100] : colors.neutral[900],
398
+ "&:hover": {
399
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[400] : colors.neutral[400],
400
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[100]
401
+ }
402
+ },
403
+ ...ownerState.color === "neutral" && ownerState.variant === "text" && {
404
+ color: theme.palette.mode === "dark" ? colors.neutral[200] : colors.neutral[700],
405
+ "&:hover": {
406
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[100]
407
+ }
408
+ }
409
+ }),
418
410
  sizeSmall: {
419
411
  padding: "0.25rem 0.75rem",
420
412
  fontSize: "0.875rem"
@@ -441,11 +433,11 @@ var componentOverrides = {
441
433
  }
442
434
  },
443
435
  // Text variant (ghost in Chakra)
444
- text: {
436
+ text: ({ theme }) => ({
445
437
  "&:hover": {
446
- backgroundColor: "rgba(0, 0, 0, 0.04)"
438
+ backgroundColor: theme.palette.mode === "dark" ? "rgba(255, 255, 255, 0.08)" : "rgba(0, 0, 0, 0.04)"
447
439
  }
448
- }
440
+ })
449
441
  }
450
442
  },
451
443
  // IconButton overrides
@@ -492,9 +484,9 @@ var componentOverrides = {
492
484
  borderWidth: 2
493
485
  }
494
486
  },
495
- notchedOutline: {
496
- borderColor: colors.neutral[300]
497
- }
487
+ notchedOutline: ({ theme }) => ({
488
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[600] : colors.neutral[300]
489
+ })
498
490
  }
499
491
  },
500
492
  // Checkbox overrides
@@ -541,19 +533,19 @@ var componentOverrides = {
541
533
  },
542
534
  MuiMenuItem: {
543
535
  styleOverrides: {
544
- root: {
536
+ root: ({ theme }) => ({
545
537
  fontSize: "0.875rem",
546
538
  padding: "0.5rem 0.75rem",
547
539
  "&:hover": {
548
- backgroundColor: colors.neutral[100]
540
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[600] : colors.neutral[100]
549
541
  },
550
542
  "&.Mui-selected": {
551
- backgroundColor: colors.iochmara[50],
543
+ backgroundColor: theme.palette.mode === "dark" ? colors.iochmara[900] : colors.iochmara[50],
552
544
  "&:hover": {
553
- backgroundColor: colors.iochmara[100]
545
+ backgroundColor: theme.palette.mode === "dark" ? colors.iochmara[800] : colors.iochmara[100]
554
546
  }
555
547
  }
556
- }
548
+ })
557
549
  }
558
550
  },
559
551
  // Chip overrides (Tag in Chakra)
@@ -588,15 +580,15 @@ var componentOverrides = {
588
580
  // Tooltip overrides
589
581
  MuiTooltip: {
590
582
  styleOverrides: {
591
- tooltip: {
592
- backgroundColor: colors.neutral[800],
583
+ tooltip: ({ theme }) => ({
584
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[800],
593
585
  fontSize: "0.75rem",
594
586
  padding: "0.25rem 0.5rem",
595
587
  borderRadius: 4
596
- },
597
- arrow: {
598
- color: colors.neutral[800]
599
- }
588
+ }),
589
+ arrow: ({ theme }) => ({
590
+ color: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[800]
591
+ })
600
592
  }
601
593
  },
602
594
  // Alert overrides
@@ -605,22 +597,22 @@ var componentOverrides = {
605
597
  root: {
606
598
  borderRadius: 6
607
599
  },
608
- standardSuccess: {
609
- backgroundColor: colors.green[50],
610
- color: colors.green[800]
611
- },
612
- standardWarning: {
613
- backgroundColor: colors.amber[50],
614
- color: colors.amber[800]
615
- },
616
- standardError: {
617
- backgroundColor: colors.red[50],
618
- color: colors.red[800]
619
- },
620
- standardInfo: {
621
- backgroundColor: colors.iochmara[50],
622
- color: colors.iochmara[800]
623
- }
600
+ standardSuccess: ({ theme }) => ({
601
+ backgroundColor: theme.palette.mode === "dark" ? colors.green[900] : colors.green[50],
602
+ color: theme.palette.mode === "dark" ? colors.green[200] : colors.green[800]
603
+ }),
604
+ standardWarning: ({ theme }) => ({
605
+ backgroundColor: theme.palette.mode === "dark" ? colors.amber[900] : colors.amber[50],
606
+ color: theme.palette.mode === "dark" ? colors.amber[200] : colors.amber[800]
607
+ }),
608
+ standardError: ({ theme }) => ({
609
+ backgroundColor: theme.palette.mode === "dark" ? colors.red[900] : colors.red[50],
610
+ color: theme.palette.mode === "dark" ? colors.red[200] : colors.red[800]
611
+ }),
612
+ standardInfo: ({ theme }) => ({
613
+ backgroundColor: theme.palette.mode === "dark" ? colors.iochmara[900] : colors.iochmara[50],
614
+ color: theme.palette.mode === "dark" ? colors.iochmara[200] : colors.iochmara[800]
615
+ })
624
616
  }
625
617
  },
626
618
  // Tabs overrides
@@ -701,17 +693,17 @@ var componentOverrides = {
701
693
  // Divider overrides
702
694
  MuiDivider: {
703
695
  styleOverrides: {
704
- root: {
705
- borderColor: colors.neutral[200]
706
- }
696
+ root: ({ theme }) => ({
697
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[200]
698
+ })
707
699
  }
708
700
  },
709
701
  // Breadcrumbs overrides
710
702
  MuiBreadcrumbs: {
711
703
  styleOverrides: {
712
- separator: {
713
- color: colors.neutral[400]
714
- }
704
+ separator: ({ theme }) => ({
705
+ color: theme.palette.mode === "dark" ? colors.neutral[500] : colors.neutral[400]
706
+ })
715
707
  }
716
708
  }
717
709
  };
@@ -942,7 +934,7 @@ function MuiProvider({
942
934
  forcedTheme,
943
935
  enableCssBaseline = false
944
936
  }) {
945
- const { resolvedTheme } = useTheme();
937
+ const { resolvedTheme } = useTheme$1();
946
938
  const theme = useMemo(() => {
947
939
  const mode = forcedTheme ?? resolvedTheme;
948
940
  return mode === "dark" ? darkTheme : lightTheme;
@@ -1141,8 +1133,9 @@ var Fallback = (errorData) => {
1141
1133
  display: "flex",
1142
1134
  flexDirection: "column",
1143
1135
  justifyContent: "flex-start",
1144
- bgcolor: "white",
1145
- border: "solid lightgray 1px",
1136
+ bgcolor: "background.paper",
1137
+ border: "solid 1px",
1138
+ borderColor: "divider",
1146
1139
  minHeight: "200px"
1147
1140
  },
1148
1141
  children: [
@@ -1672,6 +1665,17 @@ function formatDuration(totalSeconds, style = "verbose") {
1672
1665
  }
1673
1666
  return formatVerbose(components);
1674
1667
  }
1668
+ var ApiConfigContext = createContext(null);
1669
+ var defaultApiConfigContext = {
1670
+ apiPrefix: "",
1671
+ authToken: void 0,
1672
+ baseUrl: void 0,
1673
+ apiClient: axios.create({ baseURL: PUBLIC_API_URL })
1674
+ };
1675
+ function useApiConfig() {
1676
+ const context = useContext(ApiConfigContext);
1677
+ return context ?? defaultApiConfigContext;
1678
+ }
1675
1679
 
1676
1680
  // recce-source/js/src/lib/api/cacheKeys.ts
1677
1681
  var cacheKeys = {
@@ -1689,11 +1693,20 @@ var cacheKeys = {
1689
1693
  };
1690
1694
 
1691
1695
  // recce-source/js/src/lib/api/instanceInfo.ts
1692
- async function getRecceInstanceInfo() {
1693
- return (await axiosClient.get(
1696
+ async function getRecceInstanceInfo(client = axiosClient) {
1697
+ return (await client.get(
1694
1698
  "/api/instance-info"
1695
1699
  )).data;
1696
1700
  }
1701
+
1702
+ // recce-source/js/src/lib/hooks/useRecceInstanceInfo.tsx
1703
+ var useRecceInstanceInfo = () => {
1704
+ const { apiClient } = useApiConfig();
1705
+ return useQuery({
1706
+ queryKey: cacheKeys.instanceInfo(),
1707
+ queryFn: () => getRecceInstanceInfo(apiClient)
1708
+ });
1709
+ };
1697
1710
  var defaultFeatureToggles = {
1698
1711
  mode: null,
1699
1712
  disableSaveToFile: false,
@@ -1717,8 +1730,8 @@ var InstanceInfo = createContext(defaultValue);
1717
1730
  var useRecceInstanceContext = () => useContext(InstanceInfo);
1718
1731
 
1719
1732
  // recce-source/js/src/lib/api/flag.ts
1720
- async function getServerFlag() {
1721
- return (await axiosClient.get("/api/flag")).data;
1733
+ async function getServerFlag(client = axiosClient) {
1734
+ return (await client.get("/api/flag")).data;
1722
1735
  }
1723
1736
  async function getModelInfo(model) {
1724
1737
  return (await axiosClient.get(
@@ -1791,9 +1804,10 @@ function useIdleTimeout() {
1791
1804
  return context;
1792
1805
  }
1793
1806
  var useRecceServerFlag = () => {
1807
+ const { apiClient } = useApiConfig();
1794
1808
  return useQuery({
1795
1809
  queryKey: cacheKeys.flag(),
1796
- queryFn: getServerFlag
1810
+ queryFn: () => getServerFlag(apiClient)
1797
1811
  });
1798
1812
  };
1799
1813
  var defaultLineageGraphsContext = {
@@ -2079,8 +2093,9 @@ var RunModal = ({
2079
2093
  sx: {
2080
2094
  p: 0,
2081
2095
  overflow: "auto",
2082
- borderTop: "1px solid lightgray",
2083
- borderBottom: "1px solid lightgray"
2096
+ borderTop: "1px solid",
2097
+ borderBottom: "1px solid",
2098
+ borderColor: "divider"
2084
2099
  },
2085
2100
  children: /* @__PURE__ */ jsx(Box35, { sx: { contain: "layout" }, children: RunForm && /* @__PURE__ */ jsx(
2086
2101
  RunForm,
@@ -2381,10 +2396,56 @@ function formatAsAbbreviatedNumber(input) {
2381
2396
  }).format(input);
2382
2397
  }
2383
2398
  }
2399
+
2400
+ // recce-source/js/src/components/charts/chartTheme.ts
2401
+ function getChartThemeColors(isDark) {
2402
+ return {
2403
+ gridColor: isDark ? "#4b5563" : "#d1d5db",
2404
+ textColor: isDark ? "#e5e7eb" : "#374151",
2405
+ borderColor: isDark ? "#6b7280" : "#9ca3af",
2406
+ tooltipBackgroundColor: isDark ? "#1f2937" : "#ffffff",
2407
+ tooltipTextColor: isDark ? "#e5e7eb" : "#111827"
2408
+ };
2409
+ }
2410
+ function getThemedPluginOptions(isDark) {
2411
+ const colors2 = getChartThemeColors(isDark);
2412
+ return {
2413
+ legend: {
2414
+ labels: {
2415
+ color: colors2.textColor
2416
+ }
2417
+ },
2418
+ title: {
2419
+ color: colors2.textColor
2420
+ },
2421
+ tooltip: {
2422
+ backgroundColor: colors2.tooltipBackgroundColor,
2423
+ titleColor: colors2.tooltipTextColor,
2424
+ bodyColor: colors2.tooltipTextColor,
2425
+ borderColor: colors2.borderColor,
2426
+ borderWidth: 1
2427
+ }
2428
+ };
2429
+ }
2384
2430
  var CURRENT_BAR_COLOR = "#63B3ED";
2385
2431
  var BASE_BAR_COLOR = "#F6AD55";
2386
2432
  var CURRENT_BAR_COLOR_WITH_ALPHA = `${CURRENT_BAR_COLOR}A5`;
2387
2433
  var BASE_BAR_COLOR_WITH_ALPHA = `${BASE_BAR_COLOR}A5`;
2434
+ var CURRENT_BAR_COLOR_DARK = "#90CDF4";
2435
+ var BASE_BAR_COLOR_DARK = "#FBD38D";
2436
+ var CURRENT_BAR_COLOR_DARK_WITH_ALPHA = `${CURRENT_BAR_COLOR_DARK}A5`;
2437
+ var BASE_BAR_COLOR_DARK_WITH_ALPHA = `${BASE_BAR_COLOR_DARK}A5`;
2438
+ var INFO_VAL_COLOR = "#63B3ED";
2439
+ var INFO_VAL_COLOR_DARK = "#90CDF4";
2440
+ function getBarColors(isDark) {
2441
+ return {
2442
+ current: isDark ? CURRENT_BAR_COLOR_DARK : CURRENT_BAR_COLOR,
2443
+ base: isDark ? BASE_BAR_COLOR_DARK : BASE_BAR_COLOR,
2444
+ currentWithAlpha: isDark ? CURRENT_BAR_COLOR_DARK_WITH_ALPHA : CURRENT_BAR_COLOR_WITH_ALPHA,
2445
+ baseWithAlpha: isDark ? BASE_BAR_COLOR_DARK_WITH_ALPHA : BASE_BAR_COLOR_WITH_ALPHA,
2446
+ info: isDark ? INFO_VAL_COLOR_DARK : INFO_VAL_COLOR
2447
+ };
2448
+ }
2388
2449
  function SquareIcon({ color }) {
2389
2450
  return /* @__PURE__ */ jsx(
2390
2451
  Box35,
@@ -2408,6 +2469,8 @@ function HistogramChart({
2408
2469
  hideAxis = false,
2409
2470
  animation = false
2410
2471
  }) {
2472
+ const theme = useTheme();
2473
+ const isDark = theme.palette.mode === "dark";
2411
2474
  Chart.register(
2412
2475
  BarElement,
2413
2476
  TimeSeriesScale,
@@ -2417,8 +2480,10 @@ function HistogramChart({
2417
2480
  Legend,
2418
2481
  Tooltip
2419
2482
  );
2420
- const chartOptions = getHistogramChartOptions(data, hideAxis, { animation });
2421
- const chartData = getHistogramChartData(data);
2483
+ const chartOptions = getHistogramChartOptions(data, hideAxis, isDark, {
2484
+ animation
2485
+ });
2486
+ const chartData = getHistogramChartData(data, isDark);
2422
2487
  return /* @__PURE__ */ jsx(Chart$1, { type: "bar", options: chartOptions, data: chartData, plugins: [] });
2423
2488
  }
2424
2489
  function getHistogramChartDataset(type, binEdges, label, color, data) {
@@ -2439,53 +2504,65 @@ function getHistogramChartDataset(type, binEdges, label, color, data) {
2439
2504
  xAxisID: "x"
2440
2505
  };
2441
2506
  }
2442
- function getHistogramChartData(data) {
2507
+ function getHistogramChartData(data, isDark = false) {
2443
2508
  const { datasets, type, binEdges } = data;
2444
2509
  const [base, current] = datasets;
2510
+ const barColors = getBarColors(isDark);
2445
2511
  const currentDataset = getHistogramChartDataset(
2446
2512
  type,
2447
2513
  binEdges,
2448
2514
  "Current",
2449
- CURRENT_BAR_COLOR_WITH_ALPHA,
2515
+ barColors.currentWithAlpha,
2450
2516
  current
2451
2517
  );
2452
2518
  const baseDataset = getHistogramChartDataset(
2453
2519
  type,
2454
2520
  binEdges,
2455
2521
  "Base",
2456
- BASE_BAR_COLOR_WITH_ALPHA,
2522
+ barColors.baseWithAlpha,
2457
2523
  base
2458
2524
  );
2459
- const newLabels = binEdges.map((v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
2525
+ const newLabels = binEdges.map((_v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
2460
2526
  return {
2461
2527
  labels: newLabels,
2462
2528
  datasets: [currentDataset, baseDataset]
2463
2529
  };
2464
2530
  }
2465
- function getHistogramChartOptions(data, hideAxis = false, { ...configOverrides } = {}) {
2531
+ function getHistogramChartOptions(data, hideAxis = false, isDark = false, { ...configOverrides } = {}) {
2466
2532
  const { title, datasets, type, samples = 0, binEdges } = data;
2467
2533
  const [base, current] = datasets;
2468
2534
  const isDatetime = type === "datetime";
2535
+ const themeColors = getChartThemeColors(isDark);
2536
+ const themedPlugins = getThemedPluginOptions(isDark);
2469
2537
  return {
2470
2538
  responsive: true,
2471
2539
  maintainAspectRatio: false,
2472
2540
  plugins: {
2473
2541
  legend: {
2474
- reverse: true
2542
+ reverse: true,
2543
+ labels: {
2544
+ color: themeColors.textColor
2545
+ }
2475
2546
  },
2476
2547
  title: {
2477
2548
  display: true,
2478
2549
  text: title,
2479
2550
  font: {
2480
2551
  size: 20
2481
- }
2552
+ },
2553
+ color: themeColors.textColor
2482
2554
  },
2483
2555
  tooltip: {
2484
2556
  mode: "index",
2485
2557
  // position: 'nearest',
2486
2558
  intersect: false,
2559
+ backgroundColor: themedPlugins.tooltip.backgroundColor,
2560
+ titleColor: themedPlugins.tooltip.titleColor,
2561
+ bodyColor: themedPlugins.tooltip.bodyColor,
2562
+ borderColor: themedPlugins.tooltip.borderColor,
2563
+ borderWidth: themedPlugins.tooltip.borderWidth,
2487
2564
  callbacks: {
2488
- title([{ dataIndex, datasetIndex }]) {
2565
+ title([{ dataIndex }]) {
2489
2566
  const result = formatDisplayedBinItem(binEdges, dataIndex);
2490
2567
  const prefix3 = isDatetime ? DATE_RANGE : type === "string" ? TEXTLENGTH : VALUE_RANGE;
2491
2568
  return `${prefix3}
@@ -2502,15 +2579,16 @@ ${result}`;
2502
2579
  }
2503
2580
  }
2504
2581
  },
2505
- scales: getScales(data, hideAxis),
2582
+ scales: getScales(data, hideAxis, isDark),
2506
2583
  ...configOverrides
2507
2584
  };
2508
2585
  }
2509
- function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = false) {
2586
+ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = false, isDark = false) {
2510
2587
  const isDatetime = type === "datetime";
2511
2588
  const [base, current] = datasets;
2512
2589
  const maxCount = Math.max(...current.counts, ...base.counts);
2513
- const newLabels = binEdges.map((v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
2590
+ const themeColors = getChartThemeColors(isDark);
2591
+ const newLabels = binEdges.map((_v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
2514
2592
  const xScaleDate = {
2515
2593
  display: !hideAxis,
2516
2594
  type: "timeseries",
@@ -2527,7 +2605,8 @@ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = fa
2527
2605
  ticks: {
2528
2606
  minRotation: 30,
2529
2607
  maxRotation: 30,
2530
- maxTicksLimit: 8
2608
+ maxTicksLimit: 8,
2609
+ color: themeColors.textColor
2531
2610
  }
2532
2611
  };
2533
2612
  const xScaleCategory = {
@@ -2536,9 +2615,10 @@ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = fa
2536
2615
  //Linear doesn't understand bins!
2537
2616
  grid: { display: false },
2538
2617
  ticks: {
2539
- callback(val, index) {
2618
+ callback(_val, index) {
2540
2619
  return newLabels[index];
2541
- }
2620
+ },
2621
+ color: themeColors.textColor
2542
2622
  },
2543
2623
  stacked: true
2544
2624
  };
@@ -2548,12 +2628,13 @@ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = fa
2548
2628
  type: "linear",
2549
2629
  max: maxCount,
2550
2630
  //NOTE: do not add `min` since if they are equal nothing gets displayed sometimes
2551
- border: { dash: [2, 2] },
2631
+ border: { dash: [2, 2], color: themeColors.borderColor },
2552
2632
  grid: {
2553
- color: "lightgray"
2633
+ color: themeColors.gridColor
2554
2634
  },
2555
2635
  ticks: {
2556
2636
  maxTicksLimit: 8,
2637
+ color: themeColors.textColor,
2557
2638
  callback: function(val) {
2558
2639
  return formatAsAbbreviatedNumber(val);
2559
2640
  }
@@ -2570,6 +2651,8 @@ function formatDisplayedBinItem(binEdges, currentIndex) {
2570
2651
  return `${formattedStart} - ${formattedEnd}`;
2571
2652
  }
2572
2653
  function _HistogramDiffResultView({ run }, ref) {
2654
+ const theme = useTheme();
2655
+ const isDark = theme.palette.mode === "dark";
2573
2656
  if (!isHistogramDiffRun(run)) {
2574
2657
  throw new Error("Run type must be histogram_diff");
2575
2658
  }
@@ -2582,24 +2665,32 @@ function _HistogramDiffResultView({ run }, ref) {
2582
2665
  if (!base || !current) {
2583
2666
  return /* @__PURE__ */ jsx("div", { children: "Loading..." });
2584
2667
  }
2585
- return /* @__PURE__ */ jsx(Box35, { sx: { display: "flex", flexDirection: "column", height: "100%" }, children: /* @__PURE__ */ jsx(ScreenshotBox, { ref, height: "100%", children: /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flexDirection: "row" }, children: [
2586
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
2587
- /* @__PURE__ */ jsx(Box35, { sx: { width: "80%", height: "35vh", m: 4 }, children: /* @__PURE__ */ jsx(
2588
- HistogramChart,
2589
- {
2590
- data: {
2591
- title: `Model ${params.model}.${params.column_name}`,
2592
- type: run.params?.column_type ?? "",
2593
- datasets: [base, current],
2594
- min,
2595
- max,
2596
- samples: base.total,
2597
- binEdges
2598
- }
2599
- }
2600
- ) }),
2601
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
2602
- ] }) }) });
2668
+ return /* @__PURE__ */ jsx(Box35, { sx: { display: "flex", flexDirection: "column", height: "100%" }, children: /* @__PURE__ */ jsx(
2669
+ ScreenshotBox,
2670
+ {
2671
+ ref,
2672
+ height: "100%",
2673
+ backgroundColor: isDark ? "#1f2937" : "white",
2674
+ children: /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flexDirection: "row" }, children: [
2675
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
2676
+ /* @__PURE__ */ jsx(Box35, { sx: { width: "80%", height: "35vh", m: 4 }, children: /* @__PURE__ */ jsx(
2677
+ HistogramChart,
2678
+ {
2679
+ data: {
2680
+ title: `Model ${params.model}.${params.column_name}`,
2681
+ type: run.params?.column_type ?? "",
2682
+ datasets: [base, current],
2683
+ min,
2684
+ max,
2685
+ samples: base.total,
2686
+ binEdges
2687
+ }
2688
+ }
2689
+ ) }),
2690
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
2691
+ ] })
2692
+ }
2693
+ ) });
2603
2694
  }
2604
2695
  var HistogramDiffResultView = forwardRef(_HistogramDiffResultView);
2605
2696
  function ProfileDiffForm({
@@ -3324,8 +3415,8 @@ function getHeaderCellClass(columnStatus) {
3324
3415
  }
3325
3416
  var defaultRenderCell = (params) => {
3326
3417
  const colDef = params.colDef;
3327
- const columnType = colDef?.columnType;
3328
- const columnRenderMode = colDef?.columnRenderMode;
3418
+ const columnType = colDef?.context?.columnType;
3419
+ const columnRenderMode = colDef?.context?.columnRenderMode;
3329
3420
  const fieldName = colDef?.field ?? "";
3330
3421
  if (!params.data) {
3331
3422
  return null;
@@ -3345,6 +3436,31 @@ var defaultRenderCell = (params) => {
3345
3436
  }
3346
3437
  );
3347
3438
  };
3439
+
3440
+ // recce-source/js/src/lib/hooks/useClipBoardToast.tsx
3441
+ function useClipBoardToast() {
3442
+ function successToast(message) {
3443
+ toaster.create({
3444
+ description: message,
3445
+ type: "info",
3446
+ duration: 5e3,
3447
+ closable: true
3448
+ });
3449
+ }
3450
+ function failToast(title, error) {
3451
+ toaster.create({
3452
+ title,
3453
+ description: String(error),
3454
+ type: "error",
3455
+ duration: 5e3,
3456
+ closable: true
3457
+ });
3458
+ }
3459
+ return {
3460
+ successToast,
3461
+ failToast
3462
+ };
3463
+ }
3348
3464
  var DiffText = ({
3349
3465
  value,
3350
3466
  colorPalette,
@@ -3410,39 +3526,38 @@ function CopyControl({
3410
3526
  grayOut,
3411
3527
  isHovered
3412
3528
  }) {
3413
- const [copiedText, copyToClipboard] = useCopyToClipboard();
3414
- const hasCopiedText = Boolean(copiedText);
3415
- if (noCopy || grayOut) {
3529
+ const [, copyToClipboard] = useCopyToClipboard();
3530
+ const { successToast } = useClipBoardToast();
3531
+ if (noCopy || grayOut || !isHovered) {
3416
3532
  return /* @__PURE__ */ jsx(Fragment, {});
3417
3533
  }
3418
- if (hasCopiedText) {
3419
- return /* @__PURE__ */ jsx(Fragment, { children: "Copied" });
3420
- }
3421
- if (!isHovered) {
3422
- return /* @__PURE__ */ jsx(Fragment, {});
3423
- }
3424
- return /* @__PURE__ */ jsx(
3534
+ const handleCopy = () => {
3535
+ copyToClipboard(value);
3536
+ successToast(`${value} copied`);
3537
+ };
3538
+ return /* @__PURE__ */ jsx(MuiTooltip, { title: "Copy Value", children: /* @__PURE__ */ jsx(
3425
3539
  IconButton2,
3426
3540
  {
3427
3541
  "aria-label": "Copy",
3428
3542
  size: "small",
3429
- onClick: () => copyToClipboard(value),
3543
+ onClick: handleCopy,
3430
3544
  sx: {
3431
- minWidth: "10px",
3432
- height: "10px",
3545
+ minWidth: "0.625rem",
3546
+ height: "0.625rem",
3433
3547
  display: "flex",
3434
3548
  alignItems: "center",
3435
3549
  justifyContent: "center",
3436
- p: 0
3550
+ p: 0,
3551
+ color: "inherit"
3437
3552
  },
3438
- children: /* @__PURE__ */ jsx(PiCopy, { size: "10px" })
3553
+ children: /* @__PURE__ */ jsx(PiCopy, { size: "0.625rem" })
3439
3554
  }
3440
- );
3555
+ ) });
3441
3556
  }
3442
3557
  var inlineRenderCell = (params) => {
3443
3558
  const colDef = params.colDef;
3444
- const columnType = colDef?.columnType;
3445
- const columnRenderMode = colDef?.columnRenderMode;
3559
+ const columnType = colDef?.context?.columnType;
3560
+ const columnRenderMode = colDef?.context?.columnRenderMode;
3446
3561
  const columnKey = colDef?.field ?? "";
3447
3562
  if (!params.data) {
3448
3563
  return null;
@@ -3627,8 +3742,7 @@ function toDiffColumn(config) {
3627
3742
  headerClass: headerCellClass,
3628
3743
  headerComponent,
3629
3744
  cellRenderer: inlineRenderCell,
3630
- columnType,
3631
- columnRenderMode
3745
+ context: { columnType, columnRenderMode }
3632
3746
  };
3633
3747
  }
3634
3748
  const cellClassBase = createCellClassBase(name, columnStatus);
@@ -3637,8 +3751,7 @@ function toDiffColumn(config) {
3637
3751
  headerName: name,
3638
3752
  headerClass: headerCellClass,
3639
3753
  headerGroupComponent: headerComponent,
3640
- columnType,
3641
- columnRenderMode,
3754
+ context: { columnType, columnRenderMode },
3642
3755
  children: [
3643
3756
  {
3644
3757
  field: `base__${name}`,
@@ -3646,8 +3759,7 @@ function toDiffColumn(config) {
3646
3759
  headerClass: headerCellClass,
3647
3760
  cellClass: cellClassBase,
3648
3761
  cellRenderer: defaultRenderCell,
3649
- columnType,
3650
- columnRenderMode
3762
+ context: { columnType, columnRenderMode }
3651
3763
  },
3652
3764
  {
3653
3765
  field: `current__${name}`,
@@ -3655,8 +3767,7 @@ function toDiffColumn(config) {
3655
3767
  headerClass: headerCellClass,
3656
3768
  cellClass: cellClassCurrent,
3657
3769
  cellRenderer: defaultRenderCell,
3658
- columnType,
3659
- columnRenderMode
3770
+ context: { columnType, columnRenderMode }
3660
3771
  }
3661
3772
  ]
3662
3773
  };
@@ -3694,8 +3805,7 @@ function createPrimaryKeyColumn(config, headerProps) {
3694
3805
  return void 0;
3695
3806
  },
3696
3807
  cellRenderer: defaultRenderCell,
3697
- columnType,
3698
- columnRenderMode
3808
+ context: { columnType, columnRenderMode }
3699
3809
  };
3700
3810
  }
3701
3811
  function createDiffColumn(config, displayMode, headerProps, baseTitle, currentTitle) {
@@ -3884,8 +3994,7 @@ function createPrimaryKeyColumn2(config, headerProps) {
3884
3994
  ),
3885
3995
  pinned: "left",
3886
3996
  cellRenderer: defaultRenderCell,
3887
- columnType,
3888
- columnRenderMode
3997
+ context: { columnType, columnRenderMode }
3889
3998
  };
3890
3999
  }
3891
4000
  function createRegularColumn(config, headerProps) {
@@ -3904,8 +4013,7 @@ function createRegularColumn(config, headerProps) {
3904
4013
  }
3905
4014
  ),
3906
4015
  cellRenderer: defaultRenderCell,
3907
- columnType,
3908
- columnRenderMode
4016
+ context: { columnType, columnRenderMode }
3909
4017
  };
3910
4018
  }
3911
4019
  function buildSimpleColumnDefinitions(config) {
@@ -4628,7 +4736,7 @@ function renderIndexCell(params) {
4628
4736
  const value = isRemoved ? baseIndex !== void 0 ? baseIndex : "-" : currentIndex !== void 0 ? currentIndex : "-";
4629
4737
  return /* @__PURE__ */ jsx("span", { children: value });
4630
4738
  }
4631
- var MemoizedRenderIndexCell = React3.memo(renderIndexCell);
4739
+ var MemoizedRenderIndexCell = React4.memo(renderIndexCell);
4632
4740
  MemoizedRenderIndexCell.displayName = "MemoizedRenderIndexCell";
4633
4741
  function renderTypeCell(params) {
4634
4742
  if (!params.data) {
@@ -4661,7 +4769,7 @@ function renderTypeCell(params) {
4661
4769
  }
4662
4770
  return /* @__PURE__ */ jsx("span", { children: isRemoved ? baseType : currentType });
4663
4771
  }
4664
- var MemoizedRenderTypeCell = React3.memo(renderTypeCell);
4772
+ var MemoizedRenderTypeCell = React4.memo(renderTypeCell);
4665
4773
  MemoizedRenderTypeCell.displayName = "MemoizedRenderTypeCell";
4666
4774
 
4667
4775
  // recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.ts
@@ -5220,7 +5328,7 @@ var recceGridThemeLight = themeQuartz.withParams({
5220
5328
  headerFontWeight: 700,
5221
5329
  cellHorizontalPadding: 8
5222
5330
  });
5223
- themeQuartz.withParams({
5331
+ var recceGridThemeDark = themeQuartz.withParams({
5224
5332
  backgroundColor: "#1e1e1e",
5225
5333
  headerBackgroundColor: "#252526",
5226
5334
  rowHoverColor: "#1e1e1e",
@@ -5276,7 +5384,11 @@ function _ScreenshotDataGrid({
5276
5384
  }),
5277
5385
  []
5278
5386
  );
5279
- const theme = useMemo(() => recceGridThemeLight, []);
5387
+ const muiTheme = useTheme();
5388
+ const gridTheme = useMemo(
5389
+ () => muiTheme.palette.mode === "dark" ? recceGridThemeDark : recceGridThemeLight,
5390
+ [muiTheme.palette.mode]
5391
+ );
5280
5392
  const resolvedColumnDefs = columnDefs ?? columns;
5281
5393
  const resolvedRowData = rowData ?? rows;
5282
5394
  const resolvedDefaultColDef = defaultColDef ?? defaultColumnOptions;
@@ -5338,18 +5450,18 @@ function _ScreenshotDataGrid({
5338
5450
  "& .ag-header-cell": {
5339
5451
  borderRight: "1px solid var(--ag-border-color)"
5340
5452
  },
5341
- // Diff cell styling
5453
+ // Diff cell styling - theme-aware colors
5342
5454
  "& .diff-cell-added": {
5343
- backgroundColor: "#cefece !important",
5344
- color: "black"
5455
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#1a4d1a !important" : "#cefece !important",
5456
+ color: muiTheme.palette.text.primary
5345
5457
  },
5346
5458
  "& .diff-cell-removed": {
5347
- backgroundColor: "#ffc5c5 !important",
5348
- color: "black"
5459
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#5c1f1f !important" : "#ffc5c5 !important",
5460
+ color: muiTheme.palette.text.primary
5349
5461
  },
5350
5462
  "& .diff-cell-modified": {
5351
- backgroundColor: "#ffc5c5 !important",
5352
- color: "black"
5463
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#5c1f1f !important" : "#ffc5c5 !important",
5464
+ color: muiTheme.palette.text.primary
5353
5465
  },
5354
5466
  // Diff header styling
5355
5467
  "& .diff-header-added": {
@@ -5362,18 +5474,18 @@ function _ScreenshotDataGrid({
5362
5474
  },
5363
5475
  // Index column styling
5364
5476
  "& .index-column": {
5365
- color: "rgb(128, 128, 128)",
5477
+ color: muiTheme.palette.text.secondary,
5366
5478
  textAlign: "right"
5367
5479
  },
5368
5480
  // Frozen/pinned column styling
5369
5481
  "& .ag-pinned-left-cols-container .ag-cell": {
5370
- backgroundColor: "#f5f5f5"
5482
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#2d2d2d" : "#f5f5f5"
5371
5483
  }
5372
5484
  },
5373
5485
  children: /* @__PURE__ */ jsx(
5374
5486
  AgGridReact,
5375
5487
  {
5376
- theme,
5488
+ theme: gridTheme,
5377
5489
  columnDefs: resolvedColumnDefs,
5378
5490
  rowData: resolvedRowData,
5379
5491
  getRowId: resolvedGetRowId,
@@ -5475,17 +5587,22 @@ var RunToolbar = ({
5475
5587
  warnings,
5476
5588
  children
5477
5589
  }) => {
5590
+ const theme = useTheme();
5591
+ const isDark = theme.palette.mode === "dark";
5592
+ const hasWarnings = warnings && warnings.length > 0;
5478
5593
  return /* @__PURE__ */ jsxs(
5479
5594
  Box35,
5480
5595
  {
5481
5596
  sx: {
5482
5597
  display: "flex",
5483
- borderBottom: "1px solid lightgray",
5598
+ borderBottom: "1px solid",
5599
+ borderColor: "divider",
5484
5600
  justifyContent: "flex-end",
5485
5601
  gap: "5px",
5486
5602
  alignItems: "center",
5487
5603
  px: "10px",
5488
- bgcolor: warnings && warnings.length > 0 ? "amber.100" : "inherit"
5604
+ bgcolor: hasWarnings ? isDark ? colors.amber[900] : colors.amber[100] : "inherit",
5605
+ color: hasWarnings ? isDark ? colors.amber[200] : colors.amber[800] : "inherit"
5489
5606
  },
5490
5607
  children: [
5491
5608
  /* @__PURE__ */ jsx(
@@ -5498,8 +5615,13 @@ var RunToolbar = ({
5498
5615
  gap: 0
5499
5616
  },
5500
5617
  children: warnings?.map((warning) => /* @__PURE__ */ jsxs(Box35, { children: [
5501
- /* @__PURE__ */ jsx(PiWarning, { color: "amber.600" }),
5502
- " ",
5618
+ /* @__PURE__ */ jsx(
5619
+ PiWarning,
5620
+ {
5621
+ color: isDark ? colors.amber[400] : colors.amber[600],
5622
+ style: { verticalAlign: "middle", marginRight: 4 }
5623
+ }
5624
+ ),
5503
5625
  warning
5504
5626
  ] }, _3.uniqueId(`-${warning}`)))
5505
5627
  }
@@ -5511,6 +5633,8 @@ var RunToolbar = ({
5511
5633
  );
5512
5634
  };
5513
5635
  var PrivateProfileDiffResultView = ({ run, viewOptions, onViewOptionsChanged }, ref) => {
5636
+ const theme = useTheme();
5637
+ const isDark = theme.palette.mode === "dark";
5514
5638
  if (!isProfileDiffRun(run)) {
5515
5639
  throw new Error("Only run type profile_diff is supported");
5516
5640
  }
@@ -5586,7 +5710,7 @@ var PrivateProfileDiffResultView = ({ run, viewOptions, onViewOptionsChanged },
5586
5710
  sx: {
5587
5711
  display: "flex",
5588
5712
  flexDirection: "column",
5589
- bgcolor: "rgb(249, 249, 249)",
5713
+ bgcolor: isDark ? "grey.900" : "grey.50",
5590
5714
  height: "100%"
5591
5715
  },
5592
5716
  children: [
@@ -5620,6 +5744,8 @@ var PrivateProfileDiffResultView = ({ run, viewOptions, onViewOptionsChanged },
5620
5744
  );
5621
5745
  };
5622
5746
  var PrivateProfileResultView = ({ run, viewOptions, onViewOptionsChanged }, ref) => {
5747
+ const theme = useTheme();
5748
+ const isDark = theme.palette.mode === "dark";
5623
5749
  if (!isProfileRun(run)) {
5624
5750
  throw new Error("Only run type profile_diff is supported");
5625
5751
  }
@@ -5689,7 +5815,7 @@ var PrivateProfileResultView = ({ run, viewOptions, onViewOptionsChanged }, ref)
5689
5815
  sx: {
5690
5816
  display: "flex",
5691
5817
  flexDirection: "column",
5692
- bgcolor: "rgb(249, 249, 249)",
5818
+ bgcolor: isDark ? "grey.900" : "grey.50",
5693
5819
  height: "100%"
5694
5820
  },
5695
5821
  children: /* @__PURE__ */ jsx(
@@ -5740,6 +5866,8 @@ var PrivateQueryDiffResultView = ({
5740
5866
  baseTitle,
5741
5867
  currentTitle
5742
5868
  }, ref) => {
5869
+ const theme = useTheme();
5870
+ const isDark = theme.palette.mode === "dark";
5743
5871
  const primaryKeys = useMemo(
5744
5872
  () => viewOptions?.primary_keys ?? [],
5745
5873
  [viewOptions]
@@ -5854,7 +5982,7 @@ var PrivateQueryDiffResultView = ({
5854
5982
  sx: {
5855
5983
  display: "flex",
5856
5984
  flexDirection: "column",
5857
- bgcolor: "rgb(249, 249, 249)",
5985
+ bgcolor: isDark ? "grey.900" : "grey.50",
5858
5986
  height: "100%"
5859
5987
  },
5860
5988
  children: [
@@ -5927,6 +6055,8 @@ var PrivateQueryDiffJoinResultView = ({
5927
6055
  baseTitle,
5928
6056
  currentTitle
5929
6057
  }, ref) => {
6058
+ const theme = useTheme();
6059
+ const isDark = theme.palette.mode === "dark";
5930
6060
  if (run.type !== "query_diff") {
5931
6061
  throw new Error("QueryDiffResult view should be rendered as query_diff");
5932
6062
  }
@@ -6015,7 +6145,7 @@ var PrivateQueryDiffJoinResultView = ({
6015
6145
  sx: {
6016
6146
  display: "flex",
6017
6147
  flexDirection: "column",
6018
- bgcolor: "rgb(249, 249, 249)",
6148
+ bgcolor: isDark ? "grey.900" : "grey.50",
6019
6149
  height: "100%"
6020
6150
  },
6021
6151
  children: [
@@ -6050,7 +6180,7 @@ var PrivateQueryDiffJoinResultView = ({
6050
6180
  sx: {
6051
6181
  display: "flex",
6052
6182
  flexDirection: "column",
6053
- bgcolor: "rgb(249, 249, 249)",
6183
+ bgcolor: isDark ? "grey.900" : "grey.50",
6054
6184
  height: "100%"
6055
6185
  },
6056
6186
  children: [
@@ -6157,6 +6287,8 @@ var PrivateQueryResultView = ({
6157
6287
  onViewOptionsChanged,
6158
6288
  onAddToChecklist
6159
6289
  }, ref) => {
6290
+ const theme = useTheme();
6291
+ const isDark = theme.palette.mode === "dark";
6160
6292
  if (!(isQueryRun(run) || isQueryBaseRun(run))) {
6161
6293
  throw new Error("run type must be query");
6162
6294
  }
@@ -6220,25 +6352,27 @@ var PrivateQueryResultView = ({
6220
6352
  const limit = dataframe ? dataframe.limit ?? 0 : 0;
6221
6353
  const warning = limit > 0 && dataframe?.more ? `Warning: Displayed results are limited to ${limit.toLocaleString()} records. To ensure complete data retrieval, consider applying a LIMIT or WHERE clause to constrain the result set.` : null;
6222
6354
  const showTopBar = onAddToChecklist ?? warning;
6223
- return /* @__PURE__ */ jsxs(Stack24, { sx: { bgcolor: "rgb(249, 249, 249)", height: "100%" }, children: [
6355
+ return /* @__PURE__ */ jsxs(Stack24, { sx: { bgcolor: isDark ? "grey.900" : "grey.50", height: "100%" }, children: [
6224
6356
  showTopBar && /* @__PURE__ */ jsxs(
6225
6357
  Stack24,
6226
6358
  {
6227
6359
  direction: "row",
6228
6360
  sx: {
6229
- borderBottom: "1px solid lightgray",
6361
+ borderBottom: "1px solid",
6362
+ borderBottomColor: "divider",
6230
6363
  alignItems: "center",
6231
6364
  gap: "5px",
6232
6365
  px: "10px",
6233
- bgcolor: warning ? "amber.100" : "inherit"
6366
+ bgcolor: warning ? isDark ? colors.amber[900] : colors.amber[100] : "inherit",
6367
+ color: warning ? isDark ? colors.amber[200] : colors.amber[800] : "inherit"
6234
6368
  },
6235
6369
  children: [
6236
6370
  warning && /* @__PURE__ */ jsxs(Fragment, { children: [
6237
6371
  /* @__PURE__ */ jsx(
6238
- Box35,
6372
+ PiWarning,
6239
6373
  {
6240
- component: PiWarning,
6241
- sx: { color: "amber.600", alignSelf: "center" }
6374
+ color: isDark ? colors.amber[400] : colors.amber[600],
6375
+ style: { alignSelf: "center" }
6242
6376
  }
6243
6377
  ),
6244
6378
  " ",
@@ -6274,13 +6408,15 @@ var PrivateQueryResultView = ({
6274
6408
  maxWidth: 800,
6275
6409
  minWidth: 35
6276
6410
  },
6277
- className: "rdg-light"
6411
+ className: isDark ? "rdg-dark" : "rdg-light"
6278
6412
  }
6279
6413
  )
6280
6414
  ] });
6281
6415
  };
6282
6416
  var QueryResultView = forwardRef(PrivateQueryResultView);
6283
6417
  function _RowCountGridView({ run, typeGuard, expectedType }, ref) {
6418
+ const theme = useTheme();
6419
+ const isDark = theme.palette.mode === "dark";
6284
6420
  if (!typeGuard(run)) {
6285
6421
  throw new Error(`Run type must be ${expectedType}`);
6286
6422
  }
@@ -6295,7 +6431,7 @@ function _RowCountGridView({ run, typeGuard, expectedType }, ref) {
6295
6431
  display: "flex",
6296
6432
  alignItems: "center",
6297
6433
  justifyContent: "center",
6298
- bgcolor: "rgb(249,249,249)",
6434
+ bgcolor: isDark ? "grey.900" : "grey.50",
6299
6435
  height: "100%"
6300
6436
  },
6301
6437
  children: "No nodes matched"
@@ -6379,7 +6515,7 @@ function TopKDiffForm({
6379
6515
  )
6380
6516
  ] }) });
6381
6517
  }
6382
- var INFO_VAL_COLOR = "#63B3ED";
6518
+ var INFO_VAL_COLOR2 = "#63B3ED";
6383
6519
  function prepareSummaryList(topK, isDisplayTopTen) {
6384
6520
  const endAtIndex = isDisplayTopTen ? 10 : topK.counts.length;
6385
6521
  const counts = topK.counts.slice(0, endAtIndex);
@@ -6415,6 +6551,7 @@ function prepareSummaryList(topK, isDisplayTopTen) {
6415
6551
  function TopKChartTooltip({
6416
6552
  base,
6417
6553
  current,
6554
+ barColors,
6418
6555
  children
6419
6556
  }) {
6420
6557
  return /* @__PURE__ */ jsx(
@@ -6422,7 +6559,7 @@ function TopKChartTooltip({
6422
6559
  {
6423
6560
  title: /* @__PURE__ */ jsxs(Box35, { children: [
6424
6561
  /* @__PURE__ */ jsxs(Typography28, { children: [
6425
- /* @__PURE__ */ jsx(SquareIcon, { color: CURRENT_BAR_COLOR }),
6562
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.current }),
6426
6563
  "Current: ",
6427
6564
  current.count,
6428
6565
  " (",
@@ -6430,7 +6567,7 @@ function TopKChartTooltip({
6430
6567
  ")"
6431
6568
  ] }),
6432
6569
  /* @__PURE__ */ jsxs(Typography28, { children: [
6433
- /* @__PURE__ */ jsx(SquareIcon, { color: BASE_BAR_COLOR }),
6570
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.base }),
6434
6571
  "Base: ",
6435
6572
  base.count,
6436
6573
  " (",
@@ -6447,6 +6584,9 @@ function TopKSummaryBarChart({
6447
6584
  topKDiff,
6448
6585
  isDisplayTopTen
6449
6586
  }) {
6587
+ const theme = useTheme();
6588
+ const isDark = theme.palette.mode === "dark";
6589
+ const barColors = getBarColors(isDark);
6450
6590
  const currents = prepareSummaryList(topKDiff.current, isDisplayTopTen);
6451
6591
  const bases = prepareSummaryList(topKDiff.base, isDisplayTopTen);
6452
6592
  return /* @__PURE__ */ jsxs(Box35, { sx: { width: "100%", px: 20, py: 2 }, children: [
@@ -6456,9 +6596,9 @@ function TopKSummaryBarChart({
6456
6596
  Typography28,
6457
6597
  {
6458
6598
  component: "h3",
6459
- sx: { fontSize: "0.875rem", p: 1, color: "gray" },
6599
+ sx: { fontSize: "0.875rem", p: 1, color: "text.secondary" },
6460
6600
  children: [
6461
- /* @__PURE__ */ jsx(SquareIcon, { color: BASE_BAR_COLOR }),
6601
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.base }),
6462
6602
  " Base"
6463
6603
  ]
6464
6604
  }
@@ -6467,9 +6607,9 @@ function TopKSummaryBarChart({
6467
6607
  Typography28,
6468
6608
  {
6469
6609
  component: "h3",
6470
- sx: { fontSize: "0.875rem", p: 1, color: "gray" },
6610
+ sx: { fontSize: "0.875rem", p: 1, color: "text.secondary" },
6471
6611
  children: [
6472
- /* @__PURE__ */ jsx(SquareIcon, { color: CURRENT_BAR_COLOR }),
6612
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.current }),
6473
6613
  " Current"
6474
6614
  ]
6475
6615
  }
@@ -6482,120 +6622,133 @@ function TopKSummaryBarChart({
6482
6622
  return /* @__PURE__ */ jsx(Fragment, {});
6483
6623
  }
6484
6624
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
6485
- /* @__PURE__ */ jsx(TopKChartTooltip, { base, current, children: /* @__PURE__ */ jsxs(
6486
- Box35,
6625
+ /* @__PURE__ */ jsx(
6626
+ TopKChartTooltip,
6487
6627
  {
6488
- sx: {
6489
- display: "flex",
6490
- alignItems: "center",
6491
- width: "100%",
6492
- "&:hover": { bgcolor: "action.hover" },
6493
- px: 2
6494
- },
6495
- children: [
6496
- /* @__PURE__ */ jsx(
6497
- Typography28,
6498
- {
6499
- sx: {
6500
- width: "10em",
6501
- fontSize: "0.875rem",
6502
- color: current.isSpecialLabel ? "grey.400" : "inherit",
6503
- overflow: "hidden",
6504
- textOverflow: "ellipsis",
6505
- whiteSpace: "nowrap"
6506
- },
6507
- children: current.label
6508
- }
6509
- ),
6510
- /* @__PURE__ */ jsxs(
6511
- Box35,
6512
- {
6513
- sx: {
6514
- display: "flex",
6515
- width: "70%",
6516
- flexDirection: "column"
6517
- },
6518
- children: [
6519
- /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
6520
- /* @__PURE__ */ jsx(
6521
- CategoricalBarChart,
6522
- {
6523
- topkCount: current.count,
6524
- topkLabel: current.label,
6525
- valids: topKDiff.current.valids,
6526
- color: CURRENT_BAR_COLOR
6527
- }
6528
- ),
6529
- /* @__PURE__ */ jsx(
6530
- Typography28,
6531
- {
6532
- sx: {
6533
- ml: 2.5,
6534
- mr: 1,
6535
- fontSize: "0.875rem",
6536
- width: "6em"
6537
- },
6538
- children: current.displayCount
6539
- }
6540
- ),
6541
- /* @__PURE__ */ jsx(
6542
- Typography28,
6543
- {
6544
- sx: {
6545
- color: "grey.400",
6546
- fontSize: "0.875rem",
6547
- width: "4em"
6548
- },
6549
- children: current.displayRatio
6550
- }
6551
- )
6552
- ] }),
6553
- /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
6554
- /* @__PURE__ */ jsx(
6555
- CategoricalBarChart,
6556
- {
6557
- topkCount: base.count,
6558
- topkLabel: base.label,
6559
- valids: topKDiff.base.valids,
6560
- color: BASE_BAR_COLOR
6561
- }
6562
- ),
6563
- /* @__PURE__ */ jsx(
6564
- Typography28,
6565
- {
6566
- sx: {
6567
- ml: 2.5,
6568
- mr: 1,
6569
- fontSize: "0.875rem",
6570
- width: "6em"
6571
- },
6572
- children: base.displayCount
6573
- }
6574
- ),
6575
- /* @__PURE__ */ jsx(
6576
- Typography28,
6577
- {
6578
- sx: {
6579
- color: "grey.400",
6580
- fontSize: "0.875rem",
6581
- width: "4em"
6582
- },
6583
- children: base.displayRatio
6584
- }
6585
- )
6586
- ] })
6587
- ]
6588
- }
6589
- )
6590
- ]
6628
+ base,
6629
+ current,
6630
+ barColors,
6631
+ children: /* @__PURE__ */ jsxs(
6632
+ Box35,
6633
+ {
6634
+ sx: {
6635
+ display: "flex",
6636
+ alignItems: "center",
6637
+ width: "100%",
6638
+ "&:hover": { bgcolor: "action.hover" },
6639
+ px: 2
6640
+ },
6641
+ children: [
6642
+ /* @__PURE__ */ jsx(
6643
+ Typography28,
6644
+ {
6645
+ sx: {
6646
+ width: "10em",
6647
+ fontSize: "0.875rem",
6648
+ color: current.isSpecialLabel ? "grey.400" : "inherit",
6649
+ overflow: "hidden",
6650
+ textOverflow: "ellipsis",
6651
+ whiteSpace: "nowrap"
6652
+ },
6653
+ children: current.label
6654
+ }
6655
+ ),
6656
+ /* @__PURE__ */ jsxs(
6657
+ Box35,
6658
+ {
6659
+ sx: {
6660
+ display: "flex",
6661
+ width: "70%",
6662
+ flexDirection: "column"
6663
+ },
6664
+ children: [
6665
+ /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
6666
+ /* @__PURE__ */ jsx(
6667
+ CategoricalBarChart,
6668
+ {
6669
+ topkCount: current.count,
6670
+ topkLabel: current.label,
6671
+ valids: topKDiff.current.valids,
6672
+ color: barColors.current,
6673
+ isDark
6674
+ }
6675
+ ),
6676
+ /* @__PURE__ */ jsx(
6677
+ Typography28,
6678
+ {
6679
+ sx: {
6680
+ ml: 2.5,
6681
+ mr: 1,
6682
+ fontSize: "0.875rem",
6683
+ width: "6em"
6684
+ },
6685
+ children: current.displayCount
6686
+ }
6687
+ ),
6688
+ /* @__PURE__ */ jsx(
6689
+ Typography28,
6690
+ {
6691
+ sx: {
6692
+ color: "grey.400",
6693
+ fontSize: "0.875rem",
6694
+ width: "4em"
6695
+ },
6696
+ children: current.displayRatio
6697
+ }
6698
+ )
6699
+ ] }),
6700
+ /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
6701
+ /* @__PURE__ */ jsx(
6702
+ CategoricalBarChart,
6703
+ {
6704
+ topkCount: base.count,
6705
+ topkLabel: base.label,
6706
+ valids: topKDiff.base.valids,
6707
+ color: barColors.base,
6708
+ isDark
6709
+ }
6710
+ ),
6711
+ /* @__PURE__ */ jsx(
6712
+ Typography28,
6713
+ {
6714
+ sx: {
6715
+ ml: 2.5,
6716
+ mr: 1,
6717
+ fontSize: "0.875rem",
6718
+ width: "6em"
6719
+ },
6720
+ children: base.displayCount
6721
+ }
6722
+ ),
6723
+ /* @__PURE__ */ jsx(
6724
+ Typography28,
6725
+ {
6726
+ sx: {
6727
+ color: "grey.400",
6728
+ fontSize: "0.875rem",
6729
+ width: "4em"
6730
+ },
6731
+ children: base.displayRatio
6732
+ }
6733
+ )
6734
+ ] })
6735
+ ]
6736
+ }
6737
+ )
6738
+ ]
6739
+ }
6740
+ )
6591
6741
  }
6592
- ) }),
6742
+ ),
6593
6743
  /* @__PURE__ */ jsx(Divider, {})
6594
6744
  ] }, current.label);
6595
6745
  })
6596
6746
  ] });
6597
6747
  }
6598
6748
  function TopKSummaryList({ topk, valids, isDisplayTopTen }) {
6749
+ const theme = useTheme();
6750
+ const isDark = theme.palette.mode === "dark";
6751
+ const barColors = getBarColors(isDark);
6599
6752
  const endAtIndex = isDisplayTopTen ? 10 : topk.counts.length;
6600
6753
  const displayList = topk.counts.slice(0, endAtIndex);
6601
6754
  const remainingSumCount = valids - displayList.reduce((accum, curr) => accum + curr, 0);
@@ -6637,7 +6790,9 @@ function TopKSummaryList({ topk, valids, isDisplayTopTen }) {
6637
6790
  {
6638
6791
  topkCount,
6639
6792
  topkLabel,
6640
- valids
6793
+ valids,
6794
+ color: barColors.info,
6795
+ isDark
6641
6796
  }
6642
6797
  ) }),
6643
6798
  /* @__PURE__ */ jsx(MuiTooltip, { title: displayTopkCount, placement: "top-start", children: /* @__PURE__ */ jsx(
@@ -6678,10 +6833,13 @@ function CategoricalBarChart({
6678
6833
  topkLabel,
6679
6834
  valids,
6680
6835
  animation = false,
6681
- color = INFO_VAL_COLOR
6836
+ color = INFO_VAL_COLOR2,
6837
+ isDark = false
6682
6838
  }) {
6683
6839
  Chart.register(CategoryScale, BarElement, LinearScale);
6684
- const chartOptions = getCatBarChartOptions(topkCount, valids, { animation });
6840
+ const chartOptions = getCatBarChartOptions(topkCount, valids, isDark, {
6841
+ animation
6842
+ });
6685
6843
  const chartData = getCatBarChartData({
6686
6844
  topkCount,
6687
6845
  topkLabel,
@@ -6689,7 +6847,8 @@ function CategoricalBarChart({
6689
6847
  });
6690
6848
  return /* @__PURE__ */ jsx(Bar, { data: chartData, options: chartOptions, plugins: [] });
6691
6849
  }
6692
- function getCatBarChartOptions(count, valids, { ...configOverrides } = {}) {
6850
+ function getCatBarChartOptions(_count, valids, isDark = false, { ...configOverrides } = {}) {
6851
+ const themeColors = getChartThemeColors(isDark);
6693
6852
  return {
6694
6853
  responsive: true,
6695
6854
  maintainAspectRatio: false,
@@ -6698,10 +6857,12 @@ function getCatBarChartOptions(count, valids, { ...configOverrides } = {}) {
6698
6857
  x: {
6699
6858
  display: false,
6700
6859
  max: valids,
6701
- grid: { display: false }
6860
+ grid: { display: false },
6861
+ ticks: { color: themeColors.textColor }
6702
6862
  },
6703
6863
  y: {
6704
- display: false
6864
+ display: false,
6865
+ ticks: { color: themeColors.textColor }
6705
6866
  }
6706
6867
  },
6707
6868
  plugins: {
@@ -6715,7 +6876,7 @@ function getCatBarChartOptions(count, valids, { ...configOverrides } = {}) {
6715
6876
  function getCatBarChartData({
6716
6877
  topkLabel,
6717
6878
  topkCount,
6718
- color = INFO_VAL_COLOR
6879
+ color = INFO_VAL_COLOR2
6719
6880
  }) {
6720
6881
  return {
6721
6882
  labels: [topkLabel],
@@ -6736,39 +6897,53 @@ function getCatBarChartData({
6736
6897
  };
6737
6898
  }
6738
6899
  var PrivateTopKDiffResultView = ({ run }, ref) => {
6900
+ const theme = useTheme();
6901
+ const isDark = theme.palette.mode === "dark";
6739
6902
  const [isDisplayTopTen, setIsDisplayTopTen] = useState(true);
6740
6903
  const result = run.result;
6741
6904
  const params = run.params;
6742
6905
  const baseTopK = result.base;
6743
6906
  const currentTopK = result.current;
6744
6907
  return /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
6745
- /* @__PURE__ */ jsxs(ScreenshotBox, { ref, blockSize: "auto", children: [
6746
- /* @__PURE__ */ jsxs(
6747
- Typography28,
6748
- {
6749
- variant: "h5",
6750
- sx: { pt: 4, textAlign: "center", color: "grey.600" },
6751
- children: [
6752
- "Model ",
6753
- params.model,
6754
- ".",
6755
- params.column_name
6756
- ]
6757
- }
6758
- ),
6759
- /* @__PURE__ */ jsxs(Stack24, { direction: "row", alignItems: "center", children: [
6760
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
6761
- /* @__PURE__ */ jsx(
6762
- TopKSummaryBarChart,
6763
- {
6764
- topKDiff: result,
6765
- valids: currentTopK.valids || 0,
6766
- isDisplayTopTen
6767
- }
6768
- ),
6769
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
6770
- ] })
6771
- ] }),
6908
+ /* @__PURE__ */ jsxs(
6909
+ ScreenshotBox,
6910
+ {
6911
+ ref,
6912
+ blockSize: "auto",
6913
+ backgroundColor: isDark ? "#1f2937" : "white",
6914
+ children: [
6915
+ /* @__PURE__ */ jsxs(
6916
+ Typography28,
6917
+ {
6918
+ variant: "h5",
6919
+ sx: {
6920
+ pt: 4,
6921
+ textAlign: "center",
6922
+ color: isDark ? "grey.200" : "grey.600"
6923
+ },
6924
+ children: [
6925
+ "Model ",
6926
+ params.model,
6927
+ ".",
6928
+ params.column_name
6929
+ ]
6930
+ }
6931
+ ),
6932
+ /* @__PURE__ */ jsxs(Stack24, { direction: "row", alignItems: "center", children: [
6933
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
6934
+ /* @__PURE__ */ jsx(
6935
+ TopKSummaryBarChart,
6936
+ {
6937
+ topKDiff: result,
6938
+ valids: currentTopK.valids || 0,
6939
+ isDisplayTopTen
6940
+ }
6941
+ ),
6942
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
6943
+ ] })
6944
+ ]
6945
+ }
6946
+ ),
6772
6947
  /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
6773
6948
  (baseTopK.values.length > 10 || currentTopK.values.length > 10) && /* @__PURE__ */ jsx(Box35, { sx: { display: "flex", p: 5, justifyContent: "start" }, children: /* @__PURE__ */ jsx(
6774
6949
  Link,
@@ -6790,6 +6965,8 @@ var PrivateValueDiffDetailResultView = ({
6790
6965
  viewOptions,
6791
6966
  onViewOptionsChanged
6792
6967
  }, ref) => {
6968
+ const theme = useTheme();
6969
+ const isDark = theme.palette.mode === "dark";
6793
6970
  if (!isValueDiffDetailRun(run)) {
6794
6971
  throw new Error("run type must be value_diff_detail");
6795
6972
  }
@@ -6874,7 +7051,7 @@ var PrivateValueDiffDetailResultView = ({
6874
7051
  sx: {
6875
7052
  display: "flex",
6876
7053
  flexDirection: "column",
6877
- bgcolor: "rgb(249, 249, 249)",
7054
+ bgcolor: isDark ? "grey.900" : "grey.50",
6878
7055
  height: "100%"
6879
7056
  },
6880
7057
  children: [
@@ -6909,7 +7086,7 @@ var PrivateValueDiffDetailResultView = ({
6909
7086
  sx: {
6910
7087
  display: "flex",
6911
7088
  flexDirection: "column",
6912
- bgcolor: "rgb(249, 249, 249)",
7089
+ bgcolor: isDark ? "grey.900" : "grey.50",
6913
7090
  height: "100%"
6914
7091
  },
6915
7092
  children: [
@@ -6979,11 +7156,65 @@ function ValueDiffForm({
6979
7156
  onParamsChanged,
6980
7157
  setIsReadyToExecute
6981
7158
  }) {
7159
+ const theme = useTheme();
7160
+ const isDark = theme.palette.mode === "dark";
6982
7161
  const [allColumns, setAllColumns] = useState(
6983
7162
  !params.columns || params.columns.length === 0
6984
7163
  );
6985
7164
  const model = params.model;
6986
7165
  const primaryKey = params.primary_key;
7166
+ const selectStyles = useMemo(
7167
+ () => ({
7168
+ container: (base) => ({
7169
+ ...base,
7170
+ width: "100%"
7171
+ }),
7172
+ control: (base) => ({
7173
+ ...base,
7174
+ minHeight: "40px",
7175
+ backgroundColor: isDark ? colors.neutral[700] : base.backgroundColor,
7176
+ borderColor: isDark ? colors.neutral[600] : base.borderColor
7177
+ }),
7178
+ menu: (base) => ({
7179
+ ...base,
7180
+ backgroundColor: isDark ? colors.neutral[700] : base.backgroundColor
7181
+ }),
7182
+ option: (base, state) => ({
7183
+ ...base,
7184
+ backgroundColor: state.isSelected ? isDark ? colors.neutral[600] : colors.iochmara[500] : state.isFocused ? isDark ? colors.neutral[600] : colors.iochmara[50] : isDark ? colors.neutral[700] : base.backgroundColor,
7185
+ color: isDark ? colors.neutral[200] : base.color
7186
+ }),
7187
+ multiValue: (base) => ({
7188
+ ...base,
7189
+ backgroundColor: isDark ? colors.neutral[600] : base.backgroundColor
7190
+ }),
7191
+ multiValueLabel: (base) => ({
7192
+ ...base,
7193
+ color: isDark ? colors.neutral[200] : base.color
7194
+ }),
7195
+ multiValueRemove: (base) => ({
7196
+ ...base,
7197
+ color: isDark ? colors.neutral[400] : base.color,
7198
+ "&:hover": {
7199
+ backgroundColor: isDark ? colors.neutral[500] : colors.red[200],
7200
+ color: isDark ? colors.neutral[200] : colors.red[600]
7201
+ }
7202
+ }),
7203
+ input: (base) => ({
7204
+ ...base,
7205
+ color: isDark ? colors.neutral[200] : base.color
7206
+ }),
7207
+ singleValue: (base) => ({
7208
+ ...base,
7209
+ color: isDark ? colors.neutral[200] : base.color
7210
+ }),
7211
+ placeholder: (base) => ({
7212
+ ...base,
7213
+ color: isDark ? colors.neutral[400] : base.color
7214
+ })
7215
+ }),
7216
+ [isDark]
7217
+ );
6987
7218
  const {
6988
7219
  columns,
6989
7220
  primaryKey: nodePrimaryKey,
@@ -7043,16 +7274,7 @@ function ValueDiffForm({
7043
7274
  primary_key: optionsArray.length == 1 ? optionsArray[0].value : optionsArray.map((v) => v.value)
7044
7275
  });
7045
7276
  },
7046
- styles: {
7047
- container: (base) => ({
7048
- ...base,
7049
- width: "100%"
7050
- }),
7051
- control: (base) => ({
7052
- ...base,
7053
- minHeight: "40px"
7054
- })
7055
- }
7277
+ styles: selectStyles
7056
7278
  }
7057
7279
  )
7058
7280
  ] }),
@@ -7103,16 +7325,7 @@ function ValueDiffForm({
7103
7325
  columns: cols
7104
7326
  });
7105
7327
  },
7106
- styles: {
7107
- container: (base) => ({
7108
- ...base,
7109
- width: "100%"
7110
- }),
7111
- control: (base) => ({
7112
- ...base,
7113
- minHeight: "40px"
7114
- })
7115
- }
7328
+ styles: selectStyles
7116
7329
  }
7117
7330
  )
7118
7331
  ] })
@@ -7155,20 +7368,28 @@ function _ValueDiffResultView({ run }, ref) {
7155
7368
  " removed)"
7156
7369
  ] }),
7157
7370
  /* @__PURE__ */ jsx(
7158
- ScreenshotDataGrid,
7371
+ Box35,
7159
7372
  {
7160
- ref,
7161
- style: {
7162
- blockSize: "auto",
7373
+ sx: {
7374
+ flex: 1,
7375
+ minHeight: 0,
7163
7376
  maxHeight: "100%",
7164
7377
  overflow: "auto",
7165
- borderBlock: "1px solid lightgray"
7378
+ borderTop: "1px solid",
7379
+ borderBottom: "1px solid",
7380
+ borderColor: "divider"
7166
7381
  },
7167
- columns,
7168
- rows,
7169
- renderers: { noRowsFallback: /* @__PURE__ */ jsx(EmptyRowsRenderer, {}) },
7170
- defaultColumnOptions: { resizable: true },
7171
- className: "rdg-light"
7382
+ children: /* @__PURE__ */ jsx(
7383
+ ScreenshotDataGrid,
7384
+ {
7385
+ ref,
7386
+ columns,
7387
+ rows,
7388
+ renderers: { noRowsFallback: /* @__PURE__ */ jsx(EmptyRowsRenderer, {}) },
7389
+ defaultColumnOptions: { resizable: true },
7390
+ className: "rdg-light"
7391
+ }
7392
+ )
7172
7393
  }
7173
7394
  )
7174
7395
  ]
@@ -7319,31 +7540,6 @@ var RecceActionContext = createContext({
7319
7540
  }
7320
7541
  });
7321
7542
  var useRecceActionContext = () => useContext(RecceActionContext);
7322
-
7323
- // recce-source/js/src/lib/hooks/useClipBoardToast.tsx
7324
- function useClipBoardToast() {
7325
- function successToast(message) {
7326
- toaster.create({
7327
- description: message,
7328
- type: "info",
7329
- duration: 5e3,
7330
- closable: true
7331
- });
7332
- }
7333
- function failToast(title, error) {
7334
- toaster.create({
7335
- title,
7336
- description: String(error),
7337
- type: "error",
7338
- duration: 5e3,
7339
- closable: true
7340
- });
7341
- }
7342
- return {
7343
- successToast,
7344
- failToast
7345
- };
7346
- }
7347
7543
  var loadHtml2Canvas = async () => {
7348
7544
  const module = await import('html2canvas-pro/dist/html2canvas-pro.esm.js');
7349
7545
  return module.default;
@@ -7362,7 +7558,7 @@ function useCopyToClipboard2({
7362
7558
  backgroundColor = null,
7363
7559
  boardEffect = true,
7364
7560
  shadowEffect = false,
7365
- borderStyle = "solid 1px #ccc",
7561
+ borderStyle = `solid 1px ${colors.neutral[300]}`,
7366
7562
  borderRadius = "10px",
7367
7563
  onSuccess,
7368
7564
  onError,
@@ -7400,7 +7596,7 @@ function useCopyToClipboard2({
7400
7596
  nodeToUse.style.overflow = "hidden";
7401
7597
  nodeToUse.style.border = boardEffect ? borderStyle : "";
7402
7598
  nodeToUse.style.borderRadius = boardEffect ? borderRadius : "";
7403
- nodeToUse.style.backgroundColor = backgroundColor ?? "#f5f5f5";
7599
+ nodeToUse.style.backgroundColor = backgroundColor ?? colors.neutral[100];
7404
7600
  nodeToUse.style.height = `${String(nodeToUse.offsetHeight)}px`;
7405
7601
  const style = document.createElement("style");
7406
7602
  document.head.appendChild(style);
@@ -7414,7 +7610,7 @@ function useCopyToClipboard2({
7414
7610
  const html2canvas = await loadHtml2Canvas();
7415
7611
  canvas = await html2canvas(nodeToUse, {
7416
7612
  logging: false,
7417
- backgroundColor: "#f5f5f5",
7613
+ backgroundColor: backgroundColor ?? colors.neutral[100],
7418
7614
  ignoreElements
7419
7615
  });
7420
7616
  } else {
@@ -7487,7 +7683,7 @@ function useCopyToClipboardButton(options) {
7487
7683
  const { isLoading, copyToClipboard, ImageDownloadModal, ref } = useCopyToClipboard2({
7488
7684
  imageType: "png",
7489
7685
  shadowEffect: true,
7490
- backgroundColor: options?.backgroundColor ?? "#f5f5f5",
7686
+ backgroundColor: options?.backgroundColor ?? colors.neutral[100],
7491
7687
  onSuccess: () => {
7492
7688
  successToast("Copied the query result as an image to clipboard");
7493
7689
  },
@@ -7679,6 +7875,74 @@ var useRun = (runId) => {
7679
7875
  RunResultView
7680
7876
  };
7681
7877
  };
7878
+ function useThemeColors() {
7879
+ const theme = useTheme();
7880
+ const isDark = theme.palette.mode === "dark";
7881
+ return {
7882
+ /** Whether the current theme is dark mode */
7883
+ isDark,
7884
+ /** MUI theme object for direct access when needed */
7885
+ theme,
7886
+ /** Background colors */
7887
+ background: {
7888
+ /** Default page background */
7889
+ default: theme.palette.background.default,
7890
+ /** Paper/card background */
7891
+ paper: theme.palette.background.paper,
7892
+ /** Subtle background for slight elevation (e.g., hover states, inputs) */
7893
+ subtle: isDark ? colors.neutral[800] : colors.neutral[50],
7894
+ /** Emphasized background for higher contrast areas */
7895
+ emphasized: isDark ? colors.neutral[700] : colors.neutral[100]
7896
+ },
7897
+ /** Text colors */
7898
+ text: {
7899
+ /** Primary text color */
7900
+ primary: theme.palette.text.primary,
7901
+ /** Secondary/muted text color */
7902
+ secondary: theme.palette.text.secondary,
7903
+ /** Disabled text color */
7904
+ disabled: isDark ? colors.neutral[500] : colors.neutral[400],
7905
+ /** Inverted text (for use on dark backgrounds in light mode, etc.) */
7906
+ inverted: isDark ? colors.neutral[900] : colors.neutral[50]
7907
+ },
7908
+ /** Border colors */
7909
+ border: {
7910
+ /** Light border for subtle separations */
7911
+ light: isDark ? colors.neutral[700] : colors.neutral[200],
7912
+ /** Default border color */
7913
+ default: isDark ? colors.neutral[600] : colors.neutral[300],
7914
+ /** Strong border for emphasis */
7915
+ strong: isDark ? colors.neutral[500] : colors.neutral[400]
7916
+ },
7917
+ /** Status/semantic colors */
7918
+ status: {
7919
+ /** Added/success backgrounds */
7920
+ added: {
7921
+ bg: isDark ? "#1a4d1a" : "#cefece",
7922
+ text: theme.palette.text.primary
7923
+ },
7924
+ /** Removed/error backgrounds */
7925
+ removed: {
7926
+ bg: isDark ? "#5c1f1f" : "#ffc5c5",
7927
+ text: theme.palette.text.primary
7928
+ },
7929
+ /** Modified/warning backgrounds */
7930
+ modified: {
7931
+ bg: isDark ? "#5c4a1a" : "#fff3cd",
7932
+ text: theme.palette.text.primary
7933
+ }
7934
+ },
7935
+ /** Interactive element colors */
7936
+ interactive: {
7937
+ /** Hover state background */
7938
+ hover: isDark ? colors.neutral[700] : colors.neutral[100],
7939
+ /** Active/pressed state background */
7940
+ active: isDark ? colors.neutral[600] : colors.neutral[200],
7941
+ /** Focus ring color */
7942
+ focus: colors.iochmara[500]
7943
+ }
7944
+ };
7945
+ }
7682
7946
  function ActionControl({ onClose }) {
7683
7947
  const { cancel, actionState } = useLineageViewContextSafe();
7684
7948
  const getProgressMessage = () => {
@@ -7696,7 +7960,7 @@ function ActionControl({ onClose }) {
7696
7960
  }
7697
7961
  }
7698
7962
  };
7699
- return /* @__PURE__ */ jsx(Box35, { sx: { bgcolor: "white", borderRadius: 1, boxShadow: 6 }, children: /* @__PURE__ */ jsxs(
7963
+ return /* @__PURE__ */ jsx(Box35, { sx: { bgcolor: "background.paper", borderRadius: 1, boxShadow: 6 }, children: /* @__PURE__ */ jsxs(
7700
7964
  Stack24,
7701
7965
  {
7702
7966
  direction: "row",
@@ -7753,10 +8017,10 @@ var IconChanged = (props) => {
7753
8017
  }
7754
8018
  );
7755
8019
  };
7756
- function getIconForChangeStatus(changeStatus) {
8020
+ function getIconForChangeStatus(changeStatus, isDark) {
7757
8021
  if (changeStatus === "added") {
7758
8022
  const color2 = String(token("colors.green.solid"));
7759
- const backgroundColor2 = String(token("colors.green.subtle"));
8023
+ const backgroundColor2 = isDark ? String(token("colors.green.muted")) : String(token("colors.green.subtle"));
7760
8024
  return {
7761
8025
  color: color2,
7762
8026
  hexColor: color2,
@@ -7766,7 +8030,7 @@ function getIconForChangeStatus(changeStatus) {
7766
8030
  };
7767
8031
  } else if (changeStatus === "removed") {
7768
8032
  const color2 = String(token("colors.red.solid"));
7769
- const backgroundColor2 = String(token("colors.red.subtle"));
8033
+ const backgroundColor2 = isDark ? String(token("colors.red.muted")) : String(token("colors.red.subtle"));
7770
8034
  return {
7771
8035
  color: color2,
7772
8036
  hexColor: color2,
@@ -7776,7 +8040,7 @@ function getIconForChangeStatus(changeStatus) {
7776
8040
  };
7777
8041
  } else if (changeStatus === "modified") {
7778
8042
  const color2 = String(token("colors.amber.emphasized"));
7779
- const backgroundColor2 = String(token("colors.amber.subtle"));
8043
+ const backgroundColor2 = isDark ? String(token("colors.amber.emphasized")) : String(token("colors.amber.subtle"));
7780
8044
  return {
7781
8045
  color: color2,
7782
8046
  hexColor: color2,
@@ -7786,7 +8050,7 @@ function getIconForChangeStatus(changeStatus) {
7786
8050
  };
7787
8051
  }
7788
8052
  const color = String(token("colors.gray.focusRing"));
7789
- const backgroundColor = "#ffffff";
8053
+ const backgroundColor = isDark ? "#404040" : "#ffffff";
7790
8054
  return {
7791
8055
  color,
7792
8056
  hexColor: color,
@@ -7845,10 +8109,10 @@ function ChangeStatusLegend() {
7845
8109
  Box35,
7846
8110
  {
7847
8111
  sx: {
7848
- bgcolor: "white",
8112
+ bgcolor: "background.paper",
7849
8113
  padding: "12px",
7850
8114
  border: "1px solid",
7851
- borderColor: "grey.200",
8115
+ borderColor: "divider",
7852
8116
  fontSize: "0.875rem"
7853
8117
  },
7854
8118
  children: Object.entries(CHANGE_STATUS_MSGS).map(([key, [label, tip]]) => {
@@ -7898,13 +8162,13 @@ var ModeMessage = () => {
7898
8162
  onClick: () => {
7899
8163
  centerNode(nodeId);
7900
8164
  },
7901
- sx: {
8165
+ sx: (theme) => ({
7902
8166
  cursor: "pointer",
7903
8167
  fontFamily: "monospace",
7904
- bgcolor: "grey.100",
8168
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
7905
8169
  px: 0.5,
7906
8170
  borderRadius: 0.5
7907
- },
8171
+ }),
7908
8172
  children: nodeName
7909
8173
  }
7910
8174
  )
@@ -7923,13 +8187,13 @@ var ModeMessage = () => {
7923
8187
  onClick: () => {
7924
8188
  centerNode(nodeId);
7925
8189
  },
7926
- sx: {
8190
+ sx: (theme) => ({
7927
8191
  cursor: "pointer",
7928
8192
  fontFamily: "monospace",
7929
- bgcolor: "grey.100",
8193
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
7930
8194
  px: 0.5,
7931
8195
  borderRadius: 0.5
7932
- },
8196
+ }),
7933
8197
  children: [
7934
8198
  nodeName,
7935
8199
  ".",
@@ -7965,10 +8229,11 @@ var ColumnLevelLineageControl = ({
7965
8229
  {
7966
8230
  size: "small",
7967
8231
  variant: "outlined",
8232
+ color: "neutral",
7968
8233
  sx: {
7969
- borderColor: "neutral.light",
7970
8234
  whiteSpace: "nowrap",
7971
- display: "inline-flex"
8235
+ display: "inline-flex",
8236
+ bgcolor: "background.paper"
7972
8237
  },
7973
8238
  disabled: !interactive || noCatalogCurrent,
7974
8239
  startIcon: /* @__PURE__ */ jsx(FaRegDotCircle, {}),
@@ -7992,8 +8257,8 @@ var ColumnLevelLineageControl = ({
7992
8257
  borderRadius: 1,
7993
8258
  boxShadow: 3,
7994
8259
  border: "1px solid",
7995
- borderColor: "neutral.light",
7996
- bgcolor: "white",
8260
+ borderColor: "divider",
8261
+ bgcolor: "background.paper",
7997
8262
  fontSize: "0.8rem",
7998
8263
  p: "0 0.625rem"
7999
8264
  },
@@ -8111,6 +8376,7 @@ function GraphColumnNode(nodeProps) {
8111
8376
  const { id: nodeId } = data.node;
8112
8377
  const { column, type, transformationType, changeStatus } = data;
8113
8378
  const showContent = useStore((s) => s.transform[2] > 0.3);
8379
+ const { background, text, border } = useThemeColors();
8114
8380
  const {
8115
8381
  viewOptions,
8116
8382
  showContextMenu,
@@ -8120,7 +8386,7 @@ function GraphColumnNode(nodeProps) {
8120
8386
  const selectedNode = viewOptions.column_level_lineage?.node_id;
8121
8387
  const selectedColumn = viewOptions.column_level_lineage?.column;
8122
8388
  const isFocus = column === selectedColumn && nodeId === selectedNode;
8123
- const [isHovered, setIsHovered] = React3.useState(false);
8389
+ const [isHovered, setIsHovered] = React4.useState(false);
8124
8390
  const isHighlighted = isNodeHighlighted(columnNodeId);
8125
8391
  const isShowingChangeAnalysis = isNodeShowingChangeAnalysis(nodeId);
8126
8392
  if (!showContent) {
@@ -8133,10 +8399,11 @@ function GraphColumnNode(nodeProps) {
8133
8399
  display: "flex",
8134
8400
  width: 280,
8135
8401
  padding: "0px 10px",
8136
- border: "1px solid gray",
8137
- backgroundColor: isFocus ? "#f0f0f0" : "inherit",
8402
+ border: "1px solid",
8403
+ borderColor: border.default,
8404
+ backgroundColor: isFocus ? background.subtle : "inherit",
8138
8405
  "&:hover": {
8139
- backgroundColor: "#f0f0f0"
8406
+ backgroundColor: background.subtle
8140
8407
  },
8141
8408
  filter: isHighlighted ? "none" : "opacity(0.2) grayscale(50%)",
8142
8409
  cursor: "pointer"
@@ -8154,7 +8421,7 @@ function GraphColumnNode(nodeProps) {
8154
8421
  sx: {
8155
8422
  display: "flex",
8156
8423
  fontSize: "11px",
8157
- color: "black",
8424
+ color: text.primary,
8158
8425
  width: "100%",
8159
8426
  gap: "3px",
8160
8427
  alignItems: "center",
@@ -8172,7 +8439,7 @@ function GraphColumnNode(nodeProps) {
8172
8439
  fontSize: 14,
8173
8440
  display: "inline-flex",
8174
8441
  cursor: "pointer",
8175
- "&:hover": { color: "black" }
8442
+ "&:hover": { color: text.primary }
8176
8443
  },
8177
8444
  onClick: (e) => {
8178
8445
  e.preventDefault();
@@ -8242,10 +8509,10 @@ function ColumnLevelLineageLegend() {
8242
8509
  Box35,
8243
8510
  {
8244
8511
  sx: {
8245
- bgcolor: "white",
8512
+ bgcolor: "background.paper",
8246
8513
  padding: "12px",
8247
8514
  border: "1px solid",
8248
- borderColor: "grey.200",
8515
+ borderColor: "divider",
8249
8516
  fontSize: "0.875rem"
8250
8517
  },
8251
8518
  children: Object.entries(TRANSFORMATION_MSGS).map(([key, [label, tip]]) => {
@@ -8415,15 +8682,16 @@ function SetupConnectionPopover({
8415
8682
  )
8416
8683
  ] });
8417
8684
  }
8418
- var tagRootSx = {
8685
+ var tagRootSx = (theme) => ({
8419
8686
  display: "inline-flex",
8420
8687
  alignItems: "center",
8421
8688
  borderRadius: 16,
8422
8689
  px: 1,
8423
8690
  py: 0.25,
8424
8691
  fontSize: "0.75rem",
8425
- bgcolor: "grey.100"
8426
- };
8692
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
8693
+ color: theme.palette.mode === "dark" ? "grey.100" : "inherit"
8694
+ });
8427
8695
  var tagStartElementSx = {
8428
8696
  mr: 0.5,
8429
8697
  display: "flex",
@@ -8516,10 +8784,10 @@ function RowCountDiffTag({
8516
8784
  Box35,
8517
8785
  {
8518
8786
  component: "span",
8519
- sx: {
8520
- ...tagRootSx,
8787
+ sx: (theme) => ({
8788
+ ...tagRootSx(theme),
8521
8789
  gap: 0.5
8522
- },
8790
+ }),
8523
8791
  children: [
8524
8792
  /* @__PURE__ */ jsx(RunTypeIcon, {}),
8525
8793
  rowsToShow != null || isFetching ? isFetching ? /* @__PURE__ */ jsx(Skeleton, { width: 30, height: 16 }) : rowsToShow != null ? /* @__PURE__ */ jsx(_RowCountByRate, { rowCount: rowsToShow }) : /* @__PURE__ */ jsx(Typography28, { variant: "caption", children: "row count" }) : /* @__PURE__ */ jsx(Typography28, { variant: "caption", children: "row count" }),
@@ -8714,6 +8982,7 @@ var NodeRunsAggregated = ({
8714
8982
  inverted
8715
8983
  }) => {
8716
8984
  const { lineageGraph, runsAggregated } = useLineageGraphContext();
8985
+ const { text, isDark } = useThemeColors();
8717
8986
  const runs = runsAggregated?.[id];
8718
8987
  const node = lineageGraph?.nodes[id];
8719
8988
  if (!runs && !node) {
@@ -8731,8 +9000,8 @@ var NodeRunsAggregated = ({
8731
9000
  const result = rowCountDiff.result;
8732
9001
  rowCountChanged = result.curr !== result.base;
8733
9002
  }
8734
- const colorChanged = inverted ? "white" : getIconForChangeStatus("modified").color;
8735
- const colorUnchanged = inverted ? "gray" : "gray.100";
9003
+ const colorChanged = inverted ? text.inverted : getIconForChangeStatus("modified").color;
9004
+ const colorUnchanged = inverted ? text.secondary : isDark ? "grey.700" : "grey.100";
8736
9005
  const SchemaDiffIcon = findByRunType("schema_diff").icon;
8737
9006
  return /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flex: 1, alignItems: "center" }, children: [
8738
9007
  schemaChanged !== void 0 && /* @__PURE__ */ jsx(
@@ -8813,6 +9082,7 @@ function GraphNode(nodeProps) {
8813
9082
  const { data } = nodeProps;
8814
9083
  const { id, resourceType, changeStatus } = data;
8815
9084
  const showContent = useStore((s) => s.transform[2] > 0.3);
9085
+ const { background, text, isDark } = useThemeColors();
8816
9086
  const { icon: ResourceIcon } = getIconForResourceType(resourceType);
8817
9087
  const [isHovered, setIsHovered] = useState(false);
8818
9088
  const {
@@ -8840,10 +9110,10 @@ function GraphNode(nodeProps) {
8840
9110
  icon: IconChangeStatus,
8841
9111
  color: colorChangeStatus,
8842
9112
  backgroundColor: backgroundColorChangeStatus
8843
- } = changeStatus ? getIconForChangeStatus(changeStatus) : {
9113
+ } = changeStatus ? getIconForChangeStatus(changeStatus, isDark) : {
8844
9114
  icon: void 0,
8845
9115
  color: String(token("colors.gray.400")),
8846
- backgroundColor: String(token("colors.gray.100"))
9116
+ backgroundColor: isDark ? String(token("colors.gray.700")) : String(token("colors.gray.100"))
8847
9117
  };
8848
9118
  const borderWidth = "2px";
8849
9119
  const borderColor = colorChangeStatus;
@@ -8854,15 +9124,15 @@ function GraphNode(nodeProps) {
8854
9124
  const nodeBackgroundColor = (function() {
8855
9125
  if (showContent) {
8856
9126
  if (selectMode === "selecting") {
8857
- return isSelected ? colorChangeStatus : "white";
9127
+ return isSelected ? colorChangeStatus : background.paper;
8858
9128
  } else if (selectMode === "action_result") {
8859
9129
  if (!action) {
8860
- return "white";
9130
+ return background.paper;
8861
9131
  } else {
8862
9132
  return isFocused || isSelected || isHovered ? backgroundColorChangeStatus : colorChangeStatus;
8863
9133
  }
8864
9134
  } else {
8865
- return isFocused || isSelected || isHovered ? backgroundColorChangeStatus : "white";
9135
+ return isFocused || isSelected || isHovered ? backgroundColorChangeStatus : background.paper;
8866
9136
  }
8867
9137
  } else {
8868
9138
  return isFocused || isSelected || isHovered ? colorChangeStatus : backgroundColorChangeStatus;
@@ -8870,27 +9140,27 @@ function GraphNode(nodeProps) {
8870
9140
  })();
8871
9141
  const titleColor = (function() {
8872
9142
  if (selectMode === "selecting") {
8873
- return isSelected ? "white" : "inherit";
9143
+ return isSelected ? text.inverted : text.primary;
8874
9144
  } else if (selectMode === "action_result") {
8875
- return !!action && !isSelected ? "white" : "inherit";
9145
+ return !!action && !isSelected ? text.inverted : text.primary;
8876
9146
  } else {
8877
- return "inherit";
9147
+ return text.primary;
8878
9148
  }
8879
9149
  })();
8880
9150
  const iconResourceColor = (function() {
8881
9151
  if (selectMode === "selecting") {
8882
- return isSelected ? "white" : "inherit";
9152
+ return isSelected ? text.inverted : text.primary;
8883
9153
  } else if (selectMode === "action_result") {
8884
- return !!action && !isSelected ? "white" : "inherit";
9154
+ return !!action && !isSelected ? text.inverted : text.primary;
8885
9155
  } else {
8886
- return "inherit";
9156
+ return text.primary;
8887
9157
  }
8888
9158
  })();
8889
9159
  const iconChangeStatusColor = (function() {
8890
9160
  if (selectMode === "selecting") {
8891
- return isSelected ? "white" : colorChangeStatus;
9161
+ return isSelected ? text.inverted : colorChangeStatus;
8892
9162
  } else if (selectMode === "action_result") {
8893
- return !!action && !isSelected ? "white" : "inherit";
9163
+ return !!action && !isSelected ? text.inverted : text.primary;
8894
9164
  } else {
8895
9165
  return colorChangeStatus;
8896
9166
  }
@@ -9019,9 +9289,9 @@ function GraphNode(nodeProps) {
9019
9289
  component: FaRegDotCircle,
9020
9290
  sx: {
9021
9291
  fontSize: 14,
9022
- color: "gray",
9292
+ color: text.secondary,
9023
9293
  cursor: "pointer",
9024
- "&:hover": { color: "black" }
9294
+ "&:hover": { color: text.primary }
9025
9295
  },
9026
9296
  onClick: (e) => {
9027
9297
  e.preventDefault();
@@ -9043,9 +9313,9 @@ function GraphNode(nodeProps) {
9043
9313
  {
9044
9314
  component: VscKebabVertical,
9045
9315
  sx: {
9046
- color: "gray",
9316
+ color: text.secondary,
9047
9317
  cursor: "pointer",
9048
- "&:hover": { color: "black" }
9318
+ "&:hover": { color: text.primary }
9049
9319
  },
9050
9320
  onClick: (e) => {
9051
9321
  e.preventDefault();
@@ -9101,7 +9371,7 @@ function GraphNode(nodeProps) {
9101
9371
  {
9102
9372
  sx: {
9103
9373
  height: 20,
9104
- color: "gray",
9374
+ color: text.secondary,
9105
9375
  fontSize: "9pt",
9106
9376
  margin: 0,
9107
9377
  fontWeight: 600
@@ -9806,6 +10076,7 @@ function HistoryToggle() {
9806
10076
  {
9807
10077
  size: "xsmall",
9808
10078
  variant: "outlined",
10079
+ color: "neutral",
9809
10080
  startIcon: /* @__PURE__ */ jsx(VscHistory, {}),
9810
10081
  onClick: () => {
9811
10082
  trackHistoryAction({ name: isHistoryOpen ? "hide" : "show" });
@@ -9816,74 +10087,32 @@ function HistoryToggle() {
9816
10087
  )
9817
10088
  ] });
9818
10089
  }
10090
+ var codeBlockSx = (theme) => ({
10091
+ fontSize: "8pt",
10092
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
10093
+ px: 0.5,
10094
+ borderRadius: 1
10095
+ });
9819
10096
  var SelectFilterTooltip = () => {
9820
10097
  return /* @__PURE__ */ jsxs(Stack24, { alignItems: "flex-start", spacing: 0, children: [
9821
10098
  /* @__PURE__ */ jsx(Typography28, { fontSize: "10pt", color: "text.secondary", pb: 1, children: "Select nodes by dbt node selector syntax" }),
9822
10099
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
9823
- /* @__PURE__ */ jsx(
9824
- Box35,
9825
- {
9826
- component: "code",
9827
- sx: {
9828
- fontSize: "8pt",
9829
- bgcolor: "grey.100",
9830
- px: 0.5,
9831
- borderRadius: 1
9832
- },
9833
- children: "model_name"
9834
- }
9835
- ),
10100
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "model_name" }),
9836
10101
  " ",
9837
10102
  "Select a node"
9838
10103
  ] }),
9839
10104
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
9840
- /* @__PURE__ */ jsx(
9841
- Box35,
9842
- {
9843
- component: "code",
9844
- sx: {
9845
- fontSize: "8pt",
9846
- bgcolor: "grey.100",
9847
- px: 0.5,
9848
- borderRadius: 1
9849
- },
9850
- children: "model_name+"
9851
- }
9852
- ),
10105
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "model_name+" }),
9853
10106
  " ",
9854
10107
  "Select downstream nodes"
9855
10108
  ] }),
9856
10109
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
9857
- /* @__PURE__ */ jsx(
9858
- Box35,
9859
- {
9860
- component: "code",
9861
- sx: {
9862
- fontSize: "8pt",
9863
- bgcolor: "grey.100",
9864
- px: 0.5,
9865
- borderRadius: 1
9866
- },
9867
- children: "+model_name"
9868
- }
9869
- ),
10110
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "+model_name" }),
9870
10111
  " ",
9871
10112
  "Select upstream nodes"
9872
10113
  ] }),
9873
10114
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
9874
- /* @__PURE__ */ jsx(
9875
- Box35,
9876
- {
9877
- component: "code",
9878
- sx: {
9879
- fontSize: "8pt",
9880
- bgcolor: "grey.100",
9881
- px: 0.5,
9882
- borderRadius: 1
9883
- },
9884
- children: "model*"
9885
- }
9886
- ),
10115
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "model*" }),
9887
10116
  " ",
9888
10117
  "Select by wildcard"
9889
10118
  ] })
@@ -10056,8 +10285,8 @@ var NodeSelectionInput = (props) => {
10056
10285
  boxShadow: 3,
10057
10286
  border: 1,
10058
10287
  borderRadius: 1,
10059
- color: "black",
10060
- bgcolor: "white"
10288
+ color: "text.primary",
10289
+ bgcolor: "background.paper"
10061
10290
  }
10062
10291
  }
10063
10292
  },
@@ -10401,7 +10630,7 @@ var LearnHowLink = () => {
10401
10630
  href: "https://docs.datarecce.io/get-started/#prepare-dbt-artifacts",
10402
10631
  target: "_blank",
10403
10632
  sx: {
10404
- color: "rgba(49, 130, 206, 1)",
10633
+ color: "primary.main",
10405
10634
  fontWeight: "bold",
10406
10635
  textDecoration: "underline",
10407
10636
  display: "inline-flex",
@@ -10509,7 +10738,7 @@ function PrivateSingleEnvSchemaView({ current, showMenu = true }, ref) {
10509
10738
  getRowClass,
10510
10739
  onCellClicked: handleCellClicked,
10511
10740
  onGridReady: handleGridReady,
10512
- rowSelection: "single"
10741
+ rowSelection: { mode: "singleRow" }
10513
10742
  }
10514
10743
  )
10515
10744
  ] });
@@ -10636,7 +10865,7 @@ function PrivateSchemaView({ base, current, showMenu = true }, ref) {
10636
10865
  getRowClass,
10637
10866
  onCellClicked: handleCellClicked,
10638
10867
  onGridReady: handleGridReady,
10639
- rowSelection: "single"
10868
+ rowSelection: { mode: "singleRow" }
10640
10869
  }
10641
10870
  )
10642
10871
  ] });
@@ -10832,6 +11061,8 @@ var NodeSqlView = ({ node }) => {
10832
11061
  const [isOpen, setIsOpen] = useState(false);
10833
11062
  const [isHovered, setIsHovered] = useState(false);
10834
11063
  const { data: flags, isLoading } = useRecceServerFlag();
11064
+ const muiTheme = useTheme();
11065
+ const isDark = muiTheme.palette.mode === "dark";
10835
11066
  const isSingleEnvOnboarding = flags?.single_env_onboarding;
10836
11067
  if (isLoading) {
10837
11068
  return /* @__PURE__ */ jsx(Fragment, {});
@@ -10861,7 +11092,8 @@ var NodeSqlView = ({ node }) => {
10861
11092
  value: original ?? "",
10862
11093
  readOnly: true,
10863
11094
  lineNumbers: true,
10864
- wordWrap: false
11095
+ wordWrap: false,
11096
+ theme: isDark ? "dark" : "light"
10865
11097
  }
10866
11098
  ) : /* @__PURE__ */ jsx(
10867
11099
  DiffEditor,
@@ -10872,6 +11104,7 @@ var NodeSqlView = ({ node }) => {
10872
11104
  readOnly: true,
10873
11105
  lineNumbers: true,
10874
11106
  sideBySide: false,
11107
+ theme: isDark ? "dark" : "light",
10875
11108
  height: "100%"
10876
11109
  }
10877
11110
  ),
@@ -10921,7 +11154,8 @@ var NodeSqlView = ({ node }) => {
10921
11154
  fontSize: 16,
10922
11155
  readOnly: true,
10923
11156
  lineNumbers: true,
10924
- wordWrap: false
11157
+ wordWrap: false,
11158
+ theme: isDark ? "dark" : "light"
10925
11159
  }
10926
11160
  ) : /* @__PURE__ */ jsx(
10927
11161
  DiffEditor,
@@ -10929,6 +11163,7 @@ var NodeSqlView = ({ node }) => {
10929
11163
  original: original ?? "",
10930
11164
  modified: modified ?? "",
10931
11165
  language: "sql",
11166
+ theme: isDark ? "dark" : "light",
10932
11167
  className: "text-base"
10933
11168
  }
10934
11169
  ) })
@@ -11913,6 +12148,8 @@ function SqlEditor({
11913
12148
  ...props
11914
12149
  }) {
11915
12150
  const { featureToggles } = useRecceInstanceContext();
12151
+ const muiTheme = useTheme();
12152
+ const isDark = muiTheme.palette.mode === "dark";
11916
12153
  const handleEditorChange = (value2) => {
11917
12154
  if (onChange) {
11918
12155
  onChange(value2);
@@ -11961,7 +12198,7 @@ function SqlEditor({
11961
12198
  {
11962
12199
  direction: "row",
11963
12200
  sx: {
11964
- bgcolor: "#EDF2F880",
12201
+ bgcolor: isDark ? alpha(colors.neutral[700], 0.5) : alpha(colors.neutral[100], 0.5),
11965
12202
  height: "40px",
11966
12203
  minHeight: "40px",
11967
12204
  fontSize: "14px",
@@ -11996,7 +12233,7 @@ function SqlEditor({
11996
12233
  size: "xsmall",
11997
12234
  variant: "outlined",
11998
12235
  onClick: onRun ?? onRunBase,
11999
- sx: { bgcolor: "white", p: "6px 12px" },
12236
+ sx: { bgcolor: "background.paper", p: "6px 12px" },
12000
12237
  disabled: featureToggles.disableDatabaseQuery,
12001
12238
  startIcon: /* @__PURE__ */ jsx(FaPlay, {}),
12002
12239
  children: "Run Query"
@@ -12016,6 +12253,7 @@ function SqlEditor({
12016
12253
  wordWrap: options.wordWrap !== "off",
12017
12254
  fontSize: options.fontSize ?? 16,
12018
12255
  keyBindings,
12256
+ theme: isDark ? "dark" : "light",
12019
12257
  className: "no-track-pii-safe max-h-dvh h-full"
12020
12258
  }
12021
12259
  )
@@ -12052,7 +12290,8 @@ function DualSqlEditor({
12052
12290
  height: "100%",
12053
12291
  width: "50%",
12054
12292
  gap: 0,
12055
- borderRight: "1px solid #D4DBE4"
12293
+ borderRight: "1px solid",
12294
+ borderRightColor: "divider"
12056
12295
  },
12057
12296
  children: /* @__PURE__ */ jsx(
12058
12297
  SqlEditor,
@@ -12202,6 +12441,7 @@ var RunView = forwardRef(
12202
12441
  children,
12203
12442
  onExecuteRun
12204
12443
  }, ref) => {
12444
+ const theme = useTheme();
12205
12445
  const errorMessage = error?.response?.data?.detail ?? run?.error;
12206
12446
  if (errorMessage) {
12207
12447
  return /* @__PURE__ */ jsxs(MuiAlert, { severity: "error", children: [
@@ -12226,7 +12466,7 @@ var RunView = forwardRef(
12226
12466
  justifyContent: "center",
12227
12467
  p: "1rem",
12228
12468
  height: "100%",
12229
- bgcolor: "rgb(249,249,249)"
12469
+ bgcolor: theme.palette.mode === "dark" ? "grey.900" : "grey.50"
12230
12470
  },
12231
12471
  children: /* @__PURE__ */ jsxs(Stack24, { spacing: 2, alignItems: "center", children: [
12232
12472
  /* @__PURE__ */ jsxs(Stack24, { direction: "row", alignItems: "center", spacing: 1, children: [
@@ -12279,10 +12519,10 @@ var RunView = forwardRef(
12279
12519
  display: "flex",
12280
12520
  alignItems: "center",
12281
12521
  justifyContent: "center",
12282
- bgcolor: "rgb(249,249,249)",
12522
+ bgcolor: theme.palette.mode === "dark" ? "grey.900" : "grey.50",
12283
12523
  height: "100%"
12284
12524
  },
12285
- children: "Loading..."
12525
+ children: /* @__PURE__ */ jsx(CircularProgress4, { size: 32 })
12286
12526
  }
12287
12527
  );
12288
12528
  }
@@ -12322,6 +12562,8 @@ var RunView = forwardRef(
12322
12562
  }
12323
12563
  );
12324
12564
  var _ParamView = (data) => {
12565
+ const muiTheme = useTheme();
12566
+ const isDark = muiTheme.palette.mode === "dark";
12325
12567
  const yaml3 = YAML.stringify(data, null, 2);
12326
12568
  return /* @__PURE__ */ jsx(
12327
12569
  CodeEditor,
@@ -12333,6 +12575,7 @@ var _ParamView = (data) => {
12333
12575
  wordWrap: true,
12334
12576
  fontSize: 14,
12335
12577
  height: "100%",
12578
+ theme: isDark ? "dark" : "light",
12336
12579
  className: "no-track-pii-safe"
12337
12580
  }
12338
12581
  );
@@ -12686,7 +12929,8 @@ function SandboxTopBar({
12686
12929
  p: "4pt 8pt",
12687
12930
  gap: "5px",
12688
12931
  height: "54px",
12689
- borderBottom: "1px solid lightgray",
12932
+ borderBottom: "1px solid",
12933
+ borderBottomColor: "divider",
12690
12934
  flex: "0 0 54px"
12691
12935
  },
12692
12936
  children: [
@@ -12741,6 +12985,8 @@ function SandboxEditorLabels({
12741
12985
  height = "32px",
12742
12986
  flex = "0 0 auto"
12743
12987
  }) {
12988
+ const theme = useTheme();
12989
+ const isDark = theme.palette.mode === "dark";
12744
12990
  const { lineageGraph, envInfo } = useLineageGraphContext();
12745
12991
  const widthOfBar = "50%";
12746
12992
  const margin = "0 16px";
@@ -12768,7 +13014,7 @@ function SandboxEditorLabels({
12768
13014
  fontSize: "14px",
12769
13015
  alignItems: "center",
12770
13016
  m: 0,
12771
- bgcolor: "#EDF2F880"
13017
+ bgcolor: isDark ? alpha(colors.neutral[700], 0.5) : alpha(colors.neutral[100], 0.5)
12772
13018
  },
12773
13019
  children: [
12774
13020
  /* @__PURE__ */ jsx(Stack24, { sx: { width: widthOfBar }, children: /* @__PURE__ */ jsxs(Typography28, { sx: { fontWeight: "bold", margin }, children: [
@@ -12784,6 +13030,8 @@ function SandboxEditorLabels({
12784
13030
  );
12785
13031
  }
12786
13032
  function SqlPreview({ current, onChange }) {
13033
+ const muiTheme = useTheme();
13034
+ const isDark = muiTheme.palette.mode === "dark";
12787
13035
  return /* @__PURE__ */ jsx(
12788
13036
  DiffEditor,
12789
13037
  {
@@ -12793,6 +13041,7 @@ function SqlPreview({ current, onChange }) {
12793
13041
  readOnly: false,
12794
13042
  lineNumbers: true,
12795
13043
  sideBySide: true,
13044
+ theme: isDark ? "dark" : "light",
12796
13045
  height: "100%",
12797
13046
  onModifiedChange: onChange
12798
13047
  }
@@ -12920,7 +13169,7 @@ function SandboxView({ isOpen, onClose, current }) {
12920
13169
  {
12921
13170
  sx: {
12922
13171
  height: "40px",
12923
- bgcolor: "rgb(77, 209, 176)",
13172
+ bgcolor: "cyan.600",
12924
13173
  px: 0,
12925
13174
  py: 2,
12926
13175
  display: "flex",
@@ -12951,7 +13200,7 @@ function SandboxView({ isOpen, onClose, current }) {
12951
13200
  sx: {
12952
13201
  fontFamily: '"Montserrat", sans-serif',
12953
13202
  fontSize: "1.125rem",
12954
- color: "white"
13203
+ color: "common.white"
12955
13204
  },
12956
13205
  children: "RECCE"
12957
13206
  }
@@ -12964,7 +13213,7 @@ function SandboxView({ isOpen, onClose, current }) {
12964
13213
  variant: "outlined",
12965
13214
  sx: {
12966
13215
  fontSize: "0.875rem",
12967
- color: "white",
13216
+ color: "common.white",
12968
13217
  borderColor: "rgba(255,255,255,0.5)"
12969
13218
  }
12970
13219
  }
@@ -12981,7 +13230,7 @@ function SandboxView({ isOpen, onClose, current }) {
12981
13230
  position: "absolute",
12982
13231
  right: 8,
12983
13232
  top: 4,
12984
- color: "white"
13233
+ color: "common.white"
12985
13234
  },
12986
13235
  children: /* @__PURE__ */ jsx(IoClose, {})
12987
13236
  }
@@ -13568,10 +13817,7 @@ function getSettingsUrl(instanceInfo) {
13568
13817
  }
13569
13818
  function SetupConnectionBanner() {
13570
13819
  const { featureToggles } = useRecceInstanceContext();
13571
- const { data: instanceInfo } = useQuery({
13572
- queryKey: cacheKeys.instanceInfo(),
13573
- queryFn: getRecceInstanceInfo
13574
- });
13820
+ const { data: instanceInfo } = useRecceInstanceInfo();
13575
13821
  if (featureToggles.mode !== "metadata only") {
13576
13822
  return null;
13577
13823
  }
@@ -13641,7 +13887,7 @@ function BaseEnvironmentSetupGuide() {
13641
13887
  {
13642
13888
  sx: {
13643
13889
  p: 1,
13644
- bgcolor: "white",
13890
+ bgcolor: "background.paper",
13645
13891
  borderRadius: "50%",
13646
13892
  display: "flex",
13647
13893
  alignItems: "center",
@@ -14095,7 +14341,7 @@ var edgeTypes = {
14095
14341
  lineageGraphEdge: GraphEdge
14096
14342
  };
14097
14343
  var nodeColor = (node) => {
14098
- return node.data.changeStatus ? getIconForChangeStatus(node.data.changeStatus).hexColor : "lightgray";
14344
+ return node.data.changeStatus ? getIconForChangeStatus(node.data.changeStatus).hexColor : colors.neutral[400];
14099
14345
  };
14100
14346
  var useResizeObserver = (ref, handler) => {
14101
14347
  const size = useRef({
@@ -14142,6 +14388,7 @@ var useNavToCheck = () => {
14142
14388
  );
14143
14389
  };
14144
14390
  function PrivateLineageView({ interactive = false, ...props }, ref) {
14391
+ const { isDark } = useThemeColors();
14145
14392
  const reactFlow = useReactFlow();
14146
14393
  const refResize = useRef(null);
14147
14394
  const { successToast, failToast } = useClipBoardToast();
@@ -14153,7 +14400,7 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
14153
14400
  renderLibrary: "html-to-image",
14154
14401
  imageType: "png",
14155
14402
  shadowEffect: true,
14156
- backgroundColor: "white",
14403
+ backgroundColor: isDark ? colors.neutral[900] : colors.neutral[50],
14157
14404
  ignoreElements: (element) => {
14158
14405
  try {
14159
14406
  return element.classList.contains(IGNORE_SCREENSHOT_CLASS);
@@ -15005,14 +15252,28 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
15005
15252
  minZoom: 0.1,
15006
15253
  nodesDraggable: interactive,
15007
15254
  ref: refReactFlow,
15255
+ colorMode: isDark ? "dark" : "light",
15008
15256
  children: [
15009
- /* @__PURE__ */ jsx(Background, { color: "#ccc" }),
15257
+ /* @__PURE__ */ jsx(
15258
+ Background,
15259
+ {
15260
+ id: "lineage-bg",
15261
+ variant: BackgroundVariant.Dots,
15262
+ color: isDark ? colors.neutral[700] : colors.neutral[300],
15263
+ gap: 20,
15264
+ size: 2
15265
+ }
15266
+ ),
15010
15267
  /* @__PURE__ */ jsx(
15011
15268
  Controls,
15012
15269
  {
15013
15270
  showInteractive: false,
15014
15271
  position: "top-right",
15015
15272
  className: IGNORE_SCREENSHOT_CLASS,
15273
+ style: {
15274
+ backgroundColor: isDark ? colors.neutral[700] : void 0,
15275
+ borderColor: isDark ? colors.neutral[600] : void 0
15276
+ },
15016
15277
  children: /* @__PURE__ */ jsx(
15017
15278
  ControlButton,
15018
15279
  {
@@ -15024,6 +15285,10 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
15024
15285
  from: "lineage_view"
15025
15286
  });
15026
15287
  },
15288
+ style: {
15289
+ backgroundColor: isDark ? colors.neutral[700] : void 0,
15290
+ color: isDark ? colors.neutral[200] : void 0
15291
+ },
15027
15292
  children: /* @__PURE__ */ jsx(Box35, { component: FiCopy })
15028
15293
  }
15029
15294
  )
@@ -15057,7 +15322,9 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
15057
15322
  nodeColor,
15058
15323
  nodeStrokeWidth: 3,
15059
15324
  zoomable: true,
15060
- pannable: true
15325
+ pannable: true,
15326
+ bgColor: isDark ? colors.neutral[800] : void 0,
15327
+ maskColor: isDark ? `${colors.neutral[900]}99` : `${colors.neutral[100]}99`
15061
15328
  }
15062
15329
  ),
15063
15330
  selectMode === "action_result" && /* @__PURE__ */ jsx(
@@ -15082,7 +15349,17 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
15082
15349
  ]
15083
15350
  }
15084
15351
  ),
15085
- focusedNode ? /* @__PURE__ */ jsx(Box35, { sx: { borderLeft: "solid 1px lightgray", height: "100%" }, children: /* @__PURE__ */ jsx(NodeView, { node: focusedNode, onCloseNode: onNodeViewClosed }) }) : /* @__PURE__ */ jsx(Box35, {})
15352
+ focusedNode ? /* @__PURE__ */ jsx(
15353
+ Box35,
15354
+ {
15355
+ sx: {
15356
+ borderLeft: "solid 1px",
15357
+ borderColor: "divider",
15358
+ height: "100%"
15359
+ },
15360
+ children: /* @__PURE__ */ jsx(NodeView, { node: focusedNode, onCloseNode: onNodeViewClosed })
15361
+ }
15362
+ ) : /* @__PURE__ */ jsx(Box35, {})
15086
15363
  ]
15087
15364
  }
15088
15365
  ),
@@ -15096,10 +15373,7 @@ function LineagePage() {
15096
15373
  return /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(LineageView, { interactive: true }) });
15097
15374
  }
15098
15375
  function SetupConnectionGuide() {
15099
- const { data: instanceInfo } = useQuery({
15100
- queryKey: cacheKeys.instanceInfo(),
15101
- queryFn: getRecceInstanceInfo
15102
- });
15376
+ const { data: instanceInfo } = useRecceInstanceInfo();
15103
15377
  return /* @__PURE__ */ jsx("div", { className: "flex flex-1 h-full min-h-0 m-2 p-4 bg-blue-50 rounded-lg shadow-md justify-center", children: /* @__PURE__ */ jsxs("div", { className: "w-4/5 flex flex-col overflow-y-auto gap-6 px-8 pb-8", children: [
15104
15378
  /* @__PURE__ */ jsxs(Stack24, { alignItems: "center", spacing: 2, children: [
15105
15379
  /* @__PURE__ */ jsx(
@@ -15107,7 +15381,7 @@ function SetupConnectionGuide() {
15107
15381
  {
15108
15382
  sx: {
15109
15383
  p: 1,
15110
- bgcolor: "white",
15384
+ bgcolor: "background.paper",
15111
15385
  borderRadius: "50%",
15112
15386
  display: "flex",
15113
15387
  alignItems: "center",
@@ -15256,7 +15530,8 @@ ${sqlQuery}`;
15256
15530
  padding: "4pt 8pt",
15257
15531
  gap: "5px",
15258
15532
  height: "54px",
15259
- borderBottom: "1px solid lightgray"
15533
+ borderBottom: "1px solid",
15534
+ borderColor: "divider"
15260
15535
  },
15261
15536
  children: [
15262
15537
  /* @__PURE__ */ jsx(HistoryToggle, {}),
@@ -15321,7 +15596,8 @@ ${sqlQuery}`;
15321
15596
  padding: "4pt 8pt",
15322
15597
  gap: "5px",
15323
15598
  height: "54px",
15324
- borderBottom: "1px solid lightgray",
15599
+ borderBottom: "1px solid",
15600
+ borderColor: "divider",
15325
15601
  flex: "0 0 54px"
15326
15602
  },
15327
15603
  children: [
@@ -15410,6 +15686,8 @@ var ChecklistItem = ({
15410
15686
  onSelect,
15411
15687
  onMarkAsApproved
15412
15688
  }) => {
15689
+ const theme = useTheme();
15690
+ const isDark = theme.palette.mode === "dark";
15413
15691
  const { featureToggles } = useRecceInstanceContext();
15414
15692
  const queryClient = useQueryClient();
15415
15693
  const checkId = check.check_id;
@@ -15434,10 +15712,10 @@ var ChecklistItem = ({
15434
15712
  width: "100%",
15435
15713
  p: "0.25rem 1.25rem",
15436
15714
  cursor: "pointer",
15437
- "&:hover": { bgcolor: "Cornsilk" },
15438
- bgcolor: selected ? "Floralwhite" : "inherit",
15715
+ "&:hover": { bgcolor: isDark ? "grey.800" : "Cornsilk" },
15716
+ bgcolor: selected ? isDark ? "grey.900" : "Floralwhite" : "inherit",
15439
15717
  borderBottom: "1px solid",
15440
- borderBottomColor: "divider",
15718
+ borderBottomColor: isDark ? "grey.700" : "divider",
15441
15719
  borderLeft: "3px solid",
15442
15720
  borderLeftColor: selected ? "orange" : "transparent",
15443
15721
  display: "flex",
@@ -15485,7 +15763,7 @@ var ChecklistItem = ({
15485
15763
  onClick: (e) => e.stopPropagation(),
15486
15764
  sx: {
15487
15765
  borderColor: "border.inverted",
15488
- bgcolor: isMarkAsApprovedDisabled ? "grey.200" : void 0
15766
+ bgcolor: isMarkAsApprovedDisabled ? isDark ? "grey.700" : "grey.200" : void 0
15489
15767
  }
15490
15768
  }
15491
15769
  ) })
@@ -15773,6 +16051,8 @@ function CommentInput({
15773
16051
  isSubmitting = false,
15774
16052
  placeholder = "Add a comment..."
15775
16053
  }) {
16054
+ const theme = useTheme();
16055
+ const isDark = theme.palette.mode === "dark";
15776
16056
  const [content, setContent] = useState("");
15777
16057
  const handleSubmit = () => {
15778
16058
  const trimmed = content.trim();
@@ -15802,14 +16082,17 @@ function CommentInput({
15802
16082
  disabled: isSubmitting,
15803
16083
  sx: {
15804
16084
  "& .MuiOutlinedInput-root": {
15805
- bgcolor: "white",
16085
+ bgcolor: "background.paper",
15806
16086
  "&:hover .MuiOutlinedInput-notchedOutline": {
15807
- borderColor: "grey.400"
16087
+ borderColor: isDark ? "grey.500" : "grey.400"
15808
16088
  },
15809
16089
  "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
15810
16090
  borderColor: "iochmara.400",
15811
16091
  boxShadow: "0 0 0 1px #4299E1"
15812
16092
  }
16093
+ },
16094
+ "& .MuiOutlinedInput-notchedOutline": {
16095
+ borderColor: isDark ? "grey.600" : void 0
15813
16096
  }
15814
16097
  }
15815
16098
  }
@@ -15996,7 +16279,8 @@ function MarkdownLink({
15996
16279
  }
15997
16280
  function CodeBlock({
15998
16281
  className,
15999
- children
16282
+ children,
16283
+ isDark = false
16000
16284
  }) {
16001
16285
  const match = /language-(\w+)/.exec(className || "");
16002
16286
  const language = match ? match[1] : void 0;
@@ -16008,7 +16292,8 @@ function CodeBlock({
16008
16292
  {
16009
16293
  component: "code",
16010
16294
  sx: {
16011
- bgcolor: "grey.100",
16295
+ bgcolor: isDark ? "grey.800" : "grey.100",
16296
+ color: isDark ? "grey.200" : "inherit",
16012
16297
  px: 1,
16013
16298
  py: 0.5,
16014
16299
  borderRadius: 0.5,
@@ -16045,6 +16330,8 @@ function MarkdownContent({
16045
16330
  fontSize = "0.875rem",
16046
16331
  internalDomains = []
16047
16332
  }) {
16333
+ const theme = useTheme();
16334
+ const isDark = theme.palette.mode === "dark";
16048
16335
  const allInternalDomains = [
16049
16336
  window.location.hostname,
16050
16337
  "reccehq.com",
@@ -16056,7 +16343,7 @@ function MarkdownContent({
16056
16343
  // Links with external confirmation
16057
16344
  a: ({ href, children }) => /* @__PURE__ */ jsx(MarkdownLink, { href, internalDomains: allInternalDomains, children }),
16058
16345
  // Code blocks with syntax highlighting
16059
- code: CodeBlock,
16346
+ code: (props) => /* @__PURE__ */ jsx(CodeBlock, { ...props, isDark }),
16060
16347
  // Paragraphs
16061
16348
  p: ({ children }) => /* @__PURE__ */ jsx(
16062
16349
  Typography28,
@@ -16092,11 +16379,11 @@ function MarkdownContent({
16092
16379
  {
16093
16380
  sx: {
16094
16381
  borderLeft: "3px solid",
16095
- borderLeftColor: "grey.300",
16382
+ borderLeftColor: isDark ? "grey.600" : "grey.300",
16096
16383
  pl: 3,
16097
16384
  py: 1,
16098
16385
  my: 2,
16099
- color: "grey.600",
16386
+ color: isDark ? "grey.400" : "grey.600",
16100
16387
  fontStyle: "italic"
16101
16388
  },
16102
16389
  children
@@ -16111,19 +16398,22 @@ function MarkdownContent({
16111
16398
  width: "100%",
16112
16399
  fontSize,
16113
16400
  border: "1px solid",
16114
- borderColor: "grey.200",
16401
+ borderColor: isDark ? "grey.700" : "grey.200",
16115
16402
  borderRadius: 1
16116
16403
  },
16117
16404
  children
16118
16405
  }
16119
16406
  ) }),
16120
- thead: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "thead", sx: { bgcolor: "grey.50" }, children }),
16407
+ thead: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "thead", sx: { bgcolor: isDark ? "grey.800" : "grey.50" }, children }),
16121
16408
  tbody: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "tbody", children }),
16122
16409
  tr: ({ children }) => /* @__PURE__ */ jsx(
16123
16410
  Box35,
16124
16411
  {
16125
16412
  component: "tr",
16126
- sx: { borderBottom: "1px solid", borderColor: "grey.200" },
16413
+ sx: {
16414
+ borderBottom: "1px solid",
16415
+ borderColor: isDark ? "grey.700" : "grey.200"
16416
+ },
16127
16417
  children
16128
16418
  }
16129
16419
  ),
@@ -16137,7 +16427,13 @@ function MarkdownContent({
16137
16427
  ),
16138
16428
  td: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "td", sx: { px: 2, py: 1 }, children }),
16139
16429
  // Horizontal rule
16140
- hr: () => /* @__PURE__ */ jsx(Box35, { component: "hr", sx: { my: 3, borderColor: "grey.200" } }),
16430
+ hr: () => /* @__PURE__ */ jsx(
16431
+ Box35,
16432
+ {
16433
+ component: "hr",
16434
+ sx: { my: 3, borderColor: isDark ? "grey.700" : "grey.200" }
16435
+ }
16436
+ ),
16141
16437
  // Strong/Bold
16142
16438
  strong: ({ children }) => /* @__PURE__ */ jsx(Typography28, { component: "strong", sx: { fontWeight: 600 }, children }),
16143
16439
  // Emphasis/Italic
@@ -16249,6 +16545,8 @@ function CommentEvent({
16249
16545
  onEdit,
16250
16546
  onDelete
16251
16547
  }) {
16548
+ const theme = useTheme();
16549
+ const isDark = theme.palette.mode === "dark";
16252
16550
  const [isEditing, setIsEditing] = useState(false);
16253
16551
  const [editContent, setEditContent] = useState(event.content || "");
16254
16552
  const [isSubmitting, setIsSubmitting] = useState(false);
@@ -16368,7 +16666,7 @@ function CommentEvent({
16368
16666
  autoFocus: true,
16369
16667
  sx: {
16370
16668
  "& .MuiOutlinedInput-root": {
16371
- bgcolor: "white",
16669
+ bgcolor: "background.paper",
16372
16670
  "&:focus-within": {
16373
16671
  borderColor: "primary.main"
16374
16672
  }
@@ -16414,11 +16712,11 @@ function CommentEvent({
16414
16712
  Box35,
16415
16713
  {
16416
16714
  sx: {
16417
- bgcolor: "grey.50",
16715
+ bgcolor: isDark ? "grey.800" : "grey.50",
16418
16716
  borderRadius: 1,
16419
16717
  p: 1,
16420
16718
  border: "1px solid",
16421
- borderColor: "grey.200",
16719
+ borderColor: isDark ? "grey.700" : "grey.200",
16422
16720
  position: "relative",
16423
16721
  "&:hover .comment-actions": {
16424
16722
  opacity: 1
@@ -16541,6 +16839,8 @@ function TimelineEvent({
16541
16839
  return /* @__PURE__ */ jsx(StateChangeEvent, { event });
16542
16840
  }
16543
16841
  function CheckTimeline({ checkId }) {
16842
+ const theme = useTheme();
16843
+ const isDark = theme.palette.mode === "dark";
16544
16844
  const {
16545
16845
  events,
16546
16846
  isLoading,
@@ -16601,7 +16901,7 @@ function CheckTimeline({ checkId }) {
16601
16901
  height: "100%",
16602
16902
  alignItems: "stretch",
16603
16903
  borderLeft: "1px solid",
16604
- borderColor: "grey.200"
16904
+ borderColor: isDark ? "grey.700" : "grey.200"
16605
16905
  },
16606
16906
  spacing: 0,
16607
16907
  children: [
@@ -16612,7 +16912,7 @@ function CheckTimeline({ checkId }) {
16612
16912
  px: 3,
16613
16913
  py: 2,
16614
16914
  borderBottom: "1px solid",
16615
- borderColor: "grey.200"
16915
+ borderColor: isDark ? "grey.700" : "grey.200"
16616
16916
  },
16617
16917
  children: /* @__PURE__ */ jsx(Typography28, { variant: "subtitle2", sx: { fontWeight: 500 }, children: "Activity" })
16618
16918
  }
@@ -16627,7 +16927,12 @@ function CheckTimeline({ checkId }) {
16627
16927
  onDelete: handleDeleteComment
16628
16928
  }
16629
16929
  ),
16630
- index < events.length - 1 && /* @__PURE__ */ jsx(Divider, { sx: { borderColor: "grey.100" } })
16930
+ index < events.length - 1 && /* @__PURE__ */ jsx(
16931
+ Divider,
16932
+ {
16933
+ sx: { borderColor: isDark ? "grey.700" : "grey.100" }
16934
+ }
16935
+ )
16631
16936
  ] }, event.id)) }) }),
16632
16937
  /* @__PURE__ */ jsx(
16633
16938
  Box35,
@@ -16636,8 +16941,8 @@ function CheckTimeline({ checkId }) {
16636
16941
  px: 3,
16637
16942
  py: 3,
16638
16943
  borderTop: "1px solid",
16639
- borderColor: "grey.200",
16640
- bgcolor: "grey.50"
16944
+ borderColor: isDark ? "grey.700" : "grey.200",
16945
+ bgcolor: isDark ? "grey.900" : "grey.50"
16641
16946
  },
16642
16947
  children: /* @__PURE__ */ jsx(
16643
16948
  CommentInput,
@@ -16697,16 +17002,18 @@ function CheckBreadcrumb({ name, setName }) {
16697
17002
  };
16698
17003
  }, [isEditing, handleCommit]);
16699
17004
  return /* @__PURE__ */ jsx(
16700
- Breadcrumbs,
17005
+ Box35,
16701
17006
  {
16702
17007
  sx: {
16703
- flex: "0 1 auto",
16704
- fontSize: "12pt",
17008
+ flex: "2",
17009
+ fontSize: "1rem",
16705
17010
  fontWeight: 500,
16706
- overflow: "hidden"
17011
+ overflow: "hidden",
17012
+ color: "text.primary",
17013
+ cursor: "pointer"
16707
17014
  },
16708
17015
  className: "no-track-pii-safe",
16709
- children: /* @__PURE__ */ jsx(Box35, { sx: { cursor: "pointer", flex: "0 1 auto", overflow: "hidden" }, children: isEditing ? /* @__PURE__ */ jsx(
17016
+ children: isEditing ? /* @__PURE__ */ jsx(
16710
17017
  TextField,
16711
17018
  {
16712
17019
  inputRef: editInputRef,
@@ -16729,7 +17036,7 @@ function CheckBreadcrumb({ name, setName }) {
16729
17036
  onClick: handleClick,
16730
17037
  children: name
16731
17038
  }
16732
- ) })
17039
+ )
16733
17040
  }
16734
17041
  );
16735
17042
  }
@@ -16890,6 +17197,8 @@ function generateCheckTemplate({
16890
17197
  function PresetCheckTemplateView({
16891
17198
  yamlTemplate
16892
17199
  }) {
17200
+ const muiTheme = useTheme();
17201
+ const isDark = muiTheme.palette.mode === "dark";
16893
17202
  return /* @__PURE__ */ jsx(
16894
17203
  CodeEditor,
16895
17204
  {
@@ -16899,6 +17208,7 @@ function PresetCheckTemplateView({
16899
17208
  lineNumbers: false,
16900
17209
  wordWrap: true,
16901
17210
  fontSize: 14,
17211
+ theme: isDark ? "dark" : "light",
16902
17212
  height: "300px"
16903
17213
  }
16904
17214
  );
@@ -16907,7 +17217,8 @@ var NodelistItem = ({
16907
17217
  node,
16908
17218
  selected,
16909
17219
  onSelect,
16910
- schemaChanged
17220
+ schemaChanged,
17221
+ isDark
16911
17222
  }) => {
16912
17223
  const { icon } = getIconForResourceType(node.data.resourceType);
16913
17224
  const { base, current } = node.data.data;
@@ -16932,8 +17243,8 @@ var NodelistItem = ({
16932
17243
  fontSize: "10pt",
16933
17244
  p: "5px 8px",
16934
17245
  cursor: "pointer",
16935
- "&:hover": { bgcolor: "grey.200" },
16936
- bgcolor: selected ? "grey.100" : "inherit",
17246
+ "&:hover": { bgcolor: isDark ? "grey.700" : "grey.200" },
17247
+ bgcolor: selected ? isDark ? "grey.800" : "grey.100" : "inherit",
16937
17248
  alignItems: "center",
16938
17249
  gap: "5px"
16939
17250
  },
@@ -16960,6 +17271,8 @@ var NodelistItem = ({
16960
17271
  ) });
16961
17272
  };
16962
17273
  function PrivateSchemaDiffView({ check }, ref) {
17274
+ const theme = useTheme();
17275
+ const isDark = theme.palette.mode === "dark";
16963
17276
  const { lineageGraph } = useLineageGraphContext();
16964
17277
  const params = check.params;
16965
17278
  const queryKey = [...cacheKeys.check(check.check_id), "select"];
@@ -17042,7 +17355,7 @@ function PrivateSchemaDiffView({ check }, ref) {
17042
17355
  display: "flex",
17043
17356
  alignItems: "center",
17044
17357
  justifyContent: "center",
17045
- bgcolor: "rgb(249,249,249)",
17358
+ bgcolor: isDark ? "grey.900" : "grey.50",
17046
17359
  height: "100%"
17047
17360
  },
17048
17361
  children: "Loading..."
@@ -17056,7 +17369,7 @@ function PrivateSchemaDiffView({ check }, ref) {
17056
17369
  display: "flex",
17057
17370
  alignItems: "center",
17058
17371
  justifyContent: "center",
17059
- bgcolor: "rgb(249,249,249)",
17372
+ bgcolor: isDark ? "grey.900" : "grey.50",
17060
17373
  height: "100%"
17061
17374
  },
17062
17375
  className: "no-track-pii-safe",
@@ -17074,7 +17387,7 @@ function PrivateSchemaDiffView({ check }, ref) {
17074
17387
  display: "flex",
17075
17388
  alignItems: "center",
17076
17389
  justifyContent: "center",
17077
- bgcolor: "rgb(249,249,249)",
17390
+ bgcolor: isDark ? "grey.900" : "grey.50",
17078
17391
  height: "100%"
17079
17392
  },
17080
17393
  children: "No nodes matched"
@@ -17098,7 +17411,7 @@ function PrivateSchemaDiffView({ check }, ref) {
17098
17411
  {
17099
17412
  sx: {
17100
17413
  overflow: "auto",
17101
- bgcolor: "white",
17414
+ bgcolor: "background.paper",
17102
17415
  listStyle: "none"
17103
17416
  },
17104
17417
  children: nodes.map((node2, i) => /* @__PURE__ */ jsx(
@@ -17107,6 +17420,7 @@ function PrivateSchemaDiffView({ check }, ref) {
17107
17420
  node: node2,
17108
17421
  schemaChanged: changedNodes.includes(node2.id),
17109
17422
  selected: i === selected,
17423
+ isDark,
17110
17424
  onSelect: () => {
17111
17425
  setSelected(i);
17112
17426
  }
@@ -17124,6 +17438,8 @@ function CheckDetail({
17124
17438
  checkId,
17125
17439
  refreshCheckList
17126
17440
  }) {
17441
+ const theme = useTheme();
17442
+ const isDark = theme.palette.mode === "dark";
17127
17443
  const { featureToggles, sessionId } = useRecceInstanceContext();
17128
17444
  const { setLatestSelectedCheckId } = useRecceCheckContext();
17129
17445
  const { cloudMode } = useLineageGraphContext();
@@ -17372,7 +17688,7 @@ function CheckDetail({
17372
17688
  alignItems: "center",
17373
17689
  height: 40,
17374
17690
  borderBottom: "2px solid",
17375
- borderColor: "grey.300"
17691
+ borderColor: isDark ? "grey.700" : "grey.300"
17376
17692
  },
17377
17693
  children: [
17378
17694
  checkTypeIcon && /* @__PURE__ */ jsx(
@@ -17417,7 +17733,7 @@ function CheckDetail({
17417
17733
  FaBookmark,
17418
17734
  {
17419
17735
  size: "1rem",
17420
- color: lightTheme.palette.iochmara.dark
17736
+ color: theme.palette.iochmara.dark
17421
17737
  }
17422
17738
  )
17423
17739
  }
@@ -17504,7 +17820,14 @@ function CheckDetail({
17504
17820
  handleApproveCheck();
17505
17821
  },
17506
17822
  disabled: isDisabledByNoResult(check.type, run) || featureToggles.disableUpdateChecklist,
17507
- startIcon: check.is_checked ? /* @__PURE__ */ jsx(PiCheckCircle, {}) : /* @__PURE__ */ jsx(VscCircleLarge, { style: { color: "lightgray" } }),
17823
+ startIcon: check.is_checked ? /* @__PURE__ */ jsx(PiCheckCircle, {}) : /* @__PURE__ */ jsx(
17824
+ VscCircleLarge,
17825
+ {
17826
+ style: {
17827
+ color: isDark ? theme.palette.grey[600] : theme.palette.grey[400]
17828
+ }
17829
+ }
17830
+ ),
17508
17831
  sx: { flex: "0 0 auto", textTransform: "none" },
17509
17832
  children: check.is_checked ? "Approved" : "Pending"
17510
17833
  }
@@ -17638,7 +17961,7 @@ function CheckDetail({
17638
17961
  display: "flex",
17639
17962
  alignItems: "center",
17640
17963
  justifyContent: "center",
17641
- bgcolor: "rgb(249,249,249)",
17964
+ bgcolor: isDark ? "grey.900" : "grey.50",
17642
17965
  height: "100%"
17643
17966
  },
17644
17967
  children: /* @__PURE__ */ jsxs(Stack24, { spacing: 2, alignItems: "center", children: [
@@ -17886,19 +18209,22 @@ var RunListItem = ({
17886
18209
  return /* @__PURE__ */ jsxs(
17887
18210
  Box35,
17888
18211
  {
17889
- sx: {
18212
+ sx: (theme) => ({
17890
18213
  minWidth: "200px",
17891
18214
  display: "flex",
17892
18215
  flexDirection: "column",
17893
18216
  width: "100%",
17894
18217
  p: "5px 20px",
17895
18218
  cursor: "pointer",
17896
- borderBottom: "solid 1px lightgray",
18219
+ borderBottom: "solid 1px",
18220
+ borderBottomColor: "divider",
17897
18221
  borderLeft: "4px solid",
17898
18222
  borderLeftColor: isSelected ? "amber.400" : "transparent",
17899
- backgroundColor: isSelected ? "amber.50" : "transparent",
17900
- "&:hover": { bgcolor: isSelected ? "orange.50" : "grey.200" }
17901
- },
18223
+ backgroundColor: isSelected ? theme.palette.mode === "dark" ? "amber.900" : "amber.50" : "transparent",
18224
+ "&:hover": {
18225
+ bgcolor: isSelected ? theme.palette.mode === "dark" ? "amber.800" : "orange.50" : theme.palette.mode === "dark" ? "grey.800" : "grey.200"
18226
+ }
18227
+ }),
17902
18228
  onClick: () => {
17903
18229
  onSelectRun(run.run_id);
17904
18230
  },
@@ -17984,7 +18310,8 @@ var DateSegmentItem = ({ runAt }) => {
17984
18310
  minWidth: "200px",
17985
18311
  width: "100%",
17986
18312
  p: "5px 20px",
17987
- borderBottom: "solid 1px lightgray",
18313
+ borderBottom: "solid 1px",
18314
+ borderBottomColor: "divider",
17988
18315
  color: "grey.500",
17989
18316
  fontSize: "11pt"
17990
18317
  },
@@ -18011,7 +18338,8 @@ var RunList = () => {
18011
18338
  width: "100%",
18012
18339
  flex: "0 0 54px",
18013
18340
  px: "24px 8px",
18014
- borderBottom: "solid 1px lightgray"
18341
+ borderBottom: "solid 1px",
18342
+ borderBottomColor: "divider"
18015
18343
  },
18016
18344
  children: [
18017
18345
  /* @__PURE__ */ jsx(Typography28, { variant: "h6", children: "History" }),
@@ -18085,7 +18413,7 @@ function DateDividedRunHistoryItem({
18085
18413
  },
18086
18414
  [setLocation]
18087
18415
  );
18088
- return /* @__PURE__ */ jsxs(React3.Fragment, { children: [
18416
+ return /* @__PURE__ */ jsxs(React4.Fragment, { children: [
18089
18417
  shouldRenderDateSegment && /* @__PURE__ */ jsx(DateSegmentItem, { runAt: run.run_at }, currentDate),
18090
18418
  /* @__PURE__ */ jsx(
18091
18419
  RunListItem,
@@ -18110,20 +18438,23 @@ var NODE_CHANGE_STATUS_MSGS = {
18110
18438
  folder_changed: ["Modified", "Modified folder"]
18111
18439
  };
18112
18440
  function getIconForChangeStatus2(changeStatus) {
18441
+ const greenColor = String(token("colors.green.solid"));
18442
+ const redColor = String(token("colors.red.solid"));
18443
+ const amberColor = String(token("colors.amber.emphasized"));
18113
18444
  if (changeStatus === "added") {
18114
- return { color: "#1dce00", icon: IconAdded };
18445
+ return { color: greenColor, icon: IconAdded };
18115
18446
  } else if (changeStatus === "removed") {
18116
- return { color: "#ff067e", icon: IconRemoved };
18447
+ return { color: redColor, icon: IconRemoved };
18117
18448
  } else if (changeStatus === "modified") {
18118
- return { color: "#ffa502", icon: IconModified };
18449
+ return { color: amberColor, icon: IconModified };
18119
18450
  } else if (changeStatus === "col_added") {
18120
- return { color: "#1dce00", icon: IconAdded };
18451
+ return { color: greenColor, icon: IconAdded };
18121
18452
  } else if (changeStatus === "col_removed") {
18122
- return { color: "#ff067e", icon: IconRemoved };
18453
+ return { color: redColor, icon: IconRemoved };
18123
18454
  } else if (changeStatus === "col_changed") {
18124
- return { color: "#ffa502", icon: IconModified };
18455
+ return { color: amberColor, icon: IconModified };
18125
18456
  } else if (changeStatus === "folder_changed") {
18126
- return { color: "#ffa502", icon: IconChanged };
18457
+ return { color: amberColor, icon: IconChanged };
18127
18458
  }
18128
18459
  return { color: "inherit", icon: void 0 };
18129
18460
  }
@@ -18223,11 +18554,12 @@ function ChangeSummary({ lineageGraph }) {
18223
18554
  container: true,
18224
18555
  sx: {
18225
18556
  mb: "10px",
18226
- borderTop: "1px solid lightgray",
18557
+ borderTop: "1px solid",
18558
+ borderColor: "divider",
18227
18559
  p: "2.5vw"
18228
18560
  },
18229
18561
  children: [
18230
- /* @__PURE__ */ jsx(Grid2, { size: 6, sx: { borderColor: "lightgray" }, children: /* @__PURE__ */ jsx(
18562
+ /* @__PURE__ */ jsx(Grid2, { size: 6, sx: { borderColor: "divider" }, children: /* @__PURE__ */ jsx(
18231
18563
  SummaryText,
18232
18564
  {
18233
18565
  name: "Code Changes",
@@ -18250,35 +18582,42 @@ function ChangeSummary({ lineageGraph }) {
18250
18582
  ] })
18251
18583
  }
18252
18584
  ) }),
18253
- /* @__PURE__ */ jsx(Grid2, { size: 6, sx: { borderLeft: "1px solid lightgray", pl: "12px" }, children: /* @__PURE__ */ jsx(
18254
- SummaryText,
18585
+ /* @__PURE__ */ jsx(
18586
+ Grid2,
18255
18587
  {
18256
- name: "Column Changes",
18257
- value: /* @__PURE__ */ jsxs(Grid2, { container: true, sx: { width: "100%" }, children: [
18258
- /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
18259
- ChangeStatusCountLabel,
18260
- {
18261
- changeStatus: "col_added",
18262
- value: col_added
18263
- }
18264
- ) }),
18265
- /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
18266
- ChangeStatusCountLabel,
18267
- {
18268
- changeStatus: "col_removed",
18269
- value: col_removed
18270
- }
18271
- ) }),
18272
- /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
18273
- ChangeStatusCountLabel,
18274
- {
18275
- changeStatus: "col_changed",
18276
- value: col_changed
18277
- }
18278
- ) })
18279
- ] })
18588
+ size: 6,
18589
+ sx: { borderLeft: "1px solid", borderLeftColor: "divider", pl: "12px" },
18590
+ children: /* @__PURE__ */ jsx(
18591
+ SummaryText,
18592
+ {
18593
+ name: "Column Changes",
18594
+ value: /* @__PURE__ */ jsxs(Grid2, { container: true, sx: { width: "100%" }, children: [
18595
+ /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
18596
+ ChangeStatusCountLabel,
18597
+ {
18598
+ changeStatus: "col_added",
18599
+ value: col_added
18600
+ }
18601
+ ) }),
18602
+ /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
18603
+ ChangeStatusCountLabel,
18604
+ {
18605
+ changeStatus: "col_removed",
18606
+ value: col_removed
18607
+ }
18608
+ ) }),
18609
+ /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
18610
+ ChangeStatusCountLabel,
18611
+ {
18612
+ changeStatus: "col_changed",
18613
+ value: col_changed
18614
+ }
18615
+ ) })
18616
+ ] })
18617
+ }
18618
+ )
18280
18619
  }
18281
- ) })
18620
+ )
18282
18621
  ]
18283
18622
  }
18284
18623
  );