Skip to content
This repository was archived by the owner on Mar 7, 2026. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 27 additions & 1 deletion src/components/Sidebars/FileSideBar/FileSidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,12 @@ import React, { useEffect, useState } from 'react'
import { FileInfoNode, FileInfoTree } from 'electron/main/filesystem/types'
import { FixedSizeList } from 'react-window'
import { isFileNodeDirectory } from '@shared/utils'
import { YStack } from 'tamagui'
import { XStack, YStack } from 'tamagui'
import { HiOutlinePencilAlt } from 'react-icons/hi'
import { VscNewFolder } from 'react-icons/vsc'
import { useFileContext } from '@/contexts/FileContext'
import { useModalOpeners } from '@/contexts/ModalContext'
import { useContentContext } from '@/contexts/ContentContext'
import FileItemRows from './FileItemRows'

const getFilesAndIndentationsForSidebar = (
Expand Down Expand Up @@ -34,6 +38,8 @@ const FileSidebar: React.FC<FileExplorerProps> = ({ lheight }) => {
// const { state, actions } = useThemeManager()
const [listHeight, setListHeight] = useState(lheight ?? window.innerHeight - 50)
const { vaultFilesTree, expandedDirectories, renameFile, setSelectedDirectory } = useFileContext()
const { setIsNewDirectoryModalOpen } = useModalOpeners()
const { createUntitledNote } = useContentContext()

const handleDrop = async (e: React.DragEvent) => {
e.preventDefault()
Expand Down Expand Up @@ -67,6 +73,26 @@ const FileSidebar: React.FC<FileExplorerProps> = ({ lheight }) => {
const itemCount = filesAndIndentations.length
return (
<YStack className="h-full grow px-1 pt-2" backgroundColor="$gray3">
<XStack className="mb-1 items-center justify-start gap-1 px-1">
<YStack
alignItems="center"
justifyContent="center"
hoverStyle={{ backgroundColor: '$gray7' }}
className="size-5 cursor-pointer rounded opacity-60 hover:opacity-90"
onPress={() => createUntitledNote()}
>
<HiOutlinePencilAlt className="text-gray-300" color="gray" size={16} title="New Note" />
</YStack>
<YStack
alignItems="center"
justifyContent="center"
hoverStyle={{ backgroundColor: '$gray7' }}
className="size-5 cursor-pointer rounded opacity-60 hover:opacity-90"
onPress={() => setIsNewDirectoryModalOpen(true)}
>
<VscNewFolder className="text-gray-300" color="gray" size={16} title="New Directory" />
</YStack>
</XStack>
<div onDrop={handleDrop} onDragOver={handleDragOver} onClick={handleClick}>
<FixedSizeList
height={listHeight}
Expand Down
47 changes: 4 additions & 43 deletions src/components/Sidebars/IconsSidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,13 @@ import React, { useState } from 'react'

import { GrNewWindow } from 'react-icons/gr'
import { MdSettings } from 'react-icons/md'
import { VscNewFolder } from 'react-icons/vsc'
import { HiOutlinePencilAlt } from 'react-icons/hi'
// New folder and new note icons removed from nav (moved to Files sidebar)

import { Files, MessageCircle, Search, Moon, SunMoon } from '@tamagui/lucide-icons'
import { YStack } from 'tamagui'
import { useModalOpeners } from '../../contexts/ModalContext'
import { useChatContext } from '@/contexts/ChatContext'
import { useContentContext } from '@/contexts/ContentContext'
// Removed new note action from nav; handled in Files sidebar
import { useThemeManager } from '@/contexts/ThemeContext'
import InitialSetupSinglePage from '../Settings/InitialSettingsSinglePage'

Expand All @@ -22,8 +21,7 @@ const IconsSidebar: React.FC<IconsSidebarProps> = ({ getShortcutDescription }) =
const [showVaultSetup, setShowVaultSetup] = useState(false)

const { state, actions } = useThemeManager() // State => theme, actions => toggle, set, syncWithSystem
const { isSettingsModalOpen, setIsSettingsModalOpen, setIsNewDirectoryModalOpen } = useModalOpeners()
const { createUntitledNote } = useContentContext()
const { isSettingsModalOpen, setIsSettingsModalOpen } = useModalOpeners()

const handleAllInitialSettingsAreReady = () => {
setShowVaultSetup(false)
Expand Down Expand Up @@ -92,44 +90,7 @@ const IconsSidebar: React.FC<IconsSidebarProps> = ({ getShortcutDescription }) =
/>
</YStack>
</div>
<div
className="flex h-8 w-full cursor-pointer items-center justify-center border-none bg-transparent "
onClick={() => createUntitledNote()}
>
<YStack
alignItems="center"
hoverStyle={{
backgroundColor: '$gray7',
}}
className="flex size-4/5 items-center justify-center rounded"
>
<HiOutlinePencilAlt
className="text-gray-200"
color="gray"
size={22}
title={getShortcutDescription('open-new-note') || 'New Note'}
/>
</YStack>
</div>
<div
className="mt-[2px] flex h-8 w-full cursor-pointer items-center justify-center border-none bg-transparent "
onClick={() => setIsNewDirectoryModalOpen(true)}
>
<YStack
alignItems="center"
hoverStyle={{
backgroundColor: '$gray7',
}}
className="flex size-4/5 items-center justify-center rounded"
>
<VscNewFolder
className="text-gray-200"
color="gray"
size={18}
title={getShortcutDescription('open-new-directory-modal') || 'New Directory'}
/>
</YStack>
</div>
{/* New Note and New Directory actions moved into Files sidebar header */}

<div className="grow border-yellow-300" />
<div className="flex h-8 w-full cursor-pointer items-center justify-center border-none bg-transparent">
Expand Down