How bombshell-dev/clack works
Clack provides interactive terminal prompts for JavaScript CLIs in two layers: ready-to-use, styled components and headless prompt primitives. The typical workflow is a CLI user interacting with a styled component, which configures a core prompt; the core handles terminal input, state and rendering, then resolves with a value or cancellation. The README also documents the headless-versus-styled distinction. The graph preserves major prompt and CLI presentation capabilities from the tree; edges are limited to relationships evidenced by the README or sampled source/index references.
Main entry points: index.ts Core exports · prompt.ts Prompt lifecycle · prompts Selection primitives · common.ts Shared terminal styling
Components 23
Styled prompts
- Prompt components
packages/prompts/src - Select
packages/prompts/src/select.ts - Autocomplete
packages/prompts/src/autocomplete.ts - Multi-select
packages/prompts/src/multi-select.ts - Grouped multi-select
packages/prompts/src/group-multi-select.ts - Text and date prompts
packages/prompts/src - Prompt extras
packages/prompts/src
CLI presentation
- Task and progress UI
packages/prompts/src - Logs and notes
packages/prompts/src - Shared terminal styling
packages/prompts/src/common.ts - Option layout
packages/prompts/src/limit-options.ts
Headless core
- Core exports
packages/core/src/index.ts - Prompt lifecycle
packages/core/src/prompts/prompt.ts - Selection primitives
packages/core/src/prompts - Input primitives
packages/core/src/prompts - Date primitive
packages/core/src/prompts/date.ts - Grouped selection primitive
packages/core/src/prompts/group-multiselect.ts - Cursor utilities
packages/core/src/utils/cursor.ts - Validation
packages/core/src/utils/validation.ts - Standard Schema support
packages/core/src/utils/standard-schema.ts - Prompt settings
packages/core/src/utils/settings.ts
Terminal runtime
- Terminal input and output
packages/core/src/utils/index.ts
Other components
- CLI user
Connections 28
- CLI user → Prompt components: answers prompts
README.md - Prompt components → Core exports: uses primitives
README.md - Select → Shared terminal styling: formats output
packages/prompts/src/select.ts - Select → Option layout: limits options
packages/prompts/src/select.ts - Select → Selection primitives: constructs prompt
packages/prompts/src/select.ts - Autocomplete → Prompt lifecycle: constructs prompt
packages/prompts/src/autocomplete.ts - Autocomplete → Shared terminal styling: formats output
packages/prompts/src/autocomplete.ts - Multi-select → Selection primitives: uses primitives
packages/prompts/src/multi-select.ts - Multi-select → Option layout: limits options
packages/prompts/src/multi-select.ts - Grouped multi-select → Grouped selection primitive: constructs prompt
packages/prompts/src/group-multi-select.ts - Grouped multi-select → Option layout: limits options
packages/prompts/src/group-multi-select.ts - Text and date prompts → Input primitives: wraps primitives
packages/prompts/src/multi-line.ts - Text and date prompts → Date primitive: wraps primitive
packages/prompts/src/date.ts - Core exports → Prompt lifecycle: exports
packages/core/src/index.ts - Core exports → Selection primitives: exports
packages/core/src/index.ts - Core exports → Input primitives: exports
packages/core/src/index.ts - Core exports → Date primitive: exports
packages/core/src/index.ts - Core exports → Grouped selection primitive: exports
packages/core/src/index.ts - Prompt lifecycle → Terminal input and output: handles terminal I/O
packages/core/src/prompts/prompt.ts - Prompt lifecycle → Validation: runs validation
packages/core/src/prompts/prompt.ts - Prompt lifecycle → Prompt settings: reads settings
packages/core/src/prompts/prompt.ts - Selection primitives → Cursor utilities: moves cursor
packages/core/src/prompts/autocomplete.ts - Input primitives → Cursor utilities: moves cursor
packages/core/src/prompts/multi-line.ts - Date primitive → Prompt settings: reads settings
packages/core/src/prompts/date.ts - Validation → Standard Schema support: validates schema
packages/core/src/utils/validation.ts - Task and progress UI → Shared terminal styling: uses styling
packages/prompts/src/autocomplete.ts - Logs and notes → Shared terminal styling: uses styling
packages/prompts/src/autocomplete.ts - Prompt extras → Core exports: uses primitives