Colorful ships with animated effects — a rainbow cursor trail, an animated fluid gradient background, and Framer Motion spring transitions — that require accessibility review before publication. These effects can create barriers for users who rely on keyboard navigation, have vestibular disorders, or use assistive technologies that depend on clear focus states and well-structured content. Working through the checklist below before publishing will catch the most common issues.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/colorful/llms.txt
Use this file to discover all available pages before exploring further.
Pre-publish checklist
1. Keyboard navigation
1. Keyboard navigation
2. Link focus states
2. Link focus states
Colorful uses Tailwind’s
focus:ring-2, focus:ring-teal-main, focus:ring-rainbow-pink, and focus:ring-rainbow-amber utilities to draw visible focus rings on interactive elements. Step through all links and interactive controls with the Tab key and confirm that a visible focus ring appears on each one. If you have added new interactive elements during customization, apply matching focus:ring-2 utilities to them as well.3. Mobile-width behavior
3. Mobile-width behavior
Test the portfolio at the following viewport widths to confirm layout, text size, and navigation all remain readable and usable:
- 320 px — minimum width targeted by most mobile browsers
- 375 px — common phone width (iPhone SE, iPhone 14)
- 768 px — tablet breakpoint where Colorful’s responsive grid changes
4. Image alternative text
4. Image alternative text
Every
<img> element must carry a descriptive alt attribute. This includes project screenshots, profile photos, and any decorative images that convey meaning. The only images that should use an empty alt="" are purely decorative images that add no information — and those should be rare in a portfolio context.5. Heading order
5. Heading order
Headings must follow a logical
h1 → h2 → h3 hierarchy without skipping levels. Each page should have exactly one h1 (the page title), followed by h2 section headings, and h3 subsection headings where needed. Skipping from h1 to h3 confuses screen reader navigation. Use a browser extension such as HeadingsMap to visualize the heading structure of each page.6. Reduced-motion preferences
6. Reduced-motion preferences
The
FluidBackground component animates four large blurred blobs continuously using Framer Motion. The CursorTrail component draws an animated rainbow trail on the canvas as the mouse moves. Neither component currently reads the prefers-reduced-motion media query.Users who have enabled the “reduce motion” system preference (Settings → Accessibility → Motion on macOS and iOS, for example) will see full animation regardless of that preference. See the Reduced-motion implementation and Disabling CursorTrail sections below for remediation steps.7. Color contrast
7. Color contrast
The theme’s primary teal color
#14b8a6 (--color-teal-main) on a white #ffffff background produces a contrast ratio of approximately 2.4:1, which does not meet the WCAG AA minimum of 4.5:1 for normal-weight text smaller than 18 pt, or 3:1 for large text. Before publishing:- Verify all body text and label text using a tool such as the WebAIM Contrast Checker.
- Consider using the darker
#0f172a(--color-bg-dark) for body text against light backgrounds — this combination passes AA and AAA. - Teal is used safely as a decorative accent (scrollbar, focus rings, borders) rather than as body text color throughout the default theme; confirm your personalized content has not introduced teal-colored small text.
8. Readability of decorative text
8. Readability of decorative text
The
.text-fluid-clip class applies an animated gradient to text using -webkit-background-clip: text and -webkit-text-fill-color: transparent. In browsers that do not support this WebKit property, the text will fall back to the inherited color, which is typically #0f172a (dark slate). Confirm the fallback color is readable and provides sufficient contrast on the background behind that text element. See the warning below for cross-browser details.Reduced-motion implementation
The compiledassets/main.css file does not currently include a prefers-reduced-motion media query — this is an acknowledged future enhancement noted in the README. You can add the following block to assets/main.css to immediately stop the CSS animations for users who have requested reduced motion:
fluid-gradient keyframe animation defined in main.css and holds the gradient at its starting position (0% 50%), so the decorative colors remain visible without moving.
The Framer Motion animations inside FluidBackground.js are separate from the CSS keyframes and require a JavaScript-level fix. The recommended approach is to read the user’s motion preference via the Framer Motion useReducedMotion hook and pass conditional animate props:
shouldReduceMotion is true, passing an empty object stops all animation and leaves the blobs in their initial positions.
Disabling CursorTrail
TheCursorTrail component renders a full-screen canvas that draws a rainbow dot-and-line trail following mouse movement. This is a purely decorative effect. Users who prefer no decorative motion, or who are using a touch device where cursor trails are meaningless, will receive no benefit from the component.
To remove the cursor trail entirely, locate the <CursorTrail /> import and usage in main.js and either delete the JSX element or comment it out:
window.matchMedia before mounting:
Future enhancements
The Colorful README notes the following accessibility-related items as planned future additions. If your workflow requires any of these before publishing, they are safe to implement manually on your fork:- Visible reduced-motion toggle — a button in the UI that lets visitors disable animations without relying on the OS-level preference.
- Themed 404.html page — a styled error page that matches the Colorful visual design rather than GitHub Pages’ default 404.
- Additional accessibility refinements — further improvements after testing the portfolio with personalized content, which may surface issues specific to the text and images you add.