/
mcmare
/
RustAPI
Обзор
Документация
Войти
/
mcmare
/
RustAPI
Код
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
engine/webui-assets/style.css
144 строки
5 KB
mcmare
Add input/output schema for script endpoints, redesign WebUI with Tailwind
19 июл 2026, 09:28
19 июл 2026, 09:28
f3df0d8
Код
Авторство
О чём код?
/* Rust-inspired palette: warm paper/near-black surfaces, terracotta accent tying back to the Rust language's own brand color. Tailwind (via CDN, see index.html) reads these as theme colors; this file only defines the tokens plus the handful of small, JS-driven component classes that Tailwind's no-build CDN mode can't generate on the fly (dynamic classNames set from app.js). */ :root { --bg: #f7f5f0; --surface: #ffffff; --surface-alt: #efeae1; --border: #e0d9cb; --text: #211d16; --text-muted: #6f6656; --accent: #b8420f; --accent-text: #ffffff; --danger: #c1391f; --success: #1f8a4c; --code-bg: #efeae1; --shadow: 0 1px 2px rgba(33, 29, 22, 0.08); } [data-theme="dark"] { --bg: #181410; --surface: #211b15; --surface-alt: #2b241c; --border: #3c3326; --text: #f2ede4; --text-muted: #a89a83; --accent: #e2703f; --accent-text: #1b140d; --danger: #ff6b52; --success: #4ad07f; --code-bg: #241d15; --shadow: 0 1px 3px rgba(0, 0, 0, 0.5); } tbody td { padding: 8px 12px; border-bottom: 1px solid var(--border); vertical-align: top; font-size: 13px; } tbody tr:last-child td { border-bottom: none; } /* Base look for buttons app.js creates without Tailwind classes (table row actions) — lower specificity than any Tailwind utility class, so it never overrides the classes set directly in index.html. */ button { cursor: pointer; font-size: 13px; border-radius: 6px; border: 1px solid var(--border); background: var(--surface-alt); color: var(--text); padding: 6px 12px; } button.danger { color: var(--danger); border-color: var(--danger); background: transparent; } button.ghost { background: transparent; border-color: transparent; } button:disabled { opacity: .5; cursor: default; } input[type="text"], input[type="password"], input[type="number"], select, textarea { width: 100%; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface-alt); color: var(--text); font-size: 13px; font-family: inherit; } input:focus, select:focus, textarea:focus, button:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; } textarea.code, .mono { font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace; } textarea.code { min-height: 220px; white-space: pre; font-size: 13px; } .mono { font-size: 12px; background: var(--code-bg); padding: 1px 5px; border-radius: 4px; } .field-list-row { display: flex; gap: 8px; margin-bottom: 6px; align-items: center; } .field-list-row input { flex: 2; } .field-list-row select { flex: 1; } .badge { display: inline-block; font-size: 11px; padding: 1px 8px; border-radius: 999px; background: var(--surface-alt); color: var(--text-muted); border: 1px solid var(--border); font-family: "IBM Plex Mono", ui-monospace, monospace; } .badge.readonly { color: var(--text-muted); } .badge.editable { color: var(--success); border-color: var(--success); } .method-badge { display: inline-block; min-width: 56px; text-align: center; font-family: "IBM Plex Mono", ui-monospace, monospace; font-size: 11px; font-weight: 600; letter-spacing: .02em; padding: 2px 8px; border-radius: 4px; border: 1px solid transparent; } .method-badge.get { background: color-mix(in srgb, #2f7bd1 15%, transparent); color: #2f7bd1; border-color: color-mix(in srgb, #2f7bd1 40%, transparent); } .method-badge.post { background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--accent); border-color: color-mix(in srgb, var(--accent) 40%, transparent); } .method-badge.put { background: color-mix(in srgb, #b8860b 15%, transparent); color: #b8860b; border-color: color-mix(in srgb, #b8860b 40%, transparent); } .method-badge.patch { background: color-mix(in srgb, #7c53c3 15%, transparent); color: #7c53c3; border-color: color-mix(in srgb, #7c53c3 40%, transparent); } .method-badge.delete { background: color-mix(in srgb, var(--danger) 15%, transparent); color: var(--danger); border-color: color-mix(in srgb, var(--danger) 40%, transparent); } .notice { font-size: 12px; color: var(--text-muted); margin-top: 8px; } .error-box { background: color-mix(in srgb, var(--danger) 12%, var(--surface)); border: 1px solid var(--danger); color: var(--danger); padding: 8px 12px; border-radius: 6px; font-size: 13px; margin-top: 10px; } .toast { position: fixed; bottom: 20px; right: 20px; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 10px 16px; box-shadow: var(--shadow); font-size: 13px; max-width: 360px; } .toast.error { border-color: var(--danger); color: var(--danger); } .toast.success { border-color: var(--success); color: var(--success); } @media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }