True clean start with src folder
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import type { Component } from 'solid-js';
|
||||
import { UploadCloud } from 'lucide-solid';
|
||||
|
||||
interface FileUploadProps {
|
||||
onFileSelect: (text: string) => void;
|
||||
}
|
||||
|
||||
const FileUpload: Component<FileUploadProps> = (props) => {
|
||||
const handleFileChange = (e: Event) => {
|
||||
const input = e.target as HTMLInputElement;
|
||||
const file = input.files?.[0];
|
||||
if (!file) return;
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = (event) => {
|
||||
const text = event.target?.result as string;
|
||||
props.onFileSelect(text);
|
||||
};
|
||||
reader.readAsText(file);
|
||||
};
|
||||
|
||||
return (
|
||||
<div class="flex items-center justify-center w-full">
|
||||
<label
|
||||
for="dropzone-file"
|
||||
class="flex flex-col items-center justify-center w-full h-48 border-2 border-primary/20 border-dashed rounded-[2rem] cursor-pointer bg-muted/30 hover:bg-primary/5 transition-all group shadow-inner"
|
||||
>
|
||||
<div class="flex flex-col items-center justify-center pt-5 pb-6">
|
||||
<div class="p-4 bg-card rounded-2xl shadow-premium mb-4 group-hover:scale-110 transition-transform duration-500">
|
||||
<UploadCloud class="w-10 h-10 text-primary" />
|
||||
</div>
|
||||
<p class="mb-2 text-sm text-foreground font-black tracking-tight">
|
||||
<span class="text-primary underline underline-offset-4 decoration-2">Click to upload</span> or drag and drop
|
||||
</p>
|
||||
<p class="text-[10px] font-bold text-muted-foreground uppercase tracking-[0.2em]">CSV files only</p>
|
||||
</div>
|
||||
<input
|
||||
id="dropzone-file"
|
||||
type="file"
|
||||
class="hidden"
|
||||
accept=".csv"
|
||||
onChange={handleFileChange}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default FileUpload;
|
||||
Reference in New Issue
Block a user