@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 CHANGED
@@ -205,12 +205,14 @@ docker run -d \
205
205
  ghcr.io/libredb/libredb-studio:latest
206
206
  ```
207
207
 
208
+ > **Registry**: `ghcr.io/libredb/libredb-studio` is the primary image (no pull rate limits — preferred for Kubernetes/CI). The same image is also mirrored to Docker Hub as [`libredb/libredb-studio`](https://hub.docker.com/r/libredb/libredb-studio) for convenience.
209
+
208
210
  Open [http://localhost:3000](http://localhost:3000) and login with `admin@libredb.org` / `LibreDB.2026`.
209
211
 
210
212
  > **Tip**: Add `-e LLM_PROVIDER=gemini -e LLM_API_KEY=your_key -e LLM_MODEL=gemini-2.5-flash` to enable AI features.
211
213
 
212
214
  ### Prerequisites
213
- - [Bun](https://bun.sh/) (Recommended) or Node.js 20+
215
+ - [Bun](https://bun.sh/) (Recommended) or Node.js 24+
214
216
  - A target database to query (PostgreSQL, MySQL, Oracle, SQL Server, SQLite, MongoDB, or Redis)
215
217
 
216
218
  ### Quick Start (Local)
@@ -409,10 +411,23 @@ LibreDB Studio includes a `render.yaml` Blueprint for one-click deployment:
409
411
 
410
412
  ### Docker Compose (Self-Hosted)
411
413
 
414
+ Use the ready-to-use [`docker-compose.example.yml`](docker-compose.example.yml) — it pulls the published image (`ghcr.io/libredb/libredb-studio:latest`), so no source build is needed. It documents every supported environment variable (auth, OIDC, storage, LLM, seed connections), with the less-common ones commented out.
415
+
412
416
  ```bash
413
- docker-compose up -d
417
+ # 1. Copy the ready-to-use compose file
418
+ cp docker-compose.example.yml docker-compose.yml
419
+
420
+ # 2. Create your .env (set at least JWT_SECRET / ADMIN_PASSWORD / USER_PASSWORD)
421
+ cp .env.example .env
422
+
423
+ # 3. Start
424
+ docker compose up -d # → http://localhost:3000
414
425
  ```
415
426
 
427
+ This file is platform-neutral and works with PaaS tools that consume a plain `docker-compose.yml` (Dokploy, Coolify, Portainer, etc.) — point them at the file and set the secrets as environment variables.
428
+
429
+ > The repository's default `docker-compose.yml` builds the image from source (`build: .`) and is intended for local development.
430
+
416
431
  ### Kubernetes (Helm Chart)
417
432
 
418
433
  ```bash
