gitxelectron 1.3.5 → 1.3.6

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.
@@ -12543,33 +12543,49 @@ function Loader() {
12543
12543
  const MassivePushLoader = ({ percentage, eta, hideHeader, compact }) => {
12544
12544
  const isIndeterminate = percentage < 0;
12545
12545
  const clampedPercentage = isIndeterminate ? 0 : Math.min(100, Math.max(0, percentage));
12546
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex flex-col items-center justify-center w-full h-full ${compact ? "" : "space-y-8 py-8"}`, children: [
12547
- !hideHeader && !compact && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center text-primary mb-4 relative z-10", children: [
12548
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold", children: "Massive Push in Progress" }),
12549
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm opacity-70 mt-1", children: "Chunking thousands of files to prevent freezing" })
12550
- ] }),
12551
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `loader-wrapper ${compact ? "is-compact" : ""}`, children: [
12552
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "loader", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "box", children: [
12553
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "top-side" }),
12554
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bottom-side" }),
12555
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "screen", children: [
12556
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lightray-limit", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lightray" }) }),
12557
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "loader-box-container", children: [
12558
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "loader-progress-box", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
12559
- "div",
12560
- {
12561
- className: `progress-bar-fill transition-all duration-300 ease-out ${isIndeterminate ? "indeterminate-progress" : ""}`,
12562
- style: { width: isIndeterminate ? "0%" : `${clampedPercentage}%` }
12563
- }
12564
- ) }),
12565
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex flex-col items-center mt-2 text-primary font-mono drop-shadow-md ${compact ? "scale-95" : ""}`, children: [
12566
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `${compact ? "text-2xl" : "text-3xl mt-2"} font-bold`, children: isIndeterminate ? ". . ." : `${clampedPercentage.toFixed(1)}%` }),
12567
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `${compact ? "text-xs" : "text-xs"} opacity-90 mt-1 font-semibold`, children: eta })
12546
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
12547
+ "div",
12548
+ {
12549
+ className: `flex flex-col items-center justify-center w-full h-full ${compact ? "" : "space-y-8 py-8"}`,
12550
+ children: [
12551
+ !hideHeader && !compact && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center text-primary mb-4 relative z-10", children: [
12552
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-bold", children: "Massive Push in Progress" }),
12553
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm opacity-70 mt-1", children: "Chunking thousands of files to prevent freezing" })
12554
+ ] }),
12555
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `loader-wrapper ${compact ? "is-compact" : ""}`, children: [
12556
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "loader", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "box", children: [
12557
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "top-side" }),
12558
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bottom-side" }),
12559
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "screen", children: [
12560
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lightray-limit", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "lightray" }) }),
12561
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "loader-box-container", children: [
12562
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "loader-progress-box", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
12563
+ "div",
12564
+ {
12565
+ className: `progress-bar-fill transition-all duration-300 ease-out ${isIndeterminate ? "indeterminate-progress" : ""}`,
12566
+ style: { width: isIndeterminate ? "0%" : `${clampedPercentage}%` }
12567
+ }
12568
+ ) }),
12569
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
12570
+ "div",
12571
+ {
12572
+ className: `flex flex-col items-center mt-2 text-primary font-mono drop-shadow-md ${compact ? "scale-95" : ""}`,
12573
+ children: [
12574
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `${compact ? "text-2xl" : "text-3xl mt-2"} font-bold`, children: isIndeterminate ? ". . ." : `${clampedPercentage.toFixed(1)}%` }),
12575
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
12576
+ "span",
12577
+ {
12578
+ className: `${compact ? "text-xs" : "text-xs"} opacity-90 mt-1 font-semibold`,
12579
+ children: eta
12580
+ }
12581
+ )
12582
+ ]
12583
+ }
12584
+ )
12585
+ ] })
12568
12586
  ] })
