#1

React Review Audit

Openreact-doctor[bot]opened 6mo ago

Score: 70/100 · 7 errors · 1075 warnings

Copy as prompt
Fix the following React Review diagnostics in my codebase.

## Errors (7)

1. [error] server-auth-actions — src/modules/favorites/server/actions.ts:8
   Server action "toggleFavorite" — add auth check (auth(), getSession(), etc.) at the top

2. [error] server-auth-actions — src/modules/cart/server/actions.ts:8
   Server action "addProductToCart" — add auth check (auth(), getSession(), etc.) at the top

3. [error] server-auth-actions — src/modules/cart/server/actions.ts:72
   Server action "addRandomBoxToCart" — add auth check (auth(), getSession(), etc.) at the top

4. [error] server-auth-actions — src/modules/cart/server/actions.ts:106
   Server action "updateCartItemQuantity" — add auth check (auth(), getSession(), etc.) at the top

5. [error] server-auth-actions — src/modules/cart/server/actions.ts:121
   Server action "removeCartItem" — add auth check (auth(), getSession(), etc.) at the top

6. [error] effect-needs-cleanup — src/modules/shop/ui/views/shop-view.tsx:41
   useEffect schedules `setTimeout(...)` but never returns a cleanup — leaks the registration on every re-run and on unmount. Return a cleanup function that calls clearTimeout(...)

7. [error] effect-needs-cleanup — src/modules/account/ui/views/account-view.tsx:34
   useEffect schedules `setTimeout(...)` but never returns a cleanup — leaks the registration on every re-run and on unmount. Return a cleanup function that calls clearTimeout(...)

## Warnings (1075)

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

9. [warning] design-no-default-tailwind-palette — src/app/not-found.tsx:10
   text-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

10. [warning] design-no-redundant-size-axes — src/app/not-found.tsx:16
   w-32 h-32 → use the shorthand size-32 (Tailwind v3.4+)

11. [warning] design-no-redundant-size-axes — src/app/not-found.tsx:17
   w-16 h-16 → use the shorthand size-16 (Tailwind v3.4+)

12. [warning] design-no-redundant-size-axes — src/app/not-found.tsx:19
   w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

13. [warning] design-no-redundant-size-axes — src/app/not-found.tsx:20
   w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)

14. [warning] design-no-bold-heading — src/app/not-found.tsx:25
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

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

16. [warning] design-no-bold-heading — src/app/not-found.tsx:28
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

17. [warning] design-no-default-tailwind-palette — src/app/not-found.tsx:28
   text-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

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

19. [warning] design-no-redundant-size-axes — src/app/not-found.tsx:41
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

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

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

22. [warning] design-no-redundant-size-axes — src/app/not-found.tsx:49
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

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

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

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

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

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

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

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

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

31. [warning] no-barrel-import — src/db/make-admin.ts:1
   Import from barrel/index file — import directly from the source module for better tree-shaking

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

33. [warning] async-defer-await — src/trpc/routers/preferences.ts:9
   await blocks the function before an early-return that doesn't use the awaited value — move the await after the synchronous guard so the skip path stays fast

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

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

36. [warning] async-await-in-loop — src/trpc/routers/orders.ts:96
   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

37. [warning] async-await-in-loop — src/trpc/routers/orders.ts:161
   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

38. [warning] no-unknown-property — src/components/SubHeader/index.tsx:188
   Unknown property found

39. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:82
   border-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

40. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:107
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

41. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:108
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

42. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:111
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

43. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:123
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

44. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:126
   text-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

45. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:151
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

46. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:158
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

47. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:158
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

48. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:165
   border-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

49. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:174
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

50. [warning] design-no-default-tailwind-palette — src/components/SubHeader/index.tsx:174
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

51. [warning] design-no-redundant-size-axes — src/components/SubHeader/index.tsx:177
   w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

52. [warning] async-defer-await — src/trpc/routers/favorites.ts:48
   await blocks the function before an early-return that doesn't use the awaited value — move the await after the synchronous guard so the skip path stays fast

53. [warning] click-events-have-key-events — src/components/Modal/index.tsx:28
   Enforce a clickable non-interactive element has at least one keyboard event listener.

54. [warning] no-static-element-interactions — src/components/Modal/index.tsx:28
   Static HTML elements with event handlers require a role.

55. [warning] design-no-default-tailwind-palette — src/components/Modal/index.tsx:35
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