@@ -585,8 +600,7 @@ extraEnvFrom:
585
600
  | [DeepWiki](https://deepwiki.com/libredb/libredb-studio) | AI-powered documentation — always up-to-date with the codebase |
586
601
  | [SonarCloud](https://sonarcloud.io/project/overview?id=libredb_libredb-studio) | Code quality, security analysis, and technical debt tracking |
587
602
  | [API Docs](docs/API_DOCS.md) | Complete REST API reference |
588
- | [OIDC Setup Guide](docs/OIDC_SETUP.md) | SSO configuration for Auth0, Keycloak, Okta, Azure AD, Zitadel |
589
- | [OIDC Architecture](docs/OIDC_ARCH.md) | OIDC subsystem internals, security model, extension points |
603
+ | [OIDC SSO](docs/OIDC.md) | SSO setup (Auth0, Keycloak, Okta, Azure AD, Zitadel, Google) + subsystem internals & security model |
590
604
  | [Theming Guide](docs/THEMING.md) | CSS theming, dark mode, and styling customization |
591
605
  | [Architecture](docs/ARCHITECTURE.md) | System architecture and design patterns |
592
606
 
@@ -1,4 +1,4 @@
1
- import { Label, Input, Button, ENVIRONMENT_COLORS, ENVIRONMENT_LABELS, cn, getDBConfig, Dialog, DialogContent, DialogTitle, DialogDescription } from './chunk-DZ2UB3C6.mjs';
1
+ import { Label, Input, Button, ENVIRONMENT_COLORS, ENVIRONMENT_LABELS, cn, getDBConfig, Dialog, DialogContent, DialogTitle, DialogDescription } from './chunk-G3S66G64.mjs';
2
2
  import { __spreadValues, __objRest, __spreadProps } from './chunk-4LVB3K53.mjs';
3
3
  import { Drawer as Drawer$1 } from 'vaul';
4
4
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
@@ -638,18 +638,18 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
638
638
  /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto p-4 md:p-8", children: [
639
639
  /* @__PURE__ */ jsxs("div", { className: "mb-4 md:mb-8", children: [
640
640
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 mb-2", children: [
641
- /* @__PURE__ */ jsx("div", { className: "p-2 rounded-xl bg-blue-500/10 border border-blue-500/20", children: /* @__PURE__ */ jsx(Zap, { className: "w-5 h-5 text-blue-400" }) }),
642
- /* @__PURE__ */ jsx("h2", { className: "text-xl md:text-2xl font-bold tracking-tight", children: isEditMode ? "Edit Connection" : "New Connection" })
641
+ /* @__PURE__ */ jsx("div", { className: "p-2 rounded-xl bg-blue-500/10 border border-blue-500/20", children: /* @__PURE__ */ jsx(Zap, { strokeWidth: 1.5, className: "w-5 h-5 text-blue-400" }) }),
642
+ /* @__PURE__ */ jsx("h2", { className: "text-xs md:text-[0.8125rem] font-medium", children: isEditMode ? "Edit Connection" : "New Connection" })
643
643
  ] }),
644
644
  /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
645
- /* @__PURE__ */ jsx("p", { className: "text-sm text-zinc-500", children: isEditMode ? "Update your database connection parameters." : "Configure your database connection parameters securely." }),
645
+ /* @__PURE__ */ jsx("p", { className: "text-xs text-zinc-500", children: isEditMode ? "Update your database connection parameters." : "Configure your database connection parameters securely." }),
646
646
  !isEditMode && /* @__PURE__ */ jsxs(
647
647
  "button",
648
648
  {
649
649
  onClick: () => setShowPasteInput(!showPasteInput),
650
- className: "flex items-center gap-1.5 text-xs font-bold uppercase tracking-wider text-blue-400 hover:text-blue-300 transition-colors px-2 py-1 rounded-md hover:bg-blue-500/10",
650
+ 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",
651
651
  children: [
652
- /* @__PURE__ */ jsx(ClipboardPaste, { className: "w-3 h-3" }),
652
+ /* @__PURE__ */ jsx(ClipboardPaste, { strokeWidth: 1.5, className: "w-3 h-3" }),
653
653
  "Paste URL"
654
654
  ]
655
655
  }
@@ -664,7 +664,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
664
664
  exit: { height: 0, opacity: 0 },
665
665
  className: "mb-6 overflow-hidden",
666
666
  children: /* @__PURE__ */ jsxs("div", { className: "p-3 rounded-lg border border-blue-500/20 bg-blue-500/5 space-y-2", children: [
667
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-blue-400", children: "Paste Connection URL" }),
667
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-blue-400", children: "Paste Connection URL" }),
668
668
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
669
669
  /* @__PURE__ */ jsx(
670
670
  Input,
@@ -672,7 +672,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
672
672
  value: pasteInput,
673
673
  onChange: (e) => setPasteInput(e.target.value),
674
674
  placeholder: "postgres://user:pass@host:5432/db or mongodb://...",
675
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 text-sm font-mono flex-1",
675
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 text-xs font-mono flex-1",
676
676
  onKeyDown: (e) => e.key === "Enter" && handlePasteConnectionString()
677
677
  }
678
678
  ),
@@ -681,7 +681,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
681
681
  {
682
682
  size: "sm",
683
683
  onClick: handlePasteConnectionString,
684
- className: "bg-blue-600 hover:bg-blue-500 text-white h-9 px-4 text-xs font-bold",
684
+ className: "bg-blue-600 hover:bg-blue-500 text-white h-9 px-4 text-xs font-medium",
685
685
  children: "Parse"
686
686
  }
687
687
  )
@@ -693,8 +693,8 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
693
693
  /* @__PURE__ */ jsxs("div", { className: "space-y-4 md:space-y-6", children: [
694
694
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
695
695
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
696
- /* @__PURE__ */ jsx(Database, { className: "w-3 h-3 text-zinc-500" }),
697
- /* @__PURE__ */ jsx(Label, { htmlFor: "name", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Connection Name" })
696
+ /* @__PURE__ */ jsx(Database, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
697
+ /* @__PURE__ */ jsx(Label, { htmlFor: "name", className: "text-xs font-mediumr text-zinc-500", children: "Connection Name" })
698
698
  ] }),
699
699
  /* @__PURE__ */ jsx(
700
700
  Input,
@@ -703,18 +703,18 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
703
703
  value: name,
704
704
  onChange: (e) => setName(e.target.value),
705
705
  placeholder: "My Database",
706
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm"
706
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
707
707
  }
708
708
  )
709
709
  ] }),
710
710
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
711
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Environment" }),
711
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Environment" }),
712
712
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-2", children: Object.keys(ENVIRONMENT_COLORS).map((env) => /* @__PURE__ */ jsxs(
713
713
  "button",
714
714
  {
715
715
  onClick: () => setEnvironment(env),
716
716
  className: cn(
717
- "flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-bold uppercase tracking-wider transition-all border",
717
+ "flex items-center gap-1.5 px-3 py-1.5 rounded-md text-xs font-mediumr transition-all border",
718
718
  environment === env ? "border-white/20 bg-white/5 text-zinc-200" : "border-transparent text-zinc-500 hover:text-zinc-300 hover:bg-white/5"
719
719
  ),
720
720
  children: [
@@ -748,7 +748,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
748
748
  ),
749
749
  children: [
750
750
  /* @__PURE__ */ jsx(db.icon, { className: cn("w-6 h-6 mb-1 transition-transform group-hover:scale-110", type === db.value ? db.color : "text-zinc-600") }),
751
- /* @__PURE__ */ jsx("span", { className: cn("text-xs font-semibold", type === db.value ? "text-zinc-200" : "text-zinc-500"), children: db.label })
751
+ /* @__PURE__ */ jsx("span", { className: cn("text-xs font-medium", type === db.value ? "text-zinc-200" : "text-zinc-500"), children: db.label })
752
752
  ]
753
753
  },
754
754
  db.value
@@ -760,11 +760,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
760
760
  {
761
761
  onClick: () => setMongoConnectionMode("host"),
762
762
  className: cn(
763
- "flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-bold transition-all",
763
+ "flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-medium transition-all",
764
764
  mongoConnectionMode === "host" ? "bg-blue-600/20 text-blue-400 border border-blue-500/30" : "text-zinc-500 hover:text-zinc-300"
765
765
  ),
766
766
  children: [
767
- /* @__PURE__ */ jsx(Globe, { className: "w-3 h-3" }),
767
+ /* @__PURE__ */ jsx(Globe, { strokeWidth: 1.5, className: "w-3 h-3" }),
768
768
  "Host / Port"
769
769
  ]
770
770
  }
@@ -774,11 +774,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
774
774
  {
775
775
  onClick: () => setMongoConnectionMode("connectionString"),
776
776
  className: cn(
777
- "flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-bold transition-all",
777
+ "flex-1 flex items-center justify-center gap-2 px-3 py-2 rounded-md text-xs font-medium transition-all",
778
778
  mongoConnectionMode === "connectionString" ? "bg-blue-600/20 text-blue-400 border border-blue-500/30" : "text-zinc-500 hover:text-zinc-300"
779
779
  ),
780
780
  children: [
781
- /* @__PURE__ */ jsx(Link, { className: "w-3 h-3" }),
781
+ /* @__PURE__ */ jsx(Link, { strokeWidth: 1.5, className: "w-3 h-3" }),
782
782
  "Connection String"
783
783
  ]
784
784
  }
@@ -787,8 +787,8 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
787
787
  getDBConfig(type).showConnectionStringToggle && mongoConnectionMode === "connectionString" ? /* @__PURE__ */ jsxs(Fragment, { children: [
788
788
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
789
789
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
790
- /* @__PURE__ */ jsx(Link, { className: "w-3 h-3 text-zinc-500" }),
791
- /* @__PURE__ */ jsx(Label, { htmlFor: "connectionString", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Connection URI" })
790
+ /* @__PURE__ */ jsx(Link, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
791
+ /* @__PURE__ */ jsx(Label, { htmlFor: "connectionString", className: "text-xs font-mediumr text-zinc-500", children: "Connection URI" })
792
792
  ] }),
793
793
  /* @__PURE__ */ jsx(
794
794
  Input,
@@ -797,14 +797,14 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
797
797
  value: connectionString,
798
798
  onChange: (e) => setConnectionString(e.target.value),
799
799
  placeholder: "mongodb://localhost:27017/mydb or mongodb+srv://...",
800
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm font-mono"
800
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
801
801
  }
802
802
  )
803
803
  ] }),
804
804
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
805
805
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
806
- /* @__PURE__ */ jsx(Database, { className: "w-3 h-3 text-zinc-500" }),
807
- /* @__PURE__ */ jsx(Label, { htmlFor: "database", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Database Name (optional override)" })
806
+ /* @__PURE__ */ jsx(Database, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
807
+ /* @__PURE__ */ jsx(Label, { htmlFor: "database", className: "text-xs font-mediumr text-zinc-500", children: "Database Name (optional override)" })
808
808
  ] }),
809
809
  /* @__PURE__ */ jsx(
810
810
  Input,
@@ -813,15 +813,15 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
813
813
  value: database,
814
814
  onChange: (e) => setDatabase(e.target.value),
815
815
  placeholder: "Extracted from URI if not provided",
816
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm font-mono"
816
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
817
817
  }
818
818
  )
819
819
  ] })
