Skip to main content
Glama
index.tsx1.74 kB
'use client'; import { IDE } from '@intlayer/design-system'; import { useTheme } from 'next-themes'; import { type FC, useMemo } from 'react'; import clientComponent from './content/client-component.md'; import clientComponentContent from './content/client-content.md'; import configFile from './content/config-file.md'; import serverComponent from './content/server-component.md'; import serverComponentContent from './content/server-content.md'; export const ideTabs = [ { path: 'src/components/client/component.content.ts', content: clientComponent, isOpen: true, }, { path: 'src/components/client/Component.tsx', content: clientComponentContent, isOpen: true, }, { path: 'src/components/server/component.content.ts', content: serverComponent, isOpen: false, }, { path: 'src/components/server/Component.tsx', content: serverComponentContent, isOpen: false, }, { path: 'intlayer.config.ts', content: configFile, isOpen: false, }, ]; type IDESectionProps = { scrollProgress: number; }; export const IDESection: FC<IDESectionProps> = ({ scrollProgress }) => { const { resolvedTheme } = useTheme(); // Memoize `activeTab` to prevent unnecessary re-renders const activeTab = useMemo( () => Math.floor(scrollProgress * ideTabs.length), [scrollProgress] ); // Memoize IDE props to avoid unnecessary renders const ideProps = useMemo( () => ({ isDarkMode: resolvedTheme === 'dark', pages: ideTabs, // ideTabs is static, no need to memoize activeTab, }), [activeTab, resolvedTheme] ); return ( <IDE {...ideProps} className="mx-auto max-h-[440px] flex-1 scale-90 text-xs" /> ); };

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/aymericzip/intlayer'

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