<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Pixelsrc - Pixel Art Editor</title>
<link rel="stylesheet" href="/src/style.css" />
</head>
<body>
<a href="#main" class="skip-link">Skip to main content</a>
<div id="loading-overlay" role="alert" aria-live="assertive">
<div class="loading-content">
<div class="loading-logo">
<span class="pixel-icon">▣</span>
<span class="loading-title">Pixelsrc</span>
</div>
<div class="loading-spinner"></div>
<p class="loading-text">Initializing...</p>
</div>
</div>
<div id="app">
<header id="header">
<div class="brand">
<div class="logo" aria-hidden="true">
<span class="logo-pixel p1"></span>
<span class="logo-pixel p2"></span>
<span class="logo-pixel p3"></span>
<span class="logo-pixel p4"></span>
</div>
<div class="brand-text">
<h1>Pixel<span class="accent">src</span></h1>
<p class="tagline">GenAI-native pixel art format</p>
</div>
</div>
<nav class="header-nav" aria-label="External links">
<a href="https://github.com/scbrown/pixelsrc" class="nav-link" target="_blank" rel="noopener noreferrer">
GitHub<span class="visually-hidden"> (opens in new tab)</span>
</a>
<a href="/book/" class="nav-link">
Docs
</a>
</nav>
</header>
<main id="main">
<section id="editor-panel" class="panel" aria-labelledby="editor-heading">
<div class="panel-header">
<h2 id="editor-heading">Editor</h2>
</div>
<div class="panel-content">
<label for="editor" class="visually-hidden">Pixelsrc JSONL code editor</label>
<textarea id="editor" placeholder="Enter your Pixelsrc JSONL here..." aria-describedby="editor-hint"></textarea>
<span id="editor-hint" class="visually-hidden">Press Ctrl+Enter or Cmd+Enter to render</span>
</div>
</section>
<section id="preview-panel" class="panel" aria-labelledby="preview-heading">
<div class="panel-header">
<h2 id="preview-heading">Preview</h2>
<div class="preview-controls">
<button id="render-btn" aria-describedby="render-hint">Render</button>
<span id="render-hint" class="visually-hidden">Renders the JSONL code as pixel art</span>
<div id="export-controls" role="group" aria-label="Export options"></div>
</div>
</div>
<div class="panel-content preview-content">
<div id="preview-wrapper">
<div id="preview-canvas" role="img" aria-label="Rendered pixel art preview"></div>
<div id="preview-empty" class="preview-empty">
<div class="empty-icon" aria-hidden="true">🎨</div>
<p class="empty-text">Your pixel art will appear here</p>
<p class="empty-hint">
Click an example below to get started,<br>
or paste Pixelsrc JSONL in the editor
</p>
<button class="empty-cta" id="load-first-example">
Try the Heart example
</button>
</div>
<div id="zoom-indicator" class="zoom-indicator hidden">
<span class="zoom-value"></span>
</div>
</div>
<div id="preview-error" class="error hidden" role="alert" aria-live="assertive"></div>
<div id="preview-status" class="preview-status hidden" role="status" aria-live="polite">
<span class="status-icon" aria-hidden="true"></span>
<span class="status-text"></span>
</div>
</div>
</section>
</main>
<section id="gallery-panel" class="panel" aria-labelledby="gallery-heading">
<div class="panel-header">
<h2 id="gallery-heading">Gallery</h2>
</div>
<div class="panel-content">
<div id="gallery" class="gallery-grid" role="list" aria-label="Example sprites"></div>
</div>
</section>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>