gh-manager-cli 1.43.0 → 1.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  archiveRepositoryById,
6
6
  changeRepositoryVisibility,
7
7
  checkOrganizationIsEnterprise,
8
+ createRepositoryRest,
8
9
  deleteRepositoryRest,
9
10
  enrichForksWithAheadBehind,
10
11
  fetchRepositoryByOwnerAndName,
@@ -21,6 +22,7 @@ import {
21
22
  renameRepositoryById,
22
23
  starRepository,
23
24
  syncForkWithUpstream,
25
+ transferRepositoryRest,
24
26
  unarchiveRepositoryById,
25
27
  unstarRepository,
26
28
  updateCacheAfterArchive,
@@ -28,14 +30,14 @@ import {
28
30
  updateCacheAfterRename,
29
31
  updateCacheAfterVisibilityChange,
30
32
  updateCacheWithRepository
31
- } from "./chunk-MKIUBPVD.js";
33
+ } from "./chunk-WHX6IOTW.js";
32
34
 
33
35
  // package.json
34
36
  var require_package = __commonJS({
35
37
  "package.json"(exports, module) {
36
38
  module.exports = {
37
39
  name: "gh-manager-cli",
38
- version: "1.43.0",
40
+ version: "1.45.0",
39
41
  private: false,
40
42
  description: "TUI terminal app to manage GitHub repos. Clean up your account in 5 minutes. Archive, delete, rename repos with keyboard shortcuts. Alternative to clicking through github.com",
41
43
  license: "MIT",
@@ -155,13 +157,13 @@ var require_package = __commonJS({
155
157
 
156
158
  // src/index.tsx
157
159
  var import_package = __toESM(require_package(), 1);
158
- import { render, Box as Box24, Text as Text25 } from "ink";
160
+ import { render, Box as Box26, Text as Text27 } from "ink";
159
161
  import "dotenv/config";
160
162
 
161
163
  // src/ui/App.tsx
162
- import { useEffect as useEffect13, useMemo as useMemo3, useState as useState19 } from "react";
163
- import { Box as Box23, Text as Text24, useApp as useApp2, useStdout as useStdout2, useInput as useInput19 } from "ink";
164
- import TextInput6 from "ink-text-input";
164
+ import { useEffect as useEffect14, useMemo as useMemo3, useState as useState21 } from "react";
165
+ import { Box as Box25, Text as Text26, useApp as useApp2, useStdout as useStdout2, useInput as useInput21 } from "ink";
166
+ import TextInput8 from "ink-text-input";
165
167
 
166
168
  // src/config/config.ts
167
169
  import fs from "fs";
@@ -409,9 +411,9 @@ async function openGitHubAuthorizationPage() {
409
411
  }
410
412
 
411
413
  // src/ui/views/RepoList.tsx
412
- import React17, { useEffect as useEffect12, useMemo as useMemo2, useState as useState17, useRef, useCallback } from "react";
413
- import { Box as Box20, Text as Text21, useApp, useInput as useInput17, useStdout } from "ink";
414
- import TextInput5 from "ink-text-input";
414
+ import React19, { useEffect as useEffect13, useMemo as useMemo2, useState as useState19, useRef as useRef3, useCallback } from "react";
415
+ import { Box as Box22, Text as Text23, useApp, useInput as useInput19, useStdout } from "ink";
416
+ import TextInput7 from "ink-text-input";
415
417
  import chalk15 from "chalk";
416
418
 
417
419
  // src/config/themes.ts
@@ -427,6 +429,8 @@ var THEMES = {
427
429
  muted: "gray",
428
430
  text: "white",
429
431
  selected: "cyan",
432
+ selectedBg: "#1f4a57",
433
+ // dark teal — contrasts the cyan/white selected text
430
434
  private: "yellow",
431
435
  archived: "gray",
432
436
  internal: "magenta",
@@ -444,6 +448,8 @@ var THEMES = {
444
448
  muted: "blue",
445
449
  text: "whiteBright",
446
450
  selected: "blueBright",
451
+ selectedBg: "#11294d",
452
+ // deep blue — sits behind the bright blue/white text
447
453
  private: "cyan",
448
454
  archived: "blue",
449
455
  internal: "magenta",
@@ -461,6 +467,8 @@ var THEMES = {
461
467
  muted: "gray",
462
468
  text: "white",
463
469
  selected: "green",
470
+ selectedBg: "#14391f",
471
+ // deep forest green behind the green/white text
464
472
  private: "yellow",
465
473
  archived: "gray",
466
474
  internal: "magenta",
@@ -478,6 +486,8 @@ var THEMES = {
478
486
  muted: "gray",
479
487
  text: "white",
480
488
  selected: "whiteBright",
489
+ selectedBg: "#333333",
490
+ // neutral dark grey — darker than the old bright grey
481
491
  private: "white",
482
492
  archived: "gray",
483
493
  internal: "white",
@@ -621,7 +631,7 @@ function OrgSwitcher({ token, currentContext, onSelect, onClose }) {
621
631
  try {
622
632
  setLoading(true);
623
633
  setError(null);
624
- const client = await import("./github-6HD7I2UI.js").then((m) => m.makeClient(token));
634
+ const client = await import("./github-72MPRF5W.js").then((m) => m.makeClient(token));
625
635
  const orgs = await fetchViewerOrganizations(client);
626
636
  setOrganizations(orgs);
627
637
  const entOrgs = /* @__PURE__ */ new Set();
@@ -1937,11 +1947,345 @@ function OpenInBrowserModal({ repo, onOpen, onCancel, theme: themeProp }) {
1937
1947
  );
1938
1948
  }
1939
1949
 
1940
- // src/ui/components/modals/UnstarModal.tsx
1941
- import { useEffect as useEffect11, useState as useState16 } from "react";
1942
- import { Box as Box16, Text as Text17 } from "ink";
1943
- import { useInput as useInput16 } from "ink";
1950
+ // src/ui/components/modals/CreateRepoModal.tsx
1951
+ import { useState as useState16, useRef } from "react";
1952
+ import { Box as Box16, Text as Text17, useInput as useInput16 } from "ink";
1953
+ import TextInput4 from "ink-text-input";
1944
1954
  import { Fragment as Fragment8, jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
1955
+ function CreateRepoModal({ ownerSlug, isOrg, isEnterprise, onCreate, onCancel, theme: themeProp }) {
1956
+ const { theme, c } = useTheme(themeProp?.name ?? "default");
1957
+ const [name, setName] = useState16("");
1958
+ const [visibility, setVisibility] = useState16("PRIVATE");
1959
+ const [creating, setCreating] = useState16(false);
1960
+ const [error, setError] = useState16(null);
1961
+ const submittingRef = useRef(false);
1962
+ const visibilities = isOrg && isEnterprise ? ["PRIVATE", "PUBLIC", "INTERNAL"] : ["PRIVATE", "PUBLIC"];
1963
+ useInput16((input, key) => {
1964
+ if (creating) return;
1965
+ if (key.escape) {
1966
+ onCancel();
1967
+ return;
1968
+ }
1969
+ if (key.tab) {
1970
+ setVisibility((v) => {
1971
+ const idx = visibilities.indexOf(v);
1972
+ return visibilities[(idx + 1) % visibilities.length];
1973
+ });
1974
+ return;
1975
+ }
1976
+ if (key.return) {
1977
+ if (name.trim()) handleCreateConfirm();
1978
+ return;
1979
+ }
1980
+ });
1981
+ const handleCreateConfirm = async () => {
1982
+ if (!name.trim() || creating || submittingRef.current) return;
1983
+ submittingRef.current = true;
1984
+ try {
1985
+ setCreating(true);
1986
+ setError(null);
1987
+ await onCreate(name.trim(), visibility);
1988
+ } catch (e) {
1989
+ setError(e instanceof Error ? e.message : "Failed to create repository");
1990
+ } finally {
1991
+ setCreating(false);
1992
+ submittingRef.current = false;
1993
+ }
1994
+ };
1995
+ const handleNameChange = (value) => {
1996
+ setName(value.replace(/[^a-zA-Z0-9\-_.]/g, "").replace(/^\.+/, ""));
1997
+ };
1998
+ const visLabel = (v) => v === "PUBLIC" ? "Public" : v === "PRIVATE" ? "Private" : "Internal";
1999
+ const isDisabled = !name.trim();
2000
+ return /* @__PURE__ */ jsxs16(
2001
+ Box16,
2002
+ {
2003
+ flexDirection: "column",
2004
+ borderStyle: "round",
2005
+ borderColor: theme.primary,
2006
+ paddingX: 3,
2007
+ paddingY: 2,
2008
+ width: 80,
2009
+ children: [
2010
+ /* @__PURE__ */ jsx17(Text17, { bold: true, color: theme.primary, children: "Create New Repository" }),
2011
+ /* @__PURE__ */ jsx17(Box16, { height: 1, children: /* @__PURE__ */ jsx17(Text17, { children: " " }) }),
2012
+ /* @__PURE__ */ jsxs16(Text17, { color: theme.muted, children: [
2013
+ "Owner: ",
2014
+ ownerSlug,
2015
+ " ",
2016
+ isOrg ? "(organisation)" : "(personal)"
2017
+ ] }),
2018
+ /* @__PURE__ */ jsx17(Box16, { height: 1, children: /* @__PURE__ */ jsx17(Text17, { children: " " }) }),
2019
+ /* @__PURE__ */ jsx17(Text17, { children: "Repository name:" }),
2020
+ /* @__PURE__ */ jsxs16(Box16, { flexDirection: "row", alignItems: "center", children: [
2021
+ /* @__PURE__ */ jsxs16(Text17, { children: [
2022
+ ownerSlug,
2023
+ "/"
2024
+ ] }),
2025
+ /* @__PURE__ */ jsx17(
2026
+ TextInput4,
2027
+ {
2028
+ value: name,
2029
+ onChange: handleNameChange,
2030
+ placeholder: "my-new-repo",
2031
+ focus: !creating
2032
+ }
2033
+ )
2034
+ ] }),
2035
+ /* @__PURE__ */ jsx17(Box16, { height: 1, children: /* @__PURE__ */ jsx17(Text17, { children: " " }) }),
2036
+ /* @__PURE__ */ jsxs16(Box16, { flexDirection: "row", children: [
2037
+ /* @__PURE__ */ jsx17(Text17, { children: "Visibility: " }),
2038
+ visibilities.map((v, i) => /* @__PURE__ */ jsxs16(Text17, { children: [
2039
+ v === visibility ? c.btnPrimary(` ${visLabel(v)} `) : c.muted(visLabel(v)),
2040
+ i < visibilities.length - 1 ? " " : ""
2041
+ ] }, v))
2042
+ ] }),
2043
+ creating ? /* @__PURE__ */ jsx17(Box16, { marginTop: 2, justifyContent: "center", children: /* @__PURE__ */ jsxs16(Box16, { flexDirection: "row", children: [
2044
+ /* @__PURE__ */ jsx17(Box16, { marginRight: 1, children: /* @__PURE__ */ jsx17(SlowSpinner, {}) }),
2045
+ /* @__PURE__ */ jsx17(Text17, { color: theme.primary, children: "Creating repository..." })
2046
+ ] }) }) : /* @__PURE__ */ jsxs16(Fragment8, { children: [
2047
+ /* @__PURE__ */ jsx17(Box16, { marginTop: 2, children: /* @__PURE__ */ jsx17(Text17, { color: theme.muted, children: isDisabled ? "Enter a name to create the repository" : `Press Enter to create "${ownerSlug}/${name}"` }) }),
2048
+ /* @__PURE__ */ jsx17(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx17(Text17, { color: theme.muted, children: "Tab to change visibility \u2022 Esc to cancel" }) })
2049
+ ] }),
2050
+ error && /* @__PURE__ */ jsx17(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx17(Text17, { color: theme.error, children: error }) })
2051
+ ]
2052
+ }
2053
+ );
2054
+ }
2055
+
2056
+ // src/ui/components/modals/TransferModal.tsx
2057
+ import { useState as useState17, useRef as useRef2, useEffect as useEffect11 } from "react";
2058
+ import { Box as Box17, Text as Text18, useInput as useInput17 } from "ink";
2059
+ import TextInput5 from "ink-text-input";
2060
+ import { Fragment as Fragment9, jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
2061
+ function TransferModal({ repo, onTransfer, onCancel, theme: themeProp }) {
2062
+ const { theme, c } = useTheme(themeProp?.name ?? "default");
2063
+ const [newOwner, setNewOwner] = useState17("");
2064
+ const [stage, setStage] = useState17("input");
2065
+ const [focus, setFocus] = useState17("cancel");
2066
+ const [transferring, setTransferring] = useState17(false);
2067
+ const [error, setError] = useState17(null);
2068
+ const [transferCode, setTransferCode] = useState17("");
2069
+ const [typedCode, setTypedCode] = useState17("");
2070
+ const submittingRef = useRef2(false);
2071
+ const owner = repo ? repo.nameWithOwner.split("/")[0] : "";
2072
+ useEffect11(() => {
2073
+ if (repo) {
2074
+ const chars = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";
2075
+ let code = "";
2076
+ for (let i = 0; i < 4; i++) {
2077
+ code += chars.charAt(Math.floor(Math.random() * chars.length));
2078
+ }
2079
+ setTransferCode(code);
2080
+ setTypedCode("");
2081
+ setStage("input");
2082
+ setFocus("cancel");
2083
+ setError(null);
2084
+ }
2085
+ }, [repo]);
2086
+ useInput17((input, key) => {
2087
+ if (transferring || !repo) return;
2088
+ if (key.escape) {
2089
+ onCancel();
2090
+ return;
2091
+ }
2092
+ if (stage === "input") {
2093
+ if (key.return) {
2094
+ const target = newOwner.trim();
2095
+ if (target && target.toLowerCase() !== owner.toLowerCase()) {
2096
+ setError(null);
2097
+ setTypedCode("");
2098
+ setStage("code");
2099
+ }
2100
+ }
2101
+ return;
2102
+ }
2103
+ if (stage === "code") {
2104
+ return;
2105
+ }
2106
+ if (key.leftArrow || key.rightArrow || key.tab) {
2107
+ setFocus((f) => f === "transfer" ? "cancel" : "transfer");
2108
+ return;
2109
+ }
2110
+ if (input === "y" || input === "Y") {
2111
+ handleTransferConfirm();
2112
+ return;
2113
+ }
2114
+ if (input === "c" || input === "C") {
2115
+ onCancel();
2116
+ return;
2117
+ }
2118
+ if (key.return) {
2119
+ if (focus === "transfer") handleTransferConfirm();
2120
+ else onCancel();
2121
+ return;
2122
+ }
2123
+ });
2124
+ const advanceToConfirm = () => {
2125
+ setError(null);
2126
+ setStage("confirm");
2127
+ setFocus("cancel");
2128
+ };
2129
+ const handleCodeChange = (value) => {
2130
+ const up = value.toUpperCase();
2131
+ setTypedCode(up);
2132
+ if (up === transferCode) advanceToConfirm();
2133
+ };
2134
+ const handleCodeSubmit = () => {
2135
+ if (typedCode.toUpperCase() === transferCode) {
2136
+ advanceToConfirm();
2137
+ } else {
2138
+ setError("Incorrect verification code. Please try again.");
2139
+ setTypedCode("");
2140
+ }
2141
+ };
2142
+ const handleTransferConfirm = async () => {
2143
+ if (transferring || submittingRef.current || !repo || !newOwner.trim()) return;
2144
+ submittingRef.current = true;
2145
+ try {
2146
+ setTransferring(true);
2147
+ setError(null);
2148
+ await onTransfer(repo, newOwner.trim());
2149
+ } catch (e) {
2150
+ setError(e instanceof Error ? e.message : "Failed to transfer repository");
2151
+ } finally {
2152
+ setTransferring(false);
2153
+ submittingRef.current = false;
2154
+ }
2155
+ };
2156
+ const handleOwnerChange = (value) => {
2157
+ setNewOwner(value.replace(/[^a-zA-Z0-9-]/g, "").replace(/^-+/, ""));
2158
+ };
2159
+ const isInputDisabled = !newOwner.trim() || newOwner.trim().toLowerCase() === owner.toLowerCase();
2160
+ if (!repo) return null;
2161
+ return /* @__PURE__ */ jsxs17(
2162
+ Box17,
2163
+ {
2164
+ flexDirection: "column",
2165
+ borderStyle: "round",
2166
+ borderColor: theme.warning,
2167
+ paddingX: 3,
2168
+ paddingY: 2,
2169
+ width: 80,
2170
+ children: [
2171
+ /* @__PURE__ */ jsx18(Text18, { bold: true, color: theme.warning, children: "Transfer Repository" }),
2172
+ /* @__PURE__ */ jsx18(Box17, { height: 1, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2173
+ /* @__PURE__ */ jsxs17(Text18, { color: theme.muted, children: [
2174
+ "Repository: ",
2175
+ repo.nameWithOwner
2176
+ ] }),
2177
+ stage === "input" && /* @__PURE__ */ jsxs17(Fragment9, { children: [
2178
+ /* @__PURE__ */ jsx18(Box17, { height: 1, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2179
+ /* @__PURE__ */ jsx18(Text18, { children: "New owner (username or organisation):" }),
2180
+ /* @__PURE__ */ jsxs17(Box17, { flexDirection: "row", alignItems: "center", children: [
2181
+ /* @__PURE__ */ jsx18(
2182
+ TextInput5,
2183
+ {
2184
+ value: newOwner,
2185
+ onChange: handleOwnerChange,
2186
+ placeholder: "new-owner",
2187
+ focus: !transferring
2188
+ }
2189
+ ),
2190
+ /* @__PURE__ */ jsxs17(Text18, { children: [
2191
+ "/",
2192
+ repo.name
2193
+ ] })
2194
+ ] }),
2195
+ /* @__PURE__ */ jsx18(Box17, { marginTop: 2, children: /* @__PURE__ */ jsx18(Text18, { color: theme.muted, children: isInputDisabled ? "Enter a different owner to continue" : `Press Enter to review the transfer to "${newOwner}/${repo.name}"` }) }),
2196
+ /* @__PURE__ */ jsx18(Box17, { marginTop: 1, children: /* @__PURE__ */ jsx18(Text18, { color: theme.muted, children: "Press Esc to cancel" }) })
2197
+ ] }),
2198
+ stage === "code" && /* @__PURE__ */ jsxs17(Fragment9, { children: [
2199
+ /* @__PURE__ */ jsx18(Box17, { height: 1, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2200
+ /* @__PURE__ */ jsxs17(Text18, { children: [
2201
+ "Transfer ",
2202
+ c.text.bold(repo.nameWithOwner),
2203
+ " ",
2204
+ "\u2192",
2205
+ " ",
2206
+ c.warning.bold(`${newOwner}/${repo.name}`)
2207
+ ] }),
2208
+ /* @__PURE__ */ jsx18(Box17, { height: 1, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2209
+ /* @__PURE__ */ jsx18(Text18, { children: `To confirm, please type ${c.warning.bold(transferCode)} below:` }),
2210
+ /* @__PURE__ */ jsxs17(Box17, { marginTop: 1, flexDirection: "row", alignItems: "center", children: [
2211
+ /* @__PURE__ */ jsx18(Text18, { children: "Verification code: " }),
2212
+ /* @__PURE__ */ jsx18(
2213
+ TextInput5,
2214
+ {
2215
+ value: typedCode,
2216
+ onChange: handleCodeChange,
2217
+ onSubmit: handleCodeSubmit,
2218
+ focus: !transferring
2219
+ }
2220
+ )
2221
+ ] }),
2222
+ /* @__PURE__ */ jsx18(Box17, { marginTop: 1, children: /* @__PURE__ */ jsx18(Text18, { color: theme.muted, children: "Type the code to continue \u2022 Esc to cancel" }) })
2223
+ ] }),
2224
+ stage === "confirm" && /* @__PURE__ */ jsxs17(Fragment9, { children: [
2225
+ /* @__PURE__ */ jsx18(Box17, { height: 1, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2226
+ /* @__PURE__ */ jsxs17(Text18, { children: [
2227
+ "Transfer ",
2228
+ c.text.bold(repo.nameWithOwner),
2229
+ " ",
2230
+ "\u2192",
2231
+ " ",
2232
+ c.warning.bold(`${newOwner}/${repo.name}`)
2233
+ ] }),
2234
+ /* @__PURE__ */ jsx18(Box17, { marginTop: 1, children: /* @__PURE__ */ jsxs17(Text18, { color: theme.warning, children: [
2235
+ "\u26A0\uFE0F This hands ownership to ",
2236
+ newOwner,
2237
+ ". You may lose admin access, and only the new owner can transfer it back."
2238
+ ] }) }),
2239
+ transferring ? /* @__PURE__ */ jsx18(Box17, { marginTop: 2, justifyContent: "center", children: /* @__PURE__ */ jsxs17(Box17, { flexDirection: "row", children: [
2240
+ /* @__PURE__ */ jsx18(Box17, { marginRight: 1, children: /* @__PURE__ */ jsx18(SlowSpinner, {}) }),
2241
+ /* @__PURE__ */ jsx18(Text18, { color: theme.warning, children: "Transferring repository..." })
2242
+ ] }) }) : /* @__PURE__ */ jsxs17(Fragment9, { children: [
2243
+ /* @__PURE__ */ jsxs17(Box17, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
2244
+ /* @__PURE__ */ jsx18(
2245
+ Box17,
2246
+ {
2247
+ borderStyle: "round",
2248
+ borderColor: focus === "transfer" ? theme.warning : theme.muted,
2249
+ height: 3,
2250
+ width: 20,
2251
+ alignItems: "center",
2252
+ justifyContent: "center",
2253
+ flexDirection: "column",
2254
+ children: /* @__PURE__ */ jsx18(Text18, { children: focus === "transfer" ? c.btnPrimary(" Transfer ") : c.warning.bold("Transfer") })
2255
+ }
2256
+ ),
2257
+ /* @__PURE__ */ jsx18(
2258
+ Box17,
2259
+ {
2260
+ borderStyle: "round",
2261
+ borderColor: focus === "cancel" ? "white" : theme.muted,
2262
+ height: 3,
2263
+ width: 20,
2264
+ alignItems: "center",
2265
+ justifyContent: "center",
2266
+ flexDirection: "column",
2267
+ children: /* @__PURE__ */ jsx18(Text18, { children: focus === "cancel" ? c.btnMuted(" Cancel ") : c.muted.bold("Cancel") })
2268
+ }
2269
+ )
2270
+ ] }),
2271
+ /* @__PURE__ */ jsx18(Box17, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs17(Text18, { color: theme.muted, children: [
2272
+ "\u2190/\u2192 Focus \u2022 Enter to ",
2273
+ focus === "transfer" ? "Transfer" : "Cancel",
2274
+ " \u2022 Y Transfer \u2022 C/Esc Cancel"
2275
+ ] }) })
2276
+ ] })
2277
+ ] }),
2278
+ error && /* @__PURE__ */ jsx18(Box17, { marginTop: 1, children: /* @__PURE__ */ jsx18(Text18, { color: theme.error, children: error }) })
2279
+ ]
2280
+ }
2281
+ );
2282
+ }
2283
+
2284
+ // src/ui/components/modals/UnstarModal.tsx
2285
+ import { useEffect as useEffect12, useState as useState18 } from "react";
2286
+ import { Box as Box18, Text as Text19 } from "ink";
2287
+ import { useInput as useInput18 } from "ink";
2288
+ import { Fragment as Fragment10, jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
1945
2289
  function UnstarModal({
1946
2290
  visible,
1947
2291
  repo,
@@ -1952,8 +2296,8 @@ function UnstarModal({
1952
2296
  theme: themeProp
1953
2297
  }) {
1954
2298
  const { theme } = useTheme(themeProp?.name ?? "default");
1955
- const [focusedButton, setFocusedButton] = useState16("cancel");
1956
- useInput16((input, key) => {
2299
+ const [focusedButton, setFocusedButton] = useState18("cancel");
2300
+ useInput18((input, key) => {
1957
2301
  if (!visible) return;
1958
2302
  if (key.escape || input === "c" || input === "C") {
1959
2303
  onCancel();
@@ -1971,12 +2315,12 @@ function UnstarModal({
1971
2315
  if (input === "n" || input === "N") onCancel();
1972
2316
  if (input === "u" || input === "U") onConfirm();
1973
2317
  });
1974
- useEffect11(() => {
2318
+ useEffect12(() => {
1975
2319
  if (visible) setFocusedButton("cancel");
1976
2320
  }, [visible]);
1977
2321
  if (!visible || !repo) return null;
1978
- return /* @__PURE__ */ jsxs16(
1979
- Box16,
2322
+ return /* @__PURE__ */ jsxs18(
2323
+ Box18,
1980
2324
  {
1981
2325
  flexDirection: "column",
1982
2326
  borderStyle: "round",
@@ -1985,28 +2329,28 @@ function UnstarModal({
1985
2329
  paddingY: 1,
1986
2330
  marginTop: 1,
1987
2331
  children: [
1988
- /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, children: /* @__PURE__ */ jsx17(Text17, { bold: true, color: theme.warning, children: "\u2B50 Unstar Repository" }) }),
1989
- /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, children: /* @__PURE__ */ jsxs16(Text17, { children: [
2332
+ /* @__PURE__ */ jsx19(Box18, { marginBottom: 1, children: /* @__PURE__ */ jsx19(Text19, { bold: true, color: theme.warning, children: "\u2B50 Unstar Repository" }) }),
2333
+ /* @__PURE__ */ jsx19(Box18, { marginBottom: 1, children: /* @__PURE__ */ jsxs18(Text19, { children: [
1990
2334
  "Are you sure you want to unstar",
1991
2335
  " ",
1992
- /* @__PURE__ */ jsx17(Text17, { bold: true, color: theme.primary, children: repo.nameWithOwner }),
2336
+ /* @__PURE__ */ jsx19(Text19, { bold: true, color: theme.primary, children: repo.nameWithOwner }),
1993
2337
  "?"
1994
2338
  ] }) }),
1995
- repo.description && /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, children: /* @__PURE__ */ jsx17(Text17, { dimColor: true, wrap: "wrap", children: repo.description }) }),
1996
- /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, children: /* @__PURE__ */ jsxs16(Text17, { dimColor: true, children: [
2339
+ repo.description && /* @__PURE__ */ jsx19(Box18, { marginBottom: 1, children: /* @__PURE__ */ jsx19(Text19, { dimColor: true, wrap: "wrap", children: repo.description }) }),
2340
+ /* @__PURE__ */ jsx19(Box18, { marginBottom: 1, children: /* @__PURE__ */ jsxs18(Text19, { dimColor: true, children: [
1997
2341
  "Stars: ",
1998
2342
  repo.stargazerCount,
1999
2343
  " \u2022 Forks: ",
2000
2344
  repo.forkCount
2001
2345
  ] }) }),
2002
- error && /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs16(Text17, { color: theme.error, wrap: "wrap", children: [
2346
+ error && /* @__PURE__ */ jsx19(Box18, { marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs18(Text19, { color: theme.error, wrap: "wrap", children: [
2003
2347
  error.includes("OAuth access restrictions") ? "\u26A0\uFE0F " : "Error: ",
2004
2348
  error
2005
2349
  ] }) }),
2006
- isUnstarring ? /* @__PURE__ */ jsx17(Box16, { children: /* @__PURE__ */ jsx17(Text17, { color: theme.warning, children: "Unstarring..." }) }) : /* @__PURE__ */ jsxs16(Fragment8, { children: [
2007
- /* @__PURE__ */ jsxs16(Box16, { gap: 2, children: [
2008
- /* @__PURE__ */ jsx17(Box16, { children: /* @__PURE__ */ jsxs16(
2009
- Text17,
2350
+ isUnstarring ? /* @__PURE__ */ jsx19(Box18, { children: /* @__PURE__ */ jsx19(Text19, { color: theme.warning, children: "Unstarring..." }) }) : /* @__PURE__ */ jsxs18(Fragment10, { children: [
2351
+ /* @__PURE__ */ jsxs18(Box18, { gap: 2, children: [
2352
+ /* @__PURE__ */ jsx19(Box18, { children: /* @__PURE__ */ jsxs18(
2353
+ Text19,
2010
2354
  {
2011
2355
  backgroundColor: focusedButton === "cancel" ? "white" : void 0,
2012
2356
  color: focusedButton === "cancel" ? "black" : "white",
@@ -2018,8 +2362,8 @@ function UnstarModal({
2018
2362
  ]
2019
2363
  }
2020
2364
  ) }),
2021
- /* @__PURE__ */ jsx17(Box16, { children: /* @__PURE__ */ jsxs16(
2022
- Text17,
2365
+ /* @__PURE__ */ jsx19(Box18, { children: /* @__PURE__ */ jsxs18(
2366
+ Text19,
2023
2367
  {
2024
2368
  backgroundColor: focusedButton === "unstar" ? "yellow" : void 0,
2025
2369
  color: focusedButton === "unstar" ? "black" : theme.warning,
@@ -2032,7 +2376,7 @@ function UnstarModal({
2032
2376
  }
2033
2377
  ) })
2034
2378
  ] }),
2035
- /* @__PURE__ */ jsx17(Box16, { marginTop: 1, children: /* @__PURE__ */ jsx17(Text17, { dimColor: true, children: "Use \u2190 \u2192 to navigate, Enter to select" }) })
2379
+ /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { dimColor: true, children: "Use \u2190 \u2192 to navigate, Enter to select" }) })
2036
2380
  ] })
2037
2381
  ]
2038
2382
  }
@@ -2040,9 +2384,9 @@ function UnstarModal({
2040
2384
  }
2041
2385
 
2042
2386
  // src/ui/components/repo/RepoRow.tsx
2043
- import { Box as Box17, Text as Text18 } from "ink";
2387
+ import { Box as Box19, Text as Text20 } from "ink";
2044
2388
  import chalk14 from "chalk";
2045
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
2389
+ import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
2046
2390
  function RepoRow({
2047
2391
  repo,
2048
2392
  selected,
@@ -2102,21 +2446,21 @@ function RepoRow({
2102
2446
  if (line3) fullText += "\n" + metaColor(line3);
2103
2447
  const spacingAbove = Math.floor(spacingLines / 2);
2104
2448
  const spacingBelow = spacingLines - spacingAbove;
2105
- return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "column", backgroundColor: selected ? "gray" : void 0, children: [
2106
- spacingAbove > 0 && /* @__PURE__ */ jsx18(Box17, { height: spacingAbove, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2107
- /* @__PURE__ */ jsx18(Text18, { children: dim ? chalk14.dim(fullText) : fullText }),
2108
- spacingBelow > 0 && /* @__PURE__ */ jsx18(Box17, { height: spacingBelow, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) })
2449
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", backgroundColor: selected ? theme.selectedBg : void 0, children: [
2450
+ spacingAbove > 0 && /* @__PURE__ */ jsx20(Box19, { height: spacingAbove, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
2451
+ /* @__PURE__ */ jsx20(Text20, { children: dim ? chalk14.dim(fullText) : fullText }),
2452
+ spacingBelow > 0 && /* @__PURE__ */ jsx20(Box19, { height: spacingBelow, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) })
2109
2453
  ] });
2110
2454
  }
2111
2455
 
2112
2456
  // src/ui/components/repo/FilterInput.tsx
2113
- import { Box as Box18, Text as Text19 } from "ink";
2114
- import TextInput4 from "ink-text-input";
2115
- import { jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
2457
+ import { Box as Box20, Text as Text21 } from "ink";
2458
+ import TextInput6 from "ink-text-input";
2459
+ import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
2116
2460
 
2117
2461
  // src/ui/components/repo/RepoListHeader.tsx
2118
- import { Box as Box19, Text as Text20 } from "ink";
2119
- import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
2462
+ import { Box as Box21, Text as Text22 } from "ink";
2463
+ import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
2120
2464
  function RepoListHeader({
2121
2465
  ownerContext,
2122
2466
  sortKey,
@@ -2133,26 +2477,26 @@ function RepoListHeader({
2133
2477
  const { theme } = useTheme(themeProp?.name ?? "default");
2134
2478
  const contextLabel = ownerContext === "personal" ? "Personal Account" : ownerContext?.type === "organization" ? `Organisation: ${ownerContext.name ?? ownerContext.login}` : "";
2135
2479
  const visibilityLabel = visibilityFilter === "public" ? "Public" : visibilityFilter === "private" ? isEnterprise ? "Private/Internal" : "Private" : visibilityFilter === "internal" ? "Internal" : "";
2136
- return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", gap: 2, marginBottom: 1, children: [
2137
- contextLabel && /* @__PURE__ */ jsx20(Text20, { children: contextLabel }),
2138
- starsMode && /* @__PURE__ */ jsx20(Text20, { color: theme.warning, bold: true, children: "\u2B50 Stars Mode" }),
2139
- /* @__PURE__ */ jsxs19(Text20, { color: theme.muted, dimColor: true, children: [
2480
+ return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "row", gap: 2, marginBottom: 1, children: [
2481
+ contextLabel && /* @__PURE__ */ jsx22(Text22, { children: contextLabel }),
2482
+ starsMode && /* @__PURE__ */ jsx22(Text22, { color: theme.warning, bold: true, children: "\u2B50 Stars Mode" }),
2483
+ /* @__PURE__ */ jsxs21(Text22, { color: theme.muted, dimColor: true, children: [
2140
2484
  "Sort: ",
2141
2485
  filterActive ? "relevance" : `${sortKey} ${sortDir === "asc" ? "\u2191" : "\u2193"}`
2142
2486
  ] }),
2143
- /* @__PURE__ */ jsxs19(Text20, { color: theme.muted, dimColor: true, children: [
2487
+ /* @__PURE__ */ jsxs21(Text22, { color: theme.muted, dimColor: true, children: [
2144
2488
  "Fork Status - Commits Behind: ",
2145
2489
  forkTracking ? "ON" : "OFF"
2146
2490
  ] }),
2147
- !!visibilityLabel && !starsMode && /* @__PURE__ */ jsxs19(Text20, { color: theme.warning, children: [
2491
+ !!visibilityLabel && !starsMode && /* @__PURE__ */ jsxs21(Text22, { color: theme.warning, children: [
2148
2492
  "Visibility: ",
2149
2493
  visibilityLabel
2150
2494
  ] }),
2151
- archiveFilter !== "all" && /* @__PURE__ */ jsxs19(Text20, { color: theme.primary, children: [
2495
+ archiveFilter !== "all" && /* @__PURE__ */ jsxs21(Text22, { color: theme.primary, children: [
2152
2496
  "Archive: ",
2153
2497
  archiveFilter === "archived" ? "Archived" : "Unarchived"
2154
2498
  ] }),
2155
- (filterActive || starsMode && filter.trim().length > 0) && /* @__PURE__ */ jsxs19(Text20, { color: theme.primary, children: [
2499
+ (filterActive || starsMode && filter.trim().length > 0) && /* @__PURE__ */ jsxs21(Text22, { color: theme.primary, children: [
2156
2500
  starsMode ? "Filter" : "Search",
2157
2501
  ': "',
2158
2502
  filter.trim(),
@@ -2162,7 +2506,7 @@ function RepoListHeader({
2162
2506
  }
2163
2507
 
2164
2508
  // src/ui/views/RepoList.tsx
2165
- import { Fragment as Fragment9, jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
2509
+ import { Fragment as Fragment11, jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
2166
2510
  var getPageSize = () => {
2167
2511
  const envValue = process.env.REPOS_PER_FETCH;
2168
2512
  if (envValue) {
@@ -2178,17 +2522,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2178
2522
  const { exit } = useApp();
2179
2523
  const { stdout } = useStdout();
2180
2524
  const client = useMemo2(() => makeClient(token), [token]);
2181
- const [debugMessages, setDebugMessages] = useState17([]);
2525
+ const [debugMessages, setDebugMessages] = useState19([]);
2182
2526
  const addDebugMessage = useCallback((msg) => {
2183
2527
  if (process.env.GH_MANAGER_DEBUG === "1") {
2184
2528
  setDebugMessages((prev) => [...prev.slice(-9), msg]);
2185
2529
  }
2186
2530
  }, []);
2187
- const handleOrgContextChangeRef = useRef(onOrgContextChange);
2188
- useEffect12(() => {
2531
+ const handleOrgContextChangeRef = useRef3(onOrgContextChange);
2532
+ useEffect13(() => {
2189
2533
  handleOrgContextChangeRef.current = onOrgContextChange;
2190
2534
  }, [onOrgContextChange]);
2191
- React17.useEffect(() => {
2535
+ React19.useEffect(() => {
2192
2536
  addDebugMessage(`[RepoList] Component mounted`);
2193
2537
  logger.info("RepoList component mounted", {
2194
2538
  token: token ? "present" : "missing",
@@ -2200,90 +2544,93 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2200
2544
  }, []);
2201
2545
  const terminalWidth = stdout?.columns ?? 80;
2202
2546
  const availableHeight = maxVisibleRows ?? 20;
2203
- const [items, setItems] = useState17([]);
2204
- const [cursor, setCursor] = useState17(0);
2205
- const [endCursor, setEndCursor] = useState17(null);
2206
- const [hasNextPage, setHasNextPage] = useState17(false);
2207
- const [totalCount, setTotalCount] = useState17(0);
2208
- const [loading, setLoading] = useState17(true);
2209
- const [sortingLoading, setSortingLoading] = useState17(false);
2210
- const [refreshing, setRefreshing] = useState17(false);
2211
- const [loadingMore, setLoadingMore] = useState17(false);
2212
- const [error, setError] = useState17(null);
2213
- const [rateLimit, setRateLimit] = useState17(void 0);
2214
- const [prevRateLimit, setPrevRateLimit] = useState17(void 0);
2215
- const [restRateLimit, setRestRateLimit] = useState17(void 0);
2216
- const [prevRestRateLimit, setPrevRestRateLimit] = useState17(void 0);
2217
- const [density, setDensity] = useState17(2);
2218
- const [prefsLoaded, setPrefsLoaded] = useState17(false);
2219
- const [themeName, setThemeName] = useState17("default");
2220
- const [themeToast, setThemeToast] = useState17(null);
2221
- const themeToastTimerRef = useRef(null);
2547
+ const [items, setItems] = useState19([]);
2548
+ const [cursor, setCursor] = useState19(0);
2549
+ const [endCursor, setEndCursor] = useState19(null);
2550
+ const [hasNextPage, setHasNextPage] = useState19(false);
2551
+ const [totalCount, setTotalCount] = useState19(0);
2552
+ const [loading, setLoading] = useState19(true);
2553
+ const [sortingLoading, setSortingLoading] = useState19(false);
2554
+ const [refreshing, setRefreshing] = useState19(false);
2555
+ const [loadingMore, setLoadingMore] = useState19(false);
2556
+ const [error, setError] = useState19(null);
2557
+ const [rateLimit, setRateLimit] = useState19(void 0);
2558
+ const [prevRateLimit, setPrevRateLimit] = useState19(void 0);
2559
+ const [restRateLimit, setRestRateLimit] = useState19(void 0);
2560
+ const [prevRestRateLimit, setPrevRestRateLimit] = useState19(void 0);
2561
+ const [density, setDensity] = useState19(2);
2562
+ const [prefsLoaded, setPrefsLoaded] = useState19(false);
2563
+ const [themeName, setThemeName] = useState19("default");
2564
+ const [themeToast, setThemeToast] = useState19(null);
2565
+ const themeToastTimerRef = useRef3(null);
2222
2566
  const { theme, c: tc } = useTheme(themeName);
2223
- const [ownerContext, setOwnerContext] = useState17("personal");
2224
- const [ownerAffiliations, setOwnerAffiliations] = useState17(["OWNER"]);
2225
- const [orgSwitcherOpen, setOrgSwitcherOpen] = useState17(false);
2226
- const [operationCount, setOperationCount] = useState17(0);
2227
- const [showSponsorReminder, setShowSponsorReminder] = useState17(false);
2228
- const [deleteMode, setDeleteMode] = useState17(false);
2229
- const [deleteTarget, setDeleteTarget] = useState17(null);
2230
- const [deleteCode, setDeleteCode] = useState17("");
2231
- const [typedCode, setTypedCode] = useState17("");
2232
- const [deleting, setDeleting] = useState17(false);
2233
- const [deleteError, setDeleteError] = useState17(null);
2234
- const [deleteConfirmStage, setDeleteConfirmStage] = useState17(false);
2235
- const [confirmFocus, setConfirmFocus] = useState17("delete");
2236
- const [archiveMode, setArchiveMode] = useState17(false);
2237
- const [archiveTarget, setArchiveTarget] = useState17(null);
2238
- const [archiving, setArchiving] = useState17(false);
2239
- const [archiveError, setArchiveError] = useState17(null);
2240
- const [archiveFocus, setArchiveFocus] = useState17("confirm");
2241
- const [syncMode, setSyncMode] = useState17(false);
2242
- const [syncTarget, setSyncTarget] = useState17(null);
2243
- const [syncing, setSyncing] = useState17(false);
2244
- const [syncError, setSyncError] = useState17(null);
2245
- const [syncFocus, setSyncFocus] = useState17("confirm");
2246
- const [renameMode, setRenameMode] = useState17(false);
2247
- const [renameTarget, setRenameTarget] = useState17(null);
2248
- const [copyUrlMode, setCopyUrlMode] = useState17(false);
2249
- const [copyUrlTarget, setCopyUrlTarget] = useState17(null);
2250
- const [copyToast, setCopyToast] = useState17(null);
2251
- const [syncTrigger, setSyncTrigger] = useState17(false);
2252
- const [infoMode, setInfoMode] = useState17(false);
2253
- const [infoRepo, setInfoRepo] = useState17(null);
2254
- const [logoutMode, setLogoutMode] = useState17(false);
2255
- const [logoutFocus, setLogoutFocus] = useState17("confirm");
2256
- const [logoutError, setLogoutError] = useState17(null);
2257
- const [archiveFilterMode, setArchiveFilterMode] = useState17(false);
2258
- const [visibilityMode, setVisibilityMode] = useState17(false);
2259
- const [isEnterpriseOrg, setIsEnterpriseOrg] = useState17(false);
2260
- const [hasInternalRepos, setHasInternalRepos] = useState17(false);
2261
- const [changeVisibilityMode, setChangeVisibilityMode] = useState17(false);
2262
- const [changeVisibilityTarget, setChangeVisibilityTarget] = useState17(null);
2263
- const [changingVisibility, setChangingVisibility] = useState17(false);
2264
- const [changeVisibilityError, setChangeVisibilityError] = useState17(null);
2265
- const [sortMode, setSortMode] = useState17(false);
2266
- const [sortDirectionMode, setSortDirectionMode] = useState17(false);
2267
- const [starsMode, setStarsMode] = useState17(false);
2268
- const [starredItems, setStarredItems] = useState17([]);
2269
- const [starredEndCursor, setStarredEndCursor] = useState17(null);
2270
- const [starredHasNextPage, setStarredHasNextPage] = useState17(false);
2271
- const [starredTotalCount, setStarredTotalCount] = useState17(0);
2272
- const [starredLoading, setStarredLoading] = useState17(false);
2273
- const [unstarMode, setUnstarMode] = useState17(false);
2274
- const [unstarTarget, setUnstarTarget] = useState17(null);
2275
- const [unstarring, setUnstarring] = useState17(false);
2276
- const [unstarError, setUnstarError] = useState17(null);
2277
- const [starMode, setStarMode] = useState17(false);
2278
- const [starTarget, setStarTarget] = useState17(null);
2279
- const [starring, setStarring] = useState17(false);
2280
- const [starError, setStarError] = useState17(null);
2281
- const [openInBrowserMode, setOpenInBrowserMode] = useState17(false);
2282
- const [openInBrowserTarget, setOpenInBrowserTarget] = useState17(null);
2283
- const [enrichingForks, setEnrichingForks] = useState17(false);
2284
- const enrichmentDoneRef = useRef(/* @__PURE__ */ new Set());
2285
- const appliedInitialOrg = useRef(false);
2286
- useEffect12(() => {
2567
+ const [ownerContext, setOwnerContext] = useState19("personal");
2568
+ const [ownerAffiliations, setOwnerAffiliations] = useState19(["OWNER"]);
2569
+ const [orgSwitcherOpen, setOrgSwitcherOpen] = useState19(false);
2570
+ const [operationCount, setOperationCount] = useState19(0);
2571
+ const [showSponsorReminder, setShowSponsorReminder] = useState19(false);
2572
+ const [deleteMode, setDeleteMode] = useState19(false);
2573
+ const [deleteTarget, setDeleteTarget] = useState19(null);
2574
+ const [deleteCode, setDeleteCode] = useState19("");
2575
+ const [typedCode, setTypedCode] = useState19("");
2576
+ const [deleting, setDeleting] = useState19(false);
2577
+ const [deleteError, setDeleteError] = useState19(null);
2578
+ const [deleteConfirmStage, setDeleteConfirmStage] = useState19(false);
2579
+ const [confirmFocus, setConfirmFocus] = useState19("delete");
2580
+ const [archiveMode, setArchiveMode] = useState19(false);
2581
+ const [archiveTarget, setArchiveTarget] = useState19(null);
2582
+ const [archiving, setArchiving] = useState19(false);
2583
+ const [archiveError, setArchiveError] = useState19(null);
2584
+ const [archiveFocus, setArchiveFocus] = useState19("confirm");
2585
+ const [syncMode, setSyncMode] = useState19(false);
2586
+ const [syncTarget, setSyncTarget] = useState19(null);
2587
+ const [syncing, setSyncing] = useState19(false);
2588
+ const [syncError, setSyncError] = useState19(null);
2589
+ const [syncFocus, setSyncFocus] = useState19("confirm");
2590
+ const [renameMode, setRenameMode] = useState19(false);
2591
+ const [renameTarget, setRenameTarget] = useState19(null);
2592
+ const [createMode, setCreateMode] = useState19(false);
2593
+ const [transferMode, setTransferMode] = useState19(false);
2594
+ const [transferTarget, setTransferTarget] = useState19(null);
2595
+ const [copyUrlMode, setCopyUrlMode] = useState19(false);
2596
+ const [copyUrlTarget, setCopyUrlTarget] = useState19(null);
2597
+ const [copyToast, setCopyToast] = useState19(null);
2598
+ const [syncTrigger, setSyncTrigger] = useState19(false);
2599
+ const [infoMode, setInfoMode] = useState19(false);
2600
+ const [infoRepo, setInfoRepo] = useState19(null);
2601
+ const [logoutMode, setLogoutMode] = useState19(false);
2602
+ const [logoutFocus, setLogoutFocus] = useState19("confirm");
2603
+ const [logoutError, setLogoutError] = useState19(null);
2604
+ const [archiveFilterMode, setArchiveFilterMode] = useState19(false);
2605
+ const [visibilityMode, setVisibilityMode] = useState19(false);
2606
+ const [isEnterpriseOrg, setIsEnterpriseOrg] = useState19(false);
2607
+ const [hasInternalRepos, setHasInternalRepos] = useState19(false);
2608
+ const [changeVisibilityMode, setChangeVisibilityMode] = useState19(false);
2609
+ const [changeVisibilityTarget, setChangeVisibilityTarget] = useState19(null);
2610
+ const [changingVisibility, setChangingVisibility] = useState19(false);
2611
+ const [changeVisibilityError, setChangeVisibilityError] = useState19(null);
2612
+ const [sortMode, setSortMode] = useState19(false);
2613
+ const [sortDirectionMode, setSortDirectionMode] = useState19(false);
2614
+ const [starsMode, setStarsMode] = useState19(false);
2615
+ const [starredItems, setStarredItems] = useState19([]);
2616
+ const [starredEndCursor, setStarredEndCursor] = useState19(null);
2617
+ const [starredHasNextPage, setStarredHasNextPage] = useState19(false);
2618
+ const [starredTotalCount, setStarredTotalCount] = useState19(0);
2619
+ const [starredLoading, setStarredLoading] = useState19(false);
2620
+ const [unstarMode, setUnstarMode] = useState19(false);
2621
+ const [unstarTarget, setUnstarTarget] = useState19(null);
2622
+ const [unstarring, setUnstarring] = useState19(false);
2623
+ const [unstarError, setUnstarError] = useState19(null);
2624
+ const [starMode, setStarMode] = useState19(false);
2625
+ const [starTarget, setStarTarget] = useState19(null);
2626
+ const [starring, setStarring] = useState19(false);
2627
+ const [starError, setStarError] = useState19(null);
2628
+ const [openInBrowserMode, setOpenInBrowserMode] = useState19(false);
2629
+ const [openInBrowserTarget, setOpenInBrowserTarget] = useState19(null);
2630
+ const [enrichingForks, setEnrichingForks] = useState19(false);
2631
+ const enrichmentDoneRef = useRef3(/* @__PURE__ */ new Set());
2632
+ const appliedInitialOrg = useRef3(false);
2633
+ useEffect13(() => {
2287
2634
  (async () => {
2288
2635
  if (appliedInitialOrg.current) return;
2289
2636
  if (!initialOrgSlug2) return;
@@ -2521,7 +2868,62 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2521
2868
  throw error2;
2522
2869
  }
2523
2870
  }
2524
- const copyToastTimerRef = useRef(null);
2871
+ async function executeCreate(name, visibility) {
2872
+ if (!name.trim()) return;
2873
+ const org = ownerContext !== "personal" ? ownerContext.login : void 0;
2874
+ const { nameWithOwner } = await createRepositoryRest(token, { name: name.trim(), visibility, org });
2875
+ setFilter("");
2876
+ setFilterMode(false);
2877
+ if (archiveFilter === "archived") {
2878
+ storeUIPrefs({ archiveFilter: "all" });
2879
+ setArchiveFilter("all");
2880
+ }
2881
+ const passesVisibilityFilter = visibilityFilter === "all" || visibilityFilter === "public" && visibility === "PUBLIC" || visibilityFilter === "private" && (visibility === "PRIVATE" || visibility === "INTERNAL");
2882
+ if (!passesVisibilityFilter) {
2883
+ previousVisibilityFilter.current = "all";
2884
+ storeUIPrefs({ visibilityFilter: "all" });
2885
+ setVisibilityFilter("all");
2886
+ }
2887
+ const [owner, repoName] = (nameWithOwner || "").split("/");
2888
+ let created = await fetchRepositoryByOwnerAndName(client, owner, repoName);
2889
+ if (!created) {
2890
+ await new Promise((resolve) => setTimeout(resolve, 600));
2891
+ created = await fetchRepositoryByOwnerAndName(client, owner, repoName);
2892
+ }
2893
+ setCreateMode(false);
2894
+ pendingFocusRef.current = nameWithOwner;
2895
+ if (created) {
2896
+ await updateCacheWithRepository(token, created);
2897
+ const createdId = created.id;
2898
+ setItems((prev) => prev.some((r) => r.id === createdId) ? prev : [created, ...prev]);
2899
+ setTotalCount((c) => c + 1);
2900
+ } else {
2901
+ setRefreshing(true);
2902
+ setSortingLoading(true);
2903
+ try {
2904
+ await purgeApolloCacheFiles();
2905
+ } catch {
2906
+ }
2907
+ fetchPage(null, true, true, void 0, "network-only", passesVisibilityFilter ? void 0 : "all");
2908
+ }
2909
+ }
2910
+ function closeTransferModal() {
2911
+ setTransferMode(false);
2912
+ setTransferTarget(null);
2913
+ }
2914
+ async function executeTransfer(repo, newOwner) {
2915
+ if (!repo || !newOwner.trim()) return;
2916
+ const [owner, name] = (repo.nameWithOwner || "").split("/");
2917
+ const targetId = repo.id;
2918
+ await transferRepositoryRest(token, owner, name, newOwner.trim());
2919
+ await updateCacheAfterDelete(token, targetId);
2920
+ setItems((prev) => prev.filter((r) => r.id !== targetId));
2921
+ setTotalCount((c) => Math.max(0, c - 1));
2922
+ setCursor((c) => Math.max(0, Math.min(c, visibleItems.length - 2)));
2923
+ trackSuccessfulOperation();
2924
+ closeTransferModal();
2925
+ }
2926
+ const copyToastTimerRef = useRef3(null);
2525
2927
  async function handleCopyUrl(url, type) {
2526
2928
  try {
2527
2929
  if (copyToastTimerRef.current) {
@@ -2548,7 +2950,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2548
2950
  throw error2;
2549
2951
  }
2550
2952
  }
2551
- useEffect12(() => {
2953
+ useEffect13(() => {
2552
2954
  return () => {
2553
2955
  if (copyToastTimerRef.current) clearTimeout(copyToastTimerRef.current);
2554
2956
  if (themeToastTimerRef.current) clearTimeout(themeToastTimerRef.current);
@@ -2643,12 +3045,12 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2643
3045
  setDeleteError("Failed to delete repository. Ensure delete_repo scope and admin permissions.");
2644
3046
  }
2645
3047
  }
2646
- const [filter, setFilter] = useState17("");
2647
- const [filterMode, setFilterMode] = useState17(false);
2648
- const [sortKey, setSortKey] = useState17("updated");
2649
- const [sortDir, setSortDir] = useState17("desc");
2650
- const [forkTracking, setForkTracking] = useState17(true);
2651
- useEffect12(() => {
3048
+ const [filter, setFilter] = useState19("");
3049
+ const [filterMode, setFilterMode] = useState19(false);
3050
+ const [sortKey, setSortKey] = useState19("updated");
3051
+ const [sortDir, setSortDir] = useState19("desc");
3052
+ const [forkTracking, setForkTracking] = useState19(true);
3053
+ useEffect13(() => {
2652
3054
  if (loading || loadingMore || hasNextPage || items.length === 0) return;
2653
3055
  if (!forkTracking) return;
2654
3056
  const unenriched = items.filter(
@@ -2714,22 +3116,27 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2714
3116
  async function jumpToUpstreamRepo(parentNameWithOwner) {
2715
3117
  const [parentOwner, parentName] = parentNameWithOwner.split("/");
2716
3118
  if (!parentOwner || !parentName) return;
2717
- const repo = await fetchRepositoryByOwnerAndName(client, parentOwner, parentName);
2718
- if (repo) {
2719
- setInfoRepo(repo);
2720
- setInfoMode(true);
3119
+ try {
3120
+ const repo = await fetchRepositoryByOwnerAndName(client, parentOwner, parentName);
3121
+ if (repo) {
3122
+ setInfoRepo(repo);
3123
+ setInfoMode(true);
3124
+ }
3125
+ } catch (err) {
3126
+ logger.error("Failed to fetch upstream repository", { error: err?.message, parentNameWithOwner });
2721
3127
  }
2722
3128
  }
2723
- const [visibilityFilter, setVisibilityFilter] = useState17("all");
2724
- const previousVisibilityFilter = useRef("all");
2725
- const [archiveFilter, setArchiveFilter] = useState17("all");
3129
+ const [visibilityFilter, setVisibilityFilter] = useState19("all");
3130
+ const previousVisibilityFilter = useRef3("all");
3131
+ const pendingFocusRef = useRef3(null);
3132
+ const [archiveFilter, setArchiveFilter] = useState19("all");
2726
3133
  const sortFieldMap = {
2727
3134
  "updated": "UPDATED_AT",
2728
3135
  "pushed": "PUSHED_AT",
2729
3136
  "name": "NAME",
2730
3137
  "stars": "STARGAZERS"
2731
3138
  };
2732
- const fetchPage = async (after, reset = false, isSortChange = false, overrideForkTracking, policy) => {
3139
+ const fetchPage = async (after, reset = false, isSortChange = false, overrideForkTracking, policy, privacyOverride) => {
2733
3140
  logger.info("fetchPage called", {
2734
3141
  after,
2735
3142
  reset,
@@ -2753,7 +3160,9 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2753
3160
  };
2754
3161
  const orgLogin = ownerContext !== "personal" ? ownerContext.login : void 0;
2755
3162
  let privacy;
2756
- if (visibilityFilter === "public") privacy = "PUBLIC";
3163
+ if (privacyOverride !== void 0) {
3164
+ privacy = privacyOverride === "all" ? void 0 : privacyOverride;
3165
+ } else if (visibilityFilter === "public") privacy = "PUBLIC";
2757
3166
  else if (visibilityFilter === "private") privacy = "PRIVATE";
2758
3167
  const page = await fetchViewerReposPageUnified(
2759
3168
  token,
@@ -2827,7 +3236,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2827
3236
  setLoadingMore(false);
2828
3237
  }
2829
3238
  };
2830
- useEffect12(() => {
3239
+ useEffect13(() => {
2831
3240
  const ui = getUIPrefs();
2832
3241
  if (ui.density !== void 0) setDensity(ui.density);
2833
3242
  if (ui.sortKey && ["updated", "pushed", "name", "stars"].includes(ui.sortKey)) {
@@ -2863,7 +3272,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2863
3272
  }
2864
3273
  setPrefsLoaded(true);
2865
3274
  }, [onOrgContextChange]);
2866
- useEffect12(() => {
3275
+ useEffect13(() => {
2867
3276
  if (!prefsLoaded) return;
2868
3277
  let policy = "cache-first";
2869
3278
  const orgLogin = ownerContext !== "personal" ? ownerContext.login : void 0;
@@ -2883,7 +3292,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2883
3292
  setCursor(0);
2884
3293
  fetchPage(null, true, false, void 0, policy);
2885
3294
  }, [client, prefsLoaded, ownerContext, ownerAffiliations]);
2886
- useEffect12(() => {
3295
+ useEffect13(() => {
2887
3296
  if (visibilityFilter !== "all" || previousVisibilityFilter.current && previousVisibilityFilter.current !== visibilityFilter) {
2888
3297
  if (items.length > 0) {
2889
3298
  fetchPage(null, true, true, void 0, "network-only");
@@ -2891,7 +3300,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2891
3300
  }
2892
3301
  previousVisibilityFilter.current = visibilityFilter;
2893
3302
  }, [visibilityFilter]);
2894
- useInput17((input, key) => {
3303
+ useInput19((input, key) => {
2895
3304
  if (error) {
2896
3305
  if (input && input.toUpperCase() === "Q") {
2897
3306
  try {
@@ -3053,6 +3462,12 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3053
3462
  if (renameMode) {
3054
3463
  return;
3055
3464
  }
3465
+ if (createMode) {
3466
+ return;
3467
+ }
3468
+ if (transferMode) {
3469
+ return;
3470
+ }
3056
3471
  if (openInBrowserMode) {
3057
3472
  return;
3058
3473
  }
@@ -3244,8 +3659,20 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3244
3659
  }
3245
3660
  return;
3246
3661
  }
3247
- if (input && input.toUpperCase() === "W") {
3248
- setOrgSwitcherOpen(true);
3662
+ if (key.ctrl && (input === "n" || input === "N")) {
3663
+ if (!starsMode) {
3664
+ setCreateMode(true);
3665
+ }
3666
+ return;
3667
+ }
3668
+ if (key.shift && input === "M") {
3669
+ if (!starsMode) {
3670
+ const repo = visibleItems[cursor];
3671
+ if (repo) {
3672
+ setTransferTarget(repo);
3673
+ setTransferMode(true);
3674
+ }
3675
+ }
3249
3676
  return;
3250
3677
  }
3251
3678
  if (input && input.toUpperCase() === "S" && !key.shift && !key.ctrl && !filterActive) {
@@ -3408,9 +3835,18 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3408
3835
  return result;
3409
3836
  }, [starredItems, filter, archiveFilter]);
3410
3837
  const visibleItems = starsMode ? filteredStarredItems : filterActive ? fuzzyItems : filteredAndSorted;
3411
- useEffect12(() => {
3838
+ useEffect13(() => {
3412
3839
  setCursor((c) => Math.min(c, Math.max(0, visibleItems.length - 1)));
3413
3840
  }, [filterActive, items.length, visibleItems.length]);
3841
+ useEffect13(() => {
3842
+ const target = pendingFocusRef.current;
3843
+ if (!target) return;
3844
+ const idx = visibleItems.findIndex((r) => r.nameWithOwner === target);
3845
+ if (idx >= 0) {
3846
+ setCursor(idx);
3847
+ pendingFocusRef.current = null;
3848
+ }
3849
+ }, [visibleItems]);
3414
3850
  const headerHeight = 2;
3415
3851
  const footerHeight = 4;
3416
3852
  const containerPadding = 2;
@@ -3421,7 +3857,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3421
3857
  () => computeWindow(visibleItems, cursor, listHeight, spacingLines),
3422
3858
  [visibleItems, cursor, listHeight, spacingLines]
3423
3859
  );
3424
- useEffect12(() => {
3860
+ useEffect13(() => {
3425
3861
  const rawItemsLength = starsMode ? starredItems.length : items.length;
3426
3862
  const filterDrainedPage = visibleItems.length === 0 && archiveFilter !== "all" && rawItemsLength > 0;
3427
3863
  if (starsMode) {
@@ -3440,79 +3876,79 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3440
3876
  exec(cmd);
3441
3877
  }
3442
3878
  const lowRate = rateLimit && rateLimit.remaining <= Math.ceil(rateLimit.limit * 0.1) || restRateLimit && restRateLimit.core.remaining <= Math.ceil(restRateLimit.core.limit * 0.1);
3443
- const modalOpen = deleteMode || archiveMode || syncMode || logoutMode || infoMode || visibilityMode || archiveFilterMode || sortMode || sortDirectionMode || changeVisibilityMode || copyUrlMode || renameMode || openInBrowserMode;
3444
- const headerBar = useMemo2(() => /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: [
3445
- /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", gap: 1, children: [
3446
- /* @__PURE__ */ jsxs20(Text21, { color: theme.primary, bold: !modalOpen, dimColor: modalOpen, children: [
3879
+ const modalOpen = deleteMode || archiveMode || syncMode || logoutMode || infoMode || visibilityMode || archiveFilterMode || sortMode || sortDirectionMode || changeVisibilityMode || copyUrlMode || renameMode || openInBrowserMode || createMode || transferMode;
3880
+ const headerBar = useMemo2(() => /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: [
3881
+ /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", gap: 1, children: [
3882
+ /* @__PURE__ */ jsxs22(Text23, { color: theme.primary, bold: !modalOpen, dimColor: modalOpen, children: [
3447
3883
  " ",
3448
3884
  ownerContext === "personal" ? "Personal" : ownerContext.name || ownerContext.login,
3449
3885
  ownerContext !== "personal" && isEnterpriseOrg && " (ENT)"
3450
3886
  ] }),
3451
- /* @__PURE__ */ jsx21(Text21, { bold: true, color: modalOpen ? theme.muted : void 0, dimColor: modalOpen ? true : void 0, children: "Repositories" }),
3452
- /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
3887
+ /* @__PURE__ */ jsx23(Text23, { bold: true, color: modalOpen ? theme.muted : void 0, dimColor: modalOpen ? true : void 0, children: "Repositories" }),
3888
+ /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3453
3889
  "(",
3454
3890
  visibleItems.length,
3455
3891
  "/",
3456
3892
  totalCount,
3457
3893
  ")"
3458
3894
  ] }),
3459
- loadingMore && hasNextPage && !starsMode && totalCount > 0 && /* @__PURE__ */ jsx21(Text21, { color: theme.primary, children: ` \xB7 loading ${items.length}/${totalCount}` }),
3460
- enrichingForks && /* @__PURE__ */ jsx21(Text21, { color: theme.muted, children: ` \xB7 enriching forks\u2026` }),
3461
- (loading || loadingMore) && /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, marginLeft: 1, children: /* @__PURE__ */ jsx21(Text21, { color: theme.warning, children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) })
3895
+ loadingMore && hasNextPage && !starsMode && totalCount > 0 && /* @__PURE__ */ jsx23(Text23, { color: theme.primary, children: ` \xB7 loading ${items.length}/${totalCount}` }),
3896
+ enrichingForks && /* @__PURE__ */ jsx23(Text23, { color: theme.muted, children: ` \xB7 enriching forks\u2026` }),
3897
+ (loading || loadingMore) && /* @__PURE__ */ jsx23(Box22, { width: 2, flexShrink: 0, flexGrow: 0, marginLeft: 1, children: /* @__PURE__ */ jsx23(Text23, { color: theme.warning, children: /* @__PURE__ */ jsx23(SlowSpinner, {}) }) })
3462
3898
  ] }),
3463
- (rateLimit || restRateLimit) && /* @__PURE__ */ jsxs20(Text21, { color: lowRate ? theme.warning : theme.muted, children: [
3899
+ (rateLimit || restRateLimit) && /* @__PURE__ */ jsxs22(Text23, { color: lowRate ? theme.warning : theme.muted, children: [
3464
3900
  "GraphQL: ",
3465
3901
  rateLimit ? `${rateLimit.remaining}/${rateLimit.limit}` : "---/---",
3466
- prevRateLimit !== void 0 && rateLimit && prevRateLimit !== rateLimit.remaining && /* @__PURE__ */ jsx21(Text21, { color: rateLimit.remaining < prevRateLimit ? theme.error : theme.success, children: ` (${rateLimit.remaining - prevRateLimit > 0 ? "+" : ""}${rateLimit.remaining - prevRateLimit})` }),
3902
+ prevRateLimit !== void 0 && rateLimit && prevRateLimit !== rateLimit.remaining && /* @__PURE__ */ jsx23(Text23, { color: rateLimit.remaining < prevRateLimit ? theme.error : theme.success, children: ` (${rateLimit.remaining - prevRateLimit > 0 ? "+" : ""}${rateLimit.remaining - prevRateLimit})` }),
3467
3903
  " | ",
3468
3904
  "REST: ",
3469
3905
  restRateLimit ? `${restRateLimit.core.remaining}/${restRateLimit.core.limit}` : "---/---",
3470
- prevRestRateLimit !== void 0 && restRateLimit && prevRestRateLimit !== restRateLimit.core.remaining && /* @__PURE__ */ jsx21(Text21, { color: restRateLimit.core.remaining < prevRestRateLimit ? theme.error : theme.success, children: ` (${restRateLimit.core.remaining - prevRestRateLimit > 0 ? "+" : ""}${restRateLimit.core.remaining - prevRestRateLimit})` }),
3906
+ prevRestRateLimit !== void 0 && restRateLimit && prevRestRateLimit !== restRateLimit.core.remaining && /* @__PURE__ */ jsx23(Text23, { color: restRateLimit.core.remaining < prevRestRateLimit ? theme.error : theme.success, children: ` (${restRateLimit.core.remaining - prevRestRateLimit > 0 ? "+" : ""}${restRateLimit.core.remaining - prevRestRateLimit})` }),
3471
3907
  " "
3472
3908
  ] })
3473
3909
  ] }), [visibleItems.length, totalCount, loading, loadingMore, rateLimit, lowRate, modalOpen, prevRateLimit, ownerContext, isEnterpriseOrg, restRateLimit, prevRestRateLimit, enrichingForks, starsMode, hasNextPage, items.length, theme]);
3474
3910
  if (error) {
3475
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: availableHeight, children: [
3476
- /* @__PURE__ */ jsx21(Box20, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", gap: 1, children: [
3477
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: " Repositories" }),
3478
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: "(Error)" })
3911
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: availableHeight, children: [
3912
+ /* @__PURE__ */ jsx23(Box22, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", gap: 1, children: [
3913
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: " Repositories" }),
3914
+ /* @__PURE__ */ jsx23(Text23, { color: "red", children: "(Error)" })
3479
3915
  ] }) }),
3480
- /* @__PURE__ */ jsx21(Box20, { borderStyle: "single", borderColor: "red", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx21(Box20, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", alignItems: "center", children: [
3481
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: error }),
3482
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "gray", dimColor: true, children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3916
+ /* @__PURE__ */ jsx23(Box22, { borderStyle: "single", borderColor: "red", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx23(Box22, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", alignItems: "center", children: [
3917
+ /* @__PURE__ */ jsx23(Text23, { color: "red", children: error }),
3918
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3483
3919
  ] }) }) }),
3484
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3920
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3485
3921
  ] });
3486
3922
  }
3487
3923
  if (loading && items.length === 0 || sortingLoading) {
3488
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: availableHeight, children: [
3489
- /* @__PURE__ */ jsx21(Box20, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", gap: 1, children: [
3490
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: " Repositories" }),
3491
- /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "(Loading...)" })
3924
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: availableHeight, children: [
3925
+ /* @__PURE__ */ jsx23(Box22, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", gap: 1, children: [
3926
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: " Repositories" }),
3927
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "(Loading...)" })
3492
3928
  ] }) }),
3493
- /* @__PURE__ */ jsx21(Box20, { borderStyle: "single", borderColor: "yellow", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx21(Box20, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx21(Box20, { flexDirection: "column", alignItems: "center", children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", alignItems: "center", children: [
3494
- /* @__PURE__ */ jsxs20(Box20, { height: 1, flexDirection: "row", children: [
3495
- /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, children: /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) }),
3496
- /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: refreshing ? "Refreshing..." : sortingLoading ? "Applying sort..." : "Loading repositories..." })
3929
+ /* @__PURE__ */ jsx23(Box22, { borderStyle: "single", borderColor: "yellow", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx23(Box22, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx23(Box22, { flexDirection: "column", alignItems: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", alignItems: "center", children: [
3930
+ /* @__PURE__ */ jsxs22(Box22, { height: 1, flexDirection: "row", children: [
3931
+ /* @__PURE__ */ jsx23(Box22, { width: 2, flexShrink: 0, flexGrow: 0, children: /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: /* @__PURE__ */ jsx23(SlowSpinner, {}) }) }),
3932
+ /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: refreshing ? "Refreshing..." : sortingLoading ? "Applying sort..." : "Loading repositories..." })
3497
3933
  ] }),
3498
- /* @__PURE__ */ jsx21(Box20, { height: 1, marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "gray", children: refreshing ? "Fetching latest repository data" : sortingLoading ? `Sorting by ${sortKey} (${sortDir === "asc" ? "ascending" : "descending"})` : "Fetching your GitHub repositories" }) })
3934
+ /* @__PURE__ */ jsx23(Box22, { height: 1, marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "gray", children: refreshing ? "Fetching latest repository data" : sortingLoading ? `Sorting by ${sortKey} (${sortDir === "asc" ? "ascending" : "descending"})` : "Fetching your GitHub repositories" }) })
3499
3935
  ] }) }) }) }),
3500
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "Please wait..." }) })
3936
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "Please wait..." }) })
3501
3937
  ] });
3502
3938
  }
3503
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: availableHeight, children: [
3939
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: availableHeight, children: [
3504
3940
  headerBar,
3505
- showSponsorReminder && /* @__PURE__ */ jsx21(Box20, { marginX: 1, marginBottom: 1, children: /* @__PURE__ */ jsx21(Box20, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", alignItems: "center", children: [
3506
- /* @__PURE__ */ jsx21(Text21, { color: "yellow", children: "\u{1F49A} Thanks for using gh-manager-cli!" }),
3507
- /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "Your support helps craft more open-source tools" }),
3508
- /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: "\u{1F496} github.com/sponsors/wiiiimm" })
3941
+ showSponsorReminder && /* @__PURE__ */ jsx23(Box22, { marginX: 1, marginBottom: 1, children: /* @__PURE__ */ jsx23(Box22, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", alignItems: "center", children: [
3942
+ /* @__PURE__ */ jsx23(Text23, { color: "yellow", children: "\u{1F49A} Thanks for using gh-manager-cli!" }),
3943
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "Your support helps craft more open-source tools" }),
3944
+ /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: "\u{1F496} github.com/sponsors/wiiiimm" })
3509
3945
  ] }) }) }),
3510
- /* @__PURE__ */ jsx21(Box20, { borderStyle: "single", borderColor: modalOpen ? theme.muted : theme.warning, paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: deleteMode && deleteTarget ? (
3946
+ /* @__PURE__ */ jsx23(Box22, { borderStyle: "single", borderColor: modalOpen ? theme.muted : theme.warning, paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: deleteMode && deleteTarget ? (
3511
3947
  // Centered modal; hide list content while modal is open
3512
- /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3513
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: "Delete Confirmation" }),
3514
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: "\u26A0\uFE0F Delete repository?" }),
3515
- /* @__PURE__ */ jsx21(Box20, { height: 2, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3948
+ /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3949
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: "Delete Confirmation" }),
3950
+ /* @__PURE__ */ jsx23(Text23, { color: "red", children: "\u26A0\uFE0F Delete repository?" }),
3951
+ /* @__PURE__ */ jsx23(Box22, { height: 2, children: /* @__PURE__ */ jsx23(Text23, { children: " " }) }),
3516
3952
  (() => {
3517
3953
  const langName = deleteTarget.primaryLanguage?.name || "";
3518
3954
  const langColor = deleteTarget.primaryLanguage?.color || "#666666";
@@ -3524,20 +3960,20 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3524
3960
  let line2 = "";
3525
3961
  if (langName) line2 += chalk15.hex(langColor)("\u25CF ") + tc.muted(`${langName} `);
3526
3962
  line2 += tc.muted(`\u2605 ${deleteTarget.stargazerCount} \u2442 ${deleteTarget.forkCount} Updated ${formatDate(deleteTarget.updatedAt)}`);
3527
- return /* @__PURE__ */ jsxs20(Fragment9, { children: [
3528
- /* @__PURE__ */ jsx21(Text21, { children: line1 }),
3529
- /* @__PURE__ */ jsx21(Text21, { children: line2 })
3963
+ return /* @__PURE__ */ jsxs22(Fragment11, { children: [
3964
+ /* @__PURE__ */ jsx23(Text23, { children: line1 }),
3965
+ /* @__PURE__ */ jsx23(Text23, { children: line2 })
3530
3966
  ] });
3531
3967
  })(),
3532
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsxs20(Text21, { children: [
3968
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text23, { children: [
3533
3969
  "Type ",
3534
- /* @__PURE__ */ jsx21(Text21, { color: "yellow", bold: true, children: deleteCode }),
3970
+ /* @__PURE__ */ jsx23(Text23, { color: "yellow", bold: true, children: deleteCode }),
3535
3971
  " to confirm."
3536
3972
  ] }) }),
3537
- !deleteConfirmStage && /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, children: [
3538
- /* @__PURE__ */ jsx21(Text21, { children: "Confirm code: " }),
3539
- /* @__PURE__ */ jsx21(
3540
- TextInput5,
3973
+ !deleteConfirmStage && /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, children: [
3974
+ /* @__PURE__ */ jsx23(Text23, { children: "Confirm code: " }),
3975
+ /* @__PURE__ */ jsx23(
3976
+ TextInput7,
3541
3977
  {
3542
3978
  value: typedCode,
3543
3979
  onChange: (v) => {
@@ -3563,11 +3999,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3563
3999
  }
3564
4000
  )
3565
4001
  ] }),
3566
- deleteConfirmStage && /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "column", children: [
3567
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: "This action will permanently delete the repository. This cannot be undone." }),
3568
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3569
- /* @__PURE__ */ jsx21(
3570
- Box20,
4002
+ deleteConfirmStage && /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, flexDirection: "column", children: [
4003
+ /* @__PURE__ */ jsx23(Text23, { color: "red", children: "This action will permanently delete the repository. This cannot be undone." }),
4004
+ /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
4005
+ /* @__PURE__ */ jsx23(
4006
+ Box22,
3571
4007
  {
3572
4008
  borderStyle: "round",
3573
4009
  borderColor: "red",
@@ -3576,11 +4012,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3576
4012
  alignItems: "center",
3577
4013
  justifyContent: "center",
3578
4014
  flexDirection: "column",
3579
- children: /* @__PURE__ */ jsx21(Text21, { children: confirmFocus === "delete" ? chalk15.bgRed.white.bold(" Delete ") : tc.error.bold("Delete") })
4015
+ children: /* @__PURE__ */ jsx23(Text23, { children: confirmFocus === "delete" ? chalk15.bgRed.white.bold(" Delete ") : tc.error.bold("Delete") })
3580
4016
  }
3581
4017
  ),
3582
- /* @__PURE__ */ jsx21(
3583
- Box20,
4018
+ /* @__PURE__ */ jsx23(
4019
+ Box22,
3584
4020
  {
3585
4021
  borderStyle: "round",
3586
4022
  borderColor: confirmFocus === "cancel" ? "white" : "gray",
@@ -3589,17 +4025,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3589
4025
  alignItems: "center",
3590
4026
  justifyContent: "center",
3591
4027
  flexDirection: "column",
3592
- children: /* @__PURE__ */ jsx21(Text21, { children: confirmFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
4028
+ children: /* @__PURE__ */ jsx23(Text23, { children: confirmFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
3593
4029
  }
3594
4030
  )
3595
4031
  ] }),
3596
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Text21, { color: "gray", children: [
4032
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Text23, { color: "gray", children: [
3597
4033
  "Press Enter to ",
3598
4034
  confirmFocus === "delete" ? "Delete" : "Cancel",
3599
4035
  " | Y to Delete | C to Cancel"
3600
4036
  ] }) }),
3601
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(
3602
- TextInput5,
4037
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(
4038
+ TextInput7,
3603
4039
  {
3604
4040
  value: "",
3605
4041
  onChange: () => {
@@ -3612,18 +4048,18 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3612
4048
  }
3613
4049
  ) })
3614
4050
  ] }),
3615
- deleteError && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "magenta", children: deleteError }) }),
3616
- deleting && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "yellow", children: "Deleting..." }) })
4051
+ deleteError && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "magenta", children: deleteError }) }),
4052
+ deleting && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "yellow", children: "Deleting..." }) })
3617
4053
  ] }) })
3618
- ) : archiveMode && archiveTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "round", borderColor: archiveTarget.isArchived ? "green" : "yellow", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3619
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: archiveTarget.isArchived ? "Unarchive Confirmation" : "Archive Confirmation" }),
3620
- /* @__PURE__ */ jsx21(Text21, { color: archiveTarget.isArchived ? "green" : "yellow", children: archiveTarget.isArchived ? "\u21BA Unarchive repository?" : "\u26A0\uFE0F Archive repository?" }),
3621
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3622
- /* @__PURE__ */ jsx21(Text21, { children: archiveTarget.nameWithOwner }),
3623
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { children: archiveTarget.isArchived ? "This will make the repository active again." : "This will make the repository read-only." }) }),
3624
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3625
- /* @__PURE__ */ jsx21(
3626
- Box20,
4054
+ ) : archiveMode && archiveTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "round", borderColor: archiveTarget.isArchived ? "green" : "yellow", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
4055
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: archiveTarget.isArchived ? "Unarchive Confirmation" : "Archive Confirmation" }),
4056
+ /* @__PURE__ */ jsx23(Text23, { color: archiveTarget.isArchived ? "green" : "yellow", children: archiveTarget.isArchived ? "\u21BA Unarchive repository?" : "\u26A0\uFE0F Archive repository?" }),
4057
+ /* @__PURE__ */ jsx23(Box22, { height: 1, children: /* @__PURE__ */ jsx23(Text23, { children: " " }) }),
4058
+ /* @__PURE__ */ jsx23(Text23, { children: archiveTarget.nameWithOwner }),
4059
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { children: archiveTarget.isArchived ? "This will make the repository active again." : "This will make the repository read-only." }) }),
4060
+ /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
4061
+ /* @__PURE__ */ jsx23(
4062
+ Box22,
3627
4063
  {
3628
4064
  borderStyle: "round",
3629
4065
  borderColor: archiveTarget.isArchived ? "green" : "yellow",
@@ -3632,11 +4068,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3632
4068
  alignItems: "center",
3633
4069
  justifyContent: "center",
3634
4070
  flexDirection: "column",
3635
- children: /* @__PURE__ */ jsx21(Text21, { children: archiveFocus === "confirm" ? chalk15.bgGreen.white.bold(` ${archiveTarget.isArchived ? "Unarchive" : "Archive"} `) : (archiveTarget.isArchived ? tc.success : tc.warning).bold(archiveTarget.isArchived ? "Unarchive" : "Archive") })
4071
+ children: /* @__PURE__ */ jsx23(Text23, { children: archiveFocus === "confirm" ? chalk15.bgGreen.white.bold(` ${archiveTarget.isArchived ? "Unarchive" : "Archive"} `) : (archiveTarget.isArchived ? tc.success : tc.warning).bold(archiveTarget.isArchived ? "Unarchive" : "Archive") })
3636
4072
  }
3637
4073
  ),
3638
- /* @__PURE__ */ jsx21(
3639
- Box20,
4074
+ /* @__PURE__ */ jsx23(
4075
+ Box22,
3640
4076
  {
3641
4077
  borderStyle: "round",
3642
4078
  borderColor: archiveFocus === "cancel" ? "white" : "gray",
@@ -3645,19 +4081,19 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3645
4081
  alignItems: "center",
3646
4082
  justifyContent: "center",
3647
4083
  flexDirection: "column",
3648
- children: /* @__PURE__ */ jsx21(Text21, { children: archiveFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
4084
+ children: /* @__PURE__ */ jsx23(Text23, { children: archiveFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
3649
4085
  }
3650
4086
  )
3651
4087
  ] }),
3652
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4088
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3653
4089
  "Press Enter to ",
3654
4090
  archiveFocus === "confirm" ? archiveTarget.isArchived ? "Unarchive" : "Archive" : "Cancel",
3655
4091
  " | Y to ",
3656
4092
  archiveTarget.isArchived ? "Unarchive" : "Archive",
3657
4093
  " | C to Cancel"
3658
4094
  ] }) }),
3659
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(
3660
- TextInput5,
4095
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(
4096
+ TextInput7,
3661
4097
  {
3662
4098
  value: "",
3663
4099
  onChange: () => {
@@ -3671,14 +4107,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3671
4107
  }
3672
4108
  }
3673
4109
  ) }),
3674
- archiveError && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "magenta", children: archiveError }) }),
3675
- archiving && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "yellow", children: archiveTarget.isArchived ? "Unarchiving..." : "Archiving..." }) })
3676
- ] }) }) : syncMode && syncTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "round", borderColor: "blue", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3677
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: "Sync Fork Confirmation" }),
3678
- /* @__PURE__ */ jsx21(Text21, { color: "blue", children: "\u27F2 Sync fork with upstream?" }),
3679
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3680
- /* @__PURE__ */ jsx21(Text21, { children: syncTarget.nameWithOwner }),
3681
- syncTarget.parent && /* @__PURE__ */ jsxs20(Text21, { color: "gray", children: [
4110
+ archiveError && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "magenta", children: archiveError }) }),
4111
+ archiving && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "yellow", children: archiveTarget.isArchived ? "Unarchiving..." : "Archiving..." }) })
4112
+ ] }) }) : syncMode && syncTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "round", borderColor: "blue", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
4113
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: "Sync Fork Confirmation" }),
4114
+ /* @__PURE__ */ jsx23(Text23, { color: "blue", children: "\u27F2 Sync fork with upstream?" }),
4115
+ /* @__PURE__ */ jsx23(Box22, { height: 1, children: /* @__PURE__ */ jsx23(Text23, { children: " " }) }),
4116
+ /* @__PURE__ */ jsx23(Text23, { children: syncTarget.nameWithOwner }),
4117
+ syncTarget.parent && /* @__PURE__ */ jsxs22(Text23, { color: "gray", children: [
3682
4118
  "Upstream: ",
3683
4119
  syncTarget.parent.nameWithOwner
3684
4120
  ] }),
@@ -3693,12 +4129,12 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3693
4129
  if (ahead > 0) parts.push(chalk15.green(`${ahead} ahead`));
3694
4130
  if (behind > 0) parts.push(chalk15.yellow(`${behind} behind`));
3695
4131
  const statusText = parts.length === 0 ? chalk15.green("Your fork is up to date with upstream.") : `This fork is ${parts.join(", ")} of upstream.`;
3696
- return /* @__PURE__ */ jsx21(Text21, { children: statusText });
4132
+ return /* @__PURE__ */ jsx23(Text23, { children: statusText });
3697
4133
  })(),
3698
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { children: "This will merge upstream changes into your fork." }) }),
3699
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3700
- /* @__PURE__ */ jsx21(
3701
- Box20,
4134
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { children: "This will merge upstream changes into your fork." }) }),
4135
+ /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
4136
+ /* @__PURE__ */ jsx23(
4137
+ Box22,
3702
4138
  {
3703
4139
  borderStyle: "round",
3704
4140
  borderColor: "blue",
@@ -3707,11 +4143,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3707
4143
  alignItems: "center",
3708
4144
  justifyContent: "center",
3709
4145
  flexDirection: "column",
3710
- children: /* @__PURE__ */ jsx21(Text21, { children: syncFocus === "confirm" ? tc.btnPrimary(" Sync ") : tc.primary.bold("Sync") })
4146
+ children: /* @__PURE__ */ jsx23(Text23, { children: syncFocus === "confirm" ? tc.btnPrimary(" Sync ") : tc.primary.bold("Sync") })
3711
4147
  }
3712
4148
  ),
3713
- /* @__PURE__ */ jsx21(
3714
- Box20,
4149
+ /* @__PURE__ */ jsx23(
4150
+ Box22,
3715
4151
  {
3716
4152
  borderStyle: "round",
3717
4153
  borderColor: syncFocus === "cancel" ? "white" : "gray",
@@ -3720,17 +4156,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3720
4156
  alignItems: "center",
3721
4157
  justifyContent: "center",
3722
4158
  flexDirection: "column",
3723
- children: /* @__PURE__ */ jsx21(Text21, { children: syncFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
4159
+ children: /* @__PURE__ */ jsx23(Text23, { children: syncFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
3724
4160
  }
3725
4161
  )
3726
4162
  ] }),
3727
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4163
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3728
4164
  "Press Enter to ",
3729
4165
  syncFocus === "confirm" ? "Sync" : "Cancel",
3730
4166
  " | Y to Sync | C to Cancel"
3731
4167
  ] }) }),
3732
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(
3733
- TextInput5,
4168
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(
4169
+ TextInput7,
3734
4170
  {
3735
4171
  value: "",
3736
4172
  onChange: () => {
@@ -3744,14 +4180,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3744
4180
  }
3745
4181
  }
3746
4182
  ) }),
3747
- syncError && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: theme.error, children: syncError }) }),
3748
- syncing && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: theme.warning, children: "Syncing..." }) })
3749
- ] }) }) : logoutMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "round", borderColor: theme.primary, paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3750
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: "Logout Confirmation" }),
3751
- /* @__PURE__ */ jsx21(Text21, { color: theme.primary, children: "Are you sure you want to log out?" }),
3752
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3753
- /* @__PURE__ */ jsx21(
3754
- Box20,
4183
+ syncError && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: theme.error, children: syncError }) }),
4184
+ syncing && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: theme.warning, children: "Syncing..." }) })
4185
+ ] }) }) : logoutMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "round", borderColor: theme.primary, paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
4186
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: "Logout Confirmation" }),
4187
+ /* @__PURE__ */ jsx23(Text23, { color: theme.primary, children: "Are you sure you want to log out?" }),
4188
+ /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
4189
+ /* @__PURE__ */ jsx23(
4190
+ Box22,
3755
4191
  {
3756
4192
  borderStyle: "round",
3757
4193
  borderColor: theme.primary,
@@ -3760,11 +4196,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3760
4196
  alignItems: "center",
3761
4197
  justifyContent: "center",
3762
4198
  flexDirection: "column",
3763
- children: /* @__PURE__ */ jsx21(Text21, { children: logoutFocus === "confirm" ? tc.btnPrimary(" Logout ") : tc.primary.bold("Logout") })
4199
+ children: /* @__PURE__ */ jsx23(Text23, { children: logoutFocus === "confirm" ? tc.btnPrimary(" Logout ") : tc.primary.bold("Logout") })
3764
4200
  }
3765
4201
  ),
