gitxelectron 1.3.4 → 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: [
@@ -22936,6 +23043,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
22936
23043
  const [step, setStep] = reactExports.useState("START");
22937
23044
  const [errorMsg, setErrorMsg] = reactExports.useState("");
22938
23045
  const [files, setFiles] = reactExports.useState([]);
23046
+ const [isDragging2, setIsDragging] = reactExports.useState(false);
22939
23047
  const [accounts, setAccounts] = reactExports.useState([]);
22940
23048
  const [selectedAccount, setSelectedAccount] = reactExports.useState(null);
22941
23049
  const [repos, setRepos] = reactExports.useState([]);
@@ -22994,6 +23102,28 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
22994
23102
  await fetchAccounts();
22995
23103
  }
22996
23104
  };
23105
+ const handleWizardDragOver = (e) => {
23106
+ e.preventDefault();
23107
+ e.stopPropagation();
23108
+ setIsDragging(true);
23109
+ };
23110
+ const handleWizardDragLeave = (e) => {
23111
+ e.preventDefault();
23112
+ e.stopPropagation();
23113
+ setIsDragging(false);
23114
+ };
23115
+ const handleWizardDrop = async (e) => {
23116
+ e.preventDefault();
23117
+ e.stopPropagation();
23118
+ setIsDragging(false);
23119
+ if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
23120
+ const droppedPaths = Array.from(e.dataTransfer.files).map((f) => f.path);
23121
+ if (droppedPaths.length > 0) {
23122
+ setFiles(droppedPaths);
23123
+ await fetchAccounts();
23124
+ }
23125
+ }
23126
+ };
22997
23127
  const fetchAccounts = async () => {
22998
23128
  try {
22999
23129
  const data = await window.api.getAccounts();
@@ -23122,7 +23252,10 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23122
23252
  initial: { opacity: 0 },
23123
23253
  animate: { opacity: 1 },
23124
23254
  exit: { opacity: 0 },
23125
- className: "flex flex-col items-center justify-center h-full gap-6",
23255
+ onDragOver: handleWizardDragOver,
23256
+ onDragLeave: handleWizardDragLeave,
23257
+ onDrop: handleWizardDrop,
23258
+ className: `flex flex-col items-center justify-center h-full gap-6 rounded-2xl transition-colors border-2 ${isDragging2 ? "border-brand bg-brand/10" : "border-transparent"}`,
23126
23259
  children: [
23127
23260
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center space-y-2 mb-4", children: [
23128
23261
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-2xl text-white font-semibold", children: "Select files to push" }),
@@ -23751,7 +23884,14 @@ function WelcomeWizard({ onComplete }) {
23751
23884
  ) }),
23752
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: [
23753
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: [
23754
- /* @__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
+ ),
23755
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" }),
23756
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." }),
23757
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: [
@@ -23762,9 +23902,11 @@ function WelcomeWizard({ onComplete }) {
23762
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: [
23763
23903
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-semibold text-purple-400 mb-2 text-base sm:text-lg", children: "Universal CLI" }),
23764
23904
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs sm:text-sm text-gray-400 leading-relaxed", children: [
23765
- "Run ",
23905
+ "Run",
23906
+ " ",
23766
23907
  /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "bg-canvas px-1 py-0.5 rounded text-purple-300", children: "gitelectron open" }),
23767
- " from any terminal to launch instantly."
23908
+ " ",
23909
+ "from any terminal to launch instantly."
23768
23910
  ] })
23769
23911
  ] })
23770
23912
  ] }),
@@ -23800,7 +23942,16 @@ function WelcomeWizard({ onComplete }) {
23800
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 }),
23801
23943
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs sm:text-sm text-gray-500 mb-4 px-2", children: [
23802
23944
  "Your browser should open automatically. If not, go to",
23803
- /* @__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
+ )
23804
23955
  ] }),
23805
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" }) })
23806
23957
  ] }),
@@ -23811,7 +23962,14 @@ function WelcomeWizard({ onComplete }) {
23811
23962
  authStatus === "error" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
23812
23963
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-400 font-bold mb-2", children: "Authentication Failed" }),
23813
23964
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 mb-4 px-4", children: authError }),
23814
- /* @__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
+ )
23815
23973
  ] })
23816
23974
  ] }),
23817
23975
  step === 3 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center flex-grow animate-fade-in py-4", children: [
@@ -23844,22 +24002,28 @@ function WelcomeWizard({ onComplete }) {
23844
24002
  }
23845
24003
  ) })
23846
24004
  ] }),
23847
- 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: [
23848
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative mb-6", children: [
23849
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: "text-6xl sm:text-7xl text-blue-500 relative z-10" }),
23850
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-blue-500 rounded-full blur-[20px] opacity-50 z-0" })
23851
- ] }),
23852
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-3xl sm:text-4xl font-bold mb-3", children: "You're All Set!" }),
23853
- /* @__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." }),
23854
- /* @__PURE__ */ jsxRuntimeExports.jsx(
23855
- "button",
23856
- {
23857
- onClick: finishSetup,
23858
- 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",
23859
- children: "Launch GitElectron"
23860
- }
23861
- )
23862
- ] })
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
+ )
23863
24027
  ] })
23864
24028
  ] })
23865
24029
  ] });
