@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/mermaid.js
CHANGED
|
@@ -1,35 +1,20 @@
|
|
|
1
|
-
import { createContext,
|
|
1
|
+
import { createContext, useId, useState, useRef, useEffect, useMemo, useCallback, use } from 'react';
|
|
2
2
|
import { renderMermaidSVG } from 'beautiful-mermaid';
|
|
3
3
|
import colors from '@keboola/tailwind-config/colors';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import DOMPurify from 'dompurify';
|
|
6
|
+
import { Root, Slottable } from '@radix-ui/react-slot';
|
|
7
|
+
import { Minimize2, Maximize2, Loader2, Copy } from 'lucide-react';
|
|
4
8
|
import { clsx } from 'clsx';
|
|
5
9
|
import { extendTailwindMerge } from 'tailwind-merge';
|
|
6
10
|
import { Root as Root$1, Trigger, Portal, Content } from '@radix-ui/react-tooltip';
|
|
7
11
|
import { cva } from 'class-variance-authority';
|
|
8
12
|
import { keboolaLegacySidebar, keboolaLegacyTopnav } from '@keboola/brand-registry';
|
|
9
|
-
import {
|
|
10
|
-
import DOMPurify from 'dompurify';
|
|
11
|
-
import { Root, Slottable } from '@radix-ui/react-slot';
|
|
12
|
-
import * as lucide_react_star from 'lucide-react';
|
|
13
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
16
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
17
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
18
|
-
var __export = (target, all) => {
|
|
19
|
-
for (var name in all)
|
|
20
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
21
|
-
};
|
|
22
|
-
var __copyProps = (to, from, except, desc) => {
|
|
23
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
24
|
-
for (let key of __getOwnPropNames(from))
|
|
25
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
26
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
27
|
-
}
|
|
28
|
-
return to;
|
|
29
|
-
};
|
|
30
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
|
|
15
|
+
// src/blocks/MermaidDiagram/MermaidDiagram.tsx
|
|
31
16
|
var twMerge = extendTailwindMerge({
|
|
32
|
-
prefix: "tw
|
|
17
|
+
prefix: "tw"
|
|
33
18
|
});
|
|
34
19
|
var cn = (...classes) => twMerge(clsx(...classes));
|
|
35
20
|
|
|
@@ -79,39 +64,39 @@ var useArgoDesign = () => use(ArgoDesignContext);
|
|
|
79
64
|
var tooltipVariants = cva(
|
|
80
65
|
[
|
|
81
66
|
"tailwindcss-preflight",
|
|
82
|
-
"tw
|
|
83
|
-
"tw
|
|
84
|
-
"tw
|
|
85
|
-
"tw
|
|
86
|
-
"tw
|
|
67
|
+
"tw:inline-block",
|
|
68
|
+
"tw:break-anywhere",
|
|
69
|
+
"tw:max-h-96",
|
|
70
|
+
"tw:overflow-y-auto",
|
|
71
|
+
"tw:z-[1060]",
|
|
87
72
|
// legacy (dark) chrome — default
|
|
88
|
-
"tw
|
|
89
|
-
"tw
|
|
90
|
-
"tw
|
|
73
|
+
"tw:rounded",
|
|
74
|
+
"tw:bg-neutral-800",
|
|
75
|
+
"tw:text-white",
|
|
91
76
|
// argo chrome overrides — semantic floating-panel tokens
|
|
92
|
-
"data-[argo=true]:
|
|
93
|
-
"data-[argo=true]:
|
|
94
|
-
"data-[argo=true]:
|
|
95
|
-
"data-[argo=true]:
|
|
96
|
-
"data-[argo=true]:
|
|
97
|
-
"data-[argo=true]:
|
|
98
|
-
"data-[argo=true]:
|
|
77
|
+
"tw:data-[argo=true]:rounded-2xl",
|
|
78
|
+
"tw:data-[argo=true]:border",
|
|
79
|
+
"tw:data-[argo=true]:border-solid",
|
|
80
|
+
"tw:data-[argo=true]:border-border",
|
|
81
|
+
"tw:data-[argo=true]:bg-popover",
|
|
82
|
+
"tw:data-[argo=true]:text-popover-foreground",
|
|
83
|
+
"tw:data-[argo=true]:shadow-md",
|
|
99
84
|
// argo open animation
|
|
100
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
101
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
102
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
103
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
104
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
105
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
85
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:animate-in",
|
|
86
|
+
"tw:data-[argo=true]:data-[state=instant-open]:animate-in",
|
|
87
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:fade-in-0",
|
|
88
|
+
"tw:data-[argo=true]:data-[state=instant-open]:fade-in-0",
|
|
89
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:zoom-in-95",
|
|
90
|
+
"tw:data-[argo=true]:data-[state=instant-open]:zoom-in-95",
|
|
106
91
|
// argo closed animation
|
|
107
|
-
"data-[argo=true]:data-[state=closed]:
|
|
108
|
-
"data-[argo=true]:data-[state=closed]:
|
|
109
|
-
"data-[argo=true]:data-[state=closed]:
|
|
92
|
+
"tw:data-[argo=true]:data-[state=closed]:animate-out",
|
|
93
|
+
"tw:data-[argo=true]:data-[state=closed]:fade-out-0",
|
|
94
|
+
"tw:data-[argo=true]:data-[state=closed]:zoom-out-95",
|
|
110
95
|
// argo position animation
|
|
111
|
-
"data-[argo=true]:data-[side=bottom]:
|
|
112
|
-
"data-[argo=true]:data-[side=left]:
|
|
113
|
-
"data-[argo=true]:data-[side=right]:
|
|
114
|
-
"data-[argo=true]:data-[side=top]:
|
|
96
|
+
"tw:data-[argo=true]:data-[side=bottom]:slide-in-from-top-2",
|
|
97
|
+
"tw:data-[argo=true]:data-[side=left]:slide-in-from-right-2",
|
|
98
|
+
"tw:data-[argo=true]:data-[side=right]:slide-in-from-left-2",
|
|
99
|
+
"tw:data-[argo=true]:data-[side=top]:slide-in-from-bottom-2"
|
|
115
100
|
],
|
|
116
101
|
{
|
|
117
102
|
defaultVariants: {
|
|
@@ -120,22 +105,26 @@ var tooltipVariants = cva(
|
|
|
120
105
|
variants: {
|
|
121
106
|
variant: {
|
|
122
107
|
action: [
|
|
123
|
-
"tw
|
|
124
|
-
"tw
|
|
125
|
-
"tw
|
|
126
|
-
"tw
|
|
127
|
-
"tw
|
|
128
|
-
"tw
|
|
129
|
-
|
|
130
|
-
|
|
108
|
+
"tw:max-w-fit",
|
|
109
|
+
"tw:px-3",
|
|
110
|
+
"tw:py-2",
|
|
111
|
+
"tw:text-center",
|
|
112
|
+
"tw:text-xs",
|
|
113
|
+
"tw:font-medium",
|
|
114
|
+
// Legacy chrome uppercases the action tooltip; the Keboola V2 brand
|
|
115
|
+
// (`data-brand="keboola"`) renders it in standard case instead.
|
|
116
|
+
"tw:uppercase",
|
|
117
|
+
"tw:tracking-wider",
|
|
118
|
+
"tw:[[data-brand=keboola]_&]:normal-case",
|
|
119
|
+
"tw:[[data-brand=keboola]_&]:tracking-normal"
|
|
131
120
|
],
|
|
132
121
|
explanatory: [
|
|
133
|
-
"tw
|
|
134
|
-
"tw
|
|
135
|
-
"tw
|
|
136
|
-
"tw
|
|
137
|
-
"tw
|
|
138
|
-
"tw
|
|
122
|
+
"tw:max-w-80",
|
|
123
|
+
"tw:px-4",
|
|
124
|
+
"tw:py-3",
|
|
125
|
+
"tw:text-left",
|
|
126
|
+
"tw:text-sm",
|
|
127
|
+
"tw:font-normal"
|
|
139
128
|
]
|
|
140
129
|
}
|
|
141
130
|
}
|
|
@@ -209,8 +198,8 @@ var TooltipTrigger = ({
|
|
|
209
198
|
// (merged in via Slot) activates Tailwind's preflight inside the
|
|
210
199
|
// span, which sets `svg { display: block }` — without an inline-flex
|
|
211
200
|
// container that would stack any bare Lucide icon onto its own
|
|
212
|
-
// line. `tw
|
|
213
|
-
/* @__PURE__ */ jsx("span", { className: "tw
|
|
201
|
+
// line. `tw:inline-flex tw:items-center` keeps icon + text aligned.
|
|
202
|
+
/* @__PURE__ */ jsx("span", { className: "tw:inline-flex tw:items-center", children })
|
|
214
203
|
)
|
|
215
204
|
}
|
|
216
205
|
);
|
|
@@ -225,6 +214,7 @@ var Tooltip = ({
|
|
|
225
214
|
placement = "right",
|
|
226
215
|
forceHide = false,
|
|
227
216
|
forceShow = false,
|
|
217
|
+
delayDuration,
|
|
228
218
|
// trigger props
|
|
229
219
|
triggerAsChild = false
|
|
230
220
|
}) => {
|
|
@@ -244,6 +234,7 @@ var Tooltip = ({
|
|
|
244
234
|
{
|
|
245
235
|
open: !!tooltip && (open || forceShow) && !forceHide,
|
|
246
236
|
onOpenChange: setOpen,
|
|
237
|
+
delayDuration,
|
|
247
238
|
disableHoverableContent: isActionVariant,
|
|
248
239
|
children: [
|
|
249
240
|
/* @__PURE__ */ jsx(
|
|
@@ -272,184 +263,49 @@ var Tooltip = ({
|
|
|
272
263
|
Tooltip.Root = TooltipRoot;
|
|
273
264
|
Tooltip.Content = TooltipContent;
|
|
274
265
|
Tooltip.Trigger = TooltipTrigger;
|
|
275
|
-
var HEIGHT_CLASS_NAME = {
|
|
276
|
-
xxs: "tw-h-3 tw-rounded",
|
|
277
|
-
xs: "tw-h-4 tw-rounded",
|
|
278
|
-
sm: "tw-h-5 tw-rounded",
|
|
279
|
-
md: "tw-h-6 tw-rounded-md",
|
|
280
|
-
lg: "tw-h-8 tw-rounded-lg",
|
|
281
|
-
xl: "tw-h-10 tw-rounded-lg",
|
|
282
|
-
"2xl": "tw-h-12 tw-rounded-lg"
|
|
283
|
-
};
|
|
284
|
-
var ANIMATION_CLASS_NAME = cn(
|
|
285
|
-
// base styles
|
|
286
|
-
"tw-relative",
|
|
287
|
-
"tw-overflow-hidden",
|
|
288
|
-
"tw-pointer-events-none",
|
|
289
|
-
"tw-bg-skeleton",
|
|
290
|
-
// before
|
|
291
|
-
'before:tw-content-[""]',
|
|
292
|
-
"before:tw-opacity-100",
|
|
293
|
-
"before:tw-absolute",
|
|
294
|
-
"before:tw-inset-0",
|
|
295
|
-
"before:-tw-translate-x-full",
|
|
296
|
-
"before:tw-animate-[shimmer_2s_infinite]",
|
|
297
|
-
"before:tw-bg-gradient-to-r",
|
|
298
|
-
"before:tw-from-transparent",
|
|
299
|
-
"before:tw-to-transparent",
|
|
300
|
-
"before:tw-via-white/40"
|
|
301
|
-
);
|
|
302
|
-
var Skeleton = ({ height = "md", className, count = 1 }) => {
|
|
303
|
-
const prefixId = useId();
|
|
304
|
-
const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);
|
|
305
|
-
return /* @__PURE__ */ jsx(Fragment, { children: keys.map((key) => /* @__PURE__ */ jsx(
|
|
306
|
-
"div",
|
|
307
|
-
{
|
|
308
|
-
"data-skeleton": "true",
|
|
309
|
-
className: cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)
|
|
310
|
-
},
|
|
311
|
-
key
|
|
312
|
-
)) });
|
|
313
|
-
};
|
|
314
|
-
|
|
315
|
-
// src/icons/index.ts
|
|
316
|
-
var icons_exports = {};
|
|
317
|
-
__export(icons_exports, {
|
|
318
|
-
Google: () => Google,
|
|
319
|
-
Keboola: () => Keboola,
|
|
320
|
-
Microsoft: () => Microsoft
|
|
321
|
-
});
|
|
322
|
-
__reExport(icons_exports, lucide_react_star);
|
|
323
|
-
var Google = forwardRef(
|
|
324
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
325
|
-
"svg",
|
|
326
|
-
{
|
|
327
|
-
ref,
|
|
328
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
329
|
-
width: size,
|
|
330
|
-
height: size,
|
|
331
|
-
viewBox: "12 10 20 20",
|
|
332
|
-
fill: "none",
|
|
333
|
-
className: cn("lucide", className),
|
|
334
|
-
...rest,
|
|
335
|
-
children: [
|
|
336
|
-
/* @__PURE__ */ jsx(
|
|
337
|
-
"path",
|
|
338
|
-
{
|
|
339
|
-
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",
|
|
340
|
-
fill: "#4285F4"
|
|
341
|
-
}
|
|
342
|
-
),
|
|
343
|
-
/* @__PURE__ */ jsx(
|
|
344
|
-
"path",
|
|
345
|
-
{
|
|
346
|
-
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",
|
|
347
|
-
fill: "#34A853"
|
|
348
|
-
}
|
|
349
|
-
),
|
|
350
|
-
/* @__PURE__ */ jsx(
|
|
351
|
-
"path",
|
|
352
|
-
{
|
|
353
|
-
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",
|
|
354
|
-
fill: "#FBBC04"
|
|
355
|
-
}
|
|
356
|
-
),
|
|
357
|
-
/* @__PURE__ */ jsx(
|
|
358
|
-
"path",
|
|
359
|
-
{
|
|
360
|
-
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",
|
|
361
|
-
fill: "#EA4335"
|
|
362
|
-
}
|
|
363
|
-
),
|
|
364
|
-
children
|
|
365
|
-
]
|
|
366
|
-
}
|
|
367
|
-
)
|
|
368
|
-
);
|
|
369
|
-
Google.displayName = "Google";
|
|
370
|
-
var Keboola = forwardRef(
|
|
371
|
-
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
372
|
-
"svg",
|
|
373
|
-
{
|
|
374
|
-
ref,
|
|
375
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
376
|
-
width: size,
|
|
377
|
-
height: size,
|
|
378
|
-
viewBox: "0 0 300 512",
|
|
379
|
-
fill: color,
|
|
380
|
-
className: cn("lucide", className),
|
|
381
|
-
...rest,
|
|
382
|
-
children: [
|
|
383
|
-
/* @__PURE__ */ jsx("path", { d: "M152 320C79.7 320 24.5 233.9 24.5 124.7C24.5 15.6 70.5 0 152 0s123.6 15.6 123.6 124.7C275.5 233.9 217.7 320 152 320zm-8.7-50.5c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm55.7 0c0-11.2-9.5-20.3-21.2-20.3s-21.2 9.1-21.2 20.3c0 11.2 9.5 20.3 21.2 20.3s21.2-9.1 21.2-20.3zm68.9 115.1c10.2 9.3 20.2 20.5 29 35c5.9 9.7 2.6 22.1-7.5 27.8c-3.4 1.9-7.1 2.8-10.7 2.8c-7.2 0-14.3-3.6-18.3-10c-6.8-11.1-13.8-18.9-21.7-26.1c-7.3-6.7-15.6-12.7-24.9-19.5c-.7-.5-1.4-1-2.1-1.5c-5-3.6-10-6.8-14.9-9.4c.6 1 1.2 2.1 1.8 3.2c14.4 26.4 29.2 63.1 29.2 104.9c0 11.2-9.5 20.3-21.2 20.3c-11.7 0-21.2-9.1-21.2-20.3c.1-31.8-11.6-62.3-23.8-84.9c-4-7.4-8-13.9-11.6-19.3c-3.4 5.2-7.2 11.3-11 18.3c-12.5 22.7-24.5 53.8-24.4 86c0 11.2-9.5 20.3-21.2 20.3s-21.2-9.1-21.2-20.3c.1-41.8 14.9-78.4 29.2-104.9c.6-1.1 1.2-2.1 1.8-3.2c-5 2.7-9.9 5.8-14.9 9.4c-.6 .5-1.3 .9-1.9 1.4c-9.5 6.9-17.8 12.9-25.1 19.7c-7.9 7.2-14.9 15.1-21.7 26.1c-5.9 9.7-18.9 12.9-29 7.2C.5 441.8-2.9 429.3 3.1 419.7c8.9-14.4 18.8-25.7 29-35c9.2-8.4 18.5-15.1 27.6-21.7c1-.7 2-1.4 3-2.2c4.7-3.5 9.6-6.7 14.6-9.6c-5-2.9-9.8-6.1-14.6-9.6C39.8 325 19.9 302.5 3.1 275.1c-5.9-9.7-2.6-22.1 7.5-27.8c10.1-5.7 23.1-2.5 29 7.2c14.6 23.7 31.1 42 48.7 54.9c18.9 13.7 37.4 20.5 56.5 21.5c1.7-.1 3.5-.1 5.2-.1c1.8 0 3.5 .1 5.2 .1c0 0 0 0 0 0c19.1-1.1 37.6-7.9 56.5-21.5c17.6-12.8 34.2-31.2 48.7-54.9c6-9.7 18.9-12.9 29-7.2c10.1 5.7 13.4 18.1 7.5 27.8c-16.8 27.4-36.7 49.9-59.6 66.6c-4.7 3.5-9.6 6.7-14.5 9.6c4.9 2.9 9.8 6.1 14.5 9.6c.9 .7 1.8 1.3 2.7 2c9.2 6.7 18.5 13.5 27.9 22z" }),
|
|
384
|
-
children
|
|
385
|
-
]
|
|
386
|
-
}
|
|
387
|
-
)
|
|
388
|
-
);
|
|
389
|
-
Keboola.displayName = "Keboola";
|
|
390
|
-
var Microsoft = forwardRef(
|
|
391
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxs(
|
|
392
|
-
"svg",
|
|
393
|
-
{
|
|
394
|
-
ref,
|
|
395
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
396
|
-
width: size,
|
|
397
|
-
height: size,
|
|
398
|
-
viewBox: "0 0 21 21",
|
|
399
|
-
fill: "none",
|
|
400
|
-
className: cn("lucide", className),
|
|
401
|
-
...rest,
|
|
402
|
-
children: [
|
|
403
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "0", width: "10", height: "10", fill: "#F25022" }),
|
|
404
|
-
/* @__PURE__ */ jsx("rect", { x: "11", y: "0", width: "10", height: "10", fill: "#7FBA00" }),
|
|
405
|
-
/* @__PURE__ */ jsx("rect", { x: "0", y: "11", width: "10", height: "10", fill: "#00A4EF" }),
|
|
406
|
-
/* @__PURE__ */ jsx("rect", { x: "11", y: "11", width: "10", height: "10", fill: "#FFB900" }),
|
|
407
|
-
children
|
|
408
|
-
]
|
|
409
|
-
}
|
|
410
|
-
)
|
|
411
|
-
);
|
|
412
|
-
Microsoft.displayName = "Microsoft";
|
|
413
266
|
var variants = cva(
|
|
414
267
|
[
|
|
415
268
|
"tailwindcss-preflight",
|
|
416
|
-
"tw
|
|
417
|
-
"tw
|
|
269
|
+
"tw:group/button",
|
|
270
|
+
"tw:border-box",
|
|
418
271
|
// layout
|
|
419
|
-
"tw
|
|
420
|
-
"tw
|
|
421
|
-
"tw
|
|
422
|
-
"tw
|
|
423
|
-
"tw
|
|
272
|
+
"tw:relative",
|
|
273
|
+
"tw:flex",
|
|
274
|
+
"tw:items-center",
|
|
275
|
+
"tw:justify-center",
|
|
276
|
+
"tw:gap-2",
|
|
424
277
|
// text — chrome weight/tracking are brand-overridable tokens
|
|
425
|
-
// (`--font-weight-medium` / `--letter-spacing-chrome`)
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
"tw-
|
|
430
|
-
"tw-
|
|
278
|
+
// (`--font-weight-medium` / `--letter-spacing-chrome`). Casing: standard case is
|
|
279
|
+
// the default; only legacy brands (`keboola-legacy-*`) uppercase the chrome, so
|
|
280
|
+
// modern brands (incl. Keboola V2) read naturally. Mirrors the V2 standard-case
|
|
281
|
+
// treatment shipped for Tooltip/Badge (PR 7629).
|
|
282
|
+
"tw:text-xs",
|
|
283
|
+
"tw:leading-5",
|
|
284
|
+
"tw:font-medium",
|
|
285
|
+
"tw:[[data-brand^=keboola-legacy]_&]:tracking-chrome",
|
|
286
|
+
"tw:[[data-brand^=keboola-legacy]_&]:uppercase",
|
|
431
287
|
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
432
|
-
"tw
|
|
433
|
-
"tw
|
|
434
|
-
"tw
|
|
288
|
+
"tw:rounded",
|
|
289
|
+
"tw:border",
|
|
290
|
+
"tw:border-transparent",
|
|
435
291
|
// styling
|
|
436
|
-
"tw
|
|
437
|
-
"[a]:
|
|
292
|
+
"tw:shadow-none",
|
|
293
|
+
"tw:[a]:cursor-pointer",
|
|
438
294
|
// explicitly set for anchor
|
|
439
|
-
"focus-visible:
|
|
440
|
-
"focus-visible:
|
|
441
|
-
"focus-visible:-
|
|
442
|
-
"focus-visible:
|
|
443
|
-
"focus-visible:
|
|
444
|
-
"focus-visible:
|
|
295
|
+
"tw:focus-visible:outline",
|
|
296
|
+
"tw:focus-visible:outline-1",
|
|
297
|
+
"tw:focus-visible:-outline-offset-1",
|
|
298
|
+
"tw:focus-visible:outline-ring",
|
|
299
|
+
"tw:focus-visible:ring-4",
|
|
300
|
+
"tw:focus-visible:ring-ring/30",
|
|
445
301
|
// disabled
|
|
446
|
-
"disabled:
|
|
447
|
-
"disabled:
|
|
302
|
+
"tw:disabled:opacity-40",
|
|
303
|
+
"tw:disabled:cursor-not-allowed",
|
|
448
304
|
// anchor support
|
|
449
|
-
"
|
|
450
|
-
"aria-disabled:
|
|
451
|
-
"aria-disabled:
|
|
452
|
-
"[&_svg]:
|
|
305
|
+
"tw:!no-underline",
|
|
306
|
+
"tw:aria-disabled:opacity-40",
|
|
307
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
308
|
+
"tw:[&_svg]:shrink-0"
|
|
453
309
|
],
|
|
454
310
|
{
|
|
455
311
|
defaultVariants: {
|
|
@@ -459,113 +315,113 @@ var variants = cva(
|
|
|
459
315
|
},
|
|
460
316
|
variants: {
|
|
461
317
|
block: {
|
|
462
|
-
true: ["tw
|
|
318
|
+
true: ["tw:w-full"]
|
|
463
319
|
},
|
|
464
320
|
variant: {
|
|
465
321
|
primary: [
|
|
466
|
-
"tw
|
|
467
|
-
"tw
|
|
468
|
-
"focus:
|
|
469
|
-
"hover:
|
|
470
|
-
"hover:not-disabled:
|
|
471
|
-
"active:not-disabled:
|
|
322
|
+
"tw:text-white",
|
|
323
|
+
"tw:bg-primary-500",
|
|
324
|
+
"tw:focus:text-white",
|
|
325
|
+
"tw:hover:text-white",
|
|
326
|
+
"tw:hover:not-disabled:bg-primary-600",
|
|
327
|
+
"tw:active:not-disabled:bg-primary-800",
|
|
472
328
|
// anchor disabled override
|
|
473
|
-
"aria-disabled:!
|
|
329
|
+
"tw:aria-disabled:!bg-primary-500"
|
|
474
330
|
],
|
|
475
331
|
secondary: [
|
|
476
|
-
"tw
|
|
477
|
-
"tw
|
|
478
|
-
"focus:
|
|
479
|
-
"hover:
|
|
480
|
-
"hover:not-disabled:
|
|
481
|
-
"active:not-disabled:
|
|
332
|
+
"tw:text-white",
|
|
333
|
+
"tw:bg-secondary-500",
|
|
334
|
+
"tw:focus:text-white",
|
|
335
|
+
"tw:hover:text-white",
|
|
336
|
+
"tw:hover:not-disabled:bg-secondary-700",
|
|
337
|
+
"tw:active:not-disabled:bg-secondary-800",
|
|
482
338
|
// anchor disabled override
|
|
483
|
-
"aria-disabled:!
|
|
339
|
+
"tw:aria-disabled:!bg-secondary-500"
|
|
484
340
|
],
|
|
485
341
|
danger: [
|
|
486
|
-
"tw
|
|
487
|
-
"tw
|
|
488
|
-
"focus:
|
|
489
|
-
"hover:
|
|
490
|
-
"hover:not-disabled:
|
|
491
|
-
"active:not-disabled:
|
|
342
|
+
"tw:text-white",
|
|
343
|
+
"tw:bg-error-500",
|
|
344
|
+
"tw:focus:text-white",
|
|
345
|
+
"tw:hover:text-white",
|
|
346
|
+
"tw:hover:not-disabled:bg-error-600",
|
|
347
|
+
"tw:active:not-disabled:bg-error-700",
|
|
492
348
|
// anchor disabled override
|
|
493
|
-
"aria-disabled:!
|
|
349
|
+
"tw:aria-disabled:!bg-error-500"
|
|
494
350
|
],
|
|
495
351
|
invisible: [
|
|
496
|
-
"tw
|
|
497
|
-
"tw
|
|
498
|
-
"focus:
|
|
499
|
-
"hover:not-disabled:
|
|
500
|
-
"hover:
|
|
501
|
-
"active:not-disabled:
|
|
352
|
+
"tw:text-neutral-800",
|
|
353
|
+
"tw:bg-transparent",
|
|
354
|
+
"tw:focus:text-neutral-800",
|
|
355
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
356
|
+
"tw:hover:text-neutral-800",
|
|
357
|
+
"tw:active:not-disabled:bg-neutral-150",
|
|
502
358
|
// contrasting icon on hover/active
|
|
503
|
-
"[&_svg]:
|
|
504
|
-
"
|
|
505
|
-
"
|
|
359
|
+
"tw:[&_svg]:text-neutral-400",
|
|
360
|
+
"tw:hover:not-disabled:[&_svg]:text-secondary-600",
|
|
361
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
506
362
|
// anchor disabled override
|
|
507
|
-
"aria-disabled:!
|
|
363
|
+
"tw:aria-disabled:!bg-transparent"
|
|
508
364
|
],
|
|
509
365
|
outline: [
|
|
510
|
-
"tw
|
|
511
|
-
"tw
|
|
366
|
+
"tw:text-neutral-800",
|
|
367
|
+
"tw:bg-white",
|
|
512
368
|
// border
|
|
513
|
-
"
|
|
514
|
-
"hover:
|
|
515
|
-
"focus:
|
|
516
|
-
"hover:not-disabled:!
|
|
517
|
-
"hover:not-disabled:
|
|
518
|
-
"active:not-disabled:
|
|
369
|
+
"tw:!border-neutral-200",
|
|
370
|
+
"tw:hover:text-neutral-800",
|
|
371
|
+
"tw:focus:text-neutral-800",
|
|
372
|
+
"tw:hover:not-disabled:!border-neutral-300",
|
|
373
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
374
|
+
"tw:active:not-disabled:bg-neutral-200",
|
|
519
375
|
// contrasting icon hover, same as invisible
|
|
520
|
-
"[&_svg]:
|
|
521
|
-
"
|
|
522
|
-
"
|
|
376
|
+
"tw:[&_svg]:text-neutral-400",
|
|
377
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
378
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
523
379
|
// anchor disabled override
|
|
524
|
-
"aria-disabled:!
|
|
525
|
-
"aria-disabled:!
|
|
380
|
+
"tw:aria-disabled:!bg-white",
|
|
381
|
+
"tw:aria-disabled:!border-neutral-200"
|
|
526
382
|
],
|
|
527
383
|
inline: [
|
|
528
|
-
"tw
|
|
529
|
-
"tw
|
|
530
|
-
"tw
|
|
531
|
-
"[&_svg]:
|
|
532
|
-
"
|
|
533
|
-
"
|
|
384
|
+
"tw:text-neutral-800",
|
|
385
|
+
"tw:bg-transparent",
|
|
386
|
+
"tw:rounded-full",
|
|
387
|
+
"tw:[&_svg]:text-neutral-400",
|
|
388
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
389
|
+
"tw:not-disabled:focus:[&_svg]:text-secondary-600"
|
|
534
390
|
]
|
|
535
391
|
},
|
|
536
392
|
size: {
|
|
537
393
|
medium: [
|
|
538
|
-
"tw
|
|
539
|
-
"tw
|
|
540
|
-
"tw
|
|
541
|
-
"tw
|
|
542
|
-
'[&_svg:not([class*="tw
|
|
394
|
+
"tw:max-h-10",
|
|
395
|
+
"tw:min-h-10",
|
|
396
|
+
"tw:px-4",
|
|
397
|
+
"tw:py-2.5",
|
|
398
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
543
399
|
],
|
|
544
400
|
small: [
|
|
545
|
-
"tw
|
|
546
|
-
"tw
|
|
547
|
-
"tw
|
|
548
|
-
"tw
|
|
549
|
-
'[&_svg:not([class*="tw
|
|
401
|
+
"tw:max-h-8",
|
|
402
|
+
"tw:min-h-8",
|
|
403
|
+
"tw:px-4",
|
|
404
|
+
"tw:py-1.5",
|
|
405
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
550
406
|
],
|
|
551
407
|
large: [
|
|
552
|
-
"tw
|
|
553
|
-
"tw
|
|
554
|
-
"tw
|
|
555
|
-
"tw
|
|
556
|
-
'[&_svg:not([class*="tw
|
|
408
|
+
"tw:max-h-12",
|
|
409
|
+
"tw:min-h-12",
|
|
410
|
+
"tw:px-4",
|
|
411
|
+
"tw:py-3.5",
|
|
412
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
557
413
|
],
|
|
558
|
-
"icon-lg": ["tw
|
|
559
|
-
icon: ["tw
|
|
560
|
-
"icon-sm": ["tw
|
|
561
|
-
"icon-xs": ["tw
|
|
414
|
+
"icon-lg": ["tw:size-12", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-6'],
|
|
415
|
+
icon: ["tw:size-10", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
416
|
+
"icon-sm": ["tw:size-8", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
417
|
+
"icon-xs": ["tw:size-6", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
562
418
|
"icon-2xs": [
|
|
563
|
-
"
|
|
564
|
-
"tw
|
|
565
|
-
"tw
|
|
566
|
-
'[&_svg:not([class*="tw
|
|
419
|
+
"tw:!inline-flex",
|
|
420
|
+
"tw:size-5",
|
|
421
|
+
"tw:max-h-5",
|
|
422
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-3'
|
|
567
423
|
],
|
|
568
|
-
"icon-3xs": ["tw
|
|
424
|
+
"icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
|
|
569
425
|
}
|
|
570
426
|
}
|
|
571
427
|
}
|
|
@@ -574,37 +430,37 @@ var argoVariants = cva(
|
|
|
574
430
|
[
|
|
575
431
|
"tailwindcss-preflight",
|
|
576
432
|
// layout
|
|
577
|
-
"tw
|
|
578
|
-
"tw
|
|
579
|
-
"tw
|
|
580
|
-
"tw
|
|
581
|
-
"tw
|
|
582
|
-
"tw
|
|
433
|
+
"tw:relative",
|
|
434
|
+
"tw:inline-flex",
|
|
435
|
+
"tw:items-center",
|
|
436
|
+
"tw:justify-center",
|
|
437
|
+
"tw:whitespace-nowrap",
|
|
438
|
+
"tw:gap-2",
|
|
583
439
|
// border
|
|
584
|
-
"tw
|
|
585
|
-
"tw
|
|
586
|
-
"tw
|
|
440
|
+
"tw:border",
|
|
441
|
+
"tw:border-transparent",
|
|
442
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
587
443
|
// text
|
|
588
|
-
"tw
|
|
589
|
-
"tw
|
|
444
|
+
"tw:font-medium",
|
|
445
|
+
"tw:select-none",
|
|
590
446
|
// focus visible
|
|
591
|
-
"
|
|
592
|
-
"focus-visible:
|
|
447
|
+
"tw:!outline-hidden",
|
|
448
|
+
"tw:focus-visible:ring-2",
|
|
593
449
|
// disabled
|
|
594
|
-
"disabled:
|
|
595
|
-
"disabled:
|
|
596
|
-
"active:
|
|
597
|
-
"tw
|
|
598
|
-
"tw
|
|
450
|
+
"tw:disabled:cursor-not-allowed",
|
|
451
|
+
"tw:disabled:opacity-50",
|
|
452
|
+
"tw:active:opacity-60",
|
|
453
|
+
"tw:transition-all",
|
|
454
|
+
"tw:bg-clip-padding",
|
|
599
455
|
// anchor support
|
|
600
|
-
"
|
|
601
|
-
"aria-disabled:
|
|
602
|
-
"aria-disabled:
|
|
456
|
+
"tw:!no-underline",
|
|
457
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
458
|
+
"tw:aria-disabled:opacity-50",
|
|
603
459
|
// icon
|
|
604
|
-
"tw
|
|
605
|
-
"[&_svg]:
|
|
606
|
-
"[&_svg]:
|
|
607
|
-
"[&_svg:not([class*='tw
|
|
460
|
+
"tw:shrink-0",
|
|
461
|
+
"tw:[&_svg]:pointer-events-none",
|
|
462
|
+
"tw:[&_svg]:shrink-0",
|
|
463
|
+
"tw:[&_svg:not([class*='tw:size-'])]:size-4"
|
|
608
464
|
],
|
|
609
465
|
{
|
|
610
466
|
defaultVariants: {
|
|
@@ -613,77 +469,77 @@ var argoVariants = cva(
|
|
|
613
469
|
},
|
|
614
470
|
variants: {
|
|
615
471
|
block: {
|
|
616
|
-
true: ["tw
|
|
472
|
+
true: ["tw:w-full"]
|
|
617
473
|
},
|
|
618
474
|
variant: {
|
|
619
475
|
primary: [
|
|
620
|
-
"tw
|
|
621
|
-
"tw
|
|
622
|
-
"[a]:hover:
|
|
623
|
-
"hover:not-disabled:
|
|
624
|
-
"hover:
|
|
625
|
-
"focus:
|
|
626
|
-
"focus-visible:
|
|
627
|
-
"focus-visible:
|
|
476
|
+
"tw:bg-primary",
|
|
477
|
+
"tw:text-primary-foreground",
|
|
478
|
+
"tw:[a]:hover:bg-primary/80",
|
|
479
|
+
"tw:hover:not-disabled:bg-primary/90",
|
|
480
|
+
"tw:hover:text-primary-foreground",
|
|
481
|
+
"tw:focus:text-primary-foreground",
|
|
482
|
+
"tw:focus-visible:border-primary",
|
|
483
|
+
"tw:focus-visible:ring-ring/50"
|
|
628
484
|
],
|
|
629
485
|
secondary: [
|
|
630
|
-
"tw
|
|
631
|
-
"tw
|
|
632
|
-
"hover:not-disabled:
|
|
633
|
-
"focus-visible:
|
|
634
|
-
"focus-visible:
|
|
486
|
+
"tw:bg-primary/10",
|
|
487
|
+
"tw:text-primary",
|
|
488
|
+
"tw:hover:not-disabled:bg-primary/20",
|
|
489
|
+
"tw:focus-visible:border-primary",
|
|
490
|
+
"tw:focus-visible:ring-ring/50"
|
|
635
491
|
],
|
|
636
492
|
// should be called "destructive" by Figma
|
|
637
493
|
danger: [
|
|
638
|
-
"tw
|
|
639
|
-
"tw
|
|
640
|
-
"hover:
|
|
641
|
-
"focus:
|
|
642
|
-
"focus-visible:
|
|
643
|
-
"focus-visible:
|
|
494
|
+
"tw:bg-destructive",
|
|
495
|
+
"tw:text-destructive-foreground",
|
|
496
|
+
"tw:hover:text-destructive-foreground",
|
|
497
|
+
"tw:focus:text-destructive-foreground",
|
|
498
|
+
"tw:focus-visible:border-destructive",
|
|
499
|
+
"tw:focus-visible:ring-destructive/20"
|
|
644
500
|
],
|
|
645
501
|
outline: [
|
|
646
|
-
"
|
|
647
|
-
"tw
|
|
502
|
+
"tw:!border-input",
|
|
503
|
+
"tw:bg-background",
|
|
648
504
|
// Semantic base text color so the label/icon flips in dark mode
|
|
649
505
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
650
|
-
"tw
|
|
506
|
+
"tw:text-foreground",
|
|
651
507
|
// Hover follows the brand primary (translucent tint), matching the
|
|
652
508
|
// `secondary` variant — not the fixed `accent` blue.
|
|
653
|
-
"hover:not-disabled:
|
|
654
|
-
"hover:not-disabled:
|
|
655
|
-
"hover:active:
|
|
656
|
-
"focus-visible:!
|
|
657
|
-
"focus-visible:
|
|
509
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
510
|
+
"tw:hover:not-disabled:text-primary",
|
|
511
|
+
"tw:hover:active:bg-background",
|
|
512
|
+
"tw:focus-visible:!border-primary",
|
|
513
|
+
"tw:focus-visible:ring-ring/50"
|
|
658
514
|
],
|
|
659
515
|
// should be called "ghost" by Figma
|
|
660
516
|
invisible: [
|
|
661
|
-
"tw
|
|
662
|
-
"tw
|
|
663
|
-
"hover:not-disabled:
|
|
664
|
-
"hover:not-disabled:
|
|
665
|
-
"hover:not-disabled:
|
|
666
|
-
"focus-visible:
|
|
517
|
+
"tw:bg-transparent",
|
|
518
|
+
"tw:text-foreground",
|
|
519
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
520
|
+
"tw:hover:not-disabled:text-primary",
|
|
521
|
+
"tw:hover:not-disabled:border-primary/10",
|
|
522
|
+
"tw:focus-visible:ring-ring/50"
|
|
667
523
|
],
|
|
668
524
|
// should be called "link" by Figma
|
|
669
525
|
inline: [
|
|
670
|
-
"tw
|
|
671
|
-
"tw
|
|
672
|
-
"hover:
|
|
673
|
-
"hover:active:
|
|
674
|
-
"focus-visible:
|
|
526
|
+
"tw:bg-transparent",
|
|
527
|
+
"tw:text-primary",
|
|
528
|
+
"tw:hover:underline",
|
|
529
|
+
"tw:hover:active:bg-transparent",
|
|
530
|
+
"tw:focus-visible:ring-ring/50"
|
|
675
531
|
]
|
|
676
532
|
},
|
|
677
533
|
size: {
|
|
678
534
|
// should be called "default" by Figma
|
|
679
|
-
medium: ["tw
|
|
535
|
+
medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
|
|
680
536
|
// should be called "small" by Figma
|
|
681
|
-
small: ["tw
|
|
537
|
+
small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
|
|
682
538
|
// should be called "large" by Figma
|
|
683
|
-
large: ["tw
|
|
684
|
-
"icon-lg": ["tw
|
|
685
|
-
icon: ["tw
|
|
686
|
-
"icon-sm": ["tw
|
|
539
|
+
large: ["tw:max-h-10", "tw:py-2.5", "tw:px-6", "tw:text-sm"],
|
|
540
|
+
"icon-lg": ["tw:size-10"],
|
|
541
|
+
icon: ["tw:size-9"],
|
|
542
|
+
"icon-sm": ["tw:size-8"],
|
|
687
543
|
// unsupported in ARGO, remove when old design is gone
|
|
688
544
|
"icon-xs": [],
|
|
689
545
|
"icon-2xs": [],
|
|
@@ -731,13 +587,13 @@ var Button = ({
|
|
|
731
587
|
onClick: handleClick,
|
|
732
588
|
className: cn(classNames),
|
|
733
589
|
children: [
|
|
734
|
-
isLoading && /* @__PURE__ */ jsx(
|
|
590
|
+
isLoading && /* @__PURE__ */ jsx(Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
|
|
735
591
|
/* @__PURE__ */ jsx(Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
736
592
|
]
|
|
737
593
|
}
|
|
738
594
|
);
|
|
739
595
|
};
|
|
740
|
-
var
|
|
596
|
+
var Clipboard2 = ({
|
|
741
597
|
ref,
|
|
742
598
|
text: textProp,
|
|
743
599
|
children,
|
|
@@ -762,6 +618,7 @@ var Clipboard = ({
|
|
|
762
618
|
}
|
|
763
619
|
};
|
|
764
620
|
const handleOnClick = (event) => {
|
|
621
|
+
setIsTooltipOpen(true);
|
|
765
622
|
if (text && state === "ready") void copy(text);
|
|
766
623
|
onClick?.(event);
|
|
767
624
|
};
|
|
@@ -776,6 +633,7 @@ var Clipboard = ({
|
|
|
776
633
|
return tooltip;
|
|
777
634
|
})();
|
|
778
635
|
const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
|
|
636
|
+
const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
|
|
779
637
|
return /* @__PURE__ */ jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
|
|
780
638
|
/* @__PURE__ */ jsx(
|
|
781
639
|
Tooltip.Trigger,
|
|
@@ -784,12 +642,12 @@ var Clipboard = ({
|
|
|
784
642
|
asChild,
|
|
785
643
|
keepOpenOnClick: true,
|
|
786
644
|
onClick: handleOnClick,
|
|
787
|
-
className: cn("tw
|
|
645
|
+
className: cn("tw:cursor-pointer", className),
|
|
788
646
|
ref,
|
|
789
647
|
children: children ?? text
|
|
790
648
|
}
|
|
791
649
|
),
|
|
792
|
-
/* @__PURE__ */ jsx(
|
|
650
|
+
hasTooltipContent && /* @__PURE__ */ jsx(
|
|
793
651
|
Tooltip.Content,
|
|
794
652
|
{
|
|
795
653
|
keepOpenOnPointerDownOutside: true,
|
|
@@ -800,7 +658,7 @@ var Clipboard = ({
|
|
|
800
658
|
)
|
|
801
659
|
] });
|
|
802
660
|
};
|
|
803
|
-
var DEFAULT_ICON = /* @__PURE__ */ jsx(
|
|
661
|
+
var DEFAULT_ICON = /* @__PURE__ */ jsx(Copy, {});
|
|
804
662
|
var DEFAULT_ARIA_LABEL = "Copy";
|
|
805
663
|
var ClipboardButton = ({
|
|
806
664
|
// clipboard props
|
|
@@ -817,7 +675,7 @@ var ClipboardButton = ({
|
|
|
817
675
|
const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
|
|
818
676
|
const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
|
|
819
677
|
return /* @__PURE__ */ jsx(
|
|
820
|
-
|
|
678
|
+
Clipboard2,
|
|
821
679
|
{
|
|
822
680
|
asChild: true,
|
|
823
681
|
tooltip,
|
|
@@ -834,10 +692,19 @@ var ClipboardButton = ({
|
|
|
834
692
|
var MIN_SCALE = 0.5;
|
|
835
693
|
var MAX_SCALE = 3;
|
|
836
694
|
var ZOOM_STEP = 0.1;
|
|
837
|
-
var ZoomableSvg = ({
|
|
695
|
+
var ZoomableSvg = ({
|
|
696
|
+
html,
|
|
697
|
+
copyText,
|
|
698
|
+
className,
|
|
699
|
+
allowForeignObject,
|
|
700
|
+
renderActions
|
|
701
|
+
}) => {
|
|
838
702
|
const safeHtml = useMemo(
|
|
839
|
-
() => DOMPurify.sanitize(html, {
|
|
840
|
-
|
|
703
|
+
() => DOMPurify.sanitize(html, {
|
|
704
|
+
USE_PROFILES: { svg: true, svgFilters: true },
|
|
705
|
+
...allowForeignObject ? { ADD_TAGS: ["foreignObject"] } : {}
|
|
706
|
+
}),
|
|
707
|
+
[html, allowForeignObject]
|
|
841
708
|
);
|
|
842
709
|
const containerRef = useRef(null);
|
|
843
710
|
const [scale, setScale] = useState(1);
|
|
@@ -866,7 +733,7 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
866
733
|
};
|
|
867
734
|
el.addEventListener("wheel", onWheel, { passive: false });
|
|
868
735
|
return () => el.removeEventListener("wheel", onWheel);
|
|
869
|
-
}, []);
|
|
736
|
+
}, [isFullscreen]);
|
|
870
737
|
const didDragRef = useRef(false);
|
|
871
738
|
const handleMouseDown = useCallback(
|
|
872
739
|
(e) => {
|
|
@@ -910,7 +777,7 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
910
777
|
"div",
|
|
911
778
|
{
|
|
912
779
|
role: "presentation",
|
|
913
|
-
className: cn("tw
|
|
780
|
+
className: cn("tw:group/zoom tw:relative", isFullscreen && "tw:h-full"),
|
|
914
781
|
onClick: handleClick,
|
|
915
782
|
children: [
|
|
916
783
|
/* @__PURE__ */ jsx(
|
|
@@ -919,8 +786,8 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
919
786
|
role: "presentation",
|
|
920
787
|
ref: containerRef,
|
|
921
788
|
className: cn(
|
|
922
|
-
"tw
|
|
923
|
-
isFullscreen && "tw
|
|
789
|
+
"tw:overflow-hidden tw:cursor-grab tw:active:cursor-grabbing tw:p-3",
|
|
790
|
+
isFullscreen && "tw:h-full"
|
|
924
791
|
),
|
|
925
792
|
onMouseDown: handleMouseDown,
|
|
926
793
|
onMouseMove: handleMouseMove,
|
|
@@ -930,8 +797,8 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
930
797
|
"div",
|
|
931
798
|
{
|
|
932
799
|
className: cn(
|
|
933
|
-
"tw
|
|
934
|
-
isFullscreen && "tw
|
|
800
|
+
"tw:flex tw:justify-center tw:origin-center",
|
|
801
|
+
isFullscreen && "tw:h-full tw:[&>svg]:h-full"
|
|
935
802
|
),
|
|
936
803
|
style: { transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` },
|
|
937
804
|
dangerouslySetInnerHTML: { __html: safeHtml }
|
|
@@ -943,11 +810,12 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
943
810
|
"div",
|
|
944
811
|
{
|
|
945
812
|
role: "presentation",
|
|
946
|
-
className: "tw
|
|
813
|
+
className: "tw:absolute tw:right-1 tw:top-1 tw:flex tw:gap-1 tw:opacity-0 tw:transition-opacity tw:focus-within:opacity-100 tw:group-hover/zoom:opacity-100",
|
|
947
814
|
onClick: stopPropagation,
|
|
948
815
|
children: [
|
|
949
816
|
isZoomed && /* @__PURE__ */ jsx(Tooltip, { tooltip: "Reset zoom", placement: "top", triggerAsChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", variant: "outline", onClick: handleReset, children: "Reset" }) }),
|
|
950
817
|
copyText && /* @__PURE__ */ jsx(ClipboardButton, { text: copyText, tooltip: "Copy code", size: "icon-sm", variant: "outline" }),
|
|
818
|
+
renderActions?.(safeHtml),
|
|
951
819
|
/* @__PURE__ */ jsx(
|
|
952
820
|
Tooltip,
|
|
953
821
|
{
|
|
@@ -961,7 +829,7 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
961
829
|
variant: "outline",
|
|
962
830
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
|
|
963
831
|
onClick: () => setIsFullscreen((f) => !f),
|
|
964
|
-
children: isFullscreen ? /* @__PURE__ */ jsx(
|
|
832
|
+
children: isFullscreen ? /* @__PURE__ */ jsx(Minimize2, { className: "tw:size-4" }) : /* @__PURE__ */ jsx(Maximize2, { className: "tw:size-4" })
|
|
965
833
|
}
|
|
966
834
|
)
|
|
967
835
|
}
|
|
@@ -973,36 +841,112 @@ var ZoomableSvg = ({ html, copyText, className }) => {
|
|
|
973
841
|
}
|
|
974
842
|
);
|
|
975
843
|
if (isFullscreen) {
|
|
976
|
-
return
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
844
|
+
return createPortal(
|
|
845
|
+
/* @__PURE__ */ jsx(
|
|
846
|
+
"div",
|
|
847
|
+
{
|
|
848
|
+
role: "presentation",
|
|
849
|
+
"data-testid": "zoomable-svg-fullscreen",
|
|
850
|
+
className: "tw:fixed tw:inset-0 tw:z-[1060] tw:bg-muted tw:p-4 tailwindcss-preflight",
|
|
851
|
+
onClick: stopPropagation,
|
|
852
|
+
children: diagramContent
|
|
853
|
+
}
|
|
854
|
+
),
|
|
855
|
+
document.body
|
|
984
856
|
);
|
|
985
857
|
}
|
|
986
858
|
return /* @__PURE__ */ jsx(
|
|
987
859
|
"div",
|
|
988
860
|
{
|
|
989
861
|
className: cn(
|
|
990
|
-
"tw
|
|
862
|
+
"tw:overflow-hidden tw:rounded-md tw:border tw:border-border tw:bg-muted",
|
|
991
863
|
className
|
|
992
864
|
),
|
|
993
865
|
children: diagramContent
|
|
994
866
|
}
|
|
995
867
|
);
|
|
996
868
|
};
|
|
869
|
+
var HEIGHT_CLASS_NAME = {
|
|
870
|
+
xxs: "tw:h-3 tw:rounded",
|
|
871
|
+
xs: "tw:h-4 tw:rounded",
|
|
872
|
+
sm: "tw:h-5 tw:rounded",
|
|
873
|
+
md: "tw:h-6 tw:rounded-md",
|
|
874
|
+
lg: "tw:h-8 tw:rounded-lg",
|
|
875
|
+
xl: "tw:h-10 tw:rounded-lg",
|
|
876
|
+
"2xl": "tw:h-12 tw:rounded-lg"
|
|
877
|
+
};
|
|
878
|
+
var ANIMATION_CLASS_NAME = cn(
|
|
879
|
+
// base styles
|
|
880
|
+
"tw:relative",
|
|
881
|
+
"tw:overflow-hidden",
|
|
882
|
+
"tw:pointer-events-none",
|
|
883
|
+
"tw:bg-skeleton",
|
|
884
|
+
// before
|
|
885
|
+
'tw:before:content-[""]',
|
|
886
|
+
"tw:before:opacity-100",
|
|
887
|
+
"tw:before:absolute",
|
|
888
|
+
"tw:before:inset-0",
|
|
889
|
+
"tw:before:-translate-x-full",
|
|
890
|
+
"tw:before:animate-[shimmer_2s_infinite]",
|
|
891
|
+
"tw:before:bg-gradient-to-r",
|
|
892
|
+
"tw:before:from-transparent",
|
|
893
|
+
"tw:before:to-transparent",
|
|
894
|
+
"tw:before:via-white/40"
|
|
895
|
+
);
|
|
896
|
+
var Skeleton = ({ height = "md", className, count = 1 }) => {
|
|
897
|
+
const prefixId = useId();
|
|
898
|
+
const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);
|
|
899
|
+
return /* @__PURE__ */ jsx(Fragment, { children: keys.map((key) => /* @__PURE__ */ jsx(
|
|
900
|
+
"div",
|
|
901
|
+
{
|
|
902
|
+
"data-skeleton": "true",
|
|
903
|
+
className: cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)
|
|
904
|
+
},
|
|
905
|
+
key
|
|
906
|
+
)) });
|
|
907
|
+
};
|
|
908
|
+
var DiagramSkeleton = () => /* @__PURE__ */ jsx("div", { className: "tw:my-3 tw:overflow-hidden tw:rounded-md tw:border tw:border-neutral-150 tw:bg-neutral-50 tw:p-6", children: /* @__PURE__ */ jsx(Skeleton, { className: "tw:h-40" }) });
|
|
909
|
+
|
|
910
|
+
// src/blocks/MermaidDiagram/svgTransforms.ts
|
|
911
|
+
var HTML_TAG = /<[^>]+>/g;
|
|
912
|
+
var FOREIGN_OBJECT = /(<foreignObject\b[^>]*>)([\s\S]*?)(<\/foreignObject>)/g;
|
|
913
|
+
var ROOT_SVG_TAG = /^(\s*<svg\b)([^>]*)(>)/i;
|
|
914
|
+
var flattenForeignObjectLabels = (svg) => svg.replace(FOREIGN_OBJECT, (_match, open, inner, close) => {
|
|
915
|
+
const text = inner.replace(HTML_TAG, " ").replace(/\s+/g, " ").trim();
|
|
916
|
+
return `${open}${text}${close}`;
|
|
917
|
+
});
|
|
918
|
+
var STYLE_ATTR = /\s+style="([^"]*)"/i;
|
|
919
|
+
var makeResponsive = (svgString) => {
|
|
920
|
+
const viewBoxMatch = svgString.match(/viewBox="[^"]*\s([\d.]+)\s[\d.]+"/);
|
|
921
|
+
const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : void 0;
|
|
922
|
+
return svgString.replace(ROOT_SVG_TAG, (_match, open, attrs, close) => {
|
|
923
|
+
const existingStyle = attrs.match(STYLE_ATTR)?.[1] ?? "";
|
|
924
|
+
const styleDecls = existingStyle.replace(/max-width:\s*[^;"]*;?\s*/gi, "").replace(/\s+/g, " ").trim().replace(/;$/, "");
|
|
925
|
+
let nextAttrs = attrs.replace(/\s+width="[^"]*"/i, "").replace(/\s+height="[^"]*"/i, "").replace(STYLE_ATTR, "");
|
|
926
|
+
nextAttrs += ' width="100%"';
|
|
927
|
+
const styleParts = [styleDecls, vbWidth ? `max-width: ${vbWidth}px` : ""].filter(Boolean).join("; ");
|
|
928
|
+
if (styleParts) nextAttrs += ` style="${styleParts}"`;
|
|
929
|
+
return `${open}${nextAttrs}${close}`;
|
|
930
|
+
});
|
|
931
|
+
};
|
|
997
932
|
var PRIMARY_FALLBACK_CHANNELS = "31 143 255";
|
|
998
933
|
var resolvePrimary = () => {
|
|
999
|
-
const channels = typeof document === "undefined" ? PRIMARY_FALLBACK_CHANNELS : getComputedStyle(document.documentElement).getPropertyValue("--
|
|
934
|
+
const channels = typeof document === "undefined" ? PRIMARY_FALLBACK_CHANNELS : getComputedStyle(document.documentElement).getPropertyValue("--primary").trim() || PRIMARY_FALLBACK_CHANNELS;
|
|
1000
935
|
return `rgb(${channels})`;
|
|
1001
936
|
};
|
|
1002
937
|
var mermaidPromise = null;
|
|
938
|
+
var registerLucideIconPack = (m) => {
|
|
939
|
+
m.registerIconPacks([
|
|
940
|
+
{
|
|
941
|
+
name: "lucide",
|
|
942
|
+
loader: () => import('@iconify-json/lucide/icons.json').then((mod) => mod.default)
|
|
943
|
+
}
|
|
944
|
+
]);
|
|
945
|
+
};
|
|
1003
946
|
var getMermaid = () => {
|
|
1004
947
|
if (!mermaidPromise) {
|
|
1005
948
|
mermaidPromise = import('mermaid').then((m) => {
|
|
949
|
+
registerLucideIconPack(m.default);
|
|
1006
950
|
m.default.initialize({
|
|
1007
951
|
startOnLoad: false,
|
|
1008
952
|
securityLevel: "strict",
|
|
@@ -1066,7 +1010,9 @@ var getMermaid = () => {
|
|
|
1066
1010
|
return mermaidPromise;
|
|
1067
1011
|
};
|
|
1068
1012
|
var stripFontImports = (svg) => svg.replace(/@import\s+url\([^)]*fonts\.googleapis\.com[^)]*\);?\s*/g, "");
|
|
1013
|
+
var hasIconSyntax = (code) => /@\{[^}]*\bicon\s*:/.test(code) || /\b(?:icon|service|group)\b[^\n(]*\(\s*[\w-]+:/.test(code) || /\bfa[bslr]?:fa-/.test(code);
|
|
1069
1014
|
var tryFastRender = (code) => {
|
|
1015
|
+
if (hasIconSyntax(code)) return null;
|
|
1070
1016
|
try {
|
|
1071
1017
|
return stripFontImports(
|
|
1072
1018
|
renderMermaidSVG(code, {
|
|
@@ -1076,27 +1022,11 @@ var tryFastRender = (code) => {
|
|
|
1076
1022
|
font: "Inter, system-ui, sans-serif"
|
|
1077
1023
|
})
|
|
1078
1024
|
);
|
|
1079
|
-
} catch {
|
|
1025
|
+
} catch (err) {
|
|
1026
|
+
console.debug("[MermaidDiagram] fast render unavailable, using async fallback:", err);
|
|
1080
1027
|
return null;
|
|
1081
1028
|
}
|
|
1082
1029
|
};
|
|
1083
|
-
var makeResponsive = (svgString) => {
|
|
1084
|
-
const viewBoxMatch = svgString.match(/viewBox="[^"]*\s([\d.]+)\s[\d.]+"/);
|
|
1085
|
-
const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : void 0;
|
|
1086
|
-
let result = svgString.replace(/(<svg[^>]*?)\s+width="[^"]*"/i, '$1 width="100%"').replace(/(<svg[^>]*?)\s+height="[^"]*"/i, "$1");
|
|
1087
|
-
if (!vbWidth) return result;
|
|
1088
|
-
const hasStyle = /(<svg[^>]*?)\s+style="([^"]*)"/i.test(result);
|
|
1089
|
-
if (hasStyle) {
|
|
1090
|
-
result = result.replace(/(<svg[^>]*?)\s+style="([^"]*)"/i, (_m, pre, styles) => {
|
|
1091
|
-
const cleaned = styles.replace(/max-width:\s*[^;"]*;?\s*/g, "").trim();
|
|
1092
|
-
const combined = [cleaned, `max-width: ${vbWidth}px`].filter(Boolean).join("; ");
|
|
1093
|
-
return `${pre} style="${combined}"`;
|
|
1094
|
-
});
|
|
1095
|
-
} else {
|
|
1096
|
-
result = result.replace(/<svg/, `<svg style="max-width: ${vbWidth}px"`);
|
|
1097
|
-
}
|
|
1098
|
-
return result;
|
|
1099
|
-
};
|
|
1100
1030
|
var RENDER_DEBOUNCE_MS = 300;
|
|
1101
1031
|
var svgCache = /* @__PURE__ */ new Map();
|
|
1102
1032
|
var resolveSyncSvg = (code) => {
|
|
@@ -1106,7 +1036,7 @@ var resolveSyncSvg = (code) => {
|
|
|
1106
1036
|
if (fast) svgCache.set(code, fast);
|
|
1107
1037
|
return fast;
|
|
1108
1038
|
};
|
|
1109
|
-
var MermaidDiagram = ({ code }) => {
|
|
1039
|
+
var MermaidDiagram = ({ code, renderActions }) => {
|
|
1110
1040
|
const id = useId();
|
|
1111
1041
|
const [svg, setSvg] = useState(() => resolveSyncSvg(code));
|
|
1112
1042
|
const [renderFailed, setRenderFailed] = useState(false);
|
|
@@ -1137,8 +1067,9 @@ var MermaidDiagram = ({ code }) => {
|
|
|
1137
1067
|
try {
|
|
1138
1068
|
const result = await mermaidModule.default.render(rendererId, code, container);
|
|
1139
1069
|
if (renderIdRef.current === currentRenderId && result) {
|
|
1140
|
-
|
|
1141
|
-
|
|
1070
|
+
const svgOutput = flattenForeignObjectLabels(result.svg);
|
|
1071
|
+
svgCache.set(code, svgOutput);
|
|
1072
|
+
setSvg(svgOutput);
|
|
1142
1073
|
setRenderFailed(false);
|
|
1143
1074
|
}
|
|
1144
1075
|
} finally {
|
|
@@ -1167,11 +1098,11 @@ var MermaidDiagram = ({ code }) => {
|
|
|
1167
1098
|
"pre",
|
|
1168
1099
|
{
|
|
1169
1100
|
className: cn(
|
|
1170
|
-
"tw
|
|
1171
|
-
"tw
|
|
1172
|
-
"tw
|
|
1173
|
-
"tw
|
|
1174
|
-
"tw
|
|
1101
|
+
"tw:my-3 tw:overflow-auto tw:whitespace-pre-wrap tw:break-all",
|
|
1102
|
+
"tw:py-3 tw:px-4",
|
|
1103
|
+
"tw:bg-neutral-50",
|
|
1104
|
+
"tw:rounded-md tw:text-neutral-400",
|
|
1105
|
+
"tw:text-sm tw:font-mono"
|
|
1175
1106
|
),
|
|
1176
1107
|
children: /* @__PURE__ */ jsx("code", { children: code })
|
|
1177
1108
|
}
|
|
@@ -1185,12 +1116,14 @@ var MermaidDiagram = ({ code }) => {
|
|
|
1185
1116
|
copyText: `\`\`\`mermaid
|
|
1186
1117
|
${code}
|
|
1187
1118
|
\`\`\``,
|
|
1188
|
-
className: "tw
|
|
1119
|
+
className: "tw:my-3",
|
|
1120
|
+
allowForeignObject: true,
|
|
1121
|
+
renderActions
|
|
1189
1122
|
},
|
|
1190
1123
|
code
|
|
1191
1124
|
);
|
|
1192
1125
|
}
|
|
1193
|
-
return /* @__PURE__ */ jsx(
|
|
1126
|
+
return /* @__PURE__ */ jsx(DiagramSkeleton, {});
|
|
1194
1127
|
};
|
|
1195
1128
|
|
|
1196
1129
|
export { MermaidDiagram };
|