3766
- /* @__PURE__ */ jsx21(
3767
- Box20,
4202
+ /* @__PURE__ */ jsx23(
4203
+ Box22,
3768
4204
  {
3769
4205
  borderStyle: "round",
3770
4206
  borderColor: logoutFocus === "cancel" ? "white" : theme.muted,
@@ -3773,16 +4209,16 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3773
4209
  alignItems: "center",
3774
4210
  justifyContent: "center",
3775
4211
  flexDirection: "column",
3776
- children: /* @__PURE__ */ jsx21(Text21, { children: logoutFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
4212
+ children: /* @__PURE__ */ jsx23(Text23, { children: logoutFocus === "cancel" ? tc.btnMuted(" Cancel ") : tc.muted.bold("Cancel") })
3777
4213
  }
3778
4214
  )
3779
4215
  ] }),
3780
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4216
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3781
4217
  "Press Enter to ",
3782
4218
  logoutFocus === "confirm" ? "Logout" : "Cancel",
3783
4219
  " | Y to Logout | C to Cancel"
3784
4220
  ] }) })
3785
- ] }) }) : orgSwitcherOpen ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4221
+ ] }) }) : orgSwitcherOpen ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3786
4222
  OrgSwitcher,
3787
4223
  {
3788
4224
  token,
@@ -3790,45 +4226,45 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3790
4226
  onSelect: handleOrgContextChange,
3791
4227
  onClose: () => setOrgSwitcherOpen(false)
3792
4228
  }
