@ryuenn3123/agentic-senior-core 6.16.6 → 6.17.0
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.
- package/.agents/plugins/agentic-senior-core/.codex-plugin/plugin.json +1 -1
- package/.agents/plugins/agentic-senior-core/commands/asc-develop.md +1 -1
- package/.agents/plugins/agentic-senior-core/commands/asc-develop.toml +2 -3
- package/.agents/plugins/agentic-senior-core/commands/asc-test.md +1 -2
- package/.agents/plugins/agentic-senior-core/commands/asc-test.toml +2 -3
- package/.agents/plugins/agentic-senior-core/commands/asc-ui.md +1 -1
- package/.agents/plugins/agentic-senior-core/commands/asc-ui.toml +2 -3
- package/.agents/plugins/agentic-senior-core/hooks/lib/known-ui-slop-patterns.json +5 -0
- package/.agents/plugins/agentic-senior-core/hooks/post-edit-enforce.js +70 -9
- package/.agents/plugins/agentic-senior-core/hooks/stop-verify-gate.js +148 -0
- package/.agents/plugins/agentic-senior-core/hooks.json +7 -0
- package/.agents/plugins/agentic-senior-core/plugin.json +1 -1
- package/.agents/plugins/agentic-senior-core/skills/asc/SKILL.md +7 -6
- package/.agents/plugins/agentic-senior-core/skills/asc/references/writing-skills.md +15 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-develop/SKILL.md +43 -58
- package/.agents/plugins/agentic-senior-core/skills/asc-develop/references/execution-plans.md +43 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-develop/references/subagent-orchestration.md +55 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-test/SKILL.md +3 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-test/references/systematic-debugging.md +32 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/SKILL.md +42 -82
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/data-to-structure.md +96 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/responsive-and-copy.md +32 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/states-and-a11y.md +38 -0
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
- package/plugin.yaml +1 -1
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/accessibility.md +0 -102
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/copy-i18n.md +0 -167
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/browser-surfaces.md +0 -69
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/color-surfaces.md +0 -81
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/composition-patterns.md +0 -299
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/motion.md +0 -55
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/themes-catalog.md +0 -199
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/craft/typography.md +0 -54
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/divergence.md +0 -168
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/mobile-responsive.md +0 -115
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/experience.md +0 -31
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/genre-calibration.md +0 -93
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/operate.md +0 -83
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/persuade.md +0 -109
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/read.md +0 -47
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/redesign-audit.md +0 -89
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/reflexes.md +0 -59
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/states-feedback.md +0 -148
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-attio-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-attio.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-cal-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-cal.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-clerk-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-clerk.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-dub-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-dub.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-linear-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-linear.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-marketplace-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-marketplace.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-mintlify-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-mintlify.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-raycast-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-raycast.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-resend-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-resend.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-stripe-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-stripe.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-supabase-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-supabase.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-tldraw-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-tldraw.png +0 -0
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-vercel-dom.json +0 -5
- package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/visuals/real-vercel.png +0 -0
package/.agents/plugins/agentic-senior-core/skills/asc-ui/references/modes/genre-calibration.md
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# Domain Alignment & Visual Posture
|
|
2
|
-
|
|
3
|
-
> **Core Invariant:** The real-world problem domain dictates visual posture, NEVER generic AI trends. A school evaluation system must look like an educational instrument; an accounting app must look like a ledger; only actual developer tools should ever look like a terminal.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. The 4 Target Genres & Aesthetic Contracts
|
|
8
|
-
|
|
9
|
-
Before laying out a single component or proposing a visual design, classify the project into one of four real-world genres:
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌────────────────────────────────────────────────────────────────────────┐
|
|
13
|
-
│ THE 4 REAL-WORLD GENRES │
|
|
14
|
-
├────────────────────────────────────────────────────────────────────────┤
|
|
15
|
-
│ 1. Civic, Institutional & Educational (Gov, School, NGO, Compliance) │
|
|
16
|
-
│ 2. Enterprise & B2B Operational (ERP, CRM, Accounting, Inventory) │
|
|
17
|
-
│ 3. Commercial SaaS & Conversion (Public Landing, Pricing, Product) │
|
|
18
|
-
│ 4. Developer Tools & Infrastructure (SDKs, CLIs, Observability, APIs) │
|
|
19
|
-
└────────────────────────────────────────────────────────────────────────┘
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
### Genre 1: Civic, Institutional & Educational
|
|
23
|
-
*Examples: Evaluation systems, accreditation portals, public services, municipal registries, educational instruments.*
|
|
24
|
-
|
|
25
|
-
- **Visual Tone:** Dignified, calm, accessible, structured, and trustworthy.
|
|
26
|
-
- **Surface & Palette:** Clean neutral ground (pure white or soft stone background), crisp 1px borders (`border-border`), high-contrast dark foreground text, semantic status pills (e.g. emerald for verified, amber for needs revision, slate for pending).
|
|
27
|
-
- **Live Visual Benchmarks:** Inspect `references/visuals/real-clerk.png` (clean single-line inputs and bounded tabs) and `references/visuals/real-cal.png` (scheduling layout, calm typography, and status indicators).
|
|
28
|
-
- **Core Components:**
|
|
29
|
-
- Clear evaluation tables with explicit weight/point columns.
|
|
30
|
-
- Category assessment cards showing actual scores vs targets.
|
|
31
|
-
- Step progress indicators for verification workflows.
|
|
32
|
-
- Summary scorecard with clear totals and action buttons.
|
|
33
|
-
- **ABSOLUTE PROHIBITIONS (Second-Order Slop):**
|
|
34
|
-
- **NO Terminal / CLI Cosplay:** Never put evaluation data inside a faux terminal, command prompt window, or ASCII box.
|
|
35
|
-
- **NO ASCII Art or Pseudo-Radars:** Never draw ASCII charts (`/\`, `[■■■□□]`, `[2026]`). Use semantic progress bars (`<progress>` or standard div progress) and proper tabular rows.
|
|
36
|
-
- **NO Dark Cyberpunk Mode:** Never force dark mode or neon glow on institutional workflows.
|
|
37
|
-
- **NO Jargon Injections:** Never label an assessment tool with pseudo-sci-fi phrases ("telemetry console", "evaluation engine", "neural scanner", "quantum monitor"). Always use the project's genuine domain terminology.
|
|
38
|
-
|
|
39
|
-
---
|
|
40
|
-
|
|
41
|
-
### Genre 2: Enterprise & B2B Operational
|
|
42
|
-
*Examples: Internal operations, HR portals, supply chain management, financial reporting.*
|
|
43
|
-
|
|
44
|
-
- **Visual Tone:** Compact, data-dense, predictable, and keyboard-efficient.
|
|
45
|
-
- **Surface & Palette:** Neutral surfaces, subtle divider lines, minimal elevation shadows (flat or `shadow-sm`), clear focus rings.
|
|
46
|
-
- **Live Visual Benchmarks:** Inspect `references/visuals/real-attio.png` (windowed desktop console, search toolbar with `⌘K`, multi-filter table density) and `references/visuals/real-dub.png` (embedded dashboard stage, large bold KPI metrics, tabular data).
|
|
47
|
-
- **Core Components:**
|
|
48
|
-
- Data tables with sticky headers, sortable columns, and filter bars.
|
|
49
|
-
- Master-detail side rails or drawers for drilling into row details.
|
|
50
|
-
- Monospace only for aligned financial values (`font-mono tabular-nums`).
|
|
51
|
-
- **ABSOLUTE PROHIBITIONS:**
|
|
52
|
-
- **NO Misplaced Heroes:** Never place giant marketing hero sections, splash banners, or promotional copywriting inside an operational dashboard.
|
|
53
|
-
- **NO Decorative Metric Clutter:** Every stat card must correspond to an actual query or measurable KPI. Omit generic "Welcome back, User!" filler.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
### Genre 3: Commercial SaaS & Conversion
|
|
58
|
-
*Examples: Marketing landing pages, product launch pages, pricing tiers.*
|
|
59
|
-
|
|
60
|
-
- **Visual Tone:** Sharp, decisive, persuasive, authentic conviction.
|
|
61
|
-
- **Surface & Palette:** Generative typographic scale contrast ($Display \ge 3.5\times Body$), tight leading (`leading-[1.05]`), full-bleed background anchor, authentic product screenshots or functional interactive calculators.
|
|
62
|
-
- **Live Visual Benchmarks:** Inspect `references/visuals/real-stripe.png` (flowing visual authority and dual CTA row), `references/visuals/real-vercel.png` (high-contrast brand stage and monochrome logo proof), and `references/visuals/real-marketplace.png` (sidebar filters and catalog cards).
|
|
63
|
-
- **ABSOLUTE PROHIBITIONS:**
|
|
64
|
-
- **NO Cliché Gradients:** Saturated purple-to-indigo or cyan-to-violet linear gradients.
|
|
65
|
-
- **NO Symmetrical 3-Card Grid:** Identical cards with Lucide icons in pastel rounded squares.
|
|
66
|
-
- **NO Fabricated Proof:** Fake partner logos or manufactured customer testimonials.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
### Genre 4: Developer Tools & Infrastructure
|
|
71
|
-
*Examples: CLI tools, API documentation, log viewers, query consoles.*
|
|
72
|
-
|
|
73
|
-
- **Visual Tone:** High technical precision, compact syntax highlighting, dark/slate neutral grounding or clean technical whiteprint.
|
|
74
|
-
- **Live Visual Benchmarks:** Inspect `references/visuals/real-resend.png` (dark editorial and typography contrast), `references/visuals/real-supabase.png` (asymmetric hero split and capability cards), `references/visuals/real-raycast.png` (command center launcher), `references/visuals/real-mintlify.png` (dual-rail API docs), `references/visuals/real-linear.png` (disciplined whitespace), and `references/visuals/real-tldraw.png` (receding chrome canvas).
|
|
75
|
-
- **Core Components:** Copyable command blocks, real interactive code playgrounds, keyboard shortcut prompts.
|
|
76
|
-
- **ABSOLUTE RULE:** This developer aesthetic is **RESERVED EXCLUSIVELY FOR DEVELOPER PRODUCTS**. Never leak terminal conventions into Genre 1, 2, or 3.
|
|
77
|
-
|
|
78
|
-
### Specialized Real-World Sub-Domains (Mapped in `craft/themes-catalog.md`)
|
|
79
|
-
When working in Healthcare, Physical Commerce/Hospitality, Editorial/EdTech, or Industrial/Field Logistics, select their dedicated domain pair in `references/craft/themes-catalog.md` (`Pharmacy Calm` / `Clinical Precision`, `Atelier Gallery` / `Kinetic Grid`, `Studio Proof` / `Botanical Field`, `Formwork Concrete` / `Meridian Survey`) rather than flattening them into generic corporate SaaS.
|
|
80
|
-
|
|
81
|
-
---
|
|
82
|
-
|
|
83
|
-
## 2. Purpose-Driven Component Gate (Zero Unearned Widgets)
|
|
84
|
-
|
|
85
|
-
Every component, widget, badge, or section must pass the Purpose-Gate:
|
|
86
|
-
|
|
87
|
-
> **The Purpose-Gate Test:**
|
|
88
|
-
> *"What concrete user decision or task does this element directly enable?"*
|
|
89
|
-
|
|
90
|
-
1. If the element exists solely to "look high-tech", "fill empty space", or "make the page look interactive" without real underlying data $\to$ **DELETE IT**.
|
|
91
|
-
2. Never invent simulated consoles, fake real-time feeds, or unprompted sliders.
|
|
92
|
-
3. If the user asks for an evaluation summary, provide clear, functional assessment cards and tables—never decorative cosplay.
|
|
93
|
-
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# Surface Mode: Operate (Productivity & Task Execution)
|
|
2
|
-
|
|
3
|
-
Use for: Dashboards, data grids, admin consoles, editors, settings, financial ledgers, logistics tools, and developer tools.
|
|
4
|
-
|
|
5
|
-
> **Core Principle:** The visitor completes a task. Scanability, dense data alignment, low cognitive friction, and native expectations outrank emotional expression. Brand identity lives in the precision of micro-details, not loud decorative containers.
|
|
6
|
-
|
|
7
|
-
> **Visual Reference Benchmarks:**
|
|
8
|
-
> - CRM & Relational Operations: `references/visuals/real-attio.png` (`real-attio-dom.json`)
|
|
9
|
-
> - Analytics & Telemetry Dashboards: `references/visuals/real-dub.png` (`real-dub-dom.json`)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 1. Information Density & Layout Geometry
|
|
14
|
-
|
|
15
|
-
- **Two-Pane Master-Detail Canvas:**
|
|
16
|
-
- Fixed-width contextual left rail (240px–280px) for navigation or entity selection.
|
|
17
|
-
- Fluid, high-density right canvas for inspection, editing, and execution.
|
|
18
|
-
- Breadcrumb trails with root-to-leaf path (`Projects / Acme / Billing`).
|
|
19
|
-
- **Dense Data Matrix (Tables):**
|
|
20
|
-
- Table headers must be `sticky top-0` with opaque background and hairline bottom border.
|
|
21
|
-
- Compact vertical padding: `py-2` to `py-2.5` (row height 36px–40px).
|
|
22
|
-
- Hover feedback: `hover:bg-muted/40` across the entire row.
|
|
23
|
-
- Text alignment rule: Left-align text strings, right-align numeric figures and monetary amounts, center status chips and icon actions.
|
|
24
|
-
- Numeric values must use `tabular-nums` for vertical column alignment.
|
|
25
|
-
- **Progressive Disclosure over Intrusive Modals:**
|
|
26
|
-
- Avoid popping modals for inline edits or sub-entity creation. Use expandable rows, sliding side sheets (drawers), or inline input switches.
|
|
27
|
-
- Reserve dialogs strictly for destructive confirmations (delete, revoke) or complex isolated workflows (import wizard).
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## 2. Interactive Controls & Action Semantics
|
|
32
|
-
|
|
33
|
-
- **Button Heights & Hierarchy:**
|
|
34
|
-
- Primary button: `h-8` or `h-9` (32px–36px), solid semantic token (`bg-primary text-primary-foreground`).
|
|
35
|
-
- Secondary button: `h-8` or `h-9`, outline or ghost (`border border-input bg-background hover:bg-muted`).
|
|
36
|
-
- Icon-only buttons: Strict 1:1 aspect ratio (`h-8 w-8`), padded to meet the 44x44px touch target on touch devices.
|
|
37
|
-
- **Keyboard Affordances:**
|
|
38
|
-
- Display keyboard shortcuts next to menu items and tooltips (`⌘K`, `Esc`, `↵`).
|
|
39
|
-
- Full keyboard tabbing through tables and forms without trapped focus.
|
|
40
|
-
- **Inline Filter Bars:**
|
|
41
|
-
- Place search inputs, filter dropdowns, and date range pickers in a cohesive horizontal toolbar directly above data grids.
|
|
42
|
-
- Show active filter count chips with single-click dismissal (`Active (3) [×]`).
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## 3. Status Badges & Telemetry
|
|
47
|
-
|
|
48
|
-
- **Semantic Indicator Pattern:**
|
|
49
|
-
- Always pair a color with a text label or icon (never rely on color alone).
|
|
50
|
-
- Use subtle tinted badge backgrounds with high-contrast text:
|
|
51
|
-
- Success: `bg-emerald-500/10 text-emerald-700 dark:text-emerald-400`
|
|
52
|
-
- Warning: `bg-amber-500/10 text-amber-700 dark:text-amber-400`
|
|
53
|
-
- Danger: `bg-rose-500/10 text-rose-700 dark:text-rose-400`
|
|
54
|
-
- Neutral/Inactive: `bg-muted text-muted-foreground`
|
|
55
|
-
- **Zero Decorative Halos:**
|
|
56
|
-
- Never wrap status dots or cards in glowing radial blurs (`shadow-[0_0_12px_#10b981]`). Keep indicators solid and functional.
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 4. Inspection & Audit Finding Rows
|
|
61
|
-
|
|
62
|
-
- **Interactive Row Contract:**
|
|
63
|
-
- Finding rows, audit line items, and checklist items must never be rendered as dead, static text blocks.
|
|
64
|
-
- Every finding row (e.g. `Finding #1: Physical document pending verification`) must provide:
|
|
65
|
-
1. **Primary Action Affordance:** Explicit inline trigger button (e.g. `Review File`, `Request Details`, or expandable chevron).
|
|
66
|
-
2. **Attachment Badge:** File type badge (`PDF`, `XLSX`), byte size, and upload timestamp.
|
|
67
|
-
3. **Status Pill:** High-contrast semantic pill (`Needs Attention`, `Pending Confirmation`, `Verified`).
|
|
68
|
-
4. **Hover State:** `hover:bg-muted/40 transition-colors` across the entire row bounding box.
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
## 5. Dual Navigation Patterns (Filters vs Lifecycles)
|
|
73
|
-
|
|
74
|
-
- **Separation of Mental Models:**
|
|
75
|
-
- **Horizontal Tabs**: View-Port Filter Lenses (switching data views, e.g. *Overview*, *Domain Criteria*, *Findings*, *History*). These change what information is rendered on the stage.
|
|
76
|
-
- **Vertical Rail**: Immutable Lifecycle Progression (e.g. *1. Upload Document $\to$ 2. Verify $\to$ 3. Assess $\to$ 4. Confirm $\to$ 5. Summary*). This reflects where the entity is in its operational state.
|
|
77
|
-
- **Accenting Active Lifecycle Step:**
|
|
78
|
-
- Never let the current active step in the lifecycle rail look identical to future unstarted steps.
|
|
79
|
-
- Active step: highlighted with high-contrast accent ring or filled circle (`bg-primary text-primary-foreground`) with an active descriptor ("Active verification phase").
|
|
80
|
-
- Completed steps: clear muted checks (`text-emerald-600` with subtle strike or timestamp).
|
|
81
|
-
- Pending steps: muted borders (`border-border text-muted-foreground`).
|
|
82
|
-
|
|
83
|
-
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
# Surface Mode: Persuade (Marketing, Landing & Conversion)
|
|
2
|
-
|
|
3
|
-
Use for: Landing pages, marketing websites, product launch pages, and pricing screens.
|
|
4
|
-
|
|
5
|
-
> **Core Principle:** The visitor decides and acts; design is the product. Earn attention and conversion with bold, authentic conviction. Ambition is expressed through scale, typographic contrast, and proof of reality—never through fluffy filler or generic card stacks.
|
|
6
|
-
|
|
7
|
-
> **Visual Reference Benchmarks:**
|
|
8
|
-
> - High-Impact Brand Stage: `references/visuals/real-vercel.png` (`real-vercel-dom.json`)
|
|
9
|
-
> - Financial Infrastructure / Multi-Tier Flow: `references/visuals/real-stripe.png` (`real-stripe-dom.json`)
|
|
10
|
-
> - Editorial Developer Infrastructure: `references/visuals/real-resend.png` (`real-resend-dom.json`)
|
|
11
|
-
> - Storefront / Catalog Filter Stage: `references/visuals/real-marketplace.png` (`real-marketplace-dom.json`)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 1. The Viewport Budget & The 80-Word Rule
|
|
16
|
-
|
|
17
|
-
- **The Above-the-Fold Law:**
|
|
18
|
-
- At a standard desktop viewport (1280x800), the hero headline, one concise supporting sentence, and the primary call-to-action **MUST** be fully visible without scrolling.
|
|
19
|
-
- Keep visible text in the first viewport under **80 words**. Fullness comes from scale, whitespace, and high-fidelity product imagery, never from extra paragraphs.
|
|
20
|
-
- **Hero Posture Options:**
|
|
21
|
-
1. *Stage:* Headline and CTA anchor the left 5–7 columns; a live interactive widget or full-fidelity product preview occupies the right 5–7 columns.
|
|
22
|
-
2. *Split:* Balanced 50/50 composition with high-contrast narrative on one side and direct visual evidence on the other.
|
|
23
|
-
3. *Product-Led:* The live product interface or interactive sandbox leads the canvas; the headline and navigation sit tightly framed around it.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 2. Structural Layout Blueprints (4 Compositions)
|
|
28
|
-
|
|
29
|
-
When building or redesigning a Persuade surface, select a deliberate structural layout matching the product's real content:
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
┌────────────────────────────────────────────────────────────────────────┐
|
|
33
|
-
│ THE 4 STRUCTURAL BLUEPRINTS │
|
|
34
|
-
├────────────────────────────────────────────────────────────────────────┤
|
|
35
|
-
│ 1. Asymmetric Stage (65/35 Split): Left-anchored heavy typography │
|
|
36
|
-
│ offset against an interactive preview, ROI calculator, or live UI. │
|
|
37
|
-
│ 2. The Monolith Ledger: Single-column dense reading measure with │
|
|
38
|
-
│ full-bleed horizontal rows, hairline dividers, and deep ink. │
|
|
39
|
-
│ 3. Product-Led Canvas: Live application interface or workflow canvas │
|
|
40
|
-
│ dominates the first viewport; copy recedes to tightly frame it. │
|
|
41
|
-
│ 4. Kinetic Proof Stream: Alternating proof blocks driven by verifiable │
|
|
42
|
-
│ benchmarks, architectural diagrams, and real data payloads. │
|
|
43
|
-
└────────────────────────────────────────────────────────────────────────┘
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
- **Blueprint Selection:**
|
|
47
|
-
- If real software interface exists $\to$ **Blueprint 3 (Product-Led Canvas)**.
|
|
48
|
-
- If quantitative savings or enterprise value proposition $\to$ **Blueprint 1 (Asymmetric Stage)**.
|
|
49
|
-
- If technical documentation, whitepaper, or architectural manifesto $\to$ **Blueprint 2 (The Monolith Ledger)**.
|
|
50
|
-
- If performance benchmarks, protocol comparisons, or telemetry proof $\to$ **Blueprint 4 (Kinetic Proof Stream)**.
|
|
51
|
-
|
|
52
|
-
### Structural Blueprints (Enforced DOM Geometries)
|
|
53
|
-
|
|
54
|
-
#### Blueprint 1: Asymmetric Stage (65/35 Split)
|
|
55
|
-
- **Container:** `grid grid-cols-1 lg:grid-cols-12 gap-12 items-center`
|
|
56
|
-
- **Left Lead (7 cols):** `lg:col-span-7 space-y-6 text-left`
|
|
57
|
-
- Display headline: `text-5xl lg:text-7xl font-bold tracking-tight leading-[1.05]`
|
|
58
|
-
- Subtitle: `text-lg text-muted-foreground max-w-xl`
|
|
59
|
-
- Actions: `flex flex-wrap items-center gap-4 pt-2`
|
|
60
|
-
- **Right Artifact (5 cols):** `lg:col-span-5`
|
|
61
|
-
- Authentic artifact, interactive widget, or live score/ROI card: `rounded-2xl border border-border/80 bg-card p-6 shadow-sm`
|
|
62
|
-
- Zero equal-weight card grids below.
|
|
63
|
-
|
|
64
|
-
#### Blueprint 2: The Monolith Ledger
|
|
65
|
-
- **Container:** `max-w-4xl mx-auto px-6 py-16 divide-y divide-border/60`
|
|
66
|
-
- **Tabular Rows:** Each entity or program is a horizontal row: `py-8 grid grid-cols-1 md:grid-cols-12 gap-6 items-baseline`
|
|
67
|
-
- Category / Date: `md:col-span-3 text-xs font-semibold tracking-wider uppercase text-muted-foreground`
|
|
68
|
-
- Heading & Data: `md:col-span-5 text-xl font-bold text-foreground`
|
|
69
|
-
- Detail & Action: `md:col-span-4 text-sm text-muted-foreground`
|
|
70
|
-
|
|
71
|
-
#### Blueprint 3: Product-Led Canvas
|
|
72
|
-
- **Container:** `flex flex-col items-center text-center max-w-6xl mx-auto px-6 pt-16 pb-20`
|
|
73
|
-
- **Compact Hero Frame:** `max-w-2xl space-y-4 mb-10`
|
|
74
|
-
- Headline: `text-4xl sm:text-6xl font-extrabold tracking-tight`
|
|
75
|
-
- 1-sentence value claim + 1 primary action.
|
|
76
|
-
- **Hero Canvas (70% Viewport Lead):** `w-full rounded-2xl border border-border/80 bg-card p-3 shadow-xl`
|
|
77
|
-
- Real interface fragment or live demo canvas dominating the first viewport. Respect project theme tokens; never force artificial dark backgrounds or terminal frames unless the target product is an actual CLI/developer tool.
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## 3. Composition Variety & Content Rhythm
|
|
82
|
-
|
|
83
|
-
- **Banned Symmetrical 3-Card Rows:**
|
|
84
|
-
- Never default to a 3-column row where every item has identical dimensions, a generic icon box, a bold title, and two lines of gray text.
|
|
85
|
-
- Instead, vary composition according to content weight:
|
|
86
|
-
- *Flagship Feature:* Full-width container or asymmetric 8/4 split showing the primary capability in action.
|
|
87
|
-
- *Supporting Capabilities:* Compact 2-column checklist or a structured comparison table.
|
|
88
|
-
- **Anti-Spreadsheet Wireframe on Public Landing Pages:**
|
|
89
|
-
- Do NOT convert a public home or landing page into a 100+ row raw data dump. Provide structured category overviews with focused preview panels (see `references/craft/composition-patterns.md`).
|
|
90
|
-
- Do NOT wrap human directories or committees into spreadsheet border matrices (`border-t border-b border-l border-r`); use clean spacing, authentic badges, and natural typographic flow.
|
|
91
|
-
- **The Focal Signature Element:**
|
|
92
|
-
- Every Persuade surface may feature at most **one memorable focal element** on the first screen that directly reflects the product domain:
|
|
93
|
-
- An interactive calculator or estimator that recalculates results in real time.
|
|
94
|
-
- An unedited, high-resolution product screenshot showing real user data.
|
|
95
|
-
- A live interactive UI fragment (e.g., an assessment scorecard preview for educational tools, a filterable ledger row for accounting tools).
|
|
96
|
-
- **No Artificial Terminals:** Never inject terminal prompts, ASCII art, or pseudo-telemetry consoles into non-developer products.
|
|
97
|
-
- A giant counter of marks or animated numbers is a decorative reflex, not a signature.
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 4. Material Honesty & Proof of Reality
|
|
102
|
-
|
|
103
|
-
- **Zero Fabricated Evidence:**
|
|
104
|
-
- Never invent customer quotes, fake partner logos ("Acme Corp, Pied Piper"), or fabricated performance metrics ("10,000+ teams trust us").
|
|
105
|
-
- If quotes or logos are not provided in the project brief, leave them out. A page built around genuine product capabilities is far more persuasive than one filled with synthetic social proof.
|
|
106
|
-
- **Action Semantics:**
|
|
107
|
-
- Primary CTA must use an imperative verb + noun: `Start Free Trial`, `Download CLI`, `Book Demo` (never generic `Submit` or `Get Started` without context).
|
|
108
|
-
- Limit the header to at most 1 primary action button and 1 ghost link.
|
|
109
|
-
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# Surface Mode: Read (Documentation, Knowledge & Articles)
|
|
2
|
-
|
|
3
|
-
Use for: Documentation, API references, technical blogs, guides, knowledge bases, and changelogs.
|
|
4
|
-
|
|
5
|
-
> **Core Principle:** The visitor understands something. Structure for sustained comprehension, visual calm, and rapid scanning. The reading experience must minimize eye fatigue while providing effortless navigation through dense hierarchies.
|
|
6
|
-
|
|
7
|
-
> **Visual Reference Benchmarks:**
|
|
8
|
-
> - Documentation & API Reference: `references/visuals/real-mintlify.png` (`real-mintlify-dom.json`)
|
|
9
|
-
> - Product Manifesto & Long-Form Craft: `references/visuals/real-linear.png` (`real-linear-dom.json`)
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
## 1. Ergonomic Reading Measure & Spacing
|
|
14
|
-
|
|
15
|
-
- **Optimal Line Measure:**
|
|
16
|
-
- Cap prose line length strictly at **65–75 characters per line** (`max-w-prose` / ~680px). Unbounded line lengths cause cognitive fatigue and line-tracking errors.
|
|
17
|
-
- Generous body line height: `leading-relaxed` (1.625) to `leading-loose` (1.75).
|
|
18
|
-
- Body font size: 16px minimum (`text-base`). Never drop body prose below 16px on desktop.
|
|
19
|
-
- **Asymmetric Vertical Rhythm:**
|
|
20
|
-
- Headings must have noticeably more breathing room above than below:
|
|
21
|
-
- `H2`: `mt-10` to `mt-12`, `mb-3` to `mb-4`.
|
|
22
|
-
- `H3`: `mt-6` to `mt-8`, `mb-2`.
|
|
23
|
-
- This anchors the heading visually to the paragraph it introduces, preventing it from floating ambiguously between sections.
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 2. Navigation & Wayfinding
|
|
28
|
-
|
|
29
|
-
- **Dual-Rail Navigation:**
|
|
30
|
-
- *Left Sidebar:* Hierarchical navigation tree (collapsible categories, active section indicator with bold text and subtle left border or background pill).
|
|
31
|
-
- *Right Rail:* Table of contents ("On this page") highlighting current scroll position via `IntersectionObserver`.
|
|
32
|
-
- Top breadcrumb path for orientation: `Docs / Authentication / OAuth2 Providers`.
|
|
33
|
-
- **In-Content Anchor Links:**
|
|
34
|
-
- Headings must carry permalink anchor buttons (`#`) visible on hover, allowing users to copy direct section URLs.
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 3. Code Blocks & Callout Discipline
|
|
39
|
-
|
|
40
|
-
- **Code Block Engineering:**
|
|
41
|
-
- Wrap code blocks in dedicated horizontal scroll containers (`overflow-x-auto`) to prevent viewport blowout.
|
|
42
|
-
- Provide a one-click "Copy Code" button with visual feedback (`Copied!`).
|
|
43
|
-
- Monospace font paired with consistent syntax highlighting; never use hardcoded inline style colors.
|
|
44
|
-
- **Callout Hierarchy:**
|
|
45
|
-
- Use GitHub-style or standard alert cards (`[!NOTE]`, `[!TIP]`, `[!WARNING]`, `[!IMPORTANT]`) with subtle background tints and 1px borders.
|
|
46
|
-
- Never nest callouts inside callouts or place 3 consecutive callout boxes in a row.
|
|
47
|
-
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# Structured UI Audit & Redesign Protocols
|
|
2
|
-
|
|
3
|
-
Modifying an existing interface requires clear intent. Audits must provide actionable engineering findings rather than subjective aesthetic commentary.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. Scope Classification: The 3 Redesign Depths
|
|
8
|
-
|
|
9
|
-
Never split the difference into cosmetic polish on a discarded look. Before touching code, explicitly classify the depth of work:
|
|
10
|
-
|
|
11
|
-
| Depth | Scope & Intent | What Stays Intact | What Changes |
|
|
12
|
-
|---|---|---|---|
|
|
13
|
-
| **`polish`** | Resolve bugs, contrast, microcopy, states. | Layout structure, DOM hierarchy, and design system tokens. | Padding rhythm, WCAG AA contrast, missing state quad (empty/error/loading), focus rings, microcopy brevity, lint fixes. |
|
|
14
|
-
| **`restyle`** | Upgrade design system without breaking layout. | Layout grid, component hierarchy, and DOM structure. | Color palette (60-30-10), typographic scale, corner radiuses, elevation shadows, button and input styles. |
|
|
15
|
-
| **`full`** | Total visual and structural overhaul. | Factual content, data bindings (`$variables`, loops), routes, form handlers. | **Spatial geometry, grid ratios, surface posture, and typography.** Treated as fresh build from subject truth. |
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 2. The Decoupled Redesign Protocol (For Full Redesigns)
|
|
20
|
-
|
|
21
|
-
When executing a **Full Redesign** on an existing template or page (`.blade.php`, `.tsx`, `.vue`, `.html`), editing in-place is forbidden because the AI's attention mechanism will anchor to the old DOM structure. Execute this 4-step decoupled sequence:
|
|
22
|
-
|
|
23
|
-
1. **Step 1: Extract Data Contracts & Factual Inventory**
|
|
24
|
-
- Parse the incumbent file and extract all dynamic variables, loops, route helpers, form submission endpoints, and real text/assets into a clean data list.
|
|
25
|
-
- Separate product truth (names, prices, verified claims) from discarded markup.
|
|
26
|
-
2. **Step 2: Isolate / Discard Old Markup**
|
|
27
|
-
- Treat the old layout as an anti-reference. Do not perform incremental class swapping on it.
|
|
28
|
-
3. **Step 3: Author Isolated Prototype / Structural Layout**
|
|
29
|
-
- When building a complex new surface, draft the isolated DOM layout first using 1 of the 4 Structural Postures (`references/modes/persuade.md` or `operate.md`).
|
|
30
|
-
- Use design tokens and realistic sample data.
|
|
31
|
-
- Verify typographic scale ($Display \ge 3.5\times Body$) and full-field spatial grounding before production injection.
|
|
32
|
-
4. **Step 4: Re-inject Data Contracts into Production**
|
|
33
|
-
- Transfer the proven clean geometry into the project file (`welcome.blade.php`, `Page.tsx`).
|
|
34
|
-
- Re-bind the dynamic data loops, Blade/React variables, and event handlers.
|
|
35
|
-
- Confirm project test suite and linters pass cleanly.
|
|
36
|
-
|
|
37
|
-
---
|
|
38
|
-
|
|
39
|
-
## 3. Structured Audit Matrix
|
|
40
|
-
|
|
41
|
-
When auditing an existing interface or PR, generate a structured findings table categorized by severity:
|
|
42
|
-
|
|
43
|
-
| Severity | Definition | Examples |
|
|
44
|
-
|---|---|---|
|
|
45
|
-
| `CRITICAL` | Breaks usability, violates WCAG AA contrast floors, or clips content horizontally. | 2.5:1 text contrast, missing `:focus-visible`, button overflow on mobile, form submission with no pending state. |
|
|
46
|
-
| `MAJOR` | Degrades scannability, lacks essential states, or violates design token consistency. | Missing empty or error states, hardcoded hex colors, generic modal instead of inline drawer, layout shift during load. |
|
|
47
|
-
| `MINOR` | Polish deficiency, verbose marketing copy, or suboptimal rhythm. | Verbose button label ("Click here to save"), slight margin imbalance, decorative character banners in code. |
|
|
48
|
-
|
|
49
|
-
### Audit Output Template
|
|
50
|
-
```markdown
|
|
51
|
-
### UI Audit Findings
|
|
52
|
-
|
|
53
|
-
| Severity | Location / Element | Finding | Root Cause | Concrete Remediation |
|
|
54
|
-
|---|---|---|---|---|
|
|
55
|
-
| CRITICAL | `BillingTable.tsx:42` | Primary CTA lacks focus ring | `outline-none` stripped default ring | Add `focus-visible:ring-2 focus-visible:ring-primary` |
|
|
56
|
-
| MAJOR | `ProjectList.tsx:110` | Empty state shows 4-paragraph essay | Marketing copy inserted into app view | Replace with 1-sentence description + "Create project" CTA |
|
|
57
|
-
| MINOR | `UserProfile.tsx:18` | Button fixed width `w-[120px]` | Rigid dimension causes German overflow | Change to `px-4 min-w-[5rem]` |
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## 4. Systematic Audit Checklist
|
|
63
|
-
|
|
64
|
-
Audit screens systematically against four engineering vectors:
|
|
65
|
-
|
|
66
|
-
### 4.1 Ergonomics & Responsiveness
|
|
67
|
-
- [ ] Render at `375px` width (mobile viewport) and `1280px` (desktop viewport).
|
|
68
|
-
- [ ] Verify zero horizontal scrollbars on mobile (`overflow-x: clip`).
|
|
69
|
-
- [ ] Confirm all touch targets meet minimum $44 \times 44\text{px}$ bounding box.
|
|
70
|
-
- [ ] Verify mobile layout uses `dvh` instead of `vh` to prevent browser chrome clipping.
|
|
71
|
-
|
|
72
|
-
### 4.2 Accessibility & Contrast (WCAG 2.2 AA)
|
|
73
|
-
- [ ] Check normal text against backgrounds ($\ge 4.5:1$).
|
|
74
|
-
- [ ] Check input borders, active toggles, and large headings ($\ge 3:1$).
|
|
75
|
-
- [ ] Cycle through entire screen using `Tab` and `Shift+Tab` with mouse disconnected.
|
|
76
|
-
- [ ] Press `Escape` while dialog/modal is open; verify closure and focus restoration.
|
|
77
|
-
|
|
78
|
-
### 4.3 State Coverage
|
|
79
|
-
- [ ] Inspect loading state: does it use proportional skeletons matching final dimensions?
|
|
80
|
-
- [ ] Inspect empty state: is it actionable with a 1-sentence explanation?
|
|
81
|
-
- [ ] Inspect error state: does it diagnose the issue and provide an inline retry button?
|
|
82
|
-
- [ ] Inspect mutation triggers: do buttons lock and display spinners during network latency?
|
|
83
|
-
|
|
84
|
-
### 4.4 Microcopy & Token Hygiene
|
|
85
|
-
- [ ] Run 50% word reduction sweep across headings and explanatory paragraphs.
|
|
86
|
-
- [ ] Confirm all buttons follow `Verb + Noun` grammar.
|
|
87
|
-
- [ ] Verify zero banned buzzwords (*seamless*, *empower*, *robust*).
|
|
88
|
-
- [ ] Verify zero hardcoded hex codes (`#...`) or arbitrary pixel values in style markup.
|
|
89
|
-
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# Reflexes & Waivable Defaults Catalog
|
|
2
|
-
|
|
3
|
-
Grounded in: Hallmark Reflex Gates and Impeccable Refusal Catalog.
|
|
4
|
-
|
|
5
|
-
> **Definition:** A reflex is an unthinking default that models and junior designers fall into out of habit. Unlike absolute bans (The Floor), reflexes **can be earned** by a specific product brief or technical necessity. However, using a reflex without a deliberate reason is a design defect.
|
|
6
|
-
>
|
|
7
|
-
> **The Waiver Protocol:** When an interface genuinely requires one of these patterns, document the operational rationale in code:
|
|
8
|
-
> ```typescript
|
|
9
|
-
> // ASC-WAIVER: [pattern-id] [concrete operational reason why this default was earned]
|
|
10
|
-
> ```
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## 1. Page Scaffold Reflexes
|
|
15
|
-
|
|
16
|
-
### 1.1 Identical Card Grids (`card-grid-reflex`)
|
|
17
|
-
- **The Reflex:** Defaulting every section to 3 or 4 identical rounded cards with an icon, title, and 2 lines of text.
|
|
18
|
-
- **Why It's a Reflex:** Cards are the lazy container. They flatten information hierarchy, making secondary features look identical in importance to core capabilities.
|
|
19
|
-
- **When Allowed (Waived):** Only when displaying truly homogeneous peer entities (e.g., 3 subscription pricing tiers, or a grid of user avatar cards).
|
|
20
|
-
|
|
21
|
-
### 1.2 The Hero-Metric Template (`hero-metric-reflex`)
|
|
22
|
-
- **The Reflex:** Placing a giant number (e.g. `99.9%`, `10M+`) next to a tiny label as the primary visual hook.
|
|
23
|
-
- **Why It's a Reflex:** Models use giant numbers as a shortcut for visual mass when they have no real product screenshots or narrative.
|
|
24
|
-
- **When Allowed (Waived):** When the core value proposition is fundamentally a mathematical guarantee (e.g., SLA guarantee on an infrastructure status page).
|
|
25
|
-
|
|
26
|
-
### 1.3 Modal Dialogs for Simple Tasks (`modal-reflex`)
|
|
27
|
-
- **The Reflex:** Popping a modal dialog for every sub-task, form, or setting.
|
|
28
|
-
- **Why It's a Reflex:** It isolates the task on a blank canvas so the model doesn't have to design layout coexistence.
|
|
29
|
-
- **When Allowed (Waived):** Only when user action is strictly interruptive, irreversible (destructive account deletion), or requires focused authentication.
|
|
30
|
-
|
|
31
|
-
### 1.4 Dark Mode by Habit (`dark-mode-habit`)
|
|
32
|
-
- **The Reflex:** Making every page dark with indigo accents because it looks "tech".
|
|
33
|
-
- **Why It's a Reflex:** Models over-represent developer tool aesthetics on consumer or business products.
|
|
34
|
-
- **When Allowed (Waived):** When the target user operates in low-light environments (IDE, code editor, video grading, night terminal) or brand guidelines mandate it.
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## 2. Surface & Decoration Reflexes
|
|
39
|
-
|
|
40
|
-
### 2.1 Side-Stripe Colored Borders (`side-stripe-border`)
|
|
41
|
-
- **The Reflex:** Adding `border-l-4 border-blue-500` to random cards, list items, or callouts.
|
|
42
|
-
- **Why It's a Reflex:** A cheap visual crutch to make a plain card look designed without establishing real typography or spacing.
|
|
43
|
-
- **When Allowed (Waived):** High-priority operational system alerts (info/warn/error alert banners).
|
|
44
|
-
|
|
45
|
-
### 2.2 Hard Offset Block Shadows (`hard-offset-shadow`)
|
|
46
|
-
- **The Reflex:** Applying `box-shadow: 4px 4px 0 #000` to standard SaaS components.
|
|
47
|
-
- **Why It's a Reflex:** Adopting a Neo-Brutalist costume on an interface that has no other brutalist attributes.
|
|
48
|
-
- **When Allowed (Waived):** Authentic, cohesive Neo-Brutalist design systems where heavy typography, bold line art, and high contrast coexist throughout.
|
|
49
|
-
|
|
50
|
-
### 2.3 Zero-Offset Colored Glows (`zero-offset-glow`)
|
|
51
|
-
- **The Reflex:** Slapping `shadow-[0_0_20px_rgba(...)]` behind buttons, icons, or cards.
|
|
52
|
-
- **Why It's a Reflex:** Glow is an attention amplifier. Sprayed everywhere, it amplifies nothing and marks the interface as AI-generated.
|
|
53
|
-
- **When Allowed (Waived):** Maximum 1 focal element on a dark entertainment or gaming canvas where glow simulates an actual light source.
|
|
54
|
-
|
|
55
|
-
### 2.4 Monospace Font as Technical Costume (`mono-costume`)
|
|
56
|
-
- **The Reflex:** Using monospace fonts on generic labels, headers, or buttons to simulate a "developer tool" vibe.
|
|
57
|
-
- **Why It's a Reflex:** Monospace has low reading legibility for extended prose.
|
|
58
|
-
- **When Allowed (Waived):** Literal code snippets, terminal commands, hashes, IP addresses, or data matrices requiring vertical character alignment.
|
|
59
|
-
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# Data States & Action Feedback
|
|
2
|
-
|
|
3
|
-
Any view that consumes asynchronous data or triggers mutations must handle every possible state in the component lifecycle. Never design only for the populated happy path.
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## 1. The Four Essential UI States
|
|
8
|
-
|
|
9
|
-
Every data-driven interface exists in one of four states:
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌─────────────┐
|
|
13
|
-
│ 1. LOADING │
|
|
14
|
-
└──────┬──────┘
|
|
15
|
-
│
|
|
16
|
-
┌──────────────┴──────────────┐
|
|
17
|
-
▼ ▼
|
|
18
|
-
┌─────────────┐ ┌─────────────┐
|
|
19
|
-
│ 2. EMPTY │ │ 3. POPULATED│
|
|
20
|
-
└─────────────┘ └─────────────┘
|
|
21
|
-
│ ▲
|
|
22
|
-
│ ┌─────────────┐ │
|
|
23
|
-
└───────►│ 4. ERROR │──────┘ (Retry)
|
|
24
|
-
└─────────────┘
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## 2. State 1: Proportional Loading Skeletons
|
|
30
|
-
|
|
31
|
-
Avoid generic full-screen spinners that cause severe Layout Shift (CLS) when content loads. Skeletons must mimic the exact bounding box and proportions of the expected data.
|
|
32
|
-
|
|
33
|
-
```html
|
|
34
|
-
<!-- Table Skeleton: Matches row height and column widths -->
|
|
35
|
-
<div class="space-y-3 animate-pulse" aria-busy="true" aria-label="Loading audit logs">
|
|
36
|
-
<div class="h-8 bg-muted rounded w-full"></div>
|
|
37
|
-
<div class="h-12 bg-muted/60 rounded w-full"></div>
|
|
38
|
-
<div class="h-12 bg-muted/60 rounded w-full"></div>
|
|
39
|
-
<div class="h-12 bg-muted/60 rounded w-full"></div>
|
|
40
|
-
</div>
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
- Match font size heights: `h-4` for body lines, `h-6` for headings, `h-10` for action buttons.
|
|
44
|
-
- Constrain width variance: alternate `w-3/4`, `w-1/2`, `w-5/6` on multi-line text to mirror natural paragraph shapes.
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## 3. State 2: Concise Actionable Empty States
|
|
49
|
-
|
|
50
|
-
Empty states occur when a query returns zero records or an entity has not been initialized.
|
|
51
|
-
|
|
52
|
-
- **Banned:** Flowery essay copy ("It looks like you haven't created any projects yet! Don't worry, getting started is easy and fun...").
|
|
53
|
-
- **Enforced:** 1-sentence factual description followed by a primary creation trigger:
|
|
54
|
-
|
|
55
|
-
```html
|
|
56
|
-
<div class="py-12 px-4 text-center rounded-lg border border-dashed border-border">
|
|
57
|
-
<div class="mx-auto w-10 h-10 rounded-full bg-muted flex items-center justify-center text-muted-foreground mb-3">
|
|
58
|
-
<svg class="w-5 h-5" aria-hidden="true">...</svg>
|
|
59
|
-
</div>
|
|
60
|
-
<h3 class="text-sm font-semibold text-foreground">No webhooks configured</h3>
|
|
61
|
-
<p class="mt-1 text-xs text-muted-foreground max-w-sm mx-auto">
|
|
62
|
-
Endpoints will receive real-time HTTP POST notifications when events occur.
|
|
63
|
-
</p>
|
|
64
|
-
<div class="mt-4">
|
|
65
|
-
<button type="button" class="px-3 py-1.5 bg-primary text-primary-foreground text-xs font-medium rounded-md">
|
|
66
|
-
Create webhook endpoint
|
|
67
|
-
</button>
|
|
68
|
-
</div>
|
|
69
|
-
</div>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## 4. State 3: Error States with Inline Retry
|
|
75
|
-
|
|
76
|
-
Operational errors must be surfaced with actionable context. Never swallow errors silently or display opaque error codes without a recovery path.
|
|
77
|
-
|
|
78
|
-
```html
|
|
79
|
-
<div class="p-4 rounded-lg border border-destructive/30 bg-destructive/5 text-foreground flex items-start gap-3">
|
|
80
|
-
<svg class="w-5 h-5 text-destructive shrink-0 mt-0.5" aria-hidden="true">...</svg>
|
|
81
|
-
<div class="flex-1 text-xs space-y-1">
|
|
82
|
-
<p class="font-medium text-destructive">Failed to load deployment metrics</p>
|
|
83
|
-
<p class="text-muted-foreground">The telemetry service timed out after 5,000ms. Check network connection or retry.</p>
|
|
84
|
-
<div class="pt-2">
|
|
85
|
-
<button type="button" class="px-2.5 py-1 bg-background border border-border text-foreground rounded text-xs hover:bg-muted font-medium">
|
|
86
|
-
Retry query
|
|
87
|
-
</button>
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
</div>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
---
|
|
94
|
-
|
|
95
|
-
## 5. Mutation Action Feedback: The Pending Lock
|
|
96
|
-
|
|
97
|
-
Mutations (create, update, delete, trigger) must give instantaneous feedback to prevent race conditions and double-submission.
|
|
98
|
-
|
|
99
|
-
```tsx
|
|
100
|
-
// React example for mutation feedback
|
|
101
|
-
function DeployButton({ onDeploy }: { onDeploy: () => Promise<void> }) {
|
|
102
|
-
const [isPending, setIsPending] = useState(false);
|
|
103
|
-
|
|
104
|
-
const handleClick = async () => {
|
|
105
|
-
if (isPending) return;
|
|
106
|
-
setIsPending(true);
|
|
107
|
-
try {
|
|
108
|
-
await onDeploy();
|
|
109
|
-
toast.success("Deployment queued successfully");
|
|
110
|
-
} catch (err) {
|
|
111
|
-
toast.error(err instanceof Error ? err.message : "Deployment failed");
|
|
112
|
-
} finally {
|
|
113
|
-
setIsPending(false);
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
|
|
117
|
-
return (
|
|
118
|
-
<button
|
|
119
|
-
type="button"
|
|
120
|
-
disabled={isPending}
|
|
121
|
-
onClick={handleClick}
|
|
122
|
-
className="inline-flex items-center gap-2 px-3 py-2 bg-primary text-primary-foreground text-sm font-medium rounded-md disabled:opacity-50 disabled:cursor-not-allowed"
|
|
123
|
-
>
|
|
124
|
-
{isPending && <Spinner className="w-4 h-4 animate-spin" />}
|
|
125
|
-
<span>{isPending ? "Queuing deployment..." : "Deploy to production"}</span>
|
|
126
|
-
</button>
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
## 6. Localized Error Boundaries
|
|
134
|
-
|
|
135
|
-
Never allow an error in an auxiliary widget (e.g. recent activity feed, analytics graph) to crash the entire application shell or parent form.
|
|
136
|
-
|
|
137
|
-
Wrap distinct layout sections in localized error boundaries:
|
|
138
|
-
```tsx
|
|
139
|
-
<AppShell>
|
|
140
|
-
<ErrorBoundary fallback={<TelemetryFallbackError />}>
|
|
141
|
-
<RealtimeTelemetryChart />
|
|
142
|
-
</ErrorBoundary>
|
|
143
|
-
<ErrorBoundary fallback={<TableFallbackError />}>
|
|
144
|
-
<DeploymentsTable />
|
|
145
|
-
</ErrorBoundary>
|
|
146
|
-
</AppShell>
|
|
147
|
-
```
|
|
148
|
-
|