@keboola/design 6.4.0 → 8.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 +9 -10
- package/COMPONENT-API.md +162 -160
- package/README.md +3 -3
- package/dist/charts.cjs +22 -22
- package/dist/charts.cjs.map +1 -1
- package/dist/charts.d.cts +5 -5
- package/dist/charts.d.ts +5 -5
- package/dist/charts.js +22 -22
- package/dist/charts.js.map +1 -1
- package/dist/editors.cjs +594 -438
- package/dist/editors.cjs.map +1 -1
- package/dist/editors.d.cts +8 -4
- package/dist/editors.d.ts +8 -4
- package/dist/editors.js +595 -422
- package/dist/editors.js.map +1 -1
- package/dist/icons.cjs +23818 -45
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.d.cts +12 -3
- package/dist/icons.d.ts +12 -3
- package/dist/icons.js +298 -40
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +11519 -11718
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +679 -1227
- package/dist/index.d.ts +679 -1227
- package/dist/index.js +10315 -10516
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +1015 -1134
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +1016 -1134
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +366 -452
- package/dist/mermaid.cjs.map +1 -1
- package/dist/mermaid.d.cts +5 -1
- package/dist/mermaid.d.ts +5 -1
- package/dist/mermaid.js +368 -435
- package/dist/mermaid.js.map +1 -1
- package/dist/rjsf.cjs +2540 -2419
- package/dist/rjsf.cjs.map +1 -1
- package/dist/rjsf.js +2541 -2419
- package/dist/rjsf.js.map +1 -1
- package/dist/styles.css +2 -5
- package/dist/testing.cjs +86 -82
- package/dist/testing.cjs.map +1 -1
- package/dist/testing.js +86 -82
- package/dist/testing.js.map +1 -1
- package/package.json +30 -22
- package/src/styles.css +125 -105
- package/src/theme.css +264 -0
package/dist/editors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createContext,
|
|
1
|
+
import { createContext, useMemo, useRef, useEffect, useCallback, useLayoutEffect, 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';
|
|
@@ -12,37 +12,23 @@ import { cva } from 'class-variance-authority';
|
|
|
12
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
|
-
import
|
|
15
|
+
import { X, ChevronsRight, ChevronsLeft, Loader2, Copy } from 'lucide-react';
|
|
16
16
|
import { javascript } from '@codemirror/lang-javascript';
|
|
17
17
|
import { python } from '@codemirror/lang-python';
|
|
18
|
-
import { sql, PLSQL } from '@codemirror/lang-sql';
|
|
18
|
+
import { sql, PLSQL, MSSQL, PostgreSQL, MySQL } from '@codemirror/lang-sql';
|
|
19
19
|
import { StreamLanguage } from '@codemirror/language';
|
|
20
20
|
import { r } from '@codemirror/legacy-modes/mode/r';
|
|
21
21
|
import { shell } from '@codemirror/legacy-modes/mode/shell';
|
|
22
|
+
import { toml } from '@codemirror/legacy-modes/mode/toml';
|
|
22
23
|
import { githubLightInit } from '@uiw/codemirror-theme-github';
|
|
23
24
|
import { sfsql } from '@keboola/codemirror-lang-sfsql';
|
|
24
25
|
import colors from '@keboola/tailwind-config/colors';
|
|
26
|
+
import { simpleMode } from '@codemirror/legacy-modes/mode/simple-mode';
|
|
25
27
|
import { defaultKeymap } from '@codemirror/commands';
|
|
26
28
|
import { installExtensions } from '@keboola/codemirror-lang-sql';
|
|
27
29
|
import { StateEffect, StateField, RangeSet, RangeSetBuilder } from '@codemirror/state';
|
|
28
30
|
|
|
29
|
-
|
|
30
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
31
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
32
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
33
|
-
var __export = (target, all) => {
|
|
34
|
-
for (var name in all)
|
|
35
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
36
|
-
};
|
|
37
|
-
var __copyProps = (to, from, except, desc) => {
|
|
38
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
39
|
-
for (let key of __getOwnPropNames(from))
|
|
40
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
41
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
42
|
-
}
|
|
43
|
-
return to;
|
|
44
|
-
};
|
|
45
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
|
|
31
|
+
// src/components/CodeEditor/CodeEditor.tsx
|
|
46
32
|
|
|
47
33
|
// src/constants/keyCodes.ts
|
|
48
34
|
var keyCodes = {
|
|
@@ -50,8 +36,15 @@ var keyCodes = {
|
|
|
50
36
|
ESCAPE: "Escape",
|
|
51
37
|
SPACE: " "
|
|
52
38
|
};
|
|
39
|
+
var useStableCallback = (callback) => {
|
|
40
|
+
const latestRef = useRef(callback);
|
|
41
|
+
useLayoutEffect(() => {
|
|
42
|
+
latestRef.current = callback;
|
|
43
|
+
}, [callback]);
|
|
44
|
+
return useCallback((...args) => latestRef.current(...args), []);
|
|
45
|
+
};
|
|
53
46
|
var twMerge = extendTailwindMerge({
|
|
54
|
-
prefix: "tw
|
|
47
|
+
prefix: "tw"
|
|
55
48
|
});
|
|
56
49
|
var cn = (...classes) => twMerge(clsx(...classes));
|
|
57
50
|
|
|
@@ -95,39 +88,39 @@ var useArgoDesign = () => use(ArgoDesignContext);
|
|
|
95
88
|
var tooltipVariants = cva(
|
|
96
89
|
[
|
|
97
90
|
"tailwindcss-preflight",
|
|
98
|
-
"tw
|
|
99
|
-
"tw
|
|
100
|
-
"tw
|
|
101
|
-
"tw
|
|
102
|
-
"tw
|
|
91
|
+
"tw:inline-block",
|
|
92
|
+
"tw:break-anywhere",
|
|
93
|
+
"tw:max-h-96",
|
|
94
|
+
"tw:overflow-y-auto",
|
|
95
|
+
"tw:z-[1060]",
|
|
103
96
|
// legacy (dark) chrome — default
|
|
104
|
-
"tw
|
|
105
|
-
"tw
|
|
106
|
-
"tw
|
|
97
|
+
"tw:rounded",
|
|
98
|
+
"tw:bg-neutral-800",
|
|
99
|
+
"tw:text-white",
|
|
107
100
|
// argo chrome overrides — semantic floating-panel tokens
|
|
108
|
-
"data-[argo=true]:
|
|
109
|
-
"data-[argo=true]:
|
|
110
|
-
"data-[argo=true]:
|
|
111
|
-
"data-[argo=true]:
|
|
112
|
-
"data-[argo=true]:
|
|
113
|
-
"data-[argo=true]:
|
|
114
|
-
"data-[argo=true]:
|
|
101
|
+
"tw:data-[argo=true]:rounded-2xl",
|
|
102
|
+
"tw:data-[argo=true]:border",
|
|
103
|
+
"tw:data-[argo=true]:border-solid",
|
|
104
|
+
"tw:data-[argo=true]:border-border",
|
|
105
|
+
"tw:data-[argo=true]:bg-popover",
|
|
106
|
+
"tw:data-[argo=true]:text-popover-foreground",
|
|
107
|
+
"tw:data-[argo=true]:shadow-md",
|
|
115
108
|
// argo open animation
|
|
116
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
117
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
118
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
119
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
120
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
121
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
109
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:animate-in",
|
|
110
|
+
"tw:data-[argo=true]:data-[state=instant-open]:animate-in",
|
|
111
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:fade-in-0",
|
|
112
|
+
"tw:data-[argo=true]:data-[state=instant-open]:fade-in-0",
|
|
113
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:zoom-in-95",
|
|
114
|
+
"tw:data-[argo=true]:data-[state=instant-open]:zoom-in-95",
|
|
122
115
|
// argo closed animation
|
|
123
|
-
"data-[argo=true]:data-[state=closed]:
|
|
124
|
-
"data-[argo=true]:data-[state=closed]:
|
|
125
|
-
"data-[argo=true]:data-[state=closed]:
|
|
116
|
+
"tw:data-[argo=true]:data-[state=closed]:animate-out",
|
|
117
|
+
"tw:data-[argo=true]:data-[state=closed]:fade-out-0",
|
|
118
|
+
"tw:data-[argo=true]:data-[state=closed]:zoom-out-95",
|
|
126
119
|
// argo position animation
|
|
127
|
-
"data-[argo=true]:data-[side=bottom]:
|
|
128
|
-
"data-[argo=true]:data-[side=left]:
|
|
129
|
-
"data-[argo=true]:data-[side=right]:
|
|
130
|
-
"data-[argo=true]:data-[side=top]:
|
|
120
|
+
"tw:data-[argo=true]:data-[side=bottom]:slide-in-from-top-2",
|
|
121
|
+
"tw:data-[argo=true]:data-[side=left]:slide-in-from-right-2",
|
|
122
|
+
"tw:data-[argo=true]:data-[side=right]:slide-in-from-left-2",
|
|
123
|
+
"tw:data-[argo=true]:data-[side=top]:slide-in-from-bottom-2"
|
|
131
124
|
],
|
|
132
125
|
{
|
|
133
126
|
defaultVariants: {
|
|
@@ -136,22 +129,26 @@ var tooltipVariants = cva(
|
|
|
136
129
|
variants: {
|
|
137
130
|
variant: {
|
|
138
131
|
action: [
|
|
139
|
-
"tw
|
|
140
|
-
"tw
|
|
141
|
-
"tw
|
|
142
|
-
"tw
|
|
143
|
-
"tw
|
|
144
|
-
"tw
|
|
145
|
-
|
|
146
|
-
|
|
132
|
+
"tw:max-w-fit",
|
|
133
|
+
"tw:px-3",
|
|
134
|
+
"tw:py-2",
|
|
135
|
+
"tw:text-center",
|
|
136
|
+
"tw:text-xs",
|
|
137
|
+
"tw:font-medium",
|
|
138
|
+
// Legacy chrome uppercases the action tooltip; the Keboola V2 brand
|
|
139
|
+
// (`data-brand="keboola"`) renders it in standard case instead.
|
|
140
|
+
"tw:uppercase",
|
|
141
|
+
"tw:tracking-wider",
|
|
142
|
+
"tw:[[data-brand=keboola]_&]:normal-case",
|
|
143
|
+
"tw:[[data-brand=keboola]_&]:tracking-normal"
|
|
147
144
|
],
|
|
148
145
|
explanatory: [
|
|
149
|
-
"tw
|
|
150
|
-
"tw
|
|
151
|
-
"tw
|
|
152
|
-
"tw
|
|
153
|
-
"tw
|
|
154
|
-
"tw
|
|
146
|
+
"tw:max-w-80",
|
|
147
|
+
"tw:px-4",
|
|
148
|
+
"tw:py-3",
|
|
149
|
+
"tw:text-left",
|
|
150
|
+
"tw:text-sm",
|
|
151
|
+
"tw:font-normal"
|
|
155
152
|
]
|
|
156
153
|
}
|
|
157
154
|
}
|
|
@@ -225,8 +222,8 @@ var TooltipTrigger = ({
|
|
|
225
222
|
// (merged in via Slot) activates Tailwind's preflight inside the
|
|
226
223
|
// span, which sets `svg { display: block }` — without an inline-flex
|
|
227
224
|
// container that would stack any bare Lucide icon onto its own
|
|
228
|
-
// line. `tw
|
|
229
|
-
/* @__PURE__ */ jsx("span", { className: "tw
|
|
225
|
+
// line. `tw:inline-flex tw:items-center` keeps icon + text aligned.
|
|
226
|
+
/* @__PURE__ */ jsx("span", { className: "tw:inline-flex tw:items-center", children })
|
|
230
227
|
)
|
|
231
228
|
}
|
|
232
229
|
);
|
|
@@ -241,6 +238,7 @@ var Tooltip = ({
|
|
|
241
238
|
placement = "right",
|
|
242
239
|
forceHide = false,
|
|
243
240
|
forceShow = false,
|
|
241
|
+
delayDuration,
|
|
244
242
|
// trigger props
|
|
245
243
|
triggerAsChild = false
|
|
246
244
|
}) => {
|
|
@@ -260,6 +258,7 @@ var Tooltip = ({
|
|
|
260
258
|
{
|
|
261
259
|
open: !!tooltip && (open || forceShow) && !forceHide,
|
|
262
260
|
onOpenChange: setOpen,
|
|
261
|
+
delayDuration,
|
|
263
262
|
disableHoverableContent: isActionVariant,
|
|
264
263
|
children: [
|
|
265
264
|
/* @__PURE__ */ jsx(
|
|
@@ -291,14 +290,14 @@ Tooltip.Trigger = TooltipTrigger;
|
|
|
291
290
|
|
|
292
291
|
// src/utils/escapeStringRegexp.ts
|
|
293
292
|
var escapeStringRegexp = (string) => string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
294
|
-
var helpVariants = cva(["tw
|
|
293
|
+
var helpVariants = cva(["tw:m-0", "tw:text-xs"], {
|
|
295
294
|
defaultVariants: {
|
|
296
295
|
state: "default"
|
|
297
296
|
},
|
|
298
297
|
variants: {
|
|
299
298
|
state: {
|
|
300
|
-
default: ["tw
|
|
301
|
-
warning: ["tw
|
|
299
|
+
default: ["tw:text-muted-foreground"],
|
|
300
|
+
warning: ["tw:text-warning"]
|
|
302
301
|
}
|
|
303
302
|
}
|
|
304
303
|
});
|
|
@@ -306,145 +305,49 @@ var HelpBlock = ({ children, className, state = "default", ...rest }) => {
|
|
|
306
305
|
if (!children) return null;
|
|
307
306
|
return /* @__PURE__ */ jsx("p", { ...rest, className: helpVariants({ state, className }), children });
|
|
308
307
|
};
|
|
309
|
-
|
|
310
|
-
// src/icons/index.ts
|
|
311
|
-
var icons_exports = {};
|
|
312
|
-
__export(icons_exports, {
|
|
313
|
-
Google: () => Google,
|
|
314
|
-
Keboola: () => Keboola,
|
|
315
|
-
Microsoft: () => Microsoft
|
|
316
|
-
});
|
|
317
|
-
__reExport(icons_exports, lucide_react_star);
|
|
318
|
-
var Google = forwardRef(
|
|
319
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
320
|
-
"svg",
|
|
321
|
-
{
|
|
322
|
-
ref,
|
|
323
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
324
|
-
width: size,
|
|
325
|
-
height: size,
|
|
326
|
-
viewBox: "12 10 20 20",
|
|
327
|
-
fill: "none",
|
|
328
|
-
className: cn("lucide", className),
|
|
329
|
-
...rest,
|
|
330
|
-
children: [
|
|
331
|
-
/* @__PURE__ */ jsx(
|
|
332
|
-
"path",
|
|
333
|
-
{
|
|
334
|
-
d: "M31.6 20.2273C31.6 19.5182 31.5364 18.8364 31.4182 18.1818H22V22.05H27.3818C27.15 23.3 26.4455 24.3591 25.3864 25.0682V27.5773H28.6182C30.5091 25.8364 31.6 23.2727 31.6 20.2273Z",
|
|
335
|
-
fill: "#4285F4"
|
|
336
|
-
}
|
|
337
|
-
),
|
|
338
|
-
/* @__PURE__ */ jsx(
|
|
339
|
-
"path",
|
|
340
|
-
{
|
|
341
|
-
d: "M22 30C24.7 30 26.9636 29.1045 28.6181 27.5773L25.3863 25.0682C24.4909 25.6682 23.3454 26.0227 22 26.0227C19.3954 26.0227 17.1909 24.2636 16.4045 21.9H13.0636V24.4909C14.7091 27.7591 18.0909 30 22 30Z",
|
|
342
|
-
fill: "#34A853"
|
|
343
|
-
}
|
|
344
|
-
),
|
|
345
|
-
/* @__PURE__ */ jsx(
|
|
346
|
-
"path",
|
|
347
|
-
{
|
|
348
|
-
d: "M16.4045 21.9C16.2045 21.3 16.0909 20.6591 16.0909 20C16.0909 19.3409 16.2045 18.7 16.4045 18.1V15.5091H13.0636C12.3864 16.8591 12 18.3864 12 20C12 21.6136 12.3864 23.1409 13.0636 24.4909L16.4045 21.9Z",
|
|
349
|
-
fill: "#FBBC04"
|
|
350
|
-
}
|
|
351
|
-
),
|
|
352
|
-
/* @__PURE__ */ jsx(
|
|
353
|
-
"path",
|
|
354
|
-
{
|
|
355
|
-
d: "M22 13.9773C23.4681 13.9773 24.7863 14.4818 25.8227 15.4727L28.6909 12.6045C26.9591 10.9909 24.6954 10 22 10C18.0909 10 14.7091 12.2409 13.0636 15.5091L16.4045 18.1C17.1909 15.7364 19.3954 13.9773 22 13.9773Z",
|
|
356
|
-
fill: "#EA4335"
|
|
357
|
-
}
|
|
358
|
-
),
|
|
359
|
-
children
|
|
360
|
-
]
|
|
361
|
-
}
|
|
362
|
-
)
|
|
363
|
-
);
|
|
364
|
-
Google.displayName = "Google";
|
|
365
|
-
var Keboola = forwardRef(
|
|
366
|
-
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
367
|
-
"svg",
|
|
368
|
-
{
|
|
369
|
-
ref,
|
|
370
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
371
|
-
width: size,
|
|
372
|
-
height: size,
|
|
373
|
-
viewBox: "0 0 300 512",
|
|
374
|
-
fill: color,
|
|
375
|
-
className: cn("lucide", className),
|
|
376
|
-
...rest,
|
|
377
|
-
children: [
|
|
378
|
-
/* @__PURE__ */ jsx("path", { d: "M152 320C79.7 320 24.5 233.9 24.5 124.7C24.5 15.6 70.5 0 152 0s123.6 15.6 123.6 124.7C275.5 233.9 217.7 320 152 320zm-8.7-50.5c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm55.7 0c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm68.9 115.1c10.2 9.3 20.2 20.5 29 35c5.9 9.7 2.6 22.1-7.5 27.8c-3.4 1.9-7.1 2.8-10.7 2.8c-7.2 0-14.3-3.6-18.3-10c-6.8-11.1-13.8-18.9-21.7-26.1c-7.3-6.7-15.6-12.7-24.9-19.5c-.7-.5-1.4-1-2.1-1.5c-5-3.6-10-6.8-14.9-9.4c.6 1 1.2 2.1 1.8 3.2c14.4 26.4 29.2 63.1 29.2 104.9c0 11.2-9.5 20.3-21.2 20.3c-11.7 0-21.2-9.1-21.2-20.3c.1-31.8-11.6-62.3-23.8-84.9c-4-7.4-8-13.9-11.6-19.3c-3.4 5.2-7.2 11.3-11 18.3c-12.5 22.7-24.5 53.8-24.4 86c0 11.2-9.5 20.3-21.2 20.3s-21.2-9.1-21.2-20.3c.1-41.8 14.9-78.4 29.2-104.9c.6-1.1 1.2-2.1 1.8-3.2c-5 2.7-9.9 5.8-14.9 9.4c-.6 .5-1.3 .9-1.9 1.4c-9.5 6.9-17.8 12.9-25.1 19.7c-7.9 7.2-14.9 15.1-21.7 26.1c-5.9 9.7-18.9 12.9-29 7.2C.5 441.8-2.9 429.3 3.1 419.7c8.9-14.4 18.8-25.7 29-35c9.2-8.4 18.5-15.1 27.6-21.7c1-.7 2-1.4 3-2.2c4.7-3.5 9.6-6.7 14.6-9.6c-5-2.9-9.8-6.1-14.6-9.6C39.8 325 19.9 302.5 3.1 275.1c-5.9-9.7-2.6-22.1 7.5-27.8c10.1-5.7 23.1-2.5 29 7.2c14.6 23.7 31.1 42 48.7 54.9c18.9 13.7 37.4 20.5 56.5 21.5c1.7-.1 3.5-.1 5.2-.1c1.8 0 3.5 .1 5.2 .1c0 0 0 0 0 0c19.1-1.1 37.6-7.9 56.5-21.5c17.6-12.8 34.2-31.2 48.7-54.9c6-9.7 18.9-12.9 29-7.2c10.1 5.7 13.4 18.1 7.5 27.8c-16.8 27.4-36.7 49.9-59.6 66.6c-4.7 3.5-9.6 6.7-14.5 9.6c4.9 2.9 9.8 6.1 14.5 9.6c.9 .7 1.8 1.3 2.7 2c9.2 6.7 18.5 13.5 27.9 22z" }),
|
|
379
|
-
children
|
|
380
|
-
]
|
|
381
|
-
}
|
|
382
|
-
)
|
|
383
|
-
);
|
|
384
|
-
Keboola.displayName = "Keboola";
|
|
385
|
-
var Microsoft = forwardRef(
|
|
386
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
387
|
-
"svg",
|
|
388
|
-
{
|
|
389
|
-
ref,
|
|
390
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
391
|
-
width: size,
|
|
392
|
-
height: size,
|
|
393
|
-
viewBox: "0 0 21 21",
|
|
394
|
-
fill: "none",
|
|
395
|
-
className: cn("lucide", className),
|
|
396
|
-
...rest,
|
|
397
|
-
children: [
|
|
398
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "10", height: "10", fill: "#F25022" }),
|
|
399
|
-
/* @__PURE__ */ jsx("rect", { x: "11", y: "0", width: "10", height: "10", fill: "#7FBA00" }),
|
|
400
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "11", width: "10", height: "10", fill: "#00A4EF" }),
|
|
401
|
-
/* @__PURE__ */ jsx("rect", { x: "11", y: "11", width: "10", height: "10", fill: "#FFB900" }),
|
|
402
|
-
children
|
|
403
|
-
]
|
|
404
|
-
}
|
|
405
|
-
)
|
|
406
|
-
);
|
|
407
|
-
Microsoft.displayName = "Microsoft";
|
|
408
308
|
var variants = cva(
|
|
409
309
|
[
|
|
410
310
|
"tailwindcss-preflight",
|
|
411
|
-
"tw
|
|
412
|
-
"tw
|
|
311
|
+
"tw:group/button",
|
|
312
|
+
"tw:border-box",
|
|
413
313
|
// layout
|
|
414
|
-
"tw
|
|
415
|
-
"tw
|
|
416
|
-
"tw
|
|
417
|
-
"tw
|
|
418
|
-
"tw
|
|
314
|
+
"tw:relative",
|
|
315
|
+
"tw:flex",
|
|
316
|
+
"tw:items-center",
|
|
317
|
+
"tw:justify-center",
|
|
318
|
+
"tw:gap-2",
|
|
419
319
|
// text — chrome weight/tracking are brand-overridable tokens
|
|
420
|
-
// (`--font-weight-medium` / `--letter-spacing-chrome`)
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
"tw-
|
|
425
|
-
"tw-
|
|
320
|
+
// (`--font-weight-medium` / `--letter-spacing-chrome`). Casing: standard case is
|
|
321
|
+
// the default; only legacy brands (`keboola-legacy-*`) uppercase the chrome, so
|
|
322
|
+
// modern brands (incl. Keboola V2) read naturally. Mirrors the V2 standard-case
|
|
323
|
+
// treatment shipped for Tooltip/Badge (PR 7629).
|
|
324
|
+
"tw:text-xs",
|
|
325
|
+
"tw:leading-5",
|
|
326
|
+
"tw:font-medium",
|
|
327
|
+
"tw:[[data-brand^=keboola-legacy]_&]:tracking-chrome",
|
|
328
|
+
"tw:[[data-brand^=keboola-legacy]_&]:uppercase",
|
|
426
329
|
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
427
|
-
"tw
|
|
428
|
-
"tw
|
|
429
|
-
"tw
|
|
330
|
+
"tw:rounded",
|
|
331
|
+
"tw:border",
|
|
332
|
+
"tw:border-transparent",
|
|
430
333
|
// styling
|
|
431
|
-
"tw
|
|
432
|
-
"[a]:
|
|
334
|
+
"tw:shadow-none",
|
|
335
|
+
"tw:[a]:cursor-pointer",
|
|
433
336
|
// explicitly set for anchor
|
|
434
|
-
"focus-visible:
|
|
435
|
-
"focus-visible:
|
|
436
|
-
"focus-visible:-
|
|
437
|
-
"focus-visible:
|
|
438
|
-
"focus-visible:
|
|
439
|
-
"focus-visible:
|
|
337
|
+
"tw:focus-visible:outline",
|
|
338
|
+
"tw:focus-visible:outline-1",
|
|
339
|
+
"tw:focus-visible:-outline-offset-1",
|
|
340
|
+
"tw:focus-visible:outline-ring",
|
|
341
|
+
"tw:focus-visible:ring-4",
|
|
342
|
+
"tw:focus-visible:ring-ring/30",
|
|
440
343
|
// disabled
|
|
441
|
-
"disabled:
|
|
442
|
-
"disabled:
|
|
344
|
+
"tw:disabled:opacity-40",
|
|
345
|
+
"tw:disabled:cursor-not-allowed",
|
|
443
346
|
// anchor support
|
|
444
|
-
"
|
|
445
|
-
"aria-disabled:
|
|
446
|
-
"aria-disabled:
|
|
447
|
-
"[&_svg]:
|
|
347
|
+
"tw:!no-underline",
|
|
348
|
+
"tw:aria-disabled:opacity-40",
|
|
349
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
350
|
+
"tw:[&_svg]:shrink-0"
|
|
448
351
|
],
|
|
449
352
|
{
|
|
450
353
|
defaultVariants: {
|
|
@@ -454,113 +357,113 @@ var variants = cva(
|
|
|
454
357
|
},
|
|
455
358
|
variants: {
|
|
456
359
|
block: {
|
|
457
|
-
true: ["tw
|
|
360
|
+
true: ["tw:w-full"]
|
|
458
361
|
},
|
|
459
362
|
variant: {
|
|
460
363
|
primary: [
|
|
461
|
-
"tw
|
|
462
|
-
"tw
|
|
463
|
-
"focus:
|
|
464
|
-
"hover:
|
|
465
|
-
"hover:not-disabled:
|
|
466
|
-
"active:not-disabled:
|
|
364
|
+
"tw:text-white",
|
|
365
|
+
"tw:bg-primary-500",
|
|
366
|
+
"tw:focus:text-white",
|
|
367
|
+
"tw:hover:text-white",
|
|
368
|
+
"tw:hover:not-disabled:bg-primary-600",
|
|
369
|
+
"tw:active:not-disabled:bg-primary-800",
|
|
467
370
|
// anchor disabled override
|
|
468
|
-
"aria-disabled:!
|
|
371
|
+
"tw:aria-disabled:!bg-primary-500"
|
|
469
372
|
],
|
|
470
373
|
secondary: [
|
|
471
|
-
"tw
|
|
472
|
-
"tw
|
|
473
|
-
"focus:
|
|
474
|
-
"hover:
|
|
475
|
-
"hover:not-disabled:
|
|
476
|
-
"active:not-disabled:
|
|
374
|
+
"tw:text-white",
|
|
375
|
+
"tw:bg-secondary-500",
|
|
376
|
+
"tw:focus:text-white",
|
|
377
|
+
"tw:hover:text-white",
|
|
378
|
+
"tw:hover:not-disabled:bg-secondary-700",
|
|
379
|
+
"tw:active:not-disabled:bg-secondary-800",
|
|
477
380
|
// anchor disabled override
|
|
478
|
-
"aria-disabled:!
|
|
381
|
+
"tw:aria-disabled:!bg-secondary-500"
|
|
479
382
|
],
|
|
480
383
|
danger: [
|
|
481
|
-
"tw
|
|
482
|
-
"tw
|
|
483
|
-
"focus:
|
|
484
|
-
"hover:
|
|
485
|
-
"hover:not-disabled:
|
|
486
|
-
"active:not-disabled:
|
|
384
|
+
"tw:text-white",
|
|
385
|
+
"tw:bg-error-500",
|
|
386
|
+
"tw:focus:text-white",
|
|
387
|
+
"tw:hover:text-white",
|
|
388
|
+
"tw:hover:not-disabled:bg-error-600",
|
|
389
|
+
"tw:active:not-disabled:bg-error-700",
|
|
487
390
|
// anchor disabled override
|
|
488
|
-
"aria-disabled:!
|
|
391
|
+
"tw:aria-disabled:!bg-error-500"
|
|
489
392
|
],
|
|
490
393
|
invisible: [
|
|
491
|
-
"tw
|
|
492
|
-
"tw
|
|
493
|
-
"focus:
|
|
494
|
-
"hover:not-disabled:
|
|
495
|
-
"hover:
|
|
496
|
-
"active:not-disabled:
|
|
394
|
+
"tw:text-neutral-800",
|
|
395
|
+
"tw:bg-transparent",
|
|
396
|
+
"tw:focus:text-neutral-800",
|
|
397
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
398
|
+
"tw:hover:text-neutral-800",
|
|
399
|
+
"tw:active:not-disabled:bg-neutral-150",
|
|
497
400
|
// contrasting icon on hover/active
|
|
498
|
-
"[&_svg]:
|
|
499
|
-
"
|
|
500
|
-
"
|
|
401
|
+
"tw:[&_svg]:text-neutral-400",
|
|
402
|
+
"tw:hover:not-disabled:[&_svg]:text-secondary-600",
|
|
403
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
501
404
|
// anchor disabled override
|
|
502
|
-
"aria-disabled:!
|
|
405
|
+
"tw:aria-disabled:!bg-transparent"
|
|
503
406
|
],
|
|
504
407
|
outline: [
|
|
505
|
-
"tw
|
|
506
|
-
"tw
|
|
408
|
+
"tw:text-neutral-800",
|
|
409
|
+
"tw:bg-white",
|
|
507
410
|
// border
|
|
508
|
-
"
|
|
509
|
-
"hover:
|
|
510
|
-
"focus:
|
|
511
|
-
"hover:not-disabled:!
|
|
512
|
-
"hover:not-disabled:
|
|
513
|
-
"active:not-disabled:
|
|
411
|
+
"tw:!border-neutral-200",
|
|
412
|
+
"tw:hover:text-neutral-800",
|
|
413
|
+
"tw:focus:text-neutral-800",
|
|
414
|
+
"tw:hover:not-disabled:!border-neutral-300",
|
|
415
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
416
|
+
"tw:active:not-disabled:bg-neutral-200",
|
|
514
417
|
// contrasting icon hover, same as invisible
|
|
515
|
-
"[&_svg]:
|
|
516
|
-
"
|
|
517
|
-
"
|
|
418
|
+
"tw:[&_svg]:text-neutral-400",
|
|
419
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
420
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
518
421
|
// anchor disabled override
|
|
519
|
-
"aria-disabled:!
|
|
520
|
-
"aria-disabled:!
|
|
422
|
+
"tw:aria-disabled:!bg-white",
|
|
423
|
+
"tw:aria-disabled:!border-neutral-200"
|
|
521
424
|
],
|
|
522
425
|
inline: [
|
|
523
|
-
"tw
|
|
524
|
-
"tw
|
|
525
|
-
"tw
|
|
526
|
-
"[&_svg]:
|
|
527
|
-
"
|
|
528
|
-
"
|
|
426
|
+
"tw:text-neutral-800",
|
|
427
|
+
"tw:bg-transparent",
|
|
428
|
+
"tw:rounded-full",
|
|
429
|
+
"tw:[&_svg]:text-neutral-400",
|
|
430
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
431
|
+
"tw:not-disabled:focus:[&_svg]:text-secondary-600"
|
|
529
432
|
]
|
|
530
433
|
},
|
|
531
434
|
size: {
|
|
532
435
|
medium: [
|
|
533
|
-
"tw
|
|
534
|
-
"tw
|
|
535
|
-
"tw
|
|
536
|
-
"tw
|
|
537
|
-
'[&_svg:not([class*="tw
|
|
436
|
+
"tw:max-h-10",
|
|
437
|
+
"tw:min-h-10",
|
|
438
|
+
"tw:px-4",
|
|
439
|
+
"tw:py-2.5",
|
|
440
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
538
441
|
],
|
|
539
442
|
small: [
|
|
540
|
-
"tw
|
|
541
|
-
"tw
|
|
542
|
-
"tw
|
|
543
|
-
"tw
|
|
544
|
-
'[&_svg:not([class*="tw
|
|
443
|
+
"tw:max-h-8",
|
|
444
|
+
"tw:min-h-8",
|
|
445
|
+
"tw:px-4",
|
|
446
|
+
"tw:py-1.5",
|
|
447
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
545
448
|
],
|
|
546
449
|
large: [
|
|
547
|
-
"tw
|
|
548
|
-
"tw
|
|
549
|
-
"tw
|
|
550
|
-
"tw
|
|
551
|
-
'[&_svg:not([class*="tw
|
|
450
|
+
"tw:max-h-12",
|
|
451
|
+
"tw:min-h-12",
|
|
452
|
+
"tw:px-4",
|
|
453
|
+
"tw:py-3.5",
|
|
454
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
552
455
|
],
|
|
553
|
-
"icon-lg": ["tw
|
|
554
|
-
icon: ["tw
|
|
555
|
-
"icon-sm": ["tw
|
|
556
|
-
"icon-xs": ["tw
|
|
456
|
+
"icon-lg": ["tw:size-12", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-6'],
|
|
457
|
+
icon: ["tw:size-10", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
458
|
+
"icon-sm": ["tw:size-8", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
459
|
+
"icon-xs": ["tw:size-6", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
557
460
|
"icon-2xs": [
|
|
558
|
-
"
|
|
559
|
-
"tw
|
|
560
|
-
"tw
|
|
561
|
-
'[&_svg:not([class*="tw
|
|
461
|
+
"tw:!inline-flex",
|
|
462
|
+
"tw:size-5",
|
|
463
|
+
"tw:max-h-5",
|
|
464
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-3'
|
|
562
465
|
],
|
|
563
|
-
"icon-3xs": ["tw
|
|
466
|
+
"icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
|
|
564
467
|
}
|
|
565
468
|
}
|
|
566
469
|
}
|
|
@@ -569,37 +472,37 @@ var argoVariants = cva(
|
|
|
569
472
|
[
|
|
570
473
|
"tailwindcss-preflight",
|
|
571
474
|
// layout
|
|
572
|
-
"tw
|
|
573
|
-
"tw
|
|
574
|
-
"tw
|
|
575
|
-
"tw
|
|
576
|
-
"tw
|
|
577
|
-
"tw
|
|
475
|
+
"tw:relative",
|
|
476
|
+
"tw:inline-flex",
|
|
477
|
+
"tw:items-center",
|
|
478
|
+
"tw:justify-center",
|
|
479
|
+
"tw:whitespace-nowrap",
|
|
480
|
+
"tw:gap-2",
|
|
578
481
|
// border
|
|
579
|
-
"tw
|
|
580
|
-
"tw
|
|
581
|
-
"tw
|
|
482
|
+
"tw:border",
|
|
483
|
+
"tw:border-transparent",
|
|
484
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
582
485
|
// text
|
|
583
|
-
"tw
|
|
584
|
-
"tw
|
|
486
|
+
"tw:font-medium",
|
|
487
|
+
"tw:select-none",
|
|
585
488
|
// focus visible
|
|
586
|
-
"
|
|
587
|
-
"focus-visible:
|
|
489
|
+
"tw:!outline-hidden",
|
|
490
|
+
"tw:focus-visible:ring-2",
|
|
588
491
|
// disabled
|
|
589
|
-
"disabled:
|
|
590
|
-
"disabled:
|
|
591
|
-
"active:
|
|
592
|
-
"tw
|
|
593
|
-
"tw
|
|
492
|
+
"tw:disabled:cursor-not-allowed",
|
|
493
|
+
"tw:disabled:opacity-50",
|
|
494
|
+
"tw:active:opacity-60",
|
|
495
|
+
"tw:transition-all",
|
|
496
|
+
"tw:bg-clip-padding",
|
|
594
497
|
// anchor support
|
|
595
|
-
"
|
|
596
|
-
"aria-disabled:
|
|
597
|
-
"aria-disabled:
|
|
498
|
+
"tw:!no-underline",
|
|
499
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
500
|
+
"tw:aria-disabled:opacity-50",
|
|
598
501
|
// icon
|
|
599
|
-
"tw
|
|
600
|
-
"[&_svg]:
|
|
601
|
-
"[&_svg]:
|
|
602
|
-
"[&_svg:not([class*='tw
|
|
502
|
+
"tw:shrink-0",
|
|
503
|
+
"tw:[&_svg]:pointer-events-none",
|
|
504
|
+
"tw:[&_svg]:shrink-0",
|
|
505
|
+
"tw:[&_svg:not([class*='tw:size-'])]:size-4"
|
|
603
506
|
],
|
|
604
507
|
{
|
|
605
508
|
defaultVariants: {
|
|
@@ -608,77 +511,77 @@ var argoVariants = cva(
|
|
|
608
511
|
},
|
|
609
512
|
variants: {
|
|
610
513
|
block: {
|
|
611
|
-
true: ["tw
|
|
514
|
+
true: ["tw:w-full"]
|
|
612
515
|
},
|
|
613
516
|
variant: {
|
|
614
517
|
primary: [
|
|
615
|
-
"tw
|
|
616
|
-
"tw
|
|
617
|
-
"[a]:hover:
|
|
618
|
-
"hover:not-disabled:
|
|
619
|
-
"hover:
|
|
620
|
-
"focus:
|
|
621
|
-
"focus-visible:
|
|
622
|
-
"focus-visible:
|
|
518
|
+
"tw:bg-primary",
|
|
519
|
+
"tw:text-primary-foreground",
|
|
520
|
+
"tw:[a]:hover:bg-primary/80",
|
|
521
|
+
"tw:hover:not-disabled:bg-primary/90",
|
|
522
|
+
"tw:hover:text-primary-foreground",
|
|
523
|
+
"tw:focus:text-primary-foreground",
|
|
524
|
+
"tw:focus-visible:border-primary",
|
|
525
|
+
"tw:focus-visible:ring-ring/50"
|
|
623
526
|
],
|
|
624
527
|
secondary: [
|
|
625
|
-
"tw
|
|
626
|
-
"tw
|
|
627
|
-
"hover:not-disabled:
|
|
628
|
-
"focus-visible:
|
|
629
|
-
"focus-visible:
|
|
528
|
+
"tw:bg-primary/10",
|
|
529
|
+
"tw:text-primary",
|
|
530
|
+
"tw:hover:not-disabled:bg-primary/20",
|
|
531
|
+
"tw:focus-visible:border-primary",
|
|
532
|
+
"tw:focus-visible:ring-ring/50"
|
|
630
533
|
],
|
|
631
534
|
// should be called "destructive" by Figma
|
|
632
535
|
danger: [
|
|
633
|
-
"tw
|
|
634
|
-
"tw
|
|
635
|
-
"hover:
|
|
636
|
-
"focus:
|
|
637
|
-
"focus-visible:
|
|
638
|
-
"focus-visible:
|
|
536
|
+
"tw:bg-destructive",
|
|
537
|
+
"tw:text-destructive-foreground",
|
|
538
|
+
"tw:hover:text-destructive-foreground",
|
|
539
|
+
"tw:focus:text-destructive-foreground",
|
|
540
|
+
"tw:focus-visible:border-destructive",
|
|
541
|
+
"tw:focus-visible:ring-destructive/20"
|
|
639
542
|
],
|
|
640
543
|
outline: [
|
|
641
|
-
"
|
|
642
|
-
"tw
|
|
544
|
+
"tw:!border-input",
|
|
545
|
+
"tw:bg-background",
|
|
643
546
|
// Semantic base text color so the label/icon flips in dark mode
|
|
644
547
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
645
|
-
"tw
|
|
548
|
+
"tw:text-foreground",
|
|
646
549
|
// Hover follows the brand primary (translucent tint), matching the
|
|
647
550
|
// `secondary` variant — not the fixed `accent` blue.
|
|
648
|
-
"hover:not-disabled:
|
|
649
|
-
"hover:not-disabled:
|
|
650
|
-
"hover:active:
|
|
651
|
-
"focus-visible:!
|
|
652
|
-
"focus-visible:
|
|
551
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
552
|
+
"tw:hover:not-disabled:text-primary",
|
|
553
|
+
"tw:hover:active:bg-background",
|
|
554
|
+
"tw:focus-visible:!border-primary",
|
|
555
|
+
"tw:focus-visible:ring-ring/50"
|
|
653
556
|
],
|
|
654
557
|
// should be called "ghost" by Figma
|
|
655
558
|
invisible: [
|
|
656
|
-
"tw
|
|
657
|
-
"tw
|
|
658
|
-
"hover:not-disabled:
|
|
659
|
-
"hover:not-disabled:
|
|
660
|
-
"hover:not-disabled:
|
|
661
|
-
"focus-visible:
|
|
559
|
+
"tw:bg-transparent",
|
|
560
|
+
"tw:text-foreground",
|
|
561
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
562
|
+
"tw:hover:not-disabled:text-primary",
|
|
563
|
+
"tw:hover:not-disabled:border-primary/10",
|
|
564
|
+
"tw:focus-visible:ring-ring/50"
|
|
662
565
|
],
|
|
663
566
|
// should be called "link" by Figma
|
|
664
567
|
inline: [
|
|
665
|
-
"tw
|
|
666
|
-
"tw
|
|
667
|
-
"hover:
|
|
668
|
-
"hover:active:
|
|
669
|
-
"focus-visible:
|
|
568
|
+
"tw:bg-transparent",
|
|
569
|
+
"tw:text-primary",
|
|
570
|
+
"tw:hover:underline",
|
|
571
|
+
"tw:hover:active:bg-transparent",
|
|
572
|
+
"tw:focus-visible:ring-ring/50"
|
|
670
573
|
]
|
|
671
574
|
},
|
|
672
575
|
size: {
|
|
673
576
|
// should be called "default" by Figma
|
|
674
|
-
medium: ["tw
|
|
577
|
+
medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
|
|
675
578
|
// should be called "small" by Figma
|
|
676
|
-
small: ["tw
|
|
579
|
+
small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
|
|
677
580
|
// should be called "large" by Figma
|
|
678
|
-
large: ["tw
|
|
679
|
-
"icon-lg": ["tw
|
|
680
|
-
icon: ["tw
|
|
681
|
-
"icon-sm": ["tw
|
|
581
|
+
large: ["tw:max-h-10", "tw:py-2.5", "tw:px-6", "tw:text-sm"],
|
|
582
|
+
"icon-lg": ["tw:size-10"],
|
|
583
|
+
icon: ["tw:size-9"],
|
|
584
|
+
"icon-sm": ["tw:size-8"],
|
|
682
585
|
// unsupported in ARGO, remove when old design is gone
|
|
683
586
|
"icon-xs": [],
|
|
684
587
|
"icon-2xs": [],
|
|
@@ -726,13 +629,13 @@ var Button = ({
|
|
|
726
629
|
onClick: handleClick,
|
|
727
630
|
className: cn(classNames),
|
|
728
631
|
children: [
|
|
729
|
-
isLoading && /* @__PURE__ */ jsx(
|
|
632
|
+
isLoading && /* @__PURE__ */ jsx(Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
|
|
730
633
|
/* @__PURE__ */ jsx(Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
731
634
|
]
|
|
732
635
|
}
|
|
733
636
|
);
|
|
734
637
|
};
|
|
735
|
-
var
|
|
638
|
+
var Clipboard2 = ({
|
|
736
639
|
ref,
|
|
737
640
|
text: textProp,
|
|
738
641
|
children,
|
|
@@ -757,6 +660,7 @@ var Clipboard = ({
|
|
|
757
660
|
}
|
|
758
661
|
};
|
|
759
662
|
const handleOnClick = (event) => {
|
|
663
|
+
setIsTooltipOpen(true);
|
|
760
664
|
if (text && state === "ready") void copy(text);
|
|
761
665
|
onClick?.(event);
|
|
762
666
|
};
|
|
@@ -771,6 +675,7 @@ var Clipboard = ({
|
|
|
771
675
|
return tooltip;
|
|
772
676
|
})();
|
|
773
677
|
const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
|
|
678
|
+
const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
|
|
774
679
|
return /* @__PURE__ */ jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
|
|
775
680
|
/* @__PURE__ */ jsx(
|
|
776
681
|
Tooltip.Trigger,
|
|
@@ -779,12 +684,12 @@ var Clipboard = ({
|
|
|
779
684
|
asChild,
|
|
780
685
|
keepOpenOnClick: true,
|
|
781
686
|
onClick: handleOnClick,
|
|
782
|
-
className: cn("tw
|
|
687
|
+
className: cn("tw:cursor-pointer", className),
|
|
783
688
|
ref,
|
|
784
689
|
children: children ?? text
|
|
785
690
|
}
|
|
786
691
|
),
|
|
787
|
-
/* @__PURE__ */ jsx(
|
|
692
|
+
hasTooltipContent && /* @__PURE__ */ jsx(
|
|
788
693
|
Tooltip.Content,
|
|
789
694
|
{
|
|
790
695
|
keepOpenOnPointerDownOutside: true,
|
|
@@ -795,7 +700,7 @@ var Clipboard = ({
|
|
|
795
700
|
)
|
|
796
701
|
] });
|
|
797
702
|
};
|
|
798
|
-
var DEFAULT_ICON = /* @__PURE__ */ jsx(
|
|
703
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsx(Copy, {});
|
|
799
704
|
var DEFAULT_ARIA_LABEL = "Copy";
|
|
800
705
|
var ClipboardButton = ({
|
|
801
706
|
// clipboard props
|
|
@@ -812,7 +717,7 @@ var ClipboardButton = ({
|
|
|
812
717
|
const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
|
|
813
718
|
const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
|
|
814
719
|
return /* @__PURE__ */ jsx(
|
|
815
|
-
|
|
720
|
+
Clipboard2,
|
|
816
721
|
{
|
|
817
722
|
asChild: true,
|
|
818
723
|
tooltip,
|
|
@@ -828,13 +733,198 @@ var ClipboardButton = ({
|
|
|
828
733
|
};
|
|
829
734
|
var ButtonToolbar = ({ value, children }) => {
|
|
830
735
|
if (!value && !children) return null;
|
|
831
|
-
return /* @__PURE__ */ jsxs("div", { className: "tw
|
|
736
|
+
return /* @__PURE__ */ jsxs("div", { className: "tw:pointer-events-auto tw:ml-auto tw:mr-4 tw:flex tw:w-fit tw:gap-1 tw:overflow-visible tw:rounded-lg tw:border tw:border-solid tw:border-border tw:!bg-background tw:p-[3px] tw:shadow", children: [
|
|
832
737
|
!!value && /* @__PURE__ */ jsx(ClipboardButton, { size: "icon-sm", variant: "invisible", text: value }),
|
|
833
738
|
children
|
|
834
739
|
] });
|
|
835
740
|
};
|
|
741
|
+
var COMMANDS = [
|
|
742
|
+
"run-operation",
|
|
743
|
+
"source freshness",
|
|
744
|
+
"docs generate",
|
|
745
|
+
"run",
|
|
746
|
+
"test",
|
|
747
|
+
"seed",
|
|
748
|
+
"snapshot",
|
|
749
|
+
"list",
|
|
750
|
+
"ls",
|
|
751
|
+
"compile",
|
|
752
|
+
"build",
|
|
753
|
+
"deps"
|
|
754
|
+
];
|
|
755
|
+
var ARGUMENTS = ["--select", "--exclude", "--selector", "--defer", "--resource-type", "-s"];
|
|
756
|
+
var METHODS = [
|
|
757
|
+
"path:",
|
|
758
|
+
"source:",
|
|
759
|
+
"tag:",
|
|
760
|
+
"package:",
|
|
761
|
+
"config:",
|
|
762
|
+
"test_type:",
|
|
763
|
+
"test_name:",
|
|
764
|
+
"state:",
|
|
765
|
+
"exposure:",
|
|
766
|
+
"metric:",
|
|
767
|
+
"result:",
|
|
768
|
+
"source_status:",
|
|
769
|
+
"column_name:"
|
|
770
|
+
];
|
|
771
|
+
var FLAGS = [
|
|
772
|
+
"--fail-fast",
|
|
773
|
+
"--warn-error",
|
|
774
|
+
"--favor-state",
|
|
775
|
+
"--vars",
|
|
776
|
+
"--models",
|
|
777
|
+
"--threads",
|
|
778
|
+
"--profiles-dir",
|
|
779
|
+
"--profile",
|
|
780
|
+
"--full-refresh"
|
|
781
|
+
];
|
|
782
|
+
var word = (list) => new RegExp(`^\\s+(?:${list.join("|")})\\b`, "i");
|
|
783
|
+
var prefix = (list) => new RegExp(`^\\s+(?:${list.join("|")})`, "i");
|
|
784
|
+
var dbt = simpleMode({
|
|
785
|
+
start: [
|
|
786
|
+
{ regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: "string" },
|
|
787
|
+
{ regex: /dbt/, token: "keyword", sol: true },
|
|
788
|
+
{ regex: word(COMMANDS), token: "keyword" },
|
|
789
|
+
{ regex: word(ARGUMENTS), token: "variableName" },
|
|
790
|
+
{ regex: prefix(METHODS), token: "propertyName" },
|
|
791
|
+
{ regex: prefix(FLAGS), token: "attributeName" },
|
|
792
|
+
{ regex: /(?:@|\*|,|\+\d+|\d+\+|\+)/, token: "operator" },
|
|
793
|
+
{ regex: /'.*'/, token: "string" },
|
|
794
|
+
{ regex: /true|false/, token: "atom" }
|
|
795
|
+
]
|
|
796
|
+
});
|
|
797
|
+
|
|
798
|
+
// src/components/CodeEditor/modes/jsonnet.ts
|
|
799
|
+
var COMMENT_END = /^\*\//;
|
|
800
|
+
var COMMENT_START = /^\/\/|^#/;
|
|
801
|
+
var C_COMMENT_START = /^\/\*/;
|
|
802
|
+
var TEXT_BLOCK = /^\|\|\|/;
|
|
803
|
+
var TEXT_BLOCK_END = /^\s*\|\|\|/;
|
|
804
|
+
var RAW_DOUBLE = /^""/;
|
|
805
|
+
var RAW_SINGLE = /^''/;
|
|
806
|
+
var CLOSE_DOUBLE = /^"/;
|
|
807
|
+
var CLOSE_SINGLE = /^'/;
|
|
808
|
+
var ESCAPE = /^\\[\\"'/bfnrt0]/;
|
|
809
|
+
var UNICODE_ESCAPE = /^\\u[0-9a-fA-F]{4}/;
|
|
810
|
+
var BACKSLASH = /^\\/;
|
|
811
|
+
var IMPORT = /^import(?:str)?\s*(@?)(["'])/;
|
|
812
|
+
var QUOTE = /^(@?)(["'])/;
|
|
813
|
+
var ROOT = /^\$/;
|
|
814
|
+
var NUMBER = /^(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i;
|
|
815
|
+
var OPERATOR = /^[-+/*=<>!&~^|$%]+/;
|
|
816
|
+
var IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*/;
|
|
817
|
+
var KEYWORDS = {
|
|
818
|
+
local: "keyword",
|
|
819
|
+
self: "keyword",
|
|
820
|
+
super: "keyword",
|
|
821
|
+
assert: "keyword",
|
|
822
|
+
function: "keyword",
|
|
823
|
+
if: "keyword",
|
|
824
|
+
then: "keyword",
|
|
825
|
+
else: "keyword",
|
|
826
|
+
for: "keyword",
|
|
827
|
+
in: "keyword",
|
|
828
|
+
tailstrict: "keyword",
|
|
829
|
+
error: "keyword",
|
|
830
|
+
true: "atom",
|
|
831
|
+
false: "atom",
|
|
832
|
+
null: "atom"
|
|
833
|
+
};
|
|
834
|
+
var jsonnet = {
|
|
835
|
+
name: "jsonnet",
|
|
836
|
+
startState: () => ({
|
|
837
|
+
cComment: false,
|
|
838
|
+
textBlock: false,
|
|
839
|
+
textBlockIndent: null,
|
|
840
|
+
string: false,
|
|
841
|
+
importString: false,
|
|
842
|
+
stringSingle: false,
|
|
843
|
+
stringRaw: false
|
|
844
|
+
}),
|
|
845
|
+
token: (stream, state) => {
|
|
846
|
+
if (state.cComment) {
|
|
847
|
+
if (stream.match(COMMENT_END)) {
|
|
848
|
+
state.cComment = false;
|
|
849
|
+
return "comment";
|
|
850
|
+
}
|
|
851
|
+
stream.next();
|
|
852
|
+
return "comment";
|
|
853
|
+
}
|
|
854
|
+
if (state.textBlock) {
|
|
855
|
+
if (state.textBlockIndent == null) {
|
|
856
|
+
if (stream.match(TEXT_BLOCK_END)) {
|
|
857
|
+
state.textBlock = false;
|
|
858
|
+
return "string";
|
|
859
|
+
}
|
|
860
|
+
state.textBlockIndent = stream.indentation();
|
|
861
|
+
}
|
|
862
|
+
if (stream.indentation() >= state.textBlockIndent) {
|
|
863
|
+
stream.skipToEnd();
|
|
864
|
+
return "string";
|
|
865
|
+
}
|
|
866
|
+
if (stream.match(TEXT_BLOCK_END)) {
|
|
867
|
+
state.textBlock = false;
|
|
868
|
+
return "string";
|
|
869
|
+
}
|
|
870
|
+
stream.next();
|
|
871
|
+
return "invalid";
|
|
872
|
+
}
|
|
873
|
+
if (state.string || state.importString) {
|
|
874
|
+
const style = state.string ? "string" : "meta";
|
|
875
|
+
if (state.stringRaw) {
|
|
876
|
+
if (stream.match(state.stringSingle ? RAW_SINGLE : RAW_DOUBLE)) return "escape";
|
|
877
|
+
} else {
|
|
878
|
+
if (stream.match(ESCAPE)) return "escape";
|
|
879
|
+
if (stream.match(UNICODE_ESCAPE)) return "escape";
|
|
880
|
+
if (stream.match(BACKSLASH)) return "invalid";
|
|
881
|
+
}
|
|
882
|
+
if (stream.match(state.stringSingle ? CLOSE_SINGLE : CLOSE_DOUBLE)) {
|
|
883
|
+
state.string = false;
|
|
884
|
+
state.importString = false;
|
|
885
|
+
return style;
|
|
886
|
+
}
|
|
887
|
+
stream.next();
|
|
888
|
+
return style;
|
|
889
|
+
}
|
|
890
|
+
if (stream.match(COMMENT_START)) {
|
|
891
|
+
stream.skipToEnd();
|
|
892
|
+
return "comment";
|
|
893
|
+
}
|
|
894
|
+
if (stream.match(C_COMMENT_START)) {
|
|
895
|
+
state.cComment = true;
|
|
896
|
+
return "comment";
|
|
897
|
+
}
|
|
898
|
+
const imported = stream.match(IMPORT);
|
|
899
|
+
if (Array.isArray(imported)) {
|
|
900
|
+
state.importString = true;
|
|
901
|
+
state.stringRaw = imported[1] === "@";
|
|
902
|
+
state.stringSingle = imported[2] === "'";
|
|
903
|
+
return "meta";
|
|
904
|
+
}
|
|
905
|
+
const quoted = stream.match(QUOTE);
|
|
906
|
+
if (Array.isArray(quoted)) {
|
|
907
|
+
state.string = true;
|
|
908
|
+
state.stringRaw = quoted[1] === "@";
|
|
909
|
+
state.stringSingle = quoted[2] === "'";
|
|
910
|
+
return "string";
|
|
911
|
+
}
|
|
912
|
+
if (stream.match(TEXT_BLOCK)) {
|
|
913
|
+
state.textBlock = true;
|
|
914
|
+
state.textBlockIndent = null;
|
|
915
|
+
return "string";
|
|
916
|
+
}
|
|
917
|
+
if (stream.match(ROOT)) return "keyword";
|
|
918
|
+
if (stream.match(NUMBER)) return "number";
|
|
919
|
+
if (stream.match(OPERATOR)) return "operator";
|
|
920
|
+
const identifier = stream.match(IDENTIFIER);
|
|
921
|
+
if (Array.isArray(identifier)) return KEYWORDS[identifier[0]] ?? null;
|
|
922
|
+
stream.next();
|
|
923
|
+
return null;
|
|
924
|
+
}
|
|
925
|
+
};
|
|
836
926
|
var resolveToken = (token, fallbackChannels, alpha) => {
|
|
837
|
-
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(
|
|
927
|
+
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(`--${token}`).trim() || fallbackChannels;
|
|
838
928
|
return alpha === void 0 ? `rgb(${channels})` : `rgb(${channels} / ${alpha})`;
|
|
839
929
|
};
|
|
840
930
|
var SSR_SIGNAL = "ssr";
|
|
@@ -854,12 +944,38 @@ var subscribeThemeSignal = (onChange) => {
|
|
|
854
944
|
return () => observer.disconnect();
|
|
855
945
|
};
|
|
856
946
|
var useThemeSignal = () => useSyncExternalStore(subscribeThemeSignal, readThemeSignal, () => SSR_SIGNAL);
|
|
857
|
-
var
|
|
947
|
+
var themeCache = /* @__PURE__ */ new Map();
|
|
948
|
+
var useThemedExtension = (cacheKey, build) => {
|
|
858
949
|
const themeSignal = useThemeSignal();
|
|
859
|
-
|
|
950
|
+
const key = `${themeSignal} ${cacheKey}`;
|
|
951
|
+
let cached = themeCache.get(key);
|
|
952
|
+
if (!cached) {
|
|
953
|
+
cached = build();
|
|
954
|
+
themeCache.set(key, cached);
|
|
955
|
+
}
|
|
956
|
+
return cached;
|
|
860
957
|
};
|
|
861
958
|
|
|
862
959
|
// src/components/CodeEditor/helpers.ts
|
|
960
|
+
var LANGUAGE_MODES = [
|
|
961
|
+
"application/json",
|
|
962
|
+
"text/plain",
|
|
963
|
+
"text/x-python",
|
|
964
|
+
"text/x-sql",
|
|
965
|
+
"text/x-mysql",
|
|
966
|
+
"text/x-pgsql",
|
|
967
|
+
"text/x-mssql",
|
|
968
|
+
"text/x-sfsql",
|
|
969
|
+
"text/x-plsql",
|
|
970
|
+
"text/x-rsrc",
|
|
971
|
+
"text/x-sh",
|
|
972
|
+
"text/x-toml",
|
|
973
|
+
"text/jsonnet",
|
|
974
|
+
"text/x-dbt",
|
|
975
|
+
"text/javascript",
|
|
976
|
+
"text/typescript"
|
|
977
|
+
];
|
|
978
|
+
var isLanguageMode = (mode) => LANGUAGE_MODES.includes(mode);
|
|
863
979
|
var buildBaseThemeStyles = () => ({
|
|
864
980
|
"*": { lineHeight: "20px" },
|
|
865
981
|
"*::selection": {
|
|
@@ -900,7 +1016,27 @@ var buildBaseThemeStyles = () => ({
|
|
|
900
1016
|
".cm-changeGutter": { position: "absolute", zIndex: -1, width: "100%", paddingLeft: 0 },
|
|
901
1017
|
'&[class*="cm-merge-"] .cm-changedLine,&[class*="cm-merge-"] .cm-line, &[class*="cm-merge-"] .cm-deletedChunk': { paddingLeft: 0 }
|
|
902
1018
|
});
|
|
903
|
-
var
|
|
1019
|
+
var ALWAYS_OFF = {
|
|
1020
|
+
drawSelection: false,
|
|
1021
|
+
foldGutter: false,
|
|
1022
|
+
foldKeymap: false,
|
|
1023
|
+
highlightActiveLine: false,
|
|
1024
|
+
highlightActiveLineGutter: false
|
|
1025
|
+
};
|
|
1026
|
+
var buildBasicSetup = (readOnly) => ({
|
|
1027
|
+
...ALWAYS_OFF,
|
|
1028
|
+
...readOnly ? {
|
|
1029
|
+
history: false,
|
|
1030
|
+
historyKeymap: false,
|
|
1031
|
+
closeBrackets: false,
|
|
1032
|
+
closeBracketsKeymap: false,
|
|
1033
|
+
lintKeymap: false,
|
|
1034
|
+
indentOnInput: false,
|
|
1035
|
+
rectangularSelection: false,
|
|
1036
|
+
dropCursor: false,
|
|
1037
|
+
highlightSelectionMatches: false
|
|
1038
|
+
} : null
|
|
1039
|
+
});
|
|
904
1040
|
var buildCustomTheme = () => githubLightInit({
|
|
905
1041
|
settings: {
|
|
906
1042
|
fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,
|
|
@@ -915,10 +1051,19 @@ var buildCustomTheme = () => githubLightInit({
|
|
|
915
1051
|
});
|
|
916
1052
|
var getLanguageMode = (mode) => {
|
|
917
1053
|
switch (mode) {
|
|
1054
|
+
case void 0:
|
|
1055
|
+
case "application/json":
|
|
1056
|
+
return json();
|
|
918
1057
|
case "text/x-python":
|
|
919
1058
|
return python();
|
|
920
1059
|
case "text/x-sql":
|
|
921
1060
|
return sql({ upperCaseKeywords: true });
|
|
1061
|
+
case "text/x-mysql":
|
|
1062
|
+
return sql({ upperCaseKeywords: true, dialect: MySQL });
|
|
1063
|
+
case "text/x-pgsql":
|
|
1064
|
+
return sql({ upperCaseKeywords: true, dialect: PostgreSQL });
|
|
1065
|
+
case "text/x-mssql":
|
|
1066
|
+
return sql({ upperCaseKeywords: true, dialect: MSSQL });
|
|
922
1067
|
case "text/x-sfsql":
|
|
923
1068
|
return StreamLanguage.define(sfsql);
|
|
924
1069
|
case "text/x-plsql":
|
|
@@ -927,28 +1072,32 @@ var getLanguageMode = (mode) => {
|
|
|
927
1072
|
return StreamLanguage.define(r);
|
|
928
1073
|
case "text/x-sh":
|
|
929
1074
|
return StreamLanguage.define(shell);
|
|
1075
|
+
case "text/x-toml":
|
|
1076
|
+
return StreamLanguage.define(toml);
|
|
1077
|
+
case "text/jsonnet":
|
|
1078
|
+
return StreamLanguage.define(jsonnet);
|
|
1079
|
+
case "text/x-dbt":
|
|
1080
|
+
return StreamLanguage.define(dbt);
|
|
930
1081
|
case "text/javascript":
|
|
931
1082
|
return javascript({ jsx: true });
|
|
932
1083
|
case "text/typescript":
|
|
933
1084
|
return javascript({ jsx: true, typescript: true });
|
|
1085
|
+
// No language — `text/plain` lands here, and so does any mode added to
|
|
1086
|
+
// LANGUAGE_MODES without an arm above. Unstyled text is the safe degradation;
|
|
1087
|
+
// a `json()` default would colour unrelated content as if it were JSON.
|
|
934
1088
|
default:
|
|
935
|
-
return
|
|
1089
|
+
return [];
|
|
936
1090
|
}
|
|
937
1091
|
};
|
|
938
|
-
var
|
|
939
|
-
var
|
|
940
|
-
|
|
941
|
-
className,
|
|
942
|
-
children,
|
|
943
|
-
separator,
|
|
944
|
-
...props
|
|
945
|
-
}) => {
|
|
1092
|
+
var shouldLintJson = (mode, readOnly) => mode === "application/json" && !readOnly;
|
|
1093
|
+
var KbdSeparator = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { ...props, className: cn("tw:text-xs tw:text-muted-foreground", className) });
|
|
1094
|
+
var KbdGroup = ({ ref, className, children, separator, ...props }) => {
|
|
946
1095
|
return /* @__PURE__ */ jsx(
|
|
947
1096
|
"kbd",
|
|
948
1097
|
{
|
|
949
1098
|
...props,
|
|
950
1099
|
ref,
|
|
951
|
-
className: cn("tw
|
|
1100
|
+
className: cn("tw:inline-flex", "tw:items-center", "tw:gap-1", className),
|
|
952
1101
|
children: separator ? (
|
|
953
1102
|
// oxlint-disable-next-line react-x/no-children-to-array
|
|
954
1103
|
Children.toArray(children).map((child, index) => (
|
|
@@ -966,22 +1115,22 @@ var kbdVariants = cva(
|
|
|
966
1115
|
[
|
|
967
1116
|
"tailwindcss-preflight",
|
|
968
1117
|
// style
|
|
969
|
-
"tw
|
|
970
|
-
"tw
|
|
971
|
-
"tw
|
|
972
|
-
"tw
|
|
1118
|
+
"tw:pointer-events-none",
|
|
1119
|
+
"tw:w-fit",
|
|
1120
|
+
"tw:h-5",
|
|
1121
|
+
"tw:min-w-5",
|
|
973
1122
|
// layout
|
|
974
|
-
"tw
|
|
975
|
-
"tw
|
|
976
|
-
"tw
|
|
977
|
-
"tw
|
|
978
|
-
"tw
|
|
1123
|
+
"tw:inline-flex",
|
|
1124
|
+
"tw:items-center",
|
|
1125
|
+
"tw:justify-center",
|
|
1126
|
+
"tw:gap-1",
|
|
1127
|
+
"tw:shrink-0",
|
|
979
1128
|
// spacing
|
|
980
|
-
"tw
|
|
981
|
-
'[&_svg:not([class*="size-"])]:
|
|
982
|
-
"tw
|
|
983
|
-
"tw
|
|
984
|
-
"tw
|
|
1129
|
+
"tw:px-1",
|
|
1130
|
+
'tw:[&_svg:not([class*="size-"])]:size-2.5',
|
|
1131
|
+
"tw:text-xs",
|
|
1132
|
+
"tw:font-medium",
|
|
1133
|
+
"tw:rounded"
|
|
985
1134
|
],
|
|
986
1135
|
{
|
|
987
1136
|
defaultVariants: {
|
|
@@ -989,8 +1138,8 @@ var kbdVariants = cva(
|
|
|
989
1138
|
},
|
|
990
1139
|
variants: {
|
|
991
1140
|
variant: {
|
|
992
|
-
default: "tw
|
|
993
|
-
primary: "tw
|
|
1141
|
+
default: "tw:bg-muted tw:text-muted-foreground",
|
|
1142
|
+
primary: "tw:bg-white/20 tw:text-white"
|
|
994
1143
|
}
|
|
995
1144
|
}
|
|
996
1145
|
}
|
|
@@ -1013,6 +1162,7 @@ var CodeEditor = ({
|
|
|
1013
1162
|
onChange,
|
|
1014
1163
|
mode = "application/json",
|
|
1015
1164
|
placeholder: placeholder$1 = "",
|
|
1165
|
+
ariaLabel,
|
|
1016
1166
|
readOnly = false,
|
|
1017
1167
|
autocompletions = emptyArray,
|
|
1018
1168
|
extraKeys = emptyObject,
|
|
@@ -1021,19 +1171,23 @@ var CodeEditor = ({
|
|
|
1021
1171
|
withLineNumbers = true,
|
|
1022
1172
|
withLineWrapping = true,
|
|
1023
1173
|
withCollapseUnchanged = false,
|
|
1024
|
-
withCopyButton =
|
|
1174
|
+
withCopyButton = false,
|
|
1025
1175
|
completeAny = false,
|
|
1026
1176
|
help = null,
|
|
1027
1177
|
helpPostfix = null,
|
|
1028
1178
|
renderAdditionalButtons,
|
|
1029
1179
|
className
|
|
1030
1180
|
}) => {
|
|
1031
|
-
const
|
|
1032
|
-
const
|
|
1181
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1182
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1183
|
+
const baseTheme = useThemedExtension(
|
|
1184
|
+
"code-editor:chrome",
|
|
1185
|
+
() => EditorView.theme(buildBaseThemeStyles())
|
|
1186
|
+
);
|
|
1033
1187
|
const commonExtensions = useMemo(() => {
|
|
1034
1188
|
return [
|
|
1035
1189
|
getLanguageMode(mode),
|
|
1036
|
-
mode
|
|
1190
|
+
shouldLintJson(mode, readOnly) ? linter(jsonParseLinter()) : [],
|
|
1037
1191
|
withLineWrapping ? EditorView.lineWrapping : [],
|
|
1038
1192
|
EditorState.languageData.of(() => [
|
|
1039
1193
|
{ autocomplete: completeAny ? completeAnyWord : autocompletions }
|
|
@@ -1048,10 +1202,20 @@ var CodeEditor = ({
|
|
|
1048
1202
|
}
|
|
1049
1203
|
}))
|
|
1050
1204
|
),
|
|
1051
|
-
autocompletion({ activateOnTyping: completeAny }),
|
|
1205
|
+
readOnly ? [] : autocompletion({ activateOnTyping: completeAny }),
|
|
1206
|
+
ariaLabel ? EditorView.contentAttributes.of({ "aria-label": ariaLabel }) : [],
|
|
1052
1207
|
baseTheme
|
|
1053
|
-
]
|
|
1054
|
-
}, [
|
|
1208
|
+
];
|
|
1209
|
+
}, [
|
|
1210
|
+
autocompletions,
|
|
1211
|
+
completeAny,
|
|
1212
|
+
extraKeys,
|
|
1213
|
+
mode,
|
|
1214
|
+
readOnly,
|
|
1215
|
+
withLineWrapping,
|
|
1216
|
+
baseTheme,
|
|
1217
|
+
ariaLabel
|
|
1218
|
+
]);
|
|
1055
1219
|
const extensions = useMemo(() => {
|
|
1056
1220
|
return [
|
|
1057
1221
|
...commonExtensions,
|
|
@@ -1068,18 +1232,20 @@ var CodeEditor = ({
|
|
|
1068
1232
|
}, [commonExtensions, placeholder$1, readOnly, previousValue, withCollapseUnchanged]);
|
|
1069
1233
|
const config = useMemo(() => {
|
|
1070
1234
|
return {
|
|
1071
|
-
...
|
|
1235
|
+
...buildBasicSetup(readOnly),
|
|
1072
1236
|
lineNumbers: withLineNumbers
|
|
1073
1237
|
};
|
|
1074
|
-
}, [withLineNumbers]);
|
|
1238
|
+
}, [withLineNumbers, readOnly]);
|
|
1239
|
+
const additionalButtons = renderAdditionalButtons?.(value);
|
|
1240
|
+
const hasToolbar = withCopyButton && !!value || !!additionalButtons;
|
|
1075
1241
|
return (
|
|
1076
1242
|
// oxlint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
1077
1243
|
/* @__PURE__ */ jsxs(
|
|
1078
1244
|
"div",
|
|
1079
1245
|
{
|
|
1080
1246
|
className: cn(
|
|
1081
|
-
"tw
|
|
1082
|
-
{ "tw
|
|
1247
|
+
"tw:relative tw:flex tw:min-h-0 tw:flex-col tw:[&_.cm-mergeViewEditor]:overflow-visible tw:[&_.cm-mergeViewEditors]:h-full tw:[&_.cm-mergeView]:h-full tw:[&_>div]:h-full tw:[&_>div]:overflow-auto tw:[&_>div]:bg-background",
|
|
1248
|
+
{ "tw:mt-8": hasToolbar },
|
|
1083
1249
|
className
|
|
1084
1250
|
),
|
|
1085
1251
|
onKeyDown: (event) => {
|
|
@@ -1088,19 +1254,19 @@ var CodeEditor = ({
|
|
|
1088
1254
|
}
|
|
1089
1255
|
},
|
|
1090
1256
|
children: [
|
|
1091
|
-
|
|
1257
|
+
hasToolbar && /* @__PURE__ */ jsx("div", { className: "tw:pointer-events-none tw:absolute tw:z-10 tw:flex tw:!h-auto tw:w-full tw:translate-y-[calc(-100%_+_8px)] tw:!overflow-visible tw:!bg-transparent", children: /* @__PURE__ */ jsx("div", { className: "tw:flex-1", children: /* @__PURE__ */ jsx(ButtonToolbar, { value: withCopyButton ? value : void 0, children: additionalButtons }) }) }),
|
|
1092
1258
|
/* @__PURE__ */ jsx(
|
|
1093
1259
|
CodeMirror,
|
|
1094
1260
|
{
|
|
1095
1261
|
theme: customTheme,
|
|
1096
1262
|
value,
|
|
1097
|
-
onChange,
|
|
1263
|
+
onChange: handleChange,
|
|
1098
1264
|
extensions,
|
|
1099
1265
|
autoFocus: withAutofocus,
|
|
1100
1266
|
basicSetup: config
|
|
1101
1267
|
}
|
|
1102
1268
|
),
|
|
1103
|
-
!readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxs(HelpBlock, { className: "tw
|
|
1269
|
+
!readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxs(HelpBlock, { className: "tw:mt-2 tw:flex tw:flex-wrap tw:gap-1", children: [
|
|
1104
1270
|
help,
|
|
1105
1271
|
withToggleCommentHint ? /* @__PURE__ */ jsx(ToggleComponentHelp, {}) : null,
|
|
1106
1272
|
helpPostfix
|
|
@@ -1520,8 +1686,7 @@ function searchExtension() {
|
|
|
1520
1686
|
function updateSearch(view, query, selectedMatchIndex) {
|
|
1521
1687
|
view.dispatch({ effects: setSearchEffect.of({ query, selectedMatchIndex }) });
|
|
1522
1688
|
}
|
|
1523
|
-
var
|
|
1524
|
-
drawSelection: false,
|
|
1689
|
+
var OWN_KEYMAPS = {
|
|
1525
1690
|
defaultKeymap: false,
|
|
1526
1691
|
completionKeymap: false,
|
|
1527
1692
|
searchKeymap: false
|
|
@@ -1586,8 +1751,11 @@ var SqlEditor = ({
|
|
|
1586
1751
|
dialect
|
|
1587
1752
|
}) => {
|
|
1588
1753
|
const editorRef = useRef(null);
|
|
1589
|
-
const customTheme = useThemedExtension(buildCustomTheme);
|
|
1590
|
-
const themeExtension = useThemedExtension(
|
|
1754
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1755
|
+
const themeExtension = useThemedExtension(
|
|
1756
|
+
"sql-editor:chrome",
|
|
1757
|
+
() => EditorView$1.theme(buildTheme())
|
|
1758
|
+
);
|
|
1591
1759
|
const extensions = useMemo(() => {
|
|
1592
1760
|
const baseKeymap = [...defaultKeymap, ...CUSTOM_KEYMAP];
|
|
1593
1761
|
return [
|
|
@@ -1613,8 +1781,8 @@ var SqlEditor = ({
|
|
|
1613
1781
|
themeExtension
|
|
1614
1782
|
]);
|
|
1615
1783
|
const defaultSetup = useMemo(() => {
|
|
1616
|
-
return { ...
|
|
1617
|
-
}, [lineNumbers]);
|
|
1784
|
+
return { ...buildBasicSetup(readOnly), ...OWN_KEYMAPS, lineNumbers };
|
|
1785
|
+
}, [readOnly, lineNumbers]);
|
|
1618
1786
|
useEffect(() => {
|
|
1619
1787
|
if (editorRef.current?.view) {
|
|
1620
1788
|
updateHighlighting(editorRef.current.view, highlightLines);
|
|
@@ -1680,25 +1848,25 @@ var LINE_HEIGHT_PX = 20;
|
|
|
1680
1848
|
var PANE_HEADER_HEIGHT_PX = 58;
|
|
1681
1849
|
var AcceptButton = ({ side, onAccept }) => {
|
|
1682
1850
|
const label = `Accept ${side === "left" ? "production" : "branch"} version`;
|
|
1683
|
-
const Chevron = side === "left" ?
|
|
1684
|
-
return /* @__PURE__ */ jsx(Button, { onClick: onAccept, variant: "outline", size: "icon-sm", title: label, "aria-label": label, children: /* @__PURE__ */ jsx(Chevron, { className: "tw
|
|
1851
|
+
const Chevron = side === "left" ? ChevronsRight : ChevronsLeft;
|
|
1852
|
+
return /* @__PURE__ */ jsx(Button, { onClick: onAccept, variant: "outline", size: "icon-sm", title: label, "aria-label": label, children: /* @__PURE__ */ jsx(Chevron, { className: "tw:size-5" }) });
|
|
1685
1853
|
};
|
|
1686
1854
|
var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /* @__PURE__ */ jsx(
|
|
1687
1855
|
"div",
|
|
1688
1856
|
{
|
|
1689
1857
|
className: cn(
|
|
1690
|
-
"tw
|
|
1691
|
-
conflicts.length > 0 ? "tw
|
|
1858
|
+
"tw:z-10 tw:flex tw:shrink-0 tw:flex-col tw:items-center",
|
|
1859
|
+
conflicts.length > 0 ? "tw:w-7" : "tw:w-0"
|
|
1692
1860
|
),
|
|
1693
1861
|
children: conflicts.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1694
|
-
/* @__PURE__ */ jsx("div", { className: "tw
|
|
1695
|
-
/* @__PURE__ */ jsx("div", { className: "tw
|
|
1862
|
+
/* @__PURE__ */ jsx("div", { className: "tw:shrink-0", style: { height: `${PANE_HEADER_HEIGHT_PX}px` } }),
|
|
1863
|
+
/* @__PURE__ */ jsx("div", { className: "tw:relative tw:w-full tw:flex-1 tw:overflow-y-clip tw:overflow-x-visible", children: /* @__PURE__ */ jsx("div", { ref: contentRef, className: "tw:relative tw:size-full", children: conflicts.map((conflict) => {
|
|
1696
1864
|
const topLine = side === "left" ? conflict.oldStartLine : conflict.newStartLine;
|
|
1697
1865
|
const topOffset = (topLine - 1) * LINE_HEIGHT_PX - 2;
|
|
1698
1866
|
return /* @__PURE__ */ jsxs(
|
|
1699
1867
|
"div",
|
|
1700
1868
|
{
|
|
1701
|
-
className: "tw
|
|
1869
|
+
className: "tw:absolute tw:inset-x-0 tw:flex tw:flex-col tw:items-center tw:gap-0.5",
|
|
1702
1870
|
style: { top: `${topOffset}px` },
|
|
1703
1871
|
children: [
|
|
1704
1872
|
/* @__PURE__ */ jsx(AcceptButton, { side, onAccept: () => onAccept(conflict) }),
|
|
@@ -1710,7 +1878,7 @@ var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /
|
|
|
1710
1878
|
size: "icon-sm",
|
|
1711
1879
|
title: "Dismiss",
|
|
1712
1880
|
"aria-label": `Dismiss ${side === "left" ? "production" : "branch"} change`,
|
|
1713
|
-
children: /* @__PURE__ */ jsx(
|
|
1881
|
+
children: /* @__PURE__ */ jsx(X, { className: "tw:size-4" })
|
|
1714
1882
|
}
|
|
1715
1883
|
)
|
|
1716
1884
|
]
|
|
@@ -1807,13 +1975,15 @@ var MergePane = ({
|
|
|
1807
1975
|
deleted = false
|
|
1808
1976
|
}) => {
|
|
1809
1977
|
const editorRef = useRef(null);
|
|
1978
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1810
1979
|
const themeExtension = useThemedExtension(
|
|
1980
|
+
`merge-pane:${deleted}`,
|
|
1811
1981
|
() => EditorView.theme({
|
|
1812
1982
|
"&.cm-editor": {
|
|
1813
1983
|
height: "100%",
|
|
1814
1984
|
backgroundColor: deleted ? colors.error[100] : resolveToken("background", "249 250 251"),
|
|
1815
1985
|
// Pair the token-driven surface with a token-driven text color so line
|
|
1816
|
-
// content stays readable when the pane's `--
|
|
1986
|
+
// content stays readable when the pane's `--background` goes dark.
|
|
1817
1987
|
// The deleted pane keeps default dark text on its fixed light-red wash.
|
|
1818
1988
|
...deleted ? {} : { color: resolveToken("foreground", "30 41 59") },
|
|
1819
1989
|
outline: "none"
|
|
@@ -1824,10 +1994,13 @@ var MergePane = ({
|
|
|
1824
1994
|
},
|
|
1825
1995
|
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
1826
1996
|
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
1827
|
-
})
|
|
1828
|
-
[deleted]
|
|
1997
|
+
})
|
|
1829
1998
|
);
|
|
1830
1999
|
const diffHighlightExtension = useMemo(() => createDiffHighlightExtension(), []);
|
|
2000
|
+
const basicSetup = useMemo(
|
|
2001
|
+
() => ({ ...buildBasicSetup(readOnly), lineNumbers: true }),
|
|
2002
|
+
[readOnly]
|
|
2003
|
+
);
|
|
1831
2004
|
const extensions = useMemo(
|
|
1832
2005
|
() => [
|
|
1833
2006
|
diffHighlightExtension,
|
|
@@ -1877,33 +2050,33 @@ var MergePane = ({
|
|
|
1877
2050
|
"div",
|
|
1878
2051
|
{
|
|
1879
2052
|
className: cn(
|
|
1880
|
-
"tw
|
|
2053
|
+
"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:overflow-hidden",
|
|
1881
2054
|
className,
|
|
1882
|
-
deleted && "tw
|
|
2055
|
+
deleted && "tw:border-error-300"
|
|
1883
2056
|
),
|
|
1884
2057
|
children: [
|
|
1885
2058
|
header && /* @__PURE__ */ jsx(
|
|
1886
2059
|
"div",
|
|
1887
2060
|
{
|
|
1888
2061
|
className: cn(
|
|
1889
|
-
"tw
|
|
1890
|
-
deleted ? "tw
|
|
2062
|
+
"tw:px-4 tw:py-3",
|
|
2063
|
+
deleted ? "tw:border-b tw:border-error-200 tw:bg-error-100" : "tw:bg-background",
|
|
1891
2064
|
headerClassName
|
|
1892
2065
|
),
|
|
1893
2066
|
children: header
|
|
1894
2067
|
}
|
|
1895
2068
|
),
|
|
1896
|
-
/* @__PURE__ */ jsx("div", { className: "tw
|
|
2069
|
+
/* @__PURE__ */ jsx("div", { className: "tw:flex tw:h-0 tw:flex-1 tw:flex-col tw:[&_>div]:h-full", children: /* @__PURE__ */ jsx(
|
|
1897
2070
|
CodeMirror,
|
|
1898
2071
|
{
|
|
1899
2072
|
ref: editorRef,
|
|
1900
2073
|
height: "100%",
|
|
1901
2074
|
value,
|
|
1902
|
-
onChange,
|
|
2075
|
+
onChange: handleChange,
|
|
1903
2076
|
extensions,
|
|
1904
2077
|
readOnly,
|
|
1905
2078
|
onCreateEditor: handleCreateEditor,
|
|
1906
|
-
basicSetup
|
|
2079
|
+
basicSetup
|
|
1907
2080
|
}
|
|
1908
2081
|
) })
|
|
1909
2082
|
]
|
|
@@ -2003,7 +2176,7 @@ var MergeEditor = ({
|
|
|
2003
2176
|
"div",
|
|
2004
2177
|
{
|
|
2005
2178
|
className: cn(
|
|
2006
|
-
"tw
|
|
2179
|
+
"tw:flex tw:h-full tw:min-h-0 tw:overflow-hidden tw:bg-background tw:gap-3",
|
|
2007
2180
|
className
|
|
2008
2181
|
),
|
|
2009
2182
|
children: [
|
|
@@ -2015,7 +2188,7 @@ var MergeEditor = ({
|
|
|
2015
2188
|
lineClassification: leftClassification,
|
|
2016
2189
|
readOnly: true,
|
|
2017
2190
|
header: leftHeader,
|
|
2018
|
-
className: "tw
|
|
2191
|
+
className: "tw:rounded-r-lg tw:border tw:border-border",
|
|
2019
2192
|
onScrollDOMReady: registerScroller(0),
|
|
2020
2193
|
deleted: leftDeleted
|
|
2021
2194
|
}
|
|
@@ -2039,7 +2212,7 @@ var MergeEditor = ({
|
|
|
2039
2212
|
onChange: handleMergeChange,
|
|
2040
2213
|
header: middleHeader,
|
|
2041
2214
|
headerClassName: middleHeaderClassName,
|
|
2042
|
-
className: cn("tw
|
|
2215
|
+
className: cn("tw:border tw:border-border tw:rounded-lg", middleClassName),
|
|
2043
2216
|
onScrollDOMReady: registerScroller(1)
|
|
2044
2217
|
}
|
|
2045
2218
|
),
|
|
@@ -2061,7 +2234,7 @@ var MergeEditor = ({
|
|
|
2061
2234
|
lineClassification: rightClassification,
|
|
2062
2235
|
readOnly: true,
|
|
2063
2236
|
header: rightHeader,
|
|
2064
|
-
className: "tw
|
|
2237
|
+
className: "tw:rounded-l-lg tw:border tw:border-border",
|
|
2065
2238
|
onScrollDOMReady: registerScroller(2),
|
|
2066
2239
|
deleted: rightDeleted
|
|
2067
2240
|
}
|
|
@@ -2071,6 +2244,6 @@ var MergeEditor = ({
|
|
|
2071
2244
|
);
|
|
2072
2245
|
};
|
|
2073
2246
|
|
|
2074
|
-
export { CodeEditor, MergeEditor, SqlEditor };
|
|
2247
|
+
export { CodeEditor, LANGUAGE_MODES, MergeEditor, SqlEditor, isLanguageMode };
|
|
2075
2248
|
//# sourceMappingURL=editors.js.map
|
|
2076
2249
|
//# sourceMappingURL=editors.js.map
|