wireframe-ui-lite
Version:
Ultra-lightweight wireframe component library for rapid prototyping and LLM-friendly interfaces
460 lines (422 loc) • 25.2 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wireframe UI - Example</title>
<link href="../dist/wireframe-ui.css" rel="stylesheet">
</head>
<body class="p-8 bg-gray-50">
<div class="max-w-6xl mx-auto">
<h1 class="text-4xl font-bold mb-8 text-center wireframe-text">Wireframe UI Library</h1>
<!-- Navigation Example -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Navigation</h2>
<nav class="wireframe-nav">
<div class="wireframe-text font-bold text-lg">Brand Logo</div>
<div class="flex space-x-4">
<a href="#" class="wireframe-text hover:underline">Home</a>
<a href="#" class="wireframe-text hover:underline">About</a>
<a href="#" class="wireframe-text hover:underline">Services</a>
<a href="#" class="wireframe-text hover:underline">Contact</a>
</div>
</nav>
</section>
<!-- Buttons Example -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Buttons</h2>
<div class="flex flex-wrap gap-4">
<button class="wireframe-button primary">Primary Button</button>
<button class="wireframe-button secondary">Secondary Button</button>
<button class="wireframe-button">Default Button</button>
<button class="wireframe-button bg-red-100">Danger Button</button>
<button class="wireframe-button bg-green-100">Success Button</button>
</div>
</section>
<!-- Form Elements -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Form Elements</h2>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
<div class="wireframe-card">
<h3 class="text-xl mb-4 wireframe-text">Contact Form</h3>
<div class="space-y-4">
<input type="text" placeholder="Your Name" class="wireframe-input">
<input type="email" placeholder="Email Address" class="wireframe-input">
<select class="wireframe-select w-full">
<option value="" disabled selected>Select Topic</option>
<option value="general">General Inquiry</option>
<option value="support">Support</option>
<option value="sales">Sales</option>
</select>
<textarea placeholder="Your Message" class="wireframe-input min-h-[100px] resize-none"></textarea>
<button class="wireframe-button primary w-full">Send Message</button>
</div>
</div>
<div class="wireframe-card">
<h3 class="text-xl mb-4 wireframe-text">Form Controls</h3>
<div class="space-y-4">
<div>
<h4 class="text-lg mb-2 wireframe-text">Checkboxes</h4>
<div class="space-y-2">
<label class="wireframe-checkbox">
<input type="checkbox" checked>
<span>Subscribe to newsletter</span>
</label>
<label class="wireframe-checkbox">
<input type="checkbox">
<span>Accept terms and conditions</span>
</label>
<label class="wireframe-checkbox">
<input type="checkbox">
<span>Receive marketing emails</span>
</label>
</div>
</div>
<div>
<h4 class="text-lg mb-2 wireframe-text">Radio Buttons</h4>
<div class="space-y-2">
<label class="wireframe-radio">
<input type="radio" name="plan" value="basic" checked>
<span>Basic Plan</span>
</label>
<label class="wireframe-radio">
<input type="radio" name="plan" value="premium">
<span>Premium Plan</span>
</label>
<label class="wireframe-radio">
<input type="radio" name="plan" value="enterprise">
<span>Enterprise Plan</span>
</label>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Card Grid -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Card Grid</h2>
<div class="wireframe-grid">
<div class="wireframe-card">
<div class="wireframe-image mb-4" style="height: 200px;">
<div class="text-gray-500 text-center">
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="mx-auto mb-2">
<rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
<circle cx="8.5" cy="8.5" r="1.5"/>
<polyline points="21,15 16,10 5,21"/>
</svg>
<p>Product Image</p>
</div>
</div>
<h3 class="text-lg font-semibold mb-2 wireframe-text">Product Title</h3>
<p class="wireframe-text mb-4">This is a description of the product that explains its features and benefits.</p>
<button class="wireframe-button primary">Add to Cart</button>
</div>
<div class="wireframe-card">
<div class="wireframe-image mb-4" style="height: 200px;">
<div class="text-gray-500 text-center">
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="mx-auto mb-2">
<rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
<circle cx="8.5" cy="8.5" r="1.5"/>
<polyline points="21,15 16,10 5,21"/>
</svg>
<p>Service Image</p>
</div>
</div>
<h3 class="text-lg font-semibold mb-2 wireframe-text">Service Title</h3>
<p class="wireframe-text mb-4">Description of the service and what value it provides to customers.</p>
<button class="wireframe-button secondary">Learn More</button>
</div>
<div class="wireframe-card">
<div class="wireframe-image mb-4" style="height: 200px;">
<div class="text-gray-500 text-center">
<svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="mx-auto mb-2">
<rect x="3" y="3" width="18" height="18" rx="2" ry="2"/>
<circle cx="8.5" cy="8.5" r="1.5"/>
<polyline points="21,15 16,10 5,21"/>
</svg>
<p>Feature Image</p>
</div>
</div>
<h3 class="text-lg font-semibold mb-2 wireframe-text">Feature Title</h3>
<p class="wireframe-text mb-4">Explanation of this feature and how it benefits the user experience.</p>
<button class="wireframe-button bg-purple-100">Try Now</button>
</div>
</div>
</section>
<!-- Tabs Example -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Tabs</h2>
<div class="wireframe-tabs">
<div class="wireframe-tab-list">
<div class="wireframe-tab active" onclick="showTab(0)">Overview</div>
<div class="wireframe-tab" onclick="showTab(1)">Features</div>
<div class="wireframe-tab" onclick="showTab(2)">Pricing</div>
<div class="wireframe-tab" onclick="showTab(3)">Support</div>
</div>
<div class="wireframe-tab-content" id="tab-content">
<h3 class="wireframe-text text-lg font-semibold mb-3">Overview</h3>
<p class="wireframe-text mb-4">Welcome to our product overview. Here you'll find general information about our service and what we offer.</p>
<ul class="space-y-2">
<li class="wireframe-text">• Easy to use interface</li>
<li class="wireframe-text">• Comprehensive documentation</li>
<li class="wireframe-text">• 24/7 customer support</li>
</ul>
</div>
</div>
</section>
<!-- Interactive Components -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Interactive Components</h2>
<div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
<!-- Accordion -->
<div class="wireframe-card">
<h3 class="text-xl mb-4 wireframe-text">Accordion</h3>
<div class="wireframe-accordion">
<div class="wireframe-accordion-item">
<div class="wireframe-accordion-header" onclick="toggleAccordion(0)">
<span class="wireframe-text">What is Wireframe UI?</span>
<span>▼</span>
</div>
<div class="wireframe-accordion-content" id="accordion-0">
<p class="wireframe-text">Wireframe UI is a component library designed for rapid prototyping with a sketch-like aesthetic.</p>
</div>
</div>
<div class="wireframe-accordion-item">
<div class="wireframe-accordion-header" onclick="toggleAccordion(1)">
<span class="wireframe-text">How do I get started?</span>
<span>▼</span>
</div>
<div class="wireframe-accordion-content" id="accordion-1">
<p class="wireframe-text">Simply include the CSS file and start using the wireframe classes in your HTML.</p>
</div>
</div>
<div class="wireframe-accordion-item">
<div class="wireframe-accordion-header" onclick="toggleAccordion(2)">
<span class="wireframe-text">Can I customize the styling?</span>
<span>▼</span>
</div>
<div class="wireframe-accordion-content" id="accordion-2">
<p class="wireframe-text">Yes! You can customize colors, fonts, and other styles through CSS variables and overrides.</p>
</div>
</div>
</div>
</div>
<!-- Badges and Modal -->
<div class="wireframe-card">
<h3 class="text-xl mb-4 wireframe-text">Badges & Modal</h3>
<div class="space-y-4">
<div>
<h4 class="text-lg mb-2 wireframe-text">Status Badges</h4>
<div class="flex flex-wrap gap-2">
<span class="wireframe-badge">Default</span>
<span class="wireframe-badge primary">Primary</span>
<span class="wireframe-badge success">Success</span>
<span class="wireframe-badge warning">Warning</span>
<span class="wireframe-badge danger">Danger</span>
</div>
</div>
<div>
<h4 class="text-lg mb-2 wireframe-text">Modal Example</h4>
<button class="wireframe-button primary" onclick="showModal()">Open Modal</button>
<!-- Tooltip Example -->
<div class="wireframe-tooltip mt-4">
<span class="wireframe-text">Hover for tooltip</span>
<div class="wireframe-tooltip-content">
This is a helpful tooltip!
</div>
</div>
</div>
<div>
<h4 class="text-lg mb-2 wireframe-text">Progress Bar</h4>
<div class="wireframe-progress">
<div class="wireframe-progress-bar" style="width: 65%"></div>
</div>
<p class="wireframe-text text-sm mt-1">65% complete</p>
</div>
</div>
</div>
</div>
</section>
<!-- Sidebar Example -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Sidebar Component</h2>
<div class="grid grid-cols-1 lg:grid-cols-4 gap-6">
<div class="wireframe-sidebar relative">
<h3 class="text-lg font-semibold mb-4 wireframe-text">Navigation</h3>
<div class="wireframe-sidebar-item active">Dashboard</div>
<div class="wireframe-sidebar-item">Projects</div>
<div class="wireframe-sidebar-item">Tasks</div>
<div class="wireframe-sidebar-item">Calendar</div>
<div class="wireframe-sidebar-item">Settings</div>
<div class="wireframe-sidebar-item">Help</div>
</div>
<div class="lg:col-span-3">
<div class="wireframe-card h-64">
<h3 class="text-xl mb-4 wireframe-text">Main Content Area</h3>
<div class="space-y-2">
<div class="wireframe-text">This is the main content area that would contain your application content.</div>
<div class="wireframe-text">The sidebar on the left provides navigation between different sections.</div>
<div class="wireframe-text">Perfect for admin dashboards, settings pages, or any multi-section interface.</div>
</div>
</div>
</div>
</div>
</section>
<!-- Interactive Demo -->
<section class="mb-12">
<h2 class="text-2xl font-semibold mb-4 wireframe-text">Interactive Demo</h2>
<div class="wireframe-card">
<h3 class="text-xl mb-4 wireframe-text">Prototype Builder</h3>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div>
<h4 class="text-lg mb-2 wireframe-text">Add Components:</h4>
<div class="space-y-2">
<button class="wireframe-button w-full" onclick="addComponent('button')">+ Add Button</button>
<button class="wireframe-button w-full" onclick="addComponent('input')">+ Add Input</button>
<button class="wireframe-button w-full" onclick="addComponent('card')">+ Add Card</button>
<button class="wireframe-button w-full" onclick="addComponent('checkbox')">+ Add Checkbox</button>
<button class="wireframe-button w-full" onclick="addComponent('select')">+ Add Select</button>
<button class="wireframe-button w-full bg-red-100" onclick="clearComponents()">Clear All</button>
</div>
</div>
<div>
<h4 class="text-lg mb-2 wireframe-text">Preview:</h4>
<div id="preview-area" class="wireframe-card min-h-[200px] bg-white">
<p class="text-gray-500 text-center">Components will appear here...</p>
</div>
</div>
</div>
</div>
</section>
</div>
<script>
let componentCount = 0;
const previewArea = document.getElementById('preview-area');
function addComponent(type) {
componentCount++;
const container = document.createElement('div');
container.className = 'mb-3';
switch(type) {
case 'button':
const button = document.createElement('button');
button.className = 'wireframe-button';
button.textContent = `Button ${componentCount}`;
container.appendChild(button);
break;
case 'input':
const input = document.createElement('input');
input.className = 'wireframe-input';
input.placeholder = `Input ${componentCount}`;
container.appendChild(input);
break;
case 'card':
const card = document.createElement('div');
card.className = 'wireframe-card';
card.innerHTML = `
<h4 class="wireframe-text font-semibold">Card ${componentCount}</h4>
<p class="wireframe-text mt-2">This is a sample card component.</p>
`;
container.appendChild(card);
break;
case 'checkbox':
const checkboxLabel = document.createElement('label');
checkboxLabel.className = 'wireframe-checkbox';
checkboxLabel.innerHTML = `
<input type="checkbox">
<span>Checkbox ${componentCount}</span>
`;
container.appendChild(checkboxLabel);
break;
case 'select':
const select = document.createElement('select');
select.className = 'wireframe-select w-full';
select.innerHTML = `
<option value="" disabled selected>Select Option ${componentCount}</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
`;
container.appendChild(select);
break;
}
if (previewArea.children.length === 1 && previewArea.children[0].tagName === 'P') {
previewArea.innerHTML = '';
}
previewArea.appendChild(container);
}
function clearComponents() {
previewArea.innerHTML = '<p class="text-gray-500 text-center">Components will appear here...</p>';
componentCount = 0;
}
// Tab functionality
const tabContents = [
'<h3 class="wireframe-text text-lg font-semibold mb-3">Overview</h3><p class="wireframe-text mb-4">Welcome to our product overview. Here you\'ll find general information about our service and what we offer.</p><ul class="space-y-2"><li class="wireframe-text">• Easy to use interface</li><li class="wireframe-text">• Comprehensive documentation</li><li class="wireframe-text">• 24/7 customer support</li></ul>',
'<h3 class="wireframe-text text-lg font-semibold mb-3">Features</h3><p class="wireframe-text mb-4">Our platform includes powerful features designed to boost your productivity.</p><ul class="space-y-2"><li class="wireframe-text">• Advanced analytics</li><li class="wireframe-text">• Real-time collaboration</li><li class="wireframe-text">• Custom integrations</li></ul>',
'<h3 class="wireframe-text text-lg font-semibold mb-3">Pricing</h3><p class="wireframe-text mb-4">Choose the plan that fits your needs with transparent, flexible pricing.</p><ul class="space-y-2"><li class="wireframe-text">• Free tier available</li><li class="wireframe-text">• No hidden fees</li><li class="wireframe-text">• Cancel anytime</li></ul>',
'<h3 class="wireframe-text text-lg font-semibold mb-3">Support</h3><p class="wireframe-text mb-4">Get help when you need it with our comprehensive support options.</p><ul class="space-y-2"><li class="wireframe-text">• 24/7 chat support</li><li class="wireframe-text">• Knowledge base</li><li class="wireframe-text">• Community forums</li></ul>'
];
function showTab(index) {
const tabs = document.querySelectorAll('.wireframe-tab');
const content = document.getElementById('tab-content');
tabs.forEach((tab, i) => {
if (i === index) {
tab.classList.add('active');
} else {
tab.classList.remove('active');
}
});
content.innerHTML = tabContents[index];
}
// Accordion functionality
function toggleAccordion(index) {
const content = document.getElementById(`accordion-${index}`);
const header = content.previousElementSibling;
const arrow = header.querySelector('span:last-child');
if (content.classList.contains('active')) {
content.classList.remove('active');
arrow.textContent = '▼';
} else {
// Close all accordions
document.querySelectorAll('.wireframe-accordion-content').forEach(item => {
item.classList.remove('active');
});
document.querySelectorAll('.wireframe-accordion-header span:last-child').forEach(arrow => {
arrow.textContent = '▼';
});
// Open current accordion
content.classList.add('active');
arrow.textContent = '▲';
}
}
// Modal functionality
function showModal() {
const modal = document.createElement('div');
modal.className = 'wireframe-modal';
modal.innerHTML = `
<div class="wireframe-modal-content">
<h2 class="wireframe-text text-xl font-bold mb-4">Example Modal</h2>
<p class="wireframe-text mb-4">This is an example of a modal dialog. You can put any content here including forms, images, or other components.</p>
<div class="flex gap-4 justify-end">
<button class="wireframe-button secondary" onclick="hideModal()">Cancel</button>
<button class="wireframe-button primary" onclick="hideModal()">Confirm</button>
</div>
</div>
`;
modal.addEventListener('click', (e) => {
if (e.target === modal) {
hideModal();
}
});
document.body.appendChild(modal);
window.currentModal = modal;
}
function hideModal() {
if (window.currentModal) {
window.currentModal.remove();
window.currentModal = null;
}
}
</script>
</body>
</html>