@keboola/design 6.5.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 +7 -7
- package/COMPONENT-API.md +3 -9
- package/README.md +1 -1
- 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 +590 -432
- 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 +591 -416
- package/dist/editors.js.map +1 -1
- package/dist/icons.cjs +23817 -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 +297 -40
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +4702 -4755
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +183 -169
- package/dist/index.d.ts +183 -169
- package/dist/index.js +4700 -4754
- package/dist/index.js.map +1 -1
- package/dist/markdown-editor.cjs +817 -923
- package/dist/markdown-editor.cjs.map +1 -1
- package/dist/markdown-editor.js +818 -923
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.cjs +308 -425
- 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 +310 -408
- package/dist/mermaid.js.map +1 -1
- package/dist/rjsf.cjs +1398 -1225
- package/dist/rjsf.cjs.map +1 -1
- package/dist/rjsf.js +1399 -1225
- 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 +26 -19
- package/src/styles.css +125 -105
- package/src/theme.css +264 -0
package/dist/editors.cjs
CHANGED
|
@@ -14,61 +14,28 @@ var classVarianceAuthority = require('class-variance-authority');
|
|
|
14
14
|
var brandRegistry = require('@keboola/brand-registry');
|
|
15
15
|
var jsxRuntime = require('react/jsx-runtime');
|
|
16
16
|
var reactSlot = require('@radix-ui/react-slot');
|
|
17
|
-
var
|
|
17
|
+
var lucideReact = require('lucide-react');
|
|
18
18
|
var langJavascript = require('@codemirror/lang-javascript');
|
|
19
19
|
var langPython = require('@codemirror/lang-python');
|
|
20
20
|
var langSql = require('@codemirror/lang-sql');
|
|
21
21
|
var language = require('@codemirror/language');
|
|
22
22
|
var r = require('@codemirror/legacy-modes/mode/r');
|
|
23
23
|
var shell = require('@codemirror/legacy-modes/mode/shell');
|
|
24
|
+
var toml = require('@codemirror/legacy-modes/mode/toml');
|
|
24
25
|
var codemirrorThemeGithub = require('@uiw/codemirror-theme-github');
|
|
25
26
|
var codemirrorLangSfsql = require('@keboola/codemirror-lang-sfsql');
|
|
26
27
|
var colors = require('@keboola/tailwind-config/colors');
|
|
28
|
+
var simpleMode = require('@codemirror/legacy-modes/mode/simple-mode');
|
|
27
29
|
var commands = require('@codemirror/commands');
|
|
28
30
|
var codemirrorLangSql = require('@keboola/codemirror-lang-sql');
|
|
29
31
|
var state = require('@codemirror/state');
|
|
30
32
|
|
|
31
33
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
32
34
|
|
|
33
|
-
function _interopNamespace(e) {
|
|
34
|
-
if (e && e.__esModule) return e;
|
|
35
|
-
var n = Object.create(null);
|
|
36
|
-
if (e) {
|
|
37
|
-
Object.keys(e).forEach(function (k) {
|
|
38
|
-
if (k !== 'default') {
|
|
39
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
40
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
41
|
-
enumerable: true,
|
|
42
|
-
get: function () { return e[k]; }
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
n.default = e;
|
|
48
|
-
return Object.freeze(n);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
35
|
var CodeMirror__default = /*#__PURE__*/_interopDefault(CodeMirror);
|
|
52
|
-
var lucide_react_star__namespace = /*#__PURE__*/_interopNamespace(lucide_react_star);
|
|
53
36
|
var colors__default = /*#__PURE__*/_interopDefault(colors);
|
|
54
37
|
|
|
55
|
-
|
|
56
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
57
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
58
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
59
|
-
var __export = (target, all) => {
|
|
60
|
-
for (var name in all)
|
|
61
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
62
|
-
};
|
|
63
|
-
var __copyProps = (to, from, except, desc) => {
|
|
64
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
65
|
-
for (let key of __getOwnPropNames(from))
|
|
66
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
67
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
68
|
-
}
|
|
69
|
-
return to;
|
|
70
|
-
};
|
|
71
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
|
|
38
|
+
// src/components/CodeEditor/CodeEditor.tsx
|
|
72
39
|
|
|
73
40
|
// src/constants/keyCodes.ts
|
|
74
41
|
var keyCodes = {
|
|
@@ -76,8 +43,15 @@ var keyCodes = {
|
|
|
76
43
|
ESCAPE: "Escape",
|
|
77
44
|
SPACE: " "
|
|
78
45
|
};
|
|
46
|
+
var useStableCallback = (callback) => {
|
|
47
|
+
const latestRef = react.useRef(callback);
|
|
48
|
+
react.useLayoutEffect(() => {
|
|
49
|
+
latestRef.current = callback;
|
|
50
|
+
}, [callback]);
|
|
51
|
+
return react.useCallback((...args) => latestRef.current(...args), []);
|
|
52
|
+
};
|
|
79
53
|
var twMerge = tailwindMerge.extendTailwindMerge({
|
|
80
|
-
prefix: "tw
|
|
54
|
+
prefix: "tw"
|
|
81
55
|
});
|
|
82
56
|
var cn = (...classes) => twMerge(clsx.clsx(...classes));
|
|
83
57
|
|
|
@@ -121,39 +95,39 @@ var useArgoDesign = () => react.use(ArgoDesignContext);
|
|
|
121
95
|
var tooltipVariants = classVarianceAuthority.cva(
|
|
122
96
|
[
|
|
123
97
|
"tailwindcss-preflight",
|
|
124
|
-
"tw
|
|
125
|
-
"tw
|
|
126
|
-
"tw
|
|
127
|
-
"tw
|
|
128
|
-
"tw
|
|
98
|
+
"tw:inline-block",
|
|
99
|
+
"tw:break-anywhere",
|
|
100
|
+
"tw:max-h-96",
|
|
101
|
+
"tw:overflow-y-auto",
|
|
102
|
+
"tw:z-[1060]",
|
|
129
103
|
// legacy (dark) chrome — default
|
|
130
|
-
"tw
|
|
131
|
-
"tw
|
|
132
|
-
"tw
|
|
104
|
+
"tw:rounded",
|
|
105
|
+
"tw:bg-neutral-800",
|
|
106
|
+
"tw:text-white",
|
|
133
107
|
// argo chrome overrides — semantic floating-panel tokens
|
|
134
|
-
"data-[argo=true]:
|
|
135
|
-
"data-[argo=true]:
|
|
136
|
-
"data-[argo=true]:
|
|
137
|
-
"data-[argo=true]:
|
|
138
|
-
"data-[argo=true]:
|
|
139
|
-
"data-[argo=true]:
|
|
140
|
-
"data-[argo=true]:
|
|
108
|
+
"tw:data-[argo=true]:rounded-2xl",
|
|
109
|
+
"tw:data-[argo=true]:border",
|
|
110
|
+
"tw:data-[argo=true]:border-solid",
|
|
111
|
+
"tw:data-[argo=true]:border-border",
|
|
112
|
+
"tw:data-[argo=true]:bg-popover",
|
|
113
|
+
"tw:data-[argo=true]:text-popover-foreground",
|
|
114
|
+
"tw:data-[argo=true]:shadow-md",
|
|
141
115
|
// argo open animation
|
|
142
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
143
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
144
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
145
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
146
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
147
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
116
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:animate-in",
|
|
117
|
+
"tw:data-[argo=true]:data-[state=instant-open]:animate-in",
|
|
118
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:fade-in-0",
|
|
119
|
+
"tw:data-[argo=true]:data-[state=instant-open]:fade-in-0",
|
|
120
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:zoom-in-95",
|
|
121
|
+
"tw:data-[argo=true]:data-[state=instant-open]:zoom-in-95",
|
|
148
122
|
// argo closed animation
|
|
149
|
-
"data-[argo=true]:data-[state=closed]:
|
|
150
|
-
"data-[argo=true]:data-[state=closed]:
|
|
151
|
-
"data-[argo=true]:data-[state=closed]:
|
|
123
|
+
"tw:data-[argo=true]:data-[state=closed]:animate-out",
|
|
124
|
+
"tw:data-[argo=true]:data-[state=closed]:fade-out-0",
|
|
125
|
+
"tw:data-[argo=true]:data-[state=closed]:zoom-out-95",
|
|
152
126
|
// argo position animation
|
|
153
|
-
"data-[argo=true]:data-[side=bottom]:
|
|
154
|
-
"data-[argo=true]:data-[side=left]:
|
|
155
|
-
"data-[argo=true]:data-[side=right]:
|
|
156
|
-
"data-[argo=true]:data-[side=top]:
|
|
127
|
+
"tw:data-[argo=true]:data-[side=bottom]:slide-in-from-top-2",
|
|
128
|
+
"tw:data-[argo=true]:data-[side=left]:slide-in-from-right-2",
|
|
129
|
+
"tw:data-[argo=true]:data-[side=right]:slide-in-from-left-2",
|
|
130
|
+
"tw:data-[argo=true]:data-[side=top]:slide-in-from-bottom-2"
|
|
157
131
|
],
|
|
158
132
|
{
|
|
159
133
|
defaultVariants: {
|
|
@@ -162,22 +136,26 @@ var tooltipVariants = classVarianceAuthority.cva(
|
|
|
162
136
|
variants: {
|
|
163
137
|
variant: {
|
|
164
138
|
action: [
|
|
165
|
-
"tw
|
|
166
|
-
"tw
|
|
167
|
-
"tw
|
|
168
|
-
"tw
|
|
169
|
-
"tw
|
|
170
|
-
"tw
|
|
171
|
-
|
|
172
|
-
|
|
139
|
+
"tw:max-w-fit",
|
|
140
|
+
"tw:px-3",
|
|
141
|
+
"tw:py-2",
|
|
142
|
+
"tw:text-center",
|
|
143
|
+
"tw:text-xs",
|
|
144
|
+
"tw:font-medium",
|
|
145
|
+
// Legacy chrome uppercases the action tooltip; the Keboola V2 brand
|
|
146
|
+
// (`data-brand="keboola"`) renders it in standard case instead.
|
|
147
|
+
"tw:uppercase",
|
|
148
|
+
"tw:tracking-wider",
|
|
149
|
+
"tw:[[data-brand=keboola]_&]:normal-case",
|
|
150
|
+
"tw:[[data-brand=keboola]_&]:tracking-normal"
|
|
173
151
|
],
|
|
174
152
|
explanatory: [
|
|
175
|
-
"tw
|
|
176
|
-
"tw
|
|
177
|
-
"tw
|
|
178
|
-
"tw
|
|
179
|
-
"tw
|
|
180
|
-
"tw
|
|
153
|
+
"tw:max-w-80",
|
|
154
|
+
"tw:px-4",
|
|
155
|
+
"tw:py-3",
|
|
156
|
+
"tw:text-left",
|
|
157
|
+
"tw:text-sm",
|
|
158
|
+
"tw:font-normal"
|
|
181
159
|
]
|
|
182
160
|
}
|
|
183
161
|
}
|
|
@@ -251,8 +229,8 @@ var TooltipTrigger = ({
|
|
|
251
229
|
// (merged in via Slot) activates Tailwind's preflight inside the
|
|
252
230
|
// span, which sets `svg { display: block }` — without an inline-flex
|
|
253
231
|
// container that would stack any bare Lucide icon onto its own
|
|
254
|
-
// line. `tw
|
|
255
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw
|
|
232
|
+
// line. `tw:inline-flex tw:items-center` keeps icon + text aligned.
|
|
233
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw:inline-flex tw:items-center", children })
|
|
256
234
|
)
|
|
257
235
|
}
|
|
258
236
|
);
|
|
@@ -319,14 +297,14 @@ Tooltip.Trigger = TooltipTrigger;
|
|
|
319
297
|
|
|
320
298
|
// src/utils/escapeStringRegexp.ts
|
|
321
299
|
var escapeStringRegexp = (string) => string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
322
|
-
var helpVariants = classVarianceAuthority.cva(["tw
|
|
300
|
+
var helpVariants = classVarianceAuthority.cva(["tw:m-0", "tw:text-xs"], {
|
|
323
301
|
defaultVariants: {
|
|
324
302
|
state: "default"
|
|
325
303
|
},
|
|
326
304
|
variants: {
|
|
327
305
|
state: {
|
|
328
|
-
default: ["tw
|
|
329
|
-
warning: ["tw
|
|
306
|
+
default: ["tw:text-muted-foreground"],
|
|
307
|
+
warning: ["tw:text-warning"]
|
|
330
308
|
}
|
|
331
309
|
}
|
|
332
310
|
});
|
|
@@ -334,146 +312,49 @@ var HelpBlock = ({ children, className, state = "default", ...rest }) => {
|
|
|
334
312
|
if (!children) return null;
|
|
335
313
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { ...rest, className: helpVariants({ state, className }), children });
|
|
336
314
|
};
|
|
337
|
-
|
|
338
|
-
// src/icons/index.ts
|
|
339
|
-
var icons_exports = {};
|
|
340
|
-
__export(icons_exports, {
|
|
341
|
-
Google: () => Google,
|
|
342
|
-
Keboola: () => Keboola,
|
|
343
|
-
Microsoft: () => Microsoft
|
|
344
|
-
});
|
|
345
|
-
__reExport(icons_exports, lucide_react_star__namespace);
|
|
346
|
-
var Google = react.forwardRef(
|
|
347
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
348
|
-
"svg",
|
|
349
|
-
{
|
|
350
|
-
ref,
|
|
351
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
352
|
-
width: size,
|
|
353
|
-
height: size,
|
|
354
|
-
viewBox: "12 10 20 20",
|
|
355
|
-
fill: "none",
|
|
356
|
-
className: cn("lucide", className),
|
|
357
|
-
...rest,
|
|
358
|
-
children: [
|
|
359
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
360
|
-
"path",
|
|
361
|
-
{
|
|
362
|
-
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",
|
|
363
|
-
fill: "#4285F4"
|
|
364
|
-
}
|
|
365
|
-
),
|
|
366
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
367
|
-
"path",
|
|
368
|
-
{
|
|
369
|
-
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",
|
|
370
|
-
fill: "#34A853"
|
|
371
|
-
}
|
|
372
|
-
),
|
|
373
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
374
|
-
"path",
|
|
375
|
-
{
|
|
376
|
-
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",
|
|
377
|
-
fill: "#FBBC04"
|
|
378
|
-
}
|
|
379
|
-
),
|
|
380
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
381
|
-
"path",
|
|
382
|
-
{
|
|
383
|
-
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",
|
|
384
|
-
fill: "#EA4335"
|
|
385
|
-
}
|
|
386
|
-
),
|
|
387
|
-
children
|
|
388
|
-
]
|
|
389
|
-
}
|
|
390
|
-
)
|
|
391
|
-
);
|
|
392
|
-
Google.displayName = "Google";
|
|
393
|
-
var Keboola = react.forwardRef(
|
|
394
|
-
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
395
|
-
"svg",
|
|
396
|
-
{
|
|
397
|
-
ref,
|
|
398
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
399
|
-
width: size,
|
|
400
|
-
height: size,
|
|
401
|
-
viewBox: "0 0 300 512",
|
|
402
|
-
overflow: "visible",
|
|
403
|
-
fill: color,
|
|
404
|
-
className: cn("lucide", className),
|
|
405
|
-
...rest,
|
|
406
|
-
children: [
|
|
407
|
-
/* @__PURE__ */ jsxRuntime.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" }),
|
|
408
|
-
children
|
|
409
|
-
]
|
|
410
|
-
}
|
|
411
|
-
)
|
|
412
|
-
);
|
|
413
|
-
Keboola.displayName = "Keboola";
|
|
414
|
-
var Microsoft = react.forwardRef(
|
|
415
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
416
|
-
"svg",
|
|
417
|
-
{
|
|
418
|
-
ref,
|
|
419
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
420
|
-
width: size,
|
|
421
|
-
height: size,
|
|
422
|
-
viewBox: "0 0 21 21",
|
|
423
|
-
fill: "none",
|
|
424
|
-
className: cn("lucide", className),
|
|
425
|
-
...rest,
|
|
426
|
-
children: [
|
|
427
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "10", height: "10", fill: "#F25022" }),
|
|
428
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "0", width: "10", height: "10", fill: "#7FBA00" }),
|
|
429
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "11", width: "10", height: "10", fill: "#00A4EF" }),
|
|
430
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "11", width: "10", height: "10", fill: "#FFB900" }),
|
|
431
|
-
children
|
|
432
|
-
]
|
|
433
|
-
}
|
|
434
|
-
)
|
|
435
|
-
);
|
|
436
|
-
Microsoft.displayName = "Microsoft";
|
|
437
315
|
var variants = classVarianceAuthority.cva(
|
|
438
316
|
[
|
|
439
317
|
"tailwindcss-preflight",
|
|
440
|
-
"tw
|
|
441
|
-
"tw
|
|
318
|
+
"tw:group/button",
|
|
319
|
+
"tw:border-box",
|
|
442
320
|
// layout
|
|
443
|
-
"tw
|
|
444
|
-
"tw
|
|
445
|
-
"tw
|
|
446
|
-
"tw
|
|
447
|
-
"tw
|
|
321
|
+
"tw:relative",
|
|
322
|
+
"tw:flex",
|
|
323
|
+
"tw:items-center",
|
|
324
|
+
"tw:justify-center",
|
|
325
|
+
"tw:gap-2",
|
|
448
326
|
// text — chrome weight/tracking are brand-overridable tokens
|
|
449
|
-
// (`--font-weight-medium` / `--letter-spacing-chrome`)
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
"tw-
|
|
454
|
-
"tw-
|
|
327
|
+
// (`--font-weight-medium` / `--letter-spacing-chrome`). Casing: standard case is
|
|
328
|
+
// the default; only legacy brands (`keboola-legacy-*`) uppercase the chrome, so
|
|
329
|
+
// modern brands (incl. Keboola V2) read naturally. Mirrors the V2 standard-case
|
|
330
|
+
// treatment shipped for Tooltip/Badge (PR 7629).
|
|
331
|
+
"tw:text-xs",
|
|
332
|
+
"tw:leading-5",
|
|
333
|
+
"tw:font-medium",
|
|
334
|
+
"tw:[[data-brand^=keboola-legacy]_&]:tracking-chrome",
|
|
335
|
+
"tw:[[data-brand^=keboola-legacy]_&]:uppercase",
|
|
455
336
|
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
456
|
-
"tw
|
|
457
|
-
"tw
|
|
458
|
-
"tw
|
|
337
|
+
"tw:rounded",
|
|
338
|
+
"tw:border",
|
|
339
|
+
"tw:border-transparent",
|
|
459
340
|
// styling
|
|
460
|
-
"tw
|
|
461
|
-
"[a]:
|
|
341
|
+
"tw:shadow-none",
|
|
342
|
+
"tw:[a]:cursor-pointer",
|
|
462
343
|
// explicitly set for anchor
|
|
463
|
-
"focus-visible:
|
|
464
|
-
"focus-visible:
|
|
465
|
-
"focus-visible:-
|
|
466
|
-
"focus-visible:
|
|
467
|
-
"focus-visible:
|
|
468
|
-
"focus-visible:
|
|
344
|
+
"tw:focus-visible:outline",
|
|
345
|
+
"tw:focus-visible:outline-1",
|
|
346
|
+
"tw:focus-visible:-outline-offset-1",
|
|
347
|
+
"tw:focus-visible:outline-ring",
|
|
348
|
+
"tw:focus-visible:ring-4",
|
|
349
|
+
"tw:focus-visible:ring-ring/30",
|
|
469
350
|
// disabled
|
|
470
|
-
"disabled:
|
|
471
|
-
"disabled:
|
|
351
|
+
"tw:disabled:opacity-40",
|
|
352
|
+
"tw:disabled:cursor-not-allowed",
|
|
472
353
|
// anchor support
|
|
473
|
-
"
|
|
474
|
-
"aria-disabled:
|
|
475
|
-
"aria-disabled:
|
|
476
|
-
"[&_svg]:
|
|
354
|
+
"tw:!no-underline",
|
|
355
|
+
"tw:aria-disabled:opacity-40",
|
|
356
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
357
|
+
"tw:[&_svg]:shrink-0"
|
|
477
358
|
],
|
|
478
359
|
{
|
|
479
360
|
defaultVariants: {
|
|
@@ -483,113 +364,113 @@ var variants = classVarianceAuthority.cva(
|
|
|
483
364
|
},
|
|
484
365
|
variants: {
|
|
485
366
|
block: {
|
|
486
|
-
true: ["tw
|
|
367
|
+
true: ["tw:w-full"]
|
|
487
368
|
},
|
|
488
369
|
variant: {
|
|
489
370
|
primary: [
|
|
490
|
-
"tw
|
|
491
|
-
"tw
|
|
492
|
-
"focus:
|
|
493
|
-
"hover:
|
|
494
|
-
"hover:not-disabled:
|
|
495
|
-
"active:not-disabled:
|
|
371
|
+
"tw:text-white",
|
|
372
|
+
"tw:bg-primary-500",
|
|
373
|
+
"tw:focus:text-white",
|
|
374
|
+
"tw:hover:text-white",
|
|
375
|
+
"tw:hover:not-disabled:bg-primary-600",
|
|
376
|
+
"tw:active:not-disabled:bg-primary-800",
|
|
496
377
|
// anchor disabled override
|
|
497
|
-
"aria-disabled:!
|
|
378
|
+
"tw:aria-disabled:!bg-primary-500"
|
|
498
379
|
],
|
|
499
380
|
secondary: [
|
|
500
|
-
"tw
|
|
501
|
-
"tw
|
|
502
|
-
"focus:
|
|
503
|
-
"hover:
|
|
504
|
-
"hover:not-disabled:
|
|
505
|
-
"active:not-disabled:
|
|
381
|
+
"tw:text-white",
|
|
382
|
+
"tw:bg-secondary-500",
|
|
383
|
+
"tw:focus:text-white",
|
|
384
|
+
"tw:hover:text-white",
|
|
385
|
+
"tw:hover:not-disabled:bg-secondary-700",
|
|
386
|
+
"tw:active:not-disabled:bg-secondary-800",
|
|
506
387
|
// anchor disabled override
|
|
507
|
-
"aria-disabled:!
|
|
388
|
+
"tw:aria-disabled:!bg-secondary-500"
|
|
508
389
|
],
|
|
509
390
|
danger: [
|
|
510
|
-
"tw
|
|
511
|
-
"tw
|
|
512
|
-
"focus:
|
|
513
|
-
"hover:
|
|
514
|
-
"hover:not-disabled:
|
|
515
|
-
"active:not-disabled:
|
|
391
|
+
"tw:text-white",
|
|
392
|
+
"tw:bg-error-500",
|
|
393
|
+
"tw:focus:text-white",
|
|
394
|
+
"tw:hover:text-white",
|
|
395
|
+
"tw:hover:not-disabled:bg-error-600",
|
|
396
|
+
"tw:active:not-disabled:bg-error-700",
|
|
516
397
|
// anchor disabled override
|
|
517
|
-
"aria-disabled:!
|
|
398
|
+
"tw:aria-disabled:!bg-error-500"
|
|
518
399
|
],
|
|
519
400
|
invisible: [
|
|
520
|
-
"tw
|
|
521
|
-
"tw
|
|
522
|
-
"focus:
|
|
523
|
-
"hover:not-disabled:
|
|
524
|
-
"hover:
|
|
525
|
-
"active:not-disabled:
|
|
401
|
+
"tw:text-neutral-800",
|
|
402
|
+
"tw:bg-transparent",
|
|
403
|
+
"tw:focus:text-neutral-800",
|
|
404
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
405
|
+
"tw:hover:text-neutral-800",
|
|
406
|
+
"tw:active:not-disabled:bg-neutral-150",
|
|
526
407
|
// contrasting icon on hover/active
|
|
527
|
-
"[&_svg]:
|
|
528
|
-
"
|
|
529
|
-
"
|
|
408
|
+
"tw:[&_svg]:text-neutral-400",
|
|
409
|
+
"tw:hover:not-disabled:[&_svg]:text-secondary-600",
|
|
410
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
530
411
|
// anchor disabled override
|
|
531
|
-
"aria-disabled:!
|
|
412
|
+
"tw:aria-disabled:!bg-transparent"
|
|
532
413
|
],
|
|
533
414
|
outline: [
|
|
534
|
-
"tw
|
|
535
|
-
"tw
|
|
415
|
+
"tw:text-neutral-800",
|
|
416
|
+
"tw:bg-white",
|
|
536
417
|
// border
|
|
537
|
-
"
|
|
538
|
-
"hover:
|
|
539
|
-
"focus:
|
|
540
|
-
"hover:not-disabled:!
|
|
541
|
-
"hover:not-disabled:
|
|
542
|
-
"active:not-disabled:
|
|
418
|
+
"tw:!border-neutral-200",
|
|
419
|
+
"tw:hover:text-neutral-800",
|
|
420
|
+
"tw:focus:text-neutral-800",
|
|
421
|
+
"tw:hover:not-disabled:!border-neutral-300",
|
|
422
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
423
|
+
"tw:active:not-disabled:bg-neutral-200",
|
|
543
424
|
// contrasting icon hover, same as invisible
|
|
544
|
-
"[&_svg]:
|
|
545
|
-
"
|
|
546
|
-
"
|
|
425
|
+
"tw:[&_svg]:text-neutral-400",
|
|
426
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
427
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
547
428
|
// anchor disabled override
|
|
548
|
-
"aria-disabled:!
|
|
549
|
-
"aria-disabled:!
|
|
429
|
+
"tw:aria-disabled:!bg-white",
|
|
430
|
+
"tw:aria-disabled:!border-neutral-200"
|
|
550
431
|
],
|
|
551
432
|
inline: [
|
|
552
|
-
"tw
|
|
553
|
-
"tw
|
|
554
|
-
"tw
|
|
555
|
-
"[&_svg]:
|
|
556
|
-
"
|
|
557
|
-
"
|
|
433
|
+
"tw:text-neutral-800",
|
|
434
|
+
"tw:bg-transparent",
|
|
435
|
+
"tw:rounded-full",
|
|
436
|
+
"tw:[&_svg]:text-neutral-400",
|
|
437
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
438
|
+
"tw:not-disabled:focus:[&_svg]:text-secondary-600"
|
|
558
439
|
]
|
|
559
440
|
},
|
|
560
441
|
size: {
|
|
561
442
|
medium: [
|
|
562
|
-
"tw
|
|
563
|
-
"tw
|
|
564
|
-
"tw
|
|
565
|
-
"tw
|
|
566
|
-
'[&_svg:not([class*="tw
|
|
443
|
+
"tw:max-h-10",
|
|
444
|
+
"tw:min-h-10",
|
|
445
|
+
"tw:px-4",
|
|
446
|
+
"tw:py-2.5",
|
|
447
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
567
448
|
],
|
|
568
449
|
small: [
|
|
569
|
-
"tw
|
|
570
|
-
"tw
|
|
571
|
-
"tw
|
|
572
|
-
"tw
|
|
573
|
-
'[&_svg:not([class*="tw
|
|
450
|
+
"tw:max-h-8",
|
|
451
|
+
"tw:min-h-8",
|
|
452
|
+
"tw:px-4",
|
|
453
|
+
"tw:py-1.5",
|
|
454
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
574
455
|
],
|
|
575
456
|
large: [
|
|
576
|
-
"tw
|
|
577
|
-
"tw
|
|
578
|
-
"tw
|
|
579
|
-
"tw
|
|
580
|
-
'[&_svg:not([class*="tw
|
|
457
|
+
"tw:max-h-12",
|
|
458
|
+
"tw:min-h-12",
|
|
459
|
+
"tw:px-4",
|
|
460
|
+
"tw:py-3.5",
|
|
461
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
581
462
|
],
|
|
582
|
-
"icon-lg": ["tw
|
|
583
|
-
icon: ["tw
|
|
584
|
-
"icon-sm": ["tw
|
|
585
|
-
"icon-xs": ["tw
|
|
463
|
+
"icon-lg": ["tw:size-12", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-6'],
|
|
464
|
+
icon: ["tw:size-10", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
465
|
+
"icon-sm": ["tw:size-8", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
466
|
+
"icon-xs": ["tw:size-6", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
586
467
|
"icon-2xs": [
|
|
587
|
-
"
|
|
588
|
-
"tw
|
|
589
|
-
"tw
|
|
590
|
-
'[&_svg:not([class*="tw
|
|
468
|
+
"tw:!inline-flex",
|
|
469
|
+
"tw:size-5",
|
|
470
|
+
"tw:max-h-5",
|
|
471
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-3'
|
|
591
472
|
],
|
|
592
|
-
"icon-3xs": ["tw
|
|
473
|
+
"icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
|
|
593
474
|
}
|
|
594
475
|
}
|
|
595
476
|
}
|
|
@@ -598,37 +479,37 @@ var argoVariants = classVarianceAuthority.cva(
|
|
|
598
479
|
[
|
|
599
480
|
"tailwindcss-preflight",
|
|
600
481
|
// layout
|
|
601
|
-
"tw
|
|
602
|
-
"tw
|
|
603
|
-
"tw
|
|
604
|
-
"tw
|
|
605
|
-
"tw
|
|
606
|
-
"tw
|
|
482
|
+
"tw:relative",
|
|
483
|
+
"tw:inline-flex",
|
|
484
|
+
"tw:items-center",
|
|
485
|
+
"tw:justify-center",
|
|
486
|
+
"tw:whitespace-nowrap",
|
|
487
|
+
"tw:gap-2",
|
|
607
488
|
// border
|
|
608
|
-
"tw
|
|
609
|
-
"tw
|
|
610
|
-
"tw
|
|
489
|
+
"tw:border",
|
|
490
|
+
"tw:border-transparent",
|
|
491
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
611
492
|
// text
|
|
612
|
-
"tw
|
|
613
|
-
"tw
|
|
493
|
+
"tw:font-medium",
|
|
494
|
+
"tw:select-none",
|
|
614
495
|
// focus visible
|
|
615
|
-
"
|
|
616
|
-
"focus-visible:
|
|
496
|
+
"tw:!outline-hidden",
|
|
497
|
+
"tw:focus-visible:ring-2",
|
|
617
498
|
// disabled
|
|
618
|
-
"disabled:
|
|
619
|
-
"disabled:
|
|
620
|
-
"active:
|
|
621
|
-
"tw
|
|
622
|
-
"tw
|
|
499
|
+
"tw:disabled:cursor-not-allowed",
|
|
500
|
+
"tw:disabled:opacity-50",
|
|
501
|
+
"tw:active:opacity-60",
|
|
502
|
+
"tw:transition-all",
|
|
503
|
+
"tw:bg-clip-padding",
|
|
623
504
|
// anchor support
|
|
624
|
-
"
|
|
625
|
-
"aria-disabled:
|
|
626
|
-
"aria-disabled:
|
|
505
|
+
"tw:!no-underline",
|
|
506
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
507
|
+
"tw:aria-disabled:opacity-50",
|
|
627
508
|
// icon
|
|
628
|
-
"tw
|
|
629
|
-
"[&_svg]:
|
|
630
|
-
"[&_svg]:
|
|
631
|
-
"[&_svg:not([class*='tw
|
|
509
|
+
"tw:shrink-0",
|
|
510
|
+
"tw:[&_svg]:pointer-events-none",
|
|
511
|
+
"tw:[&_svg]:shrink-0",
|
|
512
|
+
"tw:[&_svg:not([class*='tw:size-'])]:size-4"
|
|
632
513
|
],
|
|
633
514
|
{
|
|
634
515
|
defaultVariants: {
|
|
@@ -637,77 +518,77 @@ var argoVariants = classVarianceAuthority.cva(
|
|
|
637
518
|
},
|
|
638
519
|
variants: {
|
|
639
520
|
block: {
|
|
640
|
-
true: ["tw
|
|
521
|
+
true: ["tw:w-full"]
|
|
641
522
|
},
|
|
642
523
|
variant: {
|
|
643
524
|
primary: [
|
|
644
|
-
"tw
|
|
645
|
-
"tw
|
|
646
|
-
"[a]:hover:
|
|
647
|
-
"hover:not-disabled:
|
|
648
|
-
"hover:
|
|
649
|
-
"focus:
|
|
650
|
-
"focus-visible:
|
|
651
|
-
"focus-visible:
|
|
525
|
+
"tw:bg-primary",
|
|
526
|
+
"tw:text-primary-foreground",
|
|
527
|
+
"tw:[a]:hover:bg-primary/80",
|
|
528
|
+
"tw:hover:not-disabled:bg-primary/90",
|
|
529
|
+
"tw:hover:text-primary-foreground",
|
|
530
|
+
"tw:focus:text-primary-foreground",
|
|
531
|
+
"tw:focus-visible:border-primary",
|
|
532
|
+
"tw:focus-visible:ring-ring/50"
|
|
652
533
|
],
|
|
653
534
|
secondary: [
|
|
654
|
-
"tw
|
|
655
|
-
"tw
|
|
656
|
-
"hover:not-disabled:
|
|
657
|
-
"focus-visible:
|
|
658
|
-
"focus-visible:
|
|
535
|
+
"tw:bg-primary/10",
|
|
536
|
+
"tw:text-primary",
|
|
537
|
+
"tw:hover:not-disabled:bg-primary/20",
|
|
538
|
+
"tw:focus-visible:border-primary",
|
|
539
|
+
"tw:focus-visible:ring-ring/50"
|
|
659
540
|
],
|
|
660
541
|
// should be called "destructive" by Figma
|
|
661
542
|
danger: [
|
|
662
|
-
"tw
|
|
663
|
-
"tw
|
|
664
|
-
"hover:
|
|
665
|
-
"focus:
|
|
666
|
-
"focus-visible:
|
|
667
|
-
"focus-visible:
|
|
543
|
+
"tw:bg-destructive",
|
|
544
|
+
"tw:text-destructive-foreground",
|
|
545
|
+
"tw:hover:text-destructive-foreground",
|
|
546
|
+
"tw:focus:text-destructive-foreground",
|
|
547
|
+
"tw:focus-visible:border-destructive",
|
|
548
|
+
"tw:focus-visible:ring-destructive/20"
|
|
668
549
|
],
|
|
669
550
|
outline: [
|
|
670
|
-
"
|
|
671
|
-
"tw
|
|
551
|
+
"tw:!border-input",
|
|
552
|
+
"tw:bg-background",
|
|
672
553
|
// Semantic base text color so the label/icon flips in dark mode
|
|
673
554
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
674
|
-
"tw
|
|
555
|
+
"tw:text-foreground",
|
|
675
556
|
// Hover follows the brand primary (translucent tint), matching the
|
|
676
557
|
// `secondary` variant — not the fixed `accent` blue.
|
|
677
|
-
"hover:not-disabled:
|
|
678
|
-
"hover:not-disabled:
|
|
679
|
-
"hover:active:
|
|
680
|
-
"focus-visible:!
|
|
681
|
-
"focus-visible:
|
|
558
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
559
|
+
"tw:hover:not-disabled:text-primary",
|
|
560
|
+
"tw:hover:active:bg-background",
|
|
561
|
+
"tw:focus-visible:!border-primary",
|
|
562
|
+
"tw:focus-visible:ring-ring/50"
|
|
682
563
|
],
|
|
683
564
|
// should be called "ghost" by Figma
|
|
684
565
|
invisible: [
|
|
685
|
-
"tw
|
|
686
|
-
"tw
|
|
687
|
-
"hover:not-disabled:
|
|
688
|
-
"hover:not-disabled:
|
|
689
|
-
"hover:not-disabled:
|
|
690
|
-
"focus-visible:
|
|
566
|
+
"tw:bg-transparent",
|
|
567
|
+
"tw:text-foreground",
|
|
568
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
569
|
+
"tw:hover:not-disabled:text-primary",
|
|
570
|
+
"tw:hover:not-disabled:border-primary/10",
|
|
571
|
+
"tw:focus-visible:ring-ring/50"
|
|
691
572
|
],
|
|
692
573
|
// should be called "link" by Figma
|
|
693
574
|
inline: [
|
|
694
|
-
"tw
|
|
695
|
-
"tw
|
|
696
|
-
"hover:
|
|
697
|
-
"hover:active:
|
|
698
|
-
"focus-visible:
|
|
575
|
+
"tw:bg-transparent",
|
|
576
|
+
"tw:text-primary",
|
|
577
|
+
"tw:hover:underline",
|
|
578
|
+
"tw:hover:active:bg-transparent",
|
|
579
|
+
"tw:focus-visible:ring-ring/50"
|
|
699
580
|
]
|
|
700
581
|
},
|
|
701
582
|
size: {
|
|
702
583
|
// should be called "default" by Figma
|
|
703
|
-
medium: ["tw
|
|
584
|
+
medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
|
|
704
585
|
// should be called "small" by Figma
|
|
705
|
-
small: ["tw
|
|
586
|
+
small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
|
|
706
587
|
// should be called "large" by Figma
|
|
707
|
-
large: ["tw
|
|
708
|
-
"icon-lg": ["tw
|
|
709
|
-
icon: ["tw
|
|
710
|
-
"icon-sm": ["tw
|
|
588
|
+
large: ["tw:max-h-10", "tw:py-2.5", "tw:px-6", "tw:text-sm"],
|
|
589
|
+
"icon-lg": ["tw:size-10"],
|
|
590
|
+
icon: ["tw:size-9"],
|
|
591
|
+
"icon-sm": ["tw:size-8"],
|
|
711
592
|
// unsupported in ARGO, remove when old design is gone
|
|
712
593
|
"icon-xs": [],
|
|
713
594
|
"icon-2xs": [],
|
|
@@ -755,13 +636,13 @@ var Button = ({
|
|
|
755
636
|
onClick: handleClick,
|
|
756
637
|
className: cn(classNames),
|
|
757
638
|
children: [
|
|
758
|
-
isLoading && /* @__PURE__ */ jsxRuntime.jsx(
|
|
639
|
+
isLoading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
|
|
759
640
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
760
641
|
]
|
|
761
642
|
}
|
|
762
643
|
);
|
|
763
644
|
};
|
|
764
|
-
var
|
|
645
|
+
var Clipboard2 = ({
|
|
765
646
|
ref,
|
|
766
647
|
text: textProp,
|
|
767
648
|
children,
|
|
@@ -786,6 +667,7 @@ var Clipboard = ({
|
|
|
786
667
|
}
|
|
787
668
|
};
|
|
788
669
|
const handleOnClick = (event) => {
|
|
670
|
+
setIsTooltipOpen(true);
|
|
789
671
|
if (text && state === "ready") void copy(text);
|
|
790
672
|
onClick?.(event);
|
|
791
673
|
};
|
|
@@ -800,6 +682,7 @@ var Clipboard = ({
|
|
|
800
682
|
return tooltip;
|
|
801
683
|
})();
|
|
802
684
|
const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
|
|
685
|
+
const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
|
|
803
686
|
return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
|
|
804
687
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
805
688
|
Tooltip.Trigger,
|
|
@@ -808,12 +691,12 @@ var Clipboard = ({
|
|
|
808
691
|
asChild,
|
|
809
692
|
keepOpenOnClick: true,
|
|
810
693
|
onClick: handleOnClick,
|
|
811
|
-
className: cn("tw
|
|
694
|
+
className: cn("tw:cursor-pointer", className),
|
|
812
695
|
ref,
|
|
813
696
|
children: children ?? text
|
|
814
697
|
}
|
|
815
698
|
),
|
|
816
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
699
|
+
hasTooltipContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
817
700
|
Tooltip.Content,
|
|
818
701
|
{
|
|
819
702
|
keepOpenOnPointerDownOutside: true,
|
|
@@ -824,7 +707,7 @@ var Clipboard = ({
|
|
|
824
707
|
)
|
|
825
708
|
] });
|
|
826
709
|
};
|
|
827
|
-
var DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(
|
|
710
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, {});
|
|
828
711
|
var DEFAULT_ARIA_LABEL = "Copy";
|
|
829
712
|
var ClipboardButton = ({
|
|
830
713
|
// clipboard props
|
|
@@ -841,7 +724,7 @@ var ClipboardButton = ({
|
|
|
841
724
|
const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
|
|
842
725
|
const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
|
|
843
726
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
844
|
-
|
|
727
|
+
Clipboard2,
|
|
845
728
|
{
|
|
846
729
|
asChild: true,
|
|
847
730
|
tooltip,
|
|
@@ -857,13 +740,198 @@ var ClipboardButton = ({
|
|
|
857
740
|
};
|
|
858
741
|
var ButtonToolbar = ({ value, children }) => {
|
|
859
742
|
if (!value && !children) return null;
|
|
860
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw
|
|
743
|
+
return /* @__PURE__ */ jsxRuntime.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: [
|
|
861
744
|
!!value && /* @__PURE__ */ jsxRuntime.jsx(ClipboardButton, { size: "icon-sm", variant: "invisible", text: value }),
|
|
862
745
|
children
|
|
863
746
|
] });
|
|
864
747
|
};
|
|
748
|
+
var COMMANDS = [
|
|
749
|
+
"run-operation",
|
|
750
|
+
"source freshness",
|
|
751
|
+
"docs generate",
|
|
752
|
+
"run",
|
|
753
|
+
"test",
|
|
754
|
+
"seed",
|
|
755
|
+
"snapshot",
|
|
756
|
+
"list",
|
|
757
|
+
"ls",
|
|
758
|
+
"compile",
|
|
759
|
+
"build",
|
|
760
|
+
"deps"
|
|
761
|
+
];
|
|
762
|
+
var ARGUMENTS = ["--select", "--exclude", "--selector", "--defer", "--resource-type", "-s"];
|
|
763
|
+
var METHODS = [
|
|
764
|
+
"path:",
|
|
765
|
+
"source:",
|
|
766
|
+
"tag:",
|
|
767
|
+
"package:",
|
|
768
|
+
"config:",
|
|
769
|
+
"test_type:",
|
|
770
|
+
"test_name:",
|
|
771
|
+
"state:",
|
|
772
|
+
"exposure:",
|
|
773
|
+
"metric:",
|
|
774
|
+
"result:",
|
|
775
|
+
"source_status:",
|
|
776
|
+
"column_name:"
|
|
777
|
+
];
|
|
778
|
+
var FLAGS = [
|
|
779
|
+
"--fail-fast",
|
|
780
|
+
"--warn-error",
|
|
781
|
+
"--favor-state",
|
|
782
|
+
"--vars",
|
|
783
|
+
"--models",
|
|
784
|
+
"--threads",
|
|
785
|
+
"--profiles-dir",
|
|
786
|
+
"--profile",
|
|
787
|
+
"--full-refresh"
|
|
788
|
+
];
|
|
789
|
+
var word = (list) => new RegExp(`^\\s+(?:${list.join("|")})\\b`, "i");
|
|
790
|
+
var prefix = (list) => new RegExp(`^\\s+(?:${list.join("|")})`, "i");
|
|
791
|
+
var dbt = simpleMode.simpleMode({
|
|
792
|
+
start: [
|
|
793
|
+
{ regex: /"(?:[^\\]|\\.)*?(?:"|$)/, token: "string" },
|
|
794
|
+
{ regex: /dbt/, token: "keyword", sol: true },
|
|
795
|
+
{ regex: word(COMMANDS), token: "keyword" },
|
|
796
|
+
{ regex: word(ARGUMENTS), token: "variableName" },
|
|
797
|
+
{ regex: prefix(METHODS), token: "propertyName" },
|
|
798
|
+
{ regex: prefix(FLAGS), token: "attributeName" },
|
|
799
|
+
{ regex: /(?:@|\*|,|\+\d+|\d+\+|\+)/, token: "operator" },
|
|
800
|
+
{ regex: /'.*'/, token: "string" },
|
|
801
|
+
{ regex: /true|false/, token: "atom" }
|
|
802
|
+
]
|
|
803
|
+
});
|
|
804
|
+
|
|
805
|
+
// src/components/CodeEditor/modes/jsonnet.ts
|
|
806
|
+
var COMMENT_END = /^\*\//;
|
|
807
|
+
var COMMENT_START = /^\/\/|^#/;
|
|
808
|
+
var C_COMMENT_START = /^\/\*/;
|
|
809
|
+
var TEXT_BLOCK = /^\|\|\|/;
|
|
810
|
+
var TEXT_BLOCK_END = /^\s*\|\|\|/;
|
|
811
|
+
var RAW_DOUBLE = /^""/;
|
|
812
|
+
var RAW_SINGLE = /^''/;
|
|
813
|
+
var CLOSE_DOUBLE = /^"/;
|
|
814
|
+
var CLOSE_SINGLE = /^'/;
|
|
815
|
+
var ESCAPE = /^\\[\\"'/bfnrt0]/;
|
|
816
|
+
var UNICODE_ESCAPE = /^\\u[0-9a-fA-F]{4}/;
|
|
817
|
+
var BACKSLASH = /^\\/;
|
|
818
|
+
var IMPORT = /^import(?:str)?\s*(@?)(["'])/;
|
|
819
|
+
var QUOTE = /^(@?)(["'])/;
|
|
820
|
+
var ROOT = /^\$/;
|
|
821
|
+
var NUMBER = /^(?:\.\d+|\d+\.?\d*)(?:e[-+]?\d+)?/i;
|
|
822
|
+
var OPERATOR = /^[-+/*=<>!&~^|$%]+/;
|
|
823
|
+
var IDENTIFIER = /^[a-zA-Z_][a-zA-Z0-9_]*/;
|
|
824
|
+
var KEYWORDS = {
|
|
825
|
+
local: "keyword",
|
|
826
|
+
self: "keyword",
|
|
827
|
+
super: "keyword",
|
|
828
|
+
assert: "keyword",
|
|
829
|
+
function: "keyword",
|
|
830
|
+
if: "keyword",
|
|
831
|
+
then: "keyword",
|
|
832
|
+
else: "keyword",
|
|
833
|
+
for: "keyword",
|
|
834
|
+
in: "keyword",
|
|
835
|
+
tailstrict: "keyword",
|
|
836
|
+
error: "keyword",
|
|
837
|
+
true: "atom",
|
|
838
|
+
false: "atom",
|
|
839
|
+
null: "atom"
|
|
840
|
+
};
|
|
841
|
+
var jsonnet = {
|
|
842
|
+
name: "jsonnet",
|
|
843
|
+
startState: () => ({
|
|
844
|
+
cComment: false,
|
|
845
|
+
textBlock: false,
|
|
846
|
+
textBlockIndent: null,
|
|
847
|
+
string: false,
|
|
848
|
+
importString: false,
|
|
849
|
+
stringSingle: false,
|
|
850
|
+
stringRaw: false
|
|
851
|
+
}),
|
|
852
|
+
token: (stream, state) => {
|
|
853
|
+
if (state.cComment) {
|
|
854
|
+
if (stream.match(COMMENT_END)) {
|
|
855
|
+
state.cComment = false;
|
|
856
|
+
return "comment";
|
|
857
|
+
}
|
|
858
|
+
stream.next();
|
|
859
|
+
return "comment";
|
|
860
|
+
}
|
|
861
|
+
if (state.textBlock) {
|
|
862
|
+
if (state.textBlockIndent == null) {
|
|
863
|
+
if (stream.match(TEXT_BLOCK_END)) {
|
|
864
|
+
state.textBlock = false;
|
|
865
|
+
return "string";
|
|
866
|
+
}
|
|
867
|
+
state.textBlockIndent = stream.indentation();
|
|
868
|
+
}
|
|
869
|
+
if (stream.indentation() >= state.textBlockIndent) {
|
|
870
|
+
stream.skipToEnd();
|
|
871
|
+
return "string";
|
|
872
|
+
}
|
|
873
|
+
if (stream.match(TEXT_BLOCK_END)) {
|
|
874
|
+
state.textBlock = false;
|
|
875
|
+
return "string";
|
|
876
|
+
}
|
|
877
|
+
stream.next();
|
|
878
|
+
return "invalid";
|
|
879
|
+
}
|
|
880
|
+
if (state.string || state.importString) {
|
|
881
|
+
const style = state.string ? "string" : "meta";
|
|
882
|
+
if (state.stringRaw) {
|
|
883
|
+
if (stream.match(state.stringSingle ? RAW_SINGLE : RAW_DOUBLE)) return "escape";
|
|
884
|
+
} else {
|
|
885
|
+
if (stream.match(ESCAPE)) return "escape";
|
|
886
|
+
if (stream.match(UNICODE_ESCAPE)) return "escape";
|
|
887
|
+
if (stream.match(BACKSLASH)) return "invalid";
|
|
888
|
+
}
|
|
889
|
+
if (stream.match(state.stringSingle ? CLOSE_SINGLE : CLOSE_DOUBLE)) {
|
|
890
|
+
state.string = false;
|
|
891
|
+
state.importString = false;
|
|
892
|
+
return style;
|
|
893
|
+
}
|
|
894
|
+
stream.next();
|
|
895
|
+
return style;
|
|
896
|
+
}
|
|
897
|
+
if (stream.match(COMMENT_START)) {
|
|
898
|
+
stream.skipToEnd();
|
|
899
|
+
return "comment";
|
|
900
|
+
}
|
|
901
|
+
if (stream.match(C_COMMENT_START)) {
|
|
902
|
+
state.cComment = true;
|
|
903
|
+
return "comment";
|
|
904
|
+
}
|
|
905
|
+
const imported = stream.match(IMPORT);
|
|
906
|
+
if (Array.isArray(imported)) {
|
|
907
|
+
state.importString = true;
|
|
908
|
+
state.stringRaw = imported[1] === "@";
|
|
909
|
+
state.stringSingle = imported[2] === "'";
|
|
910
|
+
return "meta";
|
|
911
|
+
}
|
|
912
|
+
const quoted = stream.match(QUOTE);
|
|
913
|
+
if (Array.isArray(quoted)) {
|
|
914
|
+
state.string = true;
|
|
915
|
+
state.stringRaw = quoted[1] === "@";
|
|
916
|
+
state.stringSingle = quoted[2] === "'";
|
|
917
|
+
return "string";
|
|
918
|
+
}
|
|
919
|
+
if (stream.match(TEXT_BLOCK)) {
|
|
920
|
+
state.textBlock = true;
|
|
921
|
+
state.textBlockIndent = null;
|
|
922
|
+
return "string";
|
|
923
|
+
}
|
|
924
|
+
if (stream.match(ROOT)) return "keyword";
|
|
925
|
+
if (stream.match(NUMBER)) return "number";
|
|
926
|
+
if (stream.match(OPERATOR)) return "operator";
|
|
927
|
+
const identifier = stream.match(IDENTIFIER);
|
|
928
|
+
if (Array.isArray(identifier)) return KEYWORDS[identifier[0]] ?? null;
|
|
929
|
+
stream.next();
|
|
930
|
+
return null;
|
|
931
|
+
}
|
|
932
|
+
};
|
|
865
933
|
var resolveToken = (token, fallbackChannels, alpha) => {
|
|
866
|
-
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(
|
|
934
|
+
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(`--${token}`).trim() || fallbackChannels;
|
|
867
935
|
return alpha === void 0 ? `rgb(${channels})` : `rgb(${channels} / ${alpha})`;
|
|
868
936
|
};
|
|
869
937
|
var SSR_SIGNAL = "ssr";
|
|
@@ -883,12 +951,38 @@ var subscribeThemeSignal = (onChange) => {
|
|
|
883
951
|
return () => observer.disconnect();
|
|
884
952
|
};
|
|
885
953
|
var useThemeSignal = () => react.useSyncExternalStore(subscribeThemeSignal, readThemeSignal, () => SSR_SIGNAL);
|
|
886
|
-
var
|
|
954
|
+
var themeCache = /* @__PURE__ */ new Map();
|
|
955
|
+
var useThemedExtension = (cacheKey, build) => {
|
|
887
956
|
const themeSignal = useThemeSignal();
|
|
888
|
-
|
|
957
|
+
const key = `${themeSignal} ${cacheKey}`;
|
|
958
|
+
let cached = themeCache.get(key);
|
|
959
|
+
if (!cached) {
|
|
960
|
+
cached = build();
|
|
961
|
+
themeCache.set(key, cached);
|
|
962
|
+
}
|
|
963
|
+
return cached;
|
|
889
964
|
};
|
|
890
965
|
|
|
891
966
|
// src/components/CodeEditor/helpers.ts
|
|
967
|
+
var LANGUAGE_MODES = [
|
|
968
|
+
"application/json",
|
|
969
|
+
"text/plain",
|
|
970
|
+
"text/x-python",
|
|
971
|
+
"text/x-sql",
|
|
972
|
+
"text/x-mysql",
|
|
973
|
+
"text/x-pgsql",
|
|
974
|
+
"text/x-mssql",
|
|
975
|
+
"text/x-sfsql",
|
|
976
|
+
"text/x-plsql",
|
|
977
|
+
"text/x-rsrc",
|
|
978
|
+
"text/x-sh",
|
|
979
|
+
"text/x-toml",
|
|
980
|
+
"text/jsonnet",
|
|
981
|
+
"text/x-dbt",
|
|
982
|
+
"text/javascript",
|
|
983
|
+
"text/typescript"
|
|
984
|
+
];
|
|
985
|
+
var isLanguageMode = (mode) => LANGUAGE_MODES.includes(mode);
|
|
892
986
|
var buildBaseThemeStyles = () => ({
|
|
893
987
|
"*": { lineHeight: "20px" },
|
|
894
988
|
"*::selection": {
|
|
@@ -929,7 +1023,27 @@ var buildBaseThemeStyles = () => ({
|
|
|
929
1023
|
".cm-changeGutter": { position: "absolute", zIndex: -1, width: "100%", paddingLeft: 0 },
|
|
930
1024
|
'&[class*="cm-merge-"] .cm-changedLine,&[class*="cm-merge-"] .cm-line, &[class*="cm-merge-"] .cm-deletedChunk': { paddingLeft: 0 }
|
|
931
1025
|
});
|
|
932
|
-
var
|
|
1026
|
+
var ALWAYS_OFF = {
|
|
1027
|
+
drawSelection: false,
|
|
1028
|
+
foldGutter: false,
|
|
1029
|
+
foldKeymap: false,
|
|
1030
|
+
highlightActiveLine: false,
|
|
1031
|
+
highlightActiveLineGutter: false
|
|
1032
|
+
};
|
|
1033
|
+
var buildBasicSetup = (readOnly) => ({
|
|
1034
|
+
...ALWAYS_OFF,
|
|
1035
|
+
...readOnly ? {
|
|
1036
|
+
history: false,
|
|
1037
|
+
historyKeymap: false,
|
|
1038
|
+
closeBrackets: false,
|
|
1039
|
+
closeBracketsKeymap: false,
|
|
1040
|
+
lintKeymap: false,
|
|
1041
|
+
indentOnInput: false,
|
|
1042
|
+
rectangularSelection: false,
|
|
1043
|
+
dropCursor: false,
|
|
1044
|
+
highlightSelectionMatches: false
|
|
1045
|
+
} : null
|
|
1046
|
+
});
|
|
933
1047
|
var buildCustomTheme = () => codemirrorThemeGithub.githubLightInit({
|
|
934
1048
|
settings: {
|
|
935
1049
|
fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,
|
|
@@ -944,10 +1058,19 @@ var buildCustomTheme = () => codemirrorThemeGithub.githubLightInit({
|
|
|
944
1058
|
});
|
|
945
1059
|
var getLanguageMode = (mode) => {
|
|
946
1060
|
switch (mode) {
|
|
1061
|
+
case void 0:
|
|
1062
|
+
case "application/json":
|
|
1063
|
+
return langJson.json();
|
|
947
1064
|
case "text/x-python":
|
|
948
1065
|
return langPython.python();
|
|
949
1066
|
case "text/x-sql":
|
|
950
1067
|
return langSql.sql({ upperCaseKeywords: true });
|
|
1068
|
+
case "text/x-mysql":
|
|
1069
|
+
return langSql.sql({ upperCaseKeywords: true, dialect: langSql.MySQL });
|
|
1070
|
+
case "text/x-pgsql":
|
|
1071
|
+
return langSql.sql({ upperCaseKeywords: true, dialect: langSql.PostgreSQL });
|
|
1072
|
+
case "text/x-mssql":
|
|
1073
|
+
return langSql.sql({ upperCaseKeywords: true, dialect: langSql.MSSQL });
|
|
951
1074
|
case "text/x-sfsql":
|
|
952
1075
|
return language.StreamLanguage.define(codemirrorLangSfsql.sfsql);
|
|
953
1076
|
case "text/x-plsql":
|
|
@@ -956,23 +1079,32 @@ var getLanguageMode = (mode) => {
|
|
|
956
1079
|
return language.StreamLanguage.define(r.r);
|
|
957
1080
|
case "text/x-sh":
|
|
958
1081
|
return language.StreamLanguage.define(shell.shell);
|
|
1082
|
+
case "text/x-toml":
|
|
1083
|
+
return language.StreamLanguage.define(toml.toml);
|
|
1084
|
+
case "text/jsonnet":
|
|
1085
|
+
return language.StreamLanguage.define(jsonnet);
|
|
1086
|
+
case "text/x-dbt":
|
|
1087
|
+
return language.StreamLanguage.define(dbt);
|
|
959
1088
|
case "text/javascript":
|
|
960
1089
|
return langJavascript.javascript({ jsx: true });
|
|
961
1090
|
case "text/typescript":
|
|
962
1091
|
return langJavascript.javascript({ jsx: true, typescript: true });
|
|
1092
|
+
// No language — `text/plain` lands here, and so does any mode added to
|
|
1093
|
+
// LANGUAGE_MODES without an arm above. Unstyled text is the safe degradation;
|
|
1094
|
+
// a `json()` default would colour unrelated content as if it were JSON.
|
|
963
1095
|
default:
|
|
964
|
-
return
|
|
1096
|
+
return [];
|
|
965
1097
|
}
|
|
966
1098
|
};
|
|
967
1099
|
var shouldLintJson = (mode, readOnly) => mode === "application/json" && !readOnly;
|
|
968
|
-
var KbdSeparator = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: cn("tw
|
|
1100
|
+
var KbdSeparator = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: cn("tw:text-xs tw:text-muted-foreground", className) });
|
|
969
1101
|
var KbdGroup = ({ ref, className, children, separator, ...props }) => {
|
|
970
1102
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
971
1103
|
"kbd",
|
|
972
1104
|
{
|
|
973
1105
|
...props,
|
|
974
1106
|
ref,
|
|
975
|
-
className: cn("tw
|
|
1107
|
+
className: cn("tw:inline-flex", "tw:items-center", "tw:gap-1", className),
|
|
976
1108
|
children: separator ? (
|
|
977
1109
|
// oxlint-disable-next-line react-x/no-children-to-array
|
|
978
1110
|
react.Children.toArray(children).map((child, index) => (
|
|
@@ -990,22 +1122,22 @@ var kbdVariants = classVarianceAuthority.cva(
|
|
|
990
1122
|
[
|
|
991
1123
|
"tailwindcss-preflight",
|
|
992
1124
|
// style
|
|
993
|
-
"tw
|
|
994
|
-
"tw
|
|
995
|
-
"tw
|
|
996
|
-
"tw
|
|
1125
|
+
"tw:pointer-events-none",
|
|
1126
|
+
"tw:w-fit",
|
|
1127
|
+
"tw:h-5",
|
|
1128
|
+
"tw:min-w-5",
|
|
997
1129
|
// layout
|
|
998
|
-
"tw
|
|
999
|
-
"tw
|
|
1000
|
-
"tw
|
|
1001
|
-
"tw
|
|
1002
|
-
"tw
|
|
1130
|
+
"tw:inline-flex",
|
|
1131
|
+
"tw:items-center",
|
|
1132
|
+
"tw:justify-center",
|
|
1133
|
+
"tw:gap-1",
|
|
1134
|
+
"tw:shrink-0",
|
|
1003
1135
|
// spacing
|
|
1004
|
-
"tw
|
|
1005
|
-
'[&_svg:not([class*="size-"])]:
|
|
1006
|
-
"tw
|
|
1007
|
-
"tw
|
|
1008
|
-
"tw
|
|
1136
|
+
"tw:px-1",
|
|
1137
|
+
'tw:[&_svg:not([class*="size-"])]:size-2.5',
|
|
1138
|
+
"tw:text-xs",
|
|
1139
|
+
"tw:font-medium",
|
|
1140
|
+
"tw:rounded"
|
|
1009
1141
|
],
|
|
1010
1142
|
{
|
|
1011
1143
|
defaultVariants: {
|
|
@@ -1013,8 +1145,8 @@ var kbdVariants = classVarianceAuthority.cva(
|
|
|
1013
1145
|
},
|
|
1014
1146
|
variants: {
|
|
1015
1147
|
variant: {
|
|
1016
|
-
default: "tw
|
|
1017
|
-
primary: "tw
|
|
1148
|
+
default: "tw:bg-muted tw:text-muted-foreground",
|
|
1149
|
+
primary: "tw:bg-white/20 tw:text-white"
|
|
1018
1150
|
}
|
|
1019
1151
|
}
|
|
1020
1152
|
}
|
|
@@ -1037,6 +1169,7 @@ var CodeEditor = ({
|
|
|
1037
1169
|
onChange,
|
|
1038
1170
|
mode = "application/json",
|
|
1039
1171
|
placeholder = "",
|
|
1172
|
+
ariaLabel,
|
|
1040
1173
|
readOnly = false,
|
|
1041
1174
|
autocompletions = emptyArray,
|
|
1042
1175
|
extraKeys = emptyObject,
|
|
@@ -1045,19 +1178,23 @@ var CodeEditor = ({
|
|
|
1045
1178
|
withLineNumbers = true,
|
|
1046
1179
|
withLineWrapping = true,
|
|
1047
1180
|
withCollapseUnchanged = false,
|
|
1048
|
-
withCopyButton =
|
|
1181
|
+
withCopyButton = false,
|
|
1049
1182
|
completeAny = false,
|
|
1050
1183
|
help = null,
|
|
1051
1184
|
helpPostfix = null,
|
|
1052
1185
|
renderAdditionalButtons,
|
|
1053
1186
|
className
|
|
1054
1187
|
}) => {
|
|
1055
|
-
const
|
|
1056
|
-
const
|
|
1188
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1189
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1190
|
+
const baseTheme = useThemedExtension(
|
|
1191
|
+
"code-editor:chrome",
|
|
1192
|
+
() => view.EditorView.theme(buildBaseThemeStyles())
|
|
1193
|
+
);
|
|
1057
1194
|
const commonExtensions = react.useMemo(() => {
|
|
1058
1195
|
return [
|
|
1059
1196
|
getLanguageMode(mode),
|
|
1060
|
-
shouldLintJson(mode, readOnly)
|
|
1197
|
+
shouldLintJson(mode, readOnly) ? lint.linter(langJson.jsonParseLinter()) : [],
|
|
1061
1198
|
withLineWrapping ? view.EditorView.lineWrapping : [],
|
|
1062
1199
|
CodeMirror.EditorState.languageData.of(() => [
|
|
1063
1200
|
{ autocomplete: completeAny ? autocomplete.completeAnyWord : autocompletions }
|
|
@@ -1072,10 +1209,20 @@ var CodeEditor = ({
|
|
|
1072
1209
|
}
|
|
1073
1210
|
}))
|
|
1074
1211
|
),
|
|
1075
|
-
autocomplete.autocompletion({ activateOnTyping: completeAny }),
|
|
1212
|
+
readOnly ? [] : autocomplete.autocompletion({ activateOnTyping: completeAny }),
|
|
1213
|
+
ariaLabel ? view.EditorView.contentAttributes.of({ "aria-label": ariaLabel }) : [],
|
|
1076
1214
|
baseTheme
|
|
1077
|
-
]
|
|
1078
|
-
}, [
|
|
1215
|
+
];
|
|
1216
|
+
}, [
|
|
1217
|
+
autocompletions,
|
|
1218
|
+
completeAny,
|
|
1219
|
+
extraKeys,
|
|
1220
|
+
mode,
|
|
1221
|
+
readOnly,
|
|
1222
|
+
withLineWrapping,
|
|
1223
|
+
baseTheme,
|
|
1224
|
+
ariaLabel
|
|
1225
|
+
]);
|
|
1079
1226
|
const extensions = react.useMemo(() => {
|
|
1080
1227
|
return [
|
|
1081
1228
|
...commonExtensions,
|
|
@@ -1092,18 +1239,20 @@ var CodeEditor = ({
|
|
|
1092
1239
|
}, [commonExtensions, placeholder, readOnly, previousValue, withCollapseUnchanged]);
|
|
1093
1240
|
const config = react.useMemo(() => {
|
|
1094
1241
|
return {
|
|
1095
|
-
...
|
|
1242
|
+
...buildBasicSetup(readOnly),
|
|
1096
1243
|
lineNumbers: withLineNumbers
|
|
1097
1244
|
};
|
|
1098
|
-
}, [withLineNumbers]);
|
|
1245
|
+
}, [withLineNumbers, readOnly]);
|
|
1246
|
+
const additionalButtons = renderAdditionalButtons?.(value);
|
|
1247
|
+
const hasToolbar = withCopyButton && !!value || !!additionalButtons;
|
|
1099
1248
|
return (
|
|
1100
1249
|
// oxlint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
1101
1250
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1102
1251
|
"div",
|
|
1103
1252
|
{
|
|
1104
1253
|
className: cn(
|
|
1105
|
-
"tw
|
|
1106
|
-
{ "tw
|
|
1254
|
+
"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",
|
|
1255
|
+
{ "tw:mt-8": hasToolbar },
|
|
1107
1256
|
className
|
|
1108
1257
|
),
|
|
1109
1258
|
onKeyDown: (event) => {
|
|
@@ -1112,19 +1261,19 @@ var CodeEditor = ({
|
|
|
1112
1261
|
}
|
|
1113
1262
|
},
|
|
1114
1263
|
children: [
|
|
1115
|
-
|
|
1264
|
+
hasToolbar && /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsx("div", { className: "tw:flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(ButtonToolbar, { value: withCopyButton ? value : void 0, children: additionalButtons }) }) }),
|
|
1116
1265
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1117
1266
|
CodeMirror__default.default,
|
|
1118
1267
|
{
|
|
1119
1268
|
theme: customTheme,
|
|
1120
1269
|
value,
|
|
1121
|
-
onChange,
|
|
1270
|
+
onChange: handleChange,
|
|
1122
1271
|
extensions,
|
|
1123
1272
|
autoFocus: withAutofocus,
|
|
1124
1273
|
basicSetup: config
|
|
1125
1274
|
}
|
|
1126
1275
|
),
|
|
1127
|
-
!readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxRuntime.jsxs(HelpBlock, { className: "tw
|
|
1276
|
+
!readOnly && (withToggleCommentHint || help || helpPostfix) && /* @__PURE__ */ jsxRuntime.jsxs(HelpBlock, { className: "tw:mt-2 tw:flex tw:flex-wrap tw:gap-1", children: [
|
|
1128
1277
|
help,
|
|
1129
1278
|
withToggleCommentHint ? /* @__PURE__ */ jsxRuntime.jsx(ToggleComponentHelp, {}) : null,
|
|
1130
1279
|
helpPostfix
|
|
@@ -1544,8 +1693,7 @@ function searchExtension() {
|
|
|
1544
1693
|
function updateSearch(view, query, selectedMatchIndex) {
|
|
1545
1694
|
view.dispatch({ effects: setSearchEffect.of({ query, selectedMatchIndex }) });
|
|
1546
1695
|
}
|
|
1547
|
-
var
|
|
1548
|
-
drawSelection: false,
|
|
1696
|
+
var OWN_KEYMAPS = {
|
|
1549
1697
|
defaultKeymap: false,
|
|
1550
1698
|
completionKeymap: false,
|
|
1551
1699
|
searchKeymap: false
|
|
@@ -1610,8 +1758,11 @@ var SqlEditor = ({
|
|
|
1610
1758
|
dialect
|
|
1611
1759
|
}) => {
|
|
1612
1760
|
const editorRef = react.useRef(null);
|
|
1613
|
-
const customTheme = useThemedExtension(buildCustomTheme);
|
|
1614
|
-
const themeExtension = useThemedExtension(
|
|
1761
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1762
|
+
const themeExtension = useThemedExtension(
|
|
1763
|
+
"sql-editor:chrome",
|
|
1764
|
+
() => CodeMirror.EditorView.theme(buildTheme())
|
|
1765
|
+
);
|
|
1615
1766
|
const extensions = react.useMemo(() => {
|
|
1616
1767
|
const baseKeymap = [...commands.defaultKeymap, ...CUSTOM_KEYMAP];
|
|
1617
1768
|
return [
|
|
@@ -1637,8 +1788,8 @@ var SqlEditor = ({
|
|
|
1637
1788
|
themeExtension
|
|
1638
1789
|
]);
|
|
1639
1790
|
const defaultSetup = react.useMemo(() => {
|
|
1640
|
-
return { ...
|
|
1641
|
-
}, [lineNumbers]);
|
|
1791
|
+
return { ...buildBasicSetup(readOnly), ...OWN_KEYMAPS, lineNumbers };
|
|
1792
|
+
}, [readOnly, lineNumbers]);
|
|
1642
1793
|
react.useEffect(() => {
|
|
1643
1794
|
if (editorRef.current?.view) {
|
|
1644
1795
|
updateHighlighting(editorRef.current.view, highlightLines);
|
|
@@ -1704,25 +1855,25 @@ var LINE_HEIGHT_PX = 20;
|
|
|
1704
1855
|
var PANE_HEADER_HEIGHT_PX = 58;
|
|
1705
1856
|
var AcceptButton = ({ side, onAccept }) => {
|
|
1706
1857
|
const label = `Accept ${side === "left" ? "production" : "branch"} version`;
|
|
1707
|
-
const Chevron = side === "left" ?
|
|
1708
|
-
return /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onAccept, variant: "outline", size: "icon-sm", title: label, "aria-label": label, children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, { className: "tw
|
|
1858
|
+
const Chevron = side === "left" ? lucideReact.ChevronsRight : lucideReact.ChevronsLeft;
|
|
1859
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Button, { onClick: onAccept, variant: "outline", size: "icon-sm", title: label, "aria-label": label, children: /* @__PURE__ */ jsxRuntime.jsx(Chevron, { className: "tw:size-5" }) });
|
|
1709
1860
|
};
|
|
1710
1861
|
var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1711
1862
|
"div",
|
|
1712
1863
|
{
|
|
1713
1864
|
className: cn(
|
|
1714
|
-
"tw
|
|
1715
|
-
conflicts.length > 0 ? "tw
|
|
1865
|
+
"tw:z-10 tw:flex tw:shrink-0 tw:flex-col tw:items-center",
|
|
1866
|
+
conflicts.length > 0 ? "tw:w-7" : "tw:w-0"
|
|
1716
1867
|
),
|
|
1717
1868
|
children: conflicts.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1718
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw
|
|
1719
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw
|
|
1869
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw:shrink-0", style: { height: `${PANE_HEADER_HEIGHT_PX}px` } }),
|
|
1870
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw:relative tw:w-full tw:flex-1 tw:overflow-y-clip tw:overflow-x-visible", children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: contentRef, className: "tw:relative tw:size-full", children: conflicts.map((conflict) => {
|
|
1720
1871
|
const topLine = side === "left" ? conflict.oldStartLine : conflict.newStartLine;
|
|
1721
1872
|
const topOffset = (topLine - 1) * LINE_HEIGHT_PX - 2;
|
|
1722
1873
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1723
1874
|
"div",
|
|
1724
1875
|
{
|
|
1725
|
-
className: "tw
|
|
1876
|
+
className: "tw:absolute tw:inset-x-0 tw:flex tw:flex-col tw:items-center tw:gap-0.5",
|
|
1726
1877
|
style: { top: `${topOffset}px` },
|
|
1727
1878
|
children: [
|
|
1728
1879
|
/* @__PURE__ */ jsxRuntime.jsx(AcceptButton, { side, onAccept: () => onAccept(conflict) }),
|
|
@@ -1734,7 +1885,7 @@ var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /
|
|
|
1734
1885
|
size: "icon-sm",
|
|
1735
1886
|
title: "Dismiss",
|
|
1736
1887
|
"aria-label": `Dismiss ${side === "left" ? "production" : "branch"} change`,
|
|
1737
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1888
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw:size-4" })
|
|
1738
1889
|
}
|
|
1739
1890
|
)
|
|
1740
1891
|
]
|
|
@@ -1831,13 +1982,15 @@ var MergePane = ({
|
|
|
1831
1982
|
deleted = false
|
|
1832
1983
|
}) => {
|
|
1833
1984
|
const editorRef = react.useRef(null);
|
|
1985
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1834
1986
|
const themeExtension = useThemedExtension(
|
|
1987
|
+
`merge-pane:${deleted}`,
|
|
1835
1988
|
() => view.EditorView.theme({
|
|
1836
1989
|
"&.cm-editor": {
|
|
1837
1990
|
height: "100%",
|
|
1838
1991
|
backgroundColor: deleted ? colors__default.default.error[100] : resolveToken("background", "249 250 251"),
|
|
1839
1992
|
// Pair the token-driven surface with a token-driven text color so line
|
|
1840
|
-
// content stays readable when the pane's `--
|
|
1993
|
+
// content stays readable when the pane's `--background` goes dark.
|
|
1841
1994
|
// The deleted pane keeps default dark text on its fixed light-red wash.
|
|
1842
1995
|
...deleted ? {} : { color: resolveToken("foreground", "30 41 59") },
|
|
1843
1996
|
outline: "none"
|
|
@@ -1848,10 +2001,13 @@ var MergePane = ({
|
|
|
1848
2001
|
},
|
|
1849
2002
|
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
1850
2003
|
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
1851
|
-
})
|
|
1852
|
-
[deleted]
|
|
2004
|
+
})
|
|
1853
2005
|
);
|
|
1854
2006
|
const diffHighlightExtension = react.useMemo(() => createDiffHighlightExtension(), []);
|
|
2007
|
+
const basicSetup = react.useMemo(
|
|
2008
|
+
() => ({ ...buildBasicSetup(readOnly), lineNumbers: true }),
|
|
2009
|
+
[readOnly]
|
|
2010
|
+
);
|
|
1855
2011
|
const extensions = react.useMemo(
|
|
1856
2012
|
() => [
|
|
1857
2013
|
diffHighlightExtension,
|
|
@@ -1901,33 +2057,33 @@ var MergePane = ({
|
|
|
1901
2057
|
"div",
|
|
1902
2058
|
{
|
|
1903
2059
|
className: cn(
|
|
1904
|
-
"tw
|
|
2060
|
+
"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:overflow-hidden",
|
|
1905
2061
|
className,
|
|
1906
|
-
deleted && "tw
|
|
2062
|
+
deleted && "tw:border-error-300"
|
|
1907
2063
|
),
|
|
1908
2064
|
children: [
|
|
1909
2065
|
header && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1910
2066
|
"div",
|
|
1911
2067
|
{
|
|
1912
2068
|
className: cn(
|
|
1913
|
-
"tw
|
|
1914
|
-
deleted ? "tw
|
|
2069
|
+
"tw:px-4 tw:py-3",
|
|
2070
|
+
deleted ? "tw:border-b tw:border-error-200 tw:bg-error-100" : "tw:bg-background",
|
|
1915
2071
|
headerClassName
|
|
1916
2072
|
),
|
|
1917
2073
|
children: header
|
|
1918
2074
|
}
|
|
1919
2075
|
),
|
|
1920
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw
|
|
2076
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw:flex tw:h-0 tw:flex-1 tw:flex-col tw:[&_>div]:h-full", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1921
2077
|
CodeMirror__default.default,
|
|
1922
2078
|
{
|
|
1923
2079
|
ref: editorRef,
|
|
1924
2080
|
height: "100%",
|
|
1925
2081
|
value,
|
|
1926
|
-
onChange,
|
|
2082
|
+
onChange: handleChange,
|
|
1927
2083
|
extensions,
|
|
1928
2084
|
readOnly,
|
|
1929
2085
|
onCreateEditor: handleCreateEditor,
|
|
1930
|
-
basicSetup
|
|
2086
|
+
basicSetup
|
|
1931
2087
|
}
|
|
1932
2088
|
) })
|
|
1933
2089
|
]
|
|
@@ -2027,7 +2183,7 @@ var MergeEditor = ({
|
|
|
2027
2183
|
"div",
|
|
2028
2184
|
{
|
|
2029
2185
|
className: cn(
|
|
2030
|
-
"tw
|
|
2186
|
+
"tw:flex tw:h-full tw:min-h-0 tw:overflow-hidden tw:bg-background tw:gap-3",
|
|
2031
2187
|
className
|
|
2032
2188
|
),
|
|
2033
2189
|
children: [
|
|
@@ -2039,7 +2195,7 @@ var MergeEditor = ({
|
|
|
2039
2195
|
lineClassification: leftClassification,
|
|
2040
2196
|
readOnly: true,
|
|
2041
2197
|
header: leftHeader,
|
|
2042
|
-
className: "tw
|
|
2198
|
+
className: "tw:rounded-r-lg tw:border tw:border-border",
|
|
2043
2199
|
onScrollDOMReady: registerScroller(0),
|
|
2044
2200
|
deleted: leftDeleted
|
|
2045
2201
|
}
|
|
@@ -2063,7 +2219,7 @@ var MergeEditor = ({
|
|
|
2063
2219
|
onChange: handleMergeChange,
|
|
2064
2220
|
header: middleHeader,
|
|
2065
2221
|
headerClassName: middleHeaderClassName,
|
|
2066
|
-
className: cn("tw
|
|
2222
|
+
className: cn("tw:border tw:border-border tw:rounded-lg", middleClassName),
|
|
2067
2223
|
onScrollDOMReady: registerScroller(1)
|
|
2068
2224
|
}
|
|
2069
2225
|
),
|
|
@@ -2085,7 +2241,7 @@ var MergeEditor = ({
|
|
|
2085
2241
|
lineClassification: rightClassification,
|
|
2086
2242
|
readOnly: true,
|
|
2087
2243
|
header: rightHeader,
|
|
2088
|
-
className: "tw
|
|
2244
|
+
className: "tw:rounded-l-lg tw:border tw:border-border",
|
|
2089
2245
|
onScrollDOMReady: registerScroller(2),
|
|
2090
2246
|
deleted: rightDeleted
|
|
2091
2247
|
}
|
|
@@ -2096,7 +2252,9 @@ var MergeEditor = ({
|
|
|
2096
2252
|
};
|
|
2097
2253
|
|
|
2098
2254
|
exports.CodeEditor = CodeEditor;
|
|
2255
|
+
exports.LANGUAGE_MODES = LANGUAGE_MODES;
|
|
2099
2256
|
exports.MergeEditor = MergeEditor;
|
|
2100
2257
|
exports.SqlEditor = SqlEditor;
|
|
2258
|
+
exports.isLanguageMode = isLanguageMode;
|
|
2101
2259
|
//# sourceMappingURL=editors.cjs.map
|
|
2102
2260
|
//# sourceMappingURL=editors.cjs.map
|