-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.html
More file actions
76 lines (71 loc) · 5.24 KB
/
Copy pathindex.html
File metadata and controls
76 lines (71 loc) · 5.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>Pyro - VPython Browser Editor</title>
</head>
<body>
<!-- Skip navigation link for keyboard users -->
<a href="#editor" class="skip-nav" id="skip-nav">Skip to editor</a>
<!-- Sidebar is created dynamically by src/sidebar.ts -->
<!-- Live region for screen reader announcements -->
<div id="sr-announcements" class="sr-only" aria-live="polite" aria-atomic="true"></div>
<div id="app-wrapper">
<header>
<h1>Pyro</h1>
<div class="controls" role="toolbar" aria-label="View controls">
<!-- biome-ignore lint/a11y/useSemanticElements: <fieldset>/<legend> would break button-group layout and require CSS restructuring -->
<div class="view-mode-group" role="group" aria-label="Layout mode">
<button type="button" id="view-code-btn" class="view-mode-btn" title="Code only" aria-label="Code only view" aria-pressed="false">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
</button>
<button type="button" id="view-split-btn" class="view-mode-btn active" title="Split view" aria-label="Split view" aria-pressed="true">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><line x1="12" y1="3" x2="12" y2="21"/></svg>
</button>
<button type="button" id="view-output-btn" class="view-mode-btn" title="Output only" aria-label="Output only view" aria-pressed="false">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="3" width="18" height="18" rx="2"/><polygon points="10 8 16 12 10 16" fill="currentColor" stroke="none"/></svg>
</button>
</div>
<select id="examples-select" title="Load example code" aria-label="Load example code">
<option value="">-- Examples --</option>
<!-- Options populated dynamically from src/examples/ -->
</select>
</div>
</header>
<main>
<section class="panel editor-panel" aria-label="Code editor">
<div class="panel-header" id="editor-panel-header">Editor</div>
<div id="editor"></div>
</section>
<!-- biome-ignore lint/a11y/useSemanticElements: interactive splitter widget requires role="separator" on a div; <hr> cannot hold tabindex or aria-valuenow -->
<div class="gutter" id="gutter" role="separator" aria-label="Resize panels: use left/right arrows to adjust, Home/End for min/max" aria-orientation="horizontal" aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" tabindex="0"></div>
<section class="panel output-panel" aria-label="Output and instructions">
<div class="panel-header output-panel-header">
<div class="output-panel-tabs" role="tablist" aria-label="Output panel tabs">
<button type="button" id="tab-output" role="tab" aria-selected="false" aria-controls="output-content" data-tab="output">Output</button>
<button type="button" id="tab-instructions" role="tab" aria-selected="true" aria-controls="instructions-content" data-tab="instructions">Instructions</button>
</div>
<button type="button" id="toggle-console" class="console-toggle" title="Toggle console" aria-label="Toggle console panel" aria-expanded="false">Console</button>
</div>
<div id="output-content" role="tabpanel" class="output-tab-content" aria-labelledby="tab-output" hidden>
<section id="output" aria-label="3D visualization output"></section>
<div id="console-panel" role="log" aria-label="Console output">
<div class="console-header">
<span>Console Output</span>
<button type="button" id="clear-console" title="Clear console" aria-label="Clear console output">Clear</button>
</div>
<div id="console-output" aria-live="polite"></div>
</div>
<div id="error-display" role="alert" aria-label="Error messages"></div>
</div>
<div id="instructions-content" role="tabpanel" class="instructions-tab-content" aria-labelledby="tab-instructions">
<div id="instructions-body" class="instructions-body"></div>
</div>
</section>
</main>
</div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>