@keboola/design 4.3.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +68 -43
- package/COMPONENT-API.md +35 -6
- package/README.md +1 -1
- package/dist/charts.cjs +268 -0
- package/dist/charts.cjs.map +1 -0
- package/dist/charts.d.cts +181 -0
- package/dist/charts.d.ts +181 -0
- package/dist/charts.js +259 -0
- package/dist/charts.js.map +1 -0
- package/dist/editors.cjs +151 -77
- package/dist/editors.cjs.map +1 -1
- package/dist/editors.js +153 -79
- package/dist/editors.js.map +1 -1
- package/dist/index.cjs +2610 -1537
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +486 -467
- package/dist/index.d.ts +486 -467
- package/dist/index.js +2337 -1273
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +155 -119
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +155 -119
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +62 -36
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.js +63 -37
- package/dist/mermaid.js.map +1 -1
- package/dist/rjsf.cjs +10294 -0
- package/dist/rjsf.cjs.map +1 -0
- package/dist/rjsf.d.cts +55 -0
- package/dist/rjsf.d.ts +55 -0
- package/dist/rjsf.js +10256 -0
- package/dist/rjsf.js.map +1 -0
- package/dist/styles.css +4 -2
- package/dist/testing.cjs +238 -111
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.d.cts +6 -0
- package/dist/testing.d.ts +6 -0
- package/dist/testing.js +240 -113
- package/dist/testing.js.map +1 -1
- package/package.json +51 -16
- package/src/styles.css +72 -30
package/dist/editors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext, forwardRef, useMemo, useRef, useEffect, useCallback, useState, use, Children, Fragment as Fragment$1 } from 'react';
|
|
1
|
+
import { createContext, forwardRef, useMemo, useRef, useEffect, useCallback, useSyncExternalStore, useState, use, Children, Fragment as Fragment$1 } from 'react';
|
|
2
2
|
import { completeAnyWord, autocompletion } from '@codemirror/autocomplete';
|
|
3
3
|
import { jsonParseLinter, json } from '@codemirror/lang-json';
|
|
4
4
|
import { linter } from '@codemirror/lint';
|
|
@@ -9,7 +9,7 @@ import { clsx } from 'clsx';
|
|
|
9
9
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
10
10
|
import { Root as Root$1, Trigger, Portal, Content } from '@radix-ui/react-tooltip';
|
|
11
11
|
import { cva } from 'class-variance-authority';
|
|
12
|
-
import {
|
|
12
|
+
import { keboolaLegacySidebar, keboolaLegacyTopnav } from '@keboola/brand-registry';
|
|
13
13
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
14
14
|
import { Root, Slottable } from '@radix-ui/react-slot';
|
|
15
15
|
import * as lucide_react_star from 'lucide-react';
|
|
@@ -59,13 +59,39 @@ var cn = (...classes) => twMerge(clsx(...classes));
|
|
|
59
59
|
var copyToClipboard = (text) => {
|
|
60
60
|
return navigator.clipboard.writeText(text);
|
|
61
61
|
};
|
|
62
|
-
var ThemeContext = createContext(null);
|
|
63
62
|
|
|
64
|
-
// src/components/
|
|
65
|
-
var
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
// src/components/ThemeProvider/utils.ts
|
|
64
|
+
var createTheme = (brand) => ({
|
|
65
|
+
id: brand.id,
|
|
66
|
+
name: brand.name,
|
|
67
|
+
shell: brand.shell,
|
|
68
|
+
logo: brand.logo
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// src/components/ThemeProvider/defaults.ts
|
|
72
|
+
[keboolaLegacySidebar.id, keboolaLegacyTopnav.id];
|
|
73
|
+
var DEFAULT_COLOR_SCHEME = "light";
|
|
74
|
+
var DEFAULT_BRAND_ID = "design-system";
|
|
75
|
+
var defaultBrand = {
|
|
76
|
+
id: DEFAULT_BRAND_ID,
|
|
77
|
+
name: "Design System",
|
|
78
|
+
shell: "sidebar"};
|
|
79
|
+
var defaultTheme = createTheme(defaultBrand);
|
|
80
|
+
|
|
81
|
+
// src/components/ThemeProvider/context.tsx
|
|
82
|
+
var noop = () => void 0;
|
|
83
|
+
var defaultContext = {
|
|
84
|
+
scheme: DEFAULT_COLOR_SCHEME,
|
|
85
|
+
resolvedScheme: DEFAULT_COLOR_SCHEME,
|
|
86
|
+
setScheme: noop,
|
|
87
|
+
brandId: defaultTheme.id,
|
|
88
|
+
setBrand: noop,
|
|
89
|
+
themes: [defaultTheme],
|
|
90
|
+
currentTheme: defaultTheme
|
|
68
91
|
};
|
|
92
|
+
createContext(defaultContext);
|
|
93
|
+
var ArgoDesignContext = createContext(true);
|
|
94
|
+
var useArgoDesign = () => use(ArgoDesignContext);
|
|
69
95
|
var tooltipVariants = cva(
|
|
70
96
|
[
|
|
71
97
|
"tailwindcss-preflight",
|
|
@@ -143,8 +169,7 @@ var TooltipContent = ({
|
|
|
143
169
|
placement = "right",
|
|
144
170
|
...rest
|
|
145
171
|
}) => {
|
|
146
|
-
const
|
|
147
|
-
const renderArgo = !isLegacy;
|
|
172
|
+
const renderArgo = useArgoDesign();
|
|
148
173
|
const handlePointerDownOutside = (event) => {
|
|
149
174
|
if (keepOpenOnPointerDownOutside) event.preventDefault();
|
|
150
175
|
onPointerDownOutside?.(event);
|
|
@@ -274,7 +299,7 @@ var helpVariants = cva(["tw-m-0", "tw-text-xs"], {
|
|
|
274
299
|
state: {
|
|
275
300
|
default: ["tw-text-muted-foreground"],
|
|
276
301
|
error: ["tw-text-destructive"],
|
|
277
|
-
warning: ["tw-text-warning
|
|
302
|
+
warning: ["tw-text-warning"]
|
|
278
303
|
}
|
|
279
304
|
}
|
|
280
305
|
});
|
|
@@ -326,8 +351,8 @@ var variants = cva(
|
|
|
326
351
|
"tw-font-medium",
|
|
327
352
|
"tw-tracking-[1px]",
|
|
328
353
|
"tw-uppercase",
|
|
329
|
-
// border
|
|
330
|
-
"tw-rounded
|
|
354
|
+
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
355
|
+
"tw-rounded",
|
|
331
356
|
"tw-border",
|
|
332
357
|
"tw-border-transparent",
|
|
333
358
|
// styling
|
|
@@ -522,14 +547,14 @@ var argoVariants = cva(
|
|
|
522
547
|
"hover:tw-text-primary-foreground",
|
|
523
548
|
"focus:tw-text-primary-foreground",
|
|
524
549
|
"focus-visible:tw-border-primary",
|
|
525
|
-
"focus-visible:tw-ring-
|
|
550
|
+
"focus-visible:tw-ring-ring/50"
|
|
526
551
|
],
|
|
527
552
|
secondary: [
|
|
528
553
|
"tw-bg-primary/10",
|
|
529
554
|
"tw-text-primary",
|
|
530
555
|
"hover:not-disabled:tw-bg-primary/20",
|
|
531
556
|
"focus-visible:tw-border-primary",
|
|
532
|
-
"focus-visible:tw-ring-
|
|
557
|
+
"focus-visible:tw-ring-ring/50"
|
|
533
558
|
],
|
|
534
559
|
// should be called "destructive" by Figma
|
|
535
560
|
danger: [
|
|
@@ -546,20 +571,22 @@ var argoVariants = cva(
|
|
|
546
571
|
// Semantic base text color so the label/icon flips in dark mode
|
|
547
572
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
548
573
|
"tw-text-foreground",
|
|
549
|
-
|
|
550
|
-
|
|
574
|
+
// Hover follows the brand primary (translucent tint), matching the
|
|
575
|
+
// `secondary` variant — not the fixed `accent` blue.
|
|
576
|
+
"hover:not-disabled:tw-bg-primary/10",
|
|
577
|
+
"hover:not-disabled:tw-text-primary",
|
|
551
578
|
"hover:active:tw-bg-background",
|
|
552
579
|
"focus-visible:!tw-border-primary",
|
|
553
|
-
"focus-visible:tw-ring-
|
|
580
|
+
"focus-visible:tw-ring-ring/50"
|
|
554
581
|
],
|
|
555
582
|
// should be called "ghost" by Figma
|
|
556
583
|
invisible: [
|
|
557
584
|
"tw-bg-transparent",
|
|
558
585
|
"tw-text-foreground",
|
|
559
|
-
"hover:not-disabled:tw-bg-
|
|
560
|
-
"hover:not-disabled:tw-text-
|
|
561
|
-
"hover:not-disabled:tw-border-
|
|
562
|
-
"focus-visible:tw-ring-
|
|
586
|
+
"hover:not-disabled:tw-bg-primary/10",
|
|
587
|
+
"hover:not-disabled:tw-text-primary",
|
|
588
|
+
"hover:not-disabled:tw-border-primary/10",
|
|
589
|
+
"focus-visible:tw-ring-ring/50"
|
|
563
590
|
],
|
|
564
591
|
// should be called "link" by Figma
|
|
565
592
|
inline: [
|
|
@@ -567,7 +594,7 @@ var argoVariants = cva(
|
|
|
567
594
|
"tw-text-primary",
|
|
568
595
|
"hover:tw-underline",
|
|
569
596
|
"hover:active:tw-bg-transparent",
|
|
570
|
-
"focus-visible:tw-ring-
|
|
597
|
+
"focus-visible:tw-ring-ring/50"
|
|
571
598
|
]
|
|
572
599
|
},
|
|
573
600
|
size: {
|
|
@@ -602,8 +629,7 @@ var Button = ({
|
|
|
602
629
|
block = false,
|
|
603
630
|
...buttonProps
|
|
604
631
|
}) => {
|
|
605
|
-
const
|
|
606
|
-
const renderArgo = !isLegacy;
|
|
632
|
+
const renderArgo = useArgoDesign();
|
|
607
633
|
const Comp = asChild ? Root : "button";
|
|
608
634
|
const isIconOnly = String(size).startsWith("icon");
|
|
609
635
|
const classNames = renderArgo ? argoVariants({ variant, size, block, className }) : variants({ size, variant, block, className });
|
|
@@ -730,15 +756,44 @@ var ButtonToolbar = ({ value, children }) => {
|
|
|
730
756
|
children
|
|
731
757
|
] });
|
|
732
758
|
};
|
|
733
|
-
var
|
|
759
|
+
var resolveToken = (token, fallbackChannels, alpha) => {
|
|
760
|
+
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(`--color-${token}`).trim() || fallbackChannels;
|
|
761
|
+
return alpha === void 0 ? `rgb(${channels})` : `rgb(${channels} / ${alpha})`;
|
|
762
|
+
};
|
|
763
|
+
var SSR_SIGNAL = "ssr";
|
|
764
|
+
var readThemeSignal = () => {
|
|
765
|
+
if (typeof document === "undefined") return SSR_SIGNAL;
|
|
766
|
+
const root = document.documentElement;
|
|
767
|
+
return `${root.getAttribute("data-theme") ?? ""}:${root.getAttribute("data-brand") ?? ""}`;
|
|
768
|
+
};
|
|
769
|
+
var subscribeThemeSignal = (onChange) => {
|
|
770
|
+
if (typeof document === "undefined") return () => {
|
|
771
|
+
};
|
|
772
|
+
const observer = new MutationObserver(onChange);
|
|
773
|
+
observer.observe(document.documentElement, {
|
|
774
|
+
attributes: true,
|
|
775
|
+
attributeFilter: ["data-theme", "data-brand"]
|
|
776
|
+
});
|
|
777
|
+
return () => observer.disconnect();
|
|
778
|
+
};
|
|
779
|
+
var useThemeSignal = () => useSyncExternalStore(subscribeThemeSignal, readThemeSignal, () => SSR_SIGNAL);
|
|
780
|
+
var useThemedExtension = (build, deps = []) => {
|
|
781
|
+
const themeSignal = useThemeSignal();
|
|
782
|
+
return useMemo(build, [themeSignal, ...deps]);
|
|
783
|
+
};
|
|
784
|
+
|
|
785
|
+
// src/components/CodeEditor/helpers.ts
|
|
786
|
+
var buildBaseThemeStyles = () => ({
|
|
734
787
|
"*": { lineHeight: "20px" },
|
|
735
788
|
"*::selection": {
|
|
736
|
-
backgroundColor:
|
|
737
|
-
color: `${
|
|
789
|
+
backgroundColor: resolveToken("primary", "31 143 255"),
|
|
790
|
+
color: `${resolveToken("primary-foreground", "255 255 255")} !important`
|
|
791
|
+
},
|
|
792
|
+
'&.cm-editor:has(.cm-content[contenteditable="false"])': {
|
|
793
|
+
backgroundColor: resolveToken("secondary", "226 232 240")
|
|
738
794
|
},
|
|
739
|
-
'&.cm-editor:has(.cm-content[contenteditable="false"])': { backgroundColor: colors.neutral[150] },
|
|
740
795
|
'&.cm-editor:has(.cm-content[contenteditable="false"]) .cm-gutters': {
|
|
741
|
-
backgroundColor:
|
|
796
|
+
backgroundColor: resolveToken("border", "229 231 235")
|
|
742
797
|
},
|
|
743
798
|
"&.cm-editor .cm-scroller": { overflowAnchor: "none" },
|
|
744
799
|
"&.cm-editor, &.cm-editor .cm-scroller": {
|
|
@@ -754,11 +809,11 @@ var baseThemeStyles = {
|
|
|
754
809
|
".cm-line .tok-string": { color: colors.warning[700] },
|
|
755
810
|
// merge (diff) view
|
|
756
811
|
'&[class*="cm-merge-"] .cm-deletedLine': { backgroundColor: colors.error[100] },
|
|
757
|
-
'&[class*="cm-merge-"] .cm-changedLine': { backgroundColor: colors.
|
|
812
|
+
'&[class*="cm-merge-"] .cm-changedLine': { backgroundColor: colors.green[100] },
|
|
758
813
|
'&[class*="cm-merge-"] .cm-deletedLineGutter': { backgroundColor: colors.error[200] },
|
|
759
|
-
'&[class*="cm-merge-"] .cm-changedLineGutter': { backgroundColor: colors.
|
|
814
|
+
'&[class*="cm-merge-"] .cm-changedLineGutter': { backgroundColor: colors.green[200] },
|
|
760
815
|
'&[class*="cm-merge-"] .cm-deletedText': { background: colors.error[200] },
|
|
761
|
-
'&[class*="cm-merge-"] .cm-changedText': { background: colors.
|
|
816
|
+
'&[class*="cm-merge-"] .cm-changedText': { background: colors.green[200] },
|
|
762
817
|
'&[class*="cm-merge-"]': {
|
|
763
818
|
backgroundColor: `${colors.white} !important`
|
|
764
819
|
},
|
|
@@ -767,16 +822,18 @@ var baseThemeStyles = {
|
|
|
767
822
|
},
|
|
768
823
|
".cm-changeGutter": { position: "absolute", zIndex: -1, width: "100%", paddingLeft: 0 },
|
|
769
824
|
'&[class*="cm-merge-"] .cm-changedLine,&[class*="cm-merge-"] .cm-line, &[class*="cm-merge-"] .cm-deletedChunk': { paddingLeft: 0 }
|
|
770
|
-
};
|
|
825
|
+
});
|
|
771
826
|
var BASIS_SETUP = { drawSelection: false };
|
|
772
|
-
var
|
|
827
|
+
var buildCustomTheme = () => githubLightInit({
|
|
773
828
|
settings: {
|
|
774
829
|
fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,
|
|
775
|
-
background:
|
|
776
|
-
|
|
830
|
+
background: resolveToken("background", "249 250 251"),
|
|
831
|
+
foreground: resolveToken("foreground", "30 41 59"),
|
|
832
|
+
gutterBackground: resolveToken("muted", "241 245 249"),
|
|
833
|
+
gutterForeground: resolveToken("muted-foreground", "100 116 139"),
|
|
777
834
|
gutterBorder: "transparent",
|
|
778
835
|
lineHighlight: "transparent",
|
|
779
|
-
selection:
|
|
836
|
+
selection: resolveToken("primary", "31 143 255")
|
|
780
837
|
}
|
|
781
838
|
});
|
|
782
839
|
var getLanguageMode = (mode) => {
|
|
@@ -894,6 +951,8 @@ var CodeEditor = ({
|
|
|
894
951
|
renderAdditionalButtons,
|
|
895
952
|
className
|
|
896
953
|
}) => {
|
|
954
|
+
const customTheme = useThemedExtension(buildCustomTheme);
|
|
955
|
+
const baseTheme = useThemedExtension(() => EditorView.theme(buildBaseThemeStyles()));
|
|
897
956
|
const commonExtensions = useMemo(() => {
|
|
898
957
|
return [
|
|
899
958
|
getLanguageMode(mode),
|
|
@@ -913,9 +972,9 @@ var CodeEditor = ({
|
|
|
913
972
|
}))
|
|
914
973
|
),
|
|
915
974
|
autocompletion({ activateOnTyping: completeAny }),
|
|
916
|
-
|
|
975
|
+
baseTheme
|
|
917
976
|
].filter(Boolean);
|
|
918
|
-
}, [autocompletions, completeAny, extraKeys, mode, withLineWrapping]);
|
|
977
|
+
}, [autocompletions, completeAny, extraKeys, mode, withLineWrapping, baseTheme]);
|
|
919
978
|
const extensions = useMemo(() => {
|
|
920
979
|
return [
|
|
921
980
|
...commonExtensions,
|
|
@@ -1130,19 +1189,19 @@ var activeQueryHighlight = (splitQueries) => {
|
|
|
1130
1189
|
),
|
|
1131
1190
|
EditorView.baseTheme({
|
|
1132
1191
|
".cm-active-query": {
|
|
1133
|
-
boxShadow: `inset -1px 0 0 0 ${colors.
|
|
1192
|
+
boxShadow: `inset -1px 0 0 0 ${colors.blue[300]}, inset 1px 0 0 0 ${colors.blue[300]}`,
|
|
1134
1193
|
marginRight: "8px"
|
|
1135
1194
|
},
|
|
1136
1195
|
".cm-active-query-first": {
|
|
1137
|
-
boxShadow: `inset -1px 0 0 0 ${colors.
|
|
1196
|
+
boxShadow: `inset -1px 0 0 0 ${colors.blue[300]}, inset 1px 0 0 0 ${colors.blue[300]}, inset 0 1px 0 0 ${colors.blue[300]}`,
|
|
1138
1197
|
borderRadius: "4px 4px 0 0"
|
|
1139
1198
|
},
|
|
1140
1199
|
".cm-active-query-last": {
|
|
1141
|
-
boxShadow: `inset -1px 0 0 0 ${colors.
|
|
1200
|
+
boxShadow: `inset -1px 0 0 0 ${colors.blue[300]}, inset 1px 0 0 0 ${colors.blue[300]}, inset 0 -1px 0 0 ${colors.blue[300]}`,
|
|
1142
1201
|
borderRadius: "0 0 4px 4px"
|
|
1143
1202
|
},
|
|
1144
1203
|
".cm-active-query-first.cm-active-query-last": {
|
|
1145
|
-
boxShadow: `inset 0 0 0 1px ${colors.
|
|
1204
|
+
boxShadow: `inset 0 0 0 1px ${colors.blue[300]}`,
|
|
1146
1205
|
borderRadius: "4px"
|
|
1147
1206
|
}
|
|
1148
1207
|
})
|
|
@@ -1256,13 +1315,13 @@ var highlightedLinesTheme = EditorView.baseTheme({
|
|
|
1256
1315
|
".cm-highlight-marker": {
|
|
1257
1316
|
width: "2px",
|
|
1258
1317
|
height: "100%",
|
|
1259
|
-
backgroundColor: colors.
|
|
1318
|
+
backgroundColor: colors.blue[500]
|
|
1260
1319
|
},
|
|
1261
1320
|
".cm-error-line": {
|
|
1262
1321
|
backgroundColor: `${colors.error[100]} !important`
|
|
1263
1322
|
},
|
|
1264
1323
|
".cm-processing-line": {
|
|
1265
|
-
backgroundColor: `${colors.
|
|
1324
|
+
backgroundColor: `${colors.blue[100]} !important`
|
|
1266
1325
|
}
|
|
1267
1326
|
});
|
|
1268
1327
|
function highlightingExtension(queryParser) {
|
|
@@ -1366,13 +1425,13 @@ var searchViewPlugin = ViewPlugin.fromClass(
|
|
|
1366
1425
|
);
|
|
1367
1426
|
var searchTheme = EditorView.baseTheme({
|
|
1368
1427
|
".cm-searchMatch": {
|
|
1369
|
-
backgroundColor: colors.
|
|
1428
|
+
backgroundColor: colors.blue[100]
|
|
1370
1429
|
},
|
|
1371
1430
|
".cm-searchMatch > span": {
|
|
1372
|
-
color: `${colors.
|
|
1431
|
+
color: `${colors.blue[600]} !important`
|
|
1373
1432
|
},
|
|
1374
1433
|
".cm-searchMatch-selected": {
|
|
1375
|
-
backgroundColor: colors.
|
|
1434
|
+
backgroundColor: colors.blue[600]
|
|
1376
1435
|
},
|
|
1377
1436
|
".cm-searchMatch-selected > span": {
|
|
1378
1437
|
color: `${colors.white} !important`
|
|
@@ -1400,29 +1459,31 @@ var CUSTOM_KEYMAP = [
|
|
|
1400
1459
|
}
|
|
1401
1460
|
}
|
|
1402
1461
|
];
|
|
1403
|
-
var
|
|
1404
|
-
...
|
|
1462
|
+
var buildTheme = () => ({
|
|
1463
|
+
...buildBaseThemeStyles(),
|
|
1405
1464
|
"&.cm-editor": {
|
|
1406
1465
|
border: "solid 1px transparent",
|
|
1407
|
-
background:
|
|
1466
|
+
background: resolveToken("card", "255 255 255"),
|
|
1408
1467
|
borderRadius: "8px",
|
|
1409
1468
|
paddingTop: "8px",
|
|
1410
1469
|
paddingBottom: "8px"
|
|
1411
1470
|
},
|
|
1412
1471
|
'&.cm-editor:has(.cm-content[contenteditable="true"]):hover': {
|
|
1413
|
-
borderColor:
|
|
1472
|
+
borderColor: resolveToken("ring", "31 143 255")
|
|
1414
1473
|
},
|
|
1415
1474
|
'&.cm-editor:has(.cm-content[contenteditable="true"]):focus-within': {
|
|
1416
|
-
borderColor:
|
|
1417
|
-
boxShadow: `0 0 0 4px ${
|
|
1475
|
+
borderColor: resolveToken("ring", "31 143 255"),
|
|
1476
|
+
boxShadow: `0 0 0 4px ${resolveToken("ring", "31 143 255", 0.3)}`
|
|
1418
1477
|
},
|
|
1419
1478
|
"&.cm-editor .cm-scroller": { overflowAnchor: "none" },
|
|
1420
|
-
"&.cm-editor :is(.cm-gutters,.cm-scroller)": { background:
|
|
1421
|
-
'&.cm-editor:has(.cm-content[contenteditable="false"])': {
|
|
1479
|
+
"&.cm-editor :is(.cm-gutters,.cm-scroller)": { background: resolveToken("card", "255 255 255") },
|
|
1480
|
+
'&.cm-editor:has(.cm-content[contenteditable="false"])': {
|
|
1481
|
+
background: resolveToken("muted", "241 245 249")
|
|
1482
|
+
},
|
|
1422
1483
|
'&.cm-editor:has(.cm-content[contenteditable="false"]) :is(.cm-scroller,.cm-gutters)': {
|
|
1423
|
-
background:
|
|
1484
|
+
background: resolveToken("muted", "241 245 249")
|
|
1424
1485
|
}
|
|
1425
|
-
};
|
|
1486
|
+
});
|
|
1426
1487
|
var SqlEditor = ({
|
|
1427
1488
|
value,
|
|
1428
1489
|
onChange,
|
|
@@ -1448,6 +1509,8 @@ var SqlEditor = ({
|
|
|
1448
1509
|
dialect
|
|
1449
1510
|
}) => {
|
|
1450
1511
|
const editorRef = useRef(null);
|
|
1512
|
+
const customTheme = useThemedExtension(buildCustomTheme);
|
|
1513
|
+
const themeExtension = useThemedExtension(() => EditorView$1.theme(buildTheme()));
|
|
1451
1514
|
const extensions = useMemo(() => {
|
|
1452
1515
|
const baseKeymap = [...defaultKeymap, ...CUSTOM_KEYMAP];
|
|
1453
1516
|
return [
|
|
@@ -1456,7 +1519,7 @@ var SqlEditor = ({
|
|
|
1456
1519
|
...installExtensions({ schema, defaultDatabase, defaultSchema, variables, dialect }),
|
|
1457
1520
|
searchExtension(),
|
|
1458
1521
|
highlightingExtension(queryParser),
|
|
1459
|
-
|
|
1522
|
+
themeExtension,
|
|
1460
1523
|
onBlurEditor ? EditorView$1.domEventHandlers({ blur: (_, view) => onBlurEditor(view) }) : [],
|
|
1461
1524
|
onFocusEditor ? EditorView$1.domEventHandlers({ focus: (_, view) => onFocusEditor(view) }) : []
|
|
1462
1525
|
];
|
|
@@ -1469,7 +1532,8 @@ var SqlEditor = ({
|
|
|
1469
1532
|
variables,
|
|
1470
1533
|
dialect,
|
|
1471
1534
|
onBlurEditor,
|
|
1472
|
-
onFocusEditor
|
|
1535
|
+
onFocusEditor,
|
|
1536
|
+
themeExtension
|
|
1473
1537
|
]);
|
|
1474
1538
|
const defaultSetup = useMemo(() => {
|
|
1475
1539
|
return { ...BASIS_SETUP2, lineNumbers };
|
|
@@ -1630,23 +1694,23 @@ var createDiffHighlightExtension = () => {
|
|
|
1630
1694
|
gutterLineClass.from(f, (val) => val.gutterMarkers)
|
|
1631
1695
|
]
|
|
1632
1696
|
});
|
|
1633
|
-
const
|
|
1697
|
+
const theme = EditorView.theme({
|
|
1634
1698
|
".cm-merge-safe-line": {
|
|
1635
|
-
backgroundColor: `${colors.
|
|
1636
|
-
boxShadow: `inset 3px 0 0 ${colors.
|
|
1699
|
+
backgroundColor: `${colors.green[100]} !important`,
|
|
1700
|
+
boxShadow: `inset 3px 0 0 ${colors.green[500]}`
|
|
1637
1701
|
},
|
|
1638
1702
|
".cm-merge-conflict-line": {
|
|
1639
1703
|
backgroundColor: `${colors.warning[100]} !important`,
|
|
1640
1704
|
boxShadow: `inset 3px 0 0 ${colors.warning[500]}`
|
|
1641
1705
|
},
|
|
1642
1706
|
".cm-merge-safe-gutter": {
|
|
1643
|
-
backgroundColor: `${colors.
|
|
1707
|
+
backgroundColor: `${colors.green[200]} !important`
|
|
1644
1708
|
},
|
|
1645
1709
|
".cm-merge-conflict-gutter": {
|
|
1646
1710
|
backgroundColor: `${colors.warning[200]} !important`
|
|
1647
1711
|
}
|
|
1648
1712
|
});
|
|
1649
|
-
return [field,
|
|
1713
|
+
return [field, theme];
|
|
1650
1714
|
};
|
|
1651
1715
|
var updateHighlightedLines = (view, lines, classification) => {
|
|
1652
1716
|
view.dispatch({ effects: setHighlightedLines.of({ lines, classification }) });
|
|
@@ -1666,21 +1730,31 @@ var MergePane = ({
|
|
|
1666
1730
|
deleted = false
|
|
1667
1731
|
}) => {
|
|
1668
1732
|
const editorRef = useRef(null);
|
|
1733
|
+
const themeExtension = useThemedExtension(
|
|
1734
|
+
() => EditorView.theme({
|
|
1735
|
+
"&.cm-editor": {
|
|
1736
|
+
height: "100%",
|
|
1737
|
+
backgroundColor: deleted ? colors.error[100] : resolveToken("background", "249 250 251"),
|
|
1738
|
+
// Pair the token-driven surface with a token-driven text color so line
|
|
1739
|
+
// content stays readable when the pane's `--color-background` goes dark.
|
|
1740
|
+
// The deleted pane keeps default dark text on its fixed light-red wash.
|
|
1741
|
+
...deleted ? {} : { color: resolveToken("foreground", "30 41 59") },
|
|
1742
|
+
outline: "none"
|
|
1743
|
+
},
|
|
1744
|
+
".cm-gutters": {
|
|
1745
|
+
backgroundColor: deleted ? colors.error[200] : resolveToken("muted", "241 245 249"),
|
|
1746
|
+
...deleted ? {} : { color: resolveToken("muted-foreground", "100 116 139") }
|
|
1747
|
+
},
|
|
1748
|
+
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
1749
|
+
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
1750
|
+
}),
|
|
1751
|
+
[deleted]
|
|
1752
|
+
);
|
|
1753
|
+
const diffHighlightExtension = useMemo(() => createDiffHighlightExtension(), []);
|
|
1669
1754
|
const extensions = useMemo(
|
|
1670
1755
|
() => [
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
"&.cm-editor": {
|
|
1674
|
-
height: "100%",
|
|
1675
|
-
backgroundColor: deleted ? colors.error[100] : colors.neutral[50],
|
|
1676
|
-
outline: "none"
|
|
1677
|
-
},
|
|
1678
|
-
".cm-gutters": {
|
|
1679
|
-
backgroundColor: deleted ? colors.error[200] : colors.neutral[100]
|
|
1680
|
-
},
|
|
1681
|
-
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
1682
|
-
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
1683
|
-
}),
|
|
1756
|
+
diffHighlightExtension,
|
|
1757
|
+
themeExtension,
|
|
1684
1758
|
// Recalc viewport after every doc change so late-settling layouts (alerts
|
|
1685
1759
|
// appearing above the editor) don't leave trailing lines blank.
|
|
1686
1760
|
EditorView.updateListener.of((update) => {
|
|
@@ -1689,7 +1763,7 @@ var MergePane = ({
|
|
|
1689
1763
|
}
|
|
1690
1764
|
})
|
|
1691
1765
|
],
|
|
1692
|
-
[
|
|
1766
|
+
[diffHighlightExtension, themeExtension]
|
|
1693
1767
|
);
|
|
1694
1768
|
useEffect(() => {
|
|
1695
1769
|
const view = editorRef.current?.view;
|