820
820
  ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
821
821
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
822
822
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
823
- /* @__PURE__ */ jsx(Globe, { className: "w-3 h-3 text-zinc-500" }),
824
- /* @__PURE__ */ jsx(Label, { htmlFor: "host", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Host & Instance" })
823
+ /* @__PURE__ */ jsx(Globe, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
824
+ /* @__PURE__ */ jsx(Label, { htmlFor: "host", className: "text-xs font-mediumr text-zinc-500", children: "Host & Instance" })
825
825
  ] }),
826
826
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-3", children: [
827
827
  /* @__PURE__ */ jsx(
@@ -831,7 +831,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
831
831
  value: host,
832
832
  onChange: (e) => setHost(e.target.value),
833
833
  placeholder: "localhost",
834
- className: "md:col-span-3 h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm"
834
+ className: "md:col-span-3 h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
835
835
  }
836
836
  ),
837
837
  /* @__PURE__ */ jsx(
@@ -840,7 +840,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
840
840
  id: "port",
841
841
  value: port,
842
842
  onChange: (e) => setPort(e.target.value),
843
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm font-mono"
843
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
844
844
  }
845
845
  )
846
846
  ] })
@@ -848,8 +848,8 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
848
848
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [
849
849
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
850
850
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
851
- /* @__PURE__ */ jsx(Key, { className: "w-3 h-3 text-zinc-500" }),
852
- /* @__PURE__ */ jsx(Label, { htmlFor: "user", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Username" })
851
+ /* @__PURE__ */ jsx(Key, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
852
+ /* @__PURE__ */ jsx(Label, { htmlFor: "user", className: "text-xs font-mediumr text-zinc-500", children: "Username" })
853
853
  ] }),
854
854
  /* @__PURE__ */ jsx(
855
855
  Input,
@@ -858,14 +858,14 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
858
858
  value: user,
859
859
  onChange: (e) => setUser(e.target.value),
860
860
  placeholder: "postgres",
861
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm"
861
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
862
862
  }
863
863
  )
