Skip to content

feat: update image assets and enhance animations#2973

Merged
eldadfux merged 2 commits intomainfrom
fix/docs-cls-toc-multicode
May 6, 2026
Merged

feat: update image assets and enhance animations#2973
eldadfux merged 2 commits intomainfrom
fix/docs-cls-toc-multicode

Conversation

@eldadfux
Copy link
Copy Markdown
Member

@eldadfux eldadfux commented May 6, 2026

  • Replaced the cover image for the StoreAlert customer story with a new WebP format for better performance.
  • Added a new avatar image for Phil McCluskey in WebP format to improve loading times.
  • Updated CSS animations by removing unnecessary blur effects and refining keyframes for smoother transitions.
  • Adjusted HTML structure in various components for better accessibility and semantic correctness.
  • Increased the number of icons displayed per page in the homepage strip for improved user experience.

These changes aim to enhance the overall performance and visual quality of the application.

What does this PR do?

(Provide a description of what this PR does.)

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)

Related PRs and Issues

(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)

Have you read the Contributing Guidelines on issues?

(Write your answer here.)

eldadfux added 2 commits May 6, 2026 10:32
- Replaced the cover image for the StoreAlert customer story with a new WebP format for better performance.
- Added a new avatar image for Phil McCluskey in WebP format to improve loading times.
- Updated CSS animations by removing unnecessary blur effects and refining keyframes for smoother transitions.
- Adjusted HTML structure in various components for better accessibility and semantic correctness.
- Increased the number of icons displayed per page in the homepage strip for improved user experience.

These changes aim to enhance the overall performance and visual quality of the application.
@appwrite
Copy link
Copy Markdown

appwrite Bot commented May 6, 2026

Appwrite Website

Project ID: 69d7efb00023389e8d27

Sites (1)
Site Status Logs Preview QR
 website
69d7f2670014e24571ca
Failed Failed View Logs Preview URL QR Code

Website (appwrite/website)

Project ID: 684969cb000a2f6c0a02

Sites (1)
Site Status Logs Preview QR
 website
68496a17000f03d62013
Building Building View Logs Preview URL QR Code


Tip

SSR frameworks are fully supported with configurable build runtimes

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 6, 2026

Greptile Summary

This PR replaces image assets with WebP equivalents, strips blur effects from CSS animations, adds font preload hints for CLS reduction, fixes label/input associations in bento animations, and refactors the homepage AI tool strip and platforms section into unified components with direct doc links.

  • ai.svelte: Consolidates separate desktop/mobile tooltip implementations into a single unified strip, but nests <a> elements inside <Tooltip.Trigger> (which renders as <button>), creating invalid interactive-content nesting that browsers may parse inconsistently.
  • MainNav.svelte: Removes aria-haspopup, aria-expanded, and aria-controls from the nav item wrapper div; accessibility impact depends on whether the child submenu component manages these internally.
  • platforms.svelte: Merges the framework and AI-tool strips into one paginated unifiedStrip and bumps the page size from 10 to 14 icons.

Confidence Score: 3/5

The PR is generally safe but the homepage AI tools strip has an HTML validity issue that should be resolved before merging.

The ecosystem strip in ai.svelte nests an <a> inside <Tooltip.Trigger>, which renders as a <button>. Browsers disagree on how to handle nested interactive content — some silently reparent the <a> outside the <button>, which can break the tooltip hover region. The rest of the changes are clean and low-risk.

src/routes/(marketing)/(components)/ai.svelte needs attention for the nested interactive element structure; src/lib/components/MainNav.svelte should be verified to confirm the submenu component manages ARIA attributes independently.

Important Files Changed

