@intlayer/design-system 9.0.0-canary.0 → 9.0.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/api/hooks/ai.mjs +20 -1
- package/dist/esm/api/hooks/ai.mjs.map +1 -1
- package/dist/esm/api/hooks/asset.mjs +78 -0
- package/dist/esm/api/hooks/asset.mjs.map +1 -0
- package/dist/esm/api/index.mjs +6 -5
- package/dist/esm/api/useIntlayerAPI.mjs +6 -1
- package/dist/esm/api/useIntlayerAPI.mjs.map +1 -1
- package/dist/esm/components/Command/index.mjs +8 -8
- package/dist/esm/components/Command/index.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +132 -35
- package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +33 -11
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +146 -35
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +308 -0
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +12 -2
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +460 -20
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +506 -0
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +10 -6
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +9 -9
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/contentEditor.content.mjs +79 -0
- package/dist/esm/components/DictionaryFieldEditor/contentEditor.content.mjs.map +1 -0
- package/dist/esm/components/Form/Form.mjs +3 -43
- package/dist/esm/components/Form/Form.mjs.map +1 -1
- package/dist/esm/components/Form/elements/FormElement.mjs +2 -3
- package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/MultiselectElement.mjs +2 -3
- package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/OTPElement.mjs +3 -4
- package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SelectElement.mjs +2 -3
- package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +2 -3
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
- package/dist/esm/components/Form/index.mjs +21 -2
- package/dist/esm/components/Form/layout/FormItemLayout.mjs +8 -5
- package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
- package/dist/esm/components/LanguageBackground/LanguageBackground.mjs +3 -8
- package/dist/esm/components/LanguageBackground/LanguageBackground.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -1
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/MarkdownEditor/MarkdownEditor.mjs +113 -0
- package/dist/esm/components/MarkdownEditor/MarkdownEditor.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/extensions.mjs +103 -0
- package/dist/esm/components/MarkdownEditor/extensions.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/generative/AICompletionCommands.mjs +51 -0
- package/dist/esm/components/MarkdownEditor/generative/AICompletionCommands.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs +100 -0
- package/dist/esm/components/MarkdownEditor/generative/AISelector.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/generative/AISelectorCommands.mjs +81 -0
- package/dist/esm/components/MarkdownEditor/generative/AISelectorCommands.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/generative/GenerativeMenuSwitch.mjs +47 -0
- package/dist/esm/components/MarkdownEditor/generative/GenerativeMenuSwitch.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/generative/useAICompletion.mjs +83 -0
- package/dist/esm/components/MarkdownEditor/generative/useAICompletion.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/imageUpload.mjs +47 -0
- package/dist/esm/components/MarkdownEditor/imageUpload.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/index.mjs +4 -0
- package/dist/esm/components/MarkdownEditor/markdownEditor.content.mjs +1140 -0
- package/dist/esm/components/MarkdownEditor/markdownEditor.content.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-bubble-item.mjs +20 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-bubble-item.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-bubble.mjs +39 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-bubble.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-command-item.mjs +25 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-command-item.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-command.mjs +61 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor-command.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor.mjs +27 -0
- package/dist/esm/components/MarkdownEditor/novel/components/editor.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/components/index.mjs +8 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/ai-highlight.mjs +74 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/ai-highlight.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/custom-keymap.mjs +37 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/custom-keymap.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/image-resizer.mjs +49 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/image-resizer.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs +51 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/index.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/slash-command.mjs +79 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/slash-command.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/updated-image.mjs +17 -0
- package/dist/esm/components/MarkdownEditor/novel/extensions/updated-image.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/index.mjs +17 -0
- package/dist/esm/components/MarkdownEditor/novel/plugins/index.mjs +3 -0
- package/dist/esm/components/MarkdownEditor/novel/plugins/upload-images.mjs +92 -0
- package/dist/esm/components/MarkdownEditor/novel/plugins/upload-images.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/utils/atoms.mjs +39 -0
- package/dist/esm/components/MarkdownEditor/novel/utils/atoms.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/novel/utils/index.mjs +38 -0
- package/dist/esm/components/MarkdownEditor/novel/utils/index.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/selectors/ColorSelector.mjs +176 -0
- package/dist/esm/components/MarkdownEditor/selectors/ColorSelector.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/selectors/LinkSelector.mjs +95 -0
- package/dist/esm/components/MarkdownEditor/selectors/LinkSelector.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/selectors/NodeSelector.mjs +139 -0
- package/dist/esm/components/MarkdownEditor/selectors/NodeSelector.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/selectors/TextButtons.mjs +81 -0
- package/dist/esm/components/MarkdownEditor/selectors/TextButtons.mjs.map +1 -0
- package/dist/esm/components/MarkdownEditor/slashCommand.mjs +161 -0
- package/dist/esm/components/MarkdownEditor/slashCommand.mjs.map +1 -0
- package/dist/esm/components/Modal/Modal.mjs +2 -2
- package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs +1 -1
- package/dist/esm/components/Pattern/GridDistortionPattern.mjs +275 -0
- package/dist/esm/components/Pattern/GridDistortionPattern.mjs.map +1 -0
- package/dist/esm/components/Pattern/index.mjs +2 -1
- package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
- package/dist/esm/components/Tab/Tab.mjs +1 -1
- package/dist/esm/components/Table/Table.mjs +1 -1
- package/dist/esm/components/Table/Table.mjs.map +1 -1
- package/dist/esm/components/Tag/index.mjs +0 -9
- package/dist/esm/components/Tag/index.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toast.mjs +1 -1
- package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
- package/dist/esm/components/index.mjs +27 -6
- package/dist/esm/hooks/index.mjs +8 -8
- package/dist/esm/hooks/useIsMounted.mjs +4 -2
- package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
- package/dist/esm/routes.mjs +2 -1
- package/dist/esm/routes.mjs.map +1 -1
- package/dist/types/api/hooks/ai.d.ts +5 -1
- package/dist/types/api/hooks/ai.d.ts.map +1 -1
- package/dist/types/api/hooks/asset.d.ts +27 -0
- package/dist/types/api/hooks/asset.d.ts.map +1 -0
- package/dist/types/api/hooks/audit.d.ts +1 -1
- package/dist/types/api/index.d.ts +4 -3
- package/dist/types/api/useIntlayerAPI.d.ts +15 -3
- package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
- package/dist/types/components/Badge/index.d.ts +1 -1
- package/dist/types/components/Breadcrumb/index.d.ts +1 -1
- package/dist/types/components/Button/Button.d.ts +3 -3
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
- package/dist/types/components/Command/index.d.ts.map +1 -1
- package/dist/types/components/Container/index.d.ts +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +308 -0
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +12 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts +2 -0
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +506 -0
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +2 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/contentEditor.content.d.ts +80 -0
- package/dist/types/components/DictionaryFieldEditor/contentEditor.content.d.ts.map +1 -0
- package/dist/types/components/Form/Form.d.ts +27 -47
- package/dist/types/components/Form/Form.d.ts.map +1 -1
- package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
- package/dist/types/components/Form/index.d.ts +22 -3
- package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
- package/dist/types/components/Input/Checkbox.d.ts +3 -3
- package/dist/types/components/Input/Input.d.ts +1 -1
- package/dist/types/components/Input/Radio.d.ts +3 -3
- package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -1
- package/dist/types/components/Link/Link.d.ts +1 -1
- package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +31 -0
- package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/extensions.d.ts +11 -0
- package/dist/types/components/MarkdownEditor/extensions.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts +18 -0
- package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts +22 -0
- package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts +17 -0
- package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts +26 -0
- package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts +30 -0
- package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/imageUpload.d.ts +29 -0
- package/dist/types/components/MarkdownEditor/imageUpload.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/index.d.ts +3 -0
- package/dist/types/components/MarkdownEditor/markdownEditor.content.d.ts +1135 -0
- package/dist/types/components/MarkdownEditor/markdownEditor.content.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts +14 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts +18 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts +28 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts +34 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts +23 -0
- package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/components/index.d.ts +8 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts +36 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/custom-keymap.d.ts +17 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/custom-keymap.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts +7 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts +30 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/index.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts +38 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/updated-image.d.ts +8 -0
- package/dist/types/components/MarkdownEditor/novel/extensions/updated-image.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/index.d.ts +16 -0
- package/dist/types/components/MarkdownEditor/novel/plugins/index.d.ts +2 -0
- package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts +22 -0
- package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts +21 -0
- package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts +10 -0
- package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts +17 -0
- package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts +15 -0
- package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts +22 -0
- package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts +11 -0
- package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts.map +1 -0
- package/dist/types/components/MarkdownEditor/slashCommand.d.ts +29 -0
- package/dist/types/components/MarkdownEditor/slashCommand.d.ts.map +1 -0
- package/dist/types/components/Pattern/GridDistortionPattern.d.ts +15 -0
- package/dist/types/components/Pattern/GridDistortionPattern.d.ts.map +1 -0
- package/dist/types/components/Pattern/index.d.ts +2 -1
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +1 -1
- package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +1 -1
- package/dist/types/components/Tag/index.d.ts +2 -2
- package/dist/types/components/Tag/index.d.ts.map +1 -1
- package/dist/types/components/Toaster/Toast.d.ts +1 -1
- package/dist/types/components/index.d.ts +24 -3
- package/dist/types/routes.d.ts +2 -1
- package/dist/types/routes.d.ts.map +1 -1
- package/package.json +63 -32
- package/src/components/MarkdownEditor/markdown-editor.css +297 -0
package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DictionaryDetailsForm.mjs","names":["useForm"],"sources":["../../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport {\n useAuditContentDeclarationMetadata,\n useGetProjects,\n useGetTags,\n} from '@api/index';\nimport { useSession } from '@api/useAuth';\n\nimport { Form, useForm } from '@components/Form';\nimport { Checkbox } from '@components/Input';\nimport { Loader } from '@components/Loader';\nimport { MultiSelect, Select } from '@components/Select';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport type { Dictionary, LocalDictionaryId } from '@intlayer/types/dictionary';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect } from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useIntlayer } from 'react-intlayer';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n}) => {\n const { session } = useSession();\n const { project } = session ?? {};\n const { data: projectsData, isLoading: isLoadingProjects } =\n useGetProjects() as any;\n const { data: tagsData } = useGetTags() as any;\n\n const projects = (projectsData?.data ?? []) as any[];\n const allTags = (tagsData?.data ?? []) as any[];\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?.id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: {\n ...dictionary,\n location: dictionary.location ?? 'remote',\n },\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n projectInput,\n tagsSelect,\n locationSelect,\n importModeSelect,\n filePathInput,\n auditButton,\n } = useIntlayer('dictionary-details');\n const { mutate: auditContentDeclaration, isPending: isAuditing } =\n useAuditContentDeclarationMetadata();\n const updatedDictionary =\n editedContent?.[dictionary.localId as LocalDictionaryId];\n\n useEffect(() => {\n form.reset({\n ...dictionary,\n tags: dictionary.tags ?? [],\n location: dictionary.location ?? 'remote',\n });\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset({\n ...dictionary,\n tags: dictionary.tags ?? [],\n location: dictionary.location ?? 'remote',\n });\n }\n }, [updatedDictionary]);\n\n const handleOnAuditFile = () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n auditContentDeclaration(\n {\n fileContent: JSON.stringify(dictionaryToAudit),\n },\n {\n onSuccess: (response) => {\n if (!response?.data) return;\n\n const auditedDictionary = response.data.fileContent;\n\n const merged = {\n ...dictionaryToAudit,\n ...auditedDictionary,\n tags: auditedDictionary.tags ?? dictionaryToAudit.tags ?? [],\n };\n\n setEditedDictionary(merged as Dictionary);\n form.reset(merged);\n },\n }\n );\n };\n\n const watchedLocation = useWatch({\n control: form.control,\n name: 'location',\n });\n const isLocalChecked =\n watchedLocation === 'local' || watchedLocation === 'hybrid';\n\n return (\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n >\n <div className=\"grid grid-cols-2 gap-8 max-md:grid-cols-1\">\n <Form.EditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n key: value,\n });\n }}\n />\n <Form.EditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n title: value,\n });\n }}\n />\n </div>\n <Form.EditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n description: value,\n });\n }}\n />\n <div className=\"grid grid-cols-2 gap-8 px-1 max-md:grid-cols-1\">\n <Form.Field\n control={form.control}\n name=\"location\"\n render={({ field }) => {\n const value = field.value;\n const isLocal = value === 'local' || value === 'hybrid';\n const isRemote = value === 'remote' || value === 'hybrid';\n\n const handleLocalToggle = (isChecked: boolean) => {\n if (!isChecked && !isRemote) return;\n\n const newValue: Dictionary['location'] = isChecked\n ? isRemote\n ? 'hybrid'\n : 'local'\n : 'remote';\n\n field.onChange(newValue);\n\n const newFilePath = isChecked\n ? (form.getValues('filePath') ?? dictionary.filePath)\n : undefined;\n\n if (!isChecked) {\n form.setValue('filePath', undefined);\n }\n\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n location: newValue,\n filePath: newFilePath,\n });\n };\n\n const handleRemoteToggle = (isChecked: boolean) => {\n if (!isChecked && !isLocal) return;\n\n const newValue: Dictionary['location'] = isChecked\n ? isLocal\n ? 'hybrid'\n : 'remote'\n : 'local';\n\n field.onChange(newValue);\n\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n location: newValue,\n });\n };\n\n return (\n <Form.Item className=\"flex flex-col gap-2 px-1\">\n <Form.Label className=\"ml-1\">{locationSelect.label}</Form.Label>\n <div className=\"ml-2 flex items-center gap-4 py-2\">\n <Checkbox\n id=\"location-local\"\n name=\"location-local\"\n label={locationSelect.local.value}\n color=\"text\"\n checked={isLocal}\n disabled={\n !mode.includes('local') && !mode.includes('remote')\n }\n onChange={(e) => handleLocalToggle(e.target.checked)}\n />\n <Checkbox\n id=\"location-remote\"\n name=\"location-remote\"\n label={locationSelect.remote.value}\n color=\"text\"\n checked={isRemote}\n disabled={\n !mode.includes('remote') &&\n dictionary.location !== 'remote' &&\n dictionary.location !== 'hybrid'\n }\n onChange={(e) => handleRemoteToggle(e.target.checked)}\n />\n </div>\n <Form.Description>\n {locationSelect.testDescription}\n </Form.Description>\n <Form.Message />\n </Form.Item>\n );\n }}\n />\n\n <AnimatePresence mode=\"wait\">\n {isLocalChecked && (\n <motion.div\n key=\"filePath-input\"\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.3 }}\n className=\"overflow-hidden\"\n >\n <Form.Input\n name=\"filePath\"\n label={filePathInput.label.value}\n placeholder={filePathInput.placeholder.value}\n description={filePathInput.description.value}\n disabled={isSubmitting || !isLocalChecked}\n onChange={(e) => {\n const value = e.target.value;\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n filePath: value,\n });\n }}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n <div className=\"grid grid-cols-2 gap-8 max-md:grid-cols-1\">\n <Form.Select\n name=\"importMode\"\n label={importModeSelect.label.value}\n description={importModeSelect.description.value}\n onValueChange={(value) => {\n form.setValue('importMode', value as any, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n importMode: value as any,\n });\n }}\n >\n <Select.Trigger>\n <Select.Value placeholder={importModeSelect.label.value} />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"static\">\n {importModeSelect.static.value}\n </Select.Item>\n <Select.Item value=\"dynamic\">\n {importModeSelect.dynamic.value}\n </Select.Item>\n <Select.Item value=\"live\">\n {importModeSelect.live.value}\n </Select.Item>\n </Select.Content>\n </Form.Select>\n </div>\n <div className=\"grid grid-cols-2 gap-8 max-md:grid-cols-1\">\n <Form.MultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n projectIds: valueArray,\n });\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.find((project: any) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.map((project: any) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n\n <Form.MultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('tags', valueArray, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n tags: valueArray,\n });\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n allTags?.find((tag: any) => String(tag.key) === value)?.name ??\n value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {allTags?.map((tag: any) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </Form.MultiSelect>\n </div>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <Form.Button\n type=\"button\"\n size=\"icon-md\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant=\"outline\"\n color=\"text\"\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n />\n </div>\n </Form>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DictionaryDetailsForm.mjs","names":["useForm","FormEditableFieldInput","FormEditableFieldTextArea","FormLabel","FormInput","FormSelect","FormMultiSelect","FormButton"],"sources":["../../../../../src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx"],"sourcesContent":["'use client';\n\nimport {\n useAuditContentDeclarationMetadata,\n useGetDictionaries,\n useGetProjects,\n useGetTags,\n} from '@api/index';\nimport { useSession } from '@api/useAuth';\n\nimport { Container } from '@components/Container';\nimport {\n Form,\n FormButton,\n FormDescription,\n FormEditableFieldInput,\n FormEditableFieldTextArea,\n FormField,\n FormInput,\n FormItem,\n FormLabel,\n FormMessage,\n FormMultiSelect,\n FormSelect,\n useForm,\n} from '@components/Form';\nimport { Checkbox, Input } from '@components/Input';\nimport { Loader } from '@components/Loader';\nimport { Pagination } from '@components/Pagination';\nimport { MultiSelect, Select } from '@components/Select';\nimport { useEditedContent } from '@intlayer/editor-react';\nimport type {\n Dictionary,\n DictionaryMeta,\n LocalDictionaryId,\n} from '@intlayer/types/dictionary';\nimport { cn } from '@utils/cn';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport { WandSparkles } from 'lucide-react';\nimport { type FC, useEffect, useMemo, useState } from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useIntlayer } from 'react-intlayer';\nimport { MonacoCode } from '../../IDE/MonacoCode';\nimport { useDictionaryDetailsSchema } from './useDictionaryDetailsSchema';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n onSelectSibling?: (dictionary: Dictionary) => void;\n isDarkMode?: boolean;\n};\n\ntype QualifierType = 'collection' | 'variant' | 'meta';\n\nconst QUALIFIER_TYPES: QualifierType[] = ['collection', 'variant', 'meta'];\n\n/** Derive active qualifier types from dictionary qualifier fields. */\nconst deriveQualifierTypes = (dict: Dictionary): QualifierType[] => {\n const types: QualifierType[] = [];\n if (dict.item !== undefined) types.push('collection');\n if (dict.variant !== undefined) types.push('variant');\n if (dict.meta !== undefined) types.push('meta');\n return types;\n};\n\nexport const DictionaryDetailsForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n onSelectSibling,\n isDarkMode,\n}) => {\n const { session } = useSession();\n const { project } = session ?? {};\n const { data: projectsData, isLoading: isLoadingProjects } =\n useGetProjects() as any;\n const { data: tagsData } = useGetTags() as any;\n\n const projects = (projectsData?.data ?? []) as any[];\n const allTags = (tagsData?.data ?? []) as any[];\n\n const DictionaryDetailsSchema = useDictionaryDetailsSchema(\n String(project?.id)\n );\n const { form, isSubmitting } = useForm(DictionaryDetailsSchema, {\n defaultValues: {\n ...dictionary,\n location: dictionary.location ?? 'remote',\n },\n });\n const { editedContent, setEditedDictionary } = useEditedContent();\n const {\n titleInput,\n keyInput,\n descriptionInput,\n projectInput,\n tagsSelect,\n locationSelect,\n importModeSelect,\n filePathInput,\n auditButton,\n qualifierSection,\n siblingDictionaries: siblingContent,\n typeSwitch,\n } = useIntlayer('dictionary-details');\n const { mutate: auditContentDeclaration, isPending: isAuditing } =\n useAuditContentDeclarationMetadata();\n const updatedDictionary =\n editedContent?.[dictionary.localId as LocalDictionaryId];\n\n const { data: siblingsData, isLoading: isLoadingSiblings } =\n useGetDictionaries(\n { keys: [dictionary.key] },\n { enabled: !!dictionary.key }\n );\n\n const siblings = useMemo<Dictionary[]>(\n () =>\n ((siblingsData?.data ?? []) as unknown as Dictionary[]).filter(\n (d: Dictionary) => d.localId !== dictionary.localId\n ),\n [siblingsData, dictionary.localId]\n );\n\n const itemSiblings = useMemo(\n () =>\n siblings\n .filter((d) => d.item !== undefined)\n .sort((a, b) => (a.item ?? 0) - (b.item ?? 0)),\n [siblings]\n );\n\n const variantSiblings = useMemo(\n () => siblings.filter((d) => d.variant !== undefined),\n [siblings]\n );\n\n const metaSiblings = useMemo(\n () => siblings.filter((d) => d.meta !== undefined),\n [siblings]\n );\n\n const allItemDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.item !== undefined) {\n const combined = [dictionary, ...itemSiblings].sort(\n (a, b) => (a.item ?? 0) - (b.item ?? 0)\n );\n return combined;\n }\n return itemSiblings;\n }, [dictionary, itemSiblings]);\n\n const allVariantDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.variant !== undefined) {\n return [dictionary, ...variantSiblings];\n }\n return variantSiblings;\n }, [dictionary, variantSiblings]);\n\n const allMetaDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.meta !== undefined) {\n return [dictionary, ...metaSiblings];\n }\n return metaSiblings;\n }, [dictionary, metaSiblings]);\n\n useEffect(() => {\n form.reset({\n ...dictionary,\n tags: dictionary.tags ?? [],\n location: dictionary.location ?? 'remote',\n });\n setSelectedTypes(deriveQualifierTypes(dictionary));\n setItemValue(dictionary.item ?? 1);\n setVariantValue(dictionary.variant ?? '');\n setMetaJsonValue(\n dictionary.meta ? JSON.stringify(dictionary.meta, null, 2) : ''\n );\n setMetaJsonError(false);\n setShowSiblingPicker(false);\n }, [dictionary, form?.reset]);\n\n useEffect(() => {\n if (typeof updatedDictionary === 'undefined') {\n form.reset({\n ...dictionary,\n tags: dictionary.tags ?? [],\n location: dictionary.location ?? 'remote',\n });\n }\n }, [updatedDictionary]);\n\n const handleOnAuditFile = () => {\n const dictionaryToAudit = {\n ...dictionary,\n ...updatedDictionary,\n };\n\n auditContentDeclaration(\n {\n fileContent: JSON.stringify(dictionaryToAudit),\n },\n {\n onSuccess: (response) => {\n if (!response?.data) return;\n\n const auditedDictionary = response.data.fileContent;\n\n const merged = {\n ...dictionaryToAudit,\n ...auditedDictionary,\n tags: auditedDictionary.tags ?? dictionaryToAudit.tags ?? [],\n };\n\n setEditedDictionary(merged as Dictionary);\n form.reset(merged);\n },\n }\n );\n };\n\n const watchedLocation = useWatch({\n control: form.control,\n name: 'location',\n });\n const isLocalChecked =\n watchedLocation === 'local' || watchedLocation === 'hybrid';\n\n const hasSiblings = siblings.length > 0;\n\n const [selectedTypes, setSelectedTypes] = useState<QualifierType[]>(() =>\n deriveQualifierTypes(dictionary)\n );\n const [itemValue, setItemValue] = useState<number>(dictionary.item ?? 1);\n const [variantValue, setVariantValue] = useState<string>(\n dictionary.variant ?? ''\n );\n const [metaJsonValue, setMetaJsonValue] = useState<string>(\n dictionary.meta ? JSON.stringify(dictionary.meta, null, 2) : ''\n );\n const [metaJsonError, setMetaJsonError] = useState(false);\n const [showSiblingPicker, setShowSiblingPicker] = useState(false);\n\n const allQualifiedSiblings = useMemo<Dictionary[]>(\n () => [...itemSiblings, ...variantSiblings, ...metaSiblings],\n [itemSiblings, variantSiblings, metaSiblings]\n );\n\n const handleTypesChange = (newTypes: string | string[]) => {\n const nextTypes = [newTypes].flat() as QualifierType[];\n const added = nextTypes.filter((t) => !selectedTypes.includes(t));\n const removed = selectedTypes.filter((t) => !nextTypes.includes(t));\n\n let base = { ...dictionary, ...(updatedDictionary ?? {}) };\n\n for (const qualifier of removed) {\n if (qualifier === 'collection') base = { ...base, item: undefined };\n if (qualifier === 'variant') base = { ...base, variant: undefined };\n if (qualifier === 'meta') base = { ...base, meta: undefined };\n }\n\n for (const qualifier of added) {\n if (qualifier === 'collection') {\n const nextItem =\n allItemDicts.length > 0\n ? Math.max(...allItemDicts.map((d) => d.item ?? 0)) + 1\n : 1;\n setItemValue(nextItem);\n base = { ...base, item: nextItem };\n } else if (qualifier === 'variant') {\n const newVariant = variantValue || 'default';\n setVariantValue(newVariant);\n base = { ...base, variant: newVariant };\n } else if (qualifier === 'meta') {\n const initialMeta: DictionaryMeta = { id: '' };\n setMetaJsonValue(JSON.stringify(initialMeta, null, 2));\n base = { ...base, meta: initialMeta };\n }\n }\n\n setSelectedTypes(nextTypes);\n setEditedDictionary(base);\n setMetaJsonError(false);\n\n if (nextTypes.length === 0 && allQualifiedSiblings.length > 0) {\n setShowSiblingPicker(true);\n } else {\n setShowSiblingPicker(false);\n }\n };\n\n return (\n <Form\n className=\"flex w-full flex-col gap-8\"\n {...form}\n schema={DictionaryDetailsSchema}\n >\n <div className=\"grid grid-cols-2 gap-8 max-md:grid-cols-1\">\n <FormEditableFieldInput\n name=\"key\"\n label={keyInput.label}\n placeholder={keyInput.label.value}\n description={keyInput.description}\n disabled={isSubmitting}\n isRequired\n onSave={(value) => {\n form.setValue('key', value, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n key: value,\n });\n }}\n />\n <FormEditableFieldInput\n name=\"title\"\n label={titleInput.label}\n placeholder={titleInput.placeholder.value}\n description={titleInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('title', value, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n title: value,\n });\n }}\n />\n </div>\n <FormEditableFieldTextArea\n name=\"description\"\n label={descriptionInput.label}\n placeholder={descriptionInput.placeholder.value}\n description={descriptionInput.description}\n disabled={isSubmitting}\n onSave={(value) => {\n form.setValue('description', value, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n description: value,\n });\n }}\n />\n <div className=\"grid grid-cols-2 gap-8 px-1 max-md:grid-cols-1\">\n <FormField\n control={form.control}\n name=\"location\"\n render={({ field }) => {\n const value = field.value;\n const isLocal = value === 'local' || value === 'hybrid';\n const isRemote = value === 'remote' || value === 'hybrid';\n\n const handleLocalToggle = (isChecked: boolean) => {\n if (!isChecked && !isRemote) return;\n\n const newValue: Dictionary['location'] = isChecked\n ? isRemote\n ? 'hybrid'\n : 'local'\n : 'remote';\n\n field.onChange(newValue);\n\n const newFilePath = isChecked\n ? (form.getValues('filePath') ?? dictionary.filePath)\n : undefined;\n\n if (!isChecked) {\n form.setValue('filePath', undefined);\n }\n\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n location: newValue,\n filePath: newFilePath,\n });\n };\n\n const handleRemoteToggle = (isChecked: boolean) => {\n if (!isChecked && !isLocal) return;\n\n const newValue: Dictionary['location'] = isChecked\n ? isLocal\n ? 'hybrid'\n : 'remote'\n : 'local';\n\n field.onChange(newValue);\n\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n location: newValue,\n });\n };\n\n return (\n <FormItem className=\"flex flex-col gap-2 px-1\">\n <FormLabel className=\"ml-1\">{locationSelect.label}</FormLabel>\n <div className=\"ml-2 flex items-center gap-4 py-2\">\n <Checkbox\n id=\"location-local\"\n name=\"location-local\"\n label={locationSelect.local.value}\n color=\"text\"\n checked={isLocal}\n disabled={\n !mode.includes('local') && !mode.includes('remote')\n }\n onChange={(e) => handleLocalToggle(e.target.checked)}\n />\n <Checkbox\n id=\"location-remote\"\n name=\"location-remote\"\n label={locationSelect.remote.value}\n color=\"text\"\n checked={isRemote}\n disabled={\n !mode.includes('remote') &&\n dictionary.location !== 'remote' &&\n dictionary.location !== 'hybrid'\n }\n onChange={(e) => handleRemoteToggle(e.target.checked)}\n />\n </div>\n <FormDescription>\n {locationSelect.testDescription}\n </FormDescription>\n <FormMessage />\n </FormItem>\n );\n }}\n />\n\n <AnimatePresence mode=\"wait\">\n {isLocalChecked && (\n <motion.div\n key=\"filePath-input\"\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.3 }}\n >\n <FormInput\n name=\"filePath\"\n label={filePathInput.label.value}\n placeholder={filePathInput.placeholder.value}\n description={filePathInput.description.value}\n disabled={isSubmitting || !isLocalChecked}\n onChange={(e) => {\n const value = e.target.value;\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n filePath: value,\n });\n }}\n />\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n <div className=\"grid grid-cols-2 gap-8 max-md:grid-cols-1\">\n <FormSelect\n name=\"importMode\"\n label={importModeSelect.label.value}\n description={importModeSelect.description.value}\n onValueChange={(value) => {\n form.setValue('importMode', value as any, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n importMode: value as any,\n });\n }}\n >\n <Select.Trigger>\n <Select.Value placeholder={importModeSelect.label.value} />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"static\">\n {importModeSelect.static.value}\n </Select.Item>\n <Select.Item value=\"dynamic\">\n {importModeSelect.dynamic.value}\n </Select.Item>\n <Select.Item value=\"live\">\n {importModeSelect.live.value}\n </Select.Item>\n </Select.Content>\n </FormSelect>\n </div>\n <div className=\"grid grid-cols-2 gap-8 max-md:grid-cols-1\">\n <FormMultiSelect\n name=\"projectIds\"\n label={projectInput.label.value}\n description={projectInput.description}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('projectIds', valueArray, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n projectIds: valueArray,\n });\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projects?.find((project: any) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {projects?.map((project: any) => (\n <MultiSelect.Item\n key={String(project.id)}\n value={String(project.id)}\n >\n {project.name}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </FormMultiSelect>\n\n <FormMultiSelect\n name=\"tags\"\n label={tagsSelect.label.value}\n description={tagsSelect.description}\n onValueChange={(value) => {\n const valueArray = [value].flat();\n form.setValue('tags', valueArray, { shouldDirty: true });\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n tags: valueArray,\n });\n }}\n >\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n allTags?.find((tag: any) => String(tag.key) === value)?.name ??\n value\n }\n >\n <MultiSelect.Input placeholder={tagsSelect.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <Loader isLoading={isLoadingProjects}>\n <MultiSelect.List>\n {allTags?.map((tag: any) => (\n <MultiSelect.Item\n key={String(tag.key)}\n value={String(tag.key)}\n >\n {tag.name ?? tag.key}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </Loader>\n </MultiSelect.Content>\n </FormMultiSelect>\n </div>\n\n {/* Type switcher */}\n <Container\n className=\"gap-4\"\n padding=\"md\"\n roundedSize=\"2xl\"\n background=\"none\"\n border\n borderColor=\"card\"\n >\n <div className=\"flex flex-col gap-1\">\n <p className=\"ml-1 font-semibold text-sm\">{typeSwitch.label}</p>\n <p className=\"ml-1 text-muted text-xs\">{typeSwitch.description}</p>\n </div>\n <MultiSelect\n values={selectedTypes}\n onValueChange={handleTypesChange}\n className=\"max-w-xs\"\n >\n <MultiSelect.Trigger\n getBadgeValue={(val) => {\n if (val === 'collection') return String(typeSwitch.collection);\n if (val === 'variant') return String(typeSwitch.variant);\n if (val === 'meta') return String(typeSwitch.meta);\n return val;\n }}\n >\n <MultiSelect.Input placeholder={typeSwitch.label.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <MultiSelect.List>\n {QUALIFIER_TYPES.map((qualifier) => (\n <MultiSelect.Item key={qualifier} value={qualifier}>\n {typeSwitch[qualifier].value}\n </MultiSelect.Item>\n ))}\n </MultiSelect.List>\n </MultiSelect.Content>\n </MultiSelect>\n <AnimatePresence>\n {selectedTypes.includes('collection') && (\n <motion.div\n key=\"item-input\"\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.2 }}\n >\n <div className=\"flex flex-col gap-2 px-1\">\n <label\n htmlFor=\"qualifier-item-value\"\n className=\"ml-1 font-medium text-sm\"\n >\n {typeSwitch.itemValueLabel}\n </label>\n <Input\n id=\"qualifier-item-value\"\n type=\"number\"\n min={1}\n value={itemValue}\n placeholder={typeSwitch.itemValuePlaceholder.value}\n onChange={(e) => {\n const value = parseInt(e.target.value, 10);\n if (!Number.isNaN(value) && value >= 1) {\n setItemValue(value);\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n item: value,\n });\n }\n }}\n />\n </div>\n </motion.div>\n )}\n\n {selectedTypes.includes('variant') && (\n <motion.div\n key=\"variant-input\"\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.2 }}\n >\n <div className=\"flex flex-col gap-2 px-1\">\n <label\n htmlFor=\"qualifier-variant-value\"\n className=\"ml-1 font-medium text-sm\"\n >\n {typeSwitch.variantValueLabel}\n </label>\n <Input\n id=\"qualifier-variant-value\"\n type=\"text\"\n value={variantValue}\n placeholder={typeSwitch.variantValuePlaceholder.value}\n onChange={(e) => {\n const value = e.target.value;\n setVariantValue(value);\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n variant: value,\n });\n }}\n />\n </div>\n </motion.div>\n )}\n\n {selectedTypes.includes('meta') && (\n <motion.div\n key=\"meta-input\"\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.2 }}\n >\n <div className=\"flex flex-col gap-2 px-1\">\n <label\n htmlFor=\"qualifier-meta-value\"\n className=\"ml-1 font-medium text-sm\"\n >\n {typeSwitch.metaValueLabel}\n </label>\n <div\n id=\"qualifier-meta-value\"\n className=\"overflow-hidden rounded-xl border border-input bg-background\"\n >\n <MonacoCode\n language=\"json\"\n showCopyButton={false}\n showLineNumbers={false}\n isDarkMode={isDarkMode}\n onChange={(value) => {\n const raw = value ?? '';\n setMetaJsonValue(raw);\n try {\n const parsed = JSON.parse(raw) as DictionaryMeta;\n setMetaJsonError(false);\n setEditedDictionary({\n ...dictionary,\n ...(updatedDictionary ?? {}),\n meta: parsed,\n });\n } catch {\n setMetaJsonError(true);\n }\n }}\n >\n {metaJsonValue}\n </MonacoCode>\n </div>\n {metaJsonError && (\n <p className=\"ml-1 text-destructive text-xs\">\n {typeSwitch.metaJsonError}\n </p>\n )}\n </div>\n </motion.div>\n )}\n\n {selectedTypes.length === 0 && showSiblingPicker && (\n <motion.div\n key=\"sibling-picker\"\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{ duration: 0.2 }}\n >\n <Container\n background=\"none\"\n border\n borderColor=\"neutral\"\n roundedSize=\"xl\"\n padding=\"md\"\n className=\"gap-3\"\n >\n <p className=\"font-medium text-sm\">\n {typeSwitch.disablePickerTitle}\n </p>\n <p className=\"text-muted text-xs\">\n {typeSwitch.disablePickerDescription}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {allQualifiedSiblings.map((sibling) => (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => {\n onSelectSibling?.(sibling);\n setShowSiblingPicker(false);\n }}\n className=\"cursor-pointer rounded-lg border border-border px-3 py-1 text-xs transition-colors hover:bg-text/10\"\n >\n {sibling.variant !== undefined && (\n <span>\n {qualifierSection.variant}: {sibling.variant}\n </span>\n )}\n {sibling.item !== undefined && (\n <span>\n {qualifierSection.item}: {sibling.item}\n </span>\n )}\n {sibling.meta !== undefined && (\n <span>\n {qualifierSection.meta}: {String(sibling.meta.id)}\n </span>\n )}\n </button>\n ))}\n </div>\n </Container>\n </motion.div>\n )}\n </AnimatePresence>\n </Container>\n\n {/* Sibling dictionaries panel */}\n <Container\n className=\"gap-4\"\n padding=\"md\"\n roundedSize=\"2xl\"\n background=\"none\"\n border\n borderColor=\"neutral\"\n >\n <p className=\"font-semibold text-sm\">{siblingContent.title}</p>\n <Loader isLoading={isLoadingSiblings}>\n {!hasSiblings && (\n <p className=\"text-muted text-sm\">{siblingContent.noSiblings}</p>\n )}\n\n {allItemDicts.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"font-medium text-muted text-xs uppercase tracking-wide\">\n {siblingContent.collectionItems}\n </p>\n <Pagination\n currentPage={\n allItemDicts.findIndex(\n (dictionaryEl) =>\n dictionaryEl.localId === dictionary.localId\n ) + 1 || 1\n }\n totalPages={allItemDicts.length}\n onPageChange={(page) => {\n const target = allItemDicts[page - 1];\n if (target && onSelectSibling) {\n onSelectSibling(target);\n }\n }}\n showPrevNext\n />\n <div className=\"mt-1 flex flex-wrap gap-2\">\n {allItemDicts.map((sibling) => {\n const isActive = sibling.localId === dictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && onSelectSibling?.(sibling)}\n className={cn(\n 'rounded-lg px-3 py-1 text-xs transition-colors',\n isActive\n ? 'bg-text font-semibold text-text-opposite'\n : 'cursor-pointer border border-border hover:bg-text/10'\n )}\n >\n {siblingContent.itemIndex} {sibling.item}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {allVariantDicts.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"font-medium text-muted text-xs uppercase tracking-wide\">\n {siblingContent.variants}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {allVariantDicts.map((sibling) => {\n const isActive = sibling.localId === dictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && onSelectSibling?.(sibling)}\n className={cn(\n 'rounded-lg px-3 py-1 text-xs transition-colors',\n isActive\n ? 'bg-text font-semibold text-text-opposite'\n : 'cursor-pointer border border-border hover:bg-text/10'\n )}\n >\n {sibling.variant}\n </button>\n );\n })}\n </div>\n </div>\n )}\n\n {allMetaDicts.length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <p className=\"font-medium text-muted text-xs uppercase tracking-wide\">\n {siblingContent.metaRecords}\n </p>\n <div className=\"flex flex-wrap gap-2\">\n {allMetaDicts.map((sibling) => {\n const isActive = sibling.localId === dictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && onSelectSibling?.(sibling)}\n className={cn(\n 'rounded-lg px-3 py-1 text-xs transition-colors',\n isActive\n ? 'bg-text font-semibold text-text-opposite'\n : 'cursor-pointer border border-border hover:bg-text/10'\n )}\n >\n {sibling.meta?.id}\n </button>\n );\n })}\n </div>\n </div>\n )}\n </Loader>\n </Container>\n\n <div className=\"flex flex-wrap items-center justify-end gap-2 max-md:flex-col\">\n <FormButton\n type=\"button\"\n size=\"icon-md\"\n label={auditButton.label.value}\n Icon={WandSparkles}\n variant=\"outline\"\n color=\"text\"\n className=\"max-md:w-full\"\n onClick={handleOnAuditFile}\n disabled={isSubmitting || isAuditing}\n isLoading={isAuditing}\n />\n </div>\n </Form>\n );\n};\n"],"mappings":"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"}
|