celeroncoder / celeroncoder/themandi

React Review Audit

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

Description

**Score: 83/100** · 2 errors · 357 warnings

Copy as prompt

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

## Errors (2)

1. [error] nextjs-no-side-effect-in-get-handler — themandi/src/app/api/image-proxy/route.ts:7
GET handler has side effects (headers.set()) — use POST to prevent CSRF and unintended prefetch triggers

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

## Warnings (357)

3. [warning] no-react19-deprecated-apis — themandi/src/components/ui/separator.tsx:8
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

4. [warning] no-react19-deprecated-apis — themandi/src/components/ui/accordion.tsx:10
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

5. [warning] no-react19-deprecated-apis — themandi/src/components/ui/accordion.tsx:22
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

6. [warning] design-no-redundant-size-axes — themandi/src/components/ui/accordion.tsx:36
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

7. [warning] no-react19-deprecated-apis — themandi/src/components/ui/accordion.tsx:42
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

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

9. [warning] use-lazy-motion — themandi/src/app/cart/page.tsx:14
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

10. [warning] rerender-state-only-in-handlers — themandi/src/app/cart/page.tsx:35
useState "isLoading" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

11. [warning] no-giant-component — themandi/src/app/cart/page.tsx:26
Component "CartPage" is 302 lines — consider breaking it into smaller focused components

