File size: 2,703 Bytes
6b9d0d8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<script lang="ts">

	import * as AlertDialog from '$lib/components/ui/alert-dialog';



	interface Props {

		open: boolean;

		fileErrorData: {

			generallyUnsupported: File[];

			modalityUnsupported: File[];

			modalityReasons: Record<string, string>;

			supportedTypes: string[];

		};

		onOpenChange?: (open: boolean) => void;

	}



	let { open = $bindable(), fileErrorData, onOpenChange }: Props = $props();



	function handleOpenChange(newOpen: boolean) {

		open = newOpen;



		onOpenChange?.(newOpen);

	}

</script>

<AlertDialog.Root {open} onOpenChange={handleOpenChange}>
	<AlertDialog.Portal>

		<AlertDialog.Overlay />



		<AlertDialog.Content class="flex max-w-md flex-col">

			<AlertDialog.Header>

				<AlertDialog.Title>File Upload Error</AlertDialog.Title>



				<AlertDialog.Description class="text-sm text-muted-foreground">

					Some files cannot be uploaded with the current model.

				</AlertDialog.Description>

			</AlertDialog.Header>



			<div class="!max-h-[50vh] min-h-0 flex-1 space-y-4 overflow-y-auto">

				{#if fileErrorData.generallyUnsupported.length > 0}

					<div class="space-y-2">

						<h4 class="text-sm font-medium text-destructive">Unsupported File Types</h4>



						<div class="space-y-1">

							{#each fileErrorData.generallyUnsupported as file (file.name)}

								<div class="rounded-md bg-destructive/10 px-3 py-2">

									<p class="font-mono text-sm break-all text-destructive">

										{file.name}

									</p>



									<p class="mt-1 text-xs text-muted-foreground">File type not supported</p>

								</div>

							{/each}

						</div>

					</div>

				{/if}



				{#if fileErrorData.modalityUnsupported.length > 0}

					<div class="space-y-2">

						<div class="space-y-1">

							{#each fileErrorData.modalityUnsupported as file (file.name)}

								<div class="rounded-md bg-destructive/10 px-3 py-2">

									<p class="font-mono text-sm break-all text-destructive">

										{file.name}

									</p>



									<p class="mt-1 text-xs text-muted-foreground">

										{fileErrorData.modalityReasons[file.name] || 'Not supported by current model'}

									</p>

								</div>

							{/each}

						</div>

					</div>

				{/if}

			</div>



			<div class="rounded-md bg-muted/50 p-3">

				<h4 class="mb-2 text-sm font-medium">This model supports:</h4>



				<p class="text-sm text-muted-foreground">

					{fileErrorData.supportedTypes.join(', ')}

				</p>

			</div>



			<AlertDialog.Footer>

				<AlertDialog.Action onclick={() => handleOpenChange(false)}>Got it</AlertDialog.Action>

			</AlertDialog.Footer>

		</AlertDialog.Content>
	</AlertDialog.Portal>
</AlertDialog.Root>