@@ -23870,7 +24034,9 @@ function CloneRepoWizard({ onClose, onSuccess }) {
23870
24034
  const [folderName, setFolderName] = reactExports.useState("");
23871
24035
  const [isLoading, setIsLoading] = reactExports.useState(false);
23872
24036
  const [error, setError] = reactExports.useState("");
23873
- const [cloneProgress, setCloneProgress] = reactExports.useState(null);
24037
+ const [cloneProgress, setCloneProgress] = reactExports.useState(
24038
+ null
24039
+ );
23874
24040
  const [showOptions, setShowOptions] = reactExports.useState(false);
23875
24041
  const [clonedPathState, setClonedPathState] = reactExports.useState("");
23876
24042
  reactExports.useEffect(() => {
@@ -23960,7 +24126,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
23960
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: [
23961
24127
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-6 border-b border-border/50 bg-canvas/30", children: [
23962
24128
  /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-2xl font-bold text-primary flex items-center gap-3", children: [
23963
- /* @__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
+ ),
23964
24147
  "Clone Repository"
23965
24148
  ] }),
23966
24149
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary mt-2 text-sm", children: "Download an existing Git repository to your computer" })
@@ -23975,7 +24158,15 @@ function CloneRepoWizard({ onClose, onSuccess }) {
23975
24158
  ),
23976
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." })
23977
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: [
23978
- /* @__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
+ ) }) }),
23979
24170
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23980
24171
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-primary", children: "Clone Successful!" }),
23981
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?" })
@@ -23988,8 +24179,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
23988
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",
23989
24180
  children: [
23990
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: [
23991
- /* @__PURE__ */ jsxRuntimeExports.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z" }),
23992
- /* @__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
+ )
23993
24200
  ] }) }),
23994
24201
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
23995
24202
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold text-primary", children: "Keep as View-Only" }),
@@ -24005,7 +24212,15 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24005
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",
24006
24213
  children: [
24007
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" }),
24008
- /* @__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
+ ) }) }),
24009
24224
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
24010
24225
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "font-semibold text-brand", children: "Create My Own Copy" }),
24011
24226
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs text-secondary mt-1", children: "Strip original data to create your own repo." })
@@ -24016,7 +24231,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24016
24231
  ] })
24017
24232
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
24018
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: [
24019
- /* @__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
+ ),
24020
24252
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "break-words font-mono text-[11px] leading-relaxed select-text", children: error })
24021
24253
  ] }),
24022
24254
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
@@ -24033,7 +24265,24 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24033
24265
  onChange: (e) => setRepoUrl(e.target.value)
24034
24266
  }
24035
24267
  ),
24036
- /* @__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
+ )
24037
24286
  ] })
24038
24287
  ] }),
24039
24288
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
@@ -24097,7 +24346,15 @@ function CloneRepoWizard({ onClose, onSuccess }) {
24097
24346
  disabled: !repoUrl || !destFolder,
24098
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",
24099
24348
  children: [
24100
- /* @__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
+ ) }),
24101
24358
  "Clone Repository"
24102
24359
  ]
24103
24360
  }
@@ -24175,13 +24432,7 @@ const AmongUsBackground = () => {
24175
24432
  window.removeEventListener("resize", resizeCanvas);
24176
24433
  };
24177
24434
  }, []);
24178
- return /* @__PURE__ */ jsxRuntimeExports.jsx(
24179
- "canvas",
24180
- {
24181
- ref: canvasRef,
24182
- className: "absolute inset-0 w-full h-full pointer-events-none z-0"
24183
- }
24184
- );
24435
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("canvas", { ref: canvasRef, className: "absolute inset-0 w-full h-full pointer-events-none z-0" });
24185
24436
  };
24186
24437
  const SpaceExplorerBackground = () => {
24187
24438
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-stars-container", children: [
@@ -24394,7 +24645,8 @@ const CollaborationRepoView = ({
24394
24645
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-2xl mb-2", children: "🔍" }),
24395
24646
  /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-semibold text-primary mb-1", children: "No matches found" }),
24396
24647
  /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-secondary mb-4", children: [
24397
- "No repository matches ",
24648
+ "No repository matches",
24649
+ " ",
24398
24650
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-semibold text-primary", children: [
24399
24651
  '"',
24400
24652
  collabSearch,
@@ -24442,10 +24694,17 @@ const CollaborationRepoView = ({
24442
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" })
24443
24695
  ] }),
24444
24696
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 mt-1 text-xs text-secondary min-w-0 flex-wrap", children: [
24445
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-mono text-secondary truncate max-w-[140px]", title: `@${repo.owner?.login}`, children: [
24446
- "@",
24447
- repo.owner?.login
24448
- ] }),
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
+ ),
24449
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: [
24450
24709
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "🌿" }),
24451
24710
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[90px]", children: repo.default_branch })
@@ -24539,13 +24798,30 @@ const CollaborationRepoView = ({
24539
24798
  },
24540
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",
24541
24800
  title: "Clear connection",
24542
- 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" }) })
24543
- }
24544
- ),
24545
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
24546
- "button",
24547
- {
24548
- type: "button",
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",
24549
24825
  onClick: (e) => {
24550
24826
  e.stopPropagation();
24551
24827
  onRepoCardClick(repo);
@@ -24581,7 +24857,10 @@ const AuthCodePrinter = ({ code }) => {
24581
24857
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "cutter-wrapper", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "cutter" }) })
24582
24858
  ] }) });
24583
24859
  };
