diff --git a/src/components/Config/ConfigChanger.tsx b/src/components/Config/ConfigChanger.tsx
deleted file mode 100644
index 8613660ae..000000000
--- a/src/components/Config/ConfigChanger.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Center, Dialog, Loader, Notification, Select, Tooltip } from '@mantine/core';
-import { useToggle } from '@mantine/hooks';
-import { notifications } from '@mantine/notifications';
-import { IconCheck } from '@tabler/icons-react';
-import { setCookie } from 'cookies-next';
-import { useTranslation } from 'next-i18next';
-import { useRouter } from 'next/router';
-import { useState } from 'react';
-import { api } from '~/utils/api';
-
-import { useConfigContext } from '../../config/provider';
-
-export default function ConfigChanger() {
- const router = useRouter();
-
- const { t } = useTranslation('settings/general/config-changer');
- const { name: configName, setConfigName } = useConfigContext();
-
- const { data: configs, isLoading } = useConfigsQuery();
- const [activeConfig, setActiveConfig] = useState(configName);
- const [isRefreshing, toggle] = useToggle();
-
- const onConfigChange = (value: string) => {
- setCookie('config-name', value ?? 'default', {
- maxAge: 60 * 60 * 24 * 30,
- sameSite: 'strict',
- });
- setActiveConfig(value);
-
- notifications.show({
- id: 'load-data',
- loading: true,
- title: t('configSelect.loadingNew'),
- radius: 'md',
- withCloseButton: false,
- message: t('configSelect.pleaseWait'),
- autoClose: false,
- });
-
- setTimeout(() => {
- notifications.update({
- id: 'load-data',
- color: 'teal',
- radius: 'md',
- withCloseButton: false,
- title: t('configSelect.loadingNew'),
- message: t('configSelect.pleaseWait'),
- icon: ,
- autoClose: 2000,
- });
- }, 3000);
- setTimeout(() => {
- router.push(`/${value}`);
- setConfigName(value);
- }, 500);
- };
-
- // If configlist is empty, return a loading indicator
- if (isLoading || !configs || configs.length === 0 || !configName) {
- return (
-
-
-
-
-
- );
- }
-
- return (
- <>
-
-
- >
- );
-}
-
-const useConfigsQuery = () => api.config.all.useQuery();
diff --git a/src/components/Config/LoadConfig.tsx b/src/components/Config/LoadConfig.tsx
deleted file mode 100644
index 2d35f65ba..000000000
--- a/src/components/Config/LoadConfig.tsx
+++ /dev/null
@@ -1,106 +0,0 @@
-import { Group, Stack, Text, Title, useMantineTheme } from '@mantine/core';
-import { Dropzone } from '@mantine/dropzone';
-import { showNotification } from '@mantine/notifications';
-import { IconCheck as Check, IconPhoto, IconUpload, IconX, IconX as X } from '@tabler/icons-react';
-import { setCookie } from 'cookies-next';
-import { useTranslation } from 'next-i18next';
-import { useRouter } from 'next/router';
-import { api } from '~/utils/api';
-
-import { useConfigStore } from '../../config/store';
-import { ConfigType } from '../../types/config';
-
-export const LoadConfigComponent = () => {
- const theme = useMantineTheme();
- const { t } = useTranslation('settings/general/config-changer');
- const { mutateAsync: loadAsync } = useLoadConfig();
-
- return (
- {
- const configName = files[0].name.replaceAll('.json', '');
- const fileText = await files[0].text();
-
- try {
- JSON.parse(fileText) as ConfigType;
- } catch (e) {
- showNotification({
- autoClose: 5000,
- title: {t('dropzone.notifications.invalidConfig.title')},
- color: 'red',
- icon: ,
- message: t('dropzone.notifications.invalidConfig.message'),
- });
- return;
- }
-
- const newConfig: ConfigType = JSON.parse(fileText);
- await loadAsync({ name: configName, config: newConfig });
- }}
- accept={['application/json']}
- >
-
-
-
-
- {t('dropzone.accept.title')}
-
- {t('dropzone.accept.text')}
-
-
-
-
-
-
- {t('dropzone.reject.title')}
-
- {t('dropzone.reject.text')}
-
-
-
-
-
-
-
-
- );
-};
-
-const useLoadConfig = () => {
- const { t } = useTranslation('settings/general/config-changer');
- const { addConfig } = useConfigStore();
- const router = useRouter();
- return api.config.save.useMutation({
- async onSuccess(_data, variables) {
- await addConfig(variables.name, variables.config);
-
- showNotification({
- autoClose: 5000,
- radius: 'md',
- title: (
-
- {t('dropzone.notifications.loadedSuccessfully.title', {
- configName: variables.name,
- })}
-
- ),
- color: 'green',
- icon: ,
- message: undefined,
- });
- setCookie('config-name', variables.name, {
- maxAge: 60 * 60 * 24 * 30,
- sameSite: 'strict',
- });
- router.push(`/${variables.name}`);
- },
- });
-};
diff --git a/src/components/Admin/CreateNewUser/create-account-step.tsx b/src/components/Manage/User/Create/create-account-step.tsx
similarity index 100%
rename from src/components/Admin/CreateNewUser/create-account-step.tsx
rename to src/components/Manage/User/Create/create-account-step.tsx
diff --git a/src/components/Admin/CreateNewUser/security-step.tsx b/src/components/Manage/User/Create/security-step.tsx
similarity index 100%
rename from src/components/Admin/CreateNewUser/security-step.tsx
rename to src/components/Manage/User/Create/security-step.tsx
diff --git a/src/components/Settings/Common/Language/LanguageSelect.tsx b/src/components/User/Preferences/Language/LanguageSelect.tsx
similarity index 100%
rename from src/components/Settings/Common/Language/LanguageSelect.tsx
rename to src/components/User/Preferences/Language/LanguageSelect.tsx
diff --git a/src/components/Settings/Common/SearchEngine/SearchEngineSelector.tsx b/src/components/User/Preferences/SearchEngine/SearchEngineSelector.tsx
similarity index 100%
rename from src/components/Settings/Common/SearchEngine/SearchEngineSelector.tsx
rename to src/components/User/Preferences/SearchEngine/SearchEngineSelector.tsx
diff --git a/src/components/Settings/Common/SearchEngine/SearchNewTabSwitch.tsx b/src/components/User/Preferences/SearchEngine/SearchNewTabSwitch.tsx
similarity index 100%
rename from src/components/Settings/Common/SearchEngine/SearchNewTabSwitch.tsx
rename to src/components/User/Preferences/SearchEngine/SearchNewTabSwitch.tsx
diff --git a/src/components/layout/Meta/BoardHead.tsx b/src/components/layout/Meta/BoardHeadOverride.tsx
similarity index 100%
rename from src/components/layout/Meta/BoardHead.tsx
rename to src/components/layout/Meta/BoardHeadOverride.tsx
diff --git a/src/components/layout/Templates/BoardLayout.tsx b/src/components/layout/Templates/BoardLayout.tsx
index d2872416b..0511b28f2 100644
--- a/src/components/layout/Templates/BoardLayout.tsx
+++ b/src/components/layout/Templates/BoardLayout.tsx
@@ -20,7 +20,7 @@ import { env } from '~/env';
import { api } from '~/utils/api';
import { HeaderActionButton } from '../Header/ActionButton';
-import { BoardHeadOverride } from '../Meta/BoardHead';
+import { BoardHeadOverride } from '../Meta/BoardHeadOverride';
import { MainLayout } from './MainLayout';
type BoardLayoutProps = {
diff --git a/src/pages/manage/users/create.tsx b/src/pages/manage/users/create.tsx
index 11e1cdba4..92962fa7b 100644
--- a/src/pages/manage/users/create.tsx
+++ b/src/pages/manage/users/create.tsx
@@ -17,11 +17,11 @@ import { z } from 'zod';
import {
CreateAccountStep,
createAccountStepValidationSchema,
-} from '~/components/Admin/CreateNewUser/create-account-step';
+} from '~/components/Manage/User/Create/create-account-step';
import {
CreateAccountSecurityStep,
createAccountSecurityStepValidationSchema,
-} from '~/components/Admin/CreateNewUser/security-step';
+} from '~/components/Manage/User/Create/security-step';
import { ManageLayout } from '~/components/layout/Templates/ManageLayout';
import { api } from '~/utils/api';