summaryrefslogtreecommitdiff
path: root/llama.cpp/tools/server/webui/src/lib/components/app/misc/ActionButton.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'llama.cpp/tools/server/webui/src/lib/components/app/misc/ActionButton.svelte')
-rw-r--r--llama.cpp/tools/server/webui/src/lib/components/app/misc/ActionButton.svelte47
1 files changed, 47 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/src/lib/components/app/misc/ActionButton.svelte b/llama.cpp/tools/server/webui/src/lib/components/app/misc/ActionButton.svelte
new file mode 100644
index 0000000..411a8b6
--- /dev/null
+++ b/llama.cpp/tools/server/webui/src/lib/components/app/misc/ActionButton.svelte
@@ -0,0 +1,47 @@
+<script lang="ts">
+ import { Button } from '$lib/components/ui/button';
+ import * as Tooltip from '$lib/components/ui/tooltip';
+ import type { Component } from 'svelte';
+
+ interface Props {
+ icon: Component;
+ tooltip: string;
+ variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
+ size?: 'default' | 'sm' | 'lg' | 'icon';
+ class?: string;
+ disabled?: boolean;
+ onclick: () => void;
+ 'aria-label'?: string;
+ }
+
+ let {
+ icon,
+ tooltip,
+ variant = 'ghost',
+ size = 'sm',
+ class: className = '',
+ disabled = false,
+ onclick,
+ 'aria-label': ariaLabel
+ }: Props = $props();
+</script>
+
+<Tooltip.Root>
+ <Tooltip.Trigger>
+ <Button
+ {variant}
+ {size}
+ {disabled}
+ {onclick}
+ class="h-6 w-6 p-0 {className} flex"
+ aria-label={ariaLabel || tooltip}
+ >
+ {@const IconComponent = icon}
+ <IconComponent class="h-3 w-3" />
+ </Button>
+ </Tooltip.Trigger>
+
+ <Tooltip.Content>
+ <p>{tooltip}</p>
+ </Tooltip.Content>
+</Tooltip.Root>