24584
- const CommitReceiptPrinter = ({ commit, onClose }) => {
24860
+ const CommitReceiptPrinter = ({
24861
+ commit,
24862
+ onClose
24863
+ }) => {
24585
24864
  const [isPrinted, setIsPrinted] = reactExports.useState(false);
24586
24865
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `commit-printer-wrapper ${isPrinted ? "is-printed" : ""}`, children: [
24587
24866
  onClose && /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "printer-close-btn", onClick: onClose, title: "Close Printer", children: "✕" }),
@@ -25389,7 +25668,9 @@ function App() {
25389
25668
  setExpandedCommits((prev) => ({ ...prev, [hash]: !prev[hash] }));
25390
25669
  };
25391
25670
  const [theme, setTheme] = reactExports.useState(localStorage.getItem("gitelectron-theme") || "github-dark");
25392
- const [changesTab, setChangesTab] = reactExports.useState("changes");
25671
+ const [changesTab, setChangesTab] = reactExports.useState(
25672
+ "changes"
25673
+ );
25393
25674
  const [collabSearch, setCollabSearch] = reactExports.useState("");
25394
25675
  const [collabMappings, setCollabMappings] = reactExports.useState(() => {
25395
25676
  try {
@@ -25615,10 +25896,6 @@ function App() {
25615
25896
  });
25616
25897
  if (msg.includes("✅") || msg.includes("❌")) {
25617
25898
  refreshRepoState();
25618
- if (msg.includes("❌")) {
25619
- const errorExtract = msg.replace("❌ Auto-sync failed:", "").trim();
25620
- setPushFailureData({ reason: errorExtract, operation: "push" });
25621
- }
25622
25899
  }
25623
25900
  });
25624
25901
  window.api.onGitProgress((data) => {
@@ -25935,7 +26212,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
25935
26212
  if (autoSyncEnabled && updatedStatus.behind > 0) {
25936
26213
  if (deferredRemotes.length > 0) {
25937
26214
  try {
25938
- showToast(`Auto-Push: Downloading ${updatedStatus.behind} remote change(s)...`, "info");
26215
+ showToast(
26216
+ `Auto-Push: Downloading ${updatedStatus.behind} remote change(s)...`,
26217
+ "info"
26218
+ );
25939
26219
  await window.api.pullFromRemote(deferredRemotes[0].name, b.current);
25940
26220
  showToast("Auto-Push: Successfully synchronized remote changes!", "success");
25941
26221
  const finalStatus = await window.api.getStatus();
@@ -26137,14 +26417,20 @@ Are you SURE you want to link "${repoName}" to this folder?`
26137
26417
  if (remotes2.length > 0) {
26138
26418
  const targetBranch = overrideBranch || branches.current || "main";
26139
26419
  if (operation === "push") {
26140
- if (pushAllBranches && !overrideBranch) await window.api.pushAllBranches(remotes2[0].name);
26420
+ await window.api.executeRawGit(["add", "."]);
26421
+ await window.api.commitChanges(commitMessage || "Auto-Healed Push");
26422
+ if (pushAllBranches && !overrideBranch)
26423
+ await window.api.pushAllBranches(remotes2[0].name);
26141
26424
  else await window.api.pushToRemote(remotes2[0].name, targetBranch);
26142
26425
  setPushSuccessData({
26143
26426
  repository: targetRepoPath?.split("\\").pop() || "",
26144
26427
  branch: targetBranch,
26145
26428
  timestamp: (/* @__PURE__ */ new Date()).toLocaleTimeString(),
26146
- remote: remotes2[0].name
26429
+ remote: remotes2[0].name,
26430
+ files: 0,
26431
+ commitMessage: commitMessage || "Auto-Healed Push"
26147
26432
  });
26433
+ setCommitMessage("");
26148
26434
  } else {
26149
26435
  await window.api.pullFromRemote(remotes2[0].name, targetBranch);
26150
26436
  }
@@ -26157,7 +26443,13 @@ Are you SURE you want to link "${repoName}" to this folder?`
26157
26443
  break;
26158
26444
  }
26159
26445
  const currentStatus = await window.api.getStatus();
26160
- 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
+ );
26161
26453
  setHealerMessage(result.explanation || `Applying fix...`);
26162
26454
  if (result.commandsToRun && result.commandsToRun.length > 0) {
26163
26455
  for (const cmd of result.commandsToRun) {
@@ -26170,7 +26462,8 @@ Are you SURE you want to link "${repoName}" to this folder?`
26170
26462
  if (remotes.length > 0) {
26171
26463
  if (operation === "push") {
26172
26464
  const targetBranch = overrideBranch || branches.current;
26173
- if (pushAllBranches && !overrideBranch) await window.api.pushAllBranches(remotes[0].name);
26465
+ if (pushAllBranches && !overrideBranch)
26466
+ await window.api.pushAllBranches(remotes[0].name);
26174
26467
  else await window.api.pushToRemote(remotes[0].name, targetBranch);
26175
26468
  setPushSuccessData({
26176
26469
  repository: targetRepoPath?.split("\\").pop() || "",
@@ -26226,7 +26519,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
26226
26519
  files: status.staged.length,
26227
26520
  commitMessage: commitMessage + " (Offline Queue)"
26228
26521
  });
26229
- 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
+ );
26230
26526
  setCommitMessage("");
26231
26527
  setShowConfirmPush(false);
26232
26528
  await refreshRepoState();
@@ -26575,152 +26871,332 @@ Are you SURE you want to link "${repoName}" to this folder?`
26575
26871
  ] }),
26576
26872
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-[-30%] left-[-20%] w-[60%] h-[60%] bg-accent/5 blur-[150px] rounded-full pointer-events-none transition-colors duration-300" }),
26577
26873
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute bottom-[-30%] right-[-20%] w-[60%] h-[60%] bg-brand/5 blur-[150px] rounded-full pointer-events-none transition-colors duration-300" }),
26578
- showSettings && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/50 backdrop-blur-sm flex items-center justify-center z-50 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-[400px] mx-4 animate-float", children: [
26579
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-xl font-bold mb-6 text-primary border-b border-border pb-4", children: t("settings") }),
26580
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4 mb-8", children: [
26581
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26582
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1 text-sm font-semibold", children: t("language") }),
26583
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26584
- CustomDropdown,
26585
- {
26586
- options: LANGUAGES.map((l) => ({ value: l.id, label: l.name })),
26587
- value: lang,
26588
- onChange: (val) => setLang(val),
26589
- buttonClassName: "w-full bg-canvas border border-border rounded-md p-2 text-primary focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent transition-all cursor-pointer"
26590
- }
26591
- )
26592
- ] }),
26593
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26594
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1 text-sm font-semibold", children: t("theme") }),
26595
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26596
- CustomDropdown,
26597
- {
26598
- options: THEMES.map((t2) => ({ value: t2.id, label: t2.name })),
26599
- value: theme,
26600
- onChange: (val) => handleThemeChange(val),
26601
- buttonClassName: "w-full bg-canvas border border-border rounded-md p-2 text-primary focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent transition-all cursor-pointer"
26602
- }
26603
- )
26604
- ] }),
26605
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26606
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1 text-sm font-semibold", children: t("gitUsername") }),
26607
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26608
- "input",
26609
- {
26610
- type: "text",
26611
- value: gitConfig.name,
26612
- readOnly: true,
26613
- className: "w-full bg-canvas border border-border rounded-md p-2 text-primary opacity-60 cursor-not-allowed focus:outline-none"
26614
- }
26615
- )
26616
- ] }),
26617
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26618
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1 text-sm font-semibold", children: t("gitEmail") }),
26619
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26620
- "input",
26621
- {
26622
- type: "email",
26623
- value: gitConfig.email,
26624
- readOnly: true,
26625
- className: "w-full bg-canvas border border-border rounded-md p-2 text-primary opacity-60 cursor-not-allowed focus:outline-none"
26626
- }
26627
- ),
26628
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[10px] text-brand mt-1", children: t("syncedFromGithub") })
26629
- ] }),
26630
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border/50 pt-3 mt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
26631
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26632
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-semibold text-secondary", children: t("dailyMobileVerification") }),
26633
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60 mt-0.5", children: t("dailyMobileDesc") })
26634
- ] }),
26635
- /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "switch", children: [
26636
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26637
- "input",
26638
- {
26639
- className: "toggle",
26640
- type: "checkbox",
26641
- checked: dailyAuthEnabled,
26642
- onChange: (e) => {
26643
- const next = e.target.checked;
26644
- setDailyAuthEnabled(next);
26645
- localStorage.setItem("gitelectron-daily-auth", next ? "true" : "false");
26646
- }
26647
- }
26648
- ),
26649
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "slider" }),
26650
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "card-side" })
26651
- ] })
26652
- ] }) }),
26653
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border/50 pt-3 mt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
26654
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26655
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-semibold text-secondary", children: t("enableSpaceScene") }),
26656
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60 mt-0.5", children: t("spaceSceneDesc") })
26657
- ] }),
26658
- /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "switch", children: [
26659
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26660
- "input",
26874
+ showSettings && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 transition-opacity p-4 md:p-8", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface/95 backdrop-blur-xl rounded-2xl shadow-2xl border border-border w-full max-w-[900px] animate-float max-h-[95vh] flex flex-col overflow-hidden", children: [
26875
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
26876
+ "div",
26877
+ {
26878
+ className: "px-8 py-6 border-b border-border shrink-0 flex items-center gap-3",
26879
+ style: { backgroundColor: "var(--color-surface)" },
26880
+ children: [
26881
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
26882
+ "svg",
26661
26883
  {
26662
- className: "toggle",
26663
- type: "checkbox",
26664
- checked: enableLockscreenSpace,
26665
- onChange: (e) => {
26666
- const next = e.target.checked;
26667
- setEnableLockscreenSpace(next);
26668
- localStorage.setItem("gitelectron-enable-space", next ? "true" : "false");
26669
- }
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
+ ]
26670
26908
  }
26671
26909
  ),
26672
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "slider" }),
26673
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "card-side" })
26674
- ] })
26675
- ] }) }),
26676
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border/50 pt-3 mt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
26677
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26678
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-semibold text-secondary", children: t("changeLockscreenPin") }),
26679
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60 mt-0.5", children: t("changePinDesc") })
26910
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl font-black text-primary m-0", children: t("settings") })
26911
+ ]
26912
+ }
26913
+ ),
26914
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto custom-scrollbar p-6 md:p-8 bg-black/10", children: [
26915
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-6 mb-4", children: [
26916
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
26917
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-canvas/40 p-5 rounded-xl border border-border/50", children: [
26918
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-sm font-bold text-primary mb-4 flex items-center gap-2 uppercase tracking-wider", children: [
26919
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "🎨" }),
26920
+ " Preferences"
26921
+ ] }),
26922
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
26923
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26924
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1.5 text-xs font-semibold uppercase", children: t("language") }),
26925
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26926
+ CustomDropdown,
26927
+ {
26928
+ options: LANGUAGES.map((l) => ({ value: l.id, label: l.name })),
26929
+ value: lang,
26930
+ onChange: (val) => setLang(val),
26931
+ buttonClassName: "w-full bg-surface border border-border rounded-lg p-2.5 text-primary focus:outline-none focus:border-accent transition-all cursor-pointer font-medium text-sm"
26932
+ }
26933
+ )
26934
+ ] }),
26935
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26936
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1.5 text-xs font-semibold uppercase", children: t("theme") }),
26937
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26938
+ CustomDropdown,
26939
+ {
26940
+ options: THEMES.map((t2) => ({ value: t2.id, label: t2.name })),
26941
+ value: theme,
26942
+ onChange: (val) => handleThemeChange(val),
26943
+ buttonClassName: "w-full bg-surface border border-border rounded-lg p-2.5 text-primary focus:outline-none focus:border-accent transition-all cursor-pointer font-medium text-sm"
26944
+ }
26945
+ )
26946
+ ] })
26947
+ ] })
26948
+ ] }),
26949
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-canvas/40 p-5 rounded-xl border border-border/50", children: [
26950
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-sm font-bold text-primary mb-4 flex items-center gap-2 uppercase tracking-wider", children: [
26951
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "👤" }),
26952
+ " Git Profile"
26953
+ ] }),
26954
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
26955
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26956
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1.5 text-xs font-semibold uppercase", children: t("gitUsername") }),
26957
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26958
+ "input",
26959
+ {
26960
+ type: "text",
26961
+ value: gitConfig.name,
26962
+ readOnly: true,
26963
+ className: "w-full bg-surface border border-border rounded-lg p-2.5 text-secondary cursor-not-allowed focus:outline-none font-medium text-sm"
26964
+ }
26965
+ )
26966
+ ] }),
26967
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26968
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary mb-1.5 text-xs font-semibold uppercase", children: t("gitEmail") }),
26969
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26970
+ "input",
26971
+ {
26972
+ type: "email",
26973
+ value: gitConfig.email,
26974
+ readOnly: true,
26975
+ className: "w-full bg-surface border border-border rounded-lg p-2.5 text-secondary cursor-not-allowed focus:outline-none font-medium text-sm"
26976
+ }
26977
+ ),
26978
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[10px] text-brand mt-1.5 font-medium", children: t("syncedFromGithub") })
26979
+ ] })
26980
+ ] })
26981
+ ] })
26680
26982
  ] }),
