User signal
A product walkthrough reported that some input boxes feel too flat/thin and should adapt to the actual tool.
Original feedback: 有些输入框 太扁了,要根据实际工具决定。
Current pattern observed
There is a shared Input component with a global height rule: h-11 ... lg:h-9. There is also a shared Textarea with field-sizing-content min-h-16. Individual tool pages override these ad hoc, for example QR Code Generator uses a short h-24 textarea for QR content and h-9 color hex inputs.
Relevant files:
src/components/ui/input.tsx
src/components/ui/textarea.tsx
src/features/tools/qr-code-generator/page.tsx
scripts/scaffolding/create-tool.js
- representative tools under
src/features/tools/*/page.tsx
UX problem
One global input height does not fit every tool:
- URL, color, number, enum, and short scalar inputs can be compact.
- Code/data payloads need taller editors or textareas.
- QR/barcode content, regex samples, CSV/JSON, Markdown/HTML, logs, and JWT-like values need different affordances.
- Mobile users need larger tap targets and enough vertical space when the software keyboard is open.
Recommended implementation
Define a small sizing taxonomy and make it available through components or tool shell helpers:
scalar: compact single-line inputs such as color hex, margin, size.
shortText: URL/text fields that should be comfortable but not editor-sized.
payload: JSON/CSV/YAML/log/code input with a larger min height.
workbench: dense split-pane/editor tools.
generatedOutput: read-only output area with copy/export actions.
Then audit representative tools and remove one-off height decisions where possible.
Representative routes
/en/qr-code-generator
/en/base64-encode-decode
/en/regex-tester
/en/json-formatter
/en/csv-json-converter
/en/jwt-decoder
/en/pipeline-builder
Acceptance criteria
- Inputs and textareas on representative tools are sized according to expected content, not only by shared defaults.
- Short scalar controls remain compact; user-authored payload fields are visibly comfortable.
- Mobile touch target requirements remain satisfied.
npm run create:tool scaffolds a sensible default input size or requires choosing an input intent.
- Add a guard or component test that documents the sizing taxonomy and prevents regressions in the scaffold/template.
User signal
A product walkthrough reported that some input boxes feel too flat/thin and should adapt to the actual tool.
Original feedback:
有些输入框 太扁了,要根据实际工具决定。Current pattern observed
There is a shared
Inputcomponent with a global height rule:h-11 ... lg:h-9. There is also a sharedTextareawithfield-sizing-content min-h-16. Individual tool pages override these ad hoc, for example QR Code Generator uses a shorth-24textarea for QR content andh-9color hex inputs.Relevant files:
src/components/ui/input.tsxsrc/components/ui/textarea.tsxsrc/features/tools/qr-code-generator/page.tsxscripts/scaffolding/create-tool.jssrc/features/tools/*/page.tsxUX problem
One global input height does not fit every tool:
Recommended implementation
Define a small sizing taxonomy and make it available through components or tool shell helpers:
scalar: compact single-line inputs such as color hex, margin, size.shortText: URL/text fields that should be comfortable but not editor-sized.payload: JSON/CSV/YAML/log/code input with a larger min height.workbench: dense split-pane/editor tools.generatedOutput: read-only output area with copy/export actions.Then audit representative tools and remove one-off height decisions where possible.
Representative routes
/en/qr-code-generator/en/base64-encode-decode/en/regex-tester/en/json-formatter/en/csv-json-converter/en/jwt-decoder/en/pipeline-builderAcceptance criteria
npm run create:toolscaffolds a sensible default input size or requires choosing an input intent.