360 lines
12 KiB
Markdown
360 lines
12 KiB
Markdown
# Themed Hybrid UI Component Specification v4
|
|
|
|
## Evolution from v3: Modular Architecture
|
|
|
|
This specification builds upon v3's successful themed hybrid component approach with a critical architectural improvement: **separation of concerns through modular file structure**. While v3 delivered powerful themed components in single HTML files, v4 embraces modern development practices by splitting each component into three distinct files within organized directories.
|
|
|
|
### Key Improvements in v4:
|
|
- **Maintainability**: Styles and scripts can be modified without touching HTML structure
|
|
- **Reusability**: CSS themes and JavaScript behaviors can be extended or shared
|
|
- **Performance**: Better browser caching, conditional loading, and optimization opportunities
|
|
- **Collaboration**: Teams can work on styling, structure, and behavior independently
|
|
- **Scalability**: Components are ready for integration into larger systems
|
|
- **Developer Experience**: Clean separation follows industry best practices
|
|
|
|
## Core Challenge (Enhanced)
|
|
Create a **uniquely themed UI component** that combines multiple existing UI elements into one elegant solution, now with **professional-grade file organization** that demonstrates mastery of modern web development practices.
|
|
|
|
Apply a distinctive design language while solving multiple interface problems in a single, cohesive component - achieving "two birds with one stone" efficiency through both functional integration and architectural excellence.
|
|
|
|
## Output Requirements
|
|
|
|
**Directory Structure**: `ui_hybrid_[iteration_number]/`
|
|
|
|
Each iteration creates its own directory containing exactly three files:
|
|
```
|
|
ui_hybrid_[iteration_number]/
|
|
├── index.html # Semantic HTML structure
|
|
├── styles.css # Complete styling and theme implementation
|
|
└── script.js # All JavaScript functionality and interactions
|
|
```
|
|
|
|
**File Naming**:
|
|
- Directory: `ui_hybrid_[iteration_number]` (e.g., `ui_hybrid_1`, `ui_hybrid_2`)
|
|
- Files: Always `index.html`, `styles.css`, `script.js` (consistent naming)
|
|
|
|
## Content Structure
|
|
|
|
### **index.html** - Semantic Structure
|
|
```html
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>[Theme Name] [Hybrid Component Name]</title>
|
|
<link rel="stylesheet" href="styles.css">
|
|
</head>
|
|
<body>
|
|
<main>
|
|
<h1>[Hybrid Component Name] - [Theme Name] Theme</h1>
|
|
|
|
<!-- Clean semantic HTML structure -->
|
|
<!-- No inline styles or scripts -->
|
|
<div class="hybrid-component">
|
|
<!-- Component structure with meaningful class names -->
|
|
<!-- Data attributes for JavaScript hooks -->
|
|
<!-- Accessibility attributes (ARIA labels, roles) -->
|
|
</div>
|
|
|
|
<!-- Additional component instances or examples -->
|
|
|
|
</main>
|
|
|
|
<script src="script.js"></script>
|
|
</body>
|
|
</html>
|
|
```
|
|
|
|
### **styles.css** - Complete Theme Implementation
|
|
```css
|
|
/* Theme Variables and Custom Properties */
|
|
:root {
|
|
/* Color palette for the theme */
|
|
/* Typography scale */
|
|
/* Animation timings */
|
|
/* Spacing system */
|
|
}
|
|
|
|
/* Reset and Base Styles */
|
|
* {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
/* Theme Foundation */
|
|
body {
|
|
/* Theme-specific base styles */
|
|
/* Background treatments */
|
|
/* Default typography */
|
|
}
|
|
|
|
/* Component Architecture */
|
|
.hybrid-component {
|
|
/* Main component container */
|
|
/* Theme-specific treatments */
|
|
}
|
|
|
|
/* Component Sub-elements */
|
|
.hybrid-component__[element] {
|
|
/* BEM or consistent naming convention */
|
|
/* Element-specific theme styling */
|
|
}
|
|
|
|
/* State Classes */
|
|
.is-active, .is-loading, .is-error {
|
|
/* State-based styling */
|
|
/* Theme-consistent feedback */
|
|
}
|
|
|
|
/* Animations and Transitions */
|
|
@keyframes [themeAnimation] {
|
|
/* Theme-specific animations */
|
|
}
|
|
|
|
/* Responsive Design */
|
|
@media (max-width: 768px) {
|
|
/* Mobile adaptations maintaining theme */
|
|
}
|
|
|
|
/* Print Styles */
|
|
@media print {
|
|
/* Print-optimized theme variant */
|
|
}
|
|
```
|
|
|
|
### **script.js** - Functionality and Interactions
|
|
```javascript
|
|
// Strict mode for better error catching
|
|
'use strict';
|
|
|
|
// Theme Configuration
|
|
const THEME_CONFIG = {
|
|
// Animation durations
|
|
// API endpoints if needed
|
|
// Theme-specific settings
|
|
};
|
|
|
|
// Component State Management
|
|
class HybridComponent {
|
|
constructor(element) {
|
|
this.element = element;
|
|
this.state = {
|
|
// Component state properties
|
|
};
|
|
this.init();
|
|
}
|
|
|
|
init() {
|
|
// Setup event listeners
|
|
// Initialize sub-components
|
|
// Load any necessary data
|
|
this.bindEvents();
|
|
this.setupThemeFeatures();
|
|
}
|
|
|
|
bindEvents() {
|
|
// Event delegation for efficiency
|
|
// Touch and mouse events
|
|
// Keyboard navigation
|
|
}
|
|
|
|
setupThemeFeatures() {
|
|
// Theme-specific interactions
|
|
// Special effects or behaviors
|
|
// Animation triggers
|
|
}
|
|
|
|
// Component Methods
|
|
updateState(updates) {
|
|
// State management logic
|
|
// UI updates based on state
|
|
}
|
|
|
|
// API Methods if needed
|
|
async fetchData() {
|
|
// Data loading with error handling
|
|
}
|
|
|
|
// Utility Methods
|
|
debounce(func, wait) {
|
|
// Performance optimizations
|
|
}
|
|
}
|
|
|
|
// Initialize on DOM Ready
|
|
document.addEventListener('DOMContentLoaded', () => {
|
|
// Find all component instances
|
|
const components = document.querySelectorAll('.hybrid-component');
|
|
|
|
// Initialize each instance
|
|
components.forEach(element => {
|
|
new HybridComponent(element);
|
|
});
|
|
|
|
// Setup any global theme features
|
|
initializeThemeEffects();
|
|
});
|
|
|
|
// Global Theme Functions
|
|
function initializeThemeEffects() {
|
|
// Ambient animations
|
|
// Parallax effects
|
|
// Theme-wide interactions
|
|
}
|
|
|
|
// Export for potential module usage
|
|
if (typeof module !== 'undefined' && module.exports) {
|
|
module.exports = HybridComponent;
|
|
}
|
|
```
|
|
|
|
## Design Dimensions (Preserved from v3)
|
|
|
|
### **Unique Theme Development**
|
|
Each component must embody a distinctive design language that creates personality and memorable experience. The multi-file structure enhances theme implementation:
|
|
|
|
#### **Enhanced Theme Implementation**
|
|
- **CSS Variables**: Define theme tokens in `:root` for consistent application
|
|
- **Modular Styles**: Theme variations can be swapped by changing stylesheets
|
|
- **JavaScript Theming**: Dynamic theme features separated from core functionality
|
|
- **Asset Organization**: Theme-specific assets referenced properly from each file
|
|
|
|
[All theme categories from v3 remain the same: Organic Nature, Digital Minimalism, Retro Computing, etc.]
|
|
|
|
### **Hybrid Component Strategy**
|
|
The same powerful combinations from v3, now with better architectural separation:
|
|
|
|
#### **Architectural Benefits per Component Type**
|
|
- **Search Hub**: Search logic isolated in JS, theme animations in CSS
|
|
- **Input Intelligence**: Validation rules in JS, visual feedback in CSS
|
|
- **Data Explorer**: Sorting algorithms in JS, table styling in CSS
|
|
- **Media Player**: Playback logic in JS, visualizer styles in CSS
|
|
|
|
[All component combinations from v3 remain valid]
|
|
|
|
## Enhancement Principles (Evolved)
|
|
|
|
### **Architectural Excellence** (New in v4)
|
|
- **Separation of Concerns**: Each file has a single, clear responsibility
|
|
- **No Inline Styles/Scripts**: All styling in CSS, all behavior in JavaScript
|
|
- **Progressive Enhancement**: HTML works without CSS/JS, enhanced by both
|
|
- **Module Boundaries**: Clear interfaces between files, no tight coupling
|
|
- **Future-Ready**: Structure supports build tools, frameworks, component libraries
|
|
|
|
### **Development Best Practices** (New in v4)
|
|
- **CSS Organization**: Logical section ordering, consistent naming conventions
|
|
- **JavaScript Patterns**: Modern ES6+, class-based or functional approaches
|
|
- **HTML Semantics**: Proper element selection, accessibility-first markup
|
|
- **Performance Focus**: Optimized selectors, efficient event handling
|
|
- **Documentation**: Clear comments explaining theme decisions and component logic
|
|
|
|
[All original enhancement principles from v3 remain: Thematic Consistency, Functional Integration, Practical Excellence]
|
|
|
|
## File Integration Guidelines
|
|
|
|
### **Linking Strategy**
|
|
- **Consistent Paths**: Always use relative paths (`href="styles.css"`)
|
|
- **Load Order**: CSS in `<head>`, JavaScript before `</body>`
|
|
- **No CDNs**: All functionality self-contained within the three files
|
|
- **Fallbacks**: Graceful degradation if CSS or JS fails to load
|
|
|
|
### **Communication Between Files**
|
|
- **HTML → CSS**: Semantic class names, data attributes for styling hooks
|
|
- **HTML → JS**: IDs for unique elements, data attributes for configuration
|
|
- **CSS → JS**: CSS custom properties readable by JavaScript
|
|
- **JS → CSS**: Dynamic class additions, CSS variable updates
|
|
|
|
### **Naming Conventions**
|
|
- **CSS Classes**: BEM, semantic, or consistent methodology
|
|
- **JavaScript**: camelCase for variables/functions, PascalCase for classes
|
|
- **Data Attributes**: `data-component-*` for component-specific data
|
|
- **CSS Variables**: `--theme-*` prefix for theme variables
|
|
|
|
## Quality Standards (Enhanced)
|
|
|
|
### **Code Quality** (New in v4)
|
|
- **Valid HTML**: Passes W3C validation, proper semantic structure
|
|
- **CSS Organization**: Logical property grouping, no redundancy
|
|
- **JavaScript Quality**: No global pollution, proper error handling
|
|
- **Cross-Browser**: Works in all modern browsers (Chrome, Firefox, Safari, Edge)
|
|
- **Performance**: Lighthouse score of 90+ in all categories
|
|
|
|
### **File-Specific Standards** (New in v4)
|
|
- **HTML**: Semantic, accessible, minimal, no presentation logic
|
|
- **CSS**: Organized, maintainable, efficient selectors, mobile-first
|
|
- **JavaScript**: Modular, testable, documented, memory-efficient
|
|
|
|
[All original quality standards from v3 remain in effect]
|
|
|
|
## Migration Example: v3 to v4
|
|
|
|
**v3 Structure (Single File):**
|
|
```
|
|
ui_hybrid_1.html (contains everything)
|
|
```
|
|
|
|
**v4 Structure (Modular):**
|
|
```
|
|
ui_hybrid_1/
|
|
├── index.html (structure only)
|
|
├── styles.css (all styling)
|
|
└── script.js (all behavior)
|
|
```
|
|
|
|
The same themed hybrid component now benefits from:
|
|
- 3x better caching (each file cached independently)
|
|
- Easier debugging (concerns separated)
|
|
- Simpler version control (changes isolated to relevant files)
|
|
- Team collaboration (parallel development possible)
|
|
- Build tool ready (can be processed, minified, bundled)
|
|
|
|
## Iteration Evolution (Enhanced)
|
|
|
|
### **Architectural Sophistication** (New in v4)
|
|
- **Foundation (1-3)**: Clean separation, basic modular structure
|
|
- **Refinement (4-6)**: Advanced CSS architecture, sophisticated JS patterns
|
|
- **Innovation (7+)**: Creative file communication, advanced state management
|
|
|
|
### **Development Complexity**
|
|
- **Phase 1**: Standard separation with clear file boundaries
|
|
- **Phase 2**: Advanced patterns like CSS custom properties + JS integration
|
|
- **Phase 3**: Sophisticated architectures with event systems, style injection
|
|
- **Phase 4**: Revolutionary approaches to component modularity
|
|
|
|
## Ultra-Thinking Directive (Enhanced)
|
|
|
|
Before each themed hybrid creation, deeply consider:
|
|
|
|
**Architectural Decisions:**
|
|
- How can the three-file structure enhance this specific theme?
|
|
- What belongs in CSS vs JavaScript for this component type?
|
|
- How can files communicate elegantly for this use case?
|
|
- What patterns best support this component's evolution?
|
|
- How does separation improve maintainability here?
|
|
|
|
**File Responsibility Planning:**
|
|
- What is the minimal, semantic HTML needed?
|
|
- Which styles are structural vs thematic?
|
|
- What JavaScript is essential vs enhancement?
|
|
- How can each file remain focused and clean?
|
|
- Where are the natural boundaries between concerns?
|
|
|
|
**Integration Excellence:**
|
|
- How do the files work together seamlessly?
|
|
- What naming conventions ensure clarity?
|
|
- How can we avoid tight coupling?
|
|
- What patterns enable future extensions?
|
|
- How does the architecture support the theme?
|
|
|
|
[All original ultra-thinking directives from v3 remain relevant]
|
|
|
|
**Generate components that are:**
|
|
- **Architecturally Sound**: Professional-grade file organization and separation
|
|
- **Thematically Distinctive**: Strong design personality across all three files
|
|
- **Functionally Integrated**: Multiple UI capabilities with clean code boundaries
|
|
- **Professionally Crafted**: Industry-standard patterns and practices
|
|
- **Immediately Impressive**: Excellence visible in both UI and code structure
|
|
|
|
The evolution from v3 to v4 represents growth from powerful prototypes to production-ready components, maintaining all creative excellence while adding architectural sophistication. |