864
864
  ] }),
865
865
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
866
866
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
867
- /* @__PURE__ */ jsx(ShieldCheck, { className: "w-3 h-3 text-zinc-500" }),
868
- /* @__PURE__ */ jsx(Label, { htmlFor: "password", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Password" })
867
+ /* @__PURE__ */ jsx(ShieldCheck, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
868
+ /* @__PURE__ */ jsx(Label, { htmlFor: "password", className: "text-xs font-mediumr text-zinc-500", children: "Password" })
869
869
  ] }),
870
870
  /* @__PURE__ */ jsx(
871
871
  Input,
@@ -875,15 +875,15 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
875
875
  value: password,
876
876
  onChange: (e) => setPassword(e.target.value),
877
877
  placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
878
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm"
878
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs"
879
879
  }
880
880
  )
881
881
  ] })
882
882
  ] }),
883
883
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
884
884
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 mb-1", children: [
885
- /* @__PURE__ */ jsx(Database, { className: "w-3 h-3 text-zinc-500" }),
886
- /* @__PURE__ */ jsx(Label, { htmlFor: "database", className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Database Name" })
885
+ /* @__PURE__ */ jsx(Database, { strokeWidth: 1.5, className: "w-3 h-3 text-zinc-500" }),
886
+ /* @__PURE__ */ jsx(Label, { htmlFor: "database", className: "text-xs font-mediumr text-zinc-500", children: "Database Name" })
887
887
  ] }),
