mirror of
https://github.com/lordmathis/lemma.git
synced 2025-11-05 23:44:22 +00:00
Update layout
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import React, { useState, useEffect, useCallback } from 'react';
|
import React, { useState, useEffect, useCallback } from 'react';
|
||||||
import { GeistProvider, CssBaseline, useToasts } from '@geist-ui/core';
|
import { GeistProvider, CssBaseline, useToasts, Page, Text, User, Button, Spacer, Breadcrumbs } from '@geist-ui/core';
|
||||||
|
import { Settings } from '@geist-ui/icons';
|
||||||
import Editor from './components/Editor';
|
import Editor from './components/Editor';
|
||||||
import FileTree from './components/FileTree';
|
import FileTree from './components/FileTree';
|
||||||
import { fetchFileList, fetchFileContent, saveFileContent } from './services/api';
|
import { fetchFileList, fetchFileContent, saveFileContent } from './services/api';
|
||||||
@@ -52,31 +53,52 @@ function App() {
|
|||||||
}
|
}
|
||||||
}, [setToast]);
|
}, [setToast]);
|
||||||
|
|
||||||
|
const renderBreadcrumbs = () => {
|
||||||
|
if (!selectedFile) return null;
|
||||||
|
const pathParts = selectedFile.split('/');
|
||||||
|
return (
|
||||||
|
<Breadcrumbs>
|
||||||
|
{pathParts.map((part, index) => (
|
||||||
|
<Breadcrumbs.Item key={index}>{part}</Breadcrumbs.Item>
|
||||||
|
))}
|
||||||
|
</Breadcrumbs>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<GeistProvider>
|
<GeistProvider>
|
||||||
<CssBaseline />
|
<CssBaseline />
|
||||||
<div className="App">
|
<Page>
|
||||||
<div className="sidebar">
|
<Page.Header className="custom-navbar">
|
||||||
{error ? (
|
<Text b>NovaMD</Text>
|
||||||
<div className="error">{error}</div>
|
<Spacer w={1} />
|
||||||
) : (
|
<User src="https://via.placeholder.com/40" name="User" />
|
||||||
<FileTree
|
<Spacer w={0.5} />
|
||||||
files={files}
|
<Button auto icon={<Settings />} />
|
||||||
onFileSelect={handleFileSelect}
|
</Page.Header>
|
||||||
selectedFile={selectedFile}
|
<Page.Content className="main-container">
|
||||||
|
<div className="sidebar">
|
||||||
|
{error ? (
|
||||||
|
<div className="error">{error}</div>
|
||||||
|
) : (
|
||||||
|
<FileTree
|
||||||
|
files={files}
|
||||||
|
onFileSelect={handleFileSelect}
|
||||||
|
selectedFile={selectedFile}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="main-content">
|
||||||
|
{renderBreadcrumbs()}
|
||||||
|
<Editor
|
||||||
|
content={content}
|
||||||
|
onChange={setContent}
|
||||||
|
onSave={handleSave}
|
||||||
|
filePath={selectedFile}
|
||||||
/>
|
/>
|
||||||
)}
|
</div>
|
||||||
</div>
|
</Page.Content>
|
||||||
<div className="main-content">
|
</Page>
|
||||||
<h1>NovaMD</h1>
|
|
||||||
<Editor
|
|
||||||
content={content}
|
|
||||||
onChange={setContent}
|
|
||||||
onSave={handleSave}
|
|
||||||
filePath={selectedFile}
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</GeistProvider>
|
</GeistProvider>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,26 +2,38 @@
|
|||||||
$sidebar-width: 250px;
|
$sidebar-width: 250px;
|
||||||
$border-color: #eaeaea;
|
$border-color: #eaeaea;
|
||||||
$padding: 20px;
|
$padding: 20px;
|
||||||
|
$navbar-height: 64px; // Adjust this value based on your preference
|
||||||
|
|
||||||
.App {
|
.custom-navbar {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100vh;
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 0 $padding;
|
||||||
|
height: $navbar-height;
|
||||||
|
border-bottom: 1px solid $border-color;
|
||||||
|
}
|
||||||
|
|
||||||
.sidebar {
|
.main-container {
|
||||||
width: $sidebar-width;
|
display: flex;
|
||||||
padding: $padding;
|
height: calc(100vh - #{$navbar-height});
|
||||||
border-right: 1px solid $border-color;
|
padding: 0 !important; // Override Geist UI's default padding
|
||||||
overflow-y: auto;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.main-content {
|
.sidebar {
|
||||||
flex-grow: 1;
|
width: $sidebar-width;
|
||||||
padding: $padding;
|
padding: $padding;
|
||||||
overflow-y: auto;
|
border-right: 1px solid $border-color;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
h1 {
|
.main-content {
|
||||||
margin-top: 0;
|
flex-grow: 1;
|
||||||
}
|
padding: $padding;
|
||||||
|
overflow-y: auto;
|
||||||
|
|
||||||
|
// Add styles for breadcrumbs
|
||||||
|
.breadcrumbs {
|
||||||
|
margin-bottom: $padding;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user