hunk.code_window: 			rspc.client.query([
   				'search.objects',
   				{
   					...queryKey[1].arg,
   					cursor
   				}
   			]),
   		getNextPageParam: (lastPage) => lastPage.cursor ?? undefined
   	});
  
hunk.labels: keep keep keep keep replace keep keep keep keep keep
hunk.after_edit: 					pagination: {
   						cursor: {
   							pub_id: cursor
   						}
   					}
  
hunk.file_path: interface/app/$libraryId/overview/data.ts
hunk.type: replace
file: import { MotiView } from 'moti';
  import { memo } from 'react';
  import { View } from 'react-native';
  import { tw } from '~/lib/tailwind';
  
  type ProgressBarProps = {
  	value: number;
  	total: number;
  	pending?: boolean;
  };
  
  export const ProgressBar = memo((props: ProgressBarProps) => {
  	const percentage = props.pending ? 0 : Math.round((props.value / props.total) * 100);
  
  	if (props.pending) {
  		// Show indeterminate progress bar
  		return (
  			<View style={tw`h-1 overflow-hidden rounded-full bg-app-button`}>
  				<MotiView
  					style={tw`h-full w-[50%] bg-accent`}
  					from={{ left: '-50%' }}
  					animate={{ left: '100%' }}
  					transition={{ type: 'timing', duration: 1500, loop: true }}
  				/>
  			</View>
  		);
  	}
  
  	return (
  		<View style={tw`h-1 w-[94%] overflow-hidden rounded-full bg-app-button`}>
  			<MotiView
  				style={tw`h-full bg-accent`}
  				animate={{ width: `${percentage}%` }}
  				transition={{ type: 'timing' }}
  			/>
  		</View>
  	);
  });
  