888
888
  /* @__PURE__ */ jsx(
889
889
  Input,
@@ -892,7 +892,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
892
892
  value: database,
893
893
  onChange: (e) => setDatabase(e.target.value),
894
894
  placeholder: "production_db",
895
- className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-sm font-mono"
895
+ className: "h-10 bg-zinc-900/50 border-white/5 focus:border-blue-500/50 transition-all text-xs font-mono"
896
896
  }
897
897
  )
898
898
  ] })
@@ -904,11 +904,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
904
904
  {
905
905
  type: "button",
906
906
  onClick: () => setShowAdvanced(!showAdvanced),
907
- 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-bold text-zinc-400 hover:text-zinc-200 transition-all",
907
+ 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",
908
908
  children: [
909
- /* @__PURE__ */ jsx(Settings2, { className: "w-3.5 h-3.5 text-orange-500" }),
909
+ /* @__PURE__ */ jsx(Settings2, { strokeWidth: 1.5, className: "w-3.5 h-3.5 text-orange-500" }),
910
910
  /* @__PURE__ */ jsx("span", { children: "Advanced" }),
911
- (serviceName || instanceName) && /* @__PURE__ */ jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-label bg-orange-500/10 text-orange-400 border border-orange-500/20", children: "SET" }),
911
+ (serviceName || instanceName) && /* @__PURE__ */ 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" }),
912
912
  /* @__PURE__ */ jsx(ChevronDown, { className: cn("w-3 h-3 ml-auto transition-transform", showAdvanced && "rotate-180") })
913
913
  ]
914
914
  }
@@ -922,27 +922,27 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
922
922
  className: "overflow-hidden",
923
923
  children: /* @__PURE__ */ jsxs("div", { className: "p-3 rounded-lg border border-orange-500/10 bg-orange-500/5 space-y-3", children: [
924
924
  type === "oracle" && /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
925
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Service Name" }),
925
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Service Name" }),
926
926
  /* @__PURE__ */ jsx(
927
927
  Input,
928
928
  {
929
929
  value: serviceName,
930
930
  onChange: (e) => setServiceName(e.target.value),
931
931
  placeholder: "ORCL or XEPDB1",
932
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-sm"
932
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-xs"
933
933
  }
934
934
  ),
935
935
  /* @__PURE__ */ jsx("p", { className: "text-xs text-zinc-500", children: "If empty, the Database Name field is used as the service name." })
936
936
  ] }),
937
937
  type === "mssql" && /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
938
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Instance Name" }),
938
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Instance Name" }),
939
939
  /* @__PURE__ */ jsx(
940
940
  Input,
941
941
  {
942
942
  value: instanceName,
943
943
  onChange: (e) => setInstanceName(e.target.value),
944
944
  placeholder: "SQLEXPRESS",
945
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-sm"
945
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-orange-500/50 text-xs"
946
946
  }
947
947
  ),
948
948
  /* @__PURE__ */ jsx("p", { className: "text-xs text-zinc-500", children: "For named instances (e.g. SQLEXPRESS). Leave empty for default instance." })