56. [warning] design-no-default-tailwind-palette — src/components/Modal/index.tsx:38
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

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

58. [warning] async-parallel — src/trpc/routers/chat.ts:109
   3 sequential await statements that appear independent — use Promise.all() for parallel execution

59. [warning] async-await-in-loop — src/trpc/routers/chat.ts:165
   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

60. [warning] js-index-maps — src/trpc/routers/chat.ts:162
   array.find() in a loop is O(n*m) — build a Map for O(1) lookups

61. [warning] async-await-in-loop — src/trpc/routers/chat.ts:555
   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

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

63. [warning] no-giant-component — src/modules/favorites/ui/views/favorites-view.tsx:14
   Component "FavoritesView" is 352 lines — consider breaking it into smaller focused components

64. [warning] react-compiler-destructure-method — src/modules/favorites/ui/views/favorites-view.tsx:138
   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

65. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:161
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

66. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:162
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

67. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:163
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

68. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:164
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

69. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:165
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

70. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:166
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

71. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:167
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

72. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:168
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

73. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:169
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

74. [warning] js-batch-dom-css — src/modules/favorites/ui/views/favorites-view.tsx:175
   Multiple sequential element.style assignments — batch with cssText or classList for fewer reflows

75. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:194
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

76. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:197
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

77. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:198
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

78. [warning] no-array-index-as-key — src/modules/favorites/ui/views/favorites-view.tsx:202
   Array index "i" used as key — causes bugs when list is reordered or filtered

79. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:202
   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 — src/modules/favorites/ui/views/favorites-view.tsx:203
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

81. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:205
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

82. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:206
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

83. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:218
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

84. [warning] design-no-bold-heading — src/modules/favorites/ui/views/favorites-view.tsx:220
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

85. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:220
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

86. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:221
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

87. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:223
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

88. [warning] design-no-bold-heading — src/modules/favorites/ui/views/favorites-view.tsx:227
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

89. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:227
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

90. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:228
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

91. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:231
   bg-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

92. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:231
   bg-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

93. [warning] design-no-redundant-size-axes — src/modules/favorites/ui/views/favorites-view.tsx:234
   w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

94. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:243
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

95. [warning] design-no-bold-heading — src/modules/favorites/ui/views/favorites-view.tsx:247
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

96. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:247
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

97. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:248
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

98. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:254
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

99. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:254
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

100. [warning] design-no-redundant-size-axes — src/modules/favorites/ui/views/favorites-view.tsx:257
   w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

101. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:272
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

102. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:278
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

103. [warning] nextjs-image-missing-sizes — src/modules/favorites/ui/views/favorites-view.tsx:280
   next/image with fill but no sizes — the browser downloads the largest image. Add a sizes attribute for responsive behavior

104. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:300
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

105. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:300
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

106. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:306
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

107. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:309
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

108. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:311
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

109. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:321
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

110. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:321
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

111. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:330
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

112. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:330
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

113. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:340
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

114. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:340
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

115. [warning] design-no-default-tailwind-palette — src/modules/favorites/ui/views/favorites-view.tsx:340
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

116. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:30
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

117. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:34
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

118. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:39
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

119. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:39
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

120. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:42
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

121. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:42
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

122. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:45
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

123. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:45
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

124. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:59
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

125. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:59
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

126. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:59
   ring-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

127. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:64
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

128. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:71
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

129. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:74
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

130. [warning] react-compiler-destructure-method — src/components/Header/index.tsx:80
   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

131. [warning] design-no-redundant-size-axes — src/components/Header/index.tsx:89
   w-8 h-8 → use the shorthand size-8 (Tailwind v3.4+)

132. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:89
   from-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

133. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:89
   to-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

134. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:93
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

135. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:94
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

136. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:99
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

137. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:100
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

138. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:103
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

139. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:104
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

140. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:106
   bg-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

141. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:115
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

142. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:120
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

143. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:120
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

144. [warning] design-no-default-tailwind-palette — src/components/Header/index.tsx:120
   ring-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

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

146. [warning] label-has-associated-control — src/modules/checkout/ui/views/checkout-view.tsx:152
   A form label must have accessible text.

147. [warning] label-has-associated-control — src/modules/checkout/ui/views/checkout-view.tsx:166
   A form label must have accessible text.

148. [warning] react-compiler-destructure-method — src/modules/checkout/ui/views/checkout-view.tsx:45
   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

