ccstatusline 2.1.2 → 2.1.3

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.
@@ -39273,7 +39273,7 @@ Gradient.propTypes = {
39273
39273
  var dist_default4 = Gradient;
39274
39274
 
39275
39275
  // src/tui/App.tsx
39276
- var import_react45 = __toESM(require_react(), 1);
39276
+ var import_react46 = __toESM(require_react(), 1);
39277
39277
 
39278
39278
  // src/utils/claude-settings.ts
39279
39279
  import { execSync } from "child_process";
@@ -51469,7 +51469,7 @@ import { execSync as execSync3 } from "child_process";
51469
51469
  import * as fs5 from "fs";
51470
51470
  import * as path4 from "path";
51471
51471
  var __dirname = "/Users/sirmalloc/Projects/Personal/ccstatusline/src/utils";
51472
- var PACKAGE_VERSION = "2.1.2";
51472
+ var PACKAGE_VERSION = "2.1.3";
51473
51473
  function getPackageVersion() {
51474
51474
  if (/^\d+\.\d+\.\d+/.test(PACKAGE_VERSION)) {
51475
51475
  return PACKAGE_VERSION;
@@ -51957,7 +51957,7 @@ function SelectInput({ items = [], isFocused = true, initialIndex = 0, indicator
51957
51957
  }
51958
51958
  var SelectInput_default = SelectInput;
51959
51959
  // src/tui/components/ColorMenu.tsx
51960
- var import_react33 = __toESM(require_react(), 1);
51960
+ var import_react34 = __toESM(require_react(), 1);
51961
51961
 
51962
51962
  // src/utils/colors.ts
51963
51963
  function createColorMap() {
@@ -52790,6 +52790,206 @@ function getContextWindowContextLengthTokens(data) {
52790
52790
  return getContextWindowMetrics(data).contextLengthTokens;
52791
52791
  }
52792
52792
 
52793
+ // src/utils/ansi.ts
52794
+ var ESC2 = "\x1B";
52795
+ var BEL2 = "\x07";
52796
+ var C1_CSI = "›";
52797
+ var C1_OSC = "";
52798
+ var ST = "œ";
52799
+ var SGR_REGEX = /\x1b\[[0-9;]*m/g;
52800
+ function isCsiFinalByte(codePoint) {
52801
+ return codePoint >= 64 && codePoint <= 126;
52802
+ }
52803
+ function parseCsi(input, start, bodyStart) {
52804
+ let index = bodyStart;
52805
+ while (index < input.length) {
52806
+ const codePoint = input.charCodeAt(index);
52807
+ if (isCsiFinalByte(codePoint)) {
52808
+ const end = index + 1;
52809
+ return {
52810
+ nextIndex: end,
52811
+ sequence: input.slice(start, end)
52812
+ };
52813
+ }
52814
+ index++;
52815
+ }
52816
+ return {
52817
+ nextIndex: input.length,
52818
+ sequence: input.slice(start)
52819
+ };
52820
+ }
52821
+ function getOsc8Action(body) {
52822
+ if (!body.startsWith("8;")) {
52823
+ return;
52824
+ }
52825
+ const urlStart = body.indexOf(";", 2);
52826
+ if (urlStart === -1) {
52827
+ return;
52828
+ }
52829
+ const url2 = body.slice(urlStart + 1);
52830
+ return url2.length > 0 ? "open" : "close";
52831
+ }
52832
+ function parseOsc(input, start, bodyStart) {
52833
+ let index = bodyStart;
52834
+ while (index < input.length) {
52835
+ const current = input[index];
52836
+ if (!current) {
52837
+ break;
52838
+ }
52839
+ if (current === BEL2) {
52840
+ const end = index + 1;
52841
+ const body = input.slice(bodyStart, index);
52842
+ return {
52843
+ nextIndex: end,
52844
+ sequence: input.slice(start, end),
52845
+ osc8Action: getOsc8Action(body),
52846
+ osc8Terminator: "bel"
52847
+ };
52848
+ }
52849
+ if (current === ST) {
52850
+ const end = index + 1;
52851
+ const body = input.slice(bodyStart, index);
52852
+ return {
52853
+ nextIndex: end,
52854
+ sequence: input.slice(start, end),
52855
+ osc8Action: getOsc8Action(body),
52856
+ osc8Terminator: "st"
52857
+ };
52858
+ }
52859
+ if (current === ESC2 && input[index + 1] === "\\") {
52860
+ const end = index + 2;
52861
+ const body = input.slice(bodyStart, index);
52862
+ return {
52863
+ nextIndex: end,
52864
+ sequence: input.slice(start, end),
52865
+ osc8Action: getOsc8Action(body),
52866
+ osc8Terminator: "st"
52867
+ };
52868
+ }
52869
+ index++;
52870
+ }
52871
+ return {
52872
+ nextIndex: input.length,
52873
+ sequence: input.slice(start)
52874
+ };
52875
+ }
52876
+ function parseEscapeSequence(input, index) {
52877
+ const current = input[index];
52878
+ if (!current) {
52879
+ return null;
52880
+ }
52881
+ if (current === ESC2) {
52882
+ const next = input[index + 1];
52883
+ if (next === "[") {
52884
+ return parseCsi(input, index, index + 2);
52885
+ }
52886
+ if (next === "]") {
52887
+ return parseOsc(input, index, index + 2);
52888
+ }
52889
+ if (next) {
52890
+ return {
52891
+ nextIndex: index + 2,
52892
+ sequence: input.slice(index, index + 2)
52893
+ };
52894
+ }
52895
+ return {
52896
+ nextIndex: input.length,
52897
+ sequence: current
52898
+ };
52899
+ }
52900
+ if (current === C1_CSI) {
52901
+ return parseCsi(input, index, index + 1);
52902
+ }
52903
+ if (current === C1_OSC) {
52904
+ return parseOsc(input, index, index + 1);
52905
+ }
52906
+ return null;
52907
+ }
52908
+ function getOsc8CloseSequence(terminator) {
52909
+ if (terminator === "bel") {
52910
+ return `${ESC2}]8;;${BEL2}`;
52911
+ }
52912
+ return `${ESC2}]8;;${ESC2}\\`;
52913
+ }
52914
+ function stripSgrCodes(text) {
52915
+ return text.replace(SGR_REGEX, "");
52916
+ }
52917
+ function getVisibleText(text) {
52918
+ let result = "";
52919
+ let index = 0;
52920
+ while (index < text.length) {
52921
+ const escape2 = parseEscapeSequence(text, index);
52922
+ if (escape2) {
52923
+ index = escape2.nextIndex;
52924
+ continue;
52925
+ }
52926
+ const codePoint = text.codePointAt(index);
52927
+ if (codePoint === undefined) {
52928
+ break;
52929
+ }
52930
+ const character = String.fromCodePoint(codePoint);
52931
+ result += character;
52932
+ index += character.length;
52933
+ }
52934
+ return result;
52935
+ }
52936
+ function getVisibleWidth(text) {
52937
+ return stringWidth(getVisibleText(text));
52938
+ }
52939
+ function truncateStyledText(text, maxWidth, options = {}) {
52940
+ if (maxWidth <= 0) {
52941
+ return "";
52942
+ }
52943
+ if (getVisibleWidth(text) <= maxWidth) {
52944
+ return text;
52945
+ }
52946
+ const addEllipsis = options.ellipsis ?? true;
52947
+ const ellipsis = addEllipsis ? "..." : "";
52948
+ const ellipsisWidth = addEllipsis ? stringWidth(ellipsis) : 0;
52949
+ if (addEllipsis && maxWidth <= ellipsisWidth) {
52950
+ return ".".repeat(maxWidth);
52951
+ }
52952
+ const targetWidth = Math.max(0, maxWidth - ellipsisWidth);
52953
+ let output = "";
52954
+ let currentWidth = 0;
52955
+ let index = 0;
52956
+ let didTruncate = false;
52957
+ let openOsc8Terminator = null;
52958
+ while (index < text.length) {
52959
+ const escape2 = parseEscapeSequence(text, index);
52960
+ if (escape2) {
52961
+ output += escape2.sequence;
52962
+ index = escape2.nextIndex;
52963
+ if (escape2.osc8Action === "open") {
52964
+ openOsc8Terminator = escape2.osc8Terminator ?? "st";
52965
+ } else if (escape2.osc8Action === "close") {
52966
+ openOsc8Terminator = null;
52967
+ }
52968
+ continue;
52969
+ }
52970
+ const codePoint = text.codePointAt(index);
52971
+ if (codePoint === undefined) {
52972
+ break;
52973
+ }
52974
+ const character = String.fromCodePoint(codePoint);
52975
+ const charWidth = stringWidth(character);
52976
+ if (currentWidth + charWidth > targetWidth) {
52977
+ didTruncate = true;
52978
+ break;
52979
+ }
52980
+ output += character;
52981
+ currentWidth += charWidth;
52982
+ index += character.length;
52983
+ }
52984
+ if (!didTruncate) {
52985
+ return text;
52986
+ }
52987
+ if (openOsc8Terminator) {
52988
+ output += getOsc8CloseSequence(openOsc8Terminator);
52989
+ }
52990
+ return output + ellipsis;
52991
+ }
52992
+
52793
52993
  // src/utils/model-context.ts
52794
52994
  function toValidWindowSize(value) {
52795
52995
  if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
@@ -52836,7 +53036,6 @@ function calculateContextPercentage(context) {
52836
53036
  }
52837
53037
 
52838
53038
  // src/utils/renderer.ts
52839
- var ANSI_REGEX = new RegExp(`\\x1b\\[[0-9;]*m`, "g");
52840
53039
  function formatTokens(count) {
52841
53040
  if (count >= 1e6)
52842
53041
  return `${(count / 1e6).toFixed(1)}M`;
@@ -52926,7 +53125,7 @@ function renderPowerlineStatusLine(widgets, settings, context, lineIndex = 0, gl
52926
53125
  if (widgetText) {
52927
53126
  const padding = settings.defaultPadding ?? "";
52928
53127
  if (settings.overrideForegroundColor && settings.overrideForegroundColor !== "none" && widget.type === "custom-command" && widget.preserveColors) {
52929
- widgetText = widgetText.replace(ANSI_REGEX, "");
53128
+ widgetText = stripSgrCodes(widgetText);
52930
53129
  }
52931
53130
  const prevItem = i > 0 ? filteredWidgets[i - 1] : null;
52932
53131
  const nextItem = i < filteredWidgets.length - 1 ? filteredWidgets[i + 1] : null;
@@ -52972,13 +53171,13 @@ function renderPowerlineStatusLine(widgets, settings, context, lineIndex = 0, gl
52972
53171
  if (!isPreviousMerged) {
52973
53172
  const maxWidth = preCalculatedMaxWidths[alignmentPos];
52974
53173
  if (maxWidth !== undefined) {
52975
- let combinedLength = stringWidth(element.content.replace(ANSI_REGEX, ""));
53174
+ let combinedLength = getVisibleWidth(element.content);
52976
53175
  let j = i;
52977
53176
  while (j < widgetElements.length - 1 && widgetElements[j]?.widget.merge) {
52978
53177
  j++;
52979
53178
  const nextElement = widgetElements[j];
52980
53179
  if (nextElement) {
52981
- combinedLength += stringWidth(nextElement.content.replace(ANSI_REGEX, ""));
53180
+ combinedLength += getVisibleWidth(nextElement.content);
52982
53181
  }
52983
53182
  }
52984
53183
  const paddingNeeded = maxWidth - combinedLength;
@@ -53113,31 +53312,9 @@ function renderPowerlineStatusLine(widgets, settings, context, lineIndex = 0, gl
53113
53312
  }
53114
53313
  result += source_default.reset("");
53115
53314
  if (terminalWidth && terminalWidth > 0) {
53116
- const plainLength = result.replace(ANSI_REGEX, "").length;
53315
+ const plainLength = getVisibleWidth(result);
53117
53316
  if (plainLength > terminalWidth) {
53118
- let truncated = "";
53119
- let currentLength = 0;
53120
- let inAnsiCode = false;
53121
- for (const char of result) {
53122
- if (char === "\x1B") {
53123
- inAnsiCode = true;
53124
- truncated += char;
53125
- } else if (inAnsiCode) {
53126
- truncated += char;
53127
- if (char === "m") {
53128
- inAnsiCode = false;
53129
- }
53130
- } else {
53131
- if (currentLength < terminalWidth - 3) {
53132
- truncated += char;
53133
- currentLength++;
53134
- } else {
53135
- truncated += "...";
53136
- break;
53137
- }
53138
- }
53139
- }
53140
- result = truncated;
53317
+ result = truncateStyledText(result, terminalWidth, { ellipsis: true });
53141
53318
  }
53142
53319
  }
53143
53320
  return result;
@@ -53172,7 +53349,7 @@ function preRenderAllWidgets(allLinesWidgets, settings, context) {
53172
53349
  continue;
53173
53350
  }
53174
53351
  const widgetText = widgetImpl.render(widget, context, settings) ?? "";
53175
- const plainLength = stringWidth(widgetText.replace(ANSI_REGEX, ""));
53352
+ const plainLength = getVisibleWidth(widgetText);
53176
53353
  preRenderedLine.push({
53177
53354
  content: widgetText,
53178
53355
  plainLength,
@@ -53330,33 +53507,9 @@ function renderStatusLine(widgets, settings, context, preRenderedWidgets, preCal
53330
53507
  if (widget.type === "custom-command" && widget.preserveColors) {
53331
53508
  let finalOutput = widgetText;
53332
53509
  if (widget.maxWidth && widget.maxWidth > 0) {
53333
- const plainLength = widgetText.replace(ANSI_REGEX, "").length;
53510
+ const plainLength = getVisibleWidth(widgetText);
53334
53511
  if (plainLength > widget.maxWidth) {
53335
- let truncated = "";
53336
- let currentLength = 0;
53337
- let inAnsiCode = false;
53338
- let ansiBuffer = "";
53339
- for (const char of widgetText) {
53340
- if (char === "\x1B") {
53341
- inAnsiCode = true;
53342
- ansiBuffer = char;
53343
- } else if (inAnsiCode) {
53344
- ansiBuffer += char;
53345
- if (char === "m") {
53346
- truncated += ansiBuffer;
53347
- inAnsiCode = false;
53348
- ansiBuffer = "";
53349
- }
53350
- } else {
53351
- if (currentLength < widget.maxWidth) {
53352
- truncated += char;
53353
- currentLength++;
53354
- } else {
53355
- break;
53356
- }
53357
- }
53358
- }
53359
- finalOutput = truncated;
53512
+ finalOutput = truncateStyledText(widgetText, widget.maxWidth, { ellipsis: false });
53360
53513
  }
53361
53514
  }
53362
53515
  elements.push({ content: finalOutput, type: widget.type, widget });
@@ -53440,7 +53593,7 @@ function renderStatusLine(widgets, settings, context, preRenderedWidgets, preCal
53440
53593
  }
53441
53594
  const partLengths = parts.map((part) => {
53442
53595
  const joined = part.join("");
53443
- return joined.replace(ANSI_REGEX, "").length;
53596
+ return getVisibleWidth(joined);
53444
53597
  });
53445
53598
  const totalContentLength = partLengths.reduce((sum, len) => sum + len, 0);
53446
53599
  const flexCount = parts.length - 1;
@@ -53467,34 +53620,9 @@ function renderStatusLine(widgets, settings, context, preRenderedWidgets, preCal
53467
53620
  }
53468
53621
  const maxWidth = terminalWidth ?? detectedWidth;
53469
53622
  if (maxWidth && maxWidth > 0) {
53470
- const plainLength = statusLine.replace(ANSI_REGEX, "").length;
53623
+ const plainLength = getVisibleWidth(statusLine);
53471
53624
  if (plainLength > maxWidth) {
53472
- let truncated = "";
53473
- let currentLength = 0;
53474
- let inAnsiCode = false;
53475
- let ansiBuffer = "";
53476
- const targetLength = context.isPreview ? maxWidth - 3 : maxWidth - 3;
53477
- for (const char of statusLine) {
53478
- if (char === "\x1B") {
53479
- inAnsiCode = true;
53480
- ansiBuffer = char;
53481
- } else if (inAnsiCode) {
53482
- ansiBuffer += char;
53483
- if (char === "m") {
53484
- truncated += ansiBuffer;
53485
- inAnsiCode = false;
53486
- ansiBuffer = "";
53487
- }
53488
- } else {
53489
- if (currentLength < targetLength) {
53490
- truncated += char;
53491
- currentLength++;
53492
- } else {
53493
- break;
53494
- }
53495
- }
53496
- }
53497
- statusLine = truncated + "...";
53625
+ statusLine = truncateStyledText(statusLine, maxWidth, { ellipsis: true });
53498
53626
  }
53499
53627
  }
53500
53628
  return statusLine;
@@ -54185,7 +54313,7 @@ class CustomCommandWidget {
54185
54313
  env: process.env
54186
54314
  }).trim();
54187
54315
  if (!item.preserveColors) {
54188
- output = output.replace(/\x1b\[[0-9;]*m/g, "");
54316
+ output = getVisibleText(output);
54189
54317
  }
54190
54318
  if (item.maxWidth && output.length > item.maxWidth) {
54191
54319
  output = output.substring(0, item.maxWidth - 3) + "...";
@@ -56813,6 +56941,200 @@ class ContextBarWidget {
56813
56941
  return true;
56814
56942
  }
56815
56943
  }
56944
+ // src/widgets/Link.tsx
56945
+ var import_react32 = __toESM(require_react(), 1);
56946
+ var jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
56947
+ function isValidHttpUrl(url2) {
56948
+ try {
56949
+ const parsed = new URL(url2);
56950
+ return parsed.protocol === "http:" || parsed.protocol === "https:";
56951
+ } catch {
56952
+ return false;
56953
+ }
56954
+ }
56955
+ function toEditorMetadata(widget) {
56956
+ const url2 = widget.metadata?.url ?? "";
56957
+ const text = widget.metadata?.text ?? "";
56958
+ return { url: url2, text };
56959
+ }
56960
+ function buildMetadata(widget, urlValue, textValue) {
56961
+ const metadata = { ...widget.metadata ?? {} };
56962
+ const trimmedUrl = urlValue.trim();
56963
+ const trimmedText = textValue.trim();
56964
+ if (trimmedUrl.length > 0) {
56965
+ metadata.url = trimmedUrl;
56966
+ } else {
56967
+ delete metadata.url;
56968
+ }
56969
+ if (trimmedText.length > 0) {
56970
+ metadata.text = trimmedText;
56971
+ } else {
56972
+ delete metadata.text;
56973
+ }
56974
+ if (Object.keys(metadata).length === 0) {
56975
+ const { metadata: metadata2, ...rest } = widget;
56976
+ return rest;
56977
+ }
56978
+ return {
56979
+ ...widget,
56980
+ metadata
56981
+ };
56982
+ }
56983
+ function renderOsc8Link(url2, text) {
56984
+ return `\x1B]8;;${url2}\x1B\\${text}\x1B]8;;\x1B\\`;
56985
+ }
56986
+ function getLinkLabel(item) {
56987
+ const url2 = item.metadata?.url?.trim() ?? "";
56988
+ const metadataText = item.metadata?.text?.trim();
56989
+ const label = metadataText && metadataText.length > 0 ? metadataText : url2.length > 0 ? url2 : "no url";
56990
+ return { url: url2, label };
56991
+ }
56992
+ function withEmojiPrefix(label, rawValue) {
56993
+ return rawValue ? label : `\uD83D\uDD17 ${label}`;
56994
+ }
56995
+
56996
+ class LinkWidget {
56997
+ getDefaultColor() {
56998
+ return "cyan";
56999
+ }
57000
+ getDescription() {
57001
+ return "Displays a clickable terminal hyperlink using OSC 8";
57002
+ }
57003
+ getDisplayName() {
57004
+ return "Link";
57005
+ }
57006
+ getCategory() {
57007
+ return "Custom";
57008
+ }
57009
+ getEditorDisplay(item) {
57010
+ const { url: url2, label } = getLinkLabel(item);
57011
+ const metadataText = item.metadata?.text?.trim();
57012
+ const hasCustomText = Boolean(metadataText && metadataText.length > 0);
57013
+ const text = withEmojiPrefix(label, item.rawValue);
57014
+ const shortUrl = hasCustomText && url2.length > 0 ? url2.length > 28 ? `${url2.substring(0, 25)}...` : url2 : null;
57015
+ return {
57016
+ displayText: `${this.getDisplayName()} (${text})`,
57017
+ modifierText: shortUrl ? `(${shortUrl})` : undefined
57018
+ };
57019
+ }
57020
+ render(item, context, settings) {
57021
+ const { url: url2, label } = getLinkLabel(item);
57022
+ const displayText = withEmojiPrefix(label, item.rawValue);
57023
+ if (!url2 || !isValidHttpUrl(url2)) {
57024
+ return displayText;
57025
+ }
57026
+ return renderOsc8Link(url2, displayText);
57027
+ }
57028
+ getCustomKeybinds() {
57029
+ return [
57030
+ { key: "u", label: "(u)rl", action: "edit-url" },
57031
+ { key: "e", label: "(e)dit text", action: "edit-text" }
57032
+ ];
57033
+ }
57034
+ renderEditor(props) {
57035
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(LinkEditor, {
57036
+ ...props
57037
+ }, undefined, false, undefined, this);
57038
+ }
57039
+ supportsRawValue() {
57040
+ return true;
57041
+ }
57042
+ supportsColors(item) {
57043
+ return true;
57044
+ }
57045
+ }
57046
+ function getEditorMode(action) {
57047
+ if (action === "edit-url") {
57048
+ return "url";
57049
+ }
57050
+ return "text";
57051
+ }
57052
+ var LinkEditor = ({ widget, onComplete, onCancel, action }) => {
57053
+ const initial = toEditorMetadata(widget);
57054
+ const mode = getEditorMode(action);
57055
+ const [urlInput, setUrlInput] = import_react32.useState(initial.url);
57056
+ const [urlCursorPos, setUrlCursorPos] = import_react32.useState(initial.url.length);
57057
+ const [textInput, setTextInput] = import_react32.useState(initial.text);
57058
+ const [textCursorPos, setTextCursorPos] = import_react32.useState(initial.text.length);
57059
+ const isUrlMode = mode === "url";
57060
+ const activeValue = isUrlMode ? urlInput : textInput;
57061
+ const activeCursor = isUrlMode ? urlCursorPos : textCursorPos;
57062
+ const updateActiveValue = (value, cursor) => {
57063
+ if (isUrlMode) {
57064
+ setUrlInput(value);
57065
+ setUrlCursorPos(cursor);
57066
+ } else {
57067
+ setTextInput(value);
57068
+ setTextCursorPos(cursor);
57069
+ }
57070
+ };
57071
+ use_input_default((input, key) => {
57072
+ if (key.return) {
57073
+ onComplete(buildMetadata(widget, urlInput, textInput));
57074
+ } else if (key.escape) {
57075
+ onCancel();
57076
+ } else if (key.leftArrow) {
57077
+ updateActiveValue(activeValue, Math.max(0, activeCursor - 1));
57078
+ } else if (key.rightArrow) {
57079
+ updateActiveValue(activeValue, Math.min(activeValue.length, activeCursor + 1));
57080
+ } else if (key.backspace) {
57081
+ if (activeCursor > 0) {
57082
+ const value = activeValue.slice(0, activeCursor - 1) + activeValue.slice(activeCursor);
57083
+ updateActiveValue(value, activeCursor - 1);
57084
+ }
57085
+ } else if (key.delete) {
57086
+ if (activeCursor < activeValue.length) {
57087
+ const value = activeValue.slice(0, activeCursor) + activeValue.slice(activeCursor + 1);
57088
+ updateActiveValue(value, activeCursor);
57089
+ }
57090
+ } else if (shouldInsertInput(input, key)) {
57091
+ const value = activeValue.slice(0, activeCursor) + input + activeValue.slice(activeCursor);
57092
+ updateActiveValue(value, activeCursor + input.length);
57093
+ }
57094
+ });
57095
+ const showInvalidUrlWarning = isUrlMode && urlInput.trim().length > 0 && !isValidHttpUrl(urlInput.trim());
57096
+ const prompt = isUrlMode ? "Enter URL (http/https): " : "Enter link text (blank uses URL): ";
57097
+ return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Box_default, {
57098
+ flexDirection: "column",
57099
+ children: [
57100
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57101
+ children: [
57102
+ prompt,
57103
+ activeValue.slice(0, activeCursor),
57104
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57105
+ backgroundColor: "gray",
57106
+ color: "black",
57107
+ children: activeValue[activeCursor] ?? " "
57108
+ }, undefined, false, undefined, this),
57109
+ activeValue.slice(activeCursor + 1)
57110
+ ]
57111
+ }, undefined, true, undefined, this),
57112
+ isUrlMode ? /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57113
+ dimColor: true,
57114
+ children: [
57115
+ "Current text:",
57116
+ " ",
57117
+ textInput.trim() || "(uses URL)"
57118
+ ]
57119
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57120
+ dimColor: true,
57121
+ children: [
57122
+ "Current URL:",
57123
+ " ",
57124
+ urlInput.trim() || "(none)"
57125
+ ]
57126
+ }, undefined, true, undefined, this),
57127
+ showInvalidUrlWarning && /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57128
+ color: "yellow",
57129
+ children: "URL must begin with http:// or https://"
57130
+ }, undefined, false, undefined, this),
57131
+ /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57132
+ dimColor: true,
57133
+ children: "←→ move cursor, Enter save, ESC cancel"
57134
+ }, undefined, false, undefined, this)
57135
+ ]
57136
+ }, undefined, true, undefined, this);
57137
+ };
56816
57138
  // src/utils/widgets.ts
56817
57139
  var widgetRegistry = new Map([
56818
57140
  ["model", new ModelWidget],
@@ -56836,6 +57158,7 @@ var widgetRegistry = new Map([
56836
57158
  ["version", new VersionWidget],
56837
57159
  ["custom-text", new CustomTextWidget],
56838
57160
  ["custom-command", new CustomCommandWidget],
57161
+ ["link", new LinkWidget],
56839
57162
  ["claude-session-id", new ClaudeSessionIdWidget],
56840
57163
  ["session-name", new SessionNameWidget],
56841
57164
  ["free-memory", new FreeMemoryWidget],
@@ -56951,10 +57274,10 @@ function filterWidgetCatalog(catalog, category, query) {
56951
57274
  }
56952
57275
 
56953
57276
  // src/tui/components/ConfirmDialog.tsx
56954
- var import_react32 = __toESM(require_react(), 1);
56955
- var jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
57277
+ var import_react33 = __toESM(require_react(), 1);
57278
+ var jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
56956
57279
  var ConfirmDialog = ({ message, onConfirm, onCancel, inline = false }) => {
56957
- const [selectedIndex, setSelectedIndex] = import_react32.useState(0);
57280
+ const [selectedIndex, setSelectedIndex] = import_react33.useState(0);
56958
57281
  use_input_default((input, key) => {
56959
57282
  if (key.upArrow) {
56960
57283
  setSelectedIndex(Math.max(0, selectedIndex - 1));
@@ -56973,17 +57296,17 @@ var ConfirmDialog = ({ message, onConfirm, onCancel, inline = false }) => {
56973
57296
  const renderOptions = () => {
56974
57297
  const yesStyle = selectedIndex === 0 ? { color: "cyan" } : {};
56975
57298
  const noStyle = selectedIndex === 1 ? { color: "cyan" } : {};
56976
- return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Box_default, {
57299
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
56977
57300
  flexDirection: "column",
56978
57301
  children: [
56979
- /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57302
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
56980
57303
  ...yesStyle,
56981
57304
  children: [
56982
57305
  selectedIndex === 0 ? "▶ " : " ",
56983
57306
  "Yes"
56984
57307
  ]
56985
57308
  }, undefined, true, undefined, this),
56986
- /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57309
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
56987
57310
  ...noStyle,
56988
57311
  children: [
56989
57312
  selectedIndex === 1 ? "▶ " : " ",
@@ -56996,13 +57319,13 @@ var ConfirmDialog = ({ message, onConfirm, onCancel, inline = false }) => {
56996
57319
  if (inline) {
56997
57320
  return renderOptions();
56998
57321
  }
56999
- return /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Box_default, {
57322
+ return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57000
57323
  flexDirection: "column",
57001
57324
  children: [
57002
- /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Text, {
57325
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57003
57326
  children: message
57004
57327
  }, undefined, false, undefined, this),
57005
- /* @__PURE__ */ jsx_dev_runtime4.jsxDEV(Box_default, {
57328
+ /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57006
57329
  marginTop: 1,
57007
57330
  children: renderOptions()
57008
57331
  }, undefined, false, undefined, this)
@@ -57011,14 +57334,14 @@ var ConfirmDialog = ({ message, onConfirm, onCancel, inline = false }) => {
57011
57334
  };
57012
57335
 
57013
57336
  // src/tui/components/ColorMenu.tsx
57014
- var jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
57337
+ var jsx_dev_runtime6 = __toESM(require_jsx_dev_runtime(), 1);
57015
57338
  var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57016
- const [showSeparators, setShowSeparators] = import_react33.useState(false);
57017
- const [hexInputMode, setHexInputMode] = import_react33.useState(false);
57018
- const [hexInput, setHexInput] = import_react33.useState("");
57019
- const [ansi256InputMode, setAnsi256InputMode] = import_react33.useState(false);
57020
- const [ansi256Input, setAnsi256Input] = import_react33.useState("");
57021
- const [showClearConfirm, setShowClearConfirm] = import_react33.useState(false);
57339
+ const [showSeparators, setShowSeparators] = import_react34.useState(false);
57340
+ const [hexInputMode, setHexInputMode] = import_react34.useState(false);
57341
+ const [hexInput, setHexInput] = import_react34.useState("");
57342
+ const [ansi256InputMode, setAnsi256InputMode] = import_react34.useState(false);
57343
+ const [ansi256Input, setAnsi256Input] = import_react34.useState("");
57344
+ const [showClearConfirm, setShowClearConfirm] = import_react34.useState(false);
57022
57345
  const powerlineEnabled = settings.powerline.enabled;
57023
57346
  const colorableWidgets = widgets.filter((widget) => {
57024
57347
  if (widget.type === "separator") {
@@ -57027,8 +57350,8 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57027
57350
  const widgetInstance = getWidget(widget.type);
57028
57351
  return widgetInstance ? widgetInstance.supportsColors(widget) : true;
57029
57352
  });
57030
- const [highlightedItemId, setHighlightedItemId] = import_react33.useState(colorableWidgets[0]?.id ?? null);
57031
- const [editingBackground, setEditingBackground] = import_react33.useState(false);
57353
+ const [highlightedItemId, setHighlightedItemId] = import_react34.useState(colorableWidgets[0]?.id ?? null);
57354
+ const [editingBackground, setEditingBackground] = import_react34.useState(false);
57032
57355
  const hasNoItems = colorableWidgets.length === 0;
57033
57356
  use_input_default((input, key) => {
57034
57357
  if (hasNoItems) {
@@ -57224,30 +57547,30 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57224
57547
  }
57225
57548
  });
57226
57549
  if (hasNoItems) {
57227
- return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57550
+ return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57228
57551
  flexDirection: "column",
57229
57552
  children: [
57230
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57553
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57231
57554
  bold: true,
57232
57555
  children: [
57233
57556
  "Configure Colors",
57234
57557
  lineIndex !== undefined ? ` - Line ${lineIndex + 1}` : ""
57235
57558
  ]
57236
57559
  }, undefined, true, undefined, this),
57237
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57560
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57238
57561
  marginTop: 1,
57239
- children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57562
+ children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57240
57563
  dimColor: true,
57241
57564
  children: "No colorable widgets in the status line."
57242
57565
  }, undefined, false, undefined, this)
57243
57566
  }, undefined, false, undefined, this),
57244
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57567
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57245
57568
  dimColor: true,
57246
57569
  children: "Add a widget first to continue."
57247
57570
  }, undefined, false, undefined, this),
57248
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57571
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57249
57572
  marginTop: 1,
57250
- children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57573
+ children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57251
57574
  children: "Press any key to go back..."
57252
57575
  }, undefined, false, undefined, this)
57253
57576
  }, undefined, false, undefined, this)
@@ -57340,36 +57663,36 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57340
57663
  }
57341
57664
  }
57342
57665
  if (showClearConfirm) {
57343
- return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57666
+ return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57344
57667
  flexDirection: "column",
57345
57668
  children: [
57346
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57669
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57347
57670
  bold: true,
57348
57671
  color: "yellow",
57349
57672
  children: "⚠ Confirm Clear All Colors"
57350
57673
  }, undefined, false, undefined, this),
57351
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57674
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57352
57675
  marginTop: 1,
57353
57676
  flexDirection: "column",
57354
57677
  children: [
57355
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57678
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57356
57679
  children: "This will reset all colors for all widgets to their defaults."
57357
57680
  }, undefined, false, undefined, this),
57358
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57681
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57359
57682
  color: "red",
57360
57683
  children: "This action cannot be undone!"
57361
57684
  }, undefined, false, undefined, this)
57362
57685
  ]
57363
57686
  }, undefined, true, undefined, this),
57364
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57687
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57365
57688
  marginTop: 2,
57366
- children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57689
+ children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57367
57690
  children: "Continue?"
57368
57691
  }, undefined, false, undefined, this)
