feat(hub): add macro calendar for pre-release risk alerts

Manual FOMC/CPI/employment entries in settings drive ±1h monitor banners without touching exchange instances.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-18 11:52:30 +08:00
parent 3d29b4f9d9
commit e470c5952f
7 changed files with 932 additions and 3 deletions
+133
View File
@@ -651,6 +651,139 @@ button:disabled {
color: var(--muted);
}
.monitor-macro-banner {
margin: 0 0 12px;
padding: 12px 14px;
border-radius: var(--radius);
border: 1px solid rgba(255, 176, 32, 0.45);
background: linear-gradient(90deg, rgba(255, 176, 32, 0.12), rgba(255, 120, 80, 0.08));
}
.monitor-macro-banner.hidden {
display: none !important;
}
.monitor-macro-banner-inner {
display: flex;
align-items: flex-start;
gap: 10px;
flex-wrap: wrap;
}
.monitor-macro-badge {
flex: 0 0 auto;
font-size: 11px;
font-weight: 700;
letter-spacing: 0.06em;
padding: 4px 10px;
border-radius: 999px;
color: #ffb020;
border: 1px solid rgba(255, 176, 32, 0.5);
background: rgba(255, 176, 32, 0.12);
}
.monitor-macro-text {
flex: 1 1 240px;
font-size: 13px;
line-height: 1.5;
color: var(--text);
}
.monitor-macro-banner.phase-imminent {
border-color: rgba(255, 120, 80, 0.55);
background: linear-gradient(90deg, rgba(255, 120, 80, 0.14), rgba(255, 176, 32, 0.1));
}
.settings-macro-panel {
margin-bottom: 16px;
}
.macro-event-form {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 12px;
margin: 12px 0 14px;
align-items: end;
}
.macro-event-field {
display: flex;
flex-direction: column;
gap: 6px;
font-size: 12px;
color: var(--muted);
}
.macro-event-field-wide {
grid-column: 1 / -1;
}
.macro-event-field input,
.macro-event-field select {
background: var(--bg-elevated);
border: 1px solid var(--border);
color: var(--text);
border-radius: 8px;
padding: 9px 11px;
font-size: 12px;
font-family: var(--mono);
}
.macro-event-actions {
display: flex;
gap: 8px;
align-items: center;
}
.macro-event-list {
display: flex;
flex-direction: column;
gap: 8px;
}
.macro-event-row {
display: grid;
grid-template-columns: minmax(140px, 1.2fr) minmax(150px, 1fr) minmax(120px, 1fr) auto;
gap: 10px;
align-items: center;
padding: 10px 12px;
border: 1px solid var(--border-soft);
border-radius: var(--radius);
background: var(--panel);
font-size: 12px;
}
.macro-event-row.is-active {
border-color: rgba(255, 176, 32, 0.45);
box-shadow: inset 0 0 0 1px rgba(255, 176, 32, 0.12);
}
.macro-event-row-title {
font-weight: 600;
color: var(--text);
}
.macro-event-row-meta {
color: var(--muted);
font-family: var(--mono);
font-size: 11px;
}
.macro-event-row-actions {
display: flex;
gap: 6px;
justify-content: flex-end;
}
.macro-event-empty {
padding: 14px;
text-align: center;
color: var(--muted);
font-size: 12px;
border: 1px dashed var(--border-soft);
border-radius: var(--radius);
}
.host-status-panel {
margin: 0 0 12px;
border-radius: var(--radius);