+
Reduce Motion
+
+ Reduces animations and transitions for accessibility.
+
+
+ {([false, true] as const).map((value) => (
+
+ ))}
+
+
>
)}
diff --git a/src/index.css b/src/index.css
index c4780cb..3b296f6 100644
--- a/src/index.css
+++ b/src/index.css
@@ -200,3 +200,12 @@
scroll-behavior: auto !important;
}
}
+
+.reduce-motion *,
+.reduce-motion *::before,
+.reduce-motion *::after {
+ animation-duration: 0.01ms !important;
+ animation-iteration-count: 1 !important;
+ transition-duration: 0.01ms !important;
+ scroll-behavior: auto !important;
+}
diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts
index 45b3247..71824f1 100644
--- a/src/lib/schemas.ts
+++ b/src/lib/schemas.ts
@@ -87,4 +87,5 @@ export const appSettingsSchema = z.object({
boardSortOrder: z.enum(["manual", "title", "created", "updated"]).default("updated"),
boardManualOrder: z.array(z.string()).default([]),
lastNotificationCheck: z.string().nullable().default(null),
+ reduceMotion: z.boolean().default(false),
});
diff --git a/src/stores/app-store.ts b/src/stores/app-store.ts
index 75e00ec..0ed8d0a 100644
--- a/src/stores/app-store.ts
+++ b/src/stores/app-store.ts
@@ -21,6 +21,7 @@ interface AppState {
setView: (view: View) => void;
refreshBoards: () => Promise