hunk.code_window: 									.data_directory()
   									.join(THUMBNAIL_CACHE_DIR_NAME)
   									.join(&object.cas_id)
   									.with_extension("webp");
   								object.has_thumbnail = thumb_path.exists();
   							}
   							ExplorerItem::Path(Box::new(file_path))
   						})
   						.collect(),
  
hunk.labels: keep keep keep keep keep replace keep keep keep keep
hunk.after_edit: 								object.has_thumbnail = thumb_path.try_exists().unwrap();
  
hunk.file_path: core/src/api/locations.rs
hunk.type: replace
file: import { VariantProps, cva } from 'class-variance-authority';
  import { MotiPressable, MotiPressableProps } from 'moti/interactions';
  import React, { useMemo } from 'react';
  import { Pressable, PressableProps } from 'react-native';
  import tw from '~/lib/tailwind';
  
  const button = cva(['border rounded-md items-center shadow-sm'], {
  	variants: {
  		variant: {
  			default: 'bg-gray-50 border-gray-100',
  			primary: ['bg-primary-600'],
  			danger: ['bg-red-600'],
  			gray: ['bg-gray-100 border-gray-200'],
  			dark_gray: ['bg-gray-500 border-gray-600']
  		},
  		size: {
  			default: ['py-1', 'px-3'],
  			sm: ['py-1', 'px-2'],
  			md: ['py-1.5', 'px-3'],
  			lg: ['py-2', 'px-4']
  		}
  	},
  	defaultVariants: {
  		variant: 'default',
  		size: 'default'
  	}
  });
  
  type ButtonProps = VariantProps<typeof button> & PressableProps;
  
  export const Button: React.FC<ButtonProps> = ({ variant, size, ...props }) => {
  	const { style, ...otherProps } = props;
  	return <Pressable style={tw.style(button({ variant, size }), style as string)} {...otherProps} />;
  };
  
  type AnimatedButtonProps = VariantProps<typeof button> & MotiPressableProps;
  
  export const AnimatedButton: React.FC<AnimatedButtonProps> = ({ variant, size, ...props }) => {
  	const { style, containerStyle, ...otherProps } = props;
  	return (
  		<MotiPressable
  			animate={useMemo(
  				() =>
  					({ hovered, pressed }) => {
  						'worklet';
  
  						return {
  							opacity: hovered || pressed ? 0.7 : 1,
  							scale: hovered || pressed ? 0.97 : 1
  						};
  					},
  				[]
  			)}
  			style={tw.style(button({ variant, size }), style as string)}
  			// MotiPressable acts differently than Pressable so containerStyle might need to used to achieve the same effect
  			containerStyle={containerStyle}
  			{...otherProps}
  		/>
  	);
  };
  