Skip to main content
Glama
index.tsx1.71 kB
'use client'; import { AutoCompleteTextarea, Container } from '@intlayer/design-system'; import { useIntlayer } from 'next-intlayer'; import { type FC, useEffect, useState } from 'react'; const getTextContent = (text: string, textProgress: number) => { // Pleat text of 3 characters const textChunks = []; for (let i = 0; i < text.length; i += 1) { textChunks.push(text.slice(i, i + 1)); } return textChunks .filter((_, index) => index / textChunks.length < textProgress) .join(''); }; type AutocompletionSectionProps = { scrollProgress: number; }; export const AutocompletionSection: FC<AutocompletionSectionProps> = ({ scrollProgress, }) => { const { input, suggestion, ariaLabel } = useIntlayer( 'autocompletion-section' ); const [text, setText] = useState<string>(''); const [isControlled, setIsControlled] = useState(false); useEffect(() => { if (!isControlled) { setText(getTextContent(input.value, scrollProgress * 1.5)); } }, [input.value, scrollProgress, isControlled]); return ( <div className="w-full scale-90"> <Container background="none" border roundedSize="2xl" className="h-auto flex-1 overflow-auto p-5" > <AutoCompleteTextarea value={text} aria-label={ariaLabel.value} onChange={(e) => { setText(e.target.value); }} onKeyDown={() => { setIsControlled(true); }} isActive={isControlled} suggestion={ !isControlled && scrollProgress > 0.66 ? suggestion.value : undefined } /> </Container> </div> ); };

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