57369
57692
  }, undefined, false, undefined, this),
57370
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57693
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57371
57694
  marginTop: 1,
57372
- children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(ConfirmDialog, {
57695
+ children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(ConfirmDialog, {
57373
57696
  inline: true,
57374
57697
  onConfirm: () => {
57375
57698
  const newItems = widgets.map((widget) => {
@@ -57390,12 +57713,12 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57390
57713
  const hasGlobalFgOverride = !!settings.overrideForegroundColor;
57391
57714
  const hasGlobalBgOverride = !!settings.overrideBackgroundColor && !powerlineEnabled;
57392
57715
  const globalOverrideMessage = hasGlobalFgOverride && hasGlobalBgOverride ? "⚠ Global override for FG and BG active" : hasGlobalFgOverride ? "⚠ Global override for FG active" : hasGlobalBgOverride ? "⚠ Global override for BG active" : null;
57393
- return /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57716
+ return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57394
57717
  flexDirection: "column",
57395
57718
  children: [
57396
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57719
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57397
57720
  children: [
57398
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57721
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57399
57722
  bold: true,
57400
57723
  children: [
57401
57724
  "Configure Colors",
@@ -57403,7 +57726,7 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57403
57726
  editingBackground && source_default.yellow(" [Background Mode]")
57404
57727
  ]
57405
57728
  }, undefined, true, undefined, this),
57406
- globalOverrideMessage && /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57729
+ globalOverrideMessage && /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57407
57730
  color: "yellow",
57408
57731
  dimColor: true,
57409
57732
  children: [
@@ -57413,56 +57736,56 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57413
57736
  }, undefined, true, undefined, this)
57414
57737
  ]
57415
57738
  }, undefined, true, undefined, this),
57416
- hexInputMode ? /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57739
+ hexInputMode ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57417
57740
  flexDirection: "column",
57418
57741
  children: [
57419
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57742
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57420
57743
  children: "Enter 6-digit hex color code (without #):"
57421
57744
  }, undefined, false, undefined, this),
57422
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57745
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57423
57746
  children: [
57424
57747
  "#",
57425
57748
  hexInput,
57426
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57749
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57427
57750
  dimColor: true,
57428
57751
  children: hexInput.length < 6 ? "_".repeat(6 - hexInput.length) : ""
57429
57752
  }, undefined, false, undefined, this)
57430
57753
  ]
57431
57754
  }, undefined, true, undefined, this),
57432
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57755
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57433
57756
  children: " "
57434
57757
  }, undefined, false, undefined, this),
57435
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57758
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57436
57759
  dimColor: true,
57437
57760
  children: "Press Enter when done, ESC to cancel"
57438
57761
  }, undefined, false, undefined, this)
57439
57762
  ]
57440
- }, undefined, true, undefined, this) : ansi256InputMode ? /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57763
+ }, undefined, true, undefined, this) : ansi256InputMode ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57441
57764
  flexDirection: "column",
57442
57765
  children: [
57443
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57766
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57444
57767
  children: "Enter ANSI 256 color code (0-255):"
57445
57768
  }, undefined, false, undefined, this),
57446
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57769
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57447
57770
  children: [
57448
57771
  ansi256Input,
57449
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57772
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57450
57773
  dimColor: true,
57451
57774
  children: ansi256Input.length === 0 ? "___" : ansi256Input.length === 1 ? "__" : ansi256Input.length === 2 ? "_" : ""
57452
57775
  }, undefined, false, undefined, this)
57453
57776
  ]
57454
57777
  }, undefined, true, undefined, this),
57455
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57778
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57456
57779
  children: " "
57457
57780
  }, undefined, false, undefined, this),
57458
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57781
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57459
57782
  dimColor: true,
57460
57783
  children: "Press Enter when done, ESC to cancel"
57461
57784
  }, undefined, false, undefined, this)
57462
57785
  ]
