From 51417706cd4442e9b7dc3210725643a36fab1257 Mon Sep 17 00:00:00 2001 From: Yilin Jing Date: Mon, 20 Apr 2026 18:45:34 +0800 Subject: [PATCH] fix: accessibility, reduced motion, and anti-pattern cleanup - Add global :focus-visible indicator (P0: keyboard users can now see focus) - Remove outline-none from all inputs (rely on global focus-visible) - Wrap all CSS animations in prefers-reduced-motion: no-preference - GlowMesh renders static gradient fallback for reduced-motion users - Add ARIA labels/roles to spinners, decorative SVGs, icon buttons - Add focus trap + role=dialog to onboarding modal - Add semantic ReScience Lab Inc. @@ -174,14 +162,17 @@ export default function Home() {
+
setUrl(e.target.value)} placeholder="https://skills.sh/owner/repo/skill-name" - className="flex-1 px-5 py-3.5 text-[#111] text-sm font-mono bg-transparent outline-none placeholder:text-gray-400" + className="flex-1 px-5 py-3.5 text-[#111] text-sm font-mono bg-transparent placeholder:text-gray-400" />
{urlError && ( -
+
{urlError}
)} @@ -201,9 +192,10 @@ export default function Home() {
{treeLoading ? ( -
-
+
+ ) : treeData ? ( diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index b6e2926..922d6dd 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -18,8 +18,8 @@ export default function SettingsPage() {
-
-
+
+
); @@ -31,7 +31,7 @@ export default function SettingsPage() {
-
+

Sign in to manage settings

Your API keys will be encrypted and stored securely in your account. @@ -137,7 +137,7 @@ function SettingsForm({

-
+

Sandbox

@@ -157,7 +157,7 @@ function SettingsForm({ value={sandboxKey} onChange={(e) => setSandboxKey(e.target.value)} placeholder="dtn_..." - className="w-full px-4 py-2.5 pr-12 bg-white/5 border border-white/10 text-white/90 text-sm font-mono outline-none focus:border-white/30 transition-colors placeholder:text-white/20" + className="w-full px-4 py-2.5 pr-12 bg-white/5 border border-white/10 text-white/90 text-sm font-mono focus:border-white/30 transition-colors placeholder:text-white/20" /> -
+

LLM Provider

@@ -148,7 +149,7 @@ function ConfigPanelForm({
-
+

Sandbox

@@ -168,7 +169,7 @@ function ConfigPanelForm({ value={sandboxKey} onChange={(e) => setSandboxKey(e.target.value)} placeholder="dtn_..." - className="w-full px-4 py-2.5 pr-12 bg-white/5 border border-white/10 text-white/90 text-sm font-mono outline-none focus:border-white/30 transition-colors placeholder:text-white/20" + className="w-full px-4 py-2.5 pr-12 bg-white/5 border border-white/10 text-white/90 text-sm font-mono focus:border-white/30 transition-colors placeholder:text-white/20" /> ); @@ -51,7 +53,7 @@ export function ModelSelector({ value={value} onChange={(e) => onChange(e.target.value)} placeholder={`e.g. ${provider.models[0]}`} - className="w-full px-4 py-2.5 bg-white/5 border border-white/10 text-white/90 text-sm font-mono outline-none focus:border-white/30 transition-colors placeholder:text-white/20" + className="w-full px-4 py-2.5 bg-white/5 border border-white/10 text-white/90 text-sm font-mono focus:border-white/30 transition-colors placeholder:text-white/20" /> {provider.models.map((m) => ( @@ -66,7 +68,7 @@ export function ModelSelector({