gitxelectron 1.3.6 → 1.3.8

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.
@@ -13042,55 +13042,115 @@ function RepositoryWizard({ repoPath, onClose, onSuccess }) {
13042
13042
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4", children: [
13043
13043
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
13044
13044
  /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-semibold text-secondary mb-1", children: "Add .gitignore" }),
13045
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
13046
- "select",
13047
- {
13048
- value: gitignoreTemplate,
13049
- onChange: (e) => setGitignoreTemplate(e.target.value),
13050
- className: "w-full bg-surface-hover border border-border rounded-md px-3 py-2 text-sm text-primary focus:outline-none focus:border-accent appearance-none cursor-pointer transition-colors",
13051
- children: [
13052
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", children: "None" }),
13053
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Node", children: "Node" }),
13054
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Python", children: "Python" }),
13055
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Java", children: "Java" }),
13056
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "C++", children: "C++" }),
13057
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Go", children: "Go" })
13058
- ]
13059
- }
13060
- )
13045
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
13046
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
13047
+ "select",
13048
+ {
13049
+ value: gitignoreTemplate,
13050
+ onChange: (e) => setGitignoreTemplate(e.target.value),
13051
+ className: "w-full bg-surface-hover border border-border rounded-md px-3 py-2 text-sm text-primary focus:outline-none focus:border-accent appearance-none cursor-pointer transition-colors pr-8",
13052
+ children: [
13053
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", className: "bg-canvas text-primary", children: "None" }),
13054
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Node", className: "bg-canvas text-primary", children: "Node" }),
13055
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Python", className: "bg-canvas text-primary", children: "Python" }),
13056
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Java", className: "bg-canvas text-primary", children: "Java" }),
13057
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "C++", className: "bg-canvas text-primary", children: "C++" }),
13058
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "Go", className: "bg-canvas text-primary", children: "Go" })
13059
+ ]
13060
+ }
13061
+ ),
13062
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-secondary", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13063
+ "svg",
13064
+ {
13065
+ className: "w-4 h-4",
13066
+ fill: "none",
13067
+ stroke: "currentColor",
13068
+ viewBox: "0 0 24 24",
13069
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13070
+ "path",
13071
+ {
13072
+ strokeLinecap: "round",
13073
+ strokeLinejoin: "round",
13074
+ strokeWidth: "2",
13075
+ d: "M19 9l-7 7-7-7"
13076
+ }
13077
+ )
13078
+ }
13079
+ ) })
13080
+ ] })
13061
13081
  ] }),
13062
13082
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
13063
13083
  /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-semibold text-secondary mb-1", children: "Choose a license" }),
13064
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
13065
- "select",
13066
- {
13067
- value: licenseTemplate,
13068
- onChange: (e) => setLicenseTemplate(e.target.value),
13069
- className: "w-full bg-surface-hover border border-border rounded-md px-3 py-2 text-sm text-primary focus:outline-none focus:border-accent appearance-none cursor-pointer transition-colors",
13070
- children: [
13071
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", children: "None" }),
13072
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "mit", children: "MIT License" }),
13073
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "gpl-3.0", children: "GNU GPLv3" }),
13074
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "apache-2.0", children: "Apache License 2.0" }),
13075
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "bsd-3-clause", children: "BSD 3-Clause" })
13076
- ]
13077
- }
13078
- )
13084
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
13085
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
13086
+ "select",
13087
+ {
13088
+ value: licenseTemplate,
13089
+ onChange: (e) => setLicenseTemplate(e.target.value),
13090
+ className: "w-full bg-surface-hover border border-border rounded-md px-3 py-2 text-sm text-primary focus:outline-none focus:border-accent appearance-none cursor-pointer transition-colors pr-8",
13091
+ children: [
13092
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "", className: "bg-canvas text-primary", children: "None" }),
13093
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "mit", className: "bg-canvas text-primary", children: "MIT License" }),
13094
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "gpl-3.0", className: "bg-canvas text-primary", children: "GNU GPLv3" }),
13095
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "apache-2.0", className: "bg-canvas text-primary", children: "Apache License 2.0" }),
13096
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "bsd-3-clause", className: "bg-canvas text-primary", children: "BSD 3-Clause" })
13097
+ ]
13098
+ }
13099
+ ),
13100
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-secondary", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13101
+ "svg",
13102
+ {
13103
+ className: "w-4 h-4",
13104
+ fill: "none",
13105
+ stroke: "currentColor",
13106
+ viewBox: "0 0 24 24",
13107
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13108
+ "path",
13109
+ {
13110
+ strokeLinecap: "round",
13111
+ strokeLinejoin: "round",
13112
+ strokeWidth: "2",
13113
+ d: "M19 9l-7 7-7-7"
13114
+ }
13115
+ )
13116
+ }
13117
+ ) })
13118
+ ] })
13079
13119
  ] })
13080
13120
  ] })
13081
13121
  ] })
13082
13122
  ] }),
13083
13123
  action === "existing" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4 bg-canvas p-4 rounded-lg border border-border", children: [
13084
13124
  /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-xs font-semibold text-secondary mb-1", children: "Select Repository" }),
13085
- /* @__PURE__ */ jsxRuntimeExports.jsx(
13086
- "select",
13087
- {
13088
- value: selectedRepoUrl,
13089
- onChange: (e) => setSelectedRepoUrl(e.target.value),
13090
- className: "w-full bg-surface-hover border border-border rounded-md px-3 py-2 text-sm text-primary focus:outline-none focus:border-accent appearance-none transition-colors",
13091
- children: userRepos.map((r) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: r.clone_url, children: r.full_name }, r.id))
13092
- }
13093
- )
13125
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
13126
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
13127
+ "select",
13128
+ {
13129
+ value: selectedRepoUrl,
13130
+ onChange: (e) => setSelectedRepoUrl(e.target.value),
13131
+ className: "w-full bg-surface-hover border border-border rounded-md px-3 py-2 text-sm text-primary focus:outline-none focus:border-accent appearance-none cursor-pointer transition-colors pr-8",
13132
+ children: userRepos.map((r) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: r.clone_url, className: "bg-canvas text-primary", children: r.full_name }, r.id))
13133
+ }
13134
+ ),
13135
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-secondary", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13136
+ "svg",
13137
+ {
13138
+ className: "w-4 h-4",
13139
+ fill: "none",
13140
+ stroke: "currentColor",
13141
+ viewBox: "0 0 24 24",
13142
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13143
+ "path",
13144
+ {
13145
+ strokeLinecap: "round",
13146
+ strokeLinejoin: "round",
13147
+ strokeWidth: "2",
13148
+ d: "M19 9l-7 7-7-7"
13149
+ }
13150
+ )
13151
+ }
13152
+ ) })
13153
+ ] })
13094
13154
  ] }),
13095
13155
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex gap-3 pt-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
13096
13156
  "button",
@@ -23000,12 +23060,18 @@ function IconBase(props) {
23000
23060
  function FiX(props) {
23001
23061
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "line", "attr": { "x1": "18", "y1": "6", "x2": "6", "y2": "18" }, "child": [] }, { "tag": "line", "attr": { "x1": "6", "y1": "6", "x2": "18", "y2": "18" }, "child": [] }] })(props);
23002
23062
  }
23063
+ function FiTerminal(props) {
23064
+ return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "polyline", "attr": { "points": "4 17 10 11 4 5" }, "child": [] }, { "tag": "line", "attr": { "x1": "12", "y1": "19", "x2": "20", "y2": "19" }, "child": [] }] })(props);
23065
+ }
23003
23066
  function FiShield(props) {
23004
23067
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z" }, "child": [] }] })(props);
23005
23068
  }
23006
23069
  function FiSearch(props) {
23007
23070
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "circle", "attr": { "cx": "11", "cy": "11", "r": "8" }, "child": [] }, { "tag": "line", "attr": { "x1": "21", "y1": "21", "x2": "16.65", "y2": "16.65" }, "child": [] }] })(props);
23008
23071
  }
23072
+ function FiRefreshCw(props) {
23073
+ return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "polyline", "attr": { "points": "23 4 23 10 17 10" }, "child": [] }, { "tag": "polyline", "attr": { "points": "1 20 1 14 7 14" }, "child": [] }, { "tag": "path", "attr": { "d": "M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15" }, "child": [] }] })(props);
23074
+ }
23009
23075
  function FiGithub(props) {
23010
23076
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22" }, "child": [] }] })(props);
23011
23077
  }
@@ -23018,6 +23084,12 @@ function FiFolder(props) {
23018
23084
  function FiFile(props) {
23019
23085
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z" }, "child": [] }, { "tag": "polyline", "attr": { "points": "13 2 13 9 20 9" }, "child": [] }] })(props);
23020
23086
  }
23087
+ function FiExternalLink(props) {
23088
+ return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6" }, "child": [] }, { "tag": "polyline", "attr": { "points": "15 3 21 3 21 9" }, "child": [] }, { "tag": "line", "attr": { "x1": "10", "y1": "14", "x2": "21", "y2": "3" }, "child": [] }] })(props);
23089
+ }
23090
+ function FiCopy(props) {
23091
+ return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "rect", "attr": { "x": "9", "y": "9", "width": "13", "height": "13", "rx": "2", "ry": "2" }, "child": [] }, { "tag": "path", "attr": { "d": "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" }, "child": [] }] })(props);
23092
+ }
23021
23093
  function FiCode(props) {
23022
23094
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "polyline", "attr": { "points": "16 18 22 12 16 6" }, "child": [] }, { "tag": "polyline", "attr": { "points": "8 6 2 12 8 18" }, "child": [] }] })(props);
23023
23095
  }
@@ -23039,6 +23111,9 @@ function FiArrowLeft(props) {
23039
23111
  function FiAlertTriangle(props) {
23040
23112
  return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "path", "attr": { "d": "M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z" }, "child": [] }, { "tag": "line", "attr": { "x1": "12", "y1": "9", "x2": "12", "y2": "13" }, "child": [] }, { "tag": "line", "attr": { "x1": "12", "y1": "17", "x2": "12.01", "y2": "17" }, "child": [] }] })(props);
23041
23113
  }
23114
+ function FiAlertCircle(props) {
23115
+ return GenIcon({ "attr": { "viewBox": "0 0 24 24", "fill": "none", "stroke": "currentColor", "strokeWidth": "2", "strokeLinecap": "round", "strokeLinejoin": "round" }, "child": [{ "tag": "circle", "attr": { "cx": "12", "cy": "12", "r": "10" }, "child": [] }, { "tag": "line", "attr": { "x1": "12", "y1": "8", "x2": "12", "y2": "12" }, "child": [] }, { "tag": "line", "attr": { "x1": "12", "y1": "16", "x2": "12.01", "y2": "16" }, "child": [] }] })(props);
23116
+ }
23042
23117
  function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23043
23118
  const [step, setStep] = reactExports.useState("START");
23044
23119
  const [errorMsg, setErrorMsg] = reactExports.useState("");
@@ -23225,22 +23300,22 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23225
23300
  {
23226
23301
  initial: { opacity: 0, scale: 0.95, y: 20 },
23227
23302
  animate: { opacity: 1, scale: 1, y: 0 },
23228
- className: "bg-[#0f111a] border border-[#2a2d3d] w-full max-w-2xl rounded-2xl overflow-hidden shadow-2xl flex flex-col",
23303
+ className: "bg-canvas shadow-xl border border-border w-full max-w-2xl rounded-2xl overflow-hidden shadow-2xl flex flex-col",
23229
23304
  style: { maxHeight: "85vh" },
23230
23305
  children: [
23231
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-4 border-b border-[#2a2d3d] flex items-center justify-between bg-[#151822]", children: [
23306
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-4 border-b border-border flex items-center justify-between bg-surface", children: [
23232
23307
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3", children: [
23233
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-2 bg-blue-500/20 text-blue-400 rounded-lg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiGithub, { size: 20 }) }),
23308
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-2 bg-brand/20 text-brand rounded-lg", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiGithub, { size: 20 }) }),
23234
23309
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23235
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-white font-semibold text-lg leading-tight", children: "Push Anything" }),
23236
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-400 text-xs", children: "Universal GitHub Uploader" })
23310
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-primary font-semibold text-lg leading-tight", children: "Push Anything" }),
23311
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary text-xs", children: "Universal GitHub Uploader" })
23237
23312
  ] })
23238
23313
  ] }),
23239
23314
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23240
23315
  "button",
23241
23316
  {
23242
23317
  onClick: handleClose,
23243
- className: "p-2 text-gray-400 hover:text-white rounded-lg hover:bg-white/10 transition-colors",
23318
+ className: "p-2 text-secondary hover:text-primary rounded-lg hover:bg-surface-hover transition-colors",
23244
23319
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiX, { size: 20 })
23245
23320
  }
23246
23321
  )
@@ -23258,24 +23333,24 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23258
23333
  className: `flex flex-col items-center justify-center h-full gap-6 rounded-2xl transition-colors border-2 ${isDragging2 ? "border-brand bg-brand/10" : "border-transparent"}`,
23259
23334
  children: [
23260
23335
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center space-y-2 mb-4", children: [
23261
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-2xl text-white font-semibold", children: "Select files to push" }),
23262
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-400 text-sm", children: "You can push any file or folder directly to any repository." })
23336
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-2xl text-primary font-semibold", children: "Select files to push" }),
23337
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary text-sm", children: "You can push any file or folder directly to any repository." })
23263
23338
  ] }),
23264
23339
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-2 gap-4 w-full max-w-md", children: [
23265
23340
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
23266
23341
  "button",
23267
23342
  {
23268
23343
  onClick: () => handleSelectFiles(false),
23269
- className: "flex flex-col items-center gap-4 p-6 rounded-xl bg-[#1a1d27] border border-[#2a2d3d] hover:border-blue-500 hover:bg-blue-500/10 transition-all group",
23344
+ className: "flex flex-col items-center gap-4 p-6 rounded-xl bg-surface border border-border shadow-sm border border-border hover:border-brand hover:bg-brand/10 transition-all group",
23270
23345
  children: [
23271
23346
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23272
23347
  FiFile,
23273
23348
  {
23274
23349
  size: 40,
23275
- className: "text-blue-400 group-hover:scale-110 transition-transform"
23350
+ className: "text-brand group-hover:scale-110 transition-transform"
23276
23351
  }
23277
23352
  ),
23278
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-medium", children: "Select File(s)" })
23353
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-primary font-medium", children: "Select File(s)" })
23279
23354
  ]
23280
23355
  }
23281
23356
  ),
@@ -23283,7 +23358,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23283
23358
  "button",
23284
23359
  {
23285
23360
  onClick: () => handleSelectFiles(true),
23286
- className: "flex flex-col items-center gap-4 p-6 rounded-xl bg-[#1a1d27] border border-[#2a2d3d] hover:border-purple-500 hover:bg-purple-500/10 transition-all group",
23361
+ className: "flex flex-col items-center gap-4 p-6 rounded-xl bg-surface border border-border shadow-sm border border-border hover:border-purple-500 hover:bg-purple-500/10 transition-all group",
23287
23362
  children: [
23288
23363
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23289
23364
  FiFolder,
@@ -23292,7 +23367,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23292
23367
  className: "text-purple-400 group-hover:scale-110 transition-transform"
23293
23368
  }
23294
23369
  ),
23295
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-white font-medium", children: "Select Folder" })
23370
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-primary font-medium", children: "Select Folder" })
23296
23371
  ]
23297
23372
  }
23298
23373
  )
@@ -23309,18 +23384,18 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23309
23384
  exit: { opacity: 0 },
23310
23385
  className: "space-y-4",
