@intlayer/design-system 9.0.0-canary.7 → 9.0.0-canary.8

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.
Files changed (45) hide show
  1. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +39 -67
  2. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
  3. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +46 -72
  4. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
  5. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +0 -62
  6. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
  7. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +2 -4
  8. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
  9. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +64 -145
  10. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
  11. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +1 -1
  12. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
  13. package/dist/esm/components/Form/elements/OTPElement.mjs +1 -1
  14. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
  15. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -1
  16. package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
  17. package/dist/esm/components/Modal/Modal.mjs +2 -2
  18. package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -1
  19. package/dist/esm/components/Pagination/Pagination.mjs +1 -1
  20. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  21. package/dist/esm/components/Tab/Tab.mjs +1 -1
  22. package/dist/esm/hooks/index.mjs +8 -8
  23. package/dist/types/components/Badge/index.d.ts +1 -1
  24. package/dist/types/components/Button/Button.d.ts +3 -3
  25. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -2
  26. package/dist/types/components/Command/index.d.ts +1 -1
  27. package/dist/types/components/Container/index.d.ts +5 -5
  28. package/dist/types/components/DictionaryFieldEditor/ContentEditor.d.ts.map +1 -1
  29. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
  30. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +0 -62
  31. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
  32. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +3 -5
  33. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
  34. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
  35. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +1 -1
  36. package/dist/types/components/Input/Checkbox.d.ts +1 -1
  37. package/dist/types/components/Input/Radio.d.ts +1 -1
  38. package/dist/types/components/Link/Link.d.ts +2 -2
  39. package/dist/types/components/Pagination/Pagination.d.ts +1 -1
  40. package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +2 -2
  41. package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +1 -1
  42. package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
  43. package/dist/types/components/Tag/index.d.ts +2 -2
  44. package/dist/types/components/Toaster/Toast.d.ts +1 -1
  45. package/package.json +15 -15
@@ -15,8 +15,10 @@ import { useIntlayer } from "react-intlayer";
15
15
  import { getContentNodeByKeyPath } from "@intlayer/core/dictionaryManipulator";
16
16
 
17
17
  //#region src/components/DictionaryFieldEditor/ContentEditor.tsx