@@ -957,11 +957,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
957
957
  {
958
958
  type: "button",
959
959
  onClick: () => setShowSSL(!showSSL),
960
- 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-bold text-zinc-400 hover:text-zinc-200 transition-all",
960
+ 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",
961
961
  children: [
962
- /* @__PURE__ */ jsx(Lock, { className: "w-3.5 h-3.5 text-emerald-500" }),
962
+ /* @__PURE__ */ jsx(Lock, { strokeWidth: 1.5, className: "w-3.5 h-3.5 text-emerald-500" }),
963
963
  /* @__PURE__ */ jsx("span", { children: "SSL / TLS" }),
964
- sslMode !== "disable" && /* @__PURE__ */ jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-label bg-emerald-500/10 text-emerald-400 border border-emerald-500/20", children: sslMode.toUpperCase() }),
964
+ sslMode !== "disable" && /* @__PURE__ */ 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() }),
965
965
  /* @__PURE__ */ jsx(ChevronDown, { className: cn("w-3 h-3 ml-auto transition-transform", showSSL && "rotate-180") })
966
966
  ]
967
967
  }
@@ -975,14 +975,14 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
975
975
  className: "overflow-hidden",
976
976
  children: /* @__PURE__ */ jsxs("div", { className: "p-3 rounded-lg border border-emerald-500/10 bg-emerald-500/5 space-y-3", children: [
977
977
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
978
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "SSL Mode" }),
978
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "SSL Mode" }),
979
979
  /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-1.5", children: ["disable", "require", "verify-ca", "verify-full"].map((mode) => /* @__PURE__ */ jsx(
980
980
  "button",
981
981
  {
982
982
  type: "button",
983
983
  onClick: () => setSSLMode(mode),
984
984
  className: cn(
985
- "px-2.5 py-1.5 rounded-md text-xs font-bold uppercase tracking-wider transition-all border",
985
+ "px-2.5 py-1.5 rounded-md text-xs font-mediumr transition-all border",
986
986
  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"
987
987
  ),
988
988
  children: mode
@@ -992,7 +992,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
992
992
  ] }),
993
993
  sslMode !== "disable" && /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
994
994
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
995
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "CA Certificate (PEM)" }),
995
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "CA Certificate (PEM)" }),
996
996
  /* @__PURE__ */ jsx(
997
997
  "textarea",
998
998
  {
@@ -1006,7 +1006,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1006
1006
  ] }),
1007
1007
  (sslMode === "verify-ca" || sslMode === "verify-full") && /* @__PURE__ */ jsxs(Fragment, { children: [
1008
1008
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1009
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Client Certificate (PEM)" }),
1009
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Client Certificate (PEM)" }),
1010
1010
  /* @__PURE__ */ jsx(
1011
1011
  "textarea",
1012
1012
  {
@@ -1019,7 +1019,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1019
1019
  )
1020
1020
  ] }),
1021
1021
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1022
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Client Private Key (PEM)" }),
1022
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Client Private Key (PEM)" }),
1023
1023
  /* @__PURE__ */ jsx(
1024
1024
  "textarea",
1025
1025
  {
@@ -1041,11 +1041,11 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1041
1041
  {
1042
1042
  type: "button",
1043
1043
  onClick: () => setShowSSH(!showSSH),
1044
- 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-bold text-zinc-400 hover:text-zinc-200 transition-all",
1044
+ 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",
1045
1045
  children: [
1046
- /* @__PURE__ */ jsx(Terminal, { className: "w-3.5 h-3.5 text-purple-500" }),
1046
+ /* @__PURE__ */ jsx(Terminal, { strokeWidth: 1.5, className: "w-3.5 h-3.5 text-purple-500" }),
1047
1047
  /* @__PURE__ */ jsx("span", { children: "SSH Tunnel" }),
1048
- sshEnabled && /* @__PURE__ */ jsx("span", { className: "ml-1 px-1.5 py-0.5 rounded text-label bg-purple-500/10 text-purple-400 border border-purple-500/20", children: "ON" }),
1048
+ sshEnabled && /* @__PURE__ */ 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" }),
1049
1049
  /* @__PURE__ */ jsx(ChevronDown, { className: cn("w-3 h-3 ml-auto transition-transform", showSSH && "rotate-180") })
1050
1050
  ]
1051
1051
  }
@@ -1068,48 +1068,48 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1068
1068
  className: "rounded border-white/20 bg-zinc-900/50"
1069
1069
  }
1070
1070
  ),
1071
- /* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-zinc-300", children: "Enable SSH Tunnel" })
1071
+ /* @__PURE__ */ jsx("span", { className: "text-xs font-medium text-zinc-300", children: "Enable SSH Tunnel" })
1072
1072
  ] }),
