Files
BalanceWatch/branding/banner.svg
T
wtandClaude Opus 5.5 9cfac1797c
Build / Build (watchOS Simulator) (push) Canceled after 0s
Build / Build (watchOS Device) (push) Canceled after 0s
Restyle the watch app in the «Лес» palette with the Flutter app icon
- 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>
2026-11-01 02:11:00 +07:00

79 lines
4.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>