@libredb/studio 0.9.12 → 0.9.19
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/README.md +18 -4
- package/dist/{chunk-VWVRUCQO.mjs → chunk-CPF7XWV5.mjs} +77 -77
- package/dist/chunk-CPF7XWV5.mjs.map +1 -0
- package/dist/{chunk-DZ2UB3C6.mjs → chunk-G3S66G64.mjs} +259 -265
- package/dist/chunk-G3S66G64.mjs.map +1 -0
- package/dist/{chunk-JOGLIOFO.js → chunk-HGPD6PWV.js} +129 -129
- package/dist/chunk-HGPD6PWV.js.map +1 -0
- package/dist/{chunk-RBVDMLFV.js → chunk-Y52UIFEX.js} +259 -265
- package/dist/chunk-Y52UIFEX.js.map +1 -0
- package/dist/components.js +14 -14
- package/dist/components.mjs +2 -2
- package/dist/index.js +14 -14
- package/dist/index.mjs +2 -2
- package/dist/workspace.js +350 -358
- package/dist/workspace.js.map +1 -1
- package/dist/workspace.mjs +220 -228
- package/dist/workspace.mjs.map +1 -1
- package/package.json +10 -5
- package/dist/chunk-DZ2UB3C6.mjs.map +0 -1
- package/dist/chunk-JOGLIOFO.js.map +0 -1
- package/dist/chunk-RBVDMLFV.js.map +0 -1
- package/dist/chunk-VWVRUCQO.mjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkY52UIFEX_js = require('./chunk-Y52UIFEX.js');
|
|
4
4
|
var chunkQ6LRDBK7_js = require('./chunk-Q6LRDBK7.js');
|
|
5
5
|
var vaul = require('vaul');
|
|
6
6
|
var jsxRuntime = require('react/jsx-runtime');
|
|
@@ -46,7 +46,7 @@ function DrawerOverlay(_a) {
|
|
|
46
46
|
vaul.Drawer.Overlay,
|
|
47
47
|
chunkQ6LRDBK7_js.__spreadValues({
|
|
48
48
|
"data-slot": "drawer-overlay",
|
|
49
|
-
className:
|
|
49
|
+
className: chunkY52UIFEX_js.cn(
|
|
50
50
|
"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",
|
|
51
51
|
className
|
|
52
52
|
)
|
|
@@ -67,7 +67,7 @@ function DrawerContent(_a) {
|
|
|
67
67
|
vaul.Drawer.Content,
|
|
68
68
|
chunkQ6LRDBK7_js.__spreadProps(chunkQ6LRDBK7_js.__spreadValues({
|
|
69
69
|
"data-slot": "drawer-content",
|
|
70
|
-
className:
|
|
70
|
+
className: chunkY52UIFEX_js.cn(
|
|
71
71
|
"group/drawer-content bg-background fixed z-50 flex h-auto flex-col",
|
|
72
72
|
"data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:rounded-b-lg data-[vaul-drawer-direction=top]:border-b",
|
|
73
73
|
"data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:rounded-t-lg data-[vaul-drawer-direction=bottom]:border-t",
|
|
@@ -90,7 +90,7 @@ function DrawerHeader(_a) {
|
|
|
90
90
|
"div",
|
|
91
91
|
chunkQ6LRDBK7_js.__spreadValues({
|
|
92
92
|
"data-slot": "drawer-header",
|
|
93
|
-
className:
|
|
93
|
+
className: chunkY52UIFEX_js.cn(
|
|
94
94
|
"flex flex-col gap-0.5 p-4 group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center md:gap-1.5 md:text-left",
|
|
95
95
|
className
|
|
96
96
|
)
|
|
@@ -107,7 +107,7 @@ function DrawerTitle(_a) {
|
|
|
107
107
|
vaul.Drawer.Title,
|
|
108
108
|
chunkQ6LRDBK7_js.__spreadValues({
|
|
109
109
|
"data-slot": "drawer-title",
|
|
110
|
-
className:
|
|
110
|
+
className: chunkY52UIFEX_js.cn("text-foreground font-semibold", className)
|
|
111
111
|
}, props)
|
|
112
112
|
);
|
|
113
113
|
}
|
|
@@ -121,7 +121,7 @@ function DrawerDescription(_a) {
|
|
|
121
121
|
vaul.Drawer.Description,
|
|
122
122
|
chunkQ6LRDBK7_js.__spreadValues({
|
|
123
123
|
"data-slot": "drawer-description",
|
|
124
|
-
className:
|
|
124
|
+
className: chunkY52UIFEX_js.cn("text-muted-foreground text-sm", className)
|
|
125
125
|
}, props)
|
|
126
126
|
);
|
|
127
127
|
}
|
|
@@ -272,7 +272,7 @@ function useConnectionForm({ isOpen, onConnect, editConnection, onTestConnection
|
|
|
272
272
|
setType(editConnection.type);
|
|
273
273
|
setName(editConnection.name);
|
|
274
274
|
setHost(editConnection.host || "localhost");
|
|
275
|
-
setPort(((_a = editConnection.port) == null ? void 0 : _a.toString()) ||
|
|
275
|
+
setPort(((_a = editConnection.port) == null ? void 0 : _a.toString()) || chunkY52UIFEX_js.getDBConfig(editConnection.type).defaultPort);
|
|
276
276
|
setUser(editConnection.user || "");
|
|
277
277
|
setPassword(editConnection.password || "");
|
|
278
278
|
setDatabase(editConnection.database || "");
|
|
@@ -349,8 +349,8 @@ function useConnectionForm({ isOpen, onConnect, editConnection, onTestConnection
|
|
|
349
349
|
database,
|
|
350
350
|
createdAt: (editConnection == null ? void 0 : editConnection.createdAt) || /* @__PURE__ */ new Date(),
|
|
351
351
|
environment,
|
|
352
|
-
color:
|
|
353
|
-
}, sslConfig ? { ssl: sslConfig } : {}), sshConfig ? { sshTunnel: sshConfig } : {}),
|
|
352
|
+
color: chunkY52UIFEX_js.ENVIRONMENT_COLORS[environment]
|
|
353
|
+
}, sslConfig ? { ssl: sslConfig } : {}), sshConfig ? { sshTunnel: sshConfig } : {}), chunkY52UIFEX_js.getDBConfig(type).showConnectionStringToggle && mongoConnectionMode === "connectionString" ? {
|
|
354
354
|
connectionString,
|
|
355
355
|
host: void 0,
|
|
356
356
|
port: void 0,
|
|
@@ -477,7 +477,7 @@ function useConnectionForm({ isOpen, onConnect, editConnection, onTestConnection
|
|
|
477
477
|
}, [pasteInput, name]);
|
|
478
478
|
const selectableTypes = ["postgres", "mysql", "oracle", "mssql", "mongodb", "redis"];
|
|
479
479
|
const dbTypes = selectableTypes.map((t) => {
|
|
480
|
-
const cfg =
|
|
480
|
+
const cfg = chunkY52UIFEX_js.getDBConfig(t);
|
|
481
481
|
return { value: t, label: cfg.label, icon: cfg.icon, color: cfg.color };
|
|
482
482
|
});
|
|
483
483
|
return {
|
|
@@ -659,18 +659,18 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
659
659
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1 overflow-y-auto p-4 md:p-8", children: [
|
|
660
660
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-4 md:mb-8", children: [
|
|
661
661
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
|
|
662
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 rounded-xl bg-blue-500/10 border border-blue-500/20", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { className: "w-5 h-5 text-blue-400" }) }),
|
|
663
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-
|
|
662
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "p-2 rounded-xl bg-blue-500/10 border border-blue-500/20", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Zap, { strokeWidth: 1.5, className: "w-5 h-5 text-blue-400" }) }),
|
|
663
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-xs md:text-[0.8125rem] font-medium", children: isEditMode ? "Edit Connection" : "New Connection" })
|
|
664
664
|
] }),
|
|
665
665
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
666
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-
|
|
666
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-zinc-500", children: isEditMode ? "Update your database connection parameters." : "Configure your database connection parameters securely." }),
|
|
667
667
|
!isEditMode && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
668
668
|
"button",
|
|
669
669
|
{
|
|
670
670
|
onClick: () => setShowPasteInput(!showPasteInput),
|
|
671
|
-
className: "flex items-center gap-1.5 text-xs font-
|
|
671
|
+
className: "flex items-center gap-1.5 text-xs font-mediumr text-blue-400 hover:text-blue-300 transition-colors px-2 py-1 rounded-md hover:bg-blue-500/10",
|
|
672
672
|
children: [
|
|
673
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardPaste, { className: "w-3 h-3" }),
|
|
673
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ClipboardPaste, { strokeWidth: 1.5, className: "w-3 h-3" }),
|
|
674
674
|
"Paste URL"
|
|
675
675
|
]
|
|
676
676
|
}
|
|
@@ -685,24 +685,24 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
685
685
|
exit: { height: 0, opacity: 0 },
|
|
686
686
|
className: "mb-6 overflow-hidden",
|
|
687
687
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 rounded-lg border border-blue-500/20 bg-blue-500/5 space-y-2", children: [
|
|
688
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
688
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-blue-400", children: "Paste Connection URL" }),
|
|
689
689
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
690
690
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
691
|
-
|
|
691
|
+
chunkY52UIFEX_js.Input,
|
|
692
692
|
{
|
|
693
693
|
value: pasteInput,
|
|
694
694
|
onChange: (e) => setPasteInput(e.target.value),
|
|
695
695
|
placeholder: "postgres://user:pass@host:5432/db or mongodb://...",
|
|
696
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 text-
|
|
696
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 text-xs font-mono flex-1",
|
|
697
697
|
onKeyDown: (e) => e.key === "Enter" && handlePasteConnectionString()
|
|
698
698
|
}
|
|
699
699
|
),
|
|
700
700
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
701
|
-
|
|
701
|
+
chunkY52UIFEX_js.Button,
|
|
702
702
|
{
|
|
703
703
|
size: "sm",
|
|
704
704
|
onClick: handlePasteConnectionString,
|
|
705
|
-
className: "bg-blue-600 hover:bg-blue-500 text-white h-9 px-4 text-xs font-
|
|
705
|
+
className: "bg-blue-600 hover:bg-blue-500 text-white h-9 px-4 text-xs font-medium",
|
|
706
706
|
children: "Parse"
|
|
707
707
|
}
|
|
708
708
|
)
|
|
@@ -714,28 +714,28 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
714
714
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4 md:space-y-6", children: [
|
|
715
715
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
716
716
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
717
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Database, { className: "w-3 h-3 text-zinc-500" }),
|
|
718
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
717
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Database, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
718
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "name", className: "text-xs font-mediumr text-zinc-500", children: "Connection Name" })
|
|
719
719
|
] }),
|
|
720
720
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
721
|
-
|
|
721
|
+
chunkY52UIFEX_js.Input,
|
|
722
722
|
{
|
|
723
723
|
id: "name",
|
|
724
724
|
value: name,
|
|
725
725
|
onChange: (e) => setName(e.target.value),
|
|
726
726
|
placeholder: "My Database",
|
|
727
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
727
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
|
|
728
728
|
}
|
|
729
729
|
)
|
|
730
730
|
] }),
|
|
731
731
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
732
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
733
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-2", children: Object.keys(
|
|
732
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Environment" }),
|
|
733
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-2", children: Object.keys(chunkY52UIFEX_js.ENVIRONMENT_COLORS).map((env) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
734
734
|
"button",
|
|
735
735
|
{
|
|
736
736
|
onClick: () => setEnvironment(env),
|
|
737
|
-
className:
|
|
738
|
-
"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-
|
|
737
|
+
className: chunkY52UIFEX_js.cn(
|
|
738
|
+
"flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-mediumr transition-all border",
|
|
739
739
|
environment === env ? "border-white/20 bg-white/5 text-zinc-200" : "border-transparent text-zinc-500 hover:text-zinc-300 hover:bg-white/5"
|
|
740
740
|
),
|
|
741
741
|
children: [
|
|
@@ -743,10 +743,10 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
743
743
|
"div",
|
|
744
744
|
{
|
|
745
745
|
className: "w-2 h-2 rounded-full",
|
|
746
|
-
style: { backgroundColor:
|
|
746
|
+
style: { backgroundColor: chunkY52UIFEX_js.ENVIRONMENT_COLORS[env] }
|
|
747
747
|
}
|
|
748
748
|
),
|
|
749
|
-
env === "other" ? "Other" :
|
|
749
|
+
env === "other" ? "Other" : chunkY52UIFEX_js.ENVIRONMENT_LABELS[env]
|
|
750
750
|
]
|
|
751
751
|
},
|
|
752
752
|
env
|
|
@@ -757,35 +757,35 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
757
757
|
{
|
|
758
758
|
onClick: () => {
|
|
759
759
|
setType(db.value);
|
|
760
|
-
const cfg =
|
|
760
|
+
const cfg = chunkY52UIFEX_js.getDBConfig(db.value);
|
|
761
761
|
if (cfg.defaultPort) setPort(cfg.defaultPort);
|
|
762
762
|
setTestResult(null);
|
|
763
763
|
},
|
|
764
764
|
disabled: isEditMode,
|
|
765
|
-
className:
|
|
765
|
+
className: chunkY52UIFEX_js.cn(
|
|
766
766
|
"flex flex-col items-center justify-center p-3 md:p-4 rounded-xl border transition-all duration-200 gap-2 group",
|
|
767
767
|
type === db.value ? "bg-blue-600/10 border-blue-500/50 shadow-[0_0_20px_rgba(59,130,246,0.1)]" : "bg-zinc-900/50 border-white/5 hover:border-white/10 hover:bg-zinc-900",
|
|
768
768
|
isEditMode && type !== db.value && "opacity-30 cursor-not-allowed"
|
|
769
769
|
),
|
|
770
770
|
children: [
|
|
771
|
-
/* @__PURE__ */ jsxRuntime.jsx(db.icon, { className:
|
|
772
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className:
|
|
771
|
+
/* @__PURE__ */ jsxRuntime.jsx(db.icon, { className: chunkY52UIFEX_js.cn("w-6 h-6 mb-1 transition-transform group-hover:scale-110", type === db.value ? db.color : "text-zinc-600") }),
|
|
772
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: chunkY52UIFEX_js.cn("text-xs font-medium", type === db.value ? "text-zinc-200" : "text-zinc-500"), children: db.label })
|
|
773
773
|
]
|
|
774
774
|
},
|
|
775
775
|
db.value
|
|
776
776
|
)) }),
|
|
777
777
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4 animate-in fade-in slide-in-from-bottom-4 duration-500", children: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
778
|
-
|
|
778
|
+
chunkY52UIFEX_js.getDBConfig(type).showConnectionStringToggle && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 p-1 rounded-lg bg-zinc-900/50 border border-white/5", children: [
|
|
779
779
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
780
780
|
"button",
|
|
781
781
|
{
|
|
782
782
|
onClick: () => setMongoConnectionMode("host"),
|
|
783
|
-
className:
|
|
784
|
-
"flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-
|
|
783
|
+
className: chunkY52UIFEX_js.cn(
|
|
784
|
+
"flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-medium transition-all",
|
|
785
785
|
mongoConnectionMode === "host" ? "bg-blue-600/20 text-blue-400 border border-blue-500/30" : "text-zinc-500 hover:text-zinc-300"
|
|
786
786
|
),
|
|
787
787
|
children: [
|
|
788
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Globe, { className: "w-3 h-3" }),
|
|
788
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Globe, { strokeWidth: 1.5, className: "w-3 h-3" }),
|
|
789
789
|
"Host / Port"
|
|
790
790
|
]
|
|
791
791
|
}
|
|
@@ -794,74 +794,74 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
794
794
|
"button",
|
|
795
795
|
{
|
|
796
796
|
onClick: () => setMongoConnectionMode("connectionString"),
|
|
797
|
-
className:
|
|
798
|
-
"flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-
|
|
797
|
+
className: chunkY52UIFEX_js.cn(
|
|
798
|
+
"flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-medium transition-all",
|
|
799
799
|
mongoConnectionMode === "connectionString" ? "bg-blue-600/20 text-blue-400 border border-blue-500/30" : "text-zinc-500 hover:text-zinc-300"
|
|
800
800
|
),
|
|
801
801
|
children: [
|
|
802
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "w-3 h-3" }),
|
|
802
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { strokeWidth: 1.5, className: "w-3 h-3" }),
|
|
803
803
|
"Connection String"
|
|
804
804
|
]
|
|
805
805
|
}
|
|
806
806
|
)
|
|
807
807
|
] }),
|
|
808
|
-
|
|
808
|
+
chunkY52UIFEX_js.getDBConfig(type).showConnectionStringToggle && mongoConnectionMode === "connectionString" ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
809
809
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
810
810
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
811
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { className: "w-3 h-3 text-zinc-500" }),
|
|
812
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
811
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Link, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
812
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "connectionString", className: "text-xs font-mediumr text-zinc-500", children: "Connection URI" })
|
|
813
813
|
] }),
|
|
814
814
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
815
|
-
|
|
815
|
+
chunkY52UIFEX_js.Input,
|
|
816
816
|
{
|
|
817
817
|
id: "connectionString",
|
|
818
818
|
value: connectionString,
|
|
819
819
|
onChange: (e) => setConnectionString(e.target.value),
|
|
820
820
|
placeholder: "mongodb://localhost:27017/mydb or mongodb+srv://...",
|
|
821
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
821
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
|
|
822
822
|
}
|
|
823
823
|
)
|
|
824
824
|
] }),
|
|
825
825
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
826
826
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
827
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Database, { className: "w-3 h-3 text-zinc-500" }),
|
|
828
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
827
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Database, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
828
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "database", className: "text-xs font-mediumr text-zinc-500", children: "Database Name (optional override)" })
|
|
829
829
|
] }),
|
|
830
830
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
831
|
-
|
|
831
|
+
chunkY52UIFEX_js.Input,
|
|
832
832
|
{
|
|
833
833
|
id: "database",
|
|
834
834
|
value: database,
|
|
835
835
|
onChange: (e) => setDatabase(e.target.value),
|
|
836
836
|
placeholder: "Extracted from URI if not provided",
|
|
837
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
837
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
|
|
838
838
|
}
|
|
839
839
|
)
|
|
840
840
|
] })
|
|
841
841
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
842
842
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
843
843
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
844
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Globe, { className: "w-3 h-3 text-zinc-500" }),
|
|
845
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
844
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Globe, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
845
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "host", className: "text-xs font-mediumr text-zinc-500", children: "Host & Instance" })
|
|
846
846
|
] }),
|
|
847
847
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-3", children: [
|
|
848
848
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
849
|
-
|
|
849
|
+
chunkY52UIFEX_js.Input,
|
|
850
850
|
{
|
|
851
851
|
id: "host",
|
|
852
852
|
value: host,
|
|
853
853
|
onChange: (e) => setHost(e.target.value),
|
|
854
854
|
placeholder: "localhost",
|
|
855
|
-
className: "md:col-span-3 h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
855
|
+
className: "md:col-span-3 h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
|
|
856
856
|
}
|
|
857
857
|
),
|
|
858
858
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
859
|
-
|
|
859
|
+
chunkY52UIFEX_js.Input,
|
|
860
860
|
{
|
|
861
861
|
id: "port",
|
|
862
862
|
value: port,
|
|
863
863
|
onChange: (e) => setPort(e.target.value),
|
|
864
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
864
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
|
|
865
865
|
}
|
|
866
866
|
)
|
|
867
867
|
] })
|
|
@@ -869,51 +869,51 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
869
869
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
|
|
870
870
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
871
871
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
872
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Key, { className: "w-3 h-3 text-zinc-500" }),
|
|
873
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
872
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Key, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
873
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "user", className: "text-xs font-mediumr text-zinc-500", children: "Username" })
|
|
874
874
|
] }),
|
|
875
875
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
876
|
-
|
|
876
|
+
chunkY52UIFEX_js.Input,
|
|
877
877
|
{
|
|
878
878
|
id: "user",
|
|
879
879
|
value: user,
|
|
880
880
|
onChange: (e) => setUser(e.target.value),
|
|
881
881
|
placeholder: "postgres",
|
|
882
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
882
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
|
|
883
883
|
}
|
|
884
884
|
)
|
|
885
885
|
] }),
|
|
886
886
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
887
887
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
888
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { className: "w-3 h-3 text-zinc-500" }),
|
|
889
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
888
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ShieldCheck, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
889
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "password", className: "text-xs font-mediumr text-zinc-500", children: "Password" })
|
|
890
890
|
] }),
|
|
891
891
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
892
|
-
|
|
892
|
+
chunkY52UIFEX_js.Input,
|
|
893
893
|
{
|
|
894
894
|
id: "password",
|
|
895
895
|
type: "password",
|
|
896
896
|
value: password,
|
|
897
897
|
onChange: (e) => setPassword(e.target.value),
|
|
898
898
|
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
899
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
899
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
|
|
900
900
|
}
|
|
901
901
|
)
|
|
902
902
|
] })
|
|
903
903
|
] }),
|
|
904
904
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
905
905
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
|
|
906
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Database, { className: "w-3 h-3 text-zinc-500" }),
|
|
907
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
906
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Database, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
|
|
907
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { htmlFor: "database", className: "text-xs font-mediumr text-zinc-500", children: "Database Name" })
|
|
908
908
|
] }),
|
|
909
909
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
910
|
-
|
|
910
|
+
chunkY52UIFEX_js.Input,
|
|
911
911
|
{
|
|
912
912
|
id: "database",
|
|
913
913
|
value: database,
|
|
914
914
|
onChange: (e) => setDatabase(e.target.value),
|
|
915
915
|
placeholder: "production_db",
|
|
916
|
-
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-
|
|
916
|
+
className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
|
|
917
917
|
}
|
|
918
918
|
)
|
|
919
919
|
] })
|
|
@@ -925,12 +925,12 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
925
925
|
{
|
|
926
926
|
type: "button",
|
|
927
927
|
onClick: () => setShowAdvanced(!showAdvanced),
|
|
928
|
-
className: "flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-white/5 hover:border-white/10 bg-zinc-900/30 text-xs font-
|
|
928
|
+
className: "flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-white/5 hover:border-white/10 bg-zinc-900/30 text-xs font-medium text-zinc-400 hover:text-zinc-200 transition-all",
|
|
929
929
|
children: [
|
|
930
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings2, { className: "w-3.5 h-3.5 text-orange-500" }),
|
|
930
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Settings2, { strokeWidth: 1.5, className: "w-3.5 h-3.5 text-orange-500" }),
|
|
931
931
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "Advanced" }),
|
|
932
|
-
(serviceName || instanceName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-
|
|
933
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className:
|
|
932
|
+
(serviceName || instanceName) && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-[0.625rem] bg-orange-500/10 text-orange-400 border border-orange-500/20", children: "SET" }),
|
|
933
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: chunkY52UIFEX_js.cn("w-3 h-3 ml-auto transition-transform", showAdvanced && "rotate-180") })
|
|
934
934
|
]
|
|
935
935
|
}
|
|
936
936
|
),
|
|
@@ -943,27 +943,27 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
943
943
|
className: "overflow-hidden",
|
|
944
944
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 rounded-lg border border-orange-500/10 bg-orange-500/5 space-y-3", children: [
|
|
945
945
|
type === "oracle" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
946
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
946
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Service Name" }),
|
|
947
947
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
948
|
-
|
|
948
|
+
chunkY52UIFEX_js.Input,
|
|
949
949
|
{
|
|
950
950
|
value: serviceName,
|
|
951
951
|
onChange: (e) => setServiceName(e.target.value),
|
|
952
952
|
placeholder: "ORCL or XEPDB1",
|
|
953
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-
|
|
953
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-xs"
|
|
954
954
|
}
|
|
955
955
|
),
|
|
956
956
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-zinc-500", children: "If empty, the Database Name field is used as the service name." })
|
|
957
957
|
] }),
|
|
958
958
|
type === "mssql" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
959
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
959
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Instance Name" }),
|
|
960
960
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
961
|
-
|
|
961
|
+
chunkY52UIFEX_js.Input,
|
|
962
962
|
{
|
|
963
963
|
value: instanceName,
|
|
964
964
|
onChange: (e) => setInstanceName(e.target.value),
|
|
965
965
|
placeholder: "SQLEXPRESS",
|
|
966
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-
|
|
966
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-xs"
|
|
967
967
|
}
|
|
968
968
|
),
|
|
969
969
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-zinc-500", children: "For named instances (e.g. SQLEXPRESS). Leave empty for default instance." })
|
|
@@ -978,12 +978,12 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
978
978
|
{
|
|
979
979
|
type: "button",
|
|
980
980
|
onClick: () => setShowSSL(!showSSL),
|
|
981
|
-
className: "flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-white/5 hover:border-white/10 bg-zinc-900/30 text-xs font-
|
|
981
|
+
className: "flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-white/5 hover:border-white/10 bg-zinc-900/30 text-xs font-medium text-zinc-400 hover:text-zinc-200 transition-all",
|
|
982
982
|
children: [
|
|
983
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { className: "w-3.5 h-3.5 text-emerald-500" }),
|
|
983
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lock, { strokeWidth: 1.5, className: "w-3.5 h-3.5 text-emerald-500" }),
|
|
984
984
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "SSL / TLS" }),
|
|
985
|
-
sslMode !== "disable" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-
|
|
986
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className:
|
|
985
|
+
sslMode !== "disable" && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-[0.625rem] bg-emerald-500/10 text-emerald-400 border border-emerald-500/20", children: sslMode.toUpperCase() }),
|
|
986
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: chunkY52UIFEX_js.cn("w-3 h-3 ml-auto transition-transform", showSSL && "rotate-180") })
|
|
987
987
|
]
|
|
988
988
|
}
|
|
989
989
|
),
|
|
@@ -996,14 +996,14 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
996
996
|
className: "overflow-hidden",
|
|
997
997
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "p-3 rounded-lg border border-emerald-500/10 bg-emerald-500/5 space-y-3", children: [
|
|
998
998
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
999
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
999
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "SSL Mode" }),
|
|
1000
1000
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-1.5", children: ["disable", "require", "verify-ca", "verify-full"].map((mode) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1001
1001
|
"button",
|
|
1002
1002
|
{
|
|
1003
1003
|
type: "button",
|
|
1004
1004
|
onClick: () => setSSLMode(mode),
|
|
1005
|
-
className:
|
|
1006
|
-
"px-2.5 py-1.5 rounded-md text-xs font-
|
|
1005
|
+
className: chunkY52UIFEX_js.cn(
|
|
1006
|
+
"px-2.5 py-1.5 rounded-md text-xs font-mediumr transition-all border",
|
|
1007
1007
|
sslMode === mode ? "border-emerald-500/30 bg-emerald-500/10 text-emerald-400" : "border-transparent text-zinc-500 hover:text-zinc-300 hover:bg-white/5"
|
|
1008
1008
|
),
|
|
1009
1009
|
children: mode
|
|
@@ -1013,7 +1013,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1013
1013
|
] }),
|
|
1014
1014
|
sslMode !== "disable" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1015
1015
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1016
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1016
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "CA Certificate (PEM)" }),
|
|
1017
1017
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1018
1018
|
"textarea",
|
|
1019
1019
|
{
|
|
@@ -1027,7 +1027,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1027
1027
|
] }),
|
|
1028
1028
|
(sslMode === "verify-ca" || sslMode === "verify-full") && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
1029
1029
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1030
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1030
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Client Certificate (PEM)" }),
|
|
1031
1031
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1032
1032
|
"textarea",
|
|
1033
1033
|
{
|
|
@@ -1040,7 +1040,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1040
1040
|
)
|
|
1041
1041
|
] }),
|
|
1042
1042
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1043
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1043
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Client Private Key (PEM)" }),
|
|
1044
1044
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1045
1045
|
"textarea",
|
|
1046
1046
|
{
|
|
@@ -1062,12 +1062,12 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1062
1062
|
{
|
|
1063
1063
|
type: "button",
|
|
1064
1064
|
onClick: () => setShowSSH(!showSSH),
|
|
1065
|
-
className: "flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-white/5 hover:border-white/10 bg-zinc-900/30 text-xs font-
|
|
1065
|
+
className: "flex items-center gap-2 w-full px-3 py-2 rounded-lg border border-white/5 hover:border-white/10 bg-zinc-900/30 text-xs font-medium text-zinc-400 hover:text-zinc-200 transition-all",
|
|
1066
1066
|
children: [
|
|
1067
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Terminal, { className: "w-3.5 h-3.5 text-purple-500" }),
|
|
1067
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.Terminal, { strokeWidth: 1.5, className: "w-3.5 h-3.5 text-purple-500" }),
|
|
1068
1068
|
/* @__PURE__ */ jsxRuntime.jsx("span", { children: "SSH Tunnel" }),
|
|
1069
|
-
sshEnabled && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-
|
|
1070
|
-
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className:
|
|
1069
|
+
sshEnabled && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-[0.625rem] bg-purple-500/10 text-purple-400 border border-purple-500/20", children: "ON" }),
|
|
1070
|
+
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { className: chunkY52UIFEX_js.cn("w-3 h-3 ml-auto transition-transform", showSSH && "rotate-180") })
|
|
1071
1071
|
]
|
|
1072
1072
|
}
|
|
1073
1073
|
),
|
|
@@ -1089,56 +1089,56 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1089
1089
|
className: "rounded border-white/20 bg-zinc-900/50"
|
|
1090
1090
|
}
|
|
1091
1091
|
),
|
|
1092
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-
|
|
1092
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-xs font-medium text-zinc-300", children: "Enable SSH Tunnel" })
|
|
1093
1093
|
] }),
|
|
1094
1094
|
sshEnabled && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1095
1095
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-3", children: [
|
|
1096
1096
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:col-span-3 space-y-1.5", children: [
|
|
1097
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1097
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "SSH Host" }),
|
|
1098
1098
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1099
|
-
|
|
1099
|
+
chunkY52UIFEX_js.Input,
|
|
1100
1100
|
{
|
|
1101
1101
|
value: sshHost,
|
|
1102
1102
|
onChange: (e) => setSSHHost(e.target.value),
|
|
1103
1103
|
placeholder: "bastion.example.com",
|
|
1104
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-
|
|
1104
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
|
|
1105
1105
|
}
|
|
1106
1106
|
)
|
|
1107
1107
|
] }),
|
|
1108
1108
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1109
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1109
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Port" }),
|
|
1110
1110
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1111
|
-
|
|
1111
|
+
chunkY52UIFEX_js.Input,
|
|
1112
1112
|
{
|
|
1113
1113
|
value: sshPort,
|
|
1114
1114
|
onChange: (e) => setSSHPort(e.target.value),
|
|
1115
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-
|
|
1115
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs font-mono"
|
|
1116
1116
|
}
|
|
1117
1117
|
)
|
|
1118
1118
|
] })
|
|
1119
1119
|
] }),
|
|
1120
1120
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1121
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1121
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Username" }),
|
|
1122
1122
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1123
|
-
|
|
1123
|
+
chunkY52UIFEX_js.Input,
|
|
1124
1124
|
{
|
|
1125
1125
|
value: sshUsername,
|
|
1126
1126
|
onChange: (e) => setSSHUsername(e.target.value),
|
|
1127
1127
|
placeholder: "ubuntu",
|
|
1128
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-
|
|
1128
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
|
|
1129
1129
|
}
|
|
1130
1130
|
)
|
|
1131
1131
|
] }),
|
|
1132
1132
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-2", children: [
|
|
1133
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1133
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Auth Method" }),
|
|
1134
1134
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex gap-2", children: [
|
|
1135
1135
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1136
1136
|
"button",
|
|
1137
1137
|
{
|
|
1138
1138
|
type: "button",
|
|
1139
1139
|
onClick: () => setSSHAuthMethod("password"),
|
|
1140
|
-
className:
|
|
1141
|
-
"flex-1 px-3 py-1.5 rounded-md text-xs font-
|
|
1140
|
+
className: chunkY52UIFEX_js.cn(
|
|
1141
|
+
"flex-1 px-3 py-1.5 rounded-md text-xs font-mediumr transition-all border",
|
|
1142
1142
|
sshAuthMethod === "password" ? "border-purple-500/30 bg-purple-500/10 text-purple-400" : "border-transparent text-zinc-500 hover:text-zinc-300 hover:bg-white/5"
|
|
1143
1143
|
),
|
|
1144
1144
|
children: "Password"
|
|
@@ -1149,8 +1149,8 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1149
1149
|
{
|
|
1150
1150
|
type: "button",
|
|
1151
1151
|
onClick: () => setSSHAuthMethod("privateKey"),
|
|
1152
|
-
className:
|
|
1153
|
-
"flex-1 px-3 py-1.5 rounded-md text-xs font-
|
|
1152
|
+
className: chunkY52UIFEX_js.cn(
|
|
1153
|
+
"flex-1 px-3 py-1.5 rounded-md text-xs font-mediumr transition-all border",
|
|
1154
1154
|
sshAuthMethod === "privateKey" ? "border-purple-500/30 bg-purple-500/10 text-purple-400" : "border-transparent text-zinc-500 hover:text-zinc-300 hover:bg-white/5"
|
|
1155
1155
|
),
|
|
1156
1156
|
children: "Private Key"
|
|
@@ -1159,20 +1159,20 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1159
1159
|
] })
|
|
1160
1160
|
] }),
|
|
1161
1161
|
sshAuthMethod === "password" ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1162
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1162
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "SSH Password" }),
|
|
1163
1163
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1164
|
-
|
|
1164
|
+
chunkY52UIFEX_js.Input,
|
|
1165
1165
|
{
|
|
1166
1166
|
type: "password",
|
|
1167
1167
|
value: sshPassword,
|
|
1168
1168
|
onChange: (e) => setSSHPassword(e.target.value),
|
|
1169
1169
|
placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
|
|
1170
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-
|
|
1170
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
|
|
1171
1171
|
}
|
|
1172
1172
|
)
|
|
1173
1173
|
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
|
|
1174
1174
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1175
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1175
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Private Key (PEM)" }),
|
|
1176
1176
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1177
1177
|
"textarea",
|
|
1178
1178
|
{
|
|
@@ -1185,15 +1185,15 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1185
1185
|
)
|
|
1186
1186
|
] }),
|
|
1187
1187
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1.5", children: [
|
|
1188
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1188
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Label, { className: "text-xs font-mediumr text-zinc-500", children: "Passphrase (optional)" }),
|
|
1189
1189
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1190
|
-
|
|
1190
|
+
chunkY52UIFEX_js.Input,
|
|
1191
1191
|
{
|
|
1192
1192
|
type: "password",
|
|
1193
1193
|
value: sshPassphrase,
|
|
1194
1194
|
onChange: (e) => setSSHPassphrase(e.target.value),
|
|
1195
1195
|
placeholder: "Key passphrase (if encrypted)",
|
|
1196
|
-
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-
|
|
1196
|
+
className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
|
|
1197
1197
|
}
|
|
1198
1198
|
)
|
|
1199
1199
|
] })
|
|
@@ -1210,11 +1210,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1210
1210
|
animate: { height: "auto", opacity: 1 },
|
|
1211
1211
|
exit: { height: 0, opacity: 0 },
|
|
1212
1212
|
className: "overflow-hidden",
|
|
1213
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className:
|
|
1213
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkY52UIFEX_js.cn(
|
|
1214
1214
|
"flex items-center gap-2 p-3 rounded-lg border text-xs",
|
|
1215
1215
|
testResult.success ? "bg-emerald-500/5 border-emerald-500/20 text-emerald-400" : "bg-red-500/5 border-red-500/20 text-red-400"
|
|
1216
1216
|
), children: [
|
|
1217
|
-
testResult.success ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { className: "w-
|
|
1217
|
+
testResult.success ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CheckCircle2, { strokeWidth: 1.5, className: "w-3.5 h-3.5 shrink-0" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.XCircle, { strokeWidth: 1.5, className: "w-3.5 h-3.5 shrink-0" }),
|
|
1218
1218
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "leading-relaxed", children: testResult.message })
|
|
1219
1219
|
] })
|
|
1220
1220
|
}
|
|
@@ -1223,22 +1223,22 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1223
1223
|
] }),
|
|
1224
1224
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "shrink-0 bg-zinc-900/30 p-4 md:p-6 border-t border-white/5", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col-reverse gap-3 md:flex-row md:items-center md:justify-between", children: [
|
|
1225
1225
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1226
|
-
|
|
1226
|
+
chunkY52UIFEX_js.Button,
|
|
1227
1227
|
{
|
|
1228
1228
|
variant: "ghost",
|
|
1229
1229
|
onClick: onClose,
|
|
1230
|
-
className: "w-full md:w-auto text-zinc-500 hover:text-zinc-200 hover:bg-white/5 text-xs font-
|
|
1230
|
+
className: "w-full md:w-auto text-zinc-500 hover:text-zinc-200 hover:bg-white/5 text-xs font-medium",
|
|
1231
1231
|
children: "Cancel"
|
|
1232
1232
|
}
|
|
1233
1233
|
),
|
|
1234
1234
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-2 md:flex-row md:items-center md:gap-2", children: [
|
|
1235
1235
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1236
|
-
|
|
1236
|
+
chunkY52UIFEX_js.Button,
|
|
1237
1237
|
{
|
|
1238
1238
|
variant: "outline",
|
|
1239
1239
|
onClick: handleTestConnection,
|
|
1240
1240
|
disabled: isTesting,
|
|
1241
|
-
className: "w-full md:w-auto border-white/10 text-zinc-400 hover:text-white hover:bg-white/5 text-xs font-
|
|
1241
|
+
className: "w-full md:w-auto border-white/10 text-zinc-400 hover:text-white hover:bg-white/5 text-xs font-medium h-10 px-4",
|
|
1242
1242
|
children: isTesting ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
1243
1243
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "w-3 h-3 border-2 border-zinc-400/30 border-t-zinc-400 rounded-full animate-spin" }),
|
|
1244
1244
|
"Testing..."
|
|
@@ -1246,11 +1246,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1246
1246
|
}
|
|
1247
1247
|
),
|
|
1248
1248
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1249
|
-
|
|
1249
|
+
chunkY52UIFEX_js.Button,
|
|
1250
1250
|
{
|
|
1251
1251
|
onClick: handleConnect,
|
|
1252
|
-
disabled: isTesting ||
|
|
1253
|
-
className: "w-full md:w-auto min-w-0 md:min-w-[140px] bg-blue-600 hover:bg-blue-500 text-white font-
|
|
1252
|
+
disabled: isTesting || chunkY52UIFEX_js.getDBConfig(type).showConnectionStringToggle && mongoConnectionMode === "connectionString" && !connectionString.trim(),
|
|
1253
|
+
className: "w-full md:w-auto min-w-0 md:min-w-[140px] bg-blue-600 hover:bg-blue-500 text-white font-medium text-xs h-10 shadow-lg shadow-blue-900/20 group relative overflow-hidden",
|
|
1254
1254
|
children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: isTesting ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1255
1255
|
framerMotion.motion.div,
|
|
1256
1256
|
{
|
|
@@ -1291,14 +1291,14 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1291
1291
|
formContent
|
|
1292
1292
|
] }) });
|
|
1293
1293
|
}
|
|
1294
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1295
|
-
|
|
1294
|
+
return /* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.Dialog, { open: isOpen, onOpenChange: onClose, children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1295
|
+
chunkY52UIFEX_js.DialogContent,
|
|
1296
1296
|
{
|
|
1297
1297
|
className: "sm:max-w-[500px] lg:max-w-[540px] max-h-[90vh] bg-[#0a0a0a] border-white/5 text-zinc-200 p-0 overflow-hidden shadow-2xl flex flex-col",
|
|
1298
1298
|
showCloseButton: false,
|
|
1299
1299
|
children: [
|
|
1300
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1301
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1300
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.DialogTitle, { className: "sr-only", children: isEditMode ? "Edit Connection" : "New Connection" }),
|
|
1301
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkY52UIFEX_js.DialogDescription, { className: "sr-only", children: "Configure database connection parameters." }),
|
|
1302
1302
|
formContent
|
|
1303
1303
|
]
|
|
1304
1304
|
}
|
|
@@ -1306,5 +1306,5 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
|
|
|
1306
1306
|
}
|
|
1307
1307
|
|
|
1308
1308
|
exports.ConnectionModal = ConnectionModal;
|
|
1309
|
-
//# sourceMappingURL=chunk-
|
|
1310
|
-
//# sourceMappingURL=chunk-
|
|
1309
|
+
//# sourceMappingURL=chunk-HGPD6PWV.js.map
|
|
1310
|
+
//# sourceMappingURL=chunk-HGPD6PWV.js.map
|