Skip to main content
Glama
ModuleListItem.vue1.72 kB
<template> <TreeNode v-if="moduleSummary" :classes=" clsx( 'dark:text-white text-black dark:bg-neutral-800 py-[1px]', 'hover:dark:outline-action-300 hover:outline-action-500 hover:outline hover:z-10 hover:-outline-offset-1 hover:outline-1', ) " showSelection labelClasses="w-full" leftBorderSize="none" primaryIconClasses="" :isSelected="isSelected" @mousedown.left.stop="onClick" > <template #primaryIcon><Icon name="component" size="sm" /></template> <template #label> <div class="w-full truncate text-xs"> {{ moduleSummary.name }} </div> </template> </TreeNode> </template> <script setup lang="ts"> import { computed, PropType } from "vue"; import { useRoute, useRouter } from "vue-router"; import { Icon, TreeNode } from "@si/vue-lib/design-system"; import clsx from "clsx"; import { ModuleSlug, useModuleStore } from "@/store/module.store"; const props = defineProps({ moduleSlug: { type: String as PropType<ModuleSlug>, required: true }, }); const route = useRoute(); const router = useRouter(); const moduleStore = useModuleStore(); const moduleSummary = computed(() => { return ( moduleStore.localModulesByHash[props.moduleSlug] || moduleStore.remoteModuleSummaryByHash[props.moduleSlug] || moduleStore.builtinModuleSummaryByHash[props.moduleSlug] ); }); const isSelected = computed( () => moduleSummary.value?.hash === moduleStore.urlSelectedModuleSlug, ); const onClick = () => { if (moduleSummary.value) { router.push({ name: "workspace-lab-packages", params: { ...route.params, moduleSlug: moduleSummary.value.hash, }, }); } }; </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