12569
- ] })
12570
- ] })
12571
- ] }) }),
12572
- /* @__PURE__ */ jsxRuntimeExports.jsx("style", { children: `
12587
+ ] }) }),
12588
+ /* @__PURE__ */ jsxRuntimeExports.jsx("style", { children: `
12573
12589
  .loader-wrapper .loader .box {
12574
12590
  background-color: var(--color-surface-hover);
12575
12591
  width: var(--size, 240px);
@@ -12711,8 +12727,10 @@ const MassivePushLoader = ({ percentage, eta, hideHeader, compact }) => {
12711
12727
  100% { width: 0%; }
12712
12728
  }
12713
12729
  ` })
12714
- ] })
12715
- ] });
12730
+ ] })
12731
+ ]
12732
+ }
12733
+ );
12716
12734
  };
12717
12735
  function RepositoryWizard({ repoPath, onClose, onSuccess }) {
12718
12736
  const [step, setStep] = reactExports.useState(1);
@@ -12729,7 +12747,9 @@ function RepositoryWizard({ repoPath, onClose, onSuccess }) {
12729
12747
  const [isLoading, setIsLoading] = reactExports.useState(false);
12730
12748
  const [error, setError] = reactExports.useState("");
12731
12749
  const [massivePushData, setMassivePushData] = reactExports.useState(null);
12732
- const [localProgress, setLocalProgress] = reactExports.useState(null);
12750
+ const [localProgress, setLocalProgress] = reactExports.useState(
12751
+ null
12752
+ );
12733
12753
  reactExports.useEffect(() => {
12734
12754
  checkAuth();
12735
12755
  if (window.api.onMassivePushProgress) {
@@ -13670,13 +13690,55 @@ const LiveGitHubSpace = React.memo(() => {
13670
13690
  let activeShips = [];
13671
13691
  const eventQueue = [];
13672
13692
  const fallbackQueue = [
13673
- { id: "fb1", type: "PushEvent", actor: { login: "octocat" }, repo: { name: "octocat/Hello-World" }, created_at: "" },
13674
- { id: "fb2", type: "PullRequestEvent", actor: { login: "torvalds" }, repo: { name: "torvalds/linux" }, created_at: "" },
13675
- { id: "fb3", type: "IssuesEvent", actor: { login: "microsoft" }, repo: { name: "microsoft/vscode" }, created_at: "" },
13676
- { id: "fb4", type: "PushEvent", actor: { login: "facebook" }, repo: { name: "facebook/react" }, created_at: "" },
13677
- { id: "fb5", type: "PushEvent", actor: { login: "vercel" }, repo: { name: "vercel/next.js" }, created_at: "" },
13678
- { id: "fb6", type: "PullRequestEvent", actor: { login: "vuejs" }, repo: { name: "vuejs/core" }, created_at: "" },
13679
- { id: "fb7", type: "PushEvent", actor: { login: "antigravity" }, repo: { name: "antigravity/engine" }, created_at: "" }
13693
+ {
13694
+ id: "fb1",
13695
+ type: "PushEvent",
13696
+ actor: { login: "octocat" },
13697
+ repo: { name: "octocat/Hello-World" },
13698
+ created_at: ""
13699
+ },
13700
+ {
13701
+ id: "fb2",
13702
+ type: "PullRequestEvent",
13703
+ actor: { login: "torvalds" },
13704
+ repo: { name: "torvalds/linux" },
13705
+ created_at: ""
13706
+ },
13707
+ {
13708
+ id: "fb3",
13709
+ type: "IssuesEvent",
13710
+ actor: { login: "microsoft" },
13711
+ repo: { name: "microsoft/vscode" },
13712
+ created_at: ""
13713
+ },
13714
+ {
13715
+ id: "fb4",
13716
+ type: "PushEvent",
13717
+ actor: { login: "facebook" },
13718
+ repo: { name: "facebook/react" },
13719
+ created_at: ""
13720
+ },
13721
+ {
13722
+ id: "fb5",
13723
+ type: "PushEvent",
13724
+ actor: { login: "vercel" },
13725
+ repo: { name: "vercel/next.js" },
13726
+ created_at: ""
13727
+ },
13728
+ {
13729
+ id: "fb6",
13730
+ type: "PullRequestEvent",
13731
+ actor: { login: "vuejs" },
13732
+ repo: { name: "vuejs/core" },
13733
+ created_at: ""
13734
+ },
13735
+ {
13736
+ id: "fb7",
13737
+ type: "PushEvent",
13738
+ actor: { login: "antigravity" },
13739
+ repo: { name: "antigravity/engine" },
13740
+ created_at: ""
13741
+ }
13680
13742
  ];
13681
13743
  const pollEvents = async () => {
13682
13744
  if (!isRunning) return;
@@ -14018,10 +14080,16 @@ const DiceGame = () => {
14018
14080
  ] }),
14019
14081
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-end bg-surface-hover/80 px-4 py-2 rounded-xl border border-border/50 backdrop-blur-sm", children: [
14020
14082
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] text-secondary font-bold uppercase tracking-wider", children: "Moves Left" }),
14021
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: `text-xl font-black ${movesLeft === 0 ? "text-danger" : "text-accent"}`, children: [
14022
- movesLeft,
14023
- " / 5"
14024
- ] })
14083
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
14084
+ "span",
14085
+ {
14086
+ className: `text-xl font-black ${movesLeft === 0 ? "text-danger" : "text-accent"}`,
14087
+ children: [
14088
+ movesLeft,
14089
+ " / 5"
14090
+ ]
14091
+ }
14092
+ )
14025
14093
  ] })
14026
14094
  ] }),
14027
14095
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-2 mb-2 z-20 mt-4", children: [
@@ -14204,7 +14272,9 @@ function ContributorsModal({ onClose, remoteUrl }) {
14204
14272
  const fetchData = async () => {
14205
14273
  if (!remoteUrl) {
14206
14274
  setLoading(false);
14207
- setErrorMsg("No remote GitHub repository URL detected for this folder. Please push or add a remote origin first to invite collaborators.");
14275
+ setErrorMsg(
14276
+ "No remote GitHub repository URL detected for this folder. Please push or add a remote origin first to invite collaborators."
14277
+ );
14208
14278
  return;
14209
14279
  }
14210
14280
  try {
@@ -14234,7 +14304,9 @@ function ContributorsModal({ onClose, remoteUrl }) {
14234
14304
  try {
14235
14305
  const fullUser = await window.api.searchGitHubUser(user.login);
14236
14306
  const targetUser = fullUser || user;
14237
- const isExisting = collaborators.some((c) => c.login.toLowerCase() === targetUser.login.toLowerCase()) || invitations.some((i) => i.invitee && i.invitee.login.toLowerCase() === targetUser.login.toLowerCase());
14307
+ const isExisting = collaborators.some((c) => c.login.toLowerCase() === targetUser.login.toLowerCase()) || invitations.some(
14308
+ (i) => i.invitee && i.invitee.login.toLowerCase() === targetUser.login.toLowerCase()
14309
+ );
14238
14310
  if (isExisting) {
14239
14311
  setErrorMsg(`${targetUser.login} is already a collaborator or has a pending invitation.`);
14240
14312
  setSearchResult(null);
@@ -14258,7 +14330,9 @@ function ContributorsModal({ onClose, remoteUrl }) {
14258
14330
  setShowSuggestions(false);
14259
14331
  const user = await window.api.searchGitHubUser(query);
14260
14332
  if (user) {
14261
- const isExisting = collaborators.some((c) => c.login.toLowerCase() === user.login.toLowerCase()) || invitations.some((i) => i.invitee && i.invitee.login.toLowerCase() === user.login.toLowerCase());
14333
+ const isExisting = collaborators.some((c) => c.login.toLowerCase() === user.login.toLowerCase()) || invitations.some(
14334
+ (i) => i.invitee && i.invitee.login.toLowerCase() === user.login.toLowerCase()
14335
+ );
14262
14336
  if (isExisting) {
14263
14337
  setErrorMsg(`${user.login} is already a collaborator or has a pending invitation.`);
14264
14338
  } else {
@@ -14534,12 +14608,37 @@ function ContributorsModal({ onClose, remoteUrl }) {
14534
14608
  className: "bg-brand hover:bg-brand-hover text-white px-4 py-2 rounded-lg text-sm font-semibold transition-all disabled:opacity-50 flex items-center gap-2 shadow-md hover:shadow-brand/20",
14535
14609
  children: adding ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
14536
14610
  /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-4 h-4 animate-spin", fill: "none", viewBox: "0 0 24 24", children: [
14537
- /* @__PURE__ */ jsxRuntimeExports.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
14538
- /* @__PURE__ */ jsxRuntimeExports.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })
14611
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
14612
+ "circle",
14613
+ {
14614
+ className: "opacity-25",
14615
+ cx: "12",
14616
+ cy: "12",
14617
+ r: "10",
14618
+ stroke: "currentColor",
14619
+ strokeWidth: "4"
14620
+ }
14621
+ ),
14622
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
14623
+ "path",
14624
+ {
14625
+ className: "opacity-75",
14626
+ fill: "currentColor",
14627
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
14628
+ }
14629
+ )
14539
14630
  ] }),
14540
14631
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Inviting..." })
14541
14632
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
14542
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z" }) }),
14633
+ /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
14634
+ "path",
14635
+ {
14636
+ strokeLinecap: "round",
14637
+ strokeLinejoin: "round",
14638
+ strokeWidth: 2,
14639
+ d: "M18 9v3m0 0v3m0-3h3m-3 0h-3m-2-5a4 4 0 11-8 0 4 4 0 018 0zM3 20a6 6 0 0112 0v1H3v-1z"
14640
+ }
14641
+ ) }),
14543
14642
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Invite" })
14544
14643
  ] })
14545
14644
  }
@@ -14698,27 +14797,35 @@ const AIHealerOverlay = ({ message, attempt, maxAttempts, originalError }) => {
14698
14797
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute inset-0 bg-black/80 backdrop-blur-sm flex flex-col items-center justify-center z-[200] animate-fade-in", children: [
14699
14798
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex items-center justify-center mb-6", children: [
14700
14799
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-brand/20 blur-xl rounded-full scale-150 animate-pulse" }),
14701
- /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-16 h-16 text-brand animate-spin relative z-10", fill: "none", viewBox: "0 0 24 24", children: [
14702
- /* @__PURE__ */ jsxRuntimeExports.jsx(
14703
- "circle",
14704
- {
14705
- className: "opacity-20",
14706
- cx: "12",
14707
- cy: "12",
14708
- r: "10",
14709
- stroke: "currentColor",
14710
- strokeWidth: "3"
14711
- }
14712
- ),
14713
- /* @__PURE__ */ jsxRuntimeExports.jsx(
14714
- "path",
14715
- {
14716
- className: "opacity-90",
14717
- fill: "currentColor",
14718
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
14719
- }
14720
- )
14721
- ] })
14800
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
14801
+ "svg",
14802
+ {
14803
+ className: "w-16 h-16 text-brand animate-spin relative z-10",
14804
+ fill: "none",
14805
+ viewBox: "0 0 24 24",
14806
+ children: [
14807
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
14808
+ "circle",
14809
+ {
14810
+ className: "opacity-20",
14811
+ cx: "12",
14812
+ cy: "12",
14813
+ r: "10",
14814
+ stroke: "currentColor",
14815
+ strokeWidth: "3"
14816
+ }
14817
+ ),
14818
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
14819
+ "path",
14820
+ {
14821
+ className: "opacity-90",
14822
+ fill: "currentColor",
14823
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
14824
+ }
14825
+ )
14826
+ ]
14827
+ }
14828
+ )
14722
14829
  ] }),
14723
14830
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-xl font-bold text-white tracking-wide mb-2 animate-pulse", children: "AI Auto-Healer Active" }),
14724
14831
  originalError && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-4 max-w-lg w-full px-6", children: [
@@ -23777,7 +23884,14 @@ function WelcomeWizard({ onComplete }) {
23777
23884
  ) }),
23778
23885
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-6 sm:p-10 flex-grow flex flex-col min-h-[400px] sm:min-h-[450px] overflow-y-auto", children: [
23779
23886
  step === 1 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center flex-grow text-center animate-fade-in py-4", children: [
23780
- /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: logo, alt: "Logo", className: "w-20 h-20 sm:w-24 sm:h-24 mb-6 drop-shadow-[0_0_15px_rgba(59,130,246,0.5)]" }),
23887
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
23888
+ "img",
23889
+ {
23890
+ src: logo,
23891
+ alt: "Logo",
23892
+ className: "w-20 h-20 sm:w-24 sm:h-24 mb-6 drop-shadow-[0_0_15px_rgba(59,130,246,0.5)]"
23893
+ }
23894
+ ),
23781
23895
  /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-3xl sm:text-4xl font-bold mb-2 bg-gradient-to-r from-white to-gray-400 bg-clip-text text-transparent", children: "Welcome to GitElectron" }),
23782
23896
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg sm:text-xl text-gray-400 mb-8 sm:mb-10 font-light px-4", children: "I just write code. GitElectron takes care of Git." }),
23783
23897
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4 sm:gap-6 w-full mb-8 sm:mb-12 text-left px-2 sm:px-0", children: [
@@ -23788,9 +23902,11 @@ function WelcomeWizard({ onComplete }) {
23788
23902
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface-hover/50 p-5 sm:p-6 rounded-xl border border-border flex flex-col justify-center transition-transform hover:scale-[1.02] hover:bg-surface-hover/80", children: [
23789
23903
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-semibold text-purple-400 mb-2 text-base sm:text-lg", children: "Universal CLI" }),
23790
23904
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs sm:text-sm text-gray-400 leading-relaxed", children: [
23791
- "Run ",
23905
+ "Run",
23906
+ " ",
23792
23907
  /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "bg-canvas px-1 py-0.5 rounded text-purple-300", children: "gitelectron open" }),
23793
- " from any terminal to launch instantly."
23908
+ " ",
23909
+ "from any terminal to launch instantly."
23794
23910
  ] })
23795
23911
  ] })
23796
23912
  ] }),
@@ -23826,7 +23942,16 @@ function WelcomeWizard({ onComplete }) {
23826
23942
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-3xl sm:text-4xl font-mono tracking-widest text-blue-400 font-bold mb-4 bg-canvas py-3 rounded-lg border border-border break-all px-2", children: deviceFlowData.user_code }),
23827
23943
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs sm:text-sm text-gray-500 mb-4 px-2", children: [
23828
23944
  "Your browser should open automatically. If not, go to",
23829
- /* @__PURE__ */ jsxRuntimeExports.jsx("a", { href: deviceFlowData.verification_uri, target: "_blank", rel: "noreferrer", className: "text-blue-400 ml-1 hover:underline break-all block mt-1", children: deviceFlowData.verification_uri })
23945
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
23946
+ "a",
23947
+ {
23948
+ href: deviceFlowData.verification_uri,
23949
+ target: "_blank",
23950
+ rel: "noreferrer",
23951
+ className: "text-blue-400 ml-1 hover:underline break-all block mt-1",
23952
+ children: deviceFlowData.verification_uri
23953
+ }
23954
+ )
23830
23955
  ] }),
23831
23956
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-6 h-6 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }) })
23832
23957
  ] }),
@@ -23837,7 +23962,14 @@ function WelcomeWizard({ onComplete }) {
23837
23962
  authStatus === "error" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
23838
23963
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-400 font-bold mb-2", children: "Authentication Failed" }),
23839
23964
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 mb-4 px-4", children: authError }),
23840
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => setAuthStatus("pending"), className: "text-blue-400 hover:underline", children: "Try Again" })
23965
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
23966
+ "button",
23967
+ {
23968
+ onClick: () => setAuthStatus("pending"),
23969
+ className: "text-blue-400 hover:underline",
23970
+ children: "Try Again"
23971
+ }
23972
+ )
23841
23973
  ] })
23842
23974
  ] }),
23843
23975
  step === 3 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center flex-grow animate-fade-in py-4", children: [
@@ -23870,22 +24002,28 @@ function WelcomeWizard({ onComplete }) {
23870
24002
  }
23871
24003
  ) })
23872
24004
  ] }),
23873
- step === 4 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `flex flex-col items-center justify-center flex-grow text-center transition-opacity duration-500 ${isFinishing ? "opacity-0 scale-95" : "opacity-100 animate-fade-in"} py-4`, children: [
23874
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative mb-6", children: [
23875
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: "text-6xl sm:text-7xl text-blue-500 relative z-10" }),
23876
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-blue-500 rounded-full blur-[20px] opacity-50 z-0" })
23877
- ] }),
23878
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-3xl sm:text-4xl font-bold mb-3", children: "You're All Set!" }),
23879
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg sm:text-xl text-gray-400 mb-8 sm:mb-10 max-w-md px-4", children: "Your environment is secured and connected. You can now drag and drop any folder to start Auto-Syncing." }),
23880
- /* @__PURE__ */ jsxRuntimeExports.jsx(
23881
- "button",
23882
- {
23883
- onClick: finishSetup,
23884
- className: "px-8 sm:px-10 py-3 sm:py-4 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-500 hover:to-purple-500 text-white rounded-full font-bold text-base sm:text-lg transition-all shadow-[0_0_20px_rgba(139,92,246,0.4)] hover:shadow-[0_0_30px_rgba(139,92,246,0.6)] hover:scale-105",
23885
- children: "Launch GitElectron"
23886
- }
23887
- )
23888
- ] })
24005
+ step === 4 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
24006
+ "div",
24007
+ {
24008
+ className: `flex flex-col items-center justify-center flex-grow text-center transition-opacity duration-500 ${isFinishing ? "opacity-0 scale-95" : "opacity-100 animate-fade-in"} py-4`,
24009
+ children: [
24010
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative mb-6", children: [
24011
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: "text-6xl sm:text-7xl text-blue-500 relative z-10" }),
24012
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-blue-500 rounded-full blur-[20px] opacity-50 z-0" })
24013
+ ] }),
24014
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-3xl sm:text-4xl font-bold mb-3", children: "You're All Set!" }),
24015
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg sm:text-xl text-gray-400 mb-8 sm:mb-10 max-w-md px-4", children: "Your environment is secured and connected. You can now drag and drop any folder to start Auto-Syncing." }),
24016
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24017
+ "button",
24018
+ {
24019
+ onClick: finishSetup,
24020
+ className: "px-8 sm:px-10 py-3 sm:py-4 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-500 hover:to-purple-500 text-white rounded-full font-bold text-base sm:text-lg transition-all shadow-[0_0_20px_rgba(139,92,246,0.4)] hover:shadow-[0_0_30px_rgba(139,92,246,0.6)] hover:scale-105",
24021
+ children: "Launch GitElectron"
24022
+ }
24023
+ )
24024
+ ]
24025
+ }
24026
+ )
23889
24027
  ] })
23890
24028
  ] })
23891
24029
  ] });
@@ -23896,7 +24034,9 @@ function CloneRepoWizard({ onClose, onSuccess }) {
23896
24034
  const [folderName, setFolderName] = reactExports.useState("");
23897
24035
  const [isLoading, setIsLoading] = reactExports.useState(false);
23898
24036
  const [error, setError] = reactExports.useState("");
23899
- const [cloneProgress, setCloneProgress] = reactExports.useState(null);
24037
+ const [cloneProgress, setCloneProgress] = reactExports.useState(
24038
+ null
24039
+ );
23900
24040
  const [showOptions, setShowOptions] = reactExports.useState(false);
23901
24041
  const [clonedPathState, setClonedPathState] = reactExports.useState("");
23902
24042
  reactExports.useEffect(() => {
@@ -23986,7 +24126,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
23986
24126
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[100] p-4 animate-in fade-in duration-300", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface/95 border border-border w-full max-w-[600px] rounded-2xl shadow-2xl flex flex-col overflow-hidden max-h-[90vh]", children: [
23987
24127
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-6 border-b border-border/50 bg-canvas/30", children: [
23988
24128
  /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-2xl font-bold text-primary flex items-center gap-3", children: [
23989
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-6 h-6 text-brand", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2" }) }),
24129
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24130
+ "svg",
24131
+ {
24132
+ className: "w-6 h-6 text-brand",
24133
+ fill: "none",
24134
+ stroke: "currentColor",
24135
+ viewBox: "0 0 24 24",
24136
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24137
+ "path",
24138
+ {
24139
+ strokeLinecap: "round",
24140
+ strokeLinejoin: "round",
24141
+ strokeWidth: 2,
24142
+ d: "M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2"
24143
+ }
24144
+ )
24145
+ }
24146
+ ),
23990
24147
  "Clone Repository"
23991
24148
  ] }),
23992
24149
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary mt-2 text-sm", children: "Download an existing Git repository to your computer" })
@@ -24001,7 +24158,15 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24001
24158
  ),
24002
24159
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "mt-8 text-secondary text-center max-w-[300px] text-sm animate-pulse", children: "Please wait while GitElectron clones the repository. This might take a while depending on the repository size." })
24003
24160
  ] }) : showOptions ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center py-8 space-y-6 text-center animate-in zoom-in-95 duration-300", children: [
24004
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 h-16 rounded-full bg-brand/10 text-brand flex items-center justify-center mb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-8 h-8", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) }),
24161
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 h-16 rounded-full bg-brand/10 text-brand flex items-center justify-center mb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-8 h-8", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24162
+ "path",
24163
+ {
24164
+ strokeLinecap: "round",
24165
+ strokeLinejoin: "round",
24166
+ strokeWidth: 2,
24167
+ d: "M5 13l4 4L19 7"
24168
+ }
24169
+ ) }) }),
24005
24170
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
24006
24171
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-primary", children: "Clone Successful!" }),
24007
24172
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary text-sm mt-2 max-w-sm mx-auto", children: "This repository belongs to someone else. What would you like to do with it?" })
@@ -24014,8 +24179,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24014
24179
  className: "flex flex-col items-center p-4 rounded-xl border border-border bg-canvas hover:bg-surface-hover transition-all text-left gap-3",
24015
24180
  children: [
24016
24181
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-full bg-blue-500/10 text-blue-400 flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: [
24017
- /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" }),
24018
- /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" })
24182
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24183
+ "path",
24184
+ {
24185
+ strokeLinecap: "round",
24186
+ strokeLinejoin: "round",
24187
+ strokeWidth: 2,
24188
+ d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
24189
+ }
24190
+ ),
24191
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24192
+ "path",
24193
+ {
24194
+ strokeLinecap: "round",
24195
+ strokeLinejoin: "round",
24196
+ strokeWidth: 2,
24197
+ d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
24198
+ }
24199
+ )
24019
24200
  ] }) }),
24020
24201
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
24021
24202
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold text-primary", children: "Keep as View-Only" }),
@@ -24031,7 +24212,15 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24031
24212
  className: "flex flex-col items-center p-4 rounded-xl border border-brand/30 bg-brand/5 hover:bg-brand/10 transition-all text-left gap-3 relative overflow-hidden",
24032
24213
  children: [
24033
24214
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-0 right-0 px-2 py-0.5 bg-brand text-[10px] font-bold text-white rounded-bl-lg", children: "RECOMMENDED" }),
24034
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-full bg-brand/20 text-brand flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 6v6m0 0v6m0-6h6m-6 0H6" }) }) }),
24215
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-full bg-brand/20 text-brand flex items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24216
+ "path",
24217
+ {
24218
+ strokeLinecap: "round",
24219
+ strokeLinejoin: "round",
24220
+ strokeWidth: 2,
24221
+ d: "M12 6v6m0 0v6m0-6h6m-6 0H6"
24222
+ }
24223
+ ) }) }),
24035
24224
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
24036
24225
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold text-brand", children: "Create My Own Copy" }),
24037
24226
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs text-secondary mt-1", children: "Strip original data to create your own repo." })
@@ -24042,7 +24231,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24042
24231
  ] })
24043
24232
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
24044
24233
  error && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-danger/10 border border-danger/30 text-danger px-4 py-3 rounded-lg text-xs flex items-start gap-3 max-h-36 overflow-y-auto custom-scrollbar", children: [
24045
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 flex-shrink-0 mt-0.5 text-danger", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }),
24234
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24235
+ "svg",
24236
+ {
24237
+ className: "w-5 h-5 flex-shrink-0 mt-0.5 text-danger",
24238
+ fill: "none",
24239
+ stroke: "currentColor",
24240
+ viewBox: "0 0 24 24",
24241
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24242
+ "path",
24243
+ {
24244
+ strokeLinecap: "round",
24245
+ strokeLinejoin: "round",
24246
+ strokeWidth: 2,
24247
+ d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
24248
+ }
24249
+ )
24250
+ }
24251
+ ),
24046
24252
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "break-words font-mono text-[11px] leading-relaxed select-text", children: error })
24047
24253
  ] }),
24048
24254
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
@@ -24059,7 +24265,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24059
24265
  onChange: (e) => setRepoUrl(e.target.value)
24060
24266
  }
24061
24267
  ),
24062
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 absolute left-3 top-3 text-secondary", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" }) })
24268
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24269
+ "svg",
24270
+ {
24271
+ className: "w-5 h-5 absolute left-3 top-3 text-secondary",
24272
+ fill: "none",
24273
+ stroke: "currentColor",
24274
+ viewBox: "0 0 24 24",
24275
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24276
+ "path",
24277
+ {
24278
+ strokeLinecap: "round",
24279
+ strokeLinejoin: "round",
24280
+ strokeWidth: 2,
24281
+ d: "M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1"
24282
+ }
24283
+ )
24284
+ }
24285
+ )
24063
24286
  ] })
24064
24287
  ] }),
24065
24288
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
@@ -24123,7 +24346,15 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24123
24346
  disabled: !repoUrl || !destFolder,
24124
24347
  className: "px-6 py-2.5 rounded-lg bg-brand hover:bg-brand-hover text-white font-medium transition-all shadow-lg shadow-brand/20 flex items-center gap-2 disabled:opacity-50 disabled:cursor-not-allowed",
24125
24348
  children: [
24126
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" }) }),
24349
+ /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24350
+ "path",
24351
+ {
24352
+ strokeLinecap: "round",
24353
+ strokeLinejoin: "round",
24354
+ strokeWidth: 2,
24355
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
24356
+ }
24357
+ ) }),
24127
24358
  "Clone Repository"
24128
24359
  ]
24129
24360
  }
@@ -24201,13 +24432,7 @@ const AmongUsBackground = () => {
24201
24432
  window.removeEventListener("resize", resizeCanvas);
24202
24433
  };
24203
24434
  }, []);
24204
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
24205
- "canvas",
24206
- {
24207
- ref: canvasRef,
24208
- className: "absolute inset-0 w-full h-full pointer-events-none z-0"
24209
- }
24210
- );
24435
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("canvas", { ref: canvasRef, className: "absolute inset-0 w-full h-full pointer-events-none z-0" });
24211
24436
  };
24212
24437
  const SpaceExplorerBackground = () => {
24213
24438
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-stars-container", children: [
@@ -24420,7 +24645,8 @@ const CollaborationRepoView = ({
24420
24645
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl mb-2", children: "🔍" }),
24421
24646
  /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-semibold text-primary mb-1", children: "No matches found" }),
24422
24647
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-secondary mb-4", children: [
24423
- "No repository matches ",
24648
+ "No repository matches",
24649
+ " ",
24424
24650
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-semibold text-primary", children: [
24425
24651
  '"',
24426
24652
  collabSearch,
@@ -24468,10 +24694,17 @@ const CollaborationRepoView = ({
24468
24694
  isCurrentActive && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[9px] bg-brand text-white px-2 py-0.5 rounded-full font-bold uppercase tracking-wider flex-shrink-0 shadow-xs", children: "Active" })
24469
24695
  ] }),
24470
24696
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 mt-1 text-xs text-secondary min-w-0 flex-wrap", children: [
24471
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-secondary truncate max-w-[140px]", title: `@${repo.owner?.login}`, children: [
24472
- "@",
24473
- repo.owner?.login
24474
- ] }),
24697
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
24698
+ "span",
24699
+ {
24700
+ className: "font-mono text-secondary truncate max-w-[140px]",
24701
+ title: `@${repo.owner?.login}`,
24702
+ children: [
24703
+ "@",
24704
+ repo.owner?.login
24705
+ ]
24706
+ }
24707
+ ),
24475
24708
  repo.default_branch && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] font-mono bg-surface-hover text-secondary border border-border/60 px-1.5 py-0.5 rounded flex items-center gap-1 flex-shrink-0", children: [
24476
24709
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "🌿" }),
24477
24710
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[90px]", children: repo.default_branch })
@@ -24565,22 +24798,39 @@ const CollaborationRepoView = ({
24565
24798
  },
24566
24799
  className: "p-1.5 text-xs rounded-xl transition-all bg-surface hover:bg-danger/10 text-secondary hover:text-danger border border-border",
24567
24800
  title: "Clear connection",
24568
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-3.5 h-3.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) })
24569
- }
24570
- ),
24571
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
24572
- "button",
24573
- {
24574
- type: "button",
24575
- onClick: (e) => {
24576
- e.stopPropagation();
24577
- onRepoCardClick(repo);
24578
- },
24579
- className: `px-3.5 py-1.5 text-xs font-semibold rounded-xl transition-all shadow-xs flex items-center gap-1.5 ${savedPath ? isMissing ? "bg-danger/20 hover:bg-danger/30 text-danger border border-danger/40" : "bg-brand hover:bg-brand-hover text-white shadow-brand/20" : "bg-brand hover:bg-brand-hover text-white shadow-brand/20"}`,
24580
- children: [
24581
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: savedPath ? isMissing ? "Re-Clone" : "Open Repo" : "Clone" }),
24582
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isMissing ? "☁️" : savedPath ? "→" : "☁️" })
24583
- ]
24801
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24802
+ "svg",
24803
+ {
24804
+ className: "w-3.5 h-3.5",
24805
+ fill: "none",
24806
+ stroke: "currentColor",
24807
+ viewBox: "0 0 24 24",
24808
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24809
+ "path",
24810
+ {
24811
+ strokeLinecap: "round",
24812
+ strokeLinejoin: "round",
24813
+ strokeWidth: 2,
24814
+ d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
24815
+ }
24816
+ )
24817
+ }
24818
+ )
24819
+ }
24820
+ ),
24821
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
24822
+ "button",
24823
+ {
24824
+ type: "button",
24825
+ onClick: (e) => {
24826
+ e.stopPropagation();
24827
+ onRepoCardClick(repo);
24828
+ },
24829
+ className: `px-3.5 py-1.5 text-xs font-semibold rounded-xl transition-all shadow-xs flex items-center gap-1.5 ${savedPath ? isMissing ? "bg-danger/20 hover:bg-danger/30 text-danger border border-danger/40" : "bg-brand hover:bg-brand-hover text-white shadow-brand/20" : "bg-brand hover:bg-brand-hover text-white shadow-brand/20"}`,
24830
+ children: [
24831
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: savedPath ? isMissing ? "Re-Clone" : "Open Repo" : "Clone" }),
24832
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isMissing ? "☁️" : savedPath ? "→" : "☁️" })
24833
+ ]
24584
24834
  }
24585
24835
  )
24586
24836
  ] })
@@ -24607,7 +24857,10 @@ const AuthCodePrinter = ({ code }) => {
24607
24857
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "cutter-wrapper", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "cutter" }) })
24608
24858
  ] }) });
24609
24859
  };
24610
- const CommitReceiptPrinter = ({ commit, onClose }) => {
24860
+ const CommitReceiptPrinter = ({
24861
+ commit,
24862
+ onClose
24863
+ }) => {
24611
24864
  const [isPrinted, setIsPrinted] = reactExports.useState(false);
24612
24865
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `commit-printer-wrapper ${isPrinted ? "is-printed" : ""}`, children: [
24613
24866
  onClose && /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "printer-close-btn", onClick: onClose, title: "Close Printer", children: "✕" }),
@@ -25415,7 +25668,9 @@ function App() {
25415
25668
  setExpandedCommits((prev) => ({ ...prev, [hash]: !prev[hash] }));
25416
25669
  };
25417
25670
  const [theme, setTheme] = reactExports.useState(localStorage.getItem("gitelectron-theme") || "github-dark");
25418
- const [changesTab, setChangesTab] = reactExports.useState("changes");
25671
+ const [changesTab, setChangesTab] = reactExports.useState(
25672
+ "changes"
25673
+ );
25419
25674
  const [collabSearch, setCollabSearch] = reactExports.useState("");
25420
25675
  const [collabMappings, setCollabMappings] = reactExports.useState(() => {
25421
25676
  try {
@@ -25957,7 +26212,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
25957
26212
  if (autoSyncEnabled && updatedStatus.behind > 0) {
25958
26213
  if (deferredRemotes.length > 0) {
25959
26214
  try {
25960
- showToast(`Auto-Push: Downloading ${updatedStatus.behind} remote change(s)...`, "info");
26215
+ showToast(
26216
+ `Auto-Push: Downloading ${updatedStatus.behind} remote change(s)...`,
26217
+ "info"
26218
+ );
25961
26219
  await window.api.pullFromRemote(deferredRemotes[0].name, b.current);
25962
26220
  showToast("Auto-Push: Successfully synchronized remote changes!", "success");
25963
26221
  const finalStatus = await window.api.getStatus();
@@ -26161,7 +26419,8 @@ Are you SURE you want to link "${repoName}" to this folder?`
26161
26419
  if (operation === "push") {
26162
26420
  await window.api.executeRawGit(["add", "."]);
26163
26421
  await window.api.commitChanges(commitMessage || "Auto-Healed Push");
26164
- if (pushAllBranches && !overrideBranch) await window.api.pushAllBranches(remotes2[0].name);
26422
+ if (pushAllBranches && !overrideBranch)
26423
+ await window.api.pushAllBranches(remotes2[0].name);
26165
26424
  else await window.api.pushToRemote(remotes2[0].name, targetBranch);
26166
26425
  setPushSuccessData({
26167
26426
  repository: targetRepoPath?.split("\\").pop() || "",
@@ -26184,7 +26443,13 @@ Are you SURE you want to link "${repoName}" to this folder?`
26184
26443
  break;
26185
26444
  }
26186
26445
  const currentStatus = await window.api.getStatus();
26187
- const result = await window.api.askAi("gemini", "", currentError, currentStatus, targetRepoPath || "");
26446
+ const result = await window.api.askAi(
26447
+ "gemini",
26448
+ "",
26449
+ currentError,
26450
+ currentStatus,
26451
+ targetRepoPath || ""
26452
+ );
26188
26453
  setHealerMessage(result.explanation || `Applying fix...`);
26189
26454
  if (result.commandsToRun && result.commandsToRun.length > 0) {
26190
26455
  for (const cmd of result.commandsToRun) {
@@ -26197,7 +26462,8 @@ Are you SURE you want to link "${repoName}" to this folder?`
26197
26462
  if (remotes.length > 0) {
26198
26463
  if (operation === "push") {
26199
26464
  const targetBranch = overrideBranch || branches.current;
26200
- if (pushAllBranches && !overrideBranch) await window.api.pushAllBranches(remotes[0].name);
26465
+ if (pushAllBranches && !overrideBranch)
26466
+ await window.api.pushAllBranches(remotes[0].name);
26201
26467
  else await window.api.pushToRemote(remotes[0].name, targetBranch);
26202
26468
  setPushSuccessData({
26203
26469
  repository: targetRepoPath?.split("\\").pop() || "",
@@ -26253,7 +26519,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
26253
26519
  files: status.staged.length,
26254
26520
  commitMessage: commitMessage + " (Offline Queue)"
26255
26521
  });
26256
- showToast("Offline mode active. Push added to queue. It will auto-push when online.", "warning");
26522
+ showToast(
26523
+ "Offline mode active. Push added to queue. It will auto-push when online.",
26524
+ "warning"
26525
+ );
26257
26526
  setCommitMessage("");
26258
26527
  setShowConfirmPush(false);
26259
26528
  await refreshRepoState();
@@ -26609,10 +26878,35 @@ Are you SURE you want to link "${repoName}" to this folder?`
26609
26878
  className: "px-8 py-6 border-b border-border shrink-0 flex items-center gap-3",
26610
26879
  style: { backgroundColor: "var(--color-surface)" },
26611
26880
  children: [
26612
- /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-6 h-6 text-brand", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: [
26613
- /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z" }),
26614
- /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" })
26615
- ] }),
26881
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
26882
+ "svg",
26883
+ {
26884
+ className: "w-6 h-6 text-brand",
26885
+ fill: "none",
26886
+ stroke: "currentColor",
26887
+ viewBox: "0 0 24 24",
26888
+ children: [
26889
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26890
+ "path",
26891
+ {
26892
+ strokeLinecap: "round",
26893
+ strokeLinejoin: "round",
26894
+ strokeWidth: 2,
26895
+ d: "M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"
26896
+ }
26897
+ ),
26898
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26899
+ "path",
26900
+ {
26901
+ strokeLinecap: "round",
26902
+ strokeLinejoin: "round",
26903
+ strokeWidth: 2,
26904
+ d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
26905
+ }
26906
+ )
26907
+ ]
26908
+ }
26909
+ ),
26616
26910
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-black text-primary m-0", children: t("settings") })
26617
26911
  ]
26618
26912
  }
@@ -26708,7 +27002,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
26708
27002
  onChange: (e) => {
26709
27003
  const next = e.target.checked;
26710
27004
  setDailyAuthEnabled(next);
26711
- localStorage.setItem("gitelectron-daily-auth", next ? "true" : "false");
27005
+ localStorage.setItem(
27006
+ "gitelectron-daily-auth",
27007
+ next ? "true" : "false"
27008
+ );
26712
27009
  }
26713
27010
  }
26714
27011
  ),
@@ -26731,7 +27028,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
26731
27028
  onChange: (e) => {
26732
27029
  const next = e.target.checked;
26733
27030
  setEnableLockscreenSpace(next);
26734
- localStorage.setItem("gitelectron-enable-space", next ? "true" : "false");
27031
+ localStorage.setItem(
27032
+ "gitelectron-enable-space",
27033
+ next ? "true" : "false"
27034
+ );
26735
27035
  }
26736
27036
  }
26737
27037
  ),
@@ -26856,7 +27156,24 @@ Are you SURE you want to link "${repoName}" to this folder?`
26856
27156
  },
26857
27157
  className: "w-full py-2.5 bg-danger/10 hover:bg-danger/20 text-danger text-sm font-bold rounded-lg border border-danger/30 hover:border-danger/50 transition-all flex items-center justify-center gap-2",
26858
27158
  children: [
26859
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1" }) }),
27159
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27160
+ "svg",
27161
+ {
27162
+ className: "w-4 h-4",
27163
+ fill: "none",
27164
+ stroke: "currentColor",
27165
+ viewBox: "0 0 24 24",
27166
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
27167
+ "path",
27168
+ {
27169
+ strokeLinecap: "round",
27170
+ strokeLinejoin: "round",
27171
+ strokeWidth: 2,
27172
+ d: "M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"
27173
+ }
27174
+ )
27175
+ }
27176
+ ),
26860
27177
  t("signOut")
26861
27178
  ]
26862
27179
  }
@@ -26877,7 +27194,9 @@ Are you SURE you want to link "${repoName}" to this folder?`
26877
27194
  {
26878
27195
  type: "button",
26879
27196
  onClick: async () => {
26880
- const confirmAction = window.confirm("Are you sure? This will force push all current files, overriding remote history and bypassing all safety checks.");
27197
+ const confirmAction = window.confirm(
27198
+ "Are you sure? This will force push all current files, overriding remote history and bypassing all safety checks."
27199
+ );
26881
27200
  if (!confirmAction) return;
26882
27201
  try {
26883
27202
  const remotes = await window.api.getRemotes();
@@ -26891,7 +27210,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
26891
27210
  refreshRepoState();
26892
27211
  setShowSettings(false);
26893
27212
  } catch (err) {
26894
- showToast("Master Push failed: " + (err.message || "Unknown error"), "error");
27213
+ showToast(
27214
+ "Master Push failed: " + (err.message || "Unknown error"),
27215
+ "error"
27216
+ );
26895
27217
  }
26896
27218
  },
26897
27219
  className: "shrink-0 px-6 py-3 bg-danger text-white text-xs font-black uppercase tracking-wider rounded-xl hover:bg-danger/80 border-b-4 border-black/30 active:border-b-0 active:translate-y-1 transition-all flex items-center justify-center gap-2",
@@ -27097,7 +27419,13 @@ Are you SURE you want to link "${repoName}" to this folder?`
27097
27419
  }
27098
27420
  )
27099
27421
  ] }),