1073
1073
  sshEnabled && /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
1074
1074
  /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-3", children: [
1075
1075
  /* @__PURE__ */ jsxs("div", { className: "md:col-span-3 space-y-1.5", children: [
1076
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "SSH Host" }),
1076
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "SSH Host" }),
1077
1077
  /* @__PURE__ */ jsx(
1078
1078
  Input,
1079
1079
  {
1080
1080
  value: sshHost,
1081
1081
  onChange: (e) => setSSHHost(e.target.value),
1082
1082
  placeholder: "bastion.example.com",
1083
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-sm"
1083
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
1084
1084
  }
1085
1085
  )
1086
1086
  ] }),
1087
1087
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1088
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Port" }),
1088
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Port" }),
1089
1089
  /* @__PURE__ */ jsx(
1090
1090
  Input,
1091
1091
  {
1092
1092
  value: sshPort,
1093
1093
  onChange: (e) => setSSHPort(e.target.value),
1094
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-sm font-mono"
1094
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs font-mono"
1095
1095
  }
1096
1096
  )
1097
1097
  ] })
1098
1098
  ] }),
1099
1099
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1100
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Username" }),
1100
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Username" }),
1101
1101
  /* @__PURE__ */ jsx(
1102
1102
  Input,
1103
1103
  {
1104
1104
  value: sshUsername,
1105
1105
  onChange: (e) => setSSHUsername(e.target.value),
1106
1106
  placeholder: "ubuntu",
1107
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-sm"
1107
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
1108
1108
  }
1109
1109
  )
1110
1110
  ] }),
1111
1111
  /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
1112
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Auth Method" }),
1112
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Auth Method" }),
1113
1113
  /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
1114
1114
  /* @__PURE__ */ jsx(
1115
1115
  "button",
@@ -1117,7 +1117,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1117
1117
  type: "button",
1118
1118
  onClick: () => setSSHAuthMethod("password"),
1119
1119
  className: cn(
1120
- "flex-1 px-3 py-1.5 rounded-md text-xs font-bold uppercase tracking-wider transition-all border",
1120
+ "flex-1 px-3 py-1.5 rounded-md text-xs font-mediumr transition-all border",
1121
1121
  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"
1122
1122
  ),
1123
1123
  children: "Password"
@@ -1129,7 +1129,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1129
1129
  type: "button",
1130
1130
  onClick: () => setSSHAuthMethod("privateKey"),
1131
1131
  className: cn(
1132
- "flex-1 px-3 py-1.5 rounded-md text-xs font-bold uppercase tracking-wider transition-all border",
1132
+ "flex-1 px-3 py-1.5 rounded-md text-xs font-mediumr transition-all border",
1133
1133
  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"
1134
1134
  ),
1135
1135
  children: "Private Key"
@@ -1138,7 +1138,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1138
1138
  ] })
1139
1139
  ] }),
1140
1140
  sshAuthMethod === "password" ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1141
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "SSH Password" }),
1141
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "SSH Password" }),
1142
1142
  /* @__PURE__ */ jsx(
1143
1143
  Input,
1144
1144
  {
@@ -1146,12 +1146,12 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1146
1146
  value: sshPassword,
1147
1147
  onChange: (e) => setSSHPassword(e.target.value),
1148
1148
  placeholder: "\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",
1149
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-sm"
1149
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
1150
1150
  }
1151
1151
  )
1152
1152
  ] }) : /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
1153
1153
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1154
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Private Key (PEM)" }),
1154
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Private Key (PEM)" }),
1155
1155
  /* @__PURE__ */ jsx(
1156
1156
  "textarea",
1157
1157
  {
@@ -1164,7 +1164,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1164
1164
  )
1165
1165
  ] }),
1166
1166
  /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
