celeroncoder / celeroncoder/notebooklm-ui-clone

React Review Audit

Open
#1 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
0
Forks
0
PR merge metrics
No merged PRs in 30d

Description

**Score: 92/100** · 1 error · 18 warnings

Copy as prompt

```text
Fix the following React Review diagnostics in my codebase.

## Errors (1)

1. [error] require-reduced-motion — package.json:0
Project uses a motion library but has no prefers-reduced-motion handling — required for accessibility (WCAG 2.3.3)

## Warnings (18)

2. [warning] design-no-default-tailwind-palette — app/_components/header.tsx:20
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

3. [warning] design-no-default-tailwind-palette — app/_components/header.tsx:24
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

4. [warning] nextjs-no-img-element — app/_components/footer.tsx:5
Use next/image instead of — provides automatic optimization, lazy loading, and responsive srcset

5. [warning] use-lazy-motion — app/_components/testimonials.tsx:3
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

6. [warning] design-no-default-tailwind-palette — app/_components/testimonials.tsx:23
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

7. [warning] nextjs-no-img-element — app/_components/testimonials.tsx:24
Use next/image instead of — provides automatic optimization, lazy loading, and responsive srcset

8. [warning] design-no-redundant-size-axes — app/_components/testimonials.tsx:24
w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

9. [warning] no-array-index-as-key — app/_components/testimonials.tsx:89
Array index "index" used as key — causes bugs when list is reordered or filtered

10. [warning] nextjs-missing-metadata — app/page.tsx:1
Page without metadata or generateMetadata export — hurts SEO

11. [warning] design-no-redundant-size-axes — app/_components/privacy.tsx:16
w-[6.4375rem] h-[6.4375rem] → use the shorthand size-[6.4375rem] (Tailwind v3.4+)

12. [warning] nextjs-no-img-element — app/_components/privacy.tsx:19
Use next/image instead of — provides automatic optimization, lazy loading, and responsive srcset

13. [warning] use-lazy-motion — app/_components/hero.tsx:3
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

14. [warning] no-gradient-text — app/_components/hero.tsx:15
Gradient text (bg-clip-text + bg-gradient) is decorative rather than meaningful — a common AI tell. Use solid colors for text

15. [warning] no-pure-black-background — app/_components/hero.tsx:35
Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)

16. [warning] no-array-index-as-key — app/_components/use-cases.tsx:44
Array index "index" used as key — causes bugs when list is reordered or filtered

17. [warning] design-no-space-on-flex-children — app/_components/use-cases.tsx:45
space-y-4 on a flex/grid parent — use gap-y-4 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

18. [warning] design-no-space-on-flex-children — app/_components/use-cases.tsx:47
space-y-4 on a flex/grid parent — use gap-y-4 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

19. [warning] design-no-redundant-size-axes — app/_components/use-cases.tsx:48
w-12 h-12 → use the shorthand size-12 (Tailwind v3.4+)
```

---

### ❌ Errors (1)

**`require-reduced-motion`**

Project uses a motion library but has no prefers-reduced-motion handling — required for accessibility (WCAG 2.3.3)

> Add `useReducedMotion()` from your animation library, or a `@media (prefers-reduced-motion: reduce)` CSS query

[`package.json:0`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/package.json#L0)

---

### ⚠️ Warnings (18)

**`design-no-default-tailwind-palette`**

text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

> Replace `indigo-*` / `gray-*` / `slate-*` with project tokens, your brand color, or a less-default neutral (`zinc`, `neutral`, `stone`)

[`app/_components/header.tsx:20`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/header.tsx#L20)
[`app/_components/header.tsx:24`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/header.tsx#L24)
[`app/_components/testimonials.tsx:23`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/testimonials.tsx#L23)

**`nextjs-no-img-element`**

Use next/image instead of <img> — provides automatic optimization, lazy loading, and responsive srcset

> `import Image from 'next/image'` — provides automatic WebP/AVIF, lazy loading, and responsive srcset

[`app/_components/footer.tsx:5`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/footer.tsx#L5)
[`app/_components/testimonials.tsx:24`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/testimonials.tsx#L24)
[`app/_components/privacy.tsx:19`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/privacy.tsx#L19)

**`design-no-redundant-size-axes`**

w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

> Collapse `w-N h-N` to `size-N` (Tailwind v3.4+) when both axes match

[`app/_components/testimonials.tsx:24`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/testimonials.tsx#L24)
[`app/_components/privacy.tsx:16`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/privacy.tsx#L16)
[`app/_components/use-cases.tsx:48`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/use-cases.tsx#L48)

**`use-lazy-motion`**

Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

> Use `import { LazyMotion, m } from "framer-motion"` with `domAnimation` features — saves ~30kb

[`app/_components/testimonials.tsx:3`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/testimonials.tsx#L3)
[`app/_components/hero.tsx:3`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/hero.tsx#L3)

**`no-array-index-as-key`**

Array index "index" used as key — causes bugs when list is reordered or filtered

> Use a stable unique identifier: `key={item.id}` or `key={item.slug}` — index keys break on reorder/filter

[`app/_components/testimonials.tsx:89`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/testimonials.tsx#L89)
[`app/_components/use-cases.tsx:44`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/use-cases.tsx#L44)

**`design-no-space-on-flex-children`**

space-y-4 on a flex/grid parent — use gap-y-4 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

> Use `gap-*` on the flex/grid parent. `space-x-*` / `space-y-*` produce phantom gaps when a sibling is conditionally rendered, lose vertical spacing on wrapped lines, and don't mirror in RTL

[`app/_components/use-cases.tsx:45`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/use-cases.tsx#L45)
[`app/_components/use-cases.tsx:47`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/use-cases.tsx#L47)

**`nextjs-missing-metadata`**

Page without metadata or generateMetadata export — hurts SEO

> Add `export const metadata = { title: '...', description: '...' }` or `export async function generateMetadata()`

[`app/page.tsx:1`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/page.tsx#L1)

**`no-gradient-text`**

Gradient text (bg-clip-text + bg-gradient) is decorative rather than meaningful — a common AI tell. Use solid colors for text

> Use solid text colors for readability. If you need emphasis, use font weight, size, or a distinct color instead of gradients

[`app/_components/hero.tsx:15`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/hero.tsx#L15)

**`no-pure-black-background`**

Pure black background (bg-black) looks harsh — use a near-black tinted toward your brand hue (e.g. bg-gray-950)

> Tint the background slightly toward your brand hue — e.g. `#0a0a0f` or Tailwind's `bg-gray-950`. Pure black looks harsh on modern displays

[`app/_components/hero.tsx:35`](https://github.com/celeroncoder/notebooklm-ui-clone/blob/738f685821eaa2c88bedc2bdfefda0fc74ab9f37/app/_components/hero.tsx#L35)

---

Last scored May 14, 2026 at 9:39 AM UTC. Maintained by [React Review](https://github.com/millionco/react-review).

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.