57463
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(jsx_dev_runtime5.Fragment, {
57786
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(jsx_dev_runtime6.Fragment, {
57464
57787
  children: [
57465
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57788
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57466
57789
  dimColor: true,
57467
57790
  children: [
57468
57791
  "↑↓ to select, ←→ to cycle",
@@ -57474,16 +57797,16 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57474
57797
  "(r)eset, (c)lear all, ESC to go back"
57475
57798
  ]
57476
57799
  }, undefined, true, undefined, this),
57477
- !settings.powerline.enabled && !settings.defaultSeparator && /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57800
+ !settings.powerline.enabled && !settings.defaultSeparator && /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57478
57801
  dimColor: true,
57479
57802
  children: [
57480
57803
  "(s)how separators:",
57481
57804
  showSeparators ? source_default.green("ON") : source_default.gray("OFF")
57482
57805
  ]
57483
57806
  }, undefined, true, undefined, this),
57484
- selectedWidget ? /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57807
+ selectedWidget ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57485
57808
  marginTop: 1,
57486
- children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57809
+ children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57487
57810
  children: [
57488
57811
  "Current",
57489
57812
  " ",
@@ -57497,19 +57820,19 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57497
57820
  selectedWidget.bold && source_default.bold(" [BOLD]")
57498
57821
  ]
57499
57822
  }, undefined, true, undefined, this)
57500
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57823
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57501
57824
  marginTop: 1,
57502
- children: /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57825
+ children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57503
57826
  children: " "
57504
57827
  }, undefined, false, undefined, this)
57505
57828
  }, undefined, false, undefined, this)
57506
57829
  ]
57507
57830
  }, undefined, true, undefined, this),
57508
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57831
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57509
57832
  marginTop: 1,
57510
- children: hexInputMode || ansi256InputMode ? /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57833
+ children: hexInputMode || ansi256InputMode ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57511
57834
  flexDirection: "column",
57512
- children: menuItems.map((item) => /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57835
+ children: menuItems.map((item) => /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57513
57836
  color: item.value === highlightedItemId ? "cyan" : "white",
57514
57837
  bold: item.value === highlightedItemId,
57515
57838
  children: [
@@ -57517,28 +57840,28 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57517
57840
  item.label
57518
57841
  ]
57519
57842
  }, item.value, true, undefined, this))
57520
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(SelectInput_default, {
57843
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(SelectInput_default, {
57521
57844
  items: menuItems,
57522
57845
  onSelect: handleSelect,
57523
57846
  onHighlight: handleHighlight,
57524
57847
  initialIndex: Math.max(0, menuItems.findIndex((item) => item.value === highlightedItemId)),
57525
- indicatorComponent: ({ isSelected }) => /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57848
+ indicatorComponent: ({ isSelected }) => /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57526
57849
  children: isSelected ? "▶" : " "
57527
57850
  }, undefined, false, undefined, this),
57528
- itemComponent: ({ isSelected, label }) => /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57851
+ itemComponent: ({ isSelected, label }) => /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57529
57852
  children: ` ${label}`
57530
57853
  }, undefined, false, undefined, this)
57531
57854
  }, `${showSeparators}-${highlightedItemId}`, false, undefined, this)
57532
57855
  }, undefined, false, undefined, this),
57533
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Box_default, {
57856
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57534
57857
  marginTop: 1,
57535
57858
  flexDirection: "column",
57536
57859
  children: [
57537
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57860
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57538
57861
  color: "yellow",
57539
57862
  children: "⚠ VSCode Users: "
57540
57863
  }, undefined, false, undefined, this),
57541
- /* @__PURE__ */ jsx_dev_runtime5.jsxDEV(Text, {
57864
+ /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57542
57865
  dimColor: true,
57543
57866
  wrap: "wrap",
57544
57867
  children: 'If colors appear incorrect in the VSCode integrated terminal, the "Terminal › Integrated: Minimum Contrast Ratio" (`terminal.integrated.minimumContrastRatio`) setting is forcing a minimum contrast between foreground and background colors. You can adjust this setting to 1 to disable the contrast enforcement, or use a standalone terminal for accurate colors.'
@@ -57549,16 +57872,16 @@ var ColorMenu = ({ widgets, lineIndex, settings, onUpdate, onBack }) => {
57549
57872
  }, undefined, true, undefined, this);
57550
57873
  };
57551
57874
  // src/tui/components/GlobalOverridesMenu.tsx
57552
- var import_react34 = __toESM(require_react(), 1);
57553
- var jsx_dev_runtime6 = __toESM(require_jsx_dev_runtime(), 1);
57875
+ var import_react35 = __toESM(require_react(), 1);
57876
+ var jsx_dev_runtime7 = __toESM(require_jsx_dev_runtime(), 1);
57554
57877
  var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57555
- const [editingPadding, setEditingPadding] = import_react34.useState(false);
57556
- const [editingSeparator, setEditingSeparator] = import_react34.useState(false);
57557
- const [confirmingSeparator, setConfirmingSeparator] = import_react34.useState(false);
57558
- const [paddingInput, setPaddingInput] = import_react34.useState(settings.defaultPadding ?? "");
57559
- const [separatorInput, setSeparatorInput] = import_react34.useState(settings.defaultSeparator ?? "");
57560
- const [inheritColors, setInheritColors] = import_react34.useState(settings.inheritSeparatorColors);
57561
- const [globalBold, setGlobalBold] = import_react34.useState(settings.globalBold);
57878
+ const [editingPadding, setEditingPadding] = import_react35.useState(false);
57879
+ const [editingSeparator, setEditingSeparator] = import_react35.useState(false);
57880
+ const [confirmingSeparator, setConfirmingSeparator] = import_react35.useState(false);
57881
+ const [paddingInput, setPaddingInput] = import_react35.useState(settings.defaultPadding ?? "");
57882
+ const [separatorInput, setSeparatorInput] = import_react35.useState(settings.defaultSeparator ?? "");
57883
+ const [inheritColors, setInheritColors] = import_react35.useState(settings.inheritSeparatorColors);
57884
+ const [globalBold, setGlobalBold] = import_react35.useState(settings.globalBold);
57562
57885
  const isPowerlineEnabled = settings.powerline.enabled;
57563
57886
  const hasManualSeparators = settings.lines.some((line) => line.some((item) => item.type === "separator"));
57564
57887
  const bgColors = ["none", ...COLOR_MAP.filter((c) => c.isBackground).map((c) => c.name)];
@@ -57660,95 +57983,95 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57660
57983
  }
57661
57984
  }
57662
57985
  });
57663
- return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57986
+ return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57664
57987
  flexDirection: "column",
57665
57988
  children: [
57666
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57989
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57667
57990
  bold: true,
57668
57991
  children: "Global Overrides"
57669
57992
  }, undefined, false, undefined, this),
57670
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57993
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57671
57994
  dimColor: true,
57672
57995
  children: "Configure automatic padding and separators between widgets"
57673
57996
  }, undefined, false, undefined, this),
57674
- isPowerlineEnabled && /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
57997
+ isPowerlineEnabled && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57675
57998
  marginTop: 1,
57676
- children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
57999
+ children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57677
58000
  color: "yellow",
57678
58001
  children: "⚠ Some options are disabled while Powerline mode is active"
57679
58002
  }, undefined, false, undefined, this)
57680
58003
  }, undefined, false, undefined, this),
57681
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58004
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57682
58005
  marginTop: 1
57683
58006
  }, undefined, false, undefined, this),
57684
- editingPadding ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58007
+ editingPadding ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57685
58008
  flexDirection: "column",
57686
58009
  children: [
57687
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58010
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57688
58011
  children: [
57689
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58012
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57690
58013
  children: "Enter default padding (applied to left and right of each widget): "
57691
58014
  }, undefined, false, undefined, this),
57692
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58015
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57693
58016
  color: "cyan",
57694
58017
  children: paddingInput ? `"${paddingInput}"` : "(empty)"
57695
58018
  }, undefined, false, undefined, this)
57696
58019
  ]
57697
58020
  }, undefined, true, undefined, this),
57698
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58021
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57699
58022
  dimColor: true,
57700
58023
  children: "Press Enter to save, ESC to cancel"
57701
58024
  }, undefined, false, undefined, this)
57702
58025
  ]
57703
- }, undefined, true, undefined, this) : editingSeparator ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58026
+ }, undefined, true, undefined, this) : editingSeparator ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57704
58027
  flexDirection: "column",
57705
58028
  children: [
57706
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58029
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57707
58030
  children: [
57708
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58031
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57709
58032
  children: "Enter default separator (placed between widgets): "
57710
58033
  }, undefined, false, undefined, this),
57711
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58034
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57712
58035
  color: "cyan",
57713
58036
  children: separatorInput ? `"${separatorInput}"` : "(empty - no separator will be added)"
57714
58037
  }, undefined, false, undefined, this)
57715
58038
  ]
57716
58039
  }, undefined, true, undefined, this),
57717
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58040
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57718
58041
  dimColor: true,
57719
58042
  children: "Press Enter to save, ESC to cancel"
57720
58043
  }, undefined, false, undefined, this)
57721
58044
  ]
57722
- }, undefined, true, undefined, this) : confirmingSeparator ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58045
+ }, undefined, true, undefined, this) : confirmingSeparator ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57723
58046
  flexDirection: "column",
57724
58047
  children: [
57725
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58048
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57726
58049
  marginBottom: 1,
57727
- children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58050
+ children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57728
58051
  color: "yellow",
57729
58052
  children: "⚠ Warning: Setting a default separator will remove all existing manual separators from your status lines."
57730
58053
  }, undefined, false, undefined, this)
57731
58054
  }, undefined, false, undefined, this),
57732
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58055
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57733
58056
  children: [
57734
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58057
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57735
58058
  children: "New default separator: "
57736
58059
  }, undefined, false, undefined, this),
57737
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58060
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57738
58061
  color: "cyan",
57739
58062
  children: separatorInput ? `"${separatorInput}"` : "(empty)"
57740
58063
  }, undefined, false, undefined, this)
57741
58064
  ]
57742
58065
  }, undefined, true, undefined, this),
57743
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58066
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57744
58067
  marginTop: 1,
57745
- children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58068
+ children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57746
58069
  children: "Do you want to continue? "
57747
58070
  }, undefined, false, undefined, this)
57748
58071
  }, undefined, false, undefined, this),
57749
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58072
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57750
58073
  marginTop: 1,
57751
- children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(ConfirmDialog, {
58074
+ children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(ConfirmDialog, {
57752
58075
  inline: true,
57753
58076
  onConfirm: () => {
57754
58077
  const updatedSettings = {
@@ -57766,47 +58089,47 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57766
58089
  }, undefined, false, undefined, this)
57767
58090
  }, undefined, false, undefined, this)
57768
58091
  ]
57769
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(jsx_dev_runtime6.Fragment, {
58092
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(jsx_dev_runtime7.Fragment, {
57770
58093
  children: [
57771
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58094
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57772
58095
  children: [
57773
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58096
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57774
58097
  children: " Global Bold: "
57775
58098
  }, undefined, false, undefined, this),
57776
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58099
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57777
58100
  color: globalBold ? "green" : "red",
57778
58101
  children: globalBold ? "✓ Enabled" : "✗ Disabled"
57779
58102
  }, undefined, false, undefined, this),
57780
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58103
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57781
58104
  dimColor: true,
57782
58105
  children: " - Press (o) to toggle"
57783
58106
  }, undefined, false, undefined, this)
57784
58107
  ]
57785
58108
  }, undefined, true, undefined, this),
57786
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58109
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57787
58110
  children: [
57788
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58111
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57789
58112
  children: " Default Padding: "
57790
58113
  }, undefined, false, undefined, this),
57791
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58114
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57792
58115
  color: "cyan",
57793
58116
  children: settings.defaultPadding ? `"${settings.defaultPadding}"` : "(none)"
57794
58117
  }, undefined, false, undefined, this),
57795
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58118
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57796
58119
  dimColor: true,
57797
58120
  children: " - Press (p) to edit"
57798
58121
  }, undefined, false, undefined, this)
57799
58122
  ]
57800
58123
  }, undefined, true, undefined, this),
57801
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58124
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57802
58125
  children: [
57803
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58126
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57804
58127
  children: "Override FG Color: "
57805
58128
  }, undefined, false, undefined, this),
57806
58129
  (() => {
57807
58130
  const fgColor = settings.overrideForegroundColor ?? "none";
57808
58131
  if (fgColor === "none") {
57809
- return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58132
+ return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57810
58133
  color: "gray",
57811
58134
  children: "(none)"
57812
58135
  }, undefined, false, undefined, this);
@@ -57814,31 +58137,31 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57814
58137
  const displayName = getColorDisplayName(fgColor);
57815
58138
  const fgChalk = getChalkColor(fgColor, "ansi16", false);
57816
58139
  const display = fgChalk ? fgChalk(displayName) : displayName;
57817
- return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58140
+ return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57818
58141
  children: display
57819
58142
  }, undefined, false, undefined, this);
57820
58143
  }
57821
58144
  })(),
57822
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58145
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57823
58146
  dimColor: true,
57824
58147
  children: " - (f) cycle, (g) clear"
57825
58148
  }, undefined, false, undefined, this)
57826
58149
  ]
57827
58150
  }, undefined, true, undefined, this),
57828
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58151
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57829
58152
  children: [
57830
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58153
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57831
58154
  children: "Override BG Color: "
57832
58155
  }, undefined, false, undefined, this),
57833
- isPowerlineEnabled ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58156
+ isPowerlineEnabled ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57834
58157
  dimColor: true,
57835
58158
  children: "[disabled - Powerline active]"
57836
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(jsx_dev_runtime6.Fragment, {
58159
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(jsx_dev_runtime7.Fragment, {
57837
58160
  children: [
57838
58161
  (() => {
57839
58162
  const bgColor = settings.overrideBackgroundColor ?? "none";
57840
58163
  if (bgColor === "none") {
57841
- return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58164
+ return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57842
58165
  color: "gray",
57843
58166
  children: "(none)"
57844
58167
  }, undefined, false, undefined, this);
@@ -57846,12 +58169,12 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57846
58169
  const displayName = getColorDisplayName(bgColor);
57847
58170
  const bgChalk = getChalkColor(bgColor, "ansi16", true);
57848
58171
  const display = bgChalk ? bgChalk(` ${displayName} `) : displayName;
57849
- return /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58172
+ return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57850
58173
  children: display
57851
58174
  }, undefined, false, undefined, this);
57852
58175
  }
57853
58176
  })(),
57854
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58177
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57855
58178
  dimColor: true,
57856
58179
  children: " - (b) cycle, (c) clear"
57857
58180
  }, undefined, false, undefined, this)
@@ -57859,21 +58182,21 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57859
58182
  }, undefined, true, undefined, this)
57860
58183
  ]
57861
58184
  }, undefined, true, undefined, this),
57862
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58185
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57863
58186
  children: [
57864
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58187
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57865
58188
  children: " Inherit Colors: "
57866
58189
  }, undefined, false, undefined, this),
57867
- isPowerlineEnabled ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58190
+ isPowerlineEnabled ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57868
58191
  dimColor: true,
57869
58192
  children: "[disabled - Powerline active]"
57870
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(jsx_dev_runtime6.Fragment, {
58193
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(jsx_dev_runtime7.Fragment, {
57871
58194
  children: [
57872
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58195
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57873
58196
  color: inheritColors ? "green" : "red",
57874
58197
  children: inheritColors ? "✓ Enabled" : "✗ Disabled"
57875
58198
  }, undefined, false, undefined, this),
57876
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58199
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57877
58200
  dimColor: true,
57878
58201
  children: " - Press (i) to toggle"
57879
58202
  }, undefined, false, undefined, this)
@@ -57881,21 +58204,21 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57881
58204
  }, undefined, true, undefined, this)
57882
58205
  ]
57883
58206
  }, undefined, true, undefined, this),
57884
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58207
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57885
58208
  children: [
57886
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58209
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57887
58210
  children: "Default Separator: "
57888
58211
  }, undefined, false, undefined, this),
57889
- isPowerlineEnabled ? /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58212
+ isPowerlineEnabled ? /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57890
58213
  dimColor: true,
57891
58214
  children: "[disabled - Powerline active]"
57892
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(jsx_dev_runtime6.Fragment, {
58215
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(jsx_dev_runtime7.Fragment, {
57893
58216
  children: [
57894
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58217
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57895
58218
  color: "cyan",
57896
58219
  children: settings.defaultSeparator ? `"${settings.defaultSeparator}"` : "(none)"
57897
58220
  }, undefined, false, undefined, this),
57898
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58221
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57899
58222
  dimColor: true,
57900
58223
  children: " - Press (s) to edit"
57901
58224
  }, undefined, false, undefined, this)
@@ -57903,33 +58226,33 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57903
58226
  }, undefined, true, undefined, this)
57904
58227
  ]
57905
58228
  }, undefined, true, undefined, this),
57906
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58229
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57907
58230
  marginTop: 2,
57908
- children: /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58231
+ children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57909
58232
  dimColor: true,
57910
58233
  children: "Press ESC to go back"
57911
58234
  }, undefined, false, undefined, this)
57912
58235
  }, undefined, false, undefined, this),
57913
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Box_default, {
58236
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
57914
58237
  marginTop: 1,
57915
58238
  flexDirection: "column",
57916
58239
  children: [
57917
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58240
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57918
58241
  dimColor: true,
57919
58242
  wrap: "wrap",
57920
58243
  children: "Note: These settings are applied during rendering and don't add widgets to your widget list."
57921
58244
  }, undefined, false, undefined, this),
57922
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58245
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57923
58246
  dimColor: true,
57924
58247
  wrap: "wrap",
57925
58248
  children: "• Inherit colors: Separators will use colors from the preceding widget"
57926
58249
  }, undefined, false, undefined, this),
57927
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58250
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57928
58251
  dimColor: true,
57929
58252
  wrap: "wrap",
57930
58253
  children: "• Global Bold: Makes all text bold regardless of individual settings"
57931
58254
  }, undefined, false, undefined, this),
57932
- /* @__PURE__ */ jsx_dev_runtime6.jsxDEV(Text, {
58255
+ /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
57933
58256
  dimColor: true,
57934
58257
  wrap: "wrap",
57935
58258
  children: "• Override colors: All widgets will use these colors instead of their configured colors"
@@ -57942,8 +58265,8 @@ var GlobalOverridesMenu = ({ settings, onUpdate, onBack }) => {
57942
58265
  }, undefined, true, undefined, this);
57943
58266
  };
57944
58267
  // src/tui/components/InstallMenu.tsx
