Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions scripts/test-npm-cache.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand Down
1 change: 0 additions & 1 deletion src/auth/context.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import { OAuthService } from './oauth.server'
import { SessionService } from './session.server'
import { createAuthGuards } from './guards.server'
import {
createRepositories,
DrizzleUserRepository,
DrizzleOAuthAccountRepository,
DrizzleCapabilitiesRepository,
Expand Down
2 changes: 1 addition & 1 deletion src/components/AILibraryHero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
1 change: 0 additions & 1 deletion src/components/BlockWithFeedback.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(() => {
Expand Down
3 changes: 2 additions & 1 deletion src/components/CookieConsent.tsx
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -134,6 +134,7 @@ export default function CookieConsent() {
}

checkLocationAndSetConsent()
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [])

const acceptAllCookies = () => {
Expand Down
2 changes: 1 addition & 1 deletion src/components/Doc.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ function DocContent({
href={`https://github.com/${repo}/edit/${branch}/${filePath}`}
className="flex items-center gap-2"
>
<SquarePen size={16} /> Edit on GitHub
<SquarePen /> Edit on GitHub
</a>
</div>
<div className="h-24" />
Expand Down
2 changes: 2 additions & 0 deletions src/components/DocFeedbackFloatingButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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) => {
Expand Down Expand Up @@ -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
<div
ref={buttonRef}
className="doc-feedback-floating-btn absolute top-0 right-0 -translate-y-full z-[100]"
Expand Down
2 changes: 2 additions & 0 deletions src/components/DocFeedbackNote.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,7 @@ export function DocFeedbackNote({
}

return (
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
<div
className={twMerge(
inline ? 'w-full' : 'fixed z-40 w-80 max-w-[calc(100vw-2rem)]',
Expand Down Expand Up @@ -334,6 +335,7 @@ export function DocFeedbackNote({
)}

{/* Header - always visible */}
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
<div
className={twMerge(
`flex flex-col gap-1 p-2 ${colors.header}`,
Expand Down
8 changes: 4 additions & 4 deletions src/components/DocsLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -288,8 +288,8 @@ export function DocsLayout({
>
<summary className="py-2 px-4 flex gap-2 items-center justify-between">
<div className="flex-1 flex gap-4 items-center">
<TextAlignStart className="icon-open cursor-pointer" size={16} />
<X className="icon-close cursor-pointer" size={16} />
<TextAlignStart className="icon-open cursor-pointer" />
<X className="icon-close cursor-pointer" />
Documentation
</div>
</summary>
Expand Down Expand Up @@ -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"
>
<div className="flex gap-2 items-center font-bold">
<ArrowLeft size={16} />
<ArrowLeft />
{prevItem.label}
</div>
</Link>
Expand All @@ -379,7 +379,7 @@ export function DocsLayout({
>
{nextItem.label}
</span>{' '}
<ArrowRight className={textColor} size={16} />
<ArrowRight className={textColor} />
</div>
</Link>
) : null}
Expand Down
5 changes: 3 additions & 2 deletions src/components/FeedFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(() => {
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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 */}
<div onClick={(e) => e.stopPropagation()} className="flex-shrink-0">
<FilterSearch
value={searchInput}
Expand Down
3 changes: 0 additions & 3 deletions src/components/FeedList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,13 @@ interface FeedListProps {
export function FeedList({
query,
infiniteQuery,
filters,
currentPage,
pageSize,
onPageChange,
onPageSizeChange,
viewMode = 'table',
expandedIds,
onExpandedChange,
onViewModeChange,
onFiltersChange,
adminActions,
}: FeedListProps) {
// For timeline mode, use infinite query
Expand Down
31 changes: 1 addition & 30 deletions src/components/FeedPage.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import { useState, useEffect, useMemo } from 'react'
import { ReactNode } from 'react'
import { useState, useEffect } from 'react'
import { useMounted } from '~/hooks/useMounted'
import { Footer } from '~/components/Footer'
import { FeedList } from '~/components/FeedList'
import { FeedFilters as FeedFiltersComponent } from '~/components/FeedFilters'
import { useFeedQuery } from '~/hooks/useFeedQuery'
Expand All @@ -15,7 +13,6 @@ import {
getFeedFacetCountsQueryOptions,
type FeedFilters,
} from '~/queries/feed'
import { twMerge } from 'tailwind-merge'

// Re-export FeedFilters as FeedFiltersState for backwards compatibility
export type FeedFiltersState = FeedFilters
Expand Down Expand Up @@ -235,32 +232,6 @@ export function FeedPage({
const currentPage = effectiveFilters.page ?? 1
const pageSize = effectiveFilters.pageSize ?? 50

// Convert FeedFiltersState to FeedFilters format
const feedFilters = useMemo(
() => ({
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 (
<div className="p-2 sm:p-4 pb-0 flex flex-col max-w-full gap-2 sm:gap-4 relative">
<div className="flex-1 space-y-2 sm:space-y-4 w-full max-w-7xl mx-auto flex flex-col lg:flex-row gap-2 min-h-0">
Expand Down
27 changes: 0 additions & 27 deletions src/components/FeedPageLayout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -211,7 +210,6 @@ function FeedPageLayoutContent({ children }: { children?: ReactNode }) {
feedQuery,
currentPage,
pageSize,
filters = {},
onPageChange,
onPageSizeChange,
viewMode = 'table',
Expand All @@ -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 = <T,>(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 (
<main className="flex-1 min-w-0 relative flex flex-col">
<FeedList
Expand Down
6 changes: 3 additions & 3 deletions src/components/FeedbackLeaderboard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ export function FeedbackLeaderboard() {
}

const getRankIcon = (rank: number) => {
if (rank === 1) return <Trophy className="text-yellow-500" size={14} />
if (rank === 2) return <Medal className="text-gray-400" size={14} />
if (rank === 3) return <Medal className="text-amber-600" size={14} />
if (rank === 1) return <Trophy className="text-yellow-500" />
if (rank === 2) return <Medal className="text-gray-400" />
if (rank === 3) return <Medal className="text-amber-600" />
return null
}

Expand Down
10 changes: 8 additions & 2 deletions src/components/FeedbackModerationFilters.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,10 @@ export function FeedbackModerationFilters({
>
<div className="space-y-3">
<div>
<label className="block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1">
<label
htmlFor="date-from"
className="block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1"
>
From
</label>
<input
Expand All @@ -182,7 +185,10 @@ export function FeedbackModerationFilters({
/>
</div>
<div>
<label className="block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1">
<label
htmlFor="date-to"
className="block text-xs font-medium text-gray-700 dark:text-gray-300 mb-1"
>
To
</label>
<input
Expand Down
8 changes: 4 additions & 4 deletions src/components/FeedbackModerationList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,9 @@ export function FeedbackModerationList({
<TableCell>
<div className="flex items-center gap-2">
{feedback.type === 'note' ? (
<MessageSquare className="text-blue-500" size={14} />
<MessageSquare className="text-blue-500" />
) : (
<Lightbulb className="text-yellow-500" size={14} />
<Lightbulb className="text-yellow-500" />
)}
<span className="text-xs">
{feedback.type === 'note' ? 'Note' : 'Improvement'}
Expand Down Expand Up @@ -208,7 +208,7 @@ export function FeedbackModerationList({
</span>
{feedback.isDetached && (
<div className="flex items-center gap-1 text-xs text-yellow-600 dark:text-yellow-400 mt-1">
<TriangleAlert size={12} />
<TriangleAlert />
Detached
</div>
)}
Expand Down Expand Up @@ -237,7 +237,7 @@ export function FeedbackModerationList({
className="px-3 py-1 text-xs font-medium text-white bg-red-600 hover:bg-red-700 rounded transition-colors"
title="Deny"
>
<X size={14} />
<X />
</button>
</div>
)}
Expand Down
3 changes: 2 additions & 1 deletion src/components/FileExplorer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ export function FileExplorer({
</div>
) : null}
</div>
{/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}
<div
className={`w-1 cursor-col-resize hover:bg-gray-300 dark:hover:bg-gray-600 active:bg-gray-400 dark:active:bg-gray-500 ${
isResizing ? '' : 'transition-colors'
Expand All @@ -253,7 +254,7 @@ const RenderFileTree = (props: {

return (
<ul className="flex flex-col">
{props.files.map((file, index) => (
{props.files.map((file) => (
<li key={file.path} className="relative">
{/* Tree lines */}
{file.depth > 0 && (
Expand Down
1 change: 1 addition & 0 deletions src/components/FilterComponents.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ export function FilterBar({
<div className="lg:hidden">
<div className="relative bg-white dark:bg-black/40 border border-gray-200 dark:border-gray-700 rounded-lg p-2 sm:p-3">
<div className="flex items-center gap-1 sm:gap-2 flex-wrap">
{/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}
<div
className="flex items-center gap-1.5 whitespace-nowrap cursor-pointer flex-shrink-0"
onClick={() => setIsOpen((prev) => !prev)}
Expand Down
2 changes: 0 additions & 2 deletions src/components/Gam.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,13 +74,11 @@ const gamDivs = {

function GamAd({
name,
children,
adClassName,
className,
placeholderClassName,
popupPosition = 'bottom',
borderClassName,
style,
...props
}: { name: keyof typeof gamDivs } & React.HTMLAttributes<HTMLDivElement> & {
adClassName?: string
Expand Down
Loading
Loading