import { IconButton, Button, styled, useTheme, Link } from '@mui/material'; import { OpenInNew } from '@mui/icons-material'; import { TranslationFields } from './TranslationFields'; import { LanguageSelect } from './LanguageSelect'; import { LoadingButton } from '../common/LoadingButton'; import { ScreenshotGallery } from './ScreenshotGallery/ScreenshotGallery'; import { ScFieldTitle } from '../common/FieldTitle'; import { useDialogContext, useDialogActions } from './dialogContext'; import { NsSelect } from './NsSelect'; import { TOLGEE_RESTRICT_ATTRIBUTE } from '../../constants'; import { Tags } from './Tags/Tags'; import { PluralFormCheckbox } from './PluralFormCheckbox'; import { ErrorAlert } from './ErrorAlert'; import { HttpError } from '../client/HttpError'; import { Tooltip } from '../common/Tooltip'; const ScContainer = styled('div')` font-family: Rubik, Roboto, Arial; padding: 70px 40px 20px; box-sizing: border-box; max-width: 100%; width: 700px; background: white; display: flex; flex-direction: column; `; const ScHeading = styled('div')` display: flex; align-items: center; gap: 5px; `; const ScHeadingTitle = styled('div')` display: flex; margin: 0px; color: #141414; font-weight: 900; font-size: 24px; `; const ScHeadingRight = styled('div')` display: flex; justify-content: flex-end; align-items: center; flex-grow: 1; `; const ScKey = styled('p')` margin: 0px; font-size: 16px; color: rgba(0, 0, 0, 0.65); `; const ScKeyHint = styled('span')` color: rgba(0, 0, 0, 0.35); `; const ScFieldsWrapper = styled('div')` margin-top: 20px; `; const ScTagsWrapper = styled('div')` margin-top: 5px; `; const ScGalleryWrapper = styled('div')` margin-top: 10px; `; const ScControls = styled('div')` display: flex; justify-content: flex-end; margin-top: 20px; min-height: 36px; `; const ScKeyTitle = styled(ScFieldTitle)` justify-content: start; font-size: 16px; color: rgba(0, 0, 0, 0.65); gap: 4px; align-items: center; `; const ScLinkIcon = styled(Link)` display: grid; font-size: 16px; margin: 0px 0px; `; export const KeyForm = () => { const theme = useTheme(); const { setUseBrowserWindow, onClose, onSave, setSelectedNs } = useDialogActions(); const pluralsSupported = useDialogContext((c) => c.pluralsSupported); const linkToPlatform = useDialogContext((c) => c.linkToPlatform); const useBrowserWindow = useDialogContext((c) => c.useBrowserWindow); const input = useDialogContext((c) => c.input); const keyData = useDialogContext((c) => c.keyData); const formDisabled = useDialogContext((c) => c.formDisabled); const loading = useDialogContext((c) => c.loading); const error = useDialogContext((c) => c.error); const submitError = useDialogContext((c) => c.submitError); const saving = useDialogContext((c) => c.saving); const success = useDialogContext((c) => c.success); const keyExists = useDialogContext((c) => c.keyExists); const fallbackNamespaces = useDialogContext((c) => c.fallbackNamespaces); const selectedNs = useDialogContext((c) => c.selectedNs); const permissions = useDialogContext((c) => c.permissions); const screenshotsView = permissions.canViewScreenshots; const viewPluralCheckbox = permissions.canEditPlural && pluralsSupported; const ready = !loading && !error; const generalError = error || submitError; return ( Quick translation {!loading && } Key {input} {!keyExists && ready && " (key doesn't exist yet)"} {ready && ( Tags )} {/* {ready && viewPluralCheckbox && } */} {!error && ( )} {/* {screenshotsView && ready && ( )} */} {formDisabled && ready && ( )} {generalError && } {success ? 'Saved! ✓' : keyData?.keyId === undefined ? 'Create' : 'Update'} ); };