112 lines
4.4 KiB
HTML
112 lines
4.4 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link rel="icon" href="/static/icon.svg" type="image/svg+xml" />
|
|
<link rel="stylesheet" href="/static/styles.css" />
|
|
<title>NDBS Console</title>
|
|
</head>
|
|
<body>
|
|
<div class="app-shell">
|
|
<aside class="sidebar">
|
|
<div class="brand">
|
|
<div class="brand-title">NDBS Console</div>
|
|
<div class="brand-subtitle">Single-service balance editor</div>
|
|
</div>
|
|
<div class="quick-actions">
|
|
<button id="refresh-button" class="ghost">Refresh</button>
|
|
</div>
|
|
<input id="filter-input" class="filter-input" placeholder="Filter files" />
|
|
<div class="list-section">
|
|
<div class="section-header">
|
|
<span>Definitions</span>
|
|
<span id="definitions-count" class="section-count">0</span>
|
|
</div>
|
|
<div id="definitions-list" class="nav-list"></div>
|
|
</div>
|
|
<div class="list-section">
|
|
<div class="section-header">
|
|
<span>Rules</span>
|
|
<span id="rules-count" class="section-count">0</span>
|
|
</div>
|
|
<div id="rules-list" class="nav-list"></div>
|
|
</div>
|
|
</aside>
|
|
<main class="main">
|
|
<section class="panel hero">
|
|
<div class="hero-top">NDBS 2.0</div>
|
|
<h1>Numerical design studio</h1>
|
|
<p>
|
|
Edit JSON and TRES definitions, generate new rule scripts, and sanity-check
|
|
builds without running a separate frontend stack.
|
|
</p>
|
|
</section>
|
|
|
|
<section class="panel controls">
|
|
<div class="panel-title">Rule controls</div>
|
|
<div class="control-row">
|
|
<input id="new-rule-id" class="text-input" placeholder="new_rule_id" />
|
|
<button id="create-rule">Create</button>
|
|
<button id="build-button" class="ghost">Verify build</button>
|
|
</div>
|
|
<div id="build-output" class="build-output"></div>
|
|
</section>
|
|
|
|
<section class="panel guide">
|
|
<div class="panel-title">Definition guide</div>
|
|
<div id="guide-title" class="guide-title">No definition selected</div>
|
|
<div id="guide-desc" class="guide-desc">
|
|
Select a definition file to see expected fields and templates.
|
|
</div>
|
|
<div id="guide-fields" class="guide-fields"></div>
|
|
<div class="guide-actions">
|
|
<button id="insert-template" class="ghost">Insert template</button>
|
|
<button id="validate-file">Validate file</button>
|
|
<button id="validate-all" class="ghost">Validate all</button>
|
|
</div>
|
|
<div id="validation-output" class="build-output hidden"></div>
|
|
</section>
|
|
|
|
<section class="panel editor-panel">
|
|
<div class="editor-header">
|
|
<div>
|
|
<div id="editor-title" class="panel-title">No file selected</div>
|
|
<div id="editor-subtitle" class="panel-subtitle">
|
|
Pick a definition or rule from the sidebar.
|
|
</div>
|
|
</div>
|
|
<div class="editor-actions">
|
|
<div class="view-toggle">
|
|
<button id="view-raw" class="ghost">Raw</button>
|
|
<button id="view-structured">Structured</button>
|
|
</div>
|
|
<button id="format-button" class="ghost">Format</button>
|
|
<button id="save-button">Save</button>
|
|
</div>
|
|
</div>
|
|
<div id="schema-summary" class="schema-summary hidden"></div>
|
|
<div id="structured-editor" class="structured hidden">
|
|
<div class="structured-toolbar">
|
|
<select id="entry-select" class="text-input"></select>
|
|
<button id="add-entry" class="ghost">Add entry</button>
|
|
<button id="delete-entry" class="ghost">Delete entry</button>
|
|
</div>
|
|
<div id="structured-form" class="structured-form"></div>
|
|
</div>
|
|
<div id="raw-editor" class="raw-editor">
|
|
<textarea
|
|
id="editor-textarea"
|
|
class="code-area"
|
|
spellcheck="false"
|
|
placeholder="Open a file to start editing."
|
|
></textarea>
|
|
</div>
|
|
<div id="status-message" class="status-message"></div>
|
|
</section>
|
|
</main>
|
|
</div>
|
|
<script src="/static/app.js"></script>
|
|
</body>
|
|
</html>
|