23311
23386
  children: [
23312
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-white font-semibold mb-4", children: "Select GitHub Account" }),
23313
- accounts.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-6 text-center bg-[#1a1d27] border border-[#2a2d3d] rounded-xl flex flex-col items-center gap-4", children: [
23387
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-primary font-semibold mb-4", children: "Select GitHub Account" }),
23388
+ accounts.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-6 text-center bg-surface border border-border shadow-sm border border-border rounded-xl flex flex-col items-center gap-4", children: [
23314
23389
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiAlertTriangle, { size: 32, className: "text-yellow-500" }),
23315
23390
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23316
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-white font-medium mb-1", children: "No GitHub Accounts Found" }),
23317
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-400 text-sm", children: "Please close this window and log in to a GitHub account using the Settings panel first." })
23391
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-primary font-medium mb-1", children: "No GitHub Accounts Found" }),
23392
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary text-sm", children: "Please close this window and log in to a GitHub account using the Settings panel first." })
23318
23393
  ] })
23319
23394
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid gap-3", children: accounts.map((acc) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
23320
23395
  "button",
23321
23396
  {
23322
23397
  onClick: () => handleSelectAccount(acc),
23323
- className: "flex items-center gap-4 p-4 rounded-xl bg-[#1a1d27] border border-[#2a2d3d] hover:border-blue-500 transition-colors text-left w-full",
23398
+ className: "flex items-center gap-4 p-4 rounded-xl bg-surface border border-border shadow-sm border border-border hover:border-brand transition-colors text-left w-full",
23324
23399
  children: [
23325
23400
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23326
23401
  "img",
@@ -23331,13 +23406,13 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23331
23406
  }
23332
23407
  ),
23333
23408
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23334
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-white font-medium", children: [
23409
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-primary font-medium", children: [
23335
23410
  "@",
23336
23411
  acc.username
23337
23412
  ] }),
23338
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-gray-400 text-xs", children: "Authenticated" })
23413
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-secondary text-xs", children: "Authenticated" })
23339
23414
  ] }),
23340
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, { className: "ml-auto text-gray-500" })
23415
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, { className: "ml-auto text-secondary opacity-70" })
23341
23416
  ]
23342
23417
  },
23343
23418
  acc.id
@@ -23354,15 +23429,15 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23354
23429
  exit: { opacity: 0 },
23355
23430
  className: "space-y-4 h-full flex flex-col",
23356
23431
  children: [
23357
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-white font-semibold", children: "Select Repository" }),
23432
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-primary font-semibold", children: "Select Repository" }),
23358
23433
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative", children: [
23359
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiSearch, { className: "absolute left-3 top-3 text-gray-400" }),
23434
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiSearch, { className: "absolute left-3 top-3 text-secondary" }),
23360
23435
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23361
23436
  "input",
23362
23437
  {
23363
23438
  type: "text",
23364
23439
  placeholder: "Search repositories...",
23365
- className: "w-full bg-[#1a1d27] border border-[#2a2d3d] rounded-lg py-2.5 pl-10 pr-4 text-white focus:outline-none focus:border-blue-500",
23440
+ className: "w-full bg-surface border border-border shadow-sm border border-border rounded-lg py-2.5 pl-10 pr-4 text-primary focus:outline-none focus:border-brand",
23366
23441
  value: searchRepo,
23367
23442
  onChange: (e) => setSearchRepo(e.target.value)
23368
23443
  }
@@ -23372,20 +23447,20 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23372
23447
  "button",
23373
23448
  {
23374
23449
  onClick: () => handleSelectRepo(repo),
23375
- className: "w-full text-left p-3 rounded-lg bg-[#1a1d27] border border-[#2a2d3d] hover:border-blue-500 flex items-center justify-between group",
23450
+ className: "w-full text-left p-3 rounded-lg bg-surface border border-border shadow-sm border border-border hover:border-brand flex items-center justify-between group",
23376
23451
  children: [
23377
23452
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23378
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-white font-medium flex items-center gap-2", children: [
23453
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-primary font-medium flex items-center gap-2", children: [
23379
23454
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { children: [
23380
23455
  repo.owner.login,
23381
23456
  "/",
23382
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-blue-400", children: repo.name })
23457
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-brand", children: repo.name })
23383
23458
  ] }),
23384
- repo.private && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] px-1.5 py-0.5 rounded bg-gray-700 text-gray-300", children: "Private" })
23459
+ repo.private && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] px-1.5 py-0.5 rounded bg-gray-700 text-secondary", children: "Private" })
23385
23460
  ] }),
23386
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-gray-500 text-xs mt-1 truncate", children: repo.description || "No description" })
23461
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-secondary opacity-70 text-xs mt-1 truncate", children: repo.description || "No description" })
23387
23462
  ] }),
23388
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, { className: "text-gray-600 group-hover:text-blue-400" })
23463
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, { className: "text-secondary opacity-50 group-hover:text-brand" })
23389
23464
  ]
23390
23465
  },
23391
23466
  repo.id
@@ -23402,14 +23477,14 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23402
23477
  exit: { opacity: 0 },
23403
23478
  className: "space-y-6",
23404
23479
  children: [
23405
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-white font-semibold", children: "Select Branch" }),
23480
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-primary font-semibold", children: "Select Branch" }),
23406
23481
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
23407
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 bg-[#1a1d27] p-1 rounded-lg border border-[#2a2d3d] w-fit", children: [
23482
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 bg-surface border border-border shadow-sm p-1 rounded-lg border border-border w-fit", children: [
23408
23483
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23409
23484
  "button",
23410
23485
  {
23411
23486
  onClick: () => setIsNewBranch(false),
23412
- className: `px-4 py-1.5 rounded-md text-sm font-medium transition-colors ${!isNewBranch ? "bg-blue-500 text-white" : "text-gray-400 hover:text-white"}`,
23487
+ className: `px-4 py-1.5 rounded-md text-sm font-medium transition-colors ${!isNewBranch ? "bg-brand text-primary" : "text-secondary hover:text-primary"}`,
23413
23488
  children: "Existing Branch"
23414
23489
  }
23415
23490
  ),
@@ -23417,7 +23492,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23417
23492
  "button",
23418
23493
  {
23419
23494
  onClick: () => setIsNewBranch(true),
23420
- className: `px-4 py-1.5 rounded-md text-sm font-medium transition-colors ${isNewBranch ? "bg-blue-500 text-white" : "text-gray-400 hover:text-white"}`,
23495
+ className: `px-4 py-1.5 rounded-md text-sm font-medium transition-colors ${isNewBranch ? "bg-brand text-primary" : "text-secondary hover:text-primary"}`,
23421
23496
  children: "Create New"
23422
23497
  }
23423
23498
  )
@@ -23426,7 +23501,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23426
23501
  "button",
23427
23502
  {
23428
23503
  onClick: () => setSelectedBranch(b.name),
23429
- className: `w-full text-left p-3 rounded-lg border flex items-center gap-3 ${selectedBranch === b.name ? "bg-blue-500/10 border-blue-500 text-blue-400" : "bg-[#1a1d27] border-[#2a2d3d] text-gray-300 hover:border-gray-500"}`,
23504
+ className: `w-full text-left p-3 rounded-lg border flex items-center gap-3 ${selectedBranch === b.name ? "bg-brand/10 border-brand text-brand" : "bg-surface border border-border shadow-sm border-border text-secondary hover:border-accent"}`,
23430
23505
  children: [
23431
23506
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiGitBranch, {}),
23432
23507
  b.name
@@ -23435,26 +23510,26 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23435
23510
  b.name
23436
23511
  )) }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [
23437
23512
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23438
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-gray-400 text-sm mb-1", children: "New Branch Name" }),
23513
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary text-sm mb-1", children: "New Branch Name" }),
23439
23514
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23440
23515
  "input",
23441
23516
  {
23442
23517
  type: "text",
23443
23518
  value: newBranchName,
23444
23519
  onChange: (e) => setNewBranchName(e.target.value),
23445
- className: "w-full bg-[#1a1d27] border border-[#2a2d3d] rounded-lg p-2.5 text-white focus:outline-none focus:border-blue-500",
23520
+ className: "w-full bg-surface border border-border shadow-sm border border-border rounded-lg p-2.5 text-primary focus:outline-none focus:border-brand",
23446
23521
  placeholder: "e.g., feature/update-assets"
23447
23522
  }
23448
23523
  )
23449
23524
  ] }),
23450
23525
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23451
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-gray-400 text-sm mb-1", children: "Base Branch" }),
23526
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary text-sm mb-1", children: "Base Branch" }),
23452
23527
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23453
23528
  "select",
23454
23529
  {
23455
23530
  value: baseBranch,
23456
23531
  onChange: (e) => setBaseBranch(e.target.value),
23457
- className: "w-full bg-[#1a1d27] border border-[#2a2d3d] rounded-lg p-2.5 text-white focus:outline-none focus:border-blue-500 appearance-none",
23532
+ className: "w-full bg-surface border border-border shadow-sm border border-border rounded-lg p-2.5 text-primary focus:outline-none focus:border-brand appearance-none",
23458
23533
  children: branches.map((b) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: b.name, children: b.name }, b.name))
23459
23534
  }
23460
23535
  )
@@ -23482,11 +23557,11 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23482
23557
  exit: { opacity: 0 },
23483
23558
  className: "space-y-6",
23484
23559
  children: [
23485
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-white font-semibold", children: "Destination Path" }),
23486
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-400 text-sm", children: "Where should these files be placed in the repository?" }),
23560
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-primary font-semibold", children: "Destination Path" }),
23561
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary text-sm", children: "Where should these files be placed in the repository?" }),
23487
23562
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
23488
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 bg-[#1a1d27] border border-[#2a2d3d] rounded-lg p-3", children: [
23489
- /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-blue-400", children: [
23563
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 bg-surface border border-border shadow-sm border border-border rounded-lg p-3", children: [
23564
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-brand", children: [
23490
23565
  selectedRepo?.name,
23491
23566
  "/"
23492
23567
  ] }),
@@ -23496,7 +23571,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23496
23571
  type: "text",
23497
23572
  value: destination,
23498
23573
  onChange: (e) => setDestination(e.target.value),
23499
- className: "bg-transparent border-none outline-none text-white w-full",
23574
+ className: "bg-transparent border-none outline-none text-primary w-full",
23500
23575
  placeholder: "/"
23501
23576
  }
23502
23577
  )
@@ -23506,7 +23581,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23506
23581
  "button",
23507
23582
  {
23508
23583
  onClick: () => setDestination("/"),
23509
- className: "text-xs px-2 py-1 bg-white/5 hover:bg-white/10 text-gray-400 rounded",
23584
+ className: "text-xs px-2 py-1 bg-surface hover:bg-surface-hover text-secondary rounded",
23510
23585
  children: "Root (/)"
23511
23586
  }
23512
23587
  ),
@@ -23514,7 +23589,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23514
23589
  "button",
23515
23590
  {
23516
23591
  onClick: () => setDestination("src/"),
23517
- className: "text-xs px-2 py-1 bg-white/5 hover:bg-white/10 text-gray-400 rounded",
23592
+ className: "text-xs px-2 py-1 bg-surface hover:bg-surface-hover text-secondary rounded",
23518
23593
  children: "src/"
23519
23594
  }
23520
23595
  ),
@@ -23522,18 +23597,18 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23522
23597
  "button",
23523
23598
  {
23524
23599
  onClick: () => setDestination("assets/"),
23525
- className: "text-xs px-2 py-1 bg-white/5 hover:bg-white/10 text-gray-400 rounded",
23600
+ className: "text-xs px-2 py-1 bg-surface hover:bg-surface-hover text-secondary rounded",
23526
23601
  children: "assets/"
23527
23602
  }
23528
23603
  )
23529
23604
  ] })
23530
23605
  ] }),
23531
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-[#1a1d27] p-4 rounded-lg border border-[#2a2d3d]", children: [
23532
- /* @__PURE__ */ jsxRuntimeExports.jsxs("h4", { className: "text-gray-300 font-medium mb-2 text-sm flex items-center gap-2", children: [
23606
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface border border-border shadow-sm p-4 rounded-lg border border-border", children: [
23607
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h4", { className: "text-secondary font-medium mb-2 text-sm flex items-center gap-2", children: [
23533
23608
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiFolder, {}),
23534
23609
  " Preview"
23535
23610
  ] }),
23536
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-gray-500 font-mono space-y-1", children: [
23611
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-xs text-secondary opacity-70 font-mono space-y-1", children: [
23537
23612
  files.slice(0, 3).map((f) => {
23538
23613
  const name = f.split(/[\/\\]/).pop();
23539
23614
  const dest = destination === "/" || destination === "" ? name : `${destination.replace(/\/$/, "")}/${name}`;
@@ -23550,7 +23625,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23550
23625
  "button",
23551
23626
  {
23552
23627
  onClick: handleSetupWorkspace,
23553
- className: "px-6 py-2 bg-blue-500 text-white font-semibold rounded-lg hover:bg-blue-600 transition-colors flex items-center gap-2",
23628
+ className: "px-6 py-2 bg-brand text-primary font-semibold rounded-lg hover:bg-brand brightness-110 transition-colors flex items-center gap-2",
23554
23629
  children: [
23555
23630
  "Verify & Prepare ",
23556
23631
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, {})
@@ -23569,9 +23644,9 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23569
23644
  exit: { opacity: 0 },
23570
23645
  className: "flex flex-col items-center justify-center h-full gap-4",
23571
23646
  children: [
23572
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-12 h-12 border-4 border-blue-500/30 border-t-blue-500 rounded-full animate-spin" }),
23573
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-300 font-medium animate-pulse", children: "Safely preparing Git workspace..." }),
23574
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-500 text-xs", children: "Checking for collisions and establishing sparse-checkout" })
23647
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-12 h-12 border-4 border-brand/30 border-t-blue-500 rounded-full animate-spin" }),
23648
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary font-medium animate-pulse", children: "Safely preparing Git workspace..." }),
23649
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary opacity-70 text-xs", children: "Checking for collisions and establishing sparse-checkout" })
23575
23650
  ]
23576
23651
  },
23577
23652
  "loading"
@@ -23594,14 +23669,14 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23594
23669
  ] })
23595
23670
  ] })
23596
23671
  ] }),
23597
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 bg-[#1a1d27] border border-[#2a2d3d] rounded-lg p-3 overflow-y-auto custom-scrollbar", children: [
23598
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-semibold text-gray-500 uppercase mb-2", children: "Modified Files" }),
23672
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 bg-surface border border-border shadow-sm border border-border rounded-lg p-3 overflow-y-auto custom-scrollbar", children: [
23673
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-semibold text-secondary opacity-70 uppercase mb-2", children: "Modified Files" }),
23599
23674
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1", children: collisions.modified.map((m) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-yellow-400 text-sm font-mono truncate py-1", children: [
23600
23675
  "M ",
23601
23676
  m
23602
23677
  ] }, m)) }),
23603
23678
  collisions.newFiles.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
