Reference
IAMTHANA Design System
Tokens, scales, and primitives that compose the IAMTHANA interface — used as the single source of truth for color, type, spacing, and motion.
01 · Foundations / Color
Color system
Capybara brown drives identity and action — taken from the mascot. Mint green comes from its cap and stays rare, reserved for success and marks. The neutral ramp is warm ink rather than a cool gray, so nothing on the page reads blue.
Brand — capybara brown
--color-brand-{step}Secondary — mint
--color-secondary-{step}Neutral — warm ink
--color-gray-{step}Semantic tokens
02 · Foundations / Type
Typography
Anuphan carries both Thai and Latin in one warm-toned family, so mixed-script lines share a baseline. JetBrains Mono is reserved for code, slugs, and token labels. Noto Sans Thai stays loaded as the fallback.
เรียนรู้ สร้างสรรค์ และทำงานได้อย่างมีประสิทธิภาพ
The quick brown fox jumps over the lazy dog
const welcome = () => "hi"
03 · Foundations / Space & Shape
Spacing, radius & elevation
Spacing scale (px)
Radius
Elevation
Surfaces
04 · Foundations / Iconography & Motion
Icons & motion
Heroicons (outline) is the primary icon family, sized at 16/18/20/24. Motion is subtle — quick ease-out transitions, no bounces.
05 · Primitives / Inputs
Inputs
Text inputs, textareas, selects, and field labels. All respect the brand focus ring and share the same rounded-lg border treatment.
Text input
Preferred for hex, tokens, IDs, cron expressions
Textarea
Select
Checkbox & Switch
Chip selector
<AppChip> · Used for: QR size/ECC, Regex flags, BCrypt rounds, UUID version, Lorem content type
Number input
Used for: Cron fields, Electricity watts/hours, Printer minutes, Bcrypt rounds
Grouped input (prefix / suffix)
<AppGroupedInput> · Used for: Regex pattern `/…/gm`, and any token input that needs inline delimiters
Coordinate input box
<AppCoordInput> · Used for: Nether portal coordinates, grid inputs, triple-value entry
Styled checkbox (brand fill)
<AppCheckbox> · Used for: Password charset list — prefer over UCheckbox when you need a denser mono-aligned list
Color picker
<AppColorPicker> · Used for: Color Palette base color, QR code foreground / background
File upload
<AppFileUpload> · Used for: QR code logo overlay, banner image upload
Field label anatomy
- • Label — `text-sm font-semibold`
- • Hint — `font-mono text-[11px] text-gray-400`
- • Baseline-aligned, `mb-2` gap to input