57945
- var import_react35 = __toESM(require_react(), 1);
57946
- var jsx_dev_runtime7 = __toESM(require_jsx_dev_runtime(), 1);
58268
+ var import_react36 = __toESM(require_react(), 1);
58269
+ var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
57947
58270
  var InstallMenu = ({
57948
58271
  bunxAvailable,
57949
58272
  existingStatusLine,
@@ -57951,7 +58274,7 @@ var InstallMenu = ({
57951
58274
  onSelectBunx,
57952
58275
  onCancel
57953
58276
  }) => {
57954
- const [selectedIndex, setSelectedIndex] = import_react35.useState(0);
58277
+ const [selectedIndex, setSelectedIndex] = import_react36.useState(0);
57955
58278
  const maxIndex = 2;
57956
58279
  use_input_default((input, key) => {
57957
58280
  if (key.escape) {
@@ -57980,16 +58303,16 @@ var InstallMenu = ({
57980
58303
  }
57981
58304
  }
57982
58305
  });
57983
- return /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58306
+ return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
57984
58307
  flexDirection: "column",
57985
58308
  children: [
57986
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58309
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
57987
58310
  bold: true,
57988
58311
  children: "Install ccstatusline to Claude Code"
57989
58312
  }, undefined, false, undefined, this),
57990
- existingStatusLine && /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58313
+ existingStatusLine && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
57991
58314
  marginBottom: 1,
57992
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58315
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
57993
58316
  color: "yellow",
57994
58317
  children: [
57995
58318
  '⚠ Current status line: "',
@@ -57998,18 +58321,18 @@ var InstallMenu = ({
57998
58321
  ]
57999
58322
  }, undefined, true, undefined, this)
58000
58323
  }, undefined, false, undefined, this),
58001
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58002
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58324
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58325
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58003
58326
  dimColor: true,
58004
58327
  children: "Select package manager to use:"
58005
58328
  }, undefined, false, undefined, this)
58006
58329
  }, undefined, false, undefined, this),
58007
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58330
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58008
58331
  marginTop: 1,
58009
58332
  flexDirection: "column",
58010
58333
  children: [
58011
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58012
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58334
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58335
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58013
58336
  color: selectedIndex === 0 ? "blue" : undefined,
58014
58337
  children: [
58015
58338
  selectedIndex === 0 ? "▶ " : " ",
@@ -58017,8 +58340,8 @@ var InstallMenu = ({
58017
58340
  ]
58018
58341
  }, undefined, true, undefined, this)
58019
58342
  }, undefined, false, undefined, this),
58020
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58021
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58343
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58344
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58022
58345
  color: selectedIndex === 1 && bunxAvailable ? "blue" : undefined,
58023
58346
  dimColor: !bunxAvailable,
58024
58347
  children: [
@@ -58028,9 +58351,9 @@ var InstallMenu = ({
58028
58351
  ]
58029
58352
  }, undefined, true, undefined, this)
58030
58353
  }, undefined, false, undefined, this),
58031
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58354
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58032
58355
  marginTop: 1,
58033
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58356
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58034
58357
  color: selectedIndex === 2 ? "blue" : undefined,
58035
58358
  children: [
58036
58359
  selectedIndex === 2 ? "▶ " : " ",
@@ -58040,9 +58363,9 @@ var InstallMenu = ({
58040
58363
  }, undefined, false, undefined, this)
58041
58364
  ]
58042
58365
  }, undefined, true, undefined, this),
58043
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58366
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58044
58367
  marginTop: 2,
58045
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58368
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58046
58369
  dimColor: true,
58047
58370
  children: [
58048
58371
  "The selected command will be written to",
@@ -58051,9 +58374,9 @@ var InstallMenu = ({
58051
58374
  ]
58052
58375
  }, undefined, true, undefined, this)
58053
58376
  }, undefined, false, undefined, this),
58054
- /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Box_default, {
58377
+ /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58055
58378
  marginTop: 1,
58056
- children: /* @__PURE__ */ jsx_dev_runtime7.jsxDEV(Text, {
58379
+ children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58057
58380
  dimColor: true,
58058
58381
  children: "Press Enter to select, ESC to cancel"
58059
58382
  }, undefined, false, undefined, this)
@@ -58062,14 +58385,14 @@ var InstallMenu = ({
58062
58385
  }, undefined, true, undefined, this);
58063
58386
  };
58064
58387
  // src/tui/components/ItemsEditor.tsx
58065
- var import_react36 = __toESM(require_react(), 1);
58066
- var jsx_dev_runtime8 = __toESM(require_jsx_dev_runtime(), 1);
58388
+ var import_react37 = __toESM(require_react(), 1);
58389
+ var jsx_dev_runtime9 = __toESM(require_jsx_dev_runtime(), 1);
58067
58390
  var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58068
- const [selectedIndex, setSelectedIndex] = import_react36.useState(0);
58069
- const [moveMode, setMoveMode] = import_react36.useState(false);
58070
- const [customEditorWidget, setCustomEditorWidget] = import_react36.useState(null);
58071
- const [widgetPicker, setWidgetPicker] = import_react36.useState(null);
58072
- const [showClearConfirm, setShowClearConfirm] = import_react36.useState(false);
58391
+ const [selectedIndex, setSelectedIndex] = import_react37.useState(0);
58392
+ const [moveMode, setMoveMode] = import_react37.useState(false);
58393
+ const [customEditorWidget, setCustomEditorWidget] = import_react37.useState(null);
58394
+ const [widgetPicker, setWidgetPicker] = import_react37.useState(null);
58395
+ const [showClearConfirm, setShowClearConfirm] = import_react37.useState(false);
58073
58396
  const separatorChars = ["|", "-", ",", " "];
58074
58397
  const widgetCatalog = getWidgetCatalog(settings);
58075
58398
  const widgetCategories = ["All", ...getWidgetCatalogCategories(widgetCatalog)];
@@ -58475,19 +58798,19 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58475
58798
  });
58476
58799
  }
58477
58800
  if (showClearConfirm) {
58478
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58801
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58479
58802
  flexDirection: "column",
58480
58803
  children: [
58481
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58804
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58482
58805
  bold: true,
58483
58806
  color: "yellow",
58484
58807
  children: "⚠ Confirm Clear Line"
58485
58808
  }, undefined, false, undefined, this),
58486
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58809
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58487
58810
  marginTop: 1,
58488
58811
  flexDirection: "column",
58489
58812
  children: [
58490
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58813
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58491
58814
  children: [
58492
58815
  "This will remove all widgets from Line",
58493
58816
  " ",
@@ -58495,21 +58818,21 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58495
58818
  "."
58496
58819
  ]
58497
58820
  }, undefined, true, undefined, this),
58498
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58821
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58499
58822
  color: "red",
58500
58823
  children: "This action cannot be undone!"
58501
58824
  }, undefined, false, undefined, this)
58502
58825
  ]
58503
58826
  }, undefined, true, undefined, this),
58504
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58827
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58505
58828
  marginTop: 2,
58506
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58829
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58507
58830
  children: "Continue?"
58508
58831
  }, undefined, false, undefined, this)
58509
58832
  }, undefined, false, undefined, this),
58510
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58833
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58511
58834
  marginTop: 1,
58512
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(ConfirmDialog, {
58835
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(ConfirmDialog, {
58513
58836
  inline: true,
58514
58837
  onConfirm: () => {
58515
58838
  onUpdate([]);
@@ -58524,12 +58847,12 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58524
58847
  ]
58525
58848
  }, undefined, true, undefined, this);
58526
58849
  }
58527
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58850
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58528
58851
  flexDirection: "column",
58529
58852
  children: [
58530
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58853
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58531
58854
  children: [
58532
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58855
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58533
58856
  bold: true,
58534
58857
  children: [
58535
58858
  "Edit Line",
@@ -58538,17 +58861,17 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58538
58861
  " "
58539
58862
  ]
58540
58863
  }, undefined, true, undefined, this),
58541
- moveMode && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58864
+ moveMode && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58542
58865
  color: "blue",
58543
58866
  children: "[MOVE MODE]"
58544
58867
  }, undefined, false, undefined, this),
58545
- widgetPicker && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58868
+ widgetPicker && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58546
58869
  color: "cyan",
58547
58870
  children: `[${pickerActionLabel.toUpperCase()}]`
58548
58871
  }, undefined, false, undefined, this),
58549
- (settings.powerline.enabled || Boolean(settings.defaultSeparator)) && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58872
+ (settings.powerline.enabled || Boolean(settings.defaultSeparator)) && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58550
58873
  marginLeft: 2,
58551
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58874
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58552
58875
  color: "yellow",
58553
58876
  children: [
58554
58877
  "⚠",
@@ -58559,46 +58882,46 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58559
58882
  }, undefined, false, undefined, this)
58560
58883
  ]
58561
58884
  }, undefined, true, undefined, this),
58562
- moveMode ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58885
+ moveMode ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58563
58886
  flexDirection: "column",
58564
58887
  marginBottom: 1,
58565
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58888
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58566
58889
  dimColor: true,
58567
58890
  children: "↑↓ to move widget, ESC or Enter to exit move mode"
58568
58891
  }, undefined, false, undefined, this)
58569
- }, undefined, false, undefined, this) : widgetPicker ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58892
+ }, undefined, false, undefined, this) : widgetPicker ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58570
58893
  flexDirection: "column",
58571
- children: widgetPicker.level === "category" ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(jsx_dev_runtime8.Fragment, {
58894
+ children: widgetPicker.level === "category" ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
58572
58895
  children: [
58573
- widgetPicker.categoryQuery.trim().length > 0 ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58896
+ widgetPicker.categoryQuery.trim().length > 0 ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58574
58897
  dimColor: true,
58575
58898
  children: "↑↓ select widget match, Enter apply, ESC clear/cancel"
58576
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58899
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58577
58900
  dimColor: true,
58578
58901
  children: "↑↓ select category, type to search all widgets, Enter continue, ESC cancel"
58579
58902
  }, undefined, false, undefined, this),
58580
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58903
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58581
58904
  children: [
58582
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58905
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58583
58906
  dimColor: true,
58584
58907
  children: "Search: "
58585
58908
  }, undefined, false, undefined, this),
58586
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58909
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58587
58910
  color: "cyan",
58588
58911
  children: widgetPicker.categoryQuery || "(none)"
58589
58912
  }, undefined, false, undefined, this)
58590
58913
  ]
58591
58914
  }, undefined, true, undefined, this)
58592
58915
  ]
58593
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(jsx_dev_runtime8.Fragment, {
58916
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
58594
58917
  children: [
58595
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58918
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58596
58919
  dimColor: true,
58597
58920
  children: "↑↓ select widget, type to search widgets, Enter apply, ESC back"
58598
58921
  }, undefined, false, undefined, this),
58599
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58922
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58600
58923
  children: [
58601
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58924
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58602
58925
  dimColor: true,
58603
58926
  children: [
58604
58927
  "Category:",
@@ -58609,7 +58932,7 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58609
58932
  " "
58610
58933
  ]
58611
58934
  }, undefined, true, undefined, this),
58612
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58935
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58613
58936
  color: "cyan",
58614
58937
  children: widgetPicker.widgetQuery || "(none)"
58615
58938
  }, undefined, false, undefined, this)
@@ -58617,132 +58940,132 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58617
58940
  }, undefined, true, undefined, this)
58618
58941
  ]
58619
58942
  }, undefined, true, undefined, this)
58620
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58943
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58621
58944
  flexDirection: "column",
58622
58945
  children: [
58623
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58946
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58624
58947
  dimColor: true,
58625
58948
  children: helpText
58626
58949
  }, undefined, false, undefined, this),
58627
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58950
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58628
58951
  dimColor: true,
58629
58952
  children: customKeybindsText || " "
58630
58953
  }, undefined, false, undefined, this)
58631
58954
  ]
58632
58955
  }, undefined, true, undefined, this),
58633
- hasFlexSeparator && !widthDetectionAvailable && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58956
+ hasFlexSeparator && !widthDetectionAvailable && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58634
58957
  marginTop: 1,
58635
58958
  children: [
58636
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58959
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58637
58960
  color: "yellow",
58638
58961
  children: "⚠ Note: Terminal width detection is currently unavailable in your environment."
58639
58962
  }, undefined, false, undefined, this),
58640
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58963
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58641
58964
  dimColor: true,
58642
58965
  children: " Flex separators will act as normal separators until width detection is available."
58643
58966
  }, undefined, false, undefined, this)
58644
58967
  ]
58645
58968
  }, undefined, true, undefined, this),
58646
- widgetPicker && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58969
+ widgetPicker && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58647
58970
  marginTop: 1,
58648
58971
  flexDirection: "column",
58649
- children: widgetPicker.level === "category" ? widgetPicker.categoryQuery.trim().length > 0 ? topLevelSearchEntries.length === 0 ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58972
+ children: widgetPicker.level === "category" ? widgetPicker.categoryQuery.trim().length > 0 ? topLevelSearchEntries.length === 0 ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58650
58973
  dimColor: true,
58651
58974
  children: "No widgets match the search."
58652
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(jsx_dev_runtime8.Fragment, {
58975
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
58653
58976
  children: [
58654
58977
  topLevelSearchEntries.map((entry, index) => {
58655
58978
  const isSelected = entry.type === selectedTopLevelSearchEntry?.type;
58656
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58979
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58657
58980
  flexDirection: "row",
58658
58981
  flexWrap: "nowrap",
58659
58982
  children: [
58660
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58983
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58661
58984
  width: 3,
58662
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58985
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58663
58986
  color: isSelected ? "green" : undefined,
58664
58987
  children: isSelected ? "▶ " : " "
58665
58988
  }, undefined, false, undefined, this)
58666
58989
  }, undefined, false, undefined, this),
58667
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
58990
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58668
58991
  color: isSelected ? "green" : undefined,
58669
58992
  children: `${index + 1}. ${entry.displayName}`
58670
58993
  }, undefined, false, undefined, this)
58671
58994
  ]
58672
58995
  }, entry.type, true, undefined, this);
58673
58996
  }),
58674
- selectedTopLevelSearchEntry && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
58997
+ selectedTopLevelSearchEntry && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58675
58998
  marginTop: 1,
58676
58999
  paddingLeft: 2,
58677
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59000
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58678
59001
  dimColor: true,
58679
59002
  children: selectedTopLevelSearchEntry.description
58680
59003
  }, undefined, false, undefined, this)
58681
59004
  }, undefined, false, undefined, this)
58682
59005
  ]
58683
- }, undefined, true, undefined, this) : pickerCategories.length === 0 ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59006
+ }, undefined, true, undefined, this) : pickerCategories.length === 0 ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58684
59007
  dimColor: true,
58685
59008
  children: "No categories available."
58686
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(jsx_dev_runtime8.Fragment, {
59009
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
58687
59010
  children: [
58688
59011
  pickerCategories.map((category, index) => {
58689
59012
  const isSelected = category === selectedPickerCategory;
58690
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59013
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58691
59014
  flexDirection: "row",
58692
59015
  flexWrap: "nowrap",
58693
59016
  children: [
58694
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59017
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58695
59018
  width: 3,
58696
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59019
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58697
59020
  color: isSelected ? "green" : undefined,
58698
59021
  children: isSelected ? "▶ " : " "
58699
59022
  }, undefined, false, undefined, this)
58700
59023
  }, undefined, false, undefined, this),
58701
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59024
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58702
59025
  color: isSelected ? "green" : undefined,
58703
59026
  children: `${index + 1}. ${category}`
58704
59027
  }, undefined, false, undefined, this)
58705
59028
  ]
58706
59029
  }, category, true, undefined, this);
58707
59030
  }),
58708
- selectedPickerCategory === "All" && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59031
+ selectedPickerCategory === "All" && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58709
59032
  marginTop: 1,
58710
59033
  paddingLeft: 2,
58711
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59034
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58712
59035
  dimColor: true,
58713
59036
  children: "Search across all widget categories."
58714
59037
  }, undefined, false, undefined, this)
58715
59038
  }, undefined, false, undefined, this)
58716
59039
  ]
58717
- }, undefined, true, undefined, this) : pickerEntries.length === 0 ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59040
+ }, undefined, true, undefined, this) : pickerEntries.length === 0 ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58718
59041
  dimColor: true,
58719
59042
  children: "No widgets match the current category/search."
58720
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(jsx_dev_runtime8.Fragment, {
59043
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
58721
59044
  children: [
58722
59045
  pickerEntries.map((entry, index) => {
58723
59046
  const isSelected = entry.type === selectedPickerEntry?.type;
58724
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59047
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58725
59048
  flexDirection: "row",
58726
59049
  flexWrap: "nowrap",
58727
59050
  children: [
58728
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59051
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58729
59052
  width: 3,
58730
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59053
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58731
59054
  color: isSelected ? "green" : undefined,
58732
59055
  children: isSelected ? "▶ " : " "
58733
59056
  }, undefined, false, undefined, this)
58734
59057
  }, undefined, false, undefined, this),
58735
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59058
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58736
59059
  color: isSelected ? "green" : undefined,
58737
59060
  children: `${index + 1}. ${entry.displayName}`
58738
59061
  }, undefined, false, undefined, this)
58739
59062
  ]
58740
59063
  }, entry.type, true, undefined, this);
58741
59064
  }),
58742
- selectedPickerEntry && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59065
+ selectedPickerEntry && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58743
59066
  marginTop: 1,
58744
59067
  paddingLeft: 2,
58745
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59068
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58746
59069
  dimColor: true,
58747
59070
  children: selectedPickerEntry.description
58748
59071
  }, undefined, false, undefined, this)
@@ -58750,60 +59073,60 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58750
59073
  ]
58751
59074
  }, undefined, true, undefined, this)
58752
59075
  }, undefined, false, undefined, this),
58753
- !widgetPicker && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59076
+ !widgetPicker && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58754
59077
  marginTop: 1,
58755
59078
  flexDirection: "column",
58756
- children: widgets.length === 0 ? /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59079
+ children: widgets.length === 0 ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58757
59080
  dimColor: true,
58758
59081
  children: "No widgets. Press 'a' to add one."
