Files
overleaf-cep/services/web/frontend/js/features/ide-react/components/rail/rail-modals.tsx
T
Mathias Jakobsen 3a3adf5e5a Merge pull request #34980 from overleaf/mj-ide-settings-feature
[web] Consolidate ide settings in `features/ide-settings`

GitOrigin-RevId: cbf0ff069399f418d8cb0d8165628df190046ea9
2026-09-17 11:13:11 +00:00

46 lines
1.2 KiB
TypeScript

import { FC } from 'react'
import {
RailModalKey,
useRailContext,
} from '@/features/ide-react/context/rail-context'
import { RailHelpContactUsModal } from './contact-us'
import { RailHelpShowHotkeysModal } from './keyboard-shortcuts'
import DictionarySettingsModal from '@/features/ide-settings/components/editor-settings/dictionary-settings-modal'
import importOverleafModules from '../../../../../macros/import-overleaf-module.macro'
type RailModalEntry = {
key: RailModalKey
modalComponentFunction: FC<{ show: boolean }>
}
const moduleRailModals = (
importOverleafModules('railModals') as {
import: { default: RailModalEntry }
path: string
}[]
).map(({ import: { default: entry } }) => entry)
const RAIL_MODALS: RailModalEntry[] = [
{
key: 'keyboard-shortcuts',
modalComponentFunction: RailHelpShowHotkeysModal,
},
{
key: 'contact-us',
modalComponentFunction: RailHelpContactUsModal,
},
{
key: 'dictionary',
modalComponentFunction: DictionarySettingsModal,
},
...moduleRailModals,
]
export default function RailModals() {
const { activeModal } = useRailContext()
return RAIL_MODALS.map(({ key, modalComponentFunction: Component }) => (
<Component key={key} show={activeModal === key} />
))
}