27100
- expandedCommits[commit.hash] && commit.diff && commit.diff.files && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-4 flex justify-center pb-8 border-t border-border/40 pt-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx(CommitReceiptPrinter, { commit, onClose: () => toggleCommit(commit.hash) }) })
27422
+ expandedCommits[commit.hash] && commit.diff && commit.diff.files && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "mt-4 flex justify-center pb-8 border-t border-border/40 pt-6", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
27423
+ CommitReceiptPrinter,
27424
+ {
27425
+ commit,
27426
+ onClose: () => toggleCommit(commit.hash)
27427
+ }
27428
+ ) })
27101
27429
  ]
27102
27430
  },
27103
27431
  commit.hash
@@ -27229,25 +27557,64 @@ Are you SURE you want to link "${repoName}" to this folder?`
27229
27557
  onProceed: handleDropProceed
27230
27558
  }
27231
27559
  ),
27232
- showContributorsModal && /* @__PURE__ */ jsxRuntimeExports.jsx(ContributorsModal, { remoteUrl: remoteUrl || "", onClose: () => setShowContributorsModal(false) }),
27560
+ showContributorsModal && /* @__PURE__ */ jsxRuntimeExports.jsx(
27561
+ ContributorsModal,
27562
+ {
27563
+ remoteUrl: remoteUrl || "",
27564
+ onClose: () => setShowContributorsModal(false)
27565
+ }
27566
+ ),
27233
27567
  showCollabActionModal && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-[150] transition-opacity p-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface/95 backdrop-blur-xl p-6 rounded-2xl shadow-2xl border border-border w-full max-w-[460px] mx-4 flex flex-col gap-4 relative animate-in fade-in zoom-in-95", children: [
27234
27568
  /* @__PURE__ */ jsxRuntimeExports.jsx(
27235
27569
  "button",
27236
27570
  {
27237
27571
  onClick: () => setShowCollabActionModal(null),
27238
27572
  className: "absolute top-4 right-4 text-secondary hover:text-primary transition-colors p-1",
27239
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) })
27573
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
27574
+ "path",
27575
+ {
27576
+ strokeLinecap: "round",
27577
+ strokeLinejoin: "round",
27578
+ strokeWidth: 2,
27579
+ d: "M6 18L18 6M6 6l12 12"
27580
+ }
27581
+ ) })
27240
27582
  }
27241
27583
  ),
27242
27584
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 pr-8 min-w-0", children: [
27243
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center text-brand flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2" }) }) }),
27585
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-xl bg-brand/10 border border-brand/20 flex items-center justify-center text-brand flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
27586
+ "path",
27587
+ {
27588
+ strokeLinecap: "round",
27589
+ strokeLinejoin: "round",
27590
+ strokeWidth: 2,
27591
+ d: "M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2"
27592
+ }
27593
+ ) }) }),
27244
27594
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
27245
27595
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-base font-bold text-primary tracking-tight truncate", children: "Collaboration Repository" }),
27246
27596
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary font-mono truncate max-w-full", children: showCollabActionModal.fullName || showCollabActionModal.name })
27247
27597
  ] })
27248
27598
  ] }),
27249
27599
  showCollabActionModal.missingPreviousPath ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-3.5 bg-danger/10 border border-danger/30 rounded-xl text-danger text-xs flex items-start gap-2.5", children: [
27250
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 flex-shrink-0 mt-0.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }),
27600
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27601
+ "svg",
27602
+ {
27603
+ className: "w-5 h-5 flex-shrink-0 mt-0.5",
27604
+ fill: "none",
27605
+ stroke: "currentColor",
27606
+ viewBox: "0 0 24 24",
27607
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
27608
+ "path",
27609
+ {
27610
+ strokeLinecap: "round",
27611
+ strokeLinejoin: "round",
27612
+ strokeWidth: 2,
27613
+ d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
27614
+ }
27615
+ )
27616
+ }
27617
+ ),
27251
27618
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
27252
27619
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-semibold text-danger", children: "Linked local folder was not found or was deleted:" }),
27253
27620
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-mono text-[10px] break-all opacity-90 mt-0.5", children: showCollabActionModal.missingPreviousPath }),
@@ -27287,7 +27654,15 @@ Are you SURE you want to link "${repoName}" to this folder?`
27287
27654
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-12 h-12 border-4 border-brand border-t-transparent rounded-full animate-spin mb-4 shadow-[0_0_15px_rgba(var(--brand-color),0.5)]" }),
27288
27655
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-white font-medium tracking-wide text-lg", children: "Cloning Repository..." })
27289
27656
  ] }),