23604
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-semibold text-gray-500 uppercase mt-4 mb-2", children: "New Files" }),
23679
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-xs font-semibold text-secondary opacity-70 uppercase mt-4 mb-2", children: "New Files" }),
23605
23680
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "space-y-1", children: collisions.newFiles.map((n) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
23606
23681
  "div",
23607
23682
  {
@@ -23620,7 +23695,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23620
23695
  "button",
23621
23696
  {
23622
23697
  onClick: handleClose,
23623
- className: "px-5 py-2 bg-[#2a2d3d] text-white rounded-lg hover:bg-red-500/20 hover:text-red-400 transition-colors",
23698
+ className: "px-5 py-2 bg-surface-hover text-primary rounded-lg hover:bg-red-500/20 hover:text-red-400 transition-colors",
23624
23699
  children: "Cancel Push"
23625
23700
  }
23626
23701
  ),
@@ -23629,7 +23704,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23629
23704
  "button",
23630
23705
  {
23631
23706
  onClick: handleCompare,
23632
- className: "px-5 py-2 bg-[#2a2d3d] text-white rounded-lg hover:bg-[#3a3d4d] transition-colors flex items-center gap-2",
23707
+ className: "px-5 py-2 bg-surface-hover text-primary rounded-lg hover:bg-surface-hover transition-colors flex items-center gap-2",
23633
23708
  children: [
23634
23709
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiCode, {}),
23635
23710
  " Compare"
@@ -23652,21 +23727,21 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23652
23727
  "button",
23653
23728
  {
23654
23729
  onClick: () => setShowDiff(false),
23655
- className: "text-gray-400 hover:text-white",
23730
+ className: "text-secondary hover:text-primary",
23656
23731
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowLeft, {})
23657
23732
  }
23658
23733
  ),
23659
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-white font-semibold", children: "Diff Viewer" })
23734
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-primary font-semibold", children: "Diff Viewer" })
23660
23735
  ] }),
23661
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 bg-[#0d0f17] border border-[#2a2d3d] rounded-lg p-4 overflow-y-auto custom-scrollbar font-mono text-sm whitespace-pre-wrap", children: diffContent ? diffContent.split("\n").map((line, i) => {
23736
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 bg-canvas border border-border rounded-lg p-4 overflow-y-auto custom-scrollbar font-mono text-sm whitespace-pre-wrap", children: diffContent ? diffContent.split("\n").map((line, i) => {
23662
23737
  if (line.startsWith("+"))
23663
23738
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-green-400 bg-green-900/20", children: line }, i);
23664
23739
  if (line.startsWith("-"))
23665
23740
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-red-400 bg-red-900/20", children: line }, i);
23666
23741
  if (line.startsWith("@@"))
23667
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-blue-400 mt-2", children: line }, i);
23668
- return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-gray-300", children: line }, i);
23669
- }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-gray-500 text-center py-10", children: "Cannot show diff for binary files." }) })
23742
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-brand mt-2", children: line }, i);
23743
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-secondary", children: line }, i);
23744
+ }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-secondary opacity-70 text-center py-10", children: "Cannot show diff for binary files." }) })
23670
23745
  ] })
23671
23746
  },
23672
23747
  "collision"
@@ -23679,11 +23754,11 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23679
23754
  exit: { opacity: 0 },
23680
23755
  className: "space-y-6",
23681
23756
  children: [
23682
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-white font-semibold", children: "Commit & Push" }),
23683
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-[#1a1d27] p-4 rounded-lg border border-[#2a2d3d] flex justify-between items-center", children: [
23757
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-primary font-semibold", children: "Commit & Push" }),
23758
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface border border-border shadow-sm p-4 rounded-lg border border-border flex justify-between items-center", children: [
23684
23759
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23685
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-gray-400 text-xs mb-1", children: "Destination" }),
23686
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-white font-medium flex items-center gap-2", children: [
23760
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-secondary text-xs mb-1", children: "Destination" }),
23761
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-primary font-medium flex items-center gap-2", children: [
23687
23762
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23688
23763
  "img",
23689
23764
  {
@@ -23693,14 +23768,14 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23693
23768
  ),
23694
23769
  selectedRepo.name,
23695
23770
  " ",
23696
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, { className: "text-gray-600" }),
23771
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowRight, { className: "text-secondary opacity-50" }),
23697
23772
  " ",
23698
23773
  isNewBranch ? newBranchName : selectedBranch
23699
23774
  ] })
23700
23775
  ] }),
23701
23776
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-right", children: [
23702
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-gray-400 text-xs mb-1", children: "Changes" }),
23703
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-white font-medium", children: [
23777
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-secondary text-xs mb-1", children: "Changes" }),
23778
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-primary font-medium", children: [
23704
23779
  collisions.modified.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-yellow-400 mr-2", children: [
23705
23780
  collisions.modified.length,
23706
23781
  " modified"
@@ -23717,13 +23792,13 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23717
23792
  ] })
23718
23793
  ] }),
23719
23794
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
23720
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-gray-400 text-sm mb-2", children: "Commit Message" }),
23795
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "block text-secondary text-sm mb-2", children: "Commit Message" }),
23721
23796
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23722
23797
  "textarea",
23723
23798
  {
23724
23799
  value: commitMessage,
23725
23800
  onChange: (e) => setCommitMessage(e.target.value),
23726
- className: "w-full bg-[#1a1d27] border border-[#2a2d3d] rounded-lg p-3 text-white focus:outline-none focus:border-blue-500 resize-none h-24",
23801
+ className: "w-full bg-surface border border-border shadow-sm border border-border rounded-lg p-3 text-primary focus:outline-none focus:border-brand resize-none h-24",
23727
23802
  placeholder: "E.g., Added new logo assets"
23728
23803
  }
23729
23804
  )
@@ -23733,7 +23808,7 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23733
23808
  {
23734
23809
  onClick: handleCommit,
23735
23810
  disabled: !commitMessage.trim(),
23736
- className: "px-6 py-2 bg-blue-500 text-white font-semibold rounded-lg hover:bg-blue-600 disabled:opacity-50 flex items-center gap-2",
23811
+ className: "px-6 py-2 bg-brand text-primary font-semibold rounded-lg hover:bg-brand brightness-110 disabled:opacity-50 flex items-center gap-2",
23737
23812
  children: [
23738
23813
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiGithub, {}),
23739
23814
  " Push Now"
@@ -23753,8 +23828,8 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23753
23828
  className: "flex flex-col items-center justify-center h-full gap-4",
23754
23829
  children: [
23755
23830
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-12 h-12 border-4 border-purple-500/30 border-t-purple-500 rounded-full animate-spin" }),
23756
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-white font-medium text-lg", children: "Pushing to GitHub..." }),
23757
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-gray-500 text-sm font-mono", children: [
23831
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-primary font-medium text-lg", children: "Pushing to GitHub..." }),
23832
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-secondary opacity-70 text-sm font-mono", children: [
23758
23833
  selectedRepo?.name,
23759
23834
  " : ",
23760
23835
  isNewBranch ? newBranchName : selectedBranch
@@ -23771,11 +23846,11 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23771
23846
  className: "flex flex-col items-center justify-center h-full gap-4 text-center",
23772
23847
  children: [
23773
23848
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 h-16 bg-green-500/20 text-green-400 rounded-full flex items-center justify-center mb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheck, { size: 32 }) }),
23774
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-2xl text-white font-semibold", children: "Push Successful!" }),
23775
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-gray-400", children: [
23849
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-2xl text-primary font-semibold", children: "Push Successful!" }),
23850
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-secondary", children: [
23776
23851
  "Your files were successfully pushed to ",
23777
23852
  /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
23778
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-blue-400", children: selectedRepo?.name }),
23853
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-brand", children: selectedRepo?.name }),
23779
23854
  " on branch",
23780
23855
  " ",
23781
23856
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-purple-400", children: isNewBranch ? newBranchName : selectedBranch }),
@@ -23801,13 +23876,13 @@ function UniversalPushWizard({ isOpen, onClose, onAutoHealTrigger }) {
23801
23876
  className: "flex flex-col items-center justify-center h-full gap-4 text-center",
23802
23877
  children: [
23803
23878
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-16 h-16 bg-red-500/20 text-red-400 rounded-full flex items-center justify-center mb-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiX, { size: 32 }) }),
23804
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-white font-semibold", children: "Operation Failed" }),
23805
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-gray-400 text-sm max-w-sm whitespace-pre-wrap", children: errorMsg }),
23879
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl text-primary font-semibold", children: "Operation Failed" }),
23880
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-secondary text-sm max-w-sm whitespace-pre-wrap", children: errorMsg }),
23806
23881
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23807
23882
  "button",
23808
23883
  {
23809
23884
  onClick: () => setStep("START"),
23810
- className: "mt-4 px-6 py-2 bg-[#2a2d3d] text-white rounded-lg hover:bg-[#3a3d4d]",
23885
+ className: "mt-4 px-6 py-2 bg-surface-hover text-primary rounded-lg hover:bg-surface-hover",
23811
23886
  children: "Try Again"
23812
23887
  }
23813
23888
  )
@@ -23827,198 +23902,342 @@ function WelcomeWizard({ onComplete }) {
23827
23902
  const [pinInput, setPinInput] = reactExports.useState("");
23828
23903
  const [isFinishing, setIsFinishing] = reactExports.useState(false);
23829
23904
  const [authError, setAuthError] = reactExports.useState("");
23905
+ const [isCopied, setIsCopied] = reactExports.useState(false);
23906
+ const copyCodeToClipboard = reactExports.useCallback(async (codeToCopy) => {
23907
+ const code = codeToCopy || deviceFlowData?.user_code;
23908
+ if (!code) return;
23909
+ try {
23910
+ await navigator.clipboard.writeText(code);
23911
+ setIsCopied(true);
23912
+ setTimeout(() => setIsCopied(false), 2500);
23913
+ } catch (err) {
23914
+ console.warn("Failed to copy to clipboard", err);
23915
+ }
23916
+ }, [deviceFlowData]);
23830
23917
  const startAuth = async () => {
23831
23918
  try {
23832
23919
  setAuthStatus("waiting");
23920
+ setAuthError("");
23833
23921
  const data = await window.api.startDeviceFlow();
23834
23922
  setDeviceFlowData(data);
23835
- if (data.verification_uri_complete) {
23836
- await window.api.openExternal(data.verification_uri_complete);
23837
- } else {
23838
- await window.api.openExternal(data.verification_uri);
23923
+ if (data?.user_code) {
23924
+ copyCodeToClipboard(data.user_code);
23839
23925
  }
23840
- await window.api.pollDeviceFlow(data.device_code, data.interval * 1e3);
23926
+ await window.api.pollDeviceFlow(data.device_code, (data.interval || 5) * 1e3);
23841
23927
  setAuthStatus("success");
23842
23928
  setTimeout(() => {
23843
23929
  setStep(3);
23844
- }, 1500);
23930
+ }, 1200);
23845
23931
  } catch (e) {
23846
23932
  setAuthStatus("error");
23847
- setAuthError(e.message);
23933
+ setAuthError(e.message || "Authentication timed out or failed.");
23848
23934
  }
23849
23935
  };
23850
- const handleNumpadPress = (key) => {
23851
- if (pinInput.length < 3) {
23852
- const next = pinInput + key;
23853
- setPinInput(next);
23854
- if (next.length === 3) {
23855
- localStorage.setItem("gitelectron-pin", next);
23856
- setTimeout(() => {
23857
- setStep(4);
23858
- }, 500);
23936
+ const handleNumpadPress = reactExports.useCallback((key) => {
23937
+ setPinInput((prev) => {
23938
+ if (prev.length < 3) {
23939
+ const next = prev + key;
23940
+ if (next.length === 3) {
23941
+ localStorage.setItem("gitelectron-pin", next);
23942
+ setTimeout(() => {
23943
+ setStep(4);
23944
+ }, 450);
23945
+ }
23946
+ return next;
23859
23947
  }
23860
- }
23861
- };
23862
- const handleNumpadDelete = () => {
23948
+ return prev;
23949
+ });
23950
+ }, []);
23951
+ const handleNumpadDelete = reactExports.useCallback(() => {
23863
23952
  setPinInput((prev) => prev.slice(0, -1));
23864
- };
23953
+ }, []);
23954
+ const handleNumpadClear = reactExports.useCallback(() => {
23955
+ setPinInput("");
23956
+ }, []);
23957
+ reactExports.useEffect(() => {
23958
+ if (step !== 3) return;
23959
+ const handleKeyDown = (e) => {
23960
+ const targetTag = e.target?.tagName;
23961
+ if (targetTag === "INPUT" || targetTag === "TEXTAREA") return;
23962
+ if (e.key >= "0" && e.key <= "9" || e.key === "*" || e.key === "#") {
23963
+ e.preventDefault();
23964
+ handleNumpadPress(e.key);
23965
+ } else if (e.key === "Backspace") {
23966
+ e.preventDefault();
23967
+ handleNumpadDelete();
23968
+ } else if (e.key === "Escape" || e.key === "Delete") {
23969
+ e.preventDefault();
23970
+ handleNumpadClear();
23971
+ }
23972
+ };
23973
+ window.addEventListener("keydown", handleKeyDown);
23974
+ return () => window.removeEventListener("keydown", handleKeyDown);
23975
+ }, [step, handleNumpadPress, handleNumpadDelete, handleNumpadClear]);
23865
23976
  const finishSetup = () => {
23866
23977
  setIsFinishing(true);
23867
23978
  localStorage.setItem("gitelectron-welcomed", "true");
23868
23979
  setTimeout(() => {
23869
23980
  onComplete();
23870
- }, 1e3);
23981
+ }, 600);
23871
23982
  };
23872
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fixed inset-0 z-[999] bg-gray-900 text-white font-sans flex items-center justify-center overflow-hidden animate-fade-in p-4 sm:p-6", children: [
23873
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute inset-0 z-0 opacity-20 pointer-events-none", children: [
23874
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute top-[-20%] left-[-10%] w-[50%] h-[50%] bg-blue-600 rounded-full blur-[120px] mix-blend-screen animate-pulse" }),
23875
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute bottom-[-20%] right-[-10%] w-[60%] h-[60%] bg-purple-600 rounded-full blur-[150px] mix-blend-screen animate-pulse animation-delay-2000" })
23983
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "fixed inset-0 z-[999] bg-gray-950/90 backdrop-blur-md text-white font-sans flex items-center justify-center p-3 sm:p-5 md:p-6 overflow-hidden animate-fade-in select-none", children: [
23984
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute inset-0 z-0 opacity-25 pointer-events-none overflow-hidden", children: [
23985
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute -top-32 -left-32 w-96 h-96 sm:w-[480px] sm:h-[480px] bg-blue-600 rounded-full blur-[140px] mix-blend-screen animate-pulse" }),
23986
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute -bottom-32 -right-32 w-96 h-96 sm:w-[500px] sm:h-[500px] bg-purple-600 rounded-full blur-[160px] mix-blend-screen animate-pulse animation-delay-2000" })
23876
23987
  ] }),
23877
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative z-10 w-full max-w-2xl max-h-[90vh] bg-surface rounded-2xl shadow-2xl overflow-hidden flex flex-col", children: [
23878
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-1.5 w-full bg-surface-hover shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
23988
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative z-10 w-full max-w-xl sm:max-w-2xl max-h-[94vh] bg-surface/95 backdrop-blur-2xl rounded-2xl sm:rounded-3xl border border-white/10 shadow-[0_25px_60px_-15px_rgba(0,0,0,0.7)] overflow-hidden flex flex-col", children: [
23989
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 bg-surface/60 border-b border-border/40 px-5 sm:px-7 py-3 flex items-center justify-between", children: [
23990
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-2", children: step > 1 && step < 4 ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
23991
+ "button",
23992
+ {
23993
+ type: "button",
23994
+ onClick: () => setStep((s) => s - 1),
23995
+ className: "px-2.5 py-1 text-gray-400 hover:text-white hover:bg-white/10 rounded-lg transition-colors flex items-center gap-1.5 text-xs font-medium cursor-pointer",
23996
+ title: "Go to previous step",
23997
+ children: [
23998
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiArrowLeft, { className: "text-sm" }),
23999
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Back" })
24000
+ ]
24001
+ }
24002
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs font-semibold text-gray-400", children: [
24003
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-2 h-2 rounded-full bg-blue-500 animate-pulse" }),
24004
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Quick Setup" })
24005
+ ] }) }),
24006
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2.5", children: [
24007
+ [1, 2, 3, 4].map((s) => /* @__PURE__ */ jsxRuntimeExports.jsx(
24008
+ "div",
24009
+ {
24010
+ className: `transition-all duration-300 rounded-full ${s === step ? "w-7 h-1.5 bg-gradient-to-r from-blue-500 to-purple-500" : s < step ? "w-1.5 h-1.5 bg-blue-500" : "w-1.5 h-1.5 bg-gray-700"}`
24011
+ },
24012
+ s
24013
+ )),
24014
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs font-medium text-gray-400 ml-2", children: [
24015
+ "Step ",
24016
+ step,
24017
+ " of 4"
24018
+ ] })
24019
+ ] })
24020
+ ] }),
24021
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-1 w-full bg-surface-hover/80 shrink-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
23879
24022
  "div",
