sync: migrate secure-online-shop to Gitea (2026-08-10)
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
<!doctype html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>SecureShop MVP</title>
|
||||
<link rel="stylesheet" href="/static/styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div class="app-shell">
|
||||
<header class="topbar">
|
||||
<a class="brand" href="/" aria-label="SecureShop">
|
||||
<span class="brand-mark">S</span>
|
||||
<span>
|
||||
<strong>SecureShop</strong>
|
||||
<small>защищенный online-shop MVP</small>
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<nav class="tabs" aria-label="Разделы">
|
||||
<button class="tab is-active" type="button" data-view="catalog">Каталог</button>
|
||||
<button class="tab" type="button" data-view="orders">Заказы</button>
|
||||
<button class="tab" type="button" data-view="shop">Магазин</button>
|
||||
</nav>
|
||||
|
||||
<div class="session-pill" id="sessionPill">Гость</div>
|
||||
</header>
|
||||
|
||||
<main class="layout">
|
||||
<section class="workspace" aria-live="polite">
|
||||
<div class="workspace-head">
|
||||
<div>
|
||||
<p class="eyebrow">Retail security flow</p>
|
||||
<h1 id="viewTitle">Каталог товаров</h1>
|
||||
</div>
|
||||
<div class="metrics">
|
||||
<span id="catalogMetric">0 товаров</span>
|
||||
<span id="cartMetric">0 в корзине</span>
|
||||
<span id="healthMetric">API</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<section class="view is-active" id="catalogView" aria-label="Каталог">
|
||||
<div class="toolbar">
|
||||
<label class="search-field">
|
||||
<span>Поиск</span>
|
||||
<input id="searchInput" type="search" autocomplete="off" placeholder="ноутбук, камера, рюкзак" />
|
||||
</label>
|
||||
<label class="select-field">
|
||||
<span>Сортировка</span>
|
||||
<select id="sortSelect">
|
||||
<option value="new">Сначала новые</option>
|
||||
<option value="price-asc">Цена по возрастанию</option>
|
||||
<option value="price-desc">Цена по убыванию</option>
|
||||
<option value="stock">Больше остатков</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
<div class="product-grid" id="productGrid"></div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="ordersView" aria-label="Заказы">
|
||||
<div class="orders-list" id="ordersList"></div>
|
||||
</section>
|
||||
|
||||
<section class="view" id="shopView" aria-label="Панель магазина">
|
||||
<form class="shop-form" id="productForm">
|
||||
<div class="form-head">
|
||||
<p class="eyebrow">Shop role</p>
|
||||
<h2>Новый товар</h2>
|
||||
</div>
|
||||
<div class="form-grid">
|
||||
<label>
|
||||
Название
|
||||
<input name="name" required minlength="3" maxlength="120" placeholder="Secure Router" />
|
||||
</label>
|
||||
<label>
|
||||
Цена
|
||||
<input name="price" required type="number" min="0.01" step="0.01" placeholder="149.99" />
|
||||
</label>
|
||||
<label>
|
||||
Остаток
|
||||
<input name="stock" required type="number" min="0" max="1000000" step="1" placeholder="24" />
|
||||
</label>
|
||||
<label class="wide">
|
||||
Описание
|
||||
<textarea name="description" maxlength="1000" placeholder="Краткое описание товара"></textarea>
|
||||
</label>
|
||||
</div>
|
||||
<button class="primary-action" type="submit">Добавить товар</button>
|
||||
</form>
|
||||
<div class="shop-empty" id="shopGate"></div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<aside class="side-panel" aria-label="Покупка и аккаунт">
|
||||
<section class="panel-block" id="authPanel"></section>
|
||||
<section class="panel-block">
|
||||
<div class="panel-title">
|
||||
<h2>Корзина</h2>
|
||||
<button class="ghost-action" type="button" id="clearCartButton">Очистить</button>
|
||||
</div>
|
||||
<div class="cart-list" id="cartList"></div>
|
||||
<div class="cart-total">
|
||||
<span>Итого</span>
|
||||
<strong id="cartTotal">$0.00</strong>
|
||||
</div>
|
||||
<button class="primary-action" type="button" id="checkoutButton">Оформить заказ</button>
|
||||
</section>
|
||||
</aside>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
<div class="toast" id="toast" role="status" aria-live="polite"></div>
|
||||
<script src="/static/app.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user