3793
- ) }) : infoMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: (() => {
4229
+ ) }) : infoMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: (() => {
3794
4230
  const repo = infoRepo || visibleItems[cursor];
3795
- if (!repo) return /* @__PURE__ */ jsx21(Text21, { color: theme.error, children: "No repository selected." });
4231
+ if (!repo) return /* @__PURE__ */ jsx23(Text23, { color: theme.error, children: "No repository selected." });
3796
4232
  const langName = repo.primaryLanguage?.name || "N/A";
3797
4233
  const langColor = repo.primaryLanguage?.color || "#666666";
3798
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "round", borderColor: theme.internal, paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 90), children: [
3799
- /* @__PURE__ */ jsxs20(Text21, { bold: true, children: [
4234
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "round", borderColor: theme.internal, paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 90), children: [
4235
+ /* @__PURE__ */ jsxs22(Text23, { bold: true, children: [
3800
4236
  "Repository Info ",
3801
4237
  infoRepo ? tc.muted("(cached)") : ""
3802
4238
  ] }),
3803
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3804
- /* @__PURE__ */ jsx21(Text21, { children: tc.text.bold(repo.nameWithOwner) }),
3805
- repo.description && /* @__PURE__ */ jsx21(Text21, { color: theme.muted, children: repo.description }),
3806
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3807
- /* @__PURE__ */ jsxs20(Text21, { children: [
4239
+ /* @__PURE__ */ jsx23(Box22, { height: 1, children: /* @__PURE__ */ jsx23(Text23, { children: " " }) }),
4240
+ /* @__PURE__ */ jsx23(Text23, { children: tc.text.bold(repo.nameWithOwner) }),
4241
+ repo.description && /* @__PURE__ */ jsx23(Text23, { color: theme.muted, children: repo.description }),
4242
+ /* @__PURE__ */ jsx23(Box22, { height: 1, children: /* @__PURE__ */ jsx23(Text23, { children: " " }) }),
4243
+ /* @__PURE__ */ jsxs22(Text23, { children: [
3808
4244
  repo.visibility === "PRIVATE" ? tc.private("Private") : repo.visibility === "INTERNAL" ? tc.internal("Internal") : tc.success("Public"),
3809
4245
  repo.isArchived ? tc.archived(" Archived") : "",
3810
4246
  repo.isFork ? tc.fork(" Fork") : ""
3811
4247
  ] }),
3812
- /* @__PURE__ */ jsx21(Text21, { children: tc.muted(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount}`) }),
3813
- /* @__PURE__ */ jsxs20(Text21, { children: [
4248
+ /* @__PURE__ */ jsx23(Text23, { children: tc.muted(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount}`) }),
4249
+ /* @__PURE__ */ jsxs22(Text23, { children: [
3814
4250
  chalk15.hex(langColor)(`\u25CF `),
3815
4251
  tc.muted(`${langName}`)
3816
4252
  ] }),
3817
- /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4253
+ /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3818
4254
  "Updated: ",
3819
4255
  formatDate(repo.updatedAt),
3820
4256
  " \u2022 Pushed: ",
3821
4257
  formatDate(repo.pushedAt)
3822
4258
  ] }),
3823
- /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4259
+ /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3824
4260
  "Size: ",
3825
4261
  repo.diskUsage,
3826
4262
  " KB"
3827
4263
  ] }),
3828
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3829
- /* @__PURE__ */ jsx21(Text21, { color: theme.muted, children: "Press Esc or I to close" })
4264
+ /* @__PURE__ */ jsx23(Box22, { height: 1, children: /* @__PURE__ */ jsx23(Text23, { children: " " }) }),
4265
+ /* @__PURE__ */ jsx23(Text23, { color: theme.muted, children: "Press Esc or I to close" })
3830
4266
  ] });
