@dedesfr/prompter 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,255 @@
1
+ # Component Patterns — UI Interaction Best Practices
2
+
3
+ Reference for designing common UI components with proper states, accessibility, and interaction patterns. Load when designing or reviewing specific components.
4
+
5
+ ---
6
+
7
+ ## Buttons
8
+
9
+ ### Hierarchy
10
+
11
+ Every interface needs a clear button hierarchy:
12
+
13
+ | Level | Name | Use Case | Visual Treatment |
14
+ |---|---|---|---|
15
+ | 1 | Primary | Main action per section/page | Filled, brand color, high contrast |
16
+ | 2 | Secondary | Supporting actions | Outlined or muted fill |
17
+ | 3 | Tertiary / Ghost | Low-priority actions, cancel | Text-only or very subtle background |
18
+ | 4 | Destructive | Delete, remove, irreversible | Red/danger color, confirm pattern |
19
+ | 5 | Icon-only | Compact actions (close, menu, edit) | Icon with tooltip, adequate touch target |
20
+
21
+ ### Required States
22
+
23
+ Every button must handle:
24
+ - **Default** — Resting state
25
+ - **Hover** — Subtle background/shadow change (desktop)
26
+ - **Focus** — Visible ring/outline for keyboard users (2px offset, contrasting color)
27
+ - **Active/Pressed** — Slightly darker, subtle depression
28
+ - **Disabled** — Reduced opacity (0.5-0.6), no pointer events, `aria-disabled`
29
+ - **Loading** — Spinner or dots replacing text, button disabled during action
30
+
31
+ ### Sizing
32
+
33
+ | Size | Height | Padding (x) | Font Size | Use Case |
34
+ |---|---|---|---|---|
35
+ | sm | 32px | 12px | 13-14px | Dense UI, table actions, tag actions |
36
+ | md | 40px | 16px | 14-15px | Standard forms, toolbars |
37
+ | lg | 48px | 24px | 16px | Hero CTAs, mobile-first interfaces |
38
+
39
+ ### Accessibility
40
+ - Minimum touch target: 44×44px (even if visual size is smaller, pad the clickable area)
41
+ - Always include accessible label (text content or `aria-label` for icon buttons)
42
+ - Don't rely on color alone — icons or text should reinforce meaning
43
+
44
+ ---
45
+
46
+ ## Forms
47
+
48
+ ### Input Fields
49
+
50
+ **Required states:**
51
+ - Default — Clear border, label above
52
+ - Focus — Highlighted border (brand color), optional subtle shadow
53
+ - Filled — Same as default but with content
54
+ - Error — Red/danger border, error message below, `aria-invalid="true"`
55
+ - Disabled — Muted background, reduced opacity
56
+ - Read-only — No border/minimal border, text appears as content
57
+
58
+ **Layout rules:**
59
+ - Label above input (not beside, not as placeholder)
60
+ - Placeholder text is supplementary, never the only label
61
+ - Error messages appear below the input, in context
62
+ - Help text appears below label or below input, not as tooltip
63
+ - Group related fields (name + email, street + city + state)
64
+
65
+ **Sizing:**
66
+
67
+ | Size | Height | Font Size | Use Case |
68
+ |---|---|---|---|
69
+ | sm | 32px | 13-14px | Dense forms, admin panels |
70
+ | md | 40px | 14-15px | Standard forms |
71
+ | lg | 48px | 16px | Landing pages, mobile |
72
+
73
+ ### Select / Dropdown
74
+
75
+ - Show current selection in the trigger
76
+ - Keyboard navigation: arrow keys, type-ahead, Enter to select, Escape to close
77
+ - Long lists: include search/filter
78
+ - Multi-select: use checkboxes inside dropdown, show count or tags in trigger
79
+
80
+ ### Checkbox & Radio
81
+
82
+ - Minimum 44×44px touch target (including label)
83
+ - Label always to the right of the indicator
84
+ - Checkbox: independent selections (multi-select)
85
+ - Radio: mutually exclusive within a group
86
+ - Indeterminate checkbox state for "select all" with partial selection
87
+
88
+ ### Form Validation
89
+
90
+ - **Inline validation**: Validate on blur (not on every keystroke)
91
+ - **Submit validation**: Validate all fields, focus the first error, scroll if needed
92
+ - **Error messaging**: Specific ("Email must include @") not generic ("Invalid input")
93
+ - **Success feedback**: Brief confirmation, then move on — don't celebrate trivial actions
94
+
95
+ ---
96
+
97
+ ## Cards
98
+
99
+ ### When to Use
100
+ - Displaying a collection of items with mixed content (image + text + actions)
101
+ - Content that can be browsed and compared
102
+ - NOT for single content blocks or sequential content (use sections instead)
103
+
104
+ ### Anatomy
105
+ 1. **Media area** (optional) — Image, video, or illustration at top or left
106
+ 2. **Header** — Title, subtitle, metadata
107
+ 3. **Body** — Description or summary content
108
+ 4. **Footer** (optional) — Actions, tags, or secondary metadata
109
+
110
+ ### Interaction Patterns
111
+ - **Clickable card**: Entire card is a link, hover shows elevation change
112
+ - **Card with actions**: Card is not clickable, specific buttons/links inside are
113
+ - **Never both**: Don't make the whole card clickable AND have buttons inside it
114
+
115
+ ### States
116
+ - Default, Hover (if clickable), Selected (in a selection context), Loading (skeleton)
117
+
118
+ ---
119
+
120
+ ## Navigation
121
+
122
+ ### Top Navigation (Navbar)
123
+
124
+ - Logo/brand on the left
125
+ - Primary nav items horizontally centered or right-aligned
126
+ - Active page indicator: bold text, underline, or background highlight
127
+ - Mobile: hamburger menu (3 lines) → slide-out or full-screen overlay
128
+ - Sticky/fixed: include subtle shadow or border when scrolled
129
+ - Max 5-7 primary items; overflow into "More" dropdown
130
+
131
+ ### Sidebar Navigation
132
+
133
+ - Collapsible for more content space
134
+ - Active item: filled background with brand color, or left border accent
135
+ - Group items with section headers
136
+ - Icons + labels in expanded state, icons-only in collapsed state with tooltips
137
+ - Scroll independently from main content
138
+
139
+ ### Breadcrumbs
140
+
141
+ - Show current location in hierarchy
142
+ - Each segment is a link except the current page
143
+ - Separator: `/` or `>` or chevron icon
144
+ - Truncate long paths: show first, `...`, last 2 segments
145
+
146
+ ### Tabs
147
+
148
+ - Horizontal for 2-5 options, vertical for 5+ or when labels are long
149
+ - Active tab: bold/colored text + bottom border (horizontal) or left border (vertical)
150
+ - Tab content switches without page reload
151
+ - Keyboard: arrow keys to switch, Tab to enter content area
152
+ - Don't nest tabs within tabs
153
+
154
+ ---
155
+
156
+ ## Modals & Dialogs
157
+
158
+ ### When to Use
159
+ - Confirming destructive actions
160
+ - Short forms that don't warrant a new page (login, quick edit)
161
+ - Displaying focused content that blocks the main flow
162
+
163
+ ### When NOT to Use
164
+ - Displaying information that could be inline
165
+ - Long forms or multi-step flows (use a page instead)
166
+ - Welcome messages or tutorials (use onboarding flows)
167
+
168
+ ### Anatomy
169
+ - **Overlay/backdrop**: Semi-transparent dark (rgba(0,0,0,0.4-0.6))
170
+ - **Container**: Centered, max-width 480-640px, adequate padding (24-32px)
171
+ - **Header**: Title + close button (X) in top-right
172
+ - **Body**: Content area, scrollable if content overflows
173
+ - **Footer**: Action buttons (primary right, cancel left)
174
+
175
+ ### Interaction
176
+ - Escape key closes the modal
177
+ - Clicking backdrop closes (for non-critical modals) or doesn't (for confirmations)
178
+ - Focus trapped inside modal (Tab cycles through modal elements only)
179
+ - Return focus to trigger element on close
180
+ - Prevent body scroll while modal is open
181
+
182
+ ---
183
+
184
+ ## Tables
185
+
186
+ ### Best Practices
187
+ - Align text left, numbers right
188
+ - Header row: bold, subtle background, sticky on scroll
189
+ - Zebra striping OR subtle horizontal borders (not both)
190
+ - Minimum row height: 48px for touch, 36px for dense desktop
191
+ - Sortable columns: show sort indicator (arrow up/down)
192
+ - Pagination or virtual scroll for large datasets
193
+
194
+ ### Responsive
195
+ - Priority columns stay visible, secondary columns hide on mobile
196
+ - Alternative: card-based layout on mobile instead of table
197
+ - Horizontal scroll as a last resort (wrap in a scroll container with shadow indicators)
198
+
199
+ ---
200
+
201
+ ## Feedback & Status
202
+
203
+ ### Toast / Snackbar
204
+ - Brief messages (1-2 lines), auto-dismiss after 4-6 seconds
205
+ - Position: bottom-center or top-right
206
+ - Types: success (green), error (red), warning (amber), info (blue/neutral)
207
+ - Include dismiss action and optional undo for destructive actions
208
+ - Stack new toasts, don't replace existing ones
209
+
210
+ ### Empty States
211
+ - Illustration or icon (purposeful, not decorative)
212
+ - Clear headline: what this area is for
213
+ - Description: why it's empty
214
+ - CTA: how to populate it
215
+ - Don't just show a blank white space
216
+
217
+ ### Loading States
218
+ - **Skeleton screens** (preferred): Gray placeholder shapes matching content layout
219
+ - **Spinner**: Only for short, indeterminate waits (< 3 seconds expected)
220
+ - **Progress bar**: For determinate operations with known duration
221
+ - **Inline loading**: Button spinner, input loading indicator
222
+
223
+ ### Error States
224
+ - Page-level: Friendly message + illustration, retry button, link to support
225
+ - Inline: Red border, error text below the field, `aria-invalid`
226
+ - Network: "Something went wrong" with retry, not a technical error dump
227
+ - 404: Helpful redirect suggestions, search, home link
228
+
229
+ ---
230
+
231
+ ## Accessibility Essentials
232
+
233
+ ### Color & Contrast
234
+ - Body text: 4.5:1 contrast ratio minimum (WCAG AA)
235
+ - Large text (18px+ or 14px+ bold): 3:1 minimum
236
+ - Interactive elements: 3:1 against adjacent colors
237
+ - Don't use color as the only indicator — pair with icons, text, or patterns
238
+
239
+ ### Keyboard Navigation
240
+ - All interactive elements focusable via Tab
241
+ - Visible focus indicator (not just browser default — design a custom one)
242
+ - Logical tab order matching visual layout
243
+ - Escape closes overlays, Enter activates buttons/links
244
+
245
+ ### Screen Readers
246
+ - Meaningful alt text for informational images
247
+ - Empty alt (`alt=""`) for decorative images
248
+ - Proper heading hierarchy (h1 → h2 → h3, no skipping)
249
+ - ARIA labels for icon-only buttons and complex widgets
250
+ - Live regions for dynamic content updates (toast notifications, form errors)
251
+
252
+ ### Motion
253
+ - Respect `prefers-reduced-motion` — disable or simplify animations
254
+ - No auto-playing video or audio without user control
255
+ - Avoid rapid flashing (3 flashes per second max)
@@ -0,0 +1,167 @@
1
+ # Design Principles — Anti-AI Aesthetic & Authentic Design Craft
2
+
3
+ Reference for producing designs that feel human-crafted, intentional, and unique. Load this when implementing designs or reviewing design quality.
4
+
5
+ ---
6
+
7
+ ## Anti-AI-Look Patterns
8
+
9
+ AI-generated designs share recognizable traits. Avoid these to produce authentic work.
10
+
11
+ ### Layout Anti-Patterns
12
+
13
+ | AI Trap | Why It Feels Generic | Do Instead |
14
+ |---|---|---|
15
+ | Perfect 3-column symmetry for everything | Real content isn't symmetric | Vary column widths, use 2-col or asymmetric grids |
16
+ | Every section is full-width hero + centered text | Repetitive rhythm, no visual variety | Mix layout types: sidebar, offset, editorial, split |
17
+ | Giant hero with headline + subtitle + CTA on every page | Cookie-cutter template feel | Match the hero to content importance — some pages don't need one |
18
+ | Everything centered on the page | Monotonous visual flow | Use left-aligned text with intentional center/right accents |
19
+ | Equal spacing everywhere | Flat, robotic rhythm | Vary spacing to create grouping and breathing room |
20
+ | Card grids with identical card sizes | Catalog/stock feel | Vary card sizes, feature one, use masonry or editorial layouts |
21
+
22
+ ### Color Anti-Patterns
23
+
24
+ | AI Trap | Why It Feels Generic | Do Instead |
25
+ |---|---|---|
26
+ | Blue-to-purple gradient as primary | Overused AI default | Choose a palette rooted in the brand or project's personality |
27
+ | Neon accent on dark background | "Tech startup template" look | Use muted, sophisticated accents — or bold ones with restraint |
28
+ | Using 6+ colors with equal prominence | Visual noise, no hierarchy | 1-2 primary colors, 1 accent, rest neutrals |
29
+ | Gradient backgrounds on every section | Decorative without purpose | Use solid colors; reserve gradients for specific emphasis |
30
+ | Pure black (#000) text on pure white (#fff) | Harsh contrast, screen glare | Use near-black (#1a1a1a–#2d2d2d) on off-white (#f8f8f8–#fafafa) |
31
+ | Colored shadows (purple/blue box-shadows) | Trendy but rarely appropriate | Neutral shadows unless the brand specifically calls for it |
32
+
33
+ ### Typography Anti-Patterns
34
+
35
+ | AI Trap | Why It Feels Generic | Do Instead |
36
+ |---|---|---|
37
+ | Using Inter/Poppins/Montserrat for everything | Ubiquitous AI defaults | Consider the project's personality — serif for editorial, geometric sans for tech, humanist for approachable |
38
+ | Only 2 sizes: heading and body | Flat hierarchy | Use a proper type scale (e.g., 12/14/16/20/24/32/48) |
39
+ | All text in the same weight | No emphasis, everything competes | Use 2-3 weights (regular, medium, bold) with clear purpose |
40
+ | ALL CAPS EVERYWHERE | Aggressive, hard to read | Reserve caps for small labels, buttons, or overlines |
41
+ | Giant display text with no supporting content | Empty visual calories | Size should match content importance |
42
+
43
+ ### Component Anti-Patterns
44
+
45
+ | AI Trap | Why It Feels Generic | Do Instead |
46
+ |---|---|---|
47
+ | border-radius: 9999px on everything | Bubbly, toy-like | Choose 1-2 radius values that match the design's tone (4-8px for sharp, 12-16px for soft) |
48
+ | Glassmorphism / frosted glass everywhere | Trend over function | Use glass effects sparingly where depth communication is needed |
49
+ | Drop shadows on everything | Visual heaviness, everything "floats" | Shadow only elements that conceptually need elevation (modals, dropdowns, cards on hover) |
50
+ | Outlined icon + outlined button + outlined card | Everything is a border, nothing has weight | Mix filled and outlined treatments for hierarchy |
51
+ | Decorative blob SVGs or wave dividers | Instant AI template identifier | Use geometric shapes with purpose, or no decoration at all |
52
+ | Stock illustration people with purple skin | Unmistakable AI/startup template | Use photography, custom illustration, or no illustration |
53
+
54
+ ### Interaction Anti-Patterns
55
+
56
+ | AI Trap | Why It Feels Generic | Do Instead |
57
+ |---|---|---|
58
+ | Everything has a hover scale(1.05) | Bouncy, distracting | Reserve scale for interactive cards; use color/shadow changes for most hover states |
59
+ | 0.3s ease on everything | Sluggish, indiscriminate | Use faster transitions (150-200ms) for small elements, slower (300-400ms) for layout changes |
60
+ | Fade-in-up on scroll for every element | Scroll-jacking, animation fatigue | Animate only key content on first appearance; let secondary content be static |
61
+ | Loading spinners as the only loading state | No context about what's loading | Use skeleton screens, progressive content reveal, or inline loading indicators |
62
+
63
+ ---
64
+
65
+ ## Authentic Design Principles
66
+
67
+ ### 1. Content-First Hierarchy
68
+
69
+ Design serves content, not the other way around.
70
+
71
+ - Read the actual content before choosing layout
72
+ - Size elements proportional to their importance
73
+ - Use whitespace to group related content and separate sections
74
+ - Ask: "What should the user see first, second, third?"
75
+
76
+ ### 2. Intentional Contrast
77
+
78
+ Every visual difference should communicate something.
79
+
80
+ - **Size contrast** — Headings vs. body, featured vs. standard items
81
+ - **Weight contrast** — Bold labels vs. regular values, strong CTAs vs. subtle links
82
+ - **Color contrast** — Primary actions vs. secondary, active states vs. default
83
+ - **Space contrast** — Tight groups of related items, generous gaps between sections
84
+ - **Density contrast** — Dense data areas vs. breathing hero/summary areas
85
+
86
+ ### 3. Systematic but Not Robotic
87
+
88
+ Use systems (type scale, spacing scale, color tokens) but break them intentionally.
89
+
90
+ - Establish a base grid (4px or 8px) but don't snap everything mechanically
91
+ - Use your type scale but occasionally break it for display/hero moments
92
+ - Maintain consistent component patterns but allow contextual variations
93
+
94
+ ### 4. Typography Does the Heavy Lifting
95
+
96
+ Most visual hierarchy comes from type, not decoration.
97
+
98
+ - Establish a clear scale: body → subhead → section head → page title → display
99
+ - Use weight and size together: a 14px bold label and a 16px regular body text create clear hierarchy without needing different colors
100
+ - Line-height matters: tighter for headings (1.1-1.3), looser for body (1.5-1.7)
101
+ - Letter-spacing: slightly positive for small caps/labels, zero or negative for large display text
102
+
103
+ ### 5. Color as Communication
104
+
105
+ Color should mean something, not just decorate.
106
+
107
+ - **Brand color** — Primary actions, key elements, brand identity
108
+ - **Semantic color** — Success (green), warning (amber), error (red), info (blue)
109
+ - **Neutral palette** — Background, text, borders, dividers (this is 80% of your palette)
110
+ - **Accent** — Sparingly, to draw attention to one thing
111
+
112
+ ### 6. Space Creates Meaning
113
+
114
+ Proximity and spacing communicate relationships.
115
+
116
+ - Items close together = related
117
+ - Items far apart = separate concepts
118
+ - Consistent internal padding = belonging to the same container
119
+ - Asymmetric margins = visual rhythm and movement
120
+
121
+ ---
122
+
123
+ ## Design Quality Checklist
124
+
125
+ Use this to evaluate designs before presenting to the user:
126
+
127
+ ### Visual Hierarchy
128
+ - [ ] The most important element is visually dominant
129
+ - [ ] There is a clear reading order (F-pattern or Z-pattern where appropriate)
130
+ - [ ] Headings form a logical scale (not random sizes)
131
+ - [ ] CTAs are visually distinct from surrounding content
132
+
133
+ ### Typography
134
+ - [ ] Body text is 16px+ for readability
135
+ - [ ] Line length is 45-75 characters for body text
136
+ - [ ] Heading/body font pairing is intentional
137
+ - [ ] No more than 3 font weights in active use
138
+
139
+ ### Color
140
+ - [ ] Palette has 2 or fewer primary/accent colors
141
+ - [ ] Text:background contrast meets WCAG AA (4.5:1 for body, 3:1 for large text)
142
+ - [ ] Color is not the only indicator of state (icons, text, or shape also signal)
143
+ - [ ] Neutral palette has enough range (light bg, medium borders, dark text)
144
+
145
+ ### Spacing & Layout
146
+ - [ ] Spacing follows a consistent scale (4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px)
147
+ - [ ] Related elements are grouped with tighter spacing
148
+ - [ ] Sections have comfortable breathing room
149
+ - [ ] Layout works at mobile, tablet, and desktop widths
150
+
151
+ ### Components
152
+ - [ ] Interactive elements have visible hover/focus states
153
+ - [ ] Buttons have clear hierarchy (primary, secondary, tertiary/ghost)
154
+ - [ ] Form inputs have labels, placeholders are not used as labels
155
+ - [ ] Empty states, loading states, and error states are designed
156
+
157
+ ### Interaction
158
+ - [ ] Transitions are fast (150-200ms) and purposeful
159
+ - [ ] Hover states indicate interactivity without being distracting
160
+ - [ ] Focus indicators are visible for keyboard navigation
161
+ - [ ] Animations don't block user interaction
162
+
163
+ ### Authenticity
164
+ - [ ] Design doesn't match common template/AI patterns listed above
165
+ - [ ] Layout has visual variety (not repeating the same section format)
166
+ - [ ] Decoration (if any) serves a purpose
167
+ - [ ] The design reflects the project's unique personality
package/src/cli/index.ts CHANGED
@@ -18,7 +18,7 @@ const program = new Command();
18
18
  program
19
19
  .name('prompter')
20
20
  .description('Enhance prompts directly in your AI coding workflow')
21
- .version('0.8.0');
21
+ .version('0.8.2');
22
22
 
23
23
  program
24
24
  .command('init')