enzostvs's picture
enzostvs HF staff
sidebar icon aligned
3de94e5
raw
history blame
3.65 kB
<script lang="ts">
import Icon from '@iconify/svelte';
import logo from '$lib/images/hf-logo.svg';
import ProTag from '$lib/components/ProTag.svelte';
import PrimaryLink from '$lib/components/sidebar/links/Primary.svelte';
import SecondaryLink from '$lib/components/sidebar/links/Secondary.svelte';
const LINKS = [
{
path: "/text-generation",
label: "Text Generation",
description: "Generate text from a prompt, using a model of your choice.",
icon: "heroicons:chat-bubble-left-right-20-solid",
type: "green",
},
{
path: "/image-generation",
label: "Image Generation",
description: "Generate images from a prompt, using a model of your choice.",
icon: "ph:images-square-fill",
type: "pink",
},
];
const FEW_SHOTS = [
{
path: "/text-generation/translation",
label: "Translation",
icon: "bi:translate",
},
{
path: "/text-generation/text-analysis",
label: "Text Analysis",
icon: "carbon:phrase-sentiment",
},
];
let open: boolean = false;
</script>
<div class="xl:hidden bg-slate-900 w-full px-8 py-5 border-b border-slate-800 flex items-center justify-between">
<header class="flex items-center justify-start gap-4">
<img src={logo} alt="Logo" width={28} height={28} />
<div class="flex items-center justify-start gap-2">
<p class="text-white font-bold text-lg">Inference API Playground</p>
<ProTag />
</div>
</header>
<button on:click={() => open = true}>
<Icon icon="line-md:menu" class="text-slate-100 w-5 h-5" />
</button>
</div>
<aside class={`${open ? '' : '-translate-x-full'} z-10 absolute xl:relative transition-all duration-200 xl:!translate-x-0 bg-slate-900 w-full xl:max-w-[370px] h-screen border-r border-slate-800 text-white`}>
<header class="flex items-center justify-between px-6 pt-6 pb-8 gap-4">
<div class="flex items-center justify-start gap-4">
<img src={logo} alt="Logo" width={34} height={34} />
<div class="flex items-center justify-start gap-2">
<p class="text-white font-bold text-xl whitespace-nowrap">Inference API Playground</p>
<ProTag />
</div>
</div>
<button class="xl:hidden" on:click={() => open = false}>
<Icon icon="tdesign:close" class="text-slate-100 w-6 h-6" />
</button>
</header>
<nav class="grid grid-cols-1 gap-8 px-4">
<!-- <a
href="https://huggingface.co/pricing#pro"
target="_blank"
class="px-4"
>
<button class="group text-base font-bold uppercase tracking-wide bg-white text-slate-950 transition-all duration-200 px-6 py-3 w-full rounded-full relative">
Subscribe to Pro
</button>
</a> -->
<ul class="grid grid-cols-1 gap-4">
{#each LINKS as { path, description, label, type, icon }, i}
<PrimaryLink href={path} type={type}>
<div class="flex items-center justify-start gap-4">
<Icon icon={icon} class="w-6 h-6" />
<p class="font-semibold text-sm uppercase font-code">
{label}
</p>
</div>
<p class="text-sm mt-2 text-white/90">
{description ||
"Generate text from a prompt, using a model of your choice."}
</p>
</PrimaryLink>
{/each}
</ul>
<!-- <div class="grid grid-cols-1 gap-4">
<div class="flex items-center justify-start gap-4 mb-2">
<p class="text-slate-600 uppercase font-medium text-sm font-sans">
FEW SHOTS
</p>
<div class="w-full flex-1 h-[1px] bg-slate-800" />
</div>
{#each FEW_SHOTS as { path, label, icon }, i}
<SecondaryLink href={path}>
<Icon icon={icon} class="w-5 h-5" />
<p class="font-semibold text-sm uppercase font-code">
{label}
</p>
</SecondaryLink>
{/each}
</div> -->
</nav>
</aside>