gearheaded_obsidian-github-.../styles.css

194 lines
8.2 KiB
CSS

/* ########################################################################
GitHub Contributions Plugin — styles.css
Obsidian loads this automatically. Do not inject styles via JS.
######################################################################## */
/* ── View container ── */
.gh-contributions-view {
padding: 12px 10px 16px;
overflow-y: auto;
overflow-x: hidden;
user-select: none;
}
/* ── Header ── */
.gh-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8px;
gap: 6px;
}
.gh-username {
font-size: 13px;
font-weight: 600;
color: var(--text-normal);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
flex: 1;
min-width: 0;
}
/* ── Nav buttons ── */
.gh-nav { display: flex; align-items: center; gap: 3px; flex-shrink: 0; }
.gh-nav-label { font-size: 12px; color: var(--text-muted); min-width: 52px; text-align: center; white-space: nowrap; }
.gh-nav-btn {
background: none;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
color: var(--text-muted);
cursor: pointer;
font-size: 14px;
line-height: 1;
padding: 1px 6px;
transition: background .15s;
}
.gh-nav-btn:hover:not(:disabled) { background: var(--background-modifier-hover); color: var(--text-normal); }
.gh-nav-btn:disabled { opacity: .3; cursor: default; }
.gh-nav .gh-refresh-icon { margin-left: 2px; font-size: 13px; }
/* ── Stats — default flex row ── */
.gh-stats { display: flex; gap: 5px; margin-bottom: 10px; flex-wrap: wrap; }
.gh-stats.gh-stats--grid { display: grid; grid-template-columns: 1fr 1fr; }
.gh-stat {
display: flex;
flex-direction: column;
align-items: center;
background: var(--background-secondary);
border-radius: 6px;
padding: 5px 7px;
flex: 1;
min-width: 0;
}
.gh-stats--grid .gh-stat { flex: unset; }
.gh-stat--wide { grid-column: 1 / -1; }
.gh-stat-val { font-size: 13px; font-weight: 700; color: var(--interactive-accent); line-height: 1.2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
.gh-stat-lbl { font-size: 9px; color: var(--text-faint); text-transform: uppercase; letter-spacing: .04em; margin-top: 2px; text-align: center; }
/* ── Stats — compact chips ── */
.gh-stats-compact { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; align-items: center; }
.gh-chip { display: inline-flex; align-items: center; gap: 3px; background: var(--background-secondary); border-radius: 4px; padding: 3px 6px; font-size: 11px; white-space: nowrap; }
.gh-chip-icon { font-size: 10px; }
.gh-chip-val { font-weight: 700; color: var(--interactive-accent); }
/* ── Stats — list style ── */
.gh-stats-list { display: flex; flex-direction: column; gap: 1px; margin-bottom: 8px; }
.gh-stats-list-row { display: flex; align-items: baseline; gap: 4px; font-size: 11px; line-height: 1.6; }
.gh-stats-list-icon { font-size: 10px; width: 14px; text-align: center; flex-shrink: 0; }
.gh-stats-list-val { font-weight: 700; color: var(--interactive-accent); font-size: 12px; }
.gh-stats-list-lbl { color: var(--text-muted); font-size: 11px; }
/* ── Repo line ── */
.gh-repo-line { margin-bottom: 6px; padding-bottom: 5px; border-bottom: 1px solid var(--background-modifier-border); }
.gh-repo-line-icon { font-size: 10px; color: var(--text-faint); }
.gh-repo-line-name { font-size: 11px; color: var(--text-muted); }
/* ── OAuth code display ── */
.gh-oauth-code {
display: inline-block;
font-size: 22px;
font-weight: 700;
letter-spacing: 4px;
color: var(--interactive-accent);
font-family: var(--font-monospace);
margin: 6px 0;
padding: 4px 8px;
background: var(--background-secondary);
border-radius: 6px;
}
/* ── Graph ── */
.gh-graph-wrap { overflow-x: auto; padding-bottom: 4px; }
.gh-month-lbl { font-size: 9px; color: var(--text-faint); }
.gh-dow-lbl { font-size: 10px; color: var(--text-faint); text-align: center; overflow: hidden; }
/* ── Cells ── */
.gh-cell {
border-radius: 2px;
cursor: pointer;
transition: transform .1s;
flex-shrink: 0;
box-sizing: border-box;
}
.gh-cell:hover { transform: scale(1.3); z-index: 1; position: relative; }
.gh-cell.gh-cell--empty { background: transparent; cursor: default; }
.gh-cell.gh-cell--empty:hover { transform: none; }
.gh-cell.gh-today { outline: 2px solid var(--interactive-accent); outline-offset: 1px; }
/* Contribution level colours — set via CSS vars updated by injectPaletteStyles() */
.gh-cell[data-level="0"] { background: var(--gh-c0); }
.gh-cell[data-level="1"] { background: var(--gh-c1); }
.gh-cell[data-level="2"] { background: var(--gh-c2); }
.gh-cell[data-level="3"] { background: var(--gh-c3); }
.gh-cell[data-level="4"] { background: var(--gh-c4); }
/* ── Legend ── */
.gh-legend { display: flex; align-items: center; gap: 3px; margin-top: 8px; justify-content: flex-end; }
.gh-legend-lbl { font-size: 9px; color: var(--text-faint); }
.gh-cell.gh-legend-cell { cursor: default; }
.gh-cell.gh-legend-cell:hover { transform: none; }
/* ── Empty state ── */
.gh-empty { display: flex; flex-direction: column; align-items: center; padding: 24px 12px; text-align: center; gap: 10px; }
.gh-empty-icon { font-size: 32px; }
.gh-empty p { font-size: 12px; color: var(--text-muted); line-height: 1.5; margin: 0; }
.gh-btn { background: var(--interactive-accent); border: none; border-radius: 6px; color: var(--text-on-accent); cursor: pointer; font-size: 12px; padding: 6px 14px; }
.gh-btn:hover { filter: brightness(1.1); }
/* ── Error state ── */
.gh-error { padding: 10px 12px; background: var(--background-modifier-error); border-radius: 6px; color: var(--text-error); font-size: 12px; margin: 8px 0; }
/* ── Skeleton loader ── */
.gh-skeleton-wrap { padding: 4px 0; }
.gh-skeleton-header { height: 14px; width: 55%; margin-bottom: 10px; border-radius: 4px; }
.gh-skeleton-stats { height: 44px; width: 100%; margin-bottom: 10px; border-radius: 6px; }
.gh-skeleton-cell { border-radius: 2px; }
.gh-skeleton {
animation: gh-shimmer 1.4s infinite linear;
background: linear-gradient(90deg, var(--background-modifier-border) 25%, var(--background-secondary) 50%, var(--background-modifier-border) 75%);
background-size: 200% 100%;
}
@keyframes gh-shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
/* ── Tooltip — base ── */
.gh-tooltip {
position: fixed;
pointer-events: none;
display: none;
z-index: 9999;
}
/* ── Tooltip — Standard / Simple (modern card style) ── */
.gh-tooltip--modern {
white-space: normal;
padding: 12px 14px;
border-radius: 10px;
background: #161b22;
border: 1px solid rgba(255,255,255,0.12);
box-shadow: 0 8px 32px rgba(0,0,0,.6);
min-width: 190px;
font-family: var(--font-interface);
}
.theme-light .gh-tooltip--modern { background: #1c2128; border-color: rgba(255,255,255,0.15); }
.gh-tip-date { font-size: 13px; font-weight: 600; color: #fff; margin-bottom: 6px; }
.gh-tip-count-row { display: flex; align-items: baseline; gap: 4px; margin-bottom: 10px; }
.gh-tip-count { font-size: 18px; font-weight: 700; color: #3fb950; }
.gh-tip-count-lbl { font-size: 13px; color: #fff; margin-left: 3px; font-weight: 400; }
.gh-tip-sources { display: flex; flex-direction: column; gap: 5px; margin-bottom: 4px; }
.gh-tip-source-row { display: flex; align-items: center; gap: 8px; font-size: 13px; }
.gh-tip-source-icon { color: #6e7681; width: 14px; display: flex; align-items: center; flex-shrink: 0; }
.gh-tip-source-lbl { flex: 1; color: #fff; font-weight: 400; }
.gh-tip-source-val { color: #fff; font-weight: 500; min-width: 16px; text-align: right; }
.gh-tip-divider { height: 1px; background: rgba(255,255,255,0.1); margin: 8px 0; }
.gh-tip-repo-row { display: flex; align-items: center; gap: 8px; font-size: 12px; margin-bottom: 5px; }
.gh-tip-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.gh-tip-repo-name { color: #fff; flex: 1; font-family: var(--font-monospace); font-size: 11px; }
.gh-tip-repo-count { color: #6e7681; font-size: 11px; }
.gh-tip-no-contrib { font-size: 12px; color: #6e7681; }
/* ── Settings notice (mobile warning) ── */
.gh-settings-notice { color: var(--text-warning); font-size: 13px; margin: 8px 0; }