Skip to main content
Glama
SidebarSubpanelTitle.vue1.82 kB
<template> <div :class=" clsx( 'flex text-neutral-500 dark:text-neutral-400 border-b items-center px-xs py-2xs gap-xs h-[33px] select-none', iconIsButton && 'cursor-pointer', themeClasses('border-neutral-200', 'border-neutral-600'), ) " @click="emit('click')" @mouseleave="onEndHover" @mouseover="onHover" > <div class="flex-none empty:hidden"> <slot name="icon"> <IconButton v-if="icon && iconIsButton" :icon="icon" iconIdleTone="neutral" :hovered="hover" :selected="selected" @click="emit('click')" /> <Icon v-else-if="icon" :name="icon" /> </slot> </div> <TruncateWithTooltip :class=" clsx( 'grow font-bold', variant === 'title' ? 'uppercase text-md leading-6' : 'text-sm break-words', ) " > <slot name="label">{{ label }}</slot> </TruncateWithTooltip> <div class="flex-none empty:hidden"> <slot /> </div> </div> </template> <script setup lang="ts"> import { Icon, IconButton, IconNames, themeClasses, TruncateWithTooltip, } from "@si/vue-lib/design-system"; import clsx from "clsx"; import { PropType, ref } from "vue"; export type SidebarSubpanelTitleVariant = "title" | "subtitle"; const props = defineProps({ label: { type: String }, icon: { type: String as PropType<IconNames> }, iconIsButton: { type: Boolean }, selected: { type: Boolean }, variant: { type: String as PropType<SidebarSubpanelTitleVariant>, default: "title", }, }); const emit = defineEmits(["click"]); const hover = ref(false); const onHover = () => { hover.value = true; }; const onEndHover = () => { hover.value = false; }; </script>

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server