@datarecce/ui 0.1.12 → 0.1.14

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
package/dist/index.mjs CHANGED
@@ -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 React12, { 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 React13, { 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, isAxiosError } from 'axios';
22
23
  import { FiCopy, FiPackage, FiInfo, FiArrowRight, FiFrown } from 'react-icons/fi';
@@ -54,11 +55,11 @@ import { VscKebabVertical, VscHistory, VscDiffAdded, VscDiffRemoved, VscDiffModi
54
55
  import { PiWarning, PiCaretDown, PiInfo, PiX, PiRepeat, PiCopy, PiDotsThreeVertical, PiCheck, PiTrashFill, PiCheckCircle, PiInfoFill, PiPencilSimple, PiTrashSimple, PiBookmarkSimple, PiNotePencil, PiCircle, PiChatText, PiPlusCircle } from 'react-icons/pi';
55
56
  import MuiTooltip from '@mui/material/Tooltip';
56
57
  import { useCopyToClipboard } from 'usehooks-ts';
57
- import './style-LYNBK7ND.css';
58
+ import './style-466WWZLM.css';
58
59
  import ListSubheader3 from '@mui/material/ListSubheader';
59
60
  import { themeQuartz, ModuleRegistry, AllCommunityModule } from 'ag-grid-community';
60
61
  import { AgGridReact } from 'ag-grid-react';
61
- import './agGridStyles-L5J6VVIU.css';
62
+ import './agGridStyles-VYALGSJU.css';
62
63
  import ButtonGroup from '@mui/material/ButtonGroup';
63
64
  import { formatDistanceToNow, format, parseISO, formatDistance } from 'date-fns';
64
65
  import saveAs from 'file-saver';
@@ -66,7 +67,6 @@ import { toCanvas } from 'html-to-image';
66
67
  import { FaRegDotCircle, FaCube, FaDatabase, FaSeedling, FaCamera, FaCheckSquare, FaRegSquare, FaExpandArrowsAlt, FaCheckCircle, FaRegCheckCircle } from 'react-icons/fa';
67
68
  import { FaChartSimple, FaGauge, FaCircleNodes, FaPlay, FaBookmark } from 'react-icons/fa6';
68
69
  import Chip2 from '@mui/material/Chip';
69
- import './styles-VXS6KNFS.css';
70
70
  import Skeleton from '@mui/material/Skeleton';
71
71
  import { RiMindMap, RiSwapLine, RiArrowUpSFill, RiArrowDownSFill, RiTerminalBoxLine } from 'react-icons/ri';
72
72
  import { BiArrowFromBottom, BiArrowToBottom } from 'react-icons/bi';
@@ -105,7 +105,6 @@ import Markdown from 'react-markdown';
105
105
  import { Prism } from 'react-syntax-highlighter';
106
106
  import { oneDark } from 'react-syntax-highlighter/dist/esm/styles/prism';
107
107
  import remarkGfm from 'remark-gfm';
108
- import Breadcrumbs from '@mui/material/Breadcrumbs';
109
108
  import SimpleBar from 'simplebar-react';
110
109
  import 'simplebar/dist/simplebar.min.css';
111
110
  import Card from '@mui/material/Card';
@@ -323,35 +322,8 @@ var buttonColorVariants = [
323
322
  ...createButtonColorVariants("red", colors.red),
324
323
  ...createButtonColorVariants("rose", colors.rose),
325
324
  ...createButtonColorVariants("fuchsia", colors.fuchsia),
326
- ...createButtonColorVariants("brand", colors.brand),
327
- // Neutral uses darker shades for better visibility
328
- {
329
- props: { color: "neutral", variant: "contained" },
330
- style: {
331
- backgroundColor: colors.neutral[700],
332
- color: "#FFFFFF",
333
- "&:hover": { backgroundColor: colors.neutral[800] }
334
- }
335
- },
336
- {
337
- props: { color: "neutral", variant: "outlined" },
338
- style: {
339
- borderColor: colors.neutral[300],
340
- // Lighter border (neutral.light)
341
- color: colors.neutral[900],
342
- "&:hover": {
343
- borderColor: colors.neutral[400],
344
- backgroundColor: colors.neutral[100]
345
- }
346
- }
347
- },
348
- {
349
- props: { color: "neutral", variant: "text" },
350
- style: {
351
- color: colors.neutral[700],
352
- "&:hover": { backgroundColor: colors.neutral[100] }
353
- }
354
- }
325
+ ...createButtonColorVariants("brand", colors.brand)
326
+ // Neutral variants are handled via styleOverrides for theme-awareness
355
327
  ];
356
328
  var progressColorVariants = [
357
329
  createProgressColorVariant("iochmara", colors.iochmara),
@@ -411,11 +383,31 @@ var componentOverrides = {
411
383
  ...buttonColorVariants
412
384
  ],
413
385
  styleOverrides: {
414
- root: {
386
+ root: ({ theme, ownerState }) => ({
415
387
  textTransform: "none",
416
388
  fontWeight: 500,
417
- borderRadius: 6
418
- },
389
+ borderRadius: 6,
390
+ // Theme-aware neutral button colors
391
+ ...ownerState.color === "neutral" && ownerState.variant === "contained" && {
392
+ backgroundColor: colors.neutral[700],
393
+ color: "#FFFFFF",
394
+ "&:hover": { backgroundColor: colors.neutral[800] }
395
+ },
396
+ ...ownerState.color === "neutral" && ownerState.variant === "outlined" && {
397
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[500] : colors.neutral[300],
398
+ color: theme.palette.mode === "dark" ? colors.neutral[100] : colors.neutral[900],
399
+ "&:hover": {
400
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[400] : colors.neutral[400],
401
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[100]
402
+ }
403
+ },
404
+ ...ownerState.color === "neutral" && ownerState.variant === "text" && {
405
+ color: theme.palette.mode === "dark" ? colors.neutral[200] : colors.neutral[700],
406
+ "&:hover": {
407
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[100]
408
+ }
409
+ }
410
+ }),
419
411
  sizeSmall: {
420
412
  padding: "0.25rem 0.75rem",
421
413
  fontSize: "0.875rem"
@@ -442,11 +434,11 @@ var componentOverrides = {
442
434
  }
443
435
  },
444
436
  // Text variant (ghost in Chakra)
445
- text: {
437
+ text: ({ theme }) => ({
446
438
  "&:hover": {
447
- backgroundColor: "rgba(0, 0, 0, 0.04)"
439
+ backgroundColor: theme.palette.mode === "dark" ? "rgba(255, 255, 255, 0.08)" : "rgba(0, 0, 0, 0.04)"
448
440
  }
449
- }
441
+ })
450
442
  }
451
443
  },
452
444
  // IconButton overrides
@@ -493,9 +485,9 @@ var componentOverrides = {
493
485
  borderWidth: 2
494
486
  }
495
487
  },
496
- notchedOutline: {
497
- borderColor: colors.neutral[300]
498
- }
488
+ notchedOutline: ({ theme }) => ({
489
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[600] : colors.neutral[300]
490
+ })
499
491
  }
500
492
  },
501
493
  // Checkbox overrides
@@ -542,19 +534,19 @@ var componentOverrides = {
542
534
  },
543
535
  MuiMenuItem: {
544
536
  styleOverrides: {
545
- root: {
537
+ root: ({ theme }) => ({
546
538
  fontSize: "0.875rem",
547
539
  padding: "0.5rem 0.75rem",
548
540
  "&:hover": {
549
- backgroundColor: colors.neutral[100]
541
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[600] : colors.neutral[100]
550
542
  },
551
543
  "&.Mui-selected": {
552
- backgroundColor: colors.iochmara[50],
544
+ backgroundColor: theme.palette.mode === "dark" ? colors.iochmara[900] : colors.iochmara[50],
553
545
  "&:hover": {
554
- backgroundColor: colors.iochmara[100]
546
+ backgroundColor: theme.palette.mode === "dark" ? colors.iochmara[800] : colors.iochmara[100]
555
547
  }
556
548
  }
557
- }
549
+ })
558
550
  }
559
551
  },
560
552
  // Chip overrides (Tag in Chakra)
@@ -589,15 +581,15 @@ var componentOverrides = {
589
581
  // Tooltip overrides
590
582
  MuiTooltip: {
591
583
  styleOverrides: {
592
- tooltip: {
593
- backgroundColor: colors.neutral[800],
584
+ tooltip: ({ theme }) => ({
585
+ backgroundColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[800],
594
586
  fontSize: "0.75rem",
595
587
  padding: "0.25rem 0.5rem",
596
588
  borderRadius: 4
597
- },
598
- arrow: {
599
- color: colors.neutral[800]
600
- }
589
+ }),
590
+ arrow: ({ theme }) => ({
591
+ color: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[800]
592
+ })
601
593
  }
602
594
  },
603
595
  // Alert overrides
@@ -606,22 +598,22 @@ var componentOverrides = {
606
598
  root: {
607
599
  borderRadius: 6
608
600
  },
609
- standardSuccess: {
610
- backgroundColor: colors.green[50],
611
- color: colors.green[800]
612
- },
613
- standardWarning: {
614
- backgroundColor: colors.amber[50],
615
- color: colors.amber[800]
616
- },
617
- standardError: {
618
- backgroundColor: colors.red[50],
619
- color: colors.red[800]
620
- },
621
- standardInfo: {
622
- backgroundColor: colors.iochmara[50],
623
- color: colors.iochmara[800]
624
- }
601
+ standardSuccess: ({ theme }) => ({
602
+ backgroundColor: theme.palette.mode === "dark" ? colors.green[900] : colors.green[50],
603
+ color: theme.palette.mode === "dark" ? colors.green[200] : colors.green[800]
604
+ }),
605
+ standardWarning: ({ theme }) => ({
606
+ backgroundColor: theme.palette.mode === "dark" ? colors.amber[900] : colors.amber[50],
607
+ color: theme.palette.mode === "dark" ? colors.amber[200] : colors.amber[800]
608
+ }),
609
+ standardError: ({ theme }) => ({
610
+ backgroundColor: theme.palette.mode === "dark" ? colors.red[900] : colors.red[50],
611
+ color: theme.palette.mode === "dark" ? colors.red[200] : colors.red[800]
612
+ }),
613
+ standardInfo: ({ theme }) => ({
614
+ backgroundColor: theme.palette.mode === "dark" ? colors.iochmara[900] : colors.iochmara[50],
615
+ color: theme.palette.mode === "dark" ? colors.iochmara[200] : colors.iochmara[800]
616
+ })
625
617
  }
626
618
  },
627
619
  // Tabs overrides
@@ -702,17 +694,17 @@ var componentOverrides = {
702
694
  // Divider overrides
703
695
  MuiDivider: {
704
696
  styleOverrides: {
705
- root: {
706
- borderColor: colors.neutral[200]
707
- }
697
+ root: ({ theme }) => ({
698
+ borderColor: theme.palette.mode === "dark" ? colors.neutral[700] : colors.neutral[200]
699
+ })
708
700
  }
709
701
  },
710
702
  // Breadcrumbs overrides
711
703
  MuiBreadcrumbs: {
712
704
  styleOverrides: {
713
- separator: {
714
- color: colors.neutral[400]
715
- }
705
+ separator: ({ theme }) => ({
706
+ color: theme.palette.mode === "dark" ? colors.neutral[500] : colors.neutral[400]
707
+ })
716
708
  }
717
709
  }
718
710
  };
@@ -943,7 +935,7 @@ function MuiProvider({
943
935
  forcedTheme,
944
936
  enableCssBaseline = false
945
937
  }) {
946
- const { resolvedTheme } = useTheme();
938
+ const { resolvedTheme } = useTheme$1();
947
939
  const theme = useMemo(() => {
948
940
  const mode = forcedTheme ?? resolvedTheme;
949
941
  return mode === "dark" ? darkTheme : lightTheme;
@@ -1142,8 +1134,9 @@ var Fallback = (errorData) => {
1142
1134
  display: "flex",
1143
1135
  flexDirection: "column",
1144
1136
  justifyContent: "flex-start",
1145
- bgcolor: "white",
1146
- border: "solid lightgray 1px",
1137
+ bgcolor: "background.paper",
1138
+ border: "solid 1px",
1139
+ borderColor: "divider",
1147
1140
  minHeight: "200px"
1148
1141
  },
1149
1142
  children: [
@@ -1873,6 +1866,17 @@ function RecceInstanceDisconnectedModalContent({
1873
1866
  ) })
1874
1867
  ] });
1875
1868
  }
1869
+ var ApiConfigContext = createContext(null);
1870
+ var defaultApiConfigContext = {
1871
+ apiPrefix: "",
1872
+ authToken: void 0,
1873
+ baseUrl: void 0,
1874
+ apiClient: axios.create({ baseURL: PUBLIC_API_URL })
1875
+ };
1876
+ function useApiConfig() {
1877
+ const context = useContext(ApiConfigContext);
1878
+ return context ?? defaultApiConfigContext;
1879
+ }
1876
1880
 
1877
1881
  // recce-source/js/src/lib/api/cacheKeys.ts
