import axios from 'axios'; import Consola from 'consola'; import { ActionIcon, Button, Group, Title, Tooltip } from '@mantine/core'; import { IconEditCircle, IconEditCircleOff } from '@tabler/icons'; import { getCookie } from 'cookies-next'; import { Trans, useTranslation } from 'next-i18next'; import { useEffect } from 'react'; import { hideNotification, showNotification } from '@mantine/notifications'; import { useConfigContext } from '../../../../../config/provider'; import { useScreenSmallerThan } from '../../../../../hooks/useScreenSmallerThan'; import { useEditModeStore } from '../../../../Dashboard/Views/useEditModeStore'; import { AddElementAction } from '../AddElementAction/AddElementAction'; export const ToggleEditModeAction = () => { const { enabled, toggleEditMode } = useEditModeStore(); const { t } = useTranslation('layout/header/actions/toggle-edit-mode'); const smallerThanSm = useScreenSmallerThan('sm'); const { config } = useConfigContext(); useEffect(() => { if (enabled || config === undefined || config?.schemaVersion === undefined) return; const configName = getCookie('config-name')?.toString() ?? 'default'; axios.put(`/api/configs/${configName}`, { ...config }); Consola.log('Saved config to server', configName); }, [enabled]); const toggleButtonClicked = () => { toggleEditMode(); if (!enabled) { showNotification({ styles: (theme) => ({ root: { backgroundColor: theme.colors.orange[7], borderColor: theme.colors.orange[7], '&::before': { backgroundColor: theme.white }, }, title: { color: theme.white }, description: { color: theme.white }, closeButton: { color: theme.white, '&:hover': { backgroundColor: theme.colors.orange[7] }, }, }), radius: 'md', id: 'toggle-edit-mode', autoClose: false, title: {t('popover.title')}, message: , }); } else { hideNotification('toggle-edit-mode'); } }; const ToggleButtonDesktop = () => ( ); const ToggleActionIconMobile = () => ( toggleButtonClicked()} variant="default" radius="md" size="xl" color="blue" > {enabled ? : } ); return ( <> {smallerThanSm ? ( enabled ? ( ) : ( ) ) : enabled ? ( {enabled && } ) : ( )} ); };