@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.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
|
);
|
|
@@ -267,6 +245,7 @@ var Tooltip = ({
|
|
|
267
245
|
placement = "right",
|
|
268
246
|
forceHide = false,
|
|
269
247
|
forceShow = false,
|
|
248
|
+
delayDuration,
|
|
270
249
|
// trigger props
|
|
271
250
|
triggerAsChild = false
|
|
272
251
|
}) => {
|
|
@@ -286,6 +265,7 @@ var Tooltip = ({
|
|
|
286
265
|
{
|
|
287
266
|
open: !!tooltip && (open || forceShow) && !forceHide,
|
|
288
267
|
onOpenChange: setOpen,
|
|
268
|
+
delayDuration,
|
|
289
269
|
disableHoverableContent: isActionVariant,
|
|
290
270
|
children: [
|
|
291
271
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -317,14 +297,14 @@ Tooltip.Trigger = TooltipTrigger;
|
|
|
317
297
|
|
|
318
298
|
// src/utils/escapeStringRegexp.ts
|
|
319
299
|
var escapeStringRegexp = (string) => string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
320
|
-
var helpVariants = classVarianceAuthority.cva(["tw
|
|
300
|
+
var helpVariants = classVarianceAuthority.cva(["tw:m-0", "tw:text-xs"], {
|
|
321
301
|
defaultVariants: {
|
|
322
302
|
state: "default"
|
|
323
303
|
},
|
|
324
304
|
variants: {
|
|
325
305
|
state: {
|
|
326
|
-
default: ["tw
|
|
327
|
-
warning: ["tw
|
|
306
|
+
default: ["tw:text-muted-foreground"],
|
|
307
|
+
warning: ["tw:text-warning"]
|
|
328
308
|
}
|
|
329
309
|
}
|
|
330
310
|
});
|
|
@@ -332,145 +312,49 @@ var HelpBlock = ({ children, className, state = "default", ...rest }) => {
|
|
|
332
312
|
if (!children) return null;
|
|
333
313
|
return /* @__PURE__ */ jsxRuntime.jsx("p", { ...rest, className: helpVariants({ state, className }), children });
|
|
334
314
|
};
|
|
335
|
-
|
|
336
|
-
// src/icons/index.ts
|
|
337
|
-
var icons_exports = {};
|
|
338
|
-
__export(icons_exports, {
|
|
339
|
-
Google: () => Google,
|
|
340
|
-
Keboola: () => Keboola,
|
|
341
|
-
Microsoft: () => Microsoft
|
|
342
|
-
});
|
|
343
|
-
__reExport(icons_exports, lucide_react_star__namespace);
|
|
344
|
-
var Google = react.forwardRef(
|
|
345
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
346
|
-
"svg",
|
|
347
|
-
{
|
|
348
|
-
ref,
|
|
349
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
350
|
-
width: size,
|
|
351
|
-
height: size,
|
|
352
|
-
viewBox: "12 10 20 20",
|
|
353
|
-
fill: "none",
|
|
354
|
-
className: cn("lucide", className),
|
|
355
|
-
...rest,
|
|
356
|
-
children: [
|
|
357
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
358
|
-
"path",
|
|
359
|
-
{
|
|
360
|
-
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",
|
|
361
|
-
fill: "#4285F4"
|
|
362
|
-
}
|
|
363
|
-
),
|
|
364
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
365
|
-
"path",
|
|
366
|
-
{
|
|
367
|
-
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",
|
|
368
|
-
fill: "#34A853"
|
|
369
|
-
}
|
|
370
|
-
),
|
|
371
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
372
|
-
"path",
|
|
373
|
-
{
|
|
374
|
-
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",
|
|
375
|
-
fill: "#FBBC04"
|
|
376
|
-
}
|
|
377
|
-
),
|
|
378
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
379
|
-
"path",
|
|
380
|
-
{
|
|
381
|
-
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",
|
|
382
|
-
fill: "#EA4335"
|
|
383
|
-
}
|
|
384
|
-
),
|
|
385
|
-
children
|
|
386
|
-
]
|
|
387
|
-
}
|
|
388
|
-
)
|
|
389
|
-
);
|
|
390
|
-
Google.displayName = "Google";
|
|
391
|
-
var Keboola = react.forwardRef(
|
|
392
|
-
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
393
|
-
"svg",
|
|
394
|
-
{
|
|
395
|
-
ref,
|
|
396
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
397
|
-
width: size,
|
|
398
|
-
height: size,
|
|
399
|
-
viewBox: "0 0 300 512",
|
|
400
|
-
fill: color,
|
|
401
|
-
className: cn("lucide", className),
|
|
402
|
-
...rest,
|
|
403
|
-
children: [
|
|
404
|
-
/* @__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" }),
|
|
405
|
-
children
|
|
406
|
-
]
|
|
407
|
-
}
|
|
408
|
-
)
|
|
409
|
-
);
|
|
410
|
-
Keboola.displayName = "Keboola";
|
|
411
|
-
var Microsoft = react.forwardRef(
|
|
412
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
413
|
-
"svg",
|
|
414
|
-
{
|
|
415
|
-
ref,
|
|
416
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
417
|
-
width: size,
|
|
418
|
-
height: size,
|
|
419
|
-
viewBox: "0 0 21 21",
|
|
420
|
-
fill: "none",
|
|
421
|
-
className: cn("lucide", className),
|
|
422
|
-
...rest,
|
|
423
|
-
children: [
|
|
424
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "10", height: "10", fill: "#F25022" }),
|
|
425
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "0", width: "10", height: "10", fill: "#7FBA00" }),
|
|
426
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "11", width: "10", height: "10", fill: "#00A4EF" }),
|
|
427
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "11", width: "10", height: "10", fill: "#FFB900" }),
|
|
428
|
-
children
|
|
429
|
-
]
|
|
430
|
-
}
|
|
431
|
-
)
|
|
432
|
-
);
|
|
433
|
-
Microsoft.displayName = "Microsoft";
|
|
434
315
|
var variants = classVarianceAuthority.cva(
|
|
435
316
|
[
|
|
436
317
|
"tailwindcss-preflight",
|
|
437
|
-
"tw
|
|
438
|
-
"tw
|
|
318
|
+
"tw:group/button",
|
|
319
|
+
"tw:border-box",
|
|
439
320
|
// layout
|
|
440
|
-
"tw
|
|
441
|
-
"tw
|
|
442
|
-
"tw
|
|
443
|
-
"tw
|
|
444
|
-
"tw
|
|
321
|
+
"tw:relative",
|
|
322
|
+
"tw:flex",
|
|
323
|
+
"tw:items-center",
|
|
324
|
+
"tw:justify-center",
|
|
325
|
+
"tw:gap-2",
|
|
445
326
|
// text — chrome weight/tracking are brand-overridable tokens
|
|
446
|
-
// (`--font-weight-medium` / `--letter-spacing-chrome`)
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
"tw-
|
|
451
|
-
"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",
|
|
452
336
|
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
453
|
-
"tw
|
|
454
|
-
"tw
|
|
455
|
-
"tw
|
|
337
|
+
"tw:rounded",
|
|
338
|
+
"tw:border",
|
|
339
|
+
"tw:border-transparent",
|
|
456
340
|
// styling
|
|
457
|
-
"tw
|
|
458
|
-
"[a]:
|
|
341
|
+
"tw:shadow-none",
|
|
342
|
+
"tw:[a]:cursor-pointer",
|
|
459
343
|
// explicitly set for anchor
|
|
460
|
-
"focus-visible:
|
|
461
|
-
"focus-visible:
|
|
462
|
-
"focus-visible:-
|
|
463
|
-
"focus-visible:
|
|
464
|
-
"focus-visible:
|
|
465
|
-
"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",
|
|
466
350
|
// disabled
|
|
467
|
-
"disabled:
|
|
468
|
-
"disabled:
|
|
351
|
+
"tw:disabled:opacity-40",
|
|
352
|
+
"tw:disabled:cursor-not-allowed",
|
|
469
353
|
// anchor support
|
|
470
|
-
"
|
|
471
|
-
"aria-disabled:
|
|
472
|
-
"aria-disabled:
|
|
473
|
-
"[&_svg]:
|
|
354
|
+
"tw:!no-underline",
|
|
355
|
+
"tw:aria-disabled:opacity-40",
|
|
356
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
357
|
+
"tw:[&_svg]:shrink-0"
|
|
474
358
|
],
|
|
475
359
|
{
|
|
476
360
|
defaultVariants: {
|
|
@@ -480,113 +364,113 @@ var variants = classVarianceAuthority.cva(
|
|
|
480
364
|
},
|
|
481
365
|
variants: {
|
|
482
366
|
block: {
|
|
483
|
-
true: ["tw
|
|
367
|
+
true: ["tw:w-full"]
|
|
484
368
|
},
|
|
485
369
|
variant: {
|
|
486
370
|
primary: [
|
|
487
|
-
"tw
|
|
488
|
-
"tw
|
|
489
|
-
"focus:
|
|
490
|
-
"hover:
|
|
491
|
-
"hover:not-disabled:
|
|
492
|
-
"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",
|
|
493
377
|
// anchor disabled override
|
|
494
|
-
"aria-disabled:!
|
|
378
|
+
"tw:aria-disabled:!bg-primary-500"
|
|
495
379
|
],
|
|
496
380
|
secondary: [
|
|
497
|
-
"tw
|
|
498
|
-
"tw
|
|
499
|
-
"focus:
|
|
500
|
-
"hover:
|
|
501
|
-
"hover:not-disabled:
|
|
502
|
-
"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",
|
|
503
387
|
// anchor disabled override
|
|
504
|
-
"aria-disabled:!
|
|
388
|
+
"tw:aria-disabled:!bg-secondary-500"
|
|
505
389
|
],
|
|
506
390
|
danger: [
|
|
507
|
-
"tw
|
|
508
|
-
"tw
|
|
509
|
-
"focus:
|
|
510
|
-
"hover:
|
|
511
|
-
"hover:not-disabled:
|
|
512
|
-
"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",
|
|
513
397
|
// anchor disabled override
|
|
514
|
-
"aria-disabled:!
|
|
398
|
+
"tw:aria-disabled:!bg-error-500"
|
|
515
399
|
],
|
|
516
400
|
invisible: [
|
|
517
|
-
"tw
|
|
518
|
-
"tw
|
|
519
|
-
"focus:
|
|
520
|
-
"hover:not-disabled:
|
|
521
|
-
"hover:
|
|
522
|
-
"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",
|
|
523
407
|
// contrasting icon on hover/active
|
|
524
|
-
"[&_svg]:
|
|
525
|
-
"
|
|
526
|
-
"
|
|
408
|
+
"tw:[&_svg]:text-neutral-400",
|
|
409
|
+
"tw:hover:not-disabled:[&_svg]:text-secondary-600",
|
|
410
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
527
411
|
// anchor disabled override
|
|
528
|
-
"aria-disabled:!
|
|
412
|
+
"tw:aria-disabled:!bg-transparent"
|
|
529
413
|
],
|
|
530
414
|
outline: [
|
|
531
|
-
"tw
|
|
532
|
-
"tw
|
|
415
|
+
"tw:text-neutral-800",
|
|
416
|
+
"tw:bg-white",
|
|
533
417
|
// border
|
|
534
|
-
"
|
|
535
|
-
"hover:
|
|
536
|
-
"focus:
|
|
537
|
-
"hover:not-disabled:!
|
|
538
|
-
"hover:not-disabled:
|
|
539
|
-
"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",
|
|
540
424
|
// contrasting icon hover, same as invisible
|
|
541
|
-
"[&_svg]:
|
|
542
|
-
"
|
|
543
|
-
"
|
|
425
|
+
"tw:[&_svg]:text-neutral-400",
|
|
426
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
427
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
544
428
|
// anchor disabled override
|
|
545
|
-
"aria-disabled:!
|
|
546
|
-
"aria-disabled:!
|
|
429
|
+
"tw:aria-disabled:!bg-white",
|
|
430
|
+
"tw:aria-disabled:!border-neutral-200"
|
|
547
431
|
],
|
|
548
432
|
inline: [
|
|
549
|
-
"tw
|
|
550
|
-
"tw
|
|
551
|
-
"tw
|
|
552
|
-
"[&_svg]:
|
|
553
|
-
"
|
|
554
|
-
"
|
|
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"
|
|
555
439
|
]
|
|
556
440
|
},
|
|
557
441
|
size: {
|
|
558
442
|
medium: [
|
|
559
|
-
"tw
|
|
560
|
-
"tw
|
|
561
|
-
"tw
|
|
562
|
-
"tw
|
|
563
|
-
'[&_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'
|
|
564
448
|
],
|
|
565
449
|
small: [
|
|
566
|
-
"tw
|
|
567
|
-
"tw
|
|
568
|
-
"tw
|
|
569
|
-
"tw
|
|
570
|
-
'[&_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'
|
|
571
455
|
],
|
|
572
456
|
large: [
|
|
573
|
-
"tw
|
|
574
|
-
"tw
|
|
575
|
-
"tw
|
|
576
|
-
"tw
|
|
577
|
-
'[&_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'
|
|
578
462
|
],
|
|
579
|
-
"icon-lg": ["tw
|
|
580
|
-
icon: ["tw
|
|
581
|
-
"icon-sm": ["tw
|
|
582
|
-
"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'],
|
|
583
467
|
"icon-2xs": [
|
|
584
|
-
"
|
|
585
|
-
"tw
|
|
586
|
-
"tw
|
|
587
|
-
'[&_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'
|
|
588
472
|
],
|
|
589
|
-
"icon-3xs": ["tw
|
|
473
|
+
"icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
|
|
590
474
|
}
|
|
591
475
|
}
|
|
592
476
|
}
|
|
@@ -595,37 +479,37 @@ var argoVariants = classVarianceAuthority.cva(
|
|
|
595
479
|
[
|
|
596
480
|
"tailwindcss-preflight",
|
|
597
481
|
// layout
|
|
598
|
-
"tw
|
|
599
|
-
"tw
|
|
600
|
-
"tw
|
|
601
|
-
"tw
|
|
602
|
-
"tw
|
|
603
|
-
"tw
|
|
482
|
+
"tw:relative",
|
|
483
|
+
"tw:inline-flex",
|
|
484
|
+
"tw:items-center",
|
|
485
|
+
"tw:justify-center",
|
|
486
|
+
"tw:whitespace-nowrap",
|
|
487
|
+
"tw:gap-2",
|
|
604
488
|
// border
|
|
605
|
-
"tw
|
|
606
|
-
"tw
|
|
607
|
-
"tw
|
|
489
|
+
"tw:border",
|
|
490
|
+
"tw:border-transparent",
|
|
491
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
608
492
|
// text
|
|
609
|
-
"tw
|
|
610
|
-
"tw
|
|
493
|
+
"tw:font-medium",
|
|
494
|
+
"tw:select-none",
|
|
611
495
|
// focus visible
|
|
612
|
-
"
|
|
613
|
-
"focus-visible:
|
|
496
|
+
"tw:!outline-hidden",
|
|
497
|
+
"tw:focus-visible:ring-2",
|
|
614
498
|
// disabled
|
|
615
|
-
"disabled:
|
|
616
|
-
"disabled:
|
|
617
|
-
"active:
|
|
618
|
-
"tw
|
|
619
|
-
"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",
|
|
620
504
|
// anchor support
|
|
621
|
-
"
|
|
622
|
-
"aria-disabled:
|
|
623
|
-
"aria-disabled:
|
|
505
|
+
"tw:!no-underline",
|
|
506
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
507
|
+
"tw:aria-disabled:opacity-50",
|
|
624
508
|
// icon
|
|
625
|
-
"tw
|
|
626
|
-
"[&_svg]:
|
|
627
|
-
"[&_svg]:
|
|
628
|
-
"[&_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"
|
|
629
513
|
],
|
|
630
514
|
{
|
|
631
515
|
defaultVariants: {
|
|
@@ -634,77 +518,77 @@ var argoVariants = classVarianceAuthority.cva(
|
|
|
634
518
|
},
|
|
635
519
|
variants: {
|
|
636
520
|
block: {
|
|
637
|
-
true: ["tw
|
|
521
|
+
true: ["tw:w-full"]
|
|
638
522
|
},
|
|
639
523
|
variant: {
|
|
640
524
|
primary: [
|
|
641
|
-
"tw
|
|
642
|
-
"tw
|
|
643
|
-
"[a]:hover:
|
|
644
|
-
"hover:not-disabled:
|
|
645
|
-
"hover:
|
|
646
|
-
"focus:
|
|
647
|
-
"focus-visible:
|
|
648
|
-
"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"
|
|
649
533
|
],
|
|
650
534
|
secondary: [
|
|
651
|
-
"tw
|
|
652
|
-
"tw
|
|
653
|
-
"hover:not-disabled:
|
|
654
|
-
"focus-visible:
|
|
655
|
-
"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"
|
|
656
540
|
],
|
|
657
541
|
// should be called "destructive" by Figma
|
|
658
542
|
danger: [
|
|
659
|
-
"tw
|
|
660
|
-
"tw
|
|
661
|
-
"hover:
|
|
662
|
-
"focus:
|
|
663
|
-
"focus-visible:
|
|
664
|
-
"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"
|
|
665
549
|
],
|
|
666
550
|
outline: [
|
|
667
|
-
"
|
|
668
|
-
"tw
|
|
551
|
+
"tw:!border-input",
|
|
552
|
+
"tw:bg-background",
|
|
669
553
|
// Semantic base text color so the label/icon flips in dark mode
|
|
670
554
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
671
|
-
"tw
|
|
555
|
+
"tw:text-foreground",
|
|
672
556
|
// Hover follows the brand primary (translucent tint), matching the
|
|
673
557
|
// `secondary` variant — not the fixed `accent` blue.
|
|
674
|
-
"hover:not-disabled:
|
|
675
|
-
"hover:not-disabled:
|
|
676
|
-
"hover:active:
|
|
677
|
-
"focus-visible:!
|
|
678
|
-
"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"
|
|
679
563
|
],
|
|
680
564
|
// should be called "ghost" by Figma
|
|
681
565
|
invisible: [
|
|
682
|
-
"tw
|
|
683
|
-
"tw
|
|
684
|
-
"hover:not-disabled:
|
|
685
|
-
"hover:not-disabled:
|
|
686
|
-
"hover:not-disabled:
|
|
687
|
-
"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"
|
|
688
572
|
],
|
|
689
573
|
// should be called "link" by Figma
|
|
690
574
|
inline: [
|
|
691
|
-
"tw
|
|
692
|
-
"tw
|
|
693
|
-
"hover:
|
|
694
|
-
"hover:active:
|
|
695
|
-
"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"
|
|
696
580
|
]
|
|
697
581
|
},
|
|
698
582
|
size: {
|
|
699
583
|
// should be called "default" by Figma
|
|
700
|
-
medium: ["tw
|
|
584
|
+
medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
|
|
701
585
|
// should be called "small" by Figma
|
|
702
|
-
small: ["tw
|
|
586
|
+
small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
|
|
703
587
|
// should be called "large" by Figma
|
|
704
|
-
large: ["tw
|
|
705
|
-
"icon-lg": ["tw
|
|
706
|
-
icon: ["tw
|
|
707
|
-
"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"],
|
|
708
592
|
// unsupported in ARGO, remove when old design is gone
|
|
709
593
|
"icon-xs": [],
|
|
710
594
|
"icon-2xs": [],
|
|
@@ -752,13 +636,13 @@ var Button = ({
|
|
|
752
636
|
onClick: handleClick,
|
|
753
637
|
className: cn(classNames),
|
|
754
638
|
children: [
|
|
755
|
-
isLoading && /* @__PURE__ */ jsxRuntime.jsx(
|
|
639
|
+
isLoading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
|
|
756
640
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
757
641
|
]
|
|
758
642
|
}
|
|
759
643
|
);
|
|
760
644
|
};
|
|
761
|
-
var
|
|
645
|
+
var Clipboard2 = ({
|
|
762
646
|
ref,
|
|
763
647
|
text: textProp,
|
|
764
648
|
children,
|
|
@@ -783,6 +667,7 @@ var Clipboard = ({
|
|
|
783
667
|
}
|
|
784
668
|
};
|
|
785
669
|
const handleOnClick = (event) => {
|
|
670
|
+
setIsTooltipOpen(true);
|
|
786
671
|
if (text && state === "ready") void copy(text);
|
|
787
672
|
onClick?.(event);
|
|
788
673
|
};
|
|
@@ -797,6 +682,7 @@ var Clipboard = ({
|
|
|
797
682
|
return tooltip;
|
|
798
683
|
})();
|
|
799
684
|
const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
|
|
685
|
+
const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
|
|
800
686
|
return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
|
|
801
687
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
802
688
|
Tooltip.Trigger,
|
|
@@ -805,12 +691,12 @@ var Clipboard = ({
|
|
|
805
691
|
asChild,
|
|
806
692
|
keepOpenOnClick: true,
|
|
807
693
|
onClick: handleOnClick,
|
|
808
|
-
className: cn("tw
|
|
694
|
+
className: cn("tw:cursor-pointer", className),
|
|
809
695
|
ref,
|
|
810
696
|
children: children ?? text
|
|
811
697
|
}
|
|
812
698
|
),
|
|
813
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
699
|
+
hasTooltipContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
814
700
|
Tooltip.Content,
|
|
815
701
|
{
|
|
816
702
|
keepOpenOnPointerDownOutside: true,
|
|
@@ -821,7 +707,7 @@ var Clipboard = ({
|
|
|
821
707
|
)
|
|
822
708
|
] });
|
|
823
709
|
};
|
|
824
|
-
var DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(
|
|
710
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, {});
|
|
825
711
|
var DEFAULT_ARIA_LABEL = "Copy";
|
|
826
712
|
var ClipboardButton = ({
|
|
827
713
|
// clipboard props
|
|
@@ -838,7 +724,7 @@ var ClipboardButton = ({
|
|
|
838
724
|
const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
|
|
839
725
|
const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
|
|
840
726
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
841
|
-
|
|
727
|
+
Clipboard2,
|
|
842
728
|
{
|
|
843
729
|
asChild: true,
|
|
844
730
|
tooltip,
|
|
@@ -854,13 +740,198 @@ var ClipboardButton = ({
|
|
|
854
740
|
};
|
|
855
741
|
var ButtonToolbar = ({ value, children }) => {
|
|
856
742
|
if (!value && !children) return null;
|
|
857
|
-
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: [
|
|
858
744
|
!!value && /* @__PURE__ */ jsxRuntime.jsx(ClipboardButton, { size: "icon-sm", variant: "invisible", text: value }),
|
|
859
745
|
children
|
|
860
746
|
] });
|
|
861
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
|
+
};
|
|
862
933
|
var resolveToken = (token, fallbackChannels, alpha) => {
|
|
863
|
-
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(
|
|
934
|
+
const channels = typeof document === "undefined" ? fallbackChannels : getComputedStyle(document.documentElement).getPropertyValue(`--${token}`).trim() || fallbackChannels;
|
|
864
935
|
return alpha === void 0 ? `rgb(${channels})` : `rgb(${channels} / ${alpha})`;
|
|
865
936
|
};
|
|
866
937
|
var SSR_SIGNAL = "ssr";
|
|
@@ -880,12 +951,38 @@ var subscribeThemeSignal = (onChange) => {
|
|
|
880
951
|
return () => observer.disconnect();
|
|
881
952
|
};
|
|
882
953
|
var useThemeSignal = () => react.useSyncExternalStore(subscribeThemeSignal, readThemeSignal, () => SSR_SIGNAL);
|
|
883
|
-
var
|
|
954
|
+
var themeCache = /* @__PURE__ */ new Map();
|
|
955
|
+
var useThemedExtension = (cacheKey, build) => {
|
|
884
956
|
const themeSignal = useThemeSignal();
|
|
885
|
-
|
|
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;
|
|
886
964
|
};
|
|
887
965
|
|
|
888
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);
|
|
889
986
|
var buildBaseThemeStyles = () => ({
|
|
890
987
|
"*": { lineHeight: "20px" },
|
|
891
988
|
"*::selection": {
|
|
@@ -926,7 +1023,27 @@ var buildBaseThemeStyles = () => ({
|
|
|
926
1023
|
".cm-changeGutter": { position: "absolute", zIndex: -1, width: "100%", paddingLeft: 0 },
|
|
927
1024
|
'&[class*="cm-merge-"] .cm-changedLine,&[class*="cm-merge-"] .cm-line, &[class*="cm-merge-"] .cm-deletedChunk': { paddingLeft: 0 }
|
|
928
1025
|
});
|
|
929
|
-
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
|
+
});
|
|
930
1047
|
var buildCustomTheme = () => codemirrorThemeGithub.githubLightInit({
|
|
931
1048
|
settings: {
|
|
932
1049
|
fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,
|
|
@@ -941,10 +1058,19 @@ var buildCustomTheme = () => codemirrorThemeGithub.githubLightInit({
|
|
|
941
1058
|
});
|
|
942
1059
|
var getLanguageMode = (mode) => {
|
|
943
1060
|
switch (mode) {
|
|
1061
|
+
case void 0:
|
|
1062
|
+
case "application/json":
|
|
1063
|
+
return langJson.json();
|
|
944
1064
|
case "text/x-python":
|
|
945
1065
|
return langPython.python();
|
|
946
1066
|
case "text/x-sql":
|
|
947
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 });
|
|
948
1074
|
case "text/x-sfsql":
|
|
949
1075
|
return language.StreamLanguage.define(codemirrorLangSfsql.sfsql);
|
|
950
1076
|
case "text/x-plsql":
|
|
@@ -953,28 +1079,32 @@ var getLanguageMode = (mode) => {
|
|
|
953
1079
|
return language.StreamLanguage.define(r.r);
|
|
954
1080
|
case "text/x-sh":
|
|
955
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);
|
|
956
1088
|
case "text/javascript":
|
|
957
1089
|
return langJavascript.javascript({ jsx: true });
|
|
958
1090
|
case "text/typescript":
|
|
959
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.
|
|
960
1095
|
default:
|
|
961
|
-
return
|
|
1096
|
+
return [];
|
|
962
1097
|
}
|
|
963
1098
|
};
|
|
964
|
-
var
|
|
965
|
-
var
|
|
966
|
-
|
|
967
|
-
className,
|
|
968
|
-
children,
|
|
969
|
-
separator,
|
|
970
|
-
...props
|
|
971
|
-
}) => {
|
|
1099
|
+
var shouldLintJson = (mode, readOnly) => mode === "application/json" && !readOnly;
|
|
1100
|
+
var KbdSeparator = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, className: cn("tw:text-xs tw:text-muted-foreground", className) });
|
|
1101
|
+
var KbdGroup = ({ ref, className, children, separator, ...props }) => {
|
|
972
1102
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
973
1103
|
"kbd",
|
|
974
1104
|
{
|
|
975
1105
|
...props,
|
|
976
1106
|
ref,
|
|
977
|
-
className: cn("tw
|
|
1107
|
+
className: cn("tw:inline-flex", "tw:items-center", "tw:gap-1", className),
|
|
978
1108
|
children: separator ? (
|
|
979
1109
|
// oxlint-disable-next-line react-x/no-children-to-array
|
|
980
1110
|
react.Children.toArray(children).map((child, index) => (
|
|
@@ -992,22 +1122,22 @@ var kbdVariants = classVarianceAuthority.cva(
|
|
|
992
1122
|
[
|
|
993
1123
|
"tailwindcss-preflight",
|
|
994
1124
|
// style
|
|
995
|
-
"tw
|
|
996
|
-
"tw
|
|
997
|
-
"tw
|
|
998
|
-
"tw
|
|
1125
|
+
"tw:pointer-events-none",
|
|
1126
|
+
"tw:w-fit",
|
|
1127
|
+
"tw:h-5",
|
|
1128
|
+
"tw:min-w-5",
|
|
999
1129
|
// layout
|
|
1000
|
-
"tw
|
|
1001
|
-
"tw
|
|
1002
|
-
"tw
|
|
1003
|
-
"tw
|
|
1004
|
-
"tw
|
|
1130
|
+
"tw:inline-flex",
|
|
1131
|
+
"tw:items-center",
|
|
1132
|
+
"tw:justify-center",
|
|
1133
|
+
"tw:gap-1",
|
|
1134
|
+
"tw:shrink-0",
|
|
1005
1135
|
// spacing
|
|
1006
|
-
"tw
|
|
1007
|
-
'[&_svg:not([class*="size-"])]:
|
|
1008
|
-
"tw
|
|
1009
|
-
"tw
|
|
1010
|
-
"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"
|
|
1011
1141
|
],
|
|
1012
1142
|
{
|
|
1013
1143
|
defaultVariants: {
|
|
@@ -1015,8 +1145,8 @@ var kbdVariants = classVarianceAuthority.cva(
|
|
|
1015
1145
|
},
|
|
1016
1146
|
variants: {
|
|
1017
1147
|
variant: {
|
|
1018
|
-
default: "tw
|
|
1019
|
-
primary: "tw
|
|
1148
|
+
default: "tw:bg-muted tw:text-muted-foreground",
|
|
1149
|
+
primary: "tw:bg-white/20 tw:text-white"
|
|
1020
1150
|
}
|
|
1021
1151
|
}
|
|
1022
1152
|
}
|
|
@@ -1039,6 +1169,7 @@ var CodeEditor = ({
|
|
|
1039
1169
|
onChange,
|
|
1040
1170
|
mode = "application/json",
|
|
1041
1171
|
placeholder = "",
|
|
1172
|
+
ariaLabel,
|
|
1042
1173
|
readOnly = false,
|
|
1043
1174
|
autocompletions = emptyArray,
|
|
1044
1175
|
extraKeys = emptyObject,
|
|
@@ -1047,19 +1178,23 @@ var CodeEditor = ({
|
|
|
1047
1178
|
withLineNumbers = true,
|
|
1048
1179
|
withLineWrapping = true,
|
|
1049
1180
|
withCollapseUnchanged = false,
|
|
1050
|
-
withCopyButton =
|
|
1181
|
+
withCopyButton = false,
|
|
1051
1182
|
completeAny = false,
|
|
1052
1183
|
help = null,
|
|
1053
1184
|
helpPostfix = null,
|
|
1054
1185
|
renderAdditionalButtons,
|
|
1055
1186
|
className
|
|
1056
1187
|
}) => {
|
|
1057
|
-
const
|
|
1058
|
-
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
|
+
);
|
|
1059
1194
|
const commonExtensions = react.useMemo(() => {
|
|
1060
1195
|
return [
|
|
1061
1196
|
getLanguageMode(mode),
|
|
1062
|
-
mode
|
|
1197
|
+
shouldLintJson(mode, readOnly) ? lint.linter(langJson.jsonParseLinter()) : [],
|
|
1063
1198
|
withLineWrapping ? view.EditorView.lineWrapping : [],
|
|
1064
1199
|
CodeMirror.EditorState.languageData.of(() => [
|
|
1065
1200
|
{ autocomplete: completeAny ? autocomplete.completeAnyWord : autocompletions }
|
|
@@ -1074,10 +1209,20 @@ var CodeEditor = ({
|
|
|
1074
1209
|
}
|
|
1075
1210
|
}))
|
|
1076
1211
|
),
|
|
1077
|
-
autocomplete.autocompletion({ activateOnTyping: completeAny }),
|
|
1212
|
+
readOnly ? [] : autocomplete.autocompletion({ activateOnTyping: completeAny }),
|
|
1213
|
+
ariaLabel ? view.EditorView.contentAttributes.of({ "aria-label": ariaLabel }) : [],
|
|
1078
1214
|
baseTheme
|
|
1079
|
-
]
|
|
1080
|
-
}, [
|
|
1215
|
+
];
|
|
1216
|
+
}, [
|
|
1217
|
+
autocompletions,
|
|
1218
|
+
completeAny,
|
|
1219
|
+
extraKeys,
|
|
1220
|
+
mode,
|
|
1221
|
+
readOnly,
|
|
1222
|
+
withLineWrapping,
|
|
1223
|
+
baseTheme,
|
|
1224
|
+
ariaLabel
|
|
1225
|
+
]);
|
|
1081
1226
|
const extensions = react.useMemo(() => {
|
|
1082
1227
|
return [
|
|
1083
1228
|
...commonExtensions,
|
|
@@ -1094,18 +1239,20 @@ var CodeEditor = ({
|
|
|
1094
1239
|
}, [commonExtensions, placeholder, readOnly, previousValue, withCollapseUnchanged]);
|
|
1095
1240
|
const config = react.useMemo(() => {
|
|
1096
1241
|
return {
|
|
1097
|
-
...
|
|
1242
|
+
...buildBasicSetup(readOnly),
|
|
1098
1243
|
lineNumbers: withLineNumbers
|
|
1099
1244
|
};
|
|
1100
|
-
}, [withLineNumbers]);
|
|
1245
|
+
}, [withLineNumbers, readOnly]);
|
|
1246
|
+
const additionalButtons = renderAdditionalButtons?.(value);
|
|
1247
|
+
const hasToolbar = withCopyButton && !!value || !!additionalButtons;
|
|
1101
1248
|
return (
|
|
1102
1249
|
// oxlint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
1103
1250
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1104
1251
|
"div",
|
|
1105
1252
|
{
|
|
1106
1253
|
className: cn(
|
|
1107
|
-
"tw
|
|
1108
|
-
{ "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 },
|
|
1109
1256
|
className
|
|
1110
1257
|
),
|
|
1111
1258
|
onKeyDown: (event) => {
|
|
@@ -1114,19 +1261,19 @@ var CodeEditor = ({
|
|
|
1114
1261
|
}
|
|
1115
1262
|
},
|
|
1116
1263
|
children: [
|
|
1117
|
-
|
|
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 }) }) }),
|
|
1118
1265
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1119
1266
|
CodeMirror__default.default,
|
|
1120
1267
|
{
|
|
1121
1268
|
theme: customTheme,
|
|
1122
1269
|
value,
|
|
1123
|
-
onChange,
|
|
1270
|
+
onChange: handleChange,
|
|
1124
1271
|
extensions,
|
|
1125
1272
|
autoFocus: withAutofocus,
|
|
1126
1273
|
basicSetup: config
|
|
1127
1274
|
}
|
|
1128
1275
|
),
|
|
1129
|
-
!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: [
|
|
1130
1277
|
help,
|
|
1131
1278
|
withToggleCommentHint ? /* @__PURE__ */ jsxRuntime.jsx(ToggleComponentHelp, {}) : null,
|
|
1132
1279
|
helpPostfix
|
|
@@ -1546,8 +1693,7 @@ function searchExtension() {
|
|
|
1546
1693
|
function updateSearch(view, query, selectedMatchIndex) {
|
|
1547
1694
|
view.dispatch({ effects: setSearchEffect.of({ query, selectedMatchIndex }) });
|
|
1548
1695
|
}
|
|
1549
|
-
var
|
|
1550
|
-
drawSelection: false,
|
|
1696
|
+
var OWN_KEYMAPS = {
|
|
1551
1697
|
defaultKeymap: false,
|
|
1552
1698
|
completionKeymap: false,
|
|
1553
1699
|
searchKeymap: false
|
|
@@ -1612,8 +1758,11 @@ var SqlEditor = ({
|
|
|
1612
1758
|
dialect
|
|
1613
1759
|
}) => {
|
|
1614
1760
|
const editorRef = react.useRef(null);
|
|
1615
|
-
const customTheme = useThemedExtension(buildCustomTheme);
|
|
1616
|
-
const themeExtension = useThemedExtension(
|
|
1761
|
+
const customTheme = useThemedExtension("editor:syntax", buildCustomTheme);
|
|
1762
|
+
const themeExtension = useThemedExtension(
|
|
1763
|
+
"sql-editor:chrome",
|
|
1764
|
+
() => CodeMirror.EditorView.theme(buildTheme())
|
|
1765
|
+
);
|
|
1617
1766
|
const extensions = react.useMemo(() => {
|
|
1618
1767
|
const baseKeymap = [...commands.defaultKeymap, ...CUSTOM_KEYMAP];
|
|
1619
1768
|
return [
|
|
@@ -1639,8 +1788,8 @@ var SqlEditor = ({
|
|
|
1639
1788
|
themeExtension
|
|
1640
1789
|
]);
|
|
1641
1790
|
const defaultSetup = react.useMemo(() => {
|
|
1642
|
-
return { ...
|
|
1643
|
-
}, [lineNumbers]);
|
|
1791
|
+
return { ...buildBasicSetup(readOnly), ...OWN_KEYMAPS, lineNumbers };
|
|
1792
|
+
}, [readOnly, lineNumbers]);
|
|
1644
1793
|
react.useEffect(() => {
|
|
1645
1794
|
if (editorRef.current?.view) {
|
|
1646
1795
|
updateHighlighting(editorRef.current.view, highlightLines);
|
|
@@ -1706,25 +1855,25 @@ var LINE_HEIGHT_PX = 20;
|
|
|
1706
1855
|
var PANE_HEADER_HEIGHT_PX = 58;
|
|
1707
1856
|
var AcceptButton = ({ side, onAccept }) => {
|
|
1708
1857
|
const label = `Accept ${side === "left" ? "production" : "branch"} version`;
|
|
1709
|
-
const Chevron = side === "left" ?
|
|
1710
|
-
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" }) });
|
|
1711
1860
|
};
|
|
1712
1861
|
var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1713
1862
|
"div",
|
|
1714
1863
|
{
|
|
1715
1864
|
className: cn(
|
|
1716
|
-
"tw
|
|
1717
|
-
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"
|
|
1718
1867
|
),
|
|
1719
1868
|
children: conflicts.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1720
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw
|
|
1721
|
-
/* @__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) => {
|
|
1722
1871
|
const topLine = side === "left" ? conflict.oldStartLine : conflict.newStartLine;
|
|
1723
1872
|
const topOffset = (topLine - 1) * LINE_HEIGHT_PX - 2;
|
|
1724
1873
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1725
1874
|
"div",
|
|
1726
1875
|
{
|
|
1727
|
-
className: "tw
|
|
1876
|
+
className: "tw:absolute tw:inset-x-0 tw:flex tw:flex-col tw:items-center tw:gap-0.5",
|
|
1728
1877
|
style: { top: `${topOffset}px` },
|
|
1729
1878
|
children: [
|
|
1730
1879
|
/* @__PURE__ */ jsxRuntime.jsx(AcceptButton, { side, onAccept: () => onAccept(conflict) }),
|
|
@@ -1736,7 +1885,7 @@ var AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }) => /
|
|
|
1736
1885
|
size: "icon-sm",
|
|
1737
1886
|
title: "Dismiss",
|
|
1738
1887
|
"aria-label": `Dismiss ${side === "left" ? "production" : "branch"} change`,
|
|
1739
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1888
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw:size-4" })
|
|
1740
1889
|
}
|
|
1741
1890
|
)
|
|
1742
1891
|
]
|
|
@@ -1833,13 +1982,15 @@ var MergePane = ({
|
|
|
1833
1982
|
deleted = false
|
|
1834
1983
|
}) => {
|
|
1835
1984
|
const editorRef = react.useRef(null);
|
|
1985
|
+
const handleChange = useStableCallback((next) => onChange?.(next));
|
|
1836
1986
|
const themeExtension = useThemedExtension(
|
|
1987
|
+
`merge-pane:${deleted}`,
|
|
1837
1988
|
() => view.EditorView.theme({
|
|
1838
1989
|
"&.cm-editor": {
|
|
1839
1990
|
height: "100%",
|
|
1840
1991
|
backgroundColor: deleted ? colors__default.default.error[100] : resolveToken("background", "249 250 251"),
|
|
1841
1992
|
// Pair the token-driven surface with a token-driven text color so line
|
|
1842
|
-
// content stays readable when the pane's `--
|
|
1993
|
+
// content stays readable when the pane's `--background` goes dark.
|
|
1843
1994
|
// The deleted pane keeps default dark text on its fixed light-red wash.
|
|
1844
1995
|
...deleted ? {} : { color: resolveToken("foreground", "30 41 59") },
|
|
1845
1996
|
outline: "none"
|
|
@@ -1850,10 +2001,13 @@ var MergePane = ({
|
|
|
1850
2001
|
},
|
|
1851
2002
|
"*": { lineHeight: `${LINE_HEIGHT_PX}px` },
|
|
1852
2003
|
".cm-lineNumbers .cm-gutterElement": { padding: "0 0 0 25px" }
|
|
1853
|
-
})
|
|
1854
|
-
[deleted]
|
|
2004
|
+
})
|
|
1855
2005
|
);
|
|
1856
2006
|
const diffHighlightExtension = react.useMemo(() => createDiffHighlightExtension(), []);
|
|
2007
|
+
const basicSetup = react.useMemo(
|
|
2008
|
+
() => ({ ...buildBasicSetup(readOnly), lineNumbers: true }),
|
|
2009
|
+
[readOnly]
|
|
2010
|
+
);
|
|
1857
2011
|
const extensions = react.useMemo(
|
|
1858
2012
|
() => [
|
|
1859
2013
|
diffHighlightExtension,
|
|
@@ -1903,33 +2057,33 @@ var MergePane = ({
|
|
|
1903
2057
|
"div",
|
|
1904
2058
|
{
|
|
1905
2059
|
className: cn(
|
|
1906
|
-
"tw
|
|
2060
|
+
"tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:overflow-hidden",
|
|
1907
2061
|
className,
|
|
1908
|
-
deleted && "tw
|
|
2062
|
+
deleted && "tw:border-error-300"
|
|
1909
2063
|
),
|
|
1910
2064
|
children: [
|
|
1911
2065
|
header && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1912
2066
|
"div",
|
|
1913
2067
|
{
|
|
1914
2068
|
className: cn(
|
|
1915
|
-
"tw
|
|
1916
|
-
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",
|
|
1917
2071
|
headerClassName
|
|
1918
2072
|
),
|
|
1919
2073
|
children: header
|
|
1920
2074
|
}
|
|
1921
2075
|
),
|
|
1922
|
-
/* @__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(
|
|
1923
2077
|
CodeMirror__default.default,
|
|
1924
2078
|
{
|
|
1925
2079
|
ref: editorRef,
|
|
1926
2080
|
height: "100%",
|
|
1927
2081
|
value,
|
|
1928
|
-
onChange,
|
|
2082
|
+
onChange: handleChange,
|
|
1929
2083
|
extensions,
|
|
1930
2084
|
readOnly,
|
|
1931
2085
|
onCreateEditor: handleCreateEditor,
|
|
1932
|
-
basicSetup
|
|
2086
|
+
basicSetup
|
|
1933
2087
|
}
|
|
1934
2088
|
) })
|
|
1935
2089
|
]
|
|
@@ -2029,7 +2183,7 @@ var MergeEditor = ({
|
|
|
2029
2183
|
"div",
|
|
2030
2184
|
{
|
|
2031
2185
|
className: cn(
|
|
2032
|
-
"tw
|
|
2186
|
+
"tw:flex tw:h-full tw:min-h-0 tw:overflow-hidden tw:bg-background tw:gap-3",
|
|
2033
2187
|
className
|
|
2034
2188
|
),
|
|
2035
2189
|
children: [
|
|
@@ -2041,7 +2195,7 @@ var MergeEditor = ({
|
|
|
2041
2195
|
lineClassification: leftClassification,
|
|
2042
2196
|
readOnly: true,
|
|
2043
2197
|
header: leftHeader,
|
|
2044
|
-
className: "tw
|
|
2198
|
+
className: "tw:rounded-r-lg tw:border tw:border-border",
|
|
2045
2199
|
onScrollDOMReady: registerScroller(0),
|
|
2046
2200
|
deleted: leftDeleted
|
|
2047
2201
|
}
|
|
@@ -2065,7 +2219,7 @@ var MergeEditor = ({
|
|
|
2065
2219
|
onChange: handleMergeChange,
|
|
2066
2220
|
header: middleHeader,
|
|
2067
2221
|
headerClassName: middleHeaderClassName,
|
|
2068
|
-
className: cn("tw
|
|
2222
|
+
className: cn("tw:border tw:border-border tw:rounded-lg", middleClassName),
|
|
2069
2223
|
onScrollDOMReady: registerScroller(1)
|
|
2070
2224
|
}
|
|
2071
2225
|
),
|
|
@@ -2087,7 +2241,7 @@ var MergeEditor = ({
|
|
|
2087
2241
|
lineClassification: rightClassification,
|
|
2088
2242
|
readOnly: true,
|
|
2089
2243
|
header: rightHeader,
|
|
2090
|
-
className: "tw
|
|
2244
|
+
className: "tw:rounded-l-lg tw:border tw:border-border",
|
|
2091
2245
|
onScrollDOMReady: registerScroller(2),
|
|
2092
2246
|
deleted: rightDeleted
|
|
2093
2247
|
}
|
|
@@ -2098,7 +2252,9 @@ var MergeEditor = ({
|
|
|
2098
2252
|
};
|
|
2099
2253
|
|
|
2100
2254
|
exports.CodeEditor = CodeEditor;
|
|
2255
|
+
exports.LANGUAGE_MODES = LANGUAGE_MODES;
|
|
2101
2256
|
exports.MergeEditor = MergeEditor;
|
|
2102
2257
|
exports.SqlEditor = SqlEditor;
|
|
2258
|
+
exports.isLanguageMode = isLanguageMode;
|
|
2103
2259
|
//# sourceMappingURL=editors.cjs.map
|
|
2104
2260
|
//# sourceMappingURL=editors.cjs.map
|