
Ui Design Patterns
Implement common UI patterns with copy-paste HTML, CSS, and JavaScript examples including accessibility and responsive behavior.
Overview
UI Design Patterns is an agent skill for the Build phase that provides implementation examples for common UI patterns with accessibility and responsive guidance.
Install
npx skills add https://github.com/manutej/luxor-claude-marketplace --skill ui-design-patternsWhat is this skill?
- Seven pattern areas: navigation, forms, data display, feedback, interaction, accessibility, responsive
- Accessible tab component with role=tablist, aria-selected, aria-controls, and keyboard tabindex handling
- HTML structure samples paired with CSS and JavaScript guidance in the cookbook style
- Dedicated accessibility examples section alongside visual interaction patterns
- Responsive patterns section for adapting layouts across viewports
- 7 documented UI pattern categories in the table of contents
- Accessible tab example uses tablist, tab, tabpanel roles with aria-selected and aria-controls
Adoption & trust: 562 installs on skills.sh; 58 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You are building frontend screens but lack vetted, accessible HTML/CSS/JS recipes for tabs, forms, and feedback states.
Who is it for?
Indie builders shipping web SaaS or extensions who want accessible component starting points without a full design system team.
Skip if: Brand-new visual identity work, native-only mobile UI without web markup, or teams that already enforce a proprietary component library exclusively.
When should I use this skill?
You need implementation examples for navigation, forms, data display, feedback, or accessible interactive UI.
What do I get? / Deliverables
You get concrete pattern implementations with ARIA and responsive notes you can paste and refactor into your component framework.
- HTML/CSS/JS snippets for named UI patterns
- Accessibility-oriented markup examples such as tab components
Recommended Skills
Journey fit
How it compares
Pattern cookbook with code samples, not a Figma kit or automated design-to-code MCP pipeline.
Common Questions / FAQ
Who is ui-design-patterns for?
Solo developers and designers coding their own UI who need reliable, accessible pattern examples in HTML, CSS, and JavaScript.
When should I use ui-design-patterns?
During Build frontend work when implementing navigation, forms, data tables, toasts, interactions, or responsive layouts in your app.
Is ui-design-patterns safe to install?
It is documentation-style pattern content without mandatory shell or network calls; review the Security Audits panel on this page like any marketplace skill.
SKILL.md
READMESKILL.md - Ui Design Patterns
# UI Design Patterns - Implementation Examples Detailed implementation examples for common UI design patterns with HTML, CSS, and JavaScript code samples. ## Table of Contents 1. [Navigation Patterns](#navigation-patterns) 2. [Form Patterns](#form-patterns) 3. [Data Display Patterns](#data-display-patterns) 4. [Feedback Patterns](#feedback-patterns) 5. [Interaction Patterns](#interaction-patterns) 6. [Accessibility Examples](#accessibility-examples) 7. [Responsive Patterns](#responsive-patterns) ## Navigation Patterns ### Example 1: Accessible Tab Component A fully accessible tab component with keyboard navigation and ARIA attributes. **HTML Structure**: ```html <div class="tabs-container"> <div role="tablist" aria-label="Account settings"> <button role="tab" aria-selected="true" aria-controls="profile-panel" id="profile-tab" tabindex="0" > <svg aria-hidden="true"><!-- Profile icon --></svg> Profile </button> <button role="tab" aria-selected="false" aria-controls="security-panel" id="security-tab" tabindex="-1" > <svg aria-hidden="true"><!-- Lock icon --></svg> Security </button> <button role="tab" aria-selected="false" aria-controls="notifications-panel" id="notifications-tab" tabindex="-1" > <svg aria-hidden="true"><!-- Bell icon --></svg> Notifications </button> </div> <div role="tabpanel" id="profile-panel" aria-labelledby="profile-tab" tabindex="0" > <h2>Profile Settings</h2> <p>Manage your profile information and preferences.</p> <!-- Profile form content --> </div> <div role="tabpanel" id="security-panel" aria-labelledby="security-tab" hidden tabindex="0" > <h2>Security Settings</h2> <p>Update your password and security preferences.</p> <!-- Security form content --> </div> <div role="tabpanel" id="notifications-panel" aria-labelledby="notifications-tab" hidden tabindex="0" > <h2>Notification Preferences</h2> <p>Choose how and when you want to be notified.</p> <!-- Notification settings --> </div> </div> ``` **CSS Styling**: ```css .tabs-container { max-width: 800px; margin: 2rem auto; } [role="tablist"] { display: flex; gap: 0.5rem; border-bottom: 2px solid #e5e7eb; margin-bottom: 1.5rem; } [role="tab"] { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1.5rem; background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -2px; font-size: 0.875rem; font-weight: 500; color: #6b7280; cursor: pointer; transition: all 0.2s; } [role="tab"]:hover { color: #374151; background-color: #f9fafb; } [role="tab"][aria-selected="true"] { color: #2563eb; border-bottom-color: #2563eb; } [role="tab"]:focus-visible { outline: 2px solid #2563eb; outline-offset: 2px; border-radius: 4px; } [role="tab"] svg { width: 1.25rem; height: 1.25rem; } [role="tabpanel"] { padding: 1.5rem; animation: fadeIn 0.3s ease-in; } [role="tabpanel"]:focus { outline: 2px solid #2563eb; outline-offset: 4px; border-radius: 4px; } @keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } ``` **JavaScript Implementation**: ```javascript class TabComponent { constructor(container) { this.container = container; this.tablist = container.querySelector('[role="tablist"]'); this.tabs = Array.from(this.tablist.querySelectorAll('[role="tab"]')); this.panels = Array.from(container.querySelectorAll('[role="tabpanel"]')); this.initTabs(); } initTabs() { this.tabs.forEach((tab, index) => { tab.addEventListener('click', () => this.selectTab(index)); tab.addEventListener('keydown', (e) => this.handleKeyboard(e, index)); }); } selectTab(index) {