26681
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
26682
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26683
- "input",
26684
- {
26685
- type: "password",
26686
- maxLength: 3,
26687
- value: newPin,
26688
- onChange: (e) => setNewPin(e.target.value),
26689
- placeholder: "***",
26690
- className: "bg-canvas border border-border rounded px-2 py-1 text-sm text-primary w-24 outline-none focus:border-accent"
26691
- }
26692
- ),
26693
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26694
- "button",
26695
- {
26696
- type: "button",
26697
- onClick: () => {
26698
- if (newPin.length === 3) {
26699
- localStorage.setItem("gitelectron-pin", newPin);
26700
- setStoredPin(newPin);
26701
- setPinChangeSuccess(true);
26702
- setTimeout(() => setPinChangeSuccess(false), 2e3);
26703
- setNewPin("");
26983
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
26984
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-canvas/40 p-5 rounded-xl border border-border/50", children: [
26985
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-sm font-bold text-primary mb-4 flex items-center gap-2 uppercase tracking-wider", children: [
26986
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "🛡️" }),
26987
+ " Security & Features"
26988
+ ] }),
26989
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-5", children: [
26990
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
26991
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "pr-4", children: [
26992
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-semibold text-primary", children: t("dailyMobileVerification") }),
26993
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary mt-1", children: t("dailyMobileDesc") })
26994
+ ] }),
26995
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "switch shrink-0", children: [
26996
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
26997
+ "input",
26998
+ {
26999
+ className: "toggle",
27000
+ type: "checkbox",
27001
+ checked: dailyAuthEnabled,
27002
+ onChange: (e) => {
27003
+ const next = e.target.checked;
27004
+ setDailyAuthEnabled(next);
27005
+ localStorage.setItem(
27006
+ "gitelectron-daily-auth",
27007
+ next ? "true" : "false"
27008
+ );
27009
+ }
27010
+ }
27011
+ ),
27012
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "slider" }),
27013
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "card-side" })
27014
+ ] })
27015
+ ] }),
27016
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-t border-border/50 pt-5 flex items-center justify-between", children: [
27017
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "pr-4", children: [
27018
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-semibold text-primary", children: t("enableSpaceScene") }),
27019
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary mt-1", children: t("spaceSceneDesc") })
27020
+ ] }),
27021
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("label", { className: "switch shrink-0", children: [
27022
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27023
+ "input",
27024
+ {
27025
+ className: "toggle",
27026
+ type: "checkbox",
27027
+ checked: enableLockscreenSpace,
27028
+ onChange: (e) => {
27029
+ const next = e.target.checked;
27030
+ setEnableLockscreenSpace(next);
27031
+ localStorage.setItem(
27032
+ "gitelectron-enable-space",
27033
+ next ? "true" : "false"
27034
+ );
27035
+ }
27036
+ }
27037
+ ),
27038
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "slider" }),
27039
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "card-side" })
27040
+ ] })
27041
+ ] }),
27042
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border/50 pt-5", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-3", children: [
27043
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
27044
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-semibold text-primary", children: t("changeLockscreenPin") }),
27045
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary mt-1", children: t("changePinDesc") })
27046
+ ] }),
27047
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
27048
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27049
+ "input",
27050
+ {
27051
+ type: "password",
27052
+ maxLength: 3,
27053
+ value: newPin,
27054
+ onChange: (e) => setNewPin(e.target.value),
27055
+ placeholder: "***",
27056
+ className: "bg-surface border border-border rounded-lg px-3 py-2 text-sm text-primary w-24 outline-none focus:border-accent text-center tracking-widest font-black"
27057
+ }
27058
+ ),
27059
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27060
+ "button",
27061
+ {
27062
+ type: "button",
27063
+ onClick: () => {
27064
+ if (newPin.length === 3) {
27065
+ localStorage.setItem("gitelectron-pin", newPin);
27066
+ setStoredPin(newPin);
27067
+ setPinChangeSuccess(true);
27068
+ setTimeout(() => setPinChangeSuccess(false), 2e3);
27069
+ setNewPin("");
27070
+ }
27071
+ },
27072
+ disabled: newPin.length !== 3,
27073
+ className: "px-4 py-2 bg-accent text-canvas text-xs font-black rounded-lg hover:bg-accent/90 transition-colors disabled:opacity-50 uppercase",
27074
+ children: pinChangeSuccess ? t("saved") : t("savePin")
27075
+ }
27076
+ )
27077
+ ] })
27078
+ ] }) })
27079
+ ] })
27080
+ ] }),
27081
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-canvas/40 p-5 rounded-xl border border-border/50", children: [
27082
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
27083
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-sm font-bold text-primary flex items-center gap-2 uppercase tracking-wider", children: [
27084
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "👥" }),
27085
+ " ",
27086
+ t("githubAccounts")
27087
+ ] }),
27088
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
27089
+ "button",
27090
+ {
27091
+ type: "button",
27092
+ onClick: () => {
27093
+ setShowSettings(false);
27094
+ handleStartAuth();
27095
+ },
27096
+ className: "px-3 py-1.5 bg-brand/10 hover:bg-brand/20 text-brand text-xs font-bold rounded-lg border border-brand/20 transition-colors",
27097
+ children: [
27098
+ "+ ",
27099
+ t("addAccount")
27100
+ ]
26704
27101
  }