27290
- showHealerOverlay && /* @__PURE__ */ jsxRuntimeExports.jsx(AIHealerOverlay, { message: healerMessage, attempt: healerAttempt, maxAttempts: 5, originalError: healerOriginalError }),
27657
+ showHealerOverlay && /* @__PURE__ */ jsxRuntimeExports.jsx(
27658
+ AIHealerOverlay,
27659
+ {
27660
+ message: healerMessage,
27661
+ attempt: healerAttempt,
27662
+ maxAttempts: 5,
27663
+ originalError: healerOriginalError
27664
+ }
27665
+ ),
27291
27666
  showAutoSyncLogs && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-[110] transition-opacity", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface/95 backdrop-blur-xl p-8 rounded-xl shadow-2xl border border-border w-full max-w-[600px] mx-4 flex flex-col max-h-[80vh]", children: [
27292
27667
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center mb-6 border-b border-border pb-4", children: [
27293
27668
  /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-xl font-bold text-primary flex items-center gap-2", children: [
@@ -27331,7 +27706,13 @@ Are you SURE you want to link "${repoName}" to this folder?`
27331
27706
  onReplace: handleConflictReplace
27332
27707
  }
27333
27708
  ),
27334
- showUniversalWizard && /* @__PURE__ */ jsxRuntimeExports.jsx(UniversalPushWizard, { isOpen: showUniversalWizard, onClose: () => setShowUniversalWizard(false) }),
27709
+ showUniversalWizard && /* @__PURE__ */ jsxRuntimeExports.jsx(
27710
+ UniversalPushWizard,
27711
+ {
27712
+ isOpen: showUniversalWizard,
27713
+ onClose: () => setShowUniversalWizard(false)
27714
+ }
27715
+ ),
27335
27716
  showCloneWizard && /* @__PURE__ */ jsxRuntimeExports.jsx(
27336
27717
  CloneRepoWizard,
27337
27718
  {
@@ -27486,7 +27867,12 @@ Are you SURE you want to link "${repoName}" to this folder?`
27486
27867
  onClick: () => {
27487
27868
  const data = pushFailureData;
27488
27869
  setPushFailureData(null);
27489
- autonomousHealAndPush(data.reason, data.operation || "push", data.overrideRepoPath, data.overrideBranch);
27870
+ autonomousHealAndPush(
27871
+ data.reason,
27872
+ data.operation || "push",
27873
+ data.overrideRepoPath,
27874
+ data.overrideBranch
27875
+ );
27490
27876
  },
27491
27877
  className: "flex-1 py-2 bg-brand hover:bg-brand-hover border border-white/10 text-white rounded-md font-semibold transition-all text-sm flex items-center justify-center gap-2",
27492
27878
  children: "✨ Fix with AI"
@@ -27601,7 +27987,15 @@ Are you SURE you want to link "${repoName}" to this folder?`
27601
27987
  fill: "none",
27602
27988
  stroke: "currentColor",
27603
27989
  viewBox: "0 0 24 24",
27604
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z" })
27990
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
27991
+ "path",
27992
+ {
27993
+ strokeLinecap: "round",
27994
+ strokeLinejoin: "round",
27995
+ strokeWidth: 2,
27996
+ d: "M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"
27997
+ }
27998
+ )
27605
27999
  }
27606
28000
  ),
27607
28001
  "Clone Repository"
@@ -27628,7 +28022,24 @@ Are you SURE you want to link "${repoName}" to this folder?`
27628
28022
  className: `w-full font-medium py-2 px-4 rounded-md transition-all border text-sm flex items-center justify-center gap-2 shadow-sm ${(status?.behind ?? 0) > 0 ? "bg-blue-600/25 text-blue-300 border-blue-500/50 hover:bg-blue-600/35 ring-1 ring-blue-500/30 animate-pulse" : "bg-surface-hover hover:brightness-110 text-primary border-border hover:border-brand/40"}`,
27629
28023
  title: "Download and update all new files pushed by team members on GitHub to your local folder",
27630
28024
  children: [
27631
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4 text-accent", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" }) }),
28025
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28026
+ "svg",
28027
+ {
28028
+ className: "w-4 h-4 text-accent",
28029
+ fill: "none",
28030
+ stroke: "currentColor",
28031
+ viewBox: "0 0 24 24",
28032
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28033
+ "path",
28034
+ {
28035
+ strokeLinecap: "round",
28036
+ strokeLinejoin: "round",
28037
+ strokeWidth: 2,
28038
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
28039
+ }
28040
+ )
28041
+ }
28042
+ ),
27632
28043
  isPulling ? "Pulling..." : (status?.behind ?? 0) > 0 ? `Pull (${status.behind})` : "Pull"
