Loading...
Loading...
Modern UI/UX design specialist for web applications, mobile apps, and design systems. Covers design principles, user research, interaction patterns, accessibility (WCAG), responsive design, component libraries (Tailwind, shadcn/ui, Material), prototyping, and usability testing. Creates beautiful, functional interfaces following best practices.
npx skill4agent add hummbl-dev/hummbl-claude-skills ui-ux-designer<button class="bg-blue-500 hover:bg-blue-600 text-white font-semibold py-2 px-4 rounded-lg transition-colors">
Click Me
</button>/* Primary Colors */
--primary-50: #eff6ff;
--primary-500: #3b82f6;
--primary-900: #1e3a8a;
/* Semantic Colors */
--success: #10b981;
--warning: #f59e0b;
--error: #ef4444;
--info: #3b82f6;
/* Neutrals */
--gray-50: #f9fafb;
--gray-500: #6b7280;
--gray-900: #111827;/* Tailwind default scale */
text-xs: 0.75rem (12px)
text-sm: 0.875rem (14px)
text-base: 1rem (16px)
text-lg: 1.125rem (18px)
text-xl: 1.25rem (20px)
text-2xl: 1.5rem (24px)
text-3xl: 1.875rem (30px)
text-4xl: 2.25rem (36px)/* Tailwind 4px base unit */
0: 0
1: 0.25rem (4px)
2: 0.5rem (8px)
3: 0.75rem (12px)
4: 1rem (16px)
6: 1.5rem (24px)
8: 2rem (32px)
12: 3rem (48px)
16: 4rem (64px)<nav class="bg-white border-b border-gray-200">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex justify-between h-16">
<div class="flex">
<!-- Logo -->
<div class="flex-shrink-0 flex items-center">
<img class="h-8 w-auto" src="/logo.svg" alt="Logo">
</div>
<!-- Nav items -->
<div class="hidden sm:ml-6 sm:flex sm:space-x-8">
<a href="#" class="border-b-2 border-blue-500 text-gray-900 px-3 py-2">
Dashboard
</a>
<a href="#" class="border-b-2 border-transparent text-gray-500 hover:text-gray-700 px-3 py-2">
Projects
</a>
</div>
</div>
</div>
</div>
</nav><button class="sm:hidden p-2" aria-label="Open menu">
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
</svg>
</button><div class="space-y-2">
<label for="email" class="block text-sm font-medium text-gray-700">
Email address
</label>
<input
type="email"
id="email"
name="email"
class="block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500"
placeholder="you@example.com"
required
>
<p class="text-sm text-gray-500">We'll never share your email.</p>
</div><!-- Error state -->
<input class="border-red-500 focus:ring-red-500 focus:border-red-500">
<p class="mt-1 text-sm text-red-600">This field is required</p>
<!-- Success state -->
<input class="border-green-500 focus:ring-green-500 focus:border-green-500">
<p class="mt-1 text-sm text-green-600">Looks good!</p><div class="bg-white rounded-lg shadow-md p-6 hover:shadow-lg transition-shadow">
<h3 class="text-lg font-semibold text-gray-900 mb-2">
Card Title
</h3>
<p class="text-gray-600 mb-4">
Card description goes here.
</p>
<button class="text-blue-600 hover:text-blue-700 font-medium">
Learn more →
</button>
</div><div class="fixed inset-0 bg-gray-500 bg-opacity-75 flex items-center justify-center p-4">
<div class="bg-white rounded-lg shadow-xl max-w-md w-full p-6">
<!-- Header -->
<div class="flex items-center justify-between mb-4">
<h2 class="text-xl font-semibold">Modal Title</h2>
<button class="text-gray-400 hover:text-gray-500">
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
<!-- Content -->
<div class="mb-6">
<p class="text-gray-600">Modal content goes here.</p>
</div>
<!-- Footer -->
<div class="flex justify-end space-x-3">
<button class="px-4 py-2 border border-gray-300 rounded-md hover:bg-gray-50">
Cancel
</button>
<button class="px-4 py-2 bg-blue-500 text-white rounded-md hover:bg-blue-600">
Confirm
</button>
</div>
</div>
</div><svg class="animate-spin h-5 w-5 text-blue-500" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg><div class="animate-pulse space-y-4">
<div class="h-4 bg-gray-200 rounded w-3/4"></div>
<div class="h-4 bg-gray-200 rounded"></div>
<div class="h-4 bg-gray-200 rounded w-5/6"></div>
</div><div class="fixed top-4 right-4 bg-green-50 border border-green-200 rounded-lg p-4 shadow-lg">
<div class="flex items-start">
<svg class="h-5 w-5 text-green-500 mt-0.5" fill="currentColor" viewBox="0 0 20 20">
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
</svg>
<div class="ml-3">
<p class="text-sm font-medium text-green-800">Successfully saved!</p>
</div>
</div>
</div><!-- Base styles for mobile -->
<div class="p-4 text-sm">
<!-- Enhanced for tablet -->
<div class="sm:p-6 sm:text-base">
<!-- Enhanced for desktop -->
<div class="lg:p-8 lg:text-lg">
Content
</div>
</div>
</div><!-- 1 column mobile, 2 tablet, 3 desktop -->
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div><h1 class="text-2xl sm:text-3xl lg:text-4xl font-bold">
Responsive Heading
</h1><!-- Show only on mobile -->
<div class="block sm:hidden">Mobile content</div>
<!-- Hide on mobile -->
<div class="hidden sm:block">Desktop content</div>/* Tailwind defaults */
ease-linear: linear
ease-in: cubic-bezier(0.4, 0, 1, 1)
ease-out: cubic-bezier(0, 0, 0.2, 1) /* Best for entering */
ease-in-out: cubic-bezier(0.4, 0, 0.2, 1)<!-- Hover effects -->
<button class="transition-colors duration-200 hover:bg-blue-600">
<!-- Fade in/out -->
<div class="transition-opacity duration-300 opacity-0 hover:opacity-100">
<!-- Slide in -->
<div class="transition-transform duration-300 transform translate-x-full group-hover:translate-x-0">
<!-- Scale -->
<img class="transition-transform duration-200 hover:scale-105"><!-- Enable in tailwind.config.js: darkMode: 'class' -->
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
<button class="bg-blue-500 dark:bg-blue-600">
Click me
</button>
</div>// Toggle function
function toggleDarkMode() {
document.documentElement.classList.toggle('dark');
localStorage.theme = document.documentElement.classList.contains('dark') ? 'dark' : 'light';
}
// Initialize on load
if (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
document.documentElement.classList.add('dark');
}