23880
24023
  {
23881
- className: "h-full bg-gradient-to-r from-blue-500 to-purple-500 transition-all duration-700 ease-out",
23882
- style: { width: `${(step - 1) / 3 * 100}%` }
24024
+ className: "h-full bg-gradient-to-r from-blue-500 via-indigo-500 to-purple-500 transition-all duration-500 ease-out",
24025
+ style: { width: `${step / 4 * 100}%` }
23883
24026
  }
23884
24027
  ) }),
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: [
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: [
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
- ),
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" }),
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." }),
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: [
23898
- /* @__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: [
23899
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-semibold text-blue-400 mb-2 text-base sm:text-lg", children: "Invisible Auto-Sync" }),
23900
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs sm:text-sm text-gray-400 leading-relaxed", children: "Silently watches your files and pushes to GitHub automatically." })
23901
- ] }),
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: [
23903
- /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-semibold text-purple-400 mb-2 text-base sm:text-lg", children: "Universal CLI" }),
23904
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs sm:text-sm text-gray-400 leading-relaxed", children: [
24028
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "p-5 sm:p-7 md:p-8 flex-1 overflow-y-auto custom-scrollbar flex flex-col items-center", children: [
24029
+ step === 1 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 my-auto flex flex-col items-center justify-center text-center animate-fade-in w-full max-w-lg mx-auto py-2", children: [
24030
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 relative mb-5 sm:mb-6", children: [
24031
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-blue-500/30 rounded-full blur-2xl animate-pulse" }),
24032
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24033
+ "img",
24034
+ {
24035
+ src: logo,
24036
+ alt: "GitElectron Logo",
24037
+ className: "w-18 h-18 sm:w-22 sm:h-22 relative z-10 drop-shadow-[0_0_25px_rgba(59,130,246,0.6)] object-contain"
24038
+ }
24039
+ )
24040
+ ] }),
24041
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "shrink-0 text-3xl sm:text-4xl font-extrabold mb-2.5 tracking-tight bg-gradient-to-r from-white via-gray-100 to-gray-300 bg-clip-text text-transparent", children: "Welcome to GitElectron" }),
24042
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "shrink-0 text-sm sm:text-base text-gray-300 mb-6 sm:mb-8 font-light max-w-md px-2 leading-relaxed", children: "I just write code. GitElectron takes care of Git." }),
24043
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 grid grid-cols-1 sm:grid-cols-2 gap-3.5 sm:gap-4.5 w-full mb-6 sm:mb-8 text-left", children: [
24044
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-surface-hover/40 backdrop-blur-md p-4 sm:p-5 rounded-2xl border border-white/10 flex flex-col justify-between transition-all duration-300 hover:border-blue-500/40 hover:bg-surface-hover/70 shadow-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
24045
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-8 h-8 rounded-lg bg-blue-500/10 border border-blue-500/20 flex items-center justify-center text-blue-400 mb-2.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiRefreshCw, { className: "text-base" }) }),
24046
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-bold text-white text-sm sm:text-base mb-1", children: "Invisible Auto-Sync" }),
24047
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-gray-300 leading-relaxed font-normal", children: "Silently watches your files and pushes to GitHub automatically in the background." })
24048
+ ] }) }),
24049
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-surface-hover/40 backdrop-blur-md p-4 sm:p-5 rounded-2xl border border-white/10 flex flex-col justify-between transition-all duration-300 hover:border-purple-500/40 hover:bg-surface-hover/70 shadow-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
24050
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-8 h-8 rounded-lg bg-purple-500/10 border border-purple-500/20 flex items-center justify-center text-purple-400 mb-2.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiTerminal, { className: "text-base" }) }),
24051
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "font-bold text-white text-sm sm:text-base mb-1", children: "Universal CLI" }),
24052
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs text-gray-300 leading-relaxed font-normal", children: [
23905
24053
  "Run",
23906
24054
  " ",
23907
- /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "bg-canvas px-1 py-0.5 rounded text-purple-300", children: "gitelectron open" }),
24055
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "bg-black/50 px-1.5 py-0.5 rounded text-purple-300 font-mono text-xs border border-purple-500/20", children: "gitelectron open" }),
23908
24056
  " ",
23909
24057
  "from any terminal to launch instantly."
23910
24058
  ] })
23911
- ] })
24059
+ ] }) })
23912
24060
  ] }),
23913
24061
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
23914
24062
  "button",
23915
24063
  {
24064
+ type: "button",
23916
24065
  onClick: () => setStep(2),
23917
- className: "group relative px-6 sm:px-8 py-3 bg-blue-600 hover:bg-blue-500 text-white rounded-full font-bold transition-all shadow-[0_0_20px_rgba(37,99,235,0.4)] hover:shadow-[0_0_30px_rgba(37,99,235,0.6)] flex items-center gap-2 mt-auto",
24066
+ className: "shrink-0 group relative px-8 sm:px-10 py-3 sm:py-3.5 bg-gradient-to-r from-blue-600 to-indigo-600 hover:from-blue-500 hover:to-indigo-500 text-white rounded-full font-bold text-sm sm:text-base transition-all duration-300 shadow-[0_0_25px_rgba(37,99,235,0.4)] hover:shadow-[0_0_35px_rgba(37,99,235,0.6)] hover:scale-[1.02] active:scale-[0.98] flex items-center gap-2 cursor-pointer",
23918
24067
  children: [
23919
- "Get Started",
23920
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiChevronRight, { className: "group-hover:translate-x-1 transition-transform" })
24068
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Get Started" }),
24069
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiChevronRight, { className: "text-lg group-hover:translate-x-1 transition-transform" })
23921
24070
  ]
23922
24071
  }
23923
24072
  )
23924
24073
  ] }),
23925
- step === 2 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center flex-grow animate-fade-in py-4", children: [
23926
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiGithub, { className: "text-5xl sm:text-6xl text-gray-300 mb-6" }),
23927
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl sm:text-3xl font-bold mb-3", children: "Connect GitHub" }),
23928
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm sm:text-base text-gray-400 mb-8 text-center max-w-md px-4", children: "Securely link your GitHub account using OAuth. Your credentials are encrypted locally by your OS keychain." }),
23929
- authStatus === "pending" && /* @__PURE__ */ jsxRuntimeExports.jsxs(
24074
+ step === 2 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 my-auto flex flex-col items-center justify-center text-center animate-fade-in w-full max-w-lg mx-auto py-2", children: [
24075
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 relative mb-4 sm:mb-5", children: [
24076
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-white/10 rounded-full blur-xl" }),
24077
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiGithub, { className: "text-5xl sm:text-6xl text-white relative z-10 drop-shadow-[0_0_15px_rgba(255,255,255,0.2)]" })
24078
+ ] }),
24079
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "shrink-0 text-2xl sm:text-3xl font-extrabold mb-2 text-white", children: "Connect GitHub" }),
24080
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "shrink-0 text-xs sm:text-sm text-gray-300 mb-6 sm:mb-8 max-w-md px-2 leading-relaxed", children: "Securely link your GitHub account using OAuth. Your credentials are encrypted locally by your OS keychain." }),
24081
+ authStatus === "pending" && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "shrink-0 flex flex-col items-center gap-4 w-full max-w-xs", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
23930
24082
  "button",
23931
24083
  {
24084
+ type: "button",
23932
24085
  onClick: startAuth,
23933
- className: "px-6 sm:px-8 py-3 bg-surface-hover hover:bg-border text-white rounded-full font-bold transition-colors border border-border flex items-center gap-3",
24086
+ className: "w-full py-3.5 px-6 bg-white hover:bg-gray-100 text-gray-950 rounded-xl font-bold text-sm sm:text-base transition-all shadow-[0_0_25px_rgba(255,255,255,0.25)] hover:shadow-[0_0_35px_rgba(255,255,255,0.4)] hover:scale-[1.02] active:scale-[0.98] flex items-center justify-center gap-3 cursor-pointer",
23934
24087
  children: [
23935
24088
  /* @__PURE__ */ jsxRuntimeExports.jsx(FiGithub, { className: "text-xl" }),
23936
- "Authenticate Now"
24089
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Authenticate with GitHub" })
23937
24090
  ]
23938
24091
  }
23939
- ),
23940
- authStatus === "waiting" && deviceFlowData && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface/80 p-5 sm:p-6 rounded-xl border border-border text-center w-full max-w-sm", children: [
23941
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-400 mb-2", children: "Your Device Code:" }),
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 }),
23943
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs sm:text-sm text-gray-500 mb-4 px-2", children: [
23944
- "Your browser should open automatically. If not, go to",
23945
- /* @__PURE__ */ jsxRuntimeExports.jsx(
23946
- "a",
24092
+ ) }),
24093
+ authStatus === "waiting" && deviceFlowData && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 w-full max-w-md bg-surface-hover/40 backdrop-blur-md p-5 sm:p-6 rounded-2xl border border-white/10 shadow-2xl flex flex-col items-center gap-4", children: [
24094
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 flex items-center justify-between w-full px-1", children: [
24095
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-semibold uppercase tracking-wider text-gray-400", children: "Your One-Time Device Code:" }),
24096
+ isCopied && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-xs font-bold text-emerald-400 flex items-center gap-1 animate-fade-in", children: [
24097
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheck, { className: "text-xs" }),
24098
+ " Auto-copied!"
24099
+ ] })
24100
+ ] }),
24101
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 w-full bg-black/70 rounded-2xl border border-blue-500/40 p-3.5 sm:p-4 flex items-center justify-between gap-3 shadow-[0_0_25px_rgba(59,130,246,0.15)]", children: [
24102
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-mono text-2xl sm:text-3xl tracking-widest text-blue-400 font-extrabold select-all pl-2", children: deviceFlowData.user_code }),
24103
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
24104
+ "button",
23947
24105
  {
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
24106
+ type: "button",
24107
+ onClick: () => copyCodeToClipboard(),
24108
+ className: `px-3 py-2 rounded-xl font-bold text-xs flex items-center gap-1.5 transition-all cursor-pointer ${isCopied ? "bg-emerald-500/20 text-emerald-300 border border-emerald-500/40" : "bg-blue-500/20 hover:bg-blue-500/30 text-blue-300 hover:text-white border border-blue-500/40 active:scale-95"}`,
24109
+ title: "Copy code to clipboard",
24110
+ children: [
24111
+ isCopied ? /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheck, { className: "text-sm" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(FiCopy, { className: "text-sm" }),
24112
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isCopied ? "Copied" : "Copy Code" })
24113
+ ]
23953
24114
  }
23954
24115
  )
23955
24116
  ] }),
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" }) })
24117
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 w-full flex flex-col gap-2 text-center", children: [
24118
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
24119
+ "button",
24120
+ {
24121
+ type: "button",
24122
+ onClick: () => window.api.openExternal(
24123
+ deviceFlowData.verification_uri_complete || deviceFlowData.verification_uri
24124
+ ),
24125
+ className: "w-full py-2.5 px-4 bg-blue-600 hover:bg-blue-500 text-white rounded-xl text-xs sm:text-sm font-bold flex items-center justify-center gap-2 transition-all shadow-[0_0_15px_rgba(37,99,235,0.3)] cursor-pointer",
24126
+ children: [
24127
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Open GitHub Device Verification" }),
24128
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiExternalLink, { className: "text-sm" })
24129
+ ]
24130
+ }
24131
+ ),
24132
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] text-gray-400", children: "Browser tab already opened automatically. If closed, click button above." })
24133
+ ] }),
24134
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 flex items-center gap-2 text-xs text-gray-300 bg-black/40 px-3.5 py-1.5 rounded-full border border-white/10", children: [
24135
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-3 h-3 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }),
24136
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Waiting for browser approval..." })
24137
+ ] })
23957
24138
  ] }),
23958
- authStatus === "success" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center text-green-400", children: [
23959
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: "text-5xl mb-3" }),
23960
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-bold text-lg text-center", children: "Successfully Authenticated!" })
24139
+ authStatus === "success" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 flex flex-col items-center text-emerald-400 animate-fade-in py-5", children: [
24140
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative mb-3", children: [
24141
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: "text-5xl sm:text-6xl text-emerald-400" }),
24142
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-emerald-500 rounded-full blur-xl opacity-40" })
24143
+ ] }),
24144
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-xl font-bold text-white mb-1", children: "Successfully Authenticated!" }),
24145
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-gray-300", children: "GitHub account connected. Proceeding to security setup..." })
23961
24146
  ] }),
23962
- authStatus === "error" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center", children: [
23963
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-red-400 font-bold mb-2", children: "Authentication Failed" }),
23964
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 mb-4 px-4", children: authError }),
24147
+ authStatus === "error" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 w-full max-w-sm bg-red-950/40 border border-red-500/30 p-5 rounded-2xl text-center flex flex-col gap-3", children: [
24148
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiAlertCircle, { className: "text-2xl text-red-400 mx-auto" }),
24149
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
24150
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h3", { className: "text-sm font-bold text-red-300 mb-0.5", children: "Authentication Failed" }),
24151
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-gray-300", children: authError })
24152
+ ] }),
23965
24153
  /* @__PURE__ */ jsxRuntimeExports.jsx(
23966
24154
  "button",
23967
24155
  {
24156
+ type: "button",
23968
24157
  onClick: () => setAuthStatus("pending"),
23969
- className: "text-blue-400 hover:underline",
24158
+ className: "w-full py-2 bg-blue-600 hover:bg-blue-500 text-white rounded-lg text-xs font-bold transition-all cursor-pointer",
23970
24159
  children: "Try Again"
23971
24160
  }
23972
24161
  )
23973
24162
  ] })
23974
24163
  ] }),
