Borrowing it
Nothing to install: this file belongs to dev-lou/PixelPilot. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/dev-lou/PixelPilot/main/vscode/.github/instructions/uiux-states.instructions.mdgit clone --depth 1 https://github.com/dev-lou/PixelPilotWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/dev-lou/pixelpilot/uiux-states)<a href="https://agentmods.dev/instructions/dev-lou/pixelpilot/uiux-states"><img src="https://agentmods.dev/badge/instructions/dev-lou/pixelpilot/uiux-states/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/dev-lou/pixelpilot/uiux-states"><img src="https://agentmods.dev/badge/instructions/dev-lou/pixelpilot/uiux-states.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.08516 | $0.08516 |
| Opus 5.5 | $0.03406 | $0.03406 |
| Sonnet 5.5 | $0.01703 | $0.01703 |
| Haiku 4.5 | $0.00852 | $0.00852 |
Grade A, and why
PixelPilot uiux-states.instructions.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 1,014 lines — stays where its author put it; the contents beside it link to each section on GitHub.
UI/UX Component States 2026
Every UI component has states. This file defines ALL 10 states every component must handle — from Figma variables to CSS to JS — per design language. Missing states = broken UX. This is what separates AI slop from real products.
THE 10 STATES EVERY COMPONENT MUST HANDLE
1. Default — resting state
2. Hover — mouse/pointer over
3. Focus — keyboard/tab navigation
4. Active — being pressed / in-progress click
5. Loading — async action pending
6. Disabled — not interactable
7. Error — validation failed / system error
8. Success — action confirmed / validated
9. Empty — no data yet (tables, feeds, search)
10. Busy — container is updating (live feed, real-time data)
Optional (context-dependent):
11. Selected — chosen from a list
12. Dragging — being dragged (sortable lists)
13. Skeleton — pre-data placeholder (see uiux-motion.md)
STATE 10 — BUSY (Live Updating Containers)
Rule: When a container or section is actively updating (live feeds, real-time dashboards, polling data), use aria-busy="true" and provide visual feedback with reduced opacity and a spinner overlay.
When to Use Busy State
- Live feed is fetching new items
- Dashboard widget is refreshing data
- Chat is receiving streaming response
- Table is filtering/sorting large datasets
- Any container awaiting real-time update
HTML Structure
<!-- Busy container with aria-busy -->
<div class="live-feed" id="live-feed" aria-busy="true" aria-live="polite">
<div class="live-feed__spinner">
<span class="spinner"></span>
<span class="sr-only">Updating feed...</span>
</div>
<ul class="live-feed__items">
<!-- Feed items -->
</ul>
</div>
CSS Implementation
/* Busy state — reduced opacity + spinner overlay */
[aria-busy="true"] {
position: relative;
pointer-events: none;
}
[aria-busy="true"]::before {
content: '';
position: absolute;
inset: 0;
background: color-mix(in srgb, var(--bg) 60%, transparent);
z-index: 10;
border-radius: inherit;
}
/* Spinner overlay for busy containers */
.live-feed__spinner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 11;
display: none;
}
[aria-busy="true"] .live-feed__spinner {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--space-2);
}
/* Busy state visual feedback */
[aria-busy="true"] > *:not(.live-feed__spinner) {
opacity: 0.4;
filter: blur(1px);
transition: opacity var(--transition-base), filter var(--transition-base);
}
/* Spinner animation */
.spinner {
width: 24px;
height: 24px;
border: 2px solid var(--border);
border-top-color: var(--accent);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
.spinner {
animation: none;
border-top-color: var(--accent);
border-right-color: var(--accent);
}
[aria-busy="true"] > *:not(.live-feed__spinner) {
filter: none;
}
}
/* Per-design-language busy styles */
[data-lang="luxury"] [aria-busy="true"]::before {
background: color-mix(in srgb, var(--bg) 70%, transparent);
}
[data-lang="technical"] [aria-busy="true"]::before {
background: color-mix(in srgb, var(--bg) 80%, transparent);
}
[data-lang="technical"] .spinner {
width: 16px;
height: 16px;
border-width: 1.5px;
}
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 1,014 lines · 8,516 tokens per session scan A e30d2b8022d7
PixelPilot uiux-states.instructions.md is an instructions file published in the GitHub repository dev-lou/PixelPilot (2 stars, last pushed 7mo ago), licensed MIT. It adds 8,516 tokens to every session, about $0.0341 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
PixelPilot uiux-states.instructions.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| PixelPilot uiux-states.instructions.mddev-lou/PixelPilot | Instructions file | 2 | 7mo ago | MIT | A | 8,516 | GitHub Copilot |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | today | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |