import { memo } from 'react'; import dynamic from 'next/dynamic'; import { useAtomValue } from 'jotai'; import { useTranslation } from 'react-i18next'; import { NotAvailable } from '~/client/components/NotAvailable'; import { SidebarContentsType } from '~/interfaces/ui'; import { useIsGuestUser } from '~/states/context'; import { useGrowiAppIdForGrowiCloud, useGrowiCloudUri } from '~/states/global'; import { aiEnabledAtom } from '~/states/server-configurations'; import { useSidebarMode } from '~/states/ui/sidebar'; import { PrimaryItem } from './PrimaryItem'; import styles from './PrimaryItems.module.scss'; // Do not SSR Socket.io to make it work const PrimaryItemForNotification = dynamic( () => import('../InAppNotification/PrimaryItemForNotification').then( (mod) => mod.PrimaryItemForNotification, ), { ssr: false }, ); type Props = { onItemHover?: (contents: SidebarContentsType) => void; }; export const PrimaryItems = memo((props: Props) => { const { onItemHover } = props; const { t } = useTranslation(); const { sidebarMode } = useSidebarMode(); const isAiEnabled = useAtomValue(aiEnabledAtom); const isGuestUser = useIsGuestUser(); const growiCloudUri = useGrowiCloudUri(); const growiAppIdForGrowiCloud = useGrowiAppIdForGrowiCloud(); const isCloud = growiCloudUri != null && growiAppIdForGrowiCloud != null; if (sidebarMode == null) { return <>; } const aiAssistantNotAvailableTitle = ( <>

{t('default_ai_assistant.open_cloud_settings_to_enable')}

share {t('default_ai_assistant.to_cloud_settings')} ); return (
{isGuestUser === false && ( )} {isAiEnabled ? ( ) : ( isCloud && ( ) )}
); });