Install the FrogBot chat component package and its stylesheet.
Install the UI package alongside FrogBot and React:
pnpm add @frogbotai/ui frogbot react react-dom
Next.js applications also need next and @frogbotai/next. Vite applications do not.Import the compiled stylesheet once in your application root. Consumers do not need Tailwind or a content-source configuration.
import '@frogbotai/ui/styles.css'
The FrogBot admin panel already loads this stylesheet through @frogbotai/next/css, so you only import it for pages outside the admin.FrogBot components look the same outside the admin as inside it: the stylesheet brings its own reset, scoped to FrogBot elements, so your page’s other markup is left alone. To get the admin’s fonts (Inter, and Roboto Mono for code), import the bundled font files too, or pick your own font:
FrogBot puts all of its styles in a CSS cascade layer named frogbot, and its reset in frogbot-reset, the first layer on the page. Your own CSS that isn’t in a layer always beats FrogBot, whatever the selector, so you can restyle components with plain class rules and no !important. See how to override FrogBot styles.
With Tailwind CSS v4, utilities such as text-red-600 or underline on a FrogBot component beat the component’s own style. The frogbot layer has to sit between Tailwind’s components and utilities layers, and a layer takes its place the first time the page names it. Use one of these setups:
Import FrogBot’s stylesheet before your Tailwind CSS. It declares the order for you.
If Tailwind loads first without that line, frogbot lands after utilities and utilities on FrogBot components have no effect. With either setup, FrogBot’s component styles beat Tailwind’s Preflight reset.Tailwind CSS v3 output isn’t in a layer, so it always beats FrogBot, Preflight included. For Tailwind in the admin panel, see admin panel styles.
FrogBot UI needs Chrome or Edge 123, Firefox 120, or Safari 17.5 or later. Older browsers show FrogBot components without their colors.The package supports React 19 and can be bundled by Next.js or Vite. Its internal UI dependencies are installed with the package; applications do not install or import them directly. It does not require environment-variable shims or platform SDKs.
Internal utility class names are not public API. Do not target them from application CSS. Use theme tokens, component props, and documented data attributes instead.
{"docsConfig":{"theme":"aspen","$schema":"https://mintlify.com/docs.json","name":"FrogBot Docs","colors":{"primary":"#030712","light":"#F9FAFB","dark":"#3acf6a"},"logo":{"light":"https://mintcdn.com/firmware/1jF8tzNdCWHCfika/logo/FrogBotLightGreen.svg?fit=max\u0026auto=format\u0026n=1jF8tzNdCWHCfika\u0026q=85\u0026s=de657b1e4825a6b0d0c7607cc6cd1933","dark":"https://mintcdn.com/firmware/1jF8tzNdCWHCfika/logo/FrogBotLongGreen.svg?fit=max\u0026auto=format\u0026n=1jF8tzNdCWHCfika\u0026q=85\u0026s=eed21f0fb6485cf12699700d0f455341"},"favicon":"https://mintcdn.com/firmware/pvDTxOOi5ftoZro_/favicon.svg?fit=max\u0026auto=format\u0026n=pvDTxOOi5ftoZro_\u0026q=85\u0026s=044d843a7a3071dad0518e3ad6f7d59d","api":{"mdx":{"auth":{"method":"bearer"},"server":"https://app.frogbot.ai/api"}},"background":{"color":{"light":"#F9FAFB","dark":"#0b1120"}},"navbar":{"links":[{"href":"https://github.com/frogbotai/frogbot","type":"github"},{"icon":"discord","href":"https://discord.gg/JBZF7syAnU","label":"Discord"},{"href":"https://x.com/cgilly2fast","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.frogbot.ai"}},"footer":{"socials":{"x":"https://x.com/frogbot_ai","linkedin":"https://www.linkedin.com/company/frogbotai"}},"styling":{"codeblocks":{"theme":"tokyo-night"},"latex":true},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"firmware","hasAudioNarration":false,"actualSubdomain":"firmware","customDomains":["docs.frogbot.ai"],"gitSource":{"type":"github","owner":"frogbotai","repo":"frogbot","deployBranch":"main","contentDirectory":"docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae354449757c0f6dff43b35","collectionId":"547721b1-d6ea-4b0a-982d-fd3b3bb600a4","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae354449757c0f6dff43b35"},"entitlements":{},"buildId":"6ae54e87335dd0cca3e42f8f","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"General","count":174},{"language":"default","tag":"Features","count":75},{"language":"default","tag":"Basics","count":54},{"language":"default","tag":"Fields","count":34},{"language":"default","tag":"Ecosystem","count":24},{"language":"default","tag":"Cloud","count":21},{"language":"default","tag":"Plugins","count":16},{"language":"default","tag":"Managing Data","count":14},{"language":"default","tag":"Chat","count":11},{"language":"default","tag":"Pieces","count":11}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dark #sidebar-content a,.dark #sidebar-content button{color:#d1d5db!important}.dark #sidebar-content a:hover,.dark #sidebar-content button:hover{color:#f9fafb!important}.dark .sidebar-group-header{color:#e5e7eb}.dark #content-area,.dark #content-area [data-as=p],.dark #content-area li,.dark #content-area p,.dark #content-area span:not(:where(pre, code) span),.dark .prose :where(p, li, span):not(:where(code, code *)){color:#cbd5e1!important}.dark .prose{--tw-prose-invert-body:#cbd5e1;--tw-prose-invert-lead:#cbd5e1;--tw-prose-invert-bullets:#64748b;--tw-prose-invert-counters:#94a3b8;--tw-prose-invert-quotes:#e2e8f0;--tw-prose-invert-captions:#94a3b8;--tw-prose-invert-headings:#f8fafc;--tw-prose-invert-bold:#f8fafc}.dark [data-component-part=card-content],.dark [data-component-part=card-content] *{color:#cbd5e1!important}.dark #table-of-contents a{color:#cbd5e1}.dark #table-of-contents a:hover{color:#f1f5f9}.dark #content-area h1,.dark #content-area h1 *,.dark #content-area h2,.dark #content-area h2 *,.dark #content-area h3,.dark #content-area h3 *,.dark #content-area h4,.dark #content-area h4 *,.dark [data-component-part=card-title]{color:#f8fafc!important}.prompt{background-color:#fff!important;border-color:rgb(var(--gray-950)/.1)!important;color:rgb(var(--gray-700))!important}.dark .prompt{background-color:rgb(var(--background-dark))!important;border-color:rgb(255 255 255/.1)!important;color:#cbd5e1!important}.prompt [data-component-part=prompt-action-copy-button]{background-color:rgb(var(--primary-dark))!important;border-color:transparent!important;color:#fff!important}.prompt [data-component-part=prompt-action-copy-button]:hover{background-color:rgb(var(--primary-dark)/.9)!important}.dark #content-area .prompt [data-component-part=prompt-action-copy-button] *,.prompt [data-component-part=prompt-action-copy-button] *{color:#fff!important}"}],"page":{"pagePath":"chat/ui-installation","slug":"/chat/ui-installation","pageMetadata":{"title":"Install the chat UI","sidebarTitle":"UI installation","description":"Install the FrogBot chat component package and its stylesheet.","keywords":["chat UI","React","installation","CSS"],"href":"/chat/ui-installation"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Install the FrogBot chat component package and its stylesheet.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Install the UI package alongside FrogBot and React:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#C0CAF5`,\"--shiki-dark\":`#C0CAF5`},children:`pnpm`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` add`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` @frogbotai/ui`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` frogbot`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` react`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:` react-dom`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Next.js applications also need `,_jsx(_components.code,{children:`next`}),` and `,_jsx(_components.code,{children:`@frogbotai/next`}),`. Vite applications do not.`]}),`\n`,_jsx(_components.p,{children:`Import the compiled stylesheet once in your application root. Consumers do not need Tailwind or a content-source configuration.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotai/ui/styles.css`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`The FrogBot admin panel already loads this stylesheet through `,_jsx(_components.code,{children:`@frogbotai/next/css`}),`, so you only import it for pages outside the admin.`]}),`\n`,_jsxs(_components.p,{children:[`FrogBot components look the same outside the admin as inside it: the stylesheet brings its own reset, scoped to FrogBot elements, so your page’s other markup is left alone. To get the admin’s fonts (Inter, and Roboto Mono for code), import the bundled font files too, or `,_jsx(_components.a,{href:`/chat/ui-theming#fonts`,children:`pick your own font`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotai/ui/styles.css`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotai/ui/fonts.css`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`cascade-layer`,children:`Cascade layer`}),`\n`,_jsxs(_components.p,{children:[`FrogBot puts all of its styles in a CSS cascade layer named `,_jsx(_components.code,{children:`frogbot`}),`, and its reset in `,_jsx(_components.code,{children:`frogbot-reset`}),`, the first layer on the page. Your own CSS that isn’t in a layer always beats FrogBot, whatever the selector, so you can restyle components with plain class rules and no `,_jsx(_components.code,{children:`!important`}),`. See `,_jsx(_components.a,{href:`/chat/ui-theming#override-frogbot-styles`,children:`how to override FrogBot styles`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`use-with-tailwind-css`,children:`Use with Tailwind CSS`}),`\n`,_jsxs(_components.p,{children:[`With Tailwind CSS v4, utilities such as `,_jsx(_components.code,{children:`text-red-600`}),` or `,_jsx(_components.code,{children:`underline`}),` on a FrogBot component beat the component’s own style. The `,_jsx(_components.code,{children:`frogbot`}),` layer has to sit between Tailwind’s `,_jsx(_components.code,{children:`components`}),` and `,_jsx(_components.code,{children:`utilities`}),` layers, and a layer takes its place the first time the page names it. Use one of these setups:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Import FrogBot’s stylesheet before your Tailwind CSS. It declares the order for you.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`tsx`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`tsx`,children:_jsxs(_components.code,{language:`tsx`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`@frogbotai/ui/styles.css`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#7DCFFF`,\"--shiki-dark\":`#7DCFFF`},children:`import`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` '`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`./tailwind.css`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`'`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Or put the layer order above the Tailwind import in your own CSS, then import FrogBot in any order.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`css`,children:_jsx(_components.pre,{className:`shiki shiki-themes tokyo-night tokyo-night`,style:{backgroundColor:`#1a1b26`,\"--shiki-dark-bg\":`#1a1b26`,color:`#a9b1d6`,\"--shiki-dark\":`#a9b1d6`},language:`css`,children:_jsxs(_components.code,{language:`css`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-dark\":`#9D7CD8`},children:`@`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:`layer`}),_jsx(_components.span,{style:{color:`#A9B1D6`,\"--shiki-dark\":`#A9B1D6`},children:` frogbot-reset, theme, base, components, frogbot, utilities`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`;`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#9D7CD8`,\"--shiki-dark\":`#9D7CD8`},children:`@`}),_jsx(_components.span,{style:{color:`#BB9AF7`,\"--shiki-dark\":`#BB9AF7`},children:`import`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:` \"`}),_jsx(_components.span,{style:{color:`#9ECE6A`,\"--shiki-dark\":`#9ECE6A`},children:`tailwindcss`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`\"`}),_jsx(_components.span,{style:{color:`#89DDFF`,\"--shiki-dark\":`#89DDFF`},children:`;`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`If Tailwind loads first without that line, `,_jsx(_components.code,{children:`frogbot`}),` lands after `,_jsx(_components.code,{children:`utilities`}),` and utilities on FrogBot components have no effect. With either setup, FrogBot’s component styles beat Tailwind’s Preflight reset.`]}),`\n`,_jsxs(_components.p,{children:[`Tailwind CSS v3 output isn’t in a layer, so it always beats FrogBot, Preflight included. For Tailwind in the admin panel, see `,_jsx(_components.a,{href:`/chat/ui-theming#admin-panel-styles`,children:`admin panel styles`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`browser-support`,children:`Browser support`}),`\n`,_jsx(_components.p,{children:`FrogBot UI needs Chrome or Edge 123, Firefox 120, or Safari 17.5 or later. Older browsers show FrogBot components without their colors.`}),`\n`,_jsx(_components.p,{children:`The package supports React 19 and can be bundled by Next.js or Vite. Its internal UI dependencies are installed with the package; applications do not install or import them directly. It does not require environment-variable shims or platform SDKs.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Internal utility class names are not public API. Do not target them from application CSS. Use theme tokens, component props, and documented data attributes instead.`})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":{"theme":"tokyo-night"},"config":{},"pageMetadata":{"title":"Install the chat UI","sidebarTitle":"UI installation","description":"Install the FrogBot chat component package and its stylesheet.","keywords":["chat UI","React","installation","CSS"],"href":"/chat/ui-installation"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Cascade layer","slug":"cascade-layer","depth":2,"children":[]},{"title":"Use with Tailwind CSS","slug":"use-with-tailwind-css","depth":2,"children":[]},{"title":"Browser support","slug":"browser-support","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"firmware","siteName":"FrogBot Docs","title":"Install the chat UI - FrogBot Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-19T02:59:52.231Z","originalFileLocation":"chat/ui-installation.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Install the FrogBot chat component package and its stylesheet.\">\u003cmeta data-mint-head name=\"application-name\" content=\"FrogBot Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Install the chat UI - FrogBot Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Install the FrogBot chat component package and its stylesheet.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"FrogBot Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.frogbot.ai/chat/ui-installation\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://firmware.mintlify.app/_mintlify/api/og/v2?division=Chat\u0026amp;title=Install+the+chat+UI\u0026amp;description=Install+the+FrogBot+chat+component+package+and+its+stylesheet.\u0026amp;theme=f4bccae87e3aea4ea0fb024f\u0026amp;signature=681620e6b5b1cc156077ec7cbad293450a167a99d91fa8d2b7f22cd612a005b6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Install the chat UI - FrogBot Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Install the FrogBot chat component package and its stylesheet.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://firmware.mintlify.app/_mintlify/api/og/v2?division=Chat\u0026amp;title=Install+the+chat+UI\u0026amp;description=Install+the+FrogBot+chat+component+package+and+its+stylesheet.\u0026amp;theme=f4bccae87e3aea4ea0fb024f\u0026amp;signature=681620e6b5b1cc156077ec7cbad293450a167a99d91fa8d2b7f22cd612a005b6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/firmware/-rhCEx-k_rFkB_Pu/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"FrogBot Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#030712\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.frogbot.ai/chat/ui-installation\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/chat/ui-installation.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.frogbot.ai/#organization\",\"name\":\"FrogBot Docs\",\"url\":\"https://docs.frogbot.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/firmware/1jF8tzNdCWHCfika/logo/FrogBotLightGreen.svg?fit=max\u0026auto=format\u0026n=1jF8tzNdCWHCfika\u0026q=85\u0026s=de657b1e4825a6b0d0c7607cc6cd1933\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.frogbot.ai#website\",\"name\":\"FrogBot Docs\",\"url\":\"https://docs.frogbot.ai\",\"publisher\":{\"@id\":\"https://docs.frogbot.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.frogbot.ai/chat/ui-installation#webpage\",\"url\":\"https://docs.frogbot.ai/chat/ui-installation\",\"name\":\"Install the chat UI\",\"description\":\"Install the FrogBot chat component package and its stylesheet.\",\"dateModified\":\"2026-10-19T02:59:52.231Z\",\"isPartOf\":{\"@id\":\"https://docs.frogbot.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.frogbot.ai/chat/ui-installation#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.frogbot.ai/chat/ui-installation#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.frogbot.ai/admin/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Chat\",\"item\":\"https://docs.frogbot.ai/chat/overview\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Install the chat UI\",\"item\":\"https://docs.frogbot.ai/chat/ui-installation\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.frogbot.ai/chat/ui-installation#article\",\"headline\":\"Install the chat UI\",\"name\":\"Install the chat UI\",\"description\":\"Install the FrogBot chat component package and its stylesheet.\",\"url\":\"https://docs.frogbot.ai/chat/ui-installation\",\"mainEntityOfPage\":{\"@id\":\"https://docs.frogbot.ai/chat/ui-installation#webpage\"},\"dateModified\":\"2026-10-19T02:59:52.231Z\",\"keywords\":\"chat UI, React, installation, CSS\",\"publisher\":{\"@id\":\"https://docs.frogbot.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.frogbot.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"FrogBot Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"FrogBot Docs","nav":{"global":{},"tabs":[{"tab":"General","groups":[{"group":"Start here","pages":[{"title":"What is FrogBot?","sidebarTitle":"What is FrogBot?","href":""},{"title":"Set up FrogBot step by step","sidebarTitle":"Step-by-step setup","href":"/getting-started/setup"},{"title":"Start with a coding agent","sidebarTitle":"Start with a coding agent","href":"/getting-started/coding-agent"},{"title":"Installation","sidebarTitle":"Installation","href":"/getting-started/installation"},{"title":"CLI","sidebarTitle":"CLI","href":"/getting-started/cli"},{"title":"FrogBot concepts","sidebarTitle":"Concepts","href":"/getting-started/concepts"}]},{"group":"Basics","pages":[{"group":"Configuration","expanded":false,"pages":[{"title":"Configuration","sidebarTitle":"Overview","href":"/configuration/overview"},{"title":"Collection Configs","sidebarTitle":"Collections","href":"/configuration/collections"},{"title":"Environment Variables","sidebarTitle":"Environment Variables","href":"/configuration/environment-vars"},{"title":"I18n","sidebarTitle":"I18n","href":"/configuration/i18n"},{"title":"Localization","sidebarTitle":"Localization","href":"/configuration/localization"}]},{"group":"Database","expanded":false,"pages":[{"title":"Database","sidebarTitle":"Overview","href":"/database/overview"},{"title":"MongoDB","sidebarTitle":"MongoDB","href":"/database/mongodb"},{"title":"Postgres","sidebarTitle":"Postgres","href":"/database/postgres"},{"title":"SQLite","sidebarTitle":"SQLite","href":"/database/sqlite"},{"title":"Migrations","sidebarTitle":"Migrations","href":"/database/migrations"},{"title":"Transactions","href":"/database/transactions"},{"title":"Indexes","sidebarTitle":"Indexes","href":"/database/indexes"}]},{"group":"Search","expanded":false,"pages":[{"title":"Collection search","sidebarTitle":"Overview","href":"/search/overview"}]},{"group":"Access Control","expanded":false,"pages":[{"title":"Access Control","sidebarTitle":"Overview","href":"/access-control/overview"},{"title":"Collection Access Control","sidebarTitle":"Collections","href":"/access-control/collections"},{"title":"Field-level Access Control","sidebarTitle":"Fields","href":"/access-control/fields"}]},{"group":"Hooks","expanded":false,"pages":[{"title":"Hooks Overview","sidebarTitle":"Overview","href":"/hooks/overview"},{"title":"Collection Hooks","sidebarTitle":"Collections","href":"/hooks/collections"},{"title":"Field Hooks","sidebarTitle":"Fields","href":"/hooks/fields"},{"title":"Context","sidebarTitle":"Context","href":"/hooks/context"}]},{"group":"Fields","expanded":false,"pages":[{"title":"Fields Overview","sidebarTitle":"Overview","href":"/fields/overview"},{"title":"Text Field","sidebarTitle":"Text","href":"/fields/text"},{"title":"Textarea Field","sidebarTitle":"Textarea","href":"/fields/textarea"},{"title":"Number Field","sidebarTitle":"Number","href":"/fields/number"},{"title":"Email Field","sidebarTitle":"Email","href":"/fields/email"},{"title":"Checkbox Field","sidebarTitle":"Checkbox","href":"/fields/checkbox"},{"title":"Date Field","sidebarTitle":"Date","href":"/fields/date"},{"title":"Select Field","sidebarTitle":"Select","href":"/fields/select"},{"title":"Radio Group Field","sidebarTitle":"Radio Group","href":"/fields/radio"},{"title":"Relationship Field","sidebarTitle":"Relationship","href":"/fields/relationship"},{"title":"Upload Field","sidebarTitle":"Upload","href":"/fields/upload"},{"title":"Rich Text Field","sidebarTitle":"Rich Text","href":"/fields/rich-text"},{"title":"Array Field","sidebarTitle":"Array","href":"/fields/array"},{"title":"Blocks Field","sidebarTitle":"Blocks","href":"/fields/blocks"},{"title":"Group Field","sidebarTitle":"Group","href":"/fields/group"},{"title":"Tabs Field","sidebarTitle":"Tabs","href":"/fields/tabs"},{"title":"Row Field","sidebarTitle":"Row","href":"/fields/row"},{"title":"Collapsible Field","sidebarTitle":"Collapsible","href":"/fields/collapsible"},{"title":"Join Field","sidebarTitle":"Join","href":"/fields/join"},{"title":"JSON Field","sidebarTitle":"JSON","href":"/fields/json"},{"title":"Vector field","sidebarTitle":"Vector","href":"/fields/vector"},{"title":"Code Field","sidebarTitle":"Code","href":"/fields/code"},{"title":"Point Field","sidebarTitle":"Point","href":"/fields/point"},{"title":"UI Field","sidebarTitle":"UI","href":"/fields/ui"},{"group":"Field kinds","pages":[{"title":"Money Field","sidebarTitle":"Money","href":"/fields/money"},{"title":"Percent Field","sidebarTitle":"Percent","href":"/fields/percent"},{"title":"Rating Field","sidebarTitle":"Rating","href":"/fields/rating"},{"title":"Duration Field","sidebarTitle":"Duration","href":"/fields/duration"},{"title":"URL Field","sidebarTitle":"URL","href":"/fields/url"},{"title":"Phone Field","sidebarTitle":"Phone","href":"/fields/phone"},{"title":"Barcode Field","sidebarTitle":"Barcode","href":"/fields/barcode"},{"title":"Autonumber Field","sidebarTitle":"Autonumber","href":"/fields/autonumber"},{"title":"AI Field","sidebarTitle":"AI","href":"/fields/ai"}]},{"title":"Fields Generated by FrogBot","sidebarTitle":"Generated Fields","href":"/fields/default-fields"}]}]},{"group":"Managing Data","pages":[{"group":"Local API","expanded":false,"pages":[{"title":"Local API","sidebarTitle":"Overview","href":"/local-api/overview"},{"title":"Respecting Access Control with Local API Operations","sidebarTitle":"Access Control","href":"/local-api/access-control"},{"title":"Using Local API Operations with Server Functions","sidebarTitle":"Server Functions","href":"/local-api/server-functions"},{"title":"Using FrogBot outside Next.js","sidebarTitle":"Outside Next.js","href":"/local-api/outside-nextjs"}]},{"group":"REST API","expanded":false,"pages":[{"title":"REST API","sidebarTitle":"Overview","href":"/rest-api/overview"}]},{"group":"GraphQL","expanded":false,"pages":[{"title":"Enable GraphQL","sidebarTitle":"Enable GraphQL","href":"/graphql/enable"},{"title":"GraphQL Overview","sidebarTitle":"Overview","href":"/graphql/overview"},{"title":"GraphQL Schema","sidebarTitle":"GraphQL Schema","href":"/graphql/graphql-schema"},{"title":"Adding your own Queries and Mutations","sidebarTitle":"Custom Queries and Mutations","href":"/graphql/extending"}]},{"group":"Queries","expanded":false,"pages":[{"title":"Querying your Documents","sidebarTitle":"Overview","href":"/queries/overview"},{"title":"Depth","sidebarTitle":"Depth","href":"/queries/depth"},{"title":"Pagination","sidebarTitle":"Pagination","href":"/queries/pagination"},{"title":"Select","sidebarTitle":"Select","href":"/queries/select"},{"title":"Sort","sidebarTitle":"Sort","href":"/queries/sort"}]}]},{"group":"Features","pages":[{"group":"Admin","expanded":false,"pages":[{"title":"Admin panel","sidebarTitle":"Overview","href":"/admin/overview"},{"title":"Admin navigation","sidebarTitle":"Admin navigation","href":"/admin/admin-navigation"},{"title":"Collection board","href":"/admin/collection-board"},{"title":"Collection calendar","href":"/admin/collection-calendar"}]},{"group":"Authentication","expanded":false,"pages":[{"title":"Authentication Overview","sidebarTitle":"Overview","href":"/authentication/overview"},{"title":"OAuth sign-in","sidebarTitle":"Sign-in","href":"/authentication/sign-in"},{"title":"Authentication Operations","sidebarTitle":"Operations","href":"/authentication/operations"},{"title":"JWT Strategy","sidebarTitle":"JWT Strategy","href":"/authentication/jwt"},{"title":"Cookie Strategy","sidebarTitle":"Cookie Strategy","href":"/authentication/cookies"},{"title":"Authentication Emails","sidebarTitle":"Email Verification","href":"/authentication/email"},{"title":"API Key Strategy","sidebarTitle":"API Key Strategy","href":"/authentication/api-keys"},{"title":"Token Data","sidebarTitle":"Token Data","href":"/authentication/token-data"},{"title":"Custom Strategies","sidebarTitle":"Custom Strategies","href":"/authentication/custom-strategies"}]},{"group":"Upload","expanded":false,"pages":[{"title":"Uploads","sidebarTitle":"Overview","href":"/upload/overview"},{"title":"Storage Adapters","sidebarTitle":"Storage Adapters","href":"/upload/storage-adapters"},{"title":"Files","sidebarTitle":"Files","href":"/upload/files"}]},{"group":"Jobs Queue","expanded":false,"pages":[{"title":"Jobs","href":"/jobs-queue/overview"},{"title":"Job workers","href":"/jobs-queue/workers"}]},{"group":"Versions","expanded":false,"pages":[{"title":"Versions","sidebarTitle":"Overview","href":"/versions/overview"},{"title":"Drafts","sidebarTitle":"Drafts","href":"/versions/drafts"},{"title":"Autosave","sidebarTitle":"Autosave","href":"/versions/autosave"}]},{"group":"Email","expanded":false,"pages":[{"title":"Email","sidebarTitle":"Overview","href":"/email/overview"}]},{"group":"Trash","expanded":false,"pages":[{"title":"Trash","sidebarTitle":"Overview","href":"/trash/overview"}]},{"group":"TypeScript","expanded":false,"pages":[{"title":"TypeScript - Overview","sidebarTitle":"Overview","href":"/typescript/overview"},{"title":"Generating TypeScript Interfaces","sidebarTitle":"Generating Types","href":"/typescript/generating-types"}]},{"group":"Troubleshooting","expanded":false,"pages":[{"title":"Troubleshooting","sidebarTitle":"Troubleshooting","href":"/troubleshooting/troubleshooting"}]},{"group":"Custom Components","expanded":false,"pages":[{"title":"Swap in your own React components","href":"/custom-components/overview"},{"title":"Root Components","href":"/custom-components/root-components"},{"title":"Swap in your own React Context providers","href":"/custom-components/custom-providers"},{"title":"Customizing Views","href":"/custom-components/custom-views"},{"title":"Dashboard Widgets","href":"/custom-components/dashboard"},{"title":"Document Views","href":"/custom-components/document-views"},{"title":"Edit View","href":"/custom-components/edit-view"},{"title":"List View","href":"/custom-components/list-view"}]},{"group":"Rich Text","expanded":false,"pages":[{"title":"Rich Text Editor","sidebarTitle":"Overview","href":"/rich-text/overview"},{"title":"Official Features","sidebarTitle":"Official Features","href":"/rich-text/official-features"},{"title":"Lexical Converters","sidebarTitle":"Converters","href":"/rich-text/converters"},{"title":"Converting JSX","sidebarTitle":"Converting JSX","href":"/rich-text/converting-jsx"},{"title":"Converting HTML","sidebarTitle":"Converting HTML","href":"/rich-text/converting-html"},{"title":"Converting Markdown","sidebarTitle":"Converting Markdown","href":"/rich-text/converting-markdown"},{"title":"Converting Plain Text","sidebarTitle":"Converting Plain Text","href":"/rich-text/converting-plaintext"},{"title":"Blocks","sidebarTitle":"Blocks","href":"/rich-text/blocks"},{"title":"Custom Features","sidebarTitle":"Custom Features","href":"/rich-text/custom-features"},{"title":"Rendering on demand (Experimental)","sidebarTitle":"Rendering on demand","href":"/rich-text/rendering-on-demand"},{"title":"Views (Experimental)","sidebarTitle":"Views","href":"/rich-text/views"}]},{"group":"Live Preview","expanded":false,"pages":[{"title":"Live Preview","sidebarTitle":"Overview","href":"/live-preview/overview"},{"title":"Implementing Live Preview in your frontend","sidebarTitle":"Frontend","href":"/live-preview/frontend"},{"title":"Server-side Live Preview","sidebarTitle":"Server-side","href":"/live-preview/server"},{"title":"Client-side Live Preview","sidebarTitle":"Client-side","href":"/live-preview/client"}]},{"group":"AI","expanded":false,"pages":[{"title":"AI","sidebarTitle":"AI","href":"/ai/overview"}]},{"group":"Agents","expanded":false,"pages":[{"title":"Agents","sidebarTitle":"Agents","href":"/agents/overview"}]},{"group":"Chat","expanded":false,"pages":[{"title":"Chat persistence","sidebarTitle":"Overview","href":"/chat/overview"},{"title":"Ask the user questions","sidebarTitle":"Questions","href":"/chat/questions"},{"title":"Turns and queued messages","sidebarTitle":"Turns and queues","href":"/chat/turns"},{"title":"Chat manifest","sidebarTitle":"Manifest","api":"GET https://app.frogbot.ai/api/frogbot","href":"/chat/manifest"},{"title":"Training data export","sidebarTitle":"Training data","description":"Export persisted chats and messages as lossless JSONL for model training.","href":"/chat/training-data"},{"title":"Install the chat UI","sidebarTitle":"UI installation","href":"/chat/ui-installation"},{"title":"Set up the chat provider","sidebarTitle":"Provider setup","description":"Connect the chat UI to a FrogBot server, or to your own backend through an adapter.","href":"/chat/ui-provider"},{"title":"Render Chat","sidebarTitle":"Chat component","href":"/chat/ui-chat"},{"title":"Theme and white-label the chat UI","sidebarTitle":"Theming","href":"/chat/ui-theming"},{"title":"Register tools and artifacts","sidebarTitle":"Tools and artifacts","href":"/chat/ui-registries"},{"title":"Build your own chat shell","sidebarTitle":"Build your own shell","href":"/chat/ui-custom-shell"}]},{"group":"MCP","expanded":false,"pages":[{"title":"MCP servers","sidebarTitle":"MCP servers","href":"/mcp/overview"}]},{"group":"Connections","expanded":false,"pages":[{"title":"Connections","sidebarTitle":"Connections","href":"/connections/overview"}]},{"group":"Pieces","expanded":false,"pages":[{"title":"Pieces","sidebarTitle":"Pieces","href":"/pieces/overview"},{"title":"Available pieces","sidebarTitle":"Available pieces","href":"/pieces/index"},{"title":"Triggers","href":"/pieces/triggers"},{"title":"Web search via pieces","sidebarTitle":"Web search","href":"/pieces/web-search"},{"title":"Slack","href":"/pieces/slack"},{"title":"Discord","href":"/pieces/discord"},{"title":"Microsoft Teams","href":"/pieces/teams"},{"title":"Telegram","href":"/pieces/telegram"},{"title":"GitHub","href":"/pieces/github"},{"title":"Linear","href":"/pieces/linear"},{"title":"Channel questions","href":"/pieces/channel-questions"}]}]},{"group":"Ecosystem","pages":[{"group":"Plugins","expanded":false,"pages":[{"title":"Plugins","sidebarTitle":"Overview","href":"/plugins/overview"},{"title":"AI policy","href":"/plugins/ai-policy"},{"title":"API keys","sidebarTitle":"API keys","href":"/plugins/api-keys"},{"title":"Audit log","href":"/plugins/audit-log"},{"title":"AI request capture","href":"/plugins/capture"},{"title":"Dojo","href":"/plugins/dojo"},{"title":"Roles","sidebarTitle":"Roles","href":"/plugins/roles"},{"title":"Usage reports","href":"/plugins/usage-reports"},{"title":"MCP server","sidebarTitle":"MCP server","href":"/plugins/mcp"},{"title":"Import and export","href":"/plugins/import-export"},{"title":"Nested documents","href":"/plugins/nested-docs"},{"title":"Redirects","href":"/plugins/redirects"},{"title":"Sentry","href":"/plugins/sentry"},{"title":"SEO","href":"/plugins/seo"},{"title":"Stripe","href":"/plugins/stripe"},{"title":"Building Your Own Plugin","sidebarTitle":"Build Your Own","href":"/plugins/build-your-own"}]},{"group":"Gateway","expanded":false,"pages":[{"title":"Gateway","sidebarTitle":"Overview","href":"/gateway/overview"},{"title":"Providers","sidebarTitle":"Providers","href":"/gateway/providers"},{"title":"Configuration","sidebarTitle":"Configuration","href":"/gateway/configuration"},{"title":"Embedding","sidebarTitle":"Embedding","href":"/gateway/embedding"},{"title":"Hooks","sidebarTitle":"Hooks","href":"/gateway/hooks"},{"title":"Observability","sidebarTitle":"Observability","href":"/gateway/observability"},{"title":"Errors","sidebarTitle":"Errors","href":"/gateway/errors"}]},{"group":"Agent Skills","expanded":false,"pages":[{"title":"Coding agents","href":"/skills/coding-agents"}]}]},{"group":"Deployment","pages":[{"group":"Deployment","expanded":false,"pages":[{"title":"Deployment","sidebarTitle":"Deployment","href":"/deployment/overview"}]}]}]},{"tab":"Cloud","pages":[{"title":"Cloud","href":"/subscription-intro"}]}]},"basePath":"","title":"Install the chat UI - FrogBot Docs","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}