@tangle-network/sandbox-ui 0.6.1 → 0.8.4
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/dist/auth.d.ts +10 -6
- package/dist/auth.js +3 -3
- package/dist/{chat-container-Cg-GwyiK.d.ts → chat-container-f4yEs6KN.d.ts} +9 -1
- package/dist/chat.d.ts +12 -2
- package/dist/chat.js +10 -10
- package/dist/{chunk-TSE423UF.js → chunk-2QZ6G7NM.js} +6 -6
- package/dist/{chunk-WBQ7VULC.js → chunk-34A66VBG.js} +7 -7
- package/dist/{chunk-JP725R4W.js → chunk-34I7UFSX.js} +2 -2
- package/dist/{chunk-YS66Q3RC.js → chunk-3CJ2SOEI.js} +2 -2
- package/dist/{chunk-CNWVHQFY.js → chunk-54SQQMMM.js} +6 -24
- package/dist/{chunk-DLCFZDGX.js → chunk-5UM2XMEJ.js} +39 -14
- package/dist/{chunk-YYGECNZZ.js → chunk-66EZOYZR.js} +3 -3
- package/dist/chunk-7U2Z23NE.js +49 -0
- package/dist/{chunk-RKXIRRKQ.js → chunk-BUOQTBTO.js} +70 -66
- package/dist/{chunk-DCPYTL4W.js → chunk-D4CZWJCD.js} +72 -148
- package/dist/{chunk-MXRQ4MJE.js → chunk-DXMIEK4K.js} +34 -23
- package/dist/{chunk-ZMWWE5RF.js → chunk-EXSOPXIY.js} +141 -123
- package/dist/{chunk-GW4GRAWJ.js → chunk-GSZA3TSY.js} +18 -12
- package/dist/{chunk-W4LM3QYZ.js → chunk-HB5Y37YU.js} +8 -8
- package/dist/{chunk-E2XT3G52.js → chunk-HFMAXUHV.js} +136 -137
- package/dist/{chunk-BRBTD7RH.js → chunk-MA7YKRUP.js} +28 -18
- package/dist/{chunk-MJUDMVRU.js → chunk-MT5FJ3ZT.js} +17 -17
- package/dist/chunk-OKLQVY3Y.js +139 -0
- package/dist/{chunk-KH5UDAJ2.js → chunk-QDH5GEGY.js} +58 -54
- package/dist/{chunk-33W2TLUL.js → chunk-QID2OOMG.js} +12 -3
- package/dist/{chunk-FJSVPBKY.js → chunk-S7OXQTST.js} +17 -3
- package/dist/chunk-T7HMZEVO.js +216 -0
- package/dist/{chunk-FNYJFCGU.js → chunk-U6QTHMY6.js} +145 -256
- package/dist/{chunk-565V6JTN.js → chunk-UXQMIR3D.js} +60 -99
- package/dist/{chunk-XTPAWK7L.js → chunk-VOUV7GGB.js} +25 -47
- package/dist/{chunk-OVNLOE3Y.js → chunk-WXK43R62.js} +41 -41
- package/dist/{chunk-6V4XVKFY.js → chunk-XXDFEF72.js} +340 -335
- package/dist/{chunk-TDYQBLL5.js → chunk-ZMNSRDMH.js} +6 -6
- package/dist/dashboard.d.ts +135 -3
- package/dist/dashboard.js +848 -8
- package/dist/{document-editor-pane-DWWUTTTZ.js → document-editor-pane-TLPVRBBU.js} +3 -3
- package/dist/editor.d.ts +9 -8
- package/dist/editor.js +3 -3
- package/dist/files.js +3 -3
- package/dist/globals.css +5304 -68
- package/dist/hooks.d.ts +1 -1
- package/dist/hooks.js +7 -7
- package/dist/index.d.ts +4 -4
- package/dist/index.js +28 -28
- package/dist/markdown.js +1 -1
- package/dist/openui.js +5 -5
- package/dist/pages.d.ts +47 -3
- package/dist/pages.js +911 -357
- package/dist/primitives.d.ts +5 -2
- package/dist/primitives.js +10 -10
- package/dist/run.js +4 -4
- package/dist/sdk-hooks.d.ts +2 -3
- package/dist/sdk-hooks.js +5 -5
- package/dist/styles.css +5304 -68
- package/dist/template-card-BAtvcAkU.d.ts +18 -0
- package/dist/terminal.d.ts +3 -1
- package/dist/terminal.js +66 -32
- package/dist/tokens.css +701 -40
- package/dist/{usage-chart-XCoB_7Xu.d.ts → usage-chart-SSiOgeQI.d.ts} +3 -1
- package/dist/{use-pty-session-COzVkhtc.d.ts → use-pty-session-0AOuwXgq.d.ts} +2 -0
- package/dist/{index-BT_-ecpc.d.ts → variant-list-C8wx2TqF.d.ts} +17 -8
- package/dist/workspace.d.ts +1 -1
- package/dist/workspace.js +13 -13
- package/package.json +3 -1
- package/tailwind.config.cjs +3 -2
- package/dist/chunk-3HW53XTH.js +0 -228
- package/dist/chunk-OKCIKTXQ.js +0 -63
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
} from "./chunk-Q56BYXQF.js";
|
|
7
7
|
import {
|
|
8
8
|
ArtifactPane
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-HB5Y37YU.js";
|
|
10
10
|
import {
|
|
11
11
|
Markdown
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-T7HMZEVO.js";
|
|
13
13
|
import {
|
|
14
14
|
cn
|
|
15
15
|
} from "./chunk-RQHJBTEU.js";
|
|
@@ -382,8 +382,122 @@ function useEditorContext() {
|
|
|
382
382
|
return context;
|
|
383
383
|
}
|
|
384
384
|
|
|
385
|
+
// src/editor/editor-toolbar.tsx
|
|
386
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
387
|
+
function EditorToolbar({
|
|
388
|
+
editor,
|
|
389
|
+
className
|
|
390
|
+
}) {
|
|
391
|
+
if (!editor) {
|
|
392
|
+
return null;
|
|
393
|
+
}
|
|
394
|
+
const buttons = [
|
|
395
|
+
{
|
|
396
|
+
id: "bold",
|
|
397
|
+
label: "Bold",
|
|
398
|
+
action: () => editor.chain().focus().toggleBold().run(),
|
|
399
|
+
isActive: editor.isActive("bold"),
|
|
400
|
+
shortcut: "Ctrl+B"
|
|
401
|
+
},
|
|
402
|
+
{
|
|
403
|
+
id: "italic",
|
|
404
|
+
label: "Italic",
|
|
405
|
+
action: () => editor.chain().focus().toggleItalic().run(),
|
|
406
|
+
isActive: editor.isActive("italic"),
|
|
407
|
+
shortcut: "Ctrl+I"
|
|
408
|
+
},
|
|
409
|
+
{
|
|
410
|
+
id: "strike",
|
|
411
|
+
label: "Strike",
|
|
412
|
+
action: () => editor.chain().focus().toggleStrike().run(),
|
|
413
|
+
isActive: editor.isActive("strike"),
|
|
414
|
+
shortcut: "Ctrl+Shift+X"
|
|
415
|
+
},
|
|
416
|
+
{
|
|
417
|
+
id: "code",
|
|
418
|
+
label: "Code",
|
|
419
|
+
action: () => editor.chain().focus().toggleCode().run(),
|
|
420
|
+
isActive: editor.isActive("code"),
|
|
421
|
+
shortcut: "Ctrl+E"
|
|
422
|
+
},
|
|
423
|
+
{ id: "sep-1", type: "separator" },
|
|
424
|
+
{
|
|
425
|
+
id: "h1",
|
|
426
|
+
label: "H1",
|
|
427
|
+
action: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),
|
|
428
|
+
isActive: editor.isActive("heading", { level: 1 })
|
|
429
|
+
},
|
|
430
|
+
{
|
|
431
|
+
id: "h2",
|
|
432
|
+
label: "H2",
|
|
433
|
+
action: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),
|
|
434
|
+
isActive: editor.isActive("heading", { level: 2 })
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
id: "h3",
|
|
438
|
+
label: "H3",
|
|
439
|
+
action: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),
|
|
440
|
+
isActive: editor.isActive("heading", { level: 3 })
|
|
441
|
+
},
|
|
442
|
+
{ id: "sep-2", type: "separator" },
|
|
443
|
+
{
|
|
444
|
+
id: "bullet-list",
|
|
445
|
+
label: "Bullet List",
|
|
446
|
+
action: () => editor.chain().focus().toggleBulletList().run(),
|
|
447
|
+
isActive: editor.isActive("bulletList")
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
id: "ordered-list",
|
|
451
|
+
label: "Ordered List",
|
|
452
|
+
action: () => editor.chain().focus().toggleOrderedList().run(),
|
|
453
|
+
isActive: editor.isActive("orderedList")
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
id: "code-block",
|
|
457
|
+
label: "Code Block",
|
|
458
|
+
action: () => editor.chain().focus().toggleCodeBlock().run(),
|
|
459
|
+
isActive: editor.isActive("codeBlock")
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
id: "blockquote",
|
|
463
|
+
label: "Blockquote",
|
|
464
|
+
action: () => editor.chain().focus().toggleBlockquote().run(),
|
|
465
|
+
isActive: editor.isActive("blockquote")
|
|
466
|
+
}
|
|
467
|
+
];
|
|
468
|
+
return /* @__PURE__ */ jsx2(
|
|
469
|
+
"div",
|
|
470
|
+
{
|
|
471
|
+
className: cn(
|
|
472
|
+
"flex items-center gap-1 border-border border-b bg-card p-2",
|
|
473
|
+
className
|
|
474
|
+
),
|
|
475
|
+
children: buttons.map((button) => {
|
|
476
|
+
if ("type" in button && button.type === "separator") {
|
|
477
|
+
return /* @__PURE__ */ jsx2("div", { className: "mx-1 h-6 w-px bg-border" }, button.id);
|
|
478
|
+
}
|
|
479
|
+
return /* @__PURE__ */ jsx2(
|
|
480
|
+
"button",
|
|
481
|
+
{
|
|
482
|
+
onClick: button.action,
|
|
483
|
+
type: "button",
|
|
484
|
+
title: "shortcut" in button ? `${button.label} (${button.shortcut})` : button.label,
|
|
485
|
+
className: cn(
|
|
486
|
+
"rounded px-2 py-1 font-medium text-xs transition-colors",
|
|
487
|
+
"hover:bg-accent hover:text-accent-foreground",
|
|
488
|
+
button.isActive && "bg-accent text-accent-foreground"
|
|
489
|
+
),
|
|
490
|
+
children: button.label
|
|
491
|
+
},
|
|
492
|
+
button.id
|
|
493
|
+
);
|
|
494
|
+
})
|
|
495
|
+
}
|
|
496
|
+
);
|
|
497
|
+
}
|
|
498
|
+
|
|
385
499
|
// src/editor/tiptap-editor.tsx
|
|
386
|
-
import { jsx as
|
|
500
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
387
501
|
var cursorColors = {
|
|
388
502
|
"#FF6B6B": { background: "#FF6B6B", text: "#FFFFFF" },
|
|
389
503
|
"#4ECDC4": { background: "#4ECDC4", text: "#000000" },
|
|
@@ -497,9 +611,9 @@ function TiptapEditor({
|
|
|
497
611
|
className
|
|
498
612
|
),
|
|
499
613
|
children: [
|
|
500
|
-
/* @__PURE__ */
|
|
501
|
-
/* @__PURE__ */
|
|
502
|
-
/* @__PURE__ */
|
|
614
|
+
/* @__PURE__ */ jsx3("div", { className: "absolute top-2 right-2 z-10", children: /* @__PURE__ */ jsx3(ConnectionIndicator, { state: connectionState }) }),
|
|
615
|
+
/* @__PURE__ */ jsx3("div", { className: "p-4 pt-10", children: /* @__PURE__ */ jsx3(EditorContent, { editor }) }),
|
|
616
|
+
/* @__PURE__ */ jsx3("style", { children: `
|
|
503
617
|
.ProseMirror p.is-editor-empty:first-child::before {
|
|
504
618
|
content: attr(data-placeholder);
|
|
505
619
|
float: left;
|
|
@@ -588,8 +702,8 @@ function ConnectionIndicator({
|
|
|
588
702
|
}
|
|
589
703
|
}[state];
|
|
590
704
|
return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 text-muted-foreground text-xs", children: [
|
|
591
|
-
/* @__PURE__ */
|
|
592
|
-
/* @__PURE__ */
|
|
705
|
+
/* @__PURE__ */ jsx3("span", { className: cn("h-2 w-2 rounded-full", config.color) }),
|
|
706
|
+
/* @__PURE__ */ jsx3("span", { children: config.label })
|
|
593
707
|
] });
|
|
594
708
|
}
|
|
595
709
|
function CollaboratorsList({
|
|
@@ -600,7 +714,7 @@ function CollaboratorsList({
|
|
|
600
714
|
return null;
|
|
601
715
|
}
|
|
602
716
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex items-center gap-1", className), children: [
|
|
603
|
-
collaborators.slice(0, 5).map((collab) => /* @__PURE__ */
|
|
717
|
+
collaborators.slice(0, 5).map((collab) => /* @__PURE__ */ jsx3(
|
|
604
718
|
"div",
|
|
605
719
|
{
|
|
606
720
|
className: "flex h-6 w-6 items-center justify-center rounded-full font-medium text-xs",
|
|
@@ -616,237 +730,12 @@ function CollaboratorsList({
|
|
|
616
730
|
] })
|
|
617
731
|
] });
|
|
618
732
|
}
|
|
619
|
-
function EditorToolbar({
|
|
620
|
-
editor,
|
|
621
|
-
className
|
|
622
|
-
}) {
|
|
623
|
-
if (!editor) {
|
|
624
|
-
return null;
|
|
625
|
-
}
|
|
626
|
-
const buttons = [
|
|
627
|
-
{
|
|
628
|
-
id: "bold",
|
|
629
|
-
label: "Bold",
|
|
630
|
-
action: () => editor.chain().focus().toggleBold().run(),
|
|
631
|
-
isActive: editor.isActive("bold"),
|
|
632
|
-
shortcut: "Ctrl+B"
|
|
633
|
-
},
|
|
634
|
-
{
|
|
635
|
-
id: "italic",
|
|
636
|
-
label: "Italic",
|
|
637
|
-
action: () => editor.chain().focus().toggleItalic().run(),
|
|
638
|
-
isActive: editor.isActive("italic"),
|
|
639
|
-
shortcut: "Ctrl+I"
|
|
640
|
-
},
|
|
641
|
-
{
|
|
642
|
-
id: "strike",
|
|
643
|
-
label: "Strike",
|
|
644
|
-
action: () => editor.chain().focus().toggleStrike().run(),
|
|
645
|
-
isActive: editor.isActive("strike"),
|
|
646
|
-
shortcut: "Ctrl+Shift+X"
|
|
647
|
-
},
|
|
648
|
-
{
|
|
649
|
-
id: "code",
|
|
650
|
-
label: "Code",
|
|
651
|
-
action: () => editor.chain().focus().toggleCode().run(),
|
|
652
|
-
isActive: editor.isActive("code"),
|
|
653
|
-
shortcut: "Ctrl+E"
|
|
654
|
-
},
|
|
655
|
-
{ id: "sep-1", type: "separator" },
|
|
656
|
-
{
|
|
657
|
-
id: "h1",
|
|
658
|
-
label: "H1",
|
|
659
|
-
action: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),
|
|
660
|
-
isActive: editor.isActive("heading", { level: 1 })
|
|
661
|
-
},
|
|
662
|
-
{
|
|
663
|
-
id: "h2",
|
|
664
|
-
label: "H2",
|
|
665
|
-
action: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),
|
|
666
|
-
isActive: editor.isActive("heading", { level: 2 })
|
|
667
|
-
},
|
|
668
|
-
{
|
|
669
|
-
id: "h3",
|
|
670
|
-
label: "H3",
|
|
671
|
-
action: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),
|
|
672
|
-
isActive: editor.isActive("heading", { level: 3 })
|
|
673
|
-
},
|
|
674
|
-
{ id: "sep-2", type: "separator" },
|
|
675
|
-
{
|
|
676
|
-
id: "bullet-list",
|
|
677
|
-
label: "Bullet List",
|
|
678
|
-
action: () => editor.chain().focus().toggleBulletList().run(),
|
|
679
|
-
isActive: editor.isActive("bulletList")
|
|
680
|
-
},
|
|
681
|
-
{
|
|
682
|
-
id: "ordered-list",
|
|
683
|
-
label: "Ordered List",
|
|
684
|
-
action: () => editor.chain().focus().toggleOrderedList().run(),
|
|
685
|
-
isActive: editor.isActive("orderedList")
|
|
686
|
-
},
|
|
687
|
-
{
|
|
688
|
-
id: "code-block",
|
|
689
|
-
label: "Code Block",
|
|
690
|
-
action: () => editor.chain().focus().toggleCodeBlock().run(),
|
|
691
|
-
isActive: editor.isActive("codeBlock")
|
|
692
|
-
},
|
|
693
|
-
{
|
|
694
|
-
id: "blockquote",
|
|
695
|
-
label: "Blockquote",
|
|
696
|
-
action: () => editor.chain().focus().toggleBlockquote().run(),
|
|
697
|
-
isActive: editor.isActive("blockquote")
|
|
698
|
-
}
|
|
699
|
-
];
|
|
700
|
-
return /* @__PURE__ */ jsx2(
|
|
701
|
-
"div",
|
|
702
|
-
{
|
|
703
|
-
className: cn(
|
|
704
|
-
"flex items-center gap-1 border-border border-b bg-[var(--depth-2)] p-2",
|
|
705
|
-
className
|
|
706
|
-
),
|
|
707
|
-
children: buttons.map((button) => {
|
|
708
|
-
if ("type" in button && button.type === "separator") {
|
|
709
|
-
return /* @__PURE__ */ jsx2("div", { className: "mx-1 h-6 w-px bg-border" }, button.id);
|
|
710
|
-
}
|
|
711
|
-
return /* @__PURE__ */ jsx2(
|
|
712
|
-
"button",
|
|
713
|
-
{
|
|
714
|
-
onClick: button.action,
|
|
715
|
-
type: "button",
|
|
716
|
-
title: "shortcut" in button ? `${button.label} (${button.shortcut})` : button.label,
|
|
717
|
-
className: cn(
|
|
718
|
-
"rounded px-2 py-1 font-medium text-xs transition-colors",
|
|
719
|
-
"hover:bg-accent hover:text-accent-foreground",
|
|
720
|
-
button.isActive && "bg-accent text-accent-foreground"
|
|
721
|
-
),
|
|
722
|
-
children: button.label
|
|
723
|
-
},
|
|
724
|
-
button.id
|
|
725
|
-
);
|
|
726
|
-
})
|
|
727
|
-
}
|
|
728
|
-
);
|
|
729
|
-
}
|
|
730
733
|
|
|
731
734
|
// src/editor/markdown-document-editor.tsx
|
|
732
735
|
import { EditorContent as EditorContent2, useEditor as useEditor2 } from "@tiptap/react";
|
|
733
736
|
import StarterKit2 from "@tiptap/starter-kit";
|
|
734
737
|
import { useEffect as useEffect3, useMemo as useMemo3, useRef as useRef2 } from "react";
|
|
735
738
|
|
|
736
|
-
// src/editor/editor-toolbar.tsx
|
|
737
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
738
|
-
function EditorToolbar2({
|
|
739
|
-
editor,
|
|
740
|
-
className
|
|
741
|
-
}) {
|
|
742
|
-
if (!editor) {
|
|
743
|
-
return null;
|
|
744
|
-
}
|
|
745
|
-
const buttons = [
|
|
746
|
-
{
|
|
747
|
-
id: "bold",
|
|
748
|
-
label: "Bold",
|
|
749
|
-
action: () => editor.chain().focus().toggleBold().run(),
|
|
750
|
-
isActive: editor.isActive("bold"),
|
|
751
|
-
shortcut: "Ctrl+B"
|
|
752
|
-
},
|
|
753
|
-
{
|
|
754
|
-
id: "italic",
|
|
755
|
-
label: "Italic",
|
|
756
|
-
action: () => editor.chain().focus().toggleItalic().run(),
|
|
757
|
-
isActive: editor.isActive("italic"),
|
|
758
|
-
shortcut: "Ctrl+I"
|
|
759
|
-
},
|
|
760
|
-
{
|
|
761
|
-
id: "strike",
|
|
762
|
-
label: "Strike",
|
|
763
|
-
action: () => editor.chain().focus().toggleStrike().run(),
|
|
764
|
-
isActive: editor.isActive("strike"),
|
|
765
|
-
shortcut: "Ctrl+Shift+X"
|
|
766
|
-
},
|
|
767
|
-
{
|
|
768
|
-
id: "code",
|
|
769
|
-
label: "Code",
|
|
770
|
-
action: () => editor.chain().focus().toggleCode().run(),
|
|
771
|
-
isActive: editor.isActive("code"),
|
|
772
|
-
shortcut: "Ctrl+E"
|
|
773
|
-
},
|
|
774
|
-
{ id: "sep-1", type: "separator" },
|
|
775
|
-
{
|
|
776
|
-
id: "h1",
|
|
777
|
-
label: "H1",
|
|
778
|
-
action: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),
|
|
779
|
-
isActive: editor.isActive("heading", { level: 1 })
|
|
780
|
-
},
|
|
781
|
-
{
|
|
782
|
-
id: "h2",
|
|
783
|
-
label: "H2",
|
|
784
|
-
action: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),
|
|
785
|
-
isActive: editor.isActive("heading", { level: 2 })
|
|
786
|
-
},
|
|
787
|
-
{
|
|
788
|
-
id: "h3",
|
|
789
|
-
label: "H3",
|
|
790
|
-
action: () => editor.chain().focus().toggleHeading({ level: 3 }).run(),
|
|
791
|
-
isActive: editor.isActive("heading", { level: 3 })
|
|
792
|
-
},
|
|
793
|
-
{ id: "sep-2", type: "separator" },
|
|
794
|
-
{
|
|
795
|
-
id: "bullet-list",
|
|
796
|
-
label: "Bullet List",
|
|
797
|
-
action: () => editor.chain().focus().toggleBulletList().run(),
|
|
798
|
-
isActive: editor.isActive("bulletList")
|
|
799
|
-
},
|
|
800
|
-
{
|
|
801
|
-
id: "ordered-list",
|
|
802
|
-
label: "Ordered List",
|
|
803
|
-
action: () => editor.chain().focus().toggleOrderedList().run(),
|
|
804
|
-
isActive: editor.isActive("orderedList")
|
|
805
|
-
},
|
|
806
|
-
{
|
|
807
|
-
id: "code-block",
|
|
808
|
-
label: "Code Block",
|
|
809
|
-
action: () => editor.chain().focus().toggleCodeBlock().run(),
|
|
810
|
-
isActive: editor.isActive("codeBlock")
|
|
811
|
-
},
|
|
812
|
-
{
|
|
813
|
-
id: "blockquote",
|
|
814
|
-
label: "Blockquote",
|
|
815
|
-
action: () => editor.chain().focus().toggleBlockquote().run(),
|
|
816
|
-
isActive: editor.isActive("blockquote")
|
|
817
|
-
}
|
|
818
|
-
];
|
|
819
|
-
return /* @__PURE__ */ jsx3(
|
|
820
|
-
"div",
|
|
821
|
-
{
|
|
822
|
-
className: cn(
|
|
823
|
-
"flex items-center gap-1 border-border border-b bg-[var(--depth-2)] p-2",
|
|
824
|
-
className
|
|
825
|
-
),
|
|
826
|
-
children: buttons.map((button) => {
|
|
827
|
-
if ("type" in button && button.type === "separator") {
|
|
828
|
-
return /* @__PURE__ */ jsx3("div", { className: "mx-1 h-6 w-px bg-border" }, button.id);
|
|
829
|
-
}
|
|
830
|
-
return /* @__PURE__ */ jsx3(
|
|
831
|
-
"button",
|
|
832
|
-
{
|
|
833
|
-
onClick: button.action,
|
|
834
|
-
type: "button",
|
|
835
|
-
title: "shortcut" in button ? `${button.label} (${button.shortcut})` : button.label,
|
|
836
|
-
className: cn(
|
|
837
|
-
"rounded px-2 py-1 font-medium text-xs transition-colors",
|
|
838
|
-
"hover:bg-accent hover:text-accent-foreground",
|
|
839
|
-
button.isActive && "bg-accent text-accent-foreground"
|
|
840
|
-
),
|
|
841
|
-
children: button.label
|
|
842
|
-
},
|
|
843
|
-
button.id
|
|
844
|
-
);
|
|
845
|
-
})
|
|
846
|
-
}
|
|
847
|
-
);
|
|
848
|
-
}
|
|
849
|
-
|
|
850
739
|
// src/editor/markdown-conversion.ts
|
|
851
740
|
import { marked } from "marked";
|
|
852
741
|
import TurndownService from "turndown";
|
|
@@ -897,8 +786,8 @@ function MarkdownDocumentEditor({
|
|
|
897
786
|
attributes: {
|
|
898
787
|
class: cn(
|
|
899
788
|
"prose prose-sm sm:prose-base max-w-none focus:outline-none",
|
|
900
|
-
"prose-headings:text-
|
|
901
|
-
"prose-strong:text-
|
|
789
|
+
"prose-headings:text-foreground prose-p:text-foreground prose-li:text-foreground",
|
|
790
|
+
"prose-strong:text-foreground prose-code:text-foreground prose-pre:text-foreground",
|
|
902
791
|
contentClassName
|
|
903
792
|
),
|
|
904
793
|
"data-placeholder": placeholder
|
|
@@ -933,15 +822,15 @@ function MarkdownDocumentEditor({
|
|
|
933
822
|
"div",
|
|
934
823
|
{
|
|
935
824
|
className: cn(
|
|
936
|
-
"flex min-h-[14rem] w-full flex-col overflow-hidden rounded-
|
|
825
|
+
"flex min-h-[14rem] w-full flex-col overflow-hidden rounded-lg border border-border bg-background",
|
|
937
826
|
className
|
|
938
827
|
),
|
|
939
828
|
children: [
|
|
940
829
|
/* @__PURE__ */ jsx4(
|
|
941
|
-
|
|
830
|
+
EditorToolbar,
|
|
942
831
|
{
|
|
943
832
|
editor,
|
|
944
|
-
className: "border-
|
|
833
|
+
className: "border-border bg-card px-2 py-2"
|
|
945
834
|
}
|
|
946
835
|
),
|
|
947
836
|
/* @__PURE__ */ jsx4("div", { className: "min-h-0 flex-1 overflow-auto px-5 py-4", children: /* @__PURE__ */ jsx4(EditorContent2, { editor }) }),
|
|
@@ -949,21 +838,21 @@ function MarkdownDocumentEditor({
|
|
|
949
838
|
.ProseMirror p.is-editor-empty:first-child::before {
|
|
950
839
|
content: attr(data-placeholder);
|
|
951
840
|
float: left;
|
|
952
|
-
color: var(--
|
|
841
|
+
color: hsl(var(--muted-foreground));
|
|
953
842
|
pointer-events: none;
|
|
954
843
|
height: 0;
|
|
955
844
|
}
|
|
956
845
|
|
|
957
846
|
.ProseMirror pre {
|
|
958
|
-
background: var(--
|
|
959
|
-
border: 1px solid var(--border
|
|
847
|
+
background: hsl(var(--muted));
|
|
848
|
+
border: 1px solid hsl(var(--border));
|
|
960
849
|
border-radius: 0.75rem;
|
|
961
850
|
padding: 0.875rem 1rem;
|
|
962
851
|
overflow-x: auto;
|
|
963
852
|
}
|
|
964
853
|
|
|
965
854
|
.ProseMirror code {
|
|
966
|
-
background: var(--
|
|
855
|
+
background: hsl(var(--muted));
|
|
967
856
|
border-radius: 0.35rem;
|
|
968
857
|
padding: 0.12rem 0.3rem;
|
|
969
858
|
}
|
|
@@ -1181,9 +1070,9 @@ function CollaborativeDocumentSurface({
|
|
|
1181
1070
|
const initialContent = useMemo4(() => markdownToHtml(markdown), [markdown]);
|
|
1182
1071
|
const collaboratorCount = collaborators.length + 1;
|
|
1183
1072
|
return /* @__PURE__ */ jsxs3("div", { className: cn("flex h-full min-h-0 flex-col gap-3", className), children: [
|
|
1184
|
-
/* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-[var(--radius-lg)] border border-
|
|
1073
|
+
/* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center justify-between gap-3 rounded-[var(--radius-lg)] border border-border bg-card px-3 py-2", children: [
|
|
1185
1074
|
/* @__PURE__ */ jsxs3("div", { className: "min-w-0 space-y-2", children: [
|
|
1186
|
-
/* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center gap-2 text-xs text-
|
|
1075
|
+
/* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [
|
|
1187
1076
|
/* @__PURE__ */ jsxs3(
|
|
1188
1077
|
"span",
|
|
1189
1078
|
{
|
|
@@ -1197,12 +1086,12 @@ function CollaborativeDocumentSurface({
|
|
|
1197
1086
|
]
|
|
1198
1087
|
}
|
|
1199
1088
|
),
|
|
1200
|
-
/* @__PURE__ */ jsxs3("span", { className: "inline-flex items-center gap-1.5 rounded-full border border-
|
|
1089
|
+
/* @__PURE__ */ jsxs3("span", { className: "inline-flex items-center gap-1.5 rounded-full border border-border bg-background px-2.5 py-1", children: [
|
|
1201
1090
|
/* @__PURE__ */ jsx5(Users, { className: "h-3.5 w-3.5" }),
|
|
1202
1091
|
collaborators.length === 0 ? "Solo editing" : `${collaboratorCount} active`
|
|
1203
1092
|
] })
|
|
1204
1093
|
] }),
|
|
1205
|
-
/* @__PURE__ */ jsx5("p", { className: "text-xs text-
|
|
1094
|
+
/* @__PURE__ */ jsx5("p", { className: "text-xs text-muted-foreground", children: connectionDescription(state, collaborators.length, readOnly) })
|
|
1206
1095
|
] }),
|
|
1207
1096
|
/* @__PURE__ */ jsx5(CollaboratorsList, { collaborators })
|
|
1208
1097
|
] }),
|
|
@@ -1277,14 +1166,14 @@ function DocumentEditorPane({
|
|
|
1277
1166
|
TabsList,
|
|
1278
1167
|
{
|
|
1279
1168
|
variant: "underline",
|
|
1280
|
-
className: "h-auto gap-4 border-0 bg-transparent p-0 text-
|
|
1169
|
+
className: "h-auto gap-4 border-0 bg-transparent p-0 text-muted-foreground",
|
|
1281
1170
|
children: [
|
|
1282
1171
|
/* @__PURE__ */ jsx5(
|
|
1283
1172
|
TabsTrigger,
|
|
1284
1173
|
{
|
|
1285
1174
|
value: "preview",
|
|
1286
1175
|
variant: "underline",
|
|
1287
|
-
className: "pb-2 data-[state=active]:border-
|
|
1176
|
+
className: "pb-2 data-[state=active]:border-primary data-[state=active]:text-foreground",
|
|
1288
1177
|
children: "Preview"
|
|
1289
1178
|
}
|
|
1290
1179
|
),
|
|
@@ -1293,7 +1182,7 @@ function DocumentEditorPane({
|
|
|
1293
1182
|
{
|
|
1294
1183
|
value: "edit",
|
|
1295
1184
|
variant: "underline",
|
|
1296
|
-
className: "flex items-center gap-2 pb-2 data-[state=active]:border-
|
|
1185
|
+
className: "flex items-center gap-2 pb-2 data-[state=active]:border-primary data-[state=active]:text-foreground",
|
|
1297
1186
|
children: [
|
|
1298
1187
|
/* @__PURE__ */ jsx5(PencilLine, { className: "h-3.5 w-3.5" }),
|
|
1299
1188
|
isCollaborative ? "Live edit" : "Edit"
|
|
@@ -1303,17 +1192,17 @@ function DocumentEditorPane({
|
|
|
1303
1192
|
]
|
|
1304
1193
|
}
|
|
1305
1194
|
),
|
|
1306
|
-
/* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center gap-2 text-xs text-
|
|
1195
|
+
/* @__PURE__ */ jsxs3("div", { className: "flex flex-wrap items-center gap-2 text-xs text-muted-foreground", children: [
|
|
1307
1196
|
toolbar,
|
|
1308
|
-
/* @__PURE__ */ jsx5("span", { className: "rounded-full border border-
|
|
1309
|
-
/* @__PURE__ */ jsx5("span", { className: "rounded-full border border-
|
|
1197
|
+
/* @__PURE__ */ jsx5("span", { className: "rounded-full border border-border bg-card px-2.5 py-1 font-medium", children: isCollaborative ? "Live document" : "Local draft" }),
|
|
1198
|
+
/* @__PURE__ */ jsx5("span", { className: "rounded-full border border-border bg-background px-2.5 py-1", children: saveStateLabel }),
|
|
1310
1199
|
onSave && !readOnly && /* @__PURE__ */ jsxs3(
|
|
1311
1200
|
"button",
|
|
1312
1201
|
{
|
|
1313
1202
|
type: "button",
|
|
1314
1203
|
onClick: () => void onSave(draft),
|
|
1315
1204
|
disabled: saving || !isDirty,
|
|
1316
|
-
className: "inline-flex items-center gap-2 rounded-[var(--radius-full)] border border-
|
|
1205
|
+
className: "inline-flex items-center gap-2 rounded-[var(--radius-full)] border border-border bg-card px-3 py-1.5 text-xs font-semibold text-foreground transition-colors hover:border-primary/40 hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50",
|
|
1317
1206
|
children: [
|
|
1318
1207
|
/* @__PURE__ */ jsx5(Save, { className: "h-3.5 w-3.5" }),
|
|
1319
1208
|
saving ? "Saving..." : saveLabel
|
|
@@ -1326,7 +1215,7 @@ function DocumentEditorPane({
|
|
|
1326
1215
|
"div",
|
|
1327
1216
|
{
|
|
1328
1217
|
className: cn(
|
|
1329
|
-
"rounded-[var(--radius-lg)] border border-
|
|
1218
|
+
"rounded-[var(--radius-lg)] border border-border bg-background p-5",
|
|
1330
1219
|
previewClassName
|
|
1331
1220
|
),
|
|
1332
1221
|
children: /* @__PURE__ */ jsx5(Markdown, { className: "prose-sm max-w-none", children: draft })
|
|
@@ -1388,9 +1277,9 @@ function DocumentEditorPane({
|
|
|
1388
1277
|
export {
|
|
1389
1278
|
EditorProvider,
|
|
1390
1279
|
useEditorContext,
|
|
1280
|
+
EditorToolbar,
|
|
1391
1281
|
TiptapEditor,
|
|
1392
1282
|
CollaboratorsList,
|
|
1393
|
-
EditorToolbar,
|
|
1394
1283
|
useEditorConnection,
|
|
1395
1284
|
useCollaborators,
|
|
1396
1285
|
useCollaboratorPresence,
|