58759
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(jsx_dev_runtime8.Fragment, {
59082
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
58760
59083
  children: [
58761
59084
  widgets.map((widget, index) => {
58762
59085
  const isSelected = index === selectedIndex;
58763
59086
  const widgetImpl = widget.type !== "separator" && widget.type !== "flex-separator" ? getWidget(widget.type) : null;
58764
59087
  const { displayText, modifierText } = widgetImpl?.getEditorDisplay(widget) ?? { displayText: getWidgetDisplay(widget) };
58765
59088
  const supportsRawValue = widgetImpl?.supportsRawValue() ?? false;
58766
- return /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59089
+ return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58767
59090
  flexDirection: "row",
58768
59091
  flexWrap: "nowrap",
58769
59092
  children: [
58770
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59093
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58771
59094
  width: 3,
58772
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59095
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58773
59096
  color: isSelected ? moveMode ? "blue" : "green" : undefined,
58774
59097
  children: isSelected ? moveMode ? "◆ " : "▶ " : " "
58775
59098
  }, undefined, false, undefined, this)
58776
59099
  }, undefined, false, undefined, this),
58777
- /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59100
+ /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58778
59101
  color: isSelected ? moveMode ? "blue" : "green" : undefined,
58779
59102
  children: `${index + 1}. ${displayText || getWidgetDisplay(widget)}`
58780
59103
  }, undefined, false, undefined, this),
58781
- modifierText && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59104
+ modifierText && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58782
59105
  dimColor: true,
58783
59106
  children: [
58784
59107
  " ",
58785
59108
  modifierText
58786
59109
  ]
58787
59110
  }, undefined, true, undefined, this),
58788
- supportsRawValue && widget.rawValue && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59111
+ supportsRawValue && widget.rawValue && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58789
59112
  dimColor: true,
58790
59113
  children: " (raw value)"
58791
59114
  }, undefined, false, undefined, this),
58792
- widget.merge === true && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59115
+ widget.merge === true && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58793
59116
  dimColor: true,
58794
59117
  children: " (merged→)"
58795
59118
  }, undefined, false, undefined, this),
58796
- widget.merge === "no-padding" && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59119
+ widget.merge === "no-padding" && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58797
59120
  dimColor: true,
58798
59121
  children: " (merged-no-pad→)"
58799
59122
  }, undefined, false, undefined, this)
58800
59123
  ]
58801
59124
  }, widget.id, true, undefined, this);
58802
59125
  }),
58803
- currentWidget && /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Box_default, {
59126
+ currentWidget && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
58804
59127
  marginTop: 1,
58805
59128
  paddingLeft: 2,
58806
- children: /* @__PURE__ */ jsx_dev_runtime8.jsxDEV(Text, {
59129
+ children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
58807
59130
  dimColor: true,
58808
59131
  children: (() => {
58809
59132
  if (currentWidget.type === "separator") {
@@ -58825,8 +59148,8 @@ var ItemsEditor = ({ widgets, onUpdate, onBack, lineNumber, settings }) => {
58825
59148
  };
58826
59149
  // src/tui/components/LineSelector.tsx
58827
59150
  var import_pluralize = __toESM(require_pluralize(), 1);
58828
- var import_react37 = __toESM(require_react(), 1);
58829
- var jsx_dev_runtime9 = __toESM(require_jsx_dev_runtime(), 1);
59151
+ var import_react38 = __toESM(require_react(), 1);
59152
+ var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
58830
59153
  var LineSelector = ({
58831
59154
  lines,
58832
59155
  onSelect,
@@ -58838,14 +59161,14 @@ var LineSelector = ({
58838
59161
  settings,
58839
59162
  allowEditing = false
58840
59163
  }) => {
58841
- const [selectedIndex, setSelectedIndex] = import_react37.useState(initialSelection);
58842
- const [showDeleteDialog, setShowDeleteDialog] = import_react37.useState(false);
58843
- const [moveMode, setMoveMode] = import_react37.useState(false);
58844
- const [localLines, setLocalLines] = import_react37.useState(lines);
58845
- import_react37.useEffect(() => {
59164
+ const [selectedIndex, setSelectedIndex] = import_react38.useState(initialSelection);
59165
+ const [showDeleteDialog, setShowDeleteDialog] = import_react38.useState(false);
59166
+ const [moveMode, setMoveMode] = import_react38.useState(false);
59167
+ const [localLines, setLocalLines] = import_react38.useState(lines);
59168
+ import_react38.useEffect(() => {
58846
59169
  setLocalLines(lines);
58847
59170
  }, [lines]);
58848
- const selectedLine = import_react37.useMemo(() => localLines[selectedIndex], [localLines, selectedIndex]);
59171
+ const selectedLine = import_react38.useMemo(() => localLines[selectedIndex], [localLines, selectedIndex]);
58849
59172
  const appendLine = () => {
58850
59173
  const newLines = [...localLines, []];
58851
59174
  setLocalLines(newLines);
@@ -58930,16 +59253,16 @@ var LineSelector = ({
58930
59253
  }
58931
59254
  });
58932
59255
  if (isThemeManaged) {
58933
- return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59256
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58934
59257
  flexDirection: "column",
58935
59258
  children: [
58936
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59259
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58937
59260
  bold: true,
58938
59261
  children: title ?? "Select Line"
58939
59262
  }, undefined, false, undefined, this),
58940
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59263
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58941
59264
  marginTop: 1,
58942
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59265
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58943
59266
  color: "yellow",
58944
59267
  children: [
58945
59268
  "⚠ Colors are currently managed by the Powerline theme:",
@@ -58947,30 +59270,30 @@ var LineSelector = ({
58947
59270
  ]
58948
59271
  }, undefined, true, undefined, this)
58949
59272
  }, undefined, false, undefined, this),
58950
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59273
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58951
59274
  marginTop: 1,
58952
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59275
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58953
59276
  dimColor: true,
58954
59277
  children: "To customize colors, either:"
58955
59278
  }, undefined, false, undefined, this)
58956
59279
  }, undefined, false, undefined, this),
58957
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59280
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58958
59281
  marginLeft: 2,
58959
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59282
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58960
59283
  dimColor: true,
58961
59284
  children: "• Change to 'Custom' theme in Powerline Configuration → Themes"
58962
59285
  }, undefined, false, undefined, this)
58963
59286
  }, undefined, false, undefined, this),
58964
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59287
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58965
59288
  marginLeft: 2,
58966
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59289
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58967
59290
  dimColor: true,
58968
59291
  children: "• Disable Powerline mode in Powerline Configuration"
58969
59292
  }, undefined, false, undefined, this)
58970
59293
  }, undefined, false, undefined, this),
58971
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59294
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58972
59295
  marginTop: 2,
58973
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59296
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58974
59297
  children: "Press any key to go back..."
58975
59298
  }, undefined, false, undefined, this)
58976
59299
  }, undefined, false, undefined, this)
@@ -58979,18 +59302,18 @@ var LineSelector = ({
58979
59302
  }
58980
59303
  if (showDeleteDialog && selectedLine) {
58981
59304
  const suffix = selectedLine.length > 0 ? import_pluralize.default("widget", selectedLine.length, true) : "empty";
58982
- return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59305
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58983
59306
  flexDirection: "column",
58984
59307
  children: [
58985
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59308
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
58986
59309
  flexDirection: "column",
58987
59310
  gap: 1,
58988
59311
  children: [
58989
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59312
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58990
59313
  bold: true,
58991
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59314
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58992
59315
  children: [
58993
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59316
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
58994
59317
  children: [
58995
59318
  "☰ Line",
58996
59319
  " ",
@@ -58998,7 +59321,7 @@ var LineSelector = ({
58998
59321
  ]
58999
59322
  }, undefined, true, undefined, this),
59000
59323
  " ",
59001
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59324
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59002
59325
  dimColor: true,
59003
59326
  children: [
59004
59327
  "(",
@@ -59009,15 +59332,15 @@ var LineSelector = ({
59009
59332
  ]
59010
59333
  }, undefined, true, undefined, this)
59011
59334
  }, undefined, false, undefined, this),
59012
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59335
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59013
59336
  bold: true,
59014
59337
  children: "Are you sure you want to delete line?"
59015
59338
  }, undefined, false, undefined, this)
59016
59339
  ]
59017
59340
  }, undefined, true, undefined, this),
59018
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59341
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59019
59342
  marginTop: 1,
59020
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(ConfirmDialog, {
59343
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(ConfirmDialog, {
59021
59344
  inline: true,
59022
59345
  onConfirm: () => {
59023
59346
  deleteLine(selectedIndex);
@@ -59032,53 +59355,53 @@ var LineSelector = ({
59032
59355
  ]
59033
59356
  }, undefined, true, undefined, this);
59034
59357
  }
59035
- return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(jsx_dev_runtime9.Fragment, {
59036
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59358
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(jsx_dev_runtime10.Fragment, {
59359
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59037
59360
  flexDirection: "column",
59038
59361
  children: [
59039
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59362
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59040
59363
  children: [
59041
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59364
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59042
59365
  bold: true,
59043
59366
  children: [
59044
59367
  title ?? "Select Line to Edit",
59045
59368
  " "
59046
59369
  ]
59047
59370
  }, undefined, true, undefined, this),
59048
- moveMode && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59371
+ moveMode && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59049
59372
  color: "blue",
59050
59373
  children: "[MOVE MODE]"
59051
59374
  }, undefined, false, undefined, this)
59052
59375
  ]
59053
59376
  }, undefined, true, undefined, this),
59054
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59377
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59055
59378
  dimColor: true,
59056
59379
  children: "Choose which status line to configure"
59057
59380
  }, undefined, false, undefined, this),
59058
- moveMode ? /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59381
+ moveMode ? /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59059
59382
  dimColor: true,
59060
59383
  children: "↑↓ to move line, ESC or Enter to exit move mode"
59061
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59384
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59062
59385
  dimColor: true,
59063
59386
  children: allowEditing ? localLines.length > 1 ? "(a) to append new line, (d) to delete line, (m) to move line, ESC to go back" : "(a) to append new line, ESC to go back" : "ESC to go back"
59064
59387
  }, undefined, false, undefined, this),
59065
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59388
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59066
59389
  marginTop: 1,
59067
59390
  flexDirection: "column",
59068
59391
  children: [
59069
59392
  localLines.map((line, index) => {
59070
59393
  const isSelected = selectedIndex === index;
59071
59394
  const suffix = line.length ? import_pluralize.default("widget", line.length, true) : "empty";
59072
- return /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59073
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59395
+ return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59396
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59074
59397
  color: isSelected ? moveMode ? "blue" : "green" : undefined,
59075
59398
  children: [
59076
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59399
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59077
59400
  children: isSelected ? moveMode ? "◆ " : "▶ " : " "
59078
59401
  }, undefined, false, undefined, this),
59079
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59402
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59080
59403
  children: [
59081
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59404
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59082
59405
  children: [
59083
59406
  "☰ Line",
59084
59407
  " ",
@@ -59086,7 +59409,7 @@ var LineSelector = ({
59086
59409
  ]
59087
59410
  }, undefined, true, undefined, this),
59088
59411
  " ",
59089
- /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59412
+ /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59090
59413
  dimColor: !isSelected,
59091
59414
  children: [
59092
59415
  "(",
@@ -59100,9 +59423,9 @@ var LineSelector = ({
59100
59423
  }, undefined, true, undefined, this)
59101
59424
  }, index, false, undefined, this);
59102
59425
  }),
59103
- !moveMode && /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Box_default, {
59426
+ !moveMode && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59104
59427
  marginTop: 1,
59105
- children: /* @__PURE__ */ jsx_dev_runtime9.jsxDEV(Text, {
59428
+ children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59106
59429
  color: selectedIndex === localLines.length ? "green" : undefined,
59107
59430
  children: [
59108
59431
  selectedIndex === localLines.length ? "▶ " : " ",
@@ -59117,10 +59440,10 @@ var LineSelector = ({
59117
59440
  }, undefined, false, undefined, this);
59118
59441
  };
59119
59442
  // src/tui/components/MainMenu.tsx
59120
- var import_react38 = __toESM(require_react(), 1);
59121
- var jsx_dev_runtime10 = __toESM(require_jsx_dev_runtime(), 1);
59443
+ var import_react39 = __toESM(require_react(), 1);
59444
+ var jsx_dev_runtime11 = __toESM(require_jsx_dev_runtime(), 1);
59122
59445
  var MainMenu = ({ onSelect, isClaudeInstalled, hasChanges, initialSelection = 0, powerlineFontStatus, settings, previewIsTruncated }) => {
59123
- const [selectedIndex, setSelectedIndex] = import_react38.useState(initialSelection);
59446
+ const [selectedIndex, setSelectedIndex] = import_react39.useState(initialSelection);
59124
59447
  const menuItems = [
59125
59448
  { label: "\uD83D\uDCDD Edit Lines", value: "lines", selectable: true },
59126
59449
  { label: "\uD83C\uDFA8 Edit Colors", value: "colors", selectable: true },
@@ -59166,32 +59489,32 @@ var MainMenu = ({ onSelect, isClaudeInstalled, hasChanges, initialSelection = 0,
59166
59489
  const selectedItem = selectableItems[selectedIndex];
59167
59490
  const description = selectedItem ? getDescription(selectedItem.value) : "";
59168
59491
  const showTruncationWarning = previewIsTruncated && settings?.flexMode === "full-minus-40";
59169
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59492
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59170
59493
  flexDirection: "column",
59171
59494
  children: [
59172
- showTruncationWarning && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59495
+ showTruncationWarning && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59173
59496
  marginBottom: 1,
59174
- children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59497
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59175
59498
  color: "yellow",
59176
59499
  children: "⚠ Some lines are truncated, see Terminal Options → Terminal Width for info"
59177
59500
  }, undefined, false, undefined, this)
59178
59501
  }, undefined, false, undefined, this),
59179
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59502
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59180
59503
  bold: true,
59181
59504
  children: "Main Menu"
59182
59505
  }, undefined, false, undefined, this),
59183
- /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59506
+ /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59184
59507
  marginTop: 1,
59185
59508
  flexDirection: "column",
59186
59509
  children: menuItems.map((item, idx) => {
59187
59510
  if (!item.selectable && item.value.startsWith("_gap")) {
59188
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59511
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59189
59512
  children: " "
59190
59513
  }, item.value, false, undefined, this);
59191
59514
  }
59192
59515
  const selectableIdx = selectableItems.indexOf(item);
59193
59516
  const isSelected = selectableIdx === selectedIndex;
59194
- return /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59517
+ return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59195
59518
  color: isSelected ? "green" : undefined,
59196
59519
  children: [
59197
59520
  isSelected ? "▶ " : " ",
@@ -59200,10 +59523,10 @@ var MainMenu = ({ onSelect, isClaudeInstalled, hasChanges, initialSelection = 0,
59200
59523
  }, item.value, true, undefined, this);
59201
59524
  })
59202
59525
  }, undefined, false, undefined, this),
59203
- description && /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Box_default, {
59526
+ description && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59204
59527
  marginTop: 1,
59205
59528
  paddingLeft: 2,
59206
- children: /* @__PURE__ */ jsx_dev_runtime10.jsxDEV(Text, {
59529
+ children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59207
59530
  dimColor: true,
59208
59531
  wrap: "wrap",
59209
59532
  children: description
@@ -59213,12 +59536,12 @@ var MainMenu = ({ onSelect, isClaudeInstalled, hasChanges, initialSelection = 0,
59213
59536
  }, undefined, true, undefined, this);
59214
59537
  };
59215
59538
  // src/tui/components/PowerlineSetup.tsx
59216
- var import_react41 = __toESM(require_react(), 1);
59539
+ var import_react42 = __toESM(require_react(), 1);
59217
59540
  import * as os10 from "os";
59218
59541
 
59219
59542
  // src/tui/components/PowerlineSeparatorEditor.tsx
59220
- var import_react39 = __toESM(require_react(), 1);
59221
- var jsx_dev_runtime11 = __toESM(require_jsx_dev_runtime(), 1);
59543
+ var import_react40 = __toESM(require_react(), 1);
59544
+ var jsx_dev_runtime12 = __toESM(require_jsx_dev_runtime(), 1);
59222
59545
  var PowerlineSeparatorEditor = ({
59223
59546
  settings,
59224
59547
  mode,
@@ -59238,10 +59561,10 @@ var PowerlineSeparatorEditor = ({
59238
59561
  };
59239
59562
  const separators = getItems();
59240
59563
  const invertBgs = mode === "separator" ? powerlineConfig.separatorInvertBackground : [];
59241
- const [selectedIndex, setSelectedIndex] = import_react39.useState(0);
59242
- const [hexInputMode, setHexInputMode] = import_react39.useState(false);
59243
- const [hexInput, setHexInput] = import_react39.useState("");
59244
- const [cursorPos, setCursorPos] = import_react39.useState(0);
59564
+ const [selectedIndex, setSelectedIndex] = import_react40.useState(0);
59565
+ const [hexInputMode, setHexInputMode] = import_react40.useState(false);
59566
+ const [hexInput, setHexInput] = import_react40.useState("");
59567
+ const [cursorPos, setCursorPos] = import_react40.useState(0);
59245
59568
  const getPresets = () => {
59246
59569
  if (mode === "separator") {
59247
59570
  return [
@@ -59430,18 +59753,18 @@ var PowerlineSeparatorEditor = ({
59430
59753
  };
59431
59754
  const canAdd = mode === "separator" || separators.length < 3;
59432
59755
  const canDelete = mode !== "separator" || separators.length > 1;
59433
- return /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59756
+ return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59434
59757
  flexDirection: "column",
59435
59758
  children: [
59436
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59759
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59437
59760
  bold: true,
59438
59761
  children: getTitle()
59439
59762
  }, undefined, false, undefined, this),
59440
- hexInputMode ? /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59763
+ hexInputMode ? /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59441
59764
  marginTop: 2,
59442
59765
  flexDirection: "column",
59443
59766
  children: [
59444
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59767
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59445
59768
  children: [
59446
59769
  "Enter 4-digit hex code for",
59447
59770
  " ",
@@ -59450,47 +59773,47 @@ var PowerlineSeparatorEditor = ({
59450
59773
  ":"
59451
59774
  ]
59452
59775
  }, undefined, true, undefined, this),
59453
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59776
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59454
59777
  children: [
59455
59778
  "\\u",
59456
59779
  hexInput.slice(0, cursorPos),
59457
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59780
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59458
59781
  backgroundColor: "gray",
59459
59782
  color: "black",
59460
59783
  children: hexInput[cursorPos] ?? "_"
59461
59784
  }, undefined, false, undefined, this),
59462
59785
  hexInput.slice(cursorPos + 1),
59463
- hexInput.length < 4 && hexInput.length === cursorPos && /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59786
+ hexInput.length < 4 && hexInput.length === cursorPos && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59464
59787
  dimColor: true,
59465
59788
  children: "_".repeat(4 - hexInput.length - 1)
59466
59789
  }, undefined, false, undefined, this)
59467
59790
  ]
59468
59791
  }, undefined, true, undefined, this),
59469
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59792
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59470
59793
  dimColor: true,
59471
59794
  children: "Enter 4 hex digits (0-9, A-F), then press Enter. ESC to cancel."
59472
59795
  }, undefined, false, undefined, this)
59473
59796
  ]
