Merge pull request #31329 from overleaf/mj-dark-mode-notification

[web] Introduce notification for dashboard dark mode

GitOrigin-RevId: da5045d412ddc87a4b18823a4a5fa3192fe15c89
This commit is contained in:
Mathias Jakobsen
2026-02-12 09:05:36 +00:00
committed by Copybot
parent 55c3b6b7ea
commit 498c89c6ed
20 changed files with 369 additions and 89 deletions
@@ -5,12 +5,12 @@ import OLFormGroup from '@/shared/components/ol/ol-form-group'
import OLIconButton from '@/shared/components/ol/ol-icon-button'
import { OLToast } from '@/shared/components/ol/ol-toast'
import { OLToastContainer } from '@/shared/components/ol/ol-toast-container'
import { useEditorContext } from '@/shared/context/editor-context'
import useTutorial from '@/shared/hooks/promotions/use-tutorial'
import { memo, useCallback, useEffect, useMemo, useState } from 'react'
import { sendMB } from '@/infrastructure/event-tracking'
import { useIsNewEditorEnabled } from '@/features/ide-redesign/utils/new-editor-utils'
import { useTranslation } from 'react-i18next'
import { useTutorialContext } from '@/shared/context/tutorial-context'
type EditorSurveyPage = 'ease-of-use' | 'meets-my-needs' | 'thank-you'
@@ -28,7 +28,7 @@ const EditorSurveyContent = () => {
const [easeOfUse, setEaseOfUse] = useState<number | null>(null)
const [meetsMyNeeds, setMeetsMyNeeds] = useState<number | null>(null)
const [page, setPage] = useState<EditorSurveyPage>('ease-of-use')
const { inactiveTutorials } = useEditorContext()
const { inactiveTutorials } = useTutorialContext()
const hasCompletedSurvey = inactiveTutorials.includes(TUTORIAL_KEY)
const newEditor = useIsNewEditorEnabled()
@@ -32,6 +32,7 @@ import { CommandRegistryProvider } from './command-registry-context'
import { NewEditorTourProvider } from '@/features/ide-redesign/contexts/new-editor-tour-context'
import { EditorSelectionProvider } from '@/shared/context/editor-selection-context'
import importOverleafModules from '../../../../macros/import-overleaf-module.macro'
import { TutorialProvider } from '@/shared/context/tutorial-context'
const rootContextProviders = importOverleafModules('rootContextProviders') as {
import: { default: ElementType }
@@ -76,6 +77,7 @@ export const ReactContextRoot: FC<
UserFeaturesProvider,
NewEditorTourProvider,
EditorSelectionProvider,
TutorialProvider,
...providers,
}
@@ -105,47 +107,49 @@ export const ReactContextRoot: FC<
<Providers.EditorViewProvider>
<Providers.EditorOpenDocProvider>
<Providers.EditorProvider>
<Providers.FileTreeDataProvider>
<Providers.FileTreePathProvider>
<Providers.UserFeaturesProvider>
<Providers.PermissionsProvider>
<Providers.RailProvider>
<Providers.LayoutProvider>
<Providers.NewEditorTourProvider>
<Providers.ProjectSettingsProvider>
<Providers.EditorManagerProvider>
<Providers.ReferencesProvider>
<Providers.LocalCompileProvider>
<Providers.DetachCompileProvider>
<Providers.ChatProvider>
<Providers.FileTreeOpenProvider>
<Providers.OnlineUsersProvider>
<Providers.MetadataProvider>
<Providers.OutlineProvider>
<Providers.CommandRegistryProvider>
<Providers.EditorSelectionProvider>
{
childrenWrappedWithDynamicProviders
}
</Providers.EditorSelectionProvider>
</Providers.CommandRegistryProvider>
</Providers.OutlineProvider>
</Providers.MetadataProvider>
</Providers.OnlineUsersProvider>
</Providers.FileTreeOpenProvider>
</Providers.ChatProvider>
</Providers.DetachCompileProvider>
</Providers.LocalCompileProvider>
</Providers.ReferencesProvider>
</Providers.EditorManagerProvider>
</Providers.ProjectSettingsProvider>
</Providers.NewEditorTourProvider>
</Providers.LayoutProvider>
</Providers.RailProvider>
</Providers.PermissionsProvider>
</Providers.UserFeaturesProvider>
</Providers.FileTreePathProvider>
</Providers.FileTreeDataProvider>
<Providers.TutorialProvider>
<Providers.FileTreeDataProvider>
<Providers.FileTreePathProvider>
<Providers.UserFeaturesProvider>
<Providers.PermissionsProvider>
<Providers.RailProvider>
<Providers.LayoutProvider>
<Providers.NewEditorTourProvider>
<Providers.ProjectSettingsProvider>
<Providers.EditorManagerProvider>
<Providers.ReferencesProvider>
<Providers.LocalCompileProvider>
<Providers.DetachCompileProvider>
<Providers.ChatProvider>
<Providers.FileTreeOpenProvider>
<Providers.OnlineUsersProvider>
<Providers.MetadataProvider>
<Providers.OutlineProvider>
<Providers.CommandRegistryProvider>
<Providers.EditorSelectionProvider>
{
childrenWrappedWithDynamicProviders
}
</Providers.EditorSelectionProvider>
</Providers.CommandRegistryProvider>
</Providers.OutlineProvider>
</Providers.MetadataProvider>
</Providers.OnlineUsersProvider>
</Providers.FileTreeOpenProvider>
</Providers.ChatProvider>
</Providers.DetachCompileProvider>
</Providers.LocalCompileProvider>
</Providers.ReferencesProvider>
</Providers.EditorManagerProvider>
</Providers.ProjectSettingsProvider>
</Providers.NewEditorTourProvider>
</Providers.LayoutProvider>
</Providers.RailProvider>
</Providers.PermissionsProvider>
</Providers.UserFeaturesProvider>
</Providers.FileTreePathProvider>
</Providers.FileTreeDataProvider>
</Providers.TutorialProvider>
</Providers.EditorProvider>
</Providers.EditorOpenDocProvider>
</Providers.EditorViewProvider>