gh-manager-cli 1.44.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.44.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
@@ -629,7 +631,7 @@ function OrgSwitcher({ token, currentContext, onSelect, onClose }) {
629
631
  try {
630
632
  setLoading(true);
631
633
  setError(null);
632
- 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));
633
635
  const orgs = await fetchViewerOrganizations(client);
634
636
  setOrganizations(orgs);
635
637
  const entOrgs = /* @__PURE__ */ new Set();
@@ -1945,11 +1947,345 @@ function OpenInBrowserModal({ repo, onOpen, onCancel, theme: themeProp }) {
1945
1947
  );
1946
1948
  }
1947
1949
 
1948
- // src/ui/components/modals/UnstarModal.tsx
1949
- import { useEffect as useEffect11, useState as useState16 } from "react";
1950
- import { Box as Box16, Text as Text17 } from "ink";
1951
- 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";
1952
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";
1953
2289
  function UnstarModal({
1954
2290
  visible,
1955
2291
  repo,
@@ -1960,8 +2296,8 @@ function UnstarModal({
1960
2296
  theme: themeProp
1961
2297
  }) {
1962
2298
  const { theme } = useTheme(themeProp?.name ?? "default");
1963
- const [focusedButton, setFocusedButton] = useState16("cancel");
1964
- useInput16((input, key) => {
2299
+ const [focusedButton, setFocusedButton] = useState18("cancel");
2300
+ useInput18((input, key) => {
1965
2301
  if (!visible) return;
1966
2302
  if (key.escape || input === "c" || input === "C") {
1967
2303
  onCancel();
@@ -1979,12 +2315,12 @@ function UnstarModal({
1979
2315
  if (input === "n" || input === "N") onCancel();
1980
2316
  if (input === "u" || input === "U") onConfirm();
1981
2317
  });
1982
- useEffect11(() => {
2318
+ useEffect12(() => {
1983
2319
  if (visible) setFocusedButton("cancel");
1984
2320
  }, [visible]);
1985
2321
  if (!visible || !repo) return null;
1986
- return /* @__PURE__ */ jsxs16(
1987
- Box16,
2322
+ return /* @__PURE__ */ jsxs18(
2323
+ Box18,
1988
2324
  {
1989
2325
  flexDirection: "column",
1990
2326
  borderStyle: "round",
@@ -1993,28 +2329,28 @@ function UnstarModal({
1993
2329
  paddingY: 1,
1994
2330
  marginTop: 1,
1995
2331
  children: [
1996
- /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, children: /* @__PURE__ */ jsx17(Text17, { bold: true, color: theme.warning, children: "\u2B50 Unstar Repository" }) }),
1997
- /* @__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: [
1998
2334
  "Are you sure you want to unstar",
1999
2335
  " ",
2000
- /* @__PURE__ */ jsx17(Text17, { bold: true, color: theme.primary, children: repo.nameWithOwner }),
2336
+ /* @__PURE__ */ jsx19(Text19, { bold: true, color: theme.primary, children: repo.nameWithOwner }),
2001
2337
  "?"
2002
2338
  ] }) }),
2003
- repo.description && /* @__PURE__ */ jsx17(Box16, { marginBottom: 1, children: /* @__PURE__ */ jsx17(Text17, { dimColor: true, wrap: "wrap", children: repo.description }) }),
2004
- /* @__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: [
2005
2341
  "Stars: ",
2006
2342
  repo.stargazerCount,
2007
2343
  " \u2022 Forks: ",
2008
2344
  repo.forkCount
2009
2345
  ] }) }),
2010
- 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: [
2011
2347
  error.includes("OAuth access restrictions") ? "\u26A0\uFE0F " : "Error: ",
2012
2348
  error
2013
2349
  ] }) }),
2014
- isUnstarring ? /* @__PURE__ */ jsx17(Box16, { children: /* @__PURE__ */ jsx17(Text17, { color: theme.warning, children: "Unstarring..." }) }) : /* @__PURE__ */ jsxs16(Fragment8, { children: [
2015
- /* @__PURE__ */ jsxs16(Box16, { gap: 2, children: [
2016
- /* @__PURE__ */ jsx17(Box16, { children: /* @__PURE__ */ jsxs16(
2017
- 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,
2018
2354
  {
2019
2355
  backgroundColor: focusedButton === "cancel" ? "white" : void 0,
2020
2356
  color: focusedButton === "cancel" ? "black" : "white",
@@ -2026,8 +2362,8 @@ function UnstarModal({
2026
2362
  ]
2027
2363
  }
2028
2364
  ) }),
2029
- /* @__PURE__ */ jsx17(Box16, { children: /* @__PURE__ */ jsxs16(
2030
- Text17,
2365
+ /* @__PURE__ */ jsx19(Box18, { children: /* @__PURE__ */ jsxs18(
2366
+ Text19,
2031
2367
  {
2032
2368
  backgroundColor: focusedButton === "unstar" ? "yellow" : void 0,
2033
2369
  color: focusedButton === "unstar" ? "black" : theme.warning,
@@ -2040,7 +2376,7 @@ function UnstarModal({
2040
2376
  }
2041
2377
  ) })
2042
2378
  ] }),
2043
- /* @__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" }) })
2044
2380
  ] })
2045
2381
  ]
2046
2382
  }
@@ -2048,9 +2384,9 @@ function UnstarModal({
2048
2384
  }
2049
2385
 
2050
2386
  // src/ui/components/repo/RepoRow.tsx
2051
- import { Box as Box17, Text as Text18 } from "ink";
2387
+ import { Box as Box19, Text as Text20 } from "ink";
2052
2388
  import chalk14 from "chalk";
2053
- import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
2389
+ import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
2054
2390
  function RepoRow({
2055
2391
  repo,
2056
2392
  selected,
@@ -2110,21 +2446,21 @@ function RepoRow({
2110
2446
  if (line3) fullText += "\n" + metaColor(line3);
2111
2447
  const spacingAbove = Math.floor(spacingLines / 2);
2112
2448
  const spacingBelow = spacingLines - spacingAbove;
2113
- return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "column", backgroundColor: selected ? theme.selectedBg : void 0, children: [
2114
- spacingAbove > 0 && /* @__PURE__ */ jsx18(Box17, { height: spacingAbove, children: /* @__PURE__ */ jsx18(Text18, { children: " " }) }),
2115
- /* @__PURE__ */ jsx18(Text18, { children: dim ? chalk14.dim(fullText) : fullText }),
2116
- 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: " " }) })
2117
2453
  ] });
2118
2454
  }
2119
2455
 
2120
2456
  // src/ui/components/repo/FilterInput.tsx
2121
- import { Box as Box18, Text as Text19 } from "ink";
2122
- import TextInput4 from "ink-text-input";
2123
- 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";
2124
2460
 
2125
2461
  // src/ui/components/repo/RepoListHeader.tsx
2126
- import { Box as Box19, Text as Text20 } from "ink";
2127
- 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";
2128
2464
  function RepoListHeader({
2129
2465
  ownerContext,
2130
2466
  sortKey,
@@ -2141,26 +2477,26 @@ function RepoListHeader({
2141
2477
  const { theme } = useTheme(themeProp?.name ?? "default");
2142
2478
  const contextLabel = ownerContext === "personal" ? "Personal Account" : ownerContext?.type === "organization" ? `Organisation: ${ownerContext.name ?? ownerContext.login}` : "";
2143
2479
  const visibilityLabel = visibilityFilter === "public" ? "Public" : visibilityFilter === "private" ? isEnterprise ? "Private/Internal" : "Private" : visibilityFilter === "internal" ? "Internal" : "";
2144
- return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", gap: 2, marginBottom: 1, children: [
2145
- contextLabel && /* @__PURE__ */ jsx20(Text20, { children: contextLabel }),
2146
- starsMode && /* @__PURE__ */ jsx20(Text20, { color: theme.warning, bold: true, children: "\u2B50 Stars Mode" }),
2147
- /* @__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: [
2148
2484
  "Sort: ",
2149
2485
  filterActive ? "relevance" : `${sortKey} ${sortDir === "asc" ? "\u2191" : "\u2193"}`
2150
2486
  ] }),
2151
- /* @__PURE__ */ jsxs19(Text20, { color: theme.muted, dimColor: true, children: [
2487
+ /* @__PURE__ */ jsxs21(Text22, { color: theme.muted, dimColor: true, children: [
2152
2488
  "Fork Status - Commits Behind: ",
2153
2489
  forkTracking ? "ON" : "OFF"
2154
2490
  ] }),
2155
- !!visibilityLabel && !starsMode && /* @__PURE__ */ jsxs19(Text20, { color: theme.warning, children: [
2491
+ !!visibilityLabel && !starsMode && /* @__PURE__ */ jsxs21(Text22, { color: theme.warning, children: [
2156
2492
  "Visibility: ",
2157
2493
  visibilityLabel
2158
2494
  ] }),
2159
- archiveFilter !== "all" && /* @__PURE__ */ jsxs19(Text20, { color: theme.primary, children: [
2495
+ archiveFilter !== "all" && /* @__PURE__ */ jsxs21(Text22, { color: theme.primary, children: [
2160
2496
  "Archive: ",
2161
2497
  archiveFilter === "archived" ? "Archived" : "Unarchived"
2162
2498
  ] }),
2163
- (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: [
2164
2500
  starsMode ? "Filter" : "Search",
2165
2501
  ': "',
2166
2502
  filter.trim(),
@@ -2170,7 +2506,7 @@ function RepoListHeader({
2170
2506
  }
2171
2507
 
2172
2508
  // src/ui/views/RepoList.tsx
2173
- 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";
2174
2510
  var getPageSize = () => {
2175
2511
  const envValue = process.env.REPOS_PER_FETCH;
2176
2512
  if (envValue) {
@@ -2186,17 +2522,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2186
2522
  const { exit } = useApp();
2187
2523
  const { stdout } = useStdout();
2188
2524
  const client = useMemo2(() => makeClient(token), [token]);
2189
- const [debugMessages, setDebugMessages] = useState17([]);
2525
+ const [debugMessages, setDebugMessages] = useState19([]);
2190
2526
  const addDebugMessage = useCallback((msg) => {
2191
2527
  if (process.env.GH_MANAGER_DEBUG === "1") {
2192
2528
  setDebugMessages((prev) => [...prev.slice(-9), msg]);
2193
2529
  }
2194
2530
  }, []);
2195
- const handleOrgContextChangeRef = useRef(onOrgContextChange);
2196
- useEffect12(() => {
2531
+ const handleOrgContextChangeRef = useRef3(onOrgContextChange);
2532
+ useEffect13(() => {
2197
2533
  handleOrgContextChangeRef.current = onOrgContextChange;
2198
2534
  }, [onOrgContextChange]);
2199
- React17.useEffect(() => {
2535
+ React19.useEffect(() => {
2200
2536
  addDebugMessage(`[RepoList] Component mounted`);
2201
2537
  logger.info("RepoList component mounted", {
2202
2538
  token: token ? "present" : "missing",
@@ -2208,90 +2544,93 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2208
2544
  }, []);
2209
2545
  const terminalWidth = stdout?.columns ?? 80;
2210
2546
  const availableHeight = maxVisibleRows ?? 20;
2211
- const [items, setItems] = useState17([]);
2212
- const [cursor, setCursor] = useState17(0);
2213
- const [endCursor, setEndCursor] = useState17(null);
2214
- const [hasNextPage, setHasNextPage] = useState17(false);
2215
- const [totalCount, setTotalCount] = useState17(0);
2216
- const [loading, setLoading] = useState17(true);
2217
- const [sortingLoading, setSortingLoading] = useState17(false);
2218
- const [refreshing, setRefreshing] = useState17(false);
2219
- const [loadingMore, setLoadingMore] = useState17(false);
2220
- const [error, setError] = useState17(null);
2221
- const [rateLimit, setRateLimit] = useState17(void 0);
2222
- const [prevRateLimit, setPrevRateLimit] = useState17(void 0);
2223
- const [restRateLimit, setRestRateLimit] = useState17(void 0);
2224
- const [prevRestRateLimit, setPrevRestRateLimit] = useState17(void 0);
2225
- const [density, setDensity] = useState17(2);
2226
- const [prefsLoaded, setPrefsLoaded] = useState17(false);
2227
- const [themeName, setThemeName] = useState17("default");
2228
- const [themeToast, setThemeToast] = useState17(null);
2229
- 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);
2230
2566
  const { theme, c: tc } = useTheme(themeName);
2231
- const [ownerContext, setOwnerContext] = useState17("personal");
2232
- const [ownerAffiliations, setOwnerAffiliations] = useState17(["OWNER"]);
2233
- const [orgSwitcherOpen, setOrgSwitcherOpen] = useState17(false);
2234
- const [operationCount, setOperationCount] = useState17(0);
2235
- const [showSponsorReminder, setShowSponsorReminder] = useState17(false);
2236
- const [deleteMode, setDeleteMode] = useState17(false);
2237
- const [deleteTarget, setDeleteTarget] = useState17(null);
2238
- const [deleteCode, setDeleteCode] = useState17("");
2239
- const [typedCode, setTypedCode] = useState17("");
2240
- const [deleting, setDeleting] = useState17(false);
2241
- const [deleteError, setDeleteError] = useState17(null);
2242
- const [deleteConfirmStage, setDeleteConfirmStage] = useState17(false);
2243
- const [confirmFocus, setConfirmFocus] = useState17("delete");
2244
- const [archiveMode, setArchiveMode] = useState17(false);
2245
- const [archiveTarget, setArchiveTarget] = useState17(null);
2246
- const [archiving, setArchiving] = useState17(false);
2247
- const [archiveError, setArchiveError] = useState17(null);
2248
- const [archiveFocus, setArchiveFocus] = useState17("confirm");
2249
- const [syncMode, setSyncMode] = useState17(false);
2250
- const [syncTarget, setSyncTarget] = useState17(null);
2251
- const [syncing, setSyncing] = useState17(false);
2252
- const [syncError, setSyncError] = useState17(null);
2253
- const [syncFocus, setSyncFocus] = useState17("confirm");
2254
- const [renameMode, setRenameMode] = useState17(false);
2255
- const [renameTarget, setRenameTarget] = useState17(null);
2256
- const [copyUrlMode, setCopyUrlMode] = useState17(false);
2257
- const [copyUrlTarget, setCopyUrlTarget] = useState17(null);
2258
- const [copyToast, setCopyToast] = useState17(null);
2259
- const [syncTrigger, setSyncTrigger] = useState17(false);
2260
- const [infoMode, setInfoMode] = useState17(false);
2261
- const [infoRepo, setInfoRepo] = useState17(null);
2262
- const [logoutMode, setLogoutMode] = useState17(false);
2263
- const [logoutFocus, setLogoutFocus] = useState17("confirm");
2264
- const [logoutError, setLogoutError] = useState17(null);
2265
- const [archiveFilterMode, setArchiveFilterMode] = useState17(false);
2266
- const [visibilityMode, setVisibilityMode] = useState17(false);
2267
- const [isEnterpriseOrg, setIsEnterpriseOrg] = useState17(false);
2268
- const [hasInternalRepos, setHasInternalRepos] = useState17(false);
2269
- const [changeVisibilityMode, setChangeVisibilityMode] = useState17(false);
2270
- const [changeVisibilityTarget, setChangeVisibilityTarget] = useState17(null);
2271
- const [changingVisibility, setChangingVisibility] = useState17(false);
2272
- const [changeVisibilityError, setChangeVisibilityError] = useState17(null);
2273
- const [sortMode, setSortMode] = useState17(false);
2274
- const [sortDirectionMode, setSortDirectionMode] = useState17(false);
2275
- const [starsMode, setStarsMode] = useState17(false);
2276
- const [starredItems, setStarredItems] = useState17([]);
2277
- const [starredEndCursor, setStarredEndCursor] = useState17(null);
2278
- const [starredHasNextPage, setStarredHasNextPage] = useState17(false);
2279
- const [starredTotalCount, setStarredTotalCount] = useState17(0);
2280
- const [starredLoading, setStarredLoading] = useState17(false);
2281
- const [unstarMode, setUnstarMode] = useState17(false);
2282
- const [unstarTarget, setUnstarTarget] = useState17(null);
2283
- const [unstarring, setUnstarring] = useState17(false);
2284
- const [unstarError, setUnstarError] = useState17(null);
2285
- const [starMode, setStarMode] = useState17(false);
2286
- const [starTarget, setStarTarget] = useState17(null);
2287
- const [starring, setStarring] = useState17(false);
2288
- const [starError, setStarError] = useState17(null);
2289
- const [openInBrowserMode, setOpenInBrowserMode] = useState17(false);
2290
- const [openInBrowserTarget, setOpenInBrowserTarget] = useState17(null);
2291
- const [enrichingForks, setEnrichingForks] = useState17(false);
2292
- const enrichmentDoneRef = useRef(/* @__PURE__ */ new Set());
2293
- const appliedInitialOrg = useRef(false);
2294
- 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(() => {
2295
2634
  (async () => {
2296
2635
  if (appliedInitialOrg.current) return;
2297
2636
  if (!initialOrgSlug2) return;
@@ -2529,7 +2868,62 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2529
2868
  throw error2;
2530
2869
  }
2531
2870
  }
2532
- 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);
2533
2927
  async function handleCopyUrl(url, type) {
2534
2928
  try {
2535
2929
  if (copyToastTimerRef.current) {
@@ -2556,7 +2950,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2556
2950
  throw error2;
2557
2951
  }
2558
2952
  }
2559
- useEffect12(() => {
2953
+ useEffect13(() => {
2560
2954
  return () => {
2561
2955
  if (copyToastTimerRef.current) clearTimeout(copyToastTimerRef.current);
2562
2956
  if (themeToastTimerRef.current) clearTimeout(themeToastTimerRef.current);
@@ -2651,12 +3045,12 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2651
3045
  setDeleteError("Failed to delete repository. Ensure delete_repo scope and admin permissions.");
2652
3046
  }
2653
3047
  }
2654
- const [filter, setFilter] = useState17("");
2655
- const [filterMode, setFilterMode] = useState17(false);
2656
- const [sortKey, setSortKey] = useState17("updated");
2657
- const [sortDir, setSortDir] = useState17("desc");
2658
- const [forkTracking, setForkTracking] = useState17(true);
2659
- 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(() => {
2660
3054
  if (loading || loadingMore || hasNextPage || items.length === 0) return;
2661
3055
  if (!forkTracking) return;
2662
3056
  const unenriched = items.filter(
@@ -2722,22 +3116,27 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2722
3116
  async function jumpToUpstreamRepo(parentNameWithOwner) {
2723
3117
  const [parentOwner, parentName] = parentNameWithOwner.split("/");
2724
3118
  if (!parentOwner || !parentName) return;
2725
- const repo = await fetchRepositoryByOwnerAndName(client, parentOwner, parentName);
2726
- if (repo) {
2727
- setInfoRepo(repo);
2728
- 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 });
2729
3127
  }
2730
3128
  }
2731
- const [visibilityFilter, setVisibilityFilter] = useState17("all");
2732
- const previousVisibilityFilter = useRef("all");
2733
- 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");
2734
3133
  const sortFieldMap = {
2735
3134
  "updated": "UPDATED_AT",
2736
3135
  "pushed": "PUSHED_AT",
2737
3136
  "name": "NAME",
2738
3137
  "stars": "STARGAZERS"
2739
3138
  };
2740
- const fetchPage = async (after, reset = false, isSortChange = false, overrideForkTracking, policy) => {
3139
+ const fetchPage = async (after, reset = false, isSortChange = false, overrideForkTracking, policy, privacyOverride) => {
2741
3140
  logger.info("fetchPage called", {
2742
3141
  after,
2743
3142
  reset,
@@ -2761,7 +3160,9 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2761
3160
  };
2762
3161
  const orgLogin = ownerContext !== "personal" ? ownerContext.login : void 0;
2763
3162
  let privacy;
2764
- if (visibilityFilter === "public") privacy = "PUBLIC";
3163
+ if (privacyOverride !== void 0) {
3164
+ privacy = privacyOverride === "all" ? void 0 : privacyOverride;
3165
+ } else if (visibilityFilter === "public") privacy = "PUBLIC";
2765
3166
  else if (visibilityFilter === "private") privacy = "PRIVATE";
2766
3167
  const page = await fetchViewerReposPageUnified(
2767
3168
  token,
@@ -2835,7 +3236,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2835
3236
  setLoadingMore(false);
2836
3237
  }
2837
3238
  };
2838
- useEffect12(() => {
3239
+ useEffect13(() => {
2839
3240
  const ui = getUIPrefs();
2840
3241
  if (ui.density !== void 0) setDensity(ui.density);
2841
3242
  if (ui.sortKey && ["updated", "pushed", "name", "stars"].includes(ui.sortKey)) {
@@ -2871,7 +3272,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2871
3272
  }
2872
3273
  setPrefsLoaded(true);
2873
3274
  }, [onOrgContextChange]);
2874
- useEffect12(() => {
3275
+ useEffect13(() => {
2875
3276
  if (!prefsLoaded) return;
2876
3277
  let policy = "cache-first";
2877
3278
  const orgLogin = ownerContext !== "personal" ? ownerContext.login : void 0;
@@ -2891,7 +3292,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2891
3292
  setCursor(0);
2892
3293
  fetchPage(null, true, false, void 0, policy);
2893
3294
  }, [client, prefsLoaded, ownerContext, ownerAffiliations]);
2894
- useEffect12(() => {
3295
+ useEffect13(() => {
2895
3296
  if (visibilityFilter !== "all" || previousVisibilityFilter.current && previousVisibilityFilter.current !== visibilityFilter) {
2896
3297
  if (items.length > 0) {
2897
3298
  fetchPage(null, true, true, void 0, "network-only");
@@ -2899,7 +3300,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2899
3300
  }
2900
3301
  previousVisibilityFilter.current = visibilityFilter;
2901
3302
  }, [visibilityFilter]);
2902
- useInput17((input, key) => {
3303
+ useInput19((input, key) => {
2903
3304
  if (error) {
2904
3305
  if (input && input.toUpperCase() === "Q") {
2905
3306
  try {
@@ -3061,6 +3462,12 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3061
3462
  if (renameMode) {
3062
3463
  return;
3063
3464
  }
3465
+ if (createMode) {
3466
+ return;
3467
+ }
3468
+ if (transferMode) {
3469
+ return;
3470
+ }
3064
3471
  if (openInBrowserMode) {
3065
3472
  return;
3066
3473
  }
@@ -3252,8 +3659,20 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3252
3659
  }
3253
3660
  return;
3254
3661
  }
3255
- if (input && input.toUpperCase() === "W") {
3256
- 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
+ }
3257
3676
  return;
3258
3677
  }
3259
3678
  if (input && input.toUpperCase() === "S" && !key.shift && !key.ctrl && !filterActive) {
@@ -3416,9 +3835,18 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3416
3835
  return result;
3417
3836
  }, [starredItems, filter, archiveFilter]);
3418
3837
  const visibleItems = starsMode ? filteredStarredItems : filterActive ? fuzzyItems : filteredAndSorted;
3419
- useEffect12(() => {
3838
+ useEffect13(() => {
3420
3839
  setCursor((c) => Math.min(c, Math.max(0, visibleItems.length - 1)));
3421
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]);
3422
3850
  const headerHeight = 2;
3423
3851
  const footerHeight = 4;
3424
3852
  const containerPadding = 2;
@@ -3429,7 +3857,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3429
3857
  () => computeWindow(visibleItems, cursor, listHeight, spacingLines),
3430
3858
  [visibleItems, cursor, listHeight, spacingLines]
3431
3859
  );
3432
- useEffect12(() => {
3860
+ useEffect13(() => {
3433
3861
  const rawItemsLength = starsMode ? starredItems.length : items.length;
3434
3862
  const filterDrainedPage = visibleItems.length === 0 && archiveFilter !== "all" && rawItemsLength > 0;
3435
3863
  if (starsMode) {
@@ -3448,79 +3876,79 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3448
3876
  exec(cmd);
3449
3877
  }
3450
3878
  const lowRate = rateLimit && rateLimit.remaining <= Math.ceil(rateLimit.limit * 0.1) || restRateLimit && restRateLimit.core.remaining <= Math.ceil(restRateLimit.core.limit * 0.1);
3451
- const modalOpen = deleteMode || archiveMode || syncMode || logoutMode || infoMode || visibilityMode || archiveFilterMode || sortMode || sortDirectionMode || changeVisibilityMode || copyUrlMode || renameMode || openInBrowserMode;
3452
- const headerBar = useMemo2(() => /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: [
3453
- /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", gap: 1, children: [
3454
- /* @__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: [
3455
3883
  " ",
3456
3884
  ownerContext === "personal" ? "Personal" : ownerContext.name || ownerContext.login,
3457
3885
  ownerContext !== "personal" && isEnterpriseOrg && " (ENT)"
3458
3886
  ] }),
3459
- /* @__PURE__ */ jsx21(Text21, { bold: true, color: modalOpen ? theme.muted : void 0, dimColor: modalOpen ? true : void 0, children: "Repositories" }),
3460
- /* @__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: [
3461
3889
  "(",
3462
3890
  visibleItems.length,
3463
3891
  "/",
3464
3892
  totalCount,
3465
3893
  ")"
3466
3894
  ] }),
3467
- loadingMore && hasNextPage && !starsMode && totalCount > 0 && /* @__PURE__ */ jsx21(Text21, { color: theme.primary, children: ` \xB7 loading ${items.length}/${totalCount}` }),
3468
- enrichingForks && /* @__PURE__ */ jsx21(Text21, { color: theme.muted, children: ` \xB7 enriching forks\u2026` }),
3469
- (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, {}) }) })
3470
3898
  ] }),
3471
- (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: [
3472
3900
  "GraphQL: ",
3473
3901
  rateLimit ? `${rateLimit.remaining}/${rateLimit.limit}` : "---/---",
3474
- 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})` }),
3475
3903
  " | ",
3476
3904
  "REST: ",
3477
3905
  restRateLimit ? `${restRateLimit.core.remaining}/${restRateLimit.core.limit}` : "---/---",
3478
- 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})` }),
3479
3907
  " "
3480
3908
  ] })
3481
3909
  ] }), [visibleItems.length, totalCount, loading, loadingMore, rateLimit, lowRate, modalOpen, prevRateLimit, ownerContext, isEnterpriseOrg, restRateLimit, prevRestRateLimit, enrichingForks, starsMode, hasNextPage, items.length, theme]);
3482
3910
  if (error) {
3483
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: availableHeight, children: [
3484
- /* @__PURE__ */ jsx21(Box20, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", gap: 1, children: [
3485
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: " Repositories" }),
3486
- /* @__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)" })
3487
3915
  ] }) }),
3488
- /* @__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: [
3489
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: error }),
3490
- /* @__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" }) })
3491
3919
  ] }) }) }),
3492
- /* @__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" }) })
3493
3921
  ] });
3494
3922
  }
3495
3923
  if (loading && items.length === 0 || sortingLoading) {
3496
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: availableHeight, children: [
3497
- /* @__PURE__ */ jsx21(Box20, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", gap: 1, children: [
3498
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: " Repositories" }),
3499
- /* @__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...)" })
3500
3928
  ] }) }),
3501
- /* @__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: [
3502
- /* @__PURE__ */ jsxs20(Box20, { height: 1, flexDirection: "row", children: [
3503
- /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, children: /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) }),
3504
- /* @__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..." })
3505
3933
  ] }),
3506
- /* @__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" }) })
3507
3935
  ] }) }) }) }),
3508
- /* @__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..." }) })
3509
3937
  ] });
3510
3938
  }
3511
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: availableHeight, children: [
3939
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: availableHeight, children: [
3512
3940
  headerBar,
3513
- 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: [
3514
- /* @__PURE__ */ jsx21(Text21, { color: "yellow", children: "\u{1F49A} Thanks for using gh-manager-cli!" }),
3515
- /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "Your support helps craft more open-source tools" }),
3516
- /* @__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" })
3517
3945
  ] }) }) }),
3518
- /* @__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 ? (
3519
3947
  // Centered modal; hide list content while modal is open
3520
- /* @__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: [
3521
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: "Delete Confirmation" }),
3522
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: "\u26A0\uFE0F Delete repository?" }),
3523
- /* @__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: " " }) }),
3524
3952
  (() => {
3525
3953
  const langName = deleteTarget.primaryLanguage?.name || "";
3526
3954
  const langColor = deleteTarget.primaryLanguage?.color || "#666666";
@@ -3532,20 +3960,20 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3532
3960
  let line2 = "";
3533
3961
  if (langName) line2 += chalk15.hex(langColor)("\u25CF ") + tc.muted(`${langName} `);
3534
3962
  line2 += tc.muted(`\u2605 ${deleteTarget.stargazerCount} \u2442 ${deleteTarget.forkCount} Updated ${formatDate(deleteTarget.updatedAt)}`);
3535
- return /* @__PURE__ */ jsxs20(Fragment9, { children: [
3536
- /* @__PURE__ */ jsx21(Text21, { children: line1 }),
3537
- /* @__PURE__ */ jsx21(Text21, { children: line2 })
3963
+ return /* @__PURE__ */ jsxs22(Fragment11, { children: [
3964
+ /* @__PURE__ */ jsx23(Text23, { children: line1 }),
3965
+ /* @__PURE__ */ jsx23(Text23, { children: line2 })
3538
3966
  ] });
3539
3967
  })(),
3540
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsxs20(Text21, { children: [
3968
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsxs22(Text23, { children: [
3541
3969
  "Type ",
3542
- /* @__PURE__ */ jsx21(Text21, { color: "yellow", bold: true, children: deleteCode }),
3970
+ /* @__PURE__ */ jsx23(Text23, { color: "yellow", bold: true, children: deleteCode }),
3543
3971
  " to confirm."
3544
3972
  ] }) }),
3545
- !deleteConfirmStage && /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, children: [
3546
- /* @__PURE__ */ jsx21(Text21, { children: "Confirm code: " }),
3547
- /* @__PURE__ */ jsx21(
3548
- TextInput5,
3973
+ !deleteConfirmStage && /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, children: [
3974
+ /* @__PURE__ */ jsx23(Text23, { children: "Confirm code: " }),
3975
+ /* @__PURE__ */ jsx23(
3976
+ TextInput7,
3549
3977
  {
3550
3978
  value: typedCode,
3551
3979
  onChange: (v) => {
@@ -3571,11 +3999,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3571
3999
  }
3572
4000
  )
3573
4001
  ] }),
3574
- deleteConfirmStage && /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "column", children: [
3575
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: "This action will permanently delete the repository. This cannot be undone." }),
3576
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3577
- /* @__PURE__ */ jsx21(
3578
- 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,
3579
4007
  {
3580
4008
  borderStyle: "round",
3581
4009
  borderColor: "red",
@@ -3584,11 +4012,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3584
4012
  alignItems: "center",
3585
4013
  justifyContent: "center",
3586
4014
  flexDirection: "column",
3587
- 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") })
3588
4016
  }
3589
4017
  ),
3590
- /* @__PURE__ */ jsx21(
3591
- Box20,
4018
+ /* @__PURE__ */ jsx23(
4019
+ Box22,
3592
4020
  {
3593
4021
  borderStyle: "round",
3594
4022
  borderColor: confirmFocus === "cancel" ? "white" : "gray",
@@ -3597,17 +4025,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3597
4025
  alignItems: "center",
3598
4026
  justifyContent: "center",
3599
4027
  flexDirection: "column",
3600
- 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") })
3601
4029
  }
3602
4030
  )
3603
4031
  ] }),
3604
- /* @__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: [
3605
4033
  "Press Enter to ",
3606
4034
  confirmFocus === "delete" ? "Delete" : "Cancel",
3607
4035
  " | Y to Delete | C to Cancel"
3608
4036
  ] }) }),
3609
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(
3610
- TextInput5,
4037
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(
4038
+ TextInput7,
3611
4039
  {
3612
4040
  value: "",
3613
4041
  onChange: () => {
@@ -3620,18 +4048,18 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3620
4048
  }
3621
4049
  ) })
3622
4050
  ] }),
3623
- deleteError && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "magenta", children: deleteError }) }),
3624
- 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..." }) })
3625
4053
  ] }) })
3626
- ) : 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: [
3627
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: archiveTarget.isArchived ? "Unarchive Confirmation" : "Archive Confirmation" }),
3628
- /* @__PURE__ */ jsx21(Text21, { color: archiveTarget.isArchived ? "green" : "yellow", children: archiveTarget.isArchived ? "\u21BA Unarchive repository?" : "\u26A0\uFE0F Archive repository?" }),
3629
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3630
- /* @__PURE__ */ jsx21(Text21, { children: archiveTarget.nameWithOwner }),
3631
- /* @__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." }) }),
3632
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3633
- /* @__PURE__ */ jsx21(
3634
- 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,
3635
4063
  {
3636
4064
  borderStyle: "round",
3637
4065
  borderColor: archiveTarget.isArchived ? "green" : "yellow",
@@ -3640,11 +4068,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3640
4068
  alignItems: "center",
3641
4069
  justifyContent: "center",
3642
4070
  flexDirection: "column",
3643
- 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") })
3644
4072
  }
3645
4073
  ),
3646
- /* @__PURE__ */ jsx21(
3647
- Box20,
4074
+ /* @__PURE__ */ jsx23(
4075
+ Box22,
3648
4076
  {
3649
4077
  borderStyle: "round",
3650
4078
  borderColor: archiveFocus === "cancel" ? "white" : "gray",
@@ -3653,19 +4081,19 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3653
4081
  alignItems: "center",
3654
4082
  justifyContent: "center",
3655
4083
  flexDirection: "column",
3656
- 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") })
3657
4085
  }
3658
4086
  )
3659
4087
  ] }),
3660
- /* @__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: [
3661
4089
  "Press Enter to ",
3662
4090
  archiveFocus === "confirm" ? archiveTarget.isArchived ? "Unarchive" : "Archive" : "Cancel",
3663
4091
  " | Y to ",
3664
4092
  archiveTarget.isArchived ? "Unarchive" : "Archive",
3665
4093
  " | C to Cancel"
3666
4094
  ] }) }),
3667
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(
3668
- TextInput5,
4095
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(
4096
+ TextInput7,
3669
4097
  {
3670
4098
  value: "",
3671
4099
  onChange: () => {
@@ -3679,14 +4107,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3679
4107
  }
3680
4108
  }
3681
4109
  ) }),
3682
- archiveError && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "magenta", children: archiveError }) }),
3683
- archiving && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "yellow", children: archiveTarget.isArchived ? "Unarchiving..." : "Archiving..." }) })
3684
- ] }) }) : 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: [
3685
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: "Sync Fork Confirmation" }),
3686
- /* @__PURE__ */ jsx21(Text21, { color: "blue", children: "\u27F2 Sync fork with upstream?" }),
3687
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3688
- /* @__PURE__ */ jsx21(Text21, { children: syncTarget.nameWithOwner }),
3689
- 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: [
3690
4118
  "Upstream: ",
3691
4119
  syncTarget.parent.nameWithOwner
3692
4120
  ] }),
@@ -3701,12 +4129,12 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3701
4129
  if (ahead > 0) parts.push(chalk15.green(`${ahead} ahead`));
3702
4130
  if (behind > 0) parts.push(chalk15.yellow(`${behind} behind`));
3703
4131
  const statusText = parts.length === 0 ? chalk15.green("Your fork is up to date with upstream.") : `This fork is ${parts.join(", ")} of upstream.`;
3704
- return /* @__PURE__ */ jsx21(Text21, { children: statusText });
4132
+ return /* @__PURE__ */ jsx23(Text23, { children: statusText });
3705
4133
  })(),
3706
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { children: "This will merge upstream changes into your fork." }) }),
3707
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3708
- /* @__PURE__ */ jsx21(
3709
- 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,
3710
4138
  {
3711
4139
  borderStyle: "round",
3712
4140
  borderColor: "blue",
@@ -3715,11 +4143,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3715
4143
  alignItems: "center",
3716
4144
  justifyContent: "center",
3717
4145
  flexDirection: "column",
3718
- 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") })
3719
4147
  }
3720
4148
  ),
3721
- /* @__PURE__ */ jsx21(
3722
- Box20,
4149
+ /* @__PURE__ */ jsx23(
4150
+ Box22,
3723
4151
  {
3724
4152
  borderStyle: "round",
3725
4153
  borderColor: syncFocus === "cancel" ? "white" : "gray",
@@ -3728,17 +4156,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3728
4156
  alignItems: "center",
3729
4157
  justifyContent: "center",
3730
4158
  flexDirection: "column",
3731
- 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") })
3732
4160
  }
3733
4161
  )
3734
4162
  ] }),
3735
- /* @__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: [
3736
4164
  "Press Enter to ",
3737
4165
  syncFocus === "confirm" ? "Sync" : "Cancel",
3738
4166
  " | Y to Sync | C to Cancel"
3739
4167
  ] }) }),
3740
- /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(
3741
- TextInput5,
4168
+ /* @__PURE__ */ jsx23(Box22, { marginTop: 1, children: /* @__PURE__ */ jsx23(
4169
+ TextInput7,
3742
4170
  {
3743
4171
  value: "",
3744
4172
  onChange: () => {
@@ -3752,14 +4180,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3752
4180
  }
3753
4181
  }
3754
4182
  ) }),
3755
- syncError && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: theme.error, children: syncError }) }),
3756
- syncing && /* @__PURE__ */ jsx21(Box20, { marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { color: theme.warning, children: "Syncing..." }) })
3757
- ] }) }) : 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: [
3758
- /* @__PURE__ */ jsx21(Text21, { bold: true, children: "Logout Confirmation" }),
3759
- /* @__PURE__ */ jsx21(Text21, { color: theme.primary, children: "Are you sure you want to log out?" }),
3760
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3761
- /* @__PURE__ */ jsx21(
3762
- 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,
3763
4191
  {
3764
4192
  borderStyle: "round",
3765
4193
  borderColor: theme.primary,
@@ -3768,11 +4196,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3768
4196
  alignItems: "center",
3769
4197
  justifyContent: "center",
3770
4198
  flexDirection: "column",
3771
- 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") })
3772
4200
  }
3773
4201
  ),
3774
- /* @__PURE__ */ jsx21(
3775
- Box20,
4202
+ /* @__PURE__ */ jsx23(
4203
+ Box22,
3776
4204
  {
3777
4205
  borderStyle: "round",
3778
4206
  borderColor: logoutFocus === "cancel" ? "white" : theme.muted,
@@ -3781,16 +4209,16 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3781
4209
  alignItems: "center",
3782
4210
  justifyContent: "center",
3783
4211
  flexDirection: "column",
3784
- 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") })
3785
4213
  }
3786
4214
  )
3787
4215
  ] }),
3788
- /* @__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: [
3789
4217
  "Press Enter to ",
3790
4218
  logoutFocus === "confirm" ? "Logout" : "Cancel",
3791
4219
  " | Y to Logout | C to Cancel"
3792
4220
  ] }) })
3793
- ] }) }) : 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(
3794
4222
  OrgSwitcher,
3795
4223
  {
3796
4224
  token,
@@ -3798,45 +4226,45 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3798
4226
  onSelect: handleOrgContextChange,
3799
4227
  onClose: () => setOrgSwitcherOpen(false)
3800
4228
  }
3801
- ) }) : infoMode ? /* @__PURE__ */ jsx21(Box20, { height: contentHeight, alignItems: "center", justifyContent: "center", children: (() => {
4229
+ ) }) : infoMode ? /* @__PURE__ */ jsx23(Box22, { height: contentHeight, alignItems: "center", justifyContent: "center", children: (() => {
3802
4230
  const repo = infoRepo || visibleItems[cursor];
3803
- 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." });
3804
4232
  const langName = repo.primaryLanguage?.name || "N/A";
3805
4233
  const langColor = repo.primaryLanguage?.color || "#666666";
3806
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "round", borderColor: theme.internal, paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 90), children: [
3807
- /* @__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: [
3808
4236
  "Repository Info ",
3809
4237
  infoRepo ? tc.muted("(cached)") : ""
3810
4238
  ] }),
3811
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3812
- /* @__PURE__ */ jsx21(Text21, { children: tc.text.bold(repo.nameWithOwner) }),
3813
- repo.description && /* @__PURE__ */ jsx21(Text21, { color: theme.muted, children: repo.description }),
3814
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3815
- /* @__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: [
3816
4244
  repo.visibility === "PRIVATE" ? tc.private("Private") : repo.visibility === "INTERNAL" ? tc.internal("Internal") : tc.success("Public"),
3817
4245
  repo.isArchived ? tc.archived(" Archived") : "",
3818
4246
  repo.isFork ? tc.fork(" Fork") : ""
3819
4247
  ] }),
3820
- /* @__PURE__ */ jsx21(Text21, { children: tc.muted(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount}`) }),
3821
- /* @__PURE__ */ jsxs20(Text21, { children: [
4248
+ /* @__PURE__ */ jsx23(Text23, { children: tc.muted(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount}`) }),
4249
+ /* @__PURE__ */ jsxs22(Text23, { children: [
3822
4250
  chalk15.hex(langColor)(`\u25CF `),
3823
4251
  tc.muted(`${langName}`)
3824
4252
  ] }),
3825
- /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4253
+ /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3826
4254
  "Updated: ",
3827
4255
  formatDate(repo.updatedAt),
3828
4256
  " \u2022 Pushed: ",
3829
4257
  formatDate(repo.pushedAt)
3830
4258
  ] }),
3831
- /* @__PURE__ */ jsxs20(Text21, { color: theme.muted, children: [
4259
+ /* @__PURE__ */ jsxs22(Text23, { color: theme.muted, children: [
3832
4260
  "Size: ",
3833
4261
  repo.diskUsage,
3834
4262
  " KB"
3835
4263
  ] }),
3836
- /* @__PURE__ */ jsx21(Box20, { height: 1, children: /* @__PURE__ */ jsx21(Text21, { children: " " }) }),
3837
- /* @__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" })
3838
4266
  ] });
3839
- })() }) : 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(
3840
4268
  ArchiveFilterModal,
3841
4269
  {
3842
4270
  currentFilter: archiveFilter,
@@ -3849,7 +4277,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3849
4277
  onCancel: () => setArchiveFilterMode(false),
3850
4278
  theme
3851
4279
  }
3852
- ) }) : 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(
3853
4281
  VisibilityModal,
3854
4282
  {
3855
4283
  currentFilter: visibilityFilter,
@@ -3863,7 +4291,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3863
4291
  onCancel: () => setVisibilityMode(false),
3864
4292
  theme
3865
4293
  }
3866
- ) }) : 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(
3867
4295
  SortModal,
3868
4296
  {
3869
4297
  currentSort: sortKey,
@@ -3876,7 +4304,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3876
4304
  onCancel: () => setSortMode(false),
3877
4305
  theme
3878
4306
  }
3879
- ) }) : 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(
3880
4308
  SortDirectionModal,
3881
4309
  {
3882
4310
  currentDirection: sortDir,
@@ -3890,7 +4318,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3890
4318
  onCancel: () => setSortDirectionMode(false),
3891
4319
  theme
3892
4320
  }
3893
- ) }) : 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(
3894
4322
  ChangeVisibilityModal,
3895
4323
  {
3896
4324
  isOpen: changeVisibilityMode,
@@ -3904,7 +4332,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3904
4332
  error: changeVisibilityError,
3905
4333
  theme
3906
4334
  }
3907
- ) }) : 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(
3908
4336
  RenameModal,
3909
4337
  {
3910
4338
  repo: renameTarget,
@@ -3912,7 +4340,25 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3912
4340
  onCancel: closeRenameModal,
3913
4341
  theme
3914
4342
  }
3915
- ) }) : 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(
3916
4362
  CopyUrlModal,
3917
4363
  {
3918
4364
  repo: copyUrlTarget,
@@ -3921,7 +4367,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3921
4367
  onCopy: handleCopyUrl,
3922
4368
  theme
3923
4369
  }
3924
- ) }) : 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(
3925
4371
  UnstarModal,
3926
4372
  {
3927
4373
  visible: unstarMode,
@@ -3932,7 +4378,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3932
4378
  error: unstarError,
3933
4379
  theme
3934
4380
  }
3935
- ) }) : 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(
3936
4382
  StarModal,
3937
4383
  {
3938
4384
  visible: starMode,
@@ -3944,7 +4390,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3944
4390
  error: starError,
3945
4391
  theme
3946
4392
  }
3947
- ) }) : 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(
3948
4394
  OpenInBrowserModal,
3949
4395
  {
3950
4396
  repo: openInBrowserTarget,
@@ -3959,8 +4405,8 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3959
4405
  },
3960
4406
  theme
3961
4407
  }
3962
- ) }) : /* @__PURE__ */ jsxs20(Fragment9, { children: [
3963
- /* @__PURE__ */ jsx21(
4408
+ ) }) : /* @__PURE__ */ jsxs22(Fragment11, { children: [
4409
+ /* @__PURE__ */ jsx23(
3964
4410
  RepoListHeader,
3965
4411
  {
3966
4412
  ownerContext,
@@ -3976,10 +4422,10 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3976
4422
  theme
3977
4423
  }
3978
4424
  ),
3979
- filterMode && /* @__PURE__ */ jsxs20(Box20, { marginBottom: 1, children: [
3980
- /* @__PURE__ */ jsx21(Text21, { children: "Search: " }),
3981
- /* @__PURE__ */ jsx21(
3982
- TextInput5,
4425
+ filterMode && /* @__PURE__ */ jsxs22(Box22, { marginBottom: 1, children: [
4426
+ /* @__PURE__ */ jsx23(Text23, { children: "Search: " }),
4427
+ /* @__PURE__ */ jsx23(
4428
+ TextInput7,
3983
4429
  {
3984
4430
  value: filter,
3985
4431
  onChange: (val) => {
@@ -3992,10 +4438,10 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3992
4438
  }
3993
4439
  )
3994
4440
  ] }),
3995
- /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", height: listHeight, children: [
4441
+ /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: listHeight, children: [
3996
4442
  visibleItems.slice(windowed.start, windowed.end).map((repo, i) => {
3997
4443
  const idx = windowed.start + i;
3998
- return /* @__PURE__ */ jsx21(
4444
+ return /* @__PURE__ */ jsx23(
3999
4445
  RepoRow,
4000
4446
  {
4001
4447
  repo,
@@ -4010,55 +4456,59 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
4010
4456
  repo.nameWithOwner
4011
4457
  );
4012
4458
  }),
4013
- loadingMore && hasNextPage && !starsMode && /* @__PURE__ */ jsx21(Box20, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", children: [
4014
- /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) }),
4015
- /* @__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: [
4016
4462
  "Loading repositories\u2026 ",
4017
4463
  totalCount > 0 ? `(${items.length}/${totalCount})` : `(${items.length})`
4018
4464
  ] })
4019
4465
  ] }) }),
4020
- loadingMore && hasNextPage && starsMode && /* @__PURE__ */ jsx21(Box20, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs20(Box20, { flexDirection: "row", children: [
4021
- /* @__PURE__ */ jsx21(Box20, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx21(Text21, { color: "cyan", children: /* @__PURE__ */ jsx21(SlowSpinner, {}) }) }),
4022
- /* @__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..." })
4023
4469
  ] }) }),
4024
- 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: [
4025
4471
  "Still loading repos (",
4026
4472
  items.length,
4027
4473
  "/",
4028
4474
  totalCount > 0 ? totalCount : "?",
4029
4475
  ") \u2014 fuzzy results may be incomplete"
4030
4476
  ] }) }),
4031
- !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" }) })
4032
4478
  ] })
4033
4479
  ] }) }),
4034
- /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
4035
- /* @__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" }) }),
4036
- /* @__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: [
4037
4483
  "/ Search",
4038
4484
  !filterActive && " \u2022 S Sort \u2022 D Direction",
4039
4485
  " \u2022 T Density \u2022 Shift+T Theme \u2022 A Archive Filter",
4040
4486
  !starsMode && " \u2022 V Visibility Filter"
4041
4487
  ] }) }),
4042
- /* @__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` }) }),
4043
- /* @__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" }) }),
4044
- /* @__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" }) })
4045
4495
  ] }),
4046
- process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsxs20(Box20, { marginTop: 1, borderStyle: "single", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [
4047
- /* @__PURE__ */ jsx21(Text21, { bold: true, color: "yellow", children: "Debug Messages:" }),
4048
- 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))
4049
4499
  ] }),
4050
- 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 }) }) }),
4051
- 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 }) }) })
4052
4502
  ] });
4053
4503
  }
4054
4504
 
4055
4505
  // src/ui/components/auth/AuthMethodSelector.tsx
4056
- import { useState as useState18 } from "react";
4057
- 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";
4058
4508
  import chalk16 from "chalk";
4059
- import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
4509
+ import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
4060
4510
  function AuthMethodSelector({ onSelect, onQuit }) {
4061
- const [selectedIndex, setSelectedIndex] = useState18(0);
4511
+ const [selectedIndex, setSelectedIndex] = useState20(0);
4062
4512
  const methods = [
4063
4513
  {
4064
4514
  key: "oauth",
@@ -4071,7 +4521,7 @@ function AuthMethodSelector({ onSelect, onQuit }) {
4071
4521
  description: "Manually enter a GitHub Personal Access Token"
4072
4522
  }
4073
4523
  ];
4074
- useInput18((input, key) => {
4524
+ useInput20((input, key) => {
4075
4525
  if (key.escape || input?.toLowerCase() === "q") {
4076
4526
  if (onQuit) {
4077
4527
  onQuit();
@@ -4090,33 +4540,33 @@ function AuthMethodSelector({ onSelect, onQuit }) {
4090
4540
  onSelect("pat");
4091
4541
  }
4092
4542
  });
4093
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [
4094
- /* @__PURE__ */ jsx22(Text22, { bold: true, marginBottom: 1, children: "Choose Authentication Method" }),
4095
- /* @__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) => {
4096
4546
  const isSelected = index === selectedIndex;
4097
4547
  const prefix = isSelected ? chalk16.cyan("\u203A") : " ";
4098
4548
  const numberPrefix = `${index + 1}.`;
4099
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", marginBottom: 1, children: [
4100
- /* @__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: [
4101
4551
  prefix,
4102
4552
  " ",
4103
4553
  numberPrefix,
4104
4554
  " ",
4105
4555
  method.label
4106
4556
  ] }) }),
4107
- /* @__PURE__ */ jsxs21(Text22, { color: "gray", dimColor: true, children: [
4557
+ /* @__PURE__ */ jsxs23(Text24, { color: "gray", dimColor: true, children: [
4108
4558
  " ",
4109
4559
  method.description
4110
4560
  ] })
4111
4561
  ] }, method.key);
4112
4562
  }) }),
4113
- /* @__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" })
4114
4564
  ] });
4115
4565
  }
4116
4566
 
4117
4567
  // src/ui/components/auth/OAuthProgress.tsx
4118
- import { Box as Box22, Text as Text23 } from "ink";
4119
- 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";
4120
4570
  function OAuthProgress({ status, error, deviceCode }) {
4121
4571
  const statusMessages = {
4122
4572
  initializing: {
@@ -4153,69 +4603,69 @@ function OAuthProgress({ status, error, deviceCode }) {
4153
4603
  }
4154
4604
  };
4155
4605
  const { message, showSpinner } = statusMessages[status];
4156
- return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", borderStyle: "single", borderColor: status === "error" ? "red" : "cyan", paddingX: 2, paddingY: 1, children: [
4157
- /* @__PURE__ */ jsx23(Text23, { bold: true, marginBottom: 1, children: "GitHub OAuth Authentication" }),
4158
- /* @__PURE__ */ jsx23(Box22, { marginY: 1, children: showSpinner ? /* @__PURE__ */ jsxs22(Box22, { children: [
4159
- /* @__PURE__ */ jsx23(Text23, { color: "green", children: /* @__PURE__ */ jsx23(SlowSpinner, { interval: 2e3 }) }),
4160
- /* @__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: [
4161
4611
  " ",
4162
4612
  message
4163
4613
  ] })
4164
- ] }) : /* @__PURE__ */ jsxs22(Text23, { color: status === "error" ? "red" : "green", children: [
4614
+ ] }) : /* @__PURE__ */ jsxs24(Text25, { color: status === "error" ? "red" : "green", children: [
4165
4615
  status === "error" ? "\u2717" : "\u2713",
4166
4616
  " ",
4167
4617
  message
4168
4618
  ] }) }),
4169
- (status === "waiting_for_authorization" || status === "polling_for_token") && deviceCode && /* @__PURE__ */ jsxs22(Box22, { marginY: 1, flexDirection: "column", children: [
4170
- /* @__PURE__ */ jsx23(Text23, { bold: true, color: "cyan", marginBottom: 1, children: "\u{1F4CB} Please complete these steps:" }),
4171
- /* @__PURE__ */ jsxs22(Box22, { marginBottom: 1, children: [
4172
- /* @__PURE__ */ jsx23(Text23, { children: "1. Visit: " }),
4173
- /* @__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 })
4174
4624
  ] }),
4175
- /* @__PURE__ */ jsxs22(Box22, { marginBottom: 1, flexDirection: "column", children: [
4176
- /* @__PURE__ */ jsx23(Text23, { children: "2. Enter this code:" }),
4177
- /* @__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 }) })
4178
4628
  ] }),
4179
- status === "waiting_for_authorization" && /* @__PURE__ */ jsx23(Text23, { color: "gray", marginTop: 1, children: "Your browser should open automatically." }),
4180
- status === "polling_for_token" && /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", marginTop: 1, children: [
4181
- /* @__PURE__ */ jsx23(Text23, { color: "gray", children: "Waiting for you to complete authorization in your browser..." }),
4182
- /* @__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." })
4183
4633
  ] })
4184
4634
  ] }),
4185
- status === "error" && error && /* @__PURE__ */ jsxs22(Box22, { marginY: 1, flexDirection: "column", children: [
4186
- /* @__PURE__ */ jsx23(Text23, { color: "red", children: error }),
4187
- /* @__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." })
4188
4638
  ] }),
4189
- 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..." })
4190
4640
  ] });
4191
4641
  }
4192
4642
 
4193
4643
  // src/ui/App.tsx
4194
- import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
4644
+ import { jsx as jsx26, jsxs as jsxs25 } from "react/jsx-runtime";
4195
4645
  var packageJson = require_package();
4196
4646
  function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlineTokenEphemeral }) {
4197
4647
  const { exit } = useApp2();
4198
4648
  const { stdout } = useStdout2();
4199
- const [mode, setMode] = useState19("checking");
4200
- const [token, setToken] = useState19(null);
4201
- const [input, setInput] = useState19("");
4202
- const [error, setError] = useState19(null);
4203
- const [viewer, setViewer] = useState19(null);
4204
- const [rateLimitReset, setRateLimitReset] = useState19(null);
4205
- const [wasRateLimited, setWasRateLimited] = useState19(false);
4206
- const [orgContext, setOrgContext] = useState19("personal");
4207
- const [authMethod, setAuthMethod] = useState19("pat");
4208
- const [oauthStatus, setOAuthStatus] = useState19("initializing");
4209
- const [tokenSource, setTokenSource] = useState19("pat");
4210
- const [sessionTokenOrigin, setSessionTokenOrigin] = useState19("stored");
4211
- const [deviceCodeResponse, setDeviceCodeResponse] = useState19(null);
4212
- const [oauthDeviceCode, setOauthDeviceCode] = useState19(null);
4213
- 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(() => {
4214
4664
  const cols = stdout?.columns ?? 100;
4215
4665
  const rows = stdout?.rows ?? 30;
4216
4666
  return { cols, rows };
4217
4667
  });
4218
- useEffect13(() => {
4668
+ useEffect14(() => {
4219
4669
  if (!stdout) return;
4220
4670
  const onResize = () => {
4221
4671
  const cols = stdout.columns ?? 100;
@@ -4227,7 +4677,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4227
4677
  stdout.off?.("resize", onResize);
4228
4678
  };
4229
4679
  }, [stdout]);
4230
- useEffect13(() => {
4680
+ useEffect14(() => {
4231
4681
  const env = getTokenFromEnv();
4232
4682
  const stored = getStoredToken();
4233
4683
  const source = getTokenSource();
@@ -4251,7 +4701,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4251
4701
  setMode("auth_method_selection");
4252
4702
  }
4253
4703
  }, [inlineToken2]);
4254
- useEffect13(() => {
4704
+ useEffect14(() => {
4255
4705
  if (mode !== "oauth_flow") return;
4256
4706
  (async () => {
4257
4707
  try {
@@ -4303,7 +4753,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4303
4753
  setMode("oauth_flow");
4304
4754
  }
4305
4755
  };
4306
- useEffect13(() => {
4756
+ useEffect14(() => {
4307
4757
  (async () => {
4308
4758
  if (mode !== "validating" || !token) return;
4309
4759
  const timeoutId = setTimeout(() => {
@@ -4415,7 +4865,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4415
4865
  setTokenSource("pat");
4416
4866
  setMode("auth_method_selection");
4417
4867
  };
4418
- useInput19((input2, key) => {
4868
+ useInput21((input2, key) => {
4419
4869
  if ((mode === "prompt" || mode === "auth_method_selection") && key.escape) {
4420
4870
  exit();
4421
4871
  }
@@ -4447,19 +4897,19 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4447
4897
  }
4448
4898
  });
4449
4899
  const verticalPadding = Math.floor(dims.rows * 0.05);
4450
- const header = useMemo3(() => /* @__PURE__ */ jsxs23(Box23, { flexDirection: "row", justifyContent: "space-between", marginBottom: 1, children: [
4451
- /* @__PURE__ */ jsxs23(Box23, { flexDirection: "row", gap: 1, children: [
4452
- /* @__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: [
4453
4903
  " ",
4454
4904
  "GitHub Repository Manager"
4455
4905
  ] }),
4456
- /* @__PURE__ */ jsxs23(Text24, { color: "gray", dimColor: true, children: [
4906
+ /* @__PURE__ */ jsxs25(Text26, { color: "gray", dimColor: true, children: [
4457
4907
  "v",
4458
4908
  packageJson.version
4459
4909
  ] }),
4460
- 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 " })
4461
4911
  ] }),
4462
- 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} ` })
4463
4913
  ] }), [viewer, orgContext]);
4464
4914
  if (mode === "rate_limited") {
4465
4915
  const formatResetTime = (resetTime) => {
@@ -4482,71 +4932,71 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4482
4932
  return "Unknown";
4483
4933
  }
4484
4934
  };
4485
- 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: [
4486
4936
  header,
4487
- /* @__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: [
4488
- /* @__PURE__ */ jsx24(Text24, { bold: true, color: "yellow", marginBottom: 1, children: "\u26A0\uFE0F Rate Limit Exceeded" }),
4489
- /* @__PURE__ */ jsx24(Text24, { color: "gray", marginBottom: 1, children: "You've hit GitHub's API rate limit for your token." }),
4490
- /* @__PURE__ */ jsx24(Text24, { color: "gray", marginBottom: 1, children: "This happens when you make too many requests in a short time." }),
4491
- rateLimitReset && /* @__PURE__ */ jsxs23(Box23, { marginTop: 1, marginBottom: 1, children: [
4492
- /* @__PURE__ */ jsxs23(Text24, { children: [
4493
- /* @__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:" }),
4494
4944
  " ",
4495
- /* @__PURE__ */ jsx24(Text24, { bold: true, children: formatResetTime(rateLimitReset) })
4945
+ /* @__PURE__ */ jsx26(Text26, { bold: true, children: formatResetTime(rateLimitReset) })
4496
4946
  ] }),
4497
- /* @__PURE__ */ jsxs23(Text24, { color: "gray", dimColor: true, children: [
4947
+ /* @__PURE__ */ jsxs25(Text26, { color: "gray", dimColor: true, children: [
4498
4948
  "(",
4499
4949
  new Date(rateLimitReset).toLocaleTimeString(),
4500
4950
  ")"
4501
4951
  ] })
4502
4952
  ] }),
4503
- /* @__PURE__ */ jsxs23(Box23, { marginTop: 2, flexDirection: "column", gap: 1, children: [
4504
- /* @__PURE__ */ jsx24(Text24, { bold: true, children: "What would you like to do?" }),
4505
- /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", paddingLeft: 2, children: [
4506
- /* @__PURE__ */ jsxs23(Text24, { children: [
4507
- /* @__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" }),
4508
4958
  " - Retry now ",
4509
4959
  rateLimitReset && formatResetTime(rateLimitReset) !== "Now (should be reset)" ? "(likely to fail until reset)" : "(should work now)"
4510
4960
  ] }),
4511
- /* @__PURE__ */ jsxs23(Text24, { children: [
4512
- /* @__PURE__ */ jsx24(Text24, { color: "cyan", bold: true, children: "L" }),
4961
+ /* @__PURE__ */ jsxs25(Text26, { children: [
4962
+ /* @__PURE__ */ jsx26(Text26, { color: "cyan", bold: true, children: "L" }),
4513
4963
  " - Logout and choose authentication method"
4514
4964
  ] }),
4515
- /* @__PURE__ */ jsxs23(Text24, { children: [
4516
- /* @__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" }),
4517
4967
  " - Quit application"
4518
4968
  ] })
4519
4969
  ] })
4520
4970
  ] }),
4521
- /* @__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." })
4522
4972
  ] }) })
4523
4973
  ] });
4524
4974
  }
4525
4975
  if (mode === "auth_method_selection") {
4526
- 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: [
4527
4977
  header,
4528
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", alignItems: "center", children: [
4529
- /* @__PURE__ */ jsx24(AuthMethodSelector, { onSelect: handleAuthMethodSelect }),
4530
- 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 })
4531
4981
  ] }) })
4532
4982
  ] });
4533
4983
  }
4534
4984
  if (mode === "oauth_flow") {
4535
- 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: [
4536
4986
  header,
4537
- /* @__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 }) })
4538
4988
  ] });
4539
4989
  }
4540
4990
  if (mode === "prompt") {
4541
- 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: [
4542
4992
  header,
4543
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, flexDirection: "column", children: [
4544
- /* @__PURE__ */ jsx24(Text24, { bold: true, marginBottom: 1, children: "Authentication Required" }),
4545
- /* @__PURE__ */ jsx24(Text24, { color: "gray", marginBottom: 1, children: "Enter your GitHub Personal Access Token" }),
4546
- /* @__PURE__ */ jsxs23(Box23, { children: [
4547
- /* @__PURE__ */ jsx24(Text24, { children: "Token: " }),
4548
- /* @__PURE__ */ jsx24(
4549
- 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,
4550
5000
  {
4551
5001
  value: input,
4552
5002
  onChange: setInput,
@@ -4555,30 +5005,30 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4555
5005
  }
4556
5006
  )
4557
5007
  ] }),
4558
- error && /* @__PURE__ */ jsx24(Text24, { color: "red", marginTop: 1, children: error }),
4559
- /* @__PURE__ */ jsx24(Text24, { color: "gray", dimColor: true, marginTop: 1, children: "The token will be stored securely in your local config" }),
4560
- /* @__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" })
4561
5011
  ] }) })
4562
5012
  ] });
4563
5013
  }
4564
5014
  if (mode === "validating" || mode === "checking") {
4565
- 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: [
4566
5016
  header,
4567
- /* @__PURE__ */ jsx24(Box23, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", alignItems: "center", children: [
4568
- /* @__PURE__ */ jsx24(Text24, { color: "yellow", children: "Validating token..." }),
4569
- 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" })
4570
5020
  ] }) })
4571
5021
  ] });
4572
5022
  }
4573
5023
  if (mode === "error") {
4574
- 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: [
4575
5025
  header,
4576
- /* @__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" }) })
4577
5027
  ] });
4578
5028
  }
4579
- 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: [
4580
5030
  header,
4581
- /* @__PURE__ */ jsx24(
5031
+ /* @__PURE__ */ jsx26(
4582
5032
  RepoList,
4583
5033
  {
4584
5034
  token,
@@ -4593,7 +5043,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4593
5043
  }
4594
5044
 
4595
5045
  // src/index.tsx
4596
- import { jsx as jsx25, jsxs as jsxs24 } from "react/jsx-runtime";
5046
+ import { jsx as jsx27, jsxs as jsxs26 } from "react/jsx-runtime";
4597
5047
  var argv = process.argv.slice(2);
4598
5048
  var getFlagValue = (name) => {
4599
5049
  const idx = argv.findIndex((a) => a === `--${name}` || a.startsWith(`--${name}=`));
@@ -4706,8 +5156,8 @@ var inlineToken = (() => {
4706
5156
  })();
4707
5157
  logger.debug("Rendering UI");
4708
5158
  var { unmount } = render(
4709
- /* @__PURE__ */ jsxs24(Box24, { flexDirection: "column", children: [
4710
- /* @__PURE__ */ jsx25(App, { initialOrgSlug, inlineToken, inlineTokenEphemeral: Boolean(inlineToken) }),
4711
- /* @__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" })
4712
5162
  ] })
4713
5163
  );