27633
28044
  ]
27634
28045
  }
@@ -27684,7 +28095,24 @@ Are you SURE you want to link "${repoName}" to this folder?`
27684
28095
  },
27685
28096
  className: "p-1 rounded-md text-secondary hover:text-danger hover:bg-danger/10 transition-colors",
27686
28097
  title: "Clear saved link",
27687
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-3 h-3", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" }) })
28098
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28099
+ "svg",
28100
+ {
28101
+ className: "w-3 h-3",
28102
+ fill: "none",
28103
+ stroke: "currentColor",
28104
+ viewBox: "0 0 24 24",
28105
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28106
+ "path",
28107
+ {
28108
+ strokeLinecap: "round",
28109
+ strokeLinejoin: "round",
28110
+ strokeWidth: 2,
28111
+ d: "M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"
28112
+ }
28113
+ )
28114
+ }
28115
+ )
27688
28116
  }
27689
28117
  )
27690
28118
  ] })
@@ -28057,7 +28485,15 @@ Are you SURE you want to link "${repoName}" to this folder?`
28057
28485
  className: "relative px-3 py-1.5 bg-surface-hover border border-border rounded-md text-secondary hover:text-primary transition-all flex items-center justify-center",
28058
28486
  title: "Pending Invitations",
28059
28487
  children: [
28060
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" }) }),
28488
+ /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28489
+ "path",
28490
+ {
28491
+ strokeLinecap: "round",
28492
+ strokeLinejoin: "round",
28493
+ strokeWidth: 2,
28494
+ d: "M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9"
28495
+ }
28496
+ ) }),
28061
28497
  invitations.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "absolute top-1.5 right-2 w-2 h-2 bg-danger rounded-full animate-pulse" })
28062
28498
  ]
28063
28499
  }
@@ -28104,7 +28540,12 @@ Are you SURE you want to link "${repoName}" to this folder?`
28104
28540
  ...branches?.all && branches.all.length > 0 ? branches.all.map((b) => ({ value: b, label: b })) : [{ value: "main", label: "main (new)" }]
28105
28541
  ],
28106
28542
  value: status?.current || "",
28107
- onChange: (val) => window.api.checkoutBranch(val).then(refreshRepoState).catch((err) => showToast("Could not switch branch: " + (err.message || "Unknown error"), "error")),
28543
+ onChange: (val) => window.api.checkoutBranch(val).then(refreshRepoState).catch(
28544
+ (err) => showToast(
28545
+ "Could not switch branch: " + (err.message || "Unknown error"),
28546
+ "error"
28547
+ )
28548
+ ),
28108
28549
  buttonClassName: "appearance-none bg-surface border border-border rounded-md px-3 py-1.5 text-sm font-medium focus:outline-none focus:border-accent hover:border-secondary transition-colors"
28109
28550
  }
28110
28551
  ) }),
@@ -28235,30 +28676,55 @@ Are you SURE you want to link "${repoName}" to this folder?`
28235
28676
  title: "Download and update all new files and changes pushed by your team on GitHub to your computer",
28236
28677
  className: `ml-2 px-3 py-1.5 rounded-lg font-semibold transition-all duration-200 border flex items-center gap-1.5 shadow-sm text-xs ${(status?.behind ?? 0) > 0 ? "bg-gradient-to-r from-blue-600 to-indigo-600 hover:from-blue-500 hover:to-indigo-500 text-white border-blue-400/40 ring-2 ring-blue-500/20 animate-pulse" : "bg-surface-hover hover:brightness-110 text-primary border-border hover:border-brand/40"} disabled:opacity-50`,
28237
28678
  children: isPulling ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28238
- /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-3.5 h-3.5 animate-spin text-accent", fill: "none", viewBox: "0 0 24 24", children: [
28239
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28240
- "circle",
28241
- {
28242
- className: "opacity-25",
28243
- cx: "12",
28244
- cy: "12",
28245
- r: "10",
28246
- stroke: "currentColor",
28247
- strokeWidth: "4"
28248
- }
28249
- ),
28250
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28251
- "path",
28252
- {
28253
- className: "opacity-75",
28254
- fill: "currentColor",
28255
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
28256
- }
28257
- )
28258
- ] }),
28679
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
28680
+ "svg",
28681
+ {
28682
+ className: "w-3.5 h-3.5 animate-spin text-accent",
28683
+ fill: "none",
28684
+ viewBox: "0 0 24 24",
28685
+ children: [
28686
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28687
+ "circle",
28688
+ {
28689
+ className: "opacity-25",
28690
+ cx: "12",
28691
+ cy: "12",
28692
+ r: "10",
28693
+ stroke: "currentColor",
28694
+ strokeWidth: "4"
28695
+ }
28696
+ ),
28697
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28698
+ "path",
28699
+ {
28700
+ className: "opacity-75",
28701
+ fill: "currentColor",
28702
+ d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
28703
+ }
28704
+ )
28705
+ ]
28706
+ }
28707
+ ),
28259
28708
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Pulling..." })
28260
28709
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28261
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-3.5 h-3.5 text-accent", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4" }) }),
28710
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28711
+ "svg",
28712
+ {
28713
+ className: "w-3.5 h-3.5 text-accent",
28714
+ fill: "none",
28715
+ stroke: "currentColor",
28716
+ viewBox: "0 0 24 24",
28717
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28718
+ "path",
28719
+ {
28720
+ strokeLinecap: "round",
28721
+ strokeLinejoin: "round",
28722
+ strokeWidth: 2,
28723
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
28724
+ }
28725
+ )
28726
+ }
28727
+ ),
28262
28728
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: (status?.behind ?? 0) > 0 ? `Pull (${status.behind})` : "Pull" })
28263
28729
  ] })
28264
28730
  }
