Rebrand to mtgc: pirate-ship logo, lowercase app name, mtgc binary
- New logomark: an original pirate-ship silhouette (hull, twin billowing sails, swallow-tail pennant) in the terracotta brand gradient on a dark square — a nod to the MTG card "Pirate Ship", not a reproduction of its art. Source at src-tauri/icons/logo-source.svg; regenerate the full platform icon set (desktop/Windows Store/iOS/Android) with `cargo tauri icon src-tauri/icons/logo-source.svg`. - Apply it in-app via a new inline ShipLogo component (App.tsx), replacing the old "M" sidebar mark and "✦" empty-state mark with dark rounded squares containing the ship glyph. - Rename the app to lowercase "mtgc" everywhere: window title and productName (tauri.conf.json), <title> (index.html), sidebar brand text, empty-state heading. - Rename the Tauri package/binary mtgc-app -> mtgc (and its lib crate mtgc_app_lib -> mtgc_lib), so `cargo tauri build` now produces target/release/mtgc; updated main.rs and every README reference. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
38
src/App.tsx
38
src/App.tsx
@@ -45,6 +45,32 @@ const ICON_DOWNLOAD = svg(
|
||||
16,
|
||||
);
|
||||
|
||||
/**
|
||||
* mtgc's logomark: an original pirate-ship silhouette in the terracotta brand
|
||||
* color (a nod to the MTG card "Pirate Ship", not a reproduction of its art).
|
||||
* `gradientId` must be unique per instance rendered on the page at once.
|
||||
*/
|
||||
function ShipLogo({ size = 24, gradientId }: { size?: number; gradientId: string }) {
|
||||
return (
|
||||
<svg viewBox="0 0 200 200" width={size} height={size}>
|
||||
<defs>
|
||||
<linearGradient id={gradientId} x1="0" y1="0" x2="0" y2="1">
|
||||
<stop offset="0" stopColor="var(--accent-hover)" />
|
||||
<stop offset="1" stopColor="var(--accent-active)" />
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill={`url(#${gradientId})`}>
|
||||
<path d="M21,137 L179,137 L159,176 Q100,193 41,176 Z" />
|
||||
<rect x="21" y="133" width="158" height="6" rx="3" />
|
||||
<rect x="95" y="7" width="10" height="127" />
|
||||
<path d="M100,32 C73,40 56,65 59,94 C60,103 71,110 87,113 L100,113 Z" />
|
||||
<path d="M100,14 C147,26 168,73 160,114 C158,127 140,137 119,140 L100,140 Z" />
|
||||
<path d="M100,7 L126,13 L109,18 L126,23 L100,30 Z" />
|
||||
</g>
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
const NAV: { id: Tab; label: string; icon: ReactNode }[] = [
|
||||
{ id: "add", label: "Add Cards", icon: svg(<path d="M12 5v14M5 12h14" />) },
|
||||
{
|
||||
@@ -223,8 +249,10 @@ export default function App() {
|
||||
<div className="app">
|
||||
<nav className="nav-rail">
|
||||
<div className="brand">
|
||||
<span className="brand-mark">M</span>
|
||||
<span className="brand-text">MTG Library</span>
|
||||
<span className="brand-mark">
|
||||
<ShipLogo size={20} gradientId="brand-ship-grad" />
|
||||
</span>
|
||||
<span className="brand-text">mtgc</span>
|
||||
</div>
|
||||
|
||||
<div className="nav-items">
|
||||
@@ -373,8 +401,10 @@ export default function App() {
|
||||
<div className="content">
|
||||
{!ready ? (
|
||||
<div className="empty-state">
|
||||
<div className="empty-mark">✦</div>
|
||||
<h2>Welcome to your MTG library</h2>
|
||||
<div className="empty-mark">
|
||||
<ShipLogo size={40} gradientId="empty-ship-grad" />
|
||||
</div>
|
||||
<h2>Welcome to mtgc</h2>
|
||||
<p className="hint">
|
||||
No card database yet. Click <strong>Download card data</strong> to fetch
|
||||
the latest cards from Scryfall (a few hundred MB, about a minute). The
|
||||
|
||||
@@ -232,10 +232,7 @@ select option {
|
||||
width: 34px;
|
||||
height: 34px;
|
||||
border-radius: 10px;
|
||||
background: linear-gradient(150deg, var(--accent-hover), var(--accent-active));
|
||||
color: #fff;
|
||||
font-weight: 800;
|
||||
font-size: 19px;
|
||||
background: linear-gradient(150deg, var(--bg-elev), var(--bg-rail));
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
@@ -543,15 +540,13 @@ select option {
|
||||
gap: 14px;
|
||||
}
|
||||
.empty-mark {
|
||||
width: 72px;
|
||||
height: 72px;
|
||||
border-radius: 20px;
|
||||
width: 88px;
|
||||
height: 88px;
|
||||
border-radius: 22px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 36px;
|
||||
color: #fff;
|
||||
background: linear-gradient(150deg, var(--accent-hover), var(--accent-active));
|
||||
background: linear-gradient(150deg, var(--bg-elev), var(--bg-rail));
|
||||
box-shadow: 0 10px 30px var(--accent-glow);
|
||||
}
|
||||
.empty-state h2 {
|
||||
|
||||
Reference in New Issue
Block a user