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