3831
- })() }) : archiveFilterMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4267
+ })() }) : archiveFilterMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3832
4268
  ArchiveFilterModal,
3833
4269
  {
3834
4270
  currentFilter: archiveFilter,
@@ -3841,7 +4277,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3841
4277
  onCancel: () => setArchiveFilterMode(false),
3842
4278
  theme
3843
4279
  }
3844
- ) }) : visibilityMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4280
+ ) }) : visibilityMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3845
4281
  VisibilityModal,
3846
4282
  {
3847
4283
  currentFilter: visibilityFilter,
@@ -3855,7 +4291,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3855
4291
  onCancel: () => setVisibilityMode(false),
3856
4292
  theme
3857
4293
  }
3858
- ) }) : sortMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4294
+ ) }) : sortMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3859
4295
  SortModal,
3860
4296
  {
3861
4297
  currentSort: sortKey,
@@ -3868,7 +4304,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3868
4304
  onCancel: () => setSortMode(false),
3869
4305
  theme
3870
4306
  }
3871
- ) }) : sortDirectionMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4307
+ ) }) : sortDirectionMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3872
4308
  SortDirectionModal,
3873
4309
  {
3874
4310
  currentDirection: sortDir,
@@ -3882,7 +4318,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3882
4318
  onCancel: () => setSortDirectionMode(false),
3883
4319
  theme
3884
4320
  }
