Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .jules/palette.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
## 2024-05-24 - Accessibility improvements for icon-only buttons
**Learning:** Buttons or links with `hidden lg:inline` text classes lose their accessible names on small screens, causing screen readers to read nothing or raw icon ligatures.
**Action:** When creating responsive buttons/links that hide visible text on smaller screens, add an explicit `aria-label` attribute on the parent interactive element (`<button>` or `<a>`) to maintain consistent screen reader accessibility across all viewport sizes.
16 changes: 8 additions & 8 deletions dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,13 @@ <h2 class="text-white text-base lg:text-xl font-bold leading-tight tracking-tigh
</div>
</div>
</div>
<a class="hidden sm:inline-flex flex-none items-center justify-center rounded-full h-9 lg:h-10 px-4 lg:px-5 bg-white/5 hover:bg-white/10 border border-white/10 text-white text-xs lg:text-sm font-bold transition-all" href="/">
<span class="material-symbols-outlined text-lg lg:mr-2">arrow_back</span>
<a aria-label="Back to Home" class="hidden sm:inline-flex flex-none items-center justify-center rounded-full h-9 lg:h-10 px-4 lg:px-5 bg-white/5 hover:bg-white/10 border border-white/10 text-white text-xs lg:text-sm font-bold transition-all" href="/">
<span aria-hidden="true" class="material-symbols-outlined text-lg lg:mr-2">arrow_back</span>
<span class="hidden lg:inline">Back to Home</span>
</a>
<button class="group relative flex-none flex cursor-pointer items-center justify-center overflow-hidden rounded-full h-9 lg:h-10 px-4 lg:px-6 bg-gradient-to-r from-amber-600 to-amber-800 hover:from-amber-500 hover:to-amber-700 border border-white/10 shadow-[0_0_15px_rgba(245,158,11,0.3)] transition-all" id="deployBtn">
<button aria-label="Deploy" class="group relative flex-none flex cursor-pointer items-center justify-center overflow-hidden rounded-full h-9 lg:h-10 px-4 lg:px-6 bg-gradient-to-r from-amber-600 to-amber-800 hover:from-amber-500 hover:to-amber-700 border border-white/10 shadow-[0_0_15px_rgba(245,158,11,0.3)] transition-all" id="deployBtn">
<div class="absolute inset-0 bg-white/10 opacity-0 group-hover:opacity-100 transition-opacity"></div>
<span class="material-symbols-outlined lg:mr-2 text-lg relative z-10">rocket_launch</span>
<span aria-hidden="true" class="material-symbols-outlined lg:mr-2 text-lg relative z-10">rocket_launch</span>
<span class="hidden lg:inline truncate text-sm font-bold tracking-wide relative z-10">Deploy</span>
</button>
</div>
Expand Down Expand Up @@ -210,11 +210,11 @@ <h2 class="text-white text-xl lg:text-3xl font-bold tracking-tight">Generated Ou
<div class="flex items-center gap-2">
<span class="hidden xs:inline-block bg-white/5 text-amber-200 px-2.5 py-1 rounded-full text-[10px] lg:text-xs font-semibold border border-white/10 backdrop-blur-sm">Step 2 of 2</span>
<div class="hidden xs:block h-6 w-px bg-white/10 mx-1"></div>
<button class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-all duration-300 border border-transparent" id="copyBtn" title="Copy JSON">
<span class="material-symbols-outlined text-lg lg:text-xl transition-all duration-300" id="copyIcon">content_copy</span>
<button aria-label="Copy JSON" class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-all duration-300 border border-transparent" id="copyBtn" title="Copy JSON">
<span aria-hidden="true" class="material-symbols-outlined text-lg lg:text-xl transition-all duration-300" id="copyIcon">content_copy</span>
</button>
<button class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-colors" id="downloadBtn" title="Download JSON">
<span class="material-symbols-outlined text-lg lg:text-xl">download</span>
<button aria-label="Download JSON" class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-colors" id="downloadBtn" title="Download JSON">
<span aria-hidden="true" class="material-symbols-outlined text-lg lg:text-xl">download</span>
</button>
</div>
</div>
Expand Down
12 changes: 6 additions & 6 deletions glassui.html
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,9 @@ <h2 class="text-white text-base lg:text-xl font-bold leading-tight tracking-tigh
</div>
</div>
</div>
<button class="group relative flex-none flex cursor-pointer items-center justify-center overflow-hidden rounded-full h-9 lg:h-10 px-4 lg:px-6 bg-gradient-to-r from-amber-600 to-amber-800 hover:from-amber-500 hover:to-amber-700 border border-white/10 shadow-[0_0_15px_rgba(245,158,11,0.3)] transition-all" id="deployBtn">
<button aria-label="Deploy" class="group relative flex-none flex cursor-pointer items-center justify-center overflow-hidden rounded-full h-9 lg:h-10 px-4 lg:px-6 bg-gradient-to-r from-amber-600 to-amber-800 hover:from-amber-500 hover:to-amber-700 border border-white/10 shadow-[0_0_15px_rgba(245,158,11,0.3)] transition-all" id="deployBtn">
<div class="absolute inset-0 bg-white/10 opacity-0 group-hover:opacity-100 transition-opacity"></div>
<span class="material-symbols-outlined lg:mr-2 text-lg relative z-10">rocket_launch</span>
<span aria-hidden="true" class="material-symbols-outlined lg:mr-2 text-lg relative z-10">rocket_launch</span>
<span class="hidden lg:inline truncate text-sm font-bold tracking-wide relative z-10">Deploy</span>
</button>
</div>
Expand Down Expand Up @@ -206,11 +206,11 @@ <h2 class="text-white text-xl lg:text-3xl font-bold tracking-tight">Generated Ou
<div class="flex items-center gap-2">
<span class="hidden xs:inline-block bg-white/5 text-amber-200 px-2.5 py-1 rounded-full text-[10px] lg:text-xs font-semibold border border-white/10 backdrop-blur-sm">Step 2 of 2</span>
<div class="hidden xs:block h-6 w-px bg-white/10 mx-1"></div>
<button class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-all duration-300 border border-transparent" id="copyBtn" title="Copy JSON">
<span class="material-symbols-outlined text-lg lg:text-xl transition-all duration-300" id="copyIcon">content_copy</span>
<button aria-label="Copy JSON" class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-all duration-300 border border-transparent" id="copyBtn" title="Copy JSON">
<span aria-hidden="true" class="material-symbols-outlined text-lg lg:text-xl transition-all duration-300" id="copyIcon">content_copy</span>
</button>
<button class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-colors" id="downloadBtn" title="Download JSON">
<span class="material-symbols-outlined text-lg lg:text-xl">download</span>
<button aria-label="Download JSON" class="size-8 lg:size-9 flex items-center justify-center hover:bg-white/10 rounded-lg text-neutral-500 hover:text-amber-400 transition-colors" id="downloadBtn" title="Download JSON">
<span aria-hidden="true" class="material-symbols-outlined text-lg lg:text-xl">download</span>
</button>
</div>
</div>
Expand Down
12 changes: 12 additions & 0 deletions verify_ui.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import asyncio
from playwright.async_api import async_playwright

async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
await page.goto("file:///app/dashboard.html", timeout=10000)
await page.screenshot(path="/home/jules/verification/dashboard.png")
await browser.close()

asyncio.run(main())