Updated to remove unused items

This commit is contained in:
James Ketr 2025-05-28 09:51:49 -07:00
parent 5720c51f15
commit ae2557d524
22 changed files with 61 additions and 143 deletions

View File

@ -8,7 +8,6 @@ import { SeverityType } from './components/Snack';
import { Query } from './types/types'; import { Query } from './types/types';
import { ConversationHandle } from './components/Conversation'; import { ConversationHandle } from './components/Conversation';
import { UserProvider } from './components/UserContext'; import { UserProvider } from './components/UserContext';
import { BetaPage } from './pages/BetaPage';
import { UserRoute } from './routes/UserRoute'; import { UserRoute } from './routes/UserRoute';
import { BackstoryLayout } from './components/BackstoryLayout'; import { BackstoryLayout } from './components/BackstoryLayout';
@ -48,7 +47,6 @@ const BackstoryApp = () => {
navigate('/chat'); navigate('/chat');
}; };
const [page, setPage] = useState<string>(""); const [page, setPage] = useState<string>("");
const [storeInCookie, setStoreInCookie] = useState(true);
// Extract session ID from URL query parameter or cookie // Extract session ID from URL query parameter or cookie
const urlParams = new URLSearchParams(window.location.search); const urlParams = new URLSearchParams(window.location.search);
@ -107,23 +105,15 @@ const BackstoryApp = () => {
setSnack(`${action} session ${newSessionId}`); setSnack(`${action} session ${newSessionId}`);
// Store in cookie if user opts in // Store in cookie if user opts in
if (storeInCookie) {
setCookie('session_id', newSessionId); setCookie('session_id', newSessionId);
}
// Update URL without reloading
if (!storeInCookie) {
// Update only the 'id' query parameter, preserving the current path
navigate(`${location.pathname}?id=${newSessionId}`, { replace: true });
} else {
// Clear all query parameters, preserve the current path // Clear all query parameters, preserve the current path
navigate(location.pathname, { replace: true }); navigate(location.pathname, { replace: true });
}
} catch (err) { } catch (err) {
setSnack("" + err); setSnack("" + err);
} }
}; };
fetchSession(); fetchSession();
}, [cookieSessionId, setSnack, storeInCookie, urlSessionId]); }, [cookieSessionId, setSnack, urlSessionId, location.pathname, navigate]);
useEffect(() => { useEffect(() => {
const currentRoute = location.pathname.split("/")[1] ? `/${location.pathname.split("/")[1]}` : "/"; const currentRoute = location.pathname.split("/")[1] ? `/${location.pathname.split("/")[1]}` : "/";

View File

@ -1,38 +1,36 @@
import React, { Ref, Fragment, ReactNode } from "react"; import React, { Ref, ReactNode } from "react";
import { Route } from "react-router-dom"; import { Route } from "react-router-dom";
import { useUser } from "./UserContext"; import { Typography } from '@mui/material';
import { Box, Typography, Container, Paper } from '@mui/material';
import { BackstoryPageProps } from './BackstoryTab'; import { BackstoryPageProps } from './BackstoryTab';
import { ConversationHandle } from './Conversation'; import { ConversationHandle } from './Conversation';
import { User } from '../types/types'; import { User } from 'types/types';
import { ChatPage } from '../pages/ChatPage'; import { ChatPage } from 'pages/ChatPage';
import { ResumeBuilderPage } from '../pages/ResumeBuilderPage'; import { ResumeBuilderPage } from 'pages/ResumeBuilderPage';
import { DocsPage } from '../pages/DocsPage'; import { DocsPage } from 'pages/DocsPage';
import { CreateProfilePage } from '../pages/CreateProfilePage'; import { CreateProfilePage } from 'pages/CreateProfilePage';
import { VectorVisualizerPage } from '../pages/VectorVisualizerPage'; import { VectorVisualizerPage } from 'pages/VectorVisualizerPage';
import { HomePage } from '../pages/HomePage'; import { HomePage } from 'pages/HomePage';
import { BetaPage } from '../pages/BetaPage'; import { BetaPage } from 'pages/BetaPage';
import { CandidateListingPage } from '../pages/CandidateListingPage'; import { CandidateListingPage } from 'pages/CandidateListingPage';
import { JobAnalysisPage } from '../pages/JobAnalysisPage'; import { JobAnalysisPage } from 'pages/JobAnalysisPage';
import { DemoComponent } from "pages/DemoComponent";
import { GenerateCandidate } from "pages/GenerateCandidate"; import { GenerateCandidate } from "pages/GenerateCandidate";
import { ControlsPage } from '../pages/ControlsPage'; import { ControlsPage } from 'pages/ControlsPage';
const DashboardPage = () => (<BetaPage><Typography variant="h4">Dashboard</Typography></BetaPage>);
const ProfilePage = () => (<BetaPage><Typography variant="h4">Profile</Typography></BetaPage>); const ProfilePage = () => (<BetaPage><Typography variant="h4">Profile</Typography></BetaPage>);
const BackstoryPage = () => (<BetaPage><Typography variant="h4">Backstory</Typography></BetaPage>); const BackstoryPage = () => (<BetaPage><Typography variant="h4">Backstory</Typography></BetaPage>);
const ResumesPage = () => (<BetaPage><Typography variant="h4">Resumes</Typography></BetaPage>); const ResumesPage = () => (<BetaPage><Typography variant="h4">Resumes</Typography></BetaPage>);
const QASetupPage = () => (<BetaPage><Typography variant="h4">Q&A Setup</Typography></BetaPage>); const QASetupPage = () => (<BetaPage><Typography variant="h4">Q&A Setup</Typography></BetaPage>);
const AnalyticsPage = () => (<BetaPage><Typography variant="h4">Analytics</Typography></BetaPage>);
const SettingsPage = () => (<BetaPage><Typography variant="h4">Settings</Typography></BetaPage>);
const SearchPage = () => (<BetaPage><Typography variant="h4">Search</Typography></BetaPage>); const SearchPage = () => (<BetaPage><Typography variant="h4">Search</Typography></BetaPage>);
const SavedPage = () => (<BetaPage><Typography variant="h4">Saved</Typography></BetaPage>); const SavedPage = () => (<BetaPage><Typography variant="h4">Saved</Typography></BetaPage>);
const JobsPage = () => (<BetaPage><Typography variant="h4">Jobs</Typography></BetaPage>); const JobsPage = () => (<BetaPage><Typography variant="h4">Jobs</Typography></BetaPage>);
const CompanyPage = () => (<BetaPage><Typography variant="h4">Company</Typography></BetaPage>); const CompanyPage = () => (<BetaPage><Typography variant="h4">Company</Typography></BetaPage>);
const LogoutPage = () => (<BetaPage><Typography variant="h4">Logout page...</Typography></BetaPage>); const LogoutPage = () => (<BetaPage><Typography variant="h4">Logout page...</Typography></BetaPage>);
const LoginPage = () => (<BetaPage><Typography variant="h4">Login page...</Typography></BetaPage>); const LoginPage = () => (<BetaPage><Typography variant="h4">Login page...</Typography></BetaPage>);
// const DashboardPage = () => (<BetaPage><Typography variant="h4">Dashboard</Typography></BetaPage>);
// const AnalyticsPage = () => (<BetaPage><Typography variant="h4">Analytics</Typography></BetaPage>);
// const SettingsPage = () => (<BetaPage><Typography variant="h4">Settings</Typography></BetaPage>);
interface BackstoryDynamicRoutesProps extends BackstoryPageProps { interface BackstoryDynamicRoutesProps extends BackstoryPageProps {
chatRef: Ref<ConversationHandle> chatRef: Ref<ConversationHandle>

View File

@ -1,14 +1,12 @@
import React from 'react'; import React from 'react';
import { Box, Link, Typography, Avatar, Grid, Chip, SxProps, CardHeader } from '@mui/material'; import { Box, Link, Typography, Avatar, Grid, SxProps } from '@mui/material';
import { import {
Card, Card,
CardContent, CardContent,
CardActionArea,
Divider, Divider,
useTheme, useTheme,
} from '@mui/material'; } from '@mui/material';
import { useMediaQuery } from '@mui/material'; import { useMediaQuery } from '@mui/material';
import { useNavigate } from 'react-router-dom';
import { useUser } from "./UserContext"; import { useUser } from "./UserContext";
import { Candidate } from '../types/types'; import { Candidate } from '../types/types';
import { CopyBubble } from "./CopyBubble"; import { CopyBubble } from "./CopyBubble";
@ -27,16 +25,9 @@ const CandidateInfo: React.FC<CandidateInfoProps> = (props: CandidateInfoProps)
action = '', action = '',
sessionId, sessionId,
} = props; } = props;
const navigate = useNavigate();
const theme = useTheme(); const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down('md')); const isMobile = useMediaQuery(theme.breakpoints.down('md'));
// Format RAG content size (e.g., if it's in bytes, convert to KB/MB)
const formatRagSize = (size: number): string => {
if (size < 1000) return `${size} RAG elements`;
if (size < 1000000) return `${(size / 1000).toFixed(1)}K RAG elements`;
return `${(size / 1000000).toFixed(1)}M RAG elements`;
};
const candidate: Candidate | null = props.user || (user as Candidate); const candidate: Candidate | null = props.user || (user as Candidate);
if (!candidate) { if (!candidate) {
@ -111,15 +102,6 @@ const CandidateInfo: React.FC<CandidateInfoProps> = (props: CandidateInfoProps)
tooltip="Copy link" content={`${window.location.origin}/u/{candidate.username}`} /> tooltip="Copy link" content={`${window.location.origin}/u/{candidate.username}`} />
</Box> </Box>
</Box> </Box>
{/* {candidate.rag_content_size !== undefined && candidate.rag_content_size > 0 &&
<Chip
onClick={(event: React.MouseEvent<HTMLDivElement>) => { navigate('/knowledge-explorer'); event.stopPropagation() }}
label={formatRagSize(candidate.rag_content_size)}
color="primary"
size="small"
sx={{ ml: 2 }}
/>} */}
</Box> </Box>
<Typography variant="body1" color="text.secondary"> <Typography variant="body1" color="text.secondary">

View File

@ -1,5 +1,4 @@
import React, { useState, useImperativeHandle, forwardRef, useEffect, useRef, useCallback } from 'react'; import React, { useState, useImperativeHandle, forwardRef, useEffect, useRef, useCallback } from 'react';
import Typography from '@mui/material/Typography';
import Tooltip from '@mui/material/Tooltip'; import Tooltip from '@mui/material/Tooltip';
import IconButton from '@mui/material/IconButton'; import IconButton from '@mui/material/IconButton';
import Button from '@mui/material/Button'; import Button from '@mui/material/Button';
@ -51,9 +50,7 @@ const Conversation = forwardRef<ConversationHandle, ConversationProps>((props: C
const { const {
sessionId, sessionId,
actionLabel, actionLabel,
className,
defaultPrompts, defaultPrompts,
defaultQuery,
hideDefaultPrompts, hideDefaultPrompts,
hidePreamble, hidePreamble,
messageFilter, messageFilter,
@ -69,7 +66,6 @@ const Conversation = forwardRef<ConversationHandle, ConversationProps>((props: C
type, type,
} = props; } = props;
const { user } = useUser() const { user } = useUser()
const [contextUsedPercentage, setContextUsedPercentage] = useState<number>(0);
const [processing, setProcessing] = useState<boolean>(false); const [processing, setProcessing] = useState<boolean>(false);
const [countdown, setCountdown] = useState<number>(0); const [countdown, setCountdown] = useState<number>(0);
const [conversation, setConversation] = useState<MessageList>([]); const [conversation, setConversation] = useState<MessageList>([]);
@ -77,7 +73,6 @@ const Conversation = forwardRef<ConversationHandle, ConversationProps>((props: C
const [processingMessage, setProcessingMessage] = useState<BackstoryMessage | undefined>(undefined); const [processingMessage, setProcessingMessage] = useState<BackstoryMessage | undefined>(undefined);
const [streamingMessage, setStreamingMessage] = useState<BackstoryMessage | undefined>(undefined); const [streamingMessage, setStreamingMessage] = useState<BackstoryMessage | undefined>(undefined);
const timerRef = useRef<any>(null); const timerRef = useRef<any>(null);
const [contextWarningShown, setContextWarningShown] = useState<boolean>(false);
const [noInteractions, setNoInteractions] = useState<boolean>(true); const [noInteractions, setNoInteractions] = useState<boolean>(true);
const conversationRef = useRef<MessageList>([]); const conversationRef = useRef<MessageList>([]);
const viewableElementRef = useRef<HTMLDivElement>(null); const viewableElementRef = useRef<HTMLDivElement>(null);

View File

@ -1,25 +1,10 @@
import React, { useEffect, useState, useRef, useCallback } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import Avatar from '@mui/material/Avatar';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import Tooltip from '@mui/material/Tooltip';
import Button from '@mui/material/Button';
import Paper from '@mui/material/Paper';
import IconButton from '@mui/material/IconButton';
import CancelIcon from '@mui/icons-material/Cancel';
import SendIcon from '@mui/icons-material/Send';
import PropagateLoader from 'react-spinners/PropagateLoader'; import PropagateLoader from 'react-spinners/PropagateLoader';
import { CandidateInfo } from './CandidateInfo';
import { Query } from '../types/types'
import { Quote } from 'components/Quote'; import { Quote } from 'components/Quote';
import { streamQueryResponse, StreamQueryController } from './streamQueryResponse'; import { streamQueryResponse, StreamQueryController } from './streamQueryResponse';
import { connectionBase } from 'Global'; import { connectionBase } from 'Global';
import { User } from '../types/types';
import { BackstoryElementProps } from 'components/BackstoryTab'; import { BackstoryElementProps } from 'components/BackstoryTab';
import { BackstoryTextField, BackstoryTextFieldRef } from 'components/BackstoryTextField';
import { jsonrepair } from 'jsonrepair';
import { StyledMarkdown } from 'components/StyledMarkdown';
import { Scrollable } from './Scrollable';
import { Pulse } from 'components/Pulse';
import { useUser } from './UserContext'; import { useUser } from './UserContext';
interface GenerateImageProps extends BackstoryElementProps { interface GenerateImageProps extends BackstoryElementProps {
@ -31,7 +16,6 @@ const GenerateImage = (props: GenerateImageProps) => {
const {sessionId, setSnack, prompt} = props; const {sessionId, setSnack, prompt} = props;
const [processing, setProcessing] = useState<boolean>(false); const [processing, setProcessing] = useState<boolean>(false);
const [status, setStatus] = useState<string>(''); const [status, setStatus] = useState<string>('');
const [timestamp, setTimestamp] = useState<number>(0);
const [image, setImage] = useState<string>(''); const [image, setImage] = useState<string>('');
// Only keep refs that are truly necessary // Only keep refs that are truly necessary
@ -90,11 +74,6 @@ const GenerateImage = (props: GenerateImageProps) => {
if (msg.status !== "heartbeat") { if (msg.status !== "heartbeat") {
console.log(data); console.log(data);
} }
if (data.timestamp) {
setTimestamp(data.timestamp);
} else {
setTimestamp(Date.now())
}
if (data.message) { if (data.message) {
setStatus(data.message); setStatus(data.message);
} }

View File

@ -29,13 +29,12 @@ import {
Settings, Settings,
ExpandMore, ExpandMore,
} from '@mui/icons-material'; } from '@mui/icons-material';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
import { NavigationLinkType } from './BackstoryLayout'; import { NavigationLinkType } from './BackstoryLayout';
import { Beta } from './Beta'; import { Beta } from './Beta';
import './Header.css'; import './Header.css';
import { useUser } from './UserContext'; import { useUser } from './UserContext';
import { Candidate, Employer } from '../types/types'; // import { Candidate, Employer } from '../types/types';
import { SetSnackType } from './Snack'; import { SetSnackType } from './Snack';
import { CopyBubble } from './CopyBubble'; import { CopyBubble } from './CopyBubble';
@ -97,15 +96,14 @@ interface HeaderProps {
const Header: React.FC<HeaderProps> = (props: HeaderProps) => { const Header: React.FC<HeaderProps> = (props: HeaderProps) => {
const { user } = useUser(); const { user } = useUser();
const candidate: Candidate | null = (user && user.userType === "UserType.CANDIDATE") ? user as Candidate : null; // const candidate: Candidate | null = (user && user.userType === "UserType.CANDIDATE") ? user as Candidate : null;
const employer: Employer | null = (user && user.userType === "UserType.EMPLOYER") ? user as Employer : null; // const employer: Employer | null = (user && user.userType === "UserType.EMPLOYER") ? user as Employer : null;
const { const {
transparent = false, transparent = false,
className, className,
navigate, navigate,
navigationLinks, navigationLinks,
showLogin, showLogin,
currentPath,
sessionId, sessionId,
onLogout, onLogout,
setSnack, setSnack,

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { MuiMarkdown } from 'mui-markdown'; import { MuiMarkdown } from 'mui-markdown';
import { SxProps, useTheme } from '@mui/material/styles'; import { useTheme } from '@mui/material/styles';
import { Link } from '@mui/material'; import { Link } from '@mui/material';
import { ChatQuery } from './ChatQuery'; import { ChatQuery } from './ChatQuery';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';

View File

@ -1,15 +1,8 @@
import React, { createContext, useContext, useEffect, useState } from "react"; import React, { createContext, useContext, useEffect, useState } from "react";
import { Tunables } from '../types/types';
import { SetSnackType } from './Snack'; import { SetSnackType } from './Snack';
import { connectionBase } from '../Global'; import { connectionBase } from '../Global';
import { User } from '../types/types'; import { User } from '../types/types';
// Define the UserInfo interface for type safety
interface UserQuestion {
question: string;
tunables?: Tunables;
};
type UserContextType = { type UserContextType = {
user: User | null; user: User | null;
setUser: (user: User | null) => void; setUser: (user: User | null) => void;
@ -60,7 +53,7 @@ const UserProvider: React.FC<UserProviderProps> = (props: UserProviderProps) =>
}; };
fetchUserFromSession(); fetchUserFromSession();
}, [sessionId, user, setUser]); }, [sessionId, user, setUser, setSnack]);
if (sessionId === undefined) { if (sessionId === undefined) {
return <></>; return <></>;

View File

@ -20,8 +20,7 @@ import { Scrollable } from './Scrollable';
import { connectionBase } from '../Global'; import { connectionBase } from '../Global';
import './VectorVisualizer.css'; import './VectorVisualizer.css';
import { BackstoryPageProps } from '../NewApp/Components/BackstoryTab'; import { BackstoryPageProps } from './BackstoryTab';
import { relative } from 'path';
interface VectorVisualizerProps extends BackstoryPageProps { interface VectorVisualizerProps extends BackstoryPageProps {
inline?: boolean; inline?: boolean;

View File

@ -1,8 +1,4 @@
import React from 'react'; import React from 'react';
import ReactDOM from 'react-dom';
import { createTheme, ThemeProvider } from '@mui/material/styles';
import CssBaseline from '@mui/material/CssBaseline';
import { BrowserRouter } from 'react-router-dom';
import { Box, Typography, Paper, Container } from '@mui/material'; import { Box, Typography, Paper, Container } from '@mui/material';
// Import the backstoryTheme // Import the backstoryTheme

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { backstoryTheme } from '../../BackstoryTheme'; import { backstoryTheme } from '../BackstoryTheme';
import { Box, Typography, Paper, Container } from '@mui/material'; import { Box, Paper, Container } from '@mui/material';
// This component provides a visual demonstration of the theme colors // This component provides a visual demonstration of the theme colors
const BackstoryThemeVisualizerPage = () => { const BackstoryThemeVisualizerPage = () => {

View File

@ -1,6 +1,6 @@
import React from 'react'; import React from 'react';
import { createTheme, ThemeProvider } from '@mui/material/styles'; import { ThemeProvider } from '@mui/material/styles';
import { Box, Container, Paper, Typography, Grid, Divider, CssBaseline } from '@mui/material'; import { Box, Container, Paper, Typography, Grid, CssBaseline } from '@mui/material';
import { backstoryTheme } from 'BackstoryTheme'; import { backstoryTheme } from 'BackstoryTheme';
const BackstoryUIOverviewPage: React.FC = () => { const BackstoryUIOverviewPage: React.FC = () => {

View File

@ -1,7 +1,7 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { import {
AppBar, Avatar, Box, Button, Chip, Container, Divider, Drawer, AppBar, Box, Button, Chip, Drawer,
IconButton, InputBase, List, ListItem, ListItemButton, ListItemIcon, IconButton, List, ListItem, ListItemButton, ListItemIcon,
ListItemText, Paper, Tab, Tabs, TextField, Typography, ListItemText, Paper, Tab, Tabs, TextField, Typography,
useMediaQuery, useTheme useMediaQuery, useTheme
} from '@mui/material'; } from '@mui/material';
@ -9,7 +9,7 @@ import {
Menu as MenuIcon, Search as SearchIcon, Description as FileTextIcon, Menu as MenuIcon, Search as SearchIcon, Description as FileTextIcon,
Person as UserIcon, Settings as SettingsIcon, Add as PlusIcon, Person as UserIcon, Settings as SettingsIcon, Add as PlusIcon,
Edit as EditIcon, Visibility as EyeIcon, Save as SaveIcon, Edit as EditIcon, Visibility as EyeIcon, Save as SaveIcon,
Delete as TrashIcon, AccessTime as ClockIcon, ChevronRight as ChevronRightIcon Delete as TrashIcon, AccessTime as ClockIcon
} from '@mui/icons-material'; } from '@mui/icons-material';
interface Resume { interface Resume {

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect } from 'react'; import React, { useState } from 'react';
import { import {
Box, Box,
Typography, Typography,
@ -11,7 +11,6 @@ import {
TableContainer, TableContainer,
TableHead, TableHead,
TableRow, TableRow,
Avatar,
Chip, Chip,
Button, Button,
Dialog, Dialog,

View File

@ -4,7 +4,7 @@ import { ThemeProvider } from '@mui/material/styles';
import { backstoryTheme } from './BackstoryTheme'; import { backstoryTheme } from './BackstoryTheme';
import { BrowserRouter as Router } from "react-router-dom"; import { BrowserRouter as Router } from "react-router-dom";
import { BackstoryApp } from './BackstoryApp'; import { BackstoryApp } from './BackstoryApp';
import { BackstoryTestApp } from 'TestApp'; // import { BackstoryTestApp } from 'TestApp';
import './index.css'; import './index.css';
@ -16,8 +16,8 @@ root.render(
<React.StrictMode> <React.StrictMode>
<ThemeProvider theme={backstoryTheme}> <ThemeProvider theme={backstoryTheme}>
<Router> <Router>
{/* <BackstoryApp /> */} <BackstoryApp />
<BackstoryTestApp /> {/* <BackstoryTestApp /> */}
</Router> </Router>
</ThemeProvider> </ThemeProvider>
</React.StrictMode> </React.StrictMode>

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Route, Routes, useLocation, useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { import {
Box, Box,
Container, Container,
@ -7,7 +7,6 @@ import {
Paper, Paper,
Grid, Grid,
Button, Button,
useMediaQuery,
alpha, alpha,
GlobalStyles GlobalStyles
} from '@mui/material'; } from '@mui/material';
@ -34,7 +33,6 @@ const BetaPage: React.FC<BetaPageProps> = ({
onReturn, onReturn,
}) => { }) => {
const theme = useTheme(); const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down('md'));
const [showSparkle, setShowSparkle] = useState<boolean>(false); const [showSparkle, setShowSparkle] = useState<boolean>(false);
const navigate = useNavigate(); const navigate = useNavigate();

View File

@ -1,5 +1,4 @@
import React, { forwardRef, useEffect, useState } from 'react'; import React, { forwardRef, useEffect, useState } from 'react';
import { useNavigate } from "react-router-dom";
import useMediaQuery from '@mui/material/useMediaQuery'; import useMediaQuery from '@mui/material/useMediaQuery';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { useTheme } from '@mui/material/styles'; import { useTheme } from '@mui/material/styles';
@ -8,16 +7,11 @@ import MuiMarkdown from 'mui-markdown';
import { BackstoryPageProps } from '../components/BackstoryTab'; import { BackstoryPageProps } from '../components/BackstoryTab';
import { Conversation, ConversationHandle } from '../components/Conversation'; import { Conversation, ConversationHandle } from '../components/Conversation';
import { ChatQuery } from '../components/ChatQuery'; import { ChatQuery } from '../components/ChatQuery';
import { MessageList } from '../components/Message';
import { CandidateInfo } from 'components/CandidateInfo'; import { CandidateInfo } from 'components/CandidateInfo';
import { connectionBase } from '../Global';
import { LoadingComponent } from 'components/LoadingComponent';
import { useUser } from "../components/UserContext"; import { useUser } from "../components/UserContext";
import { Candidate, Tunables } from "../types/types"; import { Candidate } from "../types/types";
import { Navigate } from 'react-router-dom';
const ChatPage = forwardRef<ConversationHandle, BackstoryPageProps>((props: BackstoryPageProps, ref) => { const ChatPage = forwardRef<ConversationHandle, BackstoryPageProps>((props: BackstoryPageProps, ref) => {
const navigate = useNavigate();
const { sessionId, setSnack, submitQuery } = props; const { sessionId, setSnack, submitQuery } = props;
const theme = useTheme(); const theme = useTheme();
const isMobile = useMediaQuery(theme.breakpoints.down('md')); const isMobile = useMediaQuery(theme.breakpoints.down('md'));

View File

@ -1,5 +1,4 @@
import React, { useState } from 'react'; import React, { useState } from 'react';
import { Route, Routes, useLocation, useNavigate } from 'react-router-dom';
import { import {
Box, Box,
Button, Button,
@ -21,7 +20,7 @@ import {
import { styled } from '@mui/material/styles'; import { styled } from '@mui/material/styles';
import { CloudUpload, PhotoCamera } from '@mui/icons-material'; import { CloudUpload, PhotoCamera } from '@mui/icons-material';
import { useTheme } from '@mui/material/styles'; import { useTheme } from '@mui/material/styles';
import { Beta } from '../components/Beta'; // import { Beta } from '../components/Beta';
// Interfaces // Interfaces
interface ProfileFormData { interface ProfileFormData {
@ -49,7 +48,6 @@ const VisuallyHiddenInput = styled('input')({
const CreateProfilePage: React.FC = () => { const CreateProfilePage: React.FC = () => {
const theme = useTheme(); const theme = useTheme();
const navigate = useNavigate();
const isMobile = useMediaQuery(theme.breakpoints.down('sm')); const isMobile = useMediaQuery(theme.breakpoints.down('sm'));
// State management // State management

View File

@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { useNavigate, useLocation, useParams, Navigate } from 'react-router-dom'; import { useNavigate, useLocation, useParams } from 'react-router-dom';
import { import {
Box, Box,
Drawer, Drawer,
@ -34,11 +34,11 @@ import ViewQuiltIcon from '@mui/icons-material/ViewQuilt';
import { Document } from '../components/Document'; import { Document } from '../components/Document';
import { BackstoryPageProps } from '../components/BackstoryTab'; import { BackstoryPageProps } from '../components/BackstoryTab';
import { BackstoryUIOverviewPage } from './documents/BackstoryUIOverviewPage'; import { BackstoryUIOverviewPage } from 'documents/BackstoryUIOverviewPage';
import { BackstoryAppAnalysisPage } from './documents/BackstoryAppAnalysisPage'; import { BackstoryAppAnalysisPage } from 'documents/BackstoryAppAnalysisPage';
import { BackstoryThemeVisualizerPage } from './documents/BackstoryThemeVisualizerPage'; import { BackstoryThemeVisualizerPage } from 'documents/BackstoryThemeVisualizerPage';
import { UserManagement } from './documents/UserManagement'; import { UserManagement } from 'documents/UserManagement';
import { MockupPage } from './documents/MockupPage'; import { MockupPage } from 'documents/MockupPage';
// Sidebar navigation component using MUI components // Sidebar navigation component using MUI components
const Sidebar: React.FC<{ const Sidebar: React.FC<{
@ -282,7 +282,7 @@ const DocsPage = (props: BackstoryPageProps) => {
<Grid container spacing={2}> <Grid container spacing={2}>
{documents.map((doc, index) => { {documents.map((doc, index) => {
if (doc.route === null) return; if (doc.route === null) return (<></>);
return (<Grid size={{ xs: 12, sm: 6, md: 4 }} key={index}> return (<Grid size={{ xs: 12, sm: 6, md: 4 }} key={index}>
<Card> <Card>
<CardActionArea onClick={() => doc.route ? onDocumentExpand(doc.route, true) : navigate('/')}> <CardActionArea onClick={() => doc.route ? onDocumentExpand(doc.route, true) : navigate('/')}>

View File

@ -1,5 +1,5 @@
import React from 'react'; import React from 'react';
import { Navigate, Route, Routes, useLocation, useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { import {
Box, Box,
Button, Button,
@ -133,8 +133,6 @@ const FeatureCard = ({
}; };
const HomePage = () => { const HomePage = () => {
const navigate = useNavigate();
return (<Box sx={{display: "flex", flexDirection: "column"}}> return (<Box sx={{display: "flex", flexDirection: "column"}}>
{/* Hero Section */} {/* Hero Section */}
<HeroSection> <HeroSection>

View File

@ -1,5 +1,5 @@
import React, { useEffect } from "react"; import React, { useEffect } from "react";
import { Navigate, useParams, useNavigate, useLocation } from "react-router-dom"; import { useParams, useNavigate } from "react-router-dom";
import { useUser } from "../components/UserContext"; import { useUser } from "../components/UserContext";
import { User } from "../types/types"; import { User } from "../types/types";
import { Box } from "@mui/material"; import { Box } from "@mui/material";
@ -17,7 +17,6 @@ const UserRoute: React.FC<UserRouteProps> = (props: UserRouteProps) => {
const { username } = useParams<{ username: string }>(); const { username } = useParams<{ username: string }>();
const { user, setUser } = useUser(); const { user, setUser } = useUser();
const navigate = useNavigate(); const navigate = useNavigate();
const location = useLocation();
useEffect(() => { useEffect(() => {
if (!sessionId) { if (!sessionId) {

View File

@ -362,7 +362,7 @@ export function debugConversion<T>(obj: T, label: string = 'Object'): T {
return obj; return obj;
} }
export default { const exports = {
toSnakeCase, toSnakeCase,
toCamelCase, toCamelCase,
formatApiRequest, formatApiRequest,
@ -376,4 +376,6 @@ export default {
handleApiResponse, handleApiResponse,
handlePaginatedApiResponse, handlePaginatedApiResponse,
debugConversion debugConversion
}; }
export default exports;