3885
- ) }) : changeVisibilityMode && changeVisibilityTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4321
+ ) }) : changeVisibilityMode && changeVisibilityTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3886
4322
  ChangeVisibilityModal,
3887
4323
  {
3888
4324
  isOpen: changeVisibilityMode,
@@ -3896,7 +4332,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3896
4332
  error: changeVisibilityError,
3897
4333
  theme
3898
4334
  }
3899
- ) }) : renameMode && renameTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4335
+ ) }) : renameMode && renameTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3900
4336
  RenameModal,
3901
4337
  {
3902
4338
  repo: renameTarget,
@@ -3904,7 +4340,25 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3904
4340
  onCancel: closeRenameModal,
3905
4341
  theme
3906
4342
  }
3907
- ) }) : copyUrlMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4343
+ ) }) : createMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
4344
+ CreateRepoModal,
4345
+ {
4346
+ ownerSlug: ownerContext === "personal" ? viewerLogin || "me" : ownerContext.login,
4347
+ isOrg: ownerContext !== "personal",
4348
+ isEnterprise: isEnterpriseOrg,
4349
+ onCreate: executeCreate,
4350
+ onCancel: () => setCreateMode(false),
4351
+ theme
4352
+ }
4353
+ ) }) : transferMode && transferTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
4354
+ TransferModal,
4355
+ {
4356
+ repo: transferTarget,
4357
+ onTransfer: executeTransfer,
4358
+ onCancel: closeTransferModal,
4359
+ theme
4360
+ }
4361
+ ) }) : copyUrlMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3908
4362
  CopyUrlModal,
