pixelsrc 0.2.0

Pixelsrc - GenAI-native pixel art format and compiler
Documentation
<!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>
    <!-- Skip link for keyboard navigation -->
    <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>