59474
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(jsx_dev_runtime11.Fragment, {
59797
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(jsx_dev_runtime12.Fragment, {
59475
59798
  children: [
59476
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59477
- children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59799
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59800
+ children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59478
59801
  dimColor: true,
59479
59802
  children: `↑↓ select, ← → cycle${canAdd ? ", (a)dd, (i)nsert" : ""}${canDelete ? ", (d)elete" : ""}, (c)lear, (h)ex${mode === "separator" ? ", (t)oggle invert" : ""}, ESC back`
59480
59803
  }, undefined, false, undefined, this)
59481
59804
  }, undefined, false, undefined, this),
59482
- /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59805
+ /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59483
59806
  marginTop: 2,
59484
59807
  flexDirection: "column",
59485
- children: separators.length > 0 ? separators.map((sep2, index) => /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Box_default, {
59486
- children: /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59808
+ children: separators.length > 0 ? separators.map((sep2, index) => /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59809
+ children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59487
59810
  color: index === selectedIndex ? "green" : undefined,
59488
59811
  children: [
59489
59812
  index === selectedIndex ? "▶ " : " ",
59490
59813
  `${index + 1}: ${getSeparatorDisplay(sep2, index)}`
59491
59814
  ]
59492
59815
  }, undefined, true, undefined, this)
59493
- }, index, false, undefined, this)) : /* @__PURE__ */ jsx_dev_runtime11.jsxDEV(Text, {
59816
+ }, index, false, undefined, this)) : /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59494
59817
  dimColor: true,
59495
59818
  children: "(none configured - press 'a' to add)"
59496
59819
  }, undefined, false, undefined, this)
@@ -59502,8 +59825,8 @@ var PowerlineSeparatorEditor = ({
59502
59825
  };
59503
59826
 
59504
59827
  // src/tui/components/PowerlineThemeSelector.tsx
59505
- var import_react40 = __toESM(require_react(), 1);
59506
- var jsx_dev_runtime12 = __toESM(require_jsx_dev_runtime(), 1);
59828
+ var import_react41 = __toESM(require_react(), 1);
59829
+ var jsx_dev_runtime13 = __toESM(require_jsx_dev_runtime(), 1);
59507
59830
  var PowerlineThemeSelector = ({
59508
59831
  settings,
59509
59832
  onUpdate,
@@ -59511,10 +59834,10 @@ var PowerlineThemeSelector = ({
59511
59834
  }) => {
59512
59835
  const themes = getPowerlineThemes();
59513
59836
  const currentTheme = settings.powerline.theme ?? "custom";
59514
- const [selectedIndex, setSelectedIndex] = import_react40.useState(Math.max(0, themes.indexOf(currentTheme)));
59515
- const [showCustomizeConfirm, setShowCustomizeConfirm] = import_react40.useState(false);
59516
- const originalThemeRef = import_react40.useRef(currentTheme);
59517
- const originalSettingsRef = import_react40.useRef(settings);
59837
+ const [selectedIndex, setSelectedIndex] = import_react41.useState(Math.max(0, themes.indexOf(currentTheme)));
59838
+ const [showCustomizeConfirm, setShowCustomizeConfirm] = import_react41.useState(false);
59839
+ const originalThemeRef = import_react41.useRef(currentTheme);
59840
+ const originalSettingsRef = import_react41.useRef(settings);
59518
59841
  const applyTheme = (themeName) => {
59519
59842
  const updatedSettings = {
59520
59843
  ...settings,
@@ -59602,39 +59925,39 @@ var PowerlineThemeSelector = ({
59602
59925
  const selectedThemeName = themes[selectedIndex];
59603
59926
  const selectedTheme = selectedThemeName ? getPowerlineTheme(selectedThemeName) : undefined;
59604
59927
  if (showCustomizeConfirm) {
59605
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59928
+ return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59606
59929
  flexDirection: "column",
59607
59930
  children: [
59608
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59931
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59609
59932
  bold: true,
59610
59933
  color: "yellow",
59611
59934
  children: "⚠ Confirm Customization"
59612
59935
  }, undefined, false, undefined, this),
59613
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59936
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59614
59937
  marginTop: 1,
59615
59938
  flexDirection: "column",
59616
59939
  children: [
59617
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59940
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59618
59941
  children: "This will copy the current theme colors to your widgets"
59619
59942
  }, undefined, false, undefined, this),
59620
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59943
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59621
59944
  children: "and switch to Custom theme mode."
59622
59945
  }, undefined, false, undefined, this),
59623
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59946
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59624
59947
  color: "red",
59625
59948
  children: "This will overwrite any existing custom colors!"
59626
59949
  }, undefined, false, undefined, this)
59627
59950
  ]
59628
59951
  }, undefined, true, undefined, this),
59629
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59952
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59630
59953
  marginTop: 2,
59631
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59954
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59632
59955
  children: "Continue?"
59633
59956
  }, undefined, false, undefined, this)
59634
59957
  }, undefined, false, undefined, this),
59635
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59958
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59636
59959
  marginTop: 1,
59637
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(ConfirmDialog, {
59960
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(ConfirmDialog, {
59638
59961
  inline: true,
59639
59962
  onConfirm: () => {
59640
59963
  customizeTheme();
@@ -59648,39 +59971,39 @@ var PowerlineThemeSelector = ({
59648
59971
  ]
59649
59972
  }, undefined, true, undefined, this);
59650
59973
  }
59651
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59974
+ return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59652
59975
  flexDirection: "column",
59653
59976
  children: [
59654
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59977
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59655
59978
  bold: true,
59656
59979
  children: [
59657
59980
  `Powerline Theme Selection | `,
59658
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59981
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59659
59982
  dimColor: true,
59660
59983
  children: `Original: ${originalThemeRef.current}`
59661
59984
  }, undefined, false, undefined, this)
59662
59985
  ]
59663
59986
  }, undefined, true, undefined, this),
59664
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59665
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
59987
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59988
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59666
59989
  dimColor: true,
59667
59990
  children: `↑↓ navigate, Enter apply${selectedThemeName && selectedThemeName !== "custom" ? ", (c)ustomize theme" : ""}, ESC cancel`
59668
59991
  }, undefined, false, undefined, this)
59669
59992
  }, undefined, false, undefined, this),
59670
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59993
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59671
59994
  marginTop: 1,
59672
59995
  flexDirection: "column",
59673
59996
  children: themes.map((themeName, index) => {
59674
59997
  const theme = getPowerlineTheme(themeName);
59675
59998
  const isSelected = index === selectedIndex;
59676
59999
  const isOriginal = themeName === originalThemeRef.current;
59677
- return /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59678
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
60000
+ return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60001
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59679
60002
  color: isSelected ? "green" : undefined,
59680
60003
  children: [
59681
60004
  isSelected ? "▶ " : " ",
59682
60005
  theme?.name ?? themeName,
59683
- isOriginal && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
60006
+ isOriginal && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59684
60007
  dimColor: true,
59685
60008
  children: " (original)"
59686
60009
  }, undefined, false, undefined, this)
@@ -59689,29 +60012,29 @@ var PowerlineThemeSelector = ({
59689
60012
  }, themeName, false, undefined, this);
59690
60013
  })
59691
60014
  }, undefined, false, undefined, this),
59692
- selectedTheme && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
60015
+ selectedTheme && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59693
60016
  marginTop: 2,
59694
60017
  flexDirection: "column",
59695
60018
  children: [
59696
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
60019
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59697
60020
  dimColor: true,
59698
60021
  children: "Description:"
59699
60022
  }, undefined, false, undefined, this),
59700
- /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
60023
+ /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59701
60024
  marginLeft: 2,
59702
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
60025
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59703
60026
  children: selectedTheme.description
59704
60027
  }, undefined, false, undefined, this)
59705
60028
  }, undefined, false, undefined, this),
59706
- selectedThemeName && selectedThemeName !== "custom" && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
60029
+ selectedThemeName && selectedThemeName !== "custom" && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
59707
60030
  marginTop: 1,
59708
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
60031
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59709
60032
  dimColor: true,
59710
60033
  children: "Press (c) to customize this theme - copies colors to widgets"
59711
60034
  }, undefined, false, undefined, this)
59712
60035
  }, undefined, false, undefined, this),
59713
- settings.colorLevel === 1 && /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Box_default, {
59714
- children: /* @__PURE__ */ jsx_dev_runtime12.jsxDEV(Text, {
60036
+ settings.colorLevel === 1 && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60037
+ children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
59715
60038
  color: "yellow",
59716
60039
  children: "⚠ 16 color mode themes have a very limited palette, we recommend switching color level in Terminal Options"
59717
60040
  }, undefined, false, undefined, this)
@@ -59723,7 +60046,7 @@ var PowerlineThemeSelector = ({
59723
60046
  };
59724
60047
 
59725
60048
  // src/tui/components/PowerlineSetup.tsx
59726
- var jsx_dev_runtime13 = __toESM(require_jsx_dev_runtime(), 1);
60049
+ var jsx_dev_runtime14 = __toESM(require_jsx_dev_runtime(), 1);
59727
60050
  var PowerlineSetup = ({
59728
60051
  settings,
59729
60052
  powerlineFontStatus,
@@ -59735,10 +60058,10 @@ var PowerlineSetup = ({
59735
60058
  onClearMessage
59736
60059
  }) => {
59737
60060
  const powerlineConfig = settings.powerline;
59738
- const [screen, setScreen] = import_react41.useState("menu");
59739
- const [selectedMenuItem, setSelectedMenuItem] = import_react41.useState(0);
59740
- const [confirmingEnable, setConfirmingEnable] = import_react41.useState(false);
59741
- const [confirmingFontInstall, setConfirmingFontInstall] = import_react41.useState(false);
60061
+ const [screen, setScreen] = import_react42.useState("menu");
60062
+ const [selectedMenuItem, setSelectedMenuItem] = import_react42.useState(0);
60063
+ const [confirmingEnable, setConfirmingEnable] = import_react42.useState(false);
60064
+ const [confirmingFontInstall, setConfirmingFontInstall] = import_react42.useState(false);
59742
60065
  const hasSeparatorItems = settings.lines.some((line) => line.some((item) => item.type === "separator" || item.type === "flex-separator"));
59743
60066
  const menuItems = [
59744
60067
  { label: "Separator", value: "separator" },
@@ -59855,7 +60178,7 @@ var PowerlineSetup = ({
59855
60178
  }
59856
60179
  });
59857
60180
  if (screen === "separator") {
59858
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(PowerlineSeparatorEditor, {
60181
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(PowerlineSeparatorEditor, {
59859
60182
  settings,
59860
60183
  mode: "separator",
59861
60184
  onUpdate,
@@ -59865,7 +60188,7 @@ var PowerlineSetup = ({
59865
60188
  }, undefined, false, undefined, this);
59866
60189
  }
59867
60190
  if (screen === "startCap") {
59868
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(PowerlineSeparatorEditor, {
60191
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(PowerlineSeparatorEditor, {
59869
60192
  settings,
59870
60193
  mode: "startCap",
59871
60194
  onUpdate,
@@ -59875,7 +60198,7 @@ var PowerlineSetup = ({
59875
60198
  }, undefined, false, undefined, this);
59876
60199
  }
59877
60200
  if (screen === "endCap") {
59878
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(PowerlineSeparatorEditor, {
60201
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(PowerlineSeparatorEditor, {
59879
60202
  settings,
59880
60203
  mode: "endCap",
59881
60204
  onUpdate,
@@ -59885,7 +60208,7 @@ var PowerlineSetup = ({
59885
60208
  }, undefined, false, undefined, this);
59886
60209
  }
59887
60210
  if (screen === "themes") {
59888
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(PowerlineThemeSelector, {
60211
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(PowerlineThemeSelector, {
59889
60212
  settings,
59890
60213
  onUpdate,
59891
60214
  onBack: () => {
@@ -59893,140 +60216,140 @@ var PowerlineSetup = ({
59893
60216
  }
59894
60217
  }, undefined, false, undefined, this);
59895
60218
  }
59896
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60219
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
59897
60220
  flexDirection: "column",
59898
60221
  children: [
59899
- !confirmingFontInstall && !installingFonts && !fontInstallMessage && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60222
+ !confirmingFontInstall && !installingFonts && !fontInstallMessage && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59900
60223
  bold: true,
59901
60224
  children: "Powerline Setup"
59902
60225
  }, undefined, false, undefined, this),
59903
- confirmingFontInstall ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60226
+ confirmingFontInstall ? /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
59904
60227
  flexDirection: "column",
59905
60228
  children: [
59906
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60229
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
59907
60230
  marginBottom: 1,
59908
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60231
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59909
60232
  color: "cyan",
59910
60233
  bold: true,
59911
60234
  children: "Font Installation"
59912
60235
  }, undefined, false, undefined, this)
59913
60236
  }, undefined, false, undefined, this),
59914
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60237
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
59915
60238
  marginBottom: 1,
59916
60239
  flexDirection: "column",
59917
60240
  children: [
59918
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60241
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59919
60242
  bold: true,
59920
60243
  children: "What will happen:"
59921
60244
  }, undefined, false, undefined, this),
59922
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60245
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59923
60246
  children: [
59924
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60247
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59925
60248
  dimColor: true,
59926
60249
  children: "• Clone fonts from "
59927
60250
  }, undefined, false, undefined, this),
59928
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60251
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59929
60252
  color: "blue",
59930
60253
  children: "https://github.com/powerline/fonts"
59931
60254
  }, undefined, false, undefined, this)
59932
60255
  ]
59933
60256
  }, undefined, true, undefined, this),
59934
- os10.platform() === "darwin" && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60257
+ os10.platform() === "darwin" && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
59935
60258
  children: [
59936
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60259
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59937
60260
  dimColor: true,
59938
60261
  children: "• Run install.sh script which will:"
59939
60262
  }, undefined, false, undefined, this),
59940
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60263
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59941
60264
  dimColor: true,
59942
60265
  children: " - Copy all .ttf/.otf files to ~/Library/Fonts"
59943
60266
  }, undefined, false, undefined, this),
59944
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60267
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59945
60268
  dimColor: true,
59946
60269
  children: " - Register fonts with macOS"
59947
60270
  }, undefined, false, undefined, this)
59948
60271
  ]
59949
60272
  }, undefined, true, undefined, this),
59950
- os10.platform() === "linux" && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60273
+ os10.platform() === "linux" && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
59951
60274
  children: [
59952
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60275
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59953
60276
  dimColor: true,
59954
60277
  children: "• Run install.sh script which will:"
59955
60278
  }, undefined, false, undefined, this),
59956
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60279
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59957
60280
  dimColor: true,
59958
60281
  children: " - Copy all .ttf/.otf files to ~/.local/share/fonts"
59959
60282
  }, undefined, false, undefined, this),
59960
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60283
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59961
60284
  dimColor: true,
59962
60285
  children: " - Run fc-cache to update font cache"
59963
60286
  }, undefined, false, undefined, this)
59964
60287
  ]
59965
60288
  }, undefined, true, undefined, this),
59966
- os10.platform() === "win32" && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60289
+ os10.platform() === "win32" && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
59967
60290
  children: [
59968
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60291
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59969
60292
  dimColor: true,
59970
60293
  children: "• Copy Powerline .ttf/.otf files to:"
59971
60294
  }, undefined, false, undefined, this),
59972
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60295
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59973
60296
  dimColor: true,
59974
60297
  children: " AppData\\Local\\Microsoft\\Windows\\Fonts"
59975
60298
  }, undefined, false, undefined, this)
59976
60299
  ]
59977
60300
  }, undefined, true, undefined, this),
59978
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60301
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59979
60302
  dimColor: true,
59980
60303
  children: "• Clean up temporary files"
59981
60304
  }, undefined, false, undefined, this)
59982
60305
  ]
59983
60306
  }, undefined, true, undefined, this),
59984
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60307
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
59985
60308
  marginBottom: 1,
59986
60309
  children: [
59987
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60310
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59988
60311
  color: "yellow",
59989
60312
  bold: true,
59990
60313
  children: "Requirements: "
59991
60314
  }, undefined, false, undefined, this),
59992
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60315
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
59993
60316
  dimColor: true,
59994
60317
  children: "Git installed, Internet connection, Write permissions"
59995
60318
  }, undefined, false, undefined, this)
59996
60319
  ]
59997
60320
  }, undefined, true, undefined, this),
59998
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60321
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
59999
60322
  marginBottom: 1,
60000
60323
  flexDirection: "column",
60001
60324
  children: [
60002
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60325
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60003
60326
  color: "green",
60004
60327
  bold: true,
60005
60328
  children: "After install:"
60006
60329
  }, undefined, false, undefined, this),
60007
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60330
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60008
60331
  dimColor: true,
60009
60332
  children: "• Restart terminal"
60010
60333
  }, undefined, false, undefined, this),
60011
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60334
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60012
60335
  dimColor: true,
60013
60336
  children: "• Select a Powerline font"
60014
60337
  }, undefined, false, undefined, this),
60015
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60338
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60016
60339
  dimColor: true,
60017
60340
  children: ' (e.g. "Meslo LG S for Powerline")'
60018
60341
  }, undefined, false, undefined, this)
60019
60342
  ]
60020
60343
  }, undefined, true, undefined, this),
60021
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60344
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60022
60345
  marginTop: 1,
60023
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60346
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60024
60347
  children: "Proceed? "
60025
60348
  }, undefined, false, undefined, this)
60026
60349
  }, undefined, false, undefined, this),
60027
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60350
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60028
60351
  marginTop: 1,
60029
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(ConfirmDialog, {
60352
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(ConfirmDialog, {
60030
60353
  inline: true,
60031
60354
  onConfirm: () => {
60032
60355
  setConfirmingFontInstall(false);
@@ -60038,36 +60361,36 @@ var PowerlineSetup = ({
60038
60361
  }, undefined, false, undefined, this)
60039
60362
  }, undefined, false, undefined, this)
60040
60363
  ]
60041
- }, undefined, true, undefined, this) : confirmingEnable ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60364
+ }, undefined, true, undefined, this) : confirmingEnable ? /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60042
60365
  flexDirection: "column",
60043
60366
  marginTop: 1,
60044
60367
  children: [
60045
- hasSeparatorItems && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60368
+ hasSeparatorItems && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
60046
60369
  children: [
60047
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60048
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60370
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60371
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60049
60372
  color: "yellow",
60050
60373
  children: "⚠ Warning: Enabling Powerline mode will remove all existing separators and flex-separators from your status lines."
60051
60374
  }, undefined, false, undefined, this)
60052
60375
  }, undefined, false, undefined, this),
60053
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60376
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60054
60377
  marginBottom: 1,