149. [warning] react-compiler-destructure-method — src/modules/checkout/ui/views/checkout-view.tsx:53
   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

150. [warning] react-compiler-destructure-method — src/modules/checkout/ui/views/checkout-view.tsx:77
   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

151. [warning] react-compiler-destructure-method — src/modules/checkout/ui/views/checkout-view.tsx:82
   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

152. [warning] react-compiler-destructure-method — src/modules/checkout/ui/views/checkout-view.tsx:87
   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

153. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:92
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

154. [warning] design-no-bold-heading — src/modules/checkout/ui/views/checkout-view.tsx:95
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

155. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:95
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

156. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:96
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

157. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:102
   border-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

158. [warning] design-no-bold-heading — src/modules/checkout/ui/views/checkout-view.tsx:103
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

159. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:103
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

160. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:109
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

161. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:118
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

162. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:126
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

163. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:134
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

164. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:142
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

165. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:149
   border-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

166. [warning] design-no-bold-heading — src/modules/checkout/ui/views/checkout-view.tsx:150
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

167. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:150
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

168. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:152
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

169. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:152
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

170. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:158
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

171. [warning] design-no-redundant-size-axes — src/modules/checkout/ui/views/checkout-view.tsx:159
   w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

172. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:162
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

173. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:163
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

174. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:166
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

175. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:166
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

176. [warning] rerender-functional-setstate — src/modules/checkout/ui/views/checkout-view.tsx:172
   setFormData({ ...formData, ... }) — use functional update `setFormData(prev => ({ ...prev, ... }))` to avoid stale closures

177. [warning] design-no-redundant-size-axes — src/modules/checkout/ui/views/checkout-view.tsx:173
   w-4 h-4 → use the shorthand size-4 (Tailwind v3.4+)

178. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:176
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

179. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:177
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

180. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:185
   border-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

181. [warning] design-no-bold-heading — src/modules/checkout/ui/views/checkout-view.tsx:186
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

182. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:186
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

183. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:189
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

184. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:194
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

185. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:205
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

186. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:207
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

187. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:208
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

188. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:216
   bg-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

189. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:216
   bg-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

190. [warning] design-no-redundant-size-axes — src/modules/checkout/ui/views/checkout-view.tsx:220
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

191. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:228
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

192. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:229
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

193. [warning] design-no-default-tailwind-palette — src/modules/checkout/ui/views/checkout-view.tsx:233
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

194. [warning] no-giant-component — src/modules/cart/ui/views/cart-view.tsx:29
   Component "CartView" is 325 lines — consider breaking it into smaller focused components

195. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:124
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

196. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:128
   text-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

197. [warning] design-no-bold-heading — src/modules/cart/ui/views/cart-view.tsx:130
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

198. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:130
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

199. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:131
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

200. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:134
   bg-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

201. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:134
   bg-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

202. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:146
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

203. [warning] design-no-bold-heading — src/modules/cart/ui/views/cart-view.tsx:149
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

204. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:149
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

205. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:150
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

206. [warning] no-array-index-as-key — src/modules/cart/ui/views/cart-view.tsx:157
   Array index "i" used as key — causes bugs when list is reordered or filtered

207. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:165
   text-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

208. [warning] design-no-bold-heading — src/modules/cart/ui/views/cart-view.tsx:167
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

209. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:167
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

210. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:168
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

211. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:171
   bg-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

212. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:171
   bg-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

213. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:206
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

214. [warning] nextjs-image-missing-sizes — src/modules/cart/ui/views/cart-view.tsx:207
   next/image with fill but no sizes — the browser downloads the largest image. Add a sizes attribute for responsive behavior

215. [warning] design-no-bold-heading — src/modules/cart/ui/views/cart-view.tsx:220
   font-bold on <h3> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

216. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:220
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

217. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:224
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

218. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:228
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

219. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:236
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

220. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:237
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

221. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:243
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

222. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:246
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

223. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:246
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

224. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:250
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

225. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:250
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

226. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:255
   bg-gray-100 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

227. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:255
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

228. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:272
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

229. [warning] design-no-bold-heading — src/modules/cart/ui/views/cart-view.tsx:283
   font-bold on <h2> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

230. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:283
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

231. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:286
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

232. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:291
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

233. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:310
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

234. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:312
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

235. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:313
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

236. [warning] react-compiler-destructure-method — src/modules/cart/ui/views/cart-view.tsx:319
   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

237. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:320
   bg-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

238. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:320
   bg-gray-800 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

239. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:327
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

240. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:327
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

241. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:332
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

242. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:333
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

243. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:337
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

244. [warning] design-no-default-tailwind-palette — src/modules/cart/ui/views/cart-view.tsx:341
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

245. [warning] design-no-bold-heading — src/modules/dashboard/ui/views/dashboard-view.tsx:44
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

246. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:44
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

247. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:45
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

248. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:53
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

249. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:57
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

250. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:58
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

251. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-view.tsx:63
   w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)

252. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:71
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

253. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:72
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

254. [warning] nextjs-no-a-element — src/modules/dashboard/ui/views/dashboard-view.tsx:76
   Use next/link instead of <a> for internal links — enables client-side navigation and prefetching

255. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:78
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

256. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-view.tsx:80
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

257. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:81
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

258. [warning] nextjs-no-a-element — src/modules/dashboard/ui/views/dashboard-view.tsx:83
   Use next/link instead of <a> for internal links — enables client-side navigation and prefetching

259. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:85
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

260. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-view.tsx:87
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

261. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:88
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

262. [warning] nextjs-no-a-element — src/modules/dashboard/ui/views/dashboard-view.tsx:90
   Use next/link instead of <a> for internal links — enables client-side navigation and prefetching

263. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:92
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

264. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-view.tsx:94
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

265. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:95
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

266. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:100
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

267. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:101
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

268. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:105
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

269. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:106
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

270. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:107
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

271. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:109
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

272. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:110
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

273. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:111
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

274. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:113
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

275. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-view.tsx:114
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

276. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-view.tsx:116
   w-2 h-2 → use the shorthand size-2 (Tailwind v3.4+)

277. [warning] design-no-default-tailwind-palette — src/components/DashboardSidebar/index.tsx:32
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

278. [warning] design-no-default-tailwind-palette — src/components/DashboardSidebar/index.tsx:33
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

279. [warning] design-no-redundant-size-axes — src/components/DashboardSidebar/index.tsx:53
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

280. [warning] design-no-redundant-size-axes — src/components/DashboardSidebar/index.tsx:56
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

281. [warning] design-no-default-tailwind-palette — src/components/DashboardSidebar/index.tsx:65
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

282. [warning] design-no-default-tailwind-palette — src/components/DashboardSidebar/index.tsx:65
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

283. [warning] design-no-default-tailwind-palette — src/components/DashboardSidebar/index.tsx:68
   text-gray-700 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

284. [warning] design-no-redundant-size-axes — src/components/DashboardSidebar/index.tsx:70
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

285. [warning] design-no-bold-heading — src/modules/dashboard/ui/views/dashboard-users-view.tsx:86
   font-bold on <h1> crushes counter shapes at display sizes — use font-semibold (600) or font-medium (500)

286. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:86
   text-gray-900 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

287. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:87
   text-gray-600 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

288. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:91
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

289. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:92
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

290. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-users-view.tsx:96
   w-5 h-5 → use the shorthand size-5 (Tailwind v3.4+)

291. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:96
   text-gray-400 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

292. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:103
   border-gray-300 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

293. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:110
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

294. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:110
   border-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

295. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:112
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

296. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:115
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

297. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:118
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

298. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:121
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

299. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:124
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

300. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:129
   divide-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

301. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:132
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

302. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:138
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

303. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:144
   bg-gray-50 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

304. [warning] nextjs-no-img-element — src/modules/dashboard/ui/views/dashboard-users-view.tsx:148
   Use next/image instead of <img> — provides automatic optimization, lazy loading, and responsive srcset

305. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-users-view.tsx:151
   w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

306. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-users-view.tsx:154
   w-10 h-10 → use the shorthand size-10 (Tailwind v3.4+)

307. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:154
   bg-gray-200 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

308. [warning] design-no-redundant-size-axes — src/modules/dashboard/ui/views/dashboard-users-view.tsx:155
   w-6 h-6 → use the shorthand size-6 (Tailwind v3.4+)

309. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:155
   text-gray-500 reads as the Tailwind template default — use zinc (true neutral), neutral (warmer), or stone (warmest)

310. [warning] design-no-default-tailwind-palette — src/modules/dashboard/ui/views/dashboard-users-view.tsx:158
   text-gray-900

---

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

Activity

0

No activity yet.