Initial codebase: Go + Wails amateur radio logbook
Backend (Go 1.25 / Wails v2): - QSO storage on SQLite (modernc) with embedded migrations (0001..0005) - Streaming ADIF import (batch insert) + WorkedBefore per callsign and DXCC - Callsign lookup with QRZ.com + HamQTH providers (primary/failsafe routing) and SQLite-backed TTL cache - DXCC resolver from cty.dat (auto-download, longest-prefix-match) - Multi-profile operator identities (home/portable/SOTA/contest) — every QSO stamps MY_* from the active profile - CAT control via OmniRig COM on a single OS-locked goroutine, with bidirectional sync (freq/mode/band/split/VFOs) and Rig1/Rig2 hot-swap - Settings store (key/value), CAT debug log at %APPDATA%/HamLog/cat.log Frontend (React 18 + TypeScript + Tailwind v4 + shadcn-style): - Single-row entry strip with CAT-aware band/mode/freq, RST, Start/End UTC, per-field locks (band/mode/freq/start/end) for backdated QSOs - Topbar: live freq (MHz.kHz.Hz dotted), live UTC, band/mode/SPLIT badges, CAT pill with rig selector and clickable Azimuth pill (rotor TODO) - Settings tree: Profiles (Log4OM-style manager), Station Information (edits the active profile), unified Callsign Lookup with Test buttons, Bands/Modes lists, CAT - Worked-before matrix (band × mode × class) with new-DXCC highlighting - ADIF import from menu + Maintenance > Refresh cty.dat Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
/* External @imports must come first per CSS spec. */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap');
|
||||
@import "tailwindcss";
|
||||
@import "tw-animate-css";
|
||||
|
||||
/* ===== Cream & warm-orange palette =====
|
||||
Background : warm cream (subtle beige, less cold than stone)
|
||||
Accent : burnt orange (signal-lamp vibe, classic radio amateur)
|
||||
Status : muted emerald / amber / rose
|
||||
The BandSlotGrid cells keep their emerald+indigo independently — that
|
||||
colour code conveys QSO status semantics, not app branding.
|
||||
*/
|
||||
@theme {
|
||||
--color-background: #faf6ed; /* warm cream */
|
||||
--color-foreground: #1c1917; /* stone-900 */
|
||||
|
||||
--color-card: #ffffff;
|
||||
--color-card-foreground: #1c1917;
|
||||
|
||||
--color-popover: #ffffff;
|
||||
--color-popover-foreground: #1c1917;
|
||||
|
||||
--color-primary: #c2410c; /* orange-700 — burnt orange */
|
||||
--color-primary-foreground: #fff7ed;
|
||||
|
||||
--color-secondary: #f5efe0; /* warmer secondary surface */
|
||||
--color-secondary-foreground: #1c1917;
|
||||
|
||||
--color-muted: #f5efe0;
|
||||
--color-muted-foreground: #57534e; /* stone-600 */
|
||||
|
||||
--color-accent: #ffedd5; /* orange-100 — light cream-orange */
|
||||
--color-accent-foreground: #9a3412; /* orange-800 */
|
||||
|
||||
--color-destructive: #b91c1c; /* red-700, classic brick */
|
||||
--color-destructive-foreground: #ffffff;
|
||||
|
||||
--color-border: #e7dfd0; /* warm beige border */
|
||||
--color-input: #e7dfd0;
|
||||
--color-ring: #ea580c; /* orange-600 — focus ring */
|
||||
|
||||
--color-ok: #15803d; /* emerald-700 — slightly deeper */
|
||||
--color-warn: #b45309; /* amber-700 */
|
||||
|
||||
--radius: 0.5rem;
|
||||
|
||||
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
||||
--font-mono: 'JetBrains Mono', 'Cascadia Mono', Consolas, 'Courier New', monospace;
|
||||
}
|
||||
|
||||
@layer base {
|
||||
* { @apply border-border; }
|
||||
html, body, #root { height: 100%; }
|
||||
body {
|
||||
@apply bg-background text-foreground;
|
||||
font-family: var(--font-sans);
|
||||
font-size: 13px;
|
||||
line-height: 1.45;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
}
|
||||
|
||||
/* Warm scrollbar */
|
||||
::-webkit-scrollbar { width: 10px; height: 10px; }
|
||||
::-webkit-scrollbar-track { background: transparent; }
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #d6cbb1;
|
||||
border-radius: 5px;
|
||||
border: 2px solid var(--color-background);
|
||||
}
|
||||
::-webkit-scrollbar-thumb:hover { background: #b3a47d; }
|
||||
Reference in New Issue
Block a user