gh-manager-cli 1.38.0 → 1.39.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
@@ -34,7 +34,7 @@ var require_package = __commonJS({
34
34
  "package.json"(exports, module) {
35
35
  module.exports = {
36
36
  name: "gh-manager-cli",
37
- version: "1.38.0",
37
+ version: "1.39.0",
38
38
  private: false,
39
39
  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",
40
40
  license: "MIT",
@@ -115,7 +115,7 @@ var require_package = __commonJS({
115
115
  "semantic-release": "^24.2.7",
116
116
  tsup: "^8.5.0",
117
117
  typescript: "^5.9.2",
118
- vitest: "^2.1.3"
118
+ vitest: "^4.1.0"
119
119
  },
120
120
  repository: {
121
121
  type: "git",
@@ -152,12 +152,12 @@ var require_package = __commonJS({
152
152
 
153
153
  // src/index.tsx
154
154
  var import_package = __toESM(require_package(), 1);
155
- import { render, Box as Box22, Text as Text23 } from "ink";
155
+ import { render, Box as Box23, Text as Text24 } from "ink";
156
156
  import "dotenv/config";
157
157
 
158
158
  // src/ui/App.tsx
159
- import { useEffect as useEffect12, useMemo as useMemo2, useState as useState17 } from "react";
160
- import { Box as Box21, Text as Text22, useApp as useApp2, useStdout as useStdout2, useInput as useInput17 } from "ink";
159
+ import { useEffect as useEffect13, useMemo as useMemo2, useState as useState18 } from "react";
160
+ import { Box as Box22, Text as Text23, useApp as useApp2, useStdout as useStdout2, useInput as useInput18 } from "ink";
161
161
  import TextInput6 from "ink-text-input";
162
162
 
163
163
  // src/config/config.ts
@@ -406,10 +406,10 @@ async function openGitHubAuthorizationPage() {
406
406
  }
407
407
 
408
408
  // src/ui/views/RepoList.tsx
409
- import React15, { useEffect as useEffect11, useMemo, useState as useState15, useRef, useCallback } from "react";
410
- import { Box as Box18, Text as Text19, useApp, useInput as useInput15, useStdout } from "ink";
409
+ import React16, { useEffect as useEffect12, useMemo, useState as useState16, useRef, useCallback } from "react";
410
+ import { Box as Box19, Text as Text20, useApp, useInput as useInput16, useStdout } from "ink";
411
411
  import TextInput5 from "ink-text-input";
412
- import chalk13 from "chalk";
412
+ import chalk14 from "chalk";
413
413
 
414
414
  // src/services/apolloMeta.ts
415
415
  import fs2 from "fs";
@@ -580,46 +580,142 @@ function OrgSwitcher({ token, currentContext, onSelect, onClose }) {
580
580
  ] });
581
581
  }
582
582
 
583
+ // src/ui/components/modals/ArchiveFilterModal.tsx
584
+ import { useState as useState2, useEffect as useEffect2 } from "react";
585
+ import { Box as Box2, Text as Text2, useInput as useInput2 } from "ink";
586
+ import chalk2 from "chalk";
587
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
588
+ function ArchiveFilterModal({
589
+ currentFilter,
590
+ onSelect,
591
+ onCancel
592
+ }) {
593
+ const options = ["all", "unarchived", "archived"];
594
+ const [focusedOption, setFocusedOption] = useState2(currentFilter);
595
+ useEffect2(() => {
596
+ setFocusedOption(currentFilter);
597
+ }, [currentFilter]);
598
+ useInput2((input, key) => {
599
+ if (key.escape || input && input.toUpperCase() === "C") {
600
+ onCancel();
601
+ return;
602
+ }
603
+ if (key.leftArrow || key.upArrow) {
604
+ if (focusedOption === "cancel") {
605
+ const lastIndex = options.length - 1;
606
+ setFocusedOption(options[lastIndex]);
607
+ } else {
608
+ const idx = options.indexOf(focusedOption);
609
+ if (idx > 0) setFocusedOption(options[idx - 1]);
610
+ }
611
+ }
612
+ if (key.rightArrow || key.downArrow) {
613
+ if (focusedOption !== "cancel") {
614
+ const idx = options.indexOf(focusedOption);
615
+ if (idx < options.length - 1) {
616
+ setFocusedOption(options[idx + 1]);
617
+ } else {
618
+ setFocusedOption("cancel");
619
+ }
620
+ }
621
+ }
622
+ if (key.tab) {
623
+ if (focusedOption === "cancel") {
624
+ setFocusedOption(options[0]);
625
+ } else {
626
+ const idx = options.indexOf(focusedOption);
627
+ if (idx < options.length - 1) {
628
+ setFocusedOption(options[idx + 1]);
629
+ } else {
630
+ setFocusedOption("cancel");
631
+ }
632
+ }
633
+ }
634
+ if (key.return) {
635
+ if (focusedOption === "cancel") {
636
+ onCancel();
637
+ } else {
638
+ onSelect(focusedOption);
639
+ }
640
+ }
641
+ if (input) {
642
+ const u = input.toUpperCase();
643
+ if (u === "L") onSelect("all");
644
+ else if (u === "U") onSelect("unarchived");
645
+ else if (u === "R") onSelect("archived");
646
+ }
647
+ });
648
+ const getLabel = (filter) => {
649
+ switch (filter) {
650
+ case "all":
651
+ return "All Repositories";
652
+ case "unarchived":
653
+ return "Unarchived Only";
654
+ case "archived":
655
+ return "Archived Only";
656
+ }
657
+ };
658
+ const getColor = (filter) => {
659
+ if (filter === currentFilter) return "green";
660
+ return focusedOption === filter ? "cyan" : "gray";
661
+ };
662
+ return /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 45, children: [
663
+ /* @__PURE__ */ jsx2(Text2, { bold: true, children: "Archive Filter" }),
664
+ /* @__PURE__ */ jsxs2(Box2, { flexDirection: "column", marginTop: 1, children: [
665
+ options.map((option) => /* @__PURE__ */ jsx2(Box2, { paddingX: 1, children: /* @__PURE__ */ jsxs2(Text2, { children: [
666
+ focusedOption === option ? chalk2.bgCyan.black(" \u2192 ") : " ",
667
+ focusedOption === option ? chalk2[getColor(option)].bold(getLabel(option)) : chalk2[getColor(option)](getLabel(option)),
668
+ option === currentFilter && chalk2.green(" \u2713")
669
+ ] }) }, option)),
670
+ /* @__PURE__ */ jsx2(Box2, { paddingX: 1, children: /* @__PURE__ */ jsxs2(Text2, { children: [
671
+ focusedOption === "cancel" ? chalk2.bgWhite.black(" \u2192 ") : " ",
672
+ focusedOption === "cancel" ? chalk2.white.bold("Cancel") : chalk2.gray("Cancel")
673
+ ] }) })
674
+ ] }),
675
+ /* @__PURE__ */ jsx2(Box2, { marginTop: 1, children: /* @__PURE__ */ jsx2(Text2, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 L All \u2022 U Unarchived \u2022 R Archived \u2022 Esc" }) })
676
+ ] });
677
+ }
678
+
583
679
  // src/ui/components/modals/DeleteModal.tsx
584
- import { useState as useState3, useEffect as useEffect3 } from "react";
585
- import { Box as Box2, Text as Text3, useInput as useInput2 } from "ink";
680
+ import { useState as useState4, useEffect as useEffect4 } from "react";
681
+ import { Box as Box3, Text as Text4, useInput as useInput3 } from "ink";
586
682
  import TextInput from "ink-text-input";
587
- import chalk2 from "chalk";
683
+ import chalk3 from "chalk";
588
684
 
589
685
  // src/ui/components/common/SlowSpinner.tsx
590
- import { useEffect as useEffect2, useState as useState2 } from "react";
591
- import { Text as Text2 } from "ink";
592
- import { jsx as jsx2 } from "react/jsx-runtime";
686
+ import { useEffect as useEffect3, useState as useState3 } from "react";
687
+ import { Text as Text3 } from "ink";
688
+ import { jsx as jsx3 } from "react/jsx-runtime";
593
689
  function SlowSpinner({ interval = 500 } = {}) {
594
690
  const frames = ["\u280B", "\u2819", "\u2839", "\u2838", "\u283C", "\u2834", "\u2826", "\u2827", "\u2807", "\u280F"];
595
- const [frame, setFrame] = useState2(0);
596
- useEffect2(() => {
691
+ const [frame, setFrame] = useState3(0);
692
+ useEffect3(() => {
597
693
  const timer = setInterval(() => {
598
694
  setFrame((f) => (f + 1) % frames.length);
599
695
  }, interval);
600
696
  return () => clearInterval(timer);
601
697
  }, [frames.length, interval]);
602
- return /* @__PURE__ */ jsx2(Text2, { children: frames[frame] });
698
+ return /* @__PURE__ */ jsx3(Text3, { children: frames[frame] });
603
699
  }
604
700
 
605
701
  // src/ui/components/modals/DeleteModal.tsx
606
- import { Fragment, jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
702
+ import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
607
703
 
608
704
  // src/ui/components/modals/ArchiveModal.tsx
609
- import { useState as useState4 } from "react";
610
- import { Box as Box3, Text as Text4, useInput as useInput3 } from "ink";
611
- import chalk3 from "chalk";
612
- import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
613
-
614
- // src/ui/components/modals/SyncModal.tsx
615
705
  import { useState as useState5 } from "react";
616
706
  import { Box as Box4, Text as Text5, useInput as useInput4 } from "ink";
617
707
  import chalk4 from "chalk";
618
- import { Fragment as Fragment3, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
708
+ import { Fragment as Fragment2, jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
619
709
 
620
- // src/ui/components/modals/InfoModal.tsx
710
+ // src/ui/components/modals/SyncModal.tsx
711
+ import { useState as useState6 } from "react";
621
712
  import { Box as Box5, Text as Text6, useInput as useInput5 } from "ink";
622
713
  import chalk5 from "chalk";
714
+ import { Fragment as Fragment3, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
715
+
716
+ // src/ui/components/modals/InfoModal.tsx
717
+ import { Box as Box6, Text as Text7, useInput as useInput6 } from "ink";
718
+ import chalk6 from "chalk";
623
719
 
624
720
  // src/lib/utils.ts
625
721
  function truncate(str, max = 80) {
@@ -685,19 +781,19 @@ async function copyToClipboard(text) {
685
781
  }
686
782
 
687
783
  // src/ui/components/modals/InfoModal.tsx
688
- import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
689
-
690
- // src/ui/components/modals/LogoutModal.tsx
691
- import { useState as useState6 } from "react";
692
- import { Box as Box6, Text as Text7, useInput as useInput6 } from "ink";
693
- import chalk6 from "chalk";
694
784
  import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
695
785
 
696
- // src/ui/components/modals/VisibilityModal.tsx
697
- import { useState as useState7, useEffect as useEffect4 } from "react";
786
+ // src/ui/components/modals/LogoutModal.tsx
787
+ import { useState as useState7 } from "react";
698
788
  import { Box as Box7, Text as Text8, useInput as useInput7 } from "ink";
699
789
  import chalk7 from "chalk";
700
790
  import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
791
+
792
+ // src/ui/components/modals/VisibilityModal.tsx
793
+ import { useState as useState8, useEffect as useEffect5 } from "react";
794
+ import { Box as Box8, Text as Text9, useInput as useInput8 } from "ink";
795
+ import chalk8 from "chalk";
796
+ import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
701
797
  function VisibilityModal({
702
798
  currentFilter,
703
799
  isEnterprise,
@@ -705,16 +801,16 @@ function VisibilityModal({
705
801
  onCancel
706
802
  }) {
707
803
  const options = ["all", "public", "private"];
708
- const [selectedIndex, setSelectedIndex] = useState7(0);
709
- const [focusedOption, setFocusedOption] = useState7("all");
710
- useEffect4(() => {
804
+ const [selectedIndex, setSelectedIndex] = useState8(0);
805
+ const [focusedOption, setFocusedOption] = useState8("all");
806
+ useEffect5(() => {
711
807
  const currentIndex = options.indexOf(currentFilter);
712
808
  if (currentIndex !== -1) {
713
809
  setSelectedIndex(currentIndex);
714
810
  setFocusedOption(currentFilter);
715
811
  }
716
812
  }, [currentFilter]);
717
- useInput7((input, key) => {
813
+ useInput8((input, key) => {
718
814
  if (key.escape || input && input.toUpperCase() === "C") {
719
815
  onCancel();
720
816
  return;
@@ -791,44 +887,44 @@ function VisibilityModal({
791
887
  }
792
888
  return focusedOption === filter ? "cyan" : "gray";
793
889
  };
794
- return /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 45, children: [
795
- /* @__PURE__ */ jsx8(Text8, { bold: true, children: "Visibility Filter" }),
796
- /* @__PURE__ */ jsxs7(Box7, { flexDirection: "column", marginTop: 1, children: [
797
- options.map((option) => /* @__PURE__ */ jsx8(Box7, { paddingX: 1, children: /* @__PURE__ */ jsxs7(Text8, { children: [
798
- focusedOption === option ? chalk7.bgCyan.black(" \u2192 ") : " ",
799
- focusedOption === option ? chalk7[getButtonColor(option)].bold(getButtonLabel(option)) : chalk7[getButtonColor(option)](getButtonLabel(option)),
800
- option === currentFilter && chalk7.green(" \u2713")
890
+ return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 45, children: [
891
+ /* @__PURE__ */ jsx9(Text9, { bold: true, children: "Visibility Filter" }),
892
+ /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", marginTop: 1, children: [
893
+ options.map((option) => /* @__PURE__ */ jsx9(Box8, { paddingX: 1, children: /* @__PURE__ */ jsxs8(Text9, { children: [
894
+ focusedOption === option ? chalk8.bgCyan.black(" \u2192 ") : " ",
895
+ focusedOption === option ? chalk8[getButtonColor(option)].bold(getButtonLabel(option)) : chalk8[getButtonColor(option)](getButtonLabel(option)),
896
+ option === currentFilter && chalk8.green(" \u2713")
801
897
  ] }) }, option)),
802
- /* @__PURE__ */ jsx8(Box7, { paddingX: 1, children: /* @__PURE__ */ jsxs7(Text8, { children: [
803
- focusedOption === "cancel" ? chalk7.bgWhite.black(" \u2192 ") : " ",
804
- focusedOption === "cancel" ? chalk7.white.bold("Cancel") : chalk7.gray("Cancel")
898
+ /* @__PURE__ */ jsx9(Box8, { paddingX: 1, children: /* @__PURE__ */ jsxs8(Text9, { children: [
899
+ focusedOption === "cancel" ? chalk8.bgWhite.black(" \u2192 ") : " ",
900
+ focusedOption === "cancel" ? chalk8.white.bold("Cancel") : chalk8.gray("Cancel")
805
901
  ] }) })
806
902
  ] }),
807
- /* @__PURE__ */ jsx8(Box7, { marginTop: 1, children: /* @__PURE__ */ jsx8(Text8, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 A/P/R \u2022 Esc" }) })
903
+ /* @__PURE__ */ jsx9(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx9(Text9, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 A/P/R \u2022 Esc" }) })
808
904
  ] });
809
905
  }
810
906
 
811
907
  // src/ui/components/modals/SortModal.tsx
812
- import { useState as useState8, useEffect as useEffect5 } from "react";
813
- import { Box as Box8, Text as Text9, useInput as useInput8 } from "ink";
814
- import chalk8 from "chalk";
815
- import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
908
+ import { useState as useState9, useEffect as useEffect6 } from "react";
909
+ import { Box as Box9, Text as Text10, useInput as useInput9 } from "ink";
910
+ import chalk9 from "chalk";
911
+ import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
816
912
  function SortModal({
817
913
  currentSort,
818
914
  onSelect,
819
915
  onCancel
820
916
  }) {
821
917
  const options = ["updated", "pushed", "name", "stars"];
822
- const [selectedIndex, setSelectedIndex] = useState8(0);
823
- const [focusedOption, setFocusedOption] = useState8("updated");
824
- useEffect5(() => {
918
+ const [selectedIndex, setSelectedIndex] = useState9(0);
919
+ const [focusedOption, setFocusedOption] = useState9("updated");
920
+ useEffect6(() => {
825
921
  const currentIndex = options.indexOf(currentSort);
826
922
  if (currentIndex !== -1) {
827
923
  setSelectedIndex(currentIndex);
828
924
  setFocusedOption(currentSort);
829
925
  }
830
926
  }, [currentSort]);
831
- useInput8((input, key) => {
927
+ useInput9((input, key) => {
832
928
  if (key.escape || input && input.toUpperCase() === "C") {
833
929
  onCancel();
834
930
  return;
@@ -921,28 +1017,28 @@ function SortModal({
921
1017
  }
922
1018
  return focusedOption === sort ? "cyan" : "gray";
923
1019
  };
924
- return /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 40, children: [
925
- /* @__PURE__ */ jsx9(Text9, { bold: true, children: "Sort By" }),
926
- /* @__PURE__ */ jsxs8(Box8, { flexDirection: "column", marginTop: 1, children: [
927
- options.map((option) => /* @__PURE__ */ jsx9(Box8, { paddingX: 1, children: /* @__PURE__ */ jsxs8(Text9, { children: [
928
- focusedOption === option ? chalk8.bgCyan.black(" \u2192 ") : " ",
929
- focusedOption === option ? chalk8[getButtonColor(option)].bold(getButtonLabel(option)) : chalk8[getButtonColor(option)](getButtonLabel(option)),
930
- option === currentSort && chalk8.green(" \u2713")
1020
+ return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 40, children: [
1021
+ /* @__PURE__ */ jsx10(Text10, { bold: true, children: "Sort By" }),
1022
+ /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", marginTop: 1, children: [
1023
+ options.map((option) => /* @__PURE__ */ jsx10(Box9, { paddingX: 1, children: /* @__PURE__ */ jsxs9(Text10, { children: [
1024
+ focusedOption === option ? chalk9.bgCyan.black(" \u2192 ") : " ",
1025
+ focusedOption === option ? chalk9[getButtonColor(option)].bold(getButtonLabel(option)) : chalk9[getButtonColor(option)](getButtonLabel(option)),
1026
+ option === currentSort && chalk9.green(" \u2713")
931
1027
  ] }) }, option)),
932
- /* @__PURE__ */ jsx9(Box8, { paddingX: 1, children: /* @__PURE__ */ jsxs8(Text9, { children: [
933
- focusedOption === "cancel" ? chalk8.bgWhite.black(" \u2192 ") : " ",
934
- focusedOption === "cancel" ? chalk8.white.bold("Cancel") : chalk8.gray("Cancel")
1028
+ /* @__PURE__ */ jsx10(Box9, { paddingX: 1, children: /* @__PURE__ */ jsxs9(Text10, { children: [
1029
+ focusedOption === "cancel" ? chalk9.bgWhite.black(" \u2192 ") : " ",
1030
+ focusedOption === "cancel" ? chalk9.white.bold("Cancel") : chalk9.gray("Cancel")
935
1031
  ] }) })
936
1032
  ] }),
937
- /* @__PURE__ */ jsx9(Box8, { marginTop: 1, children: /* @__PURE__ */ jsx9(Text9, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 U/P/N/S \u2022 Esc" }) })
1033
+ /* @__PURE__ */ jsx10(Box9, { marginTop: 1, children: /* @__PURE__ */ jsx10(Text10, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 U/P/N/S \u2022 Esc" }) })
938
1034
  ] });
939
1035
  }
940
1036
 
941
1037
  // src/ui/components/modals/SortDirectionModal.tsx
942
- import { useState as useState9, useEffect as useEffect6 } from "react";
943
- import { Box as Box9, Text as Text10, useInput as useInput9 } from "ink";
944
- import chalk9 from "chalk";
945
- import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
1038
+ import { useState as useState10, useEffect as useEffect7 } from "react";
1039
+ import { Box as Box10, Text as Text11, useInput as useInput10 } from "ink";
1040
+ import chalk10 from "chalk";
1041
+ import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
946
1042
  function SortDirectionModal({
947
1043
  currentDirection,
948
1044
  currentSortKey,
@@ -950,11 +1046,11 @@ function SortDirectionModal({
950
1046
  onCancel
951
1047
  }) {
952
1048
  const options = ["desc", "asc"];
953
- const [focusedOption, setFocusedOption] = useState9(currentDirection);
954
- useEffect6(() => {
1049
+ const [focusedOption, setFocusedOption] = useState10(currentDirection);
1050
+ useEffect7(() => {
955
1051
  setFocusedOption(currentDirection);
956
1052
  }, [currentDirection]);
957
- useInput9((input, key) => {
1053
+ useInput10((input, key) => {
958
1054
  if (key.escape || input && input.toUpperCase() === "C") {
959
1055
  onCancel();
960
1056
  return;
@@ -1056,39 +1152,39 @@ function SortDirectionModal({
1056
1152
  return "Stars";
1057
1153
  }
1058
1154
  };
1059
- return /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 45, children: [
1060
- /* @__PURE__ */ jsx10(Text10, { bold: true, children: "Sort Direction" }),
1061
- /* @__PURE__ */ jsxs9(Text10, { color: "gray", dimColor: true, children: [
1155
+ return /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, width: 45, children: [
1156
+ /* @__PURE__ */ jsx11(Text11, { bold: true, children: "Sort Direction" }),
1157
+ /* @__PURE__ */ jsxs10(Text11, { color: "gray", dimColor: true, children: [
1062
1158
  "Sorting by: ",
1063
1159
  formatSortKey()
1064
1160
  ] }),
1065
- /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", marginTop: 1, children: [
1066
- options.map((option) => /* @__PURE__ */ jsx10(Box9, { paddingX: 1, marginBottom: 0, children: /* @__PURE__ */ jsxs9(Box9, { flexDirection: "column", children: [
1067
- /* @__PURE__ */ jsxs9(Text10, { children: [
1068
- focusedOption === option ? chalk9.bgCyan.black(" \u2192 ") : " ",
1069
- focusedOption === option ? chalk9[getButtonColor(option)].bold(getButtonLabel(option)) : chalk9[getButtonColor(option)](getButtonLabel(option)),
1070
- option === currentDirection && chalk9.green(" \u2713")
1161
+ /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", marginTop: 1, children: [
1162
+ options.map((option) => /* @__PURE__ */ jsx11(Box10, { paddingX: 1, marginBottom: 0, children: /* @__PURE__ */ jsxs10(Box10, { flexDirection: "column", children: [
1163
+ /* @__PURE__ */ jsxs10(Text11, { children: [
1164
+ focusedOption === option ? chalk10.bgCyan.black(" \u2192 ") : " ",
1165
+ focusedOption === option ? chalk10[getButtonColor(option)].bold(getButtonLabel(option)) : chalk10[getButtonColor(option)](getButtonLabel(option)),
1166
+ option === currentDirection && chalk10.green(" \u2713")
1071
1167
  ] }),
1072
- /* @__PURE__ */ jsxs9(Text10, { color: "gray", dimColor: true, children: [
1168
+ /* @__PURE__ */ jsxs10(Text11, { color: "gray", dimColor: true, children: [
1073
1169
  " ",
1074
1170
  getButtonDescription(option)
1075
1171
  ] })
1076
1172
  ] }) }, option)),
1077
- /* @__PURE__ */ jsx10(Box9, { paddingX: 1, marginTop: 1, children: /* @__PURE__ */ jsxs9(Text10, { children: [
1078
- focusedOption === "cancel" ? chalk9.bgWhite.black(" \u2192 ") : " ",
1079
- focusedOption === "cancel" ? chalk9.white.bold("Cancel") : chalk9.gray("Cancel")
1173
+ /* @__PURE__ */ jsx11(Box10, { paddingX: 1, marginTop: 1, children: /* @__PURE__ */ jsxs10(Text11, { children: [
1174
+ focusedOption === "cancel" ? chalk10.bgWhite.black(" \u2192 ") : " ",
1175
+ focusedOption === "cancel" ? chalk10.white.bold("Cancel") : chalk10.gray("Cancel")
1080
1176
  ] }) })
1081
1177
  ] }),
1082
- /* @__PURE__ */ jsx10(Box9, { marginTop: 1, children: /* @__PURE__ */ jsx10(Text10, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 A/D \u2022 Esc" }) })
1178
+ /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text11, { color: "gray", dimColor: true, children: "\u2191\u2193/Enter \u2022 A/D \u2022 Esc" }) })
1083
1179
  ] });
1084
1180
  }
1085
1181
 
1086
1182
  // src/ui/components/modals/ChangeVisibilityModal.tsx
1087
- import { useState as useState10, useEffect as useEffect7 } from "react";
1088
- import { Box as Box10, Text as Text11, useInput as useInput10 } from "ink";
1183
+ import { useState as useState11, useEffect as useEffect8 } from "react";
1184
+ import { Box as Box11, Text as Text12, useInput as useInput11 } from "ink";
1089
1185
  import TextInput2 from "ink-text-input";
1090
- import chalk10 from "chalk";
1091
- import { Fragment as Fragment4, jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
1186
+ import chalk11 from "chalk";
1187
+ import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
1092
1188
  var ChangeVisibilityModal = ({
1093
1189
  isOpen,
1094
1190
  repoName,
@@ -1111,17 +1207,17 @@ var ChangeVisibilityModal = ({
1111
1207
  return ["PUBLIC"];
1112
1208
  };
1113
1209
  const availableOptions = getAvailableOptions();
1114
- const [selectedOptionIndex, setSelectedOptionIndex] = useState10(0);
1115
- const [focusedButton, setFocusedButton] = useState10(isFork ? "cancel" : "option");
1210
+ const [selectedOptionIndex, setSelectedOptionIndex] = useState11(0);
1211
+ const [focusedButton, setFocusedButton] = useState11(isFork ? "cancel" : "option");
1116
1212
  const changing = externalChanging ?? false;
1117
1213
  const error = externalError ?? null;
1118
- useEffect7(() => {
1214
+ useEffect8(() => {
1119
1215
  if (isOpen) {
1120
1216
  setSelectedOptionIndex(0);
1121
1217
  setFocusedButton(isFork ? "cancel" : "option");
1122
1218
  }
1123
1219
  }, [isOpen, isFork]);
1124
- useInput10((input, key) => {
1220
+ useInput11((input, key) => {
1125
1221
  if (!isOpen) return;
1126
1222
  if (key.escape || input?.toLowerCase() === "c") {
1127
1223
  onClose();
@@ -1193,8 +1289,8 @@ var ChangeVisibilityModal = ({
1193
1289
  }
1194
1290
  };
1195
1291
  const borderColor = isFork ? "red" : getVisibilityColor(currentVisibility);
1196
- return /* @__PURE__ */ jsxs10(
1197
- Box10,
1292
+ return /* @__PURE__ */ jsxs11(
1293
+ Box11,
1198
1294
  {
1199
1295
  flexDirection: "column",
1200
1296
  borderStyle: "round",
@@ -1203,14 +1299,14 @@ var ChangeVisibilityModal = ({
1203
1299
  paddingY: 2,
1204
1300
  width: 80,
1205
1301
  children: [
1206
- /* @__PURE__ */ jsx11(Text11, { bold: true, children: isFork ? "Visibility Change Not Available" : "Change Repository Visibility" }),
1207
- isFork ? /* @__PURE__ */ jsxs10(Fragment4, { children: [
1208
- /* @__PURE__ */ jsx11(Text11, { color: "red", children: "\u26A0\uFE0F Cannot change visibility of forked repositories" }),
1209
- /* @__PURE__ */ jsx11(Box10, { height: 1, children: /* @__PURE__ */ jsx11(Text11, { children: " " }) }),
1210
- /* @__PURE__ */ jsx11(Text11, { children: repoName }),
1211
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text11, { children: "GitHub does not allow changing the visibility of forked repositories. The fork must have the same visibility as its parent repository." }) }),
1212
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsx11(
1213
- Box10,
1302
+ /* @__PURE__ */ jsx12(Text12, { bold: true, children: isFork ? "Visibility Change Not Available" : "Change Repository Visibility" }),
1303
+ isFork ? /* @__PURE__ */ jsxs11(Fragment4, { children: [
1304
+ /* @__PURE__ */ jsx12(Text12, { color: "red", children: "\u26A0\uFE0F Cannot change visibility of forked repositories" }),
1305
+ /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1306
+ /* @__PURE__ */ jsx12(Text12, { children: repoName }),
1307
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(Text12, { children: "GitHub does not allow changing the visibility of forked repositories. The fork must have the same visibility as its parent repository." }) }),
1308
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsx12(
1309
+ Box11,
1214
1310
  {
1215
1311
  borderStyle: "round",
1216
1312
  borderColor: "white",
@@ -1219,23 +1315,23 @@ var ChangeVisibilityModal = ({
1219
1315
  alignItems: "center",
1220
1316
  justifyContent: "center",
1221
1317
  flexDirection: "column",
1222
- children: /* @__PURE__ */ jsx11(Text11, { children: chalk10.bgGray.white.bold(" Cancel ") })
1318
+ children: /* @__PURE__ */ jsx12(Text12, { children: chalk11.bgGray.white.bold(" Cancel ") })
1223
1319
  }
1224
1320
  ) }),
1225
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsx11(Text11, { color: "gray", children: "Press Enter to Cancel \u2022 C to cancel" }) })
1226
- ] }) : /* @__PURE__ */ jsxs10(Fragment4, { children: [
1227
- /* @__PURE__ */ jsx11(Text11, { color: borderColor, children: "\u26A0\uFE0F Change repository visibility?" }),
1228
- /* @__PURE__ */ jsx11(Box10, { height: 1, children: /* @__PURE__ */ jsx11(Text11, { children: " " }) }),
1229
- /* @__PURE__ */ jsx11(Text11, { children: repoName }),
1230
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsxs10(Text11, { children: [
1321
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "Press Enter to Cancel \u2022 C to cancel" }) })
1322
+ ] }) : /* @__PURE__ */ jsxs11(Fragment4, { children: [
1323
+ /* @__PURE__ */ jsx12(Text12, { color: borderColor, children: "\u26A0\uFE0F Change repository visibility?" }),
1324
+ /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1325
+ /* @__PURE__ */ jsx12(Text12, { children: repoName }),
1326
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsxs11(Text12, { children: [
1231
1327
  "Current visibility:",
1232
1328
  " ",
1233
- /* @__PURE__ */ jsx11(Text11, { color: getVisibilityColor(currentVisibility), children: getVisibilityLabel(currentVisibility) })
1329
+ /* @__PURE__ */ jsx12(Text12, { color: getVisibilityColor(currentVisibility), children: getVisibilityLabel(currentVisibility) })
1234
1330
  ] }) }),
1235
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text11, { children: "Change to:" }) }),
1236
- /* @__PURE__ */ jsxs10(Box10, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 3, children: [
1237
- availableOptions.map((option, index) => /* @__PURE__ */ jsx11(
1238
- Box10,
1331
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(Text12, { children: "Change to:" }) }),
1332
+ /* @__PURE__ */ jsxs11(Box11, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 3, children: [
1333
+ availableOptions.map((option, index) => /* @__PURE__ */ jsx12(
1334
+ Box11,
1239
1335
  {
1240
1336
  borderStyle: "round",
1241
1337
  borderColor: focusedButton === "option" && selectedOptionIndex === index ? getVisibilityColor(option) : "gray",
@@ -1244,12 +1340,12 @@ var ChangeVisibilityModal = ({
1244
1340
  alignItems: "center",
1245
1341
  justifyContent: "center",
1246
1342
  flexDirection: "column",
1247
- children: /* @__PURE__ */ jsx11(Text11, { children: focusedButton === "option" && selectedOptionIndex === index ? chalk10[`bg${getVisibilityLabel(option) === "Public" ? "Green" : getVisibilityLabel(option) === "Private" ? "Yellow" : "Cyan"}`].black.bold(` ${getVisibilityLabel(option)} `) : chalk10[getVisibilityColor(option)](getVisibilityLabel(option)) })
1343
+ children: /* @__PURE__ */ jsx12(Text12, { children: focusedButton === "option" && selectedOptionIndex === index ? chalk11[`bg${getVisibilityLabel(option) === "Public" ? "Green" : getVisibilityLabel(option) === "Private" ? "Yellow" : "Cyan"}`].black.bold(` ${getVisibilityLabel(option)} `) : chalk11[getVisibilityColor(option)](getVisibilityLabel(option)) })
1248
1344
  },
1249
1345
  option
1250
1346
  )),
1251
- /* @__PURE__ */ jsx11(
1252
- Box10,
1347
+ /* @__PURE__ */ jsx12(
1348
+ Box11,
1253
1349
  {
1254
1350
  borderStyle: "round",
1255
1351
  borderColor: focusedButton === "cancel" ? "white" : "gray",
@@ -1258,18 +1354,18 @@ var ChangeVisibilityModal = ({
1258
1354
  alignItems: "center",
1259
1355
  justifyContent: "center",
1260
1356
  flexDirection: "column",
1261
- children: /* @__PURE__ */ jsx11(Text11, { children: focusedButton === "cancel" ? chalk10.bgGray.white.bold(" Cancel ") : chalk10.gray.bold("Cancel") })
1357
+ children: /* @__PURE__ */ jsx12(Text12, { children: focusedButton === "cancel" ? chalk11.bgGray.white.bold(" Cancel ") : chalk11.gray.bold("Cancel") })
1262
1358
  }
1263
1359
  )
1264
1360
  ] }),
1265
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs10(Text11, { color: "gray", children: [
1361
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs11(Text12, { color: "gray", children: [
1266
1362
  availableOptions.length > 1 ? "\u2191\u2193 Select Option \u2022 " : "",
1267
1363
  "\u2190 \u2192 Navigate \u2022 Press Enter to ",
1268
1364
  focusedButton === "option" ? "Change" : "Cancel",
1269
1365
  " \u2022 Y to confirm \u2022 C to cancel"
1270
1366
  ] }) })
1271
1367
  ] }),
1272
- /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsx11(
1368
+ /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(
1273
1369
  TextInput2,
1274
1370
  {
1275
1371
  value: "",
@@ -1284,23 +1380,23 @@ var ChangeVisibilityModal = ({
1284
1380
  }
1285
1381
  }
1286
1382
  ) }),
1287
- error && /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text11, { color: "magenta", children: error }) }),
1288
- changing && /* @__PURE__ */ jsx11(Box10, { marginTop: 1, children: /* @__PURE__ */ jsx11(Text11, { color: "yellow", children: "Changing visibility..." }) })
1383
+ error && /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(Text12, { color: "magenta", children: error }) }),
1384
+ changing && /* @__PURE__ */ jsx12(Box11, { marginTop: 1, children: /* @__PURE__ */ jsx12(Text12, { color: "yellow", children: "Changing visibility..." }) })
1289
1385
  ]
1290
1386
  }
1291
1387
  );
1292
1388
  };
1293
1389
 
1294
1390
  // src/ui/components/modals/CopyUrlModal.tsx
1295
- import { useState as useState11 } from "react";
1296
- import { Box as Box11, Text as Text12, useInput as useInput11 } from "ink";
1297
- import chalk11 from "chalk";
1298
- import { Fragment as Fragment5, jsx as jsx12, jsxs as jsxs11 } from "react/jsx-runtime";
1391
+ import { useState as useState12 } from "react";
1392
+ import { Box as Box12, Text as Text13, useInput as useInput12 } from "ink";
1393
+ import chalk12 from "chalk";
1394
+ import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
1299
1395
  function CopyUrlModal({ repo, terminalWidth, onClose, onCopy }) {
1300
- const [copyError, setCopyError] = useState11(null);
1301
- const [selectedType, setSelectedType] = useState11("SSH");
1396
+ const [copyError, setCopyError] = useState12(null);
1397
+ const [selectedType, setSelectedType] = useState12("SSH");
1302
1398
  const urlTypes = ["SSH", "HTTPS"];
1303
- useInput11((input, key) => {
1399
+ useInput12((input, key) => {
1304
1400
  if (!repo) return;
1305
1401
  const ch = input?.toLowerCase();
1306
1402
  if (key.escape || ch === "c" || ch === "q") {
@@ -1345,7 +1441,7 @@ function CopyUrlModal({ repo, terminalWidth, onClose, onCopy }) {
1345
1441
  }
1346
1442
  });
1347
1443
  if (!repo) {
1348
- return /* @__PURE__ */ jsx12(Text12, { color: "red", children: "No repository selected." });
1444
+ return /* @__PURE__ */ jsx13(Text13, { color: "red", children: "No repository selected." });
1349
1445
  }
1350
1446
  const sshUrl = `git@github.com:${repo.nameWithOwner}.git`;
1351
1447
  const httpsUrl = `https://github.com/${repo.nameWithOwner}.git`;
@@ -1359,8 +1455,8 @@ function CopyUrlModal({ repo, terminalWidth, onClose, onCopy }) {
1359
1455
  setCopyError(`Failed to copy ${type} URL: ${message}`);
1360
1456
  }
1361
1457
  };
1362
- return /* @__PURE__ */ jsxs11(
1363
- Box11,
1458
+ return /* @__PURE__ */ jsxs12(
1459
+ Box12,
1364
1460
  {
1365
1461
  flexDirection: "column",
1366
1462
  borderStyle: "round",
@@ -1369,48 +1465,48 @@ function CopyUrlModal({ repo, terminalWidth, onClose, onCopy }) {
1369
1465
  paddingY: 2,
1370
1466
  width: Math.min(terminalWidth - 8, 80),
1371
1467
  children: [
1372
- /* @__PURE__ */ jsx12(Text12, { bold: true, color: "blue", children: "Copy Repository URL" }),
1373
- /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1374
- /* @__PURE__ */ jsx12(Text12, { children: chalk11.bold(repo.nameWithOwner) }),
1375
- /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1376
- /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "SSH URL:" }),
1377
- /* @__PURE__ */ jsx12(
1378
- Box11,
1468
+ /* @__PURE__ */ jsx13(Text13, { bold: true, color: "blue", children: "Copy Repository URL" }),
1469
+ /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1470
+ /* @__PURE__ */ jsx13(Text13, { children: chalk12.bold(repo.nameWithOwner) }),
1471
+ /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1472
+ /* @__PURE__ */ jsx13(Text13, { color: "gray", children: "SSH URL:" }),
1473
+ /* @__PURE__ */ jsx13(
1474
+ Box12,
1379
1475
  {
1380
1476
  paddingX: 2,
1381
1477
  paddingY: 1,
1382
1478
  borderStyle: "single",
1383
1479
  borderColor: selectedType === "SSH" ? "blue" : "gray",
1384
- children: /* @__PURE__ */ jsxs11(Text12, { color: selectedType === "SSH" ? "blue" : void 0, children: [
1480
+ children: /* @__PURE__ */ jsxs12(Text13, { color: selectedType === "SSH" ? "blue" : void 0, children: [
1385
1481
  selectedType === "SSH" ? "\u25B6 " : " ",
1386
1482
  sshUrl
1387
1483
  ] })
1388
1484
  }
1389
1485
  ),
1390
- /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1391
- /* @__PURE__ */ jsx12(Text12, { color: "gray", children: "HTTPS URL:" }),
1392
- /* @__PURE__ */ jsx12(
1393
- Box11,
1486
+ /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1487
+ /* @__PURE__ */ jsx13(Text13, { color: "gray", children: "HTTPS URL:" }),
1488
+ /* @__PURE__ */ jsx13(
1489
+ Box12,
1394
1490
  {
1395
1491
  paddingX: 2,
1396
1492
  paddingY: 1,
1397
1493
  borderStyle: "single",
1398
1494
  borderColor: selectedType === "HTTPS" ? "blue" : "gray",
1399
- children: /* @__PURE__ */ jsxs11(Text12, { color: selectedType === "HTTPS" ? "blue" : void 0, children: [
1495
+ children: /* @__PURE__ */ jsxs12(Text13, { color: selectedType === "HTTPS" ? "blue" : void 0, children: [
1400
1496
  selectedType === "HTTPS" ? "\u25B6 " : " ",
1401
1497
  httpsUrl
1402
1498
  ] })
1403
1499
  }
1404
1500
  ),
1405
- /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1406
- /* @__PURE__ */ jsxs11(Text12, { color: "gray", children: [
1501
+ /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1502
+ /* @__PURE__ */ jsxs12(Text13, { color: "gray", children: [
1407
1503
  "\u2191\u2193 Select \u2022 Enter/Y to copy ",
1408
1504
  selectedType,
1409
1505
  " \u2022 S copy SSH \u2022 H copy HTTPS \u2022 Esc/Q/C to close"
1410
1506
  ] }),
1411
- copyError && /* @__PURE__ */ jsxs11(Fragment5, { children: [
1412
- /* @__PURE__ */ jsx12(Box11, { height: 1, children: /* @__PURE__ */ jsx12(Text12, { children: " " }) }),
1413
- /* @__PURE__ */ jsx12(Text12, { color: "red", children: copyError })
1507
+ copyError && /* @__PURE__ */ jsxs12(Fragment5, { children: [
1508
+ /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1509
+ /* @__PURE__ */ jsx13(Text13, { color: "red", children: copyError })
1414
1510
  ] })
1415
1511
  ]
1416
1512
  }
@@ -1418,21 +1514,21 @@ function CopyUrlModal({ repo, terminalWidth, onClose, onCopy }) {
1418
1514
  }
1419
1515
 
1420
1516
  // src/ui/components/modals/RenameModal.tsx
1421
- import { useState as useState12, useEffect as useEffect8 } from "react";
1422
- import { Box as Box12, Text as Text13, useInput as useInput12 } from "ink";
1517
+ import { useState as useState13, useEffect as useEffect9 } from "react";
1518
+ import { Box as Box13, Text as Text14, useInput as useInput13 } from "ink";
1423
1519
  import TextInput3 from "ink-text-input";
1424
- import { Fragment as Fragment6, jsx as jsx13, jsxs as jsxs12 } from "react/jsx-runtime";
1520
+ import { Fragment as Fragment6, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
1425
1521
  function RenameModal({ repo, onRename, onCancel }) {
1426
- const [newName, setNewName] = useState12("");
1427
- const [renaming, setRenaming] = useState12(false);
1428
- const [renameError, setRenameError] = useState12(null);
1429
- useEffect8(() => {
1522
+ const [newName, setNewName] = useState13("");
1523
+ const [renaming, setRenaming] = useState13(false);
1524
+ const [renameError, setRenameError] = useState13(null);
1525
+ useEffect9(() => {
1430
1526
  if (repo) {
1431
1527
  setNewName(repo.name);
1432
1528
  setRenameError(null);
1433
1529
  }
1434
1530
  }, [repo]);
1435
- useInput12((input, key) => {
1531
+ useInput13((input, key) => {
1436
1532
  if (renaming) return;
1437
1533
  if (key.escape) {
1438
1534
  onCancel();
@@ -1463,8 +1559,8 @@ function RenameModal({ repo, onRename, onCancel }) {
1463
1559
  if (!repo) return null;
1464
1560
  const owner = repo.nameWithOwner.split("/")[0];
1465
1561
  const isDisabled = !newName.trim() || newName === repo.name;
1466
- return /* @__PURE__ */ jsxs12(
1467
- Box12,
1562
+ return /* @__PURE__ */ jsxs13(
1563
+ Box13,
1468
1564
  {
1469
1565
  flexDirection: "column",
1470
1566
  borderStyle: "round",
@@ -1473,20 +1569,20 @@ function RenameModal({ repo, onRename, onCancel }) {
1473
1569
  paddingY: 2,
1474
1570
  width: 80,
1475
1571
  children: [
1476
- /* @__PURE__ */ jsx13(Text13, { bold: true, color: "cyan", children: "Rename Repository" }),
1477
- /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1478
- /* @__PURE__ */ jsxs12(Text13, { color: "gray", children: [
1572
+ /* @__PURE__ */ jsx14(Text14, { bold: true, color: "cyan", children: "Rename Repository" }),
1573
+ /* @__PURE__ */ jsx14(Box13, { height: 1, children: /* @__PURE__ */ jsx14(Text14, { children: " " }) }),
1574
+ /* @__PURE__ */ jsxs13(Text14, { color: "gray", children: [
1479
1575
  "Current: ",
1480
1576
  repo.nameWithOwner
1481
1577
  ] }),
1482
- /* @__PURE__ */ jsx13(Box12, { height: 1, children: /* @__PURE__ */ jsx13(Text13, { children: " " }) }),
1483
- /* @__PURE__ */ jsx13(Text13, { children: "New name:" }),
1484
- /* @__PURE__ */ jsxs12(Box12, { flexDirection: "row", alignItems: "center", children: [
1485
- /* @__PURE__ */ jsxs12(Text13, { children: [
1578
+ /* @__PURE__ */ jsx14(Box13, { height: 1, children: /* @__PURE__ */ jsx14(Text14, { children: " " }) }),
1579
+ /* @__PURE__ */ jsx14(Text14, { children: "New name:" }),
1580
+ /* @__PURE__ */ jsxs13(Box13, { flexDirection: "row", alignItems: "center", children: [
1581
+ /* @__PURE__ */ jsxs13(Text14, { children: [
1486
1582
  owner,
1487
1583
  "/"
1488
1584
  ] }),
1489
- /* @__PURE__ */ jsx13(
1585
+ /* @__PURE__ */ jsx14(
1490
1586
  TextInput3,
1491
1587
  {
1492
1588
  value: newName,
@@ -1496,24 +1592,24 @@ function RenameModal({ repo, onRename, onCancel }) {
1496
1592
  }
1497
1593
  )
1498
1594
  ] }),
1499
- renaming ? /* @__PURE__ */ jsx13(Box12, { marginTop: 2, justifyContent: "center", children: /* @__PURE__ */ jsxs12(Box12, { flexDirection: "row", children: [
1500
- /* @__PURE__ */ jsx13(Box12, { marginRight: 1, children: /* @__PURE__ */ jsx13(SlowSpinner, {}) }),
1501
- /* @__PURE__ */ jsx13(Text13, { color: "cyan", children: "Renaming repository..." })
1502
- ] }) }) : /* @__PURE__ */ jsxs12(Fragment6, { children: [
1503
- /* @__PURE__ */ jsx13(Box12, { marginTop: 2, children: /* @__PURE__ */ jsx13(Text13, { color: "gray", children: isDisabled ? "Enter a different name to rename" : `Press Enter to rename to "${newName}"` }) }),
1504
- /* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(Text13, { color: "gray", children: "Press Esc to cancel" }) })
1595
+ renaming ? /* @__PURE__ */ jsx14(Box13, { marginTop: 2, justifyContent: "center", children: /* @__PURE__ */ jsxs13(Box13, { flexDirection: "row", children: [
1596
+ /* @__PURE__ */ jsx14(Box13, { marginRight: 1, children: /* @__PURE__ */ jsx14(SlowSpinner, {}) }),
1597
+ /* @__PURE__ */ jsx14(Text14, { color: "cyan", children: "Renaming repository..." })
1598
+ ] }) }) : /* @__PURE__ */ jsxs13(Fragment6, { children: [
1599
+ /* @__PURE__ */ jsx14(Box13, { marginTop: 2, children: /* @__PURE__ */ jsx14(Text14, { color: "gray", children: isDisabled ? "Enter a different name to rename" : `Press Enter to rename to "${newName}"` }) }),
1600
+ /* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(Text14, { color: "gray", children: "Press Esc to cancel" }) })
1505
1601
  ] }),
1506
- renameError && /* @__PURE__ */ jsx13(Box12, { marginTop: 1, children: /* @__PURE__ */ jsx13(Text13, { color: "red", children: renameError }) })
1602
+ renameError && /* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(Text14, { color: "red", children: renameError }) })
1507
1603
  ]
1508
1604
  }
1509
1605
  );
1510
1606
  }
1511
1607
 
1512
1608
  // src/ui/components/modals/StarModal.tsx
1513
- import { useEffect as useEffect9, useState as useState13 } from "react";
1514
- import { Box as Box13, Text as Text14 } from "ink";
1515
- import { useInput as useInput13 } from "ink";
1516
- import { Fragment as Fragment7, jsx as jsx14, jsxs as jsxs13 } from "react/jsx-runtime";
1609
+ import { useEffect as useEffect10, useState as useState14 } from "react";
1610
+ import { Box as Box14, Text as Text15 } from "ink";
1611
+ import { useInput as useInput14 } from "ink";
1612
+ import { Fragment as Fragment7, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
1517
1613
  function StarModal({
1518
1614
  visible,
1519
1615
  repo,
@@ -1523,8 +1619,8 @@ function StarModal({
1523
1619
  isStarring = false,
1524
1620
  error = null
1525
1621
  }) {
1526
- const [focusedButton, setFocusedButton] = useState13("cancel");
1527
- useInput13((input, key) => {
1622
+ const [focusedButton, setFocusedButton] = useState14("cancel");
1623
+ useInput14((input, key) => {
1528
1624
  if (!visible) return;
1529
1625
  if (key.escape || input === "c" || input === "C") {
1530
1626
  onCancel();
@@ -1549,7 +1645,7 @@ function StarModal({
1549
1645
  onConfirm();
1550
1646
  }
1551
1647
  });
1552
- useEffect9(() => {
1648
+ useEffect10(() => {
1553
1649
  if (visible) {
1554
1650
  setFocusedButton("cancel");
1555
1651
  }
@@ -1558,8 +1654,8 @@ function StarModal({
1558
1654
  const action = isStarred ? "Unstar" : "Star";
1559
1655
  const actionLower = isStarred ? "unstar" : "star";
1560
1656
  const actionGerund = isStarred ? "Unstarring" : "Starring";
1561
- return /* @__PURE__ */ jsxs13(
1562
- Box13,
1657
+ return /* @__PURE__ */ jsxs14(
1658
+ Box14,
1563
1659
  {
1564
1660
  flexDirection: "column",
1565
1661
  borderStyle: "round",
@@ -1568,36 +1664,36 @@ function StarModal({
1568
1664
  paddingY: 1,
1569
1665
  marginTop: 1,
1570
1666
  children: [
1571
- /* @__PURE__ */ jsx14(Box13, { marginBottom: 1, children: /* @__PURE__ */ jsxs13(Text14, { bold: true, color: "yellow", children: [
1667
+ /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsxs14(Text15, { bold: true, color: "yellow", children: [
1572
1668
  "\u2B50 ",
1573
1669
  action,
1574
1670
  " Repository"
1575
1671
  ] }) }),
1576
- /* @__PURE__ */ jsx14(Box13, { marginBottom: 1, children: /* @__PURE__ */ jsxs13(Text14, { children: [
1672
+ /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsxs14(Text15, { children: [
1577
1673
  "Are you sure you want to ",
1578
1674
  actionLower,
1579
1675
  " ",
1580
- /* @__PURE__ */ jsx14(Text14, { bold: true, color: "cyan", children: repo.nameWithOwner }),
1676
+ /* @__PURE__ */ jsx15(Text15, { bold: true, color: "cyan", children: repo.nameWithOwner }),
1581
1677
  "?"
1582
1678
  ] }) }),
1583
- repo.description && /* @__PURE__ */ jsx14(Box13, { marginBottom: 1, children: /* @__PURE__ */ jsx14(Text14, { dimColor: true, wrap: "wrap", children: repo.description }) }),
1584
- /* @__PURE__ */ jsx14(Box13, { marginBottom: 1, children: /* @__PURE__ */ jsxs13(Text14, { dimColor: true, children: [
1679
+ repo.description && /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsx15(Text15, { dimColor: true, wrap: "wrap", children: repo.description }) }),
1680
+ /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsxs14(Text15, { dimColor: true, children: [
1585
1681
  "Current Stars: ",
1586
1682
  repo.stargazerCount,
1587
1683
  " \u2022 Forks: ",
1588
1684
  repo.forkCount
1589
1685
  ] }) }),
1590
- error && /* @__PURE__ */ jsx14(Box13, { marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs13(Text14, { color: "red", wrap: "wrap", children: [
1686
+ error && /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs14(Text15, { color: "red", wrap: "wrap", children: [
1591
1687
  error.includes("OAuth access restrictions") ? "\u26A0\uFE0F " : "Error: ",
1592
1688
  error
1593
1689
  ] }) }),
1594
- isStarring ? /* @__PURE__ */ jsx14(Box13, { children: /* @__PURE__ */ jsxs13(Text14, { color: "yellow", children: [
1690
+ isStarring ? /* @__PURE__ */ jsx15(Box14, { children: /* @__PURE__ */ jsxs14(Text15, { color: "yellow", children: [
1595
1691
  actionGerund,
1596
1692
  "..."
1597
- ] }) }) : /* @__PURE__ */ jsxs13(Fragment7, { children: [
1598
- /* @__PURE__ */ jsxs13(Box13, { gap: 2, children: [
1599
- /* @__PURE__ */ jsx14(Box13, { children: /* @__PURE__ */ jsxs13(
1600
- Text14,
1693
+ ] }) }) : /* @__PURE__ */ jsxs14(Fragment7, { children: [
1694
+ /* @__PURE__ */ jsxs14(Box14, { gap: 2, children: [
1695
+ /* @__PURE__ */ jsx15(Box14, { children: /* @__PURE__ */ jsxs14(
1696
+ Text15,
1601
1697
  {
1602
1698
  backgroundColor: focusedButton === "cancel" ? "white" : void 0,
1603
1699
  color: focusedButton === "cancel" ? "black" : "white",
@@ -1609,8 +1705,8 @@ function StarModal({
1609
1705
  ]
1610
1706
  }
1611
1707
  ) }),
1612
- /* @__PURE__ */ jsx14(Box13, { children: /* @__PURE__ */ jsxs13(
1613
- Text14,
1708
+ /* @__PURE__ */ jsx15(Box14, { children: /* @__PURE__ */ jsxs14(
1709
+ Text15,
1614
1710
  {
1615
1711
  backgroundColor: focusedButton === "star" ? "yellow" : void 0,
1616
1712
  color: focusedButton === "star" ? "black" : "yellow",
@@ -1624,7 +1720,7 @@ function StarModal({
1624
1720
  }
1625
1721
  ) })
1626
1722
  ] }),
1627
- /* @__PURE__ */ jsx14(Box13, { marginTop: 1, children: /* @__PURE__ */ jsx14(Text14, { dimColor: true, children: "Use \u2190 \u2192 to navigate, Enter to select" }) })
1723
+ /* @__PURE__ */ jsx15(Box14, { marginTop: 1, children: /* @__PURE__ */ jsx15(Text15, { dimColor: true, children: "Use \u2190 \u2192 to navigate, Enter to select" }) })
1628
1724
  ] })
1629
1725
  ]
1630
1726
  }
@@ -1632,10 +1728,10 @@ function StarModal({
1632
1728
  }
1633
1729
 
1634
1730
  // src/ui/components/modals/UnstarModal.tsx
1635
- import { useEffect as useEffect10, useState as useState14 } from "react";
1636
- import { Box as Box14, Text as Text15 } from "ink";
1637
- import { useInput as useInput14 } from "ink";
1638
- import { Fragment as Fragment8, jsx as jsx15, jsxs as jsxs14 } from "react/jsx-runtime";
1731
+ import { useEffect as useEffect11, useState as useState15 } from "react";
1732
+ import { Box as Box15, Text as Text16 } from "ink";
1733
+ import { useInput as useInput15 } from "ink";
1734
+ import { Fragment as Fragment8, jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
1639
1735
  function UnstarModal({
1640
1736
  visible,
1641
1737
  repo,
@@ -1644,8 +1740,8 @@ function UnstarModal({
1644
1740
  isUnstarring = false,
1645
1741
  error = null
1646
1742
  }) {
1647
- const [focusedButton, setFocusedButton] = useState14("cancel");
1648
- useInput14((input, key) => {
1743
+ const [focusedButton, setFocusedButton] = useState15("cancel");
1744
+ useInput15((input, key) => {
1649
1745
  if (!visible) return;
1650
1746
  if (key.escape || input === "c" || input === "C") {
1651
1747
  onCancel();
@@ -1670,14 +1766,14 @@ function UnstarModal({
1670
1766
  onConfirm();
1671
1767
  }
1672
1768
  });
1673
- useEffect10(() => {
1769
+ useEffect11(() => {
1674
1770
  if (visible) {
1675
1771
  setFocusedButton("cancel");
1676
1772
  }
1677
1773
  }, [visible]);
1678
1774
  if (!visible || !repo) return null;
1679
- return /* @__PURE__ */ jsxs14(
1680
- Box14,
1775
+ return /* @__PURE__ */ jsxs15(
1776
+ Box15,
1681
1777
  {
1682
1778
  flexDirection: "column",
1683
1779
  borderStyle: "round",
@@ -1686,28 +1782,28 @@ function UnstarModal({
1686
1782
  paddingY: 1,
1687
1783
  marginTop: 1,
1688
1784
  children: [
1689
- /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsx15(Text15, { bold: true, color: "yellow", children: "\u2B50 Unstar Repository" }) }),
1690
- /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsxs14(Text15, { children: [
1785
+ /* @__PURE__ */ jsx16(Box15, { marginBottom: 1, children: /* @__PURE__ */ jsx16(Text16, { bold: true, color: "yellow", children: "\u2B50 Unstar Repository" }) }),
1786
+ /* @__PURE__ */ jsx16(Box15, { marginBottom: 1, children: /* @__PURE__ */ jsxs15(Text16, { children: [
1691
1787
  "Are you sure you want to unstar",
1692
1788
  " ",
1693
- /* @__PURE__ */ jsx15(Text15, { bold: true, color: "cyan", children: repo.nameWithOwner }),
1789
+ /* @__PURE__ */ jsx16(Text16, { bold: true, color: "cyan", children: repo.nameWithOwner }),
1694
1790
  "?"
1695
1791
  ] }) }),
1696
- repo.description && /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsx15(Text15, { dimColor: true, wrap: "wrap", children: repo.description }) }),
1697
- /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, children: /* @__PURE__ */ jsxs14(Text15, { dimColor: true, children: [
1792
+ repo.description && /* @__PURE__ */ jsx16(Box15, { marginBottom: 1, children: /* @__PURE__ */ jsx16(Text16, { dimColor: true, wrap: "wrap", children: repo.description }) }),
1793
+ /* @__PURE__ */ jsx16(Box15, { marginBottom: 1, children: /* @__PURE__ */ jsxs15(Text16, { dimColor: true, children: [
1698
1794
  "Stars: ",
1699
1795
  repo.stargazerCount,
1700
1796
  " \u2022 Forks: ",
1701
1797
  repo.forkCount
1702
1798
  ] }) }),
1703
- error && /* @__PURE__ */ jsx15(Box14, { marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs14(Text15, { color: "red", wrap: "wrap", children: [
1799
+ error && /* @__PURE__ */ jsx16(Box15, { marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsxs15(Text16, { color: "red", wrap: "wrap", children: [
1704
1800
  error.includes("OAuth access restrictions") ? "\u26A0\uFE0F " : "Error: ",
1705
1801
  error
1706
1802
  ] }) }),
1707
- isUnstarring ? /* @__PURE__ */ jsx15(Box14, { children: /* @__PURE__ */ jsx15(Text15, { color: "yellow", children: "Unstarring..." }) }) : /* @__PURE__ */ jsxs14(Fragment8, { children: [
1708
- /* @__PURE__ */ jsxs14(Box14, { gap: 2, children: [
1709
- /* @__PURE__ */ jsx15(Box14, { children: /* @__PURE__ */ jsxs14(
1710
- Text15,
1803
+ isUnstarring ? /* @__PURE__ */ jsx16(Box15, { children: /* @__PURE__ */ jsx16(Text16, { color: "yellow", children: "Unstarring..." }) }) : /* @__PURE__ */ jsxs15(Fragment8, { children: [
1804
+ /* @__PURE__ */ jsxs15(Box15, { gap: 2, children: [
1805
+ /* @__PURE__ */ jsx16(Box15, { children: /* @__PURE__ */ jsxs15(
1806
+ Text16,
1711
1807
  {
1712
1808
  backgroundColor: focusedButton === "cancel" ? "white" : void 0,
1713
1809
  color: focusedButton === "cancel" ? "black" : "white",
@@ -1719,8 +1815,8 @@ function UnstarModal({
1719
1815
  ]
1720
1816
  }
1721
1817
  ) }),
1722
- /* @__PURE__ */ jsx15(Box14, { children: /* @__PURE__ */ jsxs14(
1723
- Text15,
1818
+ /* @__PURE__ */ jsx16(Box15, { children: /* @__PURE__ */ jsxs15(
1819
+ Text16,
1724
1820
  {
1725
1821
  backgroundColor: focusedButton === "unstar" ? "yellow" : void 0,
1726
1822
  color: focusedButton === "unstar" ? "black" : "yellow",
@@ -1733,7 +1829,7 @@ function UnstarModal({
1733
1829
  }
1734
1830
  ) })
1735
1831
  ] }),
1736
- /* @__PURE__ */ jsx15(Box14, { marginTop: 1, children: /* @__PURE__ */ jsx15(Text15, { dimColor: true, children: "Use \u2190 \u2192 to navigate, Enter to select" }) })
1832
+ /* @__PURE__ */ jsx16(Box15, { marginTop: 1, children: /* @__PURE__ */ jsx16(Text16, { dimColor: true, children: "Use \u2190 \u2192 to navigate, Enter to select" }) })
1737
1833
  ] })
1738
1834
  ]
1739
1835
  }
@@ -1741,9 +1837,9 @@ function UnstarModal({
1741
1837
  }
1742
1838
 
1743
1839
  // src/ui/components/repo/RepoRow.tsx
1744
- import { Box as Box15, Text as Text16 } from "ink";
1745
- import chalk12 from "chalk";
1746
- import { jsx as jsx16, jsxs as jsxs15 } from "react/jsx-runtime";
1840
+ import { Box as Box16, Text as Text17 } from "ink";
1841
+ import chalk13 from "chalk";
1842
+ import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
1747
1843
  function RepoRow({
1748
1844
  repo,
1749
1845
  selected,
@@ -1760,56 +1856,56 @@ function RepoRow({
1760
1856
  const commitsBehind = hasCommitData ? repo.parent.defaultBranchRef.target.history.totalCount - repo.defaultBranchRef.target.history.totalCount : 0;
1761
1857
  const showCommitsBehind = forkTracking && hasCommitData;
1762
1858
  let line1 = "";
1763
- const numColor = selected ? chalk12.cyan : chalk12.gray;
1764
- const nameColor = selected ? chalk12.cyan.bold : chalk12.white;
1859
+ const numColor = selected ? chalk13.cyan : chalk13.gray;
1860
+ const nameColor = selected ? chalk13.cyan.bold : chalk13.white;
1765
1861
  line1 += numColor(`${String(index).padStart(3, " ")}.`);
1766
1862
  if (repo.viewerHasStarred) {
1767
- line1 += chalk12.yellow(" \u2B50");
1863
+ line1 += chalk13.yellow(" \u2B50");
1768
1864
  }
1769
1865
  line1 += nameColor(` ${repo.nameWithOwner}`);
1770
1866
  if (repo.visibility === "INTERNAL") {
1771
- line1 += chalk12.magenta(" Internal");
1867
+ line1 += chalk13.magenta(" Internal");
1772
1868
  } else if (repo.visibility === "PRIVATE" || repo.isPrivate && !repo.visibility) {
1773
- line1 += chalk12.yellow(" Private");
1869
+ line1 += chalk13.yellow(" Private");
1774
1870
  }
1775
1871
  if (starsMode && repo.owner && repo.owner.__typename === "Organization") {
1776
- line1 += chalk12.gray(" [org]");
1872
+ line1 += chalk13.gray(" [org]");
1777
1873
  }
1778
- if (repo.isArchived) line1 += " " + chalk12.bgGray.whiteBright(" Archived ") + " ";
1874
+ if (repo.isArchived) line1 += " " + chalk13.bgGray.whiteBright(" Archived ") + " ";
1779
1875
  if (repo.isFork && repo.parent) {
1780
- line1 += chalk12.blue(` Fork of ${repo.parent.nameWithOwner}`);
1876
+ line1 += chalk13.blue(` Fork of ${repo.parent.nameWithOwner}`);
1781
1877
  if (showCommitsBehind) {
1782
1878
  if (commitsBehind > 0) {
1783
- line1 += chalk12.yellow(` (${commitsBehind} behind)`);
1879
+ line1 += chalk13.yellow(` (${commitsBehind} behind)`);
1784
1880
  } else {
1785
- line1 += chalk12.green(` (0 behind)`);
1881
+ line1 += chalk13.green(` (0 behind)`);
1786
1882
  }
1787
1883
  }
1788
1884
  }
1789
1885
  let line2 = " ";
1790
- const metaColor = selected ? chalk12.white : chalk12.gray;
1791
- if (langName) line2 += chalk12.hex(langColor)("\u25CF ") + metaColor(`${langName} `);
1886
+ const metaColor = selected ? chalk13.white : chalk13.gray;
1887
+ if (langName) line2 += chalk13.hex(langColor)("\u25CF ") + metaColor(`${langName} `);
1792
1888
  line2 += metaColor(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount} Updated ${formatDate(repo.updatedAt)}`);
1793
1889
  const line3 = repo.description ? ` ${truncate(repo.description, Math.max(30, maxWidth - 10))}` : null;
1794
1890
  let fullText = line1 + "\n" + line2;
1795
1891
  if (line3) fullText += "\n" + metaColor(line3);
1796
1892
  const spacingAbove = Math.floor(spacingLines / 2);
1797
1893
  const spacingBelow = spacingLines - spacingAbove;
1798
- return /* @__PURE__ */ jsxs15(Box15, { flexDirection: "column", backgroundColor: selected ? "gray" : void 0, children: [
1799
- spacingAbove > 0 && /* @__PURE__ */ jsx16(Box15, { height: spacingAbove, children: /* @__PURE__ */ jsx16(Text16, { children: " " }) }),
1800
- /* @__PURE__ */ jsx16(Text16, { children: dim ? chalk12.dim(fullText) : fullText }),
1801
- spacingBelow > 0 && /* @__PURE__ */ jsx16(Box15, { height: spacingBelow, children: /* @__PURE__ */ jsx16(Text16, { children: " " }) })
1894
+ return /* @__PURE__ */ jsxs16(Box16, { flexDirection: "column", backgroundColor: selected ? "gray" : void 0, children: [
1895
+ spacingAbove > 0 && /* @__PURE__ */ jsx17(Box16, { height: spacingAbove, children: /* @__PURE__ */ jsx17(Text17, { children: " " }) }),
1896
+ /* @__PURE__ */ jsx17(Text17, { children: dim ? chalk13.dim(fullText) : fullText }),
1897
+ spacingBelow > 0 && /* @__PURE__ */ jsx17(Box16, { height: spacingBelow, children: /* @__PURE__ */ jsx17(Text17, { children: " " }) })
1802
1898
  ] });
1803
1899
  }
1804
1900
 
1805
1901
  // src/ui/components/repo/FilterInput.tsx
1806
- import { Box as Box16, Text as Text17 } from "ink";
1902
+ import { Box as Box17, Text as Text18 } from "ink";
1807
1903
  import TextInput4 from "ink-text-input";
1808
- import { jsx as jsx17, jsxs as jsxs16 } from "react/jsx-runtime";
1904
+ import { jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
1809
1905
 
1810
1906
  // src/ui/components/repo/RepoListHeader.tsx
1811
- import { Box as Box17, Text as Text18 } from "ink";
1812
- import { Fragment as Fragment9, jsx as jsx18, jsxs as jsxs17 } from "react/jsx-runtime";
1907
+ import { Box as Box18, Text as Text19 } from "ink";
1908
+ import { Fragment as Fragment9, jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
1813
1909
  function RepoListHeader({
1814
1910
  ownerContext,
1815
1911
  sortKey,
@@ -1819,41 +1915,46 @@ function RepoListHeader({
1819
1915
  searchActive,
1820
1916
  searchLoading,
1821
1917
  visibilityFilter = "all",
1918
+ archiveFilter = "all",
1822
1919
  isEnterprise = false,
1823
1920
  starsMode = false
1824
1921
  }) {
1825
1922
  const contextLabel = ownerContext === "personal" ? "Personal Account" : ownerContext?.type === "organization" ? `Organization: ${ownerContext.name ?? ownerContext.login}` : "";
1826
1923
  const visibilityLabel = visibilityFilter === "public" ? "Public" : visibilityFilter === "private" ? isEnterprise ? "Private/Internal" : "Private" : visibilityFilter === "internal" ? "Internal" : "";
1827
- return /* @__PURE__ */ jsxs17(Box17, { flexDirection: "row", gap: 2, marginBottom: 1, children: [
1828
- contextLabel && /* @__PURE__ */ jsx18(Text18, { children: contextLabel }),
1829
- starsMode && /* @__PURE__ */ jsx18(Text18, { color: "yellow", bold: true, children: "\u2B50 Stars Mode" }),
1830
- /* @__PURE__ */ jsxs17(Text18, { color: "gray", dimColor: true, children: [
1924
+ return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "row", gap: 2, marginBottom: 1, children: [
1925
+ contextLabel && /* @__PURE__ */ jsx19(Text19, { children: contextLabel }),
1926
+ starsMode && /* @__PURE__ */ jsx19(Text19, { color: "yellow", bold: true, children: "\u2B50 Stars Mode" }),
1927
+ /* @__PURE__ */ jsxs18(Text19, { color: "gray", dimColor: true, children: [
1831
1928
  "Sort: ",
1832
1929
  sortKey,
1833
1930
  " ",
1834
1931
  sortDir === "asc" ? "\u2191" : "\u2193"
1835
1932
  ] }),
1836
- /* @__PURE__ */ jsxs17(Text18, { color: "gray", dimColor: true, children: [
1933
+ /* @__PURE__ */ jsxs18(Text19, { color: "gray", dimColor: true, children: [
1837
1934
  "Fork Status - Commits Behind: ",
1838
1935
  forkTracking ? "ON" : "OFF"
1839
1936
  ] }),
1840
- !!visibilityLabel && !starsMode && /* @__PURE__ */ jsxs17(Text18, { color: "yellow", children: [
1937
+ !!visibilityLabel && !starsMode && /* @__PURE__ */ jsxs18(Text19, { color: "yellow", children: [
1841
1938
  "Visibility: ",
1842
1939
  visibilityLabel
1843
1940
  ] }),
1844
- filter && !searchActive && /* @__PURE__ */ jsxs17(Text18, { color: "cyan", children: [
1941
+ archiveFilter !== "all" && /* @__PURE__ */ jsxs18(Text19, { color: "cyan", children: [
1942
+ "Archive: ",
1943
+ archiveFilter === "archived" ? "Archived" : "Unarchived"
1944
+ ] }),
1945
+ filter && !searchActive && /* @__PURE__ */ jsxs18(Text19, { color: "cyan", children: [
1845
1946
  'Filter: "',
1846
1947
  filter,
1847
1948
  '"'
1848
1949
  ] }),
1849
- searchActive && /* @__PURE__ */ jsxs17(Fragment9, { children: [
1850
- /* @__PURE__ */ jsxs17(Text18, { color: "cyan", children: [
1950
+ searchActive && /* @__PURE__ */ jsxs18(Fragment9, { children: [
1951
+ /* @__PURE__ */ jsxs18(Text19, { color: "cyan", children: [
1851
1952
  'Search: "',
1852
1953
  filter.trim(),
1853
1954
  '"'
1854
1955
  ] }),
1855
- searchLoading && /* @__PURE__ */ jsx18(Box17, { marginLeft: 1, children: /* @__PURE__ */ jsxs17(Text18, { color: "cyan", children: [
1856
- /* @__PURE__ */ jsx18(SlowSpinner, {}),
1956
+ searchLoading && /* @__PURE__ */ jsx19(Box18, { marginLeft: 1, children: /* @__PURE__ */ jsxs18(Text19, { color: "cyan", children: [
1957
+ /* @__PURE__ */ jsx19(SlowSpinner, {}),
1857
1958
  " Searching\u2026"
1858
1959
  ] }) })
1859
1960
  ] })
@@ -1861,7 +1962,7 @@ function RepoListHeader({
1861
1962
  }
1862
1963
 
1863
1964
  // src/ui/views/RepoList.tsx
1864
- import { Fragment as Fragment10, jsx as jsx19, jsxs as jsxs18 } from "react/jsx-runtime";
1965
+ import { Fragment as Fragment10, jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
1865
1966
  var getPageSize = () => {
1866
1967
  const envValue = process.env.REPOS_PER_FETCH;
1867
1968
  if (envValue) {
@@ -1877,17 +1978,17 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
1877
1978
  const { exit } = useApp();
1878
1979
  const { stdout } = useStdout();
1879
1980
  const client = useMemo(() => makeClient(token), [token]);
1880
- const [debugMessages, setDebugMessages] = useState15([]);
1981
+ const [debugMessages, setDebugMessages] = useState16([]);
1881
1982
  const addDebugMessage = useCallback((msg) => {
1882
1983
  if (process.env.GH_MANAGER_DEBUG === "1") {
1883
1984
  setDebugMessages((prev) => [...prev.slice(-9), msg]);
1884
1985
  }
1885
1986
  }, []);
1886
1987
  const handleOrgContextChangeRef = useRef(onOrgContextChange);
1887
- useEffect11(() => {
1988
+ useEffect12(() => {
1888
1989
  handleOrgContextChangeRef.current = onOrgContextChange;
1889
1990
  }, [onOrgContextChange]);
1890
- React15.useEffect(() => {
1991
+ React16.useEffect(() => {
1891
1992
  addDebugMessage(`[RepoList] Component mounted`);
1892
1993
  logger.info("RepoList component mounted", {
1893
1994
  token: token ? "present" : "missing",
@@ -1899,86 +2000,87 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
1899
2000
  }, []);
1900
2001
  const terminalWidth = stdout?.columns ?? 80;
1901
2002
  const availableHeight = maxVisibleRows ?? 20;
1902
- const [items, setItems] = useState15([]);
1903
- const [cursor, setCursor] = useState15(0);
1904
- const [endCursor, setEndCursor] = useState15(null);
1905
- const [hasNextPage, setHasNextPage] = useState15(false);
1906
- const [totalCount, setTotalCount] = useState15(0);
1907
- const [loading, setLoading] = useState15(true);
1908
- const [sortingLoading, setSortingLoading] = useState15(false);
1909
- const [refreshing, setRefreshing] = useState15(false);
1910
- const [loadingMore, setLoadingMore] = useState15(false);
1911
- const [error, setError] = useState15(null);
1912
- const [rateLimit, setRateLimit] = useState15(void 0);
1913
- const [prevRateLimit, setPrevRateLimit] = useState15(void 0);
1914
- const [restRateLimit, setRestRateLimit] = useState15(void 0);
1915
- const [prevRestRateLimit, setPrevRestRateLimit] = useState15(void 0);
1916
- const [density, setDensity] = useState15(2);
1917
- const [prefsLoaded, setPrefsLoaded] = useState15(false);
1918
- const [ownerContext, setOwnerContext] = useState15("personal");
1919
- const [ownerAffiliations, setOwnerAffiliations] = useState15(["OWNER"]);
1920
- const [orgSwitcherOpen, setOrgSwitcherOpen] = useState15(false);
1921
- const [operationCount, setOperationCount] = useState15(0);
1922
- const [showSponsorReminder, setShowSponsorReminder] = useState15(false);
1923
- const [searchItems, setSearchItems] = useState15([]);
1924
- const [searchEndCursor, setSearchEndCursor] = useState15(null);
1925
- const [searchHasNextPage, setSearchHasNextPage] = useState15(false);
1926
- const [searchTotalCount, setSearchTotalCount] = useState15(0);
1927
- const [searchLoading, setSearchLoading] = useState15(false);
1928
- const [deleteMode, setDeleteMode] = useState15(false);
1929
- const [deleteTarget, setDeleteTarget] = useState15(null);
1930
- const [deleteCode, setDeleteCode] = useState15("");
1931
- const [typedCode, setTypedCode] = useState15("");
1932
- const [deleting, setDeleting] = useState15(false);
1933
- const [deleteError, setDeleteError] = useState15(null);
1934
- const [deleteConfirmStage, setDeleteConfirmStage] = useState15(false);
1935
- const [confirmFocus, setConfirmFocus] = useState15("delete");
1936
- const [archiveMode, setArchiveMode] = useState15(false);
1937
- const [archiveTarget, setArchiveTarget] = useState15(null);
1938
- const [archiving, setArchiving] = useState15(false);
1939
- const [archiveError, setArchiveError] = useState15(null);
1940
- const [archiveFocus, setArchiveFocus] = useState15("confirm");
1941
- const [syncMode, setSyncMode] = useState15(false);
1942
- const [syncTarget, setSyncTarget] = useState15(null);
1943
- const [syncing, setSyncing] = useState15(false);
1944
- const [syncError, setSyncError] = useState15(null);
1945
- const [syncFocus, setSyncFocus] = useState15("confirm");
1946
- const [renameMode, setRenameMode] = useState15(false);
1947
- const [renameTarget, setRenameTarget] = useState15(null);
1948
- const [copyUrlMode, setCopyUrlMode] = useState15(false);
1949
- const [copyUrlTarget, setCopyUrlTarget] = useState15(null);
1950
- const [copyToast, setCopyToast] = useState15(null);
1951
- const [syncTrigger, setSyncTrigger] = useState15(false);
1952
- const [infoMode, setInfoMode] = useState15(false);
1953
- const [infoRepo, setInfoRepo] = useState15(null);
1954
- const [logoutMode, setLogoutMode] = useState15(false);
1955
- const [logoutFocus, setLogoutFocus] = useState15("confirm");
1956
- const [logoutError, setLogoutError] = useState15(null);
1957
- const [visibilityMode, setVisibilityMode] = useState15(false);
1958
- const [isEnterpriseOrg, setIsEnterpriseOrg] = useState15(false);
1959
- const [hasInternalRepos, setHasInternalRepos] = useState15(false);
1960
- const [changeVisibilityMode, setChangeVisibilityMode] = useState15(false);
1961
- const [changeVisibilityTarget, setChangeVisibilityTarget] = useState15(null);
1962
- const [changingVisibility, setChangingVisibility] = useState15(false);
1963
- const [changeVisibilityError, setChangeVisibilityError] = useState15(null);
1964
- const [sortMode, setSortMode] = useState15(false);
1965
- const [sortDirectionMode, setSortDirectionMode] = useState15(false);
1966
- const [starsMode, setStarsMode] = useState15(false);
1967
- const [starredItems, setStarredItems] = useState15([]);
1968
- const [starredEndCursor, setStarredEndCursor] = useState15(null);
1969
- const [starredHasNextPage, setStarredHasNextPage] = useState15(false);
1970
- const [starredTotalCount, setStarredTotalCount] = useState15(0);
1971
- const [starredLoading, setStarredLoading] = useState15(false);
1972
- const [unstarMode, setUnstarMode] = useState15(false);
1973
- const [unstarTarget, setUnstarTarget] = useState15(null);
1974
- const [unstarring, setUnstarring] = useState15(false);
1975
- const [unstarError, setUnstarError] = useState15(null);
1976
- const [starMode, setStarMode] = useState15(false);
1977
- const [starTarget, setStarTarget] = useState15(null);
1978
- const [starring, setStarring] = useState15(false);
1979
- const [starError, setStarError] = useState15(null);
2003
+ const [items, setItems] = useState16([]);
2004
+ const [cursor, setCursor] = useState16(0);
2005
+ const [endCursor, setEndCursor] = useState16(null);
2006
+ const [hasNextPage, setHasNextPage] = useState16(false);
2007
+ const [totalCount, setTotalCount] = useState16(0);
2008
+ const [loading, setLoading] = useState16(true);
2009
+ const [sortingLoading, setSortingLoading] = useState16(false);
2010
+ const [refreshing, setRefreshing] = useState16(false);
2011
+ const [loadingMore, setLoadingMore] = useState16(false);
2012
+ const [error, setError] = useState16(null);
2013
+ const [rateLimit, setRateLimit] = useState16(void 0);
2014
+ const [prevRateLimit, setPrevRateLimit] = useState16(void 0);
2015
+ const [restRateLimit, setRestRateLimit] = useState16(void 0);
2016
+ const [prevRestRateLimit, setPrevRestRateLimit] = useState16(void 0);
2017
+ const [density, setDensity] = useState16(2);
2018
+ const [prefsLoaded, setPrefsLoaded] = useState16(false);
2019
+ const [ownerContext, setOwnerContext] = useState16("personal");
2020
+ const [ownerAffiliations, setOwnerAffiliations] = useState16(["OWNER"]);
2021
+ const [orgSwitcherOpen, setOrgSwitcherOpen] = useState16(false);
2022
+ const [operationCount, setOperationCount] = useState16(0);
2023
+ const [showSponsorReminder, setShowSponsorReminder] = useState16(false);
2024
+ const [searchItems, setSearchItems] = useState16([]);
2025
+ const [searchEndCursor, setSearchEndCursor] = useState16(null);
2026
+ const [searchHasNextPage, setSearchHasNextPage] = useState16(false);
2027
+ const [searchTotalCount, setSearchTotalCount] = useState16(0);
2028
+ const [searchLoading, setSearchLoading] = useState16(false);
2029
+ const [deleteMode, setDeleteMode] = useState16(false);
2030
+ const [deleteTarget, setDeleteTarget] = useState16(null);
2031
+ const [deleteCode, setDeleteCode] = useState16("");
2032
+ const [typedCode, setTypedCode] = useState16("");
2033
+ const [deleting, setDeleting] = useState16(false);
2034
+ const [deleteError, setDeleteError] = useState16(null);
2035
+ const [deleteConfirmStage, setDeleteConfirmStage] = useState16(false);
2036
+ const [confirmFocus, setConfirmFocus] = useState16("delete");
2037
+ const [archiveMode, setArchiveMode] = useState16(false);
2038
+ const [archiveTarget, setArchiveTarget] = useState16(null);
2039
+ const [archiving, setArchiving] = useState16(false);
2040
+ const [archiveError, setArchiveError] = useState16(null);
2041
+ const [archiveFocus, setArchiveFocus] = useState16("confirm");
2042
+ const [syncMode, setSyncMode] = useState16(false);
2043
+ const [syncTarget, setSyncTarget] = useState16(null);
2044
+ const [syncing, setSyncing] = useState16(false);
2045
+ const [syncError, setSyncError] = useState16(null);
2046
+ const [syncFocus, setSyncFocus] = useState16("confirm");
2047
+ const [renameMode, setRenameMode] = useState16(false);
2048
+ const [renameTarget, setRenameTarget] = useState16(null);
2049
+ const [copyUrlMode, setCopyUrlMode] = useState16(false);
2050
+ const [copyUrlTarget, setCopyUrlTarget] = useState16(null);
2051
+ const [copyToast, setCopyToast] = useState16(null);
2052
+ const [syncTrigger, setSyncTrigger] = useState16(false);
2053
+ const [infoMode, setInfoMode] = useState16(false);
2054
+ const [infoRepo, setInfoRepo] = useState16(null);
2055
+ const [logoutMode, setLogoutMode] = useState16(false);
2056
+ const [logoutFocus, setLogoutFocus] = useState16("confirm");
2057
+ const [logoutError, setLogoutError] = useState16(null);
2058
+ const [archiveFilterMode, setArchiveFilterMode] = useState16(false);
2059
+ const [visibilityMode, setVisibilityMode] = useState16(false);
2060
+ const [isEnterpriseOrg, setIsEnterpriseOrg] = useState16(false);
2061
+ const [hasInternalRepos, setHasInternalRepos] = useState16(false);
2062
+ const [changeVisibilityMode, setChangeVisibilityMode] = useState16(false);
2063
+ const [changeVisibilityTarget, setChangeVisibilityTarget] = useState16(null);
2064
+ const [changingVisibility, setChangingVisibility] = useState16(false);
2065
+ const [changeVisibilityError, setChangeVisibilityError] = useState16(null);
2066
+ const [sortMode, setSortMode] = useState16(false);
2067
+ const [sortDirectionMode, setSortDirectionMode] = useState16(false);
2068
+ const [starsMode, setStarsMode] = useState16(false);
2069
+ const [starredItems, setStarredItems] = useState16([]);
2070
+ const [starredEndCursor, setStarredEndCursor] = useState16(null);
2071
+ const [starredHasNextPage, setStarredHasNextPage] = useState16(false);
2072
+ const [starredTotalCount, setStarredTotalCount] = useState16(0);
2073
+ const [starredLoading, setStarredLoading] = useState16(false);
2074
+ const [unstarMode, setUnstarMode] = useState16(false);
2075
+ const [unstarTarget, setUnstarTarget] = useState16(null);
2076
+ const [unstarring, setUnstarring] = useState16(false);
2077
+ const [unstarError, setUnstarError] = useState16(null);
2078
+ const [starMode, setStarMode] = useState16(false);
2079
+ const [starTarget, setStarTarget] = useState16(null);
2080
+ const [starring, setStarring] = useState16(false);
2081
+ const [starError, setStarError] = useState16(null);
1980
2082
  const appliedInitialOrg = useRef(false);
1981
- useEffect11(() => {
2083
+ useEffect12(() => {
1982
2084
  (async () => {
1983
2085
  if (appliedInitialOrg.current) return;
1984
2086
  if (!initialOrgSlug2) return;
@@ -2247,7 +2349,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2247
2349
  throw error2;
2248
2350
  }
2249
2351
  }
2250
- useEffect11(() => {
2352
+ useEffect12(() => {
2251
2353
  return () => {
2252
2354
  if (copyToastTimerRef.current) {
2253
2355
  clearTimeout(copyToastTimerRef.current);
@@ -2355,13 +2457,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2355
2457
  setDeleteError("Failed to delete repository. Ensure delete_repo scope and admin permissions.");
2356
2458
  }
2357
2459
  }
2358
- const [filter, setFilter] = useState15("");
2359
- const [filterMode, setFilterMode] = useState15(false);
2360
- const [sortKey, setSortKey] = useState15("updated");
2361
- const [sortDir, setSortDir] = useState15("desc");
2362
- const [forkTracking, setForkTracking] = useState15(true);
2363
- const [visibilityFilter, setVisibilityFilter] = useState15("all");
2460
+ const [filter, setFilter] = useState16("");
2461
+ const [filterMode, setFilterMode] = useState16(false);
2462
+ const [sortKey, setSortKey] = useState16("updated");
2463
+ const [sortDir, setSortDir] = useState16("desc");
2464
+ const [forkTracking, setForkTracking] = useState16(true);
2465
+ const [visibilityFilter, setVisibilityFilter] = useState16("all");
2364
2466
  const previousVisibilityFilter = useRef("all");
2467
+ const [archiveFilter, setArchiveFilter] = useState16("all");
2365
2468
  const sortFieldMap = {
2366
2469
  "updated": "UPDATED_AT",
2367
2470
  "pushed": "PUSHED_AT",
@@ -2521,7 +2624,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2521
2624
  setSearchLoading(false);
2522
2625
  }
2523
2626
  };
2524
- useEffect11(() => {
2627
+ useEffect12(() => {
2525
2628
  const ui = getUIPrefs();
2526
2629
  if (ui.density !== void 0) setDensity(ui.density);
2527
2630
  if (ui.sortKey && ["updated", "pushed", "name", "stars"].includes(ui.sortKey)) {
@@ -2534,6 +2637,9 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2534
2637
  if (ui.visibilityFilter && ["all", "public", "private", "internal"].includes(ui.visibilityFilter)) {
2535
2638
  setVisibilityFilter(ui.visibilityFilter);
2536
2639
  }
2640
+ if (ui.archiveFilter && ["all", "unarchived", "archived"].includes(ui.archiveFilter)) {
2641
+ setArchiveFilter(ui.archiveFilter);
2642
+ }
2537
2643
  if (ui.ownerContext) {
2538
2644
  setOwnerContext(ui.ownerContext);
2539
2645
  if (onOrgContextChange) {
@@ -2551,7 +2657,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2551
2657
  }
2552
2658
  setPrefsLoaded(true);
2553
2659
  }, [onOrgContextChange]);
2554
- useEffect11(() => {
2660
+ useEffect12(() => {
2555
2661
  if (!prefsLoaded) return;
2556
2662
  let policy = "cache-first";
2557
2663
  const orgLogin = ownerContext !== "personal" ? ownerContext.login : void 0;
@@ -2571,7 +2677,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2571
2677
  setCursor(0);
2572
2678
  fetchPage(null, true, false, void 0, policy);
2573
2679
  }, [client, prefsLoaded, ownerContext, ownerAffiliations]);
2574
- useEffect11(() => {
2680
+ useEffect12(() => {
2575
2681
  if (!searchActive) {
2576
2682
  if (items.length > 0) {
2577
2683
  let policy = "cache-first";
@@ -2610,7 +2716,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2610
2716
  }
2611
2717
  }
2612
2718
  }, [sortKey, sortDir]);
2613
- useEffect11(() => {
2719
+ useEffect12(() => {
2614
2720
  if (visibilityFilter !== "all" || previousVisibilityFilter.current && previousVisibilityFilter.current !== visibilityFilter) {
2615
2721
  if (!searchActive) {
2616
2722
  if (items.length > 0) {
@@ -2627,7 +2733,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2627
2733
  }
2628
2734
  previousVisibilityFilter.current = visibilityFilter;
2629
2735
  }, [visibilityFilter]);
2630
- useEffect11(() => {
2736
+ useEffect12(() => {
2631
2737
  if (viewerLogin && searchActive && !searchLoading && searchItems.length === 0) {
2632
2738
  let policy = "cache-first";
2633
2739
  try {
@@ -2648,7 +2754,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2648
2754
  fetchSearchPage(null, true, policy);
2649
2755
  }
2650
2756
  }, [viewerLogin]);
2651
- useInput15((input, key) => {
2757
+ useInput16((input, key) => {
2652
2758
  if (error) {
2653
2759
  if (input && input.toUpperCase() === "Q") {
2654
2760
  try {
@@ -2813,6 +2919,9 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
2813
2919
  if (copyUrlMode) {
2814
2920
  return;
2815
2921
  }
2922
+ if (archiveFilterMode) {
2923
+ return;
2924
+ }
2816
2925
  if (visibilityMode) {
2817
2926
  return;
2818
2927
  }
@@ -3064,6 +3173,10 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3064
3173
  });
3065
3174
  return;
3066
3175
  }
3176
+ if (input && input.toUpperCase() === "A" && !key.ctrl) {
3177
+ setArchiveFilterMode(true);
3178
+ return;
3179
+ }
3067
3180
  if (input && input.toUpperCase() === "V") {
3068
3181
  if (!starsMode) {
3069
3182
  setVisibilityMode(true);
@@ -3076,6 +3189,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3076
3189
  if (visibilityFilter === "private") {
3077
3190
  result = result.filter((r) => r.visibility === "PRIVATE" || r.visibility === "INTERNAL");
3078
3191
  }
3192
+ if (archiveFilter === "archived") {
3193
+ result = result.filter((r) => r.isArchived);
3194
+ } else if (archiveFilter === "unarchived") {
3195
+ result = result.filter((r) => !r.isArchived);
3196
+ }
3079
3197
  const q = filter.trim().toLowerCase();
3080
3198
  if (q) {
3081
3199
  result = result.filter(
@@ -3083,7 +3201,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3083
3201
  );
3084
3202
  }
3085
3203
  return result;
3086
- }, [items, filter, visibilityFilter]);
3204
+ }, [items, filter, visibilityFilter, archiveFilter]);
3087
3205
  const filteredAndSorted = useMemo(() => {
3088
3206
  const arr = [...filtered];
3089
3207
  const dir = sortDir === "asc" ? 1 : -1;
@@ -3112,22 +3230,35 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3112
3230
  } else if (visibilityFilter === "public") {
3113
3231
  result = result.filter((r) => r.visibility === "PUBLIC");
3114
3232
  }
3233
+ if (archiveFilter === "archived") {
3234
+ result = result.filter((r) => r.isArchived);
3235
+ } else if (archiveFilter === "unarchived") {
3236
+ result = result.filter((r) => !r.isArchived);
3237
+ }
3115
3238
  return result;
3116
- }, [searchItems, visibilityFilter]);
3239
+ }, [searchItems, visibilityFilter, archiveFilter]);
3117
3240
  const filteredStarredItems = useMemo(() => {
3118
- if (!filter || filter.trim().length === 0) return starredItems;
3119
- const lowerFilter = filter.toLowerCase();
3120
- return starredItems.filter(
3121
- (repo) => repo.nameWithOwner.toLowerCase().includes(lowerFilter) || repo.description && repo.description.toLowerCase().includes(lowerFilter)
3122
- );
3123
- }, [starredItems, filter]);
3241
+ let result = starredItems;
3242
+ if (filter && filter.trim().length > 0) {
3243
+ const lowerFilter = filter.toLowerCase();
3244
+ result = result.filter(
3245
+ (repo) => repo.nameWithOwner.toLowerCase().includes(lowerFilter) || repo.description && repo.description.toLowerCase().includes(lowerFilter)
3246
+ );
3247
+ }
3248
+ if (archiveFilter === "archived") {
3249
+ result = result.filter((r) => r.isArchived);
3250
+ } else if (archiveFilter === "unarchived") {
3251
+ result = result.filter((r) => !r.isArchived);
3252
+ }
3253
+ return result;
3254
+ }, [starredItems, filter, archiveFilter]);
3124
3255
  const visibleItems = starsMode ? filteredStarredItems : searchActive ? filteredSearchItems : filteredAndSorted;
3125
- useEffect11(() => {
3256
+ useEffect12(() => {
3126
3257
  if (searchActive) {
3127
3258
  addDebugMessage(`[State] searchActive=${searchActive}, searchItems=${searchItems.length}, visibleItems=${visibleItems.length}, filter="${filter}"`);
3128
3259
  }
3129
3260
  }, [searchActive, searchItems.length, visibleItems.length, filter]);
3130
- useEffect11(() => {
3261
+ useEffect12(() => {
3131
3262
  setCursor((c) => Math.min(c, Math.max(0, (searchActive ? searchItems.length : items.length) - 1)));
3132
3263
  }, [searchActive, searchItems.length, items.length]);
3133
3264
  const headerHeight = 2;
@@ -3148,127 +3279,130 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3148
3279
  const end = Math.min(total, start + visibleRepos + buffer);
3149
3280
  return { start, end };
3150
3281
  }, [visibleItems.length, cursor, listHeight, spacingLines]);
3151
- useEffect11(() => {
3282
+ useEffect12(() => {
3152
3283
  const prefetchThreshold = Math.floor(visibleItems.length * 0.8);
3153
3284
  const nearEnd = visibleItems.length > 0 && cursor >= prefetchThreshold;
3285
+ const rawItemsLength = starsMode ? starredItems.length : searchActive ? searchItems.length : items.length;
3286
+ const filterDrainedPage = visibleItems.length === 0 && archiveFilter !== "all" && rawItemsLength > 0;
3287
+ const shouldFetch = nearEnd || filterDrainedPage;
3154
3288
  if (starsMode) {
3155
- if (!starredLoading && starredHasNextPage && nearEnd) {
3289
+ if (!starredLoading && starredHasNextPage && shouldFetch) {
3156
3290
  addDebugMessage(`[Infinite Scroll] Prefetching starred repos at ${cursor}/${visibleItems.length} (80% threshold: ${prefetchThreshold})`);
3157
3291
  fetchStarredRepositories(starredEndCursor);
3158
3292
  }
3159
3293
  } else if (searchActive) {
3160
- if (!searchLoading && searchHasNextPage && nearEnd) {
3294
+ if (!searchLoading && searchHasNextPage && shouldFetch) {
3161
3295
  addDebugMessage(`[Infinite Scroll] Prefetching search results at ${cursor}/${visibleItems.length} (80% threshold: ${prefetchThreshold})`);
3162
3296
  fetchSearchPage(searchEndCursor);
3163
3297
  }
3164
3298
  } else {
3165
- if (!loading && !loadingMore && hasNextPage && nearEnd) {
3299
+ if (!loading && !loadingMore && hasNextPage && shouldFetch) {
3166
3300
  addDebugMessage(`[Infinite Scroll] Prefetching repos at ${cursor}/${visibleItems.length} (80% threshold: ${prefetchThreshold})`);
3167
3301
  fetchPage(endCursor);
3168
3302
  }
3169
3303
  }
3170
- }, [cursor, visibleItems.length, starsMode, starredLoading, starredHasNextPage, starredEndCursor, searchActive, searchLoading, searchHasNextPage, searchEndCursor, loading, loadingMore, hasNextPage, endCursor]);
3304
+ }, [cursor, visibleItems.length, archiveFilter, items.length, starredItems.length, searchItems.length, starsMode, starredLoading, starredHasNextPage, starredEndCursor, searchActive, searchLoading, searchHasNextPage, searchEndCursor, loading, loadingMore, hasNextPage, endCursor]);
3171
3305
  function openInBrowser(url) {
3172
3306
  const platform = process.platform;
3173
3307
  const cmd = platform === "darwin" ? `open "${url}"` : platform === "win32" ? `start "" "${url}"` : `xdg-open "${url}"`;
3174
3308
  exec(cmd);
3175
3309
  }
3176
3310
  const lowRate = rateLimit && rateLimit.remaining <= Math.ceil(rateLimit.limit * 0.1) || restRateLimit && restRateLimit.core.remaining <= Math.ceil(restRateLimit.core.limit * 0.1);
3177
- const modalOpen = deleteMode || archiveMode || syncMode || logoutMode || infoMode || visibilityMode || sortMode || sortDirectionMode || changeVisibilityMode || copyUrlMode || renameMode;
3178
- const headerBar = useMemo(() => /* @__PURE__ */ jsxs18(Box18, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: [
3179
- /* @__PURE__ */ jsxs18(Box18, { flexDirection: "row", gap: 1, children: [
3180
- /* @__PURE__ */ jsxs18(Text19, { color: "cyan", bold: !modalOpen, dimColor: modalOpen, children: [
3311
+ const modalOpen = deleteMode || archiveMode || syncMode || logoutMode || infoMode || visibilityMode || archiveFilterMode || sortMode || sortDirectionMode || changeVisibilityMode || copyUrlMode || renameMode;
3312
+ const headerBar = useMemo(() => /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: [
3313
+ /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", gap: 1, children: [
3314
+ /* @__PURE__ */ jsxs19(Text20, { color: "cyan", bold: !modalOpen, dimColor: modalOpen, children: [
3181
3315
  " ",
3182
3316
  ownerContext === "personal" ? "Personal" : ownerContext.name || ownerContext.login,
3183
3317
  ownerContext !== "personal" && isEnterpriseOrg && " (ENT)"
3184
3318
  ] }),
3185
- /* @__PURE__ */ jsx19(Text19, { bold: true, color: modalOpen ? "gray" : void 0, dimColor: modalOpen ? true : void 0, children: "Repositories" }),
3186
- /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3319
+ /* @__PURE__ */ jsx20(Text20, { bold: true, color: modalOpen ? "gray" : void 0, dimColor: modalOpen ? true : void 0, children: "Repositories" }),
3320
+ /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3187
3321
  "(",
3188
3322
  visibleItems.length,
3189
3323
  "/",
3190
3324
  searchActive ? searchTotalCount : totalCount,
3191
3325
  ")"
3192
3326
  ] }),
3193
- (loading || searchLoading) && /* @__PURE__ */ jsx19(Box18, { width: 2, flexShrink: 0, flexGrow: 0, marginLeft: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "yellow", children: /* @__PURE__ */ jsx19(SlowSpinner, {}) }) })
3327
+ (loading || searchLoading) && /* @__PURE__ */ jsx20(Box19, { width: 2, flexShrink: 0, flexGrow: 0, marginLeft: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "yellow", children: /* @__PURE__ */ jsx20(SlowSpinner, {}) }) })
3194
3328
  ] }),
3195
- (rateLimit || restRateLimit) && /* @__PURE__ */ jsxs18(Text19, { color: lowRate ? "yellow" : "gray", children: [
3329
+ (rateLimit || restRateLimit) && /* @__PURE__ */ jsxs19(Text20, { color: lowRate ? "yellow" : "gray", children: [
3196
3330
  "GraphQL: ",
3197
3331
  rateLimit ? `${rateLimit.remaining}/${rateLimit.limit}` : "---/---",
3198
- prevRateLimit !== void 0 && rateLimit && prevRateLimit !== rateLimit.remaining && /* @__PURE__ */ jsx19(Text19, { color: rateLimit.remaining < prevRateLimit ? "red" : "green", children: ` (${rateLimit.remaining - prevRateLimit > 0 ? "+" : ""}${rateLimit.remaining - prevRateLimit})` }),
3332
+ prevRateLimit !== void 0 && rateLimit && prevRateLimit !== rateLimit.remaining && /* @__PURE__ */ jsx20(Text20, { color: rateLimit.remaining < prevRateLimit ? "red" : "green", children: ` (${rateLimit.remaining - prevRateLimit > 0 ? "+" : ""}${rateLimit.remaining - prevRateLimit})` }),
3199
3333
  " | ",
3200
3334
  "REST: ",
3201
3335
  restRateLimit ? `${restRateLimit.core.remaining}/${restRateLimit.core.limit}` : "---/---",
3202
- prevRestRateLimit !== void 0 && restRateLimit && prevRestRateLimit !== restRateLimit.core.remaining && /* @__PURE__ */ jsx19(Text19, { color: restRateLimit.core.remaining < prevRestRateLimit ? "red" : "green", children: ` (${restRateLimit.core.remaining - prevRestRateLimit > 0 ? "+" : ""}${restRateLimit.core.remaining - prevRestRateLimit})` }),
3336
+ prevRestRateLimit !== void 0 && restRateLimit && prevRestRateLimit !== restRateLimit.core.remaining && /* @__PURE__ */ jsx20(Text20, { color: restRateLimit.core.remaining < prevRestRateLimit ? "red" : "green", children: ` (${restRateLimit.core.remaining - prevRestRateLimit > 0 ? "+" : ""}${restRateLimit.core.remaining - prevRestRateLimit})` }),
3203
3337
  " "
3204
3338
  ] })
3205
3339
  ] }), [visibleItems.length, searchActive, searchTotalCount, totalCount, loading, searchLoading, rateLimit, lowRate, modalOpen, prevRateLimit, ownerContext, isEnterpriseOrg, restRateLimit, prevRestRateLimit]);
3206
3340
  if (error) {
3207
- return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", height: availableHeight, children: [
3208
- /* @__PURE__ */ jsx19(Box18, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "row", gap: 1, children: [
3209
- /* @__PURE__ */ jsx19(Text19, { bold: true, children: " Repositories" }),
3210
- /* @__PURE__ */ jsx19(Text19, { color: "red", children: "(Error)" })
3341
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", height: availableHeight, children: [
3342
+ /* @__PURE__ */ jsx20(Box19, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", gap: 1, children: [
3343
+ /* @__PURE__ */ jsx20(Text20, { bold: true, children: " Repositories" }),
3344
+ /* @__PURE__ */ jsx20(Text20, { color: "red", children: "(Error)" })
3211
3345
  ] }) }),
3212
- /* @__PURE__ */ jsx19(Box18, { borderStyle: "single", borderColor: "red", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx19(Box18, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", alignItems: "center", children: [
3213
- /* @__PURE__ */ jsx19(Text19, { color: "red", children: error }),
3214
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "gray", dimColor: true, children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3346
+ /* @__PURE__ */ jsx20(Box19, { borderStyle: "single", borderColor: "red", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx20(Box19, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", alignItems: "center", children: [
3347
+ /* @__PURE__ */ jsx20(Text20, { color: "red", children: error }),
3348
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: true, children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3215
3349
  ] }) }) }),
3216
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "gray", children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3350
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "gray", children: "Press R to retry \u2022 Ctrl+L to logout \u2022 Q to quit" }) })
3217
3351
  ] });
3218
3352
  }
3219
3353
  if (loading && items.length === 0 || sortingLoading) {
3220
- return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", height: availableHeight, children: [
3221
- /* @__PURE__ */ jsx19(Box18, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "row", gap: 1, children: [
3222
- /* @__PURE__ */ jsx19(Text19, { bold: true, children: " Repositories" }),
3223
- /* @__PURE__ */ jsx19(Text19, { color: "gray", children: "(Loading...)" })
3354
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", height: availableHeight, children: [
3355
+ /* @__PURE__ */ jsx20(Box19, { flexDirection: "row", justifyContent: "space-between", height: 1, marginBottom: 1, children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", gap: 1, children: [
3356
+ /* @__PURE__ */ jsx20(Text20, { bold: true, children: " Repositories" }),
3357
+ /* @__PURE__ */ jsx20(Text20, { color: "gray", children: "(Loading...)" })
3224
3358
  ] }) }),
3225
- /* @__PURE__ */ jsx19(Box18, { borderStyle: "single", borderColor: "yellow", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx19(Box18, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx19(Box18, { flexDirection: "column", alignItems: "center", children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", alignItems: "center", children: [
3226
- /* @__PURE__ */ jsxs18(Box18, { height: 1, flexDirection: "row", children: [
3227
- /* @__PURE__ */ jsx19(Box18, { width: 2, flexShrink: 0, flexGrow: 0, children: /* @__PURE__ */ jsx19(Text19, { color: "cyan", children: /* @__PURE__ */ jsx19(SlowSpinner, {}) }) }),
3228
- /* @__PURE__ */ jsx19(Text19, { color: "cyan", children: refreshing ? "Refreshing..." : sortingLoading ? "Applying sort..." : "Loading repositories..." })
3359
+ /* @__PURE__ */ jsx20(Box19, { borderStyle: "single", borderColor: "yellow", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: /* @__PURE__ */ jsx20(Box19, { height: contentHeight, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx20(Box19, { flexDirection: "column", alignItems: "center", children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", alignItems: "center", children: [
3360
+ /* @__PURE__ */ jsxs19(Box19, { height: 1, flexDirection: "row", children: [
3361
+ /* @__PURE__ */ jsx20(Box19, { width: 2, flexShrink: 0, flexGrow: 0, children: /* @__PURE__ */ jsx20(Text20, { color: "cyan", children: /* @__PURE__ */ jsx20(SlowSpinner, {}) }) }),
3362
+ /* @__PURE__ */ jsx20(Text20, { color: "cyan", children: refreshing ? "Refreshing..." : sortingLoading ? "Applying sort..." : "Loading repositories..." })
3229
3363
  ] }),
3230
- /* @__PURE__ */ jsx19(Box18, { height: 1, marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "gray", children: refreshing ? "Fetching latest repository data" : sortingLoading ? `Sorting by ${sortKey} (${sortDir === "asc" ? "ascending" : "descending"})` : "Fetching your GitHub repositories" }) })
3364
+ /* @__PURE__ */ jsx20(Box19, { height: 1, marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "gray", children: refreshing ? "Fetching latest repository data" : sortingLoading ? `Sorting by ${sortKey} (${sortDir === "asc" ? "ascending" : "descending"})` : "Fetching your GitHub repositories" }) })
3231
3365
  ] }) }) }) }),
3232
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "gray", children: "Please wait..." }) })
3366
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, paddingX: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "gray", children: "Please wait..." }) })
3233
3367
  ] });
3234
3368
  }
3235
- return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", height: availableHeight, children: [
3369
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", height: availableHeight, children: [
3236
3370
  headerBar,
3237
- showSponsorReminder && /* @__PURE__ */ jsx19(Box18, { marginX: 1, marginBottom: 1, children: /* @__PURE__ */ jsx19(Box18, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", alignItems: "center", children: [
3238
- /* @__PURE__ */ jsx19(Text19, { color: "yellow", children: "\u{1F49A} Thanks for using gh-manager-cli!" }),
3239
- /* @__PURE__ */ jsx19(Text19, { color: "gray", children: "Your support helps craft more open-source tools" }),
3240
- /* @__PURE__ */ jsx19(Text19, { color: "cyan", children: "\u{1F496} github.com/sponsors/wiiiimm" })
3371
+ showSponsorReminder && /* @__PURE__ */ jsx20(Box19, { marginX: 1, marginBottom: 1, children: /* @__PURE__ */ jsx20(Box19, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", alignItems: "center", children: [
3372
+ /* @__PURE__ */ jsx20(Text20, { color: "yellow", children: "\u{1F49A} Thanks for using gh-manager-cli!" }),
3373
+ /* @__PURE__ */ jsx20(Text20, { color: "gray", children: "Your support helps craft more open-source tools" }),
3374
+ /* @__PURE__ */ jsx20(Text20, { color: "cyan", children: "\u{1F496} github.com/sponsors/wiiiimm" })
3241
3375
  ] }) }) }),
3242
- /* @__PURE__ */ jsx19(Box18, { borderStyle: "single", borderColor: modalOpen ? "gray" : "yellow", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: deleteMode && deleteTarget ? (
3376
+ /* @__PURE__ */ jsx20(Box19, { borderStyle: "single", borderColor: modalOpen ? "gray" : "yellow", paddingX: 1, paddingY: 1, marginX: 1, height: contentHeight + containerPadding + 2, flexDirection: "column", children: deleteMode && deleteTarget ? (
3243
3377
  // Centered modal; hide list content while modal is open
3244
- /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3245
- /* @__PURE__ */ jsx19(Text19, { bold: true, children: "Delete Confirmation" }),
3246
- /* @__PURE__ */ jsx19(Text19, { color: "red", children: "\u26A0\uFE0F Delete repository?" }),
3247
- /* @__PURE__ */ jsx19(Box18, { height: 2, children: /* @__PURE__ */ jsx19(Text19, { children: " " }) }),
3378
+ /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "round", borderColor: "red", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3379
+ /* @__PURE__ */ jsx20(Text20, { bold: true, children: "Delete Confirmation" }),
3380
+ /* @__PURE__ */ jsx20(Text20, { color: "red", children: "\u26A0\uFE0F Delete repository?" }),
3381
+ /* @__PURE__ */ jsx20(Box19, { height: 2, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
3248
3382
  (() => {
3249
3383
  const langName = deleteTarget.primaryLanguage?.name || "";
3250
3384
  const langColor = deleteTarget.primaryLanguage?.color || "#666666";
3251
3385
  let line1 = "";
3252
- line1 += chalk13.white(deleteTarget.nameWithOwner);
3253
- if (deleteTarget.isPrivate) line1 += chalk13.yellow(" Private");
3254
- if (deleteTarget.isArchived) line1 += chalk13.gray.dim(" Archived");
3255
- if (deleteTarget.isFork && deleteTarget.parent) line1 += chalk13.blue(` Fork of ${deleteTarget.parent.nameWithOwner}`);
3386
+ line1 += chalk14.white(deleteTarget.nameWithOwner);
3387
+ if (deleteTarget.isPrivate) line1 += chalk14.yellow(" Private");
3388
+ if (deleteTarget.isArchived) line1 += chalk14.gray.dim(" Archived");
3389
+ if (deleteTarget.isFork && deleteTarget.parent) line1 += chalk14.blue(` Fork of ${deleteTarget.parent.nameWithOwner}`);
3256
3390
  let line2 = "";
3257
- if (langName) line2 += chalk13.hex(langColor)("\u25CF ") + chalk13.gray(`${langName} `);
3258
- line2 += chalk13.gray(`\u2605 ${deleteTarget.stargazerCount} \u2442 ${deleteTarget.forkCount} Updated ${formatDate(deleteTarget.updatedAt)}`);
3259
- return /* @__PURE__ */ jsxs18(Fragment10, { children: [
3260
- /* @__PURE__ */ jsx19(Text19, { children: line1 }),
3261
- /* @__PURE__ */ jsx19(Text19, { children: line2 })
3391
+ if (langName) line2 += chalk14.hex(langColor)("\u25CF ") + chalk14.gray(`${langName} `);
3392
+ line2 += chalk14.gray(`\u2605 ${deleteTarget.stargazerCount} \u2442 ${deleteTarget.forkCount} Updated ${formatDate(deleteTarget.updatedAt)}`);
3393
+ return /* @__PURE__ */ jsxs19(Fragment10, { children: [
3394
+ /* @__PURE__ */ jsx20(Text20, { children: line1 }),
3395
+ /* @__PURE__ */ jsx20(Text20, { children: line2 })
3262
3396
  ] });
3263
3397
  })(),
3264
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsxs18(Text19, { children: [
3398
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsxs19(Text20, { children: [
3265
3399
  "Type ",
3266
- /* @__PURE__ */ jsx19(Text19, { color: "yellow", bold: true, children: deleteCode }),
3400
+ /* @__PURE__ */ jsx20(Text20, { color: "yellow", bold: true, children: deleteCode }),
3267
3401
  " to confirm."
3268
3402
  ] }) }),
3269
- !deleteConfirmStage && /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, children: [
3270
- /* @__PURE__ */ jsx19(Text19, { children: "Confirm code: " }),
3271
- /* @__PURE__ */ jsx19(
3403
+ !deleteConfirmStage && /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, children: [
3404
+ /* @__PURE__ */ jsx20(Text20, { children: "Confirm code: " }),
3405
+ /* @__PURE__ */ jsx20(
3272
3406
  TextInput5,
3273
3407
  {
3274
3408
  value: typedCode,
@@ -3295,11 +3429,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3295
3429
  }
3296
3430
  )
3297
3431
  ] }),
3298
- deleteConfirmStage && /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, flexDirection: "column", children: [
3299
- /* @__PURE__ */ jsx19(Text19, { color: "red", children: "This action will permanently delete the repository. This cannot be undone." }),
3300
- /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3301
- /* @__PURE__ */ jsx19(
3302
- Box18,
3432
+ deleteConfirmStage && /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, flexDirection: "column", children: [
3433
+ /* @__PURE__ */ jsx20(Text20, { color: "red", children: "This action will permanently delete the repository. This cannot be undone." }),
3434
+ /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3435
+ /* @__PURE__ */ jsx20(
3436
+ Box19,
3303
3437
  {
3304
3438
  borderStyle: "round",
3305
3439
  borderColor: "red",
@@ -3308,11 +3442,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3308
3442
  alignItems: "center",
3309
3443
  justifyContent: "center",
3310
3444
  flexDirection: "column",
3311
- children: /* @__PURE__ */ jsx19(Text19, { children: confirmFocus === "delete" ? chalk13.bgRed.white.bold(" Delete ") : chalk13.red.bold("Delete") })
3445
+ children: /* @__PURE__ */ jsx20(Text20, { children: confirmFocus === "delete" ? chalk14.bgRed.white.bold(" Delete ") : chalk14.red.bold("Delete") })
3312
3446
  }
3313
3447
  ),
3314
- /* @__PURE__ */ jsx19(
3315
- Box18,
3448
+ /* @__PURE__ */ jsx20(
3449
+ Box19,
3316
3450
  {
3317
3451
  borderStyle: "round",
3318
3452
  borderColor: confirmFocus === "cancel" ? "white" : "gray",
@@ -3321,16 +3455,16 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3321
3455
  alignItems: "center",
3322
3456
  justifyContent: "center",
3323
3457
  flexDirection: "column",
3324
- children: /* @__PURE__ */ jsx19(Text19, { children: confirmFocus === "cancel" ? chalk13.bgGray.white.bold(" Cancel ") : chalk13.gray.bold("Cancel") })
3458
+ children: /* @__PURE__ */ jsx20(Text20, { children: confirmFocus === "cancel" ? chalk14.bgGray.white.bold(" Cancel ") : chalk14.gray.bold("Cancel") })
3325
3459
  }
3326
3460
  )
3327
3461
  ] }),
3328
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3462
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3329
3463
  "Press Enter to ",
3330
3464
  confirmFocus === "delete" ? "Delete" : "Cancel",
3331
3465
  " | Y to Delete | C to Cancel"
3332
3466
  ] }) }),
3333
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(
3467
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(
3334
3468
  TextInput5,
3335
3469
  {
3336
3470
  value: "",
@@ -3344,18 +3478,18 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3344
3478
  }
3345
3479
  ) })
3346
3480
  ] }),
3347
- deleteError && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "magenta", children: deleteError }) }),
3348
- deleting && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "yellow", children: "Deleting..." }) })
3481
+ deleteError && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "magenta", children: deleteError }) }),
3482
+ deleting && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "yellow", children: "Deleting..." }) })
3349
3483
  ] }) })
3350
- ) : archiveMode && archiveTarget ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "round", borderColor: archiveTarget.isArchived ? "green" : "yellow", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3351
- /* @__PURE__ */ jsx19(Text19, { bold: true, children: archiveTarget.isArchived ? "Unarchive Confirmation" : "Archive Confirmation" }),
3352
- /* @__PURE__ */ jsx19(Text19, { color: archiveTarget.isArchived ? "green" : "yellow", children: archiveTarget.isArchived ? "\u21BA Unarchive repository?" : "\u26A0\uFE0F Archive repository?" }),
3353
- /* @__PURE__ */ jsx19(Box18, { height: 1, children: /* @__PURE__ */ jsx19(Text19, { children: " " }) }),
3354
- /* @__PURE__ */ jsx19(Text19, { children: archiveTarget.nameWithOwner }),
3355
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { children: archiveTarget.isArchived ? "This will make the repository active again." : "This will make the repository read-only." }) }),
3356
- /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3357
- /* @__PURE__ */ jsx19(
3358
- Box18,
3484
+ ) : archiveMode && archiveTarget ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "round", borderColor: archiveTarget.isArchived ? "green" : "yellow", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3485
+ /* @__PURE__ */ jsx20(Text20, { bold: true, children: archiveTarget.isArchived ? "Unarchive Confirmation" : "Archive Confirmation" }),
3486
+ /* @__PURE__ */ jsx20(Text20, { color: archiveTarget.isArchived ? "green" : "yellow", children: archiveTarget.isArchived ? "\u21BA Unarchive repository?" : "\u26A0\uFE0F Archive repository?" }),
3487
+ /* @__PURE__ */ jsx20(Box19, { height: 1, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
3488
+ /* @__PURE__ */ jsx20(Text20, { children: archiveTarget.nameWithOwner }),
3489
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { children: archiveTarget.isArchived ? "This will make the repository active again." : "This will make the repository read-only." }) }),
3490
+ /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3491
+ /* @__PURE__ */ jsx20(
3492
+ Box19,
3359
3493
  {
3360
3494
  borderStyle: "round",
3361
3495
  borderColor: archiveTarget.isArchived ? "green" : "yellow",
@@ -3364,11 +3498,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3364
3498
  alignItems: "center",
3365
3499
  justifyContent: "center",
3366
3500
  flexDirection: "column",
3367
- children: /* @__PURE__ */ jsx19(Text19, { children: archiveFocus === "confirm" ? chalk13.bgGreen.white.bold(` ${archiveTarget.isArchived ? "Unarchive" : "Archive"} `) : chalk13.bold[archiveTarget.isArchived ? "green" : "yellow"](archiveTarget.isArchived ? "Unarchive" : "Archive") })
3501
+ children: /* @__PURE__ */ jsx20(Text20, { children: archiveFocus === "confirm" ? chalk14.bgGreen.white.bold(` ${archiveTarget.isArchived ? "Unarchive" : "Archive"} `) : chalk14.bold[archiveTarget.isArchived ? "green" : "yellow"](archiveTarget.isArchived ? "Unarchive" : "Archive") })
3368
3502
  }
3369
3503
  ),
3370
- /* @__PURE__ */ jsx19(
3371
- Box18,
3504
+ /* @__PURE__ */ jsx20(
3505
+ Box19,
3372
3506
  {
3373
3507
  borderStyle: "round",
3374
3508
  borderColor: archiveFocus === "cancel" ? "white" : "gray",
@@ -3377,18 +3511,18 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3377
3511
  alignItems: "center",
3378
3512
  justifyContent: "center",
3379
3513
  flexDirection: "column",
3380
- children: /* @__PURE__ */ jsx19(Text19, { children: archiveFocus === "cancel" ? chalk13.bgGray.white.bold(" Cancel ") : chalk13.gray.bold("Cancel") })
3514
+ children: /* @__PURE__ */ jsx20(Text20, { children: archiveFocus === "cancel" ? chalk14.bgGray.white.bold(" Cancel ") : chalk14.gray.bold("Cancel") })
3381
3515
  }
3382
3516
  )
3383
3517
  ] }),
3384
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3518
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3385
3519
  "Press Enter to ",
3386
3520
  archiveFocus === "confirm" ? archiveTarget.isArchived ? "Unarchive" : "Archive" : "Cancel",
3387
3521
  " | Y to ",
3388
3522
  archiveTarget.isArchived ? "Unarchive" : "Archive",
3389
3523
  " | C to Cancel"
3390
3524
  ] }) }),
3391
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(
3525
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(
3392
3526
  TextInput5,
3393
3527
  {
3394
3528
  value: "",
@@ -3403,21 +3537,21 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3403
3537
  }
3404
3538
  }
3405
3539
  ) }),
3406
- archiveError && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "magenta", children: archiveError }) }),
3407
- archiving && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "yellow", children: archiveTarget.isArchived ? "Unarchiving..." : "Archiving..." }) })
3408
- ] }) }) : syncMode && syncTarget ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "round", borderColor: "blue", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3409
- /* @__PURE__ */ jsx19(Text19, { bold: true, children: "Sync Fork Confirmation" }),
3410
- /* @__PURE__ */ jsx19(Text19, { color: "blue", children: "\u27F2 Sync fork with upstream?" }),
3411
- /* @__PURE__ */ jsx19(Box18, { height: 1, children: /* @__PURE__ */ jsx19(Text19, { children: " " }) }),
3412
- /* @__PURE__ */ jsx19(Text19, { children: syncTarget.nameWithOwner }),
3413
- syncTarget.parent && /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3540
+ archiveError && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "magenta", children: archiveError }) }),
3541
+ archiving && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "yellow", children: archiveTarget.isArchived ? "Unarchiving..." : "Archiving..." }) })
3542
+ ] }) }) : syncMode && syncTarget ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "round", borderColor: "blue", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3543
+ /* @__PURE__ */ jsx20(Text20, { bold: true, children: "Sync Fork Confirmation" }),
3544
+ /* @__PURE__ */ jsx20(Text20, { color: "blue", children: "\u27F2 Sync fork with upstream?" }),
3545
+ /* @__PURE__ */ jsx20(Box19, { height: 1, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
3546
+ /* @__PURE__ */ jsx20(Text20, { children: syncTarget.nameWithOwner }),
3547
+ syncTarget.parent && /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3414
3548
  "Upstream: ",
3415
3549
  syncTarget.parent.nameWithOwner
3416
3550
  ] }),
3417
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { children: "This will merge upstream changes into your fork." }) }),
3418
- /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3419
- /* @__PURE__ */ jsx19(
3420
- Box18,
3551
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { children: "This will merge upstream changes into your fork." }) }),
3552
+ /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3553
+ /* @__PURE__ */ jsx20(
3554
+ Box19,
3421
3555
  {
3422
3556
  borderStyle: "round",
3423
3557
  borderColor: "blue",
@@ -3426,11 +3560,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3426
3560
  alignItems: "center",
3427
3561
  justifyContent: "center",
3428
3562
  flexDirection: "column",
3429
- children: /* @__PURE__ */ jsx19(Text19, { children: syncFocus === "confirm" ? chalk13.bgBlue.white.bold(" Sync ") : chalk13.blue.bold("Sync") })
3563
+ children: /* @__PURE__ */ jsx20(Text20, { children: syncFocus === "confirm" ? chalk14.bgBlue.white.bold(" Sync ") : chalk14.blue.bold("Sync") })
3430
3564
  }
3431
3565
  ),
3432
- /* @__PURE__ */ jsx19(
3433
- Box18,
3566
+ /* @__PURE__ */ jsx20(
3567
+ Box19,
3434
3568
  {
3435
3569
  borderStyle: "round",
3436
3570
  borderColor: syncFocus === "cancel" ? "white" : "gray",
@@ -3439,16 +3573,16 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3439
3573
  alignItems: "center",
3440
3574
  justifyContent: "center",
3441
3575
  flexDirection: "column",
3442
- children: /* @__PURE__ */ jsx19(Text19, { children: syncFocus === "cancel" ? chalk13.bgGray.white.bold(" Cancel ") : chalk13.gray.bold("Cancel") })
3576
+ children: /* @__PURE__ */ jsx20(Text20, { children: syncFocus === "cancel" ? chalk14.bgGray.white.bold(" Cancel ") : chalk14.gray.bold("Cancel") })
3443
3577
  }
3444
3578
  )
3445
3579
  ] }),
3446
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3580
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3447
3581
  "Press Enter to ",
3448
3582
  syncFocus === "confirm" ? "Sync" : "Cancel",
3449
3583
  " | Y to Sync | C to Cancel"
3450
3584
  ] }) }),
3451
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(
3585
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(
3452
3586
  TextInput5,
3453
3587
  {
3454
3588
  value: "",
@@ -3463,14 +3597,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3463
3597
  }
3464
3598
  }
3465
3599
  ) }),
3466
- syncError && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "magenta", children: syncError }) }),
3467
- syncing && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "yellow", children: "Syncing..." }) })
3468
- ] }) }) : logoutMode ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3469
- /* @__PURE__ */ jsx19(Text19, { bold: true, children: "Logout Confirmation" }),
3470
- /* @__PURE__ */ jsx19(Text19, { color: "cyan", children: "Are you sure you want to log out?" }),
3471
- /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3472
- /* @__PURE__ */ jsx19(
3473
- Box18,
3600
+ syncError && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "magenta", children: syncError }) }),
3601
+ syncing && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "yellow", children: "Syncing..." }) })
3602
+ ] }) }) : logoutMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 80), children: [
3603
+ /* @__PURE__ */ jsx20(Text20, { bold: true, children: "Logout Confirmation" }),
3604
+ /* @__PURE__ */ jsx20(Text20, { color: "cyan", children: "Are you sure you want to log out?" }),
3605
+ /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", gap: 6, children: [
3606
+ /* @__PURE__ */ jsx20(
3607
+ Box19,
3474
3608
  {
3475
3609
  borderStyle: "round",
3476
3610
  borderColor: "cyan",
@@ -3479,11 +3613,11 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3479
3613
  alignItems: "center",
3480
3614
  justifyContent: "center",
3481
3615
  flexDirection: "column",
3482
- children: /* @__PURE__ */ jsx19(Text19, { children: logoutFocus === "confirm" ? chalk13.bgCyan.white.bold(" Logout ") : chalk13.cyan.bold("Logout") })
3616
+ children: /* @__PURE__ */ jsx20(Text20, { children: logoutFocus === "confirm" ? chalk14.bgCyan.white.bold(" Logout ") : chalk14.cyan.bold("Logout") })
3483
3617
  }
3484
3618
  ),
3485
- /* @__PURE__ */ jsx19(
3486
- Box18,
3619
+ /* @__PURE__ */ jsx20(
3620
+ Box19,
3487
3621
  {
3488
3622
  borderStyle: "round",
3489
3623
  borderColor: logoutFocus === "cancel" ? "white" : "gray",
@@ -3492,16 +3626,16 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3492
3626
  alignItems: "center",
3493
3627
  justifyContent: "center",
3494
3628
  flexDirection: "column",
3495
- children: /* @__PURE__ */ jsx19(Text19, { children: logoutFocus === "cancel" ? chalk13.bgGray.white.bold(" Cancel ") : chalk13.gray.bold("Cancel") })
3629
+ children: /* @__PURE__ */ jsx20(Text20, { children: logoutFocus === "cancel" ? chalk14.bgGray.white.bold(" Cancel ") : chalk14.gray.bold("Cancel") })
3496
3630
  }
3497
3631
  )
3498
3632
  ] }),
3499
- /* @__PURE__ */ jsx19(Box18, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3633
+ /* @__PURE__ */ jsx20(Box19, { marginTop: 1, flexDirection: "row", justifyContent: "center", children: /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3500
3634
  "Press Enter to ",
3501
3635
  logoutFocus === "confirm" ? "Logout" : "Cancel",
3502
3636
  " | Y to Logout | C to Cancel"
3503
3637
  ] }) })
3504
- ] }) }) : orgSwitcherOpen ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3638
+ ] }) }) : orgSwitcherOpen ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3505
3639
  OrgSwitcher,
3506
3640
  {
3507
3641
  token,
@@ -3509,45 +3643,57 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3509
3643
  onSelect: handleOrgContextChange,
3510
3644
  onClose: () => setOrgSwitcherOpen(false)
3511
3645
  }
3512
- ) }) : infoMode ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: (() => {
3646
+ ) }) : infoMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: (() => {
3513
3647
  const repo = infoRepo || visibleItems[cursor];
3514
- if (!repo) return /* @__PURE__ */ jsx19(Text19, { color: "red", children: "No repository selected." });
3648
+ if (!repo) return /* @__PURE__ */ jsx20(Text20, { color: "red", children: "No repository selected." });
3515
3649
  const langName = repo.primaryLanguage?.name || "N/A";
3516
3650
  const langColor = repo.primaryLanguage?.color || "#666666";
3517
- return /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 90), children: [
3518
- /* @__PURE__ */ jsxs18(Text19, { bold: true, children: [
3651
+ return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "round", borderColor: "magenta", paddingX: 3, paddingY: 2, width: Math.min(terminalWidth - 8, 90), children: [
3652
+ /* @__PURE__ */ jsxs19(Text20, { bold: true, children: [
3519
3653
  "Repository Info ",
3520
- infoRepo ? chalk13.dim("(cached)") : ""
3654
+ infoRepo ? chalk14.dim("(cached)") : ""
3521
3655
  ] }),
3522
- /* @__PURE__ */ jsx19(Box18, { height: 1, children: /* @__PURE__ */ jsx19(Text19, { children: " " }) }),
3523
- /* @__PURE__ */ jsx19(Text19, { children: chalk13.bold(repo.nameWithOwner) }),
3524
- repo.description && /* @__PURE__ */ jsx19(Text19, { color: "gray", children: repo.description }),
3525
- /* @__PURE__ */ jsx19(Box18, { height: 1, children: /* @__PURE__ */ jsx19(Text19, { children: " " }) }),
3526
- /* @__PURE__ */ jsxs18(Text19, { children: [
3527
- repo.visibility === "PRIVATE" ? chalk13.yellow("Private") : repo.visibility === "INTERNAL" ? chalk13.magenta("Internal") : chalk13.green("Public"),
3528
- repo.isArchived ? chalk13.gray(" Archived") : "",
3529
- repo.isFork ? chalk13.blue(" Fork") : ""
3656
+ /* @__PURE__ */ jsx20(Box19, { height: 1, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
3657
+ /* @__PURE__ */ jsx20(Text20, { children: chalk14.bold(repo.nameWithOwner) }),
3658
+ repo.description && /* @__PURE__ */ jsx20(Text20, { color: "gray", children: repo.description }),
3659
+ /* @__PURE__ */ jsx20(Box19, { height: 1, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
3660
+ /* @__PURE__ */ jsxs19(Text20, { children: [
3661
+ repo.visibility === "PRIVATE" ? chalk14.yellow("Private") : repo.visibility === "INTERNAL" ? chalk14.magenta("Internal") : chalk14.green("Public"),
3662
+ repo.isArchived ? chalk14.gray(" Archived") : "",
3663
+ repo.isFork ? chalk14.blue(" Fork") : ""
3530
3664
  ] }),
3531
- /* @__PURE__ */ jsx19(Text19, { children: chalk13.gray(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount}`) }),
3532
- /* @__PURE__ */ jsxs18(Text19, { children: [
3533
- chalk13.hex(langColor)(`\u25CF `),
3534
- chalk13.gray(`${langName}`)
3665
+ /* @__PURE__ */ jsx20(Text20, { children: chalk14.gray(`\u2605 ${repo.stargazerCount} \u2442 ${repo.forkCount}`) }),
3666
+ /* @__PURE__ */ jsxs19(Text20, { children: [
3667
+ chalk14.hex(langColor)(`\u25CF `),
3668
+ chalk14.gray(`${langName}`)
3535
3669
  ] }),
3536
- /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3670
+ /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3537
3671
  "Updated: ",
3538
3672
  formatDate(repo.updatedAt),
3539
3673
  " \u2022 Pushed: ",
3540
3674
  formatDate(repo.pushedAt)
3541
3675
  ] }),
3542
- /* @__PURE__ */ jsxs18(Text19, { color: "gray", children: [
3676
+ /* @__PURE__ */ jsxs19(Text20, { color: "gray", children: [
3543
3677
  "Size: ",
3544
3678
  repo.diskUsage,
3545
3679
  " KB"
3546
3680
  ] }),
3547
- /* @__PURE__ */ jsx19(Box18, { height: 1, children: /* @__PURE__ */ jsx19(Text19, { children: " " }) }),
3548
- /* @__PURE__ */ jsx19(Text19, { color: "gray", children: "Press Esc or I to close" })
3681
+ /* @__PURE__ */ jsx20(Box19, { height: 1, children: /* @__PURE__ */ jsx20(Text20, { children: " " }) }),
3682
+ /* @__PURE__ */ jsx20(Text20, { color: "gray", children: "Press Esc or I to close" })
3549
3683
  ] });
3550
- })() }) : visibilityMode ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3684
+ })() }) : archiveFilterMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3685
+ ArchiveFilterModal,
3686
+ {
3687
+ currentFilter: archiveFilter,
3688
+ onSelect: (filter2) => {
3689
+ setArchiveFilter(filter2);
3690
+ setArchiveFilterMode(false);
3691
+ setCursor(0);
3692
+ storeUIPrefs({ archiveFilter: filter2 });
3693
+ },
3694
+ onCancel: () => setArchiveFilterMode(false)
3695
+ }
3696
+ ) }) : visibilityMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3551
3697
  VisibilityModal,
3552
3698
  {
3553
3699
  currentFilter: visibilityFilter,
@@ -3560,7 +3706,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3560
3706
  },
3561
3707
  onCancel: () => setVisibilityMode(false)
3562
3708
  }
3563
- ) }) : sortMode ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3709
+ ) }) : sortMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3564
3710
  SortModal,
3565
3711
  {
3566
3712
  currentSort: sortKey,
@@ -3572,7 +3718,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3572
3718
  },
3573
3719
  onCancel: () => setSortMode(false)
3574
3720
  }
3575
- ) }) : sortDirectionMode ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3721
+ ) }) : sortDirectionMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3576
3722
  SortDirectionModal,
3577
3723
  {
3578
3724
  currentDirection: sortDir,
@@ -3585,7 +3731,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3585
3731
  },
3586
3732
  onCancel: () => setSortDirectionMode(false)
3587
3733
  }
3588
- ) }) : changeVisibilityMode && changeVisibilityTarget ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3734
+ ) }) : changeVisibilityMode && changeVisibilityTarget ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3589
3735
  ChangeVisibilityModal,
3590
3736
  {
3591
3737
  isOpen: changeVisibilityMode,
@@ -3598,14 +3744,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3598
3744
  changing: changingVisibility,
3599
3745
  error: changeVisibilityError
3600
3746
  }
3601
- ) }) : renameMode && renameTarget ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3747
+ ) }) : renameMode && renameTarget ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3602
3748
  RenameModal,
3603
3749
  {
3604
3750
  repo: renameTarget,
3605
3751
  onRename: executeRename,
3606
3752
  onCancel: closeRenameModal
3607
3753
  }
3608
- ) }) : copyUrlMode ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3754
+ ) }) : copyUrlMode ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3609
3755
  CopyUrlModal,
3610
3756
  {
3611
3757
  repo: copyUrlTarget,
@@ -3613,7 +3759,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3613
3759
  onClose: closeCopyUrlModal,
3614
3760
  onCopy: handleCopyUrl
3615
3761
  }
3616
- ) }) : unstarMode && unstarTarget ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3762
+ ) }) : unstarMode && unstarTarget ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3617
3763
  UnstarModal,
3618
3764
  {
3619
3765
  visible: unstarMode,
@@ -3623,7 +3769,7 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3623
3769
  isUnstarring: unstarring,
3624
3770
  error: unstarError
3625
3771
  }
3626
- ) }) : starMode && starTarget ? /* @__PURE__ */ jsx19(Box18, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx19(
3772
+ ) }) : starMode && starTarget ? /* @__PURE__ */ jsx20(Box19, { height: contentHeight, alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsx20(
3627
3773
  StarModal,
3628
3774
  {
3629
3775
  visible: starMode,
@@ -3634,8 +3780,8 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3634
3780
  isStarring: starring,
3635
3781
  error: starError
3636
3782
  }
3637
- ) }) : /* @__PURE__ */ jsxs18(Fragment10, { children: [
3638
- /* @__PURE__ */ jsx19(
3783
+ ) }) : /* @__PURE__ */ jsxs19(Fragment10, { children: [
3784
+ /* @__PURE__ */ jsx20(
3639
3785
  RepoListHeader,
3640
3786
  {
3641
3787
  ownerContext,
@@ -3646,13 +3792,14 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3646
3792
  searchActive,
3647
3793
  searchLoading,
3648
3794
  visibilityFilter,
3795
+ archiveFilter,
3649
3796
  isEnterprise: isEnterpriseOrg,
3650
3797
  starsMode
3651
3798
  }
3652
3799
  ),
3653
- filterMode && /* @__PURE__ */ jsxs18(Box18, { marginBottom: 1, children: [
3654
- /* @__PURE__ */ jsx19(Text19, { children: "Search: " }),
3655
- /* @__PURE__ */ jsx19(
3800
+ filterMode && /* @__PURE__ */ jsxs19(Box19, { marginBottom: 1, children: [
3801
+ /* @__PURE__ */ jsx20(Text20, { children: "Search: " }),
3802
+ /* @__PURE__ */ jsx20(
3656
3803
  TextInput5,
3657
3804
  {
3658
3805
  value: filter,
@@ -3692,10 +3839,10 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3692
3839
  }
3693
3840
  )
3694
3841
  ] }),
3695
- /* @__PURE__ */ jsxs18(Box18, { flexDirection: "column", height: listHeight, children: [
3696
- filterMode && filter.trim().length > 0 && filter.trim().length < 3 ? /* @__PURE__ */ jsx19(Box18, { justifyContent: "center", alignItems: "center", flexGrow: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "gray", dimColor: true, children: "Type at least 3 characters to search" }) }) : visibleItems.slice(windowed.start, windowed.end).map((repo, i) => {
3842
+ /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", height: listHeight, children: [
3843
+ filterMode && filter.trim().length > 0 && filter.trim().length < 3 ? /* @__PURE__ */ jsx20(Box19, { justifyContent: "center", alignItems: "center", flexGrow: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: true, children: "Type at least 3 characters to search" }) }) : visibleItems.slice(windowed.start, windowed.end).map((repo, i) => {
3697
3844
  const idx = windowed.start + i;
3698
- return /* @__PURE__ */ jsx19(
3845
+ return /* @__PURE__ */ jsx20(
3699
3846
  RepoRow,
3700
3847
  {
3701
3848
  repo,
@@ -3709,39 +3856,39 @@ function RepoList({ token, maxVisibleRows, onLogout, viewerLogin, onOrgContextCh
3709
3856
  repo.nameWithOwner
3710
3857
  );
3711
3858
  }),
3712
- loadingMore && hasNextPage && /* @__PURE__ */ jsx19(Box18, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs18(Box18, { flexDirection: "row", children: [
3713
- /* @__PURE__ */ jsx19(Box18, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "cyan", children: /* @__PURE__ */ jsx19(SlowSpinner, {}) }) }),
3714
- /* @__PURE__ */ jsx19(Text19, { color: "cyan", children: "Loading more repositories..." })
3859
+ loadingMore && hasNextPage && /* @__PURE__ */ jsx20(Box19, { justifyContent: "center", alignItems: "center", marginTop: 1, children: /* @__PURE__ */ jsxs19(Box19, { flexDirection: "row", children: [
3860
+ /* @__PURE__ */ jsx20(Box19, { width: 2, flexShrink: 0, flexGrow: 0, marginRight: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "cyan", children: /* @__PURE__ */ jsx20(SlowSpinner, {}) }) }),
3861
+ /* @__PURE__ */ jsx20(Text20, { color: "cyan", children: "Loading more repositories..." })
3715
3862
  ] }) }),
3716
- !loading && !searchLoading && visibleItems.length === 0 && /* @__PURE__ */ jsx19(Box18, { justifyContent: "center", alignItems: "center", flexGrow: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "gray", dimColor: true, children: searchActive ? "No repositories match your search" : filter ? "No repositories match your filter" : "No repositories found" }) })
3863
+ !loading && !searchLoading && visibleItems.length === 0 && /* @__PURE__ */ jsx20(Box19, { justifyContent: "center", alignItems: "center", flexGrow: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: true, children: searchActive ? "No repositories match your search" : filter ? "No repositories match your filter" : "No repositories found" }) })
3717
3864
  ] })
3718
3865
  ] }) }),
3719
- /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
3720
- /* @__PURE__ */ jsx19(Box18, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx19(Text19, { color: "gray", dimColor: modalOpen ? true : void 0, children: "\u2191\u2193 Navigate \u2022 Ctrl+G Top \u2022 G Bottom \u2022 \u23CE/O Open \u2022 R Refresh" }) }),
3721
- /* @__PURE__ */ jsx19(Box18, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsxs18(Text19, { color: "gray", dimColor: modalOpen ? true : void 0, children: [
3722
- "/ Search \u2022 S Sort \u2022 D Direction \u2022 T Density",
3723
- !starsMode && " \u2022 V Visibility",
3866
+ /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, paddingX: 1, flexDirection: "column", children: [
3867
+ /* @__PURE__ */ jsx20(Box19, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: modalOpen ? true : void 0, children: "\u2191\u2193 Navigate \u2022 Ctrl+G Top \u2022 G Bottom \u2022 \u23CE/O Open \u2022 R Refresh" }) }),
3868
+ /* @__PURE__ */ jsx20(Box19, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsxs19(Text20, { color: "gray", dimColor: modalOpen ? true : void 0, children: [
3869
+ "/ Search \u2022 S Sort \u2022 D Direction \u2022 T Density \u2022 A Archive Filter",
3870
+ !starsMode && " \u2022 V Visibility Filter",
3724
3871
  ownerContext === "personal" && " \u2022 Shift+S Stars"
3725
3872
  ] }) }),
3726
- /* @__PURE__ */ jsx19(Box18, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx19(Text19, { color: "gray", dimColor: modalOpen ? true : void 0, children: starsMode ? "I Info \u2022 C Copy URL \u2022 U Unstar Repository" : "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" }) }),
3727
- /* @__PURE__ */ jsx19(Box18, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx19(Text19, { color: "gray", dimColor: modalOpen ? true : void 0, children: "K Cache Info \u2022 W Org Switch \u2022 Del/Backspace Delete \u2022 Ctrl+L Logout \u2022 Q Quit" }) }),
3728
- /* @__PURE__ */ jsx19(Box18, { width: terminalWidth, justifyContent: "center", marginTop: 1, children: /* @__PURE__ */ jsx19(Text19, { color: "yellow", dimColor: modalOpen ? true : void 0, children: "\u{1F496} Sponsor on GitHub: github.com/sponsors/wiiiimm" }) })
3873
+ /* @__PURE__ */ jsx20(Box19, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: modalOpen ? true : void 0, children: starsMode ? "I Info \u2022 C Copy URL \u2022 U Unstar Repository" : "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" }) }),
3874
+ /* @__PURE__ */ jsx20(Box19, { width: terminalWidth, justifyContent: "center", children: /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: modalOpen ? true : void 0, children: "K Cache Info \u2022 W Org Switch \u2022 Del/Backspace Delete \u2022 Ctrl+L Logout \u2022 Q Quit" }) }),
3875
+ /* @__PURE__ */ jsx20(Box19, { width: terminalWidth, justifyContent: "center", marginTop: 1, children: /* @__PURE__ */ jsx20(Text20, { color: "yellow", dimColor: modalOpen ? true : void 0, children: "\u{1F496} Sponsor on GitHub: github.com/sponsors/wiiiimm" }) })
3729
3876
  ] }),
3730
- process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsxs18(Box18, { marginTop: 1, borderStyle: "single", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [
3731
- /* @__PURE__ */ jsx19(Text19, { bold: true, color: "yellow", children: "Debug Messages:" }),
3732
- debugMessages.length === 0 ? /* @__PURE__ */ jsx19(Text19, { color: "gray", children: "No debug messages yet..." }) : debugMessages.map((msg, i) => /* @__PURE__ */ jsx19(Text19, { color: "gray", children: msg }, i))
3877
+ process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsxs19(Box19, { marginTop: 1, borderStyle: "single", borderColor: "yellow", paddingX: 1, flexDirection: "column", children: [
3878
+ /* @__PURE__ */ jsx20(Text20, { bold: true, color: "yellow", children: "Debug Messages:" }),
3879
+ debugMessages.length === 0 ? /* @__PURE__ */ jsx20(Text20, { color: "gray", children: "No debug messages yet..." }) : debugMessages.map((msg, i) => /* @__PURE__ */ jsx20(Text20, { color: "gray", children: msg }, i))
3733
3880
  ] }),
3734
- copyToast && /* @__PURE__ */ jsx19(Box18, { marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ jsx19(Box18, { borderStyle: "round", borderColor: copyToast.includes("Failed") ? "red" : "green", paddingX: 2, paddingY: 0, children: /* @__PURE__ */ jsx19(Text19, { color: copyToast.includes("Failed") ? "red" : "green", children: copyToast }) }) })
3881
+ copyToast && /* @__PURE__ */ jsx20(Box19, { marginTop: 1, justifyContent: "center", children: /* @__PURE__ */ jsx20(Box19, { borderStyle: "round", borderColor: copyToast.includes("Failed") ? "red" : "green", paddingX: 2, paddingY: 0, children: /* @__PURE__ */ jsx20(Text20, { color: copyToast.includes("Failed") ? "red" : "green", children: copyToast }) }) })
3735
3882
  ] });
3736
3883
  }
3737
3884
 
3738
3885
  // src/ui/components/auth/AuthMethodSelector.tsx
3739
- import { useState as useState16 } from "react";
3740
- import { Box as Box19, Text as Text20, useInput as useInput16 } from "ink";
3741
- import chalk14 from "chalk";
3742
- import { jsx as jsx20, jsxs as jsxs19 } from "react/jsx-runtime";
3886
+ import { useState as useState17 } from "react";
3887
+ import { Box as Box20, Text as Text21, useInput as useInput17 } from "ink";
3888
+ import chalk15 from "chalk";
3889
+ import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
3743
3890
  function AuthMethodSelector({ onSelect, onQuit }) {
3744
- const [selectedIndex, setSelectedIndex] = useState16(0);
3891
+ const [selectedIndex, setSelectedIndex] = useState17(0);
3745
3892
  const methods = [
3746
3893
  {
3747
3894
  key: "oauth",
@@ -3754,7 +3901,7 @@ function AuthMethodSelector({ onSelect, onQuit }) {
3754
3901
  description: "Manually enter a GitHub Personal Access Token"
3755
3902
  }
3756
3903
  ];
3757
- useInput16((input, key) => {
3904
+ useInput17((input, key) => {
3758
3905
  if (key.escape || input?.toLowerCase() === "q") {
3759
3906
  if (onQuit) {
3760
3907
  onQuit();
@@ -3773,33 +3920,33 @@ function AuthMethodSelector({ onSelect, onQuit }) {
3773
3920
  onSelect("pat");
3774
3921
  }
3775
3922
  });
3776
- return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [
3777
- /* @__PURE__ */ jsx20(Text20, { bold: true, marginBottom: 1, children: "Choose Authentication Method" }),
3778
- /* @__PURE__ */ jsx20(Box19, { flexDirection: "column", marginY: 1, children: methods.map((method, index) => {
3923
+ return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, children: [
3924
+ /* @__PURE__ */ jsx21(Text21, { bold: true, marginBottom: 1, children: "Choose Authentication Method" }),
3925
+ /* @__PURE__ */ jsx21(Box20, { flexDirection: "column", marginY: 1, children: methods.map((method, index) => {
3779
3926
  const isSelected = index === selectedIndex;
3780
- const prefix = isSelected ? chalk14.cyan("\u203A") : " ";
3927
+ const prefix = isSelected ? chalk15.cyan("\u203A") : " ";
3781
3928
  const numberPrefix = `${index + 1}.`;
3782
- return /* @__PURE__ */ jsxs19(Box19, { flexDirection: "column", marginBottom: 1, children: [
3783
- /* @__PURE__ */ jsx20(Text20, { children: /* @__PURE__ */ jsxs19(Text20, { color: isSelected ? "cyan" : void 0, bold: isSelected, children: [
3929
+ return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", marginBottom: 1, children: [
3930
+ /* @__PURE__ */ jsx21(Text21, { children: /* @__PURE__ */ jsxs20(Text21, { color: isSelected ? "cyan" : void 0, bold: isSelected, children: [
3784
3931
  prefix,
3785
3932
  " ",
3786
3933
  numberPrefix,
3787
3934
  " ",
3788
3935
  method.label
3789
3936
  ] }) }),
3790
- /* @__PURE__ */ jsxs19(Text20, { color: "gray", dimColor: true, children: [
3937
+ /* @__PURE__ */ jsxs20(Text21, { color: "gray", dimColor: true, children: [
3791
3938
  " ",
3792
3939
  method.description
3793
3940
  ] })
3794
3941
  ] }, method.key);
3795
3942
  }) }),
3796
- /* @__PURE__ */ jsx20(Text20, { color: "gray", dimColor: true, marginTop: 1, children: "Use arrow keys to navigate, Enter to select, or press 1/2 \u2022 Q/Esc to quit" })
3943
+ /* @__PURE__ */ jsx21(Text21, { color: "gray", dimColor: true, marginTop: 1, children: "Use arrow keys to navigate, Enter to select, or press 1/2 \u2022 Q/Esc to quit" })
3797
3944
  ] });
3798
3945
  }
3799
3946
 
3800
3947
  // src/ui/components/auth/OAuthProgress.tsx
3801
- import { Box as Box20, Text as Text21 } from "ink";
3802
- import { jsx as jsx21, jsxs as jsxs20 } from "react/jsx-runtime";
3948
+ import { Box as Box21, Text as Text22 } from "ink";
3949
+ import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
3803
3950
  function OAuthProgress({ status, error, deviceCode }) {
3804
3951
  const statusMessages = {
3805
3952
  initializing: {
@@ -3836,69 +3983,69 @@ function OAuthProgress({ status, error, deviceCode }) {
3836
3983
  }
3837
3984
  };
3838
3985
  const { message, showSpinner } = statusMessages[status];
3839
- return /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", borderStyle: "single", borderColor: status === "error" ? "red" : "cyan", paddingX: 2, paddingY: 1, children: [
3840
- /* @__PURE__ */ jsx21(Text21, { bold: true, marginBottom: 1, children: "GitHub OAuth Authentication" }),
3841
- /* @__PURE__ */ jsx21(Box20, { marginY: 1, children: showSpinner ? /* @__PURE__ */ jsxs20(Box20, { children: [
3842
- /* @__PURE__ */ jsx21(Text21, { color: "green", children: /* @__PURE__ */ jsx21(SlowSpinner, { interval: 2e3 }) }),
3843
- /* @__PURE__ */ jsxs20(Text21, { children: [
3986
+ return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", borderStyle: "single", borderColor: status === "error" ? "red" : "cyan", paddingX: 2, paddingY: 1, children: [
3987
+ /* @__PURE__ */ jsx22(Text22, { bold: true, marginBottom: 1, children: "GitHub OAuth Authentication" }),
3988
+ /* @__PURE__ */ jsx22(Box21, { marginY: 1, children: showSpinner ? /* @__PURE__ */ jsxs21(Box21, { children: [
3989
+ /* @__PURE__ */ jsx22(Text22, { color: "green", children: /* @__PURE__ */ jsx22(SlowSpinner, { interval: 2e3 }) }),
3990
+ /* @__PURE__ */ jsxs21(Text22, { children: [
3844
3991
  " ",
3845
3992
  message
3846
3993
  ] })
3847
- ] }) : /* @__PURE__ */ jsxs20(Text21, { color: status === "error" ? "red" : "green", children: [
3994
+ ] }) : /* @__PURE__ */ jsxs21(Text22, { color: status === "error" ? "red" : "green", children: [
3848
3995
  status === "error" ? "\u2717" : "\u2713",
3849
3996
  " ",
3850
3997
  message
3851
3998
  ] }) }),
3852
- (status === "waiting_for_authorization" || status === "polling_for_token") && deviceCode && /* @__PURE__ */ jsxs20(Box20, { marginY: 1, flexDirection: "column", children: [
3853
- /* @__PURE__ */ jsx21(Text21, { bold: true, color: "cyan", marginBottom: 1, children: "\u{1F4CB} Please complete these steps:" }),
3854
- /* @__PURE__ */ jsxs20(Box20, { marginBottom: 1, children: [
3855
- /* @__PURE__ */ jsx21(Text21, { children: "1. Visit: " }),
3856
- /* @__PURE__ */ jsx21(Text21, { bold: true, color: "blue", children: deviceCode.verification_uri })
3999
+ (status === "waiting_for_authorization" || status === "polling_for_token") && deviceCode && /* @__PURE__ */ jsxs21(Box21, { marginY: 1, flexDirection: "column", children: [
4000
+ /* @__PURE__ */ jsx22(Text22, { bold: true, color: "cyan", marginBottom: 1, children: "\u{1F4CB} Please complete these steps:" }),
4001
+ /* @__PURE__ */ jsxs21(Box21, { marginBottom: 1, children: [
4002
+ /* @__PURE__ */ jsx22(Text22, { children: "1. Visit: " }),
4003
+ /* @__PURE__ */ jsx22(Text22, { bold: true, color: "blue", children: deviceCode.verification_uri })
3857
4004
  ] }),
3858
- /* @__PURE__ */ jsxs20(Box20, { marginBottom: 1, flexDirection: "column", children: [
3859
- /* @__PURE__ */ jsx21(Text21, { children: "2. Enter this code:" }),
3860
- /* @__PURE__ */ jsx21(Box20, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, marginTop: 1, children: /* @__PURE__ */ jsx21(Text21, { bold: true, color: "yellow", children: deviceCode.user_code }) })
4005
+ /* @__PURE__ */ jsxs21(Box21, { marginBottom: 1, flexDirection: "column", children: [
4006
+ /* @__PURE__ */ jsx22(Text22, { children: "2. Enter this code:" }),
4007
+ /* @__PURE__ */ jsx22(Box21, { borderStyle: "single", borderColor: "yellow", paddingX: 2, paddingY: 1, marginTop: 1, children: /* @__PURE__ */ jsx22(Text22, { bold: true, color: "yellow", children: deviceCode.user_code }) })
3861
4008
  ] }),
3862
- status === "waiting_for_authorization" && /* @__PURE__ */ jsx21(Text21, { color: "gray", marginTop: 1, children: "Your browser should open automatically." }),
3863
- status === "polling_for_token" && /* @__PURE__ */ jsxs20(Box20, { flexDirection: "column", marginTop: 1, children: [
3864
- /* @__PURE__ */ jsx21(Text21, { color: "gray", children: "Waiting for you to complete authorization in your browser..." }),
3865
- /* @__PURE__ */ jsx21(Text21, { color: "gray", dimColor: true, marginTop: 1, children: "This will timeout in 15 minutes. Press Esc to cancel." })
4009
+ status === "waiting_for_authorization" && /* @__PURE__ */ jsx22(Text22, { color: "gray", marginTop: 1, children: "Your browser should open automatically." }),
4010
+ status === "polling_for_token" && /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", marginTop: 1, children: [
4011
+ /* @__PURE__ */ jsx22(Text22, { color: "gray", children: "Waiting for you to complete authorization in your browser..." }),
4012
+ /* @__PURE__ */ jsx22(Text22, { color: "gray", dimColor: true, marginTop: 1, children: "This will timeout in 15 minutes. Press Esc to cancel." })
3866
4013
  ] })
3867
4014
  ] }),
3868
- status === "error" && error && /* @__PURE__ */ jsxs20(Box20, { marginY: 1, flexDirection: "column", children: [
3869
- /* @__PURE__ */ jsx21(Text21, { color: "red", children: error }),
3870
- /* @__PURE__ */ jsx21(Text21, { color: "gray", marginTop: 1, children: "Press Esc to go back and try again." })
4015
+ status === "error" && error && /* @__PURE__ */ jsxs21(Box21, { marginY: 1, flexDirection: "column", children: [
4016
+ /* @__PURE__ */ jsx22(Text22, { color: "red", children: error }),
4017
+ /* @__PURE__ */ jsx22(Text22, { color: "gray", marginTop: 1, children: "Press Esc to go back and try again." })
3871
4018
  ] }),
3872
- status === "success" && /* @__PURE__ */ jsx21(Text21, { color: "gray", marginTop: 1, children: "Returning to application..." })
4019
+ status === "success" && /* @__PURE__ */ jsx22(Text22, { color: "gray", marginTop: 1, children: "Returning to application..." })
3873
4020
  ] });
3874
4021
  }
3875
4022
 
3876
4023
  // src/ui/App.tsx
3877
- import { jsx as jsx22, jsxs as jsxs21 } from "react/jsx-runtime";
4024
+ import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
3878
4025
  var packageJson = require_package();
3879
4026
  function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlineTokenEphemeral }) {
3880
4027
  const { exit } = useApp2();
3881
4028
  const { stdout } = useStdout2();
3882
- const [mode, setMode] = useState17("checking");
3883
- const [token, setToken] = useState17(null);
3884
- const [input, setInput] = useState17("");
3885
- const [error, setError] = useState17(null);
3886
- const [viewer, setViewer] = useState17(null);
3887
- const [rateLimitReset, setRateLimitReset] = useState17(null);
3888
- const [wasRateLimited, setWasRateLimited] = useState17(false);
3889
- const [orgContext, setOrgContext] = useState17("personal");
3890
- const [authMethod, setAuthMethod] = useState17("pat");
3891
- const [oauthStatus, setOAuthStatus] = useState17("initializing");
3892
- const [tokenSource, setTokenSource] = useState17("pat");
3893
- const [sessionTokenOrigin, setSessionTokenOrigin] = useState17("stored");
3894
- const [deviceCodeResponse, setDeviceCodeResponse] = useState17(null);
3895
- const [oauthDeviceCode, setOauthDeviceCode] = useState17(null);
3896
- const [dims, setDims] = useState17(() => {
4029
+ const [mode, setMode] = useState18("checking");
4030
+ const [token, setToken] = useState18(null);
4031
+ const [input, setInput] = useState18("");
4032
+ const [error, setError] = useState18(null);
4033
+ const [viewer, setViewer] = useState18(null);
4034
+ const [rateLimitReset, setRateLimitReset] = useState18(null);
4035
+ const [wasRateLimited, setWasRateLimited] = useState18(false);
4036
+ const [orgContext, setOrgContext] = useState18("personal");
4037
+ const [authMethod, setAuthMethod] = useState18("pat");
4038
+ const [oauthStatus, setOAuthStatus] = useState18("initializing");
4039
+ const [tokenSource, setTokenSource] = useState18("pat");
4040
+ const [sessionTokenOrigin, setSessionTokenOrigin] = useState18("stored");
4041
+ const [deviceCodeResponse, setDeviceCodeResponse] = useState18(null);
4042
+ const [oauthDeviceCode, setOauthDeviceCode] = useState18(null);
4043
+ const [dims, setDims] = useState18(() => {
3897
4044
  const cols = stdout?.columns ?? 100;
3898
4045
  const rows = stdout?.rows ?? 30;
3899
4046
  return { cols, rows };
3900
4047
  });
3901
- useEffect12(() => {
4048
+ useEffect13(() => {
3902
4049
  if (!stdout) return;
3903
4050
  const onResize = () => {
3904
4051
  const cols = stdout.columns ?? 100;
@@ -3910,7 +4057,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
3910
4057
  stdout.off?.("resize", onResize);
3911
4058
  };
3912
4059
  }, [stdout]);
3913
- useEffect12(() => {
4060
+ useEffect13(() => {
3914
4061
  const env = getTokenFromEnv();
3915
4062
  const stored = getStoredToken();
3916
4063
  const source = getTokenSource();
@@ -3934,7 +4081,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
3934
4081
  setMode("auth_method_selection");
3935
4082
  }
3936
4083
  }, [inlineToken2]);
3937
- useEffect12(() => {
4084
+ useEffect13(() => {
3938
4085
  if (mode !== "oauth_flow") return;
3939
4086
  (async () => {
3940
4087
  try {
@@ -3986,7 +4133,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
3986
4133
  setMode("oauth_flow");
3987
4134
  }
3988
4135
  };
3989
- useEffect12(() => {
4136
+ useEffect13(() => {
3990
4137
  (async () => {
3991
4138
  if (mode !== "validating" || !token) return;
3992
4139
  const timeoutId = setTimeout(() => {
@@ -4098,7 +4245,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4098
4245
  setTokenSource("pat");
4099
4246
  setMode("auth_method_selection");
4100
4247
  };
4101
- useInput17((input2, key) => {
4248
+ useInput18((input2, key) => {
4102
4249
  if ((mode === "prompt" || mode === "auth_method_selection") && key.escape) {
4103
4250
  exit();
4104
4251
  }
@@ -4130,19 +4277,19 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4130
4277
  }
4131
4278
  });
4132
4279
  const verticalPadding = Math.floor(dims.rows * 0.05);
4133
- const header = useMemo2(() => /* @__PURE__ */ jsxs21(Box21, { flexDirection: "row", justifyContent: "space-between", marginBottom: 1, children: [
4134
- /* @__PURE__ */ jsxs21(Box21, { flexDirection: "row", gap: 1, children: [
4135
- /* @__PURE__ */ jsxs21(Text22, { bold: true, color: "cyan", children: [
4280
+ const header = useMemo2(() => /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", justifyContent: "space-between", marginBottom: 1, children: [
4281
+ /* @__PURE__ */ jsxs22(Box22, { flexDirection: "row", gap: 1, children: [
4282
+ /* @__PURE__ */ jsxs22(Text23, { bold: true, color: "cyan", children: [
4136
4283
  " ",
4137
4284
  "GitHub Repository Manager"
4138
4285
  ] }),
4139
- /* @__PURE__ */ jsxs21(Text22, { color: "gray", dimColor: true, children: [
4286
+ /* @__PURE__ */ jsxs22(Text23, { color: "gray", dimColor: true, children: [
4140
4287
  "v",
4141
4288
  packageJson.version
4142
4289
  ] }),
4143
- process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsx22(Text22, { backgroundColor: "blue", color: "white", children: " debug mode " })
4290
+ process.env.GH_MANAGER_DEBUG === "1" && /* @__PURE__ */ jsx23(Text23, { backgroundColor: "blue", color: "white", children: " debug mode " })
4144
4291
  ] }),
4145
- viewer && /* @__PURE__ */ jsx22(Text22, { color: "gray", children: orgContext !== "personal" && orgContext.login ? `${orgContext.login}/@${viewer} ` : `@${viewer} ` })
4292
+ viewer && /* @__PURE__ */ jsx23(Text23, { color: "gray", children: orgContext !== "personal" && orgContext.login ? `${orgContext.login}/@${viewer} ` : `@${viewer} ` })
4146
4293
  ] }), [viewer, orgContext]);
4147
4294
  if (mode === "rate_limited") {
4148
4295
  const formatResetTime = (resetTime) => {
@@ -4165,70 +4312,70 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4165
4312
  return "Unknown";
4166
4313
  }
4167
4314
  };
4168
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4315
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4169
4316
  header,
4170
- /* @__PURE__ */ jsx22(Box21, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs21(Box21, { borderStyle: "single", borderColor: "yellow", paddingX: 3, paddingY: 2, flexDirection: "column", width: Math.min(dims.cols - 8, 80), children: [
4171
- /* @__PURE__ */ jsx22(Text22, { bold: true, color: "yellow", marginBottom: 1, children: "\u26A0\uFE0F Rate Limit Exceeded" }),
4172
- /* @__PURE__ */ jsx22(Text22, { color: "gray", marginBottom: 1, children: "You've hit GitHub's API rate limit for your token." }),
4173
- /* @__PURE__ */ jsx22(Text22, { color: "gray", marginBottom: 1, children: "This happens when you make too many requests in a short time." }),
4174
- rateLimitReset && /* @__PURE__ */ jsxs21(Box21, { marginTop: 1, marginBottom: 1, children: [
4175
- /* @__PURE__ */ jsxs21(Text22, { children: [
4176
- /* @__PURE__ */ jsx22(Text22, { color: "cyan", children: "Reset in:" }),
4317
+ /* @__PURE__ */ jsx23(Box22, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs22(Box22, { borderStyle: "single", borderColor: "yellow", paddingX: 3, paddingY: 2, flexDirection: "column", width: Math.min(dims.cols - 8, 80), children: [
4318
+ /* @__PURE__ */ jsx23(Text23, { bold: true, color: "yellow", marginBottom: 1, children: "\u26A0\uFE0F Rate Limit Exceeded" }),
4319
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", marginBottom: 1, children: "You've hit GitHub's API rate limit for your token." }),
4320
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", marginBottom: 1, children: "This happens when you make too many requests in a short time." }),
4321
+ rateLimitReset && /* @__PURE__ */ jsxs22(Box22, { marginTop: 1, marginBottom: 1, children: [
4322
+ /* @__PURE__ */ jsxs22(Text23, { children: [
4323
+ /* @__PURE__ */ jsx23(Text23, { color: "cyan", children: "Reset in:" }),
4177
4324
  " ",
4178
- /* @__PURE__ */ jsx22(Text22, { bold: true, children: formatResetTime(rateLimitReset) })
4325
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: formatResetTime(rateLimitReset) })
4179
4326
  ] }),
4180
- /* @__PURE__ */ jsxs21(Text22, { color: "gray", dimColor: true, children: [
4327
+ /* @__PURE__ */ jsxs22(Text23, { color: "gray", dimColor: true, children: [
4181
4328
  "(",
4182
4329
  new Date(rateLimitReset).toLocaleTimeString(),
4183
4330
  ")"
4184
4331
  ] })
4185
4332
  ] }),
4186
- /* @__PURE__ */ jsxs21(Box21, { marginTop: 2, flexDirection: "column", gap: 1, children: [
4187
- /* @__PURE__ */ jsx22(Text22, { bold: true, children: "What would you like to do?" }),
4188
- /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", paddingLeft: 2, children: [
4189
- /* @__PURE__ */ jsxs21(Text22, { children: [
4190
- /* @__PURE__ */ jsx22(Text22, { color: "cyan", bold: true, children: "R" }),
4333
+ /* @__PURE__ */ jsxs22(Box22, { marginTop: 2, flexDirection: "column", gap: 1, children: [
4334
+ /* @__PURE__ */ jsx23(Text23, { bold: true, children: "What would you like to do?" }),
4335
+ /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", paddingLeft: 2, children: [
4336
+ /* @__PURE__ */ jsxs22(Text23, { children: [
4337
+ /* @__PURE__ */ jsx23(Text23, { color: "cyan", bold: true, children: "R" }),
4191
4338
  " - Retry now ",
4192
4339
  rateLimitReset && formatResetTime(rateLimitReset) !== "Now (should be reset)" ? "(likely to fail until reset)" : "(should work now)"
4193
4340
  ] }),
4194
- /* @__PURE__ */ jsxs21(Text22, { children: [
4195
- /* @__PURE__ */ jsx22(Text22, { color: "cyan", bold: true, children: "L" }),
4341
+ /* @__PURE__ */ jsxs22(Text23, { children: [
4342
+ /* @__PURE__ */ jsx23(Text23, { color: "cyan", bold: true, children: "L" }),
4196
4343
  " - Logout and choose authentication method"
4197
4344
  ] }),
4198
- /* @__PURE__ */ jsxs21(Text22, { children: [
4199
- /* @__PURE__ */ jsx22(Text22, { color: "gray", bold: true, children: "Q/Esc" }),
4345
+ /* @__PURE__ */ jsxs22(Text23, { children: [
4346
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", bold: true, children: "Q/Esc" }),
4200
4347
  " - Quit application"
4201
4348
  ] })
4202
4349
  ] })
4203
4350
  ] }),
4204
- /* @__PURE__ */ jsx22(Text22, { color: "gray", dimColor: true, marginTop: 2, children: "Tip: Using multiple tokens or waiting between requests can help avoid rate limits." })
4351
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, marginTop: 2, children: "Tip: Using multiple tokens or waiting between requests can help avoid rate limits." })
4205
4352
  ] }) })
4206
4353
  ] });
4207
4354
  }
4208
4355
  if (mode === "auth_method_selection") {
4209
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4356
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4210
4357
  header,
4211
- /* @__PURE__ */ jsx22(Box21, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", alignItems: "center", children: [
4212
- /* @__PURE__ */ jsx22(AuthMethodSelector, { onSelect: handleAuthMethodSelect }),
4213
- error && /* @__PURE__ */ jsx22(Text22, { color: "red", marginTop: 1, children: error })
4358
+ /* @__PURE__ */ jsx23(Box22, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", alignItems: "center", children: [
4359
+ /* @__PURE__ */ jsx23(AuthMethodSelector, { onSelect: handleAuthMethodSelect }),
4360
+ error && /* @__PURE__ */ jsx23(Text23, { color: "red", marginTop: 1, children: error })
4214
4361
  ] }) })
4215
4362
  ] });
4216
4363
  }
4217
4364
  if (mode === "oauth_flow") {
4218
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4365
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4219
4366
  header,
4220
- /* @__PURE__ */ jsx22(Box21, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx22(OAuthProgress, { status: oauthStatus, error: error || void 0, deviceCode: oauthDeviceCode || void 0 }) })
4367
+ /* @__PURE__ */ jsx23(Box22, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx23(OAuthProgress, { status: oauthStatus, error: error || void 0, deviceCode: oauthDeviceCode || void 0 }) })
4221
4368
  ] });
4222
4369
  }
4223
4370
  if (mode === "prompt") {
4224
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4371
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4225
4372
  header,
4226
- /* @__PURE__ */ jsx22(Box21, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs21(Box21, { borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, flexDirection: "column", children: [
4227
- /* @__PURE__ */ jsx22(Text22, { bold: true, marginBottom: 1, children: "Authentication Required" }),
4228
- /* @__PURE__ */ jsx22(Text22, { color: "gray", marginBottom: 1, children: "Enter your GitHub Personal Access Token" }),
4229
- /* @__PURE__ */ jsxs21(Box21, { children: [
4230
- /* @__PURE__ */ jsx22(Text22, { children: "Token: " }),
4231
- /* @__PURE__ */ jsx22(
4373
+ /* @__PURE__ */ jsx23(Box22, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs22(Box22, { borderStyle: "single", borderColor: "cyan", paddingX: 2, paddingY: 1, flexDirection: "column", children: [
4374
+ /* @__PURE__ */ jsx23(Text23, { bold: true, marginBottom: 1, children: "Authentication Required" }),
4375
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", marginBottom: 1, children: "Enter your GitHub Personal Access Token" }),
4376
+ /* @__PURE__ */ jsxs22(Box22, { children: [
4377
+ /* @__PURE__ */ jsx23(Text23, { children: "Token: " }),
4378
+ /* @__PURE__ */ jsx23(
4232
4379
  TextInput6,
4233
4380
  {
4234
4381
  value: input,
@@ -4238,30 +4385,30 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4238
4385
  }
4239
4386
  )
4240
4387
  ] }),
4241
- error && /* @__PURE__ */ jsx22(Text22, { color: "red", marginTop: 1, children: error }),
4242
- /* @__PURE__ */ jsx22(Text22, { color: "gray", dimColor: true, marginTop: 1, children: "The token will be stored securely in your local config" }),
4243
- /* @__PURE__ */ jsx22(Text22, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to go back" })
4388
+ error && /* @__PURE__ */ jsx23(Text23, { color: "red", marginTop: 1, children: error }),
4389
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, marginTop: 1, children: "The token will be stored securely in your local config" }),
4390
+ /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to go back" })
4244
4391
  ] }) })
4245
4392
  ] });
4246
4393
  }
4247
4394
  if (mode === "validating" || mode === "checking") {
4248
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4395
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4249
4396
  header,
4250
- /* @__PURE__ */ jsx22(Box21, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", alignItems: "center", children: [
4251
- /* @__PURE__ */ jsx22(Text22, { color: "yellow", children: "Validating token..." }),
4252
- mode === "validating" && /* @__PURE__ */ jsx22(Text22, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to cancel" })
4397
+ /* @__PURE__ */ jsx23(Box22, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", alignItems: "center", children: [
4398
+ /* @__PURE__ */ jsx23(Text23, { color: "yellow", children: "Validating token..." }),
4399
+ mode === "validating" && /* @__PURE__ */ jsx23(Text23, { color: "gray", dimColor: true, marginTop: 1, children: "Press Esc to cancel" })
4253
4400
  ] }) })
4254
4401
  ] });
4255
4402
  }
4256
4403
  if (mode === "error") {
4257
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4404
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4258
4405
  header,
4259
- /* @__PURE__ */ jsx22(Box21, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx22(Text22, { color: "red", children: error ?? "Unexpected error" }) })
4406
+ /* @__PURE__ */ jsx23(Box22, { flexGrow: 1, justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsx23(Text23, { color: "red", children: error ?? "Unexpected error" }) })
4260
4407
  ] });
4261
4408
  }
4262
- return /* @__PURE__ */ jsxs21(Box21, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4409
+ return /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", height: dims.rows, paddingX: 2, paddingTop: verticalPadding, paddingBottom: verticalPadding, children: [
4263
4410
  header,
4264
- /* @__PURE__ */ jsx22(
4411
+ /* @__PURE__ */ jsx23(
4265
4412
  RepoList,
4266
4413
  {
4267
4414
  token,
@@ -4276,7 +4423,7 @@ function App({ initialOrgSlug: initialOrgSlug2, inlineToken: inlineToken2, inlin
4276
4423
  }
4277
4424
 
4278
4425
  // src/index.tsx
4279
- import { jsx as jsx23, jsxs as jsxs22 } from "react/jsx-runtime";
4426
+ import { jsx as jsx24, jsxs as jsxs23 } from "react/jsx-runtime";
4280
4427
  var argv = process.argv.slice(2);
4281
4428
  var getFlagValue = (name) => {
4282
4429
  const idx = argv.findIndex((a) => a === `--${name}` || a.startsWith(`--${name}=`));
@@ -4389,8 +4536,8 @@ var inlineToken = (() => {
4389
4536
  })();
4390
4537
  logger.debug("Rendering UI");
4391
4538
  var { unmount } = render(
4392
- /* @__PURE__ */ jsxs22(Box22, { flexDirection: "column", children: [
4393
- /* @__PURE__ */ jsx23(App, { initialOrgSlug, inlineToken, inlineTokenEphemeral: Boolean(inlineToken) }),
4394
- /* @__PURE__ */ jsx23(Text23, { color: "gray" })
4539
+ /* @__PURE__ */ jsxs23(Box23, { flexDirection: "column", children: [
4540
+ /* @__PURE__ */ jsx24(App, { initialOrgSlug, inlineToken, inlineTokenEphemeral: Boolean(inlineToken) }),
4541
+ /* @__PURE__ */ jsx24(Text24, { color: "gray" })
4395
4542
  ] })
4396
4543
  );