23975
- step === 3 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center flex-grow animate-fade-in py-4", children: [
23976
- /* @__PURE__ */ jsxRuntimeExports.jsx(FiShield, { className: "text-4xl sm:text-5xl text-purple-400 mb-4" }),
23977
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-2xl sm:text-3xl font-bold mb-2 text-center", children: "Set Lockscreen PIN" }),
23978
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm sm:text-base text-gray-400 mb-6 sm:mb-8 text-center max-w-sm px-4", children: "GitElectron locks itself when idle to protect your code. Enter a 3-digit PIN." }),
23979
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex gap-4 justify-center mb-6 sm:mb-8", children: [0, 1, 2].map((i) => /* @__PURE__ */ jsxRuntimeExports.jsx(
23980
- "div",
23981
- {
23982
- className: `w-3 h-3 sm:w-4 sm:h-4 rounded-full transition-all duration-300 ${i < pinInput.length ? "bg-purple-500 scale-110 shadow-[0_0_10px_rgba(168,85,247,0.8)]" : "bg-border"}`
23983
- },
23984
- i
23985
- )) }),
23986
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "grid grid-cols-3 gap-3 sm:gap-4 w-56 sm:w-64", children: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "0", "#"].map((key) => /* @__PURE__ */ jsxRuntimeExports.jsx(
24164
+ step === 3 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 my-auto flex flex-col items-center justify-center text-center animate-fade-in w-full max-w-sm mx-auto py-1", children: [
24165
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 relative mb-2", children: [
24166
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-purple-500/20 rounded-full blur-xl" }),
24167
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiShield, { className: "text-4xl text-purple-400 relative z-10" })
24168
+ ] }),
24169
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "shrink-0 text-xl sm:text-2xl font-extrabold mb-1 text-white", children: "Set Lockscreen PIN" }),
24170
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "shrink-0 text-xs text-gray-400 max-w-xs px-2 mb-2 leading-relaxed", children: "GitElectron locks itself when idle to protect your workspace." }),
24171
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "shrink-0 text-[11px] font-bold uppercase tracking-wider text-purple-300 mb-3", children: "Enter a 3-digit PIN" }),
24172
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "shrink-0 flex gap-4 sm:gap-5 justify-center items-center mb-4", children: [0, 1, 2].map((i) => {
24173
+ const isFilled = i < pinInput.length;
24174
+ const isCurrent = i === pinInput.length;
24175
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
24176
+ "div",
24177
+ {
24178
+ className: `shrink-0 transition-all duration-300 rounded-full flex items-center justify-center ${isFilled ? "w-4 h-4 sm:w-4.5 sm:h-4.5 bg-gradient-to-r from-purple-500 to-indigo-500 scale-125 shadow-[0_0_12px_rgba(168,85,247,0.9)]" : isCurrent ? "w-3.5 h-3.5 sm:w-4 sm:h-4 border-2 border-purple-400 bg-purple-400/20 scale-110" : "w-3 h-3 sm:w-3.5 sm:h-3.5 bg-gray-800 border border-gray-600"}`
24179
+ },
24180
+ i
24181
+ );
24182
+ }) }),
24183
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "shrink-0 w-56 sm:w-64 grid grid-cols-3 gap-2.5 sm:gap-3", children: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "*", "0", "#"].map((key) => /* @__PURE__ */ jsxRuntimeExports.jsx(
23987
24184
  "button",
23988
24185
  {
24186
+ type: "button",
23989
24187
  onClick: () => handleNumpadPress(key),
23990
- className: "w-full aspect-square flex items-center justify-center text-xl sm:text-2xl font-bold rounded-xl bg-surface-hover/80 hover:bg-surface border border-border transition-colors",
24188
+ className: "shrink-0 aspect-square flex items-center justify-center text-lg sm:text-xl font-bold rounded-2xl bg-surface-hover/80 hover:bg-surface-hover/50 active:scale-95 text-white border border-white/10 hover:border-purple-500/40 transition-all shadow-sm cursor-pointer select-none",
23991
24189
  children: key
23992
24190
  },
23993
24191
  key
23994
24192
  )) }),
23995
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-56 sm:w-64 mt-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
24193
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "shrink-0 w-56 sm:w-64 mt-2.5", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
23996
24194
  "button",
23997
24195
  {
24196
+ type: "button",
23998
24197
  onClick: handleNumpadDelete,
23999
24198
  disabled: pinInput.length === 0,
24000
- className: "w-full py-2 sm:py-3 flex items-center justify-center text-lg sm:text-xl font-bold rounded-xl bg-surface-hover/80 hover:bg-surface border border-border transition-colors text-gray-400 disabled:opacity-30 disabled:hover:bg-surface-hover/80",
24199
+ className: "shrink-0 w-full py-2 sm:py-2.5 flex items-center justify-center text-xs sm:text-sm font-bold rounded-xl bg-surface-hover/60 hover:bg-surface-hover active:scale-98 text-gray-300 hover:text-white border border-white/10 transition-all disabled:opacity-20 disabled:pointer-events-none cursor-pointer tracking-wider",
24001
24200
  children: "DEL"
24002
24201
  }
24003
- ) })
24202
+ ) }),
24203
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "shrink-0 text-[11px] text-gray-400 mt-3 font-medium", children: "Keyboard supported (0-9, *, #, Backspace)" })
24004
24204
  ] }),
24005
24205
  step === 4 && /* @__PURE__ */ jsxRuntimeExports.jsxs(
24006
24206
  "div",
24007
24207
  {
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`,
24208
+ className: `shrink-0 my-auto flex flex-col items-center justify-center text-center transition-all duration-500 w-full max-w-lg mx-auto py-2 ${isFinishing ? "opacity-0 scale-95" : "opacity-100 animate-fade-in"}`,
24009
24209
  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" })
24210
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 relative mb-5 sm:mb-6", children: [
24211
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-blue-500/30 rounded-full blur-2xl animate-pulse" }),
24212
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute -inset-2 bg-gradient-to-r from-blue-500 to-purple-500 rounded-full blur-lg opacity-40 animate-pulse" }),
24213
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-18 h-18 sm:w-22 sm:h-22 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center text-white shadow-2xl relative z-10", children: /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheckCircle, { className: "text-3xl sm:text-4xl text-white" }) })
24013
24214
  ] }),
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(
24215
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "shrink-0 text-2xl sm:text-3xl md:text-4xl font-extrabold mb-2.5 text-white tracking-tight", children: "You're All Set!" }),
24216
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "shrink-0 text-xs sm:text-sm md:text-base text-gray-300 mb-6 sm:mb-8 max-w-md px-2 leading-relaxed", children: "Your environment is secured and connected. You can now drag and drop any folder to start Auto-Syncing immediately." }),
24217
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "shrink-0 flex flex-wrap items-center justify-center gap-2.5 sm:gap-3 mb-6 sm:mb-8 max-w-md", children: [
24218
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 px-3 py-1.5 rounded-xl bg-white/5 border border-white/10 text-xs text-gray-300", children: [
24219
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheck, { className: "text-emerald-400" }),
24220
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Auto-Push Engine Primed" })
24221
+ ] }),
24222
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 px-3 py-1.5 rounded-xl bg-white/5 border border-white/10 text-xs text-gray-300", children: [
24223
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheck, { className: "text-emerald-400" }),
24224
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "OS Keychain Secured" })
24225
+ ] }),
24226
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 px-3 py-1.5 rounded-xl bg-white/5 border border-white/10 text-xs text-gray-300", children: [
24227
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiCheck, { className: "text-emerald-400" }),
24228
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Universal CLI Ready" })
24229
+ ] })
24230
+ ] }),
24231
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
24017
24232
  "button",
24018
24233
  {
24234
+ type: "button",
24019
24235
  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"
24236
+ className: "shrink-0 group relative px-8 sm:px-12 py-3.5 sm:py-4 bg-gradient-to-r from-blue-600 via-indigo-600 to-purple-600 hover:from-blue-500 hover:via-indigo-500 hover:to-purple-500 text-white rounded-full font-extrabold text-sm sm:text-base md:text-lg transition-all duration-300 shadow-[0_0_35px_rgba(99,102,241,0.5)] hover:shadow-[0_0_50px_rgba(99,102,241,0.7)] hover:scale-105 active:scale-95 flex items-center gap-2.5 cursor-pointer",
24237
+ children: [
24238
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Launch GitElectron" }),
24239
+ /* @__PURE__ */ jsxRuntimeExports.jsx(FiChevronRight, { className: "text-xl group-hover:translate-x-1.5 transition-transform" })
24240
+ ]
24022
24241
  }
24023
24242
  )
24024
24243
  ]
@@ -24593,7 +24812,7 @@ const CollaborationRepoView = ({
24593
24812
  collaboratedRepos.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 text-xs text-secondary flex-wrap px-1", children: [
24594
24813
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[11px] font-medium text-secondary/80", children: "Filter summary:" }),
24595
24814
  /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "inline-flex items-center gap-1 bg-surface border border-border px-2.5 py-1 rounded-lg font-mono text-[11px] text-primary", children: [
24596
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-2 h-2 rounded-full bg-emerald-400" }),
24815
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-2 h-2 rounded-full bg-white" }),
24597
24816
  connectedCount,
24598
24817
  " Connected"
24599
24818
  ] }),
@@ -24690,7 +24909,7 @@ const CollaborationRepoView = ({
24690
24909
  children: repo.name
24691
24910
  }
24692
24911
  ),
24693
- repo.private ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] bg-amber-500/10 text-amber-400 border border-amber-500/25 px-2 py-0.2 rounded-full font-medium flex-shrink-0", children: "Private" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] bg-emerald-500/10 text-emerald-400 border border-emerald-500/25 px-2 py-0.2 rounded-full font-medium flex-shrink-0", children: "Public" }),
24912
+ repo.private ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] bg-amber-500/10 text-amber-400 border border-amber-500/25 px-2 py-0.2 rounded-full font-medium flex-shrink-0", children: "Private" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] bg-emerald-500/10 text-white border border-emerald-500/25 px-2 py-0.2 rounded-full font-medium flex-shrink-0", children: "Public" }),
24694
24913
  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" })
24695
24914
  ] }),
24696
24915
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 mt-1 text-xs text-secondary min-w-0 flex-wrap", children: [
@@ -24734,7 +24953,7 @@ const CollaborationRepoView = ({
24734
24953
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-w-0 flex-1", children: savedPath ? isMissing ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
24735
24954
  "div",
24736
24955
  {
24737
- className: "inline-flex items-center gap-1.5 text-xs text-danger font-mono bg-danger/10 border border-danger/25 px-2.5 py-1 rounded-lg min-w-0 max-w-full truncate",
24956
+ className: "inline-flex items-center gap-1.5 text-xs text-danger font-mono bg-danger text-white border border-border px-2.5 py-1 rounded-lg min-w-0 max-w-full truncate",
24738
24957
  title: `Folder was deleted or moved: ${savedPath}`,
24739
24958
  children: [
24740
24959
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-danger animate-pulse flex-shrink-0" }),
@@ -24744,14 +24963,14 @@ const CollaborationRepoView = ({
24744
24963
  ) : /* @__PURE__ */ jsxRuntimeExports.jsxs(
24745
24964
  "div",
24746
24965
  {
24747
- className: "inline-flex items-center gap-1.5 text-xs text-emerald-400 font-mono bg-emerald-500/10 border border-emerald-500/25 px-2.5 py-1 rounded-lg min-w-0 max-w-full truncate",
24966
+ className: "inline-flex items-center gap-1.5 text-xs text-white font-mono bg-success text-white border border-border px-2.5 py-1 rounded-lg min-w-0 max-w-full truncate",
24748
24967
  title: savedPath,
24749
24968
  children: [
24750
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-emerald-400 flex-shrink-0" }),
24969
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-white flex-shrink-0" }),
24751
24970
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: savedPath.split("\\").pop() || savedPath })
24752
24971
  ]
24753
24972
  }
24754
- ) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-flex items-center gap-1.5 text-xs text-secondary/70 italic bg-canvas/60 border border-border/60 px-2.5 py-1 rounded-lg flex-shrink-0", children: [
24973
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "inline-flex items-center gap-1.5 text-xs text-secondary/70 italic bg-surface border border-border/60 px-2.5 py-1 rounded-lg flex-shrink-0", children: [
24755
24974
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-secondary/40" }),
24756
24975
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "Not cloned yet" })
24757
24976
  ] }) }),
@@ -24780,7 +24999,7 @@ const CollaborationRepoView = ({
24780
24999
  e.stopPropagation();
24781
25000
  onSyncCollabRepo(repo, savedPath);
24782
25001
  },
24783
- className: "px-2.5 py-1.5 text-xs font-semibold rounded-xl transition-all shadow-xs flex items-center gap-1 bg-blue-600/15 hover:bg-blue-600/25 text-blue-400 border border-blue-500/30",
25002
+ className: "px-2.5 py-1.5 text-xs font-semibold rounded-xl transition-all shadow-xs flex items-center gap-1 bg-brand hover:bg-brand-hover text-white border border-border",
24784
25003
  title: "Pull all latest team changes into this folder immediately",
24785
25004
  children: [
24786
25005
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "⬇️" }),
@@ -24826,7 +25045,7 @@ const CollaborationRepoView = ({
24826
25045
  e.stopPropagation();
24827
25046
  onRepoCardClick(repo);
24828
25047
  },
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"}`,
25048
+ 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 hover:bg-danger text-white 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
25049
  children: [
24831
25050
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: savedPath ? isMissing ? "Re-Clone" : "Open Repo" : "Clone" }),
24832
25051
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: isMissing ? "☁️" : savedPath ? "→" : "☁️" })
@@ -24857,83 +25076,176 @@ const AuthCodePrinter = ({ code }) => {
24857
25076
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "cutter-wrapper", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "cutter" }) })
24858
25077
  ] }) });
24859
25078
  };
25079
+ const ROW_HEIGHT = 30;
25080
+ const CONTAINER_HEIGHT = 280;
25081
+ const OVERSCAN = 10;
24860
25082
  const CommitReceiptPrinter = ({
24861
25083
  commit,
24862
25084
  onClose
24863
25085
  }) => {
24864
- const [isPrinted, setIsPrinted] = reactExports.useState(false);
25086
+ const [isPrinted, setIsPrinted] = reactExports.useState(true);
25087
+ const [searchQuery, setSearchQuery] = reactExports.useState("");
25088
+ const [scrollTop, setScrollTop] = reactExports.useState(0);
25089
+ const scrollRef = reactExports.useRef(null);
25090
+ const allFiles = reactExports.useMemo(() => {
25091
+ return commit?.diff?.files || [];
25092
+ }, [commit]);
25093
+ const filteredFiles = reactExports.useMemo(() => {
25094
+ if (!searchQuery.trim()) return allFiles;
25095
+ const q = searchQuery.toLowerCase().trim();
25096
+ return allFiles.filter((f) => f.file?.toLowerCase().includes(q));
25097
+ }, [allFiles, searchQuery]);
25098
+ const handleScroll = reactExports.useCallback((e) => {
25099
+ setScrollTop(e.currentTarget.scrollTop);
25100
+ }, []);
25101
+ const totalCount = filteredFiles.length;
25102
+ const totalVirtualHeight = totalCount * ROW_HEIGHT;
25103
+ const startIndex = Math.max(0, Math.floor(scrollTop / ROW_HEIGHT) - OVERSCAN);
25104
+ const endIndex = Math.min(
25105
+ totalCount,
25106
+ Math.ceil((scrollTop + CONTAINER_HEIGHT) / ROW_HEIGHT) + OVERSCAN
25107
+ );
25108
+ const visibleFiles = filteredFiles.slice(startIndex, endIndex);
25109
+ const offsetY = startIndex * ROW_HEIGHT;
25110
+ const handleSearchChange = (val) => {
25111
+ setSearchQuery(val);
25112
+ setScrollTop(0);
25113
+ if (scrollRef.current) {
25114
+ scrollRef.current.scrollTop = 0;
25115
+ }
25116
+ };
24865
25117
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: `commit-printer-wrapper ${isPrinted ? "is-printed" : ""}`, children: [
24866
25118
  onClose && /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "printer-close-btn", onClick: onClose, title: "Close Printer", children: "✕" }),
24867
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "printer" }),
24868
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "printer-display", children: [
24869
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "printer-message", children: " Click to print changes" }),
24870
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "letter-wrapper", children: [
24871
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "P" }),
24872
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "r" }),
24873
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "i" }),
24874
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "n" }),
24875
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "t" }),
24876
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "i" }),
24877
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "n" }),
24878
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "g" }),
24879
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "." }),
24880
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "." }),
24881
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "letter", children: "." })
24882
- ] })
25119
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "printer-machine-head", children: [
25120
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "printer" }),
25121
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "printer-display", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "printer-message", children: searchQuery ? `${filteredFiles.length} found` : `${allFiles.length} files` }) }),
25122
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
25123
+ "button",
25124
+ {
25125
+ className: "print-button",
25126
+ onClick: () => setIsPrinted(!isPrinted),
25127
+ title: isPrinted ? "Toggle Receipt" : "Print Receipt",
25128
+ children: "🖨"
25129
+ }
25130
+ )
24883
25131
  ] }),
