@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/markdown-editor.cjs
CHANGED
|
@@ -7,8 +7,9 @@ var react = require('react');
|
|
|
7
7
|
var reactTooltip = require('@radix-ui/react-tooltip');
|
|
8
8
|
var classVarianceAuthority = require('class-variance-authority');
|
|
9
9
|
var jsxRuntime = require('react/jsx-runtime');
|
|
10
|
-
var
|
|
10
|
+
var lucideReact = require('lucide-react');
|
|
11
11
|
var reactSlot = require('@radix-ui/react-slot');
|
|
12
|
+
var reactDom = require('react-dom');
|
|
12
13
|
var DOMPurify = require('dompurify');
|
|
13
14
|
var beautifulMermaid = require('beautiful-mermaid');
|
|
14
15
|
var colors = require('@keboola/tailwind-config/colors');
|
|
@@ -34,7 +35,6 @@ var richText = require('@lexical/rich-text');
|
|
|
34
35
|
var lexical = require('lexical');
|
|
35
36
|
var LexicalComposerContext = require('@lexical/react/LexicalComposerContext');
|
|
36
37
|
var sonner = require('sonner');
|
|
37
|
-
var reactDom = require('react-dom');
|
|
38
38
|
var utils = require('@lexical/utils');
|
|
39
39
|
var DropdownMenuPrimitive3 = require('@radix-ui/react-dropdown-menu');
|
|
40
40
|
var ScrollAreaPrimitive2 = require('@radix-ui/react-scroll-area');
|
|
@@ -61,7 +61,6 @@ function _interopNamespace(e) {
|
|
|
61
61
|
return Object.freeze(n);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
var lucide_react_star__namespace = /*#__PURE__*/_interopNamespace(lucide_react_star);
|
|
65
64
|
var DOMPurify__default = /*#__PURE__*/_interopDefault(DOMPurify);
|
|
66
65
|
var colors__default = /*#__PURE__*/_interopDefault(colors);
|
|
67
66
|
var DropdownMenuPrimitive3__namespace = /*#__PURE__*/_interopNamespace(DropdownMenuPrimitive3);
|
|
@@ -70,9 +69,7 @@ var TextareaAutosize__default = /*#__PURE__*/_interopDefault(TextareaAutosize);
|
|
|
70
69
|
var RLabel__namespace = /*#__PURE__*/_interopNamespace(RLabel);
|
|
71
70
|
|
|
72
71
|
var __defProp = Object.defineProperty;
|
|
73
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
74
72
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
75
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
76
73
|
var __esm = (fn, res) => function __init() {
|
|
77
74
|
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
78
75
|
};
|
|
@@ -80,20 +77,11 @@ var __export = (target, all) => {
|
|
|
80
77
|
for (var name in all)
|
|
81
78
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
82
79
|
};
|
|
83
|
-
var __copyProps = (to, from, except, desc) => {
|
|
84
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
85
|
-
for (let key of __getOwnPropNames(from))
|
|
86
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
87
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
88
|
-
}
|
|
89
|
-
return to;
|
|
90
|
-
};
|
|
91
|
-
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget);
|
|
92
80
|
var twMerge, cn;
|
|
93
81
|
var init_classNames = __esm({
|
|
94
82
|
"src/utils/classNames.ts"() {
|
|
95
83
|
twMerge = tailwindMerge.extendTailwindMerge({
|
|
96
|
-
prefix: "tw
|
|
84
|
+
prefix: "tw"
|
|
97
85
|
});
|
|
98
86
|
cn = (...classes) => twMerge(clsx.clsx(...classes));
|
|
99
87
|
}
|
|
@@ -212,39 +200,39 @@ var init_TooltipContent = __esm({
|
|
|
212
200
|
tooltipVariants = classVarianceAuthority.cva(
|
|
213
201
|
[
|
|
214
202
|
"tailwindcss-preflight",
|
|
215
|
-
"tw
|
|
216
|
-
"tw
|
|
217
|
-
"tw
|
|
218
|
-
"tw
|
|
219
|
-
"tw
|
|
203
|
+
"tw:inline-block",
|
|
204
|
+
"tw:break-anywhere",
|
|
205
|
+
"tw:max-h-96",
|
|
206
|
+
"tw:overflow-y-auto",
|
|
207
|
+
"tw:z-[1060]",
|
|
220
208
|
// legacy (dark) chrome — default
|
|
221
|
-
"tw
|
|
222
|
-
"tw
|
|
223
|
-
"tw
|
|
209
|
+
"tw:rounded",
|
|
210
|
+
"tw:bg-neutral-800",
|
|
211
|
+
"tw:text-white",
|
|
224
212
|
// argo chrome overrides — semantic floating-panel tokens
|
|
225
|
-
"data-[argo=true]:
|
|
226
|
-
"data-[argo=true]:
|
|
227
|
-
"data-[argo=true]:
|
|
228
|
-
"data-[argo=true]:
|
|
229
|
-
"data-[argo=true]:
|
|
230
|
-
"data-[argo=true]:
|
|
231
|
-
"data-[argo=true]:
|
|
213
|
+
"tw:data-[argo=true]:rounded-2xl",
|
|
214
|
+
"tw:data-[argo=true]:border",
|
|
215
|
+
"tw:data-[argo=true]:border-solid",
|
|
216
|
+
"tw:data-[argo=true]:border-border",
|
|
217
|
+
"tw:data-[argo=true]:bg-popover",
|
|
218
|
+
"tw:data-[argo=true]:text-popover-foreground",
|
|
219
|
+
"tw:data-[argo=true]:shadow-md",
|
|
232
220
|
// argo open animation
|
|
233
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
234
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
235
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
236
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
237
|
-
"data-[argo=true]:data-[state=delayed-open]:
|
|
238
|
-
"data-[argo=true]:data-[state=instant-open]:
|
|
221
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:animate-in",
|
|
222
|
+
"tw:data-[argo=true]:data-[state=instant-open]:animate-in",
|
|
223
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:fade-in-0",
|
|
224
|
+
"tw:data-[argo=true]:data-[state=instant-open]:fade-in-0",
|
|
225
|
+
"tw:data-[argo=true]:data-[state=delayed-open]:zoom-in-95",
|
|
226
|
+
"tw:data-[argo=true]:data-[state=instant-open]:zoom-in-95",
|
|
239
227
|
// argo closed animation
|
|
240
|
-
"data-[argo=true]:data-[state=closed]:
|
|
241
|
-
"data-[argo=true]:data-[state=closed]:
|
|
242
|
-
"data-[argo=true]:data-[state=closed]:
|
|
228
|
+
"tw:data-[argo=true]:data-[state=closed]:animate-out",
|
|
229
|
+
"tw:data-[argo=true]:data-[state=closed]:fade-out-0",
|
|
230
|
+
"tw:data-[argo=true]:data-[state=closed]:zoom-out-95",
|
|
243
231
|
// argo position animation
|
|
244
|
-
"data-[argo=true]:data-[side=bottom]:
|
|
245
|
-
"data-[argo=true]:data-[side=left]:
|
|
246
|
-
"data-[argo=true]:data-[side=right]:
|
|
247
|
-
"data-[argo=true]:data-[side=top]:
|
|
232
|
+
"tw:data-[argo=true]:data-[side=bottom]:slide-in-from-top-2",
|
|
233
|
+
"tw:data-[argo=true]:data-[side=left]:slide-in-from-right-2",
|
|
234
|
+
"tw:data-[argo=true]:data-[side=right]:slide-in-from-left-2",
|
|
235
|
+
"tw:data-[argo=true]:data-[side=top]:slide-in-from-bottom-2"
|
|
248
236
|
],
|
|
249
237
|
{
|
|
250
238
|
defaultVariants: {
|
|
@@ -253,22 +241,26 @@ var init_TooltipContent = __esm({
|
|
|
253
241
|
variants: {
|
|
254
242
|
variant: {
|
|
255
243
|
action: [
|
|
256
|
-
"tw
|
|
257
|
-
"tw
|
|
258
|
-
"tw
|
|
259
|
-
"tw
|
|
260
|
-
"tw
|
|
261
|
-
"tw
|
|
262
|
-
|
|
263
|
-
|
|
244
|
+
"tw:max-w-fit",
|
|
245
|
+
"tw:px-3",
|
|
246
|
+
"tw:py-2",
|
|
247
|
+
"tw:text-center",
|
|
248
|
+
"tw:text-xs",
|
|
249
|
+
"tw:font-medium",
|
|
250
|
+
// Legacy chrome uppercases the action tooltip; the Keboola V2 brand
|
|
251
|
+
// (`data-brand="keboola"`) renders it in standard case instead.
|
|
252
|
+
"tw:uppercase",
|
|
253
|
+
"tw:tracking-wider",
|
|
254
|
+
"tw:[[data-brand=keboola]_&]:normal-case",
|
|
255
|
+
"tw:[[data-brand=keboola]_&]:tracking-normal"
|
|
264
256
|
],
|
|
265
257
|
explanatory: [
|
|
266
|
-
"tw
|
|
267
|
-
"tw
|
|
268
|
-
"tw
|
|
269
|
-
"tw
|
|
270
|
-
"tw
|
|
271
|
-
"tw
|
|
258
|
+
"tw:max-w-80",
|
|
259
|
+
"tw:px-4",
|
|
260
|
+
"tw:py-3",
|
|
261
|
+
"tw:text-left",
|
|
262
|
+
"tw:text-sm",
|
|
263
|
+
"tw:font-normal"
|
|
272
264
|
]
|
|
273
265
|
}
|
|
274
266
|
}
|
|
@@ -353,8 +345,8 @@ var init_TooltipTrigger = __esm({
|
|
|
353
345
|
// (merged in via Slot) activates Tailwind's preflight inside the
|
|
354
346
|
// span, which sets `svg { display: block }` — without an inline-flex
|
|
355
347
|
// container that would stack any bare Lucide icon onto its own
|
|
356
|
-
// line. `tw
|
|
357
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw
|
|
348
|
+
// line. `tw:inline-flex tw:items-center` keeps icon + text aligned.
|
|
349
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw:inline-flex tw:items-center", children })
|
|
358
350
|
)
|
|
359
351
|
}
|
|
360
352
|
);
|
|
@@ -378,6 +370,7 @@ var init_Tooltip = __esm({
|
|
|
378
370
|
placement = "right",
|
|
379
371
|
forceHide = false,
|
|
380
372
|
forceShow = false,
|
|
373
|
+
delayDuration,
|
|
381
374
|
// trigger props
|
|
382
375
|
triggerAsChild = false
|
|
383
376
|
}) => {
|
|
@@ -397,6 +390,7 @@ var init_Tooltip = __esm({
|
|
|
397
390
|
{
|
|
398
391
|
open: !!tooltip && (open || forceShow) && !forceHide,
|
|
399
392
|
onOpenChange: setOpen,
|
|
393
|
+
delayDuration,
|
|
400
394
|
disableHoverableContent: isActionVariant,
|
|
401
395
|
children: [
|
|
402
396
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -527,31 +521,31 @@ var init_Skeleton = __esm({
|
|
|
527
521
|
"src/components/Skeleton/Skeleton.tsx"() {
|
|
528
522
|
init_utils2();
|
|
529
523
|
HEIGHT_CLASS_NAME = {
|
|
530
|
-
xxs: "tw
|
|
531
|
-
xs: "tw
|
|
532
|
-
sm: "tw
|
|
533
|
-
md: "tw
|
|
534
|
-
lg: "tw
|
|
535
|
-
xl: "tw
|
|
536
|
-
"2xl": "tw
|
|
524
|
+
xxs: "tw:h-3 tw:rounded",
|
|
525
|
+
xs: "tw:h-4 tw:rounded",
|
|
526
|
+
sm: "tw:h-5 tw:rounded",
|
|
527
|
+
md: "tw:h-6 tw:rounded-md",
|
|
528
|
+
lg: "tw:h-8 tw:rounded-lg",
|
|
529
|
+
xl: "tw:h-10 tw:rounded-lg",
|
|
530
|
+
"2xl": "tw:h-12 tw:rounded-lg"
|
|
537
531
|
};
|
|
538
532
|
ANIMATION_CLASS_NAME = cn(
|
|
539
533
|
// base styles
|
|
540
|
-
"tw
|
|
541
|
-
"tw
|
|
542
|
-
"tw
|
|
543
|
-
"tw
|
|
534
|
+
"tw:relative",
|
|
535
|
+
"tw:overflow-hidden",
|
|
536
|
+
"tw:pointer-events-none",
|
|
537
|
+
"tw:bg-skeleton",
|
|
544
538
|
// before
|
|
545
|
-
'before:
|
|
546
|
-
"before:
|
|
547
|
-
"before:
|
|
548
|
-
"before:
|
|
549
|
-
"before:-
|
|
550
|
-
"before:
|
|
551
|
-
"before:
|
|
552
|
-
"before:
|
|
553
|
-
"before:
|
|
554
|
-
"before:
|
|
539
|
+
'tw:before:content-[""]',
|
|
540
|
+
"tw:before:opacity-100",
|
|
541
|
+
"tw:before:absolute",
|
|
542
|
+
"tw:before:inset-0",
|
|
543
|
+
"tw:before:-translate-x-full",
|
|
544
|
+
"tw:before:animate-[shimmer_2s_infinite]",
|
|
545
|
+
"tw:before:bg-gradient-to-r",
|
|
546
|
+
"tw:before:from-transparent",
|
|
547
|
+
"tw:before:to-transparent",
|
|
548
|
+
"tw:before:via-white/40"
|
|
555
549
|
);
|
|
556
550
|
Skeleton = ({ height = "md", className, count = 1 }) => {
|
|
557
551
|
const prefixId = react.useId();
|
|
@@ -567,128 +561,8 @@ var init_Skeleton = __esm({
|
|
|
567
561
|
};
|
|
568
562
|
}
|
|
569
563
|
});
|
|
570
|
-
var Google;
|
|
571
|
-
var init_Google = __esm({
|
|
572
|
-
"src/icons/Google.tsx"() {
|
|
573
|
-
init_utils2();
|
|
574
|
-
Google = react.forwardRef(
|
|
575
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
576
|
-
"svg",
|
|
577
|
-
{
|
|
578
|
-
ref,
|
|
579
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
580
|
-
width: size,
|
|
581
|
-
height: size,
|
|
582
|
-
viewBox: "12 10 20 20",
|
|
583
|
-
fill: "none",
|
|
584
|
-
className: cn("lucide", className),
|
|
585
|
-
...rest,
|
|
586
|
-
children: [
|
|
587
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
588
|
-
"path",
|
|
589
|
-
{
|
|
590
|
-
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",
|
|
591
|
-
fill: "#4285F4"
|
|
592
|
-
}
|
|
593
|
-
),
|
|
594
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
595
|
-
"path",
|
|
596
|
-
{
|
|
597
|
-
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",
|
|
598
|
-
fill: "#34A853"
|
|
599
|
-
}
|
|
600
|
-
),
|
|
601
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
602
|
-
"path",
|
|
603
|
-
{
|
|
604
|
-
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",
|
|
605
|
-
fill: "#FBBC04"
|
|
606
|
-
}
|
|
607
|
-
),
|
|
608
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
609
|
-
"path",
|
|
610
|
-
{
|
|
611
|
-
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",
|
|
612
|
-
fill: "#EA4335"
|
|
613
|
-
}
|
|
614
|
-
),
|
|
615
|
-
children
|
|
616
|
-
]
|
|
617
|
-
}
|
|
618
|
-
)
|
|
619
|
-
);
|
|
620
|
-
Google.displayName = "Google";
|
|
621
|
-
}
|
|
622
|
-
});
|
|
623
|
-
var Keboola;
|
|
624
|
-
var init_Keboola = __esm({
|
|
625
|
-
"src/icons/Keboola.tsx"() {
|
|
626
|
-
init_utils2();
|
|
627
|
-
Keboola = react.forwardRef(
|
|
628
|
-
({ size = 24, color = "currentColor", className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
629
|
-
"svg",
|
|
630
|
-
{
|
|
631
|
-
ref,
|
|
632
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
633
|
-
width: size,
|
|
634
|
-
height: size,
|
|
635
|
-
viewBox: "0 0 300 512",
|
|
636
|
-
fill: color,
|
|
637
|
-
className: cn("lucide", className),
|
|
638
|
-
...rest,
|
|
639
|
-
children: [
|
|
640
|
-
/* @__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" }),
|
|
641
|
-
children
|
|
642
|
-
]
|
|
643
|
-
}
|
|
644
|
-
)
|
|
645
|
-
);
|
|
646
|
-
Keboola.displayName = "Keboola";
|
|
647
|
-
}
|
|
648
|
-
});
|
|
649
|
-
var Microsoft;
|
|
650
|
-
var init_Microsoft = __esm({
|
|
651
|
-
"src/icons/Microsoft.tsx"() {
|
|
652
|
-
init_utils2();
|
|
653
|
-
Microsoft = react.forwardRef(
|
|
654
|
-
({ size = 24, className, children, ...rest }, ref) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
655
|
-
"svg",
|
|
656
|
-
{
|
|
657
|
-
ref,
|
|
658
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
659
|
-
width: size,
|
|
660
|
-
height: size,
|
|
661
|
-
viewBox: "0 0 21 21",
|
|
662
|
-
fill: "none",
|
|
663
|
-
className: cn("lucide", className),
|
|
664
|
-
...rest,
|
|
665
|
-
children: [
|
|
666
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "0", width: "10", height: "10", fill: "#F25022" }),
|
|
667
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "0", width: "10", height: "10", fill: "#7FBA00" }),
|
|
668
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "0", y: "11", width: "10", height: "10", fill: "#00A4EF" }),
|
|
669
|
-
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "11", y: "11", width: "10", height: "10", fill: "#FFB900" }),
|
|
670
|
-
children
|
|
671
|
-
]
|
|
672
|
-
}
|
|
673
|
-
)
|
|
674
|
-
);
|
|
675
|
-
Microsoft.displayName = "Microsoft";
|
|
676
|
-
}
|
|
677
|
-
});
|
|
678
|
-
|
|
679
|
-
// src/icons/index.ts
|
|
680
|
-
var icons_exports = {};
|
|
681
|
-
__export(icons_exports, {
|
|
682
|
-
Google: () => Google,
|
|
683
|
-
Keboola: () => Keboola,
|
|
684
|
-
Microsoft: () => Microsoft
|
|
685
|
-
});
|
|
686
564
|
var init_icons = __esm({
|
|
687
565
|
"src/icons/index.ts"() {
|
|
688
|
-
__reExport(icons_exports, lucide_react_star__namespace);
|
|
689
|
-
init_Google();
|
|
690
|
-
init_Keboola();
|
|
691
|
-
init_Microsoft();
|
|
692
566
|
}
|
|
693
567
|
});
|
|
694
568
|
var variants, argoVariants;
|
|
@@ -697,43 +571,46 @@ var init_styles = __esm({
|
|
|
697
571
|
variants = classVarianceAuthority.cva(
|
|
698
572
|
[
|
|
699
573
|
"tailwindcss-preflight",
|
|
700
|
-
"tw
|
|
701
|
-
"tw
|
|
574
|
+
"tw:group/button",
|
|
575
|
+
"tw:border-box",
|
|
702
576
|
// layout
|
|
703
|
-
"tw
|
|
704
|
-
"tw
|
|
705
|
-
"tw
|
|
706
|
-
"tw
|
|
707
|
-
"tw
|
|
577
|
+
"tw:relative",
|
|
578
|
+
"tw:flex",
|
|
579
|
+
"tw:items-center",
|
|
580
|
+
"tw:justify-center",
|
|
581
|
+
"tw:gap-2",
|
|
708
582
|
// text — chrome weight/tracking are brand-overridable tokens
|
|
709
|
-
// (`--font-weight-medium` / `--letter-spacing-chrome`)
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
"tw-
|
|
714
|
-
"tw-
|
|
583
|
+
// (`--font-weight-medium` / `--letter-spacing-chrome`). Casing: standard case is
|
|
584
|
+
// the default; only legacy brands (`keboola-legacy-*`) uppercase the chrome, so
|
|
585
|
+
// modern brands (incl. Keboola V2) read naturally. Mirrors the V2 standard-case
|
|
586
|
+
// treatment shipped for Tooltip/Badge (PR 7629).
|
|
587
|
+
"tw:text-xs",
|
|
588
|
+
"tw:leading-5",
|
|
589
|
+
"tw:font-medium",
|
|
590
|
+
"tw:[[data-brand^=keboola-legacy]_&]:tracking-chrome",
|
|
591
|
+
"tw:[[data-brand^=keboola-legacy]_&]:uppercase",
|
|
715
592
|
// border — legacy (non-argo) chrome uses a fixed radius, not the brand token.
|
|
716
|
-
"tw
|
|
717
|
-
"tw
|
|
718
|
-
"tw
|
|
593
|
+
"tw:rounded",
|
|
594
|
+
"tw:border",
|
|
595
|
+
"tw:border-transparent",
|
|
719
596
|
// styling
|
|
720
|
-
"tw
|
|
721
|
-
"[a]:
|
|
597
|
+
"tw:shadow-none",
|
|
598
|
+
"tw:[a]:cursor-pointer",
|
|
722
599
|
// explicitly set for anchor
|
|
723
|
-
"focus-visible:
|
|
724
|
-
"focus-visible:
|
|
725
|
-
"focus-visible:-
|
|
726
|
-
"focus-visible:
|
|
727
|
-
"focus-visible:
|
|
728
|
-
"focus-visible:
|
|
600
|
+
"tw:focus-visible:outline",
|
|
601
|
+
"tw:focus-visible:outline-1",
|
|
602
|
+
"tw:focus-visible:-outline-offset-1",
|
|
603
|
+
"tw:focus-visible:outline-ring",
|
|
604
|
+
"tw:focus-visible:ring-4",
|
|
605
|
+
"tw:focus-visible:ring-ring/30",
|
|
729
606
|
// disabled
|
|
730
|
-
"disabled:
|
|
731
|
-
"disabled:
|
|
607
|
+
"tw:disabled:opacity-40",
|
|
608
|
+
"tw:disabled:cursor-not-allowed",
|
|
732
609
|
// anchor support
|
|
733
|
-
"
|
|
734
|
-
"aria-disabled:
|
|
735
|
-
"aria-disabled:
|
|
736
|
-
"[&_svg]:
|
|
610
|
+
"tw:!no-underline",
|
|
611
|
+
"tw:aria-disabled:opacity-40",
|
|
612
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
613
|
+
"tw:[&_svg]:shrink-0"
|
|
737
614
|
],
|
|
738
615
|
{
|
|
739
616
|
defaultVariants: {
|
|
@@ -743,113 +620,113 @@ var init_styles = __esm({
|
|
|
743
620
|
},
|
|
744
621
|
variants: {
|
|
745
622
|
block: {
|
|
746
|
-
true: ["tw
|
|
623
|
+
true: ["tw:w-full"]
|
|
747
624
|
},
|
|
748
625
|
variant: {
|
|
749
626
|
primary: [
|
|
750
|
-
"tw
|
|
751
|
-
"tw
|
|
752
|
-
"focus:
|
|
753
|
-
"hover:
|
|
754
|
-
"hover:not-disabled:
|
|
755
|
-
"active:not-disabled:
|
|
627
|
+
"tw:text-white",
|
|
628
|
+
"tw:bg-primary-500",
|
|
629
|
+
"tw:focus:text-white",
|
|
630
|
+
"tw:hover:text-white",
|
|
631
|
+
"tw:hover:not-disabled:bg-primary-600",
|
|
632
|
+
"tw:active:not-disabled:bg-primary-800",
|
|
756
633
|
// anchor disabled override
|
|
757
|
-
"aria-disabled:!
|
|
634
|
+
"tw:aria-disabled:!bg-primary-500"
|
|
758
635
|
],
|
|
759
636
|
secondary: [
|
|
760
|
-
"tw
|
|
761
|
-
"tw
|
|
762
|
-
"focus:
|
|
763
|
-
"hover:
|
|
764
|
-
"hover:not-disabled:
|
|
765
|
-
"active:not-disabled:
|
|
637
|
+
"tw:text-white",
|
|
638
|
+
"tw:bg-secondary-500",
|
|
639
|
+
"tw:focus:text-white",
|
|
640
|
+
"tw:hover:text-white",
|
|
641
|
+
"tw:hover:not-disabled:bg-secondary-700",
|
|
642
|
+
"tw:active:not-disabled:bg-secondary-800",
|
|
766
643
|
// anchor disabled override
|
|
767
|
-
"aria-disabled:!
|
|
644
|
+
"tw:aria-disabled:!bg-secondary-500"
|
|
768
645
|
],
|
|
769
646
|
danger: [
|
|
770
|
-
"tw
|
|
771
|
-
"tw
|
|
772
|
-
"focus:
|
|
773
|
-
"hover:
|
|
774
|
-
"hover:not-disabled:
|
|
775
|
-
"active:not-disabled:
|
|
647
|
+
"tw:text-white",
|
|
648
|
+
"tw:bg-error-500",
|
|
649
|
+
"tw:focus:text-white",
|
|
650
|
+
"tw:hover:text-white",
|
|
651
|
+
"tw:hover:not-disabled:bg-error-600",
|
|
652
|
+
"tw:active:not-disabled:bg-error-700",
|
|
776
653
|
// anchor disabled override
|
|
777
|
-
"aria-disabled:!
|
|
654
|
+
"tw:aria-disabled:!bg-error-500"
|
|
778
655
|
],
|
|
779
656
|
invisible: [
|
|
780
|
-
"tw
|
|
781
|
-
"tw
|
|
782
|
-
"focus:
|
|
783
|
-
"hover:not-disabled:
|
|
784
|
-
"hover:
|
|
785
|
-
"active:not-disabled:
|
|
657
|
+
"tw:text-neutral-800",
|
|
658
|
+
"tw:bg-transparent",
|
|
659
|
+
"tw:focus:text-neutral-800",
|
|
660
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
661
|
+
"tw:hover:text-neutral-800",
|
|
662
|
+
"tw:active:not-disabled:bg-neutral-150",
|
|
786
663
|
// contrasting icon on hover/active
|
|
787
|
-
"[&_svg]:
|
|
788
|
-
"
|
|
789
|
-
"
|
|
664
|
+
"tw:[&_svg]:text-neutral-400",
|
|
665
|
+
"tw:hover:not-disabled:[&_svg]:text-secondary-600",
|
|
666
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
790
667
|
// anchor disabled override
|
|
791
|
-
"aria-disabled:!
|
|
668
|
+
"tw:aria-disabled:!bg-transparent"
|
|
792
669
|
],
|
|
793
670
|
outline: [
|
|
794
|
-
"tw
|
|
795
|
-
"tw
|
|
671
|
+
"tw:text-neutral-800",
|
|
672
|
+
"tw:bg-white",
|
|
796
673
|
// border
|
|
797
|
-
"
|
|
798
|
-
"hover:
|
|
799
|
-
"focus:
|
|
800
|
-
"hover:not-disabled:!
|
|
801
|
-
"hover:not-disabled:
|
|
802
|
-
"active:not-disabled:
|
|
674
|
+
"tw:!border-neutral-200",
|
|
675
|
+
"tw:hover:text-neutral-800",
|
|
676
|
+
"tw:focus:text-neutral-800",
|
|
677
|
+
"tw:hover:not-disabled:!border-neutral-300",
|
|
678
|
+
"tw:hover:not-disabled:bg-neutral-100",
|
|
679
|
+
"tw:active:not-disabled:bg-neutral-200",
|
|
803
680
|
// contrasting icon hover, same as invisible
|
|
804
|
-
"[&_svg]:
|
|
805
|
-
"
|
|
806
|
-
"
|
|
681
|
+
"tw:[&_svg]:text-neutral-400",
|
|
682
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
683
|
+
"tw:active:not-disabled:[&_svg]:text-secondary-600",
|
|
807
684
|
// anchor disabled override
|
|
808
|
-
"aria-disabled:!
|
|
809
|
-
"aria-disabled:!
|
|
685
|
+
"tw:aria-disabled:!bg-white",
|
|
686
|
+
"tw:aria-disabled:!border-neutral-200"
|
|
810
687
|
],
|
|
811
688
|
inline: [
|
|
812
|
-
"tw
|
|
813
|
-
"tw
|
|
814
|
-
"tw
|
|
815
|
-
"[&_svg]:
|
|
816
|
-
"
|
|
817
|
-
"
|
|
689
|
+
"tw:text-neutral-800",
|
|
690
|
+
"tw:bg-transparent",
|
|
691
|
+
"tw:rounded-full",
|
|
692
|
+
"tw:[&_svg]:text-neutral-400",
|
|
693
|
+
"tw:not-disabled:hover:[&_svg]:text-secondary-600",
|
|
694
|
+
"tw:not-disabled:focus:[&_svg]:text-secondary-600"
|
|
818
695
|
]
|
|
819
696
|
},
|
|
820
697
|
size: {
|
|
821
698
|
medium: [
|
|
822
|
-
"tw
|
|
823
|
-
"tw
|
|
824
|
-
"tw
|
|
825
|
-
"tw
|
|
826
|
-
'[&_svg:not([class*="tw
|
|
699
|
+
"tw:max-h-10",
|
|
700
|
+
"tw:min-h-10",
|
|
701
|
+
"tw:px-4",
|
|
702
|
+
"tw:py-2.5",
|
|
703
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
827
704
|
],
|
|
828
705
|
small: [
|
|
829
|
-
"tw
|
|
830
|
-
"tw
|
|
831
|
-
"tw
|
|
832
|
-
"tw
|
|
833
|
-
'[&_svg:not([class*="tw
|
|
706
|
+
"tw:max-h-8",
|
|
707
|
+
"tw:min-h-8",
|
|
708
|
+
"tw:px-4",
|
|
709
|
+
"tw:py-1.5",
|
|
710
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
834
711
|
],
|
|
835
712
|
large: [
|
|
836
|
-
"tw
|
|
837
|
-
"tw
|
|
838
|
-
"tw
|
|
839
|
-
"tw
|
|
840
|
-
'[&_svg:not([class*="tw
|
|
713
|
+
"tw:max-h-12",
|
|
714
|
+
"tw:min-h-12",
|
|
715
|
+
"tw:px-4",
|
|
716
|
+
"tw:py-3.5",
|
|
717
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4'
|
|
841
718
|
],
|
|
842
|
-
"icon-lg": ["tw
|
|
843
|
-
icon: ["tw
|
|
844
|
-
"icon-sm": ["tw
|
|
845
|
-
"icon-xs": ["tw
|
|
719
|
+
"icon-lg": ["tw:size-12", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-6'],
|
|
720
|
+
icon: ["tw:size-10", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
721
|
+
"icon-sm": ["tw:size-8", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
722
|
+
"icon-xs": ["tw:size-6", "tw:p-0", 'tw:[&_svg:not([class*="tw:size-"])]:size-4'],
|
|
846
723
|
"icon-2xs": [
|
|
847
|
-
"
|
|
848
|
-
"tw
|
|
849
|
-
"tw
|
|
850
|
-
'[&_svg:not([class*="tw
|
|
724
|
+
"tw:!inline-flex",
|
|
725
|
+
"tw:size-5",
|
|
726
|
+
"tw:max-h-5",
|
|
727
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-3'
|
|
851
728
|
],
|
|
852
|
-
"icon-3xs": ["tw
|
|
729
|
+
"icon-3xs": ["tw:h-fit", "tw:w-fit", 'tw:[&_svg:not([class*="tw:size-"])]:size-4']
|
|
853
730
|
}
|
|
854
731
|
}
|
|
855
732
|
}
|
|
@@ -858,37 +735,37 @@ var init_styles = __esm({
|
|
|
858
735
|
[
|
|
859
736
|
"tailwindcss-preflight",
|
|
860
737
|
// layout
|
|
861
|
-
"tw
|
|
862
|
-
"tw
|
|
863
|
-
"tw
|
|
864
|
-
"tw
|
|
865
|
-
"tw
|
|
866
|
-
"tw
|
|
738
|
+
"tw:relative",
|
|
739
|
+
"tw:inline-flex",
|
|
740
|
+
"tw:items-center",
|
|
741
|
+
"tw:justify-center",
|
|
742
|
+
"tw:whitespace-nowrap",
|
|
743
|
+
"tw:gap-2",
|
|
867
744
|
// border
|
|
868
|
-
"tw
|
|
869
|
-
"tw
|
|
870
|
-
"tw
|
|
745
|
+
"tw:border",
|
|
746
|
+
"tw:border-transparent",
|
|
747
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
871
748
|
// text
|
|
872
|
-
"tw
|
|
873
|
-
"tw
|
|
749
|
+
"tw:font-medium",
|
|
750
|
+
"tw:select-none",
|
|
874
751
|
// focus visible
|
|
875
|
-
"
|
|
876
|
-
"focus-visible:
|
|
752
|
+
"tw:!outline-hidden",
|
|
753
|
+
"tw:focus-visible:ring-2",
|
|
877
754
|
// disabled
|
|
878
|
-
"disabled:
|
|
879
|
-
"disabled:
|
|
880
|
-
"active:
|
|
881
|
-
"tw
|
|
882
|
-
"tw
|
|
755
|
+
"tw:disabled:cursor-not-allowed",
|
|
756
|
+
"tw:disabled:opacity-50",
|
|
757
|
+
"tw:active:opacity-60",
|
|
758
|
+
"tw:transition-all",
|
|
759
|
+
"tw:bg-clip-padding",
|
|
883
760
|
// anchor support
|
|
884
|
-
"
|
|
885
|
-
"aria-disabled:
|
|
886
|
-
"aria-disabled:
|
|
761
|
+
"tw:!no-underline",
|
|
762
|
+
"tw:aria-disabled:cursor-not-allowed",
|
|
763
|
+
"tw:aria-disabled:opacity-50",
|
|
887
764
|
// icon
|
|
888
|
-
"tw
|
|
889
|
-
"[&_svg]:
|
|
890
|
-
"[&_svg]:
|
|
891
|
-
"[&_svg:not([class*='tw
|
|
765
|
+
"tw:shrink-0",
|
|
766
|
+
"tw:[&_svg]:pointer-events-none",
|
|
767
|
+
"tw:[&_svg]:shrink-0",
|
|
768
|
+
"tw:[&_svg:not([class*='tw:size-'])]:size-4"
|
|
892
769
|
],
|
|
893
770
|
{
|
|
894
771
|
defaultVariants: {
|
|
@@ -897,77 +774,77 @@ var init_styles = __esm({
|
|
|
897
774
|
},
|
|
898
775
|
variants: {
|
|
899
776
|
block: {
|
|
900
|
-
true: ["tw
|
|
777
|
+
true: ["tw:w-full"]
|
|
901
778
|
},
|
|
902
779
|
variant: {
|
|
903
780
|
primary: [
|
|
904
|
-
"tw
|
|
905
|
-
"tw
|
|
906
|
-
"[a]:hover:
|
|
907
|
-
"hover:not-disabled:
|
|
908
|
-
"hover:
|
|
909
|
-
"focus:
|
|
910
|
-
"focus-visible:
|
|
911
|
-
"focus-visible:
|
|
781
|
+
"tw:bg-primary",
|
|
782
|
+
"tw:text-primary-foreground",
|
|
783
|
+
"tw:[a]:hover:bg-primary/80",
|
|
784
|
+
"tw:hover:not-disabled:bg-primary/90",
|
|
785
|
+
"tw:hover:text-primary-foreground",
|
|
786
|
+
"tw:focus:text-primary-foreground",
|
|
787
|
+
"tw:focus-visible:border-primary",
|
|
788
|
+
"tw:focus-visible:ring-ring/50"
|
|
912
789
|
],
|
|
913
790
|
secondary: [
|
|
914
|
-
"tw
|
|
915
|
-
"tw
|
|
916
|
-
"hover:not-disabled:
|
|
917
|
-
"focus-visible:
|
|
918
|
-
"focus-visible:
|
|
791
|
+
"tw:bg-primary/10",
|
|
792
|
+
"tw:text-primary",
|
|
793
|
+
"tw:hover:not-disabled:bg-primary/20",
|
|
794
|
+
"tw:focus-visible:border-primary",
|
|
795
|
+
"tw:focus-visible:ring-ring/50"
|
|
919
796
|
],
|
|
920
797
|
// should be called "destructive" by Figma
|
|
921
798
|
danger: [
|
|
922
|
-
"tw
|
|
923
|
-
"tw
|
|
924
|
-
"hover:
|
|
925
|
-
"focus:
|
|
926
|
-
"focus-visible:
|
|
927
|
-
"focus-visible:
|
|
799
|
+
"tw:bg-destructive",
|
|
800
|
+
"tw:text-destructive-foreground",
|
|
801
|
+
"tw:hover:text-destructive-foreground",
|
|
802
|
+
"tw:focus:text-destructive-foreground",
|
|
803
|
+
"tw:focus-visible:border-destructive",
|
|
804
|
+
"tw:focus-visible:ring-destructive/20"
|
|
928
805
|
],
|
|
929
806
|
outline: [
|
|
930
|
-
"
|
|
931
|
-
"tw
|
|
807
|
+
"tw:!border-input",
|
|
808
|
+
"tw:bg-background",
|
|
932
809
|
// Semantic base text color so the label/icon flips in dark mode
|
|
933
810
|
// (matches `invisible`); previously unset → inherited a fixed dark color.
|
|
934
|
-
"tw
|
|
811
|
+
"tw:text-foreground",
|
|
935
812
|
// Hover follows the brand primary (translucent tint), matching the
|
|
936
813
|
// `secondary` variant — not the fixed `accent` blue.
|
|
937
|
-
"hover:not-disabled:
|
|
938
|
-
"hover:not-disabled:
|
|
939
|
-
"hover:active:
|
|
940
|
-
"focus-visible:!
|
|
941
|
-
"focus-visible:
|
|
814
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
815
|
+
"tw:hover:not-disabled:text-primary",
|
|
816
|
+
"tw:hover:active:bg-background",
|
|
817
|
+
"tw:focus-visible:!border-primary",
|
|
818
|
+
"tw:focus-visible:ring-ring/50"
|
|
942
819
|
],
|
|
943
820
|
// should be called "ghost" by Figma
|
|
944
821
|
invisible: [
|
|
945
|
-
"tw
|
|
946
|
-
"tw
|
|
947
|
-
"hover:not-disabled:
|
|
948
|
-
"hover:not-disabled:
|
|
949
|
-
"hover:not-disabled:
|
|
950
|
-
"focus-visible:
|
|
822
|
+
"tw:bg-transparent",
|
|
823
|
+
"tw:text-foreground",
|
|
824
|
+
"tw:hover:not-disabled:bg-primary/10",
|
|
825
|
+
"tw:hover:not-disabled:text-primary",
|
|
826
|
+
"tw:hover:not-disabled:border-primary/10",
|
|
827
|
+
"tw:focus-visible:ring-ring/50"
|
|
951
828
|
],
|
|
952
829
|
// should be called "link" by Figma
|
|
953
830
|
inline: [
|
|
954
|
-
"tw
|
|
955
|
-
"tw
|
|
956
|
-
"hover:
|
|
957
|
-
"hover:active:
|
|
958
|
-
"focus-visible:
|
|
831
|
+
"tw:bg-transparent",
|
|
832
|
+
"tw:text-primary",
|
|
833
|
+
"tw:hover:underline",
|
|
834
|
+
"tw:hover:active:bg-transparent",
|
|
835
|
+
"tw:focus-visible:ring-ring/50"
|
|
959
836
|
]
|
|
960
837
|
},
|
|
961
838
|
size: {
|
|
962
839
|
// should be called "default" by Figma
|
|
963
|
-
medium: ["tw
|
|
840
|
+
medium: ["tw:max-h-9", "tw:py-2", "tw:px-4", "tw:text-sm"],
|
|
964
841
|
// should be called "small" by Figma
|
|
965
|
-
small: ["tw
|
|
842
|
+
small: ["tw:max-h-8", "tw:py-2", "tw:px-3", "tw:text-xs"],
|
|
966
843
|
// should be called "large" by Figma
|
|
967
|
-
large: ["tw
|
|
968
|
-
"icon-lg": ["tw
|
|
969
|
-
icon: ["tw
|
|
970
|
-
"icon-sm": ["tw
|
|
844
|
+
large: ["tw:max-h-10", "tw:py-2.5", "tw:px-6", "tw:text-sm"],
|
|
845
|
+
"icon-lg": ["tw:size-10"],
|
|
846
|
+
icon: ["tw:size-9"],
|
|
847
|
+
"icon-sm": ["tw:size-8"],
|
|
971
848
|
// unsupported in ARGO, remove when old design is gone
|
|
972
849
|
"icon-xs": [],
|
|
973
850
|
"icon-2xs": [],
|
|
@@ -1024,7 +901,7 @@ var init_Button = __esm({
|
|
|
1024
901
|
onClick: handleClick,
|
|
1025
902
|
className: cn(classNames),
|
|
1026
903
|
children: [
|
|
1027
|
-
isLoading && /* @__PURE__ */ jsxRuntime.jsx(
|
|
904
|
+
isLoading && /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:size-4 tw:shrink-0 tw:animate-spin" }),
|
|
1028
905
|
/* @__PURE__ */ jsxRuntime.jsx(reactSlot.Slottable, { children: isLoading && isIconOnly ? null : children })
|
|
1029
906
|
]
|
|
1030
907
|
}
|
|
@@ -1037,18 +914,18 @@ var init_ButtonInline = __esm({
|
|
|
1037
914
|
classVarianceAuthority.cva(
|
|
1038
915
|
[
|
|
1039
916
|
"tailwindcss-preflight",
|
|
1040
|
-
"tw
|
|
1041
|
-
"tw
|
|
1042
|
-
"tw
|
|
1043
|
-
"tw
|
|
1044
|
-
"disabled:
|
|
1045
|
-
"disabled:
|
|
1046
|
-
"disabled:
|
|
1047
|
-
"disabled:
|
|
1048
|
-
"[&_svg]:
|
|
917
|
+
"tw:inline-flex",
|
|
918
|
+
"tw:items-center",
|
|
919
|
+
"tw:gap-2",
|
|
920
|
+
"tw:underline-offset-2",
|
|
921
|
+
"tw:disabled:opacity-40",
|
|
922
|
+
"tw:disabled:cursor-not-allowed",
|
|
923
|
+
"tw:disabled:text-neutral-500",
|
|
924
|
+
"tw:disabled:no-underline",
|
|
925
|
+
"tw:disabled:[&_svg]:text-neutral-400",
|
|
1049
926
|
// Default size for nested Lucide icons; callers can override on the icon.
|
|
1050
|
-
"[&_svg.lucide:not([class*='tw
|
|
1051
|
-
"[&_svg]:
|
|
927
|
+
"tw:[&_svg.lucide:not([class*='tw:size-'])]:size-4",
|
|
928
|
+
"tw:[&_svg]:shrink-0"
|
|
1052
929
|
],
|
|
1053
930
|
{
|
|
1054
931
|
defaultVariants: {
|
|
@@ -1057,15 +934,15 @@ var init_ButtonInline = __esm({
|
|
|
1057
934
|
},
|
|
1058
935
|
variants: {
|
|
1059
936
|
color: {
|
|
1060
|
-
link: ["tw
|
|
1061
|
-
dark: ["tw
|
|
1062
|
-
danger: ["tw
|
|
1063
|
-
muted: ["tw
|
|
937
|
+
link: ["tw:text-primary", "tw:hover:text-primary/90", "tw:[&_svg]:text-primary"],
|
|
938
|
+
dark: ["tw:text-neutral-800 tw:[&_svg]:text-neutral-400"],
|
|
939
|
+
danger: ["tw:text-error-500 tw:[&_svg]:text-error-500"],
|
|
940
|
+
muted: ["tw:text-muted-foreground tw:[&_svg]:text-muted-foreground"],
|
|
1064
941
|
custom: []
|
|
1065
942
|
},
|
|
1066
943
|
variant: {
|
|
1067
|
-
link: ["tw
|
|
1068
|
-
"link-reverse": ["tw
|
|
944
|
+
link: ["tw:underline", "tw:hover:no-underline"],
|
|
945
|
+
"link-reverse": ["tw:no-underline", "", "tw:hover:underline"],
|
|
1069
946
|
custom: []
|
|
1070
947
|
}
|
|
1071
948
|
}
|
|
@@ -1081,12 +958,12 @@ var init_Button2 = __esm({
|
|
|
1081
958
|
init_ButtonInline();
|
|
1082
959
|
}
|
|
1083
960
|
});
|
|
1084
|
-
var
|
|
961
|
+
var Clipboard2;
|
|
1085
962
|
var init_Clipboard = __esm({
|
|
1086
963
|
"src/components/Clipboard/Clipboard.tsx"() {
|
|
1087
964
|
init_utils2();
|
|
1088
965
|
init_Tooltip2();
|
|
1089
|
-
|
|
966
|
+
Clipboard2 = ({
|
|
1090
967
|
ref,
|
|
1091
968
|
text: textProp,
|
|
1092
969
|
children,
|
|
@@ -1111,6 +988,7 @@ var init_Clipboard = __esm({
|
|
|
1111
988
|
}
|
|
1112
989
|
};
|
|
1113
990
|
const handleOnClick = (event) => {
|
|
991
|
+
setIsTooltipOpen(true);
|
|
1114
992
|
if (text && state === "ready") void copy(text);
|
|
1115
993
|
onClick?.(event);
|
|
1116
994
|
};
|
|
@@ -1125,6 +1003,7 @@ var init_Clipboard = __esm({
|
|
|
1125
1003
|
return tooltip;
|
|
1126
1004
|
})();
|
|
1127
1005
|
const tooltipVariant = state === "ready" && !!text ? tooltipVariantProp : "action";
|
|
1006
|
+
const hasTooltipContent = tooltipContent !== null && tooltipContent !== void 0;
|
|
1128
1007
|
return /* @__PURE__ */ jsxRuntime.jsxs(Tooltip.Root, { open: isTooltipOpen, onOpenChange: handleOnOpenChange, children: [
|
|
1129
1008
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1130
1009
|
Tooltip.Trigger,
|
|
@@ -1133,12 +1012,12 @@ var init_Clipboard = __esm({
|
|
|
1133
1012
|
asChild,
|
|
1134
1013
|
keepOpenOnClick: true,
|
|
1135
1014
|
onClick: handleOnClick,
|
|
1136
|
-
className: cn("tw
|
|
1015
|
+
className: cn("tw:cursor-pointer", className),
|
|
1137
1016
|
ref,
|
|
1138
1017
|
children: children ?? text
|
|
1139
1018
|
}
|
|
1140
1019
|
),
|
|
1141
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1020
|
+
hasTooltipContent && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1142
1021
|
Tooltip.Content,
|
|
1143
1022
|
{
|
|
1144
1023
|
keepOpenOnPointerDownOutside: true,
|
|
@@ -1164,7 +1043,7 @@ var init_ClipboardButton = __esm({
|
|
|
1164
1043
|
init_Button2();
|
|
1165
1044
|
init_Clipboard2();
|
|
1166
1045
|
init_icons();
|
|
1167
|
-
DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(
|
|
1046
|
+
DEFAULT_ICON = /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Copy, {});
|
|
1168
1047
|
DEFAULT_ARIA_LABEL = "Copy";
|
|
1169
1048
|
ClipboardButton = ({
|
|
1170
1049
|
// clipboard props
|
|
@@ -1181,7 +1060,7 @@ var init_ClipboardButton = __esm({
|
|
|
1181
1060
|
const defaultAriaLabel = typeof tooltip === "string" && tooltip.trim() ? tooltip : DEFAULT_ARIA_LABEL;
|
|
1182
1061
|
const ariaLabel = rest["aria-label"] ?? (children == null ? defaultAriaLabel : void 0);
|
|
1183
1062
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1184
|
-
|
|
1063
|
+
Clipboard2,
|
|
1185
1064
|
{
|
|
1186
1065
|
asChild: true,
|
|
1187
1066
|
tooltip,
|
|
@@ -1215,10 +1094,19 @@ var init_ZoomableSvg = __esm({
|
|
|
1215
1094
|
MIN_SCALE = 0.5;
|
|
1216
1095
|
MAX_SCALE = 3;
|
|
1217
1096
|
ZOOM_STEP = 0.1;
|
|
1218
|
-
ZoomableSvg = ({
|
|
1097
|
+
ZoomableSvg = ({
|
|
1098
|
+
html,
|
|
1099
|
+
copyText,
|
|
1100
|
+
className,
|
|
1101
|
+
allowForeignObject,
|
|
1102
|
+
renderActions
|
|
1103
|
+
}) => {
|
|
1219
1104
|
const safeHtml = react.useMemo(
|
|
1220
|
-
() => DOMPurify__default.default.sanitize(html, {
|
|
1221
|
-
|
|
1105
|
+
() => DOMPurify__default.default.sanitize(html, {
|
|
1106
|
+
USE_PROFILES: { svg: true, svgFilters: true },
|
|
1107
|
+
...allowForeignObject ? { ADD_TAGS: ["foreignObject"] } : {}
|
|
1108
|
+
}),
|
|
1109
|
+
[html, allowForeignObject]
|
|
1222
1110
|
);
|
|
1223
1111
|
const containerRef = react.useRef(null);
|
|
1224
1112
|
const [scale, setScale] = react.useState(1);
|
|
@@ -1247,7 +1135,7 @@ var init_ZoomableSvg = __esm({
|
|
|
1247
1135
|
};
|
|
1248
1136
|
el.addEventListener("wheel", onWheel, { passive: false });
|
|
1249
1137
|
return () => el.removeEventListener("wheel", onWheel);
|
|
1250
|
-
}, []);
|
|
1138
|
+
}, [isFullscreen]);
|
|
1251
1139
|
const didDragRef = react.useRef(false);
|
|
1252
1140
|
const handleMouseDown = react.useCallback(
|
|
1253
1141
|
(e) => {
|
|
@@ -1291,7 +1179,7 @@ var init_ZoomableSvg = __esm({
|
|
|
1291
1179
|
"div",
|
|
1292
1180
|
{
|
|
1293
1181
|
role: "presentation",
|
|
1294
|
-
className: cn("tw
|
|
1182
|
+
className: cn("tw:group/zoom tw:relative", isFullscreen && "tw:h-full"),
|
|
1295
1183
|
onClick: handleClick,
|
|
1296
1184
|
children: [
|
|
1297
1185
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1300,8 +1188,8 @@ var init_ZoomableSvg = __esm({
|
|
|
1300
1188
|
role: "presentation",
|
|
1301
1189
|
ref: containerRef,
|
|
1302
1190
|
className: cn(
|
|
1303
|
-
"tw
|
|
1304
|
-
isFullscreen && "tw
|
|
1191
|
+
"tw:overflow-hidden tw:cursor-grab tw:active:cursor-grabbing tw:p-3",
|
|
1192
|
+
isFullscreen && "tw:h-full"
|
|
1305
1193
|
),
|
|
1306
1194
|
onMouseDown: handleMouseDown,
|
|
1307
1195
|
onMouseMove: handleMouseMove,
|
|
@@ -1311,8 +1199,8 @@ var init_ZoomableSvg = __esm({
|
|
|
1311
1199
|
"div",
|
|
1312
1200
|
{
|
|
1313
1201
|
className: cn(
|
|
1314
|
-
"tw
|
|
1315
|
-
isFullscreen && "tw
|
|
1202
|
+
"tw:flex tw:justify-center tw:origin-center",
|
|
1203
|
+
isFullscreen && "tw:h-full tw:[&>svg]:h-full"
|
|
1316
1204
|
),
|
|
1317
1205
|
style: { transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` },
|
|
1318
1206
|
dangerouslySetInnerHTML: { __html: safeHtml }
|
|
@@ -1324,11 +1212,12 @@ var init_ZoomableSvg = __esm({
|
|
|
1324
1212
|
"div",
|
|
1325
1213
|
{
|
|
1326
1214
|
role: "presentation",
|
|
1327
|
-
className: "tw
|
|
1215
|
+
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",
|
|
1328
1216
|
onClick: stopPropagation,
|
|
1329
1217
|
children: [
|
|
1330
1218
|
isZoomed && /* @__PURE__ */ jsxRuntime.jsx(Tooltip, { tooltip: "Reset zoom", placement: "top", triggerAsChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Button, { size: "small", variant: "outline", onClick: handleReset, children: "Reset" }) }),
|
|
1331
1219
|
copyText && /* @__PURE__ */ jsxRuntime.jsx(ClipboardButton, { text: copyText, tooltip: "Copy code", size: "icon-sm", variant: "outline" }),
|
|
1220
|
+
renderActions?.(safeHtml),
|
|
1332
1221
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1333
1222
|
Tooltip,
|
|
1334
1223
|
{
|
|
@@ -1342,7 +1231,7 @@ var init_ZoomableSvg = __esm({
|
|
|
1342
1231
|
variant: "outline",
|
|
1343
1232
|
"aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
|
|
1344
1233
|
onClick: () => setIsFullscreen((f) => !f),
|
|
1345
|
-
children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1234
|
+
children: isFullscreen ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Minimize2, { className: "tw:size-4" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Maximize2, { className: "tw:size-4" })
|
|
1346
1235
|
}
|
|
1347
1236
|
)
|
|
1348
1237
|
}
|
|
@@ -1354,21 +1243,25 @@ var init_ZoomableSvg = __esm({
|
|
|
1354
1243
|
}
|
|
1355
1244
|
);
|
|
1356
1245
|
if (isFullscreen) {
|
|
1357
|
-
return
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1246
|
+
return reactDom.createPortal(
|
|
1247
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1248
|
+
"div",
|
|
1249
|
+
{
|
|
1250
|
+
role: "presentation",
|
|
1251
|
+
"data-testid": "zoomable-svg-fullscreen",
|
|
1252
|
+
className: "tw:fixed tw:inset-0 tw:z-[1060] tw:bg-muted tw:p-4 tailwindcss-preflight",
|
|
1253
|
+
onClick: stopPropagation,
|
|
1254
|
+
children: diagramContent
|
|
1255
|
+
}
|
|
1256
|
+
),
|
|
1257
|
+
document.body
|
|
1365
1258
|
);
|
|
1366
1259
|
}
|
|
1367
1260
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1368
1261
|
"div",
|
|
1369
1262
|
{
|
|
1370
1263
|
className: cn(
|
|
1371
|
-
"tw
|
|
1264
|
+
"tw:overflow-hidden tw:rounded-md tw:border tw:border-border tw:bg-muted",
|
|
1372
1265
|
className
|
|
1373
1266
|
),
|
|
1374
1267
|
children: diagramContent
|
|
@@ -1384,27 +1277,72 @@ var init_ZoomableSvg2 = __esm({
|
|
|
1384
1277
|
init_ZoomableSvg();
|
|
1385
1278
|
}
|
|
1386
1279
|
});
|
|
1280
|
+
var DiagramSkeleton;
|
|
1281
|
+
var init_DiagramSkeleton = __esm({
|
|
1282
|
+
"src/blocks/MermaidDiagram/DiagramSkeleton.tsx"() {
|
|
1283
|
+
init_Skeleton();
|
|
1284
|
+
DiagramSkeleton = () => /* @__PURE__ */ jsxRuntime.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__ */ jsxRuntime.jsx(Skeleton, { className: "tw:h-40" }) });
|
|
1285
|
+
}
|
|
1286
|
+
});
|
|
1287
|
+
|
|
1288
|
+
// src/blocks/MermaidDiagram/svgTransforms.ts
|
|
1289
|
+
var HTML_TAG, FOREIGN_OBJECT, ROOT_SVG_TAG, flattenForeignObjectLabels, STYLE_ATTR, makeResponsive;
|
|
1290
|
+
var init_svgTransforms = __esm({
|
|
1291
|
+
"src/blocks/MermaidDiagram/svgTransforms.ts"() {
|
|
1292
|
+
HTML_TAG = /<[^>]+>/g;
|
|
1293
|
+
FOREIGN_OBJECT = /(<foreignObject\b[^>]*>)([\s\S]*?)(<\/foreignObject>)/g;
|
|
1294
|
+
ROOT_SVG_TAG = /^(\s*<svg\b)([^>]*)(>)/i;
|
|
1295
|
+
flattenForeignObjectLabels = (svg) => svg.replace(FOREIGN_OBJECT, (_match, open, inner, close) => {
|
|
1296
|
+
const text = inner.replace(HTML_TAG, " ").replace(/\s+/g, " ").trim();
|
|
1297
|
+
return `${open}${text}${close}`;
|
|
1298
|
+
});
|
|
1299
|
+
STYLE_ATTR = /\s+style="([^"]*)"/i;
|
|
1300
|
+
makeResponsive = (svgString) => {
|
|
1301
|
+
const viewBoxMatch = svgString.match(/viewBox="[^"]*\s([\d.]+)\s[\d.]+"/);
|
|
1302
|
+
const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : void 0;
|
|
1303
|
+
return svgString.replace(ROOT_SVG_TAG, (_match, open, attrs, close) => {
|
|
1304
|
+
const existingStyle = attrs.match(STYLE_ATTR)?.[1] ?? "";
|
|
1305
|
+
const styleDecls = existingStyle.replace(/max-width:\s*[^;"]*;?\s*/gi, "").replace(/\s+/g, " ").trim().replace(/;$/, "");
|
|
1306
|
+
let nextAttrs = attrs.replace(/\s+width="[^"]*"/i, "").replace(/\s+height="[^"]*"/i, "").replace(STYLE_ATTR, "");
|
|
1307
|
+
nextAttrs += ' width="100%"';
|
|
1308
|
+
const styleParts = [styleDecls, vbWidth ? `max-width: ${vbWidth}px` : ""].filter(Boolean).join("; ");
|
|
1309
|
+
if (styleParts) nextAttrs += ` style="${styleParts}"`;
|
|
1310
|
+
return `${open}${nextAttrs}${close}`;
|
|
1311
|
+
});
|
|
1312
|
+
};
|
|
1313
|
+
}
|
|
1314
|
+
});
|
|
1387
1315
|
|
|
1388
1316
|
// src/blocks/MermaidDiagram/MermaidDiagram.tsx
|
|
1389
1317
|
var MermaidDiagram_exports = {};
|
|
1390
1318
|
__export(MermaidDiagram_exports, {
|
|
1391
1319
|
MermaidDiagram: () => MermaidDiagram
|
|
1392
1320
|
});
|
|
1393
|
-
var PRIMARY_FALLBACK_CHANNELS, resolvePrimary, mermaidPromise, getMermaid, stripFontImports,
|
|
1321
|
+
var PRIMARY_FALLBACK_CHANNELS, resolvePrimary, mermaidPromise, registerLucideIconPack, getMermaid, stripFontImports, hasIconSyntax, tryFastRender, RENDER_DEBOUNCE_MS, svgCache, resolveSyncSvg, MermaidDiagram;
|
|
1394
1322
|
var init_MermaidDiagram = __esm({
|
|
1395
1323
|
"src/blocks/MermaidDiagram/MermaidDiagram.tsx"() {
|
|
1396
|
-
init_Skeleton();
|
|
1397
1324
|
init_ZoomableSvg2();
|
|
1398
1325
|
init_utils2();
|
|
1326
|
+
init_DiagramSkeleton();
|
|
1327
|
+
init_svgTransforms();
|
|
1399
1328
|
PRIMARY_FALLBACK_CHANNELS = "31 143 255";
|
|
1400
1329
|
resolvePrimary = () => {
|
|
1401
|
-
const channels = typeof document === "undefined" ? PRIMARY_FALLBACK_CHANNELS : getComputedStyle(document.documentElement).getPropertyValue("--
|
|
1330
|
+
const channels = typeof document === "undefined" ? PRIMARY_FALLBACK_CHANNELS : getComputedStyle(document.documentElement).getPropertyValue("--primary").trim() || PRIMARY_FALLBACK_CHANNELS;
|
|
1402
1331
|
return `rgb(${channels})`;
|
|
1403
1332
|
};
|
|
1404
1333
|
mermaidPromise = null;
|
|
1334
|
+
registerLucideIconPack = (m) => {
|
|
1335
|
+
m.registerIconPacks([
|
|
1336
|
+
{
|
|
1337
|
+
name: "lucide",
|
|
1338
|
+
loader: () => import('@iconify-json/lucide/icons.json').then((mod) => mod.default)
|
|
1339
|
+
}
|
|
1340
|
+
]);
|
|
1341
|
+
};
|
|
1405
1342
|
getMermaid = () => {
|
|
1406
1343
|
if (!mermaidPromise) {
|
|
1407
1344
|
mermaidPromise = import('mermaid').then((m) => {
|
|
1345
|
+
registerLucideIconPack(m.default);
|
|
1408
1346
|
m.default.initialize({
|
|
1409
1347
|
startOnLoad: false,
|
|
1410
1348
|
securityLevel: "strict",
|
|
@@ -1468,7 +1406,9 @@ var init_MermaidDiagram = __esm({
|
|
|
1468
1406
|
return mermaidPromise;
|
|
1469
1407
|
};
|
|
1470
1408
|
stripFontImports = (svg) => svg.replace(/@import\s+url\([^)]*fonts\.googleapis\.com[^)]*\);?\s*/g, "");
|
|
1409
|
+
hasIconSyntax = (code) => /@\{[^}]*\bicon\s*:/.test(code) || /\b(?:icon|service|group)\b[^\n(]*\(\s*[\w-]+:/.test(code) || /\bfa[bslr]?:fa-/.test(code);
|
|
1471
1410
|
tryFastRender = (code) => {
|
|
1411
|
+
if (hasIconSyntax(code)) return null;
|
|
1472
1412
|
try {
|
|
1473
1413
|
return stripFontImports(
|
|
1474
1414
|
beautifulMermaid.renderMermaidSVG(code, {
|
|
@@ -1478,27 +1418,11 @@ var init_MermaidDiagram = __esm({
|
|
|
1478
1418
|
font: "Inter, system-ui, sans-serif"
|
|
1479
1419
|
})
|
|
1480
1420
|
);
|
|
1481
|
-
} catch {
|
|
1421
|
+
} catch (err) {
|
|
1422
|
+
console.debug("[MermaidDiagram] fast render unavailable, using async fallback:", err);
|
|
1482
1423
|
return null;
|
|
1483
1424
|
}
|
|
1484
1425
|
};
|
|
1485
|
-
makeResponsive = (svgString) => {
|
|
1486
|
-
const viewBoxMatch = svgString.match(/viewBox="[^"]*\s([\d.]+)\s[\d.]+"/);
|
|
1487
|
-
const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : void 0;
|
|
1488
|
-
let result = svgString.replace(/(<svg[^>]*?)\s+width="[^"]*"/i, '$1 width="100%"').replace(/(<svg[^>]*?)\s+height="[^"]*"/i, "$1");
|
|
1489
|
-
if (!vbWidth) return result;
|
|
1490
|
-
const hasStyle = /(<svg[^>]*?)\s+style="([^"]*)"/i.test(result);
|
|
1491
|
-
if (hasStyle) {
|
|
1492
|
-
result = result.replace(/(<svg[^>]*?)\s+style="([^"]*)"/i, (_m, pre, styles) => {
|
|
1493
|
-
const cleaned = styles.replace(/max-width:\s*[^;"]*;?\s*/g, "").trim();
|
|
1494
|
-
const combined = [cleaned, `max-width: ${vbWidth}px`].filter(Boolean).join("; ");
|
|
1495
|
-
return `${pre} style="${combined}"`;
|
|
1496
|
-
});
|
|
1497
|
-
} else {
|
|
1498
|
-
result = result.replace(/<svg/, `<svg style="max-width: ${vbWidth}px"`);
|
|
1499
|
-
}
|
|
1500
|
-
return result;
|
|
1501
|
-
};
|
|
1502
1426
|
RENDER_DEBOUNCE_MS = 300;
|
|
1503
1427
|
svgCache = /* @__PURE__ */ new Map();
|
|
1504
1428
|
resolveSyncSvg = (code) => {
|
|
@@ -1508,7 +1432,7 @@ var init_MermaidDiagram = __esm({
|
|
|
1508
1432
|
if (fast) svgCache.set(code, fast);
|
|
1509
1433
|
return fast;
|
|
1510
1434
|
};
|
|
1511
|
-
MermaidDiagram = ({ code }) => {
|
|
1435
|
+
MermaidDiagram = ({ code, renderActions }) => {
|
|
1512
1436
|
const id = react.useId();
|
|
1513
1437
|
const [svg, setSvg] = react.useState(() => resolveSyncSvg(code));
|
|
1514
1438
|
const [renderFailed, setRenderFailed] = react.useState(false);
|
|
@@ -1539,8 +1463,9 @@ var init_MermaidDiagram = __esm({
|
|
|
1539
1463
|
try {
|
|
1540
1464
|
const result = await mermaidModule.default.render(rendererId, code, container);
|
|
1541
1465
|
if (renderIdRef.current === currentRenderId && result) {
|
|
1542
|
-
|
|
1543
|
-
|
|
1466
|
+
const svgOutput = flattenForeignObjectLabels(result.svg);
|
|
1467
|
+
svgCache.set(code, svgOutput);
|
|
1468
|
+
setSvg(svgOutput);
|
|
1544
1469
|
setRenderFailed(false);
|
|
1545
1470
|
}
|
|
1546
1471
|
} finally {
|
|
@@ -1569,11 +1494,11 @@ var init_MermaidDiagram = __esm({
|
|
|
1569
1494
|
"pre",
|
|
1570
1495
|
{
|
|
1571
1496
|
className: cn(
|
|
1572
|
-
"tw
|
|
1573
|
-
"tw
|
|
1574
|
-
"tw
|
|
1575
|
-
"tw
|
|
1576
|
-
"tw
|
|
1497
|
+
"tw:my-3 tw:overflow-auto tw:whitespace-pre-wrap tw:break-all",
|
|
1498
|
+
"tw:py-3 tw:px-4",
|
|
1499
|
+
"tw:bg-neutral-50",
|
|
1500
|
+
"tw:rounded-md tw:text-neutral-400",
|
|
1501
|
+
"tw:text-sm tw:font-mono"
|
|
1577
1502
|
),
|
|
1578
1503
|
children: /* @__PURE__ */ jsxRuntime.jsx("code", { children: code })
|
|
1579
1504
|
}
|
|
@@ -1587,17 +1512,19 @@ var init_MermaidDiagram = __esm({
|
|
|
1587
1512
|
copyText: `\`\`\`mermaid
|
|
1588
1513
|
${code}
|
|
1589
1514
|
\`\`\``,
|
|
1590
|
-
className: "tw
|
|
1515
|
+
className: "tw:my-3",
|
|
1516
|
+
allowForeignObject: true,
|
|
1517
|
+
renderActions
|
|
1591
1518
|
},
|
|
1592
1519
|
code
|
|
1593
1520
|
);
|
|
1594
1521
|
}
|
|
1595
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1522
|
+
return /* @__PURE__ */ jsxRuntime.jsx(DiagramSkeleton, {});
|
|
1596
1523
|
};
|
|
1597
1524
|
}
|
|
1598
1525
|
});
|
|
1599
1526
|
|
|
1600
|
-
// src/
|
|
1527
|
+
// src/blocks/MarkdownEditor/MarkdownEditor.tsx
|
|
1601
1528
|
init_utils2();
|
|
1602
1529
|
var ImageRendererContext = react.createContext(null);
|
|
1603
1530
|
var ImageRendererProvider = ImageRendererContext;
|
|
@@ -1606,7 +1533,7 @@ var isPlaceholder = (src) => src.startsWith("upload-placeholder-");
|
|
|
1606
1533
|
var ImageNodeComponent = ({ src, alt }) => {
|
|
1607
1534
|
const renderer = useImageRenderer();
|
|
1608
1535
|
if (isPlaceholder(src)) {
|
|
1609
|
-
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw
|
|
1536
|
+
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw:inline-flex tw:items-center tw:gap-1 tw:rounded tw:bg-neutral-100 tw:px-2 tw:py-1 tw:text-xs tw:text-neutral-400", children: "Uploading image\u2026" });
|
|
1610
1537
|
}
|
|
1611
1538
|
if (renderer) return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: renderer({ src, alt }) });
|
|
1612
1539
|
return /* @__PURE__ */ jsxRuntime.jsx("img", { src, alt });
|
|
@@ -1693,7 +1620,7 @@ var $isImageNode = (node) => {
|
|
|
1693
1620
|
return node instanceof ImageNode;
|
|
1694
1621
|
};
|
|
1695
1622
|
|
|
1696
|
-
// src/
|
|
1623
|
+
// src/blocks/MarkdownEditor/nodes/MermaidNodeComponent.tsx
|
|
1697
1624
|
init_Skeleton();
|
|
1698
1625
|
var MermaidDiagram2 = react.lazy(
|
|
1699
1626
|
() => Promise.resolve().then(() => (init_MermaidDiagram(), MermaidDiagram_exports)).then(
|
|
@@ -1710,7 +1637,7 @@ var MermaidNodeComponent = ({ code }) => {
|
|
|
1710
1637
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1711
1638
|
react.Suspense,
|
|
1712
1639
|
{
|
|
1713
|
-
fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw
|
|
1640
|
+
fallback: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw:my-3 tw:overflow-hidden tw:rounded-card tw:border tw:border-neutral-150 tw:bg-neutral-50 tw:p-6", children: /* @__PURE__ */ jsxRuntime.jsx(Skeleton, { className: "tw:h-40" }) }),
|
|
1714
1641
|
children: /* @__PURE__ */ jsxRuntime.jsx(MermaidDiagram2, { code })
|
|
1715
1642
|
}
|
|
1716
1643
|
);
|
|
@@ -1776,11 +1703,7 @@ init_context();
|
|
|
1776
1703
|
|
|
1777
1704
|
// src/components/Toast/ToastAction.tsx
|
|
1778
1705
|
init_utils2();
|
|
1779
|
-
var ToastAction = ({
|
|
1780
|
-
ref,
|
|
1781
|
-
className,
|
|
1782
|
-
...rest
|
|
1783
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1706
|
+
var ToastAction = ({ ref, className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1784
1707
|
"button",
|
|
1785
1708
|
{
|
|
1786
1709
|
...rest,
|
|
@@ -1789,21 +1712,21 @@ var ToastAction = ({
|
|
|
1789
1712
|
type: "button",
|
|
1790
1713
|
className: cn(
|
|
1791
1714
|
// layout
|
|
1792
|
-
"tw
|
|
1793
|
-
"tw
|
|
1794
|
-
"tw
|
|
1795
|
-
"tw
|
|
1796
|
-
"tw
|
|
1715
|
+
"tw:col-start-3",
|
|
1716
|
+
"tw:row-start-1",
|
|
1717
|
+
"tw:flex",
|
|
1718
|
+
"tw:items-center",
|
|
1719
|
+
"tw:justify-center",
|
|
1797
1720
|
// font
|
|
1798
|
-
"tw
|
|
1799
|
-
"tw
|
|
1800
|
-
"tw
|
|
1721
|
+
"tw:text-xs",
|
|
1722
|
+
"tw:font-medium",
|
|
1723
|
+
"tw:text-primary",
|
|
1801
1724
|
// sizing
|
|
1802
|
-
"tw
|
|
1803
|
-
"tw
|
|
1725
|
+
"tw:px-2",
|
|
1726
|
+
"tw:h-6",
|
|
1804
1727
|
// styles
|
|
1805
|
-
"tw
|
|
1806
|
-
"tw
|
|
1728
|
+
"tw:bg-primary-foreground",
|
|
1729
|
+
"tw:rounded",
|
|
1807
1730
|
className
|
|
1808
1731
|
)
|
|
1809
1732
|
}
|
|
@@ -1811,22 +1734,17 @@ var ToastAction = ({
|
|
|
1811
1734
|
|
|
1812
1735
|
// src/components/Toast/ToastDescription.tsx
|
|
1813
1736
|
init_utils2();
|
|
1814
|
-
var ToastDescription = ({
|
|
1815
|
-
ref,
|
|
1816
|
-
className,
|
|
1817
|
-
children,
|
|
1818
|
-
...rest
|
|
1819
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1737
|
+
var ToastDescription = ({ ref, className, children, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1820
1738
|
"div",
|
|
1821
1739
|
{
|
|
1822
1740
|
ref,
|
|
1823
1741
|
"data-slot": "toast-description",
|
|
1824
1742
|
className: cn(
|
|
1825
|
-
"tw
|
|
1826
|
-
"tw
|
|
1827
|
-
"tw
|
|
1828
|
-
"tw
|
|
1829
|
-
"group-data-[variant=default]/toast:
|
|
1743
|
+
"tw:col-start-2",
|
|
1744
|
+
"tw:font-normal",
|
|
1745
|
+
"tw:break-words",
|
|
1746
|
+
"tw:text-white",
|
|
1747
|
+
"tw:group-data-[variant=default]/toast:text-muted-foreground",
|
|
1830
1748
|
className
|
|
1831
1749
|
),
|
|
1832
1750
|
...rest,
|
|
@@ -1837,66 +1755,56 @@ var ToastDescription = ({
|
|
|
1837
1755
|
// src/components/Toast/ToastDismiss.tsx
|
|
1838
1756
|
init_icons();
|
|
1839
1757
|
init_utils2();
|
|
1840
|
-
var ToastDismiss = ({
|
|
1841
|
-
ref,
|
|
1842
|
-
className,
|
|
1843
|
-
...rest
|
|
1844
|
-
}) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1758
|
+
var ToastDismiss = ({ ref, className, ...rest }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1845
1759
|
"button",
|
|
1846
1760
|
{
|
|
1847
1761
|
ref,
|
|
1848
1762
|
"data-slot": "toast-dismiss",
|
|
1849
1763
|
className: cn(
|
|
1850
|
-
"tw
|
|
1851
|
-
"tw
|
|
1852
|
-
"tw
|
|
1853
|
-
"tw
|
|
1764
|
+
"tw:flex",
|
|
1765
|
+
"tw:justify-center",
|
|
1766
|
+
"tw:col-start-4",
|
|
1767
|
+
"tw:row-start-1",
|
|
1854
1768
|
"tailwindcss-preflight",
|
|
1855
|
-
"[&_svg]:
|
|
1856
|
-
'[&_svg:not([class*="tw
|
|
1857
|
-
"[&_svg]:
|
|
1858
|
-
"tw
|
|
1859
|
-
"group-data-[variant=default]/toast:[&_svg]:
|
|
1860
|
-
"group-data-[variant=default]/toast:group-data-[argo=true]/toast:[&_svg]:
|
|
1769
|
+
"tw:[&_svg]:aspect-square",
|
|
1770
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4',
|
|
1771
|
+
"tw:[&_svg]:m-1",
|
|
1772
|
+
"tw:text-white",
|
|
1773
|
+
"tw:group-data-[variant=default]/toast:[&_svg]:text-popover-foreground",
|
|
1774
|
+
"tw:group-data-[variant=default]/toast:group-data-[argo=true]/toast:[&_svg]:text-foreground",
|
|
1861
1775
|
className
|
|
1862
1776
|
),
|
|
1863
1777
|
type: "button",
|
|
1864
1778
|
...rest,
|
|
1865
1779
|
children: [
|
|
1866
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1867
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw
|
|
1780
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, {}),
|
|
1781
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw:sr-only", children: "Dismiss" })
|
|
1868
1782
|
]
|
|
1869
1783
|
}
|
|
1870
1784
|
);
|
|
1871
1785
|
|
|
1872
1786
|
// src/components/Toast/ToastDuration.tsx
|
|
1873
1787
|
init_utils2();
|
|
1874
|
-
var ToastDuration = ({
|
|
1875
|
-
ref,
|
|
1876
|
-
duration,
|
|
1877
|
-
className,
|
|
1878
|
-
style,
|
|
1879
|
-
...rest
|
|
1880
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1788
|
+
var ToastDuration = ({ ref, duration, className, style, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1881
1789
|
"span",
|
|
1882
1790
|
{
|
|
1883
1791
|
...rest,
|
|
1884
1792
|
ref,
|
|
1885
1793
|
className: cn(
|
|
1886
|
-
"tw
|
|
1887
|
-
"group-data-[variant=default]/toast:
|
|
1888
|
-
"group-data-[variant=default]/toast:group-data-[argo=true]/toast:
|
|
1889
|
-
"tw
|
|
1890
|
-
"tw
|
|
1794
|
+
"tw:bg-white/30",
|
|
1795
|
+
"tw:group-data-[variant=default]/toast:bg-popover-foreground/20",
|
|
1796
|
+
"tw:group-data-[variant=default]/toast:group-data-[argo=true]/toast:bg-foreground/20",
|
|
1797
|
+
"tw:rounded-bl-lg",
|
|
1798
|
+
"tw:mx-px",
|
|
1891
1799
|
// positioning
|
|
1892
|
-
"tw
|
|
1893
|
-
"tw
|
|
1894
|
-
"tw
|
|
1800
|
+
"tw:absolute",
|
|
1801
|
+
"tw:bottom-0",
|
|
1802
|
+
"tw:left-0",
|
|
1895
1803
|
// sizing
|
|
1896
|
-
"tw
|
|
1804
|
+
"tw:h-1",
|
|
1897
1805
|
// animation
|
|
1898
|
-
"tw
|
|
1899
|
-
"group-hover/toast:[animation-play-state:paused]",
|
|
1806
|
+
"tw:animate-toast-progress",
|
|
1807
|
+
"tw:group-hover/toast:[animation-play-state:paused]",
|
|
1900
1808
|
className
|
|
1901
1809
|
),
|
|
1902
1810
|
style: {
|
|
@@ -1908,27 +1816,22 @@ var ToastDuration = ({
|
|
|
1908
1816
|
|
|
1909
1817
|
// src/components/Toast/ToastTitle.tsx
|
|
1910
1818
|
init_utils2();
|
|
1911
|
-
var ToastTitle = ({
|
|
1912
|
-
ref,
|
|
1913
|
-
className,
|
|
1914
|
-
children,
|
|
1915
|
-
...rest
|
|
1916
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1819
|
+
var ToastTitle = ({ ref, className, children, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1917
1820
|
"div",
|
|
1918
1821
|
{
|
|
1919
1822
|
ref,
|
|
1920
1823
|
"data-slot": "toast-title",
|
|
1921
1824
|
className: cn(
|
|
1922
|
-
"tw
|
|
1923
|
-
"tw
|
|
1924
|
-
"tw
|
|
1925
|
-
"tw
|
|
1926
|
-
"tw
|
|
1927
|
-
"tw
|
|
1928
|
-
"group-data-[variant=default]/toast:
|
|
1929
|
-
"group-data-[variant=default]/toast:group-data-[argo=true]/toast:
|
|
1930
|
-
"tw
|
|
1931
|
-
"tw
|
|
1825
|
+
"tw:col-start-2",
|
|
1826
|
+
"tw:text-sm",
|
|
1827
|
+
"tw:leading-6",
|
|
1828
|
+
"tw:min-h-6",
|
|
1829
|
+
"tw:self-center",
|
|
1830
|
+
"tw:text-white",
|
|
1831
|
+
"tw:group-data-[variant=default]/toast:text-popover-foreground",
|
|
1832
|
+
"tw:group-data-[variant=default]/toast:group-data-[argo=true]/toast:text-foreground",
|
|
1833
|
+
"tw:break-words",
|
|
1834
|
+
"tw:font-medium",
|
|
1932
1835
|
className
|
|
1933
1836
|
),
|
|
1934
1837
|
...rest,
|
|
@@ -1938,24 +1841,24 @@ var ToastTitle = ({
|
|
|
1938
1841
|
var variants2 = classVarianceAuthority.cva(
|
|
1939
1842
|
[
|
|
1940
1843
|
"tailwindcss-preflight",
|
|
1941
|
-
"tw
|
|
1942
|
-
"tw
|
|
1844
|
+
"tw:group/toast",
|
|
1845
|
+
"tw:relative",
|
|
1943
1846
|
// layout
|
|
1944
|
-
"tw
|
|
1945
|
-
"tw
|
|
1946
|
-
"tw
|
|
1947
|
-
"has-[[data-slot=toast-description]]:
|
|
1948
|
-
"has-[[data-slot=toast-icon]]:
|
|
1949
|
-
"[&_[data-slot=toast-icon]]:
|
|
1950
|
-
"[&_[data-slot=toast-title]]:
|
|
1951
|
-
"[&_[data-slot=toast-description]]:
|
|
1952
|
-
"[&_[data-slot=toast-action]]:
|
|
1953
|
-
"[&_[data-slot=toast-description]]:
|
|
1954
|
-
"tw
|
|
1847
|
+
"tw:grid",
|
|
1848
|
+
"tw:grid-cols-[0_1fr_auto_auto]",
|
|
1849
|
+
"tw:items-start",
|
|
1850
|
+
"tw:has-[[data-slot=toast-description]]:grid-rows-[auto_auto]",
|
|
1851
|
+
"tw:has-[[data-slot=toast-icon]]:grid-cols-[auto_1fr_auto_auto]",
|
|
1852
|
+
"tw:[&_[data-slot=toast-icon]]:mr-2",
|
|
1853
|
+
"tw:[&_[data-slot=toast-title]]:mr-2.5",
|
|
1854
|
+
"tw:[&_[data-slot=toast-description]]:mr-2.5",
|
|
1855
|
+
"tw:[&_[data-slot=toast-action]]:mr-2",
|
|
1856
|
+
"tw:[&_[data-slot=toast-description]]:col-end-3",
|
|
1857
|
+
"tw:gap-y-0",
|
|
1955
1858
|
// styles
|
|
1956
|
-
"tw
|
|
1957
|
-
"tw
|
|
1958
|
-
"tw
|
|
1859
|
+
"tw:p-4",
|
|
1860
|
+
"tw:rounded-lg",
|
|
1861
|
+
"tw:shadow-md"
|
|
1959
1862
|
],
|
|
1960
1863
|
{
|
|
1961
1864
|
defaultVariants: {
|
|
@@ -1963,20 +1866,20 @@ var variants2 = classVarianceAuthority.cva(
|
|
|
1963
1866
|
},
|
|
1964
1867
|
variants: {
|
|
1965
1868
|
variant: {
|
|
1966
|
-
default: "tw
|
|
1967
|
-
error: "tw
|
|
1968
|
-
info: "tw
|
|
1969
|
-
success: "tw
|
|
1970
|
-
warning: "tw
|
|
1869
|
+
default: "tw:border tw:border-border tw:bg-popover",
|
|
1870
|
+
error: "tw:bg-error-550",
|
|
1871
|
+
info: "tw:bg-blue-600",
|
|
1872
|
+
success: "tw:bg-green-700",
|
|
1873
|
+
warning: "tw:bg-warning-550"
|
|
1971
1874
|
}
|
|
1972
1875
|
}
|
|
1973
1876
|
}
|
|
1974
1877
|
);
|
|
1975
1878
|
var DEFAULT_VARIANT_ICON = {
|
|
1976
|
-
error: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1977
|
-
info: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1978
|
-
success: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1979
|
-
warning: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1879
|
+
error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertTriangle, {}),
|
|
1880
|
+
info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, {}),
|
|
1881
|
+
success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, {}),
|
|
1882
|
+
warning: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.AlertCircle, {})
|
|
1980
1883
|
};
|
|
1981
1884
|
var ToastRoot = ({
|
|
1982
1885
|
id,
|
|
@@ -1990,7 +1893,7 @@ var ToastRoot = ({
|
|
|
1990
1893
|
}) => {
|
|
1991
1894
|
const renderArgo = useArgoDesign();
|
|
1992
1895
|
const icon = (() => {
|
|
1993
|
-
if (loading) return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1896
|
+
if (loading) return /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:animate-spin" });
|
|
1994
1897
|
if (iconProp) return iconProp;
|
|
1995
1898
|
if (variant === "default" || variant === null) return null;
|
|
1996
1899
|
return DEFAULT_VARIANT_ICON[variant];
|
|
@@ -2006,7 +1909,7 @@ var ToastRoot = ({
|
|
|
2006
1909
|
"data-argo": renderArgo,
|
|
2007
1910
|
className: cn(
|
|
2008
1911
|
variants2({ variant }),
|
|
2009
|
-
"data-[variant=default]:data-[argo=true]:
|
|
1912
|
+
"tw:data-[variant=default]:data-[argo=true]:bg-background"
|
|
2010
1913
|
),
|
|
2011
1914
|
children: [
|
|
2012
1915
|
icon && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -2014,17 +1917,17 @@ var ToastRoot = ({
|
|
|
2014
1917
|
{
|
|
2015
1918
|
"data-slot": "toast-icon",
|
|
2016
1919
|
className: cn(
|
|
2017
|
-
"tw
|
|
2018
|
-
"tw
|
|
2019
|
-
"tw
|
|
2020
|
-
"tw
|
|
2021
|
-
"tw
|
|
2022
|
-
"tw
|
|
2023
|
-
"tw
|
|
2024
|
-
'[&_svg:not([class*="tw
|
|
2025
|
-
"tw
|
|
2026
|
-
"group-data-[variant=default]/toast:
|
|
2027
|
-
"group-data-[variant=default]/toast:group-data-[argo=true]/toast:
|
|
1920
|
+
"tw:inline-flex",
|
|
1921
|
+
"tw:items-center",
|
|
1922
|
+
"tw:justify-center",
|
|
1923
|
+
"tw:self-center",
|
|
1924
|
+
"tw:aspect-square",
|
|
1925
|
+
"tw:size-5",
|
|
1926
|
+
"tw:shrink-0",
|
|
1927
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-5',
|
|
1928
|
+
"tw:text-white",
|
|
1929
|
+
"tw:group-data-[variant=default]/toast:text-popover-foreground",
|
|
1930
|
+
"tw:group-data-[variant=default]/toast:group-data-[argo=true]/toast:text-foreground"
|
|
2028
1931
|
),
|
|
2029
1932
|
children: icon
|
|
2030
1933
|
}
|
|
@@ -2070,7 +1973,7 @@ var toast = ({
|
|
|
2070
1973
|
dismissible,
|
|
2071
1974
|
duration,
|
|
2072
1975
|
// override default focus-visible styles to match our design
|
|
2073
|
-
className: cn("tw
|
|
1976
|
+
className: cn("tw:rounded-lg", "tw:focus-visible:!ring-4", "tw:focus-visible:!ring-ring/50")
|
|
2074
1977
|
});
|
|
2075
1978
|
};
|
|
2076
1979
|
toast.success = (title, options) => toast({
|
|
@@ -2098,7 +2001,7 @@ toast.info = (title, options) => toast({
|
|
|
2098
2001
|
toast.dismiss = (toastId) => sonner.toast.dismiss(toastId);
|
|
2099
2002
|
toast.dismissAll = () => sonner.toast.dismiss();
|
|
2100
2003
|
|
|
2101
|
-
// src/
|
|
2004
|
+
// src/blocks/MarkdownEditor/plugins/ImagePastePlugin.tsx
|
|
2102
2005
|
var ACCEPTED_IMAGE_TYPES = [
|
|
2103
2006
|
"image/png",
|
|
2104
2007
|
"image/jpeg",
|
|
@@ -2376,7 +2279,7 @@ var postprocessMarkdown = (markdown) => {
|
|
|
2376
2279
|
};
|
|
2377
2280
|
var unescapeMarkdownText = (markdown) => markdown.replace(/\\([*_`~\\])/g, "$1");
|
|
2378
2281
|
|
|
2379
|
-
// src/
|
|
2282
|
+
// src/blocks/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx
|
|
2380
2283
|
var IMPORT_TAG = "markdown-import";
|
|
2381
2284
|
var MarkdownSyncPlugin = ({
|
|
2382
2285
|
value,
|
|
@@ -2422,13 +2325,9 @@ var MarkdownSyncPlugin = ({
|
|
|
2422
2325
|
return null;
|
|
2423
2326
|
};
|
|
2424
2327
|
|
|
2425
|
-
// src/
|
|
2328
|
+
// src/blocks/MarkdownEditor/plugins/ToolbarPlugin.tsx
|
|
2426
2329
|
init_icons();
|
|
2427
2330
|
|
|
2428
|
-
// src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx
|
|
2429
|
-
init_icons();
|
|
2430
|
-
init_utils2();
|
|
2431
|
-
|
|
2432
2331
|
// src/components/DropdownMenu/DropdownMenu.tsx
|
|
2433
2332
|
init_context();
|
|
2434
2333
|
|
|
@@ -2441,59 +2340,59 @@ init_icons();
|
|
|
2441
2340
|
var variants3 = classVarianceAuthority.cva(
|
|
2442
2341
|
[
|
|
2443
2342
|
"tailwindcss-preflight",
|
|
2444
|
-
"tw
|
|
2343
|
+
"tw:pointer-events-none",
|
|
2445
2344
|
// sizing
|
|
2446
|
-
"tw
|
|
2447
|
-
"tw
|
|
2448
|
-
"tw
|
|
2345
|
+
"tw:size-4",
|
|
2346
|
+
"tw:aspect-square",
|
|
2347
|
+
"tw:shrink-0",
|
|
2449
2348
|
// layout
|
|
2450
|
-
"tw
|
|
2451
|
-
"tw
|
|
2452
|
-
"tw
|
|
2349
|
+
"tw:flex",
|
|
2350
|
+
"tw:items-center",
|
|
2351
|
+
"tw:justify-center"
|
|
2453
2352
|
],
|
|
2454
2353
|
{
|
|
2455
2354
|
variants: {
|
|
2456
2355
|
variant: {
|
|
2457
2356
|
none: [],
|
|
2458
2357
|
radio: [
|
|
2459
|
-
"tw
|
|
2460
|
-
"tw
|
|
2461
|
-
"tw
|
|
2462
|
-
"tw
|
|
2463
|
-
"group-data-[variant=default]/dropdown-menu-content:
|
|
2464
|
-
"group-data-[variant=argo]/dropdown-menu-content:
|
|
2465
|
-
'[&_svg:not([class*="tw
|
|
2466
|
-
"
|
|
2358
|
+
"tw:border",
|
|
2359
|
+
"tw:border-solid",
|
|
2360
|
+
"tw:border-border",
|
|
2361
|
+
"tw:rounded-full",
|
|
2362
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:bg-white",
|
|
2363
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:bg-background",
|
|
2364
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-2',
|
|
2365
|
+
"tw:data-[state=unchecked]:[&_svg]:hidden",
|
|
2467
2366
|
// Lucide Circle is stroke-only — force fill to match the stroke
|
|
2468
2367
|
// (currentColor) so the indicator reads as a solid dot.
|
|
2469
|
-
"[&_svg]:
|
|
2470
|
-
"group-data-[variant=argo]/dropdown-menu-content:[&_svg]:
|
|
2471
|
-
"group-data-[variant=default]/dropdown-menu-content:[&_svg]:
|
|
2368
|
+
"tw:[&_svg]:fill-current",
|
|
2369
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:[&_svg]:text-primary",
|
|
2370
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:[&_svg]:text-primary"
|
|
2472
2371
|
],
|
|
2473
|
-
check: ['[&_svg:not([class*="tw
|
|
2372
|
+
check: ['tw:[&_svg:not([class*="tw:size-"])]:size-3.5', "tw:[&_svg]:text-primary"],
|
|
2474
2373
|
checkbox: [
|
|
2475
|
-
"[&_svg]:
|
|
2476
|
-
"tw
|
|
2477
|
-
"tw
|
|
2478
|
-
"tw
|
|
2479
|
-
"group-data-[variant=default]/dropdown-menu-content:
|
|
2480
|
-
"group-data-[variant=argo]/dropdown-menu-content:
|
|
2481
|
-
'[&_svg:not([class*="tw
|
|
2482
|
-
"
|
|
2483
|
-
"group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:
|
|
2484
|
-
"group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:
|
|
2485
|
-
"group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:
|
|
2486
|
-
"group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:
|
|
2374
|
+
"tw:[&_svg]:text-primary-foreground",
|
|
2375
|
+
"tw:border",
|
|
2376
|
+
"tw:border-solid",
|
|
2377
|
+
"tw:rounded",
|
|
2378
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:border-neutral-200",
|
|
2379
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:border-input",
|
|
2380
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-3',
|
|
2381
|
+
"tw:data-[state=unchecked]:[&_svg]:hidden",
|
|
2382
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:border-primary",
|
|
2383
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:bg-primary",
|
|
2384
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:border-primary",
|
|
2385
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:bg-primary"
|
|
2487
2386
|
],
|
|
2488
2387
|
switch: [
|
|
2489
|
-
"tw
|
|
2388
|
+
"tw:size-5",
|
|
2490
2389
|
// Lucide SVGs default to 24×24 — constrain the rendered ToggleRight
|
|
2491
2390
|
// to the indicator slot so it doesn't overflow.
|
|
2492
|
-
'[&_svg:not([class*="tw
|
|
2493
|
-
"tw
|
|
2494
|
-
"data-[state=unchecked]:
|
|
2495
|
-
"group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:
|
|
2496
|
-
"group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:
|
|
2391
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-5',
|
|
2392
|
+
"tw:text-neutral-400",
|
|
2393
|
+
"tw:data-[state=unchecked]:rotate-180",
|
|
2394
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:text-primary",
|
|
2395
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:text-primary"
|
|
2497
2396
|
]
|
|
2498
2397
|
}
|
|
2499
2398
|
}
|
|
@@ -2506,9 +2405,9 @@ var DropdownMenuItemIndicator = ({
|
|
|
2506
2405
|
...rest
|
|
2507
2406
|
}) => {
|
|
2508
2407
|
const IconComp = (() => {
|
|
2509
|
-
if (variant === "switch") return
|
|
2510
|
-
if (variant === "radio") return
|
|
2511
|
-
return
|
|
2408
|
+
if (variant === "switch") return lucideReact.ToggleRight;
|
|
2409
|
+
if (variant === "radio") return lucideReact.Circle;
|
|
2410
|
+
return lucideReact.Check;
|
|
2512
2411
|
})();
|
|
2513
2412
|
const forceMount = (() => {
|
|
2514
2413
|
if (forceMountProp) return true;
|
|
@@ -2533,18 +2432,18 @@ var ItemIcon = ({ className, children, ...props }) => /* @__PURE__ */ jsxRuntime
|
|
|
2533
2432
|
{
|
|
2534
2433
|
...props,
|
|
2535
2434
|
className: cn(
|
|
2536
|
-
"tw
|
|
2537
|
-
"tw
|
|
2538
|
-
"tw
|
|
2539
|
-
"tw
|
|
2435
|
+
"tw:inline-flex",
|
|
2436
|
+
"tw:items-center",
|
|
2437
|
+
"tw:justify-center",
|
|
2438
|
+
"tw:aspect-square",
|
|
2540
2439
|
// 20px container fits the 16px Lucide glyph plus 2px breathing room
|
|
2541
|
-
// each side — the previous tw
|
|
2542
|
-
"tw
|
|
2543
|
-
'[&_svg:not([class*="tw
|
|
2544
|
-
"group-data-[variant=default]/dropdown-menu-content:
|
|
2545
|
-
"group-data-[variant=argo]/dropdown-menu-content:
|
|
2546
|
-
"group-data-[variant=argo]/dropdown-menu-content:group-aria-disabled:
|
|
2547
|
-
"group-data-[variant=default]/dropdown-menu-content:group-hover:
|
|
2440
|
+
// each side — the previous tw:size-4 + tw:p-0.5 clipped the 16px child.
|
|
2441
|
+
"tw:size-5",
|
|
2442
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4',
|
|
2443
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:text-neutral-400",
|
|
2444
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:text-primary",
|
|
2445
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:group-aria-disabled:text-muted-foreground",
|
|
2446
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:group-hover:text-primary",
|
|
2548
2447
|
className
|
|
2549
2448
|
),
|
|
2550
2449
|
children
|
|
@@ -2556,74 +2455,74 @@ init_utils2();
|
|
|
2556
2455
|
var itemVariants = cn(
|
|
2557
2456
|
// reset
|
|
2558
2457
|
"tailwindcss-preflight",
|
|
2559
|
-
"tw
|
|
2560
|
-
"tw
|
|
2561
|
-
"tw
|
|
2562
|
-
"tw
|
|
2458
|
+
"tw:outline-hidden",
|
|
2459
|
+
"tw:group",
|
|
2460
|
+
"tw:peer",
|
|
2461
|
+
"tw:relative",
|
|
2563
2462
|
// positioning
|
|
2564
|
-
"tw
|
|
2565
|
-
"tw
|
|
2566
|
-
"tw
|
|
2567
|
-
"tw
|
|
2568
|
-
"tw
|
|
2569
|
-
"tw
|
|
2570
|
-
"tw
|
|
2463
|
+
"tw:flex",
|
|
2464
|
+
"tw:flex-1",
|
|
2465
|
+
"tw:items-center",
|
|
2466
|
+
"tw:gap-2",
|
|
2467
|
+
"tw:cursor-pointer",
|
|
2468
|
+
"tw:select-none",
|
|
2469
|
+
"tw:transition-colors",
|
|
2571
2470
|
// spacing
|
|
2572
|
-
"tw
|
|
2471
|
+
"tw:p-2",
|
|
2573
2472
|
// typography
|
|
2574
|
-
"tw
|
|
2575
|
-
"tw
|
|
2576
|
-
"aria-disabled:
|
|
2577
|
-
"aria-disabled:
|
|
2578
|
-
"focus-visible:
|
|
2579
|
-
"group-data-[variant=default]/dropdown-menu-content:
|
|
2580
|
-
"group-data-[variant=default]/dropdown-menu-content:focus:
|
|
2581
|
-
"group-data-[variant=default]/dropdown-menu-content:focus:
|
|
2582
|
-
"group-data-[variant=default]/dropdown-menu-content:hover:
|
|
2583
|
-
"group-data-[variant=default]/dropdown-menu-content:hover:
|
|
2584
|
-
"group-data-[variant=argo]/dropdown-menu-content:
|
|
2585
|
-
"group-data-[variant=argo]/dropdown-menu-content:
|
|
2586
|
-
"group-data-[variant=argo]/dropdown-menu-content:focus:
|
|
2587
|
-
"group-data-[variant=argo]/dropdown-menu-content:focus:
|
|
2588
|
-
"group-data-[variant=argo]/dropdown-menu-content:hover:
|
|
2589
|
-
"group-data-[variant=argo]/dropdown-menu-content:hover:
|
|
2473
|
+
"tw:font-sans",
|
|
2474
|
+
"tw:text-sm",
|
|
2475
|
+
"tw:aria-disabled:pointer-events-none",
|
|
2476
|
+
"tw:aria-disabled:opacity-50",
|
|
2477
|
+
"tw:focus-visible:outline-hidden",
|
|
2478
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:rounded",
|
|
2479
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:focus:bg-neutral-100",
|
|
2480
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:focus:text-neutral-900",
|
|
2481
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:hover:bg-neutral-100",
|
|
2482
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:hover:text-neutral-900",
|
|
2483
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:rounded-md",
|
|
2484
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:text-popover-foreground",
|
|
2485
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:focus:text-primary",
|
|
2486
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:focus:bg-primary/10",
|
|
2487
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:hover:text-primary",
|
|
2488
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:hover:bg-primary/10"
|
|
2590
2489
|
);
|
|
2591
2490
|
var contentVariants = cn(
|
|
2592
2491
|
"tailwindcss-preflight",
|
|
2593
|
-
"tw
|
|
2492
|
+
"tw:group/dropdown-menu-content",
|
|
2594
2493
|
// Sit above Modal/Sheet (z-1051), matching the other floating overlays (Popover/Select z-1055)
|
|
2595
|
-
"tw
|
|
2494
|
+
"tw:z-[1055]",
|
|
2596
2495
|
// positioning
|
|
2597
|
-
"tw
|
|
2598
|
-
"tw
|
|
2599
|
-
"tw
|
|
2496
|
+
"tw:flex",
|
|
2497
|
+
"tw:flex-col",
|
|
2498
|
+
"tw:origin-(--radix-dropdown-menu-content-transform-origin)",
|
|
2600
2499
|
// sizing
|
|
2601
|
-
"tw
|
|
2602
|
-
"tw
|
|
2500
|
+
"tw:max-h-[var(--radix-dropdown-menu-content-available-height)]",
|
|
2501
|
+
"tw:min-w-32",
|
|
2603
2502
|
// border
|
|
2604
|
-
"tw
|
|
2605
|
-
"tw
|
|
2503
|
+
"tw:border",
|
|
2504
|
+
"tw:shadow-md",
|
|
2606
2505
|
// Legacy surface — fixed white panel.
|
|
2607
|
-
"data-[variant=default]:
|
|
2608
|
-
"data-[variant=default]:
|
|
2609
|
-
"data-[variant=default]:
|
|
2610
|
-
"data-[variant=default]:
|
|
2506
|
+
"tw:data-[variant=default]:rounded-md",
|
|
2507
|
+
"tw:data-[variant=default]:bg-white",
|
|
2508
|
+
"tw:data-[variant=default]:border-neutral-100",
|
|
2509
|
+
"tw:data-[variant=default]:text-neutral-800",
|
|
2611
2510
|
// Argo surface — semantic popover tokens (brand + dark aware).
|
|
2612
|
-
"data-[variant=argo]:
|
|
2613
|
-
"data-[variant=argo]:
|
|
2614
|
-
"data-[variant=argo]:
|
|
2615
|
-
"data-[variant=argo]:
|
|
2511
|
+
"tw:data-[variant=argo]:rounded-2xl",
|
|
2512
|
+
"tw:data-[variant=argo]:bg-popover",
|
|
2513
|
+
"tw:data-[variant=argo]:text-popover-foreground",
|
|
2514
|
+
"tw:data-[variant=argo]:border-border",
|
|
2616
2515
|
// animations
|
|
2617
|
-
"data-[state=open]:
|
|
2618
|
-
"data-[state=open]:
|
|
2619
|
-
"data-[state=open]:
|
|
2620
|
-
"data-[state=closed]:
|
|
2621
|
-
"data-[state=closed]:
|
|
2622
|
-
"data-[state=closed]:
|
|
2623
|
-
"data-[side=bottom]:
|
|
2624
|
-
"data-[side=left]:
|
|
2625
|
-
"data-[side=right]:
|
|
2626
|
-
"data-[side=top]:
|
|
2516
|
+
"tw:data-[state=open]:animate-in",
|
|
2517
|
+
"tw:data-[state=open]:fade-in-0",
|
|
2518
|
+
"tw:data-[state=open]:zoom-in-95",
|
|
2519
|
+
"tw:data-[state=closed]:animate-out",
|
|
2520
|
+
"tw:data-[state=closed]:fade-out-0",
|
|
2521
|
+
"tw:data-[state=closed]:zoom-out-95",
|
|
2522
|
+
"tw:data-[side=bottom]:slide-in-from-top-2",
|
|
2523
|
+
"tw:data-[side=left]:slide-in-from-right-2",
|
|
2524
|
+
"tw:data-[side=right]:slide-in-from-left-2",
|
|
2525
|
+
"tw:data-[side=top]:slide-in-from-bottom-2"
|
|
2627
2526
|
);
|
|
2628
2527
|
var DropdownMenuCheckboxItem = ({
|
|
2629
2528
|
className,
|
|
@@ -2637,7 +2536,7 @@ var DropdownMenuCheckboxItem = ({
|
|
|
2637
2536
|
...props
|
|
2638
2537
|
}) => {
|
|
2639
2538
|
const isAtStart = indicatorAlign === "start";
|
|
2640
|
-
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: isAtStart ? "" : "tw
|
|
2539
|
+
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: isAtStart ? "" : "tw:ml-auto", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:animate-spin" }) }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItemIndicator, { variant: indicator, className: isAtStart ? "" : "tw:ml-auto" });
|
|
2641
2540
|
const handleSelect = (event) => {
|
|
2642
2541
|
if (!closeOnSelect) event.preventDefault();
|
|
2643
2542
|
onSelect?.(event);
|
|
@@ -2671,10 +2570,10 @@ var ScrollBar = ({ className, orientation = "vertical", ...props }) => /* @__PUR
|
|
|
2671
2570
|
{
|
|
2672
2571
|
orientation,
|
|
2673
2572
|
className: cn(
|
|
2674
|
-
"tw
|
|
2573
|
+
"tw:flex tw:touch-none tw:select-none tw:transition-color",
|
|
2675
2574
|
{
|
|
2676
|
-
"tw
|
|
2677
|
-
"tw
|
|
2575
|
+
"tw:h-full tw:w-2.5 tw:p-px": orientation === "vertical",
|
|
2576
|
+
"tw:h-2.5 tw:flex-col tw:p-px": orientation === "horizontal"
|
|
2678
2577
|
},
|
|
2679
2578
|
className
|
|
2680
2579
|
),
|
|
@@ -2683,11 +2582,11 @@ var ScrollBar = ({ className, orientation = "vertical", ...props }) => /* @__PUR
|
|
|
2683
2582
|
ScrollAreaPrimitive2__namespace.ScrollAreaThumb,
|
|
2684
2583
|
{
|
|
2685
2584
|
className: cn(
|
|
2686
|
-
"tw
|
|
2687
|
-
"tw
|
|
2688
|
-
"tw
|
|
2689
|
-
"tw
|
|
2690
|
-
"hover:
|
|
2585
|
+
"tw:relative",
|
|
2586
|
+
"tw:flex-1",
|
|
2587
|
+
"tw:rounded-full",
|
|
2588
|
+
"tw:bg-border",
|
|
2589
|
+
"tw:hover:bg-muted-foreground"
|
|
2691
2590
|
)
|
|
2692
2591
|
}
|
|
2693
2592
|
)
|
|
@@ -2706,7 +2605,7 @@ var ScrollArea = ({
|
|
|
2706
2605
|
{
|
|
2707
2606
|
"data-slot": "scroll-area",
|
|
2708
2607
|
className: cn(
|
|
2709
|
-
"tw
|
|
2608
|
+
"tw:peer/scroll-area tw:relative tw:overflow-hidden tw:focus-visible:outline-hidden",
|
|
2710
2609
|
className
|
|
2711
2610
|
),
|
|
2712
2611
|
...props,
|
|
@@ -2716,7 +2615,7 @@ var ScrollArea = ({
|
|
|
2716
2615
|
{
|
|
2717
2616
|
ref,
|
|
2718
2617
|
className: cn(
|
|
2719
|
-
"tw
|
|
2618
|
+
"tw:h-full tw:w-full tw:rounded-[inherit] tw:focus-visible:outline-hidden",
|
|
2720
2619
|
viewPortClassName
|
|
2721
2620
|
),
|
|
2722
2621
|
children
|
|
@@ -2756,11 +2655,11 @@ var DropdownMenuContent = ({
|
|
|
2756
2655
|
{
|
|
2757
2656
|
className,
|
|
2758
2657
|
viewPortClassName: cn(
|
|
2759
|
-
"tw
|
|
2760
|
-
"tw
|
|
2658
|
+
"tw:p-2",
|
|
2659
|
+
"tw:max-h-[var(--radix-dropdown-menu-content-available-height)]",
|
|
2761
2660
|
viewPortClassName
|
|
2762
2661
|
),
|
|
2763
|
-
scrollBarClassName: "tw
|
|
2662
|
+
scrollBarClassName: "tw:w-1.5",
|
|
2764
2663
|
children
|
|
2765
2664
|
}
|
|
2766
2665
|
)
|
|
@@ -2786,7 +2685,7 @@ var DropdownMenuItem = ({
|
|
|
2786
2685
|
...props
|
|
2787
2686
|
}) => {
|
|
2788
2687
|
const Comp = asChild ? reactSlot.Root : "div";
|
|
2789
|
-
const adornment = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
2688
|
+
const adornment = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:animate-spin" }) : icon;
|
|
2790
2689
|
const handleOnSelect = (event) => {
|
|
2791
2690
|
if (asModalTrigger) event.preventDefault();
|
|
2792
2691
|
onSelect?.(event);
|
|
@@ -2807,7 +2706,7 @@ var DropdownMenuItem = ({
|
|
|
2807
2706
|
onSelect: handleOnSelect,
|
|
2808
2707
|
onPointerLeave: handlePointerLeave,
|
|
2809
2708
|
onPointerMove: handlePointerMove,
|
|
2810
|
-
className: cn(itemVariants, className),
|
|
2709
|
+
className: cn(itemVariants, asChild && "tw:text-inherit", className),
|
|
2811
2710
|
asChild: true,
|
|
2812
2711
|
children: /* @__PURE__ */ jsxRuntime.jsxs(Comp, { children: [
|
|
2813
2712
|
adornment && /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: adornment }),
|
|
@@ -2821,18 +2720,18 @@ var DropdownMenuItem = ({
|
|
|
2821
2720
|
init_utils2();
|
|
2822
2721
|
var descriptionVariants = classVarianceAuthority.cva(
|
|
2823
2722
|
[
|
|
2824
|
-
"tw
|
|
2825
|
-
"tw
|
|
2826
|
-
"tw
|
|
2827
|
-
"tw
|
|
2828
|
-
"tw
|
|
2829
|
-
"tw
|
|
2830
|
-
"tw
|
|
2723
|
+
"tw:box-border",
|
|
2724
|
+
"tw:ml-auto",
|
|
2725
|
+
"tw:font-sans",
|
|
2726
|
+
"tw:tracking-normal",
|
|
2727
|
+
"tw:font-normal",
|
|
2728
|
+
"tw:text-xs",
|
|
2729
|
+
"tw:text-muted-foreground"
|
|
2831
2730
|
],
|
|
2832
2731
|
{
|
|
2833
2732
|
variants: {
|
|
2834
2733
|
hideOnHover: {
|
|
2835
|
-
true: ["group-focus-within:
|
|
2734
|
+
true: ["tw:group-focus-within:hidden", "tw:group-hover:hidden"],
|
|
2836
2735
|
false: []
|
|
2837
2736
|
}
|
|
2838
2737
|
},
|
|
@@ -2855,10 +2754,10 @@ var DropdownMenuLabel = ({ className, ...props }) => {
|
|
|
2855
2754
|
DropdownMenuPrimitive3__namespace.Label,
|
|
2856
2755
|
{
|
|
2857
2756
|
className: cn(
|
|
2858
|
-
"tw
|
|
2859
|
-
"tw
|
|
2860
|
-
"tw
|
|
2861
|
-
"tw
|
|
2757
|
+
"tw:p-2",
|
|
2758
|
+
"tw:font-medium",
|
|
2759
|
+
"tw:text-xs",
|
|
2760
|
+
"tw:text-muted-foreground",
|
|
2862
2761
|
className
|
|
2863
2762
|
),
|
|
2864
2763
|
...props
|
|
@@ -2901,7 +2800,7 @@ var DropdownMenuRadioItem = ({
|
|
|
2901
2800
|
...props
|
|
2902
2801
|
}) => {
|
|
2903
2802
|
const isAtStart = indicatorAlign === "start";
|
|
2904
|
-
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
2803
|
+
const indicatorEle = isLoading ? /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Loader2, { className: "tw:animate-spin" }) }) : /* @__PURE__ */ jsxRuntime.jsx(DropdownMenuItemIndicator, { variant: indicator });
|
|
2905
2804
|
const handleSelect = (event) => {
|
|
2906
2805
|
if (!closeOnSelect) event.preventDefault();
|
|
2907
2806
|
onSelect?.(event);
|
|
@@ -2911,13 +2810,13 @@ var DropdownMenuRadioItem = ({
|
|
|
2911
2810
|
{
|
|
2912
2811
|
className: cn(
|
|
2913
2812
|
itemVariants,
|
|
2914
|
-
"data-[state=checked]:
|
|
2813
|
+
"tw:data-[state=checked]:cursor-default",
|
|
2915
2814
|
{
|
|
2916
|
-
"data-[state=checked]:
|
|
2815
|
+
"tw:data-[state=checked]:bg-neutral-100": indicator === "none",
|
|
2917
2816
|
// Semantic brand tint (flips under `[data-theme='dark']`) instead of a
|
|
2918
|
-
// hardcoded `tw
|
|
2817
|
+
// hardcoded `tw:bg-sky-100`, which stayed light in dark mode and left the
|
|
2919
2818
|
// checked item's text near-invisible.
|
|
2920
|
-
"group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:
|
|
2819
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:bg-primary/10": indicator === "check"
|
|
2921
2820
|
},
|
|
2922
2821
|
className
|
|
2923
2822
|
),
|
|
@@ -2926,7 +2825,7 @@ var DropdownMenuRadioItem = ({
|
|
|
2926
2825
|
children: [
|
|
2927
2826
|
isAtStart && indicatorEle,
|
|
2928
2827
|
icon && /* @__PURE__ */ jsxRuntime.jsx(ItemIcon, { className: iconClassName, children: icon }),
|
|
2929
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw
|
|
2828
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tw:flex tw:min-w-0 tw:flex-1 tw:items-center tw:gap-2", children }),
|
|
2930
2829
|
!isAtStart && indicatorEle
|
|
2931
2830
|
]
|
|
2932
2831
|
}
|
|
@@ -2939,21 +2838,21 @@ var DropdownMenuSeparator = ({ className, ...props }) => /* @__PURE__ */ jsxRunt
|
|
|
2939
2838
|
DropdownMenuPrimitive3__namespace.Separator,
|
|
2940
2839
|
{
|
|
2941
2840
|
className: cn(
|
|
2942
|
-
"tw
|
|
2943
|
-
"tw
|
|
2841
|
+
"tw:relative",
|
|
2842
|
+
"tw:z-10",
|
|
2944
2843
|
// layout
|
|
2945
|
-
"tw
|
|
2946
|
-
"tw
|
|
2947
|
-
"tw
|
|
2948
|
-
"tw
|
|
2844
|
+
"tw:flex",
|
|
2845
|
+
"tw:items-center",
|
|
2846
|
+
"tw:justify-center",
|
|
2847
|
+
"tw:w-full",
|
|
2949
2848
|
// separator line
|
|
2950
|
-
'before:
|
|
2951
|
-
"before:
|
|
2952
|
-
"before:
|
|
2953
|
-
"group-data-[variant=default]/dropdown-menu-content:
|
|
2954
|
-
"group-data-[variant=default]/dropdown-menu-content:before:
|
|
2955
|
-
"group-data-[variant=argo]/dropdown-menu-content:
|
|
2956
|
-
"group-data-[variant=argo]/dropdown-menu-content:before:
|
|
2849
|
+
'tw:before:content-[""]',
|
|
2850
|
+
"tw:before:w-full",
|
|
2851
|
+
"tw:before:h-px",
|
|
2852
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:py-2",
|
|
2853
|
+
"tw:group-data-[variant=default]/dropdown-menu-content:before:bg-neutral-150",
|
|
2854
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:py-1",
|
|
2855
|
+
"tw:group-data-[variant=argo]/dropdown-menu-content:before:bg-border",
|
|
2957
2856
|
className
|
|
2958
2857
|
),
|
|
2959
2858
|
...props
|
|
@@ -2969,7 +2868,7 @@ var DropdownMenuSubContent = ({ className, ...props }) => {
|
|
|
2969
2868
|
DropdownMenuPrimitive3__namespace.SubContent,
|
|
2970
2869
|
{
|
|
2971
2870
|
"data-variant": variant,
|
|
2972
|
-
className: cn(contentVariants, "tw
|
|
2871
|
+
className: cn(contentVariants, "tw:z-[1041]", "tw:p-2", className),
|
|
2973
2872
|
...props
|
|
2974
2873
|
}
|
|
2975
2874
|
) });
|
|
@@ -2981,23 +2880,19 @@ init_utils2();
|
|
|
2981
2880
|
var DropdownMenuSubTrigger = ({ className, children, ...props }) => {
|
|
2982
2881
|
return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenuPrimitive3__namespace.SubTrigger, { className: cn(itemVariants, className), ...props, children: [
|
|
2983
2882
|
children,
|
|
2984
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2883
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "tw:ml-auto tw:size-5" })
|
|
2985
2884
|
] });
|
|
2986
2885
|
};
|
|
2987
2886
|
|
|
2988
2887
|
// src/components/DropdownMenu/DropdownMenuTrigger.tsx
|
|
2989
2888
|
init_utils2();
|
|
2990
|
-
var DropdownMenuTrigger = ({
|
|
2991
|
-
ref,
|
|
2992
|
-
className,
|
|
2993
|
-
...props
|
|
2994
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2889
|
+
var DropdownMenuTrigger = ({ ref, className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
2995
2890
|
DropdownMenuPrimitive3.Trigger,
|
|
2996
2891
|
{
|
|
2997
2892
|
...props,
|
|
2998
2893
|
ref,
|
|
2999
2894
|
"data-slot": "dropdown-menu-trigger",
|
|
3000
|
-
className: cn("tw
|
|
2895
|
+
className: cn("tw:group/dropdown-menu-trigger", className)
|
|
3001
2896
|
}
|
|
3002
2897
|
);
|
|
3003
2898
|
var DropdownMenu = ({
|
|
@@ -3023,13 +2918,15 @@ DropdownMenu.RadioGroup = DropdownMenuRadioGroup;
|
|
|
3023
2918
|
DropdownMenu.RadioItem = DropdownMenuRadioItem;
|
|
3024
2919
|
DropdownMenu.ItemDescription = DropdownMenuItemDescription;
|
|
3025
2920
|
|
|
3026
|
-
// src/
|
|
2921
|
+
// src/blocks/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx
|
|
3027
2922
|
init_Tooltip2();
|
|
2923
|
+
init_icons();
|
|
2924
|
+
init_utils2();
|
|
3028
2925
|
var ALIGNMENT_OPTIONS = [
|
|
3029
|
-
{ value: "left", label: "Left", icon:
|
|
3030
|
-
{ value: "center", label: "Center", icon:
|
|
3031
|
-
{ value: "right", label: "Right", icon:
|
|
3032
|
-
{ value: "justify", label: "Justify", icon:
|
|
2926
|
+
{ value: "left", label: "Left", icon: lucideReact.AlignLeft },
|
|
2927
|
+
{ value: "center", label: "Center", icon: lucideReact.AlignCenter },
|
|
2928
|
+
{ value: "right", label: "Right", icon: lucideReact.AlignRight },
|
|
2929
|
+
{ value: "justify", label: "Justify", icon: lucideReact.AlignJustify }
|
|
3033
2930
|
];
|
|
3034
2931
|
var ALIGNMENT_ICONS = Object.fromEntries(
|
|
3035
2932
|
ALIGNMENT_OPTIONS.map(({ value, icon }) => [value, icon])
|
|
@@ -3055,32 +2952,32 @@ var AlignmentDropdown = ({
|
|
|
3055
2952
|
editor.dispatchCommand(lexical.FORMAT_ELEMENT_COMMAND, align);
|
|
3056
2953
|
});
|
|
3057
2954
|
};
|
|
3058
|
-
const CurrentAlignmentIcon = ALIGNMENT_ICONS[alignment] ??
|
|
2955
|
+
const CurrentAlignmentIcon = ALIGNMENT_ICONS[alignment] ?? lucideReact.AlignLeft;
|
|
3059
2956
|
return /* @__PURE__ */ jsxRuntime.jsxs(DropdownMenu, { onOpenChange: handleOpenChange, children: [
|
|
3060
2957
|
/* @__PURE__ */ jsxRuntime.jsx(Tooltip, { tooltip: "Text alignment", placement: "top", triggerAsChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3061
2958
|
"button",
|
|
3062
2959
|
{
|
|
3063
2960
|
type: "button",
|
|
3064
2961
|
className: cn(
|
|
3065
|
-
"tw
|
|
3066
|
-
"hover:
|
|
2962
|
+
"tw:flex tw:h-7 tw:cursor-pointer tw:items-center tw:gap-1 tw:rounded tw:border-0 tw:bg-transparent tw:px-1.5 tw:text-xs tw:text-muted-foreground",
|
|
2963
|
+
"tw:hover:bg-accent"
|
|
3067
2964
|
),
|
|
3068
2965
|
children: [
|
|
3069
|
-
/* @__PURE__ */ jsxRuntime.jsx(CurrentAlignmentIcon, { className: "tw
|
|
3070
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
2966
|
+
/* @__PURE__ */ jsxRuntime.jsx(CurrentAlignmentIcon, { className: "tw:size-4" }),
|
|
2967
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw:size-3" })
|
|
3071
2968
|
]
|
|
3072
2969
|
}
|
|
3073
2970
|
) }) }),
|
|
3074
|
-
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, { align: "start", className: "tw
|
|
2971
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, { align: "start", className: "tw:min-w-32", children: ALIGNMENT_OPTIONS.map(({ value, label, icon: IconComp }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3075
2972
|
DropdownMenu.Item,
|
|
3076
2973
|
{
|
|
3077
2974
|
onSelect: () => handleSelect(value),
|
|
3078
2975
|
className: cn(
|
|
3079
|
-
"tw
|
|
3080
|
-
alignment === value && "tw
|
|
2976
|
+
"tw:flex tw:items-center tw:gap-2",
|
|
2977
|
+
alignment === value && "tw:bg-secondary-50 tw:text-secondary-500"
|
|
3081
2978
|
),
|
|
3082
2979
|
children: [
|
|
3083
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconComp, { className: "tw
|
|
2980
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconComp, { className: "tw:size-4" }),
|
|
3084
2981
|
label
|
|
3085
2982
|
]
|
|
3086
2983
|
},
|
|
@@ -3088,20 +2985,18 @@ var AlignmentDropdown = ({
|
|
|
3088
2985
|
)) })
|
|
3089
2986
|
] });
|
|
3090
2987
|
};
|
|
3091
|
-
|
|
3092
|
-
// src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx
|
|
2988
|
+
init_Tooltip2();
|
|
3093
2989
|
init_icons();
|
|
3094
2990
|
init_utils2();
|
|
3095
|
-
init_Tooltip2();
|
|
3096
2991
|
var BLOCK_TYPE_META = {
|
|
3097
|
-
paragraph: { label: "Normal", icon:
|
|
3098
|
-
h1: { label: "Heading 1", icon:
|
|
3099
|
-
h2: { label: "Heading 2", icon:
|
|
3100
|
-
h3: { label: "Heading 3", icon:
|
|
3101
|
-
bullet: { label: "Bullet List", icon:
|
|
3102
|
-
number: { label: "Numbered List", icon:
|
|
3103
|
-
quote: { label: "Quote", icon:
|
|
3104
|
-
code: { label: "Code Block", icon:
|
|
2992
|
+
paragraph: { label: "Normal", icon: lucideReact.Type, selectable: true },
|
|
2993
|
+
h1: { label: "Heading 1", icon: lucideReact.Heading1, selectable: true },
|
|
2994
|
+
h2: { label: "Heading 2", icon: lucideReact.Heading2, selectable: true },
|
|
2995
|
+
h3: { label: "Heading 3", icon: lucideReact.Heading3, selectable: true },
|
|
2996
|
+
bullet: { label: "Bullet List", icon: lucideReact.List, selectable: false },
|
|
2997
|
+
number: { label: "Numbered List", icon: lucideReact.ListOrdered, selectable: false },
|
|
2998
|
+
quote: { label: "Quote", icon: lucideReact.Quote, selectable: false },
|
|
2999
|
+
code: { label: "Code Block", icon: lucideReact.SquareCode, selectable: false }
|
|
3105
3000
|
};
|
|
3106
3001
|
var BLOCK_TYPE_OPTIONS = Object.entries(BLOCK_TYPE_META).filter(([, meta]) => meta.selectable).map(([value, { label, icon }]) => ({ value, label, icon }));
|
|
3107
3002
|
var isBlockType = (value) => Object.prototype.hasOwnProperty.call(BLOCK_TYPE_META, value);
|
|
@@ -3111,7 +3006,7 @@ var BlockTypeDropdown = ({
|
|
|
3111
3006
|
}) => {
|
|
3112
3007
|
const savedSelectionRef = react.useRef(null);
|
|
3113
3008
|
const currentMeta = isBlockType(blockType) ? BLOCK_TYPE_META[blockType] : null;
|
|
3114
|
-
const CurrentBlockIcon = currentMeta?.icon ??
|
|
3009
|
+
const CurrentBlockIcon = currentMeta?.icon ?? lucideReact.Type;
|
|
3115
3010
|
const handleOpenChange = (open) => {
|
|
3116
3011
|
if (open) {
|
|
3117
3012
|
editor.getEditorState().read(() => {
|
|
@@ -3148,26 +3043,26 @@ var BlockTypeDropdown = ({
|
|
|
3148
3043
|
{
|
|
3149
3044
|
type: "button",
|
|
3150
3045
|
className: cn(
|
|
3151
|
-
"tw
|
|
3152
|
-
"hover:
|
|
3046
|
+
"tw:flex tw:h-7 tw:cursor-pointer tw:items-center tw:gap-1.5 tw:rounded tw:border-0 tw:bg-transparent tw:px-1.5 tw:text-xs tw:text-muted-foreground",
|
|
3047
|
+
"tw:hover:bg-accent"
|
|
3153
3048
|
),
|
|
3154
3049
|
children: [
|
|
3155
|
-
/* @__PURE__ */ jsxRuntime.jsx(CurrentBlockIcon, { className: "tw
|
|
3050
|
+
/* @__PURE__ */ jsxRuntime.jsx(CurrentBlockIcon, { className: "tw:size-4" }),
|
|
3156
3051
|
currentMeta?.label ?? "Normal",
|
|
3157
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3052
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: "tw:size-3" })
|
|
3158
3053
|
]
|
|
3159
3054
|
}
|
|
3160
3055
|
) }) }),
|
|
3161
|
-
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, { align: "start", className: "tw
|
|
3056
|
+
/* @__PURE__ */ jsxRuntime.jsx(DropdownMenu.Content, { align: "start", className: "tw:min-w-40", children: BLOCK_TYPE_OPTIONS.map(({ value, label, icon: IconComp }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
3162
3057
|
DropdownMenu.Item,
|
|
3163
3058
|
{
|
|
3164
3059
|
onSelect: () => handleSelect(value),
|
|
3165
3060
|
className: cn(
|
|
3166
|
-
"tw
|
|
3167
|
-
blockType === value && "tw
|
|
3061
|
+
"tw:flex tw:items-center tw:gap-2",
|
|
3062
|
+
blockType === value && "tw:bg-secondary-50 tw:text-secondary-500"
|
|
3168
3063
|
),
|
|
3169
3064
|
children: [
|
|
3170
|
-
/* @__PURE__ */ jsxRuntime.jsx(IconComp, { className: "tw
|
|
3065
|
+
/* @__PURE__ */ jsxRuntime.jsx(IconComp, { className: "tw:size-4" }),
|
|
3171
3066
|
label
|
|
3172
3067
|
]
|
|
3173
3068
|
},
|
|
@@ -3176,76 +3071,7 @@ var BlockTypeDropdown = ({
|
|
|
3176
3071
|
] });
|
|
3177
3072
|
};
|
|
3178
3073
|
|
|
3179
|
-
// src/
|
|
3180
|
-
init_icons();
|
|
3181
|
-
init_Button2();
|
|
3182
|
-
var buttonGroupVariant = classVarianceAuthority.cva(
|
|
3183
|
-
["tailwindcss-preflight", "tw-inline-flex", "tw-items-center", "tw-group/button-group"],
|
|
3184
|
-
{
|
|
3185
|
-
defaultVariants: {
|
|
3186
|
-
variant: "inline",
|
|
3187
|
-
space: "small"
|
|
3188
|
-
},
|
|
3189
|
-
variants: {
|
|
3190
|
-
variant: {
|
|
3191
|
-
inline: [],
|
|
3192
|
-
block: [
|
|
3193
|
-
"tw-w-full",
|
|
3194
|
-
"tw-flex-col",
|
|
3195
|
-
"sm:tw-flex-row",
|
|
3196
|
-
"[&_a]:tw-flex-1",
|
|
3197
|
-
"[&>button:not([data-icon-only=true])]:tw-flex-1"
|
|
3198
|
-
]
|
|
3199
|
-
},
|
|
3200
|
-
space: {
|
|
3201
|
-
"extra-small": "tw-gap-1",
|
|
3202
|
-
"little-small": "tw-gap-2",
|
|
3203
|
-
small: "tw-gap-3",
|
|
3204
|
-
medium: "tw-gap-4",
|
|
3205
|
-
large: "tw-gap-6",
|
|
3206
|
-
compact: [
|
|
3207
|
-
"tw-border-collapse",
|
|
3208
|
-
"!tw-gap-0",
|
|
3209
|
-
// ensure that focus visible outline is at the top
|
|
3210
|
-
"[&>*:focus-visible]:!tw-z-10",
|
|
3211
|
-
"[&>*:not(:first-child)]:tw-rounded-l-none",
|
|
3212
|
-
"[&>*:not(:last-child)]:tw-rounded-r-none",
|
|
3213
|
-
"[&>*:not(:last-child)]:tw-border-r-0",
|
|
3214
|
-
"[&>*:not(:first-child)]:tw-border-l-0",
|
|
3215
|
-
// separator
|
|
3216
|
-
"[&>*:not(:first-child)]:before:tw-content",
|
|
3217
|
-
"[&>*:not(:first-child)]:before:tw-absolute",
|
|
3218
|
-
"[&>*:not(:first-child)]:before:tw-left-0",
|
|
3219
|
-
"[&>*:not(:first-child)]:before:tw-h-full",
|
|
3220
|
-
"[&>*:not(:first-child)]:before:tw-w-px",
|
|
3221
|
-
"[&>*:not(:first-child)]:before:tw-bg-black/10"
|
|
3222
|
-
]
|
|
3223
|
-
}
|
|
3224
|
-
}
|
|
3225
|
-
}
|
|
3226
|
-
);
|
|
3227
|
-
var ButtonGroup = ({
|
|
3228
|
-
ref,
|
|
3229
|
-
children,
|
|
3230
|
-
space = "small",
|
|
3231
|
-
className,
|
|
3232
|
-
variant,
|
|
3233
|
-
...rest
|
|
3234
|
-
}) => {
|
|
3235
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3236
|
-
"div",
|
|
3237
|
-
{
|
|
3238
|
-
ref,
|
|
3239
|
-
...rest,
|
|
3240
|
-
role: "group",
|
|
3241
|
-
"data-variant": variant,
|
|
3242
|
-
className: buttonGroupVariant({ variant, className, space }),
|
|
3243
|
-
children
|
|
3244
|
-
}
|
|
3245
|
-
);
|
|
3246
|
-
};
|
|
3247
|
-
|
|
3248
|
-
// src/components/FormGroup/FormGroup.tsx
|
|
3074
|
+
// src/blocks/FormGroup/FormGroup.tsx
|
|
3249
3075
|
init_utils2();
|
|
3250
3076
|
var FormGroupContext = react.createContext({
|
|
3251
3077
|
state: "default"
|
|
@@ -3261,12 +3087,12 @@ init_context();
|
|
|
3261
3087
|
init_utils2();
|
|
3262
3088
|
var addonVariants = classVarianceAuthority.cva(
|
|
3263
3089
|
[
|
|
3264
|
-
"tw
|
|
3265
|
-
"tw
|
|
3266
|
-
"tw
|
|
3090
|
+
"tw:flex",
|
|
3091
|
+
"tw:items-center",
|
|
3092
|
+
"tw:gap-1",
|
|
3267
3093
|
// Default size for nested Lucide icons in prefix/suffix slots; callers can override on the icon.
|
|
3268
|
-
"[&_svg.lucide:not([class*='tw
|
|
3269
|
-
"[&_svg]:
|
|
3094
|
+
"tw:[&_svg.lucide:not([class*='tw:size-'])]:size-4",
|
|
3095
|
+
"tw:[&_svg]:shrink-0"
|
|
3270
3096
|
],
|
|
3271
3097
|
{
|
|
3272
3098
|
defaultVariants: {
|
|
@@ -3274,22 +3100,22 @@ var addonVariants = classVarianceAuthority.cva(
|
|
|
3274
3100
|
},
|
|
3275
3101
|
variants: {
|
|
3276
3102
|
align: {
|
|
3277
|
-
"inline-start": ["tw
|
|
3278
|
-
"inline-end": ["tw
|
|
3103
|
+
"inline-start": ["tw:order-first", "tw:[&:not(:empty)]:pl-4"],
|
|
3104
|
+
"inline-end": ["tw:order-last", "tw:[&:not(:empty)]:pr-4"],
|
|
3279
3105
|
"block-start": [
|
|
3280
|
-
"tw
|
|
3281
|
-
// `tw
|
|
3106
|
+
"tw:order-first",
|
|
3107
|
+
// `tw:w-full` needs to be empty-conditional too — when the addon
|
|
3282
3108
|
// has no content the root stays in flex-row, and a 100%-wide
|
|
3283
3109
|
// empty addon would claim half of the input row beside the input.
|
|
3284
|
-
"[&:not(:empty)]:
|
|
3285
|
-
"[&:not(:empty)]:
|
|
3286
|
-
"[&:not(:empty)]:
|
|
3110
|
+
"tw:[&:not(:empty)]:w-full",
|
|
3111
|
+
"tw:[&:not(:empty)]:px-4",
|
|
3112
|
+
"tw:[&:not(:empty)]:py-1.5"
|
|
3287
3113
|
],
|
|
3288
3114
|
"block-end": [
|
|
3289
|
-
"tw
|
|
3290
|
-
"[&:not(:empty)]:
|
|
3291
|
-
"[&:not(:empty)]:
|
|
3292
|
-
"[&:not(:empty)]:
|
|
3115
|
+
"tw:order-last",
|
|
3116
|
+
"tw:[&:not(:empty)]:w-full",
|
|
3117
|
+
"tw:[&:not(:empty)]:px-4",
|
|
3118
|
+
"tw:[&:not(:empty)]:py-1.5"
|
|
3293
3119
|
]
|
|
3294
3120
|
}
|
|
3295
3121
|
}
|
|
@@ -3305,12 +3131,7 @@ var InputGroupAddon = ({
|
|
|
3305
3131
|
// src/components/InputGroup/InputGroupButton.tsx
|
|
3306
3132
|
init_utils2();
|
|
3307
3133
|
init_Button2();
|
|
3308
|
-
var InputGroupButton = ({
|
|
3309
|
-
ref,
|
|
3310
|
-
className,
|
|
3311
|
-
tabIndex = -1,
|
|
3312
|
-
...props
|
|
3313
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3134
|
+
var InputGroupButton = ({ ref, className, tabIndex = -1, ...props }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3314
3135
|
Button,
|
|
3315
3136
|
{
|
|
3316
3137
|
...props,
|
|
@@ -3318,33 +3139,29 @@ var InputGroupButton = ({
|
|
|
3318
3139
|
ref,
|
|
3319
3140
|
variant: "invisible",
|
|
3320
3141
|
size: "icon-sm",
|
|
3321
|
-
className: cn("tw
|
|
3142
|
+
className: cn("tw:size-5", "tw:[&_svg]:text-muted-foreground", className)
|
|
3322
3143
|
}
|
|
3323
3144
|
);
|
|
3324
3145
|
|
|
3325
3146
|
// src/components/InputGroup/InputGroupInput.tsx
|
|
3326
3147
|
init_utils2();
|
|
3327
|
-
var InputGroupInput = ({
|
|
3328
|
-
ref,
|
|
3329
|
-
className,
|
|
3330
|
-
...inputProps
|
|
3331
|
-
}) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3148
|
+
var InputGroupInput = ({ ref, className, ...inputProps }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
3332
3149
|
"input",
|
|
3333
3150
|
{
|
|
3334
3151
|
...inputProps,
|
|
3335
3152
|
ref,
|
|
3336
3153
|
className: cn(
|
|
3337
|
-
"tw
|
|
3338
|
-
"tw
|
|
3339
|
-
"tw
|
|
3154
|
+
"tw:w-full",
|
|
3155
|
+
"tw:bg-transparent",
|
|
3156
|
+
"tw:outline-hidden",
|
|
3340
3157
|
// font
|
|
3341
|
-
"tw
|
|
3342
|
-
"tw
|
|
3158
|
+
"tw:font-sans",
|
|
3159
|
+
"tw:text-sm",
|
|
3343
3160
|
// placeholder
|
|
3344
|
-
"placeholder:
|
|
3345
|
-
"placeholder:
|
|
3161
|
+
"tw:placeholder:text-neutral-400",
|
|
3162
|
+
"tw:placeholder:font-normal",
|
|
3346
3163
|
// disabled
|
|
3347
|
-
"disabled:
|
|
3164
|
+
"tw:disabled:cursor-not-allowed",
|
|
3348
3165
|
className
|
|
3349
3166
|
)
|
|
3350
3167
|
}
|
|
@@ -3356,13 +3173,13 @@ var InputGroupText = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx
|
|
|
3356
3173
|
"span",
|
|
3357
3174
|
{
|
|
3358
3175
|
className: cn(
|
|
3359
|
-
"tw
|
|
3360
|
-
"tw
|
|
3361
|
-
"tw
|
|
3362
|
-
"tw
|
|
3363
|
-
"tw
|
|
3364
|
-
"[&_svg]:
|
|
3365
|
-
'[&_svg:not([class*="tw
|
|
3176
|
+
"tw:flex",
|
|
3177
|
+
"tw:items-center",
|
|
3178
|
+
"tw:gap-2",
|
|
3179
|
+
"tw:text-sm",
|
|
3180
|
+
"tw:text-muted-foreground",
|
|
3181
|
+
"tw:[&_svg]:pointer-events-none",
|
|
3182
|
+
'tw:[&_svg:not([class*="tw:size-"])]:size-4',
|
|
3366
3183
|
className
|
|
3367
3184
|
),
|
|
3368
3185
|
...props
|
|
@@ -3405,20 +3222,20 @@ var InputGroupTextArea = ({
|
|
|
3405
3222
|
minRows,
|
|
3406
3223
|
maxRows: maxRows === "unlimited" ? void 0 : maxRows,
|
|
3407
3224
|
className: cn(
|
|
3408
|
-
"tw
|
|
3409
|
-
"tw
|
|
3410
|
-
"tw
|
|
3411
|
-
"tw
|
|
3225
|
+
"tw:w-full",
|
|
3226
|
+
"tw:bg-transparent",
|
|
3227
|
+
"tw:outline-hidden",
|
|
3228
|
+
"tw:px-4",
|
|
3412
3229
|
// font
|
|
3413
|
-
"tw
|
|
3414
|
-
"tw
|
|
3230
|
+
"tw:font-sans",
|
|
3231
|
+
"tw:text-sm",
|
|
3415
3232
|
// placeholder
|
|
3416
|
-
"placeholder:
|
|
3417
|
-
"placeholder:
|
|
3233
|
+
"tw:placeholder:text-neutral-400",
|
|
3234
|
+
"tw:placeholder:font-normal",
|
|
3418
3235
|
// disabled
|
|
3419
|
-
"disabled:
|
|
3236
|
+
"tw:disabled:cursor-not-allowed",
|
|
3420
3237
|
{
|
|
3421
|
-
"tw
|
|
3238
|
+
"tw:resize-none": disableResize
|
|
3422
3239
|
},
|
|
3423
3240
|
className
|
|
3424
3241
|
)
|
|
@@ -3428,39 +3245,39 @@ var InputGroupTextArea = ({
|
|
|
3428
3245
|
var inputGroupVariants = classVarianceAuthority.cva(
|
|
3429
3246
|
[
|
|
3430
3247
|
"tailwindcss-preflight",
|
|
3431
|
-
"tw
|
|
3432
|
-
"tw
|
|
3433
|
-
"tw
|
|
3248
|
+
"tw:group",
|
|
3249
|
+
"tw:overflow-hidden",
|
|
3250
|
+
"tw:box-border",
|
|
3434
3251
|
// positioning
|
|
3435
|
-
"tw
|
|
3436
|
-
"tw
|
|
3252
|
+
"tw:flex",
|
|
3253
|
+
"tw:items-center",
|
|
3437
3254
|
// base — legacy (non-argo) chrome uses a fixed radius; argo overrides it with
|
|
3438
3255
|
// the brand radius token in the `argo` variant below.
|
|
3439
|
-
"tw
|
|
3440
|
-
"tw
|
|
3441
|
-
"tw
|
|
3442
|
-
"tw
|
|
3443
|
-
"tw
|
|
3444
|
-
"tw
|
|
3256
|
+
"tw:rounded",
|
|
3257
|
+
"tw:border",
|
|
3258
|
+
"tw:border-solid",
|
|
3259
|
+
"tw:border-neutral-200",
|
|
3260
|
+
"tw:text-neutral-800",
|
|
3261
|
+
"tw:transition",
|
|
3445
3262
|
// focus
|
|
3446
|
-
"has-[:is(input,textarea):focus]:
|
|
3263
|
+
"tw:has-[:is(input,textarea):focus]:ring-4",
|
|
3447
3264
|
// readonly
|
|
3448
|
-
"has-[:is(input,textarea)[readonly]]:
|
|
3449
|
-
"has-[:is(input,textarea)[readonly]]:focus-within:
|
|
3450
|
-
"has-[:is(input,textarea)[readonly]]:
|
|
3265
|
+
"tw:has-[:is(input,textarea)[readonly]]:bg-neutral-150",
|
|
3266
|
+
"tw:has-[:is(input,textarea)[readonly]]:focus-within:ring-0",
|
|
3267
|
+
"tw:has-[:is(input,textarea)[readonly]]:border-neutral-150",
|
|
3451
3268
|
// disabled cursor (opacity owned by variant)
|
|
3452
|
-
"has-[:is(input,textarea):disabled]:
|
|
3269
|
+
"tw:has-[:is(input,textarea):disabled]:cursor-not-allowed",
|
|
3453
3270
|
// textarea: top-align addons, allow vertical expansion, own its y-padding
|
|
3454
|
-
"has-[textarea]:
|
|
3455
|
-
"has-[[data-align=block-start]:not(:empty)]:
|
|
3456
|
-
"has-[[data-align=block-end]:not(:empty)]:
|
|
3457
|
-
"[&>input]:has-[[data-align=block-start]:not(:empty)]:
|
|
3458
|
-
"[&>input]:has-[[data-align=block-start]:not(:empty)]:
|
|
3459
|
-
"[&>input]:has-[[data-align=block-end]:not(:empty)]:
|
|
3460
|
-
"[&>input]:has-[[data-align=block-end]:not(:empty)]:
|
|
3461
|
-
"[&>input]:
|
|
3462
|
-
"[&>input]:has-[[data-align=inline-start]:not(:empty)]:
|
|
3463
|
-
"[&>input]:has-[[data-align=inline-end]:not(:empty)]:
|
|
3271
|
+
"tw:has-[textarea]:items-start",
|
|
3272
|
+
"tw:has-[[data-align=block-start]:not(:empty)]:flex-wrap",
|
|
3273
|
+
"tw:has-[[data-align=block-end]:not(:empty)]:flex-wrap",
|
|
3274
|
+
"tw:[&>input]:has-[[data-align=block-start]:not(:empty)]:w-auto",
|
|
3275
|
+
"tw:[&>input]:has-[[data-align=block-start]:not(:empty)]:flex-1",
|
|
3276
|
+
"tw:[&>input]:has-[[data-align=block-end]:not(:empty)]:w-auto",
|
|
3277
|
+
"tw:[&>input]:has-[[data-align=block-end]:not(:empty)]:flex-1",
|
|
3278
|
+
"tw:[&>input]:px-4",
|
|
3279
|
+
"tw:[&>input]:has-[[data-align=inline-start]:not(:empty)]:pl-2",
|
|
3280
|
+
"tw:[&>input]:has-[[data-align=inline-end]:not(:empty)]:pr-2"
|
|
3464
3281
|
],
|
|
3465
3282
|
{
|
|
3466
3283
|
defaultVariants: {
|
|
@@ -3473,153 +3290,153 @@ var inputGroupVariants = classVarianceAuthority.cva(
|
|
|
3473
3290
|
{
|
|
3474
3291
|
variant: "secondary",
|
|
3475
3292
|
state: "error",
|
|
3476
|
-
className: ["tw
|
|
3293
|
+
className: ["tw:bg-error-100"]
|
|
3477
3294
|
},
|
|
3478
3295
|
{
|
|
3479
3296
|
variant: "secondary",
|
|
3480
3297
|
state: "warning",
|
|
3481
|
-
className: ["tw
|
|
3298
|
+
className: ["tw:bg-warning-100"]
|
|
3482
3299
|
},
|
|
3483
3300
|
{
|
|
3484
3301
|
variant: "primary",
|
|
3485
3302
|
state: "default",
|
|
3486
3303
|
focusVariant: "off",
|
|
3487
|
-
className: ["has-[:is(input,textarea):focus]:
|
|
3304
|
+
className: ["tw:has-[:is(input,textarea):focus]:border-neutral-200"]
|
|
3488
3305
|
},
|
|
3489
3306
|
{
|
|
3490
3307
|
variant: "secondary",
|
|
3491
3308
|
state: "default",
|
|
3492
3309
|
focusVariant: "off",
|
|
3493
|
-
className: ["has-[:is(input,textarea):focus]:
|
|
3310
|
+
className: ["tw:has-[:is(input,textarea):focus]:border-neutral-100"]
|
|
3494
3311
|
},
|
|
3495
3312
|
{
|
|
3496
3313
|
variant: ["primary", "secondary"],
|
|
3497
3314
|
state: "error",
|
|
3498
3315
|
focusVariant: "on",
|
|
3499
|
-
className: ["
|
|
3316
|
+
className: ["tw:!border-error-500", "tw:!ring-error-200"]
|
|
3500
3317
|
},
|
|
3501
3318
|
{
|
|
3502
3319
|
variant: ["primary", "secondary"],
|
|
3503
3320
|
state: "warning",
|
|
3504
3321
|
focusVariant: "on",
|
|
3505
|
-
className: ["
|
|
3322
|
+
className: ["tw:!border-warning-500", "tw:!ring-warning-200"]
|
|
3506
3323
|
},
|
|
3507
3324
|
// --- argo ---
|
|
3508
3325
|
{
|
|
3509
3326
|
variant: "argo",
|
|
3510
3327
|
state: "default",
|
|
3511
3328
|
className: [
|
|
3512
|
-
"has-[:is(input,textarea):focus]:
|
|
3513
|
-
"has-[:is(input,textarea):focus]:
|
|
3329
|
+
"tw:has-[:is(input,textarea):focus]:border-primary",
|
|
3330
|
+
"tw:has-[:is(input,textarea):focus]:ring-ring/50"
|
|
3514
3331
|
]
|
|
3515
3332
|
},
|
|
3516
3333
|
{
|
|
3517
3334
|
variant: "argo",
|
|
3518
3335
|
state: "error",
|
|
3519
3336
|
className: [
|
|
3520
|
-
"tw
|
|
3521
|
-
"has-[:is(input,textarea):focus]:
|
|
3522
|
-
"has-[:is(input,textarea):focus]:
|
|
3337
|
+
"tw:border-destructive",
|
|
3338
|
+
"tw:has-[:is(input,textarea):focus]:border-destructive",
|
|
3339
|
+
"tw:has-[:is(input,textarea):focus]:ring-destructive/20"
|
|
3523
3340
|
]
|
|
3524
3341
|
},
|
|
3525
3342
|
{
|
|
3526
3343
|
variant: "argo",
|
|
3527
3344
|
focusVariant: "on",
|
|
3528
|
-
className: ["
|
|
3345
|
+
className: ["tw:!border-primary", "tw:!ring-ring/50"]
|
|
3529
3346
|
},
|
|
3530
3347
|
{
|
|
3531
3348
|
variant: "argo",
|
|
3532
3349
|
state: "error",
|
|
3533
3350
|
focusVariant: "on",
|
|
3534
|
-
className: ["
|
|
3351
|
+
className: ["tw:!border-destructive", "tw:!ring-destructive/20"]
|
|
3535
3352
|
},
|
|
3536
3353
|
{
|
|
3537
3354
|
variant: "argo",
|
|
3538
3355
|
state: "default",
|
|
3539
3356
|
focusVariant: "off",
|
|
3540
|
-
className: ["has-[:is(input,textarea):focus]:
|
|
3357
|
+
className: ["tw:has-[:is(input,textarea):focus]:border-input"]
|
|
3541
3358
|
}
|
|
3542
3359
|
],
|
|
3543
3360
|
variants: {
|
|
3544
3361
|
focusVariant: {
|
|
3545
3362
|
default: [],
|
|
3546
|
-
on: ["
|
|
3547
|
-
off: ["has-[:is(input,textarea):focus]:!
|
|
3363
|
+
on: ["tw:!border-ring", "tw:!ring-ring/30", "tw:!ring-4"],
|
|
3364
|
+
off: ["tw:has-[:is(input,textarea):focus]:!ring-0"]
|
|
3548
3365
|
},
|
|
3549
3366
|
variant: {
|
|
3550
3367
|
primary: [
|
|
3551
|
-
"tw
|
|
3552
|
-
"has-[:is(input,textarea):disabled]:
|
|
3368
|
+
"tw:bg-white",
|
|
3369
|
+
"tw:has-[:is(input,textarea):disabled]:opacity-40",
|
|
3553
3370
|
// aria-invalid on the control surfaces the error chrome without a `state` prop — the
|
|
3554
3371
|
// accessible path (mirrors the `state="error"` legacy tokens). Higher specificity than
|
|
3555
3372
|
// the default focus selector, so it wins without `!important`.
|
|
3556
|
-
"has-[:is(input,textarea)[aria-invalid=true]]:
|
|
3557
|
-
"has-[:is(input,textarea)[aria-invalid=true]:focus]:
|
|
3558
|
-
"has-[:is(input,textarea)[aria-invalid=true]:focus]:
|
|
3373
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]]:border-error-500",
|
|
3374
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]:focus]:border-error-500",
|
|
3375
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]:focus]:ring-error-200"
|
|
3559
3376
|
],
|
|
3560
3377
|
secondary: [
|
|
3561
|
-
"tw
|
|
3562
|
-
"tw
|
|
3563
|
-
"has-[:is(input,textarea):disabled]:
|
|
3564
|
-
"has-[:is(input,textarea)[aria-invalid=true]]:
|
|
3565
|
-
"has-[:is(input,textarea)[aria-invalid=true]:focus]:
|
|
3566
|
-
"has-[:is(input,textarea)[aria-invalid=true]:focus]:
|
|
3378
|
+
"tw:bg-neutral-100",
|
|
3379
|
+
"tw:border-neutral-100",
|
|
3380
|
+
"tw:has-[:is(input,textarea):disabled]:opacity-40",
|
|
3381
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]]:border-error-500",
|
|
3382
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]:focus]:border-error-500",
|
|
3383
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]:focus]:ring-error-200"
|
|
3567
3384
|
],
|
|
3568
3385
|
argo: [
|
|
3569
3386
|
// argo follows the brand radius token (overrides the static base)
|
|
3570
|
-
"tw
|
|
3387
|
+
"tw:rounded-[var(--radius-lg,0.25rem)]",
|
|
3571
3388
|
// muted filled input surface — gray, distinct from white containers; not the app-background token
|
|
3572
|
-
"tw
|
|
3573
|
-
"tw
|
|
3574
|
-
"tw
|
|
3575
|
-
"has-[:is(input,textarea):disabled]:
|
|
3389
|
+
"tw:bg-muted",
|
|
3390
|
+
"tw:border-input",
|
|
3391
|
+
"tw:text-foreground",
|
|
3392
|
+
"tw:has-[:is(input,textarea):disabled]:opacity-50",
|
|
3576
3393
|
// readonly: keep the themed input surface/border. The base layer's fixed
|
|
3577
3394
|
// `neutral-150` (a light grey) is correct for the legacy light chrome but
|
|
3578
3395
|
// collides with argo's themed `foreground` text — light-on-light, invisible
|
|
3579
3396
|
// in dark mode. Re-pin to the same `muted`/`input` tokens the editable argo
|
|
3580
3397
|
// input uses (validated AA), so readonly stays legible in every scheme.
|
|
3581
|
-
"has-[:is(input,textarea)[readonly]]:
|
|
3582
|
-
"has-[:is(input,textarea)[readonly]]:
|
|
3398
|
+
"tw:has-[:is(input,textarea)[readonly]]:bg-muted",
|
|
3399
|
+
"tw:has-[:is(input,textarea)[readonly]]:border-input",
|
|
3583
3400
|
// higher specificity than has-[:is(input,textarea):focus] — prevents focus border on readonly
|
|
3584
|
-
"has-[:is(input,textarea)[readonly]:focus]:
|
|
3401
|
+
"tw:has-[:is(input,textarea)[readonly]:focus]:border-input",
|
|
3585
3402
|
// aria-invalid on the control surfaces the error chrome without a `state` prop — the
|
|
3586
3403
|
// accessible path (uses the themeable `destructive` status token).
|
|
3587
|
-
"has-[:is(input,textarea)[aria-invalid=true]]:
|
|
3588
|
-
"has-[:is(input,textarea)[aria-invalid=true]:focus]:
|
|
3589
|
-
"has-[:is(input,textarea)[aria-invalid=true]:focus]:
|
|
3404
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]]:border-destructive",
|
|
3405
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]:focus]:border-destructive",
|
|
3406
|
+
"tw:has-[:is(input,textarea)[aria-invalid=true]:focus]:ring-destructive/20"
|
|
3590
3407
|
]
|
|
3591
3408
|
},
|
|
3592
3409
|
sizing: {
|
|
3593
3410
|
default: [
|
|
3594
|
-
"[&>:is(input,textarea)]:
|
|
3595
|
-
"[&>:is(input,textarea)]:
|
|
3596
|
-
"[&>textarea]:!
|
|
3411
|
+
"tw:[&>:is(input,textarea)]:py-2.5",
|
|
3412
|
+
"tw:[&>:is(input,textarea)]:leading-[18px]",
|
|
3413
|
+
"tw:[&>textarea]:!min-h-[calc(2.5rem-2px)]"
|
|
3597
3414
|
],
|
|
3598
3415
|
small: [
|
|
3599
|
-
"[&>:is(input,textarea)]:
|
|
3600
|
-
"[&>:is(input,textarea)]:
|
|
3601
|
-
"[&>textarea]:!
|
|
3416
|
+
"tw:[&>:is(input,textarea)]:py-2",
|
|
3417
|
+
"tw:[&>:is(input,textarea)]:leading-[16px]",
|
|
3418
|
+
"tw:[&>textarea]:!min-h-[calc(2rem-2px)]"
|
|
3602
3419
|
],
|
|
3603
3420
|
medium: [
|
|
3604
|
-
"[&>:is(input,textarea)]:
|
|
3605
|
-
"[&>:is(input,textarea)]:
|
|
3606
|
-
"[&>textarea]:!
|
|
3421
|
+
"tw:[&>:is(input,textarea)]:py-2",
|
|
3422
|
+
"tw:[&>:is(input,textarea)]:leading-[18px]",
|
|
3423
|
+
"tw:[&>textarea]:!min-h-[calc(2.25rem-2px)]"
|
|
3607
3424
|
]
|
|
3608
3425
|
},
|
|
3609
3426
|
state: {
|
|
3610
3427
|
default: [
|
|
3611
|
-
"has-[:is(input,textarea):focus]:
|
|
3612
|
-
"has-[:is(input,textarea):focus]:
|
|
3428
|
+
"tw:has-[:is(input,textarea):focus]:border-ring",
|
|
3429
|
+
"tw:has-[:is(input,textarea):focus]:ring-ring/30"
|
|
3613
3430
|
],
|
|
3614
3431
|
error: [
|
|
3615
|
-
"tw
|
|
3616
|
-
"has-[:is(input,textarea):focus]:
|
|
3617
|
-
"has-[:is(input,textarea):focus]:
|
|
3432
|
+
"tw:border-error-500",
|
|
3433
|
+
"tw:has-[:is(input,textarea):focus]:border-error-500",
|
|
3434
|
+
"tw:has-[:is(input,textarea):focus]:ring-error-200"
|
|
3618
3435
|
],
|
|
3619
3436
|
warning: [
|
|
3620
|
-
"tw
|
|
3621
|
-
"has-[:is(input,textarea):focus]:
|
|
3622
|
-
"has-[:is(input,textarea):focus]:
|
|
3437
|
+
"tw:border-warning-500",
|
|
3438
|
+
"tw:has-[:is(input,textarea):focus]:border-warning-500",
|
|
3439
|
+
"tw:has-[:is(input,textarea):focus]:ring-warning-200"
|
|
3623
3440
|
]
|
|
3624
3441
|
}
|
|
3625
3442
|
}
|
|
@@ -3662,6 +3479,29 @@ InputGroup.Addon = InputGroupAddon;
|
|
|
3662
3479
|
InputGroup.Button = InputGroupButton;
|
|
3663
3480
|
InputGroup.TextArea = InputGroupTextArea;
|
|
3664
3481
|
InputGroup.Text = InputGroupText;
|
|
3482
|
+
var useControllableState = ({
|
|
3483
|
+
prop,
|
|
3484
|
+
defaultProp,
|
|
3485
|
+
onChange
|
|
3486
|
+
}) => {
|
|
3487
|
+
const [uncontrolled, setUncontrolled] = react.useState(defaultProp);
|
|
3488
|
+
const isControlled = prop !== void 0;
|
|
3489
|
+
const value = prop !== void 0 ? prop : uncontrolled;
|
|
3490
|
+
const valueRef = react.useRef(value);
|
|
3491
|
+
valueRef.current = value;
|
|
3492
|
+
const onChangeRef = react.useRef(onChange);
|
|
3493
|
+
onChangeRef.current = onChange;
|
|
3494
|
+
const setValue = react.useCallback(
|
|
3495
|
+
(next) => {
|
|
3496
|
+
const nextValue = typeof next === "function" ? next(valueRef.current) : next;
|
|
3497
|
+
valueRef.current = nextValue;
|
|
3498
|
+
if (!isControlled) setUncontrolled(nextValue);
|
|
3499
|
+
onChangeRef.current?.(nextValue);
|
|
3500
|
+
},
|
|
3501
|
+
[isControlled]
|
|
3502
|
+
);
|
|
3503
|
+
return [value, setValue];
|
|
3504
|
+
};
|
|
3665
3505
|
|
|
3666
3506
|
// src/blocks/ColorInput/ColorInput.tsx
|
|
3667
3507
|
init_icons();
|
|
@@ -3709,7 +3549,7 @@ var ColorPicker = ({ value, disabled, readOnly, ...props }) => {
|
|
|
3709
3549
|
if (!pickerRef.current) return;
|
|
3710
3550
|
showPicker(pickerRef.current);
|
|
3711
3551
|
};
|
|
3712
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw
|
|
3552
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw:relative", children: [
|
|
3713
3553
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3714
3554
|
"input",
|
|
3715
3555
|
{
|
|
@@ -3719,7 +3559,7 @@ var ColorPicker = ({ value, disabled, readOnly, ...props }) => {
|
|
|
3719
3559
|
value: coerceColorPickerValue(value),
|
|
3720
3560
|
tabIndex: -1,
|
|
3721
3561
|
"aria-hidden": true,
|
|
3722
|
-
className: "tw
|
|
3562
|
+
className: "tw:pointer-events-none tw:absolute tw:left-0 tw:top-full tw:size-0 tw:opacity-0",
|
|
3723
3563
|
disabled,
|
|
3724
3564
|
readOnly
|
|
3725
3565
|
}
|
|
@@ -3731,7 +3571,7 @@ var ColorPicker = ({ value, disabled, readOnly, ...props }) => {
|
|
|
3731
3571
|
disabled: disabled || readOnly,
|
|
3732
3572
|
onClick: handleOpenPicker,
|
|
3733
3573
|
"aria-label": "Pick color",
|
|
3734
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3574
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pipette, { className: "tw:size-4" })
|
|
3735
3575
|
}
|
|
3736
3576
|
)
|
|
3737
3577
|
] });
|
|
@@ -3758,13 +3598,13 @@ var ColorInput = ({
|
|
|
3758
3598
|
...restInputProps
|
|
3759
3599
|
}) => {
|
|
3760
3600
|
const inputRef = react.useRef(null);
|
|
3761
|
-
const [
|
|
3601
|
+
const [value, setValue] = useControllableState({
|
|
3602
|
+
// A `null` controlled value stays controlled (coerced to ''); `undefined` is uncontrolled.
|
|
3603
|
+
prop: valueProp === null ? "" : valueProp,
|
|
3604
|
+
defaultProp: defaultValue ?? "",
|
|
3605
|
+
onChange: onValueChange
|
|
3606
|
+
});
|
|
3762
3607
|
const isControlled = valueProp !== void 0;
|
|
3763
|
-
const value = isControlled ? valueProp ?? "" : internalValue;
|
|
3764
|
-
const setValue = (nextValue) => {
|
|
3765
|
-
if (!isControlled) setInternalValue(nextValue);
|
|
3766
|
-
onValueChange?.(nextValue);
|
|
3767
|
-
};
|
|
3768
3608
|
const canClear = allowClear && !!value && !disabled && !readOnly;
|
|
3769
3609
|
const swatchColor = coerceHexInputValue(value);
|
|
3770
3610
|
const isValidSwatch = isCompleteHexColor(swatchColor);
|
|
@@ -3806,24 +3646,24 @@ var ColorInput = ({
|
|
|
3806
3646
|
{
|
|
3807
3647
|
align: "inline-start",
|
|
3808
3648
|
className: cn(
|
|
3809
|
-
{ "
|
|
3810
|
-
"tw
|
|
3811
|
-
"tw
|
|
3812
|
-
"tw
|
|
3649
|
+
{ "tw:-ml-7 tw:opacity-0": !value },
|
|
3650
|
+
"tw:transition-[opacity,margin]",
|
|
3651
|
+
"tw:ease-linear",
|
|
3652
|
+
"tw:duration-200"
|
|
3813
3653
|
),
|
|
3814
3654
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3815
3655
|
"div",
|
|
3816
3656
|
{
|
|
3817
3657
|
style: isValidSwatch ? { background: swatchColor } : void 0,
|
|
3818
3658
|
className: cn(
|
|
3819
|
-
"tw
|
|
3820
|
-
"tw
|
|
3821
|
-
"tw
|
|
3822
|
-
"tw
|
|
3823
|
-
"tw
|
|
3824
|
-
"tw
|
|
3659
|
+
"tw:size-5",
|
|
3660
|
+
"tw:shrink-0",
|
|
3661
|
+
"tw:rounded-sm",
|
|
3662
|
+
"tw:border",
|
|
3663
|
+
"tw:border-solid",
|
|
3664
|
+
"tw:border-neutral-300",
|
|
3825
3665
|
{
|
|
3826
|
-
"tw
|
|
3666
|
+
"tw:bg-[linear-gradient(to_top_right,transparent_calc(50%_-_1px),theme(colors.red.300)_calc(50%_-_1px),theme(colors.red.300)_calc(50%_+_1px),transparent_calc(50%_+_1px))]": !isValidSwatch
|
|
3827
3667
|
}
|
|
3828
3668
|
)
|
|
3829
3669
|
}
|
|
@@ -3850,7 +3690,7 @@ var ColorInput = ({
|
|
|
3850
3690
|
onMouseDown: (event) => event.preventDefault(),
|
|
3851
3691
|
onClick: handleClear,
|
|
3852
3692
|
"aria-label": "Clear color",
|
|
3853
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3693
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw:size-4" })
|
|
3854
3694
|
}
|
|
3855
3695
|
),
|
|
3856
3696
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -3867,15 +3707,12 @@ var ColorInput = ({
|
|
|
3867
3707
|
}
|
|
3868
3708
|
);
|
|
3869
3709
|
};
|
|
3870
|
-
var FormGroupColorInput = ({
|
|
3871
|
-
ref,
|
|
3872
|
-
...props
|
|
3873
|
-
}) => {
|
|
3710
|
+
var FormGroupColorInput = ({ ref, ...props }) => {
|
|
3874
3711
|
const { state } = useFormGroupContext();
|
|
3875
3712
|
return /* @__PURE__ */ jsxRuntime.jsx(ColorInput, { state, ...props, ref });
|
|
3876
3713
|
};
|
|
3877
3714
|
|
|
3878
|
-
// src/
|
|
3715
|
+
// src/blocks/FormGroup/FormGroupError.tsx
|
|
3879
3716
|
init_utils2();
|
|
3880
3717
|
var toMessage = (entry) => typeof entry === "string" ? entry : entry?.message;
|
|
3881
3718
|
var FormGroupError = ({ children, className, errors, ...rest }) => {
|
|
@@ -3884,19 +3721,19 @@ var FormGroupError = ({ children, className, errors, ...rest }) => {
|
|
|
3884
3721
|
const messages = (errors ?? []).map(toMessage).filter((message) => !!message);
|
|
3885
3722
|
if (messages.length === 0) return null;
|
|
3886
3723
|
if (messages.length === 1) return messages[0];
|
|
3887
|
-
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "tw
|
|
3724
|
+
return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "tw:m-0 tw:flex tw:list-disc tw:flex-col tw:gap-0 tw:pl-4", children: messages.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: message }, index)) });
|
|
3888
3725
|
}, [children, errors]);
|
|
3889
3726
|
if (!content) return null;
|
|
3890
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, role: "alert", className: cn("tw
|
|
3727
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, role: "alert", className: cn("tw:m-0 tw:text-xs tw:text-destructive", className), children: content });
|
|
3891
3728
|
};
|
|
3892
|
-
var helpVariants = classVarianceAuthority.cva(["tw
|
|
3729
|
+
var helpVariants = classVarianceAuthority.cva(["tw:m-0", "tw:text-xs"], {
|
|
3893
3730
|
defaultVariants: {
|
|
3894
3731
|
state: "default"
|
|
3895
3732
|
},
|
|
3896
3733
|
variants: {
|
|
3897
3734
|
state: {
|
|
3898
|
-
default: ["tw
|
|
3899
|
-
warning: ["tw
|
|
3735
|
+
default: ["tw:text-muted-foreground"],
|
|
3736
|
+
warning: ["tw:text-warning"]
|
|
3900
3737
|
}
|
|
3901
3738
|
}
|
|
3902
3739
|
});
|
|
@@ -3962,10 +3799,7 @@ var NumberInput = ({
|
|
|
3962
3799
|
}
|
|
3963
3800
|
);
|
|
3964
3801
|
};
|
|
3965
|
-
var FormGroupNumberInput = ({
|
|
3966
|
-
ref,
|
|
3967
|
-
...props
|
|
3968
|
-
}) => {
|
|
3802
|
+
var FormGroupNumberInput = ({ ref, ...props }) => {
|
|
3969
3803
|
const { state } = useFormGroupContext();
|
|
3970
3804
|
return /* @__PURE__ */ jsxRuntime.jsx(NumberInput, { ...props, ref, state });
|
|
3971
3805
|
};
|
|
@@ -3977,8 +3811,18 @@ var Textarea = ({
|
|
|
3977
3811
|
variant,
|
|
3978
3812
|
sizing,
|
|
3979
3813
|
focusVariant,
|
|
3814
|
+
// value handling
|
|
3815
|
+
value: valueProp,
|
|
3816
|
+
defaultValue,
|
|
3817
|
+
onValueChange,
|
|
3980
3818
|
...rest
|
|
3981
3819
|
}) => {
|
|
3820
|
+
const [value, setValue] = useControllableState({
|
|
3821
|
+
// `undefined` stays uncontrolled; any provided value (incl. `null`) is controlled, coerced to ''.
|
|
3822
|
+
prop: valueProp === void 0 ? void 0 : valueProp ?? "",
|
|
3823
|
+
defaultProp: defaultValue ?? "",
|
|
3824
|
+
onChange: onValueChange
|
|
3825
|
+
});
|
|
3982
3826
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3983
3827
|
InputGroup,
|
|
3984
3828
|
{
|
|
@@ -3987,7 +3831,7 @@ var Textarea = ({
|
|
|
3987
3831
|
focusVariant,
|
|
3988
3832
|
variant,
|
|
3989
3833
|
className: containerClassName,
|
|
3990
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(InputGroup.TextArea, { ...rest, ref })
|
|
3834
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(InputGroup.TextArea, { ...rest, ref, value, onValueChange: setValue })
|
|
3991
3835
|
}
|
|
3992
3836
|
);
|
|
3993
3837
|
};
|
|
@@ -3995,12 +3839,10 @@ var FormGroupTextarea = (props) => {
|
|
|
3995
3839
|
const { state } = useFormGroupContext();
|
|
3996
3840
|
return /* @__PURE__ */ jsxRuntime.jsx(Textarea, { state, ...props });
|
|
3997
3841
|
};
|
|
3998
|
-
|
|
3999
|
-
// src/components/Input/Input.tsx
|
|
4000
3842
|
init_icons();
|
|
4001
3843
|
init_utils2();
|
|
4002
3844
|
|
|
4003
|
-
// src/
|
|
3845
|
+
// src/blocks/TextInput/utils.ts
|
|
4004
3846
|
init_utils2();
|
|
4005
3847
|
var genInputTestId = (prefix = "") => {
|
|
4006
3848
|
const ps = createPrefixedString(prefix);
|
|
@@ -4011,7 +3853,11 @@ var genInputTestId = (prefix = "") => {
|
|
|
4011
3853
|
clearButton: ps`clear-button`
|
|
4012
3854
|
};
|
|
4013
3855
|
};
|
|
4014
|
-
var
|
|
3856
|
+
var sanitizeTextInputValue = (value) => {
|
|
3857
|
+
if (typeof value === "string" && value.trim() === "") return "";
|
|
3858
|
+
return value;
|
|
3859
|
+
};
|
|
3860
|
+
var TextInput = ({
|
|
4015
3861
|
ref: forwardedRef,
|
|
4016
3862
|
state = "default",
|
|
4017
3863
|
sizing = "default",
|
|
@@ -4033,23 +3879,28 @@ var Input = ({
|
|
|
4033
3879
|
focusVariant = "default",
|
|
4034
3880
|
onChange,
|
|
4035
3881
|
onBlur,
|
|
4036
|
-
|
|
3882
|
+
onValueChange,
|
|
3883
|
+
onValueBlur,
|
|
3884
|
+
value: valueProp,
|
|
4037
3885
|
defaultValue,
|
|
4038
3886
|
...inputProps
|
|
4039
3887
|
}) => {
|
|
4040
|
-
const [hasUncontrolledValue, setHasUncontrolledValue] = react.useState(() => !!defaultValue);
|
|
4041
|
-
const hasValue = !!value || hasUncontrolledValue;
|
|
4042
3888
|
const inputRef = react.useRef(null);
|
|
3889
|
+
const [value, setValue] = useControllableState({
|
|
3890
|
+
// `undefined` stays uncontrolled; any provided value (incl. `null`) is controlled and coerced
|
|
3891
|
+
// to a string. Whitespace-only input collapses to '' via `sanitizeTextInputValue`.
|
|
3892
|
+
prop: valueProp === void 0 ? void 0 : sanitizeTextInputValue(valueProp) ?? "",
|
|
3893
|
+
defaultProp: sanitizeTextInputValue(defaultValue) ?? "",
|
|
3894
|
+
onChange: onValueChange
|
|
3895
|
+
});
|
|
4043
3896
|
const testId = genInputTestId(prefixTestId);
|
|
4044
|
-
const isClearButtonVisible =
|
|
3897
|
+
const isClearButtonVisible = !!value && !disabled && !readOnly || !!onClear;
|
|
4045
3898
|
const handleChange = (event) => {
|
|
4046
|
-
|
|
4047
|
-
setHasUncontrolledValue(val !== "");
|
|
3899
|
+
setValue(event.target.value);
|
|
4048
3900
|
onChange?.(event);
|
|
4049
3901
|
};
|
|
4050
3902
|
const handleBlur = (event) => {
|
|
4051
|
-
|
|
4052
|
-
setHasUncontrolledValue(val !== "");
|
|
3903
|
+
onValueBlur?.(event.target.value);
|
|
4053
3904
|
onBlur?.(event);
|
|
4054
3905
|
};
|
|
4055
3906
|
const handleClear = () => {
|
|
@@ -4057,11 +3908,8 @@ var Input = ({
|
|
|
4057
3908
|
inputRef.current.value = "";
|
|
4058
3909
|
inputRef.current.focus();
|
|
4059
3910
|
onClear?.();
|
|
4060
|
-
|
|
4061
|
-
onChange?.(createChangeInputEvent(inputRef.current));
|
|
3911
|
+
handleChange(createChangeInputEvent(inputRef.current));
|
|
4062
3912
|
};
|
|
4063
|
-
const isControlled = value !== void 0;
|
|
4064
|
-
const valueProp = isControlled ? { value: value ?? "" } : { defaultValue: defaultValue ?? "" };
|
|
4065
3913
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4066
3914
|
InputGroup,
|
|
4067
3915
|
{
|
|
@@ -4077,7 +3925,7 @@ var Input = ({
|
|
|
4077
3925
|
InputGroup.Input,
|
|
4078
3926
|
{
|
|
4079
3927
|
...inputProps,
|
|
4080
|
-
|
|
3928
|
+
value,
|
|
4081
3929
|
autoFocus,
|
|
4082
3930
|
type,
|
|
4083
3931
|
onChange: handleChange,
|
|
@@ -4099,14 +3947,14 @@ var Input = ({
|
|
|
4099
3947
|
onMouseDown: (e) => e.preventDefault(),
|
|
4100
3948
|
onClick: handleClear,
|
|
4101
3949
|
"data-testid": testId.clearButton,
|
|
4102
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3950
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "tw:size-4" })
|
|
4103
3951
|
}
|
|
4104
3952
|
),
|
|
4105
3953
|
rightSuffix && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4106
3954
|
"div",
|
|
4107
3955
|
{
|
|
4108
3956
|
className: cn({
|
|
4109
|
-
"tw
|
|
3957
|
+
"tw:whitespace-nowrap tw:bg-muted tw:px-4 tw:-mr-4 tw:py-2.5": rightSuffixVariant === "addon"
|
|
4110
3958
|
}),
|
|
4111
3959
|
children: rightSuffix
|
|
4112
3960
|
}
|
|
@@ -4116,53 +3964,12 @@ var Input = ({
|
|
|
4116
3964
|
}
|
|
4117
3965
|
);
|
|
4118
3966
|
};
|
|
4119
|
-
var
|
|
4120
|
-
if (typeof value === "string" && value.trim() === "") return "";
|
|
4121
|
-
return value;
|
|
4122
|
-
};
|
|
4123
|
-
var TextInput = ({
|
|
4124
|
-
ref,
|
|
4125
|
-
value,
|
|
4126
|
-
defaultValue,
|
|
4127
|
-
type = "text",
|
|
4128
|
-
variant,
|
|
4129
|
-
onValueChange,
|
|
4130
|
-
onChange,
|
|
4131
|
-
onValueBlur,
|
|
4132
|
-
onBlur,
|
|
4133
|
-
...props
|
|
4134
|
-
}) => {
|
|
4135
|
-
const handleChange = (event) => {
|
|
4136
|
-
onValueChange?.(event.target.value);
|
|
4137
|
-
onChange?.(event);
|
|
4138
|
-
};
|
|
4139
|
-
const handleBlur = (event) => {
|
|
4140
|
-
onValueBlur?.(event.target.value);
|
|
4141
|
-
onBlur?.(event);
|
|
4142
|
-
};
|
|
4143
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4144
|
-
Input,
|
|
4145
|
-
{
|
|
4146
|
-
...props,
|
|
4147
|
-
ref,
|
|
4148
|
-
onChange: handleChange,
|
|
4149
|
-
onBlur: handleBlur,
|
|
4150
|
-
type,
|
|
4151
|
-
variant,
|
|
4152
|
-
value: sanitizeTextInputValue(value),
|
|
4153
|
-
defaultValue: sanitizeTextInputValue(defaultValue)
|
|
4154
|
-
}
|
|
4155
|
-
);
|
|
4156
|
-
};
|
|
4157
|
-
var FormGroupTextInput = ({
|
|
4158
|
-
ref,
|
|
4159
|
-
...props
|
|
4160
|
-
}) => {
|
|
3967
|
+
var FormGroupTextInput = ({ ref, ...props }) => {
|
|
4161
3968
|
const { state } = useFormGroupContext();
|
|
4162
3969
|
return /* @__PURE__ */ jsxRuntime.jsx(TextInput, { state, ...props, ref });
|
|
4163
3970
|
};
|
|
4164
3971
|
var FormGroup = ({ className, children, state, ...rest }) => {
|
|
4165
|
-
return /* @__PURE__ */ jsxRuntime.jsx(FormGroupProvider, { value: { state }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, className: cn("tw
|
|
3972
|
+
return /* @__PURE__ */ jsxRuntime.jsx(FormGroupProvider, { value: { state }, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ...rest, className: cn("tw:flex tw:flex-col tw:gap-1", className), children }) });
|
|
4166
3973
|
};
|
|
4167
3974
|
FormGroup.Help = FormGroupHelp;
|
|
4168
3975
|
FormGroup.Error = FormGroupError;
|
|
@@ -4171,10 +3978,81 @@ FormGroup.NumberInput = FormGroupNumberInput;
|
|
|
4171
3978
|
FormGroup.ColorInput = FormGroupColorInput;
|
|
4172
3979
|
FormGroup.Textarea = FormGroupTextarea;
|
|
4173
3980
|
|
|
3981
|
+
// src/blocks/MarkdownEditor/plugins/toolbar/LinkPanel.tsx
|
|
3982
|
+
init_Button2();
|
|
3983
|
+
|
|
3984
|
+
// src/components/ButtonGroup/ButtonGroup.tsx
|
|
3985
|
+
init_utils2();
|
|
3986
|
+
var buttonGroupVariant = classVarianceAuthority.cva(
|
|
3987
|
+
["tailwindcss-preflight", "tw:inline-flex", "tw:items-center", "tw:group/button-group"],
|
|
3988
|
+
{
|
|
3989
|
+
defaultVariants: {
|
|
3990
|
+
variant: "inline",
|
|
3991
|
+
space: "small"
|
|
3992
|
+
},
|
|
3993
|
+
variants: {
|
|
3994
|
+
variant: {
|
|
3995
|
+
inline: [],
|
|
3996
|
+
block: [
|
|
3997
|
+
"tw:w-full",
|
|
3998
|
+
"tw:flex-col",
|
|
3999
|
+
"tw:sm:flex-row",
|
|
4000
|
+
"tw:[&_a]:flex-1",
|
|
4001
|
+
"tw:[&>button:not([data-icon-only=true])]:flex-1"
|
|
4002
|
+
]
|
|
4003
|
+
},
|
|
4004
|
+
space: {
|
|
4005
|
+
"extra-small": "tw:gap-1",
|
|
4006
|
+
"little-small": "tw:gap-2",
|
|
4007
|
+
small: "tw:gap-3",
|
|
4008
|
+
medium: "tw:gap-4",
|
|
4009
|
+
large: "tw:gap-6",
|
|
4010
|
+
compact: [
|
|
4011
|
+
"tw:border-collapse",
|
|
4012
|
+
"tw:!gap-0",
|
|
4013
|
+
// ensure that focus visible outline is at the top
|
|
4014
|
+
"tw:[&>*:focus-visible]:!z-10",
|
|
4015
|
+
"tw:[&>*:not(:first-child)]:rounded-l-none",
|
|
4016
|
+
"tw:[&>*:not(:last-child)]:rounded-r-none",
|
|
4017
|
+
"tw:[&>*:not(:last-child)]:border-r-0",
|
|
4018
|
+
"tw:[&>*:not(:first-child)]:border-l-0",
|
|
4019
|
+
// separator
|
|
4020
|
+
"tw:[&>*:not(:first-child)]:before:content",
|
|
4021
|
+
"tw:[&>*:not(:first-child)]:before:absolute",
|
|
4022
|
+
"tw:[&>*:not(:first-child)]:before:left-0",
|
|
4023
|
+
"tw:[&>*:not(:first-child)]:before:h-full",
|
|
4024
|
+
"tw:[&>*:not(:first-child)]:before:w-px",
|
|
4025
|
+
"tw:[&>*:not(:first-child)]:before:bg-black/10"
|
|
4026
|
+
]
|
|
4027
|
+
}
|
|
4028
|
+
}
|
|
4029
|
+
}
|
|
4030
|
+
);
|
|
4031
|
+
var ButtonGroup = ({
|
|
4032
|
+
ref,
|
|
4033
|
+
children,
|
|
4034
|
+
space = "small",
|
|
4035
|
+
className,
|
|
4036
|
+
variant,
|
|
4037
|
+
...rest
|
|
4038
|
+
}) => {
|
|
4039
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
4040
|
+
"div",
|
|
4041
|
+
{
|
|
4042
|
+
ref,
|
|
4043
|
+
...rest,
|
|
4044
|
+
role: "group",
|
|
4045
|
+
"data-variant": variant,
|
|
4046
|
+
className: cn(buttonGroupVariant({ variant, space }), className),
|
|
4047
|
+
children
|
|
4048
|
+
}
|
|
4049
|
+
);
|
|
4050
|
+
};
|
|
4051
|
+
|
|
4174
4052
|
// src/components/Label/Label.tsx
|
|
4175
4053
|
init_utils2();
|
|
4176
|
-
var Optional = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, "aria-hidden": true, className: cn("tw
|
|
4177
|
-
var Required = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, "aria-hidden": true, className: cn("tw
|
|
4054
|
+
var Optional = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, "aria-hidden": true, className: cn("tw:ml-0.5", "tw:text-muted-foreground", className), children: "(optional)" });
|
|
4055
|
+
var Required = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { ...props, "aria-hidden": true, className: cn("tw:ml-0.5", "tw:text-primary", className), children: "*" });
|
|
4178
4056
|
var Label2 = ({ className, children, id, htmlFor, ...rest }) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
4179
4057
|
RLabel__namespace.Root,
|
|
4180
4058
|
{
|
|
@@ -4182,7 +4060,7 @@ var Label2 = ({ className, children, id, htmlFor, ...rest }) => /* @__PURE__ */
|
|
|
4182
4060
|
id: id?.toString(),
|
|
4183
4061
|
htmlFor: htmlFor?.toString(),
|
|
4184
4062
|
className: cn(
|
|
4185
|
-
"tw
|
|
4063
|
+
"tw:m-0 tw:text-foreground tw:font-normal tw:peer-disabled:opacity-50",
|
|
4186
4064
|
className
|
|
4187
4065
|
),
|
|
4188
4066
|
children
|
|
@@ -4191,9 +4069,12 @@ var Label2 = ({ className, children, id, htmlFor, ...rest }) => /* @__PURE__ */
|
|
|
4191
4069
|
Label2.Optional = Optional;
|
|
4192
4070
|
Label2.Required = Required;
|
|
4193
4071
|
|
|
4194
|
-
// src/
|
|
4195
|
-
|
|
4072
|
+
// src/blocks/MarkdownEditor/plugins/toolbar/LinkPanel.tsx
|
|
4073
|
+
init_icons();
|
|
4074
|
+
|
|
4075
|
+
// src/blocks/MarkdownEditor/plugins/toolbar/ToolbarButton.tsx
|
|
4196
4076
|
init_Tooltip2();
|
|
4077
|
+
init_utils2();
|
|
4197
4078
|
var ToolbarButton = ({
|
|
4198
4079
|
active,
|
|
4199
4080
|
disabled,
|
|
@@ -4208,9 +4089,9 @@ var ToolbarButton = ({
|
|
|
4208
4089
|
disabled,
|
|
4209
4090
|
onClick,
|
|
4210
4091
|
className: cn(
|
|
4211
|
-
"tw
|
|
4212
|
-
"hover:
|
|
4213
|
-
active && "tw
|
|
4092
|
+
"tw:flex tw:h-7 tw:min-w-7 tw:cursor-pointer tw:items-center tw:justify-center tw:rounded tw:border-0 tw:bg-transparent tw:px-1 tw:text-xs tw:text-muted-foreground",
|
|
4093
|
+
"tw:hover:bg-accent tw:disabled:cursor-not-allowed tw:disabled:opacity-30",
|
|
4094
|
+
active && "tw:bg-secondary-100 tw:text-secondary-500",
|
|
4214
4095
|
extraClassName
|
|
4215
4096
|
),
|
|
4216
4097
|
children
|
|
@@ -4282,20 +4163,20 @@ var LinkPanel = ({ editor, isLink }) => {
|
|
|
4282
4163
|
active: true,
|
|
4283
4164
|
onClick: () => editor.dispatchCommand(link.TOGGLE_LINK_COMMAND, null),
|
|
4284
4165
|
tooltip: "Remove Link",
|
|
4285
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4166
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "tw:size-4" })
|
|
4286
4167
|
}
|
|
4287
4168
|
);
|
|
4288
4169
|
}
|
|
4289
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw
|
|
4290
|
-
/* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { active: open, onClick: handleOpen, tooltip: "Insert Link", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4170
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw:relative", children: [
|
|
4171
|
+
/* @__PURE__ */ jsxRuntime.jsx(ToolbarButton, { active: open, onClick: handleOpen, tooltip: "Insert Link", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "tw:size-4" }) }),
|
|
4291
4172
|
open && /* @__PURE__ */ jsxRuntime.jsx(
|
|
4292
4173
|
"div",
|
|
4293
4174
|
{
|
|
4294
4175
|
ref: panelRef,
|
|
4295
|
-
className: "tw
|
|
4296
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw
|
|
4176
|
+
className: "tw:absolute tw:left-0 tw:top-full tw:z-50 tw:mt-1 tw:w-80 tw:rounded-md tw:border tw:border-border tw:bg-popover tw:p-3 tw:text-popover-foreground tw:shadow-lg",
|
|
4177
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "tw:flex tw:flex-col tw:gap-2", children: [
|
|
4297
4178
|
/* @__PURE__ */ jsxRuntime.jsxs(FormGroup, { children: [
|
|
4298
|
-
/* @__PURE__ */ jsxRuntime.jsx(Label2, { htmlFor: "link-label", className: "tw
|
|
4179
|
+
/* @__PURE__ */ jsxRuntime.jsx(Label2, { htmlFor: "link-label", className: "tw:mb-1 tw:text-xs", children: "Label" }),
|
|
4299
4180
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4300
4181
|
TextInput,
|
|
4301
4182
|
{
|
|
@@ -4310,7 +4191,7 @@ var LinkPanel = ({ editor, isLink }) => {
|
|
|
4310
4191
|
)
|
|
4311
4192
|
] }),
|
|
4312
4193
|
/* @__PURE__ */ jsxRuntime.jsxs(FormGroup, { children: [
|
|
4313
|
-
/* @__PURE__ */ jsxRuntime.jsx(Label2, { htmlFor: "link-url", className: "tw
|
|
4194
|
+
/* @__PURE__ */ jsxRuntime.jsx(Label2, { htmlFor: "link-url", className: "tw:mb-1 tw:text-xs", children: "URL" }),
|
|
4314
4195
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4315
4196
|
TextInput,
|
|
4316
4197
|
{
|
|
@@ -4332,7 +4213,7 @@ var LinkPanel = ({ editor, isLink }) => {
|
|
|
4332
4213
|
)
|
|
4333
4214
|
] });
|
|
4334
4215
|
};
|
|
4335
|
-
var ToolbarDivider = () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw
|
|
4216
|
+
var ToolbarDivider = () => /* @__PURE__ */ jsxRuntime.jsx("div", { className: "tw:mx-0.5 tw:h-5 tw:w-px tw:bg-border" });
|
|
4336
4217
|
var ELEMENT_FORMAT_TYPES = ["left", "center", "right", "justify", "start", "end", ""];
|
|
4337
4218
|
var isElementFormatType = (value) => ELEMENT_FORMAT_TYPES.includes(value);
|
|
4338
4219
|
var toElementFormatType = (value) => isElementFormatType(value) ? value : "left";
|
|
@@ -4441,7 +4322,7 @@ var ToolbarPlugin = () => {
|
|
|
4441
4322
|
"aria-label": "Formatting options",
|
|
4442
4323
|
onMouseDown: (e) => e.preventDefault(),
|
|
4443
4324
|
style: { top: position.top, left: position.left },
|
|
4444
|
-
className: "tw
|
|
4325
|
+
className: "tw:absolute tw:z-[1060] tw:flex tw:-translate-y-full tw:items-center tw:gap-0.5 tw:rounded-lg tw:border tw:border-border tw:bg-popover tw:px-1.5 tw:py-1 tw:text-popover-foreground tw:shadow-lg",
|
|
4445
4326
|
children: [
|
|
4446
4327
|
/* @__PURE__ */ jsxRuntime.jsx(BlockTypeDropdown, { editor, blockType }),
|
|
4447
4328
|
/* @__PURE__ */ jsxRuntime.jsx(ToolbarDivider, {}),
|
|
@@ -4451,7 +4332,7 @@ var ToolbarPlugin = () => {
|
|
|
4451
4332
|
active: isBold,
|
|
4452
4333
|
onClick: () => editor.dispatchCommand(lexical.FORMAT_TEXT_COMMAND, "bold"),
|
|
4453
4334
|
tooltip: "Bold (Ctrl+B)",
|
|
4454
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4335
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Bold, { className: "tw:size-4" })
|
|
4455
4336
|
}
|
|
4456
4337
|
),
|
|
4457
4338
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4460,7 +4341,7 @@ var ToolbarPlugin = () => {
|
|
|
4460
4341
|
active: isItalic,
|
|
4461
4342
|
onClick: () => editor.dispatchCommand(lexical.FORMAT_TEXT_COMMAND, "italic"),
|
|
4462
4343
|
tooltip: "Italic (Ctrl+I)",
|
|
4463
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4344
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Italic, { className: "tw:size-4" })
|
|
4464
4345
|
}
|
|
4465
4346
|
),
|
|
4466
4347
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4469,7 +4350,7 @@ var ToolbarPlugin = () => {
|
|
|
4469
4350
|
active: isUnderline,
|
|
4470
4351
|
onClick: () => editor.dispatchCommand(lexical.FORMAT_TEXT_COMMAND, "underline"),
|
|
4471
4352
|
tooltip: "Underline (Ctrl+U)",
|
|
4472
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4353
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Underline, { className: "tw:size-4" })
|
|
4473
4354
|
}
|
|
4474
4355
|
),
|
|
4475
4356
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4478,7 +4359,7 @@ var ToolbarPlugin = () => {
|
|
|
4478
4359
|
active: isStrikethrough,
|
|
4479
4360
|
onClick: () => editor.dispatchCommand(lexical.FORMAT_TEXT_COMMAND, "strikethrough"),
|
|
4480
4361
|
tooltip: "Strikethrough",
|
|
4481
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4362
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Strikethrough, { className: "tw:size-4" })
|
|
4482
4363
|
}
|
|
4483
4364
|
),
|
|
4484
4365
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4487,7 +4368,7 @@ var ToolbarPlugin = () => {
|
|
|
4487
4368
|
active: isCode,
|
|
4488
4369
|
onClick: () => editor.dispatchCommand(lexical.FORMAT_TEXT_COMMAND, "code"),
|
|
4489
4370
|
tooltip: "Inline Code",
|
|
4490
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4371
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Code, { className: "tw:size-4" })
|
|
4491
4372
|
}
|
|
4492
4373
|
),
|
|
4493
4374
|
/* @__PURE__ */ jsxRuntime.jsx(ToolbarDivider, {}),
|
|
@@ -4505,7 +4386,7 @@ var ToolbarPlugin = () => {
|
|
|
4505
4386
|
}
|
|
4506
4387
|
},
|
|
4507
4388
|
tooltip: "Bullet List",
|
|
4508
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4389
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.List, { className: "tw:size-4" })
|
|
4509
4390
|
}
|
|
4510
4391
|
),
|
|
4511
4392
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4520,7 +4401,7 @@ var ToolbarPlugin = () => {
|
|
|
4520
4401
|
}
|
|
4521
4402
|
},
|
|
4522
4403
|
tooltip: "Numbered List",
|
|
4523
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4404
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ListOrdered, { className: "tw:size-4" })
|
|
4524
4405
|
}
|
|
4525
4406
|
),
|
|
4526
4407
|
/* @__PURE__ */ jsxRuntime.jsx(ToolbarDivider, {}),
|
|
@@ -4542,7 +4423,7 @@ var ToolbarPlugin = () => {
|
|
|
4542
4423
|
});
|
|
4543
4424
|
},
|
|
4544
4425
|
tooltip: "Quote",
|
|
4545
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4426
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Quote, { className: "tw:size-4" })
|
|
4546
4427
|
}
|
|
4547
4428
|
),
|
|
4548
4429
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -4561,7 +4442,7 @@ var ToolbarPlugin = () => {
|
|
|
4561
4442
|
});
|
|
4562
4443
|
},
|
|
4563
4444
|
tooltip: "Code Block",
|
|
4564
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4445
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.SquareCode, { className: "tw:size-4" })
|
|
4565
4446
|
}
|
|
4566
4447
|
)
|
|
4567
4448
|
]
|
|
@@ -4571,35 +4452,35 @@ var ToolbarPlugin = () => {
|
|
|
4571
4452
|
);
|
|
4572
4453
|
};
|
|
4573
4454
|
|
|
4574
|
-
// src/
|
|
4455
|
+
// src/blocks/MarkdownEditor/theme.ts
|
|
4575
4456
|
var editorTheme = {
|
|
4576
|
-
link: "tw
|
|
4457
|
+
link: "tw:cursor-pointer tw:!text-primary tw:underline",
|
|
4577
4458
|
text: {
|
|
4578
|
-
bold: "tw
|
|
4579
|
-
italic: "tw
|
|
4580
|
-
strikethrough: "tw
|
|
4581
|
-
underline: "tw
|
|
4582
|
-
code: "tw
|
|
4459
|
+
bold: "tw:font-bold",
|
|
4460
|
+
italic: "tw:italic",
|
|
4461
|
+
strikethrough: "tw:line-through",
|
|
4462
|
+
underline: "tw:underline",
|
|
4463
|
+
code: "tw:rounded tw:bg-muted tw:px-1 tw:py-0.5 tw:font-mono tw:text-[0.85em]"
|
|
4583
4464
|
},
|
|
4584
4465
|
list: {
|
|
4585
|
-
ol: "
|
|
4586
|
-
ul: "
|
|
4587
|
-
checklist: "
|
|
4466
|
+
ol: "tw:!list-decimal",
|
|
4467
|
+
ul: "tw:!list-disc",
|
|
4468
|
+
checklist: "tw:!list-none tw:!pl-0",
|
|
4588
4469
|
listitemChecked: [
|
|
4589
|
-
"tw
|
|
4590
|
-
'before:
|
|
4591
|
-
"before:
|
|
4592
|
-
"before:
|
|
4593
|
-
'after:
|
|
4594
|
-
"after:
|
|
4595
|
-
"after:
|
|
4596
|
-
"after:
|
|
4470
|
+
"tw:relative tw:!pl-6 tw:list-none tw:outline-hidden tw:line-through tw:text-muted-foreground",
|
|
4471
|
+
'tw:before:content-[""] tw:before:absolute tw:before:left-0 tw:before:top-[3px]',
|
|
4472
|
+
"tw:before:size-4 tw:before:rounded tw:before:border tw:before:border-solid",
|
|
4473
|
+
"tw:before:bg-primary tw:before:border-primary tw:before:cursor-pointer",
|
|
4474
|
+
'tw:after:content-[""] tw:after:absolute tw:after:left-[5.5px] tw:after:top-[5.5px]',
|
|
4475
|
+
"tw:after:w-1 tw:after:h-2 tw:after:border-primary-foreground tw:after:border-solid",
|
|
4476
|
+
"tw:after:border-r-[1.5px] tw:after:border-b-[1.5px] tw:after:border-t-0 tw:after:border-l-0",
|
|
4477
|
+
"tw:after:rotate-45"
|
|
4597
4478
|
].join(" "),
|
|
4598
4479
|
listitemUnchecked: [
|
|
4599
|
-
"tw
|
|
4600
|
-
'before:
|
|
4601
|
-
"before:
|
|
4602
|
-
"before:
|
|
4480
|
+
"tw:relative tw:!pl-6 tw:list-none tw:outline-hidden",
|
|
4481
|
+
'tw:before:content-[""] tw:before:absolute tw:before:left-0 tw:before:top-[3px]',
|
|
4482
|
+
"tw:before:size-4 tw:before:rounded tw:before:border tw:before:border-solid",
|
|
4483
|
+
"tw:before:border-input tw:before:bg-background tw:before:cursor-pointer"
|
|
4603
4484
|
].join(" ")
|
|
4604
4485
|
}
|
|
4605
4486
|
};
|
|
@@ -4663,16 +4544,16 @@ var MarkdownEditor = ({
|
|
|
4663
4544
|
"div",
|
|
4664
4545
|
{
|
|
4665
4546
|
className: cn(
|
|
4666
|
-
!compact && "tw
|
|
4667
|
-
// Compact mode drops `tw
|
|
4547
|
+
!compact && "tw:prose",
|
|
4548
|
+
// Compact mode drops `tw:prose`, so Lexical's <p> wrappers fall back to the browser
|
|
4668
4549
|
// default `margin: 1em 0` — visually huge at heading sizes. Zero them, and use the
|
|
4669
4550
|
// adjacent-sibling selector for paragraph spacing so single-paragraph blocks (titles,
|
|
4670
4551
|
// short descriptions) stay tight while multi-paragraph blocks still breathe.
|
|
4671
|
-
compact && "[&_p]:
|
|
4552
|
+
compact && "tw:[&_p]:m-0 tw:[&_p+p]:mt-2",
|
|
4672
4553
|
// Display-state clamp: 2 lines, dropped in focus-within so editing expands to full
|
|
4673
4554
|
// height. line-clamp is self-gating (no effect below 3 lines), so short/empty content
|
|
4674
4555
|
// renders clean; a CSS fade can't gate on overflow without JS, so it's omitted.
|
|
4675
|
-
clampDisplay && "[&:not(:focus-within)]:
|
|
4556
|
+
clampDisplay && "tw:[&:not(:focus-within)]:line-clamp-2",
|
|
4676
4557
|
className
|
|
4677
4558
|
),
|
|
4678
4559
|
onBlur: handleBlur,
|
|
@@ -4682,12 +4563,12 @@ var MarkdownEditor = ({
|
|
|
4682
4563
|
"div",
|
|
4683
4564
|
{
|
|
4684
4565
|
className: cn(
|
|
4685
|
-
"tw
|
|
4566
|
+
"tw:relative tw:rounded-md tw:transition-colors",
|
|
4686
4567
|
// In compact mode the padding lets the hover bg / focus ring extend past the text,
|
|
4687
4568
|
// but a matching negative margin shifts the wrapper outward so the text itself stays
|
|
4688
4569
|
// aligned with the parent's content edge (i.e. with where static text would render).
|
|
4689
|
-
compact ? "tw
|
|
4690
|
-
editable && "tw
|
|
4570
|
+
compact ? "tw:px-1.5 tw:py-0.5 tw:-mx-1.5 tw:-my-0.5" : "tw:p-2",
|
|
4571
|
+
editable && "tw:cursor-text tw:hover:bg-muted tw:focus-within:ring-2 tw:focus-within:ring-ring/40"
|
|
4691
4572
|
),
|
|
4692
4573
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4693
4574
|
LexicalRichTextPlugin.RichTextPlugin,
|
|
@@ -4695,15 +4576,15 @@ var MarkdownEditor = ({
|
|
|
4695
4576
|
contentEditable: /* @__PURE__ */ jsxRuntime.jsx(
|
|
4696
4577
|
LexicalContentEditable.ContentEditable,
|
|
4697
4578
|
{
|
|
4698
|
-
className: cn("tw
|
|
4579
|
+
className: cn("tw:outline-hidden", useDefaultMinHeight && "tw:min-h-[100px]"),
|
|
4699
4580
|
style: customMinHeight,
|
|
4700
4581
|
"aria-placeholder": placeholder ?? "",
|
|
4701
4582
|
placeholder: placeholder ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
4702
4583
|
"div",
|
|
4703
4584
|
{
|
|
4704
4585
|
className: cn(
|
|
4705
|
-
"tw
|
|
4706
|
-
compact ? "tw
|
|
4586
|
+
"tw:pointer-events-none tw:absolute tw:select-none tw:text-muted-foreground",
|
|
4587
|
+
compact ? "tw:left-1.5 tw:top-0.5" : "tw:left-2 tw:top-[calc(0.5rem+0.35em)]"
|
|
4707
4588
|
),
|
|
4708
4589
|
children: placeholder
|
|
4709
4590
|
}
|