summaryrefslogtreecommitdiff
path: root/llama.cpp/tools/server/webui/src/lib/components/app/misc/BadgeModality.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/tools/server/webui/src/lib/components/app/misc/BadgeModality.svelte')
-rw-r--r--llama.cpp/tools/server/webui/src/lib/components/app/misc/BadgeModality.svelte39
1 files changed, 39 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/src/lib/components/app/misc/BadgeModality.svelte b/llama.cpp/tools/server/webui/src/lib/components/app/misc/BadgeModality.svelte
new file mode 100644
index 0000000..a0d5e86
--- /dev/null
+++ b/llama.cpp/tools/server/webui/src/lib/components/app/misc/BadgeModality.svelte
@@ -0,0 +1,39 @@
+<script lang="ts">
+ import { ModelModality } from '$lib/enums';
+ import { MODALITY_ICONS, MODALITY_LABELS } from '$lib/constants/icons';
+ import { cn } from '$lib/components/ui/utils';
+
+ type DisplayableModality = ModelModality.VISION | ModelModality.AUDIO;
+
+ interface Props {
+ modalities: ModelModality[];
+ class?: string;
+ }
+
+ let { modalities, class: className = '' }: Props = $props();
+
+ // Filter to only modalities that have icons (VISION, AUDIO)
+ const displayableModalities = $derived(
+ modalities.filter(
+ (m): m is DisplayableModality => m === ModelModality.VISION || m === ModelModality.AUDIO
+ )
+ );
+</script>
+
+{#each displayableModalities as modality, index (index)}
+ {@const IconComponent = MODALITY_ICONS[modality]}
+ {@const label = MODALITY_LABELS[modality]}
+
+ <span
+ class={cn(
+ 'inline-flex items-center gap-1 rounded-md bg-muted px-2 py-1 text-xs font-medium',
+ className
+ )}
+ >
+ {#if IconComponent}
+ <IconComponent class="h-3 w-3" />
+ {/if}
+
+ {label}
+ </span>
+{/each}