3909
4363
  {
3910
4364
  repo: copyUrlTarget,
@@ -3913,7 +4367,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3913
4367
  onCopy: handleCopyUrl,
3914
4368
  theme
3915
4369
  }
3916
- ) }) : unstarMode && unstarTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4370
+ ) }) : unstarMode && unstarTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3917
4371
  UnstarModal,
3918
4372
  {
3919
4373
  visible: unstarMode,
@@ -3924,7 +4378,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3924
4378
  error: unstarError,
3925
4379
  theme
3926
4380
  }
3927
- ) }) : starMode && starTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4381
+ ) }) : starMode && starTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3928
4382
  StarModal,
3929
4383
  {
3930
4384
  visible: starMode,
@@ -3936,7 +4390,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3936
4390
  error: starError,
3937
4391
  theme
3938
4392
  }
3939
- ) }) : openInBrowserMode && openInBrowserTarget ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx21(
4393
+ ) }) : openInBrowserMode && openInBrowserTarget ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx23(
3940
4394
  OpenInBrowserModal,
3941
4395
  {
3942
4396
  repo: openInBrowserTarget,
@@ -3951,8 +4405,8 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3951
4405
  },
3952
4406
  theme
3953
4407
  }
3954
- ) }) : /* @__PURE__ */ jsxs20(Fragment9, { children: [
3955
- /* @__PURE__ */ jsx21(
4408
+ ) }) : /* @__PURE__ */ jsxs22(Fragment11, { children: [
4409
+ /* @__PURE__ */ jsx23(
3956
4410
  RepoListHeader,
3957
4411
  {
3958
4412
  ownerContext,
@@ -3968,10 +4422,10 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3968
4422
  theme
3969
4423
  }
3970
4424
  ),
3971
- filterMode && /* @__PURE__ */ jsxs20(Box20, { marginBottom: 1, children: [
3972
- /* @__PURE__ */ jsx21(Text21, { children: "Search: " }),
3973
- /* @__PURE__ */ jsx21(
3974
- TextInput5,
4425
+ filterMode && /* @__PURE__ */ jsxs22(Box22, { marginBottom: 1, children: [
4426
+ /* @__PURE__ */ jsx23(Text23, { children: "Search: " }),
4427
+ /* @__PURE__ */ jsx23(
4428
+ TextInput7,
3975
4429
  {
3976
4430
  value: filter,
3977
4431
  onChange: (val) => {
@@ -3984,10 +4438,10 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3984
4438
  }
3985
4439
  )
3986
4440
  ] }),
3987
- /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: listHeight, children: [
4441
+ /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: listHeight, children: [
3988
4442
  visibleItems.slice(windowed.start, windowed.end).map((repo, i) => {
3989
4443
  const idx = windowed.start + i;
3990
- return /* @__PURE__ */ jsx21(
4444
+ return /* @__PURE__ */ jsx23(
3991
4445
  RepoRow,
3992
4446
  {
3993
4447
  repo,
@@ -4002,55 +4456,59 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
4002
4456
  repo.nameWithOwner
4003
4457
  );
4004
4458
  }),
4005
- loadingMore && hasNextPage && !starsMode && /* @__PURE__ */ jsx21(Box20, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", children: [
4006
- /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) }),
4007
- /* @__PURE__ */ jsxs20(Text21, { color: "cyan", children: [
4459
+ loadingMore && hasNextPage && !starsMode && /* @__PURE__ */ jsx23(Box22, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", children: [
4460
+ /* @__PURE__ */ jsx23(Box22, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: /* @__PURE__ */ jsx23(SlowSpinner, {}) }) }),
4461
+ /* @__PURE__ */ jsxs22(Text23, { color: "cyan", children: [
4008
4462
  "Loading repositories\u2026 ",
4009
4463
  totalCount > 0 ? `(${items.length}/${totalCount})` : `(${items.length})`
4010
4464
  ] })
4011
4465
  ] }) }),
4012
- loadingMore && hasNextPage && starsMode && /* @__PURE__ */ jsx21(Box20, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", children: [
4013
- /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) }),
4014
- /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: "Loading more repositories..." })
4466
+ loadingMore && hasNextPage && starsMode && /* @__PURE__ */ jsx23(Box22, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", children: [
4467
+ /* @__PURE__ */ jsx23(Box22, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: /* @__PURE__ */ jsx23(SlowSpinner, {}) }) }),
4468
+ /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: "Loading more repositories..." })
4015
4469
  ] }) }),
4016
- filterActive && hasNextPage && !starsMode && /* @__PURE__ */ jsx21(Box20, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs20(Text21, { color: "yellow", dimColor: true, children: [
4470
+ filterActive && hasNextPage && !starsMode && /* @__PURE__ */ jsx23(Box22, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs22(Text23, { color: "yellow", dimColor: true, children: [
4017
4471
  "Still loading repos (",
4018
4472
  items.length,
4019
4473
  "/",
4020
4474
  totalCount > 0 ? totalCount : "?",
4021
4475
  ") \u2014 fuzzy results may be incomplete"
4022
4476
  ] }) }),
4023
- !loading && visibleItems.length === 0 && !(filterActive && hasNextPage && !starsMode) && /* @__PURE__ */ jsx21(Box20, { justifyContent: "center", alignItems: "center", flexGrow: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "gray", dimColor: true, children: filter ? "No repositories match your search" : "No repositories found" }) })
4477
+ !loading && visibleItems.length === 0 && !(filterActive && hasNextPage && !starsMode) && /* @__PURE__ */ jsx23(Box22, { justifyContent: "center", alignItems: "center", flexGrow: 1, children: /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, children: filter ? "No repositories match your search" : "No repositories found" }) })
4024
4478
  ] })
4025
4479
  ] }) }),
