|
6 | 6 | "description": "Master native HTML capabilities and progressive enhancement patterns. This guide demonstrates how leveraging built-in browser features reduces complexity, improves performance, and creates more maintainable codebases." |
7 | 7 | }, |
8 | 8 | "hero": { |
9 | | - "title": "🚀 HTML Fundamentals", |
10 | | - "subtitle": "Master native HTML capabilities and progressive enhancement patterns. This guide demonstrates how leveraging built-in browser features reduces complexity, improves performance, and creates more maintainable codebases." |
| 9 | + "title": "HTML Over JavaScript", |
| 10 | + "subtitle": "Native HTML elements solve 90% of common UI problems. This guide demonstrates how leveraging built-in browser features reduces complexity, improves performance, and creates more maintainable codebases." |
11 | 11 | }, |
12 | 12 | "sections": { |
13 | 13 | "disclosure": { |
14 | | - "title": "🎯 Details/Summary Patterns", |
| 14 | + "title": "Details/Summary Patterns", |
15 | 15 | "js_title": "JavaScript-Dependent Implementation", |
16 | 16 | "js_badge": "COMPLEX", |
17 | 17 | "js_warning": "Implementation Overhead: Manual ARIA state management, keyboard event handling, focus management, and screen reader compatibility.", |
18 | 18 | "js_content1": "Custom collapsible implementations require comprehensive event handling, state synchronization across components, and careful attention to accessibility requirements including proper ARIA attributes and keyboard navigation patterns.", |
19 | 19 | "js_content2": "Managing state across multiple collapsible sections introduces complexity in event coordination, memory management, and performance optimization, particularly when dealing with dynamic content loading.", |
20 | | - "js_cons_title": "❌ Architecture Complexity:", |
| 20 | + "js_cons_title": "Issues: Architecture Complexity:", |
21 | 21 | "js_cons": [ |
22 | 22 | "Event delegation and memory leak prevention", |
23 | 23 | "ARIA state synchronization and keyboard trap management", |
|
32 | 32 | "native_enhancement_content": "Starting with functional HTML ensures graceful degradation across all environments. CSS and JavaScript become enhancement layers rather than functional requirements, improving reliability and reducing technical debt.", |
33 | 33 | "native_performance_title": "Performance Characteristics", |
34 | 34 | "native_performance_content": "Native elements eliminate bundle size overhead, reduce runtime memory consumption, and leverage browser optimizations unavailable to custom implementations. Hardware acceleration and efficient event handling come built-in.", |
35 | | - "native_pros_title": "✅ Platform Advantages:", |
| 35 | + "native_pros_title": "Benefits: Platform Advantages:", |
36 | 36 | "native_pros": [ |
37 | 37 | "Zero JavaScript footprint with full accessibility compliance", |
38 | 38 | "Browser-native performance optimizations and hardware acceleration", |
39 | 39 | "Consistent cross-platform behavior with no maintenance overhead" |
40 | 40 | ] |
41 | 41 | }, |
42 | 42 | "modals": { |
43 | | - "title": "🪟 Modal Dialog Patterns", |
| 43 | + "title": "Modal Dialog Patterns", |
44 | 44 | "js_title": "Custom Modal Implementation", |
45 | 45 | "js_badge": "BRITTLE", |
46 | 46 | "js_warning": "Critical Requirements: Focus trapping, inert background content, ESC key handling, backdrop click management, and ARIA modal semantics.", |
|
49 | 49 | "js_modal_content": "This approach requires managing the modal stack, preventing background interaction, coordinating focus management, and ensuring proper cleanup to avoid memory leaks and accessibility violations.", |
50 | 50 | "js_modal_issue": "Critical Issue: Background content remains accessible to screen readers and keyboard navigation without explicit inert management.", |
51 | 51 | "js_modal_close": "Close Modal", |
52 | | - "js_cons_title": "❌ Implementation Challenges:", |
| 52 | + "js_cons_title": "Issues: Implementation Challenges:", |
53 | 53 | "js_cons": [ |
54 | 54 | "Focus trap implementation and restoration complexity", |
55 | 55 | "Modal stack management and z-index coordination", |
|
63 | 63 | "native_dialog_content": "The HTML5 dialog element provides robust modal functionality with automatic focus management, backdrop interaction handling, and proper accessibility semantics built into the browser engine.", |
64 | 64 | "native_dialog_advantage": "Key Advantage: Background content becomes automatically inert, preventing interaction and screen reader access without additional implementation.", |
65 | 65 | "native_dialog_close": "Close Dialog", |
66 | | - "native_pros_title": "✅ Engine-Level Features:", |
| 66 | + "native_pros_title": "Benefits: Engine-Level Features:", |
67 | 67 | "native_pros": [ |
68 | 68 | "Automatic focus trapping with proper restoration", |
69 | 69 | "Built-in ESC key handling and backdrop click support", |
70 | 70 | "Modal semantics and inert background management" |
71 | 71 | ] |
72 | 72 | }, |
73 | 73 | "validation": { |
74 | | - "title": "📝 Constraint Validation Patterns", |
| 74 | + "title": "Constraint Validation Patterns", |
75 | 75 | "js_title": "Custom Validation Logic", |
76 | 76 | "js_badge": "FRAGILE", |
77 | 77 | "js_warning": "Validation Complexity: Custom error messaging, timing coordination, accessibility announcements, and server-client synchronization.", |
|
80 | 80 | "js_regex_label": "Pattern Matching (UUID)", |
81 | 81 | "js_regex_error": "UUID format required: 8-4-4-4-12 hex digits", |
82 | 82 | "js_submit": "Validate Form", |
83 | | - "js_cons_title": "❌ Validation Brittleness:", |
| 83 | + "js_cons_title": "Issues: Validation Brittleness:", |
84 | 84 | "js_cons": [ |
85 | 85 | "Regex patterns miss edge cases and internationalization", |
86 | 86 | "Error timing and accessibility announcement coordination", |
|
97 | 97 | "native_api_label": "API Endpoint URL", |
98 | 98 | "native_api_placeholder": "https://api.example.org/v1", |
99 | 99 | "native_submit": "Submit Form", |
100 | | - "native_pros_title": "✅ Specification Compliance:", |
| 100 | + "native_pros_title": "Benefits: Specification Compliance:", |
101 | 101 | "native_pros": [ |
102 | 102 | "RFC-compliant validation patterns with internationalization", |
103 | 103 | "Automatic error messaging in user's preferred language", |
104 | 104 | "CSS pseudo-classes (:valid, :invalid) for styling integration" |
105 | 105 | ] |
106 | 106 | }, |
107 | 107 | "progress": { |
108 | | - "title": "📊 Progress Indication Patterns", |
| 108 | + "title": "Progress Indication Patterns", |
109 | 109 | "js_title": "Custom Progress Implementation", |
110 | 110 | "js_badge": "SEMANTIC-VOID", |
111 | 111 | "js_warning": "Accessibility Gap: No semantic meaning without explicit ARIA implementation and screen reader progress announcements.", |
112 | 112 | "js_text": "Build Progress:", |
113 | 113 | "js_button": "Start Build Process", |
114 | | - "js_cons_title": "❌ Semantic Limitations:", |
| 114 | + "js_cons_title": "Issues: Semantic Limitations:", |
115 | 115 | "js_cons": [ |
116 | 116 | "No inherent semantic meaning for assistive technologies", |
117 | 117 | "Manual ARIA live region management for progress updates", |
|
126 | 126 | "native_indeterminate_text": "Processing dependencies...", |
127 | 127 | "native_dynamic": "Dynamic Progress:", |
128 | 128 | "native_button": "Start Process", |
129 | | - "native_pros_title": "✅ Semantic Advantages:", |
| 129 | + "native_pros_title": "Benefits: Semantic Advantages:", |
130 | 130 | "native_pros": [ |
131 | 131 | "Built-in progress role with automatic value announcements", |
132 | 132 | "Indeterminate state support for unknown duration operations", |
133 | 133 | "Platform-optimized rendering and animation performance" |
134 | 134 | ] |
135 | 135 | }, |
136 | 136 | "temporal": { |
137 | | - "title": "📅 Temporal Input Patterns", |
| 137 | + "title": "Temporal Input Patterns", |
138 | 138 | "js_title": "Custom Date Picker", |
139 | 139 | "js_badge": "HEAVYWEIGHT", |
140 | 140 | "js_warning": "Implementation Scope: Calendar widget architecture, keyboard navigation, internationalization, timezone handling, and mobile touch optimization.", |
141 | 141 | "js_label": "Deployment Date (Custom)", |
142 | 142 | "js_placeholder": "YYYY-MM-DD", |
143 | 143 | "js_picker_content": "[Calendar widget implementation]\nRequires: Date manipulation library, internationalization,\nkeyboard navigation, mobile gesture handling,\ntimezone calculations, accessibility compliance.", |
144 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 144 | + "js_cons_title": "Issues: Implementation Overhead:", |
145 | 145 | "js_cons": [ |
146 | 146 | "Large JavaScript libraries and complex calendar logic", |
147 | 147 | "Mobile UX inconsistency with platform date pickers", |
|
153 | 153 | "native_release_label": "Release Date", |
154 | 154 | "native_timestamp_label": "Build Timestamp", |
155 | 155 | "native_window_label": "Deployment Window", |
156 | | - "native_pros_title": "✅ Platform Integration:", |
| 156 | + "native_pros_title": "Benefits: Platform Integration:", |
157 | 157 | "native_pros": [ |
158 | 158 | "Zero-bundle impact with native OS picker integration", |
159 | 159 | "Automatic validation and internationalization support", |
160 | 160 | "Consistent UX aligned with platform conventions" |
161 | 161 | ] |
162 | 162 | }, |
163 | 163 | "fieldset": { |
164 | | - "title": "📋 Form Grouping Patterns", |
| 164 | + "title": "Form Grouping Patterns", |
165 | 165 | "js_title": "Custom Form Section", |
166 | 166 | "js_badge": "SEMANTIC-VOID", |
167 | 167 | "js_warning": "Accessibility Gap: No semantic grouping of related form controls without explicit ARIA group roles.", |
168 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 168 | + "js_cons_title": "Issues: Implementation Overhead:", |
169 | 169 | "js_cons": [ |
170 | 170 | "No inherent semantic grouping of form controls", |
171 | 171 | "Manual ARIA group role and labeling required", |
|
174 | 174 | "native_title": "Native Fieldset Element", |
175 | 175 | "native_badge": "SEMANTIC", |
176 | 176 | "native_note": "Form Semantics: Built-in grouping with legend, automatic disabled state propagation, and screen reader support.", |
177 | | - "native_pros_title": "✅ Semantic Advantages:", |
| 177 | + "native_pros_title": "Benefits: Semantic Advantages:", |
178 | 178 | "native_pros": [ |
179 | 179 | "Semantic grouping with legend as accessible name", |
180 | 180 | "Disabled attribute propagates to all child controls", |
181 | 181 | "Screen readers announce group and legend relationship" |
182 | 182 | ] |
183 | 183 | }, |
184 | 184 | "output": { |
185 | | - "title": "🔢 Output & Calculation Patterns", |
| 185 | + "title": "Output & Calculation Patterns", |
186 | 186 | "js_title": "Custom Calculation Display", |
187 | 187 | "js_badge": "SEMANTIC-VOID", |
188 | 188 | "js_warning": "Accessibility Gap: No semantic indication that content is a calculated result without explicit ARIA live regions.", |
189 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 189 | + "js_cons_title": "Issues: Implementation Overhead:", |
190 | 190 | "js_cons": [ |
191 | 191 | "No semantic indication of calculated result", |
192 | 192 | "Manual ARIA live region setup for updates", |
|
196 | 196 | "native_badge": "SEMANTIC", |
197 | 197 | "native_note": "Form Integration: Built-in calculation result semantics, automatic form association, and screen reader announcement.", |
198 | 198 | "native_calc_label": "Price Calculator", |
199 | | - "native_pros_title": "✅ Semantic Advantages:", |
| 199 | + "native_pros_title": "Benefits: Semantic Advantages:", |
200 | 200 | "native_pros": [ |
201 | 201 | "Semantic indication of calculated/computed result", |
202 | 202 | "Automatic form association via 'for' attribute", |
203 | 203 | "Screen readers announce as calculation output" |
204 | 204 | ] |
205 | 205 | }, |
206 | 206 | "meter": { |
207 | | - "title": "📏 Meter & Gauge Patterns", |
| 207 | + "title": "Meter & Gauge Patterns", |
208 | 208 | "js_title": "Custom Gauge Implementation", |
209 | 209 | "js_badge": "SEMANTIC-VOID", |
210 | 210 | "js_warning": "Accessibility Gap: No semantic distinction between progress and measurement without explicit ARIA roles.", |
211 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 211 | + "js_cons_title": "Issues: Implementation Overhead:", |
212 | 212 | "js_cons": [ |
213 | 213 | "No semantic distinction from progress bars", |
214 | 214 | "Manual color coding for low/high/optimum ranges", |
|
220 | 220 | "native_disk_label": "Disk Usage (70%)", |
221 | 221 | "native_battery_label": "Battery Level (25% - Low)", |
222 | 222 | "native_score_label": "Performance Score (92% - Optimal)", |
223 | | - "native_pros_title": "✅ Semantic Advantages:", |
| 223 | + "native_pros_title": "Benefits: Semantic Advantages:", |
224 | 224 | "native_pros": [ |
225 | 225 | "Semantic distinction from progress (measurement vs task)", |
226 | 226 | "Automatic color changes for low/high/optimum ranges", |
227 | 227 | "Screen readers announce value context appropriately" |
228 | 228 | ] |
229 | 229 | }, |
230 | 230 | "figure": { |
231 | | - "title": "🖼️ Figure & Caption Patterns", |
| 231 | + "title": "Figure & Caption Patterns", |
232 | 232 | "js_title": "Custom Image Caption", |
233 | 233 | "js_badge": "SEMANTIC-VOID", |
234 | 234 | "js_warning": "Accessibility Gap: No semantic association between image and caption without explicit ARIA attributes.", |
235 | | - "js_cons_title": "❌ Semantic Limitations:", |
| 235 | + "js_cons_title": "Issues: Semantic Limitations:", |
236 | 236 | "js_cons": [ |
237 | 237 | "No inherent association between content and caption", |
238 | 238 | "Manual ARIA labeling required for accessibility", |
|
241 | 241 | "native_title": "Native Figure Element", |
242 | 242 | "native_badge": "SEMANTIC", |
243 | 243 | "native_note": "Semantic Association: Built-in content-caption relationship, proper accessibility, works for images, code, quotes, and more.", |
244 | | - "native_pros_title": "✅ Semantic Advantages:", |
| 244 | + "native_pros_title": "Benefits: Semantic Advantages:", |
245 | 245 | "native_pros": [ |
246 | 246 | "Automatic content-caption semantic association", |
247 | 247 | "Works for images, code blocks, diagrams, quotes", |
248 | 248 | "Screen readers announce figure and caption relationship" |
249 | 249 | ] |
250 | 250 | }, |
251 | 251 | "popover": { |
252 | | - "title": "💬 Popover & Tooltip Patterns", |
| 252 | + "title": "Popover & Tooltip Patterns", |
253 | 253 | "js_title": "Custom Popover Implementation", |
254 | 254 | "js_badge": "COMPLEX", |
255 | 255 | "js_warning": "Implementation Scope: Positioning logic, viewport collision, z-index management, click-outside detection, and focus management.", |
256 | 256 | "js_button": "Show Custom Tooltip", |
257 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 257 | + "js_cons_title": "Issues: Implementation Overhead:", |
258 | 258 | "js_cons": [ |
259 | 259 | "Complex positioning algorithms for viewport collision", |
260 | 260 | "Manual click-outside and ESC key dismissal logic", |
|
266 | 266 | "native_button": "Show Native Popover", |
267 | 267 | "native_popover_title": "Native Popover", |
268 | 268 | "native_popover_content": "This popover uses the native popover API. Click outside or press ESC to dismiss.", |
269 | | - "native_pros_title": "✅ Native Advantages:", |
| 269 | + "native_pros_title": "Benefits: Native Advantages:", |
270 | 270 | "native_pros": [ |
271 | 271 | "Zero JavaScript with automatic light dismiss behavior", |
272 | 272 | "Built-in top-layer positioning (no z-index issues)", |
273 | 273 | "Keyboard accessible with ESC to close" |
274 | 274 | ] |
275 | 275 | }, |
276 | 276 | "color": { |
277 | | - "title": "🎨 Color Picker Patterns", |
| 277 | + "title": "Color Picker Patterns", |
278 | 278 | "js_title": "Custom Color Picker", |
279 | 279 | "js_badge": "HEAVYWEIGHT", |
280 | 280 | "js_warning": "Implementation Scope: Color space math, gradient rendering, hue/saturation controls, alpha channel, and format conversion (hex, rgb, hsl).", |
281 | 281 | "js_label": "Theme Color (Custom)", |
282 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 282 | + "js_cons_title": "Issues: Implementation Overhead:", |
283 | 283 | "js_cons": [ |
284 | 284 | "Complex color space mathematics and conversions", |
285 | 285 | "Custom UI for hue wheels, gradients, and alpha sliders", |
|
291 | 291 | "native_primary_label": "Primary Color", |
292 | 292 | "native_accent_label": "Accent Color", |
293 | 293 | "native_bg_label": "Background Color", |
294 | | - "native_pros_title": "✅ Native Advantages:", |
| 294 | + "native_pros_title": "Benefits: Native Advantages:", |
295 | 295 | "native_pros": [ |
296 | 296 | "Zero JavaScript with full OS color picker integration", |
297 | 297 | "Eyedropper tool on supported browsers (Chrome, Edge)", |
298 | 298 | "Automatic hex value handling with form integration" |
299 | 299 | ] |
300 | 300 | }, |
301 | 301 | "range": { |
302 | | - "title": "🎚️ Range Slider Patterns", |
| 302 | + "title": "Range Slider Patterns", |
303 | 303 | "js_title": "Custom Slider Implementation", |
304 | 304 | "js_badge": "COMPLEX", |
305 | 305 | "js_warning": "Implementation Scope: Drag handling, touch events, value interpolation, track/thumb styling, and ARIA slider semantics.", |
306 | 306 | "js_label": "Volume Control (Custom)", |
307 | | - "js_cons_title": "❌ Implementation Overhead:", |
| 307 | + "js_cons_title": "Issues: Implementation Overhead:", |
308 | 308 | "js_cons": [ |
309 | 309 | "Complex mouse/touch event coordination and drag handling", |
310 | 310 | "Manual ARIA slider implementation with value announcements", |
|
316 | 316 | "native_volume_label": "Volume Level", |
317 | 317 | "native_brightness_label": "Brightness", |
318 | 318 | "native_quality_label": "Quality (with ticks)", |
319 | | - "native_pros_title": "✅ Native Advantages:", |
| 319 | + "native_pros_title": "Benefits: Native Advantages:", |
320 | 320 | "native_pros": [ |
321 | 321 | "Zero JavaScript with full keyboard and touch support", |
322 | 322 | "Built-in ARIA slider role with automatic announcements", |
323 | 323 | "Datalist integration for tick marks and snap points" |
324 | 324 | ] |
325 | 325 | }, |
326 | 326 | "autocomplete": { |
327 | | - "title": "🔍 Autocomplete Patterns", |
| 327 | + "title": "Autocomplete Patterns", |
328 | 328 | "js_title": "Custom Autocomplete", |
329 | 329 | "js_badge": "INTERACTION-HEAVY", |
330 | 330 | "js_warning": "Interaction Complexity: Dropdown positioning, keyboard navigation, ARIA combobox implementation, and mobile touch handling.", |
331 | 331 | "js_label": "Framework Search (Custom)", |
332 | 332 | "js_placeholder": "Type framework name...", |
333 | | - "js_cons_title": "❌ Interaction Management:", |
| 333 | + "js_cons_title": "Issues: Interaction Management:", |
334 | 334 | "js_cons": [ |
335 | 335 | "Complex ARIA combobox implementation and state management", |
336 | 336 | "Dropdown positioning and viewport collision detection", |
|
343 | 343 | "native_framework_placeholder": "Select or type framework...", |
344 | 344 | "native_language_label": "Programming Language", |
345 | 345 | "native_language_placeholder": "Choose language...", |
346 | | - "native_pros_title": "✅ Zero-Configuration Benefits:", |
| 346 | + "native_pros_title": "Benefits: Zero-Configuration Benefits:", |
347 | 347 | "native_pros": [ |
348 | 348 | "Native combobox semantics with automatic ARIA support", |
349 | 349 | "Platform-consistent keyboard and interaction patterns", |
|
0 commit comments