24884
- /* @__PURE__ */ jsxRuntimeExports.jsx("button", { className: "print-button", onClick: () => setIsPrinted(true), children: "🖨" }),
25132
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "printer-slot-shadow" }),
24885
25133
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "receipt-wrapper", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "receipt", children: [
24886
25134
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "receipt-header", children: [
24887
- "Commit Changes ",
24888
- /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
24889
- "Hash: ",
24890
- commit.hash.substring(0, 7),
24891
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo", children: "🐙" })
25135
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
25136
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "receipt-title", children: "COMMIT RECEIPT" }),
25137
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "receipt-hash", children: [
25138
+ "#",
25139
+ commit.hash ? commit.hash.substring(0, 7) : "0000000"
25140
+ ] })
25141
+ ] }),
25142
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "logo text-gray-800 opacity-80", children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { height: "34", viewBox: "0 0 16 16", width: "34", fill: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" }) }) })
24892
25143
  ] }),
24893
25144
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "receipt-subheader", children: [
24894
- "Author: ",
24895
- commit.author_name,
24896
- " ",
24897
- /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
24898
- new Date(commit.date).toLocaleString()
24899
- ] }),
24900
- /* @__PURE__ */ jsxRuntimeExports.jsx("table", { className: "receipt-table", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("tbody", { children: [
24901
- /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { children: [
24902
- /* @__PURE__ */ jsxRuntimeExports.jsx("th", { children: "File" }),
24903
- /* @__PURE__ */ jsxRuntimeExports.jsx("th", { children: "Ins" }),
24904
- /* @__PURE__ */ jsxRuntimeExports.jsx("th", { children: "Del" })
25145
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
25146
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-semibold", children: "Author:" }),
25147
+ " ",
25148
+ commit.author_name || "Git User"
24905
25149
  ] }),
24906
- commit.diff?.files?.map((f, idx) => /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { children: [
24907
- /* @__PURE__ */ jsxRuntimeExports.jsx("td", { className: "truncate max-w-[120px]", title: f.file, children: f.file.split("/").pop() }),
24908
- /* @__PURE__ */ jsxRuntimeExports.jsxs("td", { className: "text-green-600 font-bold", children: [
24909
- "+",
24910
- f.insertions
24911
- ] }),
24912
- /* @__PURE__ */ jsxRuntimeExports.jsxs("td", { className: "text-red-600 font-bold", children: [
24913
- "-",
24914
- f.deletions
24915
- ] })
24916
- ] }, idx)),
25150
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: new Date(commit.date).toLocaleString() })
25151
+ ] }),
25152
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "receipt-search-bar", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
25153
+ "input",
25154
+ {
25155
+ type: "text",
25156
+ placeholder: `Search all ${allFiles.length.toLocaleString()} files...`,
25157
+ value: searchQuery,
25158
+ onChange: (e) => handleSearchChange(e.target.value),
25159
+ className: "receipt-search-input"
25160
+ }
25161
+ ) }),
25162
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "receipt-table-header", children: [
25163
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { width: "58%" }, children: "FILE" }),
25164
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { width: "21%", textAlign: "right" }, children: "INS" }),
25165
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: { width: "21%", textAlign: "right" }, children: "DEL" })
25166
+ ] }),
25167
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
25168
+ "div",
25169
+ {
25170
+ ref: scrollRef,
25171
+ className: "receipt-table-scroll custom-scrollbar",
25172
+ onScroll: handleScroll,
25173
+ style: { height: `${CONTAINER_HEIGHT}px` },
25174
+ children: filteredFiles.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "receipt-empty-state", children: "No matching files found." }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
25175
+ "div",
25176
+ {
25177
+ style: { height: `${totalVirtualHeight}px`, position: "relative", width: "100%" },
25178
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
25179
+ "div",
25180
+ {
25181
+ style: {
25182
+ position: "absolute",
25183
+ top: 0,
25184
+ left: 0,
25185
+ right: 0,
25186
+ transform: `translateY(${offsetY}px)`,
25187
+ willChange: "transform"
25188
+ },
25189
+ children: visibleFiles.map((f, idx) => {
25190
+ const actualIdx = startIndex + idx;
25191
+ const parts = f.file.split("/");
25192
+ const fileName = parts.pop() || f.file;
25193
+ const dirName = parts.length > 0 ? parts.join("/") + "/" : "";
25194
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
25195
+ "div",
25196
+ {
25197
+ className: "receipt-virtual-row",
25198
+ style: { height: `${ROW_HEIGHT}px` },
25199
+ children: [
25200
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "file-cell", title: f.file, style: { width: "58%" }, children: [
25201
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "file-name", children: fileName }),
25202
+ dirName && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "file-dir", children: dirName })
25203
+ ] }),
25204
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "ins-cell text-green-600 font-bold", style: { width: "21%" }, children: [
25205
+ "+",
25206
+ f.insertions || 0
25207
+ ] }),
25208
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "del-cell text-red-600 font-bold", style: { width: "21%" }, children: [
25209
+ "-",
25210
+ f.deletions || 0
25211
+ ] })
25212
+ ]
25213
+ },
25214
+ actualIdx
25215
+ );
25216
+ })
25217
+ }
25218
+ )
25219
+ }
25220
+ )
25221
+ }
25222
+ ),
25223
+ /* @__PURE__ */ jsxRuntimeExports.jsx("table", { className: "receipt-summary-table", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("tbody", { children: [
24917
25224
  /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "receipt-subtotal", children: [
24918
25225
  /* @__PURE__ */ jsxRuntimeExports.jsx("td", { colSpan: 2, children: "Files Changed" }),
24919
- /* @__PURE__ */ jsxRuntimeExports.jsx("td", { children: commit.diff?.changed || 0 })
25226
+ /* @__PURE__ */ jsxRuntimeExports.jsx("td", { children: (commit.diff?.changed || allFiles.length).toLocaleString() })
24920
25227
  ] }),
24921
25228
  /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "receipt-tax", children: [
24922
- /* @__PURE__ */ jsxRuntimeExports.jsx("td", { colSpan: 2, children: "Insertions" }),
25229
+ /* @__PURE__ */ jsxRuntimeExports.jsx("td", { colSpan: 2, children: "Total Insertions" }),
24923
25230
  /* @__PURE__ */ jsxRuntimeExports.jsxs("td", { className: "text-green-600 font-bold", children: [
24924
25231
  "+",
24925
- commit.diff?.insertions || 0
25232
+ (commit.diff?.insertions || 0).toLocaleString()
24926
25233
  ] })
24927
25234
  ] }),
24928
25235
  /* @__PURE__ */ jsxRuntimeExports.jsxs("tr", { className: "receipt-total", children: [
24929
- /* @__PURE__ */ jsxRuntimeExports.jsx("td", { colSpan: 2, children: "Deletions" }),
25236
+ /* @__PURE__ */ jsxRuntimeExports.jsx("td", { colSpan: 2, children: "Total Deletions" }),
24930
25237
  /* @__PURE__ */ jsxRuntimeExports.jsxs("td", { className: "text-red-600 font-bold", children: [
24931
25238
  "-",
24932
- commit.diff?.deletions || 0
25239
+ (commit.diff?.deletions || 0).toLocaleString()
24933
25240
  ] })
24934
25241
  ] })
24935
25242
  ] }) }),
24936
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "receipt-message text-center line-clamp-2", title: commit.message, children: commit.message })
25243
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "receipt-message", title: commit.message, children: [
25244
+ '"',
25245
+ commit.message,
25246
+ '"'
25247
+ ] }),
25248
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "receipt-barcode", children: "||| | |||| | ||| || |||| | || |||" })
24937
25249
  ] }) })
24938
25250
  ] });
24939
25251
  };
@@ -25450,7 +25762,7 @@ const THEMES = [
25450
25762
  { id: "dracula", name: "Dracula" },
25451
25763
  { id: "github-light", name: "GitHub Light" },
25452
25764
  { id: "nord", name: "Nord" },
25453
- { id: "one-dark-pro", name: "One Dark Pro" },
25765
+ { id: "retro-os", name: "Retro OS UI" },
25454
25766
  { id: "night-owl", name: "Night Owl" },
25455
25767
  { id: "tokyo-night", name: "Tokyo Night" },
25456
25768
  { id: "gruvbox-dark", name: "Gruvbox Dark" },
@@ -25474,7 +25786,8 @@ const THEMES = [
25474
25786
  { id: "dev-cpp-ocean", name: "Dev-C++ Ocean" },
25475
25787
  { id: "dev-cpp-matrix", name: "Dev-C++ Matrix" },
25476
25788
  { id: "dev-cpp-twilight", name: "Dev-C++ Twilight" },
25477
- { id: "turbo-cpp-classic", name: "Turbo C++ Classic" }
25789
+ { id: "turbo-cpp-classic", name: "Turbo C++ Classic" },
25790
+ { id: "game-rpg", name: "RPG Game UI" }
25478
25791
  ];
25479
25792
  function App() {
25480
25793
  const [repoPath, setRepoPath] = reactExports.useState(null);
@@ -25648,6 +25961,10 @@ function App() {
25648
25961
  const [pushFailureData, setPushFailureData] = reactExports.useState(null);
25649
25962
  const [gitErrorData, setGitErrorData] = reactExports.useState(null);
25650
25963
  const [showSettings, setShowSettings] = reactExports.useState(false);
25964
+ const [draftTheme, setDraftTheme] = reactExports.useState("github-dark");
25965
+ const [draftLang, setDraftLang] = reactExports.useState("en");
25966
+ const [draftDailyAuth, setDraftDailyAuth] = reactExports.useState(true);
25967
+ const [draftLockscreenSpace, setDraftLockscreenSpace] = reactExports.useState(true);
25651
25968
  const [showContributorsModal, setShowContributorsModal] = reactExports.useState(false);
25652
25969
  const [remoteUrl, setRemoteUrl] = reactExports.useState(null);
25653
25970
  const [gitConfig, setGitConfig] = reactExports.useState({ name: "", email: "" });
@@ -25802,14 +26119,28 @@ function App() {
25802
26119
  }
25803
26120
  }, [changesTab, collaboratedRepos.length]);
25804
26121
  reactExports.useEffect(() => {
26122
+ let invInterval = null;
25805
26123
  if (authStatus.status === "Verified") {
25806
26124
  window.api.getCollaboratedRepos().then((repos) => {
25807
26125
  setCollaboratedRepos(repos);
25808
26126
  }).catch((err) => console.error(err));
26127
+ window.api.getUserInvitations().then((invs) => {
26128
+ setInvitations(invs || []);
26129
+ }).catch((err) => console.error("Failed to fetch user invitations", err));
26130
+ invInterval = setInterval(() => {
26131
+ window.api.getUserInvitations().then((invs) => {
26132
+ setInvitations(invs || []);
26133
+ }).catch(() => {
26134
+ });
26135
+ }, 3e4);
25809
26136
  } else {
25810
26137
  setCollaboratedRepos([]);
26138
+ setInvitations([]);
25811
26139
  }
25812
- }, [authStatus.status]);
26140
+ return () => {
26141
+ if (invInterval) clearInterval(invInterval);
26142
+ };
26143
+ }, [authStatus.status, activeAccountId]);
25813
26144
  reactExports.useEffect(() => {
25814
26145
  window.api.getAuthStatus().then((auth) => {
25815
26146
  setAuthStatus(auth);
@@ -26312,11 +26643,6 @@ Are you SURE you want to link "${repoName}" to this folder?`
26312
26643
  await navigator.clipboard.writeText(data.user_code);
26313
26644
  } catch (err) {
26314
26645
  }
26315
- if (data.verification_uri_complete) {
26316
- await window.api.openExternal(data.verification_uri_complete);
26317
- } else {
26318
- await window.api.openExternal(data.verification_uri);
26319
- }
26320
26646
  await window.api.pollDeviceFlow(data.device_code, data.interval * 1e3);
26321
26647
  setShowAuthModal(false);
26322
26648
  const accs = await window.api.getAccounts();
@@ -26572,11 +26898,6 @@ Are you SURE you want to link "${repoName}" to this folder?`
26572
26898
  await navigator.clipboard.writeText(data.user_code);
26573
26899
  } catch (err) {
26574
26900
  }
26575
- if (data.verification_uri_complete) {
26576
- await window.api.openExternal(data.verification_uri_complete);
26577
- } else {
26578
- await window.api.openExternal(data.verification_uri);
26579
- }
26580
26901
  await window.api.pollDeviceFlow(data.device_code, data.interval * 1e3);
26581
26902
  setShowAuthModal(false);
26582
26903
  setIsDailyAuthMode(false);
@@ -26606,9 +26927,24 @@ Are you SURE you want to link "${repoName}" to this folder?`
26606
26927
  if (!email) email = `${activeAcc.username}@users.noreply.github.com`;
26607
26928
  }
26608
26929
  setGitConfig({ name: name || "", email: email || "" });
26930
+ setDraftTheme(theme);
26931
+ setDraftLang(lang);
26932
+ setDraftDailyAuth(dailyAuthEnabled);
26933
+ setDraftLockscreenSpace(enableLockscreenSpace);
26609
26934
  setShowSettings(true);
26610
26935
  };
26611
26936
  const saveSettings = async () => {
26937
+ setLang(draftLang);
26938
+ handleThemeChange(draftTheme);
26939
+ setDailyAuthEnabled(draftDailyAuth);
26940
+ localStorage.setItem("gitelectron-daily-auth", draftDailyAuth ? "true" : "false");
26941
+ setEnableLockscreenSpace(draftLockscreenSpace);
26942
+ localStorage.setItem("gitelectron-enable-space", draftLockscreenSpace ? "true" : "false");
26943
+ setShowSettings(false);
26944
+ showToast("Settings saved successfully", "success");
26945
+ };
26946
+ const cancelSettings = () => {
26947
+ document.documentElement.setAttribute("data-theme", theme);
26612
26948
  setShowSettings(false);
26613
26949
  };
26614
26950
  const viewDiff = async (file, staged) => {
@@ -26719,14 +27055,14 @@ Are you SURE you want to link "${repoName}" to this folder?`
26719
27055
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
26720
27056
  "div",
26721
27057
  {
26722
- "data-theme": theme,
27058
+ "data-theme": showSettings ? draftTheme : theme,
26723
27059
  className: "flex h-screen bg-canvas text-primary font-sans overflow-hidden transition-colors duration-300 select-none",
26724
27060
  onDragOver: handleDragOver,
26725
27061
  onDragLeave: handleDragLeave,
26726
27062
  onDrop: handleDrop,
26727
27063
  children: [
26728
- theme === "among-us-live" && /* @__PURE__ */ jsxRuntimeExports.jsx(AmongUsBackground, {}),
26729
- theme === "space-explorer-3d" && /* @__PURE__ */ jsxRuntimeExports.jsx(SpaceExplorerBackground, {}),
27064
+ (showSettings ? draftTheme : theme) === "among-us-live" && /* @__PURE__ */ jsxRuntimeExports.jsx(AmongUsBackground, {}),
27065
+ (showSettings ? draftTheme : theme) === "space-explorer-3d" && /* @__PURE__ */ jsxRuntimeExports.jsx(SpaceExplorerBackground, {}),
26730
27066
  showWelcomeWizard && /* @__PURE__ */ jsxRuntimeExports.jsx(WelcomeWizard, { onComplete: () => setShowWelcomeWizard(false) }),
26731
27067
  gitErrorData && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0 bg-black/70 backdrop-blur-md flex items-center justify-center z-[150] p-6 animate-fade-in", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-surface/95 border border-danger/50 rounded-2xl shadow-2xl w-full max-w-lg overflow-hidden flex flex-col p-6", children: [
26732
27068
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-xl font-bold text-danger mb-4", children: "Git Error" }),
@@ -26755,7 +27091,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
26755
27091
  ] }),
26756
27092
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26757
27093
  /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-medium text-primary mb-1", children: "AI Proposed Fix" }),
26758
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-brand/10 border border-brand/20 p-3 rounded text-sm text-brand", children: autoSyncErrorPayload.proposedFix })
27094
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "bg-brand text-white border border-brand/20 p-3 rounded text-sm text-brand", children: autoSyncErrorPayload.proposedFix })
26759
27095
  ] }),
