- BalancePalette (Shared/AppTheme.swift): the palette of BalanceFlutter's default preset. Balance card in a green gradient with mint text, income teal (↙) and expense deep orange (↗) as in the Flutter app, mint accent and a forest «Добавить операцию» button instead of indigo/purple. - Money shows no kopecks when whole, otherwise exactly two decimals («8 480,50 ₽»), like the Flutter client. - App icon: same artwork as BalanceFlutter (branding/icon.svg), every size of AppIcon.appiconset rendered by the new branding/render.sh (resvg, bundled Roboto fonts). - Repository avatar and README banner redrawn in the same style as the BalanceFlutter banner, with real simulator screenshots (docs/). Checked on the watchOS 27.2 simulator (icon in the app grid, home and accounts screens). Builds for simulator and device. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
79 lines
4.6 KiB
XML
79 lines
4.6 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1280 640" width="1280" height="640" font-family="Roboto, sans-serif">
|
||
<!-- Source of banner.png; same layout and palette («Лес») as the BalanceFlutter
|
||
banner. Render with branding/render.sh (needs resvg). Screenshots: docs/. -->
|
||
<defs>
|
||
<radialGradient id="bg" cx="70%" cy="45%" r="85%">
|
||
<stop offset="0" stop-color="#25594c"/>
|
||
<stop offset="1" stop-color="#0c241e"/>
|
||
</radialGradient>
|
||
<linearGradient id="case" x1="0" y1="0" x2="1" y2="1">
|
||
<stop offset="0" stop-color="#5a9c87"/>
|
||
<stop offset="1" stop-color="#1f5245"/>
|
||
</linearGradient>
|
||
<linearGradient id="strap" x1="0" y1="0" x2="1" y2="0">
|
||
<stop offset="0" stop-color="#143a31"/>
|
||
<stop offset="0.5" stop-color="#22574a"/>
|
||
<stop offset="1" stop-color="#143a31"/>
|
||
</linearGradient>
|
||
<linearGradient id="accent" x1="0" y1="0" x2="1" y2="0">
|
||
<stop offset="0" stop-color="#26b3a3"/>
|
||
<stop offset="0.5" stop-color="#a2f2d8"/>
|
||
<stop offset="1" stop-color="#f4511e"/>
|
||
</linearGradient>
|
||
<filter id="glow" x="-30%" y="-30%" width="160%" height="160%">
|
||
<feGaussianBlur stdDeviation="40"/>
|
||
</filter>
|
||
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
||
<feDropShadow dx="0" dy="14" stdDeviation="18" flood-color="#04120e" flood-opacity="0.7"/>
|
||
</filter>
|
||
<clipPath id="iconClip"><rect x="72" y="88" width="120" height="120" rx="28"/></clipPath>
|
||
<clipPath id="backScreen"><rect x="704" y="150" width="206" height="246" rx="44"/></clipPath>
|
||
<clipPath id="frontScreen"><rect x="884" y="228" width="250" height="298" rx="54"/></clipPath>
|
||
</defs>
|
||
|
||
<rect width="1280" height="640" fill="url(#bg)"/>
|
||
<ellipse cx="930" cy="340" rx="300" ry="210" fill="#39b997" opacity="0.25" filter="url(#glow)"/>
|
||
|
||
<!-- left: identity -->
|
||
<image x="72" y="88" width="120" height="120" xlink:href="../BalanceWatch/Assets.xcassets/AppIcon.appiconset/BalanceIcon-1024.png" clip-path="url(#iconClip)"/>
|
||
<text x="68" y="306" font-size="84" font-weight="700" fill="#ffffff">BalanceWatch</text>
|
||
<rect x="74" y="330" width="120" height="6" rx="3" fill="url(#accent)"/>
|
||
<text x="72" y="384" font-size="28" font-weight="500" fill="#a2f2d8">Личные финансы на Apple Watch</text>
|
||
<text x="72" y="428" font-size="22" fill="#9cc4b6">Самостоятельное приложение для часов,</text>
|
||
<text x="72" y="458" font-size="22" fill="#9cc4b6">синхронизация с self-hosted BalanceServer</text>
|
||
|
||
<g font-size="18" font-weight="500" fill="#dff7ee">
|
||
<rect x="72" y="494" width="128" height="36" rx="18" fill="#173f35" stroke="#3f7d6b"/>
|
||
<text x="136" y="518" text-anchor="middle">watchOS 10+</text>
|
||
<rect x="210" y="494" width="96" height="36" rx="18" fill="#173f35" stroke="#3f7d6b"/>
|
||
<text x="258" y="518" text-anchor="middle">SwiftUI</text>
|
||
<rect x="316" y="494" width="112" height="36" rx="18" fill="#173f35" stroke="#3f7d6b"/>
|
||
<text x="372" y="518" text-anchor="middle">SwiftData</text>
|
||
<rect x="72" y="540" width="214" height="36" rx="18" fill="#173f35" stroke="#3f7d6b"/>
|
||
<text x="179" y="564" text-anchor="middle">Счета и валюты</text>
|
||
<rect x="296" y="540" width="186" height="36" rx="18" fill="#173f35" stroke="#3f7d6b"/>
|
||
<text x="389" y="564" text-anchor="middle">Общие бюджеты</text>
|
||
</g>
|
||
|
||
<!-- back watch: accounts screen -->
|
||
<path d="M752 60 h110 l-8 76 h-94 z" fill="url(#strap)"/>
|
||
<path d="M760 410 h94 l8 76 h-110 z" fill="url(#strap)"/>
|
||
<g filter="url(#shadow)">
|
||
<rect x="918" y="216" width="14" height="40" rx="6" fill="#4f8f7b"/>
|
||
<rect x="690" y="136" width="234" height="274" rx="62" fill="url(#case)"/>
|
||
</g>
|
||
<rect x="700" y="146" width="214" height="254" rx="50" fill="#000000"/>
|
||
<image x="704" y="150" width="206" height="246" preserveAspectRatio="xMidYMid slice" xlink:href="../docs/accounts.png" clip-path="url(#backScreen)"/>
|
||
|
||
<!-- front watch: home screen -->
|
||
<path d="M944 120 h130 l-10 92 h-110 z" fill="url(#strap)"/>
|
||
<path d="M954 542 h110 l10 92 h-130 z" fill="url(#strap)"/>
|
||
<g filter="url(#shadow)">
|
||
<rect x="1150" y="300" width="18" height="52" rx="8" fill="#4f8f7b"/>
|
||
<rect x="1152" y="370" width="12" height="40" rx="5" fill="#3f7d6b"/>
|
||
<rect x="868" y="212" width="282" height="330" rx="74" fill="url(#case)"/>
|
||
</g>
|
||
<rect x="880" y="224" width="258" height="306" rx="60" fill="#000000"/>
|
||
<image x="884" y="228" width="250" height="298" preserveAspectRatio="xMidYMid slice" xlink:href="../docs/home.png" clip-path="url(#frontScreen)"/>
|
||
</svg>
|