4026
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
4027
- /* @__PURE__ */ jsx21(Box20, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx21(Text21, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: "\u2191\u2193 Navigate \u2022 Ctrl+G Top \u2022 G Bottom \u2022 \u23CE/O Open \u2022 R Refresh" }) }),
4028
- /* @__PURE__ */ jsx21(Box20, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: [
4480
+ /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
4481
+ /* @__PURE__ */ jsx23(Box22, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx23(Text23, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: "\u2191\u2193 Navigate \u2022 Ctrl+G Top \u2022 G Bottom \u2022 \u23CE/O Open \u2022 R Refresh" }) }),
4482
+ /* @__PURE__ */ jsx23(Box22, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: [
4029
4483
  "/ Search",
4030
4484
  !filterActive && " \u2022 S Sort \u2022 D Direction",
4031
4485
  " \u2022 T Density \u2022 Shift+T Theme \u2022 A Archive Filter",
4032
4486
  !starsMode && " \u2022 V Visibility Filter"
4033
4487
  ] }) }),
4034
- /* @__PURE__ */ jsx21(Box20, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx21(Text21, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: starsMode ? "Shift+S My Repos \u2022 I Info \u2022 C Copy URL \u2022 U Unstar Repository" : `${ownerContext === "personal" ? "Shift+S Starred \u2022 " : ""}I Info \u2022 C Copy URL \u2022 Ctrl+S Un/Star \u2022 Ctrl+R Rename \u2022 Ctrl+A Un/Archive \u2022 Ctrl+V Change Visibility \u2022 Ctrl+F Sync Fork \u2022 P Jump to upstream` }) }),
4035
- /* @__PURE__ */ jsx21(Box20, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx21(Text21, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: "K Cache Info \u2022 W Org Switch \u2022 Del/Backspace Delete \u2022 Ctrl+L Logout \u2022 Q Quit" }) }),
4036
- /* @__PURE__ */ jsx21(Box20, { width: terminalWidth, justifyContent: "center", marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: theme.warning, dimColor: modalOpen ? true : void 0, children: "\u{1F496} Sponsor on GitHub: github.com/sponsors/wiiiimm" }) })
4488
+ /* @__PURE__ */ jsx23(Box22, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx23(Text23, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: starsMode ? "Shift+S My Repos \u2022 I Info \u2022 C Copy URL \u2022 U Unstar Repository" : `${ownerContext === "personal" ? "Shift+S Starred \u2022 " : ""}I Info \u2022 C Copy URL \u2022 Ctrl+S Un/Star \u2022 Ctrl+R Rename \u2022 Shift+M Transfer \u2022 Ctrl+A Un/Archive \u2022 Ctrl+V Change Visibility \u2022 Ctrl+F Sync Fork \u2022 P Jump to upstream` }) }),
4489
+ /* @__PURE__ */ jsx23(Box22, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, dimColor: modalOpen ? true : void 0, children: [
4490
+ "K Cache Info \u2022 W Org Switch",
4491
+ !starsMode ? " \u2022 Ctrl+N New Repo" : "",
4492
+ " \u2022 Del/Backspace Delete \u2022 Ctrl+L Logout \u2022 Q Quit"
4493
+ ] }) }),
4494
+ /* @__PURE__ */ jsx23(Box22, { width: terminalWidth, justifyContent: "center", marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { color: theme.warning, dimColor: modalOpen ? true : void 0, children: "\u{1F496} Sponsor on GitHub: github.com/sponsors/wiiiimm" }) })
4037
4495
  ] }),
4038
- process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, borderStyle: "single", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [
4039
- /* @__PURE__ */ jsx21(Text21, { bold: true, color: "yellow", children: "Debug Messages:" }),
4040
- debugMessages.length === 0 ? /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "No debug messages yet..." }) : debugMessages.map((msg, i) => /* @__PURE__ */ jsx21(Text21, { color: "gray", children: msg }, i))
4496
+ process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, borderStyle: "single", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [
4497
+ /* @__PURE__ */ jsx23(Text23, { bold: true, color: "yellow", children: "Debug Messages:" }),
4498
+ debugMessages.length === 0 ? /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "No debug messages yet..." }) : debugMessages.map((msg, i) => /* @__PURE__ */ jsx23(Text23, { color: "gray", children: msg }, i))
4041
4499
  ] }),
4042
- themeToast && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ jsx21(Box20, { borderStyle: "round", borderColor: theme.primary, paddingX: 2, paddingY: 0, children: /* @__PURE__ */ jsx21(Text21, { color: theme.primary, children: themeToast }) }) }),
4043
- copyToast && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ jsx21(Box20, { borderStyle: "round", borderColor: copyToast.includes("Failed") ? "red" : "green", paddingX: 2, paddingY: 0, children: /* @__PURE__ */ jsx21(Text21, { color: copyToast.includes("Failed") ? "red" : "green", children: copyToast }) }) })
4500
+ themeToast && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ jsx23(Box22, { borderStyle: "round", borderColor: theme.primary, paddingX: 2, paddingY: 0, children: /* @__PURE__ */ jsx23(Text23, { color: theme.primary, children: themeToast }) }) }),
4501
+ copyToast && /* @__PURE__ */ jsx23(Box22, { marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ jsx23(Box22, { borderStyle: "round", borderColor: copyToast.includes("Failed") ? "red" : "green", paddingX: 2, paddingY: 0, children: /* @__PURE__ */ jsx23(Text23, { color: copyToast.includes("Failed") ? "red" : "green", children: copyToast }) }) })
4044
4502
  ] });
4045
4503
  }
4046
4504
 
4047
4505
  // src/ui/components/auth/AuthMethodSelector.tsx
4048
- import { useState as useState18 } from "react";
4049
- import { Box as Box21, Text as Text22, useInput as useInput18 } from "ink";
4506
+ import { useState as useState20 } from "react";
4507
+ import { Box as Box23, Text as Text24, useInput as useInput20 } from "ink";
4050
4508
  import chalk16 from "chalk";
