feat(users): govern profiles and access

Normalize fixed profile fields, profile actions, and the five-column capability matrix for comments, uploads, and downloads.
This commit is contained in:
2026-08-13 00:24:54 +08:00
parent 0b06b2c7df
commit 8241570ca2
67 changed files with 780 additions and 1127 deletions
+43 -12
View File
@@ -96,34 +96,65 @@
pointer-events: none;
}
.uc-header__cover-upload {
.aksrt-cover-menu {
position: absolute;
bottom: 12px;
right: 12px;
z-index: 2;
}
.aksrt-cover-menu__trigger {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px 10px;
justify-content: center;
width: 34px;
height: 34px;
padding: 0;
border: none;
border-radius: 6px;
border-radius: 50%;
background: rgba(0, 0, 0, 0.25);
color: #fff;
font-size: 12px;
cursor: pointer;
backdrop-filter: blur(4px);
transition: background 0.2s;
transition: background .2s;
}
.uc-header__cover-upload:hover {
.aksrt-cover-menu__trigger:hover,
.aksrt-cover-menu__trigger:focus-visible {
background: rgba(0, 0, 0, 0.45);
outline: 2px solid #fff;
outline-offset: 2px;
}
.uc-header__cover-upload:disabled {
opacity: 0.6;
cursor: not-allowed;
.aksrt-cover-menu__panel {
position: absolute;
right: 0;
bottom: calc(100% + 8px);
display: grid;
min-width: 140px;
padding: 6px;
border-radius: 10px;
background: rgba(20, 24, 31, .94);
box-shadow: 0 12px 32px rgba(0,0,0,.22);
backdrop-filter: blur(12px);
}
.uc-header__cover-upload i {
font-size: 11px;
.aksrt-cover-menu__panel [role="menuitem"] {
display: flex;
align-items: center;
gap: 8px;
min-height: 36px;
padding: 0 10px;
border: 0;
border-radius: 6px;
color: #fff;
background: transparent;
font: inherit;
font-size: 13px;
text-align: left;
text-decoration: none;
cursor: pointer;
}
.aksrt-cover-menu__panel [role="menuitem"]:hover,
.aksrt-cover-menu__panel [role="menuitem"]:focus-visible { background: rgba(255,255,255,.13); outline: none; }
.profile-form__fields { display: grid; gap: 14px; }
.profile-form__fields label { display: grid; gap: 6px; font-size: 13px; color: var(--color-ink, #24292f); }
.uc-header__content {
display: flex;
+22 -3
View File
@@ -44,7 +44,7 @@
.aksrt-author-hero__cover-metas {
position: absolute;
right: 14px;
right: 58px;
bottom: 12px;
z-index: 2;
display: flex;
@@ -589,8 +589,27 @@
flex-wrap: wrap;
align-items: center;
gap: 6px;
margin-top: .35rem;
margin-top: .15rem;
}
.aksrt-author-hero__identity .aksrt-ip-geo-badge {
margin: 2px 0;
display: inline-flex;
align-items: center;
height: 26px;
box-sizing: border-box;
margin: 0;
padding: 0 8px;
border-radius: 999px;
font-size: 12px;
line-height: 26px;
}
.aksrt-author-hero__identity .aksrt-medal-entry,
.aksrt-author-hero__identity .badg { height: 26px; box-sizing: border-box; margin: 0; padding: 0 8px; border-radius: 999px; font-size: 12px; line-height: 26px; }
.aksrt-profile-details-modal { position: fixed; inset: 0; z-index: 10001; display: grid; place-items: center; padding: 20px; }
.aksrt-profile-details-modal__backdrop { position: absolute; inset: 0; background: rgba(10, 15, 22, .52); }
.aksrt-profile-details-modal__dialog { position: relative; width: min(100%, 420px); padding: 24px; border-radius: 16px; background: var(--color-card, #fff); box-shadow: 0 24px 64px rgba(0,0,0,.24); }
.aksrt-profile-details-modal__dialog h2 { margin: 0 28px 16px 0; font-size: 18px; }
.aksrt-profile-details-modal__dialog dl { display: grid; gap: 12px; margin: 0; }
.aksrt-profile-details-modal__dialog dl div { display: grid; grid-template-columns: 84px 1fr; gap: 12px; }
.aksrt-profile-details-modal__dialog dt { color: var(--color-muted, #6b7280); }
.aksrt-profile-details-modal__dialog dd { margin: 0; overflow-wrap: anywhere; }
.aksrt-profile-details-modal__close { position: absolute; top: 12px; right: 12px; width: 32px; height: 32px; border: 0; border-radius: 50%; background: transparent; font-size: 24px; cursor: pointer; }