@@ -28307,289 +28773,374 @@ Are you SURE you want to link "${repoName}" to this folder?`
28307
28773
  }
28308
28774
  )
28309
28775
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28310
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { id: "split-pane-container", className: "flex-1 overflow-hidden min-h-0 flex flex-col lg:flex-row pb-2", children: [
28311
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: leftPanelWidth }, className: "bg-surface/70 backdrop-blur-md rounded-xl border border-border flex flex-col transition-colors duration-300 overflow-hidden min-h-[250px] min-w-0 min-h-0", children: [
28312
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-nowrap overflow-x-auto custom-scrollbar items-center border-b border-border px-4 pt-3 pb-1 gap-y-2 gap-x-1", children: [
28313
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
28314
- "button",
28315
- {
28316
- onClick: () => setChangesTab("changes"),
28317
- className: `text-xs font-semibold px-3 py-1.5 rounded-t-md transition-colors border-b-2 whitespace-nowrap flex-shrink-0 ${changesTab === "changes" ? "text-primary border-accent bg-canvas/50" : "text-secondary border-transparent hover:text-primary"}`,
28318
- children: [
28319
- "Changes",
28320
- status.not_added.length + status.modified.length + status.created.length + status.conflicted.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-accent/20 text-accent text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: status.not_added.length + status.modified.length + status.created.length + status.conflicted.length })
28321
- ]
28322
- }
28323
- ),
28324
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
28325
- "button",
28326
- {
28327
- onClick: () => setChangesTab("deleted"),
28328
- className: `text-xs font-semibold px-3 py-1.5 rounded-t-md transition-colors border-b-2 whitespace-nowrap flex-shrink-0 ${changesTab === "deleted" ? "text-primary border-danger bg-canvas/50" : "text-secondary border-transparent hover:text-primary"}`,
28329
- children: [
28330
- "Deleted",
28331
- status.deleted.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-danger/20 text-danger text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: status.deleted.length })
28332
- ]
28333
- }
28334
- ),
28776
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
28777
+ "div",
28778
+ {
28779
+ id: "split-pane-container",
28780
+ className: "flex-1 overflow-hidden min-h-0 flex flex-col lg:flex-row pb-2",
28781
+ children: [
28335
28782
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28336
- "button",
28783
+ "div",
28337
28784
  {
28338
- onClick: () => {
28339
- setChangesTab("collaboration-repo");
28340
- window.api.getCollaboratedRepos().then((repos) => setCollaboratedRepos(repos || [])).catch(() => {
28341
- });
28342
- },
28343
- className: `text-xs font-semibold px-3 py-1.5 rounded-t-md transition-colors border-b-2 whitespace-nowrap flex-shrink-0 ${changesTab === "collaboration-repo" ? "text-primary border-brand bg-canvas/50" : "text-secondary border-transparent hover:text-primary"}`,
28785
+ style: { flex: leftPanelWidth },
28786
+ className: "bg-surface/70 backdrop-blur-md rounded-xl border border-border flex flex-col transition-colors duration-300 overflow-hidden min-h-[250px] min-w-0 min-h-0",
28344
28787
  children: [
28345
- "Collaboration Repo",
28346
- collaboratedRepos.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-brand/20 text-brand text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: collaboratedRepos.length })
28347
- ]
28348
- }
28349
- ),
28350
- changesTab === "changes" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-auto flex items-center gap-2 mb-1", children: [
28351
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
28352
- "button",
28353
- {
28354
- onClick: handleUploadFiles,
28355
- disabled: !repoPath || isUploading,
28356
- className: "text-xs bg-brand/10 hover:bg-brand/20 text-brand border border-brand/30 px-2.5 py-1 rounded-md transition-all flex items-center gap-1.5 font-medium shadow-sm disabled:opacity-50 whitespace-nowrap flex-shrink-0",
28357
- title: "Upload files directly into this repository",
28358
- children: [
28359
- /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-3.5 h-3.5", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12" }) }),
28360
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isUploading ? "Uploading..." : "Upload Files" })
28361
- ]
28362
- }
28363
- ),
28364
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28365
- "button",
28366
- {
28367
- onClick: handleStageAll,
28368
- className: "text-xs bg-surface-hover text-primary px-2.5 py-1 rounded-md transition-colors border border-border hover:brightness-110 whitespace-nowrap flex-shrink-0",
28369
- children: "Stage All"
28370
- }
28371
- )
28372
- ] })
28373
- ] }),
28374
- status?.isMassive ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 flex flex-col items-center justify-center p-8 bg-canvas", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28375
- MassivePushLoader,
28376
- {
28377
- percentage: massivePushData?.percentage || 0,
28378
- eta: gitProgress > 0 && gitProgress < 100 ? `Uploading Chunk: ${Math.round(gitProgress)}%` : massivePushData?.eta || "calculating..."
28379
- }
28380
- ) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto min-h-0 p-4 custom-scrollbar", children: [
28381
- changesTab === "changes" && /* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { className: "space-y-1", children: [
28382
- status.conflicted.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28383
- "li",
28384
- {
28385
- className: `flex justify-between items-center px-2 py-1.5 rounded-md group transition-colors ${failedFiles.includes(f) ? "bg-danger/10 border border-danger/20" : "hover:bg-surface-hover"}`,
28386
- children: [
28788
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-nowrap overflow-x-auto custom-scrollbar items-center border-b border-border px-4 pt-3 pb-1 gap-y-2 gap-x-1", children: [
28387
28789
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28388
- "span",
28790
+ "button",
28389
28791
  {
28390
- onClick: () => viewDiff(f, false),
28391
- className: `text-xs font-mono cursor-pointer flex-1 flex items-center gap-1.5 truncate ${failedFiles.includes(f) ? "text-danger" : "text-warning"}`,
28792
+ onClick: () => setChangesTab("changes"),
28793
+ className: `text-xs font-semibold px-3 py-1.5 rounded-t-md transition-colors border-b-2 whitespace-nowrap flex-shrink-0 ${changesTab === "changes" ? "text-primary border-accent bg-canvas/50" : "text-secondary border-transparent hover:text-primary"}`,
28392
28794
  children: [
28393
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `flex-shrink-0 text-[10px] font-bold px-1 rounded border ${failedFiles.includes(f) ? "bg-danger/20 border-danger/30 text-danger" : "bg-warning/20 text-warning border-warning/30"}`, children: failedFiles.includes(f) ? "X" : "!" }),
28394
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28795
+ "Changes",
28796
+ status.not_added.length + status.modified.length + status.created.length + status.conflicted.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-accent/20 text-accent text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: status.not_added.length + status.modified.length + status.created.length + status.conflicted.length })
28395
28797
  ]
28396
28798
  }
28397
28799
  ),
28398
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28399
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28400
- "button",
28401
- {
28402
- onClick: () => openEditor(f),
28403
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28404
- children: "Edit"
28405
- }
28406
- ),
28407
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28408
- "button",
28409
- {
28410
- onClick: () => handleStageSingle(f),
28411
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28412
- children: "+"
28413
- }
28414
- )
28415
- ] })
28416
- ]
28417
- },
28418
- `c-${f}`
28419
- )),
28420
- status.not_added.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28421
- "li",
28422
- {
28423
- className: `flex justify-between items-center px-2 py-1.5 rounded-md group transition-colors ${failedFiles.includes(f) ? "bg-danger/10 border border-danger/20" : "hover:bg-surface-hover"}`,
28424
- children: [
28425
28800
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28426
- "span",
28801
+ "button",
28427
28802
  {
28428
- onClick: () => viewDiff(f, false),
28429
- className: `text-xs font-mono cursor-pointer flex-1 flex items-center gap-1.5 truncate ${failedFiles.includes(f) ? "text-danger" : "text-success"}`,
28803
+ onClick: () => setChangesTab("deleted"),
28804
+ className: `text-xs font-semibold px-3 py-1.5 rounded-t-md transition-colors border-b-2 whitespace-nowrap flex-shrink-0 ${changesTab === "deleted" ? "text-primary border-danger bg-canvas/50" : "text-secondary border-transparent hover:text-primary"}`,
28430
28805
  children: [
28431
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `flex-shrink-0 text-[10px] font-bold px-1 rounded border ${failedFiles.includes(f) ? "bg-danger/20 border-danger/30 text-danger" : "bg-success/20 text-success border-success/30"}`, children: failedFiles.includes(f) ? "X" : "U" }),
28432
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28806
+ "Deleted",
28807
+ status.deleted.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-danger/20 text-danger text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: status.deleted.length })
28433
28808
  ]
28434
28809
  }
28435
28810
  ),
28436
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28437
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28438
- "button",
28439
- {
28440
- onClick: () => openEditor(f),
28441
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28442
- children: "Edit"
28443
- }
28444
- ),
28445
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28446
- "button",
28447
- {
28448
- onClick: () => handleStageSingle(f),
28449
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28450
- children: "+"
28451
- }
28452
- )
28453
- ] })
28454
- ]
28455
- },
28456
- `u-${f}`
28457
- )),
28458
- status.modified.filter((f) => !status.conflicted.includes(f)).map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28459
- "li",
28460
- {
28461
- className: `flex justify-between items-center px-2 py-1.5 rounded-md group transition-colors ${failedFiles.includes(f) ? "bg-danger/10 border border-danger/20" : "hover:bg-surface-hover"}`,
28462
- children: [
28463
28811
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28464
- "span",
28812
+ "button",
28465
28813
  {
28466
- onClick: () => viewDiff(f, false),
28467
- className: `text-xs font-mono cursor-pointer flex-1 flex items-center gap-1.5 truncate ${failedFiles.includes(f) ? "text-danger" : "text-warning"}`,
28814
+ onClick: () => {
28815
+ setChangesTab("collaboration-repo");
28816
+ window.api.getCollaboratedRepos().then((repos) => setCollaboratedRepos(repos || [])).catch(() => {
28817
+ });
28818
+ },
28819
+ className: `text-xs font-semibold px-3 py-1.5 rounded-t-md transition-colors border-b-2 whitespace-nowrap flex-shrink-0 ${changesTab === "collaboration-repo" ? "text-primary border-brand bg-canvas/50" : "text-secondary border-transparent hover:text-primary"}`,
28468
28820
  children: [
28469
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: `flex-shrink-0 text-[10px] font-bold px-1 rounded border ${failedFiles.includes(f) ? "bg-danger/20 border-danger/30 text-danger" : "bg-warning/20 text-warning border-warning/30"}`, children: failedFiles.includes(f) ? "X" : "M" }),
28470
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28821
+ "Collaboration Repo",
28822
+ collaboratedRepos.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-brand/20 text-brand text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: collaboratedRepos.length })
28471
28823
  ]
28472
28824
  }
28473
28825
  ),
28474
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28475
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28826
+ changesTab === "changes" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-auto flex items-center gap-2 mb-1", children: [
28827
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
28476
28828
  "button",
28477
28829
  {
28478
- onClick: () => openEditor(f),
28479
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28480
- children: "Edit"
28830
+ onClick: handleUploadFiles,
28831
+ disabled: !repoPath || isUploading,
28832
+ className: "text-xs bg-brand/10 hover:bg-brand/20 text-brand border border-brand/30 px-2.5 py-1 rounded-md transition-all flex items-center gap-1.5 font-medium shadow-sm disabled:opacity-50 whitespace-nowrap flex-shrink-0",
28833
+ title: "Upload files directly into this repository",
28834
+ children: [
28835
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28836
+ "svg",
28837
+ {
28838
+ className: "w-3.5 h-3.5",
28839
+ fill: "none",
28840
+ stroke: "currentColor",
28841
+ viewBox: "0 0 24 24",
28842
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28843
+ "path",
28844
+ {
28845
+ strokeLinecap: "round",
28846
+ strokeLinejoin: "round",
28847
+ strokeWidth: 2,
28848
+ d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"
28849
+ }
28850
+ )
28851
+ }
28852
+ ),
28853
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isUploading ? "Uploading..." : "Upload Files" })
28854
+ ]
28481
28855
  }
28482
28856
  ),
28483
28857
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28484
28858
  "button",
28485
28859
  {
28486
- onClick: () => handleStageSingle(f),
28487
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28488
- children: "+"
28860
+ onClick: handleStageAll,
28861
+ className: "text-xs bg-surface-hover text-primary px-2.5 py-1 rounded-md transition-colors border border-border hover:brightness-110 whitespace-nowrap flex-shrink-0",
28862
+ children: "Stage All"
28489
28863
  }
28490
28864
  )
28491
28865
  ] })
28492
- ]
28493
- },
28494
- `m-${f}`
28495
- )),
28496
- status.not_added.length + status.modified.length + status.created.length + status.conflicted.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No working tree changes" })
28497
- ] }),
28498
- changesTab === "deleted" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28499
- /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-1", children: status.deleted.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No locally deleted files" }) : status.deleted.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28500
- "li",
28501
- {
28502
- className: "flex justify-between items-center hover:bg-surface-hover px-2 py-1.5 rounded-md transition-colors",
28503
- children: [
28504
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs text-danger/70 font-mono flex-1 flex items-center gap-1.5 truncate", children: [
28505
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-shrink-0 text-[10px] font-bold bg-danger/20 text-danger border border-danger/30 px-1 rounded", children: "D" }),
28506
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28866
+ ] }),
28867
+ status?.isMassive ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 flex flex-col items-center justify-center p-8 bg-canvas", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28868
+ MassivePushLoader,
28869
+ {
28870
+ percentage: massivePushData?.percentage || 0,
28871
+ eta: gitProgress > 0 && gitProgress < 100 ? `Uploading Chunk: ${Math.round(gitProgress)}%` : massivePushData?.eta || "calculating..."
28872
+ }
28873
+ ) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto min-h-0 p-4 custom-scrollbar", children: [
28874
+ changesTab === "changes" && /* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { className: "space-y-1", children: [
28875
+ status.conflicted.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28876
+ "li",
28877
+ {
28878
+ className: `flex justify-between items-center px-2 py-1.5 rounded-md group transition-colors ${failedFiles.includes(f) ? "bg-danger/10 border border-danger/20" : "hover:bg-surface-hover"}`,
28879
+ children: [
28880
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
28881
+ "span",
28882
+ {
28883
+ onClick: () => viewDiff(f, false),
28884
+ className: `text-xs font-mono cursor-pointer flex-1 flex items-center gap-1.5 truncate ${failedFiles.includes(f) ? "text-danger" : "text-warning"}`,
28885
+ children: [
28886
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28887
+ "span",
28888
+ {
28889
+ className: `flex-shrink-0 text-[10px] font-bold px-1 rounded border ${failedFiles.includes(f) ? "bg-danger/20 border-danger/30 text-danger" : "bg-warning/20 text-warning border-warning/30"}`,
28890
+ children: failedFiles.includes(f) ? "X" : "!"
28891
+ }
28892
+ ),
28893
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28894
+ ]
28895
+ }
28896
+ ),
28897
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28898
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28899
+ "button",
28900
+ {
28901
+ onClick: () => openEditor(f),
28902
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28903
+ children: "Edit"
28904
+ }
28905
+ ),
28906
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28907
+ "button",
28908
+ {
28909
+ onClick: () => handleStageSingle(f),
28910
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28911
+ children: "+"
28912
+ }
28913
+ )
28914
+ ] })
28915
+ ]
28916
+ },
28917
+ `c-${f}`
28918
+ )),
28919
+ status.not_added.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28920
+ "li",
28921
+ {
28922
+ className: `flex justify-between items-center px-2 py-1.5 rounded-md group transition-colors ${failedFiles.includes(f) ? "bg-danger/10 border border-danger/20" : "hover:bg-surface-hover"}`,
28923
+ children: [
28924
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
28925
+ "span",
28926
+ {
28927
+ onClick: () => viewDiff(f, false),
28928
+ className: `text-xs font-mono cursor-pointer flex-1 flex items-center gap-1.5 truncate ${failedFiles.includes(f) ? "text-danger" : "text-success"}`,
28929
+ children: [
28930
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28931
+ "span",
28932
+ {
28933
+ className: `flex-shrink-0 text-[10px] font-bold px-1 rounded border ${failedFiles.includes(f) ? "bg-danger/20 border-danger/30 text-danger" : "bg-success/20 text-success border-success/30"}`,
28934
+ children: failedFiles.includes(f) ? "X" : "U"
28935
+ }
28936
+ ),
28937
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28938
+ ]
28939
+ }
28940
+ ),
28941
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28942
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28943
+ "button",
28944
+ {
28945
+ onClick: () => openEditor(f),
28946
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28947
+ children: "Edit"
28948
+ }
28949
+ ),
28950
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28951
+ "button",
28952
+ {
28953
+ onClick: () => handleStageSingle(f),
28954
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28955
+ children: "+"
28956
+ }
28957
+ )
28958
+ ] })
28959
+ ]
28960
+ },
28961
+ `u-${f}`
28962
+ )),
28963
+ status.modified.filter((f) => !status.conflicted.includes(f)).map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28964
+ "li",
28965
+ {
28966
+ className: `flex justify-between items-center px-2 py-1.5 rounded-md group transition-colors ${failedFiles.includes(f) ? "bg-danger/10 border border-danger/20" : "hover:bg-surface-hover"}`,
28967
+ children: [
28968
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
28969
+ "span",
28970
+ {
28971
+ onClick: () => viewDiff(f, false),
28972
+ className: `text-xs font-mono cursor-pointer flex-1 flex items-center gap-1.5 truncate ${failedFiles.includes(f) ? "text-danger" : "text-warning"}`,
28973
+ children: [
28974
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28975
+ "span",
28976
+ {
28977
+ className: `flex-shrink-0 text-[10px] font-bold px-1 rounded border ${failedFiles.includes(f) ? "bg-danger/20 border-danger/30 text-danger" : "bg-warning/20 text-warning border-warning/30"}`,
28978
+ children: failedFiles.includes(f) ? "X" : "M"
28979
+ }
28980
+ ),
28981
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
28982
+ ]
28983
+ }
28984
+ ),
28985
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28986
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28987
+ "button",
28988
+ {
28989
+ onClick: () => openEditor(f),
28990
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28991
+ children: "Edit"
28992
+ }
28993
+ ),
28994
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
28995
+ "button",
28996
+ {
28997
+ onClick: () => handleStageSingle(f),
28998
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28999
+ children: "+"
29000
+ }
29001
+ )
29002
+ ] })
29003
+ ]
29004
+ },
29005
+ `m-${f}`
29006
+ )),
29007
+ status.not_added.length + status.modified.length + status.created.length + status.conflicted.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No working tree changes" })
28507
29008
  ] }),
28508
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28509
- "button",
28510
- {
28511
- onClick: () => handleStageSingle(f),
28512
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28513
- children: "+"
28514
- }
28515
- ) })
28516
- ]
28517
- },
28518
- `d-${f}`
28519
- )) }),
28520
- deletedHistory?.all && deletedHistory.all.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 pt-3 border-t border-border/50", children: [
28521
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-[11px] font-semibold text-secondary uppercase tracking-wider mb-2", children: "Recently Deleted in Repository" }),
28522
- /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-2", children: deletedHistory.all.map((commit) => /* @__PURE__ */ jsxRuntimeExports.jsxs("li", { className: "bg-surface/50 p-2 rounded-md border border-border/50", children: [
28523
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-start mb-1.5", children: [
28524
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-semibold text-primary truncate", title: commit.message, children: commit.message }),
28525
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] text-secondary whitespace-nowrap ml-2 flex-shrink-0", children: [
28526
- new Date(commit.date).toLocaleDateString(),
28527
- " ",
28528
- new Date(commit.date).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" })
29009
+ changesTab === "deleted" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
29010
+ /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-1", children: status.deleted.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No locally deleted files" }) : status.deleted.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29011
+ "li",
29012
+ {
29013
+ className: "flex justify-between items-center hover:bg-surface-hover px-2 py-1.5 rounded-md transition-colors",
29014
+ children: [
29015
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs text-danger/70 font-mono flex-1 flex items-center gap-1.5 truncate", children: [
29016
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-shrink-0 text-[10px] font-bold bg-danger/20 text-danger border border-danger/30 px-1 rounded", children: "D" }),
29017
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: f })
29018
+ ] }),
29019
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29020
+ "button",
29021
+ {
29022
+ onClick: () => handleStageSingle(f),
29023
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
29024
+ children: "+"
29025
+ }
29026
+ ) })
29027
+ ]
29028
+ },
29029
+ `d-${f}`
29030
+ )) }),
29031
+ deletedHistory?.all && deletedHistory.all.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 pt-3 border-t border-border/50", children: [
29032
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-[11px] font-semibold text-secondary uppercase tracking-wider mb-2", children: "Recently Deleted in Repository" }),
29033
+ /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-2", children: deletedHistory.all.map((commit) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29034
+ "li",
29035
+ {
29036
+ className: "bg-surface/50 p-2 rounded-md border border-border/50",
29037
+ children: [
29038
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-start mb-1.5", children: [
29039
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29040
+ "span",
29041
+ {
29042
+ className: "text-xs font-semibold text-primary truncate",
29043
+ title: commit.message,
29044
+ children: commit.message
29045
+ }
29046
+ ),
29047
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] text-secondary whitespace-nowrap ml-2 flex-shrink-0", children: [
29048
+ new Date(commit.date).toLocaleDateString(),
29049
+ " ",
29050
+ new Date(commit.date).toLocaleTimeString([], {
29051
+ hour: "2-digit",
29052
+ minute: "2-digit"
29053
+ })
29054
+ ] })
29055
+ ] }),
29056
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1", children: commit.diff?.files?.filter((f) => f.status === "D").map((f, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29057
+ "div",
29058
+ {
29059
+ className: "flex items-center gap-1.5 text-[11px] font-mono text-danger/80",
29060
+ children: [
29061
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-shrink-0 font-bold bg-danger/10 text-danger border border-danger/20 px-1 rounded", children: "D" }),
29062
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", title: f.file, children: f.file })
29063
+ ]
29064
+ },
29065
+ i
29066
+ )) })
29067
+ ]
29068
+ },
29069
+ commit.hash
29070
+ )) })
29071
+ ] })
28529
29072
  ] })
28530
- ] }),
28531
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1", children: commit.diff?.files?.filter((f) => f.status === "D").map((f, i) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-[11px] font-mono text-danger/80", children: [
28532
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-shrink-0 font-bold bg-danger/10 text-danger border border-danger/20 px-1 rounded", children: "D" }),
28533
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", title: f.file, children: f.file })
28534
- ] }, i)) })
28535
- ] }, commit.hash)) })
28536
- ] })
28537
- ] })
28538
- ] })
28539
- ] }),
28540
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28541
- "div",
28542
- {
28543
- className: "hidden lg:flex w-6 cursor-col-resize items-center justify-center group relative z-10",
28544
- onMouseDown: (e) => {
28545
- e.preventDefault();
28546
- setIsResizing(true);
28547
- },
28548
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `h-12 w-1 rounded-full transition-colors ${isResizing ? "bg-accent" : "bg-border group-hover:bg-accent/50"}` })
28549
- }
28550
- ),
28551
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: { flex: 100 - leftPanelWidth }, className: "bg-surface/70 backdrop-blur-md rounded-xl p-4 border border-border flex flex-col transition-colors duration-300 overflow-hidden min-h-0 min-w-0", children: [
28552
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "font-semibold mb-4 text-primary text-sm shrink-0", children: "Staged Changes" }),
28553
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto min-h-0 pr-2 custom-scrollbar", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { className: "space-y-1", children: [
28554
- status.staged.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28555
- "li",
29073
+ ] })
29074
+ ]
29075
+ }
29076
+ ),
29077
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29078
+ "div",
29079
+ {
29080
+ className: "hidden lg:flex w-6 cursor-col-resize items-center justify-center group relative z-10",
29081
+ onMouseDown: (e) => {
29082
+ e.preventDefault();
29083
+ setIsResizing(true);
29084
+ },
29085
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29086
+ "div",
29087
+ {
29088
+ className: `h-12 w-1 rounded-full transition-colors ${isResizing ? "bg-accent" : "bg-border group-hover:bg-accent/50"}`
29089
+ }
29090
+ )
29091
+ }
29092
+ ),
29093
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
29094
+ "div",
28556
29095
  {
28557
- className: "flex justify-between items-center hover:bg-surface-hover px-2 py-1.5 rounded-md group transition-colors",
29096
+ style: { flex: 100 - leftPanelWidth },
29097
+ className: "bg-surface/70 backdrop-blur-md rounded-xl p-4 border border-border flex flex-col transition-colors duration-300 overflow-hidden min-h-0 min-w-0",
28558
29098
  children: [
28559
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28560
- "span",
28561
- {
28562
- onClick: () => viewDiff(f, true),
28563
- className: "text-xs text-success font-mono cursor-pointer flex-1",
28564
- children: f
28565
- }
28566
- ),
28567
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1", children: [
28568
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28569
- "button",
29099
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "font-semibold mb-4 text-primary text-sm shrink-0", children: "Staged Changes" }),
29100
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto min-h-0 pr-2 custom-scrollbar", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { className: "space-y-1", children: [
29101
+ status.staged.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29102
+ "li",
28570
29103
  {
28571
- onClick: () => openEditor(f),
28572
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28573
- children: "Edit"
28574
- }
28575
- ),
28576
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28577
- "button",
28578
- {
28579
- onClick: () => handleUnstageSingle(f),
28580
- className: "text-[10px] text-secondary hover:text-danger px-2 py-0.5 border border-border rounded bg-canvas",
28581
- children: "-"
28582
- }
28583
- )
28584
- ] })
29104
+ className: "flex justify-between items-center hover:bg-surface-hover px-2 py-1.5 rounded-md group transition-colors",
29105
+ children: [
29106
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29107
+ "span",
29108
+ {
29109
+ onClick: () => viewDiff(f, true),
29110
+ className: "text-xs text-success font-mono cursor-pointer flex-1",
29111
+ children: f
29112
+ }
29113
+ ),
29114
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1", children: [
29115
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29116
+ "button",
29117
+ {
29118
+ onClick: () => openEditor(f),
29119
+ className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
29120
+ children: "Edit"
29121
+ }
29122
+ ),
29123
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29124
+ "button",
29125
+ {
29126
+ onClick: () => handleUnstageSingle(f),
29127
+ className: "text-[10px] text-secondary hover:text-danger px-2 py-0.5 border border-border rounded bg-canvas",
29128
+ children: "-"
29129
+ }
29130
+ )
29131
+ ] })
29132
+ ]
29133
+ },
29134
+ f
29135
+ )),
29136
+ status.staged.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No files staged for commit" })
29137
+ ] }) })
28585
29138
  ]
28586
- },
28587
- f
28588
- )),
28589
- status.staged.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No files staged for commit" })
28590
- ] }) })
28591
- ] })
28592
- ] }),
29139
+ }
29140
+ )
29141
+ ]
29142
+ }
29143
+ ),
28593
29144
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 shrink-0 bg-surface/70 backdrop-blur-md p-4 rounded-xl border border-border flex flex-col sm:flex-row gap-3 items-center transition-colors duration-300", children: [
28594
29145
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28595
29146
  "input",
@@ -28702,7 +29253,12 @@ Are you SURE you want to link "${repoName}" to this folder?`
28702
29253
  onClose: () => setShowUniversalWizard(false),