4051
- import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
4509
+ import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
4052
4510
  function AuthMethodSelector({ onSelect, onQuit }) {
4053
- const [selectedIndex, setSelectedIndex] = useState18(0);
4511
+ const [selectedIndex, setSelectedIndex] = useState20(0);
4054
4512
  const methods = [
4055
4513
  {
4056
4514
  key: "oauth",
@@ -4063,7 +4521,7 @@ function AuthMethodSelector({ onSelect, onQuit }) {
4063
4521
  description: "Manually enter a GitHub Personal Access Token"
4064
4522
  }
4065
4523
  ];
4066
- useInput18((input, key) => {
4524
+ useInput20((input, key) => {
4067
4525
  if (key.escape || input?.toLowerCase() === "q") {
4068
4526
  if (onQuit) {
4069
4527
  onQuit();
@@ -4082,33 +4540,33 @@ function AuthMethodSelector({ onSelect, onQuit }) {
4082
4540
  onSelect("pat");
4083
4541
  }
4084
4542
  });
4085
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [
4086
- /* @__PURE__ */ jsx22(Text22, { bold: true, marginBottom: 1, children: "Choose Authentication Method" }),
4087
- /* @__PURE__ */ jsx22(Box21, { flexDirection: "column", marginY: 1, children: methods.map((method, index) => {
4543
+ return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [
4544
+ /* @__PURE__ */ jsx24(Text24, { bold: true, marginBottom: 1, children: "Choose Authentication Method" }),
4545
+ /* @__PURE__ */ jsx24(Box23, { flexDirection: "column", marginY: 1, children: methods.map((method, index) => {
4088
4546
  const isSelected = index === selectedIndex;
4089
4547
  const prefix = isSelected ? chalk16.cyan("\u203A") : " ";
4090
4548
  const numberPrefix = `${index + 1}.`;
4091
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", marginBottom: 1, children: [
4092
- /* @__PURE__ */ jsx22(Text22, { children: /* @__PURE__ */ jsxs21(Text22, { color: isSelected ? "cyan" : void 0, bold: isSelected, children: [
4549
+ return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", marginBottom: 1, children: [
4550
+ /* @__PURE__ */ jsx24(Text24, { children: /* @__PURE__ */ jsxs23(Text24, { color: isSelected ? "cyan" : void 0, bold: isSelected, children: [
4093
4551
  prefix,
4094
4552
  " ",
4095
4553
  numberPrefix,
4096
4554
  " ",
4097
4555
  method.label
4098
4556
  ] }) }),
4099
- /* @__PURE__ */ jsxs21(Text22, { color: "gray", dimColor: true, children: [
4557
+ /* @__PURE__ */ jsxs23(Text24, { color: "gray", dimColor: true, children: [
4100
4558
  " ",
4101
4559
  method.description
4102
4560
  ] })
4103
4561
  ] }, method.key);
4104
4562
  }) }),
4105
- /* @__PURE__ */ jsx22(Text22, { color: "gray", dimColor: true, marginTop: 1, children: "Use arrow keys to navigate, Enter to select, or press 1/2 \u2022 Q/Esc to quit" })
4563
+ /* @__PURE__ */ jsx24(Text24, { color: "gray", dimColor: true, marginTop: 1, children: "Use arrow keys to navigate, Enter to select, or press 1/2 \u2022 Q/Esc to quit" })
4106
4564
  ] });
4107
4565
  }
4108
4566
 
4109
4567
  // src/ui/components/auth/OAuthProgress.tsx
4110
- import { Box as Box22, Text as Text23 } from "ink";
4111
- import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
4568
+ import { Box as Box24, Text as Text25 } from "ink";
4569
+ import { jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
4112
4570
  function OAuthProgress({ status, error, deviceCode }) {
4113
4571
  const statusMessages = {
4114
4572
  initializing: {
@@ -4145,69 +4603,69 @@ function OAuthProgress({ status, error, deviceCode }) {
4145
4603
  }
4146
4604
  };
4147
4605
  const { message, showSpinner } = statusMessages[status];
4148
- return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "single", borderColor: status === "error" ? "red" : "cyan", paddingX: 2, paddingY: 1, children: [
4149
- /* @__PURE__ */ jsx23(Text23, { bold: true, marginBottom: 1, children: "GitHub OAuth Authentication" }),
4150
- /* @__PURE__ */ jsx23(Box22, { marginY: 1, children: showSpinner ? /* @__PURE__ */ jsxs22(Box22, { children: [
4151
- /* @__PURE__ */ jsx23(Text23, { color: "green", children: /* @__PURE__ */ jsx23(SlowSpinner, { interval: 2e3 }) }),
4152
- /* @__PURE__ */ jsxs22(Text23, { children: [
4606
+ return /* @__PURE__ */ jsxs24(Box24, { flexDirection: "column", borderStyle: "single", borderColor: status === "error" ? "red" : "cyan", paddingX: 2, paddingY: 1, children: [
4607
+ /* @__PURE__ */ jsx25(Text25, { bold: true, marginBottom: 1, children: "GitHub OAuth Authentication" }),
4608
+ /* @__PURE__ */ jsx25(Box24, { marginY: 1, children: showSpinner ? /* @__PURE__ */ jsxs24(Box24, { children: [
4609
+ /* @__PURE__ */ jsx25(Text25, { color: "green", children: /* @__PURE__ */ jsx25(SlowSpinner, { interval: 2e3 }) }),
4610
+ /* @__PURE__ */ jsxs24(Text25, { children: [
4153
4611
  " ",
4154
4612
  message
4155
4613
  ] })
4156
- ] }) : /* @__PURE__ */ jsxs22(Text23, { color: status === "error" ? "red" : "green", children: [
4614
+ ] }) : /* @__PURE__ */ jsxs24(Text25, { color: status === "error" ? "red" : "green", children: [
4157
4615
  status === "error" ? "\u2717" : "\u2713",
4158
4616
  " ",
4159
4617
  message
4160
4618
  ] }) }),
4161
- (status === "waiting_for_authorization" || status === "polling_for_token") && deviceCode && /* @__PURE__ */ jsxs22(Box22, { marginY: 1, flexDirection: "column", children: [
4162
- /* @__PURE__ */ jsx23(Text23, { bold: true, color: "cyan", marginBottom: 1, children: "\u{1F4CB} Please complete these steps:" }),
4163
- /* @__PURE__ */ jsxs22(Box22, { marginBottom: 1, children: [
4164
- /* @__PURE__ */ jsx23(Text23, { children: "1. Visit: " }),
4165
- /* @__PURE__ */ jsx23(Text23, { bold: true, color: "blue", children: deviceCode.verification_uri })
4619
+ (status === "waiting_for_authorization" || status === "polling_for_token") && deviceCode && /* @__PURE__ */ jsxs24(Box24, { marginY: 1, flexDirection: "column", children: [
4620
+ /* @__PURE__ */ jsx25(Text25, { bold: true, color: "cyan", marginBottom: 1, children: "\u{1F4CB} Please complete these steps:" }),
4621
+ /* @__PURE__ */ jsxs24(Box24, { marginBottom: 1, children: [
4622
+ /* @__PURE__ */ jsx25(Text25, { children: "1. Visit: " }),
4623
+ /* @__PURE__ */ jsx25(Text25, { bold: true, color: "blue", children: deviceCode.verification_uri })
4166
4624
  ] }),
4167
- /* @__PURE__ */ jsxs22(Box22, { marginBottom: 1, flexDirection: "column", children: [
4168
- /* @__PURE__ */ jsx23(Text23, { children: "2. Enter this code:" }),
4169
- /* @__PURE__ */ jsx23(Box22, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, marginTop: 1, children: /* @__PURE__ */ jsx23(Text23, { bold: true, color: "yellow", children: deviceCode.user_code }) })
4625
+ /* @__PURE__ */ jsxs24(Box24, { marginBottom: 1, flexDirection: "column", children: [
4626
+ /* @__PURE__ */ jsx25(Text25, { children: "2. Enter this code:" }),
4627
+ /* @__PURE__ */ jsx25(Box24, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, marginTop: 1, children: /* @__PURE__ */ jsx25(Text25, { bold: true, color: "yellow", children: deviceCode.user_code }) })
4170
4628
  ] }),
4171
- status === "waiting_for_authorization" && /* @__PURE__ */ jsx23(Text23, { color: "gray", marginTop: 1, children: "Your browser should open automatically." }),
4172
- status === "polling_for_token" && /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", marginTop: 1, children: [
4173
- /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "Waiting for you to complete authorization in your browser..." }),
4174
- /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, marginTop: 1, children: "This will timeout in 15 minutes. Press Esc to cancel." })
4629
+ status === "waiting_for_authorization" && /* @__PURE__ */ jsx25(Text25, { color: "gray", marginTop: 1, children: "Your browser should open automatically." }),
4630
+ status === "polling_for_token" && /* @__PURE__ */ jsxs24(Box24, { flexDirection: "column", marginTop: 1, children: [
4631
+ /* @__PURE__ */ jsx25(Text25, { color: "gray", children: "Waiting for you to complete authorization in your browser..." }),
4632
+ /* @__PURE__ */ jsx25(Text25, { color: "gray", dimColor: true, marginTop: 1, children: "This will timeout in 15 minutes. Press Esc to cancel." })
4175
4633
  ] })
4176
4634
  ] }),
4177
- status === "error" && error && /* @__PURE__ */ jsxs22(Box22, { marginY: 1, flexDirection: "column", children: [
4178
- /* @__PURE__ */ jsx23(Text23, { color: "red", children: error }),
4179
- /* @__PURE__ */ jsx23(Text23, { color: "gray", marginTop: 1, children: "Press Esc to go back and try again." })
4635
+ status === "error" && error && /* @__PURE__ */ jsxs24(Box24, { marginY: 1, flexDirection: "column", children: [
4636
+ /* @__PURE__ */ jsx25(Text25, { color: "red", children: error }),
4637
+ /* @__PURE__ */ jsx25(Text25, { color: "gray", marginTop: 1, children: "Press Esc to go back and try again." })
4180
4638
  ] }),
4181
- status === "success" && /* @__PURE__ */ jsx23(Text23, { color: "gray", marginTop: 1, children: "Returning to application..." })
4639
+ status === "success" && /* @__PURE__ */ jsx25(Text25, { color: "gray", marginTop: 1, children: "Returning to application..." })
4182
4640
  ] });
4183
4641
  }
4184
4642
 
4185
4643
  // src/ui/App.tsx
4186
- import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
4644
+ import { jsx as jsx26, jsxs as jsxs25 } from "react/jsx-runtime";
4187
4645
  var packageJson = require_package();
4188
4646
  function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlineTokenEphemeral }) {
4189
4647
  const { exit } = useApp2();
4190
4648
  const { stdout } = useStdout2();
4191
- const [mode, setMode] = useState19("checking");
4192
- const [token, setToken] = useState19(null);
4193
- const [input, setInput] = useState19("");
4194
- const [error, setError] = useState19(null);
4195
- const [viewer, setViewer] = useState19(null);
4196
- const [rateLimitReset, setRateLimitReset] = useState19(null);
4197
- const [wasRateLimited, setWasRateLimited] = useState19(false);
4198
- const [orgContext, setOrgContext] = useState19("personal");
4199
- const [authMethod, setAuthMethod] = useState19("pat");
4200
- const [oauthStatus, setOAuthStatus] = useState19("initializing");
4201
- const [tokenSource, setTokenSource] = useState19("pat");
4202
- const [sessionTokenOrigin, setSessionTokenOrigin] = useState19("stored");
4203
- const [deviceCodeResponse, setDeviceCodeResponse] = useState19(null);
4204
- const [oauthDeviceCode, setOauthDeviceCode] = useState19(null);
4205
- const [dims, setDims] = useState19(() => {
4649
+ const [mode, setMode] = useState21("checking");
4650
+ const [token, setToken] = useState21(null);
4651
+ const [input, setInput] = useState21("");
4652
+ const [error, setError] = useState21(null);
4653
+ const [viewer, setViewer] = useState21(null);
4654
+ const [rateLimitReset, setRateLimitReset] = useState21(null);
4655
+ const [wasRateLimited, setWasRateLimited] = useState21(false);
4656
+ const [orgContext, setOrgContext] = useState21("personal");
4657
+ const [authMethod, setAuthMethod] = useState21("pat");
4658
+ const [oauthStatus, setOAuthStatus] = useState21("initializing");
4659
+ const [tokenSource, setTokenSource] = useState21("pat");
4660
+ const [sessionTokenOrigin, setSessionTokenOrigin] = useState21("stored");
4661
+ const [deviceCodeResponse, setDeviceCodeResponse] = useState21(null);
4662
+ const [oauthDeviceCode, setOauthDeviceCode] = useState21(null);
4663
+ const [dims, setDims] = useState21(() => {
4206
4664
  const cols = stdout?.columns ?? 100;
4207
4665
  const rows = stdout?.rows ?? 30;
4208
4666
  return { cols, rows };
4209
4667
  });
4210
- useEffect13(() => {
4668
+ useEffect14(() => {
4211
4669
  if (!stdout) return;
4212
4670
  const onResize = () => {
4213
4671
  const cols = stdout.columns ?? 100;
@@ -4219,7 +4677,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4219
4677
  stdout.off?.("resize", onResize);
4220
4678
  };
4221
4679
  }, [stdout]);
4222
- useEffect13(() => {
4680
+ useEffect14(() => {
4223
4681
  const env = getTokenFromEnv();
4224
4682
  const stored = getStoredToken();
4225
4683
  const source = getTokenSource();
@@ -4243,7 +4701,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4243
4701
  setMode("auth_method_selection");
4244
4702
  }
4245
4703
  }, [inlineToken2]);
4246
- useEffect13(() => {
4704
+ useEffect14(() => {
4247
4705
  if (mode !== "oauth_flow") return;
4248
4706
  (async () => {
4249
4707
  try {
@@ -4295,7 +4753,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4295
4753
  setMode("oauth_flow");
4296
4754
  }
4297
4755
  };
4298
- useEffect13(() => {
4756
+ useEffect14(() => {
4299
4757
  (async () => {
4300
4758
  if (mode !== "validating" || !token) return;
4301
4759
  const timeoutId = setTimeout(() => {
@@ -4407,7 +4865,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4407
4865
  setTokenSource("pat");
4408
4866
  setMode("auth_method_selection");
4409
4867
  };
4410
- useInput19((input2, key) => {
4868
+ useInput21((input2, key) => {
4411
4869
  if ((mode === "prompt" || mode === "auth_method_selection") && key.escape) {
4412
4870
  exit();
4413
4871
  }
@@ -4439,19 +4897,19 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4439
4897
  }
4440
4898
  });
4441
4899
  const verticalPadding = Math.floor(dims.rows * 0.05);
4442
- const header = useMemo3(() => /* @__PURE__ */ jsxs23(Box23, { flexDirection: "row", justifyContent: "space-between", marginBottom: 1, children: [
4443
- /* @__PURE__ */ jsxs23(Box23, { flexDirection: "row", gap: 1, children: [
4444
- /* @__PURE__ */ jsxs23(Text24, { bold: true, color: "cyan", children: [
4900
+ const header = useMemo3(() => /* @__PURE__ */ jsxs25(Box25, { flexDirection: "row", justifyContent: "space-between", marginBottom: 1, children: [
4901
+ /* @__PURE__ */ jsxs25(Box25, { flexDirection: "row", gap: 1, children: [
4902
+ /* @__PURE__ */ jsxs25(Text26, { bold: true, color: "cyan", children: [
4445
4903
  " ",
4446
4904
  "GitHub Repository Manager"
4447
4905
  ] }),
4448
- /* @__PURE__ */ jsxs23(Text24, { color: "gray", dimColor: true, children: [
4906
+ /* @__PURE__ */ jsxs25(Text26, { color: "gray", dimColor: true, children: [
4449
4907
  "v",
4450
4908
  packageJson.version
4451
4909
  ] }),
4452
- process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsx24(Text24, { backgroundColor: "blue", color: "white", children: " debug mode " })
4910
+ process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsx26(Text26, { backgroundColor: "blue", color: "white", children: " debug mode " })
4453
4911
  ] }),
4454
- viewer && /* @__PURE__ */ jsx24(Text24, { color: "gray", children: orgContext !== "personal" && orgContext.login ? `${orgContext.login}/@${viewer} ` : `@${viewer} ` })
4912
+ viewer && /* @__PURE__ */ jsx26(Text26, { color: "gray", children: orgContext !== "personal" && orgContext.login ? `${orgContext.login}/@${viewer} ` : `@${viewer} ` })
4455
4913
  ] }), [viewer, orgContext]);
4456
4914
  if (mode === "rate_limited") {
4457
4915
  const formatResetTime = (resetTime) => {
@@ -4474,71 +4932,71 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4474
4932
  return "Unknown";
4475
4933
  }
4476
4934
  };
4477
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4935
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4478
4936
  header,
4479
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { borderStyle: "single", borderColor: "yellow", paddingX: 3, paddingY: 2, flexDirection: "column", width: Math.min(dims.cols - 8, 80), children: [
4480
- /* @__PURE__ */ jsx24(Text24, { bold: true, color: "yellow", marginBottom: 1, children: "\u26A0\uFE0F Rate Limit Exceeded" }),
4481
- /* @__PURE__ */ jsx24(Text24, { color: "gray", marginBottom: 1, children: "You've hit GitHub's API rate limit for your token." }),
4482
- /* @__PURE__ */ jsx24(Text24, { color: "gray", marginBottom: 1, children: "This happens when you make too many requests in a short time." }),
4483
- rateLimitReset && /* @__PURE__ */ jsxs23(Box23, { marginTop: 1, marginBottom: 1, children: [
4484
- /* @__PURE__ */ jsxs23(Text24, { children: [
4485
- /* @__PURE__ */ jsx24(Text24, { color: "cyan", children: "Reset in:" }),
4937
+ /* @__PURE__ */ jsx26(Box25, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs25(Box25, { borderStyle: "single", borderColor: "yellow", paddingX: 3, paddingY: 2, flexDirection: "column", width: Math.min(dims.cols - 8, 80), children: [
4938
+ /* @__PURE__ */ jsx26(Text26, { bold: true, color: "yellow", marginBottom: 1, children: "\u26A0\uFE0F Rate Limit Exceeded" }),
4939
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", marginBottom: 1, children: "You've hit GitHub's API rate limit for your token." }),
4940
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", marginBottom: 1, children: "This happens when you make too many requests in a short time." }),
4941
+ rateLimitReset && /* @__PURE__ */ jsxs25(Box25, { marginTop: 1, marginBottom: 1, children: [
4942
+ /* @__PURE__ */ jsxs25(Text26, { children: [
4943
+ /* @__PURE__ */ jsx26(Text26, { color: "cyan", children: "Reset in:" }),
4486
4944
  " ",
4487
- /* @__PURE__ */ jsx24(Text24, { bold: true, children: formatResetTime(rateLimitReset) })
4945
+ /* @__PURE__ */ jsx26(Text26, { bold: true, children: formatResetTime(rateLimitReset) })
4488
4946
  ] }),
4489
- /* @__PURE__ */ jsxs23(Text24, { color: "gray", dimColor: true, children: [
4947
+ /* @__PURE__ */ jsxs25(Text26, { color: "gray", dimColor: true, children: [
4490
4948
  "(",
4491
4949
  new Date(rateLimitReset).toLocaleTimeString(),
4492
4950
  ")"
4493
4951
  ] })
4494
4952
  ] }),
4495
- /* @__PURE__ */ jsxs23(Box23, { marginTop: 2, flexDirection: "column", gap: 1, children: [
4496
- /* @__PURE__ */ jsx24(Text24, { bold: true, children: "What would you like to do?" }),
4497
- /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", paddingLeft: 2, children: [
4498
- /* @__PURE__ */ jsxs23(Text24, { children: [
4499
- /* @__PURE__ */ jsx24(Text24, { color: "cyan", bold: true, children: "R" }),
4953
+ /* @__PURE__ */ jsxs25(Box25, { marginTop: 2, flexDirection: "column", gap: 1, children: [
4954
+ /* @__PURE__ */ jsx26(Text26, { bold: true, children: "What would you like to do?" }),
4955
+ /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", paddingLeft: 2, children: [
4956
+ /* @__PURE__ */ jsxs25(Text26, { children: [
4957
+ /* @__PURE__ */ jsx26(Text26, { color: "cyan", bold: true, children: "R" }),
4500
4958
  " - Retry now ",
4501
4959
  rateLimitReset && formatResetTime(rateLimitReset) !== "Now (should be reset)" ? "(likely to fail until reset)" : "(should work now)"
4502
4960
  ] }),
4503
- /* @__PURE__ */ jsxs23(Text24, { children: [
4504
- /* @__PURE__ */ jsx24(Text24, { color: "cyan", bold: true, children: "L" }),
4961
+ /* @__PURE__ */ jsxs25(Text26, { children: [
4962
+ /* @__PURE__ */ jsx26(Text26, { color: "cyan", bold: true, children: "L" }),
4505
4963
  " - Logout and choose authentication method"
4506
4964
  ] }),
4507
- /* @__PURE__ */ jsxs23(Text24, { children: [
4508
- /* @__PURE__ */ jsx24(Text24, { color: "gray", bold: true, children: "Q/Esc" }),
4965
+ /* @__PURE__ */ jsxs25(Text26, { children: [
4966
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", bold: true, children: "Q/Esc" }),
4509
4967
  " - Quit application"
4510
4968
  ] })
4511
4969
  ] })
4512
4970
  ] }),
4513
- /* @__PURE__ */ jsx24(Text24, { color: "gray", dimColor: true, marginTop: 2, children: "Tip: Using multiple tokens or waiting between requests can help avoid rate limits." })
4971
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", dimColor: true, marginTop: 2, children: "Tip: Using multiple tokens or waiting between requests can help avoid rate limits." })
4514
4972
  ] }) })
4515
4973
  ] });
4516
4974
  }
4517
4975
  if (mode === "auth_method_selection") {
4518
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4976
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4519
4977
  header,
4520
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", alignItems: "center", children: [
4521
- /* @__PURE__ */ jsx24(AuthMethodSelector, { onSelect: handleAuthMethodSelect }),
4522
- error && /* @__PURE__ */ jsx24(Text24, { color: "red", marginTop: 1, children: error })
4978
+ /* @__PURE__ */ jsx26(Box25, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", alignItems: "center", children: [
4979
+ /* @__PURE__ */ jsx26(AuthMethodSelector, { onSelect: handleAuthMethodSelect }),
4980
+ error && /* @__PURE__ */ jsx26(Text26, { color: "red", marginTop: 1, children: error })
4523
4981
  ] }) })
4524
4982
  ] });
4525
4983
  }
4526
4984
  if (mode === "oauth_flow") {
4527
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4985
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4528
4986
  header,
4529
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx24(OAuthProgress, { status: oauthStatus, error: error || void 0, deviceCode: oauthDeviceCode || void 0 }) })
4987
+ /* @__PURE__ */ jsx26(Box25, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx26(OAuthProgress, { status: oauthStatus, error: error || void 0, deviceCode: oauthDeviceCode || void 0 }) })
4530
4988
  ] });
4531
4989
  }
4532
4990
  if (mode === "prompt") {
4533
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4991
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4534
4992
  header,
4535
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, flexDirection: "column", children: [
4536
- /* @__PURE__ */ jsx24(Text24, { bold: true, marginBottom: 1, children: "Authentication Required" }),
4537
- /* @__PURE__ */ jsx24(Text24, { color: "gray", marginBottom: 1, children: "Enter your GitHub Personal Access Token" }),
4538
- /* @__PURE__ */ jsxs23(Box23, { children: [
4539
- /* @__PURE__ */ jsx24(Text24, { children: "Token: " }),
4540
- /* @__PURE__ */ jsx24(
4541
- TextInput6,
4993
+ /* @__PURE__ */ jsx26(Box25, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs25(Box25, { borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, flexDirection: "column", children: [
4994
+ /* @__PURE__ */ jsx26(Text26, { bold: true, marginBottom: 1, children: "Authentication Required" }),
4995
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", marginBottom: 1, children: "Enter your GitHub Personal Access Token" }),
4996
+ /* @__PURE__ */ jsxs25(Box25, { children: [
4997
+ /* @__PURE__ */ jsx26(Text26, { children: "Token: " }),
4998
+ /* @__PURE__ */ jsx26(
4999
+ TextInput8,
4542
5000
  {
4543
5001
  value: input,
4544
5002
  onChange: setInput,
@@ -4547,30 +5005,30 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4547
5005
  }
4548
5006
  )
4549
5007
  ] }),
4550
- error && /* @__PURE__ */ jsx24(Text24, { color: "red", marginTop: 1, children: error }),
4551
- /* @__PURE__ */ jsx24(Text24, { color: "gray", dimColor: true, marginTop: 1, children: "The token will be stored securely in your local config" }),
4552
- /* @__PURE__ */ jsx24(Text24, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to go back" })
5008
+ error && /* @__PURE__ */ jsx26(Text26, { color: "red", marginTop: 1, children: error }),
5009
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", dimColor: true, marginTop: 1, children: "The token will be stored securely in your local config" }),
5010
+ /* @__PURE__ */ jsx26(Text26, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to go back" })
4553
5011
  ] }) })
4554
5012
  ] });
4555
5013
  }
4556
5014
  if (mode === "validating" || mode === "checking") {
4557
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
5015
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4558
5016
  header,
4559
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", alignItems: "center", children: [
4560
- /* @__PURE__ */ jsx24(Text24, { color: "yellow", children: "Validating token..." }),
4561
- mode === "validating" && /* @__PURE__ */ jsx24(Text24, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to cancel" })
5017
+ /* @__PURE__ */ jsx26(Box25, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", alignItems: "center", children: [
5018
+ /* @__PURE__ */ jsx26(Text26, { color: "yellow", children: "Validating token..." }),
5019
+ mode === "validating" && /* @__PURE__ */ jsx26(Text26, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to cancel" })
4562
5020
  ] }) })
4563
5021
  ] });
4564
5022
  }
4565
5023
  if (mode === "error") {
4566
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
5024
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4567
5025
  header,
4568
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx24(Text24, { color: "red", children: error ?? "Unexpected error" }) })
5026
+ /* @__PURE__ */ jsx26(Box25, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx26(Text26, { color: "red", children: error ?? "Unexpected error" }) })
4569
5027
  ] });
4570
5028
  }
4571
- return /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
5029
+ return /* @__PURE__ */ jsxs25(Box25, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4572
5030
  header,
4573
- /* @__PURE__ */ jsx24(
5031
+ /* @__PURE__ */ jsx26(
4574
5032
  RepoList,
4575
5033
  {
4576
5034
  token,
@@ -4585,7 +5043,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4585
5043
  }
4586
5044
 
4587
5045
  // src/index.tsx
4588
- import { jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
5046
+ import { jsx as jsx27, jsxs as jsxs26 } from "react/jsx-runtime";
4589
5047
  var argv = process.argv.slice(2);
4590
5048
  var getFlagValue = (name) => {
4591
5049
  const idx = argv.findIndex((a) => a === `--${name}` || a.startsWith(`--${name}=`));
@@ -4698,8 +5156,8 @@ var inlineToken = (() => {
4698
5156
  })();
4699
5157
  logger.debug("Rendering UI");
4700
5158
  var { unmount } = render(
4701
- /* @__PURE__ */ jsxs24(Box24, { flexDirection: "column", children: [
4702
- /* @__PURE__ */ jsx25(App, { initialOrgSlug, inlineToken, inlineTokenEphemeral: Boolean(inlineToken) }),
4703
- /* @__PURE__ */ jsx25(Text25, { color: "gray" })
5159
+ /* @__PURE__ */ jsxs26(Box26, { flexDirection: "column", children: [
5160
+ /* @__PURE__ */ jsx27(App, { initialOrgSlug, inlineToken, inlineTokenEphemeral: Boolean(inlineToken) }),
5161
+ /* @__PURE__ */ jsx27(Text27, { color: "gray" })
4704
5162
  ] })
4705
5163
  );