Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

React Review Audit

オープン
#1 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
静か
技術スタック
nextjs, react, tailwindcss, typescript

調査の方向性

まず、一覧にあるエントリポイントである themandi/src/app/api/image-proxy/route.ts と themandi/package.json から始め、次に themandi/src/app と themandi/src/components 配下の参照されているページおよび UI コンポーネントを確認します。診断リストを使って各変更の指針としてください。完了とは、この監査における2件のエラーと357件すべての警告が解消され、accessible interaction と reduced-motion handling も含めて対応済みであることを意味します。

索引モデルが issue の本文から書いたものです。

説明

Score: 83/100 · 2 errors · 357 warnings

Copy as prompt
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 <h1> 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 `&hellip;`)

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 <h1> 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 `&hellip;`)

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: <seconds> } } / { 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 `&hellip;`)

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 <h3> 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 `&hellip;`)

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 `&hellip;`)

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 <h1> 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)._
主要言語
TypeScript
スター
0
フォーク
2
PR マージ指標
30日以内にマージされた PR はありません

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。