My agentic slop goes here. Not intended for anyone else!
at main 15 kB view raw
1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Bushel Author Component Demo</title> 7 <script src="bushel-author.js"></script> 8 <style> 9 body { 10 font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 11 max-width: 1200px; 12 margin: 0 auto; 13 padding: 2rem; 14 line-height: 1.6; 15 } 16 17 .demo-section { 18 margin: 3rem 0; 19 padding: 2rem; 20 border: 1px solid #e9ecef; 21 border-radius: 0.5rem; 22 background: #f8f9fa; 23 } 24 25 .demo-section h2 { 26 margin-top: 0; 27 color: #495057; 28 } 29 30 .demo-grid { 31 display: grid; 32 gap: 2rem; 33 grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); 34 margin-top: 1.5rem; 35 } 36 37 .demo-item { 38 padding: 1rem; 39 background: white; 40 border-radius: 0.25rem; 41 border: 1px solid #dee2e6; 42 } 43 44 .demo-item h3 { 45 margin-top: 0; 46 font-size: 1rem; 47 color: #6c757d; 48 } 49 50 pre { 51 background: #f1f3f4; 52 padding: 1rem; 53 border-radius: 0.25rem; 54 overflow-x: auto; 55 font-size: 0.875rem; 56 } 57 58 .custom-styles { 59 --bushel-author-name-color: #d63384; 60 --bushel-author-photo-radius: 0.25rem; 61 --bushel-author-background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 62 --bushel-author-padding: 1rem; 63 --bushel-author-border-radius: 0.5rem; 64 color: white; 65 } 66 </style> 67</head> 68<body> 69 <h1>Bushel Author Web Component Demo</h1> 70 71 <p>This component generates semantic HTML with h-card microformats for author information, 72 automatically expanding simple attributes into rich, accessible markup.</p> 73 74 <div class="demo-section"> 75 <h2>Basic Usage</h2> 76 <div class="demo-grid"> 77 <div class="demo-item"> 78 <h3>Minimal Example</h3> 79 <bushel-author 80 name="Jane Smith" 81 github="janesmith"> 82 </bushel-author> 83 84 <pre>&lt;bushel-author 85 name="Jane Smith" 86 github="janesmith"&gt; 87&lt;/bushel-author&gt;</pre> 88 </div> 89 90 <div class="demo-item"> 91 <h3>With Photo and Links</h3> 92 <bushel-author 93 name="Alex Chen" 94 photo="https://picsum.photos/200/200?random=1" 95 website="https://alexchen.dev" 96 github="alexchen" 97 mastodon="https://mastodon.social/@alexchen" 98 link-profile> 99 </bushel-author> 100 101 <pre>&lt;bushel-author 102 name="Alex Chen" 103 photo="https://picsum.photos/200/200?random=1" 104 website="https://alexchen.dev" 105 github="alexchen" 106 mastodon="https://mastodon.social/@alexchen" 107 link-profile&gt; 108&lt;/bushel-author&gt;</pre> 109 </div> 110 </div> 111 </div> 112 113 <div class="demo-section"> 114 <h2>Display Modes</h2> 115 <div class="demo-grid"> 116 <div class="demo-item"> 117 <h3>Inline (Default)</h3> 118 <bushel-author 119 name="Dr. Sarah Johnson" 120 job-title="Senior Researcher" 121 org="MIT" 122 photo="https://picsum.photos/200/200?random=2" 123 email="sarah@mit.edu"> 124 </bushel-author> 125 126 <pre>&lt;bushel-author 127 name="Dr. Sarah Johnson" 128 job-title="Senior Researcher" 129 org="MIT" 130 photo="https://picsum.photos/200/200?random=2" 131 email="sarah@mit.edu"&gt; 132&lt;/bushel-author&gt;</pre> 133 </div> 134 135 <div class="demo-item"> 136 <h3>Card Mode</h3> 137 <bushel-author 138 display-mode="card" 139 name="Marcus Williams" 140 job-title="Frontend Developer" 141 org="TechCorp" 142 photo="https://picsum.photos/200/200?random=3" 143 bio="Building accessible web experiences with modern technologies." 144 github="marcusw" 145 twitter="marcusw_dev"> 146 </bushel-author> 147 148 <pre>&lt;bushel-author 149 display-mode="card" 150 name="Marcus Williams" 151 job-title="Frontend Developer" 152 org="TechCorp" 153 photo="https://picsum.photos/200/200?random=3" 154 bio="Building accessible web experiences." 155 github="marcusw" 156 twitter="marcusw_dev"&gt; 157&lt;/bushel-author&gt;</pre> 158 </div> 159 160 <div class="demo-item"> 161 <h3>Compact Mode</h3> 162 <bushel-author 163 display-mode="compact" 164 name="Emma Rodriguez" 165 photo="https://picsum.photos/200/200?random=4" 166 github="emmarodriguez"> 167 </bushel-author> 168 169 <pre>&lt;bushel-author 170 display-mode="compact" 171 name="Emma Rodriguez" 172 photo="https://picsum.photos/200/200?random=4" 173 github="emmarodriguez"&gt; 174&lt;/bushel-author&gt;</pre> 175 </div> 176 </div> 177 </div> 178 179 <div class="demo-section"> 180 <h2>Structured Names</h2> 181 <div class="demo-grid"> 182 <div class="demo-item"> 183 <h3>Separate Name Parts</h3> 184 <bushel-author 185 given-name="Robert" 186 family-name="Taylor" 187 nickname="Bob" 188 photo="https://picsum.photos/200/200?random=5" 189 job-title="UX Designer"> 190 </bushel-author> 191 192 <pre>&lt;bushel-author 193 given-name="Robert" 194 family-name="Taylor" 195 nickname="Bob" 196 photo="https://picsum.photos/200/200?random=5" 197 job-title="UX Designer"&gt; 198&lt;/bushel-author&gt;</pre> 199 200 <p><small>Note: Structured name parts are embedded as hidden microformat data while displaying the formatted name.</small></p> 201 </div> 202 </div> 203 </div> 204 205 <div class="demo-section"> 206 <h2>Custom Styling</h2> 207 <div class="demo-grid"> 208 <div class="demo-item"> 209 <h3>CSS Custom Properties</h3> 210 <bushel-author 211 class="custom-styles" 212 name="Luna Zhang" 213 job-title="Creative Director" 214 photo="https://picsum.photos/200/200?random=6" 215 website="https://lunazhang.com" 216 link-profile> 217 </bushel-author> 218 219 <pre>&lt;bushel-author 220 class="custom-styles" 221 name="Luna Zhang" 222 job-title="Creative Director" 223 photo="https://picsum.photos/200/200?random=6" 224 website="https://lunazhang.com" 225 link-profile&gt; 226&lt;/bushel-author&gt; 227 228&lt;style&gt; 229.custom-styles { 230 --bushel-author-name-color: #d63384; 231 --bushel-author-photo-radius: 0.25rem; 232 --bushel-author-background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); 233 --bushel-author-padding: 1rem; 234 --bushel-author-border-radius: 0.5rem; 235 color: white; 236} 237&lt;/style&gt;</pre> 238 </div> 239 </div> 240 </div> 241 242 <div class="demo-section"> 243 <h2>Generated HTML Structure</h2> 244 <p>Each component generates semantic HTML with h-card microformats:</p> 245 <pre>&lt;div class="h-card bushel-author-card"&gt; 246 &lt;img class="u-photo author-photo" src="..." alt="Photo of John Doe"&gt; 247 &lt;div class="author-info"&gt; 248 &lt;a class="p-name author-name u-url" href="https://johndoe.com"&gt; 249 John Doe 250 &lt;span class="p-given-name visually-hidden"&gt;John&lt;/span&gt; 251 &lt;span class="p-family-name visually-hidden"&gt;Doe&lt;/span&gt; 252 &lt;/a&gt; 253 &lt;div class="author-title"&gt; 254 &lt;span class="p-job-title"&gt;Software Engineer&lt;/span&gt; at 255 &lt;span class="p-org"&gt;Acme Corp&lt;/span&gt; 256 &lt;/div&gt; 257 &lt;div class="p-note author-bio"&gt;Building great software.&lt;/div&gt; 258 &lt;div class="author-social"&gt; 259 &lt;a class="u-email social-link" href="mailto:john@example.com"&gt;Email&lt;/a&gt; 260 &lt;a class="u-url social-link" href="https://github.com/johndoe" rel="me"&gt;GitHub&lt;/a&gt; 261 &lt;/div&gt; 262 &lt;/div&gt; 263&lt;/div&gt;</pre> 264 </div> 265 266 <div class="demo-section"> 267 <h2>Available Attributes</h2> 268 <table style="width: 100%; border-collapse: collapse; margin-top: 1rem;"> 269 <thead> 270 <tr style="background: #e9ecef;"> 271 <th style="padding: 0.75rem; text-align: left; border: 1px solid #dee2e6;">Attribute</th> 272 <th style="padding: 0.75rem; text-align: left; border: 1px solid #dee2e6;">Description</th> 273 <th style="padding: 0.75rem; text-align: left; border: 1px solid #dee2e6;">Microformat Class</th> 274 </tr> 275 </thead> 276 <tbody> 277 <tr> 278 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>name</code></td> 279 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Full display name</td> 280 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-name</code></td> 281 </tr> 282 <tr style="background: #f8f9fa;"> 283 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>given-name</code></td> 284 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">First name</td> 285 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-given-name</code></td> 286 </tr> 287 <tr> 288 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>family-name</code></td> 289 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Last name</td> 290 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-family-name</code></td> 291 </tr> 292 <tr style="background: #f8f9fa;"> 293 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>nickname</code></td> 294 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Alias or handle</td> 295 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-nickname</code></td> 296 </tr> 297 <tr> 298 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>email</code></td> 299 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Email address</td> 300 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>u-email</code></td> 301 </tr> 302 <tr style="background: #f8f9fa;"> 303 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>website</code></td> 304 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Personal website URL</td> 305 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>u-url</code></td> 306 </tr> 307 <tr> 308 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>photo</code></td> 309 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Profile photo URL</td> 310 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>u-photo</code></td> 311 </tr> 312 <tr style="background: #f8f9fa;"> 313 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>bio</code></td> 314 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Biography or description</td> 315 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-note</code></td> 316 </tr> 317 <tr> 318 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>org</code></td> 319 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Organization name</td> 320 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-org</code></td> 321 </tr> 322 <tr style="background: #f8f9fa;"> 323 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>job-title</code></td> 324 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Job title or role</td> 325 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>p-job-title</code></td> 326 </tr> 327 <tr> 328 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>github</code></td> 329 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">GitHub username</td> 330 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>u-url</code></td> 331 </tr> 332 <tr style="background: #f8f9fa;"> 333 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>mastodon</code></td> 334 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Full Mastodon profile URL</td> 335 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>u-url</code></td> 336 </tr> 337 <tr> 338 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>twitter</code></td> 339 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Twitter username</td> 340 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>u-url</code></td> 341 </tr> 342 <tr style="background: #f8f9fa;"> 343 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>display-mode</code></td> 344 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Layout: inline, card, compact</td> 345 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">-</td> 346 </tr> 347 <tr> 348 <td style="padding: 0.75rem; border: 1px solid #dee2e6;"><code>link-profile</code></td> 349 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">Make name clickable to website</td> 350 <td style="padding: 0.75rem; border: 1px solid #dee2e6;">-</td> 351 </tr> 352 </tbody> 353 </table> 354 </div> 355</body> 356</html>