diff --git a/scripts/test-npm-cache.ts b/scripts/test-npm-cache.ts index cb79cb8f..7184d13f 100644 --- a/scripts/test-npm-cache.ts +++ b/scripts/test-npm-cache.ts @@ -3,11 +3,10 @@ * Tests that chunks are properly cached and retrieved */ -import { db } from '../src/db/client' import { getCachedNpmDownloadChunk, setCachedNpmDownloadChunk, -} from '../src/utils/stats-db.server' +} from '~/utils/stats-db.server' async function testCache() { console.log('\n' + '='.repeat(80)) diff --git a/src/auth/context.server.ts b/src/auth/context.server.ts index de2a152e..e05f84fb 100644 --- a/src/auth/context.server.ts +++ b/src/auth/context.server.ts @@ -11,7 +11,6 @@ import { OAuthService } from './oauth.server' import { SessionService } from './session.server' import { createAuthGuards } from './guards.server' import { - createRepositories, DrizzleUserRepository, DrizzleOAuthAccountRepository, DrizzleCapabilitiesRepository, diff --git a/src/components/AILibraryHero.tsx b/src/components/AILibraryHero.tsx index 398628d9..60a1b2fb 100644 --- a/src/components/AILibraryHero.tsx +++ b/src/components/AILibraryHero.tsx @@ -94,7 +94,7 @@ const MESSAGES = [ }, ] -export function AILibraryHero({ project, cta, actions }: AILibraryHeroProps) { +export function AILibraryHero({}: AILibraryHeroProps) { const isDark = useIsDark() const strokeColor = isDark ? 'rgba(255, 255, 255, 0.8)' : 'rgba(0, 0, 0, 0.6)' const textColor = isDark ? '#ffffff' : '#000000' diff --git a/src/components/BlockWithFeedback.tsx b/src/components/BlockWithFeedback.tsx index 8b0cd889..06f49af8 100644 --- a/src/components/BlockWithFeedback.tsx +++ b/src/components/BlockWithFeedback.tsx @@ -41,7 +41,6 @@ export function BlockWithFeedback({ return feedback.userNotes.find((n) => n.blockSelector === blockSelector) }, [feedback.userNotes, blockSelector]) - const isCollapsed = note ? feedback.collapsedNotes.has(note.id) : false const hasNote = !!note const handleAddNote = React.useCallback(() => { diff --git a/src/components/CookieConsent.tsx b/src/components/CookieConsent.tsx index cd8e41fe..0ac2a9a1 100644 --- a/src/components/CookieConsent.tsx +++ b/src/components/CookieConsent.tsx @@ -1,5 +1,5 @@ import { Link } from '@tanstack/react-router' -import { useCallback, useEffect, useState } from 'react' +import { useEffect, useState } from 'react' declare global { interface Window { @@ -134,6 +134,7 @@ export default function CookieConsent() { } checkLocationAndSetConsent() + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) const acceptAllCookies = () => { diff --git a/src/components/Doc.tsx b/src/components/Doc.tsx index 88f7d611..c7d2b5e2 100644 --- a/src/components/Doc.tsx +++ b/src/components/Doc.tsx @@ -182,7 +182,7 @@ function DocContent({ href={`https://github.com/${repo}/edit/${branch}/${filePath}`} className="flex items-center gap-2" > - Edit on GitHub + Edit on GitHub
diff --git a/src/components/DocFeedbackFloatingButton.tsx b/src/components/DocFeedbackFloatingButton.tsx index 75d2b9a5..089077e7 100644 --- a/src/components/DocFeedbackFloatingButton.tsx +++ b/src/components/DocFeedbackFloatingButton.tsx @@ -59,6 +59,7 @@ export function DocFeedbackFloatingButton({ document.removeEventListener('mousedown', handleClickOutside) document.removeEventListener('keydown', handleEscape) } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [isMenuOpen]) const handleButtonClick = (e: React.MouseEvent) => { @@ -86,6 +87,7 @@ export function DocFeedbackFloatingButton({ } return ( + // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
- - + + Documentation
@@ -359,7 +359,7 @@ export function DocsLayout({ className="py-1 px-2 bg-white/70 text-black dark:bg-gray-500/40 dark:text-white shadow-lg shadow-black/20 flex items-center justify-center backdrop-blur-sm z-20 rounded-lg overflow-hidden" >
- + {prevItem.label}
@@ -379,7 +379,7 @@ export function DocsLayout({ > {nextItem.label} {' '} - +
) : null} diff --git a/src/components/FeedFilters.tsx b/src/components/FeedFilters.tsx index d677fb25..534f36f1 100644 --- a/src/components/FeedFilters.tsx +++ b/src/components/FeedFilters.tsx @@ -136,7 +136,7 @@ export function FeedFilters({ // Update filters when debounced search changes React.useEffect(() => { onFiltersChange({ search: debouncedSearch || undefined }) - }, [debouncedSearch]) + }, [debouncedSearch, onFiltersChange]) // Sync local state with prop when search prop changes externally React.useEffect(() => { @@ -176,7 +176,7 @@ export function FeedFilters({ featured !== undefined || search || (selectedReleaseLevels && selectedReleaseLevels.length > 0) || - (includePrerelease !== undefined && includePrerelease !== true), + (includePrerelease !== undefined && !includePrerelease), ) // Render filter content (shared between mobile and desktop) @@ -383,6 +383,7 @@ export function FeedFilters({ compact /> )} + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
e.stopPropagation()} className="flex-shrink-0"> ({ - entryTypes: normalizeFilter(effectiveFilters.entryTypes), - libraries: normalizeFilter(effectiveFilters.libraries), - partners: normalizeFilter(effectiveFilters.partners), - tags: normalizeFilter(effectiveFilters.tags), - releaseLevels: normalizeFilter(effectiveFilters.releaseLevels) as any, - includePrerelease: effectiveFilters.includePrerelease, - featured: effectiveFilters.featured, - search: effectiveFilters.search, - includeHidden: adminActions !== undefined, - }), - [ - effectiveFilters.entryTypes, - effectiveFilters.libraries, - effectiveFilters.partners, - effectiveFilters.tags, - effectiveFilters.releaseLevels, - effectiveFilters.includePrerelease, - effectiveFilters.featured, - effectiveFilters.search, - adminActions, - ], - ) - return (
diff --git a/src/components/FeedPageLayout.tsx b/src/components/FeedPageLayout.tsx index 14cccc00..1f759d24 100644 --- a/src/components/FeedPageLayout.tsx +++ b/src/components/FeedPageLayout.tsx @@ -14,7 +14,6 @@ import { getFeedFacetCountsQueryOptions, type FeedFilters, } from '~/queries/feed' -import { twMerge } from 'tailwind-merge' import { Spinner } from '~/components/Spinner' // Re-export FeedFilters as FeedFiltersState for backwards compatibility @@ -211,7 +210,6 @@ function FeedPageLayoutContent({ children }: { children?: ReactNode }) { feedQuery, currentPage, pageSize, - filters = {}, onPageChange, onPageSizeChange, viewMode = 'table', @@ -222,31 +220,6 @@ function FeedPageLayoutContent({ children }: { children?: ReactNode }) { adminActions, } = useFeedPageLayout() - // Convert FeedFiltersState to FeedFilters format - const feedFilters = React.useMemo(() => { - if (!filters) { - return { - includeHidden: adminActions !== undefined, - } - } - - const normalizeFilter = (value: T[] | undefined): T[] | undefined => { - return value && value.length > 0 ? value : undefined - } - - return { - entryTypes: normalizeFilter(filters.entryTypes), - libraries: normalizeFilter(filters.libraries), - partners: normalizeFilter(filters.partners), - tags: normalizeFilter(filters.tags), - releaseLevels: normalizeFilter(filters.releaseLevels) as any, - includePrerelease: filters.includePrerelease, - featured: filters.featured, - search: filters.search, - includeHidden: adminActions !== undefined, - } - }, [filters, adminActions]) - return (
{ - if (rank === 1) return - if (rank === 2) return - if (rank === 3) return + if (rank === 1) return + if (rank === 2) return + if (rank === 3) return return null } diff --git a/src/components/FeedbackModerationFilters.tsx b/src/components/FeedbackModerationFilters.tsx index f35aaed0..ea16c930 100644 --- a/src/components/FeedbackModerationFilters.tsx +++ b/src/components/FeedbackModerationFilters.tsx @@ -171,7 +171,10 @@ export function FeedbackModerationFilters({ >
-
-
) : null}
+ {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
- {props.files.map((file, index) => ( + {props.files.map((file) => (
  • {/* Tree lines */} {file.depth > 0 && ( diff --git a/src/components/FilterComponents.tsx b/src/components/FilterComponents.tsx index 2ae0711f..fabc8d8d 100644 --- a/src/components/FilterComponents.tsx +++ b/src/components/FilterComponents.tsx @@ -196,6 +196,7 @@ export function FilterBar({
    + {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
    setIsOpen((prev) => !prev)} diff --git a/src/components/Gam.tsx b/src/components/Gam.tsx index 599e75e6..bf018a66 100644 --- a/src/components/Gam.tsx +++ b/src/components/Gam.tsx @@ -74,13 +74,11 @@ const gamDivs = { function GamAd({ name, - children, adClassName, className, placeholderClassName, popupPosition = 'bottom', borderClassName, - style, ...props }: { name: keyof typeof gamDivs } & React.HTMLAttributes & { adClassName?: string diff --git a/src/components/Markdown.tsx b/src/components/Markdown.tsx index 6d545de7..7c01962b 100644 --- a/src/components/Markdown.tsx +++ b/src/components/Markdown.tsx @@ -91,10 +91,11 @@ const markdownComponents: Record = { iframe: (props) => (