Filename Overview
src/routes/(marketing)/(components)/ai.svelte Replaced separate desktop/mobile tooltip implementations with a unified Tooltip+link approach, but nests <a> inside <Tooltip.Trigger> (which renders as <button>), producing invalid interactive-content nesting.
src/lib/components/MainNav.svelte Removed ARIA attributes and data-submenu-button from the nav item wrapper; accessibility impact depends on whether the submenu component manages these internally.
src/app.css Removed blur effects from animations for smoother, less GPU-intensive transitions; straightforward cleanup.
src/app.html Added <link rel="preload"> entries for Inter 400/500 and AeonikPro-Medium fonts to reduce CLS; safe performance improvement.
src/routes/(marketing)/(components)/platforms.svelte Unified framework and AI tool strips into a single paginated unifiedStrip; the DEFERRED_FIRST_PAGE_FRAMEWORKS set hard-codes names that could drift from allFrameworkStrip.
src/routes/(marketing)/(components)/quick-start-strip-items.ts Increased FRAMEWORKS_GALLERY_PAGE_SIZE from 10 to 14; safe constant change.
src/lib/components/marketing/pullquote.svelte Replaced h2/h5 with p elements, added image dimensions and loading="lazy"; good semantic and performance improvement.
src/routes/(marketing)/(components)/bento/(animations)/auth.svelte Added unique input IDs and matching label for attributes, and autocomplete="off"; fixes label-input association.

Reviews (1): Last reviewed commit: "format" | Re-trigger Greptile

Comment on lines +139 to +161
<Tooltip.Trigger
class="border-smooth group relative flex h-16 w-full items-center justify-center border-r border-dashed {i ===
0
? 'border-l'
: ''}"
>
<span class="relative z-10">{tool.name}</span>
<div
class="absolute inset-0 rounded-md bg-gradient-to-tl from-(--primary-color)/4 to-(--secondary-color)/10"
></div>
</div>
{/if}
</button>
class="pointer-events-none absolute inset-0 z-0 bg-gradient-to-tl from-(--primary-color)/4 to-(--secondary-color)/10 opacity-0 transition-opacity group-hover:opacity-100"
>
<Noise opacity={0.1} />
</div>
<a
href={tool.href}
class="relative z-10 flex size-full min-h-0 min-w-0 items-center justify-center"
aria-label={`${tool.name} — Appwrite docs`}
>
<img
src={$themeInUse === 'light' ? tool.light : tool.dark}
alt=""
class="h-9 w-9 shrink-0 object-contain opacity-90 transition-opacity duration-300 group-hover:opacity-100"
/>
</a>
</Tooltip.Trigger>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 <a> nested inside <Tooltip.Trigger> produces invalid HTML

Tooltip.Trigger from bits-ui renders as a <button> element by default. Placing an <a> inside it creates a <button><a></a></button> structure, which is explicitly invalid per the HTML spec (interactive content cannot contain other interactive content). Browsers parse this inconsistently — some promote the <a> outside the <button>, breaking the hover trigger region — and screen readers may announce both elements independently, confusing the accessible name. The fix is to pass asChild to Tooltip.Trigger and use a semantically neutral wrapper so the <a> itself is the only interactive element.

Comment on lines 24 to 30
{#each links as link}
<li class="web-main-header-nav-item text-primary hover:text-accent">
{#if link.submenu}
<div
class="web-main-header-nav-item-button"
aria-haspopup="true"
aria-expanded="false"
aria-controls="submenu"
data-submenu-button
>
<div class="web-main-header-nav-item-button">
<svelte:component this={link.submenu} label={link.label} />
</div>
{:else}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 ARIA attributes removed from nav item button

aria-haspopup="true", aria-expanded="false", and aria-controls="submenu" were removed from the wrapper div. These attributes signal to screen readers that the element opens a popup and whether it is currently open. Without them, assistive technologies will not announce the presence of the submenu to keyboard and screen-reader users, reducing discoverability. If the submenu component itself now manages these attributes on its internal trigger, this is fine — but if it does not, the accessibility regression should be addressed before merging.

Comment on lines 32 to +35
<Pullquote
name="Phil McCluskey"
title="App Manager, Majik Kids"
avatar="/images/testimonials/phil.jpg"
avatar="/images/testimonials/phil-avatar.webp"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Old phil.jpg avatar not removed from static assets

The reference was updated to phil-avatar.webp, but the original static/images/testimonials/phil.jpg file is not deleted in this PR. The stale file will continue to ship in the production bundle and be processed by the image optimiser on the next run, wasting build cache and CDN storage. It should be deleted alongside this change.

@eldadfux eldadfux merged commit 54796c7 into main May 6, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant