# AGENTS.md # Concise UI Design Philosophy Concise UI is a Vue component framework designed for **enterprise and productivity software**. The goal is **not** to imitate Material Design, Bootstrap, mobile-first design, or flashy dashboards. The goal is to maximize usability, readability, and information density for desktop business applications. Think: - WinForms philosophy - Modern web technology - Professional enterprise appearance --- # Core Principles ## Information Density Every pixel should have a purpose. Avoid excessive whitespace. Interfaces should comfortably display many controls without feeling cramped. Target use cases: - ERP - WMS - CRM - POS - Finance - Inventory - Internal company systems - Admin panels Not: - Marketing landing pages - Portfolio websites - Mobile-first applications --- ## Modern Appearance Do NOT copy old WinForms visually. Instead: - clean - flat - subtle - modern Avoid: - glossy gradients - skeuomorphic effects - excessive shadows - oversized rounded corners --- ## Conservative Color Usage Color communicates meaning. Do not color everything. Use color primarily for: - Primary actions - Success - Warning - Error - Selection - Focus Most controls should remain neutral. --- ## Compact Components Components should be intentionally compact. Preferred defaults: - Font: 13–14px - Control height: ~30–32px - Small paddings - Tight spacing - Small border radius Avoid large mobile-oriented controls. --- ## Clear Visual Hierarchy Hierarchy should come from: - spacing - typography - borders Not from giant cards or colorful backgrounds. --- ## Functional Borders Borders are encouraged. Inputs should always be visually distinguishable. Panels may have subtle borders. Tables should clearly separate rows and columns. --- ## Minimal Decoration Avoid decoration unless it improves usability. Examples: Good - subtle hover - subtle focus ring - subtle elevation Avoid - animations for decoration - glowing effects - floating cards everywhere - unnecessary transitions --- ## Desktop First Primary target: Desktop users with keyboard and mouse. Touch support is secondary. Keyboard accessibility is first-class. --- ## Performance Components should remain lightweight. Avoid unnecessary dependencies. Prefer native browser capabilities. Tree-shaking should be supported. --- ## API Philosophy APIs should be: - predictable - explicit - consistent Example: ```vue ``` Naming should remain consistent across the framework. --- # Creating a New Component Use this checklist whenever adding a public Concise UI component. 1. Define the component contract before implementation: - purpose and expected behavior - props, events, slots, and `v-model` shape - disabled, loading, empty, invalid, or indeterminate states where relevant - mouse and keyboard behavior 2. Create the component under `src/components//C.vue`. 3. Add `types.ts` beside the component when it has reusable public types. Reuse existing shared types, such as form-control sizes, instead of duplicating them. 4. Follow the established implementation style: - Vue 3 `