60055
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60378
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60056
60379
  dimColor: true,
60057
60380
  children: "Powerline mode uses its own separator system and is incompatible with manual separators."
60058
60381
  }, undefined, false, undefined, this)
60059
60382
  }, undefined, false, undefined, this)
60060
60383
  ]
60061
60384
  }, undefined, true, undefined, this),
60062
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60385
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60063
60386
  marginTop: hasSeparatorItems ? 1 : 0,
60064
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60387
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60065
60388
  children: "Do you want to continue? "
60066
60389
  }, undefined, false, undefined, this)
60067
60390
  }, undefined, false, undefined, this),
60068
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60391
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60069
60392
  marginTop: 1,
60070
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(ConfirmDialog, {
60393
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(ConfirmDialog, {
60071
60394
  inline: true,
60072
60395
  onConfirm: () => {
60073
60396
  const theme = !powerlineConfig.theme || powerlineConfig.theme === "custom" ? getDefaultPowerlineTheme() : powerlineConfig.theme;
@@ -60092,51 +60415,51 @@ var PowerlineSetup = ({
60092
60415
  }, undefined, false, undefined, this)
60093
60416
  }, undefined, false, undefined, this)
60094
60417
  ]
60095
- }, undefined, true, undefined, this) : installingFonts ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60096
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60418
+ }, undefined, true, undefined, this) : installingFonts ? /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60419
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60097
60420
  color: "yellow",
60098
60421
  children: "Installing Powerline fonts... This may take a moment."
60099
60422
  }, undefined, false, undefined, this)
60100
- }, undefined, false, undefined, this) : fontInstallMessage ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60423
+ }, undefined, false, undefined, this) : fontInstallMessage ? /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60101
60424
  flexDirection: "column",
60102
60425
  children: [
60103
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60426
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60104
60427
  color: fontInstallMessage.includes("success") ? "green" : "red",
60105
60428
  children: fontInstallMessage
60106
60429
  }, undefined, false, undefined, this),
60107
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60430
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60108
60431
  marginTop: 1,
60109
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60432
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60110
60433
  dimColor: true,
60111
60434
  children: "Press any key to continue..."
60112
60435
  }, undefined, false, undefined, this)
60113
60436
  }, undefined, false, undefined, this)
60114
60437
  ]
60115
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60438
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
60116
60439
  children: [
60117
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60440
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60118
60441
  flexDirection: "column",
60119
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60442
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60120
60443
  children: [
60121
60444
  " Font Status: ",
60122
- powerlineFontStatus.installed ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60445
+ powerlineFontStatus.installed ? /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
60123
60446
  children: [
60124
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60447
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60125
60448
  color: "green",
60126
60449
  children: "✓ Installed"
60127
60450
  }, undefined, false, undefined, this),
60128
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60451
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60129
60452
  dimColor: true,
60130
60453
  children: " - Ensure fonts are active in your terminal"
60131
60454
  }, undefined, false, undefined, this)
60132
60455
  ]
60133
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60456
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
60134
60457
  children: [
60135
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60458
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60136
60459
  color: "yellow",
60137
60460
  children: "✗ Not Installed"
60138
60461
  }, undefined, false, undefined, this),
60139
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60462
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60140
60463
  dimColor: true,
60141
60464
  children: " - Press (i) to install Powerline fonts"
60142
60465
  }, undefined, false, undefined, this)
@@ -60145,52 +60468,52 @@ var PowerlineSetup = ({
60145
60468
  ]
60146
60469
  }, undefined, true, undefined, this)
60147
60470
  }, undefined, false, undefined, this),
60148
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60471
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60149
60472
  children: [
60150
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60473
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60151
60474
  children: " Powerline Mode: "
60152
60475
  }, undefined, false, undefined, this),
60153
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60476
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60154
60477
  color: powerlineConfig.enabled ? "green" : "red",
60155
60478
  children: powerlineConfig.enabled ? "✓ Enabled " : "✗ Disabled "
60156
60479
  }, undefined, false, undefined, this),
60157
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60480
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60158
60481
  dimColor: true,
60159
60482
  children: " - Press (t) to toggle"
60160
60483
  }, undefined, false, undefined, this)
60161
60484
  ]
60162
60485
  }, undefined, true, undefined, this),
60163
- powerlineConfig.enabled && /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60486
+ powerlineConfig.enabled && /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
60164
60487
  children: [
60165
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60488
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60166
60489
  children: [
60167
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60490
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60168
60491
  children: " Align Widgets: "
60169
60492
  }, undefined, false, undefined, this),
60170
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60493
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60171
60494
  color: powerlineConfig.autoAlign ? "green" : "red",
60172
60495
  children: powerlineConfig.autoAlign ? "✓ Enabled " : "✗ Disabled "
60173
60496
  }, undefined, false, undefined, this),
60174
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60497
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60175
60498
  dimColor: true,
60176
60499
  children: " - Press (a) to toggle"
60177
60500
  }, undefined, false, undefined, this)
60178
60501
  ]
60179
60502
  }, undefined, true, undefined, this),
60180
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60503
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60181
60504
  flexDirection: "column",
60182
60505
  marginTop: 1,
60183
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60506
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60184
60507
  dimColor: true,
60185
60508
  children: "When enabled, global overrides are disabled and powerline separators are used"
60186
60509
  }, undefined, false, undefined, this)
60187
60510
  }, undefined, false, undefined, this)
60188
60511
  ]
60189
60512
  }, undefined, true, undefined, this),
60190
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60513
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60191
60514
  marginTop: 1,
60192
60515
  flexDirection: "column",
60193
- children: powerlineConfig.enabled ? /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(jsx_dev_runtime13.Fragment, {
60516
+ children: powerlineConfig.enabled ? /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(jsx_dev_runtime14.Fragment, {
60194
60517
  children: menuItems.map((item, index) => {
60195
60518
  const isSelected = index === selectedMenuItem;
60196
60519
  let displayValue = "";
@@ -60212,9 +60535,9 @@ var PowerlineSetup = ({
60212
60535
  break;
60213
60536
  }
60214
60537
  if (item.value === "back") {
60215
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60538
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60216
60539
  marginTop: 1,
60217
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60540
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60218
60541
  color: isSelected ? "green" : undefined,
60219
60542
  children: [
60220
60543
  isSelected ? "▶ " : " ",
@@ -60223,13 +60546,13 @@ var PowerlineSetup = ({
60223
60546
  }, undefined, true, undefined, this)
60224
60547
  }, item.value, false, undefined, this);
60225
60548
  }
60226
- return /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60227
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60549
+ return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60550
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60228
60551
  color: isSelected ? "green" : undefined,
60229
60552
  children: [
60230
60553
  isSelected ? "▶ " : " ",
60231
60554
  item.label.padEnd(11, " "),
60232
- /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60555
+ /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60233
60556
  dimColor: true,
60234
60557
  children: displayValue && `(${displayValue})`
60235
60558
  }, undefined, false, undefined, this)
@@ -60237,9 +60560,9 @@ var PowerlineSetup = ({
60237
60560
  }, undefined, true, undefined, this)
60238
60561
  }, item.value, false, undefined, this);
60239
60562
  })
60240
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Box_default, {
60563
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60241
60564
  marginTop: 1,
60242
- children: /* @__PURE__ */ jsx_dev_runtime13.jsxDEV(Text, {
60565
+ children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60243
60566
  dimColor: true,
60244
60567
  children: "Press ESC to go back"
60245
60568
  }, undefined, false, undefined, this)
@@ -60251,8 +60574,8 @@ var PowerlineSetup = ({
60251
60574
  }, undefined, true, undefined, this);
60252
60575
  };
60253
60576
  // src/tui/components/StatusLinePreview.tsx
60254
- var import_react42 = __toESM(require_react(), 1);
60255
- var jsx_dev_runtime14 = __toESM(require_jsx_dev_runtime(), 1);
60577
+ var import_react43 = __toESM(require_react(), 1);
60578
+ var jsx_dev_runtime15 = __toESM(require_jsx_dev_runtime(), 1);
60256
60579
  var renderSingleLine = (widgets, terminalWidth, widthDetectionAvailable, settings, lineIndex, globalSeparatorIndex, preRenderedWidgets, preCalculatedMaxWidths) => {
60257
60580
  const context = {
60258
60581
  terminalWidth,
@@ -60263,8 +60586,8 @@ var renderSingleLine = (widgets, terminalWidth, widthDetectionAvailable, setting
60263
60586
  return renderStatusLineWithInfo(widgets, settings, context, preRenderedWidgets, preCalculatedMaxWidths);
60264
60587
  };
60265
60588
  var StatusLinePreview = ({ lines, terminalWidth, settings, onTruncationChange }) => {
60266
- const widthDetectionAvailable = import_react42.default.useMemo(() => canDetectTerminalWidth(), []);
60267
- const { renderedLines, anyTruncated } = import_react42.default.useMemo(() => {
60589
+ const widthDetectionAvailable = import_react43.default.useMemo(() => canDetectTerminalWidth(), []);
60590
+ const { renderedLines, anyTruncated } = import_react43.default.useMemo(() => {
60268
60591
  if (!settings)
60269
60592
  return { renderedLines: [], anyTruncated: false };
60270
60593
  const preRenderedLines = preRenderAllWidgets(lines, settings, { terminalWidth, isPreview: true });
@@ -60289,29 +60612,29 @@ var StatusLinePreview = ({ lines, terminalWidth, settings, onTruncationChange })
60289
60612
  }
60290
60613
  return { renderedLines: result, anyTruncated: truncated };
60291
60614
  }, [lines, terminalWidth, widthDetectionAvailable, settings]);
60292
- import_react42.default.useEffect(() => {
60615
+ import_react43.default.useEffect(() => {
60293
60616
  onTruncationChange?.(anyTruncated);
60294
60617
  }, [anyTruncated, onTruncationChange]);
60295
- return /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60618
+ return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60296
60619
  flexDirection: "column",
60297
60620
  children: [
60298
- /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Box_default, {
60621
+ /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60299
60622
  borderStyle: "round",
60300
60623
  borderColor: "gray",
60301
60624
  borderDimColor: true,
60302
60625
  width: "100%",
60303
60626
  paddingLeft: 1,
60304
- children: /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60627
+ children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60305
60628
  children: [
60306
60629
  ">",
60307
- /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60630
+ /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60308
60631
  dimColor: true,
60309
60632
  children: " Preview (ctrl+s to save configuration at any time)"
60310
60633
  }, undefined, false, undefined, this)
60311
60634
  ]
60312
60635
  }, undefined, true, undefined, this)
60313
60636
  }, undefined, false, undefined, this),
60314
- renderedLines.map((line, index) => /* @__PURE__ */ jsx_dev_runtime14.jsxDEV(Text, {
60637
+ renderedLines.map((line, index) => /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60315
60638
  children: [
60316
60639
  " ",
60317
60640
  line,
@@ -60322,12 +60645,12 @@ var StatusLinePreview = ({ lines, terminalWidth, settings, onTruncationChange })
60322
60645
  }, undefined, true, undefined, this);
60323
60646
  };
60324
60647
  // src/tui/components/TerminalOptionsMenu.tsx
60325
- var import_react43 = __toESM(require_react(), 1);
60326
- var jsx_dev_runtime15 = __toESM(require_jsx_dev_runtime(), 1);
60648
+ var import_react44 = __toESM(require_react(), 1);
60649
+ var jsx_dev_runtime16 = __toESM(require_jsx_dev_runtime(), 1);
60327
60650
  var TerminalOptionsMenu = ({ settings, onUpdate, onBack }) => {
60328
- const [showColorWarning, setShowColorWarning] = import_react43.useState(false);
60329
- const [pendingColorLevel, setPendingColorLevel] = import_react43.useState(null);
60330
- const [selectedIndex, setSelectedIndex] = import_react43.useState(0);
60651
+ const [showColorWarning, setShowColorWarning] = import_react44.useState(false);
60652
+ const [pendingColorLevel, setPendingColorLevel] = import_react44.useState(null);
60653
+ const [selectedIndex, setSelectedIndex] = import_react44.useState(0);
60331
60654
  const handleSelect = () => {
60332
60655
  if (selectedIndex === 2) {
60333
60656
  onBack();
@@ -60439,27 +60762,27 @@ var TerminalOptionsMenu = ({ settings, onUpdate, onBack }) => {
60439
60762
  }
60440
60763
  }
60441
60764
  });
60442
- return /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60765
+ return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60443
60766
  flexDirection: "column",
60444
60767
  children: [
60445
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60768
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60446
60769
  bold: true,
60447
60770
  children: "Terminal Options"
60448
60771
  }, undefined, false, undefined, this),
60449
- showColorWarning ? /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60772
+ showColorWarning ? /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60450
60773
  flexDirection: "column",
60451
60774
  marginTop: 1,
60452
60775
  children: [
60453
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60776
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60454
60777
  color: "yellow",
60455
60778
  children: "⚠ Warning: Custom colors detected!"
60456
60779
  }, undefined, false, undefined, this),
60457
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60780
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60458
60781
  children: "Switching color modes will reset custom ansi256 or hex colors to defaults."
60459
60782
  }, undefined, false, undefined, this),
60460
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60783
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60461
60784
  marginTop: 1,
60462
- children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(ConfirmDialog, {
60785
+ children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(ConfirmDialog, {
60463
60786
  message: "Continue?",
60464
60787
  onConfirm: handleColorConfirm,
60465
60788
  onCancel: handleColorCancel,
@@ -60467,18 +60790,18 @@ var TerminalOptionsMenu = ({ settings, onUpdate, onBack }) => {
60467
60790
  }, undefined, false, undefined, this)
60468
60791
  }, undefined, false, undefined, this)
60469
60792
  ]
60470
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(jsx_dev_runtime15.Fragment, {
60793
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(jsx_dev_runtime16.Fragment, {
60471
60794
  children: [
60472
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60795
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60473
60796
  color: "white",
60474
60797
  children: "Configure terminal-specific settings for optimal display"
60475
60798
  }, undefined, false, undefined, this),
60476
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60799
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60477
60800
  marginTop: 1,
60478
60801
  flexDirection: "column",
60479
60802
  children: [
60480
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60481
- children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60803
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60804
+ children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60482
60805
  color: selectedIndex === 0 ? "green" : undefined,
60483
60806
  children: [
60484
60807
  selectedIndex === 0 ? "▶ " : " ",
@@ -60486,8 +60809,8 @@ var TerminalOptionsMenu = ({ settings, onUpdate, onBack }) => {
60486
60809
  ]
60487
60810
  }, undefined, true, undefined, this)
60488
60811
  }, undefined, false, undefined, this),
60489
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60490
- children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60812
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60813
+ children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60491
60814
  color: selectedIndex === 1 ? "green" : undefined,
60492
60815
  children: [
60493
60816
  selectedIndex === 1 ? "▶ " : " ",
@@ -60497,9 +60820,9 @@ var TerminalOptionsMenu = ({ settings, onUpdate, onBack }) => {
60497
60820
  ]
60498
60821
  }, undefined, true, undefined, this)
60499
60822
  }, undefined, false, undefined, this),
60500
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60823
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60501
60824
  marginTop: 1,
60502
- children: /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60825
+ children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60503
60826
  color: selectedIndex === 2 ? "green" : undefined,
60504
60827
  children: [
60505
60828
  selectedIndex === 2 ? "▶ " : " ",
@@ -60509,27 +60832,27 @@ var TerminalOptionsMenu = ({ settings, onUpdate, onBack }) => {
60509
60832
  }, undefined, false, undefined, this)
60510
60833
  ]
60511
60834
  }, undefined, true, undefined, this),
60512
- selectedIndex === 1 && /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Box_default, {
60835
+ selectedIndex === 1 && /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60513
60836
  marginTop: 1,
60514
60837
  flexDirection: "column",
60515
60838
  children: [
60516
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60839
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60517
60840
  dimColor: true,
60518
60841
  children: "Color level affects how colors are rendered:"
60519
60842
  }, undefined, false, undefined, this),
60520
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60843
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60521
60844
  dimColor: true,
60522
60845
  children: "• Truecolor: Full 24-bit RGB colors (16.7M colors)"
60523
60846
  }, undefined, false, undefined, this),
60524
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60847
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60525
60848
  dimColor: true,
60526
60849
  children: "• 256 Color: Extended color palette (256 colors)"
60527
60850
  }, undefined, false, undefined, this),
60528
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60851
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60529
60852
  dimColor: true,
60530
60853
  children: "• Basic: Standard 16-color terminal palette"
60531
60854
  }, undefined, false, undefined, this),
60532
- /* @__PURE__ */ jsx_dev_runtime15.jsxDEV(Text, {
60855
+ /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60533
60856
  dimColor: true,
60534
60857
  children: "• No Color: Disables all color output"
60535
60858
  }, undefined, false, undefined, this)
@@ -60556,15 +60879,15 @@ var getColorLevelLabel = (level) => {
60556
60879
  }
60557
60880
  };
60558
60881
  // src/tui/components/TerminalWidthMenu.tsx
60559
- var import_react44 = __toESM(require_react(), 1);
60560
- var jsx_dev_runtime16 = __toESM(require_jsx_dev_runtime(), 1);
60882
+ var import_react45 = __toESM(require_react(), 1);
60883
+ var jsx_dev_runtime17 = __toESM(require_jsx_dev_runtime(), 1);
60561
60884
  var TerminalWidthMenu = ({ settings, onUpdate, onBack }) => {
60562
- const [selectedOption, setSelectedOption] = import_react44.useState(settings.flexMode);
60563
- const [compactThreshold, setCompactThreshold] = import_react44.useState(settings.compactThreshold);
60564
- const [editingThreshold, setEditingThreshold] = import_react44.useState(false);
60565
- const [thresholdInput, setThresholdInput] = import_react44.useState(String(settings.compactThreshold));
60566
- const [validationError, setValidationError] = import_react44.useState(null);
60567
- const [selectedIndex, setSelectedIndex] = import_react44.useState(() => {
60885
+ const [selectedOption, setSelectedOption] = import_react45.useState(settings.flexMode);
60886
+ const [compactThreshold, setCompactThreshold] = import_react45.useState(settings.compactThreshold);
60887
+ const [editingThreshold, setEditingThreshold] = import_react45.useState(false);
60888
+ const [thresholdInput, setThresholdInput] = import_react45.useState(String(settings.compactThreshold));
60889
+ const [validationError, setValidationError] = import_react45.useState(null);
60890
+ const [selectedIndex, setSelectedIndex] = import_react45.useState(() => {
60568
60891
  const options2 = ["full", "full-minus-40", "full-until-compact"];
60569
60892
  return options2.indexOf(settings.flexMode);
60570
60893
  });
@@ -60652,27 +60975,27 @@ NOTE: If /ide integration is enabled, it's not recommended to use this mode.`
60652
60975
  }
60653
60976
  ];
60654
60977
  const currentOption = selectedIndex < 3 ? optionDetails[selectedIndex] : null;
60655
- return /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60978
+ return /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
60656
60979
  flexDirection: "column",
60657
60980
  children: [
60658
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60981
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60659
60982
  bold: true,
60660
60983
  children: "Terminal Width"
60661
60984
  }, undefined, false, undefined, this),