27102
+ )
27103
+ ] }),
27104
+ accounts.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center p-6 border border-dashed border-border/50 rounded-xl bg-surface/30", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-secondary", children: t("noAccountsLinked") }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-2 max-h-40 overflow-y-auto pr-1 custom-scrollbar mb-4", children: accounts.map((acc) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
27105
+ "div",
27106
+ {
27107
+ className: "flex items-center justify-between p-3 border border-border/80 rounded-xl bg-surface hover:border-brand/50 transition-colors",
27108
+ children: [
27109
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
27110
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27111
+ "img",
27112
+ {
27113
+ src: acc.avatar_url || `https://github.com/${acc.username}.png`,
27114
+ alt: acc.username,
27115
+ className: "w-8 h-8 rounded-full object-cover border-2 border-border"
27116
+ }
27117
+ ),
27118
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm font-bold text-primary", children: [
27119
+ "@",
27120
+ acc.username
27121
+ ] })
27122
+ ] }),
27123
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
27124
+ activeAccountId === acc.id && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] uppercase font-black text-success bg-success/10 px-2 py-1 rounded-md border border-success/20", children: "Active" }),
27125
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27126
+ "button",
27127
+ {
27128
+ type: "button",
27129
+ onClick: () => window.api.openExternal(`https://github.com/${acc.username}`),
27130
+ className: "px-2.5 py-1 border border-border hover:border-brand hover:text-brand text-secondary text-[10px] uppercase font-bold rounded-md transition-all",
27131
+ children: "Profile"
27132
+ }
27133
+ )
27134
+ ] })
27135
+ ]
26705
27136
  },
26706
- disabled: newPin.length !== 3,
26707
- className: "px-3 py-1 bg-accent/10 text-accent text-xs font-semibold rounded hover:bg-accent/20 transition-colors disabled:opacity-50",
26708
- children: pinChangeSuccess ? t("saved") : t("savePin")
26709
- }
26710
- )
27137
+ acc.id
27138
+ )) }),
27139
+ authStatus.status === "Verified" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border/50 pt-4 mt-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
27140
+ "button",
27141
+ {
27142
+ type: "button",
27143
+ onClick: async () => {
27144
+ try {
27145
+ await window.api.logoutGithub();
27146
+ setAuthStatus({ status: "Not Authenticated", username: null });
27147
+ setAccounts([]);
27148
+ setActiveAccountId(null);
27149
+ setPushPermission(false);
27150
+ setShowSettings(false);
27151
+ showToast("Successfully logged out", "success");
27152
+ } catch (e) {
27153
+ console.error("Logout failed", e);
27154
+ showToast("Logout failed", "error");
27155
+ }
27156
+ },
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",
27158
+ children: [
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
+ ),
27177
+ t("signOut")
27178
+ ]
27179
+ }
27180
+ ) })
27181
+ ] })
26711
27182
  ] })
26712
- ] }) }),
26713
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border/50 pt-3 mt-1", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2", children: [
27183
+ ] }),
27184
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-danger/10 p-5 rounded-xl border border-danger/30 mb-8 mt-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4", children: [
26714
27185
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26715
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-bold text-danger", children: "Emergency Override (Master Push)" }),
26716
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60 mt-0.5 leading-tight", children: "Bypass all protections, ignore unpushed changes or missing files, and FORCE push all current files. Warning: This overwrites remote history." })
27186
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "text-sm font-black text-danger flex items-center gap-2 uppercase tracking-wider mb-1", children: [
27187
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "⚠️" }),
27188
+ " Emergency Override (Master Push)"
27189
+ ] }),
27190
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-medium text-danger/80 leading-relaxed max-w-2xl", children: "Bypass all protections, ignore unpushed changes or missing files, and FORCE push all current files. Warning: This completely overwrites remote history." })
26717
27191
  ] }),
26718
27192
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
26719
27193
  "button",
26720
27194
  {
26721
27195
  type: "button",
26722
27196
  onClick: async () => {
26723
- 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
+ );
26724
27200
  if (!confirmAction) return;
26725
27201
  try {
26726
27202
  const remotes = await window.api.getRemotes();
@@ -26734,122 +27210,46 @@ Are you SURE you want to link "${repoName}" to this folder?`
26734
27210
  refreshRepoState();
26735
27211
  setShowSettings(false);
26736
27212
  } catch (err) {
26737
- showToast("Master Push failed: " + (err.message || "Unknown error"), "error");
27213
+ showToast(
27214
+ "Master Push failed: " + (err.message || "Unknown error"),
27215
+ "error"
27216
+ );
26738
27217
  }
26739
27218
  },
26740
- className: "w-full mt-1 px-3 py-2 bg-danger/10 text-danger border border-danger/30 text-xs font-bold rounded-lg hover:bg-danger/20 hover:border-danger/50 transition-all text-center flex items-center justify-center gap-2",
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",
26741
27220
  children: [
26742
27221
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "🚀" }),
26743
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Execute Master Push (Force)" })
27222
+ " FORCE PUSH"
26744
27223
  ]
26745
27224
  }
26746
27225
  )
26747
- ] }) }),
26748
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "border-t border-border/50 pt-4 mt-2", children: [
26749
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-3", children: [
26750
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26751
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-semibold text-secondary", children: t("githubAccounts") }),
26752
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60 mt-0.5", children: t("manageAccounts") })
26753
- ] }),
27226
+ ] }) })
27227
+ ] }),
27228
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
27229
+ "div",
27230
+ {
27231
+ className: "px-8 py-5 border-t border-border shrink-0 flex justify-end gap-3",
27232
+ style: { backgroundColor: "var(--color-surface)" },
27233
+ children: [
26754
27234
  /* @__PURE__ */ jsxRuntimeExports.jsx(
26755
27235
  "button",
26756
27236
  {
26757
- type: "button",
26758
- onClick: () => {
26759
- setShowSettings(false);
26760
- handleStartAuth();
26761
- },
26762
- className: "px-3 py-1.5 bg-brand/10 hover:bg-brand/20 text-brand text-xs font-semibold rounded-md border border-brand/20 transition-colors",
26763
- children: t("addAccount")
27237
+ onClick: () => setShowSettings(false),
27238
+ className: "px-6 py-2.5 bg-surface border-2 border-border hover:bg-surface-hover rounded-xl transition-all font-bold text-sm",
27239
+ children: t("cancel")
27240
+ }
27241
+ ),
27242
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27243
+ "button",
27244
+ {
27245
+ onClick: saveSettings,
27246
+ className: "px-8 py-2.5 bg-brand hover:bg-brand-hover text-white rounded-xl transition-all font-black text-sm shadow-lg shadow-brand/20 border-b-4 border-black/20 active:border-b-0 active:translate-y-1",
27247
+ children: t("save")
26764
27248
  }
26765
27249
  )
26766
- ] }),
26767
- accounts.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-center p-4 border border-dashed border-border/50 rounded-lg bg-surface/50", children: /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60", children: t("noAccountsLinked") }) }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-2 max-h-32 overflow-y-auto pr-1 custom-scrollbar", children: accounts.map((acc) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
26768
- "div",
26769
- {
26770
- className: "flex items-center justify-between p-2 border border-border rounded-lg bg-canvas",
26771
- children: [
26772
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
26773
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26774
- "img",
26775
- {
26776
- src: acc.avatar_url || `https://github.com/${acc.username}.png`,
26777
- alt: acc.username,
26778
- className: "w-6 h-6 rounded-full object-cover"
26779
- }
26780
- ),
26781
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-sm text-primary", children: [
26782
- "@",
26783
- acc.username
26784
- ] })
26785
- ] }),
26786
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
26787
- activeAccountId === acc.id && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] uppercase font-bold text-green-500 bg-green-500/10 px-2 py-0.5 rounded-full", children: "Active" }),
26788
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26789
- "button",
26790
- {
26791
- type: "button",
26792
- onClick: () => window.api.openExternal(`https://github.com/${acc.username}`),
26793
- className: "px-2 py-0.5 border border-border hover:border-brand hover:text-brand text-secondary text-[10px] uppercase font-bold rounded transition-all",
26794
- children: "Profile"
26795
- }
26796
- )
26797
- ] })
26798
- ]
26799
- },
26800
- acc.id
26801
- )) })
26802
- ] }),
26803
- authStatus.status === "Verified" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-danger/20 pt-4 mt-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [
26804
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26805
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm font-semibold text-danger", children: t("logout") }),
26806
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary/60 mt-0.5", children: t("logoutDesc") })
26807
- ] }),
26808
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
26809
- "button",
26810
- {
26811
- type: "button",
26812
- onClick: async () => {
26813
- try {
26814
- await window.api.logoutGithub();
26815
- setAuthStatus({ status: "Not Authenticated", username: null });
26816
- setAccounts([]);
26817
- setActiveAccountId(null);
26818
- setPushPermission(false);
26819
- setShowSettings(false);
26820
- showToast("Successfully logged out", "success");
26821
- } catch (e) {
26822
- console.error("Logout failed", e);
26823
- showToast("Logout failed", "error");
26824
- }
26825
- },
26826
- className: "px-4 py-1.5 bg-danger/10 hover:bg-danger/20 text-danger text-xs font-bold rounded-md border border-danger/30 hover:border-danger/50 transition-all flex items-center gap-2",
26827
- children: [
26828
- /* @__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: "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" }) }),
26829
- t("signOut")
26830
- ]
26831
- }
26832
- )
26833
- ] }) })
26834
- ] }),
26835
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-end gap-3", children: [
26836
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26837
- "button",
26838
- {
26839
- onClick: () => setShowSettings(false),
26840
- className: "px-4 py-2 bg-surface-hover border border-border rounded-md transition-colors font-medium text-sm",
26841
- children: t("cancel")
26842
- }
26843
- ),
26844
- /* @__PURE__ */ jsxRuntimeExports.jsx(
26845
- "button",
26846
- {
26847
- onClick: saveSettings,
26848
- className: "px-4 py-2 bg-brand hover:bg-brand-hover border border-white/10 rounded-md transition-all font-medium text-white text-sm shadow-sm",
26849
- children: t("save")
26850
- }
26851
- )
26852
- ] })
27250
+ ]
27251
+ }
27252
+ )
26853
27253
  ] }) }),
