import { ActionIcon, Group, Menu, Text, Tooltip, UnstyledButton, } from '@mantine/core'; import { spotlight } from '@mantine/spotlight'; import { IconArrowDown, IconDots, IconHome, IconPlus, IconSearch, IconSettings, } from '@tabler/icons-react'; import classes from './space-sidebar.module.css'; import React, { useMemo } from 'react'; import { useAtom } from 'jotai'; import { SearchSpotlight } from '@/features/search/search-spotlight.tsx'; import { treeApiAtom } from '@/features/page/tree/atoms/tree-api-atom.ts'; import { Link, useLocation, useParams } from 'react-router-dom'; import clsx from 'clsx'; import { useDisclosure } from '@mantine/hooks'; import SpaceSettingsModal from '@/features/space/components/settings-modal.tsx'; import { useGetSpaceBySlugQuery } from '@/features/space/queries/space-query.ts'; import { getSpaceUrl } from '@/lib/config.ts'; import SpaceTree from '@/features/page/tree/components/space-tree.tsx'; import { useSpaceAbility } from '@/features/space/permissions/use-space-ability.ts'; import { SpaceCaslAction, SpaceCaslSubject, } from '@/features/space/permissions/permissions.type.ts'; import PageImportModal from '@/features/page/components/page-import-modal.tsx'; import { SwitchSpace } from './switch-space'; export function SpaceSidebar() { const [tree] = useAtom(treeApiAtom); const location = useLocation(); const [opened, { open: openSettings, close: closeSettings }] = useDisclosure(false); const { spaceSlug } = useParams(); const { data: space, isLoading, isError } = useGetSpaceBySlugQuery(spaceSlug); const spaceRules = space?.membership?.permissions; const spaceAbility = useMemo(() => useSpaceAbility(spaceRules), [spaceRules]); if (!space) { return <>>; } function handleCreatePage() { tree?.create({ parentId: null, type: 'internal', index: 0 }); } return ( <>