26760
27096
  autoSyncErrorPayload.files && autoSyncErrorPayload.files.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
26761
27097
  /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-sm font-medium text-primary mb-1", children: "Affected Files" }),
@@ -26926,8 +27262,8 @@ Are you SURE you want to link "${repoName}" to this folder?`
26926
27262
  CustomDropdown,
26927
27263
  {
26928
27264
  options: LANGUAGES.map((l) => ({ value: l.id, label: l.name })),
26929
- value: lang,
26930
- onChange: (val) => setLang(val),
27265
+ value: draftLang,
27266
+ onChange: (val) => setDraftLang(val),
26931
27267
  buttonClassName: "w-full bg-surface border border-border rounded-lg p-2.5 text-primary focus:outline-none focus:border-accent transition-all cursor-pointer font-medium text-sm"
26932
27268
  }
26933
27269
  )
@@ -26938,8 +27274,11 @@ Are you SURE you want to link "${repoName}" to this folder?`
26938
27274
  CustomDropdown,
26939
27275
  {
26940
27276
  options: THEMES.map((t2) => ({ value: t2.id, label: t2.name })),
26941
- value: theme,
26942
- onChange: (val) => handleThemeChange(val),
27277
+ value: draftTheme,
27278
+ onChange: (val) => {
27279
+ setDraftTheme(val);
27280
+ document.documentElement.setAttribute("data-theme", val);
27281
+ },
26943
27282
  buttonClassName: "w-full bg-surface border border-border rounded-lg p-2.5 text-primary focus:outline-none focus:border-accent transition-all cursor-pointer font-medium text-sm"
26944
27283
  }
26945
27284
  )
@@ -26998,14 +27337,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
26998
27337
  {
26999
27338
  className: "toggle",
27000
27339
  type: "checkbox",
27001
- checked: dailyAuthEnabled,
27340
+ checked: draftDailyAuth,
27002
27341
  onChange: (e) => {
27003
27342
  const next = e.target.checked;
27004
- setDailyAuthEnabled(next);
27005
- localStorage.setItem(
27006
- "gitelectron-daily-auth",
27007
- next ? "true" : "false"
27008
- );
27343
+ setDraftDailyAuth(next);
27009
27344
  }
27010
27345
  }
27011
27346
  ),
@@ -27024,14 +27359,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
27024
27359
  {
27025
27360
  className: "toggle",
27026
27361
  type: "checkbox",
27027
- checked: enableLockscreenSpace,
27362
+ checked: draftLockscreenSpace,
27028
27363
  onChange: (e) => {
27029
27364
  const next = e.target.checked;
27030
- setEnableLockscreenSpace(next);
27031
- localStorage.setItem(
27032
- "gitelectron-enable-space",
27033
- next ? "true" : "false"
27034
- );
27365
+ setDraftLockscreenSpace(next);
27035
27366
  }
27036
27367
  }
27037
27368
  ),
@@ -27090,10 +27421,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
27090
27421
  {
27091
27422
  type: "button",
27092
27423
  onClick: () => {
27093
- setShowSettings(false);
27424
+ cancelSettings();
27094
27425
  handleStartAuth();
27095
27426
  },
27096
- className: "px-3 py-1.5 bg-brand/10 hover:bg-brand/20 text-brand text-xs font-bold rounded-lg border border-brand/20 transition-colors",
27427
+ className: "px-3 py-1.5 bg-brand text-white hover:bg-brand text-white text-brand text-xs font-bold rounded-lg border border-brand/20 transition-colors",
27097
27428
  children: [
27098
27429
  "+ ",
27099
27430
  t("addAccount")
@@ -27147,7 +27478,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
27147
27478
  setAccounts([]);
27148
27479
  setActiveAccountId(null);
27149
27480
  setPushPermission(false);
27150
- setShowSettings(false);
27481
+ cancelSettings();
27151
27482
  showToast("Successfully logged out", "success");
27152
27483
  } catch (e) {
27153
27484
  console.error("Logout failed", e);
@@ -27208,7 +27539,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
27208
27539
  await window.api.masterPush(remotes[0].name, status?.current || "main");
27209
27540
  showToast("Master Push successful!", "success");
27210
27541
  refreshRepoState();
27211
- setShowSettings(false);
27542
+ cancelSettings();
27212
27543
  } catch (err) {
27213
27544
  showToast(
27214
27545
  "Master Push failed: " + (err.message || "Unknown error"),
@@ -27234,7 +27565,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
27234
27565
  /* @__PURE__ */ jsxRuntimeExports.jsx(
27235
27566
  "button",
27236
27567
  {
27237
- onClick: () => setShowSettings(false),
27568
+ onClick: () => cancelSettings(),
27238
27569
  className: "px-6 py-2.5 bg-surface border-2 border-border hover:bg-surface-hover rounded-xl transition-all font-bold text-sm",
27239
27570
  children: t("cancel")
27240
27571
  }
@@ -27582,7 +27913,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
27582
27913
  }
27583
27914
  ),
27584
27915
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 pr-8 min-w-0", children: [
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(
27916
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-10 h-10 rounded-xl bg-brand text-white 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
27917
  "path",
27587
27918
  {
27588
27919
  strokeLinecap: "round",
@@ -28006,7 +28337,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28006
28337
  "button",
28007
28338
  {
28008
28339
  onClick: () => setShowUniversalWizard(true),
28009
- className: "w-full bg-gradient-to-r from-blue-600/20 to-purple-600/20 hover:from-blue-600/40 hover:to-purple-600/40 text-primary font-medium py-2 px-4 rounded-md transition-all border border-blue-500/30 text-sm flex items-center justify-center gap-2 shadow-sm",
28340
+ className: "w-full bg-brand hover:bg-brand-hover text-white font-medium py-2 px-4 rounded-md transition-all border border-border shadow-sm flex items-center justify-center gap-2",
28010
28341
  children: [
28011
28342
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-base", children: "🚀" }),
28012
28343
  " ",
@@ -28160,7 +28491,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28160
28491
  }
28161
28492
  ),
28162
28493
  t("collaborationRepo"),
28163
- collaboratedRepos.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-auto bg-brand/20 text-brand text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: collaboratedRepos.length })
28494
+ collaboratedRepos.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-auto bg-brand text-white text-brand text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: collaboratedRepos.length })
28164
28495
  ]
28165
28496
  }
28166
28497
  ),
@@ -28234,7 +28565,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28234
28565
  ] })
28235
28566
  ] }),
28236
28567
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 p-6 flex flex-col overflow-y-auto custom-scrollbar min-h-0 relative z-10", children: isRepo && status && branches ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col min-h-0 gap-4 mb-6 relative z-20", children: [
28237
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap justify-between items-center bg-surface/70 backdrop-blur-md border border-border p-3 rounded-xl transition-colors duration-300 gap-4 relative z-50", children: [
28568
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap justify-between items-center bg-surface backdrop-blur-md border border-border p-3 rounded-xl transition-colors duration-300 gap-4 relative z-50", children: [
28238
28569
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center gap-4 text-sm", children: [
28239
28570
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 relative", children: [
28240
28571
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-secondary", children: "Auth:" }),
@@ -28408,7 +28739,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28408
28739
  "button",
28409
28740
  {
28410
28741
  onClick: handleToggleAutoSync,
28411
- className: `px-2 py-1.5 rounded transition-colors flex items-center justify-center border font-medium ${autoSyncEnabled ? "bg-green-500/20 text-green-400 border-green-500/30" : "hover:bg-brand/20 text-brand border-brand/30"}`,
28742
+ className: `px-2 py-1.5 rounded transition-colors flex items-center justify-center border font-medium ${autoSyncEnabled ? "bg-green-500/20 text-green-400 border-green-500/30" : "hover:bg-brand text-white text-brand border-brand/30"}`,
28412
28743
  title: autoSyncEnabled ? "Disable Auto-Push" : "Enable Auto-Push",
28413
28744
  children: [
28414
28745
  "⚡ ",
@@ -28530,7 +28861,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28530
28861
  )
28531
28862
  ] })
28532
28863
  ] }),
28533
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative z-40 flex flex-wrap justify-between items-center bg-surface/70 backdrop-blur-md p-4 rounded-xl border border-border transition-colors duration-300 gap-4", children: [
28864
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative z-40 flex flex-wrap justify-between items-center bg-surface backdrop-blur-md p-4 rounded-xl border border-border transition-colors duration-300 gap-4", children: [
28534
28865
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-3 w-full sm:w-auto", children: [
28535
28866
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-secondary text-sm hidden sm:inline", children: "Branch:" }),
28536
28867
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -28573,7 +28904,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28573
28904
  "button",
28574
28905
  {
28575
28906
  onClick: () => window.api.openExternal(remoteUrl),
28576
- className: "p-1.5 hover:bg-brand/20 text-brand rounded transition-colors flex items-center justify-center border border-brand/30",
28907
+ className: "p-1.5 hover:bg-brand text-white text-brand rounded transition-colors flex items-center justify-center border border-brand/30",
28577
28908
  title: "View Repository on GitHub",
28578
28909
  children: /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-3.5 h-3.5", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntimeExports.jsx("path", { d: "M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.205 11.387.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 21.795 24 17.298 24 12c0-6.627-5.373-12-12-12z" }) })
28579
28910
  }
@@ -28599,7 +28930,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28599
28930
  "button",
28600
28931
  {
28601
28932
  onClick: () => setShowContributorsModal(true),
28602
- className: "px-2 py-1.5 hover:bg-brand/20 text-brand rounded transition-colors flex items-center justify-center border border-brand/30 font-medium",
28933
+ className: "px-2 py-1.5 hover:bg-brand text-white text-brand rounded transition-colors flex items-center justify-center border border-brand/30 font-medium",
28603
28934
  title: "Manage Collaborators",
28604
28935
  children: [
28605
28936
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -28731,7 +29062,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28731
29062
  )
28732
29063
  ] })
28733
29064
  ] }),
28734
- changesTab === "collaboration-repo" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 bg-surface/70 backdrop-blur-md rounded-2xl border border-border flex flex-col transition-colors duration-300 overflow-hidden p-4 sm:p-5 min-w-0", children: [
29065
+ changesTab === "collaboration-repo" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 bg-surface backdrop-blur-md rounded-2xl border border-border flex flex-col transition-colors duration-300 overflow-hidden p-4 sm:p-5 min-w-0", children: [
28735
29066
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center border-b border-border pb-3 mb-4 gap-2 flex-shrink-0", children: [
28736
29067
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28737
29068
  "button",
@@ -28752,7 +29083,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28752
29083
  children: "Deleted"
28753
29084
  }
28754
29085
  ),
28755
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ml-auto text-xs font-bold text-brand bg-brand/10 border border-brand/20 px-3 py-1 rounded-full", children: "Collaboration Repo" })
29086
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "ml-auto text-xs font-bold text-brand bg-brand text-white border border-brand/20 px-3 py-1 rounded-full", children: "Collaboration Repo" })
28756
29087
  ] }),
28757
29088
  /* @__PURE__ */ jsxRuntimeExports.jsx(
28758
29089
  CollaborationRepoView,
@@ -28783,14 +29114,14 @@ Are you SURE you want to link "${repoName}" to this folder?`
28783
29114
  "div",
28784
29115
  {
28785
29116
  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",
29117
+ className: "bg-surface 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",
28787
29118
  children: [
28788
29119
  /* @__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: [
28789
29120
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
28790
29121
  "button",
28791
29122
  {
28792
29123
  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"}`,
29124
+ 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-surface border-b-2" : "text-secondary border-transparent hover:text-primary"}`,
28794
29125
  children: [
28795
29126
  "Changes",
28796
29127
  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 })
@@ -28801,7 +29132,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28801
29132
  "button",
28802
29133
  {
28803
29134
  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"}`,
29135
+ 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-surface border-b-2" : "text-secondary border-transparent hover:text-primary"}`,
28805
29136
  children: [
28806
29137
  "Deleted",
28807
29138
  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 })
@@ -28816,10 +29147,10 @@ Are you SURE you want to link "${repoName}" to this folder?`
28816
29147
  window.api.getCollaboratedRepos().then((repos) => setCollaboratedRepos(repos || [])).catch(() => {
28817
29148
  });
28818
29149
  },
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"}`,
29150
+ 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-surface border-b-2" : "text-secondary border-transparent hover:text-primary"}`,
28820
29151
  children: [
28821
29152
  "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 })
29153
+ collaboratedRepos.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "ml-1.5 bg-brand text-white text-brand text-[10px] font-bold px-1.5 py-0.5 rounded-full", children: collaboratedRepos.length })
28823
29154
  ]
28824
29155
  }
28825
29156
  ),
@@ -28829,7 +29160,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
28829
29160
  {
28830
29161
  onClick: handleUploadFiles,
28831
29162
  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",
29163
+ className: "text-xs bg-brand text-white hover:bg-brand text-white 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
29164
  title: "Upload files directly into this repository",
28834
29165
  children: [
28835
29166
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -29094,7 +29425,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
29094
29425
  "div",
29095
29426
  {
29096
29427
  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",
29428
+ className: "bg-surface 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",
29098
29429
  children: [
29099
29430
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "font-semibold mb-4 text-primary text-sm shrink-0", children: "Staged Changes" }),
29100
29431
  /* @__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: [
@@ -29141,7 +29472,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
29141
29472
  ]
29142
29473
  }
29143
29474
  ),
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: [
29475
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-4 shrink-0 bg-surface 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: [
29145
29476
  /* @__PURE__ */ jsxRuntimeExports.jsx(
29146
29477
  "input",
29147
29478
  {
@@ -29167,7 +29498,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
29167
29498
  )
29168
29499
  ] })
29169
29500
  ] })
29170
- ] }) : changesTab === "collaboration-repo" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 bg-surface/70 backdrop-blur-md rounded-2xl border border-border flex flex-col transition-colors duration-300 overflow-hidden p-4 sm:p-5 min-w-0", children: [
29501
+ ] }) : changesTab === "collaboration-repo" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 bg-surface backdrop-blur-md rounded-2xl border border-border flex flex-col transition-colors duration-300 overflow-hidden p-4 sm:p-5 min-w-0", children: [
29171
29502
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between border-b border-border pb-3 mb-4 gap-2 flex-shrink-0", children: [
29172
29503
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
29173
29504
  "button",