28703
29254
  onAutoHealTrigger: (msg, path, branch) => {
28704
29255
  setShowUniversalWizard(false);
28705
- setPushFailureData({ reason: msg, operation: "push", overrideRepoPath: path, overrideBranch: branch });
29256
+ setPushFailureData({
29257
+ reason: msg,
29258
+ operation: "push",
29259
+ overrideRepoPath: path,
29260
+ overrideBranch: branch
29261
+ });
28706
29262
  }
28707
29263
  }
28708
29264
  ),
@@ -28712,54 +29268,62 @@ Are you SURE you want to link "${repoName}" to this folder?`
28712
29268
  ] }),
28713
29269
  showInvitationsModal && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fixed inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-4", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface border border-border p-6 rounded-2xl w-full max-w-md shadow-2xl", children: [
28714
29270
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-primary mb-4", children: "Pending Invitations" }),
28715
- invitations.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center py-6 text-secondary", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "You have no pending invitations." }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3 max-h-96 overflow-y-auto pr-2 custom-scrollbar", children: invitations.map((inv) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-4 bg-canvas border border-border rounded-lg flex flex-col gap-3", children: [
28716
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
28717
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-primary font-medium", children: inv.repository.full_name }),
28718
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-secondary mt-1", children: [
28719
- "Invited by ",
28720
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold", children: inv.inviter.login }),
28721
- " as ",
28722
- inv.permissions
28723
- ] })
28724
- ] }),
28725
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 mt-2", children: [
28726
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28727
- "button",
28728
- {
28729
- onClick: async () => {
28730
- try {
28731
- await window.api.acceptInvitation(inv.id);
28732
- showToast("Invitation accepted!", "success");
28733
- const invs = await window.api.getUserInvitations();
28734
- setInvitations(invs || []);
28735
- refreshRepoState();
28736
- } catch (e) {
28737
- showToast(e.message || "Failed to accept invitation", "error");
29271
+ invitations.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center py-6 text-secondary", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { children: "You have no pending invitations." }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3 max-h-96 overflow-y-auto pr-2 custom-scrollbar", children: invitations.map((inv) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29272
+ "div",
29273
+ {
29274
+ className: "p-4 bg-canvas border border-border rounded-lg flex flex-col gap-3",
29275
+ children: [
29276
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
29277
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-primary font-medium", children: inv.repository.full_name }),
29278
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-secondary mt-1", children: [
29279
+ "Invited by ",
29280
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold", children: inv.inviter.login }),
29281
+ " as",
29282
+ " ",
29283
+ inv.permissions
29284
+ ] })
29285
+ ] }),
29286
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 mt-2", children: [
29287
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29288
+ "button",
29289
+ {
29290
+ onClick: async () => {
29291
+ try {
29292
+ await window.api.acceptInvitation(inv.id);
29293
+ showToast("Invitation accepted!", "success");
29294
+ const invs = await window.api.getUserInvitations();
29295
+ setInvitations(invs || []);
29296
+ refreshRepoState();
29297
+ } catch (e) {
29298
+ showToast(e.message || "Failed to accept invitation", "error");
29299
+ }
29300
+ },
29301
+ className: "flex-1 py-1.5 bg-success text-white rounded-md text-sm font-semibold transition-colors hover:brightness-110",
29302
+ children: "Accept"
28738
29303
  }
28739
- },
28740
- className: "flex-1 py-1.5 bg-success text-white rounded-md text-sm font-semibold transition-colors hover:brightness-110",
28741
- children: "Accept"
28742
- }
28743
- ),
28744
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28745
- "button",
28746
- {
28747
- onClick: async () => {
28748
- try {
28749
- await window.api.declineInvitation(inv.id);
28750
- showToast("Invitation declined.", "info");
28751
- const invs = await window.api.getUserInvitations();
28752
- setInvitations(invs || []);
28753
- } catch (e) {
28754
- showToast(e.message || "Failed to decline invitation", "error");
29304
+ ),
29305
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29306
+ "button",
29307
+ {
29308
+ onClick: async () => {
29309
+ try {
29310
+ await window.api.declineInvitation(inv.id);
29311
+ showToast("Invitation declined.", "info");
29312
+ const invs = await window.api.getUserInvitations();
29313
+ setInvitations(invs || []);
29314
+ } catch (e) {
29315
+ showToast(e.message || "Failed to decline invitation", "error");
29316
+ }
29317
+ },
29318
+ className: "flex-1 py-1.5 bg-danger text-white rounded-md text-sm font-semibold transition-colors hover:brightness-110",
29319
+ children: "Decline"
28755
29320
  }
28756
- },
28757
- className: "flex-1 py-1.5 bg-danger text-white rounded-md text-sm font-semibold transition-colors hover:brightness-110",
28758
- children: "Decline"
28759
- }
28760
- )
28761
- ] })
28762
- ] }, inv.id)) }),
29321
+ )
29322
+ ] })
29323
+ ]
29324
+ },
29325
+ inv.id
29326
+ )) }),
28763
29327
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28764
29328
  "button",
28765
29329
  {
@@ -28769,14 +29333,112 @@ Are you SURE you want to link "${repoName}" to this folder?`
28769
29333
  }