1167
- /* @__PURE__ */ jsx(Label, { className: "text-xs font-bold uppercase tracking-wider text-zinc-500", children: "Passphrase (optional)" }),
1167
+ /* @__PURE__ */ jsx(Label, { className: "text-xs font-mediumr text-zinc-500", children: "Passphrase (optional)" }),
1168
1168
  /* @__PURE__ */ jsx(
1169
1169
  Input,
1170
1170
  {
@@ -1172,7 +1172,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1172
1172
  value: sshPassphrase,
1173
1173
  onChange: (e) => setSSHPassphrase(e.target.value),
1174
1174
  placeholder: "Key passphrase (if encrypted)",
1175
- className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-sm"
1175
+ className: "h-9 bg-zinc-900/50 border-white/5 focus:border-purple-500/50 text-xs"
1176
1176
  }
1177
1177
  )
1178
1178
  ] })
@@ -1193,7 +1193,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1193
1193
  "flex items-center gap-2 p-3 rounded-lg border text-xs",
1194
1194
  testResult.success ? "bg-emerald-500/5 border-emerald-500/20 text-emerald-400" : "bg-red-500/5 border-red-500/20 text-red-400"
1195
1195
  ), children: [
1196
- testResult.success ? /* @__PURE__ */ jsx(CheckCircle2, { className: "w-4 h-4 shrink-0" }) : /* @__PURE__ */ jsx(XCircle, { className: "w-4 h-4 shrink-0" }),
1196
+ testResult.success ? /* @__PURE__ */ jsx(CheckCircle2, { strokeWidth: 1.5, className: "w-3.5 h-3.5 shrink-0" }) : /* @__PURE__ */ jsx(XCircle, { strokeWidth: 1.5, className: "w-3.5 h-3.5 shrink-0" }),
1197
1197
  /* @__PURE__ */ jsx("span", { className: "leading-relaxed", children: testResult.message })
1198
1198
  ] })
1199
1199
  }
@@ -1206,7 +1206,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1206
1206
  {
1207
1207
  variant: "ghost",
1208
1208
  onClick: onClose,
1209
- className: "w-full md:w-auto text-zinc-500 hover:text-zinc-200 hover:bg-white/5 text-xs font-semibold",
1209
+ className: "w-full md:w-auto text-zinc-500 hover:text-zinc-200 hover:bg-white/5 text-xs font-medium",
1210
1210
  children: "Cancel"
1211
1211
  }
1212
1212
  ),
@@ -1217,7 +1217,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1217
1217
  variant: "outline",
1218
1218
  onClick: handleTestConnection,
1219
1219
  disabled: isTesting,
1220
- className: "w-full md:w-auto border-white/10 text-zinc-400 hover:text-white hover:bg-white/5 text-xs font-bold h-10 px-4",
1220
+ 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",
1221
1221
  children: isTesting ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
1222
1222
  /* @__PURE__ */ jsx("div", { className: "w-3 h-3 border-2 border-zinc-400/30 border-t-zinc-400 rounded-full animate-spin" }),
1223
1223
  "Testing..."
@@ -1229,7 +1229,7 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1229
1229
  {
1230
1230
  onClick: handleConnect,
1231
1231
  disabled: isTesting || getDBConfig(type).showConnectionStringToggle && mongoConnectionMode === "connectionString" && !connectionString.trim(),
1232
- className: "w-full md:w-auto min-w-0 md:min-w-[140px] bg-blue-600 hover:bg-blue-500 text-white font-bold text-xs h-10 shadow-lg shadow-blue-900/20 group relative overflow-hidden",
1232
+ 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",
1233
1233
  children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: isTesting ? /* @__PURE__ */ jsxs(
1234
1234
  motion.div,
1235
1235
  {
@@ -1285,5 +1285,5 @@ function ConnectionModal({ isOpen, onClose, onConnect, editConnection, onTestCon
1285
1285
  }
1286
1286
 
1287
1287
  export { ConnectionModal };
1288
- //# sourceMappingURL=chunk-VWVRUCQO.mjs.map
1289
- //# sourceMappingURL=chunk-VWVRUCQO.mjs.map
1288
+ //# sourceMappingURL=chunk-CPF7XWV5.mjs.map
1289
+ //# sourceMappingURL=chunk-CPF7XWV5.mjs.map