1878
1882
  var cacheKeys = {
@@ -1890,17 +1894,18 @@ var cacheKeys = {
1890
1894
  };
1891
1895
 
1892
1896
  // recce-source/js/src/lib/api/instanceInfo.ts
1893
- async function getRecceInstanceInfo() {
1894
- return (await axiosClient.get(
1897
+ async function getRecceInstanceInfo(client = axiosClient) {
1898
+ return (await client.get(
1895
1899
  "/api/instance-info"
1896
1900
  )).data;
1897
1901
  }
1898
1902
 
1899
1903
  // recce-source/js/src/lib/hooks/useRecceInstanceInfo.tsx
1900
1904
  var useRecceInstanceInfo = () => {
1905
+ const { apiClient } = useApiConfig();
1901
1906
  return useQuery({
1902
1907
  queryKey: cacheKeys.instanceInfo(),
1903
- queryFn: getRecceInstanceInfo
1908
+ queryFn: () => getRecceInstanceInfo(apiClient)
1904
1909
  });
1905
1910
  };
1906
1911
  var defaultFeatureToggles = {
@@ -1995,20 +2000,18 @@ function RecceInstanceInfoProvider({
1995
2000
  var useRecceInstanceContext = () => useContext(InstanceInfo);
1996
2001
 
1997
2002
  // recce-source/js/src/lib/api/flag.ts
1998
- async function getServerFlag() {
1999
- return (await axiosClient.get("/api/flag")).data;
2003
+ async function getServerFlag(client = axiosClient) {
2004
+ return (await client.get("/api/flag")).data;
2000
2005
  }
2001
- async function markOnboardingCompleted() {
2006
+ async function markOnboardingCompleted(client = axiosClient) {
2002
2007
  try {
2003
- await axiosClient.post(
2004
- "/api/onboarding/completed"
2005
- );
2008
+ await client.post("/api/onboarding/completed");
2006
2009
  } catch (_error) {
2007
2010
  }
2008
2011
  }
2009
- async function markRelaunchHintCompleted() {
2012
+ async function markRelaunchHintCompleted(client = axiosClient) {
2010
2013
  try {
2011
- await axiosClient.post(
2014
+ await client.post(
2012
2015
  "/api/relaunch-hint/completed"
2013
2016
  );
2014
2017
  } catch (_error) {
@@ -2052,8 +2055,8 @@ async function getLineageDiff() {
2052
2055
  current_error: current.error
2053
2056
  };
2054
2057
  }
2055
- async function getServerInfo() {
2056
- return (await axiosClient.get(`/api/info`)).data;
2058
+ async function getServerInfo(client = axiosClient) {
2059
+ return (await client.get(`/api/info`)).data;
2057
2060
  }
2058
2061
  async function getModelInfo(model) {
2059
2062
  return (await axiosClient.get(
@@ -2132,8 +2135,11 @@ async function listRuns() {
2132
2135
  );
2133
2136
  return response.data;
2134
2137
  }
2135
- async function aggregateRuns() {
2136
- const response = await axiosClient.post(`/api/runs/aggregate`, {});
2138
+ async function aggregateRuns(client = axiosClient) {
2139
+ const response = await client.post(
2140
+ `/api/runs/aggregate`,
2141
+ {}
2142
+ );
2137
2143
  return response.data;
2138
2144
  }
2139
2145
 
@@ -2377,9 +2383,10 @@ function useIdleTimeoutSafe() {
2377
2383
  return useContext(IdleTimeoutContext) ?? null;
2378
2384
  }
2379
2385
  var useRecceServerFlag = () => {
2386
+ const { apiClient } = useApiConfig();
2380
2387
  return useQuery({
2381
2388
  queryKey: cacheKeys.flag(),
2382
- queryFn: getServerFlag
2389
+ queryFn: () => getServerFlag(apiClient)
2383
2390
  });
2384
2391
  };
2385
2392
  var defaultLineageGraphsContext = {
@@ -2387,14 +2394,20 @@ var defaultLineageGraphsContext = {
2387
2394
  isDemoSite: false
2388
2395
  };
2389
2396
  var LineageGraphContext = createContext(defaultLineageGraphsContext);
2390
- function useLineageWatcher() {
2397
+ function useLineageWatcher({
2398
+ enabled = true,
2399
+ baseUrl,
2400
+ apiPrefix
2401
+ } = {}) {
2391
2402
  const [artifactsUpdatedToastId, setArtifactsUpdatedToastId] = useState(void 0);
2392
2403
  const ref = useRef({
2393
2404
  ws: void 0,
2394
2405
  status: "pending",
2395
2406
  artifactsUpdatedToastId: void 0
2396
2407
  });
2397
- const [status, setStatus] = useState("pending");
2408
+ const [status, setStatus] = useState(
2409
+ enabled ? "pending" : "connected"
2410
+ );
2398
2411
  const [envStatus, setEnvStatus] = useState(void 0);
2399
2412
  useEffect(() => {
2400
2413
  ref.current.status = status;
@@ -2412,7 +2425,11 @@ function useLineageWatcher() {
2412
2425
  function httpUrlToWebSocketUrl(url) {
2413
2426
  return url.replace(/(http)(s)?:\/\//, "ws$2://");
2414
2427
  }
2415
- const ws = new WebSocket(`${httpUrlToWebSocketUrl(PUBLIC_API_URL)}/api/ws`);
2428
+ const effectiveBaseUrl = baseUrl ?? PUBLIC_API_URL;
2429
+ const wsPath = apiPrefix ? `${apiPrefix}/ws` : "/api/ws";
2430
+ const ws = new WebSocket(
2431
+ `${httpUrlToWebSocketUrl(effectiveBaseUrl)}${wsPath}`
2432
+ );
2416
2433
  ref.current.ws = ws;
2417
2434
  ws.onopen = () => {
2418
2435
  ws.send("ping");
@@ -2475,8 +2492,11 @@ function useLineageWatcher() {
2475
2492
  });
2476
2493
  ref.current.ws = void 0;
2477
2494
  };
2478
- }, [invalidateCaches]);
2495
+ }, [invalidateCaches, baseUrl, apiPrefix]);
2479
2496
  useEffect(() => {
2497
+ if (!enabled) {
2498
+ return;
2499
+ }
2480
2500
  const refObj = ref.current;
2481
2501
  connect();
2482
2502
  return () => {
@@ -2484,7 +2504,7 @@ function useLineageWatcher() {
2484
2504
  refObj.ws.close();
2485
2505
  }
2486
2506
  };
2487
- }, [connect]);
2507
+ }, [connect, enabled]);
2488
2508
  return {
2489
2509
  connectionStatus: status,
2490
2510
  connect,
@@ -2499,13 +2519,14 @@ function LineageGraphContextProvider({ children }) {
2499
2519
  setDisconnected,
2500
2520
  resetConnection
2501
2521
  } = useIdleTimeout();
2522
+ const { apiClient, apiPrefix, baseUrl } = useApiConfig();
2502
2523
  const queryServerInfo = useQuery({
2503
2524
  queryKey: cacheKeys.lineage(),
2504
- queryFn: getServerInfo
2525
+ queryFn: () => getServerInfo(apiClient)
2505
2526
  });
2506
2527
  const queryRunAggregated = useQuery({
2507
2528
  queryKey: cacheKeys.runsAggregated(),
2508
- queryFn: aggregateRuns
2529
+ queryFn: () => aggregateRuns(apiClient)
2509
2530
  });
2510
2531
  const lineageGraph = useMemo(() => {
2511
2532
  const lineage2 = queryServerInfo.data?.lineage;
@@ -2545,7 +2566,11 @@ function LineageGraphContextProvider({ children }) {
2545
2566
  },
2546
2567
  sqlmesh
2547
2568
  };
2548
- const { connectionStatus, connect, envStatus } = useLineageWatcher();
2569
+ const { connectionStatus, connect, envStatus } = useLineageWatcher({
2570
+ enabled: true,
2571
+ baseUrl,
2572
+ apiPrefix
2573
+ });
2549
2574
  useEffect(() => {
2550
2575
  if (connectionStatus === "disconnected") {
2551
2576
  setDisconnected();
@@ -2941,8 +2966,9 @@ var RunModal = ({
2941
2966
  sx: {
2942
2967
  p: 0,
2943
2968
  overflow: "auto",
2944
- borderTop: "1px solid lightgray",
2945
- borderBottom: "1px solid lightgray"
2969
+ borderTop: "1px solid",
2970
+ borderBottom: "1px solid",
2971
+ borderColor: "divider"
2946
2972
  },
2947
2973
  children: /* @__PURE__ */ jsx(Box35, { sx: { contain: "layout" }, children: RunForm && /* @__PURE__ */ jsx(
2948
2974
  RunForm,
@@ -3243,10 +3269,56 @@ function formatAsAbbreviatedNumber(input) {
3243
3269
  }).format(input);
3244
3270
  }
3245
3271
  }
3272
+
3273
+ // recce-source/js/src/components/charts/chartTheme.ts
3274
+ function getChartThemeColors(isDark) {
3275
+ return {
3276
+ gridColor: isDark ? "#4b5563" : "#d1d5db",
3277
+ textColor: isDark ? "#e5e7eb" : "#374151",
3278
+ borderColor: isDark ? "#6b7280" : "#9ca3af",
3279
+ tooltipBackgroundColor: isDark ? "#1f2937" : "#ffffff",
3280
+ tooltipTextColor: isDark ? "#e5e7eb" : "#111827"
3281
+ };
3282
+ }
3283
+ function getThemedPluginOptions(isDark) {
3284
+ const colors2 = getChartThemeColors(isDark);
3285
+ return {
3286
+ legend: {
3287
+ labels: {
3288
+ color: colors2.textColor
3289
+ }
3290
+ },
3291
+ title: {
3292
+ color: colors2.textColor
3293
+ },
3294
+ tooltip: {
3295
+ backgroundColor: colors2.tooltipBackgroundColor,
3296
+ titleColor: colors2.tooltipTextColor,
3297
+ bodyColor: colors2.tooltipTextColor,
3298
+ borderColor: colors2.borderColor,
3299
+ borderWidth: 1
3300
+ }
3301
+ };
3302
+ }
3246
3303
  var CURRENT_BAR_COLOR = "#63B3ED";
3247
3304
  var BASE_BAR_COLOR = "#F6AD55";
3248
3305
  var CURRENT_BAR_COLOR_WITH_ALPHA = `${CURRENT_BAR_COLOR}A5`;
3249
3306
  var BASE_BAR_COLOR_WITH_ALPHA = `${BASE_BAR_COLOR}A5`;
3307
+ var CURRENT_BAR_COLOR_DARK = "#90CDF4";
3308
+ var BASE_BAR_COLOR_DARK = "#FBD38D";
3309
+ var CURRENT_BAR_COLOR_DARK_WITH_ALPHA = `${CURRENT_BAR_COLOR_DARK}A5`;
3310
+ var BASE_BAR_COLOR_DARK_WITH_ALPHA = `${BASE_BAR_COLOR_DARK}A5`;
3311
+ var INFO_VAL_COLOR = "#63B3ED";
3312
+ var INFO_VAL_COLOR_DARK = "#90CDF4";
3313
+ function getBarColors(isDark) {
3314
+ return {
3315
+ current: isDark ? CURRENT_BAR_COLOR_DARK : CURRENT_BAR_COLOR,
3316
+ base: isDark ? BASE_BAR_COLOR_DARK : BASE_BAR_COLOR,
3317
+ currentWithAlpha: isDark ? CURRENT_BAR_COLOR_DARK_WITH_ALPHA : CURRENT_BAR_COLOR_WITH_ALPHA,
3318
+ baseWithAlpha: isDark ? BASE_BAR_COLOR_DARK_WITH_ALPHA : BASE_BAR_COLOR_WITH_ALPHA,
3319
+ info: isDark ? INFO_VAL_COLOR_DARK : INFO_VAL_COLOR
3320
+ };
3321
+ }
3250
3322
  function SquareIcon({ color }) {
3251
3323
  return /* @__PURE__ */ jsx(
3252
3324
  Box35,
@@ -3270,6 +3342,8 @@ function HistogramChart({
3270
3342
  hideAxis = false,
3271
3343
  animation = false
3272
3344
  }) {
3345
+ const theme = useTheme();
3346
+ const isDark = theme.palette.mode === "dark";
3273
3347
  Chart.register(
3274
3348
  BarElement,
3275
3349
  TimeSeriesScale,
@@ -3279,8 +3353,10 @@ function HistogramChart({
3279
3353
  Legend,
3280
3354
  Tooltip
3281
3355
  );
3282
- const chartOptions = getHistogramChartOptions(data, hideAxis, { animation });
3283
- const chartData = getHistogramChartData(data);
3356
+ const chartOptions = getHistogramChartOptions(data, hideAxis, isDark, {
3357
+ animation
3358
+ });
3359
+ const chartData = getHistogramChartData(data, isDark);
3284
3360
  return /* @__PURE__ */ jsx(Chart$1, { type: "bar", options: chartOptions, data: chartData, plugins: [] });
3285
3361
  }
3286
3362
  function getHistogramChartDataset(type, binEdges, label, color, data) {
@@ -3301,53 +3377,65 @@ function getHistogramChartDataset(type, binEdges, label, color, data) {
3301
3377
  xAxisID: "x"
3302
3378
  };
3303
3379
  }
3304
- function getHistogramChartData(data) {
3380
+ function getHistogramChartData(data, isDark = false) {
3305
3381
  const { datasets, type, binEdges } = data;
3306
3382
  const [base, current] = datasets;
3383
+ const barColors = getBarColors(isDark);
3307
3384
  const currentDataset = getHistogramChartDataset(
3308
3385
  type,
3309
3386
  binEdges,
3310
3387
  "Current",
3311
- CURRENT_BAR_COLOR_WITH_ALPHA,
3388
+ barColors.currentWithAlpha,
3312
3389
  current
3313
3390
  );
3314
3391
  const baseDataset = getHistogramChartDataset(
3315
3392
  type,
3316
3393
  binEdges,
3317
3394
  "Base",
3318
- BASE_BAR_COLOR_WITH_ALPHA,
3395
+ barColors.baseWithAlpha,
3319
3396
  base
3320
3397
  );
3321
- const newLabels = binEdges.map((v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
3398
+ const newLabels = binEdges.map((_v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
3322
3399
  return {
3323
3400
  labels: newLabels,
3324
3401
  datasets: [currentDataset, baseDataset]
3325
3402
  };
3326
3403
  }
3327
- function getHistogramChartOptions(data, hideAxis = false, { ...configOverrides } = {}) {
3404
+ function getHistogramChartOptions(data, hideAxis = false, isDark = false, { ...configOverrides } = {}) {
3328
3405
  const { title, datasets, type, samples = 0, binEdges } = data;
3329
3406
  const [base, current] = datasets;
3330
3407
  const isDatetime = type === "datetime";
3408
+ const themeColors = getChartThemeColors(isDark);
3409
+ const themedPlugins = getThemedPluginOptions(isDark);
3331
3410
  return {
3332
3411
  responsive: true,
3333
3412
  maintainAspectRatio: false,
3334
3413
  plugins: {
3335
3414
  legend: {
3336
- reverse: true
3415
+ reverse: true,
3416
+ labels: {
3417
+ color: themeColors.textColor
3418
+ }
3337
3419
  },
3338
3420
  title: {
3339
3421
  display: true,
3340
3422
  text: title,
3341
3423
  font: {
3342
3424
  size: 20
3343
- }
3425
+ },
3426
+ color: themeColors.textColor
3344
3427
  },
3345
3428
  tooltip: {
3346
3429
  mode: "index",
3347
3430
  // position: 'nearest',
3348
3431
  intersect: false,
3432
+ backgroundColor: themedPlugins.tooltip.backgroundColor,
3433
+ titleColor: themedPlugins.tooltip.titleColor,
3434
+ bodyColor: themedPlugins.tooltip.bodyColor,
3435
+ borderColor: themedPlugins.tooltip.borderColor,
3436
+ borderWidth: themedPlugins.tooltip.borderWidth,
3349
3437
  callbacks: {
3350
- title([{ dataIndex, datasetIndex }]) {
3438
+ title([{ dataIndex }]) {
3351
3439
  const result = formatDisplayedBinItem(binEdges, dataIndex);
3352
3440
  const prefix3 = isDatetime ? DATE_RANGE : type === "string" ? TEXTLENGTH : VALUE_RANGE;
3353
3441
  return `${prefix3}
@@ -3364,15 +3452,16 @@ ${result}`;
3364
3452
  }
3365
3453
  }
3366
3454
  },
3367
- scales: getScales(data, hideAxis),
3455
+ scales: getScales(data, hideAxis, isDark),
3368
3456
  ...configOverrides
3369
3457
  };
3370
3458
  }
3371
- function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = false) {
3459
+ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = false, isDark = false) {
3372
3460
  const isDatetime = type === "datetime";
3373
3461
  const [base, current] = datasets;
3374
3462
  const maxCount = Math.max(...current.counts, ...base.counts);
3375
- const newLabels = binEdges.map((v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
3463
+ const themeColors = getChartThemeColors(isDark);
3464
+ const newLabels = binEdges.map((_v, i) => formatDisplayedBinItem(binEdges, i)).slice(0, -1);
3376
3465
  const xScaleDate = {
3377
3466
  display: !hideAxis,
3378
3467
  type: "timeseries",
@@ -3389,7 +3478,8 @@ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = fa
3389
3478
  ticks: {
3390
3479
  minRotation: 30,
3391
3480
  maxRotation: 30,
3392
- maxTicksLimit: 8
3481
+ maxTicksLimit: 8,
3482
+ color: themeColors.textColor
3393
3483
  }
3394
3484
  };
3395
3485
  const xScaleCategory = {
@@ -3398,9 +3488,10 @@ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = fa
3398
3488
  //Linear doesn't understand bins!
3399
3489
  grid: { display: false },
3400
3490
  ticks: {
3401
- callback(val, index) {
3491
+ callback(_val, index) {
3402
3492
  return newLabels[index];
3403
- }
3493
+ },
3494
+ color: themeColors.textColor
3404
3495
  },
3405
3496
  stacked: true
3406
3497
  };
@@ -3410,12 +3501,13 @@ function getScales({ datasets, min = 0, max = 0, type, binEdges }, hideAxis = fa
3410
3501
  type: "linear",
3411
3502
  max: maxCount,
3412
3503
  //NOTE: do not add `min` since if they are equal nothing gets displayed sometimes
3413
- border: { dash: [2, 2] },
3504
+ border: { dash: [2, 2], color: themeColors.borderColor },
3414
3505
  grid: {
3415
- color: "lightgray"
3506
+ color: themeColors.gridColor
3416
3507
  },
3417
3508
  ticks: {
3418
3509
  maxTicksLimit: 8,
3510
+ color: themeColors.textColor,
3419
3511
  callback: function(val) {
3420
3512
  return formatAsAbbreviatedNumber(val);
3421
3513
  }
@@ -3432,6 +3524,8 @@ function formatDisplayedBinItem(binEdges, currentIndex) {
3432
3524
  return `${formattedStart} - ${formattedEnd}`;
3433
3525
  }
3434
3526
  function _HistogramDiffResultView({ run }, ref) {
3527
+ const theme = useTheme();
3528
+ const isDark = theme.palette.mode === "dark";
3435
3529
  if (!isHistogramDiffRun(run)) {
3436
3530
  throw new Error("Run type must be histogram_diff");
3437
3531
  }
@@ -3444,24 +3538,32 @@ function _HistogramDiffResultView({ run }, ref) {
3444
3538
  if (!base || !current) {
3445
3539
  return /* @__PURE__ */ jsx("div", { children: "Loading..." });
3446
3540
  }
3447
- 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: [
3448
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
3449
- /* @__PURE__ */ jsx(Box35, { sx: { width: "80%", height: "35vh", m: 4 }, children: /* @__PURE__ */ jsx(
3450
- HistogramChart,
3451
- {
3452
- data: {
3453
- title: `Model ${params.model}.${params.column_name}`,
3454
- type: run.params?.column_type ?? "",
3455
- datasets: [base, current],
3456
- min,
3457
- max,
3458
- samples: base.total,
3459
- binEdges
3460
- }
3461
- }
3462
- ) }),
3463
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
3464
- ] }) }) });
3541
+ return /* @__PURE__ */ jsx(Box35, { sx: { display: "flex", flexDirection: "column", height: "100%" }, children: /* @__PURE__ */ jsx(
3542
+ ScreenshotBox,
3543
+ {
3544
+ ref,
3545
+ height: "100%",
3546
+ backgroundColor: isDark ? "#1f2937" : "white",
3547
+ children: /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flexDirection: "row" }, children: [
3548
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
3549
+ /* @__PURE__ */ jsx(Box35, { sx: { width: "80%", height: "35vh", m: 4 }, children: /* @__PURE__ */ jsx(
3550
+ HistogramChart,
3551
+ {
3552
+ data: {
3553
+ title: `Model ${params.model}.${params.column_name}`,
3554
+ type: run.params?.column_type ?? "",
3555
+ datasets: [base, current],
3556
+ min,
3557
+ max,
3558
+ samples: base.total,
3559
+ binEdges
3560
+ }
3561
+ }
3562
+ ) }),
3563
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
3564
+ ] })
3565
+ }
3566
+ ) });
3465
3567
  }
3466
3568
  var HistogramDiffResultView = forwardRef(_HistogramDiffResultView);
3467
3569
  function ProfileDiffForm({
@@ -4186,8 +4288,8 @@ function getHeaderCellClass(columnStatus) {
4186
4288
  }
4187
4289
  var defaultRenderCell = (params) => {
4188
4290
  const colDef = params.colDef;
4189
- const columnType = colDef?.columnType;
4190
- const columnRenderMode = colDef?.columnRenderMode;
4291
+ const columnType = colDef?.context?.columnType;
4292
+ const columnRenderMode = colDef?.context?.columnRenderMode;
4191
4293
  const fieldName = colDef?.field ?? "";
4192
4294
  if (!params.data) {
4193
4295
  return null;
@@ -4207,6 +4309,31 @@ var defaultRenderCell = (params) => {
4207
4309
  }
4208
4310
  );
4209
4311
  };
4312
+
4313
+ // recce-source/js/src/lib/hooks/useClipBoardToast.tsx
4314
+ function useClipBoardToast() {
4315
+ function successToast(message) {
4316
+ toaster.create({
4317
+ description: message,
4318
+ type: "info",
4319
+ duration: 5e3,
4320
+ closable: true
4321
+ });
4322
+ }
4323
+ function failToast(title, error) {
4324
+ toaster.create({
4325
+ title,
4326
+ description: String(error),
4327
+ type: "error",
4328
+ duration: 5e3,
4329
+ closable: true
4330
+ });
4331
+ }
4332
+ return {
4333
+ successToast,
4334
+ failToast
4335
+ };
4336
+ }
4210
4337
  var DiffText = ({
4211
4338
  value,
4212
4339
  colorPalette,
@@ -4272,39 +4399,38 @@ function CopyControl({
4272
4399
  grayOut,
4273
4400
  isHovered
4274
4401
  }) {
4275
- const [copiedText, copyToClipboard] = useCopyToClipboard();
4276
- const hasCopiedText = Boolean(copiedText);
4277
- if (noCopy || grayOut) {
4278
- return /* @__PURE__ */ jsx(Fragment, {});
4279
- }
4280
- if (hasCopiedText) {
4281
- return /* @__PURE__ */ jsx(Fragment, { children: "Copied" });
4282
- }
4283
- if (!isHovered) {
4402
+ const [, copyToClipboard] = useCopyToClipboard();
4403
+ const { successToast } = useClipBoardToast();
4404
+ if (noCopy || grayOut || !isHovered) {
4284
4405
  return /* @__PURE__ */ jsx(Fragment, {});
4285
4406
  }
4286
- return /* @__PURE__ */ jsx(
4407
+ const handleCopy = () => {
4408
+ copyToClipboard(value);
4409
+ successToast(`${value} copied`);
4410
+ };
4411
+ return /* @__PURE__ */ jsx(MuiTooltip, { title: "Copy Value", children: /* @__PURE__ */ jsx(
4287
4412
  IconButton2,
4288
4413
  {
4289
4414
  "aria-label": "Copy",
4290
4415
  size: "small",
4291
- onClick: () => copyToClipboard(value),
4416
+ onClick: handleCopy,
4292
4417
  sx: {
4293
- minWidth: "10px",
4294
- height: "10px",
4418
+ minWidth: "0.625rem",
4419
+ height: "0.625rem",
4295
4420
  display: "flex",
4296
4421
  alignItems: "center",
4297
4422
  justifyContent: "center",
4298
- p: 0
4423
+ p: 0,
4424
+ color: "inherit"
4299
4425
  },
4300
- children: /* @__PURE__ */ jsx(PiCopy, { size: "10px" })
4426
+ children: /* @__PURE__ */ jsx(PiCopy, { size: "0.625rem" })
4301
4427
  }
4302
- );
4428
+ ) });
4303
4429
  }
4304
4430
  var inlineRenderCell = (params) => {
4305
4431
  const colDef = params.colDef;
4306
- const columnType = colDef?.columnType;
4307
- const columnRenderMode = colDef?.columnRenderMode;
4432
+ const columnType = colDef?.context?.columnType;
4433
+ const columnRenderMode = colDef?.context?.columnRenderMode;
4308
4434
  const columnKey = colDef?.field ?? "";
4309
4435
  if (!params.data) {
4310
4436
  return null;
@@ -4489,8 +4615,7 @@ function toDiffColumn(config) {
4489
4615
  headerClass: headerCellClass,
4490
4616
  headerComponent,
4491
4617
  cellRenderer: inlineRenderCell,
4492
- columnType,
4493
- columnRenderMode
4618
+ context: { columnType, columnRenderMode }
4494
4619
  };
4495
4620
  }
4496
4621
  const cellClassBase = createCellClassBase(name, columnStatus);
@@ -4499,8 +4624,7 @@ function toDiffColumn(config) {
4499
4624
  headerName: name,
4500
4625
  headerClass: headerCellClass,
4501
4626
  headerGroupComponent: headerComponent,
4502
- columnType,
4503
- columnRenderMode,
4627
+ context: { columnType, columnRenderMode },
4504
4628
  children: [
4505
4629
  {
4506
4630
  field: `base__${name}`,
@@ -4508,8 +4632,7 @@ function toDiffColumn(config) {
4508
4632
  headerClass: headerCellClass,
4509
4633
  cellClass: cellClassBase,
4510
4634
  cellRenderer: defaultRenderCell,
4511
- columnType,
4512
- columnRenderMode
4635
+ context: { columnType, columnRenderMode }
4513
4636
  },
4514
4637
  {
4515
4638
  field: `current__${name}`,
@@ -4517,8 +4640,7 @@ function toDiffColumn(config) {
4517
4640
  headerClass: headerCellClass,
4518
4641
  cellClass: cellClassCurrent,
4519
4642
  cellRenderer: defaultRenderCell,
4520
- columnType,
4521
- columnRenderMode
4643
+ context: { columnType, columnRenderMode }
4522
4644
  }
4523
4645
  ]
4524
4646
  };
@@ -4556,8 +4678,7 @@ function createPrimaryKeyColumn(config, headerProps) {
4556
4678
  return void 0;
4557
4679
  },
4558
4680
  cellRenderer: defaultRenderCell,
4559
- columnType,
4560
- columnRenderMode
4681
+ context: { columnType, columnRenderMode }
4561
4682
  };
4562
4683
  }
4563
4684
  function createDiffColumn(config, displayMode, headerProps, baseTitle, currentTitle) {
@@ -4746,8 +4867,7 @@ function createPrimaryKeyColumn2(config, headerProps) {
4746
4867
  ),
4747
4868
  pinned: "left",
4748
4869
  cellRenderer: defaultRenderCell,
4749
- columnType,
4750
- columnRenderMode
4870
+ context: { columnType, columnRenderMode }
4751
4871
  };
4752
4872
  }
4753
4873
  function createRegularColumn(config, headerProps) {
@@ -4766,8 +4886,7 @@ function createRegularColumn(config, headerProps) {
4766
4886
  }
4767
4887
  ),
4768
4888
  cellRenderer: defaultRenderCell,
4769
- columnType,
4770
- columnRenderMode
4889
+ context: { columnType, columnRenderMode }
4771
4890
  };
4772
4891
  }
4773
4892
  function buildSimpleColumnDefinitions(config) {
@@ -5490,7 +5609,7 @@ function renderIndexCell(params) {
5490
5609
  const value = isRemoved ? baseIndex !== void 0 ? baseIndex : "-" : currentIndex !== void 0 ? currentIndex : "-";
5491
5610
  return /* @__PURE__ */ jsx("span", { children: value });
5492
5611
  }
5493
- var MemoizedRenderIndexCell = React12.memo(renderIndexCell);
5612
+ var MemoizedRenderIndexCell = React13.memo(renderIndexCell);
5494
5613
  MemoizedRenderIndexCell.displayName = "MemoizedRenderIndexCell";
5495
5614
  function renderTypeCell(params) {
5496
5615
  if (!params.data) {
@@ -5523,7 +5642,7 @@ function renderTypeCell(params) {
5523
5642
  }
5524
5643
  return /* @__PURE__ */ jsx("span", { children: isRemoved ? baseType : currentType });
5525
5644
  }
5526
- var MemoizedRenderTypeCell = React12.memo(renderTypeCell);
5645
+ var MemoizedRenderTypeCell = React13.memo(renderTypeCell);
5527
5646
  MemoizedRenderTypeCell.displayName = "MemoizedRenderTypeCell";
5528
5647
 
5529
5648
  // recce-source/js/src/lib/dataGrid/generators/toSchemaDataGrid.ts
@@ -6082,7 +6201,7 @@ var recceGridThemeLight = themeQuartz.withParams({
6082
6201
  headerFontWeight: 700,
6083
6202
  cellHorizontalPadding: 8
6084
6203
  });
6085
- themeQuartz.withParams({
6204
+ var recceGridThemeDark = themeQuartz.withParams({
6086
6205
  backgroundColor: "#1e1e1e",
6087
6206
  headerBackgroundColor: "#252526",
6088
6207
  rowHoverColor: "#1e1e1e",
@@ -6138,7 +6257,11 @@ function _ScreenshotDataGrid({
6138
6257
  }),
6139
6258
  []
6140
6259
  );
6141
- const theme = useMemo(() => recceGridThemeLight, []);
6260
+ const muiTheme = useTheme();
6261
+ const gridTheme = useMemo(
6262
+ () => muiTheme.palette.mode === "dark" ? recceGridThemeDark : recceGridThemeLight,
6263
+ [muiTheme.palette.mode]
6264
+ );
6142
6265
  const resolvedColumnDefs = columnDefs ?? columns;
6143
6266
  const resolvedRowData = rowData ?? rows;
6144
6267
  const resolvedDefaultColDef = defaultColDef ?? defaultColumnOptions;
@@ -6200,18 +6323,18 @@ function _ScreenshotDataGrid({
6200
6323
  "& .ag-header-cell": {
6201
6324
  borderRight: "1px solid var(--ag-border-color)"
6202
6325
  },
6203
- // Diff cell styling
6326
+ // Diff cell styling - theme-aware colors
6204
6327
  "& .diff-cell-added": {
6205
- backgroundColor: "#cefece !important",
6206
- color: "black"
6328
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#1a4d1a !important" : "#cefece !important",
6329
+ color: muiTheme.palette.text.primary
6207
6330
  },
6208
6331
  "& .diff-cell-removed": {
6209
- backgroundColor: "#ffc5c5 !important",
6210
- color: "black"
6332
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#5c1f1f !important" : "#ffc5c5 !important",
6333
+ color: muiTheme.palette.text.primary
6211
6334
  },
6212
6335
  "& .diff-cell-modified": {
6213
- backgroundColor: "#ffc5c5 !important",
6214
- color: "black"
6336
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#5c1f1f !important" : "#ffc5c5 !important",
6337
+ color: muiTheme.palette.text.primary
6215
6338
  },
6216
6339
  // Diff header styling
6217
6340
  "& .diff-header-added": {
@@ -6224,18 +6347,18 @@ function _ScreenshotDataGrid({
6224
6347
  },
6225
6348
  // Index column styling
6226
6349
  "& .index-column": {
6227
- color: "rgb(128, 128, 128)",
6350
+ color: muiTheme.palette.text.secondary,
6228
6351
  textAlign: "right"
6229
6352
  },
6230
6353
  // Frozen/pinned column styling
6231
6354
  "& .ag-pinned-left-cols-container .ag-cell": {
6232
- backgroundColor: "#f5f5f5"
6355
+ backgroundColor: muiTheme.palette.mode === "dark" ? "#2d2d2d" : "#f5f5f5"
6233
6356
  }
6234
6357
  },
6235
6358
  children: /* @__PURE__ */ jsx(
6236
6359
  AgGridReact,
6237
6360
  {
6238
- theme,
6361
+ theme: gridTheme,
6239
6362
  columnDefs: resolvedColumnDefs,
6240
6363
  rowData: resolvedRowData,
6241
6364
  getRowId: resolvedGetRowId,
@@ -6337,17 +6460,22 @@ var RunToolbar = ({
6337
6460
  warnings,
6338
6461
  children
6339
6462
  }) => {
6463
+ const theme = useTheme();
6464
+ const isDark = theme.palette.mode === "dark";
6465
+ const hasWarnings = warnings && warnings.length > 0;
6340
6466
  return /* @__PURE__ */ jsxs(
6341
6467
  Box35,
6342
6468
  {
6343
6469
  sx: {
6344
6470
  display: "flex",
6345
- borderBottom: "1px solid lightgray",
6471
+ borderBottom: "1px solid",
6472
+ borderColor: "divider",
6346
6473
  justifyContent: "flex-end",
6347
6474
  gap: "5px",
6348
6475
  alignItems: "center",
6349
6476
  px: "10px",
6350
- bgcolor: warnings && warnings.length > 0 ? "amber.100" : "inherit"
6477
+ bgcolor: hasWarnings ? isDark ? colors.amber[900] : colors.amber[100] : "inherit",
6478
+ color: hasWarnings ? isDark ? colors.amber[200] : colors.amber[800] : "inherit"
6351
6479
  },
6352
6480
  children: [
6353
6481
  /* @__PURE__ */ jsx(
@@ -6360,8 +6488,13 @@ var RunToolbar = ({
6360
6488
  gap: 0
6361
6489
  },
6362
6490
  children: warnings?.map((warning) => /* @__PURE__ */ jsxs(Box35, { children: [
6363
- /* @__PURE__ */ jsx(PiWarning, { color: "amber.600" }),
6364
- " ",
6491
+ /* @__PURE__ */ jsx(
6492
+ PiWarning,
6493
+ {
6494
+ color: isDark ? colors.amber[400] : colors.amber[600],
6495
+ style: { verticalAlign: "middle", marginRight: 4 }
6496
+ }
6497
+ ),
6365
6498
  warning
6366
6499
  ] }, _3.uniqueId(`-${warning}`)))
6367
6500
  }
@@ -6373,6 +6506,8 @@ var RunToolbar = ({
6373
6506
  );
6374
6507
  };
6375
6508
  var PrivateProfileDiffResultView = ({ run, viewOptions, onViewOptionsChanged }, ref) => {
6509
+ const theme = useTheme();
6510
+ const isDark = theme.palette.mode === "dark";
6376
6511
  if (!isProfileDiffRun(run)) {
6377
6512
  throw new Error("Only run type profile_diff is supported");
6378
6513
  }
@@ -6448,7 +6583,7 @@ var PrivateProfileDiffResultView = ({ run, viewOptions, onViewOptionsChanged },
6448
6583
  sx: {
6449
6584
  display: "flex",
6450
6585
  flexDirection: "column",
6451
- bgcolor: "rgb(249, 249, 249)",
6586
+ bgcolor: isDark ? "grey.900" : "grey.50",
6452
6587
  height: "100%"
6453
6588
  },
6454
6589
  children: [
@@ -6482,6 +6617,8 @@ var PrivateProfileDiffResultView = ({ run, viewOptions, onViewOptionsChanged },
6482
6617
  );
6483
6618
  };
6484
6619
  var PrivateProfileResultView = ({ run, viewOptions, onViewOptionsChanged }, ref) => {
6620
+ const theme = useTheme();
6621
+ const isDark = theme.palette.mode === "dark";
6485
6622
  if (!isProfileRun(run)) {
6486
6623
  throw new Error("Only run type profile_diff is supported");
6487
6624
  }
@@ -6551,7 +6688,7 @@ var PrivateProfileResultView = ({ run, viewOptions, onViewOptionsChanged }, ref)
6551
6688
  sx: {
6552
6689
  display: "flex",
6553
6690
  flexDirection: "column",
6554
- bgcolor: "rgb(249, 249, 249)",
6691
+ bgcolor: isDark ? "grey.900" : "grey.50",
6555
6692
  height: "100%"
6556
6693
  },
6557
6694
  children: /* @__PURE__ */ jsx(
@@ -6602,6 +6739,8 @@ var PrivateQueryDiffResultView = ({
6602
6739
  baseTitle,
6603
6740
  currentTitle
6604
6741
  }, ref) => {
6742
+ const theme = useTheme();
6743
+ const isDark = theme.palette.mode === "dark";
6605
6744
  const primaryKeys = useMemo(
6606
6745
  () => viewOptions?.primary_keys ?? [],
6607
6746
  [viewOptions]
@@ -6716,7 +6855,7 @@ var PrivateQueryDiffResultView = ({
6716
6855
  sx: {
6717
6856
  display: "flex",
6718
6857
  flexDirection: "column",
6719
- bgcolor: "rgb(249, 249, 249)",
6858
+ bgcolor: isDark ? "grey.900" : "grey.50",
6720
6859
  height: "100%"
6721
6860
  },
6722
6861
  children: [
@@ -6789,6 +6928,8 @@ var PrivateQueryDiffJoinResultView = ({
6789
6928
  baseTitle,
6790
6929
  currentTitle
6791
6930
  }, ref) => {
6931
+ const theme = useTheme();
6932
+ const isDark = theme.palette.mode === "dark";
6792
6933
  if (run.type !== "query_diff") {
6793
6934
  throw new Error("QueryDiffResult view should be rendered as query_diff");
6794
6935
  }
@@ -6877,7 +7018,7 @@ var PrivateQueryDiffJoinResultView = ({
6877
7018
  sx: {
6878
7019
  display: "flex",
6879
7020
  flexDirection: "column",
6880
- bgcolor: "rgb(249, 249, 249)",
7021
+ bgcolor: isDark ? "grey.900" : "grey.50",
6881
7022
  height: "100%"
6882
7023
  },
6883
7024
  children: [
@@ -6912,7 +7053,7 @@ var PrivateQueryDiffJoinResultView = ({
6912
7053
  sx: {
6913
7054
  display: "flex",
6914
7055
  flexDirection: "column",
6915
- bgcolor: "rgb(249, 249, 249)",
7056
+ bgcolor: isDark ? "grey.900" : "grey.50",
6916
7057
  height: "100%"
6917
7058
  },
6918
7059
  children: [
@@ -7019,6 +7160,8 @@ var PrivateQueryResultView = ({
7019
7160
  onViewOptionsChanged,
7020
7161
  onAddToChecklist
7021
7162
  }, ref) => {
7163
+ const theme = useTheme();
7164
+ const isDark = theme.palette.mode === "dark";
7022
7165
  if (!(isQueryRun(run) || isQueryBaseRun(run))) {
7023
7166
  throw new Error("run type must be query");
7024
7167
  }
@@ -7082,25 +7225,27 @@ var PrivateQueryResultView = ({
7082
7225
  const limit = dataframe ? dataframe.limit ?? 0 : 0;
7083
7226
  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;
7084
7227
  const showTopBar = onAddToChecklist ?? warning;
7085
- return /* @__PURE__ */ jsxs(Stack24, { sx: { bgcolor: "rgb(249, 249, 249)", height: "100%" }, children: [
7228
+ return /* @__PURE__ */ jsxs(Stack24, { sx: { bgcolor: isDark ? "grey.900" : "grey.50", height: "100%" }, children: [
7086
7229
  showTopBar && /* @__PURE__ */ jsxs(
7087
7230
  Stack24,
7088
7231
  {
7089
7232
  direction: "row",
7090
7233
  sx: {
7091
- borderBottom: "1px solid lightgray",
7234
+ borderBottom: "1px solid",
7235
+ borderBottomColor: "divider",
7092
7236
  alignItems: "center",
7093
7237
  gap: "5px",
7094
7238
  px: "10px",
7095
- bgcolor: warning ? "amber.100" : "inherit"
7239
+ bgcolor: warning ? isDark ? colors.amber[900] : colors.amber[100] : "inherit",
7240
+ color: warning ? isDark ? colors.amber[200] : colors.amber[800] : "inherit"
7096
7241
  },
7097
7242
  children: [
7098
7243
  warning && /* @__PURE__ */ jsxs(Fragment, { children: [
7099
7244
  /* @__PURE__ */ jsx(
7100
- Box35,
7245
+ PiWarning,
7101
7246
  {
7102
- component: PiWarning,
7103
- sx: { color: "amber.600", alignSelf: "center" }
7247
+ color: isDark ? colors.amber[400] : colors.amber[600],
7248
+ style: { alignSelf: "center" }
7104
7249
  }
7105
7250
  ),
7106
7251
  " ",
@@ -7136,13 +7281,15 @@ var PrivateQueryResultView = ({
7136
7281
  maxWidth: 800,
7137
7282
  minWidth: 35
7138
7283
  },
7139
- className: "rdg-light"
7284
+ className: isDark ? "rdg-dark" : "rdg-light"
7140
7285
  }
7141
7286
  )
7142
7287
  ] });
7143
7288
  };
7144
7289
  var QueryResultView = forwardRef(PrivateQueryResultView);
7145
7290
  function _RowCountGridView({ run, typeGuard, expectedType }, ref) {
7291
+ const theme = useTheme();
7292
+ const isDark = theme.palette.mode === "dark";
7146
7293
  if (!typeGuard(run)) {
7147
7294
  throw new Error(`Run type must be ${expectedType}`);
7148
7295
  }
@@ -7157,7 +7304,7 @@ function _RowCountGridView({ run, typeGuard, expectedType }, ref) {
7157
7304
  display: "flex",
7158
7305
  alignItems: "center",
7159
7306
  justifyContent: "center",
7160
- bgcolor: "rgb(249,249,249)",
7307
+ bgcolor: isDark ? "grey.900" : "grey.50",
7161
7308
  height: "100%"
7162
7309
  },
7163
7310
  children: "No nodes matched"
@@ -7241,7 +7388,7 @@ function TopKDiffForm({
7241
7388
  )
7242
7389
  ] }) });
7243
7390
  }
7244
- var INFO_VAL_COLOR = "#63B3ED";
7391
+ var INFO_VAL_COLOR2 = "#63B3ED";
7245
7392
  function prepareSummaryList(topK, isDisplayTopTen) {
7246
7393
  const endAtIndex = isDisplayTopTen ? 10 : topK.counts.length;
7247
7394
  const counts = topK.counts.slice(0, endAtIndex);
@@ -7277,6 +7424,7 @@ function prepareSummaryList(topK, isDisplayTopTen) {
7277
7424
  function TopKChartTooltip({
7278
7425
  base,
7279
7426
  current,
7427
+ barColors,
7280
7428
  children
7281
7429
  }) {
7282
7430
  return /* @__PURE__ */ jsx(
@@ -7284,7 +7432,7 @@ function TopKChartTooltip({
7284
7432
  {
7285
7433
  title: /* @__PURE__ */ jsxs(Box35, { children: [
7286
7434
  /* @__PURE__ */ jsxs(Typography28, { children: [
7287
- /* @__PURE__ */ jsx(SquareIcon, { color: CURRENT_BAR_COLOR }),
7435
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.current }),
7288
7436
  "Current: ",
7289
7437
  current.count,
7290
7438
  " (",
@@ -7292,7 +7440,7 @@ function TopKChartTooltip({
7292
7440
  ")"
7293
7441
  ] }),
7294
7442
  /* @__PURE__ */ jsxs(Typography28, { children: [
7295
- /* @__PURE__ */ jsx(SquareIcon, { color: BASE_BAR_COLOR }),
7443
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.base }),
7296
7444
  "Base: ",
7297
7445
  base.count,
7298
7446
  " (",
@@ -7309,6 +7457,9 @@ function TopKSummaryBarChart({
7309
7457
  topKDiff,
7310
7458
  isDisplayTopTen
7311
7459
  }) {
7460
+ const theme = useTheme();
7461
+ const isDark = theme.palette.mode === "dark";
7462
+ const barColors = getBarColors(isDark);
7312
7463
  const currents = prepareSummaryList(topKDiff.current, isDisplayTopTen);
7313
7464
  const bases = prepareSummaryList(topKDiff.base, isDisplayTopTen);
7314
7465
  return /* @__PURE__ */ jsxs(Box35, { sx: { width: "100%", px: 20, py: 2 }, children: [
@@ -7318,9 +7469,9 @@ function TopKSummaryBarChart({
7318
7469
  Typography28,
7319
7470
  {
7320
7471
  component: "h3",
7321
- sx: { fontSize: "0.875rem", p: 1, color: "gray" },
7472
+ sx: { fontSize: "0.875rem", p: 1, color: "text.secondary" },
7322
7473
  children: [
7323
- /* @__PURE__ */ jsx(SquareIcon, { color: BASE_BAR_COLOR }),
7474
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.base }),
7324
7475
  " Base"
7325
7476
  ]
7326
7477
  }
@@ -7329,9 +7480,9 @@ function TopKSummaryBarChart({
7329
7480
  Typography28,
7330
7481
  {
7331
7482
  component: "h3",
7332
- sx: { fontSize: "0.875rem", p: 1, color: "gray" },
7483
+ sx: { fontSize: "0.875rem", p: 1, color: "text.secondary" },
7333
7484
  children: [
7334
- /* @__PURE__ */ jsx(SquareIcon, { color: CURRENT_BAR_COLOR }),
7485
+ /* @__PURE__ */ jsx(SquareIcon, { color: barColors.current }),
7335
7486
  " Current"
7336
7487
  ]
7337
7488
  }
@@ -7344,120 +7495,133 @@ function TopKSummaryBarChart({
7344
7495
  return /* @__PURE__ */ jsx(Fragment, {});
7345
7496
  }
7346
7497
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [
7347
- /* @__PURE__ */ jsx(TopKChartTooltip, { base, current, children: /* @__PURE__ */ jsxs(
7348
- Box35,
7498
+ /* @__PURE__ */ jsx(
7499
+ TopKChartTooltip,
7349
7500
  {
7350
- sx: {
7351
- display: "flex",
7352
- alignItems: "center",
7353
- width: "100%",
7354
- "&:hover": { bgcolor: "action.hover" },
7355
- px: 2
7356
- },
7357
- children: [
7358
- /* @__PURE__ */ jsx(
7359
- Typography28,
7360
- {
7361
- sx: {
7362
- width: "10em",
7363
- fontSize: "0.875rem",
7364
- color: current.isSpecialLabel ? "grey.400" : "inherit",
7365
- overflow: "hidden",
7366
- textOverflow: "ellipsis",
7367
- whiteSpace: "nowrap"
7368
- },
7369
- children: current.label
7370
- }
7371
- ),
7372
- /* @__PURE__ */ jsxs(
7373
- Box35,
7374
- {
7375
- sx: {
7376
- display: "flex",
7377
- width: "70%",
7378
- flexDirection: "column"
7379
- },
7380
- children: [
7381
- /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
7382
- /* @__PURE__ */ jsx(
7383
- CategoricalBarChart,
7384
- {
7385
- topkCount: current.count,
7386
- topkLabel: current.label,
7387
- valids: topKDiff.current.valids,
7388
- color: CURRENT_BAR_COLOR
7389
- }
7390
- ),
7391
- /* @__PURE__ */ jsx(
7392
- Typography28,
7393
- {
7394
- sx: {
7395
- ml: 2.5,
7396
- mr: 1,
7397
- fontSize: "0.875rem",
7398
- width: "6em"
7399
- },
7400
- children: current.displayCount
7401
- }
7402
- ),
7403
- /* @__PURE__ */ jsx(
7404
- Typography28,
7405
- {
7406
- sx: {
7407
- color: "grey.400",
7408
- fontSize: "0.875rem",
7409
- width: "4em"
7410
- },
7411
- children: current.displayRatio
7412
- }
7413
- )
7414
- ] }),
7415
- /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
7416
- /* @__PURE__ */ jsx(
7417
- CategoricalBarChart,
7418
- {
7419
- topkCount: base.count,
7420
- topkLabel: base.label,
7421
- valids: topKDiff.base.valids,
7422
- color: BASE_BAR_COLOR
7423
- }
7424
- ),
7425
- /* @__PURE__ */ jsx(
7426
- Typography28,
7427
- {
7428
- sx: {
7429
- ml: 2.5,
7430
- mr: 1,
7431
- fontSize: "0.875rem",
7432
- width: "6em"
7433
- },
7434
- children: base.displayCount
7435
- }
7436
- ),
7437
- /* @__PURE__ */ jsx(
7438
- Typography28,
7439
- {
7440
- sx: {
7441
- color: "grey.400",
7442
- fontSize: "0.875rem",
7443
- width: "4em"
7444
- },
7445
- children: base.displayRatio
7446
- }
7447
- )
7448
- ] })
7449
- ]
7450
- }
7451
- )
7452
- ]
7501
+ base,
7502
+ current,
7503
+ barColors,
7504
+ children: /* @__PURE__ */ jsxs(
7505
+ Box35,
7506
+ {
7507
+ sx: {
7508
+ display: "flex",
7509
+ alignItems: "center",
7510
+ width: "100%",
7511
+ "&:hover": { bgcolor: "action.hover" },
7512
+ px: 2
7513
+ },
7514
+ children: [
7515
+ /* @__PURE__ */ jsx(
7516
+ Typography28,
7517
+ {
7518
+ sx: {
7519
+ width: "10em",
7520
+ fontSize: "0.875rem",
7521
+ color: current.isSpecialLabel ? "grey.400" : "inherit",
7522
+ overflow: "hidden",
7523
+ textOverflow: "ellipsis",
7524
+ whiteSpace: "nowrap"
7525
+ },
7526
+ children: current.label
7527
+ }
7528
+ ),
7529
+ /* @__PURE__ */ jsxs(
7530
+ Box35,
7531
+ {
7532
+ sx: {
7533
+ display: "flex",
7534
+ width: "70%",
7535
+ flexDirection: "column"
7536
+ },
7537
+ children: [
7538
+ /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
7539
+ /* @__PURE__ */ jsx(
7540
+ CategoricalBarChart,
7541
+ {
7542
+ topkCount: current.count,
7543
+ topkLabel: current.label,
7544
+ valids: topKDiff.current.valids,
7545
+ color: barColors.current,
7546
+ isDark
7547
+ }
7548
+ ),
7549
+ /* @__PURE__ */ jsx(
7550
+ Typography28,
7551
+ {
7552
+ sx: {
7553
+ ml: 2.5,
7554
+ mr: 1,
7555
+ fontSize: "0.875rem",
7556
+ width: "6em"
7557
+ },
7558
+ children: current.displayCount
7559
+ }
7560
+ ),
7561
+ /* @__PURE__ */ jsx(
7562
+ Typography28,
7563
+ {
7564
+ sx: {
7565
+ color: "grey.400",
7566
+ fontSize: "0.875rem",
7567
+ width: "4em"
7568
+ },
7569
+ children: current.displayRatio
7570
+ }
7571
+ )
7572
+ ] }),
7573
+ /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", height: "1em" }, children: [
7574
+ /* @__PURE__ */ jsx(
7575
+ CategoricalBarChart,
7576
+ {
7577
+ topkCount: base.count,
7578
+ topkLabel: base.label,
7579
+ valids: topKDiff.base.valids,
7580
+ color: barColors.base,
7581
+ isDark
7582
+ }
7583
+ ),
7584
+ /* @__PURE__ */ jsx(
7585
+ Typography28,
7586
+ {
7587
+ sx: {
7588
+ ml: 2.5,
7589
+ mr: 1,
7590
+ fontSize: "0.875rem",
7591
+ width: "6em"
7592
+ },
7593
+ children: base.displayCount
7594
+ }
7595
+ ),
7596
+ /* @__PURE__ */ jsx(
7597
+ Typography28,
7598
+ {
7599
+ sx: {
7600
+ color: "grey.400",
7601
+ fontSize: "0.875rem",
7602
+ width: "4em"
7603
+ },
7604
+ children: base.displayRatio
7605
+ }
7606
+ )
7607
+ ] })
7608
+ ]
7609
+ }
7610
+ )
7611
+ ]
7612
+ }
7613
+ )
7453
7614
  }
7454
- ) }),
7615
+ ),
7455
7616
  /* @__PURE__ */ jsx(Divider, {})
7456
7617
  ] }, current.label);
7457
7618
  })
7458
7619
  ] });
7459
7620
  }
7460
7621
  function TopKSummaryList({ topk, valids, isDisplayTopTen }) {
7622
+ const theme = useTheme();
7623
+ const isDark = theme.palette.mode === "dark";
7624
+ const barColors = getBarColors(isDark);
7461
7625
  const endAtIndex = isDisplayTopTen ? 10 : topk.counts.length;
7462
7626
  const displayList = topk.counts.slice(0, endAtIndex);
7463
7627
  const remainingSumCount = valids - displayList.reduce((accum, curr) => accum + curr, 0);
@@ -7499,7 +7663,9 @@ function TopKSummaryList({ topk, valids, isDisplayTopTen }) {
7499
7663
  {
7500
7664
  topkCount,
7501
7665
  topkLabel,
7502
- valids
7666
+ valids,
7667
+ color: barColors.info,
7668
+ isDark
7503
7669
  }
7504
7670
  ) }),
7505
7671
  /* @__PURE__ */ jsx(MuiTooltip, { title: displayTopkCount, placement: "top-start", children: /* @__PURE__ */ jsx(
@@ -7540,10 +7706,13 @@ function CategoricalBarChart({
7540
7706
  topkLabel,
7541
7707
  valids,
7542
7708
  animation = false,
7543
- color = INFO_VAL_COLOR
7709
+ color = INFO_VAL_COLOR2,
7710
+ isDark = false
7544
7711
  }) {
7545
7712
  Chart.register(CategoryScale, BarElement, LinearScale);
7546
- const chartOptions = getCatBarChartOptions(topkCount, valids, { animation });
7713
+ const chartOptions = getCatBarChartOptions(topkCount, valids, isDark, {
7714
+ animation
7715
+ });
7547
7716
  const chartData = getCatBarChartData({
7548
7717
  topkCount,
7549
7718
  topkLabel,
@@ -7551,7 +7720,8 @@ function CategoricalBarChart({
7551
7720
  });
7552
7721
  return /* @__PURE__ */ jsx(Bar, { data: chartData, options: chartOptions, plugins: [] });
7553
7722
  }
7554
- function getCatBarChartOptions(count, valids, { ...configOverrides } = {}) {
7723
+ function getCatBarChartOptions(_count, valids, isDark = false, { ...configOverrides } = {}) {
7724
+ const themeColors = getChartThemeColors(isDark);
7555
7725
  return {
7556
7726
  responsive: true,
7557
7727
  maintainAspectRatio: false,
@@ -7560,10 +7730,12 @@ function getCatBarChartOptions(count, valids, { ...configOverrides } = {}) {
7560
7730
  x: {
7561
7731
  display: false,
7562
7732
  max: valids,
7563
- grid: { display: false }
7733
+ grid: { display: false },
7734
+ ticks: { color: themeColors.textColor }
7564
7735
  },
7565
7736
  y: {
7566
- display: false
7737
+ display: false,
7738
+ ticks: { color: themeColors.textColor }
7567
7739
  }
7568
7740
  },
7569
7741
  plugins: {
@@ -7577,7 +7749,7 @@ function getCatBarChartOptions(count, valids, { ...configOverrides } = {}) {
7577
7749
  function getCatBarChartData({
7578
7750
  topkLabel,
7579
7751
  topkCount,
7580
- color = INFO_VAL_COLOR
7752
+ color = INFO_VAL_COLOR2
7581
7753
  }) {
7582
7754
  return {
7583
7755
  labels: [topkLabel],
@@ -7598,39 +7770,53 @@ function getCatBarChartData({
7598
7770
  };
7599
7771
  }
7600
7772
  var PrivateTopKDiffResultView = ({ run }, ref) => {
7773
+ const theme = useTheme();
7774
+ const isDark = theme.palette.mode === "dark";
7601
7775
  const [isDisplayTopTen, setIsDisplayTopTen] = useState(true);
7602
7776
  const result = run.result;
7603
7777
  const params = run.params;
7604
7778
  const baseTopK = result.base;
7605
7779
  const currentTopK = result.current;
7606
7780
  return /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
7607
- /* @__PURE__ */ jsxs(ScreenshotBox, { ref, blockSize: "auto", children: [
7608
- /* @__PURE__ */ jsxs(
7609
- Typography28,
7610
- {
7611
- variant: "h5",
7612
- sx: { pt: 4, textAlign: "center", color: "grey.600" },
7613
- children: [
7614
- "Model ",
7615
- params.model,
7616
- ".",
7617
- params.column_name
7618
- ]
7619
- }
7620
- ),
7621
- /* @__PURE__ */ jsxs(Stack24, { direction: "row", alignItems: "center", children: [
7622
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
7623
- /* @__PURE__ */ jsx(
7624
- TopKSummaryBarChart,
7625
- {
7626
- topKDiff: result,
7627
- valids: currentTopK.valids || 0,
7628
- isDisplayTopTen
7629
- }
7630
- ),
7631
- /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
7632
- ] })
7633
- ] }),
7781
+ /* @__PURE__ */ jsxs(
7782
+ ScreenshotBox,
7783
+ {
7784
+ ref,
7785
+ blockSize: "auto",
7786
+ backgroundColor: isDark ? "#1f2937" : "white",
7787
+ children: [
7788
+ /* @__PURE__ */ jsxs(
7789
+ Typography28,
7790
+ {
7791
+ variant: "h5",
7792
+ sx: {
7793
+ pt: 4,
7794
+ textAlign: "center",
7795
+ color: isDark ? "grey.200" : "grey.600"
7796
+ },
7797
+ children: [
7798
+ "Model ",
7799
+ params.model,
7800
+ ".",
7801
+ params.column_name
7802
+ ]
7803
+ }
7804
+ ),
7805
+ /* @__PURE__ */ jsxs(Stack24, { direction: "row", alignItems: "center", children: [
7806
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
7807
+ /* @__PURE__ */ jsx(
7808
+ TopKSummaryBarChart,
7809
+ {
7810
+ topKDiff: result,
7811
+ valids: currentTopK.valids || 0,
7812
+ isDisplayTopTen
7813
+ }
7814
+ ),
7815
+ /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } })
7816
+ ] })
7817
+ ]
7818
+ }
7819
+ ),
7634
7820
  /* @__PURE__ */ jsx(Box35, { sx: { flex: 1 } }),
7635
7821
  (baseTopK.values.length > 10 || currentTopK.values.length > 10) && /* @__PURE__ */ jsx(Box35, { sx: { display: "flex", p: 5, justifyContent: "start" }, children: /* @__PURE__ */ jsx(
7636
7822
  Link,
@@ -7652,6 +7838,8 @@ var PrivateValueDiffDetailResultView = ({
7652
7838
  viewOptions,
7653
7839
  onViewOptionsChanged
7654
7840
  }, ref) => {
7841
+ const theme = useTheme();
7842
+ const isDark = theme.palette.mode === "dark";
7655
7843
  if (!isValueDiffDetailRun(run)) {
7656
7844
  throw new Error("run type must be value_diff_detail");
7657
7845
  }
@@ -7736,7 +7924,7 @@ var PrivateValueDiffDetailResultView = ({
7736
7924
  sx: {
7737
7925
  display: "flex",
7738
7926
  flexDirection: "column",
7739
- bgcolor: "rgb(249, 249, 249)",
7927
+ bgcolor: isDark ? "grey.900" : "grey.50",
7740
7928
  height: "100%"
7741
7929
  },
7742
7930
  children: [
@@ -7771,7 +7959,7 @@ var PrivateValueDiffDetailResultView = ({
7771
7959
  sx: {
7772
7960
  display: "flex",
7773
7961
  flexDirection: "column",
7774
- bgcolor: "rgb(249, 249, 249)",
7962
+ bgcolor: isDark ? "grey.900" : "grey.50",
7775
7963
  height: "100%"
7776
7964
  },
7777
7965
  children: [
@@ -7841,11 +8029,65 @@ function ValueDiffForm({
7841
8029
  onParamsChanged,
7842
8030
  setIsReadyToExecute
7843
8031
  }) {
8032
+ const theme = useTheme();
8033
+ const isDark = theme.palette.mode === "dark";
7844
8034
  const [allColumns, setAllColumns] = useState(
7845
8035
  !params.columns || params.columns.length === 0
7846
8036
  );
7847
8037
  const model = params.model;
7848
8038
  const primaryKey = params.primary_key;
8039
+ const selectStyles = useMemo(
8040
+ () => ({
8041
+ container: (base) => ({
8042
+ ...base,
8043
+ width: "100%"
8044
+ }),
8045
+ control: (base) => ({
8046
+ ...base,
8047
+ minHeight: "40px",
8048
+ backgroundColor: isDark ? colors.neutral[700] : base.backgroundColor,
8049
+ borderColor: isDark ? colors.neutral[600] : base.borderColor
8050
+ }),
8051
+ menu: (base) => ({
8052
+ ...base,
8053
+ backgroundColor: isDark ? colors.neutral[700] : base.backgroundColor
8054
+ }),
8055
+ option: (base, state) => ({
8056
+ ...base,
8057
+ 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,
8058
+ color: isDark ? colors.neutral[200] : base.color
8059
+ }),
8060
+ multiValue: (base) => ({
8061
+ ...base,
8062
+ backgroundColor: isDark ? colors.neutral[600] : base.backgroundColor
8063
+ }),
8064
+ multiValueLabel: (base) => ({
8065
+ ...base,
8066
+ color: isDark ? colors.neutral[200] : base.color
8067
+ }),
8068
+ multiValueRemove: (base) => ({
8069
+ ...base,
8070
+ color: isDark ? colors.neutral[400] : base.color,
8071
+ "&:hover": {
8072
+ backgroundColor: isDark ? colors.neutral[500] : colors.red[200],
8073
+ color: isDark ? colors.neutral[200] : colors.red[600]
8074
+ }
8075
+ }),
8076
+ input: (base) => ({
8077
+ ...base,
8078
+ color: isDark ? colors.neutral[200] : base.color
8079
+ }),
8080
+ singleValue: (base) => ({
8081
+ ...base,
8082
+ color: isDark ? colors.neutral[200] : base.color
8083
+ }),
8084
+ placeholder: (base) => ({
8085
+ ...base,
8086
+ color: isDark ? colors.neutral[400] : base.color
8087
+ })
8088
+ }),
8089
+ [isDark]
8090
+ );
7849
8091
  const {
7850
8092
  columns,
7851
8093
  primaryKey: nodePrimaryKey,
@@ -7905,16 +8147,7 @@ function ValueDiffForm({
7905
8147
  primary_key: optionsArray.length == 1 ? optionsArray[0].value : optionsArray.map((v) => v.value)
7906
8148
  });
7907
8149
  },
7908
- styles: {
7909
- container: (base) => ({
7910
- ...base,
7911
- width: "100%"
7912
- }),
7913
- control: (base) => ({
7914
- ...base,
7915
- minHeight: "40px"
7916
- })
7917
- }
8150
+ styles: selectStyles
7918
8151
  }
7919
8152
  )
7920
8153
  ] }),
@@ -7965,16 +8198,7 @@ function ValueDiffForm({
7965
8198
  columns: cols
7966
8199
  });
7967
8200
  },
7968
- styles: {
7969
- container: (base) => ({
7970
- ...base,
7971
- width: "100%"
7972
- }),
7973
- control: (base) => ({
7974
- ...base,
7975
- minHeight: "40px"
7976
- })
7977
- }
8201
+ styles: selectStyles
7978
8202
  }
7979
8203
  )
7980
8204
  ] })
@@ -8017,20 +8241,28 @@ function _ValueDiffResultView({ run }, ref) {
8017
8241
  " removed)"
8018
8242
  ] }),
8019
8243
  /* @__PURE__ */ jsx(
8020
- ScreenshotDataGrid,
8244
+ Box35,
8021
8245
  {
8022
- ref,
8023
- style: {
8024
- blockSize: "auto",
8246
+ sx: {
8247
+ flex: 1,
8248
+ minHeight: 0,
8025
8249
  maxHeight: "100%",
8026
8250
  overflow: "auto",
8027
- borderBlock: "1px solid lightgray"
8251
+ borderTop: "1px solid",
8252
+ borderBottom: "1px solid",
8253
+ borderColor: "divider"
8028
8254
  },
8029
- columns,
8030
- rows,
8031
- renderers: { noRowsFallback: /* @__PURE__ */ jsx(EmptyRowsRenderer, {}) },
8032
- defaultColumnOptions: { resizable: true },
8033
- className: "rdg-light"
8255
+ children: /* @__PURE__ */ jsx(
8256
+ ScreenshotDataGrid,
8257
+ {
8258
+ ref,
8259
+ columns,
8260
+ rows,
8261
+ renderers: { noRowsFallback: /* @__PURE__ */ jsx(EmptyRowsRenderer, {}) },
8262
+ defaultColumnOptions: { resizable: true },
8263
+ className: "rdg-light"
8264
+ }
8265
+ )
8034
8266
  }
8035
8267
  )
8036
8268
  ]
@@ -8322,31 +8554,6 @@ function RecceActionContextProvider({
8322
8554
  );
8323
8555
  }
8324
8556
  var useRecceActionContext = () => useContext(RecceActionContext);
8325
-
8326
- // recce-source/js/src/lib/hooks/useClipBoardToast.tsx
8327
- function useClipBoardToast() {
8328
- function successToast(message) {
8329
- toaster.create({
8330
- description: message,
8331
- type: "info",
8332
- duration: 5e3,
8333
- closable: true
8334
- });
8335
- }
8336
- function failToast(title, error) {
8337
- toaster.create({
8338
- title,
8339
- description: String(error),
8340
- type: "error",
8341
- duration: 5e3,
8342
- closable: true
8343
- });
8344
- }
8345
- return {
8346
- successToast,
8347
- failToast
8348
- };
8349
- }
8350
8557
  var loadHtml2Canvas = async () => {
8351
8558
  const module = await import('html2canvas-pro/dist/html2canvas-pro.esm.js');
8352
8559
  return module.default;
@@ -8365,7 +8572,7 @@ function useCopyToClipboard2({
8365
8572
  backgroundColor = null,
8366
8573
  boardEffect = true,
8367
8574
  shadowEffect = false,
8368
- borderStyle = "solid 1px #ccc",
8575
+ borderStyle = `solid 1px ${colors.neutral[300]}`,
8369
8576
  borderRadius = "10px",
8370
8577
  onSuccess,
8371
8578
  onError,
@@ -8403,7 +8610,7 @@ function useCopyToClipboard2({
8403
8610
  nodeToUse.style.overflow = "hidden";
8404
8611
  nodeToUse.style.border = boardEffect ? borderStyle : "";
8405
8612
  nodeToUse.style.borderRadius = boardEffect ? borderRadius : "";
8406
- nodeToUse.style.backgroundColor = backgroundColor ?? "#f5f5f5";
8613
+ nodeToUse.style.backgroundColor = backgroundColor ?? colors.neutral[100];
8407
8614
  nodeToUse.style.height = `${String(nodeToUse.offsetHeight)}px`;
8408
8615
  const style = document.createElement("style");
8409
8616
  document.head.appendChild(style);
@@ -8417,7 +8624,7 @@ function useCopyToClipboard2({
8417
8624
  const html2canvas = await loadHtml2Canvas();
8418
8625
  canvas = await html2canvas(nodeToUse, {
8419
8626
  logging: false,
8420
- backgroundColor: "#f5f5f5",
8627
+ backgroundColor: backgroundColor ?? colors.neutral[100],
8421
8628
  ignoreElements
8422
8629
  });
8423
8630
  } else {
@@ -8490,7 +8697,7 @@ function useCopyToClipboardButton(options) {
8490
8697
  const { isLoading, copyToClipboard, ImageDownloadModal, ref } = useCopyToClipboard2({
8491
8698
  imageType: "png",
8492
8699
  shadowEffect: true,
8493
- backgroundColor: options?.backgroundColor ?? "#f5f5f5",
8700
+ backgroundColor: options?.backgroundColor ?? colors.neutral[100],
8494
8701
  onSuccess: () => {
8495
8702
  successToast("Copied the query result as an image to clipboard");
8496
8703
  },
@@ -8682,6 +8889,74 @@ var useRun = (runId) => {
8682
8889
  RunResultView
8683
8890
  };
8684
8891
  };
8892
+ function useThemeColors() {
8893
+ const theme = useTheme();
8894
+ const isDark = theme.palette.mode === "dark";
8895
+ return {
8896
+ /** Whether the current theme is dark mode */
8897
+ isDark,
8898
+ /** MUI theme object for direct access when needed */
8899
+ theme,
8900
+ /** Background colors */
8901
+ background: {
8902
+ /** Default page background */
8903
+ default: theme.palette.background.default,
8904
+ /** Paper/card background */
8905
+ paper: theme.palette.background.paper,
8906
+ /** Subtle background for slight elevation (e.g., hover states, inputs) */
8907
+ subtle: isDark ? colors.neutral[800] : colors.neutral[50],
8908
+ /** Emphasized background for higher contrast areas */
8909
+ emphasized: isDark ? colors.neutral[700] : colors.neutral[100]
8910
+ },
8911
+ /** Text colors */
8912
+ text: {
8913
+ /** Primary text color */
8914
+ primary: theme.palette.text.primary,
8915
+ /** Secondary/muted text color */
8916
+ secondary: theme.palette.text.secondary,
8917
+ /** Disabled text color */
8918
+ disabled: isDark ? colors.neutral[500] : colors.neutral[400],
8919
+ /** Inverted text (for use on dark backgrounds in light mode, etc.) */
8920
+ inverted: isDark ? colors.neutral[900] : colors.neutral[50]
8921
+ },
8922
+ /** Border colors */
8923
+ border: {
8924
+ /** Light border for subtle separations */
8925
+ light: isDark ? colors.neutral[700] : colors.neutral[200],
8926
+ /** Default border color */
8927
+ default: isDark ? colors.neutral[600] : colors.neutral[300],
8928
+ /** Strong border for emphasis */
8929
+ strong: isDark ? colors.neutral[500] : colors.neutral[400]
8930
+ },
8931
+ /** Status/semantic colors */
8932
+ status: {
8933
+ /** Added/success backgrounds */
8934
+ added: {
8935
+ bg: isDark ? "#1a4d1a" : "#cefece",
8936
+ text: theme.palette.text.primary
8937
+ },
8938
+ /** Removed/error backgrounds */
8939
+ removed: {
8940
+ bg: isDark ? "#5c1f1f" : "#ffc5c5",
8941
+ text: theme.palette.text.primary
8942
+ },
8943
+ /** Modified/warning backgrounds */
8944
+ modified: {
8945
+ bg: isDark ? "#5c4a1a" : "#fff3cd",
8946
+ text: theme.palette.text.primary
8947
+ }
8948
+ },
8949
+ /** Interactive element colors */
8950
+ interactive: {
8951
+ /** Hover state background */
8952
+ hover: isDark ? colors.neutral[700] : colors.neutral[100],
8953
+ /** Active/pressed state background */
8954
+ active: isDark ? colors.neutral[600] : colors.neutral[200],
8955
+ /** Focus ring color */
8956
+ focus: colors.iochmara[500]
8957
+ }
8958
+ };
8959
+ }
8685
8960
  function ActionControl({ onClose }) {
8686
8961
  const { cancel, actionState } = useLineageViewContextSafe();
8687
8962
  const getProgressMessage = () => {
@@ -8699,7 +8974,7 @@ function ActionControl({ onClose }) {
8699
8974
  }
8700
8975
  }
8701
8976
  };
8702
- return /* @__PURE__ */ jsx(Box35, { sx: { bgcolor: "white", borderRadius: 1, boxShadow: 6 }, children: /* @__PURE__ */ jsxs(
8977
+ return /* @__PURE__ */ jsx(Box35, { sx: { bgcolor: "background.paper", borderRadius: 1, boxShadow: 6 }, children: /* @__PURE__ */ jsxs(
8703
8978
  Stack24,
8704
8979
  {
8705
8980
  direction: "row",
@@ -8756,10 +9031,10 @@ var IconChanged = (props) => {
8756
9031
  }
8757
9032
  );
8758
9033
  };
8759
- function getIconForChangeStatus(changeStatus) {
9034
+ function getIconForChangeStatus(changeStatus, isDark) {
8760
9035
  if (changeStatus === "added") {
8761
9036
  const color2 = String(token("colors.green.solid"));
8762
- const backgroundColor2 = String(token("colors.green.subtle"));
9037
+ const backgroundColor2 = isDark ? String(token("colors.green.muted")) : String(token("colors.green.subtle"));
8763
9038
  return {
8764
9039
  color: color2,
8765
9040
  hexColor: color2,
@@ -8769,7 +9044,7 @@ function getIconForChangeStatus(changeStatus) {
8769
9044
  };
8770
9045
  } else if (changeStatus === "removed") {
8771
9046
  const color2 = String(token("colors.red.solid"));
8772
- const backgroundColor2 = String(token("colors.red.subtle"));
9047
+ const backgroundColor2 = isDark ? String(token("colors.red.muted")) : String(token("colors.red.subtle"));
8773
9048
  return {
8774
9049
  color: color2,
8775
9050
  hexColor: color2,
@@ -8779,7 +9054,7 @@ function getIconForChangeStatus(changeStatus) {
8779
9054
  };
8780
9055
  } else if (changeStatus === "modified") {
8781
9056
  const color2 = String(token("colors.amber.emphasized"));
8782
- const backgroundColor2 = String(token("colors.amber.subtle"));
9057
+ const backgroundColor2 = isDark ? String(token("colors.amber.emphasized")) : String(token("colors.amber.subtle"));
8783
9058
  return {
8784
9059
  color: color2,
8785
9060
  hexColor: color2,
@@ -8789,7 +9064,7 @@ function getIconForChangeStatus(changeStatus) {
8789
9064
  };
8790
9065
  }
8791
9066
  const color = String(token("colors.gray.focusRing"));
8792
- const backgroundColor = "#ffffff";
9067
+ const backgroundColor = isDark ? "#404040" : "#ffffff";
8793
9068
  return {
8794
9069
  color,
8795
9070
  hexColor: color,
@@ -8848,10 +9123,10 @@ function ChangeStatusLegend() {
8848
9123
  Box35,
8849
9124
  {
8850
9125
  sx: {
8851
- bgcolor: "white",
9126
+ bgcolor: "background.paper",
8852
9127
  padding: "12px",
8853
9128
  border: "1px solid",
8854
- borderColor: "grey.200",
9129
+ borderColor: "divider",
8855
9130
  fontSize: "0.875rem"
8856
9131
  },
8857
9132
  children: Object.entries(CHANGE_STATUS_MSGS).map(([key, [label, tip]]) => {
@@ -8901,13 +9176,13 @@ var ModeMessage = () => {
8901
9176
  onClick: () => {
8902
9177
  centerNode(nodeId);
8903
9178
  },
8904
- sx: {
9179
+ sx: (theme) => ({
8905
9180
  cursor: "pointer",
8906
9181
  fontFamily: "monospace",
8907
- bgcolor: "grey.100",
9182
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
8908
9183
  px: 0.5,
8909
9184
  borderRadius: 0.5
8910
- },
9185
+ }),
8911
9186
  children: nodeName
8912
9187
  }
8913
9188
  )
@@ -8926,13 +9201,13 @@ var ModeMessage = () => {
8926
9201
  onClick: () => {
8927
9202
  centerNode(nodeId);
8928
9203
  },
8929
- sx: {
9204
+ sx: (theme) => ({
8930
9205
  cursor: "pointer",
8931
9206
  fontFamily: "monospace",
8932
- bgcolor: "grey.100",
9207
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
8933
9208
  px: 0.5,
8934
9209
  borderRadius: 0.5
8935
- },
9210
+ }),
8936
9211
  children: [
8937
9212
  nodeName,
8938
9213
  ".",
@@ -8968,10 +9243,11 @@ var ColumnLevelLineageControl = ({
8968
9243
  {
8969
9244
  size: "small",
8970
9245
  variant: "outlined",
9246
+ color: "neutral",
8971
9247
  sx: {
8972
- borderColor: "neutral.light",
8973
9248
  whiteSpace: "nowrap",
8974
- display: "inline-flex"
9249
+ display: "inline-flex",
9250
+ bgcolor: "background.paper"
8975
9251
  },
8976
9252
  disabled: !interactive || noCatalogCurrent,
8977
9253
  startIcon: /* @__PURE__ */ jsx(FaRegDotCircle, {}),
@@ -8995,8 +9271,8 @@ var ColumnLevelLineageControl = ({
8995
9271
  borderRadius: 1,
8996
9272
  boxShadow: 3,
8997
9273
  border: "1px solid",
8998
- borderColor: "neutral.light",
8999
- bgcolor: "white",
9274
+ borderColor: "divider",
9275
+ bgcolor: "background.paper",
9000
9276
  fontSize: "0.8rem",
9001
9277
  p: "0 0.625rem"
9002
9278
  },
@@ -9114,6 +9390,7 @@ function GraphColumnNode(nodeProps) {
9114
9390
  const { id: nodeId } = data.node;
9115
9391
  const { column, type, transformationType, changeStatus } = data;
9116
9392
  const showContent = useStore((s) => s.transform[2] > 0.3);
9393
+ const { background, text, border } = useThemeColors();
9117
9394
  const {
9118
9395
  viewOptions,
9119
9396
  showContextMenu,
@@ -9123,7 +9400,7 @@ function GraphColumnNode(nodeProps) {
9123
9400
  const selectedNode = viewOptions.column_level_lineage?.node_id;
9124
9401
  const selectedColumn = viewOptions.column_level_lineage?.column;
9125
9402
  const isFocus = column === selectedColumn && nodeId === selectedNode;
9126
- const [isHovered, setIsHovered] = React12.useState(false);
9403
+ const [isHovered, setIsHovered] = React13.useState(false);
9127
9404
  const isHighlighted = isNodeHighlighted(columnNodeId);
9128
9405
  const isShowingChangeAnalysis = isNodeShowingChangeAnalysis(nodeId);
9129
9406
  if (!showContent) {
@@ -9136,10 +9413,11 @@ function GraphColumnNode(nodeProps) {
9136
9413
  display: "flex",
9137
9414
  width: 280,
9138
9415
  padding: "0px 10px",
9139
- border: "1px solid gray",
9140
- backgroundColor: isFocus ? "#f0f0f0" : "inherit",
9416
+ border: "1px solid",
9417
+ borderColor: border.default,
9418
+ backgroundColor: isFocus ? background.subtle : "inherit",
9141
9419
  "&:hover": {
9142
- backgroundColor: "#f0f0f0"
9420
+ backgroundColor: background.subtle
9143
9421
  },
9144
9422
  filter: isHighlighted ? "none" : "opacity(0.2) grayscale(50%)",
9145
9423
  cursor: "pointer"
@@ -9157,7 +9435,7 @@ function GraphColumnNode(nodeProps) {
9157
9435
  sx: {
9158
9436
  display: "flex",
9159
9437
  fontSize: "11px",
9160
- color: "black",
9438
+ color: text.primary,
9161
9439
  width: "100%",
9162
9440
  gap: "3px",
9163
9441
  alignItems: "center",
@@ -9175,7 +9453,7 @@ function GraphColumnNode(nodeProps) {
9175
9453
  fontSize: 14,
9176
9454
  display: "inline-flex",
9177
9455
  cursor: "pointer",
9178
- "&:hover": { color: "black" }
9456
+ "&:hover": { color: text.primary }
9179
9457
  },
9180
9458
  onClick: (e) => {
9181
9459
  e.preventDefault();
@@ -9245,10 +9523,10 @@ function ColumnLevelLineageLegend() {
9245
9523
  Box35,
9246
9524
  {
9247
9525
  sx: {
9248
- bgcolor: "white",
9526
+ bgcolor: "background.paper",
9249
9527
  padding: "12px",
9250
9528
  border: "1px solid",
9251
- borderColor: "grey.200",
9529
+ borderColor: "divider",
9252
9530
  fontSize: "0.875rem"
9253
9531
  },
9254
9532
  children: Object.entries(TRANSFORMATION_MSGS).map(([key, [label, tip]]) => {
@@ -9418,15 +9696,16 @@ function SetupConnectionPopover({
9418
9696
  )
9419
9697
  ] });
9420
9698
  }
9421
- var tagRootSx = {
9699
+ var tagRootSx = (theme) => ({
9422
9700
  display: "inline-flex",
9423
9701
  alignItems: "center",
9424
9702
  borderRadius: 16,
9425
9703
  px: 1,
9426
9704
  py: 0.25,
9427
9705
  fontSize: "0.75rem",
9428
- bgcolor: "grey.100"
9429
- };
9706
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
9707
+ color: theme.palette.mode === "dark" ? "grey.100" : "inherit"
9708
+ });
9430
9709
  var tagStartElementSx = {
9431
9710
  mr: 0.5,
9432
9711
  display: "flex",
@@ -9519,10 +9798,10 @@ function RowCountDiffTag({
9519
9798
  Box35,
9520
9799
  {
9521
9800
  component: "span",
9522
- sx: {
9523
- ...tagRootSx,
9801
+ sx: (theme) => ({
9802
+ ...tagRootSx(theme),
9524
9803
  gap: 0.5
9525
- },
9804
+ }),
9526
9805
  children: [
9527
9806
  /* @__PURE__ */ jsx(RunTypeIcon, {}),
9528
9807
  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" }),
@@ -9717,6 +9996,7 @@ var NodeRunsAggregated = ({
9717
9996
  inverted
9718
9997
  }) => {
9719
9998
  const { lineageGraph, runsAggregated } = useLineageGraphContext();
9999
+ const { text, isDark } = useThemeColors();
9720
10000
  const runs = runsAggregated?.[id];
9721
10001
  const node = lineageGraph?.nodes[id];
9722
10002
  if (!runs && !node) {
@@ -9734,8 +10014,8 @@ var NodeRunsAggregated = ({
9734
10014
  const result = rowCountDiff.result;
9735
10015
  rowCountChanged = result.curr !== result.base;
9736
10016
  }
9737
- const colorChanged = inverted ? "white" : getIconForChangeStatus("modified").color;
9738
- const colorUnchanged = inverted ? "gray" : "gray.100";
10017
+ const colorChanged = inverted ? text.inverted : getIconForChangeStatus("modified").color;
10018
+ const colorUnchanged = inverted ? text.secondary : isDark ? "grey.700" : "grey.100";
9739
10019
  const SchemaDiffIcon = findByRunType("schema_diff").icon;
9740
10020
  return /* @__PURE__ */ jsxs(Box35, { sx: { display: "flex", flex: 1, alignItems: "center" }, children: [
9741
10021
  schemaChanged !== void 0 && /* @__PURE__ */ jsx(
@@ -9816,6 +10096,7 @@ function GraphNode(nodeProps) {
9816
10096
  const { data } = nodeProps;
9817
10097
  const { id, resourceType, changeStatus } = data;
9818
10098
  const showContent = useStore((s) => s.transform[2] > 0.3);
10099
+ const { background, text, isDark } = useThemeColors();
9819
10100
  const { icon: ResourceIcon } = getIconForResourceType(resourceType);
9820
10101
  const [isHovered, setIsHovered] = useState(false);
9821
10102
  const {
@@ -9843,10 +10124,10 @@ function GraphNode(nodeProps) {
9843
10124
  icon: IconChangeStatus,
9844
10125
  color: colorChangeStatus,
9845
10126
  backgroundColor: backgroundColorChangeStatus
9846
- } = changeStatus ? getIconForChangeStatus(changeStatus) : {
10127
+ } = changeStatus ? getIconForChangeStatus(changeStatus, isDark) : {
9847
10128
  icon: void 0,
9848
10129
  color: String(token("colors.gray.400")),
9849
- backgroundColor: String(token("colors.gray.100"))
10130
+ backgroundColor: isDark ? String(token("colors.gray.700")) : String(token("colors.gray.100"))
9850
10131
  };
9851
10132
  const borderWidth = "2px";
9852
10133
  const borderColor = colorChangeStatus;
@@ -9857,15 +10138,15 @@ function GraphNode(nodeProps) {
9857
10138
  const nodeBackgroundColor = (function() {
9858
10139
  if (showContent) {
9859
10140
  if (selectMode === "selecting") {
9860
- return isSelected ? colorChangeStatus : "white";
10141
+ return isSelected ? colorChangeStatus : background.paper;
9861
10142
  } else if (selectMode === "action_result") {
9862
10143
  if (!action) {
9863
- return "white";
10144
+ return background.paper;
9864
10145
  } else {
9865
10146
  return isFocused || isSelected || isHovered ? backgroundColorChangeStatus : colorChangeStatus;
9866
10147
  }
9867
10148
  } else {
9868
- return isFocused || isSelected || isHovered ? backgroundColorChangeStatus : "white";
10149
+ return isFocused || isSelected || isHovered ? backgroundColorChangeStatus : background.paper;
9869
10150
  }
9870
10151
  } else {
9871
10152
  return isFocused || isSelected || isHovered ? colorChangeStatus : backgroundColorChangeStatus;
@@ -9873,27 +10154,27 @@ function GraphNode(nodeProps) {
9873
10154
  })();
9874
10155
  const titleColor = (function() {
9875
10156
  if (selectMode === "selecting") {
9876
- return isSelected ? "white" : "inherit";
10157
+ return isSelected ? text.inverted : text.primary;
9877
10158
  } else if (selectMode === "action_result") {
9878
- return !!action && !isSelected ? "white" : "inherit";
10159
+ return !!action && !isSelected ? text.inverted : text.primary;
9879
10160
  } else {
9880
- return "inherit";
10161
+ return text.primary;
9881
10162
  }
9882
10163
  })();
9883
10164
  const iconResourceColor = (function() {
9884
10165
  if (selectMode === "selecting") {
9885
- return isSelected ? "white" : "inherit";
10166
+ return isSelected ? text.inverted : text.primary;
9886
10167
  } else if (selectMode === "action_result") {
9887
- return !!action && !isSelected ? "white" : "inherit";
10168
+ return !!action && !isSelected ? text.inverted : text.primary;
9888
10169
  } else {
9889
- return "inherit";
10170
+ return text.primary;
9890
10171
  }
9891
10172
  })();
9892
10173
  const iconChangeStatusColor = (function() {
9893
10174
  if (selectMode === "selecting") {
9894
- return isSelected ? "white" : colorChangeStatus;
10175
+ return isSelected ? text.inverted : colorChangeStatus;
9895
10176
  } else if (selectMode === "action_result") {
9896
- return !!action && !isSelected ? "white" : "inherit";
10177
+ return !!action && !isSelected ? text.inverted : text.primary;
9897
10178
  } else {
9898
10179
  return colorChangeStatus;
9899
10180
  }
@@ -10022,9 +10303,9 @@ function GraphNode(nodeProps) {
10022
10303
  component: FaRegDotCircle,
10023
10304
  sx: {
10024
10305
  fontSize: 14,
10025
- color: "gray",
10306
+ color: text.secondary,
10026
10307
  cursor: "pointer",
10027
- "&:hover": { color: "black" }
10308
+ "&:hover": { color: text.primary }
10028
10309
  },
10029
10310
  onClick: (e) => {
10030
10311
  e.preventDefault();
@@ -10046,9 +10327,9 @@ function GraphNode(nodeProps) {
10046
10327
  {
10047
10328
  component: VscKebabVertical,
10048
10329
  sx: {
10049
- color: "gray",
10330
+ color: text.secondary,
10050
10331
  cursor: "pointer",
10051
- "&:hover": { color: "black" }
10332
+ "&:hover": { color: text.primary }
10052
10333
  },
10053
10334
  onClick: (e) => {
10054
10335
  e.preventDefault();
@@ -10104,7 +10385,7 @@ function GraphNode(nodeProps) {
10104
10385
  {
10105
10386
  sx: {
10106
10387
  height: 20,
10107
- color: "gray",
10388
+ color: text.secondary,
10108
10389
  fontSize: "9pt",
10109
10390
  margin: 0,
10110
10391
  fontWeight: 600
@@ -10220,10 +10501,10 @@ var defaultQueryContext = {
10220
10501
  };
10221
10502
  var RecceQueryContext = createContext(defaultQueryContext);
10222
10503
  function RecceQueryContextProvider({ children }) {
10223
- const [sqlQuery, setSqlQuery] = React12.useState(defaultSqlQuery);
10224
- const [baseSqlQuery, setBaseSqlQuery] = React12.useState(defaultSqlQuery);
10225
- const [isCustomQueries, setCustomQueries] = React12.useState(false);
10226
- const [primaryKeys, setPrimaryKeys] = React12.useState();
10504
+ const [sqlQuery, setSqlQuery] = React13.useState(defaultSqlQuery);
10505
+ const [baseSqlQuery, setBaseSqlQuery] = React13.useState(defaultSqlQuery);
10506
+ const [isCustomQueries, setCustomQueries] = React13.useState(false);
10507
+ const [primaryKeys, setPrimaryKeys] = React13.useState();
10227
10508
  return /* @__PURE__ */ jsx(
10228
10509
  RecceQueryContext.Provider,
10229
10510
  {
@@ -10252,7 +10533,7 @@ var RowCountStateContext = createContext(defaultRowCountStateContext);
10252
10533
  function RowCountStateContextProvider({
10253
10534
  children
10254
10535
  }) {
10255
- const [isNodesFetching, setIsNodesFetching] = React12.useState([]);
10536
+ const [isNodesFetching, setIsNodesFetching] = React13.useState([]);
10256
10537
  return /* @__PURE__ */ jsx(
10257
10538
  RowCountStateContext.Provider,
10258
10539
  {
@@ -10847,6 +11128,7 @@ function HistoryToggle() {
10847
11128
  {
10848
11129
  size: "xsmall",
10849
11130
  variant: "outlined",
11131
+ color: "neutral",
10850
11132
  startIcon: /* @__PURE__ */ jsx(VscHistory, {}),
10851
11133
  onClick: () => {
10852
11134
  trackHistoryAction({ name: isHistoryOpen ? "hide" : "show" });
@@ -10857,74 +11139,32 @@ function HistoryToggle() {
10857
11139
  )
10858
11140
  ] });
10859
11141
  }
11142
+ var codeBlockSx = (theme) => ({
11143
+ fontSize: "8pt",
11144
+ bgcolor: theme.palette.mode === "dark" ? "grey.700" : "grey.100",
11145
+ px: 0.5,
11146
+ borderRadius: 1
11147
+ });
10860
11148
  var SelectFilterTooltip = () => {
10861
11149
  return /* @__PURE__ */ jsxs(Stack24, { alignItems: "flex-start", spacing: 0, children: [
10862
11150
  /* @__PURE__ */ jsx(Typography28, { fontSize: "10pt", color: "text.secondary", pb: 1, children: "Select nodes by dbt node selector syntax" }),
10863
11151
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
10864
- /* @__PURE__ */ jsx(
10865
- Box35,
10866
- {
10867
- component: "code",
10868
- sx: {
10869
- fontSize: "8pt",
10870
- bgcolor: "grey.100",
10871
- px: 0.5,
10872
- borderRadius: 1
10873
- },
10874
- children: "model_name"
10875
- }
10876
- ),
11152
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "model_name" }),
10877
11153
  " ",
10878
11154
  "Select a node"
10879
11155
  ] }),
10880
11156
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
10881
- /* @__PURE__ */ jsx(
10882
- Box35,
10883
- {
10884
- component: "code",
10885
- sx: {
10886
- fontSize: "8pt",
10887
- bgcolor: "grey.100",
10888
- px: 0.5,
10889
- borderRadius: 1
10890
- },
10891
- children: "model_name+"
10892
- }
10893
- ),
11157
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "model_name+" }),
10894
11158
  " ",
10895
11159
  "Select downstream nodes"
10896
11160
  ] }),
10897
11161
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
10898
- /* @__PURE__ */ jsx(
10899
- Box35,
10900
- {
10901
- component: "code",
10902
- sx: {
10903
- fontSize: "8pt",
10904
- bgcolor: "grey.100",
10905
- px: 0.5,
10906
- borderRadius: 1
10907
- },
10908
- children: "+model_name"
10909
- }
10910
- ),
11162
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "+model_name" }),
10911
11163
  " ",
10912
11164
  "Select upstream nodes"
10913
11165
  ] }),
10914
11166
  /* @__PURE__ */ jsxs(Typography28, { fontSize: "8pt", children: [
10915
- /* @__PURE__ */ jsx(
10916
- Box35,
10917
- {
10918
- component: "code",
10919
- sx: {
10920
- fontSize: "8pt",
10921
- bgcolor: "grey.100",
10922
- px: 0.5,
10923
- borderRadius: 1
10924
- },
10925
- children: "model*"
10926
- }
10927
- ),
11167
+ /* @__PURE__ */ jsx(Box35, { component: "code", sx: codeBlockSx, children: "model*" }),
10928
11168
  " ",
10929
11169
  "Select by wildcard"
10930
11170
  ] })
@@ -11097,8 +11337,8 @@ var NodeSelectionInput = (props) => {
11097
11337
  boxShadow: 3,
11098
11338
  border: 1,
11099
11339
  borderRadius: 1,
11100
- color: "black",
11101
- bgcolor: "white"
11340
+ color: "text.primary",
11341
+ bgcolor: "background.paper"
11102
11342
  }
11103
11343
  }
11104
11344
  },
@@ -11442,7 +11682,7 @@ var LearnHowLink = () => {
11442
11682
  href: "https://docs.datarecce.io/get-started/#prepare-dbt-artifacts",
11443
11683
  target: "_blank",
11444
11684
  sx: {
11445
- color: "rgba(49, 130, 206, 1)",
11685
+ color: "primary.main",
11446
11686
  fontWeight: "bold",
11447
11687
  textDecoration: "underline",
11448
11688
  display: "inline-flex",
@@ -11550,7 +11790,7 @@ function PrivateSingleEnvSchemaView({ current, showMenu = true }, ref) {
11550
11790
  getRowClass,
11551
11791
  onCellClicked: handleCellClicked,
11552
11792
  onGridReady: handleGridReady,
11553
- rowSelection: "single"
11793
+ rowSelection: { mode: "singleRow" }
11554
11794
  }
11555
11795
  )
11556
11796
  ] });
@@ -11677,7 +11917,7 @@ function PrivateSchemaView({ base, current, showMenu = true }, ref) {
11677
11917
  getRowClass,
11678
11918
  onCellClicked: handleCellClicked,
11679
11919
  onGridReady: handleGridReady,
11680
- rowSelection: "single"
11920
+ rowSelection: { mode: "singleRow" }
11681
11921
  }
11682
11922
  )
11683
11923
  ] });
@@ -11873,6 +12113,8 @@ var NodeSqlView = ({ node }) => {
11873
12113
  const [isOpen, setIsOpen] = useState(false);
11874
12114
  const [isHovered, setIsHovered] = useState(false);
11875
12115
  const { data: flags, isLoading } = useRecceServerFlag();
12116
+ const muiTheme = useTheme();
12117
+ const isDark = muiTheme.palette.mode === "dark";
11876
12118
  const isSingleEnvOnboarding = flags?.single_env_onboarding;
11877
12119
  if (isLoading) {
11878
12120
  return /* @__PURE__ */ jsx(Fragment, {});
@@ -11902,7 +12144,8 @@ var NodeSqlView = ({ node }) => {
11902
12144
  value: original ?? "",
11903
12145
  readOnly: true,
11904
12146
  lineNumbers: true,
11905
- wordWrap: false
12147
+ wordWrap: false,
12148
+ theme: isDark ? "dark" : "light"
11906
12149
  }
11907
12150
  ) : /* @__PURE__ */ jsx(
11908
12151
  DiffEditor,
@@ -11913,6 +12156,7 @@ var NodeSqlView = ({ node }) => {
11913
12156
  readOnly: true,
11914
12157
  lineNumbers: true,
11915
12158
  sideBySide: false,
12159
+ theme: isDark ? "dark" : "light",
11916
12160
  height: "100%"
11917
12161
  }
11918
12162
  ),
@@ -11962,7 +12206,8 @@ var NodeSqlView = ({ node }) => {
11962
12206
  fontSize: 16,
11963
12207
  readOnly: true,
11964
12208
  lineNumbers: true,
11965
- wordWrap: false
12209
+ wordWrap: false,
12210
+ theme: isDark ? "dark" : "light"
11966
12211
  }
11967
12212
  ) : /* @__PURE__ */ jsx(
11968
12213
  DiffEditor,
@@ -11970,6 +12215,7 @@ var NodeSqlView = ({ node }) => {
11970
12215
  original: original ?? "",
11971
12216
  modified: modified ?? "",
11972
12217
  language: "sql",
12218
+ theme: isDark ? "dark" : "light",
11973
12219
  className: "text-base"
11974
12220
  }
11975
12221
  ) })
@@ -13062,6 +13308,8 @@ function SqlEditor({
13062
13308
  ...props
13063
13309
  }) {
13064
13310
  const { featureToggles } = useRecceInstanceContext();
13311
+ const muiTheme = useTheme();
13312
+ const isDark = muiTheme.palette.mode === "dark";
13065
13313
  const handleEditorChange = (value2) => {
13066
13314
  if (onChange) {
13067
13315
  onChange(value2);
@@ -13110,7 +13358,7 @@ function SqlEditor({
13110
13358
  {
13111
13359
  direction: "row",
13112
13360
  sx: {
13113
- bgcolor: "#EDF2F880",
13361
+ bgcolor: isDark ? alpha(colors.neutral[700], 0.5) : alpha(colors.neutral[100], 0.5),
13114
13362
  height: "40px",
13115
13363
  minHeight: "40px",
13116
13364
  fontSize: "14px",
@@ -13145,7 +13393,7 @@ function SqlEditor({
13145
13393
  size: "xsmall",
13146
13394
  variant: "outlined",
13147
13395
  onClick: onRun ?? onRunBase,
13148
- sx: { bgcolor: "white", p: "6px 12px" },
13396
+ sx: { bgcolor: "background.paper", p: "6px 12px" },
13149
13397
  disabled: featureToggles.disableDatabaseQuery,
13150
13398
  startIcon: /* @__PURE__ */ jsx(FaPlay, {}),
13151
13399
  children: "Run Query"
@@ -13165,6 +13413,7 @@ function SqlEditor({
13165
13413
  wordWrap: options.wordWrap !== "off",
13166
13414
  fontSize: options.fontSize ?? 16,
13167
13415
  keyBindings,
13416
+ theme: isDark ? "dark" : "light",
13168
13417
  className: "no-track-pii-safe max-h-dvh h-full"
13169
13418
  }
13170
13419
  )
@@ -13201,7 +13450,8 @@ function DualSqlEditor({
13201
13450
  height: "100%",
13202
13451
  width: "50%",
13203
13452
  gap: 0,
13204
- borderRight: "1px solid #D4DBE4"
13453
+ borderRight: "1px solid",
13454
+ borderRightColor: "divider"
13205
13455
  },
13206
13456
  children: /* @__PURE__ */ jsx(
13207
13457
  SqlEditor,
@@ -13351,6 +13601,7 @@ var RunView = forwardRef(
13351
13601
  children,
13352
13602
  onExecuteRun
13353
13603
  }, ref) => {
13604
+ const theme = useTheme();
13354
13605
  const errorMessage = error?.response?.data?.detail ?? run?.error;
13355
13606
  if (errorMessage) {
13356
13607
  return /* @__PURE__ */ jsxs(MuiAlert, { severity: "error", children: [
@@ -13375,7 +13626,7 @@ var RunView = forwardRef(
13375
13626
  justifyContent: "center",
13376
13627
  p: "1rem",
13377
13628
  height: "100%",
13378
- bgcolor: "rgb(249,249,249)"
13629
+ bgcolor: theme.palette.mode === "dark" ? "grey.900" : "grey.50"
13379
13630
  },
13380
13631
  children: /* @__PURE__ */ jsxs(Stack24, { spacing: 2, alignItems: "center", children: [
13381
13632
  /* @__PURE__ */ jsxs(Stack24, { direction: "row", alignItems: "center", spacing: 1, children: [
@@ -13428,10 +13679,10 @@ var RunView = forwardRef(
13428
13679
  display: "flex",
13429
13680
  alignItems: "center",
13430
13681
  justifyContent: "center",
13431
- bgcolor: "rgb(249,249,249)",
13682
+ bgcolor: theme.palette.mode === "dark" ? "grey.900" : "grey.50",
13432
13683
  height: "100%"
13433
13684
  },
13434
- children: "Loading..."
13685
+ children: /* @__PURE__ */ jsx(CircularProgress4, { size: 32 })
13435
13686
  }
13436
13687
  );
13437
13688
  }
@@ -13471,6 +13722,8 @@ var RunView = forwardRef(
13471
13722
  }
13472
13723
  );
13473
13724
  var _ParamView = (data) => {
13725
+ const muiTheme = useTheme();
13726
+ const isDark = muiTheme.palette.mode === "dark";
13474
13727
  const yaml3 = YAML.stringify(data, null, 2);
13475
13728
  return /* @__PURE__ */ jsx(
13476
13729
  CodeEditor,
@@ -13482,6 +13735,7 @@ var _ParamView = (data) => {
13482
13735
  wordWrap: true,
13483
13736
  fontSize: 14,
13484
13737
  height: "100%",
13738
+ theme: isDark ? "dark" : "light",
13485
13739
  className: "no-track-pii-safe"
13486
13740
  }
13487
13741
  );
@@ -13835,7 +14089,8 @@ function SandboxTopBar({
13835
14089
  p: "4pt 8pt",
13836
14090
  gap: "5px",
13837
14091
  height: "54px",
13838
- borderBottom: "1px solid lightgray",
14092
+ borderBottom: "1px solid",
14093
+ borderBottomColor: "divider",
13839
14094
  flex: "0 0 54px"
13840
14095
  },
13841
14096
  children: [
@@ -13890,6 +14145,8 @@ function SandboxEditorLabels({
13890
14145
  height = "32px",
13891
14146
  flex = "0 0 auto"
13892
14147
  }) {
14148
+ const theme = useTheme();
14149
+ const isDark = theme.palette.mode === "dark";
13893
14150
  const { lineageGraph, envInfo } = useLineageGraphContext();
13894
14151
  const widthOfBar = "50%";
13895
14152
  const margin = "0 16px";
@@ -13917,7 +14174,7 @@ function SandboxEditorLabels({
13917
14174
  fontSize: "14px",
13918
14175
  alignItems: "center",
13919
14176
  m: 0,
13920
- bgcolor: "#EDF2F880"
14177
+ bgcolor: isDark ? alpha(colors.neutral[700], 0.5) : alpha(colors.neutral[100], 0.5)
13921
14178
  },
13922
14179
  children: [
13923
14180
  /* @__PURE__ */ jsx(Stack24, { sx: { width: widthOfBar }, children: /* @__PURE__ */ jsxs(Typography28, { sx: { fontWeight: "bold", margin }, children: [
@@ -13933,6 +14190,8 @@ function SandboxEditorLabels({
13933
14190
  );
13934
14191
  }
13935
14192
  function SqlPreview({ current, onChange }) {
14193
+ const muiTheme = useTheme();
14194
+ const isDark = muiTheme.palette.mode === "dark";
13936
14195
  return /* @__PURE__ */ jsx(
13937
14196
  DiffEditor,
13938
14197
  {
@@ -13942,6 +14201,7 @@ function SqlPreview({ current, onChange }) {
13942
14201
  readOnly: false,
13943
14202
  lineNumbers: true,
13944
14203
  sideBySide: true,
14204
+ theme: isDark ? "dark" : "light",
13945
14205
  height: "100%",
13946
14206
  onModifiedChange: onChange
13947
14207
  }
@@ -14069,7 +14329,7 @@ function SandboxView({ isOpen, onClose, current }) {
14069
14329
  {
14070
14330
  sx: {
14071
14331
  height: "40px",
14072
- bgcolor: "rgb(77, 209, 176)",
14332
+ bgcolor: "cyan.600",
14073
14333
  px: 0,
14074
14334
  py: 2,
14075
14335
  display: "flex",
@@ -14100,7 +14360,7 @@ function SandboxView({ isOpen, onClose, current }) {
14100
14360
  sx: {
14101
14361
  fontFamily: '"Montserrat", sans-serif',
14102
14362
  fontSize: "1.125rem",
14103
- color: "white"
14363
+ color: "common.white"
14104
14364
  },
14105
14365
  children: "RECCE"
14106
14366
  }
@@ -14113,7 +14373,7 @@ function SandboxView({ isOpen, onClose, current }) {
14113
14373
  variant: "outlined",
14114
14374
  sx: {
14115
14375
  fontSize: "0.875rem",
14116
- color: "white",
14376
+ color: "common.white",
14117
14377
  borderColor: "rgba(255,255,255,0.5)"
14118
14378
  }
14119
14379
  }
@@ -14130,7 +14390,7 @@ function SandboxView({ isOpen, onClose, current }) {
14130
14390
  position: "absolute",
14131
14391
  right: 8,
14132
14392
  top: 4,
14133
- color: "white"
14393
+ color: "common.white"
14134
14394
  },
14135
14395
  children: /* @__PURE__ */ jsx(IoClose, {})
14136
14396
  }
@@ -14717,10 +14977,7 @@ function getSettingsUrl(instanceInfo) {
14717
14977
  }
14718
14978
  function SetupConnectionBanner() {
14719
14979
  const { featureToggles } = useRecceInstanceContext();
14720
- const { data: instanceInfo } = useQuery({
14721
- queryKey: cacheKeys.instanceInfo(),
14722
- queryFn: getRecceInstanceInfo
14723
- });
14980
+ const { data: instanceInfo } = useRecceInstanceInfo();
14724
14981
  if (featureToggles.mode !== "metadata only") {
14725
14982
  return null;
14726
14983
  }
@@ -14790,7 +15047,7 @@ function BaseEnvironmentSetupGuide() {
14790
15047
  {
14791
15048
  sx: {
14792
15049
  p: 1,
14793
- bgcolor: "white",
15050
+ bgcolor: "background.paper",
14794
15051
  borderRadius: "50%",
14795
15052
  display: "flex",
14796
15053
  alignItems: "center",
@@ -15244,7 +15501,7 @@ var edgeTypes = {
15244
15501
  lineageGraphEdge: GraphEdge
15245
15502
  };
15246
15503
  var nodeColor = (node) => {
15247
- return node.data.changeStatus ? getIconForChangeStatus(node.data.changeStatus).hexColor : "lightgray";
15504
+ return node.data.changeStatus ? getIconForChangeStatus(node.data.changeStatus).hexColor : colors.neutral[400];
15248
15505
  };
15249
15506
  var useResizeObserver = (ref, handler) => {
15250
15507
  const size = useRef({
@@ -15291,6 +15548,7 @@ var useNavToCheck = () => {
15291
15548
  );
15292
15549
  };
15293
15550
  function PrivateLineageView({ interactive = false, ...props }, ref) {
15551
+ const { isDark } = useThemeColors();
15294
15552
  const reactFlow = useReactFlow();
15295
15553
  const refResize = useRef(null);
15296
15554
  const { successToast, failToast } = useClipBoardToast();
@@ -15302,7 +15560,7 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
15302
15560
  renderLibrary: "html-to-image",
15303
15561
  imageType: "png",
15304
15562
  shadowEffect: true,
15305
- backgroundColor: "white",
15563
+ backgroundColor: isDark ? colors.neutral[900] : colors.neutral[50],
15306
15564
  ignoreElements: (element) => {
15307
15565
  try {
15308
15566
  return element.classList.contains(IGNORE_SCREENSHOT_CLASS);
@@ -16154,14 +16412,28 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
16154
16412
  minZoom: 0.1,
16155
16413
  nodesDraggable: interactive,
16156
16414
  ref: refReactFlow,
16415
+ colorMode: isDark ? "dark" : "light",
16157
16416
  children: [
16158
- /* @__PURE__ */ jsx(Background, { color: "#ccc" }),
16417
+ /* @__PURE__ */ jsx(
16418
+ Background,
16419
+ {
16420
+ id: "lineage-bg",
16421
+ variant: BackgroundVariant.Dots,
16422
+ color: isDark ? colors.neutral[700] : colors.neutral[300],
16423
+ gap: 20,
16424
+ size: 2
16425
+ }
16426
+ ),
16159
16427
  /* @__PURE__ */ jsx(
16160
16428
  Controls,
16161
16429
  {
16162
16430
  showInteractive: false,
16163
16431
  position: "top-right",
16164
16432
  className: IGNORE_SCREENSHOT_CLASS,
16433
+ style: {
16434
+ backgroundColor: isDark ? colors.neutral[700] : void 0,
16435
+ borderColor: isDark ? colors.neutral[600] : void 0
16436
+ },
16165
16437
  children: /* @__PURE__ */ jsx(
16166
16438
  ControlButton,
16167
16439
  {
@@ -16173,6 +16445,10 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
16173
16445
  from: "lineage_view"
16174
16446
  });
16175
16447
  },
16448
+ style: {
16449
+ backgroundColor: isDark ? colors.neutral[700] : void 0,
16450
+ color: isDark ? colors.neutral[200] : void 0
16451
+ },
16176
16452
  children: /* @__PURE__ */ jsx(Box35, { component: FiCopy })
16177
16453
  }
16178
16454
  )
@@ -16206,7 +16482,9 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
16206
16482
  nodeColor,
16207
16483
  nodeStrokeWidth: 3,
16208
16484
  zoomable: true,
16209
- pannable: true
16485
+ pannable: true,
16486
+ bgColor: isDark ? colors.neutral[800] : void 0,
16487
+ maskColor: isDark ? `${colors.neutral[900]}99` : `${colors.neutral[100]}99`
16210
16488
  }
16211
16489
  ),
16212
16490
  selectMode === "action_result" && /* @__PURE__ */ jsx(
@@ -16231,7 +16509,17 @@ function PrivateLineageView({ interactive = false, ...props }, ref) {
16231
16509
  ]
16232
16510
  }
16233
16511
  ),
16234
- focusedNode ? /* @__PURE__ */ jsx(Box35, { sx: { borderLeft: "solid 1px lightgray", height: "100%" }, children: /* @__PURE__ */ jsx(NodeView, { node: focusedNode, onCloseNode: onNodeViewClosed }) }) : /* @__PURE__ */ jsx(Box35, {})
16512
+ focusedNode ? /* @__PURE__ */ jsx(
16513
+ Box35,
16514
+ {
16515
+ sx: {
16516
+ borderLeft: "solid 1px",
16517
+ borderColor: "divider",
16518
+ height: "100%"
16519
+ },
16520
+ children: /* @__PURE__ */ jsx(NodeView, { node: focusedNode, onCloseNode: onNodeViewClosed })
16521
+ }
16522
+ ) : /* @__PURE__ */ jsx(Box35, {})
16235
16523
  ]
16236
16524
  }
16237
16525
  ),
@@ -16245,10 +16533,7 @@ function LineagePage() {
16245
16533
  return /* @__PURE__ */ jsx(ReactFlowProvider, { children: /* @__PURE__ */ jsx(LineageView, { interactive: true }) });
16246
16534
  }
16247
16535
  function SetupConnectionGuide() {
16248
- const { data: instanceInfo } = useQuery({
16249
- queryKey: cacheKeys.instanceInfo(),
16250
- queryFn: getRecceInstanceInfo
16251
- });
16536
+ const { data: instanceInfo } = useRecceInstanceInfo();
16252
16537
  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: [
16253
16538
  /* @__PURE__ */ jsxs(Stack24, { alignItems: "center", spacing: 2, children: [
16254
16539
  /* @__PURE__ */ jsx(
@@ -16256,7 +16541,7 @@ function SetupConnectionGuide() {
16256
16541
  {
16257
16542
  sx: {
16258
16543
  p: 1,
16259
- bgcolor: "white",
16544
+ bgcolor: "background.paper",
16260
16545
  borderRadius: "50%",
16261
16546
  display: "flex",
16262
16547
  alignItems: "center",
@@ -16405,7 +16690,8 @@ ${sqlQuery}`;
16405
16690
  padding: "4pt 8pt",
16406
16691
  gap: "5px",
16407
16692
  height: "54px",
16408
- borderBottom: "1px solid lightgray"
16693
+ borderBottom: "1px solid",
16694
+ borderColor: "divider"
16409
16695
  },
16410
16696
  children: [
16411
16697
  /* @__PURE__ */ jsx(HistoryToggle, {}),
@@ -16470,7 +16756,8 @@ ${sqlQuery}`;
16470
16756
  padding: "4pt 8pt",
16471
16757
  gap: "5px",
16472
16758
  height: "54px",
16473
- borderBottom: "1px solid lightgray",
16759
+ borderBottom: "1px solid",
16760
+ borderColor: "divider",
16474
16761
  flex: "0 0 54px"
16475
16762
  },
16476
16763
  children: [
@@ -16559,6 +16846,8 @@ var ChecklistItem = ({
16559
16846
  onSelect,
16560
16847
  onMarkAsApproved
16561
16848
  }) => {
16849
+ const theme = useTheme();
16850
+ const isDark = theme.palette.mode === "dark";
16562
16851
  const { featureToggles } = useRecceInstanceContext();
16563
16852
  const queryClient = useQueryClient();
16564
16853
  const checkId = check.check_id;
@@ -16583,10 +16872,10 @@ var ChecklistItem = ({
16583
16872
  width: "100%",
16584
16873
  p: "0.25rem 1.25rem",
16585
16874
  cursor: "pointer",
16586
- "&:hover": { bgcolor: "Cornsilk" },
16587
- bgcolor: selected ? "Floralwhite" : "inherit",
16875
+ "&:hover": { bgcolor: isDark ? "grey.800" : "Cornsilk" },
16876
+ bgcolor: selected ? isDark ? "grey.900" : "Floralwhite" : "inherit",
16588
16877
  borderBottom: "1px solid",
16589
- borderBottomColor: "divider",
16878
+ borderBottomColor: isDark ? "grey.700" : "divider",
16590
16879
  borderLeft: "3px solid",
16591
16880
  borderLeftColor: selected ? "orange" : "transparent",
16592
16881
  display: "flex",
@@ -16634,7 +16923,7 @@ var ChecklistItem = ({
16634
16923
  onClick: (e) => e.stopPropagation(),
16635
16924
  sx: {
16636
16925
  borderColor: "border.inverted",
16637
- bgcolor: isMarkAsApprovedDisabled ? "grey.200" : void 0
16926
+ bgcolor: isMarkAsApprovedDisabled ? isDark ? "grey.700" : "grey.200" : void 0
16638
16927
  }
16639
16928
  }
16640
16929
  ) })
@@ -16922,6 +17211,8 @@ function CommentInput({
16922
17211
  isSubmitting = false,
16923
17212
  placeholder = "Add a comment..."
16924
17213
  }) {
17214
+ const theme = useTheme();
17215
+ const isDark = theme.palette.mode === "dark";
16925
17216
  const [content, setContent] = useState("");
16926
17217
  const handleSubmit = () => {
16927
17218
  const trimmed = content.trim();
@@ -16951,14 +17242,17 @@ function CommentInput({
16951
17242
  disabled: isSubmitting,
16952
17243
  sx: {
16953
17244
  "& .MuiOutlinedInput-root": {
16954
- bgcolor: "white",
17245
+ bgcolor: "background.paper",
16955
17246
  "&:hover .MuiOutlinedInput-notchedOutline": {
16956
- borderColor: "grey.400"
17247
+ borderColor: isDark ? "grey.500" : "grey.400"
16957
17248
  },
16958
17249
  "&.Mui-focused .MuiOutlinedInput-notchedOutline": {
16959
17250
  borderColor: "iochmara.400",
16960
17251
  boxShadow: "0 0 0 1px #4299E1"
16961
17252
  }
17253
+ },
17254
+ "& .MuiOutlinedInput-notchedOutline": {
17255
+ borderColor: isDark ? "grey.600" : void 0
16962
17256
  }
16963
17257
  }
16964
17258
  }
@@ -17145,7 +17439,8 @@ function MarkdownLink({
17145
17439
  }
17146
17440
  function CodeBlock({
17147
17441
  className,
17148
- children
17442
+ children,
17443
+ isDark = false
17149
17444
  }) {
17150
17445
  const match = /language-(\w+)/.exec(className || "");
17151
17446
  const language = match ? match[1] : void 0;
@@ -17157,7 +17452,8 @@ function CodeBlock({
17157
17452
  {
17158
17453
  component: "code",
17159
17454
  sx: {
17160
- bgcolor: "grey.100",
17455
+ bgcolor: isDark ? "grey.800" : "grey.100",
17456
+ color: isDark ? "grey.200" : "inherit",
17161
17457
  px: 1,
17162
17458
  py: 0.5,
17163
17459
  borderRadius: 0.5,
@@ -17194,6 +17490,8 @@ function MarkdownContent({
17194
17490
  fontSize = "0.875rem",
17195
17491
  internalDomains = []
17196
17492
  }) {
17493
+ const theme = useTheme();
17494
+ const isDark = theme.palette.mode === "dark";
17197
17495
  const allInternalDomains = [
17198
17496
  window.location.hostname,
17199
17497
  "reccehq.com",
@@ -17205,7 +17503,7 @@ function MarkdownContent({
17205
17503
  // Links with external confirmation
17206
17504
  a: ({ href, children }) => /* @__PURE__ */ jsx(MarkdownLink, { href, internalDomains: allInternalDomains, children }),
17207
17505
  // Code blocks with syntax highlighting
17208
- code: CodeBlock,
17506
+ code: (props) => /* @__PURE__ */ jsx(CodeBlock, { ...props, isDark }),
17209
17507
  // Paragraphs
17210
17508
  p: ({ children }) => /* @__PURE__ */ jsx(
17211
17509
  Typography28,
@@ -17241,11 +17539,11 @@ function MarkdownContent({
17241
17539
  {
17242
17540
  sx: {
17243
17541
  borderLeft: "3px solid",
17244
- borderLeftColor: "grey.300",
17542
+ borderLeftColor: isDark ? "grey.600" : "grey.300",
17245
17543
  pl: 3,
17246
17544
  py: 1,
17247
17545
  my: 2,
17248
- color: "grey.600",
17546
+ color: isDark ? "grey.400" : "grey.600",
17249
17547
  fontStyle: "italic"
17250
17548
  },
17251
17549
  children
@@ -17260,19 +17558,22 @@ function MarkdownContent({
17260
17558
  width: "100%",
17261
17559
  fontSize,
17262
17560
  border: "1px solid",
17263
- borderColor: "grey.200",
17561
+ borderColor: isDark ? "grey.700" : "grey.200",
17264
17562
  borderRadius: 1
17265
17563
  },
17266
17564
  children
17267
17565
  }
17268
17566
  ) }),
17269
- thead: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "thead", sx: { bgcolor: "grey.50" }, children }),
17567
+ thead: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "thead", sx: { bgcolor: isDark ? "grey.800" : "grey.50" }, children }),
17270
17568
  tbody: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "tbody", children }),
17271
17569
  tr: ({ children }) => /* @__PURE__ */ jsx(
17272
17570
  Box35,
17273
17571
  {
17274
17572
  component: "tr",
17275
- sx: { borderBottom: "1px solid", borderColor: "grey.200" },
17573
+ sx: {
17574
+ borderBottom: "1px solid",
17575
+ borderColor: isDark ? "grey.700" : "grey.200"
17576
+ },
17276
17577
  children
17277
17578
  }
17278
17579
  ),
@@ -17286,7 +17587,13 @@ function MarkdownContent({
17286
17587
  ),
17287
17588
  td: ({ children }) => /* @__PURE__ */ jsx(Box35, { component: "td", sx: { px: 2, py: 1 }, children }),
17288
17589
  // Horizontal rule
17289
- hr: () => /* @__PURE__ */ jsx(Box35, { component: "hr", sx: { my: 3, borderColor: "grey.200" } }),
17590
+ hr: () => /* @__PURE__ */ jsx(
17591
+ Box35,
17592
+ {
17593
+ component: "hr",
17594
+ sx: { my: 3, borderColor: isDark ? "grey.700" : "grey.200" }
17595
+ }
17596
+ ),
17290
17597
  // Strong/Bold
17291
17598
  strong: ({ children }) => /* @__PURE__ */ jsx(Typography28, { component: "strong", sx: { fontWeight: 600 }, children }),
17292
17599
  // Emphasis/Italic
@@ -17398,6 +17705,8 @@ function CommentEvent({
17398
17705
  onEdit,
17399
17706
  onDelete
17400
17707
  }) {
17708
+ const theme = useTheme();
17709
+ const isDark = theme.palette.mode === "dark";
17401
17710
  const [isEditing, setIsEditing] = useState(false);
17402
17711
  const [editContent, setEditContent] = useState(event.content || "");
17403
17712
  const [isSubmitting, setIsSubmitting] = useState(false);
@@ -17517,7 +17826,7 @@ function CommentEvent({
17517
17826
  autoFocus: true,
17518
17827
  sx: {
17519
17828
  "& .MuiOutlinedInput-root": {
17520
- bgcolor: "white",
17829
+ bgcolor: "background.paper",
17521
17830
  "&:focus-within": {
17522
17831
  borderColor: "primary.main"
17523
17832
  }
@@ -17563,11 +17872,11 @@ function CommentEvent({
17563
17872
  Box35,
17564
17873
  {
17565
17874
  sx: {
17566
- bgcolor: "grey.50",
17875
+ bgcolor: isDark ? "grey.800" : "grey.50",
17567
17876
  borderRadius: 1,
17568
17877
  p: 1,
17569
17878
  border: "1px solid",
17570
- borderColor: "grey.200",
17879
+ borderColor: isDark ? "grey.700" : "grey.200",
17571
17880
  position: "relative",
17572
17881
  "&:hover .comment-actions": {
17573
17882
  opacity: 1
@@ -17690,6 +17999,8 @@ function TimelineEvent({
17690
17999
  return /* @__PURE__ */ jsx(StateChangeEvent, { event });
17691
18000
  }
17692
18001
  function CheckTimeline({ checkId }) {
18002
+ const theme = useTheme();
18003
+ const isDark = theme.palette.mode === "dark";
17693
18004
  const {
17694
18005
  events,
17695
18006
  isLoading,
@@ -17750,7 +18061,7 @@ function CheckTimeline({ checkId }) {
17750
18061
  height: "100%",
17751
18062
  alignItems: "stretch",
17752
18063
  borderLeft: "1px solid",
17753
- borderColor: "grey.200"
18064
+ borderColor: isDark ? "grey.700" : "grey.200"
17754
18065
  },
17755
18066
  spacing: 0,
17756
18067
  children: [
@@ -17761,7 +18072,7 @@ function CheckTimeline({ checkId }) {
17761
18072
  px: 3,
17762
18073
  py: 2,
17763
18074
  borderBottom: "1px solid",
17764
- borderColor: "grey.200"
18075
+ borderColor: isDark ? "grey.700" : "grey.200"
17765
18076
  },
17766
18077
  children: /* @__PURE__ */ jsx(Typography28, { variant: "subtitle2", sx: { fontWeight: 500 }, children: "Activity" })
17767
18078
  }
@@ -17776,7 +18087,12 @@ function CheckTimeline({ checkId }) {
17776
18087
  onDelete: handleDeleteComment
17777
18088
  }
17778
18089
  ),
17779
- index < events.length - 1 && /* @__PURE__ */ jsx(Divider, { sx: { borderColor: "grey.100" } })
18090
+ index < events.length - 1 && /* @__PURE__ */ jsx(
18091
+ Divider,
18092
+ {
18093
+ sx: { borderColor: isDark ? "grey.700" : "grey.100" }
18094
+ }
18095
+ )
17780
18096
  ] }, event.id)) }) }),
17781
18097
  /* @__PURE__ */ jsx(
17782
18098
  Box35,
@@ -17785,8 +18101,8 @@ function CheckTimeline({ checkId }) {
17785
18101
  px: 3,
17786
18102
  py: 3,
17787
18103
  borderTop: "1px solid",
17788
- borderColor: "grey.200",
17789
- bgcolor: "grey.50"
18104
+ borderColor: isDark ? "grey.700" : "grey.200",
18105
+ bgcolor: isDark ? "grey.900" : "grey.50"
17790
18106
  },
17791
18107
  children: /* @__PURE__ */ jsx(
17792
18108
  CommentInput,
@@ -17808,7 +18124,7 @@ var RecceCheckContext = createContext({
17808
18124
  }
17809
18125
  });
17810
18126
  function RecceCheckContextProvider({ children }) {
17811
- const [selectCheckId, setSelectCheckId] = React12.useState("");
18127
+ const [selectCheckId, setSelectCheckId] = React13.useState("");
17812
18128
  return /* @__PURE__ */ jsx(
17813
18129
  RecceCheckContext.Provider,
17814
18130
  {
@@ -17859,16 +18175,18 @@ function CheckBreadcrumb({ name, setName }) {
17859
18175
  };
17860
18176
  }, [isEditing, handleCommit]);
17861
18177
  return /* @__PURE__ */ jsx(
17862
- Breadcrumbs,
18178
+ Box35,
17863
18179
  {
17864
18180
  sx: {
17865
- flex: "0 1 auto",
17866
- fontSize: "12pt",
18181
+ flex: "2",
18182
+ fontSize: "1rem",
17867
18183
  fontWeight: 500,
17868
- overflow: "hidden"
18184
+ overflow: "hidden",
18185
+ color: "text.primary",
18186
+ cursor: "pointer"
17869
18187
  },
17870
18188
  className: "no-track-pii-safe",
17871
- children: /* @__PURE__ */ jsx(Box35, { sx: { cursor: "pointer", flex: "0 1 auto", overflow: "hidden" }, children: isEditing ? /* @__PURE__ */ jsx(
18189
+ children: isEditing ? /* @__PURE__ */ jsx(
17872
18190
  TextField,
17873
18191
  {
17874
18192
  inputRef: editInputRef,
@@ -17891,7 +18209,7 @@ function CheckBreadcrumb({ name, setName }) {
17891
18209
  onClick: handleClick,
17892
18210
  children: name
17893
18211
  }
17894
- ) })
18212
+ )
17895
18213
  }
17896
18214
  );
17897
18215
  }
@@ -18052,6 +18370,8 @@ function generateCheckTemplate({
18052
18370
  function PresetCheckTemplateView({
18053
18371
  yamlTemplate
18054
18372
  }) {
18373
+ const muiTheme = useTheme();
18374
+ const isDark = muiTheme.palette.mode === "dark";
18055
18375
  return /* @__PURE__ */ jsx(
18056
18376
  CodeEditor,
18057
18377
  {
@@ -18061,6 +18381,7 @@ function PresetCheckTemplateView({
18061
18381
  lineNumbers: false,
18062
18382
  wordWrap: true,
18063
18383
  fontSize: 14,
18384
+ theme: isDark ? "dark" : "light",
18064
18385
  height: "300px"
18065
18386
  }
18066
18387
  );
@@ -18069,7 +18390,8 @@ var NodelistItem = ({
18069
18390
  node,
18070
18391
  selected,
18071
18392
  onSelect,
18072
- schemaChanged
18393
+ schemaChanged,
18394
+ isDark
18073
18395
  }) => {
18074
18396
  const { icon } = getIconForResourceType(node.data.resourceType);
18075
18397
  const { base, current } = node.data.data;
@@ -18094,8 +18416,8 @@ var NodelistItem = ({
18094
18416
  fontSize: "10pt",
18095
18417
  p: "5px 8px",
18096
18418
  cursor: "pointer",
18097
- "&:hover": { bgcolor: "grey.200" },
18098
- bgcolor: selected ? "grey.100" : "inherit",
18419
+ "&:hover": { bgcolor: isDark ? "grey.700" : "grey.200" },
18420
+ bgcolor: selected ? isDark ? "grey.800" : "grey.100" : "inherit",
18099
18421
  alignItems: "center",
18100
18422
  gap: "5px"
18101
18423
  },
@@ -18122,6 +18444,8 @@ var NodelistItem = ({
18122
18444
  ) });
18123
18445
  };
18124
18446
  function PrivateSchemaDiffView({ check }, ref) {
18447
+ const theme = useTheme();
18448
+ const isDark = theme.palette.mode === "dark";
18125
18449
  const { lineageGraph } = useLineageGraphContext();
18126
18450
  const params = check.params;
18127
18451
  const queryKey = [...cacheKeys.check(check.check_id), "select"];
@@ -18204,7 +18528,7 @@ function PrivateSchemaDiffView({ check }, ref) {
18204
18528
  display: "flex",
18205
18529
  alignItems: "center",
18206
18530
  justifyContent: "center",
18207
- bgcolor: "rgb(249,249,249)",
18531
+ bgcolor: isDark ? "grey.900" : "grey.50",
18208
18532
  height: "100%"
18209
18533
  },
18210
18534
  children: "Loading..."
@@ -18218,7 +18542,7 @@ function PrivateSchemaDiffView({ check }, ref) {
18218
18542
  display: "flex",
18219
18543
  alignItems: "center",
18220
18544
  justifyContent: "center",
18221
- bgcolor: "rgb(249,249,249)",
18545
+ bgcolor: isDark ? "grey.900" : "grey.50",
18222
18546
  height: "100%"
18223
18547
  },
18224
18548
  className: "no-track-pii-safe",
@@ -18236,7 +18560,7 @@ function PrivateSchemaDiffView({ check }, ref) {
18236
18560
  display: "flex",
18237
18561
  alignItems: "center",
18238
18562
  justifyContent: "center",
18239
- bgcolor: "rgb(249,249,249)",
18563
+ bgcolor: isDark ? "grey.900" : "grey.50",
18240
18564
  height: "100%"
18241
18565
  },
18242
18566
  children: "No nodes matched"
@@ -18260,7 +18584,7 @@ function PrivateSchemaDiffView({ check }, ref) {
18260
18584
  {
18261
18585
  sx: {
18262
18586
  overflow: "auto",
18263
- bgcolor: "white",
18587
+ bgcolor: "background.paper",
18264
18588
  listStyle: "none"
18265
18589
  },
18266
18590
  children: nodes.map((node2, i) => /* @__PURE__ */ jsx(
@@ -18269,6 +18593,7 @@ function PrivateSchemaDiffView({ check }, ref) {
18269
18593
  node: node2,
18270
18594
  schemaChanged: changedNodes.includes(node2.id),
18271
18595
  selected: i === selected,
18596
+ isDark,
18272
18597
  onSelect: () => {
18273
18598
  setSelected(i);
18274
18599
  }
@@ -18286,6 +18611,8 @@ function CheckDetail({
18286
18611
  checkId,
18287
18612
  refreshCheckList
18288
18613
  }) {
18614
+ const theme = useTheme();
18615
+ const isDark = theme.palette.mode === "dark";
18289
18616
  const { featureToggles, sessionId } = useRecceInstanceContext();
18290
18617
  const { setLatestSelectedCheckId } = useRecceCheckContext();
18291
18618
  const { cloudMode } = useLineageGraphContext();
@@ -18534,7 +18861,7 @@ function CheckDetail({
18534
18861
  alignItems: "center",
18535
18862
  height: 40,
18536
18863
  borderBottom: "2px solid",
18537
- borderColor: "grey.300"
18864
+ borderColor: isDark ? "grey.700" : "grey.300"
18538
18865
  },
18539
18866
  children: [
18540
18867
  checkTypeIcon && /* @__PURE__ */ jsx(
@@ -18579,7 +18906,7 @@ function CheckDetail({
18579
18906
  FaBookmark,
18580
18907
  {
18581
18908
  size: "1rem",
18582
- color: lightTheme.palette.iochmara.dark
18909
+ color: theme.palette.iochmara.dark
18583
18910
  }
18584
18911
  )
18585
18912
  }
@@ -18666,7 +18993,14 @@ function CheckDetail({
18666
18993
  handleApproveCheck();
18667
18994
  },
18668
18995
  disabled: isDisabledByNoResult(check.type, run) || featureToggles.disableUpdateChecklist,
18669
- startIcon: check.is_checked ? /* @__PURE__ */ jsx(PiCheckCircle, {}) : /* @__PURE__ */ jsx(VscCircleLarge, { style: { color: "lightgray" } }),
18996
+ startIcon: check.is_checked ? /* @__PURE__ */ jsx(PiCheckCircle, {}) : /* @__PURE__ */ jsx(
18997
+ VscCircleLarge,
18998
+ {
18999
+ style: {
19000
+ color: isDark ? theme.palette.grey[600] : theme.palette.grey[400]
19001
+ }
19002
+ }
19003
+ ),
18670
19004
  sx: { flex: "0 0 auto", textTransform: "none" },
18671
19005
  children: check.is_checked ? "Approved" : "Pending"
18672
19006
  }
@@ -18800,7 +19134,7 @@ function CheckDetail({
18800
19134
  display: "flex",
18801
19135
  alignItems: "center",
18802
19136
  justifyContent: "center",
18803
- bgcolor: "rgb(249,249,249)",
19137
+ bgcolor: isDark ? "grey.900" : "grey.50",
18804
19138
  height: "100%"
18805
19139
  },
18806
19140
  children: /* @__PURE__ */ jsxs(Stack24, { spacing: 2, alignItems: "center", children: [
@@ -19048,19 +19382,22 @@ var RunListItem = ({
19048
19382
  return /* @__PURE__ */ jsxs(
19049
19383
  Box35,
19050
19384
  {
19051
- sx: {
19385
+ sx: (theme) => ({
19052
19386
  minWidth: "200px",
19053
19387
  display: "flex",
19054
19388
  flexDirection: "column",
19055
19389
  width: "100%",
19056
19390
  p: "5px 20px",
19057
19391
  cursor: "pointer",
19058
- borderBottom: "solid 1px lightgray",
19392
+ borderBottom: "solid 1px",
19393
+ borderBottomColor: "divider",
19059
19394
  borderLeft: "4px solid",
19060
19395
  borderLeftColor: isSelected ? "amber.400" : "transparent",
19061
- backgroundColor: isSelected ? "amber.50" : "transparent",
19062
- "&:hover": { bgcolor: isSelected ? "orange.50" : "grey.200" }
19063
- },
19396
+ backgroundColor: isSelected ? theme.palette.mode === "dark" ? "amber.900" : "amber.50" : "transparent",
19397
+ "&:hover": {
19398
+ bgcolor: isSelected ? theme.palette.mode === "dark" ? "amber.800" : "orange.50" : theme.palette.mode === "dark" ? "grey.800" : "grey.200"
19399
+ }
19400
+ }),
19064
19401
  onClick: () => {
19065
19402
  onSelectRun(run.run_id);
19066
19403
  },
@@ -19146,7 +19483,8 @@ var DateSegmentItem = ({ runAt }) => {
19146
19483
  minWidth: "200px",
19147
19484
  width: "100%",
19148
19485
  p: "5px 20px",
19149
- borderBottom: "solid 1px lightgray",
19486
+ borderBottom: "solid 1px",
19487
+ borderBottomColor: "divider",
19150
19488
  color: "grey.500",
19151
19489
  fontSize: "11pt"
19152
19490
  },
@@ -19173,7 +19511,8 @@ var RunList = () => {
19173
19511
  width: "100%",
19174
19512
  flex: "0 0 54px",
19175
19513
  px: "24px 8px",
19176
- borderBottom: "solid 1px lightgray"
19514
+ borderBottom: "solid 1px",
19515
+ borderBottomColor: "divider"
19177
19516
  },
19178
19517
  children: [
19179
19518
  /* @__PURE__ */ jsx(Typography28, { variant: "h6", children: "History" }),
@@ -19247,7 +19586,7 @@ function DateDividedRunHistoryItem({
19247
19586
  },
19248
19587
  [setLocation]
19249
19588
  );
19250
- return /* @__PURE__ */ jsxs(React12.Fragment, { children: [
19589
+ return /* @__PURE__ */ jsxs(React13.Fragment, { children: [
19251
19590
  shouldRenderDateSegment && /* @__PURE__ */ jsx(DateSegmentItem, { runAt: run.run_at }, currentDate),
19252
19591
  /* @__PURE__ */ jsx(
19253
19592
  RunListItem,
@@ -19272,20 +19611,23 @@ var NODE_CHANGE_STATUS_MSGS = {
19272
19611
  folder_changed: ["Modified", "Modified folder"]
19273
19612
  };
19274
19613
  function getIconForChangeStatus2(changeStatus) {
19614
+ const greenColor = String(token("colors.green.solid"));
19615
+ const redColor = String(token("colors.red.solid"));
19616
+ const amberColor = String(token("colors.amber.emphasized"));
19275
19617
  if (changeStatus === "added") {
19276
- return { color: "#1dce00", icon: IconAdded };
19618
+ return { color: greenColor, icon: IconAdded };
19277
19619
  } else if (changeStatus === "removed") {
19278
- return { color: "#ff067e", icon: IconRemoved };
19620
+ return { color: redColor, icon: IconRemoved };
19279
19621
  } else if (changeStatus === "modified") {
19280
- return { color: "#ffa502", icon: IconModified };
19622
+ return { color: amberColor, icon: IconModified };
19281
19623
  } else if (changeStatus === "col_added") {
19282
- return { color: "#1dce00", icon: IconAdded };
19624
+ return { color: greenColor, icon: IconAdded };
19283
19625
  } else if (changeStatus === "col_removed") {
19284
- return { color: "#ff067e", icon: IconRemoved };
19626
+ return { color: redColor, icon: IconRemoved };
19285
19627
  } else if (changeStatus === "col_changed") {
19286
- return { color: "#ffa502", icon: IconModified };
19628
+ return { color: amberColor, icon: IconModified };
19287
19629
  } else if (changeStatus === "folder_changed") {
19288
- return { color: "#ffa502", icon: IconChanged };
19630
+ return { color: amberColor, icon: IconChanged };
19289
19631
  }
19290
19632
  return { color: "inherit", icon: void 0 };
19291
19633
  }
@@ -19385,11 +19727,12 @@ function ChangeSummary({ lineageGraph }) {
19385
19727
  container: true,
19386
19728
  sx: {
19387
19729
  mb: "10px",
19388
- borderTop: "1px solid lightgray",
19730
+ borderTop: "1px solid",
19731
+ borderColor: "divider",
19389
19732
  p: "2.5vw"
19390
19733
  },
19391
19734
  children: [
19392
- /* @__PURE__ */ jsx(Grid2, { size: 6, sx: { borderColor: "lightgray" }, children: /* @__PURE__ */ jsx(
19735
+ /* @__PURE__ */ jsx(Grid2, { size: 6, sx: { borderColor: "divider" }, children: /* @__PURE__ */ jsx(
19393
19736
  SummaryText,
19394
19737
  {
19395
19738
  name: "Code Changes",
@@ -19412,35 +19755,42 @@ function ChangeSummary({ lineageGraph }) {
19412
19755
  ] })
19413
19756
  }
19414
19757
  ) }),
19415
- /* @__PURE__ */ jsx(Grid2, { size: 6, sx: { borderLeft: "1px solid lightgray", pl: "12px" }, children: /* @__PURE__ */ jsx(
19416
- SummaryText,
19758
+ /* @__PURE__ */ jsx(
19759
+ Grid2,
19417
19760
  {
19418
- name: "Column Changes",
19419
- value: /* @__PURE__ */ jsxs(Grid2, { container: true, sx: { width: "100%" }, children: [
19420
- /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
19421
- ChangeStatusCountLabel,
19422
- {
19423
- changeStatus: "col_added",
19424
- value: col_added
19425
- }
19426
- ) }),
19427
- /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
19428
- ChangeStatusCountLabel,
19429
- {
19430
- changeStatus: "col_removed",
19431
- value: col_removed
19432
- }
19433
- ) }),
19434
- /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
19435
- ChangeStatusCountLabel,
19436
- {
19437
- changeStatus: "col_changed",
19438
- value: col_changed
19439
- }
19440
- ) })
19441
- ] })
19761
+ size: 6,
19762
+ sx: { borderLeft: "1px solid", borderLeftColor: "divider", pl: "12px" },
19763
+ children: /* @__PURE__ */ jsx(
19764
+ SummaryText,
19765
+ {
19766
+ name: "Column Changes",
19767
+ value: /* @__PURE__ */ jsxs(Grid2, { container: true, sx: { width: "100%" }, children: [
19768
+ /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
19769
+ ChangeStatusCountLabel,
19770
+ {
19771
+ changeStatus: "col_added",
19772
+ value: col_added
19773
+ }
19774
+ ) }),
19775
+ /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
19776
+ ChangeStatusCountLabel,
19777
+ {
19778
+ changeStatus: "col_removed",
19779
+ value: col_removed
19780
+ }
19781
+ ) }),
19782
+ /* @__PURE__ */ jsx(Grid2, { size: 4, children: /* @__PURE__ */ jsx(
19783
+ ChangeStatusCountLabel,
19784
+ {
19785
+ changeStatus: "col_changed",
19786
+ value: col_changed
19787
+ }
19788
+ ) })
19789
+ ] })
19790
+ }
19791
+ )
19442
19792
  }
19443
- ) })
19793
+ )
19444
19794
  ]
19445
19795
  }
19446
19796
  );