Files
danmu_api/danmu_api/ui/css/responsive.css.js
T
Elegy233 96602d6a7e refactor(ui): 前端图标统一为自绘线性 SVG 图标,替换原有 emoji 图标 (#473)
* refactor(ui): 界面图标统一为自绘线性 SVG 图标,替换原有 emoji 图标

界面中充当图标的 emoji 除底部彩色的 TG 链接外,全部替换为统一的线性图标。新增
ui/js/icons.js 图标库(32 个图标,24×24 网格、2px 圆头描边),以 SVG sprite 内联于
页面并通过 <use> 引用;图标尺寸随所在文字字号缩放,描边取 currentColor,颜色随容器、
八种强调色主题与明暗模式适配。

- 按钮、配置分类导航、搜索分组标题、状态行、徽标与映射行的图标全部替换
- 图标与文字并列处改用 flex 容器居中对齐
- 「重新部署」使用云与上行箭头,「弹幕配置」使用评论气泡
- 合并模式徽标切换改为只更新标签文本
- 为 .confirm-merge-btn:disabled 设置文字颜色

* refactor(ui): 配置分类导航统一渲染并补齐配置界面细节

- 映射表编辑界面(TITLE_MAPPING_TABLE、AUTO_MATCH_MAPPING_TABLE)增加「查看最近数据」按钮,仅查看缓存、不参与自动填充
- 配置预览与环境变量配置的分类按钮、搜索分组标题统一为同一渲染函数,消除两份平行实现
- 页头「当前版本」「最新版本」「API 端点」徽标补齐图标并对齐风格,当前版本为主视觉、最新版本为次要
- 各样式表头注释中「ACG 设计系统」描述改为「柔和圆角设计风格」

* feat(ui): 映射表查看数据入口调整与移动端头部、徽标动效优化

- 映射表编辑界面「查看最近数据」按钮移到「添加映射项」右侧并右对齐
- 移动端主标题「LogVar弹幕API」放大,突出主标题层级
- 「最新版本」徽标改为持续呼吸缩放动效,引导点击而不盖过「当前版本」

* feat(ui): 移动端标题微调、系统配置按钮缩小并补充弹幕词库贡献者

- 移动端主标题字号调整为 21px
- 移动端系统配置的导出/导入/清理缓存/重新部署按钮缩小
- 弹幕词库新增贡献者 @xlmc、@mz289、@sugarbliss
2026-09-12 07:51:27 +08:00

285 lines
5.1 KiB
JavaScript

// language=CSS
export const responsiveCssContent = /* css */ `
/* 响应式 — 参照 Bangumi-syncer 多断点策略 */
/* ============ 平板 (<= 992px) ============ */
@media (max-width: 992px) {
.preview-overview {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
/* ============ 手机 (<= 768px) ============ */
@media (max-width: 768px) {
body {
padding: 6px;
}
body::before {
display: none;
}
.container {
border-radius: 14px;
box-shadow: var(--app-shadow-md);
}
.header {
padding: 12px 14px;
}
.logo {
width: 36px;
height: 36px;
font-size: 20px;
border-radius: 10px;
}
.header-left {
width: 100%;
flex-direction: column;
align-items: flex-start;
}
.logo-title-container {
display: flex;
flex-direction: row;
align-items: center;
gap: 8px;
}
.header h1 {
font-size: 21px;
margin: 0;
}
.version-info {
font-size: 11px;
flex-wrap: wrap;
margin-top: 4px;
width: 100%;
}
.nav-buttons {
width: 100%;
flex-wrap: wrap;
gap: 5px;
justify-content: center;
}
.nav-btn {
flex: 1 1 calc(33.333% - 5px);
text-align: center;
font-size: 13px;
padding: 9px 6px;
white-space: nowrap;
min-width: 60px;
max-width: 120px;
overflow: hidden;
text-overflow: ellipsis;
}
.content {
padding: 14px;
}
.env-item {
flex-direction: column;
align-items: flex-start;
}
.env-actions {
width: 100%;
}
.favorite-action-btn {
max-width: none;
flex-basis: 100%;
}
.btn {
flex: 1;
}
.preview-toolbar {
align-items: stretch;
flex-direction: column;
gap: 8px;
padding-top: 8px;
}
.preview-categories {
order: 1;
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 5px;
overflow: visible;
}
.preview-category-btn {
width: 100%;
min-width: 0;
justify-content: space-between;
}
.preview-back-btn {
grid-column: 1 / -1;
width: calc((100% - 10px) / 3);
min-width: 0;
justify-self: start;
}
.preview-search {
order: 2;
flex: none;
width: 100%;
min-width: 0;
}
.preview-overview {
grid-template-columns: 1fr;
}
.preview-summary {
min-height: 88px;
}
.preview-item {
padding: 10px 4px;
}
.preview-item-main {
grid-template-columns: minmax(0, 1fr);
gap: 6px;
}
.preview-key {
padding-top: 0;
}
.preview-value-container {
align-items: stretch;
flex-direction: column;
}
.preview-value-actions {
align-self: flex-end;
}
.preview-item-description {
margin: 6px 0 0;
}
.record-header {
flex-direction: column;
align-items: stretch;
}
.record-method,
.record-interface,
.record-ip {
width: 100%;
box-sizing: border-box;
}
.footer {
border-radius: 14px;
padding: 14px 16px;
font-size: 12px;
margin: 8px auto 0;
width: calc(100% - 12px);
box-sizing: border-box;
}
.footer-bar {
margin: 4px auto 0;
padding: 6px 12px;
font-size: 11px;
gap: 4px 10px;
width: calc(100% - 12px);
box-sizing: border-box;
}
.theme-settings {
flex-direction: column;
align-items: stretch;
}
.theme-options {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
}
/* ============ 小屏手机 (<= 480px) ============ */
@media (max-width: 480px) {
.header h1 {
font-size: 21px;
}
.nav-btn {
flex: 1 1 calc(33.333% - 4px);
font-size: 11px;
padding: 7px 4px;
max-width: none;
}
.preview-overview {
gap: 6px;
}
.preview-category-btn {
font-size: 11px;
padding: 5px 8px;
}
.modal-content {
padding: 20px;
border-radius: 16px;
}
}
.search-actions {
display: flex;
gap: 10px;
margin-top: 5px;
flex-wrap: wrap;
}
/* 手机端:输入框独占第一行,收藏和搜索按钮并排 */
@media (max-width: 500px) {
.search-actions input {
flex-basis: 100%;
min-width: 100%;
order: 1;
}
.search-actions .favorite-action-btn {
flex: 1;
order: 2;
}
.search-actions #manual-search-btn {
flex: 1;
order: 3;
}
}
/* 剧集操作按钮:PC 窄 120px、平板适中 160px、手机窄 100px */
.episode-item .btn,
.jump-episode-btn {
max-width: 120px;
}
@media (min-width: 501px) and (max-width: 768px) {
.episode-item .btn,
.jump-episode-btn {
max-width: 160px;
}
}
@media (max-width: 500px) {
.episode-item .btn,
.jump-episode-btn {
max-width: 100px;
}
}
`;