fix auth registration and access management ui

This commit is contained in:
lix-2026
2026-05-22 01:47:40 +08:00
parent fdb20300e9
commit 531e845600
16 changed files with 1316 additions and 410 deletions
+11 -209
View File
@@ -69,6 +69,10 @@ a:hover {
color: var(--wolai-accent-hover);
}
[hidden] {
display: none !important;
}
.mnote-symbol {
width: 18px;
height: 18px;
@@ -189,6 +193,9 @@ a:hover {
.material-symbols-outlined[data-icon="edit"] { --mnote-icon-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m4 17-.5 3.5L7 20l11-11-3-3zM13 8l3 3' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.material-symbols-outlined[data-icon="add"] { --mnote-icon-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 5v14M5 12h14' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.material-symbols-outlined[data-icon="subdirectory_arrow_right"] { --mnote-icon-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6 4v7a3 3 0 0 0 3 3h8M14 10l4 4-4 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.material-symbols-outlined[data-icon="account_circle"] { --mnote-icon-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/%3E%3Ccircle cx='12' cy='9' r='3' fill='none' stroke='black' stroke-width='2'/%3E%3Cpath d='M6.8 19a5.4 5.4 0 0 1 10.4 0' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.material-symbols-outlined[data-icon="admin_panel_settings"] { --mnote-icon-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 3 5 6v5c0 4.5 2.9 8 7 10 4.1-2 7-5.5 7-10V6z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/%3E%3Cpath d='m9 12 2 2 4-5' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); }
.material-symbols-outlined[data-icon="close"] { --mnote-icon-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6 6 18 18M18 6 6 18' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E"); }
.material-symbols-outlined[data-icon="radio_button_unchecked"]::before {
width: .78em;
height: .78em;
@@ -338,73 +345,7 @@ a:hover {
color: #1D4ED8;
}
.mnote-account-menu {
inset-inline-start: auto;
right: 8px;
top: calc(100% - 10px);
width: 232px;
}
.mnote-account-menu__profile {
padding: 8px;
}
.mnote-account-menu__title {
color: var(--wolai-text-secondary);
font-size: 12px;
line-height: 1.35;
}
.mnote-account-menu__name {
margin-top: 5px;
color: var(--wolai-text-primary);
font-size: 14px;
font-weight: 600;
line-height: 1.4;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mnote-account-menu__row {
display: grid;
grid-template-columns: 58px minmax(0, 1fr);
gap: 8px;
margin-top: 6px;
color: var(--wolai-text-secondary);
font-size: 12px;
line-height: 1.35;
}
.mnote-account-menu__row strong {
min-width: 0;
color: var(--wolai-text-primary);
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.mnote-account-menu__separator {
height: 1px;
margin: 4px 0;
background: var(--wolai-border);
}
.mnote-account-menu__logout {
color: #C2410C;
}
.mnote-account-menu__logout:hover {
background: #FFF7ED;
}
.mnote-account-menu__error {
padding: 6px 8px 2px;
color: #B91C1C;
font-size: 12px;
line-height: 1.35;
}
.mnote-account-menu{inset-inline-start:auto;right:8px;top:calc(100% - 10px);width:194px}.mnote-account-menu__item{display:flex;align-items:center;gap:10px}.mnote-account-menu__logout{color:#C2410C}.mnote-account-menu__logout:hover{background:#FFF7ED}.mnote-account-menu__error{padding:6px 8px 2px;color:#B91C1C;font-size:12px}.mnote-profile-dialog{position:fixed;inset:0;z-index:1200;display:grid;place-items:center}.mnote-profile-dialog__backdrop{position:absolute;inset:0;background:rgba(15,23,42,.22)}.mnote-profile-dialog__panel{position:relative;width:min(440px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;border:1px solid var(--wolai-border);border-radius:8px;background:#fff;box-shadow:0 18px 54px rgba(15,23,42,.18);padding:20px}.mnote-profile-dialog__header,.mnote-profile-dialog__identity,.mnote-profile-dialog__list>div,.mnote-profile-dialog__list dd{display:flex;align-items:center}.mnote-profile-dialog__header{justify-content:space-between;margin-bottom:18px}.mnote-profile-dialog__eyebrow,.mnote-profile-dialog__identity span,.mnote-profile-dialog__list dt{color:var(--wolai-text-secondary);font-size:13px}.mnote-profile-dialog__header h2{font-size:20px}.mnote-profile-dialog__close,.mnote-profile-dialog__list button{border:0;border-radius:6px;background:transparent;color:var(--wolai-text-secondary);cursor:pointer}.mnote-profile-dialog__close{width:32px;height:32px}.mnote-profile-dialog__identity{gap:12px;padding:12px;border-radius:8px;background:var(--wolai-bg-sidebar)}.mnote-profile-dialog__avatar{width:36px;height:36px;display:grid;place-items:center;border-radius:6px;background:#D6545D;color:#fff;font-weight:650}.mnote-profile-dialog__list{margin-top:16px}.mnote-profile-dialog__list>div{justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--wolai-border)}.mnote-profile-dialog__list dd{min-width:0;gap:8px;max-width:280px;font-size:13px;text-align:right;overflow-wrap:anywhere}.mnote-profile-dialog__list code{font-family:"JetBrains Mono","SFMono-Regular",Consolas,monospace;font-size:12px;white-space:normal}
.wolai-quick-actions {
flex: 0 0 auto;
@@ -1959,146 +1900,7 @@ body {
background: var(--atelier-document);
}
.mnote-admin-policy-page {
width: min(1080px, calc(100vw - 64px));
margin: 40px auto 64px;
color: var(--atelier-text);
}
.mnote-admin-policy-header {
margin-bottom: 24px;
}
.mnote-admin-policy-header h1 {
font-size: 28px;
font-weight: 650;
margin-bottom: 8px;
}
.mnote-admin-policy-header p,
.mnote-admin-policy-note {
color: var(--wolai-text-secondary);
font-size: 14px;
}
.mnote-admin-policy-summary,
.mnote-admin-policy-panel,
.mnote-admin-policy-form {
border: 1px solid var(--wolai-border);
border-radius: 8px;
background: #fff;
}
.mnote-admin-policy-summary {
display: grid;
grid-template-columns: minmax(180px, 1fr) minmax(280px, 2fr);
gap: 16px;
padding: 16px;
margin-bottom: 16px;
}
.mnote-admin-policy-summary-item {
min-width: 0;
}
.mnote-admin-policy-summary-label {
display: block;
margin-bottom: 6px;
color: var(--wolai-text-secondary);
font-size: 12px;
}
.mnote-admin-policy-summary code,
.mnote-admin-policy-json {
white-space: pre-wrap;
overflow-wrap: anywhere;
font-family: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;
font-size: 12px;
}
.mnote-admin-policy-panel {
padding: 16px;
margin-bottom: 16px;
}
.mnote-admin-policy-panel-header {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
margin-bottom: 12px;
}
.mnote-admin-policy-panel h2,
.mnote-admin-policy-form h2 {
font-size: 16px;
font-weight: 650;
}
.mnote-admin-policy-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 16px;
}
.mnote-admin-policy-form {
display: flex;
flex-direction: column;
gap: 12px;
padding: 16px;
}
.mnote-admin-policy-form label {
display: flex;
flex-direction: column;
gap: 6px;
color: var(--wolai-text-secondary);
font-size: 12px;
}
.mnote-admin-policy-form input,
.mnote-admin-policy-form select {
min-height: 34px;
border: 1px solid var(--wolai-border);
border-radius: 6px;
padding: 6px 8px;
color: var(--wolai-text-primary);
background: #fff;
font-size: 13px;
}
.mnote-admin-policy-form button,
.mnote-admin-policy-panel button {
min-height: 34px;
border: 1px solid var(--wolai-border);
border-radius: 6px;
padding: 6px 12px;
color: var(--wolai-text-primary);
background: var(--wolai-bg-sidebar);
cursor: pointer;
}
.mnote-admin-policy-form button:hover,
.mnote-admin-policy-panel button:hover {
background: var(--wolai-bg-hover);
}
.mnote-admin-policy-json {
min-height: 48px;
max-height: 320px;
overflow: auto;
border-radius: 6px;
background: var(--wolai-bg-sidebar);
padding: 10px;
color: var(--wolai-text-primary);
}
@media (max-width: 960px) {
.mnote-admin-policy-summary,
.mnote-admin-policy-grid {
grid-template-columns: 1fr;
}
}
.mnote-admin-policy-page{width:min(1080px,calc(100vw - 64px));margin:40px auto 64px}.mnote-admin-policy-header{margin-bottom:24px}.mnote-admin-policy-header h1{font-size:28px;font-weight:650}.mnote-admin-policy-header p,.mnote-admin-policy-note{color:var(--wolai-text-secondary);font-size:14px}.mnote-admin-policy-summary,.mnote-admin-policy-panel,.mnote-admin-policy-form{border:1px solid var(--wolai-border);border-radius:8px;background:#fff}.mnote-admin-policy-summary{display:grid;grid-template-columns:1fr 2fr;gap:16px;padding:16px;margin-bottom:16px}.mnote-admin-policy-summary-label{display:block;color:var(--wolai-text-secondary);font-size:12px}.mnote-admin-policy-summary code,.mnote-admin-policy-json{white-space:pre-wrap;overflow-wrap:anywhere;font-family:"JetBrains Mono","SFMono-Regular",Consolas,monospace;font-size:12px}.mnote-admin-policy-panel,.mnote-admin-policy-form{padding:16px;margin-bottom:16px}.mnote-admin-policy-panel-header{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.mnote-admin-policy-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.mnote-admin-policy-form{display:flex;flex-direction:column;gap:12px}.mnote-admin-policy-form label{display:flex;flex-direction:column;gap:6px;color:var(--wolai-text-secondary);font-size:12px}.mnote-admin-policy-form input,.mnote-admin-policy-form select{min-height:34px;border:1px solid var(--wolai-border);border-radius:6px;padding:6px 8px;background:#fff}.mnote-admin-policy-form button,.mnote-admin-policy-panel button{min-height:34px;border:1px solid var(--wolai-border);border-radius:6px;padding:6px 12px;background:var(--wolai-bg-sidebar);cursor:pointer}.mnote-admin-policy-json{min-height:48px;max-height:320px;overflow:auto;border-radius:6px;background:var(--wolai-bg-sidebar);padding:10px}.mnote-admin-policy-debug{margin-top:12px}.mnote-admin-policy-table{display:grid;gap:8px}.mnote-admin-policy-row{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(120px,.6fr) minmax(0,1fr);gap:12px;border:1px solid var(--wolai-border);border-radius:8px;padding:12px}.mnote-admin-policy-row strong,.mnote-admin-policy-row span{display:block;min-width:0}.mnote-admin-policy-row span{color:var(--wolai-text-secondary);font-size:12px;overflow-wrap:anywhere}.mnote-admin-policy-badge{display:inline-flex!important;margin:2px 4px 2px 0;border-radius:999px;padding:2px 8px;background:var(--wolai-bg-sidebar);font-size:12px}.mnote-admin-policy-badge[data-value="write"]{background:#DCFCE7}.mnote-admin-policy-badge[data-value="read"]{background:#DBEAFE}.mnote-admin-policy-badge[data-value="已撤销"]{background:#FEE2E2}.mnote-admin-policy-empty{border:1px dashed var(--wolai-border);border-radius:8px;padding:18px;color:var(--wolai-text-secondary);background:var(--wolai-bg-sidebar);font-size:13px}@media(max-width:960px){.mnote-admin-policy-summary,.mnote-admin-policy-grid,.mnote-admin-policy-row{grid-template-columns:1fr}}
.mnote-trash-workbench {
width: min(860px, calc(100vw - 64px));
@@ -4393,7 +4195,7 @@ mod tests {
fn mnote_css_is_reasonably_sized() {
// 至少 2000 字符才能包含完整样式
assert!(MNOTE_CSS.len() > 2000);
// 当前整合了工作区壳、编辑器样式、树菜单、页面 AI 和双 pane 布局,仍保持在单文件可审阅范围内。
assert!(MNOTE_CSS.len() < 100000);
// 当前整合了工作区壳、编辑器样式、树菜单、页面 AI、账号弹窗与授权管理控制面,仍保持在单文件可审阅范围内。
assert!(MNOTE_CSS.len() < 110000);
}
}