Initial commit: Hermes Chat v2
Svelte 5 + shadcn-svelte + Tailwind CSS v4 chat interface for Hermes Agent with Monaco editor, file drag/drop, artifacts, image preview, and real session management. - SSE streaming via hermes CLI proxy - File upload + drag/drop with image preview - Code artifacts with Monaco editor - Markdown + highlight.js syntax highlighting - Full settings (model, provider, temp, system prompt) - 12 shadcn UI components - Dark/light theme
This commit is contained in:
13
src/lib/components/ui/tooltip/index.ts
Normal file
13
src/lib/components/ui/tooltip/index.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import Root from "./tooltip.svelte";
|
||||
import Content from "./tooltip-content.svelte";
|
||||
import Trigger from "./tooltip-trigger.svelte";
|
||||
|
||||
export {
|
||||
Root,
|
||||
Content,
|
||||
Trigger,
|
||||
//
|
||||
Root as Tooltip,
|
||||
Content as TooltipContent,
|
||||
Trigger as TooltipTrigger,
|
||||
};
|
||||
29
src/lib/components/ui/tooltip/tooltip-content.svelte
Normal file
29
src/lib/components/ui/tooltip/tooltip-content.svelte
Normal file
@@ -0,0 +1,29 @@
|
||||
<script lang="ts">
|
||||
import { Tooltip as TooltipPrimitive } from "bits-ui";
|
||||
import { cn } from "$lib/utils.ts";
|
||||
|
||||
let {
|
||||
class: className = "",
|
||||
children,
|
||||
sideOffset = 4,
|
||||
...restProps
|
||||
}: {
|
||||
class?: string;
|
||||
children?: import("svelte").Snippet;
|
||||
sideOffset?: number;
|
||||
[key: string]: unknown;
|
||||
} = $props();
|
||||
</script>
|
||||
|
||||
<TooltipPrimitive.Content
|
||||
{sideOffset}
|
||||
class={cn(
|
||||
"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
|
||||
className
|
||||
)}
|
||||
{...restProps}
|
||||
>
|
||||
{#if children}
|
||||
{@render children()}
|
||||
{/if}
|
||||
</TooltipPrimitive.Content>
|
||||
17
src/lib/components/ui/tooltip/tooltip-trigger.svelte
Normal file
17
src/lib/components/ui/tooltip/tooltip-trigger.svelte
Normal file
@@ -0,0 +1,17 @@
|
||||
<script lang="ts">
|
||||
import { Tooltip as TooltipPrimitive } from "bits-ui";
|
||||
|
||||
let {
|
||||
children,
|
||||
...restProps
|
||||
}: {
|
||||
children?: import("svelte").Snippet;
|
||||
[key: string]: unknown;
|
||||
} = $props();
|
||||
</script>
|
||||
|
||||
<TooltipPrimitive.Trigger {...restProps}>
|
||||
{#if children}
|
||||
{@render children()}
|
||||
{/if}
|
||||
</TooltipPrimitive.Trigger>
|
||||
17
src/lib/components/ui/tooltip/tooltip.svelte
Normal file
17
src/lib/components/ui/tooltip/tooltip.svelte
Normal file
@@ -0,0 +1,17 @@
|
||||
<script lang="ts">
|
||||
import { Tooltip as TooltipPrimitive } from "bits-ui";
|
||||
|
||||
let {
|
||||
children,
|
||||
...restProps
|
||||
}: {
|
||||
children?: import("svelte").Snippet;
|
||||
[key: string]: unknown;
|
||||
} = $props();
|
||||
</script>
|
||||
|
||||
<TooltipPrimitive.Root {...restProps}>
|
||||
{#if children}
|
||||
{@render children()}
|
||||
{/if}
|
||||
</TooltipPrimitive.Root>
|
||||
Reference in New Issue
Block a user