diff --git a/frontend/assets/logos/Gitpub-Word-Logo-2-White.svg b/frontend/assets/logos/Gitpub-Word-Logo-2-White.svg new file mode 100644 index 0000000..01f9630 --- /dev/null +++ b/frontend/assets/logos/Gitpub-Word-Logo-2-White.svg @@ -0,0 +1,24 @@ + + \ No newline at end of file diff --git a/frontend/css/base.css b/frontend/css/base.css index dccd2f2..647148d 100644 --- a/frontend/css/base.css +++ b/frontend/css/base.css @@ -1,18 +1,18 @@ :root { - --bg-app: #0b1018; - --bg-panel: #111a27; - --bg-panel-alt: #172234; - --bg-hover: #1c2a3f; - --border: #253349; - --text-main: #e5edf7; - --text-muted: #94a7c0; - --accent: #4f9dff; - --accent-strong: #2f85f4; - --success: #41c48f; - --danger: #ef6a6a; - --radius-md: 10px; - --radius-lg: 14px; - --shadow: 0 14px 40px rgba(5, 9, 16, 0.45); + --bg-app: #0d1117; + --bg-panel: #161b22; + --bg-panel-alt: #21262d; + --bg-hover: #30363d; + --border: #30363d; + --text-main: #e6edf3; + --text-muted: #848d97; + --accent: #2f81f7; + --accent-strong: #1f6feb; + --success: #3fb950; + --danger: #f85149; + --radius-md: 6px; + --radius-lg: 8px; + --shadow: 0 8px 24px rgba(1, 4, 9, 0.75); } * { @@ -24,9 +24,11 @@ body { margin: 0; width: 100%; height: 100%; - background: radial-gradient(circle at top right, #172a47 0%, var(--bg-app) 55%); + background: var(--bg-app); color: var(--text-main); - font-family: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.5; } button, @@ -41,35 +43,68 @@ button { border-radius: var(--radius-md); background: var(--bg-panel-alt); color: var(--text-main); - padding: 8px 12px; + padding: 5px 12px; cursor: pointer; - transition: all 0.15s ease; + transition: background 0.1s ease, border-color 0.1s ease; + font-size: 14px; } button:hover { - transform: translateY(-1px); - border-color: #3b4f6e; + background: var(--bg-hover); + border-color: #8b949e; } button.primary { - background: linear-gradient(180deg, #5ca7ff 0%, var(--accent-strong) 100%); - border-color: #2670d6; + background: #238636; + border-color: rgba(240, 246, 252, 0.1); + color: #ffffff; +} + +button.primary:hover { + background: #2ea043; + border-color: rgba(240, 246, 252, 0.1); +} + +button.primary-blue { + background: var(--accent-strong); + border-color: rgba(240, 246, 252, 0.1); + color: #ffffff; +} + +button.primary-blue:hover { + background: var(--accent); + border-color: rgba(240, 246, 252, 0.1); } button.danger { - border-color: #813434; - color: #ffcaca; + border-color: rgba(248, 81, 73, 0.4); + color: #f85149; +} + +button.danger:hover { + background: rgba(248, 81, 73, 0.1); + border-color: #f85149; } input, select, textarea { width: 100%; - padding: 10px 12px; + padding: 5px 12px; border-radius: var(--radius-md); border: 1px solid var(--border); - background: #0f1724; + background: var(--bg-app); color: var(--text-main); + font-size: 14px; + transition: border-color 0.1s ease, box-shadow 0.1s ease; +} + +input:focus, +select:focus, +textarea:focus { + outline: none; + border-color: var(--accent); + box-shadow: 0 0 0 3px rgba(47, 129, 247, 0.15); } textarea { diff --git a/frontend/css/components.css b/frontend/css/components.css index f994403..9837f3a 100644 --- a/frontend/css/components.css +++ b/frontend/css/components.css @@ -13,12 +13,12 @@ .sidebar, .rightbar { - background: rgba(13, 21, 34, 0.88); + background: var(--bg-panel); border-right: 1px solid var(--border); } .sidebar { - padding: 16px; + padding: 16px 12px; overflow-y: auto; } @@ -29,18 +29,18 @@ overflow-y: auto; } - .main { padding: 16px; overflow: auto; + background: var(--bg-app); } .panel { border: 1px solid var(--border); border-radius: var(--radius-lg); - background: rgba(16, 26, 41, 0.92); + background: var(--bg-panel); box-shadow: var(--shadow); - padding: 14px; + padding: 16px; } .stack { @@ -66,14 +66,19 @@ .repo-card { border: 1px solid var(--border); border-radius: var(--radius-md); - padding: 10px; - background: rgba(23, 34, 53, 0.75); + padding: 12px; + background: var(--bg-panel); + transition: border-color 0.1s ease; +} + +.repo-card:hover { + border-color: #8b949e; } .repo-grid { display: grid; gap: 10px; - grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); + grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); } .repo-filter-pills { @@ -90,17 +95,18 @@ color: var(--text-muted); font-size: 13px; cursor: pointer; - transition: background 0.15s, color 0.15s, border-color 0.15s; + transition: background 0.1s, color 0.1s, border-color 0.1s; } .pill-btn:hover { - background: rgba(255, 255, 255, 0.06); + background: var(--bg-hover); color: var(--text-main); + border-color: #8b949e; } .pill-btn.active { - background: var(--accent); - border-color: var(--accent); + background: var(--accent-strong); + border-color: rgba(240, 246, 252, 0.1); color: #fff; } @@ -115,13 +121,13 @@ } .org-badge { - font-size: 13px; + font-size: 12px; font-weight: 600; - color: var(--text-main); - background: rgba(255, 255, 255, 0.07); + color: var(--text-muted); + background: var(--bg-panel-alt); border: 1px solid var(--border); - border-radius: var(--radius-md); - padding: 2px 10px; + border-radius: 999px; + padding: 1px 10px; } .muted { @@ -132,16 +138,19 @@ font-size: 12px; color: var(--text-muted); margin-bottom: 4px; + font-weight: 500; } .title { margin: 0; font-size: 18px; + font-weight: 600; + color: var(--text-main); } .subtitle { margin: 0; - font-size: 13px; + font-size: 14px; color: var(--text-muted); } @@ -171,28 +180,50 @@ min-height: 100%; display: grid; place-items: center; - padding: 24px; + padding: 32px 24px; + background: var(--bg-app); } .welcome-card { width: min(680px, 100%); } +.welcome-logo { + display: flex; + align-items: center; + gap: 10px; + margin-bottom: 4px; +} + +.welcome-logo-img { + height: 36px; + width: auto; +} + +.welcome-logo-desktop { + font-size: 20px; + font-weight: 300; + color: var(--text-muted); + letter-spacing: 0; +} + .status-ok { color: var(--success); + font-weight: 500; } .status-error { color: var(--danger); + font-weight: 500; } /* ── Tabs ─────────────────────────────────────────── */ .tabs { display: flex; align-items: center; - gap: 2px; + gap: 0; border-bottom: 1px solid var(--border); - padding: 0 4px; + padding: 0; flex-shrink: 0; } @@ -201,24 +232,24 @@ border: none; border-bottom: 2px solid transparent; border-radius: 0; - padding: 10px 14px; + padding: 10px 16px; color: var(--text-muted); - font-size: 13px; + font-size: 14px; cursor: pointer; - transition: color 0.15s ease, border-color 0.15s ease; + transition: color 0.1s ease, border-color 0.1s ease; margin-bottom: -1px; } .tab-btn:hover { - transform: none; + background: transparent; color: var(--text-main); border-color: transparent; - background: transparent; } .tab-btn.active { color: var(--text-main); - border-bottom-color: var(--accent); + border-bottom-color: #f78166; + font-weight: 600; } .tab-spacer { @@ -226,10 +257,10 @@ } .tab-search { - width: 180px !important; - padding: 6px 10px !important; + width: 200px !important; + padding: 5px 10px !important; font-size: 13px; - margin: 4px 4px 4px 0; + margin: 4px 8px 4px 0; } .main-tabs { @@ -241,13 +272,39 @@ top: 0; margin: 0 -12px; padding: 0 12px; - background: rgba(13, 21, 34, 0.96); + background: var(--bg-panel); z-index: 1; } /* ── Sidebar ──────────────────────────────────────── */ +.sidebar-brand { + padding: 4px 0 12px; + border-bottom: 1px solid var(--border); + margin-bottom: 4px; +} + .sidebar-brand .title { - font-size: 16px; + font-size: 15px; + font-weight: 600; +} + +.sidebar-logo { + display: flex; + align-items: center; + gap: 8px; +} + +.sidebar-logo-img { + height: 22px; + width: auto; +} + +.sidebar-logo-desktop { + font-size: 13px; + font-weight: 400; + color: var(--text-muted); + letter-spacing: 0; + margin-top: 2px; } .sidebar .server-chip { @@ -267,8 +324,8 @@ .sidebar-btn { flex: 1; - font-size: 12px; - padding: 7px 8px; + font-size: 13px; + padding: 5px 8px; text-align: center; } @@ -286,22 +343,22 @@ text-overflow: ellipsis; cursor: pointer; color: var(--text-muted); - padding: 3px 0; + padding: 4px 0; font-size: 13px; } .recent-item:hover { - color: var(--text-main); + color: var(--accent); } /* ── Git output ───────────────────────────────────── */ .git-output { - background: rgba(0, 0, 0, 0.35); + background: #010409; border: 1px solid var(--border); border-radius: var(--radius-md); padding: 12px 14px; font-size: 12px; - font-family: "Fira Code", "Cascadia Code", "Consolas", monospace; + font-family: ui-monospace, "Cascadia Code", "Fira Code", "Consolas", monospace; color: var(--success); overflow-x: auto; white-space: pre-wrap; @@ -313,35 +370,50 @@ .git-output-placeholder { font-size: 13px; font-style: italic; + color: var(--text-muted); margin: 0; } .commit-note { font-size: 11px; margin-top: 4px; + color: var(--text-muted); } /* ── Local repo indicator ─────────────────────────── */ .selected-repo { font-size: 13px; - padding: 7px 10px; - background: rgba(79, 157, 255, 0.08); - border: 1px solid rgba(79, 157, 255, 0.18); + padding: 6px 10px; + background: rgba(47, 129, 247, 0.06); + border: 1px solid rgba(47, 129, 247, 0.2); border-radius: var(--radius-md); word-break: break-all; + color: var(--text-muted); } /* ── Empty state ──────────────────────────────────── */ .empty-state { grid-column: 1 / -1; text-align: center; - padding: 40px 16px; + padding: 48px 16px; } .empty-state > div:first-child { font-size: 15px; color: var(--text-main); margin-bottom: 6px; + font-weight: 500; +} + +/* ── Repo card details ────────────────────────────── */ +.repo-card strong { + color: var(--accent); + font-size: 14px; +} + +.repo-card strong:hover { + text-decoration: underline; + cursor: pointer; } /* ── Responsive ───────────────────────────────────── */ diff --git a/frontend/js/app.js b/frontend/js/app.js index a386fac..9bb28e7 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -98,6 +98,10 @@ function welcomeView() { appRoot.innerHTML = `
@@ -170,7 +174,10 @@ function dashboardView() {