fix: repair Android startup and improve mobile web layouts
This commit is contained in:
1 parent
4c2286e70d
commit
b0cbd0f149
30 files changed
+609
-140
No files matched your search
@@ -181,7 +181,7 @@ export function UsersPage() {
|
||||
{recsDone && <p className={s.ok}>{t('users.recs_done', { username: recsDone })}</p>}
|
||||
|
||||
<div className={s.tableWrap}>
|
||||
<table className={s.table}>
|
||||
<table className={cx(s.table, s.mobileCards)}>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{t('users.col_user')}</th>
|
||||
@@ -197,7 +197,7 @@ export function UsersPage() {
|
||||
const st = status(u);
|
||||
return (
|
||||
<tr key={u.id}>
|
||||
<td>
|
||||
<td data-label={t('users.col_user')}>
|
||||
<div className={s.userCell}>
|
||||
<Avatar name={u.display_name ?? u.username} />
|
||||
<div>
|
||||
@@ -209,17 +209,17 @@ export function UsersPage() {
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td>
|
||||
<td data-label={t('users.col_role')}>
|
||||
<span className={cx(s.badge, s[`role_${u.role}`])}>{t(`common:roles.${u.role}`)}</span>
|
||||
{u.reviews_uploads && <span className={cx(s.badge, s.role_moderator)}>{t('users.review_uploads')}</span>}
|
||||
</td>
|
||||
<td>
|
||||
<td data-label={t('users.col_status')}>
|
||||
<span className={cx(s.status, s[`status_${st}`])}>{t(`users.status_${st}`)}</span>
|
||||
</td>
|
||||
<td className={s.muted}>
|
||||
<td className={s.muted} data-label={t('users.col_last_login')}>
|
||||
{u.last_login_at ? formatRelative(u.last_login_at, i18n.language) : t('users.never')}
|
||||
</td>
|
||||
<td>
|
||||
<td className={s.cardAction}>
|
||||
{items.length > 0 && (
|
||||
<Menu label={t('users.actions', { username: u.username })} trigger={<Icon src={moreIcon} />} items={items} />
|
||||
)}
|
||||
|
||||
@@ -320,3 +320,14 @@
|
||||
gap: 10px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.card { padding: 16px; }
|
||||
.cardActions > button { flex: 1 1 auto; }
|
||||
.retryRow { flex-wrap: wrap; gap: 10px; }
|
||||
.patternRow { grid-template-columns: 20px minmax(0, 1fr); }
|
||||
.patternTools { grid-column: 2; margin-top: 0 !important; height: auto; flex-wrap: wrap; }
|
||||
.patternTools .check { flex-basis: 100%; min-height: 44px; }
|
||||
.patternTools > button { width: 44px; min-width: 44px; padding: 0; }
|
||||
.dir { min-height: 44px; height: auto; padding: 8px; overflow-wrap: anywhere; }
|
||||
}
|
||||
@@ -218,3 +218,10 @@
|
||||
height: 44px;
|
||||
border-radius: var(--radius-pill);
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.heroText { min-width: 0; }
|
||||
.colTitle { font-size: clamp(24px, 7vw, 34px); overflow-wrap: anywhere; }
|
||||
.underlineTabs { overflow-x: auto; }
|
||||
.underlineTab { flex-shrink: 0; min-height: 44px; }
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
.home {
|
||||
min-height: 100%;
|
||||
width: 100%;
|
||||
overflow-x: clip;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
@@ -107,3 +109,9 @@
|
||||
.chipOn > span {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.home { justify-content: flex-start; gap: 20px; padding: 8px 0 20px; }
|
||||
.chip { min-height: 44px; height: auto; padding: 10px 14px; }
|
||||
.orbLabel { font-size: clamp(18px, 5vw, 22px); }
|
||||
}
|
||||
@@ -341,3 +341,29 @@
|
||||
font-size: 12px;
|
||||
color: var(--text3);
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.page, .section, .head > *, .toolbar > *, .settingRow > * { min-width: 0; max-width: 100%; }
|
||||
.page { gap: 20px; overflow-wrap: anywhere; }
|
||||
.head h1 { font-size: 24px; }
|
||||
.section { padding: 16px; }
|
||||
.row > :first-child, .search { min-width: 0; flex-basis: 100%; max-width: none; }
|
||||
.settingRow { align-items: flex-start; gap: 10px; }
|
||||
.settingRow > :first-child { flex-basis: 100%; }
|
||||
.actions { flex-wrap: wrap; justify-content: flex-start; }
|
||||
.actions > * { flex: 1 1 auto; }
|
||||
.chip { min-height: 44px; height: auto; padding: 8px 14px; }
|
||||
.select { max-width: 100%; min-width: 0; font-size: 16px; }
|
||||
.session { flex-wrap: wrap; overflow-wrap: anywhere; }
|
||||
.tableWrap { min-width: 0; max-width: 100%; }
|
||||
.mobileCards, .mobileCards tbody { display: block; }
|
||||
.mobileCards thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
|
||||
.mobileCards tr { display: flex; flex-direction: column; padding: 14px; border-bottom: 1px solid var(--line); gap: 12px; }
|
||||
.mobileCards tr:last-child { border-bottom: 0; }
|
||||
.mobileCards td { display: flex; flex-wrap: wrap; gap: 6px 10px; height: auto; padding: 0; border: 0; white-space: normal; }
|
||||
.mobileCards td::before { content: attr(data-label); flex-basis: 100%; font-size: 12px; color: var(--text3); }
|
||||
.mobileCards .userCell { min-width: 0; }
|
||||
.mobileCards .userCell > div { min-width: 0; overflow-wrap: anywhere; }
|
||||
.mobileCards .cardAction { align-self: flex-end; }
|
||||
.cardAction::before { display: none; }
|
||||
}
|
||||
@@ -320,3 +320,22 @@
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
.queueRow { grid-template-columns: 24px minmax(0, 1fr); gap: 10px; padding: 12px; }
|
||||
.queueRow > :nth-child(3), .queueRow > .rowActions { grid-column: 2; }
|
||||
.rowActions { flex-wrap: wrap; min-width: 0; }
|
||||
.rowActions audio { width: 100%; min-width: 0; max-width: 100%; }
|
||||
.meta { overflow-wrap: anywhere; }
|
||||
.bulk { bottom: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
|
||||
.bulk > span:nth-child(2) { display: none; }
|
||||
.bulk > button { min-width: 0; font-size: 13px; padding: 10px 8px; }
|
||||
.grid, .settingsGrid { grid-template-columns: minmax(0, 1fr); }
|
||||
.drop { padding: 20px 12px; }
|
||||
.dropActions > * { flex: 1 1 auto; }
|
||||
.quota { min-width: 0; max-width: 100%; }
|
||||
.file { grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
|
||||
.file > :last-child { grid-column: 2; grid-row: 1; }
|
||||
.file > .size { grid-column: 1; }
|
||||
.textarea { font-size: 16px; }
|
||||
}
|
||||
Reference in new issue
Block a user