28770
29334
  )
28771
29335
  ] }) }),
28772
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fixed top-6 right-6 z-[300] flex flex-col gap-3 pointer-events-none", children: toasts.map((toast) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "animate-fade-in pointer-events-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `backdrop-blur-2xl rounded-2xl shadow-[0_10px_40px_rgba(0,0,0,0.3)] px-5 py-3.5 flex items-center gap-3 border ${toast.type === "error" ? "bg-black/60 border-danger/40 text-danger" : toast.type === "success" ? "bg-black/60 border-success/40 text-green-400" : toast.type === "warning" ? "bg-black/60 border-yellow-500/40 text-yellow-400" : "bg-black/60 border-border text-primary"} transition-all duration-300`, children: [
28773
- toast.type === "error" && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z" }) }),
28774
- toast.type === "warning" && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }),
28775
- toast.type === "success" && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M5 13l4 4L19 7" }) }),
28776
- toast.type === "info" && /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-5 h-5 flex-shrink-0", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2.5, d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }) }),
28777
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold text-sm drop-shadow-md text-white/95", children: toast.msg }),
28778
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { onClick: () => setToasts((prev) => prev.filter((t2) => t2.id !== toast.id)), className: "ml-4 opacity-50 hover:opacity-100 transition-opacity flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4 text-white", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M6 18L18 6M6 6l12 12" }) }) })
28779
- ] }) }, toast.id)) })
29336
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "fixed top-6 right-6 z-[300] flex flex-col gap-3 pointer-events-none", children: toasts.map((toast) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "animate-fade-in pointer-events-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
29337
+ "div",
29338
+ {
29339
+ className: `backdrop-blur-2xl rounded-2xl shadow-[0_10px_40px_rgba(0,0,0,0.3)] px-5 py-3.5 flex items-center gap-3 border ${toast.type === "error" ? "bg-black/60 border-danger/40 text-danger" : toast.type === "success" ? "bg-black/60 border-success/40 text-green-400" : toast.type === "warning" ? "bg-black/60 border-yellow-500/40 text-yellow-400" : "bg-black/60 border-border text-primary"} transition-all duration-300`,
29340
+ children: [
29341
+ toast.type === "error" && /* @__PURE__ */ jsxRuntimeExports.jsx(
29342
+ "svg",
29343
+ {
29344
+ className: "w-5 h-5 flex-shrink-0",
29345
+ fill: "none",
29346
+ stroke: "currentColor",
29347
+ viewBox: "0 0 24 24",
29348
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29349
+ "path",
29350
+ {
29351
+ strokeLinecap: "round",
29352
+ strokeLinejoin: "round",
29353
+ strokeWidth: 2.5,
29354
+ d: "M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"
29355
+ }
29356
+ )
29357
+ }
29358
+ ),
29359
+ toast.type === "warning" && /* @__PURE__ */ jsxRuntimeExports.jsx(
29360
+ "svg",
29361
+ {
29362
+ className: "w-5 h-5 flex-shrink-0",
29363
+ fill: "none",
29364
+ stroke: "currentColor",
29365
+ viewBox: "0 0 24 24",
29366
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29367
+ "path",
29368
+ {
29369
+ strokeLinecap: "round",
29370
+ strokeLinejoin: "round",
29371
+ strokeWidth: 2.5,
29372
+ d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
29373
+ }
29374
+ )
29375
+ }
29376
+ ),
29377
+ toast.type === "success" && /* @__PURE__ */ jsxRuntimeExports.jsx(
29378
+ "svg",
29379
+ {
29380
+ className: "w-5 h-5 flex-shrink-0",
29381
+ fill: "none",
29382
+ stroke: "currentColor",
29383
+ viewBox: "0 0 24 24",
29384
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29385
+ "path",
29386
+ {
29387
+ strokeLinecap: "round",
29388
+ strokeLinejoin: "round",
29389
+ strokeWidth: 2.5,
29390
+ d: "M5 13l4 4L19 7"
29391
+ }
29392
+ )
29393
+ }
29394
+ ),
29395
+ toast.type === "info" && /* @__PURE__ */ jsxRuntimeExports.jsx(
29396
+ "svg",
29397
+ {
29398
+ className: "w-5 h-5 flex-shrink-0",
29399
+ fill: "none",
29400
+ stroke: "currentColor",
29401
+ viewBox: "0 0 24 24",
29402
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29403
+ "path",
29404
+ {
29405
+ strokeLinecap: "round",
29406
+ strokeLinejoin: "round",
29407
+ strokeWidth: 2.5,
29408
+ d: "M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
29409
+ }
29410
+ )
29411
+ }
29412
+ ),
29413
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold text-sm drop-shadow-md text-white/95", children: toast.msg }),
29414
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29415
+ "button",
29416
+ {
29417
+ onClick: () => setToasts((prev) => prev.filter((t2) => t2.id !== toast.id)),
29418
+ className: "ml-4 opacity-50 hover:opacity-100 transition-opacity flex-shrink-0",
29419
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29420
+ "svg",
29421
+ {
29422
+ className: "w-4 h-4 text-white",
29423
+ fill: "none",
29424
+ stroke: "currentColor",
29425
+ viewBox: "0 0 24 24",
29426
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29427
+ "path",
29428
+ {
29429
+ strokeLinecap: "round",
29430
+ strokeLinejoin: "round",
29431
+ strokeWidth: 2,
29432
+ d: "M6 18L18 6M6 6l12 12"
29433
+ }
29434
+ )
29435
+ }
29436
+ )
29437
+ }
29438
+ )
29439
+ ]
29440
+ }
29441
+ ) }, toast.id)) })
28780
29442
  ]
28781
29443
  }
28782
29444
  );