You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
2.1 KiB
80 lines
2.1 KiB
import PageTitle from '@app/components/Common/PageTitle';
|
|
import type { SettingsRoute } from '@app/components/Common/SettingsTabs';
|
|
import SettingsTabs from '@app/components/Common/SettingsTabs';
|
|
import globalMessages from '@app/i18n/globalMessages';
|
|
import { defineMessages, useIntl } from 'react-intl';
|
|
|
|
const messages = defineMessages({
|
|
menuGeneralSettings: 'General',
|
|
menuUsers: 'Users',
|
|
menuPlexSettings: 'Plex',
|
|
menuServices: 'Services',
|
|
menuNotifications: 'Notifications',
|
|
menuLogs: 'Logs',
|
|
menuJobs: 'Jobs & Cache',
|
|
menuAbout: 'About',
|
|
});
|
|
|
|
type SettingsLayoutProps = {
|
|
children: React.ReactNode;
|
|
};
|
|
|
|
const SettingsLayout = ({ children }: SettingsLayoutProps) => {
|
|
const intl = useIntl();
|
|
|
|
const settingsRoutes: SettingsRoute[] = [
|
|
{
|
|
text: intl.formatMessage(messages.menuGeneralSettings),
|
|
route: '/settings/main',
|
|
regex: /^\/settings(\/main)?$/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuUsers),
|
|
route: '/settings/users',
|
|
regex: /^\/settings\/users/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuPlexSettings),
|
|
route: '/settings/plex',
|
|
regex: /^\/settings\/plex/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuServices),
|
|
route: '/settings/services',
|
|
regex: /^\/settings\/services/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuNotifications),
|
|
route: '/settings/notifications/email',
|
|
regex: /^\/settings\/notifications/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuLogs),
|
|
route: '/settings/logs',
|
|
regex: /^\/settings\/logs/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuJobs),
|
|
route: '/settings/jobs',
|
|
regex: /^\/settings\/jobs/,
|
|
},
|
|
{
|
|
text: intl.formatMessage(messages.menuAbout),
|
|
route: '/settings/about',
|
|
regex: /^\/settings\/about/,
|
|
},
|
|
];
|
|
|
|
return (
|
|
<>
|
|
<PageTitle title={intl.formatMessage(globalMessages.settings)} />
|
|
<div className="mt-6">
|
|
<SettingsTabs settingsRoutes={settingsRoutes} />
|
|
</div>
|
|
<div className="mt-10 text-white">{children}</div>
|
|
</>
|
|
);
|
|
};
|
|
|
|
export default SettingsLayout;
|