18
+ /** Render a variant (named string or structured object) for display. */
19
+ const formatVariant = (variant) => variant !== null && typeof variant === "object" ? JSON.stringify(variant) : variant ?? "";
18
20
  const ContentEditor = ({ dictionary, isDarkMode }) => {
19
- const { itemPagination, variantSwitcher, metaSwitcher } = useIntlayer("content-editor");
21
+ const { itemPagination, variantSwitcher } = useIntlayer("content-editor");
20
22
  const { editedContent } = useEditedContent();
21
23
  const { focusedContent, setFocusedContentKeyPath: _setFocusedContentKeyPath } = useFocusUnmergedDictionary();
22
24
  const [, startTransition] = useTransition();
@@ -25,7 +27,7 @@ const ContentEditor = ({ dictionary, isDarkMode }) => {
25
27
  useEffect(() => {
26
28
  setActiveDictionary(dictionary);
27
29
  }, [dictionary.localId]);
28
- const hasQualifier = dictionary.item !== void 0 || dictionary.variant !== void 0 || dictionary.meta !== void 0;
30
+ const hasQualifier = dictionary.item !== void 0 || dictionary.variant !== void 0;
29
31
  const { data: siblingsData } = useGetDictionaries({ keys: [dictionary.key] }, { enabled: hasQualifier && !!dictionary.key });
30
32
  const allSiblings = useMemo(() => siblingsData?.data ?? [], [siblingsData]);
31
33
  const itemDicts = useMemo(() => {
@@ -36,10 +38,6 @@ const ContentEditor = ({ dictionary, isDarkMode }) => {
36
38
  if (dictionary.variant === void 0) return [];
37
39
  return allSiblings.filter((d) => d.variant !== void 0);
38
40
  }, [dictionary, allSiblings]);
39
- const metaDicts = useMemo(() => {
40
- if (dictionary.meta === void 0) return [];
41
- return allSiblings.filter((d) => d.meta !== void 0);
42
- }, [dictionary, allSiblings]);
43
41
  const switchSibling = useCallback((sibling) => {
44
42
  setActiveDictionary(sibling);
45
43
  setFocusedContentKeyPath([]);
@@ -59,71 +57,45 @@ const ContentEditor = ({ dictionary, isDarkMode }) => {
59
57
  }, []);
60
58
  const currentItemIndex = itemDicts.findIndex((dictionary) => dictionary.localId === activeDictionary.localId);
61
59
  const currentVariant = activeDictionary.variant;
62
- const currentMetaId = activeDictionary.meta?.id;
63
60
  return /* @__PURE__ */ jsxs("div", { children: [
64
61
  hasQualifier && /* @__PURE__ */ jsxs("div", {
65
62
  className: "mb-4 flex flex-wrap items-center gap-4",
66
- children: [
67
- itemDicts.length > 0 && /* @__PURE__ */ jsxs("div", {
68
- className: "flex items-center gap-2",
69
- children: [/* @__PURE__ */ jsx("span", {
63
+ children: [itemDicts.length > 0 && /* @__PURE__ */ jsxs("div", {
64
+ className: "flex items-center gap-2",
65
+ children: [/* @__PURE__ */ jsx("span", {
66
+ className: "font-medium text-muted text-xs",
67
+ children: itemPagination.label
68
+ }), /* @__PURE__ */ jsx(Pagination, {
69
+ currentPage: currentItemIndex >= 0 ? currentItemIndex + 1 : 1,
70
+ totalPages: itemDicts.length,
71
+ onPageChange: (page) => {
72
+ const target = itemDicts[page - 1];
73
+ if (target) switchSibling(target);
74
+ },
75
+ size: "sm"
76
+ })]
77
+ }), variantDicts.length > 0 && /* @__PURE__ */ jsxs("div", {
78
+ className: "flex flex-wrap items-center gap-2",
79
+ children: [
80
+ /* @__PURE__ */ jsxs("span", {
70
81
  className: "font-medium text-muted text-xs",
71
- children: itemPagination.label
72
- }), /* @__PURE__ */ jsx(Pagination, {
73
- currentPage: currentItemIndex >= 0 ? currentItemIndex + 1 : 1,
74
- totalPages: itemDicts.length,
75
- onPageChange: (page) => {
76
- const target = itemDicts[page - 1];
77
- if (target) switchSibling(target);
78
- },
79
- size: "sm"
80
- })]
81
- }),
82
- variantDicts.length > 0 && /* @__PURE__ */ jsxs("div", {
83
- className: "flex flex-wrap items-center gap-2",
84
- children: [
85
- /* @__PURE__ */ jsxs("span", {
86
- className: "font-medium text-muted text-xs",
87
- children: [variantSwitcher.label, ":"]
88
- }),
89
- variantDicts.map((sibling) => {
90
- const isActive = sibling.localId === activeDictionary.localId;
91
- return /* @__PURE__ */ jsx("button", {
92
- type: "button",
93
- onClick: () => !isActive && switchSibling(sibling),
94
- className: `rounded-lg px-3 py-1 text-xs transition-colors ${isActive ? "bg-text font-semibold text-text-opposite" : "cursor-pointer border border-border hover:bg-text/10"}`,
95
- children: sibling.variant
96
- }, sibling.localId);
97
- }),
98
- currentVariant !== void 0 && !variantDicts.some((d) => d.localId === dictionary.localId) && /* @__PURE__ */ jsx("span", {
99
- className: "rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs",
100
- children: currentVariant
101
- })
102
- ]
103
- }),
104
- metaDicts.length > 0 && /* @__PURE__ */ jsxs("div", {
105
- className: "flex flex-wrap items-center gap-2",
106
- children: [
107
- /* @__PURE__ */ jsxs("span", {
108
- className: "font-medium text-muted text-xs",
109
- children: [metaSwitcher.label, ":"]
110
- }),
111
- metaDicts.map((sibling) => {
112
- const isActive = sibling.localId === activeDictionary.localId;
113
- return /* @__PURE__ */ jsx("button", {
114
- type: "button",
115
- onClick: () => !isActive && switchSibling(sibling),
116
- className: `rounded-lg px-3 py-1 text-xs transition-colors ${isActive ? "bg-text font-semibold text-text-opposite" : "cursor-pointer border border-border hover:bg-text/10"}`,
117
- children: sibling.meta?.id
118
- }, sibling.localId);
119
- }),
120
- currentMetaId !== void 0 && !metaDicts.some((d) => d.localId === dictionary.localId) && /* @__PURE__ */ jsx("span", {
121
- className: "rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs",
122
- children: currentMetaId
123
- })
124
- ]
125
- })
126
- ]
82
+ children: [variantSwitcher.label, ":"]
83
+ }),
84
+ variantDicts.map((sibling) => {
85
+ const isActive = sibling.localId === activeDictionary.localId;
86
+ return /* @__PURE__ */ jsx("button", {
87
+ type: "button",
88
+ onClick: () => !isActive && switchSibling(sibling),
89
+ className: `rounded-lg px-3 py-1 text-xs transition-colors ${isActive ? "bg-text font-semibold text-text-opposite" : "cursor-pointer border border-border hover:bg-text/10"}`,
90
+ children: formatVariant(sibling.variant)
91
+ }, sibling.localId);
92
+ }),
93
+ currentVariant !== void 0 && !variantDicts.some((d) => d.localId === dictionary.localId) && /* @__PURE__ */ jsx("span", {
94
+ className: "rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs",
95
+ children: formatVariant(currentVariant)
96
+ })
97
+ ]
98
+ })]
127
99
  }),
128
100
  /* @__PURE__ */ jsxs("div", {
129
101
  className: "mb-6 flex items-center justify-between gap-2",
@@ -1 +1 @@
1
- {"version":3,"file":"ContentEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/ContentEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useGetDictionaries } from '@api/index';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport {\n useEditedContent,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { Dictionary, LocalDictionaryId } from '@intlayer/types/dictionary';\nimport {\n type FC,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useState,\n useTransition,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Container } from '../Container';\nimport { LocaleSwitcherContent } from '../LocaleSwitcherContentDropDown';\nimport { Pagination } from '../Pagination';\nimport { TextEditorContainer } from './ContentEditorView/TextEditor';\nimport { getIsEditableSection } from './getIsEditableSection';\nimport { KeyPathBreadcrumb } from './KeyPathBreadcrumb';\nimport { NavigationViewNode } from './NavigationView/NavigationViewNode';\n\ntype NodeEditorProps = {\n dictionary: Dictionary;\n isDarkMode?: boolean;\n};\n\nexport const ContentEditor: FC<NodeEditorProps> = ({\n dictionary,\n isDarkMode,\n}) => {\n const { itemPagination, variantSwitcher, metaSwitcher } =\n useIntlayer('content-editor');\n const { editedContent } = useEditedContent();\n const {\n focusedContent,\n setFocusedContentKeyPath: _setFocusedContentKeyPath,\n } = useFocusUnmergedDictionary();\n const [, startTransition] = useTransition();\n const setFocusedContentKeyPath: typeof _setFocusedContentKeyPath = (\n keyPath\n ) => startTransition(() => _setFocusedContentKeyPath(keyPath));\n\n const [activeDictionary, setActiveDictionary] =\n useState<Dictionary>(dictionary);\n\n useEffect(() => {\n setActiveDictionary(dictionary);\n }, [dictionary.localId]);\n\n const hasQualifier =\n dictionary.item !== undefined ||\n dictionary.variant !== undefined ||\n dictionary.meta !== undefined;\n\n const { data: siblingsData } = useGetDictionaries(\n { keys: [dictionary.key] },\n { enabled: hasQualifier && !!dictionary.key }\n );\n\n const allSiblings = useMemo<Dictionary[]>(\n () => (siblingsData?.data ?? []) as unknown as Dictionary[],\n [siblingsData]\n );\n\n const itemDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.item === undefined) return [];\n return allSiblings\n .filter((d) => d.item !== undefined)\n .sort((a, b) => (a.item ?? 0) - (b.item ?? 0));\n }, [dictionary, allSiblings]);\n\n const variantDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.variant === undefined) return [];\n return allSiblings.filter((d) => d.variant !== undefined);\n }, [dictionary, allSiblings]);\n\n const metaDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.meta === undefined) return [];\n return allSiblings.filter((d) => d.meta !== undefined);\n }, [dictionary, allSiblings]);\n\n const switchSibling = useCallback(\n (sibling: Dictionary) => {\n setActiveDictionary(sibling);\n setFocusedContentKeyPath([]);\n },\n [setFocusedContentKeyPath]\n );\n\n const { content, key, localId } = activeDictionary;\n const focusedKeyPath = focusedContent?.keyPath;\n const section =\n typeof editedContent?.[localId as LocalDictionaryId]?.content ===\n 'undefined'\n ? content\n : editedContent?.[localId as LocalDictionaryId]?.content;\n\n const currentLocale = useEditorLocale();\n const focusedSection = getContentNodeByKeyPath(\n section,\n focusedKeyPath ?? [],\n currentLocale\n );\n\n const deferredKeyPath = useDeferredValue(focusedKeyPath);\n const deferredSection = useDeferredValue(focusedSection);\n const isStale = deferredSection !== focusedSection;\n\n const isEditableBaseSection = getIsEditableSection(section);\n const isEditableFocusedSection = getIsEditableSection(deferredSection);\n\n useEffect(() => {\n if (typeof focusedSection === 'undefined') {\n setFocusedContentKeyPath(focusedContent?.keyPath?.slice(0, -1) ?? []);\n }\n }, []);\n\n const currentItemIndex = itemDicts.findIndex(\n (dictionary) => dictionary.localId === activeDictionary.localId\n );\n const currentVariant = activeDictionary.variant;\n const currentMetaId = activeDictionary.meta?.id;\n\n return (\n <div>\n {/* Qualifier navigation controls */}\n {hasQualifier && (\n <div className=\"mb-4 flex flex-wrap items-center gap-4\">\n {itemDicts.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {itemPagination.label}\n </span>\n <Pagination\n currentPage={currentItemIndex >= 0 ? currentItemIndex + 1 : 1}\n totalPages={itemDicts.length}\n onPageChange={(page) => {\n const target = itemDicts[page - 1];\n if (target) switchSibling(target);\n }}\n size=\"sm\"\n />\n </div>\n )}\n\n {variantDicts.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {variantSwitcher.label}:\n </span>\n {variantDicts.map((sibling) => {\n const isActive = sibling.localId === activeDictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && switchSibling(sibling)}\n className={`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 {currentVariant !== undefined &&\n !variantDicts.some((d) => d.localId === dictionary.localId) && (\n <span className=\"rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs\">\n {currentVariant}\n </span>\n )}\n </div>\n )}\n\n {metaDicts.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {metaSwitcher.label}:\n </span>\n {metaDicts.map((sibling) => {\n const isActive = sibling.localId === activeDictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && switchSibling(sibling)}\n className={`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 {currentMetaId !== undefined &&\n !metaDicts.some((d) => d.localId === dictionary.localId) && (\n <span className=\"rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs\">\n {currentMetaId}\n </span>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"mb-6 flex items-center justify-between gap-2\">\n <KeyPathBreadcrumb\n dictionaryKey={key}\n keyPath={focusedKeyPath ?? []}\n onClickKeyPath={setFocusedContentKeyPath}\n />\n <div className=\"flex items-center gap-2\">\n <LocaleSwitcherContent />\n </div>\n </div>\n <div className=\"flex flex-1 gap-2 overflow-visible max-md:flex-col\">\n {typeof section === 'object' &&\n section &&\n !isEditableBaseSection &&\n Object.keys(section).length > 0 && (\n <Container\n border\n background=\"none\"\n className=\"top-10 flex h-full flex-col items-start gap-0.5 overflow-auto p-2 md:sticky md:max-w-[50%]\"\n roundedSize=\"2xl\"\n transparency=\"xs\"\n >\n <NavigationViewNode\n keyPath={[]}\n section={section}\n dictionary={activeDictionary}\n />\n </Container>\n )}\n {(isEditableFocusedSection || (deferredKeyPath ?? []).length > 0) && (\n <div\n className={\n isStale\n ? 'pointer-events-none flex-1 opacity-50 transition-opacity'\n : 'flex-1 transition-opacity'\n }\n >\n <TextEditorContainer\n keyPath={deferredKeyPath ?? []}\n section={deferredSection}\n dictionary={activeDictionary}\n isDarkMode={isDarkMode}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ContentEditor.mjs","names":[],"sources":["../../../../src/components/DictionaryFieldEditor/ContentEditor.tsx"],"sourcesContent":["'use client';\n\nimport { useGetDictionaries } from '@api/index';\nimport { getContentNodeByKeyPath } from '@intlayer/core/dictionaryManipulator';\nimport {\n useEditedContent,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport type { Dictionary, LocalDictionaryId } from '@intlayer/types/dictionary';\nimport {\n type FC,\n useCallback,\n useDeferredValue,\n useEffect,\n useMemo,\n useState,\n useTransition,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Container } from '../Container';\nimport { LocaleSwitcherContent } from '../LocaleSwitcherContentDropDown';\nimport { Pagination } from '../Pagination';\nimport { TextEditorContainer } from './ContentEditorView/TextEditor';\nimport { getIsEditableSection } from './getIsEditableSection';\nimport { KeyPathBreadcrumb } from './KeyPathBreadcrumb';\nimport { NavigationViewNode } from './NavigationView/NavigationViewNode';\n\ntype NodeEditorProps = {\n dictionary: Dictionary;\n isDarkMode?: boolean;\n};\n\n/** Render a variant (named string or structured object) for display. */\nconst formatVariant = (\n variant: string | Record<string, string | number> | undefined\n): string =>\n variant !== null && typeof variant === 'object'\n ? JSON.stringify(variant)\n : (variant ?? '');\n\nexport const ContentEditor: FC<NodeEditorProps> = ({\n dictionary,\n isDarkMode,\n}) => {\n const { itemPagination, variantSwitcher } = useIntlayer('content-editor');\n const { editedContent } = useEditedContent();\n const {\n focusedContent,\n setFocusedContentKeyPath: _setFocusedContentKeyPath,\n } = useFocusUnmergedDictionary();\n const [, startTransition] = useTransition();\n const setFocusedContentKeyPath: typeof _setFocusedContentKeyPath = (\n keyPath\n ) => startTransition(() => _setFocusedContentKeyPath(keyPath));\n\n const [activeDictionary, setActiveDictionary] =\n useState<Dictionary>(dictionary);\n\n useEffect(() => {\n setActiveDictionary(dictionary);\n }, [dictionary.localId]);\n\n const hasQualifier =\n dictionary.item !== undefined || dictionary.variant !== undefined;\n\n const { data: siblingsData } = useGetDictionaries(\n { keys: [dictionary.key] },\n { enabled: hasQualifier && !!dictionary.key }\n );\n\n const allSiblings = useMemo<Dictionary[]>(\n () => (siblingsData?.data ?? []) as unknown as Dictionary[],\n [siblingsData]\n );\n\n const itemDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.item === undefined) return [];\n return allSiblings\n .filter((d) => d.item !== undefined)\n .sort((a, b) => (a.item ?? 0) - (b.item ?? 0));\n }, [dictionary, allSiblings]);\n\n const variantDicts = useMemo<Dictionary[]>(() => {\n if (dictionary.variant === undefined) return [];\n return allSiblings.filter((d) => d.variant !== undefined);\n }, [dictionary, allSiblings]);\n\n const switchSibling = useCallback(\n (sibling: Dictionary) => {\n setActiveDictionary(sibling);\n setFocusedContentKeyPath([]);\n },\n [setFocusedContentKeyPath]\n );\n\n const { content, key, localId } = activeDictionary;\n const focusedKeyPath = focusedContent?.keyPath;\n const section =\n typeof editedContent?.[localId as LocalDictionaryId]?.content ===\n 'undefined'\n ? content\n : editedContent?.[localId as LocalDictionaryId]?.content;\n\n const currentLocale = useEditorLocale();\n const focusedSection = getContentNodeByKeyPath(\n section,\n focusedKeyPath ?? [],\n currentLocale\n );\n\n const deferredKeyPath = useDeferredValue(focusedKeyPath);\n const deferredSection = useDeferredValue(focusedSection);\n const isStale = deferredSection !== focusedSection;\n\n const isEditableBaseSection = getIsEditableSection(section);\n const isEditableFocusedSection = getIsEditableSection(deferredSection);\n\n useEffect(() => {\n if (typeof focusedSection === 'undefined') {\n setFocusedContentKeyPath(focusedContent?.keyPath?.slice(0, -1) ?? []);\n }\n }, []);\n\n const currentItemIndex = itemDicts.findIndex(\n (dictionary) => dictionary.localId === activeDictionary.localId\n );\n const currentVariant = activeDictionary.variant;\n\n return (\n <div>\n {/* Qualifier navigation controls */}\n {hasQualifier && (\n <div className=\"mb-4 flex flex-wrap items-center gap-4\">\n {itemDicts.length > 0 && (\n <div className=\"flex items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {itemPagination.label}\n </span>\n <Pagination\n currentPage={currentItemIndex >= 0 ? currentItemIndex + 1 : 1}\n totalPages={itemDicts.length}\n onPageChange={(page) => {\n const target = itemDicts[page - 1];\n if (target) switchSibling(target);\n }}\n size=\"sm\"\n />\n </div>\n )}\n\n {variantDicts.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-muted text-xs\">\n {variantSwitcher.label}:\n </span>\n {variantDicts.map((sibling) => {\n const isActive = sibling.localId === activeDictionary.localId;\n return (\n <button\n key={sibling.localId}\n type=\"button\"\n onClick={() => !isActive && switchSibling(sibling)}\n className={`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 {formatVariant(sibling.variant)}\n </button>\n );\n })}\n {currentVariant !== undefined &&\n !variantDicts.some((d) => d.localId === dictionary.localId) && (\n <span className=\"rounded-lg bg-text px-3 py-1 font-semibold text-text-opposite text-xs\">\n {formatVariant(currentVariant)}\n </span>\n )}\n </div>\n )}\n </div>\n )}\n\n <div className=\"mb-6 flex items-center justify-between gap-2\">\n <KeyPathBreadcrumb\n dictionaryKey={key}\n keyPath={focusedKeyPath ?? []}\n onClickKeyPath={setFocusedContentKeyPath}\n />\n <div className=\"flex items-center gap-2\">\n <LocaleSwitcherContent />\n </div>\n </div>\n <div className=\"flex flex-1 gap-2 overflow-visible max-md:flex-col\">\n {typeof section === 'object' &&\n section &&\n !isEditableBaseSection &&\n Object.keys(section).length > 0 && (\n <Container\n border\n background=\"none\"\n className=\"top-10 flex h-full flex-col items-start gap-0.5 overflow-auto p-2 md:sticky md:max-w-[50%]\"\n roundedSize=\"2xl\"\n transparency=\"xs\"\n >\n <NavigationViewNode\n keyPath={[]}\n section={section}\n dictionary={activeDictionary}\n />\n </Container>\n )}\n {(isEditableFocusedSection || (deferredKeyPath ?? []).length > 0) && (\n <div\n className={\n isStale\n ? 'pointer-events-none flex-1 opacity-50 transition-opacity'\n : 'flex-1 transition-opacity'\n }\n >\n <TextEditorContainer\n keyPath={deferredKeyPath ?? []}\n section={deferredSection}\n dictionary={activeDictionary}\n isDarkMode={isDarkMode}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -22,7 +22,7 @@ import { AnimatePresence, motion } from "framer-motion";
22
22
  * Inner component rendered inside Form's FormProvider context so useWatch works.
23
23
  */
24
24
  const DictionaryCreationFormFields = ({ isSubmitting, isPending, projectsData }) => {
25
- const { keyInput, createDictionaryButton, projectInput, qualifierTypeSelect, itemInput, variantInput, metaIdInput } = useIntlayer("dictionary-form");
25
+ const { keyInput, createDictionaryButton, projectInput, qualifierTypeSelect, itemInput, variantInput } = useIntlayer("dictionary-form");
26
26
  const qualifierType = useWatch({ name: "qualifierType" }) ?? "none";
27
27
  return /* @__PURE__ */ jsxs(Fragment, { children: [
28
28
  /* @__PURE__ */ jsx(InputElement, {
@@ -53,76 +53,51 @@ const DictionaryCreationFormFields = ({ isSubmitting, isPending, projectsData })
53
53
  }),
54
54
  /* @__PURE__ */ jsxs(AnimatePresence, {
55
55
  mode: "wait",
56
- children: [
57
- qualifierType === "item" && /* @__PURE__ */ jsx(motion.div, {
58
- initial: {
59
- opacity: 0,
60
- height: 0
61
- },
62
- animate: {
63
- opacity: 1,
64
- height: "auto"
65
- },
66
- exit: {
67
- opacity: 0,
68
- height: 0
69
- },
70
- transition: { duration: .2 },
71
- className: "overflow-hidden",
72
- children: /* @__PURE__ */ jsx(InputElement, {
73
- name: "item",
74
- type: "number",
75
- label: itemInput.label.value,
76
- placeholder: itemInput.placeholder.value,
77
- description: itemInput.description.value,
78
- min: 1
79
- })
80
- }, "item-input"),
81
- qualifierType === "variant" && /* @__PURE__ */ jsx(motion.div, {
82
- initial: {
83
- opacity: 0,
84
- height: 0
85
- },
86
- animate: {
87
- opacity: 1,
88
- height: "auto"
89
- },
90
- exit: {
91
- opacity: 0,
92
- height: 0
93
- },
94
- transition: { duration: .2 },
95
- className: "overflow-hidden",
96
- children: /* @__PURE__ */ jsx(InputElement, {
97
- name: "variant",
98
- label: variantInput.label.value,
99
- placeholder: variantInput.placeholder.value,
100
- description: variantInput.description.value
101
- })
102
- }, "variant-input"),
103
- qualifierType === "meta" && /* @__PURE__ */ jsx(motion.div, {
104
- initial: {
105
- opacity: 0,
106
- height: 0
107
- },
108
- animate: {
109
- opacity: 1,
110
- height: "auto"
111
- },
112
- exit: {
113
- opacity: 0,
114
- height: 0
115
- },
116
- transition: { duration: .2 },
117
- className: "overflow-hidden",
118
- children: /* @__PURE__ */ jsx(InputElement, {
119
- name: "metaId",
120
- label: metaIdInput.label.value,
121
- placeholder: metaIdInput.placeholder.value,
122
- description: metaIdInput.description.value
123
- })
124
- }, "meta-input")
125
- ]
56
+ children: [qualifierType === "item" && /* @__PURE__ */ jsx(motion.div, {
57
+ initial: {
58
+ opacity: 0,
59
+ height: 0
60
+ },
61
+ animate: {
62
+ opacity: 1,
63
+ height: "auto"
64
+ },
65
+ exit: {
66
+ opacity: 0,
67
+ height: 0
68
+ },
69
+ transition: { duration: .2 },
70
+ className: "overflow-hidden",
71
+ children: /* @__PURE__ */ jsx(InputElement, {
72
+ name: "item",
73
+ type: "number",
74
+ label: itemInput.label.value,
75
+ placeholder: itemInput.placeholder.value,
76
+ description: itemInput.description.value,
77
+ min: 1
78
+ })
79
+ }, "item-input"), qualifierType === "variant" && /* @__PURE__ */ jsx(motion.div, {
80
+ initial: {
81
+ opacity: 0,
82
+ height: 0
83
+ },
84
+ animate: {
85
+ opacity: 1,
86
+ height: "auto"
87
+ },
88
+ exit: {
89
+ opacity: 0,
90
+ height: 0
91
+ },
92
+ transition: { duration: .2 },
93
+ className: "overflow-hidden",
94
+ children: /* @__PURE__ */ jsx(InputElement, {
95
+ name: "variant",
96
+ label: variantInput.label.value,
97
+ placeholder: variantInput.placeholder.value,
98
+ description: variantInput.description.value
99
+ })
100
+ }, "variant-input")]
126
101
  }),
127
102
  /* @__PURE__ */ jsx(Button, {
128
103
  className: "mt-12 ml-auto",
@@ -149,7 +124,6 @@ const DictionaryCreationForm = ({ onDictionaryCreated }) => {
149
124
  const qualifiers = {};
150
125
  if (data.qualifierType === "item" && data.item !== void 0) qualifiers.item = data.item;
151
126
  else if (data.qualifierType === "variant" && data.variant) qualifiers.variant = data.variant;
152
- else if (data.qualifierType === "meta" && data.metaId) qualifiers.meta = { id: data.metaId };
153
127
  addDictionary({ dictionary: {
154
128
  key: data.key,
155
129
  projectIds: data.projectIds,
@@ -1 +1 @@
1
- {"version":3,"file":"DictionaryCreationForm.mjs","names":["FormInput","FormMultiSelect","FormSelect","FormButton","useForm"],"sources":["../../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { useAddDictionary, useGetProjects } from '@api/index';\nimport { useSession } from '@api/useAuth';\nimport {\n Form,\n FormButton,\n FormInput,\n FormMultiSelect,\n FormSelect,\n useForm,\n} from '@components/Form';\nimport { MultiSelect, Select } from '@components/Select';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport type { FC } from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useIntlayer } from 'react-intlayer';\nimport {\n type DictionaryFormData,\n QUALIFIER_TYPES,\n type QualifierType,\n useDictionarySchema,\n} from './useDictionaryFormSchema';\n\ntype DictionaryCreationFormProps = {\n onDictionaryCreated?: () => void;\n};\n\n/**\n * Inner component rendered inside Form's FormProvider context so useWatch works.\n */\nconst DictionaryCreationFormFields: FC<{\n isSubmitting: boolean;\n isPending: boolean;\n projectsData: ReturnType<typeof useGetProjects>['data'];\n}> = ({ isSubmitting, isPending, projectsData }) => {\n const {\n keyInput,\n createDictionaryButton,\n projectInput,\n qualifierTypeSelect,\n itemInput,\n variantInput,\n metaIdInput,\n } = useIntlayer('dictionary-form');\n\n const qualifierType = (useWatch({ name: 'qualifierType' }) ??\n 'none') as QualifierType;\n\n return (\n <>\n <FormInput\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <FormMultiSelect name=\"projectIds\" label={projectInput.label.value}>\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projectsData?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <MultiSelect.List>\n {projectsData?.data?.map((project) => (\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 </MultiSelect.Content>\n </FormMultiSelect>\n\n <FormSelect\n name=\"qualifierType\"\n label={qualifierTypeSelect.label.value}\n description={qualifierTypeSelect.description.value}\n >\n <Select.Trigger>\n <Select.Value />\n </Select.Trigger>\n <Select.Content>\n {QUALIFIER_TYPES.map((type) => (\n <Select.Item key={type} value={type}>\n {\n (\n qualifierTypeSelect as Record<\n string,\n { value: string } | string\n >\n )[type]\n }\n </Select.Item>\n ))}\n </Select.Content>\n </FormSelect>\n\n <AnimatePresence mode=\"wait\">\n {qualifierType === 'item' && (\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 className=\"overflow-hidden\"\n >\n <FormInput\n name=\"item\"\n type=\"number\"\n label={itemInput.label.value}\n placeholder={itemInput.placeholder.value}\n description={itemInput.description.value}\n min={1}\n />\n </motion.div>\n )}\n\n {qualifierType === '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 className=\"overflow-hidden\"\n >\n <FormInput\n name=\"variant\"\n label={variantInput.label.value}\n placeholder={variantInput.placeholder.value}\n description={variantInput.description.value}\n />\n </motion.div>\n )}\n\n {qualifierType === '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 className=\"overflow-hidden\"\n >\n <FormInput\n name=\"metaId\"\n label={metaIdInput.label.value}\n placeholder={metaIdInput.placeholder.value}\n description={metaIdInput.description.value}\n />\n </motion.div>\n )}\n </AnimatePresence>\n\n <FormButton\n className=\"mt-12 ml-auto\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting || isPending}\n label={createDictionaryButton.ariaLabel.value}\n isFullWidth\n >\n {createDictionaryButton.text}\n </FormButton>\n </>\n );\n};\n\nexport const DictionaryCreationForm: FC<DictionaryCreationFormProps> = ({\n onDictionaryCreated,\n}) => {\n const { session } = useSession();\n const { project } = session ?? {};\n const { mutate: addDictionary, isPending } = useAddDictionary();\n const { data: projectsData } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?.id));\n const { form, isSubmitting } = useForm(DictionarySchema, {\n defaultValues: {\n projectIds: [project?.id],\n qualifierType: 'none',\n },\n });\n\n const onSubmitSuccess = (data: DictionaryFormData) => {\n const qualifiers: Record<string, unknown> = {};\n if (data.qualifierType === 'item' && data.item !== undefined) {\n qualifiers.item = data.item;\n } else if (data.qualifierType === 'variant' && data.variant) {\n qualifiers.variant = data.variant;\n } else if (data.qualifierType === 'meta' && data.metaId) {\n qualifiers.meta = { id: data.metaId };\n }\n\n addDictionary(\n {\n dictionary: {\n key: data.key,\n projectIds: data.projectIds,\n ...qualifiers,\n },\n },\n {\n onSuccess: () => {\n onDictionaryCreated?.();\n },\n }\n );\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"m-auto w-full max-w-100\"\n {...form}\n >\n <DictionaryCreationFormFields\n isSubmitting={isSubmitting}\n isPending={isPending}\n projectsData={projectsData}\n />\n </Form>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"DictionaryCreationForm.mjs","names":["FormInput","FormMultiSelect","FormSelect","FormButton","useForm"],"sources":["../../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.tsx"],"sourcesContent":["'use client';\n\nimport { useAddDictionary, useGetProjects } from '@api/index';\nimport { useSession } from '@api/useAuth';\nimport {\n Form,\n FormButton,\n FormInput,\n FormMultiSelect,\n FormSelect,\n useForm,\n} from '@components/Form';\nimport { MultiSelect, Select } from '@components/Select';\nimport { AnimatePresence, motion } from 'framer-motion';\nimport type { FC } from 'react';\nimport { useWatch } from 'react-hook-form';\nimport { useIntlayer } from 'react-intlayer';\nimport {\n type DictionaryFormData,\n QUALIFIER_TYPES,\n type QualifierType,\n useDictionarySchema,\n} from './useDictionaryFormSchema';\n\ntype DictionaryCreationFormProps = {\n onDictionaryCreated?: () => void;\n};\n\n/**\n * Inner component rendered inside Form's FormProvider context so useWatch works.\n */\nconst DictionaryCreationFormFields: FC<{\n isSubmitting: boolean;\n isPending: boolean;\n projectsData: ReturnType<typeof useGetProjects>['data'];\n}> = ({ isSubmitting, isPending, projectsData }) => {\n const {\n keyInput,\n createDictionaryButton,\n projectInput,\n qualifierTypeSelect,\n itemInput,\n variantInput,\n } = useIntlayer('dictionary-form');\n\n const qualifierType = (useWatch({ name: 'qualifierType' }) ??\n 'none') as QualifierType;\n\n return (\n <>\n <FormInput\n name=\"key\"\n label={keyInput.label.value}\n placeholder={keyInput.placeholder.value}\n isRequired\n />\n\n <FormMultiSelect name=\"projectIds\" label={projectInput.label.value}>\n <MultiSelect.Trigger\n getBadgeValue={(value) =>\n projectsData?.data?.find((project) => String(project.id) === value)\n ?.name ?? value\n }\n >\n <MultiSelect.Input placeholder={projectInput.placeholder.value} />\n </MultiSelect.Trigger>\n <MultiSelect.Content>\n <MultiSelect.List>\n {projectsData?.data?.map((project) => (\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 </MultiSelect.Content>\n </FormMultiSelect>\n\n <FormSelect\n name=\"qualifierType\"\n label={qualifierTypeSelect.label.value}\n description={qualifierTypeSelect.description.value}\n >\n <Select.Trigger>\n <Select.Value />\n </Select.Trigger>\n <Select.Content>\n {QUALIFIER_TYPES.map((type) => (\n <Select.Item key={type} value={type}>\n {\n (\n qualifierTypeSelect as Record<\n string,\n { value: string } | string\n >\n )[type]\n }\n </Select.Item>\n ))}\n </Select.Content>\n </FormSelect>\n\n <AnimatePresence mode=\"wait\">\n {qualifierType === 'item' && (\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 className=\"overflow-hidden\"\n >\n <FormInput\n name=\"item\"\n type=\"number\"\n label={itemInput.label.value}\n placeholder={itemInput.placeholder.value}\n description={itemInput.description.value}\n min={1}\n />\n </motion.div>\n )}\n\n {qualifierType === '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 className=\"overflow-hidden\"\n >\n <FormInput\n name=\"variant\"\n label={variantInput.label.value}\n placeholder={variantInput.placeholder.value}\n description={variantInput.description.value}\n />\n </motion.div>\n )}\n </AnimatePresence>\n\n <FormButton\n className=\"mt-12 ml-auto\"\n type=\"submit\"\n color=\"text\"\n isLoading={isSubmitting || isPending}\n label={createDictionaryButton.ariaLabel.value}\n isFullWidth\n >\n {createDictionaryButton.text}\n </FormButton>\n </>\n );\n};\n\nexport const DictionaryCreationForm: FC<DictionaryCreationFormProps> = ({\n onDictionaryCreated,\n}) => {\n const { session } = useSession();\n const { project } = session ?? {};\n const { mutate: addDictionary, isPending } = useAddDictionary();\n const { data: projectsData } = useGetProjects();\n const DictionarySchema = useDictionarySchema(String(project?.id));\n const { form, isSubmitting } = useForm(DictionarySchema, {\n defaultValues: {\n projectIds: [project?.id],\n qualifierType: 'none',\n },\n });\n\n const onSubmitSuccess = (data: DictionaryFormData) => {\n const qualifiers: Record<string, unknown> = {};\n if (data.qualifierType === 'item' && data.item !== undefined) {\n qualifiers.item = data.item;\n } else if (data.qualifierType === 'variant' && data.variant) {\n qualifiers.variant = data.variant;\n }\n\n addDictionary(\n {\n dictionary: {\n key: data.key,\n projectIds: data.projectIds,\n ...qualifiers,\n },\n },\n {\n onSuccess: () => {\n onDictionaryCreated?.();\n },\n }\n );\n };\n\n return (\n <Form\n schema={DictionarySchema}\n onSubmitSuccess={onSubmitSuccess}\n className=\"m-auto w-full max-w-100\"\n {...form}\n >\n <DictionaryCreationFormFields\n isSubmitting={isSubmitting}\n isPending={isPending}\n projectsData={projectsData}\n />\n </Form>\n );\n};\n"],"mappings":"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"}
@@ -334,68 +334,6 @@ const dictionaryFormContent = {
334
334
  uk: "Іменована альтернативна форма вмісту для A/B-тестування, сезонних банерів або прапорів функцій."
335
335
  })
336
336
  },
337
- metaIdInput: {
338
- label: t({
339
- en: "Meta ID",
340
- "en-GB": "Meta ID",
341
- fr: "ID méta",
342
- es: "ID meta",
343
- de: "Meta-ID",
344
- ja: "メタID",
345
- ko: "메타 ID",
346
- zh: "元ID",
347
- it: "ID meta",
348
- pt: "ID meta",
349
- hi: "मेटा ID",
350
- ar: "معرّف البيانات الوصفية",
351
- ru: "Мета-ID",
352
- tr: "Meta kimliği",
353
- pl: "ID meta",
354
- id: "ID meta",
355
- vi: "ID meta",
356
- uk: "Мета-ID"
357
- }),
358
- placeholder: t({
359
- en: "e.g. prod_abc",
360
- "en-GB": "e.g. prod_abc",
361
- fr: "par ex. prod_abc",
362
- es: "por ej. prod_abc",
363
- de: "z. B. prod_abc",
364
- ja: "例: prod_abc",
365
- ko: "예: prod_abc",
366
- zh: "例如: prod_abc",
367
- it: "es. prod_abc",
368
- pt: "ex. prod_abc",
369
- hi: "उदा. prod_abc",
370
- ar: "مثال: prod_abc",
371
- ru: "напр. prod_abc",
372
- tr: "ör. prod_abc",
373
- pl: "np. prod_abc",
374
- id: "mis. prod_abc",
375
- vi: "ví dụ: prod_abc",
376
- uk: "напр. prod_abc"
377
- }),
378
- description: t({
379
- en: "The discriminator ID used to resolve this record at runtime.",
380
- "en-GB": "The discriminator ID used to resolve this record at runtime.",
381
- fr: "L'ID discriminant utilisé pour résoudre cet enregistrement au moment de l'exécution.",
382
- es: "El ID discriminador utilizado para resolver este registro en tiempo de ejecución.",
383
- de: "Die Diskriminator-ID, die verwendet wird, um diesen Datensatz zur Laufzeit aufzulösen.",
384
- ja: "実行時にこのレコードを解決するために使用される識別子ID。",
385
- ko: "런타임에 이 레코드를 해결하는 데 사용되는 식별자 ID.",
386
- zh: "在运行时用于解析此记录的鉴别符ID。",
387
- it: "L'ID discriminante utilizzato per risolvere questo record in fase di esecuzione.",
388
- pt: "O ID discriminador usado para resolver este registro em tempo de execução.",
389
- hi: "रनटाइम पर इस रिकॉर्ड को हल करने के लिए उपयोग किया जाने वाला विवेचक ID।",
390
- ar: "معرف المميز المستخدم لحل هذا السجل في وقت التشغيل.",
391
- ru: "Идентификатор-дискриминатор, используемый для разрешения этой записи во время выполнения.",
392
- tr: "Bu kaydı çalışma zamanında çözümlemek için kullanılan ayırt edici kimlik.",
393
- pl: "Identyfikator dyskryminatora używany do rozwiązania tego rekordu w czasie wykonywania.",
394
- id: "ID pembeda yang digunakan untuk menyelesaikan rekaman ini saat runtime.",
395
- vi: "ID phân biệt được sử dụng để giải quyết bản ghi này lúc chạy.",
396
- uk: "Ідентифікатор-дискримінатор, що використовується для розв'язання цього запису під час виконання."
397
- })
398
- },
399
337
  createDictionaryButton: {
400
338
  text: t({
401
339
  en: "Create dictionary",
@@ -1 +1 @@
1
- {"version":3,"file":"dictionaryCreationForm.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const dictionaryFormContent = {\n key: 'dictionary-form',\n content: {\n keyInput: {\n label: t({\n en: 'Key',\n 'en-GB': 'Key',\n fr: 'Clé',\n es: 'Clave',\n de: 'Schlüssel',\n ja: 'キー',\n ko: '키',\n zh: '键',\n it: 'Chiave',\n pt: 'Chave',\n hi: 'कुंजी',\n ar: 'مفتاح',\n ru: 'Ключ',\n tr: 'Anahtar',\n pl: 'Klucz',\n id: 'Key',\n vi: 'Key',\n uk: 'Ключ',\n }),\n placeholder: t({\n en: 'Enter the key of your dictionary',\n 'en-GB': 'Enter the key of your dictionary',\n fr: 'Entrez la clé de votre dictionnaire',\n es: 'Ingrese la clave de su diccionario',\n de: 'Geben Sie den Schlüssel Ihres Wörterbuchs ein',\n ja: '辞書のキーを入力してください',\n ko: '사전의 키를 입력하세요',\n zh: '输入字典的键',\n it: 'Inserisci la chiave del tuo dizionario',\n pt: 'Insira a chave do seu dicionário',\n hi: 'अपने शब्दकोश की कुंजी दर्ज करें',\n ar: 'أدخل مفتاح القاموس الخاص بك',\n ru: 'Введите ключ вашего словаря',\n tr: 'Sözlüğünüzün anahtarını girin',\n pl: 'Wprowadź klucz słownika',\n id: 'Masukkan key dictionary Anda',\n vi: 'Nhập key của từ điển của bạn',\n uk: 'Введіть ключ вашого словника',\n }),\n },\n\n projectInput: {\n label: t({\n en: 'Projects',\n 'en-GB': 'Projects',\n fr: 'Projets',\n es: 'Proyectos',\n de: 'Projekte',\n ja: 'プロジェクト',\n ko: '프로젝트',\n zh: '项目',\n it: 'Progetti',\n pt: 'Projetos',\n hi: 'प्रोजेक्ट',\n ar: 'مشاريع',\n ru: 'Проекты',\n tr: 'Projeler',\n pl: 'Projekty',\n id: 'Projects',\n vi: 'Dự án',\n uk: 'Проєкти',\n }),\n placeholder: t({\n en: 'Select one or more projects to associate with your dictionary',\n 'en-GB':\n 'Select one or more projects to associate with your dictionary',\n fr: 'Sélectionnez un ou plusieurs projets à associer à votre dictionnaire',\n es: 'Seleccione uno o más proyectos para asociar con su diccionario',\n de: 'Wählen Sie ein oder mehrere Projekte aus, um sie mit Ihrem Wörterbuch zu verknüpfen',\n ja: '辞書に関連付けるプロジェクトを1つ以上選択してください',\n ko: '사전과 연결할 프로젝트를 하나 이상 선택하세요',\n zh: '选择一个或多个项目与您的字典关联',\n it: 'Seleziona uno o più progetti da associare al tuo dizionario',\n pt: 'Selecione um ou mais projetos para associar ao seu dicionário',\n hi: 'अपने शब्दकोश से जोड़ने के लिए एक या एक से अधिक प्रोजेक्ट चुनें',\n ar: 'حدد مشروعًا أو أكثر للربط مع قاموسك',\n ru: 'Выберите один или несколько проектов для связывания со словарем',\n tr: 'Sözlüğünüzle ilişkilendirmek için bir veya daha fazla proje seçin',\n pl: 'Wybierz jeden lub więcej projektów do powiązania z tym słownikiem',\n id: 'Pilih satu atau lebih Projects untuk dikaitkan dengan dictionary Anda',\n vi: 'Chọn một hoặc nhiều dự án để liên kết với từ điển của bạn',\n uk: \"Виберіть один або кілька проєктів, щоб пов'язати їх із вашим словником\",\n }),\n },\n\n qualifierTypeSelect: {\n label: t({\n en: 'Qualifier type',\n 'en-GB': 'Qualifier type',\n fr: 'Type de qualificateur',\n es: 'Tipo de calificador',\n de: 'Qualifikatortyp',\n ja: '修飾子タイプ',\n ko: '한정자 유형',\n zh: '限定符类型',\n it: 'Tipo di qualificatore',\n pt: 'Tipo de qualificador',\n hi: 'क्वालीफायर प्रकार',\n ar: 'نوع المؤهل',\n ru: 'Тип квалификатора',\n tr: 'Niteleyici türü',\n pl: 'Typ kwalifikatora',\n id: 'Jenis kualifikator',\n vi: 'Loại bộ định tính',\n uk: 'Тип кваліфікатора',\n }),\n description: t({\n en: 'Define whether this dictionary is a plain dictionary, a collection item, a named variant, or a meta record.',\n 'en-GB':\n 'Define whether this dictionary is a plain dictionary, a collection item, a named variant, or a meta record.',\n fr: 'Définit si ce dictionnaire est un dictionnaire simple, un élément de collection, une variante nommée ou un enregistrement méta.',\n es: 'Define si este diccionario es un diccionario simple, un elemento de colección, una variante nombrada o un registro meta.',\n de: 'Legt fest, ob dieses Wörterbuch ein normales Wörterbuch, ein Sammlungselement, eine benannte Variante oder ein Meta-Datensatz ist.',\n ja: 'このdictionaryが通常のdictionary、コレクション項目、名前付きバリアント、またはメタレコードのいずれかを定義します。',\n ko: '이 사전이 일반 사전, 컬렉션 항목, 명명된 변형 또는 메타 레코드인지 정의합니다.',\n zh: '定义此字典是普通字典、集合项、命名变体还是元记录。',\n it: 'Definisce se questo dizionario è un dizionario semplice, un elemento di raccolta, una variante denominata o un record meta.',\n pt: 'Define se este dicionário é um dicionário simples, um item de coleção, uma variante nomeada ou um registro meta.',\n hi: 'परिभाषित करता है कि यह शब्दकोश एक साधारण शब्दकोश, एक संग्रह आइटम, एक नामित संस्करण या एक मेटा रिकॉर्ड है।',\n ar: 'يحدد ما إذا كان هذا القاموس قاموسًا عاديًا أو عنصر مجموعة أو نوعًا مسمى أو سجل بيانات وصفية.',\n ru: 'Определяет, является ли этот словарь обычным словарём, элементом коллекции, именованным вариантом или мета-записью.',\n tr: 'Bu sözlüğün düz bir sözlük, koleksiyon öğesi, adlandırılmış varyant veya meta kayıt olup olmadığını tanımlar.',\n pl: 'Określa, czy ten słownik jest zwykłym słownikiem, elementem kolekcji, nazwaną wariantem lub rekordem meta.',\n id: 'Menentukan apakah dictionary ini adalah dictionary biasa, item koleksi, varian bernama, atau rekaman meta.',\n vi: 'Xác định liệu từ điển này là từ điển thông thường, mục trong bộ sưu tập, biến thể được đặt tên hay bản ghi meta.',\n uk: 'Визначає, чи є цей словник звичайним словником, елементом колекції, іменованим варіантом або метазаписом.',\n }),\n none: t({\n en: 'None (plain dictionary)',\n 'en-GB': 'None (plain dictionary)',\n fr: 'Aucun (dictionnaire simple)',\n es: 'Ninguno (diccionario simple)',\n de: 'Keiner (einfaches Wörterbuch)',\n ja: 'なし(通常の辞書)',\n ko: '없음 (일반 사전)',\n zh: '无(普通字典)',\n it: 'Nessuno (dizionario semplice)',\n pt: 'Nenhum (dicionário simples)',\n hi: 'कोई नहीं (सामान्य शब्दकोश)',\n ar: 'لا شيء (قاموس عادي)',\n ru: 'Нет (обычный словарь)',\n tr: 'Hiçbiri (düz sözlük)',\n pl: 'Brak (zwykły słownik)',\n id: 'Tidak ada (kamus biasa)',\n vi: 'Không có (từ điển thông thường)',\n uk: 'Жоден (звичайний словник)',\n }),\n item: t({\n en: 'Collection item',\n 'en-GB': 'Collection item',\n fr: 'Élément de collection',\n es: 'Elemento de colección',\n de: 'Sammlungselement',\n ja: 'コレクション項目',\n ko: '컬렉션 항목',\n zh: '集合项',\n it: 'Elemento di raccolta',\n pt: 'Item de coleção',\n hi: 'संग्रह आइटम',\n ar: 'عنصر مجموعة',\n ru: 'Элемент коллекции',\n tr: 'Koleksiyon öğesi',\n pl: 'Element kolekcji',\n id: 'Item koleksi',\n vi: 'Mục bộ sưu tập',\n uk: 'Елемент колекції',\n }),\n variant: t({\n en: 'Variant',\n 'en-GB': 'Variant',\n fr: 'Variante',\n es: 'Variante',\n de: 'Variante',\n ja: 'バリアント',\n ko: '변형',\n zh: '变体',\n it: 'Variante',\n pt: 'Variante',\n hi: 'संस्करण',\n ar: 'نوع',\n ru: 'Вариант',\n tr: 'Varyant',\n pl: 'Wariant',\n id: 'Varian',\n vi: 'Biến thể',\n uk: 'Варіант',\n }),\n meta: t({\n en: 'Meta record',\n 'en-GB': 'Meta record',\n fr: 'Enregistrement méta',\n es: 'Registro meta',\n de: 'Meta-Datensatz',\n ja: 'メタレコード',\n ko: '메타 레코드',\n zh: '元记录',\n it: 'Record meta',\n pt: 'Registro meta',\n hi: 'मेटा रिकॉर्ड',\n ar: 'سجل بيانات وصفية',\n ru: 'Мета-запись',\n tr: 'Meta kayıt',\n pl: 'Rekord meta',\n id: 'Rekaman meta',\n vi: 'Bản ghi meta',\n uk: 'Метазапис',\n }),\n },\n\n itemInput: {\n label: t({\n en: 'Item index',\n 'en-GB': 'Item index',\n fr: \"Index de l'élément\",\n es: 'Índice del elemento',\n de: 'Elementindex',\n ja: '項目インデックス',\n ko: '항목 인덱스',\n zh: '项目索引',\n it: \"Indice dell'elemento\",\n pt: 'Índice do item',\n hi: 'आइटम इंडेक्स',\n ar: 'مؤشر العنصر',\n ru: 'Индекс элемента',\n tr: 'Öğe dizini',\n pl: 'Indeks elementu',\n id: 'Indeks item',\n vi: 'Chỉ số mục',\n uk: 'Індекс елементу',\n }),\n placeholder: t({\n en: 'e.g. 1',\n 'en-GB': 'e.g. 1',\n fr: 'par ex. 1',\n es: 'por ej. 1',\n de: 'z. B. 1',\n ja: '例: 1',\n ko: '예: 1',\n zh: '例如: 1',\n it: 'es. 1',\n pt: 'ex. 1',\n hi: 'उदा. 1',\n ar: 'مثال: 1',\n ru: 'напр. 1',\n tr: 'ör. 1',\n pl: 'np. 1',\n id: 'mis. 1',\n vi: 'ví dụ: 1',\n uk: 'напр. 1',\n }),\n description: t({\n en: '1-based index of this item within the collection sharing the same key.',\n 'en-GB':\n '1-based index of this item within the collection sharing the same key.',\n fr: 'Index (base 1) de cet élément dans la collection partageant la même clé.',\n es: 'Índice de base 1 de este elemento dentro de la colección que comparte la misma clave.',\n de: '1-basierter Index dieses Elements innerhalb der Sammlung mit demselben Schlüssel.',\n ja: '同じキーを共有するコレクション内のこの項目の1ベースのインデックス。',\n ko: '동일한 키를 공유하는 컬렉션 내에서 이 항목의 1-기반 인덱스.',\n zh: '在共享同一键的集合中此项目的基于1的索引。',\n it: 'Indice (base 1) di questo elemento nella raccolta che condivide la stessa chiave.',\n pt: 'Índice de base 1 deste item dentro da coleção que compartilha a mesma chave.',\n hi: 'समान कुंजी साझा करने वाले संग्रह में इस आइटम का 1-आधारित इंडेक्स।',\n ar: 'مؤشر أساسه 1 لهذا العنصر ضمن المجموعة التي تشترك في نفس المفتاح.',\n ru: 'Индекс с основой 1 для данного элемента внутри коллекции, разделяющей тот же ключ.',\n tr: 'Aynı anahtarı paylaşan koleksiyon içindeki bu öğenin 1 tabanlı dizini.',\n pl: 'Indeks oparty na 1 tego elementu w kolekcji dzielącej ten sam klucz.',\n id: 'Indeks berbasis 1 dari item ini dalam koleksi yang berbagi kunci yang sama.',\n vi: 'Chỉ số dựa trên 1 của mục này trong bộ sưu tập chia sẻ cùng một khóa.',\n uk: 'Індекс з основою 1 для цього елементу всередині колекції, що ділиться тим самим ключем.',\n }),\n },\n\n variantInput: {\n label: t({\n en: 'Variant name',\n 'en-GB': 'Variant name',\n fr: 'Nom de variante',\n es: 'Nombre de variante',\n de: 'Variantenname',\n ja: 'バリアント名',\n ko: '변형 이름',\n zh: '变体名称',\n it: 'Nome variante',\n pt: 'Nome da variante',\n hi: 'वेरिएंट नाम',\n ar: 'اسم النوع',\n ru: 'Название варианта',\n tr: 'Varyant adı',\n pl: 'Nazwa wariantu',\n id: 'Nama varian',\n vi: 'Tên biến thể',\n uk: 'Назва варіанту',\n }),\n placeholder: t({\n en: 'e.g. black-friday',\n 'en-GB': 'e.g. black-friday',\n fr: 'par ex. black-friday',\n es: 'por ej. black-friday',\n de: 'z. B. black-friday',\n ja: '例: black-friday',\n ko: '예: black-friday',\n zh: '例如: black-friday',\n it: 'es. black-friday',\n pt: 'ex. black-friday',\n hi: 'उदा. black-friday',\n ar: 'مثال: black-friday',\n ru: 'напр. black-friday',\n tr: 'ör. black-friday',\n pl: 'np. black-friday',\n id: 'mis. black-friday',\n vi: 'ví dụ: black-friday',\n uk: 'напр. black-friday',\n }),\n description: t({\n en: 'Named alternative content shape for A/B testing, seasonal banners, or feature flags.',\n 'en-GB':\n 'Named alternative content shape for A/B testing, seasonal banners, or feature flags.',\n fr: 'Forme de contenu alternative nommée pour les tests A/B, les bannières saisonnières ou les drapeaux de fonctionnalité.',\n es: 'Forma de contenido alternativa nombrada para pruebas A/B, banners estacionales o indicadores de funciones.',\n de: 'Benannte alternative Inhaltsform für A/B-Tests, saisonale Banner oder Feature-Flags.',\n ja: 'A/Bテスト、季節バナー、フィーチャーフラグのための名前付き代替コンテンツ形式。',\n ko: 'A/B 테스트, 계절 배너 또는 기능 플래그를 위한 명명된 대체 콘텐츠 형태.',\n zh: '用于A/B测试、季节性横幅或功能标志的命名替代内容形状。',\n it: 'Forma di contenuto alternativa denominata per test A/B, banner stagionali o flag delle funzionalità.',\n pt: 'Forma de conteúdo alternativa nomeada para testes A/B, banners sazonais ou sinalizadores de recursos.',\n hi: 'A/B परीक्षण, मौसमी बैनर, या फ़ीचर फ़्लैग के लिए नामित वैकल्पिक सामग्री आकार।',\n ar: 'شكل محتوى بديل مسمى لاختبار A/B أو اللافتات الموسمية أو علامات الميزات.',\n ru: 'Именованная альтернативная форма контента для A/B-тестирования, сезонных баннеров или флагов функций.',\n tr: 'A/B testi, sezonluk bannerlar veya özellik bayrakları için adlandırılmış alternatif içerik şekli.',\n pl: 'Nazwana alternatywna forma treści dla testów A/B, sezonowych banerów lub flag funkcji.',\n id: 'Bentuk konten alternatif bernama untuk pengujian A/B, banner musiman, atau tanda fitur.',\n vi: 'Hình dạng nội dung thay thế được đặt tên cho thử nghiệm A/B, biểu ngữ theo mùa hoặc cờ tính năng.',\n uk: 'Іменована альтернативна форма вмісту для A/B-тестування, сезонних банерів або прапорів функцій.',\n }),\n },\n\n metaIdInput: {\n label: t({\n en: 'Meta ID',\n 'en-GB': 'Meta ID',\n fr: 'ID méta',\n es: 'ID meta',\n de: 'Meta-ID',\n ja: 'メタID',\n ko: '메타 ID',\n zh: '元ID',\n it: 'ID meta',\n pt: 'ID meta',\n hi: 'मेटा ID',\n ar: 'معرّف البيانات الوصفية',\n ru: 'Мета-ID',\n tr: 'Meta kimliği',\n pl: 'ID meta',\n id: 'ID meta',\n vi: 'ID meta',\n uk: 'Мета-ID',\n }),\n placeholder: t({\n en: 'e.g. prod_abc',\n 'en-GB': 'e.g. prod_abc',\n fr: 'par ex. prod_abc',\n es: 'por ej. prod_abc',\n de: 'z. B. prod_abc',\n ja: '例: prod_abc',\n ko: '예: prod_abc',\n zh: '例如: prod_abc',\n it: 'es. prod_abc',\n pt: 'ex. prod_abc',\n hi: 'उदा. prod_abc',\n ar: 'مثال: prod_abc',\n ru: 'напр. prod_abc',\n tr: 'ör. prod_abc',\n pl: 'np. prod_abc',\n id: 'mis. prod_abc',\n vi: 'ví dụ: prod_abc',\n uk: 'напр. prod_abc',\n }),\n description: t({\n en: 'The discriminator ID used to resolve this record at runtime.',\n 'en-GB': 'The discriminator ID used to resolve this record at runtime.',\n fr: \"L'ID discriminant utilisé pour résoudre cet enregistrement au moment de l'exécution.\",\n es: 'El ID discriminador utilizado para resolver este registro en tiempo de ejecución.',\n de: 'Die Diskriminator-ID, die verwendet wird, um diesen Datensatz zur Laufzeit aufzulösen.',\n ja: '実行時にこのレコードを解決するために使用される識別子ID。',\n ko: '런타임에 이 레코드를 해결하는 데 사용되는 식별자 ID.',\n zh: '在运行时用于解析此记录的鉴别符ID。',\n it: \"L'ID discriminante utilizzato per risolvere questo record in fase di esecuzione.\",\n pt: 'O ID discriminador usado para resolver este registro em tempo de execução.',\n hi: 'रनटाइम पर इस रिकॉर्ड को हल करने के लिए उपयोग किया जाने वाला विवेचक ID।',\n ar: 'معرف المميز المستخدم لحل هذا السجل في وقت التشغيل.',\n ru: 'Идентификатор-дискриминатор, используемый для разрешения этой записи во время выполнения.',\n tr: 'Bu kaydı çalışma zamanında çözümlemek için kullanılan ayırt edici kimlik.',\n pl: 'Identyfikator dyskryminatora używany do rozwiązania tego rekordu w czasie wykonywania.',\n id: 'ID pembeda yang digunakan untuk menyelesaikan rekaman ini saat runtime.',\n vi: 'ID phân biệt được sử dụng để giải quyết bản ghi này lúc chạy.',\n uk: \"Ідентифікатор-дискримінатор, що використовується для розв'язання цього запису під час виконання.\",\n }),\n },\n\n createDictionaryButton: {\n text: t({\n en: 'Create dictionary',\n 'en-GB': 'Create dictionary',\n fr: 'Créer un dictionnaire',\n es: 'Crear un diccionario',\n de: 'Wörterbuch erstellen',\n ja: '辞書を作成',\n ko: '사전 만들기',\n zh: '创建字典',\n it: 'Crea dizionario',\n pt: 'Criar dicionário',\n hi: 'शब्दकोश बनाएँ',\n ar: 'إنشاء قاموس',\n ru: 'Создать словарь',\n tr: 'Sözlük oluştur',\n pl: 'Utwórz słownik',\n id: 'Buat dictionary',\n vi: 'Tạo từ điển',\n uk: 'Створити словник',\n }),\n ariaLabel: t({\n en: 'Click to create dictionary',\n 'en-GB': 'Click to create dictionary',\n fr: 'Cliquez pour créer un dictionnaire',\n es: 'Haga clic para crear un diccionario',\n de: 'Klicken Sie, um ein Wörterbuch zu erstellen',\n ja: '辞書を作成するにはクリックしてください',\n ko: '사전을 만들려면 클릭하세요',\n zh: '点击创建字典',\n it: 'Clicca per creare un dizionario',\n pt: 'Clique para criar dicionário',\n hi: 'शब्दकोश बनाने के लिए क्लिक करें',\n ar: 'انقر لإنشاء قاموس',\n ru: 'Нажмите, чтобы создать словарь',\n tr: 'Sözlük oluşturmak için tıklayın',\n pl: 'Kliknij, aby utworzyć słownik',\n id: 'Klik untuk membuat dictionary',\n vi: 'Nhấn để tạo từ điển',\n uk: 'Натисніть, щоб створити словник',\n }),\n },\n },\n title: 'Dictionary form',\n description:\n 'Content declarations for the dictionary creation form, including labels, placeholders, titles, descriptions, and button texts for managing dictionaries within Intlayer.',\n tags: ['form', 'dictionary creation', 'intlayer cms'],\n} satisfies Dictionary;\n\nexport default dictionaryFormContent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"dictionaryCreationForm.content.mjs","names":[],"sources":["../../../../../src/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nexport const dictionaryFormContent = {\n key: 'dictionary-form',\n content: {\n keyInput: {\n label: t({\n en: 'Key',\n 'en-GB': 'Key',\n fr: 'Clé',\n es: 'Clave',\n de: 'Schlüssel',\n ja: 'キー',\n ko: '키',\n zh: '键',\n it: 'Chiave',\n pt: 'Chave',\n hi: 'कुंजी',\n ar: 'مفتاح',\n ru: 'Ключ',\n tr: 'Anahtar',\n pl: 'Klucz',\n id: 'Key',\n vi: 'Key',\n uk: 'Ключ',\n }),\n placeholder: t({\n en: 'Enter the key of your dictionary',\n 'en-GB': 'Enter the key of your dictionary',\n fr: 'Entrez la clé de votre dictionnaire',\n es: 'Ingrese la clave de su diccionario',\n de: 'Geben Sie den Schlüssel Ihres Wörterbuchs ein',\n ja: '辞書のキーを入力してください',\n ko: '사전의 키를 입력하세요',\n zh: '输入字典的键',\n it: 'Inserisci la chiave del tuo dizionario',\n pt: 'Insira a chave do seu dicionário',\n hi: 'अपने शब्दकोश की कुंजी दर्ज करें',\n ar: 'أدخل مفتاح القاموس الخاص بك',\n ru: 'Введите ключ вашего словаря',\n tr: 'Sözlüğünüzün anahtarını girin',\n pl: 'Wprowadź klucz słownika',\n id: 'Masukkan key dictionary Anda',\n vi: 'Nhập key của từ điển của bạn',\n uk: 'Введіть ключ вашого словника',\n }),\n },\n\n projectInput: {\n label: t({\n en: 'Projects',\n 'en-GB': 'Projects',\n fr: 'Projets',\n es: 'Proyectos',\n de: 'Projekte',\n ja: 'プロジェクト',\n ko: '프로젝트',\n zh: '项目',\n it: 'Progetti',\n pt: 'Projetos',\n hi: 'प्रोजेक्ट',\n ar: 'مشاريع',\n ru: 'Проекты',\n tr: 'Projeler',\n pl: 'Projekty',\n id: 'Projects',\n vi: 'Dự án',\n uk: 'Проєкти',\n }),\n placeholder: t({\n en: 'Select one or more projects to associate with your dictionary',\n 'en-GB':\n 'Select one or more projects to associate with your dictionary',\n fr: 'Sélectionnez un ou plusieurs projets à associer à votre dictionnaire',\n es: 'Seleccione uno o más proyectos para asociar con su diccionario',\n de: 'Wählen Sie ein oder mehrere Projekte aus, um sie mit Ihrem Wörterbuch zu verknüpfen',\n ja: '辞書に関連付けるプロジェクトを1つ以上選択してください',\n ko: '사전과 연결할 프로젝트를 하나 이상 선택하세요',\n zh: '选择一个或多个项目与您的字典关联',\n it: 'Seleziona uno o più progetti da associare al tuo dizionario',\n pt: 'Selecione um ou mais projetos para associar ao seu dicionário',\n hi: 'अपने शब्दकोश से जोड़ने के लिए एक या एक से अधिक प्रोजेक्ट चुनें',\n ar: 'حدد مشروعًا أو أكثر للربط مع قاموسك',\n ru: 'Выберите один или несколько проектов для связывания со словарем',\n tr: 'Sözlüğünüzle ilişkilendirmek için bir veya daha fazla proje seçin',\n pl: 'Wybierz jeden lub więcej projektów do powiązania z tym słownikiem',\n id: 'Pilih satu atau lebih Projects untuk dikaitkan dengan dictionary Anda',\n vi: 'Chọn một hoặc nhiều dự án để liên kết với từ điển của bạn',\n uk: \"Виберіть один або кілька проєктів, щоб пов'язати їх із вашим словником\",\n }),\n },\n\n qualifierTypeSelect: {\n label: t({\n en: 'Qualifier type',\n 'en-GB': 'Qualifier type',\n fr: 'Type de qualificateur',\n es: 'Tipo de calificador',\n de: 'Qualifikatortyp',\n ja: '修飾子タイプ',\n ko: '한정자 유형',\n zh: '限定符类型',\n it: 'Tipo di qualificatore',\n pt: 'Tipo de qualificador',\n hi: 'क्वालीफायर प्रकार',\n ar: 'نوع المؤهل',\n ru: 'Тип квалификатора',\n tr: 'Niteleyici türü',\n pl: 'Typ kwalifikatora',\n id: 'Jenis kualifikator',\n vi: 'Loại bộ định tính',\n uk: 'Тип кваліфікатора',\n }),\n description: t({\n en: 'Define whether this dictionary is a plain dictionary, a collection item, a named variant, or a meta record.',\n 'en-GB':\n 'Define whether this dictionary is a plain dictionary, a collection item, a named variant, or a meta record.',\n fr: 'Définit si ce dictionnaire est un dictionnaire simple, un élément de collection, une variante nommée ou un enregistrement méta.',\n es: 'Define si este diccionario es un diccionario simple, un elemento de colección, una variante nombrada o un registro meta.',\n de: 'Legt fest, ob dieses Wörterbuch ein normales Wörterbuch, ein Sammlungselement, eine benannte Variante oder ein Meta-Datensatz ist.',\n ja: 'このdictionaryが通常のdictionary、コレクション項目、名前付きバリアント、またはメタレコードのいずれかを定義します。',\n ko: '이 사전이 일반 사전, 컬렉션 항목, 명명된 변형 또는 메타 레코드인지 정의합니다.',\n zh: '定义此字典是普通字典、集合项、命名变体还是元记录。',\n it: 'Definisce se questo dizionario è un dizionario semplice, un elemento di raccolta, una variante denominata o un record meta.',\n pt: 'Define se este dicionário é um dicionário simples, um item de coleção, uma variante nomeada ou um registro meta.',\n hi: 'परिभाषित करता है कि यह शब्दकोश एक साधारण शब्दकोश, एक संग्रह आइटम, एक नामित संस्करण या एक मेटा रिकॉर्ड है।',\n ar: 'يحدد ما إذا كان هذا القاموس قاموسًا عاديًا أو عنصر مجموعة أو نوعًا مسمى أو سجل بيانات وصفية.',\n ru: 'Определяет, является ли этот словарь обычным словарём, элементом коллекции, именованным вариантом или мета-записью.',\n tr: 'Bu sözlüğün düz bir sözlük, koleksiyon öğesi, adlandırılmış varyant veya meta kayıt olup olmadığını tanımlar.',\n pl: 'Określa, czy ten słownik jest zwykłym słownikiem, elementem kolekcji, nazwaną wariantem lub rekordem meta.',\n id: 'Menentukan apakah dictionary ini adalah dictionary biasa, item koleksi, varian bernama, atau rekaman meta.',\n vi: 'Xác định liệu từ điển này là từ điển thông thường, mục trong bộ sưu tập, biến thể được đặt tên hay bản ghi meta.',\n uk: 'Визначає, чи є цей словник звичайним словником, елементом колекції, іменованим варіантом або метазаписом.',\n }),\n none: t({\n en: 'None (plain dictionary)',\n 'en-GB': 'None (plain dictionary)',\n fr: 'Aucun (dictionnaire simple)',\n es: 'Ninguno (diccionario simple)',\n de: 'Keiner (einfaches Wörterbuch)',\n ja: 'なし(通常の辞書)',\n ko: '없음 (일반 사전)',\n zh: '无(普通字典)',\n it: 'Nessuno (dizionario semplice)',\n pt: 'Nenhum (dicionário simples)',\n hi: 'कोई नहीं (सामान्य शब्दकोश)',\n ar: 'لا شيء (قاموس عادي)',\n ru: 'Нет (обычный словарь)',\n tr: 'Hiçbiri (düz sözlük)',\n pl: 'Brak (zwykły słownik)',\n id: 'Tidak ada (kamus biasa)',\n vi: 'Không có (từ điển thông thường)',\n uk: 'Жоден (звичайний словник)',\n }),\n item: t({\n en: 'Collection item',\n 'en-GB': 'Collection item',\n fr: 'Élément de collection',\n es: 'Elemento de colección',\n de: 'Sammlungselement',\n ja: 'コレクション項目',\n ko: '컬렉션 항목',\n zh: '集合项',\n it: 'Elemento di raccolta',\n pt: 'Item de coleção',\n hi: 'संग्रह आइटम',\n ar: 'عنصر مجموعة',\n ru: 'Элемент коллекции',\n tr: 'Koleksiyon öğesi',\n pl: 'Element kolekcji',\n id: 'Item koleksi',\n vi: 'Mục bộ sưu tập',\n uk: 'Елемент колекції',\n }),\n variant: t({\n en: 'Variant',\n 'en-GB': 'Variant',\n fr: 'Variante',\n es: 'Variante',\n de: 'Variante',\n ja: 'バリアント',\n ko: '변형',\n zh: '变体',\n it: 'Variante',\n pt: 'Variante',\n hi: 'संस्करण',\n ar: 'نوع',\n ru: 'Вариант',\n tr: 'Varyant',\n pl: 'Wariant',\n id: 'Varian',\n vi: 'Biến thể',\n uk: 'Варіант',\n }),\n meta: t({\n en: 'Meta record',\n 'en-GB': 'Meta record',\n fr: 'Enregistrement méta',\n es: 'Registro meta',\n de: 'Meta-Datensatz',\n ja: 'メタレコード',\n ko: '메타 레코드',\n zh: '元记录',\n it: 'Record meta',\n pt: 'Registro meta',\n hi: 'मेटा रिकॉर्ड',\n ar: 'سجل بيانات وصفية',\n ru: 'Мета-запись',\n tr: 'Meta kayıt',\n pl: 'Rekord meta',\n id: 'Rekaman meta',\n vi: 'Bản ghi meta',\n uk: 'Метазапис',\n }),\n },\n\n itemInput: {\n label: t({\n en: 'Item index',\n 'en-GB': 'Item index',\n fr: \"Index de l'élément\",\n es: 'Índice del elemento',\n de: 'Elementindex',\n ja: '項目インデックス',\n ko: '항목 인덱스',\n zh: '项目索引',\n it: \"Indice dell'elemento\",\n pt: 'Índice do item',\n hi: 'आइटम इंडेक्स',\n ar: 'مؤشر العنصر',\n ru: 'Индекс элемента',\n tr: 'Öğe dizini',\n pl: 'Indeks elementu',\n id: 'Indeks item',\n vi: 'Chỉ số mục',\n uk: 'Індекс елементу',\n }),\n placeholder: t({\n en: 'e.g. 1',\n 'en-GB': 'e.g. 1',\n fr: 'par ex. 1',\n es: 'por ej. 1',\n de: 'z. B. 1',\n ja: '例: 1',\n ko: '예: 1',\n zh: '例如: 1',\n it: 'es. 1',\n pt: 'ex. 1',\n hi: 'उदा. 1',\n ar: 'مثال: 1',\n ru: 'напр. 1',\n tr: 'ör. 1',\n pl: 'np. 1',\n id: 'mis. 1',\n vi: 'ví dụ: 1',\n uk: 'напр. 1',\n }),\n description: t({\n en: '1-based index of this item within the collection sharing the same key.',\n 'en-GB':\n '1-based index of this item within the collection sharing the same key.',\n fr: 'Index (base 1) de cet élément dans la collection partageant la même clé.',\n es: 'Índice de base 1 de este elemento dentro de la colección que comparte la misma clave.',\n de: '1-basierter Index dieses Elements innerhalb der Sammlung mit demselben Schlüssel.',\n ja: '同じキーを共有するコレクション内のこの項目の1ベースのインデックス。',\n ko: '동일한 키를 공유하는 컬렉션 내에서 이 항목의 1-기반 인덱스.',\n zh: '在共享同一键的集合中此项目的基于1的索引。',\n it: 'Indice (base 1) di questo elemento nella raccolta che condivide la stessa chiave.',\n pt: 'Índice de base 1 deste item dentro da coleção que compartilha a mesma chave.',\n hi: 'समान कुंजी साझा करने वाले संग्रह में इस आइटम का 1-आधारित इंडेक्स।',\n ar: 'مؤشر أساسه 1 لهذا العنصر ضمن المجموعة التي تشترك في نفس المفتاح.',\n ru: 'Индекс с основой 1 для данного элемента внутри коллекции, разделяющей тот же ключ.',\n tr: 'Aynı anahtarı paylaşan koleksiyon içindeki bu öğenin 1 tabanlı dizini.',\n pl: 'Indeks oparty na 1 tego elementu w kolekcji dzielącej ten sam klucz.',\n id: 'Indeks berbasis 1 dari item ini dalam koleksi yang berbagi kunci yang sama.',\n vi: 'Chỉ số dựa trên 1 của mục này trong bộ sưu tập chia sẻ cùng một khóa.',\n uk: 'Індекс з основою 1 для цього елементу всередині колекції, що ділиться тим самим ключем.',\n }),\n },\n\n variantInput: {\n label: t({\n en: 'Variant name',\n 'en-GB': 'Variant name',\n fr: 'Nom de variante',\n es: 'Nombre de variante',\n de: 'Variantenname',\n ja: 'バリアント名',\n ko: '변형 이름',\n zh: '变体名称',\n it: 'Nome variante',\n pt: 'Nome da variante',\n hi: 'वेरिएंट नाम',\n ar: 'اسم النوع',\n ru: 'Название варианта',\n tr: 'Varyant adı',\n pl: 'Nazwa wariantu',\n id: 'Nama varian',\n vi: 'Tên biến thể',\n uk: 'Назва варіанту',\n }),\n placeholder: t({\n en: 'e.g. black-friday',\n 'en-GB': 'e.g. black-friday',\n fr: 'par ex. black-friday',\n es: 'por ej. black-friday',\n de: 'z. B. black-friday',\n ja: '例: black-friday',\n ko: '예: black-friday',\n zh: '例如: black-friday',\n it: 'es. black-friday',\n pt: 'ex. black-friday',\n hi: 'उदा. black-friday',\n ar: 'مثال: black-friday',\n ru: 'напр. black-friday',\n tr: 'ör. black-friday',\n pl: 'np. black-friday',\n id: 'mis. black-friday',\n vi: 'ví dụ: black-friday',\n uk: 'напр. black-friday',\n }),\n description: t({\n en: 'Named alternative content shape for A/B testing, seasonal banners, or feature flags.',\n 'en-GB':\n 'Named alternative content shape for A/B testing, seasonal banners, or feature flags.',\n fr: 'Forme de contenu alternative nommée pour les tests A/B, les bannières saisonnières ou les drapeaux de fonctionnalité.',\n es: 'Forma de contenido alternativa nombrada para pruebas A/B, banners estacionales o indicadores de funciones.',\n de: 'Benannte alternative Inhaltsform für A/B-Tests, saisonale Banner oder Feature-Flags.',\n ja: 'A/Bテスト、季節バナー、フィーチャーフラグのための名前付き代替コンテンツ形式。',\n ko: 'A/B 테스트, 계절 배너 또는 기능 플래그를 위한 명명된 대체 콘텐츠 형태.',\n zh: '用于A/B测试、季节性横幅或功能标志的命名替代内容形状。',\n it: 'Forma di contenuto alternativa denominata per test A/B, banner stagionali o flag delle funzionalità.',\n pt: 'Forma de conteúdo alternativa nomeada para testes A/B, banners sazonais ou sinalizadores de recursos.',\n hi: 'A/B परीक्षण, मौसमी बैनर, या फ़ीचर फ़्लैग के लिए नामित वैकल्पिक सामग्री आकार।',\n ar: 'شكل محتوى بديل مسمى لاختبار A/B أو اللافتات الموسمية أو علامات الميزات.',\n ru: 'Именованная альтернативная форма контента для A/B-тестирования, сезонных баннеров или флагов функций.',\n tr: 'A/B testi, sezonluk bannerlar veya özellik bayrakları için adlandırılmış alternatif içerik şekli.',\n pl: 'Nazwana alternatywna forma treści dla testów A/B, sezonowych banerów lub flag funkcji.',\n id: 'Bentuk konten alternatif bernama untuk pengujian A/B, banner musiman, atau tanda fitur.',\n vi: 'Hình dạng nội dung thay thế được đặt tên cho thử nghiệm A/B, biểu ngữ theo mùa hoặc cờ tính năng.',\n uk: 'Іменована альтернативна форма вмісту для A/B-тестування, сезонних банерів або прапорів функцій.',\n }),\n },\n\n createDictionaryButton: {\n text: t({\n en: 'Create dictionary',\n 'en-GB': 'Create dictionary',\n fr: 'Créer un dictionnaire',\n es: 'Crear un diccionario',\n de: 'Wörterbuch erstellen',\n ja: '辞書を作成',\n ko: '사전 만들기',\n zh: '创建字典',\n it: 'Crea dizionario',\n pt: 'Criar dicionário',\n hi: 'शब्दकोश बनाएँ',\n ar: 'إنشاء قاموس',\n ru: 'Создать словарь',\n tr: 'Sözlük oluştur',\n pl: 'Utwórz słownik',\n id: 'Buat dictionary',\n vi: 'Tạo từ điển',\n uk: 'Створити словник',\n }),\n ariaLabel: t({\n en: 'Click to create dictionary',\n 'en-GB': 'Click to create dictionary',\n fr: 'Cliquez pour créer un dictionnaire',\n es: 'Haga clic para crear un diccionario',\n de: 'Klicken Sie, um ein Wörterbuch zu erstellen',\n ja: '辞書を作成するにはクリックしてください',\n ko: '사전을 만들려면 클릭하세요',\n zh: '点击创建字典',\n it: 'Clicca per creare un dizionario',\n pt: 'Clique para criar dicionário',\n hi: 'शब्दकोश बनाने के लिए क्लिक करें',\n ar: 'انقر لإنشاء قاموس',\n ru: 'Нажмите, чтобы создать словарь',\n tr: 'Sözlük oluşturmak için tıklayın',\n pl: 'Kliknij, aby utworzyć słownik',\n id: 'Klik untuk membuat dictionary',\n vi: 'Nhấn để tạo từ điển',\n uk: 'Натисніть, щоб створити словник',\n }),\n },\n },\n title: 'Dictionary form',\n description:\n 'Content declarations for the dictionary creation form, including labels, placeholders, titles, descriptions, and button texts for managing dictionaries within Intlayer.',\n tags: ['form', 'dictionary creation', 'intlayer cms'],\n} satisfies Dictionary;\n\nexport default dictionaryFormContent;\n"],"mappings":"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"}
@@ -5,8 +5,7 @@ import { z } from "zod/v4";
5
5
  const QUALIFIER_TYPES = [
6
6
  "none",
7
7
  "item",
8
- "variant",
9
- "meta"
8
+ "variant"
10
9
  ];
11
10
  const useDictionarySchema = (projectId) => {
12
11
  const { requiredErrorName, invalidTypeErrorName, requiredErrorProjectId, invalidTypeErrorProjectId } = useIntlayer("dictionary-form-schema");
@@ -15,8 +14,7 @@ const useDictionarySchema = (projectId) => {
15
14
  projectIds: z.array(z.string({ error: (issue) => issue.input === void 0 ? requiredErrorProjectId.value : invalidTypeErrorProjectId.value })).default([projectId]),
16
15
  qualifierType: z.enum(QUALIFIER_TYPES).default("none"),
17
16
  item: z.coerce.number().int().positive().optional(),
18
- variant: z.string().optional(),
19
- metaId: z.string().optional()
17
+ variant: z.string().optional()
20
18
  });
21
19
  };
22
20