60662
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60985
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60663
60986
  color: "white",
60664
60987
  children: "These settings affect where long lines are truncated, and where right-alignment occurs when using flex separators"
60665
60988
  }, undefined, false, undefined, this),
60666
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60989
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60667
60990
  dimColor: true,
60668
60991
  wrap: "wrap",
60669
60992
  children: "Claude code does not currently provide an available width variable for the statusline and features like IDE integration, auto-compaction notices, etc all cause the statusline to wrap if we do not truncate it"
60670
60993
  }, undefined, false, undefined, this),
60671
- editingThreshold ? /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60994
+ editingThreshold ? /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
60672
60995
  marginTop: 1,
60673
60996
  flexDirection: "column",
60674
60997
  children: [
60675
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
60998
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60676
60999
  children: [
60677
61000
  "Enter compact threshold (1-99):",
60678
61001
  " ",
@@ -60680,22 +61003,22 @@ NOTE: If /ide integration is enabled, it's not recommended to use this mode.`
60680
61003
  "%"
60681
61004
  ]
60682
61005
  }, undefined, true, undefined, this),
60683
- validationError ? /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61006
+ validationError ? /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60684
61007
  color: "red",
60685
61008
  children: validationError
60686
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61009
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60687
61010
  dimColor: true,
60688
61011
  children: "Press Enter to confirm, ESC to cancel"
60689
61012
  }, undefined, false, undefined, this)
60690
61013
  ]
60691
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(jsx_dev_runtime16.Fragment, {
61014
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(jsx_dev_runtime17.Fragment, {
60692
61015
  children: [
60693
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
61016
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
60694
61017
  marginTop: 1,
60695
61018
  flexDirection: "column",
60696
61019
  children: [
60697
- optionDetails.map((opt, index) => /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
60698
- children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61020
+ optionDetails.map((opt, index) => /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
61021
+ children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60699
61022
  color: selectedIndex === index ? "green" : undefined,
60700
61023
  children: [
60701
61024
  selectedIndex === index ? "▶ " : " ",
@@ -60704,9 +61027,9 @@ NOTE: If /ide integration is enabled, it's not recommended to use this mode.`
60704
61027
  ]
60705
61028
  }, undefined, true, undefined, this)
60706
61029
  }, opt.value, false, undefined, this)),
60707
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
61030
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
60708
61031
  marginTop: 1,
60709
- children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61032
+ children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60710
61033
  color: selectedIndex === 3 ? "green" : undefined,
60711
61034
  children: [
60712
61035
  selectedIndex === 3 ? "▶ " : " ",
@@ -60716,25 +61039,25 @@ NOTE: If /ide integration is enabled, it's not recommended to use this mode.`
60716
61039
  }, undefined, false, undefined, this)
60717
61040
  ]
60718
61041
  }, undefined, true, undefined, this),
60719
- currentOption && /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
61042
+ currentOption && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
60720
61043
  marginTop: 1,
60721
61044
  marginBottom: 1,
60722
61045
  borderStyle: "round",
60723
61046
  borderColor: "dim",
60724
61047
  paddingX: 1,
60725
- children: /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Box_default, {
61048
+ children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
60726
61049
  flexDirection: "column",
60727
61050
  children: [
60728
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61051
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60729
61052
  children: [
60730
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61053
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60731
61054
  color: "yellow",
60732
61055
  children: currentOption.label
60733
61056
  }, undefined, false, undefined, this),
60734
61057
  currentOption.value === "full-until-compact" && ` | Current threshold: ${compactThreshold}%`
60735
61058
  ]
60736
61059
  }, undefined, true, undefined, this),
60737
- /* @__PURE__ */ jsx_dev_runtime16.jsxDEV(Text, {
61060
+ /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
60738
61061
  dimColor: true,
60739
61062
  wrap: "wrap",
60740
61063
  children: currentOption.description
@@ -60748,26 +61071,26 @@ NOTE: If /ide integration is enabled, it's not recommended to use this mode.`
60748
61071
  }, undefined, true, undefined, this);
60749
61072
  };
60750
61073
  // src/tui/App.tsx
60751
- var jsx_dev_runtime17 = __toESM(require_jsx_dev_runtime(), 1);
61074
+ var jsx_dev_runtime18 = __toESM(require_jsx_dev_runtime(), 1);
60752
61075
  var GITHUB_REPO_URL = "https://github.com/sirmalloc/ccstatusline";
60753
61076
  var App2 = () => {
60754
61077
  const { exit } = use_app_default();
60755
- const [settings, setSettings] = import_react45.useState(null);
60756
- const [originalSettings, setOriginalSettings] = import_react45.useState(null);
60757
- const [hasChanges, setHasChanges] = import_react45.useState(false);
60758
- const [screen, setScreen] = import_react45.useState("main");
60759
- const [selectedLine, setSelectedLine] = import_react45.useState(0);
60760
- const [menuSelections, setMenuSelections] = import_react45.useState({});
60761
- const [confirmDialog, setConfirmDialog] = import_react45.useState(null);
60762
- const [isClaudeInstalled, setIsClaudeInstalled] = import_react45.useState(false);
60763
- const [terminalWidth, setTerminalWidth] = import_react45.useState(process.stdout.columns || 80);
60764
- const [powerlineFontStatus, setPowerlineFontStatus] = import_react45.useState({ installed: false });
60765
- const [installingFonts, setInstallingFonts] = import_react45.useState(false);
60766
- const [fontInstallMessage, setFontInstallMessage] = import_react45.useState(null);
60767
- const [existingStatusLine, setExistingStatusLine] = import_react45.useState(null);
60768
- const [flashMessage, setFlashMessage] = import_react45.useState(null);
60769
- const [previewIsTruncated, setPreviewIsTruncated] = import_react45.useState(false);
60770
- import_react45.useEffect(() => {
61078
+ const [settings, setSettings] = import_react46.useState(null);
61079
+ const [originalSettings, setOriginalSettings] = import_react46.useState(null);
61080
+ const [hasChanges, setHasChanges] = import_react46.useState(false);
61081
+ const [screen, setScreen] = import_react46.useState("main");
61082
+ const [selectedLine, setSelectedLine] = import_react46.useState(0);
61083
+ const [menuSelections, setMenuSelections] = import_react46.useState({});
61084
+ const [confirmDialog, setConfirmDialog] = import_react46.useState(null);
61085
+ const [isClaudeInstalled, setIsClaudeInstalled] = import_react46.useState(false);
61086
+ const [terminalWidth, setTerminalWidth] = import_react46.useState(process.stdout.columns || 80);
61087
+ const [powerlineFontStatus, setPowerlineFontStatus] = import_react46.useState({ installed: false });
61088
+ const [installingFonts, setInstallingFonts] = import_react46.useState(false);
61089
+ const [fontInstallMessage, setFontInstallMessage] = import_react46.useState(null);
61090
+ const [existingStatusLine, setExistingStatusLine] = import_react46.useState(null);
61091
+ const [flashMessage, setFlashMessage] = import_react46.useState(null);
61092
+ const [previewIsTruncated, setPreviewIsTruncated] = import_react46.useState(false);
61093
+ import_react46.useEffect(() => {
60771
61094
  getExistingStatusLine().then(setExistingStatusLine);
60772
61095
  loadSettings().then((loadedSettings) => {
60773
61096
  source_default.level = loadedSettings.colorLevel;
@@ -60788,13 +61111,13 @@ var App2 = () => {
60788
61111
  process.stdout.off("resize", handleResize);
60789
61112
  };
60790
61113
  }, []);
60791
- import_react45.useEffect(() => {
61114
+ import_react46.useEffect(() => {
60792
61115
  if (originalSettings) {
60793
61116
  const hasAnyChanges = JSON.stringify(settings) !== JSON.stringify(originalSettings);
60794
61117
  setHasChanges(hasAnyChanges);
60795
61118
  }
60796
61119
  }, [settings, originalSettings]);
60797
- import_react45.useEffect(() => {
61120
+ import_react46.useEffect(() => {
60798
61121
  if (flashMessage) {
60799
61122
  const timer = setTimeout(() => {
60800
61123
  setFlashMessage(null);
@@ -60820,7 +61143,7 @@ var App2 = () => {
60820
61143
  })();
60821
61144
  }
60822
61145
  });
60823
- const handleInstallSelection = import_react45.useCallback((command, displayName, useBunx) => {
61146
+ const handleInstallSelection = import_react46.useCallback((command, displayName, useBunx) => {
60824
61147
  getExistingStatusLine().then((existing) => {
60825
61148
  const isAlreadyInstalled = [CCSTATUSLINE_COMMANDS.NPM, CCSTATUSLINE_COMMANDS.BUNX, CCSTATUSLINE_COMMANDS.SELF_MANAGED].includes(existing ?? "");
60826
61149
  let message;
@@ -60849,14 +61172,14 @@ Continue?`;
60849
61172
  setScreen("confirm");
60850
61173
  });
60851
61174
  }, []);
60852
- const handleNpxInstall = import_react45.useCallback(() => {
61175
+ const handleNpxInstall = import_react46.useCallback(() => {
60853
61176
  handleInstallSelection(CCSTATUSLINE_COMMANDS.NPM, "npx", false);
60854
61177
  }, [handleInstallSelection]);
60855
- const handleBunxInstall = import_react45.useCallback(() => {
61178
+ const handleBunxInstall = import_react46.useCallback(() => {
60856
61179
  handleInstallSelection(CCSTATUSLINE_COMMANDS.BUNX, "bunx", true);
60857
61180
  }, [handleInstallSelection]);
60858
61181
  if (!settings) {
60859
- return /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
61182
+ return /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
60860
61183
  children: "Loading settings..."
60861
61184
  }, undefined, false, undefined, this);
60862
61185
  }
@@ -60945,40 +61268,40 @@ ${GITHUB_REPO_URL}`,
60945
61268
  setSelectedLine(lineIndex);
60946
61269
  setScreen("items");
60947
61270
  };
60948
- return /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
61271
+ return /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Box_default, {
60949
61272
  flexDirection: "column",
60950
61273
  children: [
60951
- /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
61274
+ /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Box_default, {
60952
61275
  marginBottom: 1,
60953
61276
  children: [
60954
- /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
61277
+ /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
60955
61278
  bold: true,
60956
- children: /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(dist_default4, {
61279
+ children: /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(dist_default4, {
60957
61280
  name: "retro",
60958
61281
  children: "CCStatusline Configuration"
60959
61282
  }, undefined, false, undefined, this)
60960
61283
  }, undefined, false, undefined, this),
60961
- /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
61284
+ /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
60962
61285
  bold: true,
60963
61286
  children: ` | ${getPackageVersion() && `v${getPackageVersion()}`}`
60964
61287
  }, undefined, false, undefined, this),
60965
- flashMessage && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Text, {
61288
+ flashMessage && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Text, {
60966
61289
  color: flashMessage.color,
60967
61290
  bold: true,
60968
61291
  children: ` ${flashMessage.text}`
60969
61292
  }, undefined, false, undefined, this)
60970
61293
  ]
60971
61294
  }, undefined, true, undefined, this),
60972
- /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(StatusLinePreview, {
61295
+ /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(StatusLinePreview, {
60973
61296
  lines: settings.lines,
60974
61297
  terminalWidth,
60975
61298
  settings,
60976
61299
  onTruncationChange: setPreviewIsTruncated
60977
61300
  }, undefined, false, undefined, this),
60978
- /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(Box_default, {
61301
+ /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(Box_default, {
60979
61302
  marginTop: 1,
60980
61303
  children: [
60981
- screen === "main" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(MainMenu, {
61304
+ screen === "main" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(MainMenu, {
60982
61305
  onSelect: (value) => {
60983
61306
  if (value !== "save" && value !== "exit") {
60984
61307
  const menuMap = {
@@ -61001,7 +61324,7 @@ ${GITHUB_REPO_URL}`,
61001
61324
  settings,
61002
61325
  previewIsTruncated
61003
61326
  }, undefined, false, undefined, this),
61004
- screen === "lines" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(LineSelector, {
61327
+ screen === "lines" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(LineSelector, {
61005
61328
  lines: settings.lines,
61006
61329
  onSelect: (line) => {
61007
61330
  setMenuSelections({ ...menuSelections, lines: line });
@@ -61016,7 +61339,7 @@ ${GITHUB_REPO_URL}`,
61016
61339
  title: "Select Line to Edit Items",
61017
61340
  allowEditing: true
61018
61341
  }, undefined, false, undefined, this),
61019
- screen === "items" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(ItemsEditor, {
61342
+ screen === "items" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(ItemsEditor, {
61020
61343
  widgets: settings.lines[selectedLine] ?? [],
61021
61344
  onUpdate: (widgets) => {
61022
61345
  updateLine(selectedLine, widgets);
@@ -61028,7 +61351,7 @@ ${GITHUB_REPO_URL}`,
61028
61351
  lineNumber: selectedLine + 1,
61029
61352
  settings
61030
61353
  }, undefined, false, undefined, this),
61031
- screen === "colorLines" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(LineSelector, {
61354
+ screen === "colorLines" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(LineSelector, {
61032
61355
  lines: settings.lines,
61033
61356
  onLinesUpdate: updateLines,
61034
61357
  onSelect: (line) => {
@@ -61046,7 +61369,7 @@ ${GITHUB_REPO_URL}`,
61046
61369
  settings,
61047
61370
  allowEditing: false
61048
61371
  }, undefined, false, undefined, this),
61049
- screen === "colors" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(ColorMenu, {
61372
+ screen === "colors" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(ColorMenu, {
61050
61373
  widgets: settings.lines[selectedLine] ?? [],
61051
61374
  lineIndex: selectedLine,
61052
61375
  settings,
@@ -61059,7 +61382,7 @@ ${GITHUB_REPO_URL}`,
61059
61382
  setScreen("colorLines");
61060
61383
  }
61061
61384
  }, undefined, false, undefined, this),
61062
- screen === "terminalConfig" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(TerminalOptionsMenu, {
61385
+ screen === "terminalConfig" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(TerminalOptionsMenu, {
61063
61386
  settings,
61064
61387
  onUpdate: (updatedSettings) => {
61065
61388
  setSettings(updatedSettings);
@@ -61073,7 +61396,7 @@ ${GITHUB_REPO_URL}`,
61073
61396
  }
61074
61397
  }
61075
61398
  }, undefined, false, undefined, this),
61076
- screen === "terminalWidth" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(TerminalWidthMenu, {
61399
+ screen === "terminalWidth" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(TerminalWidthMenu, {
61077
61400
  settings,
61078
61401
  onUpdate: (updatedSettings) => {
61079
61402
  setSettings(updatedSettings);
@@ -61082,7 +61405,7 @@ ${GITHUB_REPO_URL}`,
61082
61405
  setScreen("terminalConfig");
61083
61406
  }
61084
61407
  }, undefined, false, undefined, this),
61085
- screen === "globalOverrides" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(GlobalOverridesMenu, {
61408
+ screen === "globalOverrides" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(GlobalOverridesMenu, {
61086
61409
  settings,
61087
61410
  onUpdate: (updatedSettings) => {
61088
61411
  setSettings(updatedSettings);
@@ -61092,7 +61415,7 @@ ${GITHUB_REPO_URL}`,
61092
61415
  setScreen("main");
61093
61416
  }
61094
61417
  }, undefined, false, undefined, this),
61095
- screen === "confirm" && confirmDialog && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(ConfirmDialog, {
61418
+ screen === "confirm" && confirmDialog && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(ConfirmDialog, {
61096
61419
  message: confirmDialog.message,
61097
61420
  onConfirm: () => void confirmDialog.action(),
61098
61421
  onCancel: () => {
@@ -61100,7 +61423,7 @@ ${GITHUB_REPO_URL}`,
61100
61423
  setConfirmDialog(null);
61101
61424
  }
61102
61425
  }, undefined, false, undefined, this),
61103
- screen === "install" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(InstallMenu, {
61426
+ screen === "install" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(InstallMenu, {
61104
61427
  bunxAvailable: isBunxAvailable(),
61105
61428
  existingStatusLine,
61106
61429
  onSelectNpx: handleNpxInstall,
@@ -61109,7 +61432,7 @@ ${GITHUB_REPO_URL}`,
61109
61432
  setScreen("main");
61110
61433
  }
61111
61434
  }, undefined, false, undefined, this),
61112
- screen === "powerline" && /* @__PURE__ */ jsx_dev_runtime17.jsxDEV(PowerlineSetup, {
61435
+ screen === "powerline" && /* @__PURE__ */ jsx_dev_runtime18.jsxDEV(PowerlineSetup, {
61113
61436
  settings,
61114
61437
  powerlineFontStatus,
61115
61438
  onUpdate: (updatedSettings) => {
@@ -61143,7 +61466,7 @@ ${GITHUB_REPO_URL}`,
61143
61466
  };
61144
61467
  function runTUI() {
61145
61468
  process.stdout.write("\x1B[2J\x1B[H");
61146
- render_default(/* @__PURE__ */ jsx_dev_runtime17.jsxDEV(App2, {}, undefined, false, undefined, this));
61469
+ render_default(/* @__PURE__ */ jsx_dev_runtime18.jsxDEV(App2, {}, undefined, false, undefined, this));
61147
61470
  }
61148
61471
  // src/types/StatusJSON.ts
61149
61472
  var StatusJSONSchema = exports_external.looseObject({
@@ -61254,7 +61577,7 @@ async function renderMultipleLines(data) {
61254
61577
  const lineContext = { ...context, lineIndex: i, globalSeparatorIndex };
61255
61578
  const preRenderedWidgets = preRenderedLines[i] ?? [];
61256
61579
  const line = renderStatusLine(lineItems, settings, lineContext, preRenderedWidgets, preCalculatedMaxWidths);
61257
- const strippedLine = line.replace(/\x1b\[[0-9;]*m/g, "").trim();
61580
+ const strippedLine = getVisibleText(line).trim();
61258
61581
  if (strippedLine.length > 0) {
61259
61582
  const nonMergedWidgets = lineItems.filter((_, idx) => idx === lineItems.length - 1 || !lineItems[idx]?.merge);
61260
61583
  if (nonMergedWidgets.length > 1)