@@ -29180,7 +29511,7 @@ Are you SURE you want to link "${repoName}" to this folder?`
29180
29511
  ]
29181
29512
  }
29182
29513
  ),
29183
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-bold text-brand bg-brand/10 border border-brand/20 px-3 py-1 rounded-full", children: "Collaboration Hub" }) })
29514
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-bold text-brand bg-brand text-white border border-brand/20 px-3 py-1 rounded-full", children: "Collaboration Hub" }) })
29184
29515
  ] }),
29185
29516
  /* @__PURE__ */ jsxRuntimeExports.jsx(
29186
29517
  CollaborationRepoView,
@@ -29199,51 +29530,300 @@ Are you SURE you want to link "${repoName}" to this folder?`
29199
29530
  onChangeFolder: handleSelectCollabFolder
29200
29531
  }
29201
29532
  )
29202
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col items-center justify-center text-secondary relative z-10", children: [
29203
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-24 h-24 mb-6 opacity-30 hover:opacity-50 transition-opacity", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: logo, alt: "Logo", className: "w-full h-full drop-shadow-md" }) }),
29204
- repoPath ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
29205
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xl mb-2 text-primary font-semibold", children: "Folder Loaded" }),
29206
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-mono text-accent bg-accent/10 px-3 py-1 rounded-md mb-6 border border-accent/20", children: repoPath }),
29207
- errorMsg ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-danger bg-danger/10 border border-danger/30 p-4 rounded-md text-sm text-center max-w-md", children: [
29208
- /* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Error:" }),
29209
- /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
29210
- errorMsg
29211
- ] }) : !isRepo ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm", children: 'Click "Initialize Git in Folder" in the sidebar.' }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "flex items-center gap-2 text-sm", children: [
29212
- /* @__PURE__ */ jsxRuntimeExports.jsxs(
29213
- "svg",
29533
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col min-h-0 relative z-10", children: [
29534
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap justify-between items-center bg-surface/80 backdrop-blur-md border border-border p-3 rounded-xl mb-4 gap-4 relative z-50", children: [
29535
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-wrap items-center gap-4 text-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 relative", children: [
29536
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-secondary", children: "Auth:" }),
29537
+ accounts.length > 0 ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
29538
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29539
+ "button",
29540
+ {
29541
+ onClick: () => setShowAccountDropdown(!showAccountDropdown),
29542
+ className: "flex items-center hover:bg-surface-hover px-2 py-1 rounded transition-colors",
29543
+ children: authStatus.status === "Verified" ? /* @__PURE__ */ jsxRuntimeExports.jsx(AuthHoverButton, { username: authStatus.username }) : authStatus.status === "Waiting" ? /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-warning font-medium flex items-center", children: [
29544
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-6 h-6 mr-2 animate-bounce", children: "🚀" }),
29545
+ "Waiting..."
29546
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "text-danger font-medium flex items-center", children: [
29547
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-2 h-2 bg-danger rounded-full mr-2" }),
29548
+ "Select Account",
29549
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29550
+ "svg",
29551
+ {
29552
+ className: "w-3 h-3 text-secondary ml-2",
29553
+ fill: "none",
29554
+ stroke: "currentColor",
29555
+ viewBox: "0 0 24 24",
29556
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29557
+ "path",
29558
+ {
29559
+ strokeLinecap: "round",
29560
+ strokeLinejoin: "round",
29561
+ strokeWidth: 2,
29562
+ d: "M19 9l-7 7-7-7"
29563
+ }
29564
+ )
29565
+ }
29566
+ )
29567
+ ] })
29568
+ }
29569
+ ),
29570
+ showAccountDropdown && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "absolute top-full left-0 mt-2 w-64 max-w-[90vw] bg-surface backdrop-blur-xl border border-border rounded-lg shadow-2xl py-2 z-[60] account-dropdown-glass", children: [
29571
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 py-1.5 text-xs font-semibold text-secondary uppercase tracking-wider mb-1", children: "Your Accounts" }),
29572
+ accounts.map((acc) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
29573
+ "div",
29574
+ {
29575
+ className: "flex items-center justify-between px-3 py-2 hover:bg-surface-hover group transition-colors",
29576
+ children: [
29577
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
29578
+ "button",
29579
+ {
29580
+ className: "flex-1 flex items-center text-left",
29581
+ onClick: async () => {
29582
+ await window.api.switchAccount(acc.id);
29583
+ if (repoPath) {
29584
+ refreshRepoState();
29585
+ }
29586
+ setShowAccountDropdown(false);
29587
+ },
29588
+ children: [
29589
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29590
+ "div",
29591
+ {
29592
+ className: `w-2 h-2 rounded-full mr-3 ${activeAccountId === acc.id ? "bg-success" : "bg-transparent border border-border group-hover:border-primary"}`
29593
+ }
29594
+ ),
29595
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm text-primary font-medium", children: acc.username })
29596
+ ]
29597
+ }
29598
+ ),
29599
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29600
+ "button",
29601
+ {
29602
+ onClick: async (e) => {
29603
+ e.stopPropagation();
29604
+ await window.api.removeAccount(acc.id);
29605
+ const accs = await window.api.getAccounts();
29606
+ setAccounts(accs.accounts);
29607
+ setActiveAccountId(accs.activeAccountId);
29608
+ if (repoPath) {
29609
+ refreshRepoState();
29610
+ }
29611
+ },
29612
+ className: "text-secondary hover:text-danger p-1 rounded opacity-0 group-hover:opacity-100 transition-opacity",
29613
+ title: "Remove Account",
29614
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29615
+ "svg",
29616
+ {
29617
+ className: "w-3.5 h-3.5",
29618
+ fill: "none",
29619
+ stroke: "currentColor",
29620
+ viewBox: "0 0 24 24",
29621
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29622
+ "path",
29623
+ {
29624
+ strokeLinecap: "round",
29625
+ strokeLinejoin: "round",
29626
+ strokeWidth: 2,
29627
+ 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"
29628
+ }
29629
+ )
29630
+ }
29631
+ )
29632
+ }
29633
+ )
29634
+ ]
29635
+ },
29636
+ acc.id
29637
+ )),
29638
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "border-t border-border mt-2 pt-2 px-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
29639
+ "button",
29640
+ {
29641
+ onClick: () => {
29642
+ setShowAccountDropdown(false);
29643
+ handleStartAuth();
29644
+ },
29645
+ className: "w-full text-left px-3 py-2 text-sm text-primary hover:bg-surface-hover rounded-md flex items-center transition-colors",
29646
+ children: [
29647
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29648
+ "svg",
29649
+ {
29650
+ className: "w-4 h-4 mr-3 text-secondary",
29651
+ fill: "none",
29652
+ stroke: "currentColor",
29653
+ viewBox: "0 0 24 24",
29654
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29655
+ "path",
29656
+ {
29657
+ strokeLinecap: "round",
29658
+ strokeLinejoin: "round",
29659
+ strokeWidth: 2,
29660
+ d: "M12 6v6m0 0v6m0-6h6m-6 0H6"
29661
+ }
29662
+ )
29663
+ }
29664
+ ),
29665
+ "Add Another Account"
29666
+ ]
29667
+ }
29668
+ ) })
29669
+ ] })
29670
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(
29671
+ "button",
29214
29672
  {
29215
- className: "w-4 h-4 animate-spin text-secondary",
29216
- fill: "none",
29217
- viewBox: "0 0 24 24",
29673
+ onClick: handleStartAuth,
29674
+ className: "px-4 py-1.5 bg-brand hover:bg-brand-hover text-white rounded-md text-xs font-semibold transition-colors shadow-sm flex items-center gap-1.5 cursor-pointer",
29218
29675
  children: [
29219
29676
  /* @__PURE__ */ jsxRuntimeExports.jsx(
29220
- "circle",
29677
+ "svg",
29221
29678
  {
29222
- className: "opacity-25",
29223
- cx: "12",
29224
- cy: "12",
29225
- r: "10",
29679
+ className: "w-3.5 h-3.5",
29680
+ fill: "none",
29226
29681
  stroke: "currentColor",
29227
- strokeWidth: "4"
29682
+ viewBox: "0 0 24 24",
29683
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29684
+ "path",
29685
+ {
29686
+ strokeLinecap: "round",
29687
+ strokeLinejoin: "round",
29688
+ strokeWidth: 2,
29689
+ d: "M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
29690
+ }
29691
+ )
29228
29692
  }
29229
29693
  ),
29230
- /* @__PURE__ */ jsxRuntimeExports.jsx(
29694
+ "Sign In to GitHub"
29695
+ ]
29696
+ }
29697
+ )
29698
+ ] }) }),
29699
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
29700
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
29701
+ "button",
29702
+ {
29703
+ onClick: () => setShowInvitationsModal(true),
29704
+ className: `relative px-3 py-1.5 border rounded-md transition-all flex items-center justify-center gap-2 cursor-pointer shadow-sm ${invitations.length > 0 ? "bg-brand/20 border-brand text-brand hover:bg-brand/30 ring-1 ring-brand/50" : "bg-surface-hover border-border text-secondary hover:text-primary"}`,
29705
+ title: invitations.length > 0 ? `${invitations.length} Pending Collaboration Invitation(s)` : "Pending Invitations",
29706
+ children: [
29707
+ /* @__PURE__ */ jsxRuntimeExports.jsx("svg", { className: "w-4 h-4", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29231
29708
  "path",
29232
29709
  {
29233
- className: "opacity-75",
29234
- fill: "currentColor",
29235
- 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"
29710
+ strokeLinecap: "round",
29711
+ strokeLinejoin: "round",
29712
+ strokeWidth: 2,
29713
+ 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"
29236
29714
  }
29237
- )
29715
+ ) }),
29716
+ invitations.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
29717
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-bold text-primary", children: invitations.length }),
29718
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "w-2 h-2 bg-danger rounded-full animate-pulse" })
29719
+ ] })
29238
29720
  ]
29239
29721
  }
29240
29722
  ),
29241
- " ",
29242
- "Analyzing..."
29723
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29724
+ "button",
29725
+ {
29726
+ onClick: async () => {
29727
+ const invs = await window.api.getUserInvitations();
29728
+ setInvitations(invs || []);
29729
+ const repos = await window.api.getCollaboratedRepos();
29730
+ setCollaboratedRepos(repos || []);
29731
+ showToast("Notifications refreshed", "info");
29732
+ },
29733
+ className: "px-3 py-1.5 bg-surface-hover border border-border rounded-md text-xs font-semibold text-secondary hover:text-primary active:scale-95 transition-all flex items-center justify-center gap-1.5 cursor-pointer",
29734
+ title: "Refresh Notifications & Invitations",
29735
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29736
+ "svg",
29737
+ {
29738
+ className: "w-3.5 h-3.5",
29739
+ fill: "none",
29740
+ stroke: "currentColor",
29741
+ viewBox: "0 0 24 24",
29742
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(
29743
+ "path",
29744
+ {
29745
+ strokeLinecap: "round",
29746
+ strokeLinejoin: "round",
29747
+ strokeWidth: 2,
29748
+ d: "M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"
29749
+ }
29750
+ )
29751
+ }
29752
+ )
29753
+ }
29754
+ )
29755
+ ] })
29756
+ ] }),
29757
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col items-center justify-center text-secondary relative z-10 py-6", children: [
29758
+ invitations.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-6 p-4 sm:p-5 bg-surface/90 border border-brand/40 hover:border-brand/70 rounded-2xl shadow-xl flex items-center gap-4 max-w-md w-full backdrop-blur-md animate-fade-in transition-all", children: [
29759
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-11 h-11 rounded-xl bg-brand text-white flex items-center justify-center text-xl flex-shrink-0 shadow-md", children: "🔔" }),
29760
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 text-left min-w-0", children: [
29761
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-sm font-bold text-primary truncate", children: [
29762
+ invitations.length,
29763
+ " Collaboration Invitation",
29764
+ invitations.length > 1 ? "s" : "",
29765
+ " Pending"
29766
+ ] }),
29767
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs text-secondary mt-0.5", children: "Accept now to clone or link and start collaborating." })
29768
+ ] }),
29769
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
29770
+ "button",
29771
+ {
29772
+ onClick: () => setShowInvitationsModal(true),
29773
+ className: "px-3.5 py-1.5 bg-brand hover:bg-brand-hover text-white text-xs font-bold rounded-lg transition-all shadow-sm flex-shrink-0 cursor-pointer",
29774
+ children: [
29775
+ "Review (",
29776
+ invitations.length,
29777
+ ")"
29778
+ ]
29779
+ }
29780
+ )
29781
+ ] }),
29782
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "w-24 h-24 mb-6 opacity-30 hover:opacity-50 transition-opacity", children: /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: logo, alt: "Logo", className: "w-full h-full drop-shadow-md" }) }),
29783
+ repoPath ? /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
29784
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xl mb-2 text-primary font-semibold", children: "Folder Loaded" }),
29785
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs font-mono text-accent bg-accent/10 px-3 py-1 rounded-md mb-6 border border-accent/20", children: repoPath }),
29786
+ errorMsg ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-danger bg-danger/10 border border-danger/30 p-4 rounded-md text-sm text-center max-w-md", children: [
29787
+ /* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "Error:" }),
29788
+ /* @__PURE__ */ jsxRuntimeExports.jsx("br", {}),
29789
+ errorMsg
29790
+ ] }) : !isRepo ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm", children: 'Click "Initialize Git in Folder" in the sidebar.' }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "flex items-center gap-2 text-sm", children: [
29791
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
29792
+ "svg",
29793
+ {
29794
+ className: "w-4 h-4 animate-spin text-secondary",
29795
+ fill: "none",
29796
+ viewBox: "0 0 24 24",
29797
+ children: [
29798
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29799
+ "circle",
29800
+ {
29801
+ className: "opacity-25",
29802
+ cx: "12",
29803
+ cy: "12",
29804
+ r: "10",
29805
+ stroke: "currentColor",
29806
+ strokeWidth: "4"
29807
+ }
29808
+ ),
29809
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
29810
+ "path",
29811
+ {
29812
+ className: "opacity-75",
29813
+ fill: "currentColor",
29814
+ 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"
29815
+ }
29816
+ )
29817
+ ]
29818
+ }
29819
+ ),
29820
+ " ",
29821
+ "Analyzing..."
29822
+ ] })
29823
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center flex flex-col items-center", children: [
29824
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-3xl font-bold text-primary mb-2 tracking-tight", children: "GIT ELECTRON" }),
29825
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-secondary mb-10", children: "Open a project from the sidebar to manage a repository." })
29243
29826
  ] })
29244
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-center flex flex-col items-center", children: [
29245
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-3xl font-bold text-primary mb-2 tracking-tight", children: "GIT ELECTRON" }),
29246
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-secondary mb-10", children: "Open a project from the sidebar to manage a repository." })
29247
29827
  ] })
29248
29828
  ] }) }),
29249
29829
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -29290,10 +29870,21 @@ Are you SURE you want to link "${repoName}" to this folder?`
29290
29870
  onClick: async () => {
29291
29871
  try {
29292
29872
  await window.api.acceptInvitation(inv.id);
29293
- showToast("Invitation accepted!", "success");
29873
+ showToast(`Invitation accepted for ${inv.repository.full_name}!`, "success");
29874
+ setShowInvitationsModal(false);
29875
+ setShowCollabActionModal({
29876
+ name: inv.repository.name,
29877
+ fullName: inv.repository.full_name,
29878
+ url: inv.repository.html_url || inv.repository.clone_url,
29879
+ repo: inv.repository
29880
+ });
29294
29881
  const invs = await window.api.getUserInvitations();
29295
29882
  setInvitations(invs || []);
29296
- refreshRepoState();
29883
+ const repos = await window.api.getCollaboratedRepos();
29884
+ setCollaboratedRepos(repos || []);
29885
+ if (repoPath) {
29886
+ refreshRepoState();
29887
+ }
29297
29888
  } catch (e) {
29298
29889
  showToast(e.message || "Failed to accept invitation", "error");
29299
29890
  }