Filemedium importancesource

Dialog.tsx

components/design-system/Dialog.tsx

138
Lines
14112
Bytes
1
Exports
10
Imports
10
Keywords

What this is

This page documents one file from the repository and includes its full source so you can read it without leaving the docs site.

Beginner explanation

This file is one piece of the larger system. Its name, directory, imports, and exports show where it fits. Start by reading the exports and related files first.

How it is used

Start from the exports list and related files. Those are the easiest clues for where this file fits into the system.

Expert explanation

Architecturally, this file intersects with ui-flow. It contains 138 lines, 10 detected imports, and 1 detected exports.

Important relationships

Detected exports

  • Dialog

Keywords

exitstatetextcolorelsereactiscancelactivesubtitlecontentinputguidetitle

Detected imports

  • react/compiler-runtime
  • react
  • ../../hooks/useExitOnCtrlCDWithKeybindings.js
  • ../../ink.js
  • ../../keybindings/useKeybinding.js
  • ../../utils/theme.js
  • ../ConfigurableShortcutHint.js
  • ./Byline.js
  • ./KeyboardShortcutHint.js
  • ./Pane.js

Source notes

This page embeds the full file contents. Small or leaf files are still indexed honestly instead of being over-explained.

Open parent directory

Full source

import { c as _c } from "react/compiler-runtime";
import React from 'react';
import { type ExitState, useExitOnCtrlCDWithKeybindings } from '../../hooks/useExitOnCtrlCDWithKeybindings.js';
import { Box, Text } from '../../ink.js';
import { useKeybinding } from '../../keybindings/useKeybinding.js';
import type { Theme } from '../../utils/theme.js';
import { ConfigurableShortcutHint } from '../ConfigurableShortcutHint.js';
import { Byline } from './Byline.js';
import { KeyboardShortcutHint } from './KeyboardShortcutHint.js';
import { Pane } from './Pane.js';
type DialogProps = {
  title: React.ReactNode;
  subtitle?: React.ReactNode;
  children: React.ReactNode;
  onCancel: () => void;
  color?: keyof Theme;
  hideInputGuide?: boolean;
  hideBorder?: boolean;
  /** Custom input guide content. Receives exitState for Ctrl+C/D pending display. */
  inputGuide?: (exitState: ExitState) => React.ReactNode;
  /**
   * Controls whether Dialog's built-in confirm:no (Esc/n) and app:exit/interrupt
   * (Ctrl-C/D) keybindings are active. Set to `false` while an embedded text
   * field is being edited so those keys reach the field instead of being
   * consumed by Dialog. TextInput has its own ctrl+c/d handlers (cancel on
   * press, delete-forward on ctrl+d with text). Defaults to `true`.
   */
  isCancelActive?: boolean;
};
export function Dialog(t0) {
  const $ = _c(27);
  const {
    title,
    subtitle,
    children,
    onCancel,
    color: t1,
    hideInputGuide,
    hideBorder,
    inputGuide,
    isCancelActive: t2
  } = t0;
  const color = t1 === undefined ? "permission" : t1;
  const isCancelActive = t2 === undefined ? true : t2;
  const exitState = useExitOnCtrlCDWithKeybindings(undefined, undefined, isCancelActive);
  let t3;
  if ($[0] !== isCancelActive) {
    t3 = {
      context: "Confirmation",
      isActive: isCancelActive
    };
    $[0] = isCancelActive;
    $[1] = t3;
  } else {
    t3 = $[1];
  }
  useKeybinding("confirm:no", onCancel, t3);
  let t4;
  if ($[2] !== exitState.keyName || $[3] !== exitState.pending) {
    t4 = exitState.pending ? <Text>Press {exitState.keyName} again to exit</Text> : <Byline><KeyboardShortcutHint shortcut="Enter" action="confirm" /><ConfigurableShortcutHint action="confirm:no" context="Confirmation" fallback="Esc" description="cancel" /></Byline>;
    $[2] = exitState.keyName;
    $[3] = exitState.pending;
    $[4] = t4;
  } else {
    t4 = $[4];
  }
  const defaultInputGuide = t4;
  let t5;
  if ($[5] !== color || $[6] !== title) {
    t5 = <Text bold={true} color={color}>{title}</Text>;
    $[5] = color;
    $[6] = title;
    $[7] = t5;
  } else {
    t5 = $[7];
  }
  let t6;
  if ($[8] !== subtitle) {
    t6 = subtitle && <Text dimColor={true}>{subtitle}</Text>;
    $[8] = subtitle;
    $[9] = t6;
  } else {
    t6 = $[9];
  }
  let t7;
  if ($[10] !== t5 || $[11] !== t6) {
    t7 = <Box flexDirection="column">{t5}{t6}</Box>;
    $[10] = t5;
    $[11] = t6;
    $[12] = t7;
  } else {
    t7 = $[12];
  }
  let t8;
  if ($[13] !== children || $[14] !== t7) {
    t8 = <Box flexDirection="column" gap={1}>{t7}{children}</Box>;
    $[13] = children;
    $[14] = t7;
    $[15] = t8;
  } else {
    t8 = $[15];
  }
  let t9;
  if ($[16] !== defaultInputGuide || $[17] !== exitState || $[18] !== hideInputGuide || $[19] !== inputGuide) {
    t9 = !hideInputGuide && <Box marginTop={1}><Text dimColor={true} italic={true}>{inputGuide ? inputGuide(exitState) : defaultInputGuide}</Text></Box>;
    $[16] = defaultInputGuide;
    $[17] = exitState;
    $[18] = hideInputGuide;
    $[19] = inputGuide;
    $[20] = t9;
  } else {
    t9 = $[20];
  }
  let t10;
  if ($[21] !== t8 || $[22] !== t9) {
    t10 = <>{t8}{t9}</>;
    $[21] = t8;
    $[22] = t9;
    $[23] = t10;
  } else {
    t10 = $[23];
  }
  const content = t10;
  if (hideBorder) {
    return content;
  }
  let t11;
  if ($[24] !== color || $[25] !== content) {
    t11 = <Pane color={color}>{content}</Pane>;
    $[24] = color;
    $[25] = content;
    $[26] = t11;
  } else {
    t11 = $[26];
  }
  return t11;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkV4aXRTdGF0ZSIsInVzZUV4aXRPbkN0cmxDRFdpdGhLZXliaW5kaW5ncyIsIkJveCIsIlRleHQiLCJ1c2VLZXliaW5kaW5nIiwiVGhlbWUiLCJDb25maWd1cmFibGVTaG9ydGN1dEhpbnQiLCJCeWxpbmUiLCJLZXlib2FyZFNob3J0Y3V0SGludCIsIlBhbmUiLCJEaWFsb2dQcm9wcyIsInRpdGxlIiwiUmVhY3ROb2RlIiwic3VidGl0bGUiLCJjaGlsZHJlbiIsIm9uQ2FuY2VsIiwiY29sb3IiLCJoaWRlSW5wdXRHdWlkZSIsImhpZGVCb3JkZXIiLCJpbnB1dEd1aWRlIiwiZXhpdFN0YXRlIiwiaXNDYW5jZWxBY3RpdmUiLCJEaWFsb2ciLCJ0MCIsIiQiLCJfYyIsInQxIiwidDIiLCJ1bmRlZmluZWQiLCJ0MyIsImNvbnRleHQiLCJpc0FjdGl2ZSIsInQ0Iiwia2V5TmFtZSIsInBlbmRpbmciLCJkZWZhdWx0SW5wdXRHdWlkZSIsInQ1IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJjb250ZW50IiwidDExIl0sInNvdXJjZXMiOlsiRGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICB0eXBlIEV4aXRTdGF0ZSxcbiAgdXNlRXhpdE9uQ3RybENEV2l0aEtleWJpbmRpbmdzLFxufSBmcm9tICcuLi8uLi9ob29rcy91c2VFeGl0T25DdHJsQ0RXaXRoS2V5YmluZGluZ3MuanMnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyB1c2VLZXliaW5kaW5nIH0gZnJvbSAnLi4vLi4va2V5YmluZGluZ3MvdXNlS2V5YmluZGluZy5qcydcbmltcG9ydCB0eXBlIHsgVGhlbWUgfSBmcm9tICcuLi8uLi91dGlscy90aGVtZS5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4uL0NvbmZpZ3VyYWJsZVNob3J0Y3V0SGludC5qcydcbmltcG9ydCB7IEJ5bGluZSB9IGZyb20gJy4vQnlsaW5lLmpzJ1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dEhpbnQgfSBmcm9tICcuL0tleWJvYXJkU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgUGFuZSB9IGZyb20gJy4vUGFuZS5qcydcblxudHlwZSBEaWFsb2dQcm9wcyA9IHtcbiAgdGl0bGU6IFJlYWN0LlJlYWN0Tm9kZVxuICBzdWJ0aXRsZT86IFJlYWN0LlJlYWN0Tm9kZVxuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlXG4gIG9uQ2FuY2VsOiAoKSA9PiB2b2lkXG4gIGNvbG9yPzoga2V5b2YgVGhlbWVcbiAgaGlkZUlucHV0R3VpZGU/OiBib29sZWFuXG4gIGhpZGVCb3JkZXI/OiBib29sZWFuXG4gIC8qKiBDdXN0b20gaW5wdXQgZ3VpZGUgY29udGVudC4gUmVjZWl2ZXMgZXhpdFN0YXRlIGZvciBDdHJsK0MvRCBwZW5kaW5nIGRpc3BsYXkuICovXG4gIGlucHV0R3VpZGU/OiAoZXhpdFN0YXRlOiBFeGl0U3RhdGUpID0+IFJlYWN0LlJlYWN0Tm9kZVxuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciBEaWFsb2cncyBidWlsdC1pbiBjb25maXJtOm5vIChFc2MvbikgYW5kIGFwcDpleGl0L2ludGVycnVwdFxuICAgKiAoQ3RybC1DL0QpIGtleWJpbmRpbmdzIGFyZSBhY3RpdmUuIFNldCB0byBgZmFsc2VgIHdoaWxlIGFuIGVtYmVkZGVkIHRleHRcbiAgICogZmllbGQgaXMgYmVpbmcgZWRpdGVkIHNvIHRob3NlIGtleXMgcmVhY2ggdGhlIGZpZWxkIGluc3RlYWQgb2YgYmVpbmdcbiAgICogY29uc3VtZWQgYnkgRGlhbG9nLiBUZXh0SW5wdXQgaGFzIGl0cyBvd24gY3RybCtjL2QgaGFuZGxlcnMgKGNhbmNlbCBvblxuICAgKiBwcmVzcywgZGVsZXRlLWZvcndhcmQgb24gY3RybCtkIHdpdGggdGV4dCkuIERlZmF1bHRzIHRvIGB0cnVlYC5cbiAgICovXG4gIGlzQ2FuY2VsQWN0aXZlPzogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gRGlhbG9nKHtcbiAgdGl0bGUsXG4gIHN1YnRpdGxlLFxuICBjaGlsZHJlbixcbiAgb25DYW5jZWwsXG4gIGNvbG9yID0gJ3Blcm1pc3Npb24nLFxuICBoaWRlSW5wdXRHdWlkZSxcbiAgaGlkZUJvcmRlcixcbiAgaW5wdXRHdWlkZSxcbiAgaXNDYW5jZWxBY3RpdmUgPSB0cnVlLFxufTogRGlhbG9nUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBleGl0U3RhdGUgPSB1c2VFeGl0T25DdHJsQ0RXaXRoS2V5YmluZGluZ3MoXG4gICAgdW5kZWZpbmVkLFxuICAgIHVuZGVmaW5lZCxcbiAgICBpc0NhbmNlbEFjdGl2ZSxcbiAgKVxuXG4gIC8vIFVzZSBjb25maWd1cmFibGUga2V5YmluZGluZyBmb3IgRVNDIHRvIGNhbmNlbC5cbiAgLy8gaXNDYW5jZWxBY3RpdmUgbGV0cyBjb25zdW1lcnMgKGUuZy4gRWxpY2l0YXRpb25EaWFsb2cpIGRpc2FibGUgdGhpcyB3aGlsZVxuICAvLyBhbiBlbWJlZGRlZCBUZXh0SW5wdXQgaXMgZm9jdXNlZCwgc28gdGhhdCBrZXlzIGxpa2UgJ24nIHJlYWNoIHRoZSBmaWVsZFxuICAvLyBpbnN0ZWFkIG9mIGJlaW5nIGNvbnN1bWVkIGhlcmUuXG4gIHVzZUtleWJpbmRpbmcoJ2NvbmZpcm06bm8nLCBvbkNhbmNlbCwge1xuICAgIGNvbnRleHQ6ICdDb25maXJtYXRpb24nLFxuICAgIGlzQWN0aXZlOiBpc0NhbmNlbEFjdGl2ZSxcbiAgfSlcblxuICBjb25zdCBkZWZhdWx0SW5wdXRHdWlkZSA9IGV4aXRTdGF0ZS5wZW5kaW5nID8gKFxuICAgIDxUZXh0PlByZXNzIHtleGl0U3RhdGUua2V5TmFtZX0gYWdhaW4gdG8gZXhpdDwvVGV4dD5cbiAgKSA6IChcbiAgICA8QnlsaW5lPlxuICAgICAgPEtleWJvYXJkU2hvcnRjdXRIaW50IHNob3J0Y3V0PVwiRW50ZXJcIiBhY3Rpb249XCJjb25maXJtXCIgLz5cbiAgICAgIDxDb25maWd1cmFibGVTaG9ydGN1dEhpbnRcbiAgICAgICAgYWN0aW9uPVwiY29uZmlybTpub1wiXG4gICAgICAgIGNvbnRleHQ9XCJDb25maXJtYXRpb25cIlxuICAgICAgICBmYWxsYmFjaz1cIkVzY1wiXG4gICAgICAgIGRlc2NyaXB0aW9uPVwiY2FuY2VsXCJcbiAgICAgIC8+XG4gICAgPC9CeWxpbmU+XG4gIClcblxuICBjb25zdCBjb250ZW50ID0gKFxuICAgIDw+XG4gICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBnYXA9ezF9PlxuICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICA8VGV4dCBib2xkIGNvbG9yPXtjb2xvcn0+XG4gICAgICAgICAgICB7dGl0bGV9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgIHtzdWJ0aXRsZSAmJiA8VGV4dCBkaW1Db2xvcj57c3VidGl0bGV9PC9UZXh0Pn1cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvQm94PlxuICAgICAgeyFoaWRlSW5wdXRHdWlkZSAmJiAoXG4gICAgICAgIDxCb3ggbWFyZ2luVG9wPXsxfT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgICAgICB7aW5wdXRHdWlkZSA/IGlucHV0R3VpZGUoZXhpdFN0YXRlKSA6IGRlZmF1bHRJbnB1dEd1aWRlfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvPlxuICApXG5cbiAgaWYgKGhpZGVCb3JkZXIpIHtcbiAgICByZXR1cm4gY29udGVudFxuICB9XG5cbiAgcmV0dXJuIDxQYW5lIGNvbG9yPXtjb2xvcn0+e2NvbnRlbnR9PC9QYW5lPlxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsU0FDRSxLQUFLQyxTQUFTLEVB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