chore: initialize monorepo with project scaffolding, configs, and CI setup
This commit is contained in:
33
apps/explorer-web/src/components/dataModeToggle.js
Normal file
33
apps/explorer-web/src/components/dataModeToggle.js
Normal file
@@ -0,0 +1,33 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.initDataModeToggle = initDataModeToggle;
|
||||
var config_1 = require("../config");
|
||||
var mockData_1 = require("../lib/mockData");
|
||||
var LABELS = {
|
||||
mock: "Mock Data",
|
||||
live: "Live API",
|
||||
};
|
||||
function initDataModeToggle(onChange) {
|
||||
var container = document.querySelector("[data-role='data-mode-toggle']");
|
||||
if (!container) {
|
||||
return;
|
||||
}
|
||||
container.innerHTML = renderControls((0, mockData_1.getDataMode)());
|
||||
var select = container.querySelector("select[data-mode-select]");
|
||||
if (!select) {
|
||||
return;
|
||||
}
|
||||
select.value = (0, mockData_1.getDataMode)();
|
||||
select.addEventListener("change", function (event) {
|
||||
var value = event.target.value;
|
||||
(0, mockData_1.setDataMode)(value);
|
||||
document.documentElement.dataset.mode = value;
|
||||
onChange();
|
||||
});
|
||||
}
|
||||
function renderControls(mode) {
|
||||
var options = Object.keys(LABELS)
|
||||
.map(function (id) { return "<option value=\"".concat(id, "\" ").concat(id === mode ? "selected" : "", ">").concat(LABELS[id], "</option>"); })
|
||||
.join("");
|
||||
return "\n <label class=\"data-mode-toggle\">\n <span>Data Mode</span>\n <select data-mode-select>\n ".concat(options, "\n </select>\n <small>").concat(mode === "mock" ? "Static JSON samples" : "Coordinator API (".concat(config_1.CONFIG.apiBaseUrl, ")"), "</small>\n </label>\n ");
|
||||
}
|
||||
45
apps/explorer-web/src/components/dataModeToggle.ts
Normal file
45
apps/explorer-web/src/components/dataModeToggle.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { CONFIG, type DataMode } from "../config";
|
||||
import { getDataMode, setDataMode } from "../lib/mockData";
|
||||
|
||||
const LABELS: Record<DataMode, string> = {
|
||||
mock: "Mock Data",
|
||||
live: "Live API",
|
||||
};
|
||||
|
||||
export function initDataModeToggle(onChange: () => void): void {
|
||||
const container = document.querySelector<HTMLDivElement>("[data-role='data-mode-toggle']");
|
||||
if (!container) {
|
||||
return;
|
||||
}
|
||||
|
||||
container.innerHTML = renderControls(getDataMode());
|
||||
|
||||
const select = container.querySelector<HTMLSelectElement>("select[data-mode-select]");
|
||||
if (!select) {
|
||||
return;
|
||||
}
|
||||
|
||||
select.value = getDataMode();
|
||||
select.addEventListener("change", (event) => {
|
||||
const value = (event.target as HTMLSelectElement).value as DataMode;
|
||||
setDataMode(value);
|
||||
document.documentElement.dataset.mode = value;
|
||||
onChange();
|
||||
});
|
||||
}
|
||||
|
||||
function renderControls(mode: DataMode): string {
|
||||
const options = (Object.keys(LABELS) as DataMode[])
|
||||
.map((id) => `<option value="${id}" ${id === mode ? "selected" : ""}>${LABELS[id]}</option>`)
|
||||
.join("");
|
||||
|
||||
return `
|
||||
<label class="data-mode-toggle">
|
||||
<span>Data Mode</span>
|
||||
<select data-mode-select>
|
||||
${options}
|
||||
</select>
|
||||
<small>${mode === "mock" ? "Static JSON samples" : `Coordinator API (${CONFIG.apiBaseUrl})`}</small>
|
||||
</label>
|
||||
`;
|
||||
}
|
||||
7
apps/explorer-web/src/components/siteFooter.js
Normal file
7
apps/explorer-web/src/components/siteFooter.js
Normal file
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.siteFooter = siteFooter;
|
||||
function siteFooter() {
|
||||
var year = new Date().getFullYear();
|
||||
return "\n <footer class=\"site-footer\">\n <div class=\"site-footer__inner\">\n <p>© ".concat(year, " AITBC Foundation. Explorer UI under active development.</p>\n </div>\n </footer>\n ");
|
||||
}
|
||||
10
apps/explorer-web/src/components/siteFooter.ts
Normal file
10
apps/explorer-web/src/components/siteFooter.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
export function siteFooter(): string {
|
||||
const year = new Date().getFullYear();
|
||||
return `
|
||||
<footer class="site-footer">
|
||||
<div class="site-footer__inner">
|
||||
<p>© ${year} AITBC Foundation. Explorer UI under active development.</p>
|
||||
</div>
|
||||
</footer>
|
||||
`;
|
||||
}
|
||||
6
apps/explorer-web/src/components/siteHeader.js
Normal file
6
apps/explorer-web/src/components/siteHeader.js
Normal file
@@ -0,0 +1,6 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.siteHeader = siteHeader;
|
||||
function siteHeader(title) {
|
||||
return "\n <header class=\"site-header\">\n <div class=\"site-header__inner\">\n <a class=\"site-header__brand\" href=\"/\">AITBC Explorer</a>\n <h1 class=\"site-header__title\">".concat(title, "</h1>\n <div class=\"site-header__controls\">\n <div data-role=\"data-mode-toggle\"></div>\n </div>\n <nav class=\"site-header__nav\">\n <a href=\"/\">Overview</a>\n <a href=\"/blocks\">Blocks</a>\n <a href=\"/transactions\">Transactions</a>\n <a href=\"/addresses\">Addresses</a>\n <a href=\"/receipts\">Receipts</a>\n </nav>\n </div>\n </header>\n ");
|
||||
}
|
||||
20
apps/explorer-web/src/components/siteHeader.ts
Normal file
20
apps/explorer-web/src/components/siteHeader.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
export function siteHeader(title: string): string {
|
||||
return `
|
||||
<header class="site-header">
|
||||
<div class="site-header__inner">
|
||||
<a class="site-header__brand" href="/">AITBC Explorer</a>
|
||||
<h1 class="site-header__title">${title}</h1>
|
||||
<div class="site-header__controls">
|
||||
<div data-role="data-mode-toggle"></div>
|
||||
</div>
|
||||
<nav class="site-header__nav">
|
||||
<a href="/">Overview</a>
|
||||
<a href="/blocks">Blocks</a>
|
||||
<a href="/transactions">Transactions</a>
|
||||
<a href="/addresses">Addresses</a>
|
||||
<a href="/receipts">Receipts</a>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
`;
|
||||
}
|
||||
Reference in New Issue
Block a user