mirror of
https://github.com/Such-Software/such.software.git
synced 2026-10-25 05:48:32 +01:00
feat(brand): regenerate every mark and animation from the such-graphics pack
All branding and animation assets now come from packs/such-software/pack.json
(such-graphics feat/brand-full-blast) instead of hand-maintained files:
- anim1_pulse / anim3_matrix / anim_type_v4 (both themes): regenerated with
the corrected U bowl, measured pulse timing (the hand-authored node delays
ran ~17% fast), and CSS animation with real prefers-reduced-motion support.
- clean marks, lockups (clean_*_w_text), favicons (svg + 192px png), and the
OG banner: regenerated; the OG card is the pack's 1200x630 projection.
- splash-such: rebuilt from the pack -- the old one carried the divergent U,
an off-palette cyan frame, and the pre-correction radius. Now theme-aware:
two inlined data URIs (hero-splash shows the light palette on light, the
dark palette on dark) since the pack's dark hues are tuned for near-black.
- new assets available: games_pulse (the launch arch with the rocket, wired
into /apps), morph, ambient_{atom,mesh,leaf}, favicon_dots, favicon_live,
icon-192/512 + maskable-512 (wired into manifest.json), /favicon.ico.
- animation embeds switched <img> -> <object>: Chrome freezes CSS animations
inside SVG-as-img (the old files animated because they were SMIL); an
object hosts a real SVG document where CSS animation and the
reduced-motion query both work. Verified live in Chrome.
This commit is contained in:
@@ -115,18 +115,8 @@ export default function LinksPage() {
|
||||
</div>
|
||||
|
||||
<div className="flex justify-center mt-12 mb-6 motion-reduce:hidden">
|
||||
<img
|
||||
src="/images/animations/anim1_pulse_light.svg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="w-20 h-20 opacity-50 block dark:hidden"
|
||||
/>
|
||||
<img
|
||||
src="/images/animations/anim1_pulse.svg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="w-20 h-20 opacity-50 hidden dark:block"
|
||||
/>
|
||||
<object data="/images/animations/games_pulse_light.svg" type="image/svg+xml" aria-hidden="true" className="w-20 h-20 opacity-50 block dark:hidden pointer-events-none"></object>
|
||||
<object data="/images/animations/games_pulse.svg" type="image/svg+xml" aria-hidden="true" className="w-20 h-20 opacity-50 hidden dark:block pointer-events-none"></object>
|
||||
</div>
|
||||
|
||||
<div className="text-center">
|
||||
|
||||
@@ -30,18 +30,8 @@ export default function BlogPage() {
|
||||
|
||||
{/* Animated accent */}
|
||||
<div className="flex justify-center mb-12 motion-reduce:hidden">
|
||||
<img
|
||||
src="/images/animations/anim_type_v4_light.svg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="w-24 h-24 opacity-60 block dark:hidden"
|
||||
/>
|
||||
<img
|
||||
src="/images/animations/anim_type_v4.svg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="w-24 h-24 opacity-60 hidden dark:block"
|
||||
/>
|
||||
<object data="/images/animations/anim_type_v4_light.svg" type="image/svg+xml" aria-hidden="true" className="w-24 h-24 opacity-60 block dark:hidden pointer-events-none"></object>
|
||||
<object data="/images/animations/anim_type_v4.svg" type="image/svg+xml" aria-hidden="true" className="w-24 h-24 opacity-60 hidden dark:block pointer-events-none"></object>
|
||||
</div>
|
||||
|
||||
{posts.length === 0 ? (
|
||||
|
||||
@@ -58,7 +58,7 @@ const structuredData = {
|
||||
"@type": "Organization",
|
||||
name: "Such Software LLC",
|
||||
url: "https://such.software",
|
||||
logo: "https://such.software/images/branding/clean_dark_w_text.svg",
|
||||
logo: "https://such.software/images/branding/icon-512.png",
|
||||
description: "E-commerce infrastructure, custom app development, and accessible web applications. Engineered for scale, compliance, and performance.",
|
||||
address: {
|
||||
"@type": "PostalAddress",
|
||||
|
||||
@@ -159,18 +159,8 @@ export default function ProductsPage() {
|
||||
<ProductsGrid products={products} />
|
||||
|
||||
<div className="flex justify-center mt-16 motion-reduce:hidden">
|
||||
<img
|
||||
src="/images/animations/anim3_matrix_light.svg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="w-20 h-20 opacity-40 block dark:hidden"
|
||||
/>
|
||||
<img
|
||||
src="/images/animations/anim3_matrix.svg"
|
||||
alt=""
|
||||
aria-hidden="true"
|
||||
className="w-20 h-20 opacity-50 hidden dark:block"
|
||||
/>
|
||||
<object data="/images/animations/anim3_matrix_light.svg" type="image/svg+xml" aria-hidden="true" className="w-20 h-20 opacity-40 block dark:hidden pointer-events-none"></object>
|
||||
<object data="/images/animations/anim3_matrix.svg" type="image/svg+xml" aria-hidden="true" className="w-20 h-20 opacity-50 hidden dark:block pointer-events-none"></object>
|
||||
</div>
|
||||
</div>
|
||||
<MobileNav />
|
||||
|
||||
Reference in New Issue
Block a user