12. [warning] react-compiler-destructure-method — themandi/src/app/cart/page.tsx:44
Destructure for clarity: `const { push } = useRouter()` then call `push(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

13. [warning] no-cascading-set-state — themandi/src/app/cart/page.tsx:74
4 setState calls in a single useEffect — consider using useReducer or deriving state

14. [warning] no-effect-event-handler — themandi/src/app/cart/page.tsx:74
useEffect simulating an event handler — move logic to an actual event handler instead

15. [warning] react-compiler-destructure-method — themandi/src/app/cart/page.tsx:109
Destructure for clarity: `const { push } = useRouter()` then call `push(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

16. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:148
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

17. [warning] design-no-bold-heading — themandi/src/app/cart/page.tsx:161
font-bold on

crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

18. [warning] react-compiler-destructure-method — themandi/src/app/cart/page.tsx:177
Destructure for clarity: `const { push } = useRouter()` then call `push(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

19. [warning] design-no-space-on-flex-children — themandi/src/app/cart/page.tsx:199
space-x-6 on a flex/grid parent — use gap-x-6 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

20. [warning] design-no-space-on-flex-children — themandi/src/app/cart/page.tsx:216
space-x-2 on a flex/grid parent — use gap-x-2 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

21. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:220
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)

22. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:231
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

23. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:239
w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)

24. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:248
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

25. [warning] design-no-space-on-flex-children — themandi/src/app/cart/page.tsx:253
space-x-4 on a flex/grid parent — use gap-x-4 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

26. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:262
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

27. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:265
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

28. [warning] design-no-redundant-size-axes — themandi/src/app/cart/page.tsx:310
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

29. [warning] design-no-three-period-ellipsis — themandi/src/app/cart/page.tsx:310
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

30. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:20
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

31. [warning] design-no-redundant-size-axes — themandi/src/components/ui/select.tsx:34
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

32. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:40
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

33. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:57
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

34. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:75
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

35. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:107
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

36. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:119
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

37. [warning] design-no-redundant-size-axes — themandi/src/components/ui/select.tsx:131
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)

38. [warning] design-no-redundant-size-axes — themandi/src/components/ui/select.tsx:133
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

39. [warning] no-react19-deprecated-apis — themandi/src/components/ui/select.tsx:141
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

40. [warning] design-no-default-tailwind-palette — themandi/src/components/image-loader.tsx:76
bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

41. [warning] no-react19-deprecated-apis — themandi/src/components/ui/input.tsx:8
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

42. [warning] click-events-have-key-events — themandi/src/app/purchases/page.tsx:187
Enforce a clickable non-interactive element has at least one keyboard event listener.

43. [warning] no-static-element-interactions — themandi/src/app/purchases/page.tsx:187
Static HTML elements with event handlers require a role.

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

45. [warning] no-giant-component — themandi/src/app/purchases/page.tsx:23
Component "PurchasesPage" is 430 lines — consider breaking it into smaller focused components

46. [warning] design-no-redundant-size-axes — themandi/src/app/purchases/page.tsx:96
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

47. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:109
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

48. [warning] design-no-bold-heading — themandi/src/app/purchases/page.tsx:114
font-bold on

crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

49. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:114
text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

50. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:117
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

51. [warning] rendering-hydration-mismatch-time — themandi/src/app/purchases/page.tsx:181
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

52. [warning] design-no-redundant-size-axes — themandi/src/app/purchases/page.tsx:150
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

53. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:154
text-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

54. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:155
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

55. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:158
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

56. [warning] rendering-hydration-mismatch-time — themandi/src/app/purchases/page.tsx:181
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

57. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:174
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

58. [warning] rendering-hydration-mismatch-time — themandi/src/app/purchases/page.tsx:181
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

59. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:195
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

60. [warning] design-no-space-on-flex-children — themandi/src/app/purchases/page.tsx:219
space-x-3 on a flex/grid parent — use gap-x-3 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

61. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:220
border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

62. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:220
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

63. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:234
text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

64. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:237
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

65. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:242
text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

66. [warning] design-no-space-on-flex-children — themandi/src/app/purchases/page.tsx:250
space-x-3 on a flex/grid parent — use gap-x-3 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

67. [warning] design-no-space-on-flex-children — themandi/src/app/purchases/page.tsx:251
space-x-1 on a flex/grid parent — use gap-x-1 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

68. [warning] no-array-index-as-key — themandi/src/app/purchases/page.tsx:256
Array index "index" used as key — causes bugs when list is reordered or filtered

69. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:257
border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

70. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:257
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

71. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:272
border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

72. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:272
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

73. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:273
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

74. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:280
text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

75. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:283
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

76. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:288
text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

77. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:300
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

78. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:305
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

79. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:314
border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

80. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:314
bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

81. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:327
text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

82. [warning] design-no-space-on-flex-children — themandi/src/app/purchases/page.tsx:330
space-y-1 on a flex/grid parent — use gap-y-1 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

83. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:331
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

84. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:335
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

85. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:342
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

86. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:353
text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

87. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:372
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

88. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:375
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

89. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:380
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

90. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:383
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

91. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:389
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

92. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:392
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

93. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:398
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

94. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:401
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

95. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:407
border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

96. [warning] design-no-default-tailwind-palette — themandi/src/app/purchases/page.tsx:408
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

97. [warning] design-no-redundant-size-axes — themandi/src/app/purchases/page.tsx:438
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

98. [warning] design-no-three-period-ellipsis — themandi/src/app/purchases/page.tsx:438
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

99. [warning] server-hoist-static-io — themandi/src/app/api/image-proxy/route.ts:30
fs.readFile() in GET route handler reads the same static asset every request — hoist to module scope so the read happens once at module load

100. [warning] server-hoist-static-io — themandi/src/app/api/image-proxy/route.ts:30
fs.readFile() in GET route handler reads the same static asset every request — hoist to module scope so the read happens once at module load

101. [warning] server-fetch-without-revalidate — themandi/src/app/api/image-proxy/route.ts:52
fetch(url) in a Server Component / route handler defaults to forever-caching — pass { next: { revalidate: } } / { next: { tags: [...] } } / { cache: "no-store" } so stale data doesn't quietly persist

102. [warning] no-react19-deprecated-apis — themandi/src/components/ui/card.tsx:5
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

103. [warning] no-react19-deprecated-apis — themandi/src/components/ui/card.tsx:20
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

104. [warning] no-react19-deprecated-apis — themandi/src/components/ui/card.tsx:32
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

105. [warning] no-react19-deprecated-apis — themandi/src/components/ui/card.tsx:44
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

106. [warning] no-react19-deprecated-apis — themandi/src/components/ui/card.tsx:56
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

107. [warning] no-react19-deprecated-apis — themandi/src/components/ui/card.tsx:64
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

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

109. [warning] use-lazy-motion — themandi/src/app/page.tsx:17
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

110. [warning] no-full-lodash-import — themandi/src/app/page.tsx:19
Importing entire lodash library — import from 'lodash/functionName' instead

111. [warning] no-giant-component — themandi/src/app/page.tsx:25
Component "HomeContent" is 565 lines — consider breaking it into smaller focused components

112. [warning] react-compiler-destructure-method — themandi/src/app/page.tsx:30
Destructure for clarity: `const { get } = useSearchParams()` then call `get(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

113. [warning] react-compiler-destructure-method — themandi/src/app/page.tsx:31
Destructure for clarity: `const { get } = useSearchParams()` then call `get(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

114. [warning] react-compiler-destructure-method — themandi/src/app/page.tsx:32
Destructure for clarity: `const { get } = useSearchParams()` then call `get(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

115. [warning] react-compiler-destructure-method — themandi/src/app/page.tsx:33
Destructure for clarity: `const { get } = useSearchParams()` then call `get(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

116. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:135
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

117. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:153
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

118. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:171
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

119. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:190
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

120. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:222
from-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

121. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:230
border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

122. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:233
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

123. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:246
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

124. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:246
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

125. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:255
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

126. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:255
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

127. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:258
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

128. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:336
border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

129. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:340
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

130. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:340
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

131. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:453
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

132. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:453
text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

133. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:490
bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

134. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:491
w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

135. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:491
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

136. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:493
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

137. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:496
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

138. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:553
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

139. [warning] design-no-three-period-ellipsis — themandi/src/app/page.tsx:553
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

140. [warning] no-inline-bounce-easing — themandi/src/app/page.tsx:558
animate-bounce feels dated and tacky — use a subtle ease-out transform for natural deceleration

141. [warning] design-no-redundant-size-axes — themandi/src/app/page.tsx:558
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

142. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:573
border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

143. [warning] design-no-space-on-flex-children — themandi/src/app/page.tsx:574
space-y-2 on a flex/grid parent — use gap-y-2 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

144. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:575
text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

145. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:578
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

146. [warning] design-no-default-tailwind-palette — themandi/src/app/page.tsx:581
bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

147. [warning] no-react19-deprecated-apis — themandi/src/components/ui/button.tsx:43
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

148. [warning] use-lazy-motion — themandi/src/app/_component/product-card.tsx:20
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

149. [warning] design-no-redundant-size-axes — themandi/src/app/_component/product-card.tsx:111
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

150. [warning] design-no-bold-heading — themandi/src/app/_component/product-card.tsx:118
font-bold on

crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

151. [warning] design-no-default-tailwind-palette — themandi/src/app/_component/product-card.tsx:131
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

152. [warning] design-no-default-tailwind-palette — themandi/src/app/_component/product-card.tsx:147
text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

153. [warning] design-no-default-tailwind-palette — themandi/src/app/_component/product-card.tsx:168
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

154. [warning] rendering-hydration-mismatch-time — themandi/src/app/_component/product-card.tsx:175
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

155. [warning] design-no-default-tailwind-palette — themandi/src/app/_component/product-card.tsx:173
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

156. [warning] rendering-hydration-mismatch-time — themandi/src/app/_component/product-card.tsx:175
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

157. [warning] rendering-hydration-mismatch-time — themandi/src/app/_component/product-card.tsx:181
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

158. [warning] design-no-default-tailwind-palette — themandi/src/app/_component/product-card.tsx:179
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

159. [warning] rendering-hydration-mismatch-time — themandi/src/app/_component/product-card.tsx:181
new Date() reachable from JSX renders differently on server vs client — wrap in useEffect+useState (client-only) or add suppressHydrationWarning to the parent if intentional

160. [warning] design-no-redundant-size-axes — themandi/src/app/_component/product-card.tsx:202
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

161. [warning] design-no-three-period-ellipsis — themandi/src/app/_component/product-card.tsx:203
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

162. [warning] design-no-redundant-size-axes — themandi/src/app/_component/product-card.tsx:210
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

163. [warning] nextjs-missing-metadata — themandi/src/app/checkout/success/page.tsx:1
Page without metadata or generateMetadata export — hurts SEO

164. [warning] use-lazy-motion — themandi/src/app/checkout/success/page.tsx:10
Import "m" with LazyMotion instead of "motion" — saves ~30kb in bundle size

165. [warning] rerender-state-only-in-handlers — themandi/src/app/checkout/success/page.tsx:13
useState "isProcessing" is updated but never read in the component's return — use useRef so updates don't trigger re-renders

166. [warning] no-cascading-set-state — themandi/src/app/checkout/success/page.tsx:19
3 setState calls in a single useEffect — consider using useReducer or deriving state

167. [warning] react-compiler-destructure-method — themandi/src/app/checkout/success/page.tsx:21
Destructure for clarity: `const { get } = useSearchParams()` then call `get(...)` directly — easier for React Compiler to memoize and clearer about which methods this component depends on

168. [warning] design-no-redundant-size-axes — themandi/src/app/checkout/success/page.tsx:51
w-12 h-12 → use the shorthand size-12 (Tailwind v3.4+)

169. [warning] design-no-default-tailwind-palette — themandi/src/app/checkout/success/page.tsx:56
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

170. [warning] design-no-three-period-ellipsis — themandi/src/app/checkout/success/page.tsx:57
Three-period ellipsis ("...") in JSX text — use the actual ellipsis character "…" (or `…`)

171. [warning] no-scale-from-zero — themandi/src/app/checkout/success/page.tsx:71
scale: 0 makes elements appear from nowhere — use scale: 0.95 with opacity: 0 for natural entrance

172. [warning] no-gradient-text — themandi/src/app/checkout/success/page.tsx:78
Gradient text (bg-clip-text + bg-gradient) is decorative rather than meaningful — a common AI tell. Use solid colors for text

173. [warning] design-no-bold-heading — themandi/src/app/checkout/success/page.tsx:82
font-bold on

crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

174. [warning] design-no-default-tailwind-palette — themandi/src/app/checkout/success/page.tsx:91
text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

175. [warning] design-no-redundant-size-axes — themandi/src/app/checkout/success/page.tsx:104
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

176. [warning] design-no-redundant-size-axes — themandi/src/app/checkout/success/page.tsx:114
w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

177. [warning] design-no-redundant-size-axes — themandi/src/app/_component/header.tsx:54
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

178. [warning] design-no-redundant-size-axes — themandi/src/app/_component/header.tsx:55
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

179. [warning] design-no-redundant-size-axes — themandi/src/app/_component/header.tsx:57
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

180. [warning] design-no-redundant-size-axes — themandi/src/app/_component/header.tsx:67
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

181. [warning] server-sequential-independent-await — themandi/src/server/api/routers/analytics.ts:26
Sequential `await` without a data dependency on the previous result — wrap the independent calls in `Promise.all([...])` so they race instead of waterfalling

182. [warning] async-parallel — themandi/src/server/api/routers/analytics.ts:24
3 sequential await statements that appear independent — use Promise.all() for parallel execution

183. [warning] js-index-maps — themandi/src/server/api/routers/analytics.ts:193
array.find() in a loop is O(n*m) — build a Map for O(1) lookups

184. [warning] server-sequential-independent-await — themandi/src/server/api/routers/analytics.ts:227
Sequential `await` without a data dependency on the previous result — wrap the independent calls in `Promise.all([...])` so they race instead of waterfalling

185. [warning] async-parallel — themandi/src/server/api/routers/analytics.ts:225
3 sequential await statements that appear independent — use Promise.all() for parallel execution

186. [warning] no-react19-deprecated-apis — themandi/src/components/ui/toast.tsx:12
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

187. [warning] no-react19-deprecated-apis — themandi/src/components/ui/toast.tsx:43
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

188. [warning] no-react19-deprecated-apis — themandi/src/components/ui/toast.tsx:58
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

189. [warning] no-react19-deprecated-apis — themandi/src/components/ui/toast.tsx:73
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

190. [warning] design-no-redundant-size-axes — themandi/src/components/ui/toast.tsx:86
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

191. [warning] no-react19-deprecated-apis — themandi/src/components/ui/toast.tsx:91
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

192. [warning] no-react19-deprecated-apis — themandi/src/components/ui/toast.tsx:103
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

193. [warning] no-react19-deprecated-apis — themandi/src/components/ui/tabs.tsx:10
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

194. [warning] no-react19-deprecated-apis — themandi/src/components/ui/tabs.tsx:25
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

195. [warning] no-react19-deprecated-apis — themandi/src/components/ui/tabs.tsx:40
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

196. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/input.tsx:8
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

197. [warning] prefer-dynamic-import — themandi-admin/src/app/_components/revenue-chart.tsx:4
"recharts" is a heavy library — use React.lazy() or next/dynamic for code splitting

198. [warning] design-no-redundant-size-axes — themandi-admin/src/app/_components/revenue-chart.tsx:190
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

199. [warning] design-no-redundant-size-axes — themandi-admin/src/app/_components/revenue-chart.tsx:196
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

200. [warning] design-no-redundant-size-axes — themandi-admin/src/app/_components/revenue-chart.tsx:206
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

201. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:45
useContext is superseded by `use()` on React 19+ — `use()` reads context conditionally inside hooks, branches, and loops; switch to `import { use } from 'react'`

202. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:46
useContext is superseded by `use()` on React 19+ — `use()` reads context conditionally inside hooks, branches, and loops; switch to `import { use } from 'react'`

203. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:75
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

204. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:89
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

205. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:106
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

206. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:128
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

207. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/form.tsx:145
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

208. [warning] design-no-space-on-flex-children — themandi-admin/src/app/_components/recent-sales.tsx:20
space-x-4 on a flex/grid parent — use gap-x-4 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

209. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:25
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

210. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:47
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

211. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:63
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

212. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:82
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

213. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:100
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

214. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/dropdown-menu.tsx:113
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)

215. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/dropdown-menu.tsx:115
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

216. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:124
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

217. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/dropdown-menu.tsx:136
w-3.5 h-3.5 → use the shorthand size-3.5 (Tailwind v3.4+)

218. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/dropdown-menu.tsx:138
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

219. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:146
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

220. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dropdown-menu.tsx:164
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

221. [warning] server-sequential-independent-await — themandi-admin/src/app/_components/analytics-card.tsx:7
Sequential `await` without a data dependency on the previous result — wrap the independent calls in `Promise.all([...])` so they race instead of waterfalling

222. [warning] async-parallel — themandi-admin/src/app/_components/analytics-card.tsx:6
3 sequential await statements that appear independent — use Promise.all() for parallel execution

223. [warning] design-no-redundant-padding-axes — themandi-admin/src/app/_components/analytics-card.tsx:32
px-6 py-6 → use the shorthand p-6

224. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dialog.tsx:17
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

225. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dialog.tsx:32
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

226. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/dialog.tsx:48
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

227. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dialog.tsx:84
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

228. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/dialog.tsx:99
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

229. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/tooltip.tsx:14
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

230. [warning] async-await-in-loop — themandi-admin/src/server/seed.ts:426
await inside a for…of loop runs the calls sequentially — for independent operations, collect them and use `await Promise.all(items.map(...))` to run them concurrently

231. [warning] async-await-in-loop — themandi-admin/src/server/seed.ts:442
await inside a for…of loop runs the calls sequentially — for independent operations, collect them and use `await Promise.all(items.map(...))` to run them concurrently

232. [warning] async-await-in-loop — themandi-admin/src/server/seed.ts:461
await inside a for-loop runs the calls sequentially — for independent operations, collect them and use `await Promise.all(items.map(...))` to run them concurrently

233. [warning] async-await-in-loop — themandi-admin/src/server/seed.ts:594
await inside a for-loop runs the calls sequentially — for independent operations, collect them and use `await Promise.all(items.map(...))` to run them concurrently

234. [warning] no-danger — themandi-admin/src/components/ui/chart.tsx:86
Do not use `dangerouslySetInnerHTML` prop

235. [warning] prefer-dynamic-import — themandi-admin/src/components/ui/chart.tsx:4
"recharts" is a heavy library — use React.lazy() or next/dynamic for code splitting

236. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/chart.tsx:33
useContext is superseded by `use()` on React 19+ — `use()` reads context conditionally inside hooks, branches, and loops; switch to `import { use } from 'react'`

237. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/chart.tsx:42
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

238. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/chart.tsx:110
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

239. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/chart.tsx:267
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

240. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/chart.tsx:309
w-2 h-2 → use the shorthand size-2 (Tailwind v3.4+)

241. [warning] prefer-useReducer — themandi-admin/src/app/(dashboard)/users/_components/user-table/index.tsx:43
Component "UserTable" has 6 useState calls — consider useReducer for related state

242. [warning] js-combine-iterations — themandi-admin/src/app/(dashboard)/users/_components/user-table/index.tsx:112
.filter().map() iterates the array twice — combine into a single loop with .reduce() or for...of

243. [warning] design-no-space-on-flex-children — themandi-admin/src/app/(dashboard)/users/_components/user-table/index.tsx:182
space-x-2 on a flex/grid parent — use gap-x-2 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

244. [warning] heading-has-content — themandi-admin/src/components/ui/card.tsx:36
Headings must have content and the content must be accessible by a screen reader.

245. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/card.tsx:5
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

246. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/card.tsx:20
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

247. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/card.tsx:32
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

248. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/card.tsx:44
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

249. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/card.tsx:56
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

250. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/card.tsx:64
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

251. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/toast.tsx:12
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

252. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/toast.tsx:43
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

253. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/toast.tsx:58
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

254. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/toast.tsx:73
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

255. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/toast.tsx:86
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

256. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/toast.tsx:91
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

257. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/toast.tsx:103
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

258. [warning] js-hoist-intl — themandi-admin/src/app/(dashboard)/users/_components/user-table/columns.tsx:39
new Intl.NumberFormat() inside a function — hoist to module scope or wrap in useMemo so it isn't recreated each call

259. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/calendar.tsx:63
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

260. [warning] design-no-redundant-size-axes — themandi-admin/src/components/ui/calendar.tsx:64
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

261. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/textarea.tsx:8
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

262. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/button.tsx:43
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

263. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:5
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

264. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:19
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

265. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:27
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

266. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:39
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

267. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:54
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

268. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:69
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

269. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:84
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

270. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/table.tsx:99
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

271. [warning] js-combine-iterations — themandi-admin/src/app/(dashboard)/products/_components/product-table/index.tsx:169
.filter().map() iterates the array twice — combine into a single loop with .reduce() or for...of

272. [warning] design-no-space-on-flex-children — themandi-admin/src/app/(dashboard)/products/_components/product-table/index.tsx:239
space-x-2 on a flex/grid parent — use gap-x-2 instead. Per-sibling margins phantom-gap on conditional render and don't mirror in RTL

273. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/switch.tsx:8
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

274. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:67
w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

275. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:77
w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

276. [warning] js-hoist-intl — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:90
new Intl.NumberFormat() inside a function — hoist to module scope or wrap in useMemo so it isn't recreated each call

277. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:116
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

278. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:118
w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

279. [warning] design-no-default-tailwind-palette — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:118
text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

280. [warning] js-hoist-intl — themandi-admin/src/app/(dashboard)/products/_components/product-table/columns.tsx:205
new Intl.NumberFormat() inside a function — hoist to module scope or wrap in useMemo so it isn't recreated each call

281. [warning] no-giant-component — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:71
Component "ProductCreateDialog" is 442 lines — consider breaking it into smaller focused components

282. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:278
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

283. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:315
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

284. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:375
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

285. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:382
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

286. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:427
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

287. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:434
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

288. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:475
w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

289. [warning] design-no-redundant-size-axes — themandi-admin/src/app/(dashboard)/products/_components/product-create-dialog.tsx:482
w-3 h-3 → use the shorthand size-3 (Tailwind v3.4+)

290. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:42
useContext is superseded by `use()` on React 19+ — `use()` reads context conditionally inside hooks, branches, and loops; switch to `import { use } from 'react'`

291. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:50
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

292. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:159
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

293. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:262
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

294. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:288
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

295. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:317
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

296. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:335
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

297. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:353
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

298. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:368
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

299. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:383
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

300. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:398
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

301. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:416
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

302. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:431
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

303. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:452
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

304. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:475
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

305. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:488
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

306. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:501
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

307. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:536
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

308. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:595
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

309. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:626
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

310. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:647
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

311. [warning] no-usememo-simple-expression — themandi-admin/src/components/ui/sidebar.tsx:654
useMemo wrapping a trivially cheap expression — memo overhead exceeds the computation

312. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:685
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

313. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:702
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

314. [warning] no-react19-deprecated-apis — themandi-admin/src/components/ui/sidebar.tsx:708
forwardRef is no longer needed on React 19+ — refs are regular props on function components; remove forwardRef and pass ref directly

315. [warning] design-no-space-on-flex-children — themandi-admin/src/components/table-skeleton.tsx:42
space-x-2 on a flex/grid parent — use gap-x-2 instead. Per-sibling margins phantom-gap on conditional render and

---

_Issue body truncated. See the full report at [react.review/dashboard](https://react.review/dashboard)._

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.