πŸ“„ File detail

components/ThinkingToggle.tsx

🧩 .tsxπŸ“ 153 linesπŸ’Ύ 18,209 bytesπŸ“ text
← Back to All Files

🎯 Use case

This file lives under β€œcomponents/”, which covers shared React UI pieces. On the API surface it exposes Props and ThinkingToggle β€” mainly types, interfaces, or factory objects. Dependencies touch React UI and src. It composes internal code from ink, keybindings, ConfigurableShortcutHint, CustomSelect, and design-system (relative imports).

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

import { c as _c } from "react/compiler-runtime"; import * as React from 'react'; import { useState } from 'react'; import { useExitOnCtrlCDWithKeybindings } from 'src/hooks/useExitOnCtrlCDWithKeybindings.js'; import { Box, Text } from '../ink.js';

πŸ“€ Exports (heuristic)

  • Props
  • ThinkingToggle

πŸ“š External import roots

Package roots from from "…" (relative paths omitted).

  • react
  • src

πŸ–₯️ Source preview

import { c as _c } from "react/compiler-runtime";
import * as React from 'react';
import { useState } from 'react';
import { useExitOnCtrlCDWithKeybindings } from 'src/hooks/useExitOnCtrlCDWithKeybindings.js';
import { Box, Text } from '../ink.js';
import { useKeybinding } from '../keybindings/useKeybinding.js';
import { ConfigurableShortcutHint } from './ConfigurableShortcutHint.js';
import { Select } from './CustomSelect/index.js';
import { Byline } from './design-system/Byline.js';
import { KeyboardShortcutHint } from './design-system/KeyboardShortcutHint.js';
import { Pane } from './design-system/Pane.js';
export type Props = {
  currentValue: boolean;
  onSelect: (enabled: boolean) => void;
  onCancel?: () => void;
  isMidConversation?: boolean;
};
export function ThinkingToggle(t0) {
  const $ = _c(27);
  const {
    currentValue,
    onSelect,
    onCancel,
    isMidConversation
  } = t0;
  const exitState = useExitOnCtrlCDWithKeybindings();
  const [confirmationPending, setConfirmationPending] = useState(null);
  let t1;
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
    t1 = [{
      value: "true",
      label: "Enabled",
      description: "Claude will think before responding"
    }, {
      value: "false",
      label: "Disabled",
      description: "Claude will respond without extended thinking"
    }];
    $[0] = t1;
  } else {
    t1 = $[0];
  }
  const options = t1;
  let t2;
  if ($[1] !== confirmationPending || $[2] !== onCancel) {
    t2 = () => {
      if (confirmationPending !== null) {
        setConfirmationPending(null);
      } else {
        onCancel?.();
      }
    };
    $[1] = confirmationPending;
    $[2] = onCancel;
    $[3] = t2;
  } else {
    t2 = $[3];
  }
  let t3;
  if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
    t3 = {
      context: "Confirmation"
    };
    $[4] = t3;
  } else {
    t3 = $[4];
  }
  useKeybinding("confirm:no", t2, t3);
  let t4;
  if ($[5] !== confirmationPending || $[6] !== onSelect) {
    t4 = () => {
      if (confirmationPending !== null) {
        onSelect(confirmationPending);
      }
    };
    $[5] = confirmationPending;
    $[6] = onSelect;
    $[7] = t4;
  } else {
    t4 = $[7];
  }
  const t5 = confirmationPending !== null;
  let t6;
  if ($[8] !== t5) {
    t6 = {
      context: "Confirmation",
      isActive: t5
    };
    $[8] = t5;
    $[9] = t6;
  } else {
    t6 = $[9];
  }
  useKeybinding("confirm:yes", t4, t6);
  let t7;
  if ($[10] !== currentValue || $[11] !== isMidConversation || $[12] !== onSelect) {
    t7 = function handleSelectChange(value) {
      const selected = value === "true";
      if (isMidConversation && selected !== currentValue) {
        setConfirmationPending(selected);
      } else {
        onSelect(selected);
      }
    };
    $[10] = currentValue;
    $[11] = isMidConversation;
    $[12] = onSelect;
    $[13] = t7;
  } else {
    t7 = $[13];
  }
  const handleSelectChange = t7;
  let t8;
  if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
    t8 = <Box marginBottom={1} flexDirection="column"><Text color="remember" bold={true}>Toggle thinking mode</Text><Text dimColor={true}>Enable or disable thinking for this session.</Text></Box>;
    $[14] = t8;
  } else {
    t8 = $[14];
  }
  let t9;
  if ($[15] !== confirmationPending || $[16] !== currentValue || $[17] !== handleSelectChange || $[18] !== onCancel) {
    t9 = <Box flexDirection="column">{t8}{confirmationPending !== null ? <Box flexDirection="column" marginBottom={1} gap={1}><Text color="warning">Changing thinking mode mid-conversation will increase latency and may reduce quality. For best results, set this at the start of a session.</Text><Text color="warning">Do you want to proceed?</Text></Box> : <Box flexDirection="column" marginBottom={1}><Select defaultValue={currentValue ? "true" : "false"} defaultFocusValue={currentValue ? "true" : "false"} options={options} onChange={handleSelectChange} onCancel={onCancel ?? _temp} visibleOptionCount={2} /></Box>}</Box>;
    $[15] = confirmationPending;
    $[16] = currentValue;
    $[17] = handleSelectChange;
    $[18] = onCancel;
    $[19] = t9;
  } else {
    t9 = $[19];
  }
  let t10;
  if ($[20] !== confirmationPending || $[21] !== exitState.keyName || $[22] !== exitState.pending) {
    t10 = <Text dimColor={true} italic={true}>{exitState.pending ? <>Press {exitState.keyName} again to exit</> : confirmationPending !== null ? <Byline><KeyboardShortcutHint shortcut="Enter" action="confirm" /><ConfigurableShortcutHint action="confirm:no" context="Confirmation" fallback="Esc" description="cancel" /></Byline> : <Byline><KeyboardShortcutHint shortcut="Enter" action="confirm" /><ConfigurableShortcutHint action="confirm:no" context="Confirmation" fallback="Esc" description="exit" /></Byline>}</Text>;
    $[20] = confirmationPending;
    $[21] = exitState.keyName;
    $[22] = exitState.pending;
    $[23] = t10;
  } else {
    t10 = $[23];
  }
  let t11;
  if ($[24] !== t10 || $[25] !== t9) {
    t11 = <Pane color="permission">{t9}{t10}</Pane>;
    $[24] = t10;
    $[25] = t9;
    $[26] = t11;
  } else {
    t11 = $[26];
  }
  return t11;
}
function _temp() {}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVN0YXRlIiwidXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzIiwiQm94IiwiVGV4dCIsInVzZUtleWJpbmRpbmciLCJDb25maWd1cmFibGVTaG9ydGN1dEhpbnQiLCJTZWxlY3QiLCJCeWxpbmUiLCJLZXlib2FyZFNob3J0Y3V0SGludCIsIlBhbmUiLCJQcm9wcyIsImN1cnJlbnRWYWx1ZSIsIm9uU2VsZWN0IiwiZW5hYmxlZCIsIm9uQ2FuY2VsIiwiaXNNaWRDb252ZXJzYXRpb24iLCJUaGlua2luZ1RvZ2dsZSIsInQwIiwiJCIsIl9jIiwiZXhpdFN0YXRlIiwiY29uZmlybWF0aW9uUGVuZGluZyIsInNldENvbmZpcm1hdGlvblBlbmRpbmciLCJ0MSIsIlN5bWJvbCIsImZvciIsInZhbHVlIiwibGFiZWwiLCJkZXNjcmlwdGlvbiIsIm9wdGlvbnMiLCJ0MiIsInQzIiwiY29udGV4dCIsInQ0IiwidDUiLCJ0NiIsImlzQWN0aXZlIiwidDciLCJoYW5kbGVTZWxlY3RDaGFuZ2UiLCJzZWxlY3RlZCIsInQ4IiwidDkiLCJfdGVtcCIsInQxMCIsImtleU5hbWUiLCJwZW5kaW5nIiwidDExIl0sInNvdXJjZXMiOlsiVGhpbmtpbmdUb2dnbGUudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZUV4aXRPbkN0cmxDRFdpdGhLZXliaW5kaW5ncyB9IGZyb20gJ3NyYy9ob29rcy91c2VFeGl0T25DdHJsQ0RXaXRoS2V5YmluZGluZ3MuanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi9pbmsuanMnXG5pbXBvcnQgeyB1c2VLZXliaW5kaW5nIH0gZnJvbSAnLi4va2V5YmluZGluZ3MvdXNlS2V5YmluZGluZy5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4vQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi9DdXN0b21TZWxlY3QvaW5kZXguanMnXG5pbXBvcnQgeyBCeWxpbmUgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vQnlsaW5lLmpzJ1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dEhpbnQgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vS2V5Ym9hcmRTaG9ydGN1dEhpbnQuanMnXG5pbXBvcnQgeyBQYW5lIH0gZnJvbSAnLi9kZXNpZ24tc3lzdGVtL1BhbmUuanMnXG5cbmV4cG9ydCB0eXBlIFByb3BzID0ge1xuICBjdXJyZW50VmFsdWU6IGJvb2xlYW5cbiAgb25TZWxlY3Q6IChlbmFibGVkOiBib29sZWFuKSA9PiB2b2lkXG4gIG9uQ2FuY2VsPzogKCkgPT4gdm9pZFxuICBpc01pZENvbnZlcnNhdGlvbj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFRoaW5raW5nVG9nZ2xlKHtcbiAgY3VycmVudFZhbHVlLFxuICBvblNlbGVjdCxcbiAgb25DYW5jZWwsXG4gIGlzTWlkQ29udmVyc2F0aW9uLFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBleGl0U3RhdGUgPSB1c2VFeGl0T25DdHJsQ0RXaXRoS2V5YmluZGluZ3MoKVxuICBjb25zdCBbY29uZmlybWF0aW9uUGVuZGluZywgc2V0Q29uZmlybWF0aW9uUGVuZGluZ10gPSB1c2VTdGF0ZTxcbiAgICBib29sZWFuIHwgbnVsbFxuICA+KG51bGwpXG5cbiAgY29uc3Qgb3B0aW9ucyA9IFtcbiAgICB7XG4gICAgICB2YWx1ZTogJ3RydWUnLFxuICAgICAgbGFiZWw6ICdFbmFibGVkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2xhdWRlIHdpbGwgdGhpbmsgYmVmb3JlIHJlc3BvbmRpbmcnLFxuICAgIH0sXG4gICAge1xuICAgICAgdmFsdWU6ICdmYWxzZScsXG4gICAgICBsYWJlbDogJ0Rpc2FibGVkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ2xhdWRlIHdpbGwgcmVzcG9uZCB3aXRob3V0IGV4dGVuZGVkIHRoaW5raW5nJyxcbiAgICB9LFxuICBdXG5cbiAgLy8gVXNlIGNvbmZpZ3VyYWJsZSBrZXliaW5kaW5nIGZvciBFU0MgdG8gY2FuY2VsL2dvIGJhY2tcbiAgdXNlS2V5YmluZGluZyhcbiAgICAnY29uZmlybTpubycsXG4gICAgKCkgPT4ge1xuICAgICAgaWYgKGNvbmZpcm1hdGlvblBlbmRpbmcgIT09IG51bGwpIHtcbiAgICAgICAgc2V0Q29uZmlybWF0aW9uUGVuZGluZyhudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DYW5jZWw/LigpXG4gICAgICB9XG4gICAgfSxcbiAgICB7IGNvbnRleHQ6ICdDb25maXJtYXRpb24nIH0sXG4gIClcblxuICAvLyBVc2UgY29uZmlndXJhYmxlIGtleWJpbmRpbmcgZm9yIEVudGVyIHRvIGNvbmZpcm0gaW4gY29uZmlybWF0aW9uIG1vZGVcbiAgdXNlS2V5YmluZGluZyhcbiAgICAnY29uZmlybTp5ZXMnLFxuICAgICgpID0+IHtcbiAgICAgIGlmIChjb25maXJtYXRpb25QZW5kaW5nICE9PSBudWxsKSB7XG4gICAgICAgIG9uU2VsZWN0KGNvbmZpcm1hdGlvblBlbmRpbmcpXG4gICAgICB9XG4gICAgfSxcbiAgICB7IGNvbnRleHQ6ICdDb25maXJtYXRpb24nLCBpc0FjdGl2ZTogY29uZmlybWF0aW9uUGVuZGluZyAhPT0gbnVsbCB9LFxuICApXG5cbiAgZnVuY3Rpb24gaGFuZGxlU2VsZWN0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzZWxlY3RlZCA9IHZhbHVlID09PSAndHJ1ZSdcbiAgICBpZiAoaXNNaWRDb252ZXJzYXRpb24gJiYgc2VsZWN0ZWQgIT09IGN1cnJlbnRWYWx1ZSkge1xuICAgICAgc2V0Q29uZmlybWF0aW9uUGVuZGluZyhzZWxlY3RlZClcbiAgICB9IGVsc2Uge1xuICAgICAgb25TZWxlY3Qoc2VsZWN0ZWQpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8UGFuZSBjb2xvcj1cInBlcm1pc3Npb25cIj5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8Qm94IG1hcmdpbkJvdHRvbT17MX0gZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIDxUZXh0IGNvbG9yPVwicmVtZW1iZXJcIiBib2xkPlxuICAgICAgICAgICAgVG9nZ2xlIHRoaW5raW5nIG1vZGVcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+RW5hYmxlIG9yIGRpc2FibGUgdGhpbmtpbmcgZm9yIHRoaXMgc2Vzc2lvbi48L1RleHQ+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIHtjb25maXJtYXRpb25QZW5kaW5nICE9PSBudWxsID8gKFxuICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIG1hcmdpbkJvdHRvbT17MX0gZ2FwPXsxfT5cbiAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwid2FybmluZ1wiPlxuICAgICAgICAgICAgICBDaGFuZ2luZyB0aGlua2luZyBtb2RlIG1pZC1jb252ZXJzYXRpb24gd2lsbCBpbmNyZWFzZSBsYXRlbmN5IGFuZFxuICAgICAgICAgICAgICBtYXkgcmVkdWNlIHF1YWxpdHkuIEZvciBiZXN0IHJlc3VsdHMsIHNldCB0aGlzIGF0IHRoZSBzdGFydCBvZiBhXG4gICAgICAgICAgICAgIHNlc3Npb24uXG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICA8VGV4dCBjb2xvcj1cIndhcm5pbmdcIj5EbyB5b3Ugd2FudCB0byBwcm9jZWVkPzwvVGV4dD5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBtYXJnaW5Cb3R0b209ezF9PlxuICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2N1cnJlbnRWYWx1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgICAgICAgIGRlZmF1bHRGb2N1c1ZhbHVlPXtjdXJyZW50VmFsdWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2VsZWN0Q2hhbmdlfVxuICAgICAgICAgICAgICBvbkNhbmNlbD17b25DYW5jZWwgPz8gKCgpID0+IHt9KX1cbiAgICAgICAgICAgICAgdmlzaWJsZU9wdGlvbkNvdW50PXsyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPFRleHQgZGltQ29sb3IgaXRhbGljPlxuICAgICAgICB7ZXhpdFN0YXRlLnBlbmRpbmcgPyAoXG4gICAgICAgICAgPD5QcmVzcyB7ZXhpdFN0YXRlLmtleU5hbWV9IGFnYWluIHRvIGV4aXQ8Lz5cbiAgICAgICAgKSA6IGNvbmZpcm1hdGlvblBlbmRpbmcgIT09IG51bGwgPyAoXG4gICAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICAgIDxLZXlib2FyZFNob3J0Y3V0SGludCBzaG9ydGN1dD1cIkVudGVyXCIgYWN0aW9uPVwiY29uZmlybVwiIC8+XG4gICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgICBjb250ZXh0PVwiQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFc2NcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cImNhbmNlbFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQnlsaW5lPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCeWxpbmU+XG4gICAgICAgICAgICA8S2V5Ym9hcmRTaG9ydGN1dEhpbnQgc2hvcnRjdXQ9XCJFbnRlclwiIGFjdGlvbj1cImNvbmZpcm1cIiAvPlxuICAgICAgICAgICAgPENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludFxuICAgICAgICAgICAgICBhY3Rpb249XCJjb25maXJtOm5vXCJcbiAgICAgICAgICAgICAgY29udGV4dD1cIkNvbmZpcm1hdGlvblwiXG4gICAgICAgICAgICAgIGZhbGxiYWNrPVwiRXNjXCJcbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJleGl0XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9CeWxpbmU+XG4gICAgICAgICl9XG4gICAgICA8L1RleHQ+XG4gICAgPC9QYW5lPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBQzlCLFNBQVNDLFFBQVEsUUFBUSxPQUFPO0FBQ2hDLFNBQVNDLDhCQUE4QixRQUFRLDZDQUE2QztBQUM1RixTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLGFBQWEsUUFBUSxpQ0FBaUM7QUFDL0QsU0FBU0Msd0JBQXdCLFFBQVEsK0JBQStCO0FBQ3hFLFNBQVNDLE1BQU0sUUFBUSx5QkFBeUI7QUFDaEQsU0FBU0MsTUFBTSxRQUFRLDJCQUEyQjtBQUNsRCxTQUFTQyxvQkFBb0IsUUFBUSx5Q0FBeUM7QUFDOUUsU0FBU0MsSUFBSSxRQUFRLHlCQUF5QjtBQUU5QyxPQUFPLEtBQUtDLEtBQUssR0FBRztFQUNsQkMsWUFBWSxFQUFFLE9BQU87RUFDckJDLFFBQVEsRUFBRSxDQUFDQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSTtFQUNwQ0MsUUFBUSxDQUFDLEVBQUUsR0FBRyxHQUFHLElBQUk7RUFDckJDLGlCQUFpQixDQUFDLEVBQUUsT0FBTztBQUM3QixDQUFDO0FBRUQsT0FBTyxTQUFBQyxlQUFBQyxFQUFBO0VBQUEsTUFBQUMsQ0FBQSxHQUFBQyxFQUFBO0VBQXdCO0lBQUFSLFlBQUE7SUFBQUMsUUFBQTtJQUFBRSxRQUFBO0lBQUFDO0VBQUEs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