8pt

AI Prompt Input

AI 指令输入框•输入
介绍

自动增高的指令输入框,带模型切换、附件按钮和发送态。占位文字循环示意可做的事。

纯 HTML、CSS 与少量原生 JS,没有框架依赖。复制提示词交给 Claude Code、Cursor、Trae 或 Codex,模型会把 AI Prompt Input 加进你的项目并换成你的配色。

适用场景

搜索框、AI 对话输入框、表单字段、文件上传和验证码等用户输入的地方。

安装

订阅 Builder 后,用 8pt CLI 装进项目,或在已接入 8pt MCP 的编辑器里直接调用。

$ npm i -g @8pt-dev/cli && 8pt add ai-prompt-input
mcp › 使用 8pt MCP 调用 get_component("ai-prompt-input")

代码

AI Prompt Input 的源码,动效只用 transform 与 opacity,并尊重减少动态效果设置。

<form class="x-ai">
  <textarea rows="1" aria-label="指令"></textarea>
  <div class="x-ai__bar">
    <button type="button" class="x-ai__icon" aria-label="添加附件">+</button>
    <div class="x-ai__model">
      <button type="button" class="x-ai__pill">Claude <b>▾</b></button>
      <ul class="x-ai__menu" role="listbox">
        <li>Claude</li><li>GPT</li><li>DeepSeek</li><li>Kimi</li><li>Qwen</li><li>豆包</li>
      </ul>
    </div>
    <button type="submit" class="x-ai__send" aria-label="发送" disabled>↑</button>
  </div>
…
.x-ai{width:min(440px,100%);padding:14px 14px 10px;border-radius:18px;background:var(--d-card,#101016);border:1px solid var(--d-line,rgba(255,255,255,.1));box-shadow:0 20px 50px -30px rgba(0,0,0,.6);transition:border-color .25s}
.x-ai:focus-within{border-color:color-mix(in srgb,var(--d-accent,#4D74FF) 60%,transparent)}
.x-ai textarea{width:100%;min-height:44px;max-height:140px;resize:none;border:0;outline:0;background:transparent;color:var(--d-fg,#fff);font:15px/1.5 var(--d-font,system-ui,sans-serif)}
.x-ai textarea::placeholder{color:var(--d-muted,#8a8a95)}
.x-ai__bar{display:flex;align-items:center;gap:8px;margin-top:6px}
.x-ai__icon,.x-ai__pill{height:30px;border-radius:999px;border:1px solid var(--d-line,rgba(255,255,255,.1));background:transparent;color:var(--d-muted,#a0a0ab);font:500 13px/1 var(--d-font,system-ui,sans-serif);cursor:pointer}
.x-ai__icon{width:30px}
.x-ai__pill{padding:0 12px}
.x-ai__pill b{font-size:10px;margin-left:4px}
.x-ai__model{position:relative}
.x-ai__menu{position:absolute;left:0;bottom:38px;z-index:5;min-width:140px;margin:0;padding:6px;list-style:none;border-radius:12px;background:var(--d-card,#101016);border:1px solid var(--d-line,rgba(255,255,255,.12));box-shadow:0 18px 40px -16px rgba(0,0,0,.6);opacity:0;transform:translateY(6px) scale(.98);transform-origin:bottom left;pointer-events:none;transition:opacity .18s,transform .18s}
.x-ai__model.open .x-ai__menu{opacity:1;transform:none;pointer-events:auto}
…
const init = (root) => {
  const f = root.querySelector('.x-ai'), ta = f.querySelector('textarea'), send = f.querySelector('.x-ai__send');
  const model = f.querySelector('.x-ai__model'), pill = f.querySelector('.x-ai__pill');
  const hints = ['做一个带年付切换的定价区', '把这个表单改成 8pt 间距', '生成一张数据看板卡片'];
  let hi = 0, ci = 0, timer;
  const type = () => {
    const s = hints[hi]; ta.placeholder = s.slice(0, ++ci);
    timer = setTimeout(ci < s.length ? type : () => { ci = 0; hi = (hi + 1) % hints.length; type(); }, ci < s.length ? 70 : 1800);
  };
  type();
  ta.addEventListener('input', () => { ta.style.height = 'auto'; ta.style.height = ta.scrollHeight + 'px'; send.disabled = !ta.value.trim(); });
  pill.addEventListener('click', () => model.classList.toggle('open'));
…
订阅 Builder 查看完整源码。查看价格

更多输入组件

查看全部

AI Prompt Composer

Glowing Search Bar

Command Palette

File Dropzone

OTP Input

Date Range Pill

更多组件

查看全部

Film Strip Carousel

Auto Tab Showcase

Media Bento Grid

Agent Chat Window

Model Pill Marquee

Director Art Cards

Mac File Window

Disk Cleanup Panel

继续探索