{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "codex-prompt",
  "title": "Codex Prompt",
  "description": "Codex's › text input with warm model / green cwd status line and Plan mode tag (#bb9af7).",
  "files": [
    {
      "path": "registry/brainless/codex/codex-prompt.tsx",
      "content": "\"use client\";\n\nimport * as React from \"react\";\nimport { cn } from \"@/lib/utils\";\n\n/**\n * CodexPrompt — Codex CLI's input composer.\n *\n * The input sits on a full-width gray surface (Codex `user_message_bg`: white\n * blended at 12% over the terminal background — `#353535` on `--term-bg`\n * `#1a1a1a`). No top/bottom rules. One blank row of that surface pads above\n * and below the `›` line; the status row sits outside it.\n */\nexport type CodexMode = \"default\" | \"plan\";\n\nconst MODEL = \"#f6e2b7\"; // 38;2;246;226;183\nconst CWD = \"#abdfa7\"; // 38;2;171;223;167\nconst PLAN = \"#bb9af7\"; // 38;5;5 → tokyo magenta (not hot pink)\nconst DIM = \"#7a7a7a\";\nconst FG = \"#ededed\";\n/** Codex `user_message_bg` for `--term-bg` #1a1a1a (white @ 12%). */\nconst INPUT_BG = \"#353535\";\n\nexport function CodexPrompt({\n  value,\n  defaultValue = \"\",\n  onChange,\n  onKeyDown,\n  placeholder = \"Use /skills to list available skills\",\n  mode = \"default\",\n  model = \"gpt-5.6-sol low\",\n  directory = \"~/dev/brainless\",\n  className,\n  inputClassName,\n}: {\n  value?: string;\n  defaultValue?: string;\n  onChange?: React.ChangeEventHandler<HTMLInputElement>;\n  onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;\n  placeholder?: string;\n  mode?: CodexMode;\n  model?: string;\n  directory?: string;\n  className?: string;\n  inputClassName?: string;\n}) {\n  const controlled = value !== undefined;\n  const displayModel =\n    mode === \"plan\" && model.includes(\" low\")\n      ? model.replace(\" low\", \" medium\")\n      : model;\n\n  return (\n    <div className={cn(\"min-w-0 font-mono text-[13px] leading-[1.6]\", className)}>\n      <div\n        className=\"min-w-0 py-[1lh] pr-[1ch]\"\n        style={{ background: INPUT_BG, color: FG }}\n      >\n        <div className=\"flex min-w-0 items-center\">\n          <span aria-hidden className=\"inline-block w-[2ch] shrink-0 font-bold\">\n            ›\n          </span>\n          <input\n            type=\"text\"\n            aria-label=\"Prompt\"\n            placeholder={placeholder}\n            onKeyDown={onKeyDown}\n            {...(controlled\n              ? { value, onChange }\n              : { defaultValue, onChange })}\n            className={cn(\n              \"term-input min-w-0 flex-1 bg-transparent outline-none placeholder:text-[#7a7a7a]\",\n              inputClassName,\n            )}\n            style={\n              {\n                color: FG,\n                caretColor: FG,\n                caretShape: \"block\",\n              } as React.CSSProperties\n            }\n          />\n        </div>\n      </div>\n\n      <div className=\"flex min-w-0 flex-wrap items-baseline gap-x-3 pl-[2ch] text-[12px]\">\n        <span className=\"min-w-0 break-words\">\n          <span style={{ color: MODEL }}>{displayModel}</span>\n          <span style={{ color: DIM }}> · </span>\n          <span style={{ color: CWD }}>{directory}</span>\n        </span>\n        {mode === \"plan\" ? (\n          <span className=\"ml-auto\" style={{ color: PLAN }}>\n            Plan mode (shift+tab to cycle)\n          </span>\n        ) : null}\n      </div>\n    </div>\n  );\n}\n",
      "type": "registry:ui",
      "target": "components/brainless/codex/codex-prompt.tsx"
    }
  ],
  "type": "registry:ui"
}