claude-code/components/LogoV2/CondensedLogo.tsx

161 lines
19 KiB
TypeScript
Raw Normal View History

import { c as _c } from "react/compiler-runtime";
import * as React from 'react';
import { type ReactNode, useEffect } from 'react';
import { useMainLoopModel } from '../../hooks/useMainLoopModel.js';
import { useTerminalSize } from '../../hooks/useTerminalSize.js';
import { stringWidth } from '../../ink/stringWidth.js';
import { Box, Text } from '../../ink.js';
import { useAppState } from '../../state/AppState.js';
import { getEffortSuffix } from '../../utils/effort.js';
import { truncate } from '../../utils/format.js';
import { isFullscreenEnvEnabled } from '../../utils/fullscreen.js';
import { formatModelAndBilling, getLogoDisplayData, truncatePath } from '../../utils/logoV2Utils.js';
import { renderModelSetting } from '../../utils/model/model.js';
import { OffscreenFreeze } from '../OffscreenFreeze.js';
import { AnimatedClawd } from './AnimatedClawd.js';
import { Clawd } from './Clawd.js';
import { GuestPassesUpsell, incrementGuestPassesSeenCount, useShowGuestPassesUpsell } from './GuestPassesUpsell.js';
import { incrementOverageCreditUpsellSeenCount, OverageCreditUpsell, useShowOverageCreditUpsell } from './OverageCreditUpsell.js';
export function CondensedLogo() {
const $ = _c(29);
const {
columns
} = useTerminalSize();
const agent = useAppState(_temp);
const effortValue = useAppState(_temp2);
const model = useMainLoopModel();
const modelDisplayName = renderModelSetting(model);
const {
version,
cwd,
billingType,
agentName: agentNameFromSettings
} = getLogoDisplayData();
const agentName = agent ?? agentNameFromSettings;
const showGuestPassesUpsell = useShowGuestPassesUpsell();
const showOverageCreditUpsell = useShowOverageCreditUpsell();
let t0;
let t1;
if ($[0] !== showGuestPassesUpsell) {
t0 = () => {
if (showGuestPassesUpsell) {
incrementGuestPassesSeenCount();
}
};
t1 = [showGuestPassesUpsell];
$[0] = showGuestPassesUpsell;
$[1] = t0;
$[2] = t1;
} else {
t0 = $[1];
t1 = $[2];
}
useEffect(t0, t1);
let t2;
let t3;
if ($[3] !== showGuestPassesUpsell || $[4] !== showOverageCreditUpsell) {
t2 = () => {
if (showOverageCreditUpsell && !showGuestPassesUpsell) {
incrementOverageCreditUpsellSeenCount();
}
};
t3 = [showOverageCreditUpsell, showGuestPassesUpsell];
$[3] = showGuestPassesUpsell;
$[4] = showOverageCreditUpsell;
$[5] = t2;
$[6] = t3;
} else {
t2 = $[5];
t3 = $[6];
}
useEffect(t2, t3);
const textWidth = Math.max(columns - 15, 20);
const truncatedVersion = truncate(version, Math.max(textWidth - 13, 6));
const effortSuffix = getEffortSuffix(model, effortValue);
const {
shouldSplit,
truncatedModel,
truncatedBilling
} = formatModelAndBilling(modelDisplayName + effortSuffix, billingType, textWidth);
const cwdAvailableWidth = agentName ? textWidth - 1 - stringWidth(agentName) - 3 : textWidth;
const truncatedCwd = truncatePath(cwd, Math.max(cwdAvailableWidth, 10));
let t4;
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
t4 = isFullscreenEnvEnabled() ? <AnimatedClawd /> : <Clawd />;
$[7] = t4;
} else {
t4 = $[7];
}
let t5;
if ($[8] === Symbol.for("react.memo_cache_sentinel")) {
t5 = <Text bold={true}>Claude Code</Text>;
$[8] = t5;
} else {
t5 = $[8];
}
let t6;
if ($[9] !== truncatedVersion) {
t6 = <Text>{t5}{" "}<Text dimColor={true}>v{truncatedVersion}</Text></Text>;
$[9] = truncatedVersion;
$[10] = t6;
} else {
t6 = $[10];
}
let t7;
if ($[11] !== shouldSplit || $[12] !== truncatedBilling || $[13] !== truncatedModel) {
t7 = shouldSplit ? <><Text dimColor={true}>{truncatedModel}</Text><Text dimColor={true}>{truncatedBilling}</Text></> : <Text dimColor={true}>{truncatedModel} · {truncatedBilling}</Text>;
$[11] = shouldSplit;
$[12] = truncatedBilling;
$[13] = truncatedModel;
$[14] = t7;
} else {
t7 = $[14];
}
const t8 = agentName ? `@${agentName} · ${truncatedCwd}` : truncatedCwd;
let t9;
if ($[15] !== t8) {
t9 = <Text dimColor={true}>{t8}</Text>;
$[15] = t8;
$[16] = t9;
} else {
t9 = $[16];
}
let t10;
if ($[17] !== showGuestPassesUpsell) {
t10 = showGuestPassesUpsell && <GuestPassesUpsell />;
$[17] = showGuestPassesUpsell;
$[18] = t10;
} else {
t10 = $[18];
}
let t11;
if ($[19] !== showGuestPassesUpsell || $[20] !== showOverageCreditUpsell || $[21] !== textWidth) {
t11 = !showGuestPassesUpsell && showOverageCreditUpsell && <OverageCreditUpsell maxWidth={textWidth} twoLine={true} />;
$[19] = showGuestPassesUpsell;
$[20] = showOverageCreditUpsell;
$[21] = textWidth;
$[22] = t11;
} else {
t11 = $[22];
}
let t12;
if ($[23] !== t10 || $[24] !== t11 || $[25] !== t6 || $[26] !== t7 || $[27] !== t9) {
t12 = <OffscreenFreeze><Box flexDirection="row" gap={2} alignItems="center">{t4}<Box flexDirection="column">{t6}{t7}{t9}{t10}{t11}</Box></Box></OffscreenFreeze>;
$[23] = t10;
$[24] = t11;
$[25] = t6;
$[26] = t7;
$[27] = t9;
$[28] = t12;
} else {
t12 = $[28];
}
return t12;
}
function _temp2(s_0) {
return s_0.effortValue;
}
function _temp(s) {
return s.agent;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlJlYWN0Tm9kZSIsInVzZUVmZmVjdCIsInVzZU1haW5Mb29wTW9kZWwiLCJ1c2VUZXJtaW5hbFNpemUiLCJzdHJpbmdXaWR0aCIsIkJveCIsIlRleHQiLCJ1c2VBcHBTdGF0ZSIsImdldEVmZm9ydFN1ZmZpeCIsInRydW5jYXRlIiwiaXNGdWxsc2NyZWVuRW52RW5hYmxlZCIsImZvcm1hdE1vZGVsQW5kQmlsbGluZyIsImdldExvZ29EaXNwbGF5RGF0YSIsInRydW5jYXRlUGF0aCIsInJlbmRlck1vZGVsU2V0dGluZyIsIk9mZnNjcmVlbkZyZWV6ZSIsIkFuaW1hdGVkQ2xhd2QiLCJDbGF3ZCIsIkd1ZXN0UGFzc2VzVXBzZWxsIiwiaW5jcmVtZW50R3Vlc3RQYXNzZXNTZWVuQ291bnQiLCJ1c2VTaG93R3Vlc3RQYXNzZXNVcHNlbGwiLCJpbmNyZW1lbnRPdmVyYWdlQ3JlZGl0VXBzZWxsU2VlbkNvdW50IiwiT3ZlcmFnZUNyZWRpdFVwc2VsbCIsInVzZVNob3dPdmVyYWdlQ3JlZGl0VXBzZWxsIiwiQ29uZGVuc2VkTG9nbyIsIiQiLCJfYyIsImNvbHVtbnMiLCJhZ2VudCIsIl90ZW1wIiwiZWZmb3J0VmFsdWUiLCJfdGVtcDIiLCJtb2RlbCIsIm1vZGVsRGlzcGxheU5hbWUiLCJ2ZXJzaW9uIiwiY3dkIiwiYmlsbGluZ1R5cGUiLCJhZ2VudE5hbWUiLCJhZ2VudE5hbWVGcm9tU2V0dGluZ3MiLCJzaG93R3Vlc3RQYXNzZXNVcHNlbGwiLCJzaG93T3ZlcmFnZUNyZWRpdFVwc2VsbCIsInQwIiwidDEiLCJ0MiIsInQzIiwidGV4dFdpZHRoIiwiTWF0aCIsIm1heCIsInRydW5jYXRlZFZlcnNpb24iLCJlZmZvcnRTdWZmaXgiLCJzaG91bGRTcGxpdCIsInRydW5jYXRlZE1vZGVsIiwidHJ1bmNhdGVkQmlsbGluZyIsImN3ZEF2YWlsYWJsZVdpZHRoIiwidHJ1bmNhdGVkQ3dkIiwidDQiLCJTeW1ib2wiLCJmb3IiLCJ0NSIsInQ2IiwidDciLCJ0OCIsInQ5IiwidDEwIiwidDExIiwidDEyIiwic18wIiwicyJdLCJzb3VyY2VzIjpbIkNvbmRlbnNlZExvZ28udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdHlwZSBSZWFjdE5vZGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTWFpbkxvb3BNb2RlbCB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZU1haW5Mb29wTW9kZWwuanMnXG5pbXBvcnQgeyB1c2VUZXJtaW5hbFNpemUgfSBmcm9tICcuLi8uLi9ob29rcy91c2VUZXJtaW5hbFNpemUuanMnXG5pbXBvcnQgeyBzdHJpbmdXaWR0aCB9IGZyb20gJy4uLy4uL2luay9zdHJpbmdXaWR0aC5qcydcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7IHVzZUFwcFN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUvQXBwU3RhdGUuanMnXG5pbXBvcnQgeyBnZXRFZmZvcnRTdWZmaXggfSBmcm9tICcuLi8uLi91dGlscy9lZmZvcnQuanMnXG5pbXBvcnQgeyB0cnVuY2F0ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdC5qcydcbmltcG9ydCB7IGlzRnVsbHNjcmVlbkVudkVuYWJsZWQgfSBmcm9tICcuLi8uLi91dGlscy9mdWxsc2NyZWVuLmpzJ1xuaW1wb3J0IHtcbiAgZm9ybWF0TW9kZWxBbmRCaWxsaW5nLFxuICBnZXRMb2dvRGlzcGxheURhdGEsXG4gIHRydW5jYXRlUGF0aCxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nb1YyVXRpbHMuanMnXG5pbXBvcnQgeyByZW5kZXJNb2RlbFNldHRpbmcgfSBmcm9tICcuLi8uLi91dGlscy9tb2RlbC9tb2RlbC5qcydcbmltcG9ydCB7IE9mZnNjcmVlbkZyZWV6ZSB9IGZyb20gJy4uL09mZnNjcmVlbkZyZWV6ZS5qcydcbmltcG9ydCB7IEFuaW1hdGVkQ2xhd2QgfSBmcm9tICcuL0FuaW1hdGVkQ2xhd2QuanMnXG5pbXBvcnQgeyBDbGF3ZCB9IGZyb20gJy4vQ2xhd2QuanMnXG5pbXBvcnQge1xuICBHdWVzdFBhc3Nlc1Vwc2VsbCxcbiAgaW5jcmVtZW50R3Vlc3RQYXNzZXNTZWVuQ291bnQsXG4gIHVzZVNob3dHdWVzdFBhc3Nlc1Vwc2VsbCxcbn0gZnJvbSAnLi9HdWVzdFBhc3Nlc1Vwc2VsbC5qcydcbmltcG9ydCB7XG4gIGluY3JlbWVudE92ZXJhZ2VDcmVkaXRVcHNlbGxTZWVuQ291bnQsXG4gIE92ZXJhZ2VDcmVkaXRVcHNlbGwsXG4gIHVzZVNob3dPdmVyYWdlQ3JlZGl0VXBzZWxsLFxufSBmcm9tICcuL092ZXJhZ2VDcmVkaXRVcHNlbGwuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBDb25kZW5zZWRMb2dvKCk6IFJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgY29sdW1ucyB9ID0gdXNlVGVybWluYWxTaXplKClcbiAgY29uc3QgYWdlbnQgPSB1c2VBcHBTdGF0ZShzID0+IHMuYWdlbnQpXG4gIGNvbnN0IGVmZm9ydFZhbHVlID0gdXNlQXBwU3RhdGUocyA9PiBzLmVmZm9ydFZhbHVlKVxuICBjb25zdCBtb2RlbCA9IHVzZU1haW5Mb29wTW9kZWwoKVxuICBjb25zdCBtb2RlbERpc3BsYXlOYW1lID0gcmVuZGVyTW9kZWxTZXR0aW5nKG1vZGVsKVxuICBjb25zdCB7IHZlcnNpb24sIGN3ZCwgYmlsbGluZ1R5cGUsIGFnZW50TmFtZTogYWdlbnROYW1lRnJvbVNldHRpbmdzIH0gPSBnZXRMb2dvRGlzcGxheURhdGEoKVxuXG4gIC8vIFByZWZlciBBcHBTdGF0ZS5hZ2VudCAoc2V0IGZyb20gLS1hZ2VudCBDTEkgZmxhZykgb3ZlciBzZXR0aW5nc1xuICBjb25zdCBhZ2VudE5hbWUgPSBhZ2VudCA/PyBhZ2VudE5hbWVGcm9tU2V0dGluZ3NcbiAgY29uc3Qgc2hvd0d1ZXN0UGFzc2VzVXBzZWxsID0gdXNlU2hvd0d1ZXN0UGFzc2VzVXBzZWxsKClcbiAgY29uc3Qgc2hvd092ZXJhZ2VDcmVkaXRVcHNlbGwgPSB1c2VTaG93T3ZlcmFnZUNyZWRpdFVwc2VsbCgpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoc2hvd0d1ZXN0UGFzc2VzVXBzZWxsKSB7XG4gICAgICBpbmNyZW1lbnRHdWVzdFBhc3Nlc1NlZW5Db3VudCgpXG4gICAgfVxuICB9LCBbc2hvd0d1ZXN0UGFzc2VzVXBzZWxsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChzaG93T3ZlcmFnZUNyZWRpdFVwc2VsbCAmJiAhc2hvd0d1ZXN0UGFzc2VzVXBzZWxsKSB7XG4gICAgICBpbmNyZW1lbnRPdmVyYWdlQ3JlZGl0VXBzZWxsU2VlbkNvdW50KClcbiAgICB9XG4gIH0sIFt