| | |
| | | import TemplateChatJa from './template/template_chat.ja.mdx' |
| | | import I18n from '@/context/i18n' |
| | | import { LanguagesSupported } from '@/i18n/language' |
| | | import useTheme from '@/hooks/use-theme' |
| | | import { Theme } from '@/types/app' |
| | | import cn from '@/utils/classnames' |
| | | |
| | | type IDocProps = { |
| | | appDetail: any |
| | |
| | | const { t } = useTranslation() |
| | | const [toc, setToc] = useState<Array<{ href: string; text: string }>>([]) |
| | | const [isTocExpanded, setIsTocExpanded] = useState(false) |
| | | const { theme } = useTheme() |
| | | |
| | | const variables = appDetail?.model_config?.configs?.prompt_variables || [] |
| | | const inputs = variables.reduce((res: any, variable: any) => { |
| | |
| | | <div className={`fixed right-8 top-32 z-10 transition-all ${isTocExpanded ? 'w-64' : 'w-10'}`}> |
| | | {isTocExpanded |
| | | ? ( |
| | | <nav className="toc max-h-[calc(100vh-150px)] w-full overflow-y-auto rounded-lg bg-components-panel-bg p-4 shadow-md"> |
| | | <div className="mb-4 flex items-center justify-between"> |
| | | <h3 className="text-lg font-semibold text-text-primary">{t('appApi.develop.toc')}</h3> |
| | | <nav className="toc w-full bg-gray-50 p-4 rounded-lg shadow-md"> |
| | | <div className="flex justify-between items-center mb-4"> |
| | | <h3 className="text-lg font-semibold">{t('appApi.develop.toc')}</h3> |
| | | <button |
| | | onClick={() => setIsTocExpanded(false)} |
| | | className="text-text-tertiary hover:text-text-secondary" |
| | | className="text-gray-500 hover:text-gray-700" |
| | | > |
| | | ✕ |
| | | </button> |
| | |
| | | <li key={index}> |
| | | <a |
| | | href={item.href} |
| | | className="text-text-secondary transition-colors duration-200 hover:text-text-primary hover:underline" |
| | | className="text-gray-600 hover:text-gray-900 hover:underline transition-colors duration-200" |
| | | onClick={e => handleTocClick(e, item)} |
| | | > |
| | | {item.text} |
| | |
| | | : ( |
| | | <button |
| | | onClick={() => setIsTocExpanded(true)} |
| | | className="flex h-10 w-10 items-center justify-center rounded-full bg-components-button-secondary-bg shadow-md transition-colors duration-200 hover:bg-components-button-secondary-bg-hover" |
| | | className="w-10 h-10 bg-gray-50 rounded-full shadow-md flex items-center justify-center hover:bg-gray-100 transition-colors duration-200" |
| | | > |
| | | <RiListUnordered className="h-6 w-6 text-components-button-secondary-text" /> |
| | | <RiListUnordered className="w-6 h-6" /> |
| | | </button> |
| | | )} |
| | | </div> |
| | | <article className={cn('prose-xl prose', theme === Theme.dark && 'prose-invert')} > |
| | | <article className="prose prose-xl" > |
| | | {(appDetail?.mode === 'chat' || appDetail?.mode === 'agent-chat') && ( |
| | | (() => { |
| | | switch (locale) { |