θΏ™ζ˜―indexlocζδΎ›ηš„ζœεŠ‘οΌŒδΈθ¦θΎ“ε…₯任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
4eb3ded
Refactor workspace sidebar component styles (#2380)
shatfield4 Sep 27, 2024
83ab8a0
New sidebar colors (#2381)
shatfield4 Sep 28, 2024
3adc5e4
Main container color update (#2382)
shatfield4 Sep 28, 2024
cbc4e80
Merge branch 'master' into dark-mode
shatfield4 Sep 30, 2024
d0546a4
Dark mode setup themes (#2411)
shatfield4 Oct 3, 2024
eee99d3
Merge branch 'master' into dark-mode
shatfield4 Oct 3, 2024
4df4742
Settings sidebar UI updates (#2416)
shatfield4 Oct 3, 2024
88f5bb5
fix sidebar resizing/truncate issue on hover
shatfield4 Oct 3, 2024
29eff8a
Dark mode chat window (#2443)
shatfield4 Oct 8, 2024
a2098a7
Dark mode welcome page (#2444)
shatfield4 Oct 9, 2024
a302aab
Dark mode UI for admin and tools pages + mobile view improvements (#2…
shatfield4 Oct 11, 2024
841a837
Dark mode onboarding (#2461)
shatfield4 Oct 12, 2024
6b4ec84
update all modals + normalize styles (#2471)
shatfield4 Oct 15, 2024
ec3cc68
lint
shatfield4 Oct 15, 2024
8cd2d8a
Dark mode privacy & experimental pages (#2479)
shatfield4 Oct 15, 2024
7989861
Merge branch 'master' into dark-mode
shatfield4 Oct 15, 2024
66a81c2
Dark mode login screens (#2483)
shatfield4 Oct 15, 2024
625092b
Workspace preset commands modals dark mode (#2484)
shatfield4 Oct 15, 2024
3678365
merge with master
shatfield4 Oct 15, 2024
351a144
Merge branch 'master' into dark-mode
timothycarambat Oct 15, 2024
83b1949
Merge branch 'master' of github.com:Mintplex-Labs/anything-llm into d…
timothycarambat Oct 16, 2024
5d4d28c
Document pinning modal ui update (#2490)
shatfield4 Oct 16, 2024
5becc1d
Experimental agreement modal dark mode (#2491)
shatfield4 Oct 16, 2024
d8e0c40
Serp options dark mode (#2492)
shatfield4 Oct 16, 2024
212ea7e
field fixes
timothycarambat Oct 16, 2024
acc1baa
merge
timothycarambat Oct 16, 2024
ac5c15b
attempt light mode wip
timothycarambat Oct 16, 2024
d7eeecd
setting sidebar
timothycarambat Oct 17, 2024
aa2749c
Toasts and threads
timothycarambat Oct 17, 2024
32f1d1e
main page content and privacy page
timothycarambat Oct 17, 2024
247b554
force rewrite for light
timothycarambat Oct 17, 2024
5bab644
add border for light mode rightside content
timothycarambat Oct 17, 2024
8760ed8
more fixes
timothycarambat Oct 17, 2024
092ee15
wip
timothycarambat Oct 17, 2024
cad2fdd
wip
timothycarambat Oct 17, 2024
ef37b38
Merge branch 'master' into light-mode-1
shatfield4 Nov 6, 2024
9f55839
wip light mode implementation
shatfield4 Nov 7, 2024
ed42223
wip dark light mode file picker
shatfield4 Nov 12, 2024
8eaadff
document picker light mode ui
shatfield4 Nov 13, 2024
24d6d25
slight ui tweaks
shatfield4 Nov 13, 2024
09686d7
light mode fine tuning flow
shatfield4 Nov 13, 2024
167851f
light mode tweaks + qa fixes
shatfield4 Nov 14, 2024
390fabf
Merge branch 'master' into light-mode-1
shatfield4 Nov 14, 2024
2b1fe17
fix md rendering of light mode + tooltip fixes
shatfield4 Nov 14, 2024
36ceefc
lint
shatfield4 Nov 14, 2024
fdcc18e
qa bug fixes
shatfield4 Nov 14, 2024
0aade38
Merge branch 'master' into light-mode-1
timothycarambat Nov 18, 2024
d5dae33
Add developer hook for theme
timothycarambat Nov 18, 2024
da97c5e
qa light mode bug fixes
shatfield4 Nov 18, 2024
199f9c3
Linting and hotfixes for UI
timothycarambat Nov 18, 2024
a4e3cf2
Merge branch 'light-mode-1' of github.com:Mintplex-Labs/anything-llm …
timothycarambat Nov 18, 2024
c8ee604
Light mode to dev
timothycarambat Nov 18, 2024
ca429a2
accept invite light mode ui fix
shatfield4 Nov 18, 2024
af3c4f5
Merge branch 'light-mode-1' of github.com:Mintplex-Labs/anything-llm …
shatfield4 Nov 18, 2024
d987b3c
Fix onboarding inputs in dark mode
timothycarambat Nov 18, 2024
5d3f721
fix close icons
timothycarambat Nov 18, 2024
319f74a
patch z-index on tooltips
timothycarambat Nov 18, 2024
8d591f5
patch light mode citations
timothycarambat Nov 18, 2024
999dd30
Merge branch 'master' into light-mode-1
timothycarambat Nov 18, 2024
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
2 changes: 1 addition & 1 deletion .github/workflows/dev-build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ concurrency:

on:
push:
branches: ['2602-page-load-speed'] # put your current branch to create a build. Core team only.
branches: ['light-mode-1'] # put your current branch to create a build. Core team only.
paths-ignore:
- '**.md'
- 'cloud-deployments/*'
Expand Down
271 changes: 141 additions & 130 deletions frontend/src/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import i18n from "./i18n";
import { PfpProvider } from "./PfpContext";
import { LogoProvider } from "./LogoContext";
import { FullScreenLoader } from "./components/Preloader";
import { ThemeProvider } from "./ThemeContext";

const Main = lazy(() => import("@/pages/Main"));
const InvitePage = lazy(() => import("@/pages/Invite"));
Expand Down Expand Up @@ -70,139 +71,149 @@ const FineTuningWalkthrough = lazy(() => import("@/pages/FineTuning"));

export default function App() {
return (
<Suspense fallback={<FullScreenLoader />}>
<ContextWrapper>
<LogoProvider>
<PfpProvider>
<I18nextProvider i18n={i18n}>
<Routes>
<Route path="/" element={<PrivateRoute Component={Main} />} />
<Route path="/login" element={<Login />} />
<Route path="/sso/simple" element={<SimpleSSOPassthrough />} />
<ThemeProvider>
<Suspense fallback={<FullScreenLoader />}>
<ContextWrapper>
<LogoProvider>
<PfpProvider>
<I18nextProvider i18n={i18n}>
<Routes>
<Route path="/" element={<PrivateRoute Component={Main} />} />
<Route path="/login" element={<Login />} />
<Route
path="/sso/simple"
element={<SimpleSSOPassthrough />}
/>

<Route
path="/workspace/:slug/settings/:tab"
element={<ManagerRoute Component={WorkspaceSettings} />}
/>
<Route
path="/workspace/:slug"
element={<PrivateRoute Component={WorkspaceChat} />}
/>
<Route
path="/workspace/:slug/t/:threadSlug"
element={<PrivateRoute Component={WorkspaceChat} />}
/>
<Route path="/accept-invite/:code" element={<InvitePage />} />
<Route
path="/workspace/:slug/settings/:tab"
element={<ManagerRoute Component={WorkspaceSettings} />}
/>
<Route
path="/workspace/:slug"
element={<PrivateRoute Component={WorkspaceChat} />}
/>
<Route
path="/workspace/:slug/t/:threadSlug"
element={<PrivateRoute Component={WorkspaceChat} />}
/>
<Route path="/accept-invite/:code" element={<InvitePage />} />

{/* Admin */}
<Route
path="/settings/llm-preference"
element={<AdminRoute Component={GeneralLLMPreference} />}
/>
<Route
path="/settings/transcription-preference"
element={
<AdminRoute Component={GeneralTranscriptionPreference} />
}
/>
<Route
path="/settings/audio-preference"
element={<AdminRoute Component={GeneralAudioPreference} />}
/>
<Route
path="/settings/embedding-preference"
element={
<AdminRoute Component={GeneralEmbeddingPreference} />
}
/>
<Route
path="/settings/text-splitter-preference"
element={
<AdminRoute Component={EmbeddingTextSplitterPreference} />
}
/>
<Route
path="/settings/vector-database"
element={<AdminRoute Component={GeneralVectorDatabase} />}
/>
<Route
path="/settings/agents"
element={<AdminRoute Component={AdminAgents} />}
/>
<Route
path="/settings/event-logs"
element={<AdminRoute Component={AdminLogs} />}
/>
<Route
path="/settings/embed-config"
element={<AdminRoute Component={EmbedConfigSetup} />}
/>
<Route
path="/settings/embed-chats"
element={<AdminRoute Component={EmbedChats} />}
/>
{/* Manager */}
<Route
path="/settings/security"
element={<ManagerRoute Component={GeneralSecurity} />}
/>
<Route
path="/settings/privacy"
element={<AdminRoute Component={PrivacyAndData} />}
/>
<Route
path="/settings/appearance"
element={<ManagerRoute Component={GeneralAppearance} />}
/>
<Route
path="/settings/beta-features"
element={<AdminRoute Component={ExperimentalFeatures} />}
/>
<Route
path="/settings/api-keys"
element={<AdminRoute Component={GeneralApiKeys} />}
/>
<Route
path="/settings/browser-extension"
element={<ManagerRoute Component={GeneralBrowserExtension} />}
/>
<Route
path="/settings/workspace-chats"
element={<ManagerRoute Component={GeneralChats} />}
/>
<Route
path="/settings/invites"
element={<ManagerRoute Component={AdminInvites} />}
/>
<Route
path="/settings/users"
element={<ManagerRoute Component={AdminUsers} />}
/>
<Route
path="/settings/workspaces"
element={<ManagerRoute Component={AdminWorkspaces} />}
/>
{/* Onboarding Flow */}
<Route path="/onboarding" element={<OnboardingFlow />} />
<Route path="/onboarding/:step" element={<OnboardingFlow />} />
{/* Admin */}
<Route
path="/settings/llm-preference"
element={<AdminRoute Component={GeneralLLMPreference} />}
/>
<Route
path="/settings/transcription-preference"
element={
<AdminRoute Component={GeneralTranscriptionPreference} />
}
/>
<Route
path="/settings/audio-preference"
element={<AdminRoute Component={GeneralAudioPreference} />}
/>
<Route
path="/settings/embedding-preference"
element={
<AdminRoute Component={GeneralEmbeddingPreference} />
}
/>
<Route
path="/settings/text-splitter-preference"
element={
<AdminRoute Component={EmbeddingTextSplitterPreference} />
}
/>
<Route
path="/settings/vector-database"
element={<AdminRoute Component={GeneralVectorDatabase} />}
/>
<Route
path="/settings/agents"
element={<AdminRoute Component={AdminAgents} />}
/>
<Route
path="/settings/event-logs"
element={<AdminRoute Component={AdminLogs} />}
/>
<Route
path="/settings/embed-config"
element={<AdminRoute Component={EmbedConfigSetup} />}
/>
<Route
path="/settings/embed-chats"
element={<AdminRoute Component={EmbedChats} />}
/>
{/* Manager */}
<Route
path="/settings/security"
element={<ManagerRoute Component={GeneralSecurity} />}
/>
<Route
path="/settings/privacy"
element={<AdminRoute Component={PrivacyAndData} />}
/>
<Route
path="/settings/appearance"
element={<ManagerRoute Component={GeneralAppearance} />}
/>
<Route
path="/settings/beta-features"
element={<AdminRoute Component={ExperimentalFeatures} />}
/>
<Route
path="/settings/api-keys"
element={<AdminRoute Component={GeneralApiKeys} />}
/>
<Route
path="/settings/browser-extension"
element={
<ManagerRoute Component={GeneralBrowserExtension} />
}
/>
<Route
path="/settings/workspace-chats"
element={<ManagerRoute Component={GeneralChats} />}
/>
<Route
path="/settings/invites"
element={<ManagerRoute Component={AdminInvites} />}
/>
<Route
path="/settings/users"
element={<ManagerRoute Component={AdminUsers} />}
/>
<Route
path="/settings/workspaces"
element={<ManagerRoute Component={AdminWorkspaces} />}
/>
{/* Onboarding Flow */}
<Route path="/onboarding" element={<OnboardingFlow />} />
<Route
path="/onboarding/:step"
element={<OnboardingFlow />}
/>

{/* Experimental feature pages */}
{/* Live Document Sync feature */}
<Route
path="/settings/beta-features/live-document-sync/manage"
element={<AdminRoute Component={LiveDocumentSyncManage} />}
/>
{/* Experimental feature pages */}
{/* Live Document Sync feature */}
<Route
path="/settings/beta-features/live-document-sync/manage"
element={<AdminRoute Component={LiveDocumentSyncManage} />}
/>

<Route
path="/fine-tuning"
element={<AdminRoute Component={FineTuningWalkthrough} />}
/>
</Routes>
<ToastContainer />
</I18nextProvider>
</PfpProvider>
</LogoProvider>
</ContextWrapper>
</Suspense>
<Route
path="/fine-tuning"
element={<AdminRoute Component={FineTuningWalkthrough} />}
/>
</Routes>
<ToastContainer />
</I18nextProvider>
</PfpProvider>
</LogoProvider>
</ContextWrapper>
</Suspense>
</ThemeProvider>
);
}
16 changes: 13 additions & 3 deletions frontend/src/LogoContext.jsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { createContext, useEffect, useState } from "react";
import AnythingLLM from "./media/logo/anything-llm.png";
import DefaultLoginLogo from "./media/illustrations/login-logo.svg";
import AnythingLLMDark from "./media/logo/anything-llm-dark.png";
import DefaultLoginLogoLight from "./media/illustrations/login-logo.svg";
import DefaultLoginLogoDark from "./media/illustrations/login-logo-light.svg";
import System from "./models/system";

export const LogoContext = createContext();
Expand All @@ -9,6 +11,10 @@ export function LogoProvider({ children }) {
const [logo, setLogo] = useState("");
const [loginLogo, setLoginLogo] = useState("");
const [isCustomLogo, setIsCustomLogo] = useState(false);
const DefaultLoginLogo =
localStorage.getItem("theme") !== "default"
? DefaultLoginLogoDark
: DefaultLoginLogoLight;

useEffect(() => {
async function fetchInstanceLogo() {
Expand All @@ -19,12 +25,16 @@ export function LogoProvider({ children }) {
setLoginLogo(isCustomLogo ? logoURL : DefaultLoginLogo);
setIsCustomLogo(isCustomLogo);
} else {
setLogo(AnythingLLM);
localStorage.getItem("theme") !== "default"
? setLogo(AnythingLLMDark)
: setLogo(AnythingLLM);
setLoginLogo(DefaultLoginLogo);
setIsCustomLogo(false);
}
} catch (err) {
setLogo(AnythingLLM);
localStorage.getItem("theme") !== "default"
? setLogo(AnythingLLMDark)
: setLogo(AnythingLLM);
setLoginLogo(DefaultLoginLogo);
setIsCustomLogo(false);
console.error("Failed to fetch logo:", err);
Expand Down
16 changes: 16 additions & 0 deletions frontend/src/ThemeContext.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import React, { createContext, useContext } from "react";
import { useTheme } from "./hooks/useTheme";

const ThemeContext = createContext();

export function ThemeProvider({ children }) {
const themeValue = useTheme();

return (
<ThemeContext.Provider value={themeValue}>{children}</ThemeContext.Provider>
);
}

export function useThemeContext() {
return useContext(ThemeContext);
}
6 changes: 3 additions & 3 deletions frontend/src/components/ChatBubble/index.jsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import React from "react";
import UserIcon from "../UserIcon";
import { userFromStorage } from "@/utils/request";
import { AI_BACKGROUND_COLOR, USER_BACKGROUND_COLOR } from "@/utils/constants";

export default function ChatBubble({ message, type, popMsg }) {
const isUser = type === "user";
const backgroundColor = isUser ? USER_BACKGROUND_COLOR : AI_BACKGROUND_COLOR;

return (
<div className={`flex justify-center items-end w-full ${backgroundColor}`}>
<div
className={`flex justify-center items-end w-full bg-theme-bg-secondary`}
>
<div className={`py-8 px-4 w-full flex gap-x-5 md:max-w-[80%] flex-col`}>
<div className="flex gap-x-5">
<UserIcon
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/components/ContextualSaveBar/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,18 +10,18 @@ export default function ContextualSaveBar({
return (
<div className="fixed top-0 left-0 right-0 h-14 bg-dark-input flex items-center justify-end px-4 z-[999]">
<div className="absolute ml-4 left-0 md:left-1/2 transform md:-translate-x-1/2 flex items-center gap-x-2">
<Warning size={18} className="text-white" />
<p className="text-white font-medium text-xs">Unsaved Changes</p>
<Warning size={18} className="text-[#FFFFFF]" />
<p className="text-[#FFFFFF] font-medium text-xs">Unsaved Changes</p>
</div>
<div className="flex items-center gap-x-2">
<button
className="border-none text-white font-medium text-sm px-[10px] py-[6px] rounded-md bg-white/5 hover:bg-white/10"
className="border-none text-theme-text-primary font-medium text-sm px-[10px] py-[6px] rounded-md bg-theme-bg-secondary hover:bg-theme-bg-primary"
onClick={onCancel}
>
Cancel
</button>
<button
className="border-none text-dark-text font-medium text-sm px-[10px] py-[6px] rounded-md bg-primary-button hover:bg-[#3DB5E8]"
className="border-none text-theme-text-primary font-medium text-sm px-[10px] py-[6px] rounded-md bg-primary-button hover:bg-primary-button-hover"
onClick={onSave}
>
Save
Expand Down
Loading