26854
27254
  showDiff && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 p-6 transition-opacity", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-canvas/95 backdrop-blur-xl rounded-xl shadow-2xl border border-border w-full max-w-5xl max-h-[95vh] mx-4 flex flex-col overflow-hidden animate-float", children: [
26855
27255
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center p-4 border-b border-border bg-surface/50", children: [
@@ -27019,7 +27419,13 @@ Are you SURE you want to link "${repoName}" to this folder?`
27019
27419
  }
27020
27420
  )
27021
27421
  ] }),
27022
- 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
+ ) })
27023
27429
  ]
27024
27430
  },
27025
27431
  commit.hash
@@ -27151,25 +27557,64 @@ Are you SURE you want to link "${repoName}" to this folder?`
27151
27557
  onProceed: handleDropProceed
27152
27558
  }
27153
27559
  ),
27154
- 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
+ ),
27155
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: [
27156
27568
  /* @__PURE__ */ jsxRuntimeExports.jsx(
27157
27569
  "button",
27158
27570
  {
27159
27571
  onClick: () => setShowCollabActionModal(null),
27160
27572
  className: "absolute top-4 right-4 text-secondary hover:text-primary transition-colors p-1",
27161
- 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
+ ) })
27162
27582
  }
27163
27583
  ),
27164
27584
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 pr-8 min-w-0", children: [
27165
- /* @__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
+ ) }) }),
27166
27594
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
27167
27595
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-base font-bold text-primary tracking-tight truncate", children: "Collaboration Repository" }),
27168
27596
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary font-mono truncate max-w-full", children: showCollabActionModal.fullName || showCollabActionModal.name })
27169
27597
  ] })
27170
27598
  ] }),
27171
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: [
27172
- /* @__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
+ ),
27173
27618
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
27174
27619
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-semibold text-danger", children: "Linked local folder was not found or was deleted:" }),
27175
27620
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-mono text-[10px] break-all opacity-90 mt-0.5", children: showCollabActionModal.missingPreviousPath }),
@@ -27209,7 +27654,15 @@ Are you SURE you want to link "${repoName}" to this folder?`
27209
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)]" }),
27210
27655
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-white font-medium tracking-wide text-lg", children: "Cloning Repository..." })
27211
27656
  ] }),
27212
- 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
+ ),
27213
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: [
27214
27667
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center mb-6 border-b border-border pb-4", children: [
27215
27668
  /* @__PURE__ */ jsxRuntimeExports.jsxs("h2", { className: "text-xl font-bold text-primary flex items-center gap-2", children: [
@@ -27253,7 +27706,13 @@ Are you SURE you want to link "${repoName}" to this folder?`
27253
27706
  onReplace: handleConflictReplace
27254
27707
  }
27255
27708
  ),
27256
- 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
+ ),
27257
27716
  showCloneWizard && /* @__PURE__ */ jsxRuntimeExports.jsx(
27258
27717
  CloneRepoWizard,
27259
27718
  {
@@ -27408,7 +27867,12 @@ Are you SURE you want to link "${repoName}" to this folder?`
27408
27867
  onClick: () => {
27409
27868
  const data = pushFailureData;
27410
27869
  setPushFailureData(null);
27411
- 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
+ );
27412
27876
  },
27413
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",
27414
27878
  children: "✨ Fix with AI"
@@ -27523,7 +27987,15 @@ Are you SURE you want to link "${repoName}" to this folder?`
27523
27987
  fill: "none",
27524
27988
  stroke: "currentColor",
27525
27989
  viewBox: "0 0 24 24",
27526
- 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
+ )
27527
27999
  }
27528
28000
  ),
27529
28001
  "Clone Repository"
@@ -27550,7 +28022,24 @@ Are you SURE you want to link "${repoName}" to this folder?`
27550
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"}`,
27551
28023
  title: "Download and update all new files pushed by team members on GitHub to your local folder",
27552
28024
  children: [
27553
- /* @__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
+ ),
27554
28043
  isPulling ? "Pulling..." : (status?.behind ?? 0) > 0 ? `Pull (${status.behind})` : "Pull"
27555
28044
  ]
27556
28045
  }
@@ -27606,7 +28095,24 @@ Are you SURE you want to link "${repoName}" to this folder?`
27606
28095
  },
27607
28096
  className: "p-1 rounded-md text-secondary hover:text-danger hover:bg-danger/10 transition-colors",
27608
28097
  title: "Clear saved link",
27609
- 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
+ )
27610
28116
  }
27611
28117
  )
27612
28118
  ] })
@@ -27979,7 +28485,15 @@ Are you SURE you want to link "${repoName}" to this folder?`
27979
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",
27980
28486
  title: "Pending Invitations",
27981
28487
  children: [
27982
- /* @__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
+ ) }),
27983
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" })
27984
28498
  ]
27985
28499
  }
@@ -28026,7 +28540,12 @@ Are you SURE you want to link "${repoName}" to this folder?`
28026
28540
  ...branches?.all && branches.all.length > 0 ? branches.all.map((b) => ({ value: b, label: b })) : [{ value: "main", label: "main (new)" }]
28027
28541
  ],
28028
28542
  value: status?.current || "",
28029
- 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
+ ),
28030
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"
28031
28550
  }
28032
28551
  ) }),
@@ -28157,30 +28676,55 @@ Are you SURE you want to link "${repoName}" to this folder?`
28157
28676
  title: "Download and update all new files and changes pushed by your team on GitHub to your computer",
28158
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`,
28159
28678
  children: isPulling ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28160
- /* @__PURE__ */ jsxRuntimeExports.jsxs("svg", { className: "w-3.5 h-3.5 animate-spin text-accent", fill: "none", viewBox: "0 0 24 24", children: [
28161
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28162
- "circle",
28163
- {
28164
- className: "opacity-25",
28165
- cx: "12",
28166
- cy: "12",
28167
- r: "10",
28168
- stroke: "currentColor",
28169
- strokeWidth: "4"
28170
- }
28171
- ),
28172
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28173
- "path",
28174
- {
28175
- className: "opacity-75",
28176
- fill: "currentColor",
28177
- 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"
28178
- }
28179
- )
28180
- ] }),
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
+ ),
28181
28708
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Pulling..." })
28182
28709
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28183
- /* @__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
+ ),
28184
28728
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: (status?.behind ?? 0) > 0 ? `Pull (${status.behind})` : "Pull" })
28185
28729
  ] })
28186
28730
  }
@@ -28229,289 +28773,374 @@ Are you SURE you want to link "${repoName}" to this folder?`
28229
28773
  }
28230
28774
  )
28231
28775
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28232
- /* @__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: [
28233
- /* @__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: [
28234
- /* @__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: [
28235
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
28236
- "button",
28237
- {
28238
- onClick: () => setChangesTab("changes"),
28239
- 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"}`,
28240
- children: [
28241
- "Changes",
28242
- 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 })
28243
- ]
28244
- }
28245
- ),
28246
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
28247
- "button",
28248
- {
28249
- onClick: () => setChangesTab("deleted"),
28250
- 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"}`,
28251
- children: [
28252
- "Deleted",
28253
- 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 })
28254
- ]
28255
- }
28256
- ),
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: [
28257
28782
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28258
- "button",
28783
+ "div",
28259
28784
  {
28260
- onClick: () => {
28261
- setChangesTab("collaboration-repo");
28262
- window.api.getCollaboratedRepos().then((repos) => setCollaboratedRepos(repos || [])).catch(() => {
28263
- });
28264
- },
28265
- 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",
28266
28787
  children: [
28267
- "Collaboration Repo",
28268
- 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 })
28269
- ]
28270
- }
28271
- ),
28272
- changesTab === "changes" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ml-auto flex items-center gap-2 mb-1", children: [
28273
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
28274
- "button",
28275
- {
28276
- onClick: handleUploadFiles,
28277
- disabled: !repoPath || isUploading,
28278
- 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",
28279
- title: "Upload files directly into this repository",
28280
- children: [
28281
- /* @__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" }) }),
28282
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isUploading ? "Uploading..." : "Upload Files" })
28283
- ]
28284
- }
28285
- ),
28286
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28287
- "button",
28288
- {
28289
- onClick: handleStageAll,
28290
- 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",
28291
- children: "Stage All"
28292
- }
28293
- )
28294
- ] })
28295
- ] }),
28296
- status?.isMassive ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 flex flex-col items-center justify-center p-8 bg-canvas", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28297
- MassivePushLoader,
28298
- {
28299
- percentage: massivePushData?.percentage || 0,
28300
- eta: gitProgress > 0 && gitProgress < 100 ? `Uploading Chunk: ${Math.round(gitProgress)}%` : massivePushData?.eta || "calculating..."
28301
- }
28302
- ) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto min-h-0 p-4 custom-scrollbar", children: [
28303
- changesTab === "changes" && /* @__PURE__ */ jsxRuntimeExports.jsxs("ul", { className: "space-y-1", children: [
28304
- status.conflicted.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28305
- "li",
28306
- {
28307
- 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"}`,
28308
- 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: [
28309
28789
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28310
- "span",
28790
+ "button",
28311
28791
  {
28312
- onClick: () => viewDiff(f, false),
28313
- 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"}`,
28314
28794
  children: [
28315
- /* @__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" : "!" }),
28316
- /* @__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 })
28317
28797
  ]
28318
28798
  }
28319
28799
  ),
28320
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28321
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28322
- "button",
28323
- {
28324
- onClick: () => openEditor(f),
28325
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28326
- children: "Edit"
28327
- }
28328
- ),
28329
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28330
- "button",
28331
- {
28332
- onClick: () => handleStageSingle(f),
28333
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28334
- children: "+"
28335
- }
28336
- )
28337
- ] })
28338
- ]
28339
- },
28340
- `c-${f}`
28341
- )),
28342
- status.not_added.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28343
- "li",
28344
- {
28345
- 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"}`,
28346
- children: [
28347
28800
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28348
- "span",
28801
+ "button",
28349
28802
  {
28350
- onClick: () => viewDiff(f, false),
28351
- 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"}`,
28352
28805
  children: [
28353
- /* @__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" }),
28354
- /* @__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 })
28355
28808
  ]
28356
28809
  }
28357
28810
  ),
28358
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28359
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28360
- "button",
28361
- {
28362
- onClick: () => openEditor(f),
28363
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28364
- children: "Edit"
28365
- }
28366
- ),
28367
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28368
- "button",
28369
- {
28370
- onClick: () => handleStageSingle(f),
28371
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28372
- children: "+"
28373
- }
28374
- )
28375
- ] })
28376
- ]
28377
- },
28378
- `u-${f}`
28379
- )),
28380
- status.modified.filter((f) => !status.conflicted.includes(f)).map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28381
- "li",
28382
- {
28383
- 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"}`,
28384
- children: [
28385
28811
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28386
- "span",
28812
+ "button",
28387
28813
  {
28388
- onClick: () => viewDiff(f, false),
28389
- 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"}`,
28390
28820
  children: [
28391
- /* @__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" }),
28392
- /* @__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 })
28393
28823
  ]
28394
28824
  }
28395
28825
  ),
28396
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: [
28397
- /* @__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(
28398
28828
  "button",
28399
28829
  {
28400
- onClick: () => openEditor(f),
28401
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28402
- 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
+ ]
28403
28855
  }
28404
28856
  ),
28405
28857
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28406
28858
  "button",
28407
28859
  {
28408
- onClick: () => handleStageSingle(f),
28409
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28410
- 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"
28411
28863
  }
28412
28864
  )
28413
28865
  ] })
28414
- ]
28415
- },
28416
- `m-${f}`
28417
- )),
28418
- 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" })
28419
- ] }),
28420
- changesTab === "deleted" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
28421
- /* @__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(
28422
- "li",
28423
- {
28424
- className: "flex justify-between items-center hover:bg-surface-hover px-2 py-1.5 rounded-md transition-colors",
28425
- children: [
28426
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs text-danger/70 font-mono flex-1 flex items-center gap-1.5 truncate", children: [
28427
- /* @__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" }),
28428
- /* @__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" })
28429
29008
  ] }),
28430
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1 flex-shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
28431
- "button",
28432
- {
28433
- onClick: () => handleStageSingle(f),
28434
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28435
- children: "+"
28436
- }
28437
- ) })
28438
- ]
28439
- },
28440
- `d-${f}`
28441
- )) }),
28442
- deletedHistory?.all && deletedHistory.all.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 pt-3 border-t border-border/50", children: [
28443
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-[11px] font-semibold text-secondary uppercase tracking-wider mb-2", children: "Recently Deleted in Repository" }),
28444
- /* @__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: [
28445
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-start mb-1.5", children: [
28446
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-semibold text-primary truncate", title: commit.message, children: commit.message }),
28447
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-[10px] text-secondary whitespace-nowrap ml-2 flex-shrink-0", children: [
28448
- new Date(commit.date).toLocaleDateString(),
28449
- " ",
28450
- 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
+ ] })
28451
29072
  ] })
28452
- ] }),
28453
- /* @__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: [
28454
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-shrink-0 font-bold bg-danger/10 text-danger border border-danger/20 px-1 rounded", children: "D" }),
28455
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", title: f.file, children: f.file })
28456
- ] }, i)) })
28457
- ] }, commit.hash)) })
28458
- ] })
28459
- ] })
28460
- ] })
28461
- ] }),
28462
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28463
- "div",
28464
- {
28465
- className: "hidden lg:flex w-6 cursor-col-resize items-center justify-center group relative z-10",
28466
- onMouseDown: (e) => {
28467
- e.preventDefault();
28468
- setIsResizing(true);
28469
- },
28470
- children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: `h-12 w-1 rounded-full transition-colors ${isResizing ? "bg-accent" : "bg-border group-hover:bg-accent/50"}` })
28471
- }
28472
- ),
28473
- /* @__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: [
28474
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "font-semibold mb-4 text-primary text-sm shrink-0", children: "Staged Changes" }),
28475
- /* @__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: [
28476
- status.staged.map((f) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
28477
- "li",
29073
+ ] })
29074
+ ]
29075
+ }
29076
+ ),
29077
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29078
+ "div",
28478
29079
  {
28479
- className: "flex justify-between items-center hover:bg-surface-hover px-2 py-1.5 rounded-md group transition-colors",
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",
29095
+ {
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",
28480
29098
  children: [
28481
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28482
- "span",
28483
- {
28484
- onClick: () => viewDiff(f, true),
28485
- className: "text-xs text-success font-mono cursor-pointer flex-1",
28486
- children: f
28487
- }
28488
- ),
28489
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "opacity-0 group-hover:opacity-100 flex gap-1", children: [
28490
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28491
- "button",
28492
- {
28493
- onClick: () => openEditor(f),
28494
- className: "text-[10px] text-secondary hover:text-primary px-2 py-0.5 border border-border rounded bg-canvas",
28495
- children: "Edit"
28496
- }
28497
- ),
28498
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28499
- "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",
28500
29103
  {
28501
- onClick: () => handleUnstageSingle(f),
28502
- className: "text-[10px] text-secondary hover:text-danger px-2 py-0.5 border border-border rounded bg-canvas",
28503
- children: "-"
28504
- }
28505
- )
28506
- ] })
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
+ ] }) })
28507
29138
  ]
28508
- },
28509
- f
28510
- )),
28511
- status.staged.length === 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("li", { className: "text-xs text-secondary italic mt-2 text-center", children: "No files staged for commit" })
28512
- ] }) })
28513
- ] })
28514
- ] }),
29139
+ }
29140
+ )
29141
+ ]
29142
+ }
29143
+ ),
28515
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: [
28516
29145
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28517
29146
  "input",
@@ -28624,7 +29253,12 @@ Are you SURE you want to link "${repoName}" to this folder?`
28624
29253
  onClose: () => setShowUniversalWizard(false),
28625
29254
  onAutoHealTrigger: (msg, path, branch) => {
28626
29255
  setShowUniversalWizard(false);
28627
- setPushFailureData({ reason: msg, operation: "push", overrideRepoPath: path, overrideBranch: branch });
29256
+ setPushFailureData({
29257
+ reason: msg,
29258
+ operation: "push",
29259
+ overrideRepoPath: path,
29260
+ overrideBranch: branch
29261
+ });
28628
29262
  }
28629
29263
  }
28630
29264
  ),
@@ -28634,54 +29268,62 @@ Are you SURE you want to link "${repoName}" to this folder?`
28634
29268
  ] }),
28635
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: [
28636
29270
  /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-primary mb-4", children: "Pending Invitations" }),
28637
- 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: [
28638
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
28639
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-primary font-medium", children: inv.repository.full_name }),
28640
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-secondary mt-1", children: [
28641
- "Invited by ",
28642
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold", children: inv.inviter.login }),
28643
- " as ",
28644
- inv.permissions
28645
- ] })
28646
- ] }),
28647
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2 mt-2", children: [
28648
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28649
- "button",
28650
- {
28651
- onClick: async () => {
28652
- try {
28653
- await window.api.acceptInvitation(inv.id);
28654
- showToast("Invitation accepted!", "success");
28655
- const invs = await window.api.getUserInvitations();
28656
- setInvitations(invs || []);
28657
- refreshRepoState();
28658
- } catch (e) {
28659
- 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"
28660
29303
  }
28661
- },
28662
- className: "flex-1 py-1.5 bg-success text-white rounded-md text-sm font-semibold transition-colors hover:brightness-110",
28663
- children: "Accept"
28664
- }
28665
- ),
28666
- /* @__PURE__ */ jsxRuntimeExports.jsx(
28667
- "button",
28668
- {
28669
- onClick: async () => {
28670
- try {
28671
- await window.api.declineInvitation(inv.id);
28672
- showToast("Invitation declined.", "info");
28673
- const invs = await window.api.getUserInvitations();
28674
- setInvitations(invs || []);
28675
- } catch (e) {
28676
- 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"
28677
29320
  }
28678
- },
28679
- className: "flex-1 py-1.5 bg-danger text-white rounded-md text-sm font-semibold transition-colors hover:brightness-110",
28680
- children: "Decline"
28681
- }
28682
- )
28683
- ] })
28684
- ] }, inv.id)) }),
29321
+ )
29322
+ ] })
29323
+ ]
29324
+ },
29325
+ inv.id
29326
+ )) }),
28685
29327
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28686
29328
  "button",
28687
29329
  {
@@ -28691,14 +29333,112 @@ Are you SURE you want to link "${repoName}" to this folder?`
28691
29333
  }
28692
29334
  )
28693
29335
  ] }) }),
28694
- /* @__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: [
28695
- 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" }) }),
28696
- 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" }) }),
28697
- 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" }) }),
28698
- 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" }) }),
28699
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold text-sm drop-shadow-md text-white/95", children: toast.msg }),
28700
- /* @__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" }) }) })
28701
- ] }) }, 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)) })
28702
29442
  ]
28703
29443
  }
28704
29444
  );