@intlayer/design-system 7.0.8 → 7.0.9-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/README.md +4 -4
- package/dist/esm/components/Accordion/Accordion.mjs +1 -1
- package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
- package/dist/esm/components/Avatar/index.mjs +2 -2
- package/dist/esm/components/Avatar/index.mjs.map +1 -1
- package/dist/esm/components/Badge/index.mjs +1 -1
- package/dist/esm/components/Badge/index.mjs.map +1 -1
- package/dist/esm/components/Breadcrumb/index.mjs +4 -4
- package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
- package/dist/esm/components/Button/Button.mjs +99 -88
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/Button/index.mjs +2 -2
- package/dist/esm/components/ClickOutsideDiv/index.mjs +1 -1
- package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.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/Container/index.mjs +14 -13
- package/dist/esm/components/Container/index.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
- package/dist/esm/components/CopyButton/index.mjs +1 -1
- package/dist/esm/components/CopyButton/index.mjs.map +1 -1
- package/dist/esm/components/CopyToClipboard/index.mjs +29 -27
- package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -1
- package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs +6 -3
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs +2 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +40 -22
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +2 -1
- package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -2
- 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/VersionSwitcherDropDown/VersionSwitcher.mjs +1 -1
- package/dist/esm/components/DropDown/index.mjs +3 -3
- package/dist/esm/components/DropDown/index.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldInput.mjs +1 -1
- package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -1
- package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldTextArea.mjs +1 -1
- package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
- package/dist/esm/components/Flags/Flag.mjs +1 -1
- package/dist/esm/components/Flags/Flag.mjs.map +1 -1
- package/dist/esm/components/Form/Form.mjs +4 -0
- package/dist/esm/components/Form/Form.mjs.map +1 -1
- package/dist/esm/components/Form/FormBase.mjs +1 -1
- package/dist/esm/components/Form/FormBase.mjs.map +1 -1
- package/dist/esm/components/Form/FormItem.mjs +1 -1
- package/dist/esm/components/Form/FormItem.mjs.map +1 -1
- package/dist/esm/components/Form/FormLabel.mjs +1 -1
- package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
- package/dist/esm/components/Form/FormMessage.mjs +1 -1
- package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
- package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/CheckboxElement.mjs +2 -2
- package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/CodeInputElement.mjs +40 -0
- package/dist/esm/components/Form/elements/CodeInputElement.mjs.map +1 -0
- package/dist/esm/components/Form/elements/FormElement.mjs +2 -2
- package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/FormElementWrapper.mjs +1 -1
- package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
- package/dist/esm/components/Form/elements/InputPasswordElement.mjs +1 -1
- package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/MultiselectElement.mjs +30 -19
- package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/OTPElement.mjs +114 -0
- package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -0
- package/dist/esm/components/Form/elements/SearchInputElement.mjs +17 -0
- package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -0
- package/dist/esm/components/Form/elements/SelectElement.mjs +30 -19
- package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +29 -18
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/index.mjs +3 -1
- package/dist/esm/components/Form/layout/FormItemLayout.mjs +1 -2
- package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
- package/dist/esm/components/Headers/index.mjs +19 -19
- package/dist/esm/components/Headers/index.mjs.map +1 -1
- package/dist/esm/components/HeightResizer/index.mjs +1 -1
- package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
- package/dist/esm/components/HideShow/index.mjs +2 -1
- package/dist/esm/components/HideShow/index.mjs.map +1 -1
- package/dist/esm/components/IDE/Code.mjs +1 -1
- package/dist/esm/components/IDE/Code.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockClient.mjs +1 -1
- package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockServer.mjs +3 -3
- package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeConditionalRenderer.mjs +1 -1
- package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeFormatSelector.mjs +4 -1
- package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs +4 -1
- package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/FileList.mjs +1 -1
- package/dist/esm/components/IDE/FileList.mjs.map +1 -1
- package/dist/esm/components/IDE/IDE.mjs +1 -1
- package/dist/esm/components/IDE/IDE.mjs.map +1 -1
- package/dist/esm/components/IDE/PackageManagerSelector.mjs +4 -1
- package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
- package/dist/esm/components/InformationTag/index.mjs +1 -1
- package/dist/esm/components/InformationTag/index.mjs.map +1 -1
- package/dist/esm/components/Input/Checkbox.mjs +22 -15
- package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
- package/dist/esm/components/Input/CodeInput.mjs +84 -0
- package/dist/esm/components/Input/CodeInput.mjs.map +1 -0
- package/dist/esm/components/Input/Input.mjs +25 -14
- package/dist/esm/components/Input/Input.mjs.map +1 -1
- package/dist/esm/components/Input/InputPassword.mjs +1 -1
- package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
- package/dist/esm/components/Input/OTPInput/Input.mjs +426 -0
- package/dist/esm/components/Input/OTPInput/Input.mjs.map +1 -0
- package/dist/esm/components/Input/OTPInput/index.mjs +495 -0
- package/dist/esm/components/Input/OTPInput/index.mjs.map +1 -0
- package/dist/esm/components/Input/OTPInput.mjs +495 -0
- package/dist/esm/components/Input/OTPInput.mjs.map +1 -0
- package/dist/esm/components/Input/SearchInput.mjs +1 -1
- package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
- package/dist/esm/components/Input/index.mjs +2 -1
- package/dist/esm/components/KeyboardScreenAdapter/index.mjs +1 -1
- package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
- package/dist/esm/components/Label/index.mjs +1 -1
- package/dist/esm/components/Label/index.mjs.map +1 -1
- package/dist/esm/components/Link/Link.mjs +1 -1
- package/dist/esm/components/Link/Link.mjs.map +1 -1
- package/dist/esm/components/Loader/index.mjs +1 -1
- package/dist/esm/components/Loader/index.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
- package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -1
- package/dist/esm/components/Logo/Logo.mjs +1 -1
- package/dist/esm/components/Logo/Logo.mjs.map +1 -1
- package/dist/esm/components/Logo/LogoWithTextBelow.mjs +1 -1
- package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +16 -11
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/processor.mjs +1 -1
- package/dist/esm/components/MarkDownRender/processor.mjs.map +1 -1
- package/dist/esm/components/MaxHeightSmoother/index.mjs +1 -1
- package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
- package/dist/esm/components/MaxWidthSmoother/index.mjs +1 -1
- package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
- package/dist/esm/components/Modal/Modal.mjs +48 -41
- package/dist/esm/components/Modal/Modal.mjs.map +1 -1
- package/dist/esm/components/Navbar/Burger.mjs +1 -1
- package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
- package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs +5 -2
- package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
- package/dist/esm/components/Pattern/DotPattern.mjs +1 -1
- package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/SpotLight.mjs +1 -1
- package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
- package/dist/esm/components/Popover/dynamic.mjs +1 -1
- package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
- package/dist/esm/components/Popover/static.mjs +2 -2
- package/dist/esm/components/Popover/static.mjs.map +1 -1
- package/dist/esm/components/PressableSpan/PressableSpan.mjs +1 -1
- package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
- package/dist/esm/components/RightDrawer/RightDrawer.mjs +1 -1
- package/dist/esm/components/Select/Multiselect.mjs +7 -7
- package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
- package/dist/esm/components/Select/Select.mjs +12 -12
- package/dist/esm/components/Select/Select.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/index.mjs +3 -8
- package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/index.mjs +35 -27
- package/dist/esm/components/SwitchSelector/index.mjs.map +1 -1
- package/dist/esm/components/Tab/Tab.mjs +2 -2
- package/dist/esm/components/Tab/Tab.mjs.map +1 -1
- package/dist/esm/components/TabSelector/TabSelector.mjs +1 -1
- package/dist/esm/components/TabSelector/TabSelector.mjs.map +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 +1 -1
- package/dist/esm/components/Tag/index.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +1 -1
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +1 -1
- package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +2 -2
- package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toast.mjs +7 -7
- package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toaster.mjs +1 -1
- package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
- package/dist/esm/components/index.mjs +6 -5
- package/dist/esm/hooks/index.mjs +4 -3
- package/dist/esm/hooks/reactQuery.mjs +66 -3
- package/dist/esm/hooks/reactQuery.mjs.map +1 -1
- package/dist/esm/hooks/useAuth/useSession.mjs +5 -3
- package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
- package/dist/esm/hooks/useDevice.mjs +16 -2
- package/dist/esm/hooks/useDevice.mjs.map +1 -1
- package/dist/esm/hooks/useItemSelector.mjs +4 -1
- package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
- package/dist/esm/libs/auth.mjs +77 -32
- package/dist/esm/libs/auth.mjs.map +1 -1
- package/dist/types/Checkbox.d.ts +2 -0
- package/dist/types/Input.d.ts +16 -0
- package/dist/types/Input.d.ts.map +1 -0
- package/dist/types/InputPassword.d.ts +2 -0
- package/dist/types/OTPElement.d.ts +30 -0
- package/dist/types/OTPElement.d.ts.map +1 -0
- package/dist/types/OTPInput.d.ts +3 -0
- package/dist/types/SearchInput.d.ts +1 -0
- package/dist/types/components/Badge/index.d.ts +2 -2
- package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +3 -3
- package/dist/types/components/Breadcrumb/index.d.ts +2 -2
- package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/types/components/Browser/Browser.content.d.ts +11 -11
- package/dist/types/components/Button/Button.d.ts +10 -18
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Button/index.d.ts +2 -2
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +5 -5
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
- package/dist/types/components/Command/index.d.ts +13 -13
- package/dist/types/components/Container/index.d.ts +9 -9
- package/dist/types/components/Container/index.d.ts.map +1 -1
- package/dist/types/components/CopyToClipboard/index.d.ts +7 -3
- package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +25 -25
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +9 -9
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +33 -33
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +25 -25
- package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +25 -25
- package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +33 -33
- package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +9 -9
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +7 -7
- package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +5 -5
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +31 -31
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
- package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -3
- package/dist/types/components/Form/Form.d.ts +4 -0
- package/dist/types/components/Form/Form.d.ts.map +1 -1
- package/dist/types/components/Form/FormBase.d.ts +2 -2
- package/dist/types/components/Form/FormBase.d.ts.map +1 -1
- package/dist/types/components/Form/FormField.d.ts +2 -2
- package/dist/types/components/Form/FormField.d.ts.map +1 -1
- package/dist/types/components/Form/FormItem.d.ts +2 -2
- package/dist/types/components/Form/FormItem.d.ts.map +1 -1
- package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts +2 -2
- package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -2
- package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/FormElement.d.ts +2 -2
- package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -2
- package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/OTPElement.d.ts +30 -0
- package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -0
- package/dist/types/components/Form/elements/SearchInputElement.d.ts +13 -0
- package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -0
- package/dist/types/components/Form/elements/SelectElement.d.ts +2 -2
- package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -2
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/index.d.ts +3 -1
- package/dist/types/components/HideShow/index.d.ts.map +1 -1
- package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
- package/dist/types/components/IDE/code.content.d.ts +5 -5
- package/dist/types/components/IDE/code.content.d.ts.map +1 -1
- package/dist/types/components/IDE/copyCode.content.d.ts +5 -5
- package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
- package/dist/types/components/Input/Checkbox.d.ts +5 -5
- package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
- package/dist/types/components/Input/Input.d.ts +3 -3
- package/dist/types/components/Input/Input.d.ts.map +1 -1
- package/dist/types/components/Input/OTPInput/Input.d.ts +57 -0
- package/dist/types/components/Input/OTPInput/Input.d.ts.map +1 -0
- package/dist/types/components/Input/OTPInput/index.d.ts +78 -0
- package/dist/types/components/Input/OTPInput/index.d.ts.map +1 -0
- package/dist/types/components/Input/OTPInput.d.ts +78 -0
- package/dist/types/components/Input/OTPInput.d.ts.map +1 -0
- package/dist/types/components/Input/SearchInput.d.ts +2 -2
- package/dist/types/components/Input/index.d.ts +2 -1
- package/dist/types/components/Link/Link.d.ts +4 -4
- package/dist/types/components/Loader/index.content.d.ts +3 -3
- package/dist/types/components/Loader/spinner.d.ts +2 -2
- package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +17 -17
- package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +13 -13
- package/dist/types/components/MaxWidthSmoother/index.d.ts +2 -2
- package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
- package/dist/types/components/Modal/Modal.d.ts.map +1 -1
- package/dist/types/components/Navbar/Burger.d.ts +2 -2
- package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
- package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -2
- package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
- package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -2
- package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
- package/dist/types/components/Navbar/index.d.ts +2 -2
- package/dist/types/components/Navbar/index.d.ts.map +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +4 -4
- package/dist/types/components/Pagination/pagination.content.d.ts +11 -11
- package/dist/types/components/Popover/static.d.ts +3 -3
- package/dist/types/components/RightDrawer/useRightDrawerStore.d.ts +2 -2
- package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts +3 -3
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/index.d.ts +2 -2
- package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/index.d.ts +10 -8
- package/dist/types/components/SwitchSelector/index.d.ts.map +1 -1
- package/dist/types/components/Tab/Tab.d.ts +5 -5
- package/dist/types/components/Tab/Tab.d.ts.map +1 -1
- package/dist/types/components/Tab/TabContext.d.ts +2 -2
- package/dist/types/components/TabSelector/TabSelector.d.ts +5 -5
- package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
- package/dist/types/components/Table/table.content.d.ts +3 -3
- package/dist/types/components/Table/table.content.d.ts.map +1 -1
- package/dist/types/components/Tag/index.d.ts +5 -5
- package/dist/types/components/Toaster/Toast.d.ts +2 -2
- package/dist/types/components/Toaster/Toaster.d.ts +2 -2
- package/dist/types/components/index.d.ts +4 -3
- package/dist/types/hooks/index.d.ts +5 -4
- package/dist/types/hooks/reactQuery.d.ts +1258 -65
- package/dist/types/hooks/reactQuery.d.ts.map +1 -1
- package/dist/types/hooks/useAuth/index.d.ts +2 -2
- package/dist/types/hooks/useAuth/useOAuth2.d.ts +2 -1
- package/dist/types/hooks/useAuth/useOAuth2.d.ts.map +1 -1
- package/dist/types/hooks/useAuth/useSession.d.ts +9 -4
- package/dist/types/hooks/useAuth/useSession.d.ts.map +1 -1
- package/dist/types/hooks/useDevice.d.ts +7 -1
- package/dist/types/hooks/useDevice.d.ts.map +1 -1
- package/dist/types/hooks/useItemSelector.d.ts +8 -1
- package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
- package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts +2 -2
- package/dist/types/hooks/useUser/index.d.ts +18 -1
- package/dist/types/hooks/useUser/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/libs/auth.d.ts +3375 -2
- package/dist/types/libs/auth.d.ts.map +1 -1
- package/package.json +51 -45
- package/tailwind.css +55 -34
- package/dist/esm/components/Popover/index.mjs.map +0 -1
- package/dist/esm/utils/camelCase.mjs +0 -12
- package/dist/esm/utils/camelCase.mjs.map +0 -1
- package/dist/types/components/Popover/index.d.ts.map +0 -1
- package/dist/types/utils/camelCase.d.ts +0 -6
- package/dist/types/utils/camelCase.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationViewNode.mjs","names":["traceKeys: string[]","NavigationViewNode: FC<NodeWrapperProps>","keyPath","childKeyPath: KeyPath[]","newKeyPath: KeyPath[]"],"sources":["../../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport {\n getContentNodeByKeyPath,\n getEmptyNode,\n getNodeType,\n isSameKeyPath,\n} from '@intlayer/core';\nimport {\n useEditedContentActions,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport {\n type KeyPath,\n type LocalDictionaryId,\n NodeType,\n} from '@intlayer/types';\nimport type { ContentNode, Dictionary } from 'intlayer';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { camelCaseToSentence } from '../../../utils/camelCase';\nimport { Accordion } from '../../Accordion';\nimport {\n Button,\n ButtonColor,\n ButtonTextAlign,\n ButtonVariant,\n} from '../../Button';\nimport { getIsEditableSection } from '../getIsEditableSection';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n section: ContentNode;\n dictionary: Dictionary;\n};\n\nexport const NavigationViewNode: FC<NodeWrapperProps> = ({\n section: sectionProp,\n keyPath,\n dictionary,\n}) => {\n const { locales } = configuration.internationalization;\n const currentLocale = useEditorLocale();\n const section = getContentNodeByKeyPath(sectionProp, keyPath, currentLocale);\n const { addEditedContent } = useEditedContentActions();\n const { setFocusedContentKeyPath, focusedContent } =\n useFocusUnmergedDictionary();\n const { addNewElement, goToField } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n const getIsSelected = (keyPath: KeyPath[]) =>\n (focusedContent?.keyPath?.length ?? 0) > 0 &&\n isSameKeyPath(keyPath, focusedContent?.keyPath ?? []);\n const isEditableSubSection = getIsEditableSection(section);\n\n if (!section) return <></>;\n\n if (isEditableSubSection) {\n return (\n <Button\n label={goToField.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(keyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(keyPath[keyPath.length - 1].key as string)}\n </Button>\n );\n }\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return <>React Node</>;\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {locales.map((translationKey) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ];\n\n return (\n <NavigationViewNode\n key={translationKey}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Enumeration || nodeType === NodeType.Condition) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {Object.keys(\n (section as any)[nodeType as unknown as keyof typeof section]\n ).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: nodeType, key },\n ];\n\n return (\n <NavigationViewNode\n key={key}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {(section as unknown as ContentNode[]).map((_, index) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Array, key: index },\n ];\n\n return (\n <NavigationViewNode\n key={JSON.stringify(childKeyPath)}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n const sectionArray = section as unknown as ContentNode[];\n const emptySectionEl =\n getEmptyNode(\n sectionArray[\n (sectionArray.length - 1) as keyof typeof sectionArray\n ] as ContentNode\n ) ?? '';\n addEditedContent(\n dictionary.localId as LocalDictionaryId,\n emptySectionEl,\n newKeyPath,\n false\n );\n setFocusedContentKeyPath(newKeyPath);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n }\n\n if (typeof section.nodeType === 'string') {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: section.nodeType } as KeyPath,\n ];\n\n return (\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n }\n\n const sectionArray = Object.keys(section);\n return (\n <div className=\"flex w-full max-w-full flex-col justify-between gap-2\">\n {sectionArray.map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n\n const subSection = getContentNodeByKeyPath(sectionProp, childKeyPath);\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n label={`${goToField.label.value} ${key}`}\n key={key}\n isActive={getIsSelected(childKeyPath)}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(key)}\n </Button>\n );\n }\n\n return (\n <Accordion\n key={key}\n label={`${goToField.label.value} ${key}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n header={camelCaseToSentence(key)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n </div>\n </div>\n </Accordion>\n );\n })}\n </div>\n );\n }\n\n return (\n <>\n Error loading section --\n {nodeType}\n --\n {JSON.stringify(section)}\n --\n {JSON.stringify(keyPath)}\n </>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NavigationViewNode.mjs","names":["traceKeys: string[]","NavigationViewNode: FC<NodeWrapperProps>","keyPath","childKeyPath: KeyPath[]","newKeyPath: KeyPath[]"],"sources":["../../../../../src/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.tsx"],"sourcesContent":["import configuration from '@intlayer/config/built';\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getContentNodeByKeyPath,\n getEmptyNode,\n getNodeType,\n isSameKeyPath,\n} from '@intlayer/core';\nimport {\n useEditedContentActions,\n useEditorLocale,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport {\n type KeyPath,\n type LocalDictionaryId,\n NodeType,\n} from '@intlayer/types';\nimport type { ContentNode, Dictionary } from 'intlayer';\nimport { ChevronRight, Plus } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Accordion } from '../../Accordion';\nimport {\n Button,\n ButtonColor,\n ButtonTextAlign,\n ButtonVariant,\n} from '../../Button';\nimport { getIsEditableSection } from '../getIsEditableSection';\n\nexport const traceKeys: string[] = ['filePath', 'id', 'nodeType'];\n\nexport type NodeWrapperProps = {\n keyPath: KeyPath[];\n section: ContentNode;\n dictionary: Dictionary;\n};\n\nexport const NavigationViewNode: FC<NodeWrapperProps> = ({\n section: sectionProp,\n keyPath,\n dictionary,\n}) => {\n const { locales } = configuration.internationalization;\n const currentLocale = useEditorLocale();\n const section = getContentNodeByKeyPath(sectionProp, keyPath, currentLocale);\n const { addEditedContent } = useEditedContentActions();\n const { setFocusedContentKeyPath, focusedContent } =\n useFocusUnmergedDictionary();\n const { addNewElement, goToField } = useIntlayer('navigation-view');\n const nodeType = getNodeType(section);\n const getIsSelected = (keyPath: KeyPath[]) =>\n (focusedContent?.keyPath?.length ?? 0) > 0 &&\n isSameKeyPath(keyPath, focusedContent?.keyPath ?? []);\n const isEditableSubSection = getIsEditableSection(section);\n\n if (!section) return <></>;\n\n if (isEditableSubSection) {\n return (\n <Button\n label={goToField.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(keyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(keyPath[keyPath.length - 1].key as string)}\n </Button>\n );\n }\n\n if (typeof section === 'object') {\n if (nodeType === NodeType.ReactNode) {\n return <>React Node</>;\n }\n\n if (nodeType === NodeType.Translation) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {locales.map((translationKey) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Translation, key: translationKey },\n ];\n\n return (\n <NavigationViewNode\n key={translationKey}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Enumeration || nodeType === NodeType.Condition) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {Object.keys(\n (section as any)[nodeType as unknown as keyof typeof section]\n ).map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: nodeType, key },\n ];\n\n return (\n <NavigationViewNode\n key={key}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n return (\n <div className=\"flex flex-col justify-between gap-2\">\n {(section as unknown as ContentNode[]).map((_, index) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Array, key: index },\n ];\n\n return (\n <NavigationViewNode\n key={JSON.stringify(childKeyPath)}\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n })}\n\n <Button\n label={addNewElement.label.value}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.NEUTRAL}\n textAlign={ButtonTextAlign.LEFT}\n onClick={() => {\n const newKeyPath: KeyPath[] = [\n ...keyPath,\n {\n type: NodeType.Array,\n key: (section as unknown as ContentNode[]).length,\n },\n ];\n const sectionArray = section as unknown as ContentNode[];\n const emptySectionEl =\n getEmptyNode(\n sectionArray[\n (sectionArray.length - 1) as keyof typeof sectionArray\n ] as ContentNode\n ) ?? '';\n addEditedContent(\n dictionary.localId as LocalDictionaryId,\n emptySectionEl,\n newKeyPath,\n false\n );\n setFocusedContentKeyPath(newKeyPath);\n }}\n Icon={Plus}\n >\n {addNewElement.text}\n </Button>\n </div>\n );\n }\n\n if (typeof section.nodeType === 'string') {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: section.nodeType } as KeyPath,\n ];\n\n return (\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n );\n }\n\n const sectionArray = Object.keys(section);\n return (\n <div className=\"flex w-full max-w-full flex-col justify-between gap-2\">\n {sectionArray.map((key) => {\n const childKeyPath: KeyPath[] = [\n ...keyPath,\n { type: NodeType.Object, key },\n ];\n\n const subSection = getContentNodeByKeyPath(sectionProp, childKeyPath);\n const isEditableSubSection = getIsEditableSection(subSection);\n\n if (isEditableSubSection) {\n return (\n <Button\n label={`${goToField.label.value} ${key}`}\n key={key}\n isActive={getIsSelected(childKeyPath)}\n variant={ButtonVariant.HOVERABLE}\n color={ButtonColor.TEXT}\n className=\"w-full\"\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n IconRight={ChevronRight}\n >\n {camelCaseToSentence(key)}\n </Button>\n );\n }\n\n return (\n <Accordion\n key={key}\n label={`${goToField.label.value} ${key}`}\n isActive={getIsSelected(childKeyPath)}\n onClick={() => setFocusedContentKeyPath(childKeyPath)}\n header={camelCaseToSentence(key)}\n >\n <div className=\"mt-2 flex w-full max-w-full\">\n <div className=\"flex-1 pl-10\">\n <NavigationViewNode\n keyPath={childKeyPath}\n section={sectionProp}\n dictionary={dictionary}\n />\n </div>\n </div>\n </Accordion>\n );\n })}\n </div>\n );\n }\n\n return (\n <>\n Error loading section --\n {nodeType}\n --\n {JSON.stringify(section)}\n --\n {JSON.stringify(keyPath)}\n </>\n );\n};\n"],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ import { useIntlayer } from "react-intlayer";
|
|
|
14
14
|
import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
|
|
15
15
|
|
|
16
16
|
//#region src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx
|
|
17
|
-
const SaveForm = ({ dictionary, mode, className, onDelete, onSave
|
|
17
|
+
const SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) => {
|
|
18
18
|
const [isFormatAlertModalOpen, setIsFormatAlertModalOpen] = useState(false);
|
|
19
19
|
const { setLocaleDictionary } = useDictionariesRecordActions();
|
|
20
20
|
const { mutate: deleteDictionary, isPending: isDeleting } = useDeleteDictionary();
|
|
@@ -53,7 +53,7 @@ const SaveForm = ({ dictionary, mode, className, onDelete, onSave,...props }) =>
|
|
|
53
53
|
};
|
|
54
54
|
const handleDeleteDictionary = () => {
|
|
55
55
|
if (!dictionary.id) return;
|
|
56
|
-
deleteDictionary({ dictionaryId: dictionary.id
|
|
56
|
+
deleteDictionary({ dictionaryId: dictionary.id }, { onSuccess: (res) => {
|
|
57
57
|
if (res) onDelete?.();
|
|
58
58
|
} });
|
|
59
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SaveForm.mjs","names":["SaveForm: FC<DictionaryDetailsProps>"],"sources":["../../../../../src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary as DistantDictionary } from '@intlayer/backend';\nimport {\n useDictionariesRecordActions,\n useEditedContent,\n} from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types';\nimport {\n ArrowUpFromLine,\n Download,\n RotateCcw,\n Save,\n Trash,\n} from 'lucide-react';\nimport {\n type DetailedHTMLProps,\n type FC,\n type FormHTMLAttributes,\n useState,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Modal, ModalSize } from '../../../components/Modal';\nimport {\n useAuth,\n useDeleteDictionary,\n usePushDictionaries,\n useWriteDictionary,\n} from '../../../hooks';\nimport { cn } from '../../../utils/cn';\nimport { ButtonColor, ButtonVariant } from '../../Button';\nimport { Form } from '../../Form';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n onDelete?: () => void;\n onSave?: () => void;\n} & DetailedHTMLProps<FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>;\n\nexport const SaveForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n className,\n onDelete,\n onSave,\n ...props\n}) => {\n const [isFormatAlertModalOpen, setIsFormatAlertModalOpen] = useState(false);\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const { mutate: deleteDictionary, isPending: isDeleting } =\n useDeleteDictionary();\n const { mutate: writeDictionary, isPending: isWriting } =\n useWriteDictionary();\n const { mutate: pushDictionaries, isPending: isPushing } =\n usePushDictionaries();\n const isLoading = isWriting || isPushing;\n\n const { editedContent, restoreEditedContent } = useEditedContent();\n const {\n deleteButton,\n resetButton,\n saveButton,\n publishButton,\n downloadButton,\n confirmation,\n } = useIntlayer('save-dictionary-details');\n const { isAuthenticated } = useAuth();\n\n const editedDictionary = editedContent?.[dictionary.localId!];\n\n const isEdited =\n editedDictionary &&\n JSON.stringify(editedDictionary) !== JSON.stringify(dictionary);\n\n const isDistantDictionary =\n typeof (dictionary as unknown as DistantDictionary)?.id !== 'undefined';\n\n const handleSaveDictionaryConfirmation = async () => {\n if (!editedContent?.[dictionary.localId!]) return;\n\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n writeDictionary(\n {\n dictionary: updatedDictionary,\n },\n {\n onSuccess: () => {\n setLocaleDictionary(editedContent?.[dictionary.localId!]);\n restoreEditedContent(dictionary.localId!);\n onSave?.();\n },\n }\n );\n };\n\n const handlePushDictionary = () => {\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n pushDictionaries(\n { dictionaries: [updatedDictionary] },\n {\n onSuccess: (res) => {\n if (res) {\n setLocaleDictionary(updatedDictionary);\n restoreEditedContent(dictionary.localId!);\n onSave?.();\n }\n },\n }\n );\n };\n\n const handleDeleteDictionary = () => {\n if (!(dictionary as unknown as DistantDictionary).id) return;\n\n deleteDictionary(\n {\n dictionaryId: (\n dictionary as unknown as DistantDictionary\n ).id.toString(),\n },\n {\n onSuccess: (res) => {\n if (res) {\n onDelete?.();\n }\n },\n }\n );\n };\n\n return (\n <>\n <Modal\n isOpen={isFormatAlertModalOpen}\n title={confirmation.title.value}\n size={ModalSize.MD}\n >\n <form className=\"size-full px-3\">\n <p className=\"py-4 text-neutral text-sm\">{confirmation.message}</p>\n\n <div className=\"mt-12 flex justify-end gap-2 max-md:flex-col\">\n <Form.Button\n label={confirmation.cancelButton.label.value}\n disabled={!isEdited || isLoading}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n variant={ButtonVariant.OUTLINE}\n onClick={() => setIsFormatAlertModalOpen(false)}\n >\n {confirmation.cancelButton.text}\n </Form.Button>\n <Form.Button\n label={confirmation.confirmButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handleSaveDictionaryConfirmation}\n >\n {confirmation.confirmButton.text}\n </Form.Button>\n </div>\n </form>\n </Modal>\n <form\n className={cn('flex justify-end gap-2 max-md:flex-col', className)}\n {...props}\n >\n {mode.includes('remote') &&\n isDistantDictionary &&\n onDelete &&\n isAuthenticated && (\n <Form.Button\n label={deleteButton.label.value}\n Icon={Trash}\n color={ButtonColor.ERROR}\n variant={ButtonVariant.OUTLINE}\n className=\"max-md:w-full\"\n isLoading={isDeleting}\n onClick={handleDeleteDictionary}\n >\n {deleteButton.text}\n </Form.Button>\n )}\n {isEdited && (\n <Form.Button\n label={resetButton.label.value}\n disabled={!isEdited}\n Icon={RotateCcw}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={() => restoreEditedContent(dictionary.localId!)}\n >\n {resetButton.text}\n </Form.Button>\n )}\n {mode.includes('local') && (\n <Form.Button\n label={downloadButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Download}\n color={ButtonColor.TEXT}\n variant={\n isAuthenticated ? ButtonVariant.OUTLINE : ButtonVariant.DEFAULT\n }\n className=\"max-md:w-full\"\n isLoading={isWriting}\n onClick={() => setIsFormatAlertModalOpen(true)}\n >\n {downloadButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') && isAuthenticated && !isDistantDictionary && (\n <Form.Button\n label={publishButton.label.value}\n disabled={isLoading}\n Icon={ArrowUpFromLine}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {publishButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') &&\n isAuthenticated &&\n isDistantDictionary &&\n isEdited && (\n <Form.Button\n label={saveButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {saveButton.text}\n </Form.Button>\n )}\n </form>\n </>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SaveForm.mjs","names":["SaveForm: FC<DictionaryDetailsProps>"],"sources":["../../../../../src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx"],"sourcesContent":["'use client';\n\nimport type { Dictionary as DistantDictionary } from '@intlayer/backend';\nimport {\n useDictionariesRecordActions,\n useEditedContent,\n} from '@intlayer/editor-react';\nimport type { Dictionary } from '@intlayer/types';\nimport {\n ArrowUpFromLine,\n Download,\n RotateCcw,\n Save,\n Trash,\n} from 'lucide-react';\nimport {\n type DetailedHTMLProps,\n type FC,\n type FormHTMLAttributes,\n useState,\n} from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Modal, ModalSize } from '../../../components/Modal';\nimport {\n useAuth,\n useDeleteDictionary,\n usePushDictionaries,\n useWriteDictionary,\n} from '../../../hooks';\nimport { cn } from '../../../utils/cn';\nimport { ButtonColor, ButtonVariant } from '../../Button';\nimport { Form } from '../../Form';\n\ntype DictionaryDetailsProps = {\n dictionary: Dictionary;\n mode: ('local' | 'remote')[];\n onDelete?: () => void;\n onSave?: () => void;\n} & DetailedHTMLProps<FormHTMLAttributes<HTMLFormElement>, HTMLFormElement>;\n\nexport const SaveForm: FC<DictionaryDetailsProps> = ({\n dictionary,\n mode,\n className,\n onDelete,\n onSave,\n ...props\n}) => {\n const [isFormatAlertModalOpen, setIsFormatAlertModalOpen] = useState(false);\n const { setLocaleDictionary } = useDictionariesRecordActions();\n const { mutate: deleteDictionary, isPending: isDeleting } =\n useDeleteDictionary();\n const { mutate: writeDictionary, isPending: isWriting } =\n useWriteDictionary();\n const { mutate: pushDictionaries, isPending: isPushing } =\n usePushDictionaries();\n const isLoading = isWriting || isPushing;\n\n const { editedContent, restoreEditedContent } = useEditedContent();\n const {\n deleteButton,\n resetButton,\n saveButton,\n publishButton,\n downloadButton,\n confirmation,\n } = useIntlayer('save-dictionary-details');\n const { isAuthenticated } = useAuth();\n\n const editedDictionary = editedContent?.[dictionary.localId!];\n\n const isEdited =\n editedDictionary &&\n JSON.stringify(editedDictionary) !== JSON.stringify(dictionary);\n\n const isDistantDictionary =\n typeof (dictionary as unknown as DistantDictionary)?.id !== 'undefined';\n\n const handleSaveDictionaryConfirmation = async () => {\n if (!editedContent?.[dictionary.localId!]) return;\n\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n writeDictionary(\n {\n dictionary: updatedDictionary,\n },\n {\n onSuccess: () => {\n setLocaleDictionary(editedContent?.[dictionary.localId!]);\n restoreEditedContent(dictionary.localId!);\n onSave?.();\n },\n }\n );\n };\n\n const handlePushDictionary = () => {\n const updatedDictionary = {\n ...dictionary,\n ...editedContent?.[dictionary.localId!],\n };\n\n pushDictionaries(\n { dictionaries: [updatedDictionary] },\n {\n onSuccess: (res) => {\n if (res) {\n setLocaleDictionary(updatedDictionary);\n restoreEditedContent(dictionary.localId!);\n onSave?.();\n }\n },\n }\n );\n };\n\n const handleDeleteDictionary = () => {\n if (!dictionary.id) return;\n\n deleteDictionary(\n {\n dictionaryId: dictionary.id,\n },\n {\n onSuccess: (res) => {\n if (res) {\n onDelete?.();\n }\n },\n }\n );\n };\n\n return (\n <>\n <Modal\n isOpen={isFormatAlertModalOpen}\n title={confirmation.title.value}\n size={ModalSize.MD}\n >\n <form className=\"size-full px-3\">\n <p className=\"py-4 text-neutral text-sm\">{confirmation.message}</p>\n\n <div className=\"mt-12 flex justify-end gap-2 max-md:flex-col\">\n <Form.Button\n label={confirmation.cancelButton.label.value}\n disabled={!isEdited || isLoading}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n variant={ButtonVariant.OUTLINE}\n onClick={() => setIsFormatAlertModalOpen(false)}\n >\n {confirmation.cancelButton.text}\n </Form.Button>\n <Form.Button\n label={confirmation.confirmButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handleSaveDictionaryConfirmation}\n >\n {confirmation.confirmButton.text}\n </Form.Button>\n </div>\n </form>\n </Modal>\n <form\n className={cn('flex justify-end gap-2 max-md:flex-col', className)}\n {...props}\n >\n {mode.includes('remote') &&\n isDistantDictionary &&\n onDelete &&\n isAuthenticated && (\n <Form.Button\n label={deleteButton.label.value}\n Icon={Trash}\n color={ButtonColor.ERROR}\n variant={ButtonVariant.OUTLINE}\n className=\"max-md:w-full\"\n isLoading={isDeleting}\n onClick={handleDeleteDictionary}\n >\n {deleteButton.text}\n </Form.Button>\n )}\n {isEdited && (\n <Form.Button\n label={resetButton.label.value}\n disabled={!isEdited}\n Icon={RotateCcw}\n variant={ButtonVariant.OUTLINE}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n onClick={() => restoreEditedContent(dictionary.localId!)}\n >\n {resetButton.text}\n </Form.Button>\n )}\n {mode.includes('local') && (\n <Form.Button\n label={downloadButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Download}\n color={ButtonColor.TEXT}\n variant={\n isAuthenticated ? ButtonVariant.OUTLINE : ButtonVariant.DEFAULT\n }\n className=\"max-md:w-full\"\n isLoading={isWriting}\n onClick={() => setIsFormatAlertModalOpen(true)}\n >\n {downloadButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') && isAuthenticated && !isDistantDictionary && (\n <Form.Button\n label={publishButton.label.value}\n disabled={isLoading}\n Icon={ArrowUpFromLine}\n color={ButtonColor.TEXT}\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {publishButton.text}\n </Form.Button>\n )}\n {mode.includes('remote') &&\n isAuthenticated &&\n isDistantDictionary &&\n isEdited && (\n <Form.Button\n label={saveButton.label.value}\n disabled={!isEdited || isLoading}\n Icon={Save}\n color=\"text\"\n className=\"max-md:w-full\"\n isLoading={isPushing}\n onClick={handlePushDictionary}\n >\n {saveButton.text}\n </Form.Button>\n )}\n </form>\n </>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAwCA,MAAaA,YAAwC,EACnD,YACA,MACA,WACA,UACA,QACA,GAAG,YACC;CACJ,MAAM,CAAC,wBAAwB,6BAA6B,SAAS,MAAM;CAC3E,MAAM,EAAE,wBAAwB,8BAA8B;CAC9D,MAAM,EAAE,QAAQ,kBAAkB,WAAW,eAC3C,qBAAqB;CACvB,MAAM,EAAE,QAAQ,iBAAiB,WAAW,cAC1C,oBAAoB;CACtB,MAAM,EAAE,QAAQ,kBAAkB,WAAW,cAC3C,qBAAqB;CACvB,MAAM,YAAY,aAAa;CAE/B,MAAM,EAAE,eAAe,yBAAyB,kBAAkB;CAClE,MAAM,EACJ,cACA,aACA,YACA,eACA,gBACA,iBACE,YAAY,0BAA0B;CAC1C,MAAM,EAAE,oBAAoB,SAAS;CAErC,MAAM,mBAAmB,gBAAgB,WAAW;CAEpD,MAAM,WACJ,oBACA,KAAK,UAAU,iBAAiB,KAAK,KAAK,UAAU,WAAW;CAEjE,MAAM,sBACJ,OAAQ,YAA6C,OAAO;CAE9D,MAAM,mCAAmC,YAAY;AACnD,MAAI,CAAC,gBAAgB,WAAW,SAAW;AAO3C,kBACE,EACE,YAPsB;GACxB,GAAG;GACH,GAAG,gBAAgB,WAAW;GAC/B,EAKE,EACD,EACE,iBAAiB;AACf,uBAAoB,gBAAgB,WAAW,SAAU;AACzD,wBAAqB,WAAW,QAAS;AACzC,aAAU;KAEb,CACF;;CAGH,MAAM,6BAA6B;EACjC,MAAM,oBAAoB;GACxB,GAAG;GACH,GAAG,gBAAgB,WAAW;GAC/B;AAED,mBACE,EAAE,cAAc,CAAC,kBAAkB,EAAE,EACrC,EACE,YAAY,QAAQ;AAClB,OAAI,KAAK;AACP,wBAAoB,kBAAkB;AACtC,yBAAqB,WAAW,QAAS;AACzC,cAAU;;KAGf,CACF;;CAGH,MAAM,+BAA+B;AACnC,MAAI,CAAC,WAAW,GAAI;AAEpB,mBACE,EACE,cAAc,WAAW,IAC1B,EACD,EACE,YAAY,QAAQ;AAClB,OAAI,IACF,aAAY;KAGjB,CACF;;AAGH,QACE,8CACE,oBAAC;EACC,QAAQ;EACR,OAAO,aAAa,MAAM;EAC1B,MAAM,UAAU;YAEhB,qBAAC;GAAK,WAAU;cACd,oBAAC;IAAE,WAAU;cAA6B,aAAa;KAAY,EAEnE,qBAAC;IAAI,WAAU;eACb,oBAAC,KAAK;KACJ,OAAO,aAAa,aAAa,MAAM;KACvC,UAAU,CAAC,YAAY;KACvB,OAAO,YAAY;KACnB,WAAU;KACV,SAAS,cAAc;KACvB,eAAe,0BAA0B,MAAM;eAE9C,aAAa,aAAa;MACf,EACd,oBAAC,KAAK;KACJ,OAAO,aAAa,cAAc,MAAM;KACxC,UAAU,CAAC,YAAY;KACvB,MAAM;KACN,OAAO,YAAY;KACnB,WAAU;KACV,WAAW;KACX,SAAS;eAER,aAAa,cAAc;MAChB;KACV;IACD;GACD,EACR,qBAAC;EACC,WAAW,GAAG,0CAA0C,UAAU;EAClE,GAAI;;GAEH,KAAK,SAAS,SAAS,IACtB,uBACA,YACA,mBACE,oBAAC,KAAK;IACJ,OAAO,aAAa,MAAM;IAC1B,MAAM;IACN,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,WAAU;IACV,WAAW;IACX,SAAS;cAER,aAAa;KACF;GAEjB,YACC,oBAAC,KAAK;IACJ,OAAO,YAAY,MAAM;IACzB,UAAU,CAAC;IACX,MAAM;IACN,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,WAAU;IACV,eAAe,qBAAqB,WAAW,QAAS;cAEvD,YAAY;KACD;GAEf,KAAK,SAAS,QAAQ,IACrB,oBAAC,KAAK;IACJ,OAAO,eAAe,MAAM;IAC5B,UAAU,CAAC,YAAY;IACvB,MAAM;IACN,OAAO,YAAY;IACnB,SACE,kBAAkB,cAAc,UAAU,cAAc;IAE1D,WAAU;IACV,WAAW;IACX,eAAe,0BAA0B,KAAK;cAE7C,eAAe;KACJ;GAEf,KAAK,SAAS,SAAS,IAAI,mBAAmB,CAAC,uBAC9C,oBAAC,KAAK;IACJ,OAAO,cAAc,MAAM;IAC3B,UAAU;IACV,MAAM;IACN,OAAO,YAAY;IACnB,WAAU;IACV,WAAW;IACX,SAAS;cAER,cAAc;KACH;GAEf,KAAK,SAAS,SAAS,IACtB,mBACA,uBACA,YACE,oBAAC,KAAK;IACJ,OAAO,WAAW,MAAM;IACxB,UAAU,CAAC,YAAY;IACvB,MAAM;IACN,OAAM;IACN,WAAU;IACV,WAAW;IACX,SAAS;cAER,WAAW;KACA;;GAEb,IACN"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../../Button/Button.mjs";
|
|
5
4
|
import { Container } from "../../Container/index.mjs";
|
|
5
|
+
import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../../Button/Button.mjs";
|
|
6
6
|
import { InputVariant } from "../../Input/Input.mjs";
|
|
7
7
|
import { EditableFieldInput } from "../../EditableField/EditableFieldInput.mjs";
|
|
8
|
-
import { camelCaseToSentence } from "../../../utils/camelCase.mjs";
|
|
9
8
|
import { NodeTypeSelector } from "../NodeTypeSelector.mjs";
|
|
10
9
|
import { Plus, Trash } from "lucide-react";
|
|
11
10
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -13,6 +12,7 @@ import { getDefaultNode, getNodeChildren, getNodeType, isSameKeyPath } from "@in
|
|
|
13
12
|
import { useIntlayer } from "react-intlayer";
|
|
14
13
|
import { useConfiguration, useEditedContentActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
|
|
15
14
|
import { NodeType } from "@intlayer/types";
|
|
15
|
+
import { camelCaseToSentence } from "@intlayer/config/client";
|
|
16
16
|
|
|
17
17
|
//#region src/components/DictionaryFieldEditor/StructureView/StructureView.tsx
|
|
18
18
|
const NodeTypeView = ({ section, dictionaryLocalId, keyPath, onNodeTypeChange: onNodeTypeChangeProp }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StructureView.mjs","names":["NodeTypeView: FC<NodeTypeViewProps>","nodeType","NodeView: FC<NodeWrapperProps>","prevKeyPath: KeyPath[]","lastKeyPath: KeyPath","ObjectView: FC<ObjectViewProps>","StructureView: FC<StructureViewProps>"],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/StructureView.tsx"],"sourcesContent":["'use client';\n\nimport {\n getDefaultNode,\n getNodeChildren,\n getNodeType,\n isSameKeyPath,\n} from '@intlayer/core';\nimport {\n useConfiguration,\n useEditedContentActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport {\n type KeyPath,\n type LocalDictionaryId,\n NodeType,\n type TypedNode,\n} from '@intlayer/types';\nimport type { ContentNode } from 'intlayer';\nimport { Plus, Trash } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { camelCaseToSentence } from '../../../utils/camelCase';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../../Button';\nimport { Container } from '../../Container';\nimport { EditableFieldInput } from '../../EditableField';\nimport { InputVariant } from '../../Input';\nimport { NodeTypeSelector } from '../NodeTypeSelector';\n\ntype NodeTypeViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n onNodeTypeChange: (content?: ContentNode) => void;\n};\n\nconst NodeTypeView: FC<NodeTypeViewProps> = ({\n section,\n dictionaryLocalId,\n keyPath,\n onNodeTypeChange: onNodeTypeChangeProp,\n}) => {\n const locales = useConfiguration()?.internationalization.locales ?? [];\n const nodeType = getNodeType(section);\n const children = getNodeChildren(section);\n\n const onNodeTypeChange = (content?: ContentNode) => {\n const transformedContent = getDefaultNode(\n nodeType,\n locales,\n content\n ) as ContentNode;\n\n onNodeTypeChangeProp(transformedContent);\n };\n\n if (\n nodeType === NodeType.Translation ||\n nodeType === NodeType.Condition ||\n nodeType === NodeType.Gender ||\n nodeType === NodeType.Enumeration\n ) {\n const firstKey = Object.keys(\n (section as unknown as TypedNode)[nodeType as keyof typeof section]\n )[0];\n const childrenKeyPath = [\n ...keyPath,\n { type: nodeType, key: firstKey },\n ] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n const childrenKeyPath = [...keyPath, { type: nodeType, key: 0 } as KeyPath];\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <>\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n <div className=\"mt-6 ml-10\">\n <StructureView\n keyPath={keyPath}\n section={section}\n dictionaryLocalId={dictionaryLocalId}\n />\n </div>\n </>\n );\n }\n\n return (\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(getDefaultNode(nodeType, locales) as ContentNode)\n }\n />\n );\n};\n\ntype NodeWrapperProps = {\n sectionKey?: string;\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NodeView: FC<NodeWrapperProps> = ({\n sectionKey,\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { focusedContent, setFocusedContentKeyPath } =\n useFocusUnmergedDictionary();\n const { renameEditedContent, addEditedContent } = useEditedContentActions();\n\n const { titleInput, deleteButton } = useIntlayer('structure-view');\n\n const handleRenameNodeKey = (keyName: string) => {\n renameEditedContent(dictionaryLocalId, keyName, keyPath);\n const prevKeyPath: KeyPath[] = keyPath.slice(0, -1);\n const lastKeyPath: KeyPath = keyPath[keyPath.length - 1];\n const newKeyPath: KeyPath[] = [\n ...prevKeyPath,\n { ...lastKeyPath, key: keyName } as KeyPath,\n ];\n setFocusedContentKeyPath(newKeyPath);\n };\n\n return (\n <Container\n transparency=\"xl\"\n roundedSize=\"xl\"\n className=\"w-full min-w-80 gap-2 overflow-auto px-5 py-2\"\n border\n borderColor=\"text\"\n background=\"none\"\n aria-selected={isSameKeyPath(keyPath, focusedContent?.keyPath ?? [])}\n onClick={() => setFocusedContentKeyPath(keyPath)}\n >\n <div className=\"flex w-full flex-col items-start justify-between gap-3\">\n {typeof sectionKey === 'string' && (\n <div className=\"w-full\">\n <div className=\"flex w-full items-center justify-between gap-10\">\n <EditableFieldInput\n name=\"key\"\n aria-label=\"Key\"\n placeholder={titleInput.placeholder.value}\n defaultValue={sectionKey}\n onSave={(value) => handleRenameNodeKey(value)}\n variant={InputVariant.INVISIBLE}\n />\n <Button\n label={deleteButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"translate-x-2\"\n Icon={Trash}\n onClick={() => {\n addEditedContent(dictionaryLocalId, undefined, keyPath);\n\n const parentKeyPath: KeyPath[] = keyPath.slice(0, -1);\n setFocusedContentKeyPath(parentKeyPath);\n }}\n />\n </div>\n\n <span className=\"ml-3 text-neutral text-sm\">\n ( {camelCaseToSentence(sectionKey)} )\n </span>\n </div>\n )}\n <NodeTypeView\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n section={section}\n onNodeTypeChange={(content) => {\n addEditedContent(dictionaryLocalId, content, keyPath);\n }}\n />\n </div>\n </Container>\n );\n};\n\ntype ObjectViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const ObjectView: FC<ObjectViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { addNodeButton } = useIntlayer('structure-view');\n const { setFocusedContentKeyPath } = useFocusUnmergedDictionary();\n const { addEditedContent } = useEditedContentActions();\n\n if (!section || typeof section !== 'object') {\n return <div>Not an object</div>;\n }\n\n return (\n <div className=\"flex flex-col gap-2 overflow-y-auto\">\n <ul className=\"mr-auto flex flex-col gap-4\">\n {Object.keys(section).map((key) => (\n <li key={key} className=\"flex w-full\">\n <NodeView\n sectionKey={key}\n section={section?.[key as keyof typeof section]}\n keyPath={[...keyPath, { type: NodeType.Object, key }]}\n dictionaryLocalId={dictionaryLocalId}\n />\n </li>\n ))}\n </ul>\n <Button\n label={addNodeButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.MD}\n color={ButtonColor.TEXT}\n Icon={Plus}\n className=\"flex-1\"\n onClick={() => {\n const newKey = 'newKey';\n const newKeyPath = [\n ...keyPath,\n { type: NodeType.Object, key: newKey },\n ] as KeyPath[];\n addEditedContent(dictionaryLocalId, '', newKeyPath);\n setFocusedContentKeyPath(newKeyPath);\n }}\n >\n {addNodeButton.text}\n </Button>\n </div>\n );\n};\n\ntype StructureViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const StructureView: FC<StructureViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n if (\n !section ||\n typeof section !== 'object' ||\n typeof section.nodeType === 'string'\n ) {\n return (\n <NodeView\n sectionKey={'content'}\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n }\n\n return (\n <ObjectView\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StructureView.mjs","names":["NodeTypeView: FC<NodeTypeViewProps>","nodeType","NodeView: FC<NodeWrapperProps>","prevKeyPath: KeyPath[]","lastKeyPath: KeyPath","ObjectView: FC<ObjectViewProps>","StructureView: FC<StructureViewProps>"],"sources":["../../../../../src/components/DictionaryFieldEditor/StructureView/StructureView.tsx"],"sourcesContent":["'use client';\n\nimport { camelCaseToSentence } from '@intlayer/config/client';\nimport {\n getDefaultNode,\n getNodeChildren,\n getNodeType,\n isSameKeyPath,\n} from '@intlayer/core';\nimport {\n useConfiguration,\n useEditedContentActions,\n useFocusUnmergedDictionary,\n} from '@intlayer/editor-react';\nimport {\n type KeyPath,\n type LocalDictionaryId,\n NodeType,\n type TypedNode,\n} from '@intlayer/types';\nimport type { ContentNode } from 'intlayer';\nimport { Plus, Trash } from 'lucide-react';\nimport type { FC } from 'react';\nimport { useIntlayer } from 'react-intlayer';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../../Button';\nimport { Container } from '../../Container';\nimport { EditableFieldInput } from '../../EditableField';\nimport { InputVariant } from '../../Input';\nimport { NodeTypeSelector } from '../NodeTypeSelector';\n\ntype NodeTypeViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n onNodeTypeChange: (content?: ContentNode) => void;\n};\n\nconst NodeTypeView: FC<NodeTypeViewProps> = ({\n section,\n dictionaryLocalId,\n keyPath,\n onNodeTypeChange: onNodeTypeChangeProp,\n}) => {\n const locales = useConfiguration()?.internationalization.locales ?? [];\n const nodeType = getNodeType(section);\n const children = getNodeChildren(section);\n\n const onNodeTypeChange = (content?: ContentNode) => {\n const transformedContent = getDefaultNode(\n nodeType,\n locales,\n content\n ) as ContentNode;\n\n onNodeTypeChangeProp(transformedContent);\n };\n\n if (\n nodeType === NodeType.Translation ||\n nodeType === NodeType.Condition ||\n nodeType === NodeType.Gender ||\n nodeType === NodeType.Enumeration\n ) {\n const firstKey = Object.keys(\n (section as unknown as TypedNode)[nodeType as keyof typeof section]\n )[0];\n const childrenKeyPath = [\n ...keyPath,\n { type: nodeType, key: firstKey },\n ] as KeyPath[];\n\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Array) {\n const childrenKeyPath = [...keyPath, { type: nodeType, key: 0 } as KeyPath];\n return (\n <div className=\"flex w-full flex-col gap-1\">\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n\n <NodeTypeView\n section={children}\n keyPath={childrenKeyPath}\n dictionaryLocalId={dictionaryLocalId}\n onNodeTypeChange={onNodeTypeChange}\n />\n </div>\n );\n }\n\n if (nodeType === NodeType.Object) {\n return (\n <>\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(\n getDefaultNode(nodeType, locales) as ContentNode\n )\n }\n />\n <div className=\"mt-6 ml-10\">\n <StructureView\n keyPath={keyPath}\n section={section}\n dictionaryLocalId={dictionaryLocalId}\n />\n </div>\n </>\n );\n }\n\n return (\n <NodeTypeSelector\n section={section}\n onValueChange={(nodeType) =>\n onNodeTypeChangeProp(getDefaultNode(nodeType, locales) as ContentNode)\n }\n />\n );\n};\n\ntype NodeWrapperProps = {\n sectionKey?: string;\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const NodeView: FC<NodeWrapperProps> = ({\n sectionKey,\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { focusedContent, setFocusedContentKeyPath } =\n useFocusUnmergedDictionary();\n const { renameEditedContent, addEditedContent } = useEditedContentActions();\n\n const { titleInput, deleteButton } = useIntlayer('structure-view');\n\n const handleRenameNodeKey = (keyName: string) => {\n renameEditedContent(dictionaryLocalId, keyName, keyPath);\n const prevKeyPath: KeyPath[] = keyPath.slice(0, -1);\n const lastKeyPath: KeyPath = keyPath[keyPath.length - 1];\n const newKeyPath: KeyPath[] = [\n ...prevKeyPath,\n { ...lastKeyPath, key: keyName } as KeyPath,\n ];\n setFocusedContentKeyPath(newKeyPath);\n };\n\n return (\n <Container\n transparency=\"xl\"\n roundedSize=\"xl\"\n className=\"w-full min-w-80 gap-2 overflow-auto px-5 py-2\"\n border\n borderColor=\"text\"\n background=\"none\"\n aria-selected={isSameKeyPath(keyPath, focusedContent?.keyPath ?? [])}\n onClick={() => setFocusedContentKeyPath(keyPath)}\n >\n <div className=\"flex w-full flex-col items-start justify-between gap-3\">\n {typeof sectionKey === 'string' && (\n <div className=\"w-full\">\n <div className=\"flex w-full items-center justify-between gap-10\">\n <EditableFieldInput\n name=\"key\"\n aria-label=\"Key\"\n placeholder={titleInput.placeholder.value}\n defaultValue={sectionKey}\n onSave={(value) => handleRenameNodeKey(value)}\n variant={InputVariant.INVISIBLE}\n />\n <Button\n label={deleteButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n className=\"translate-x-2\"\n Icon={Trash}\n onClick={() => {\n addEditedContent(dictionaryLocalId, undefined, keyPath);\n\n const parentKeyPath: KeyPath[] = keyPath.slice(0, -1);\n setFocusedContentKeyPath(parentKeyPath);\n }}\n />\n </div>\n\n <span className=\"ml-3 text-neutral text-sm\">\n ( {camelCaseToSentence(sectionKey)} )\n </span>\n </div>\n )}\n <NodeTypeView\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n section={section}\n onNodeTypeChange={(content) => {\n addEditedContent(dictionaryLocalId, content, keyPath);\n }}\n />\n </div>\n </Container>\n );\n};\n\ntype ObjectViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const ObjectView: FC<ObjectViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n const { addNodeButton } = useIntlayer('structure-view');\n const { setFocusedContentKeyPath } = useFocusUnmergedDictionary();\n const { addEditedContent } = useEditedContentActions();\n\n if (!section || typeof section !== 'object') {\n return <div>Not an object</div>;\n }\n\n return (\n <div className=\"flex flex-col gap-2 overflow-y-auto\">\n <ul className=\"mr-auto flex flex-col gap-4\">\n {Object.keys(section).map((key) => (\n <li key={key} className=\"flex w-full\">\n <NodeView\n sectionKey={key}\n section={section?.[key as keyof typeof section]}\n keyPath={[...keyPath, { type: NodeType.Object, key }]}\n dictionaryLocalId={dictionaryLocalId}\n />\n </li>\n ))}\n </ul>\n <Button\n label={addNodeButton.label.value}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.MD}\n color={ButtonColor.TEXT}\n Icon={Plus}\n className=\"flex-1\"\n onClick={() => {\n const newKey = 'newKey';\n const newKeyPath = [\n ...keyPath,\n { type: NodeType.Object, key: newKey },\n ] as KeyPath[];\n addEditedContent(dictionaryLocalId, '', newKeyPath);\n setFocusedContentKeyPath(newKeyPath);\n }}\n >\n {addNodeButton.text}\n </Button>\n </div>\n );\n};\n\ntype StructureViewProps = {\n dictionaryLocalId: LocalDictionaryId;\n keyPath: KeyPath[];\n section: ContentNode;\n};\n\nexport const StructureView: FC<StructureViewProps> = ({\n section,\n keyPath,\n dictionaryLocalId,\n}) => {\n if (\n !section ||\n typeof section !== 'object' ||\n typeof section.nodeType === 'string'\n ) {\n return (\n <NodeView\n sectionKey={'content'}\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n }\n\n return (\n <ObjectView\n section={section}\n keyPath={keyPath}\n dictionaryLocalId={dictionaryLocalId}\n />\n );\n};\n"],"mappings":"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"}
|
package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
import { Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant } from "../../Button/Button.mjs";
|
|
5
4
|
import { Container } from "../../Container/index.mjs";
|
|
5
|
+
import { Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant } from "../../Button/Button.mjs";
|
|
6
6
|
import { DropDown } from "../../DropDown/index.mjs";
|
|
7
7
|
import { useVersionSwitcher } from "./VersionSwitcherContext.mjs";
|
|
8
8
|
import { MoveVertical } from "lucide-react";
|
|
@@ -50,7 +50,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
50
50
|
* - Screen reader compatible with proper role and labeling
|
|
51
51
|
* - Maintains focus trap within dropdown when needed
|
|
52
52
|
*/
|
|
53
|
-
const DropDown = ({ children, className, identifier
|
|
53
|
+
const DropDown = ({ children, className, identifier, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
54
54
|
className: cn(`group/dropdown relative flex`, className),
|
|
55
55
|
"aria-label": `DropDown ${identifier}`,
|
|
56
56
|
id: `dropdown-container-${identifier}`,
|
|
@@ -79,7 +79,7 @@ const DropDown = ({ children, className, identifier,...props }) => /* @__PURE__
|
|
|
79
79
|
*
|
|
80
80
|
* @note Don't nest Button components inside the Trigger - it's already a button
|
|
81
81
|
*/
|
|
82
|
-
const Trigger = ({ children, identifier, className, label
|
|
82
|
+
const Trigger = ({ children, identifier, className, label, ...props }) => /* @__PURE__ */ jsx(Button, {
|
|
83
83
|
className: cn("w-full cursor-pointer", className),
|
|
84
84
|
label: label ?? `Open panel ${identifier}`,
|
|
85
85
|
"aria-haspopup": "true",
|
|
@@ -138,7 +138,7 @@ let DropDownAlign = /* @__PURE__ */ function(DropDownAlign$1) {
|
|
|
138
138
|
* - Keyboard navigation support when isFocusable is enabled
|
|
139
139
|
* - Screen reader announcements for state changes
|
|
140
140
|
*/
|
|
141
|
-
const Panel = ({ children, isHidden = void 0, isOverable = false, isFocusable = false, align = DropDownAlign.START, identifier, className
|
|
141
|
+
const Panel = ({ children, isHidden = void 0, isOverable = false, isFocusable = false, align = DropDownAlign.START, identifier, className, ...props }) => /* @__PURE__ */ jsx("div", {
|
|
142
142
|
className: cn("absolute top-[calc(100%+0.5rem)] z-[1000] min-w-full", align === DropDownAlign.START && "left-0", align === DropDownAlign.END && "right-0", className),
|
|
143
143
|
"aria-hidden": isHidden,
|
|
144
144
|
role: "region",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["DropDown: DropDownType","Trigger: FC<TriggerProps>","Panel: FC<PanelProps>"],"sources":["../../../../src/components/DropDown/index.tsx"],"sourcesContent":["import type { FC, HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Button, type ButtonProps } from '../Button';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\n\n/**\n * Props for the DropDown component\n */\nexport interface DropDownProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Unique identifier that links the trigger and panel for accessibility.\n * This is used to generate proper ARIA attributes.\n * @example \"user-menu\"\n * @example \"language-selector\"\n */\n identifier: string;\n}\n\nexport type DropDownType = FC<DropDownProps> & {\n Trigger: FC<TriggerProps>;\n Panel: FC<PanelProps>;\n};\n\n/**\n * DropDown Component\n *\n * A compound component that provides dropdown/popover functionality with flexible trigger mechanisms.\n * Supports hover, focus, and controlled visibility states with proper accessibility features.\n *\n * @example\n * ```tsx\n * // Basic hover dropdown\n * <DropDown identifier=\"menu\">\n * <DropDown.Trigger identifier=\"menu\">\n * Open Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Menu content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Focus-based dropdown for accessibility\n * <DropDown identifier=\"accessible-menu\">\n * <DropDown.Trigger identifier=\"accessible-menu\">\n * Keyboard Accessible Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"accessible-menu\" isFocusable>\n * <div>Accessible content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Controlled dropdown\n * <DropDown identifier=\"controlled\">\n * <DropDown.Trigger identifier=\"controlled\">\n * Controlled Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"controlled\" isHidden={!isOpen}>\n * <div>Controlled content</div>\n * </DropDown.Panel>\n * </DropDown>\n * ```\n *\n * @component\n * @accessibility\n * - Uses proper ARIA attributes (aria-haspopup, aria-labelledby, etc.)\n * - Supports keyboard navigation with focus management\n * - Screen reader compatible with proper role and labeling\n * - Maintains focus trap within dropdown when needed\n */\nexport const DropDown: DropDownType = ({\n children,\n className,\n identifier,\n ...props\n}) => (\n <div\n className={cn(`group/dropdown relative flex`, className)}\n aria-label={`DropDown ${identifier}`}\n id={`dropdown-container-${identifier}`}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Props for the DropDown.Trigger component\n */\nexport interface TriggerProps extends Partial<ButtonProps> {\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n}\n\n/**\n * DropDown.Trigger Component\n *\n * The clickable/focusable element that controls the dropdown panel visibility.\n * Built on top of the Button component with enhanced dropdown-specific behaviors.\n *\n * @example\n * ```tsx\n * <DropDown.Trigger identifier=\"menu\">\n * <div>Click to open</div>\n * </DropDown.Trigger>\n * ```\n *\n * @component\n * @accessibility\n * - Automatically generates appropriate ARIA attributes\n * - Maintains proper focus management across browsers\n * - Works with keyboard navigation (Tab, Enter, Space)\n * - Announces dropdown state to screen readers\n *\n * @note Don't nest Button components inside the Trigger - it's already a button\n */\nconst Trigger: FC<TriggerProps> = ({\n children,\n identifier,\n className,\n label,\n ...props\n}) => (\n <Button\n className={cn('w-full cursor-pointer', className)}\n label={label ?? `Open panel ${identifier}`}\n aria-haspopup=\"true\"\n aria-controls={`dropdown-panel-${identifier}`}\n id={`dropdown-trigger-${identifier}`}\n onClick={(e) => {\n // Ensure focus behavior is consistent across all mobile browsers\n (e.currentTarget as HTMLButtonElement).focus();\n }}\n // onBlur={(e) => {\n // // Default behavior: ensure the trigger is unfocused when leaving the dropdown\n // e.currentTarget.blur();\n // }}\n variant=\"none\"\n {...props}\n >\n {children}\n </Button>\n);\n\n/**\n * Alignment options for the dropdown panel relative to the trigger\n */\nexport enum DropDownAlign {\n /** Align panel to the start (left in LTR, right in RTL) of the trigger */\n START = 'start',\n /** Align panel to the end (right in LTR, left in RTL) of the trigger */\n END = 'end',\n}\n\n/**\n * Props for the DropDown.Panel component\n */\nexport interface PanelProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Whether the panel should be visible when the trigger is focused.\n * Enables keyboard accessibility for the dropdown.\n * @default false\n */\n isFocusable?: boolean;\n\n /**\n * Controls panel visibility explicitly.\n * - `true`: Panel is hidden\n * - `false`: Panel is visible\n * - `undefined`: Panel visibility controlled by hover/focus states\n * @default undefined\n */\n isHidden?: boolean;\n\n /**\n * Whether the panel should be visible when hovering over the trigger.\n * Provides quick access via mouse interaction.\n * @default false\n */\n isOverable?: boolean;\n\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n\n /**\n * Horizontal alignment of the panel relative to the trigger\n * @default DropDownAlign.START\n */\n align?: DropDownAlign | `${DropDownAlign}`;\n}\n\n/**\n * DropDown.Panel Component\n *\n * The content area that appears when the dropdown is triggered.\n * Supports multiple trigger methods (hover, focus, controlled) with smooth animations.\n *\n * @example\n * ```tsx\n * // Hover-triggered panel\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Content appears on hover</div>\n * </DropDown.Panel>\n *\n * // Focus-triggered panel (accessible)\n * <DropDown.Panel identifier=\"menu\" isFocusable>\n * <div>Content appears on focus</div>\n * </DropDown.Panel>\n *\n * // Controlled panel\n * <DropDown.Panel identifier=\"menu\" isHidden={!isOpen}>\n * <div>Content visibility controlled externally</div>\n * </DropDown.Panel>\n *\n * // Right-aligned panel\n * <DropDown.Panel identifier=\"menu\" align={DropDownAlign.END} isOverable>\n * <div>Right-aligned content</div>\n * </DropDown.Panel>\n * ```\n *\n * @component\n * @accessibility\n * - Proper ARIA attributes (role, aria-labelledby, aria-hidden)\n * - Smooth height transitions with MaxHeightSmoother\n * - Keyboard navigation support when isFocusable is enabled\n * - Screen reader announcements for state changes\n */\nconst Panel: FC<PanelProps> = ({\n children,\n isHidden = undefined,\n isOverable = false,\n isFocusable = false,\n align = DropDownAlign.START,\n identifier,\n className,\n ...props\n}) => (\n <div\n className={cn(\n 'absolute top-[calc(100%+0.5rem)] z-[1000] min-w-full',\n align === DropDownAlign.START && 'left-0',\n align === DropDownAlign.END && 'right-0',\n className\n )}\n aria-hidden={isHidden}\n role=\"region\"\n aria-labelledby={`dropdown-trigger-${identifier}`}\n id={`dropdown-panel-${identifier}`}\n >\n <MaxHeightSmoother\n isHidden={isHidden}\n className={cn(\n 'overflow-x-visible',\n isHidden === false && 'invisible',\n isHidden === true && 'visible',\n isOverable &&\n 'group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]',\n isFocusable &&\n 'group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]'\n )}\n {...props}\n >\n {children}\n </MaxHeightSmoother>\n </div>\n);\n\nDropDown.Trigger = Trigger;\nDropDown.Panel = Panel;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,MAAaA,YAA0B,EACrC,UACA,WACA,
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["DropDown: DropDownType","Trigger: FC<TriggerProps>","Panel: FC<PanelProps>"],"sources":["../../../../src/components/DropDown/index.tsx"],"sourcesContent":["import type { FC, HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Button, type ButtonProps } from '../Button';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\n\n/**\n * Props for the DropDown component\n */\nexport interface DropDownProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Unique identifier that links the trigger and panel for accessibility.\n * This is used to generate proper ARIA attributes.\n * @example \"user-menu\"\n * @example \"language-selector\"\n */\n identifier: string;\n}\n\nexport type DropDownType = FC<DropDownProps> & {\n Trigger: FC<TriggerProps>;\n Panel: FC<PanelProps>;\n};\n\n/**\n * DropDown Component\n *\n * A compound component that provides dropdown/popover functionality with flexible trigger mechanisms.\n * Supports hover, focus, and controlled visibility states with proper accessibility features.\n *\n * @example\n * ```tsx\n * // Basic hover dropdown\n * <DropDown identifier=\"menu\">\n * <DropDown.Trigger identifier=\"menu\">\n * Open Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Menu content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Focus-based dropdown for accessibility\n * <DropDown identifier=\"accessible-menu\">\n * <DropDown.Trigger identifier=\"accessible-menu\">\n * Keyboard Accessible Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"accessible-menu\" isFocusable>\n * <div>Accessible content</div>\n * </DropDown.Panel>\n * </DropDown>\n *\n * // Controlled dropdown\n * <DropDown identifier=\"controlled\">\n * <DropDown.Trigger identifier=\"controlled\">\n * Controlled Menu\n * </DropDown.Trigger>\n * <DropDown.Panel identifier=\"controlled\" isHidden={!isOpen}>\n * <div>Controlled content</div>\n * </DropDown.Panel>\n * </DropDown>\n * ```\n *\n * @component\n * @accessibility\n * - Uses proper ARIA attributes (aria-haspopup, aria-labelledby, etc.)\n * - Supports keyboard navigation with focus management\n * - Screen reader compatible with proper role and labeling\n * - Maintains focus trap within dropdown when needed\n */\nexport const DropDown: DropDownType = ({\n children,\n className,\n identifier,\n ...props\n}) => (\n <div\n className={cn(`group/dropdown relative flex`, className)}\n aria-label={`DropDown ${identifier}`}\n id={`dropdown-container-${identifier}`}\n {...props}\n >\n {children}\n </div>\n);\n\n/**\n * Props for the DropDown.Trigger component\n */\nexport interface TriggerProps extends Partial<ButtonProps> {\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n}\n\n/**\n * DropDown.Trigger Component\n *\n * The clickable/focusable element that controls the dropdown panel visibility.\n * Built on top of the Button component with enhanced dropdown-specific behaviors.\n *\n * @example\n * ```tsx\n * <DropDown.Trigger identifier=\"menu\">\n * <div>Click to open</div>\n * </DropDown.Trigger>\n * ```\n *\n * @component\n * @accessibility\n * - Automatically generates appropriate ARIA attributes\n * - Maintains proper focus management across browsers\n * - Works with keyboard navigation (Tab, Enter, Space)\n * - Announces dropdown state to screen readers\n *\n * @note Don't nest Button components inside the Trigger - it's already a button\n */\nconst Trigger: FC<TriggerProps> = ({\n children,\n identifier,\n className,\n label,\n ...props\n}) => (\n <Button\n className={cn('w-full cursor-pointer', className)}\n label={label ?? `Open panel ${identifier}`}\n aria-haspopup=\"true\"\n aria-controls={`dropdown-panel-${identifier}`}\n id={`dropdown-trigger-${identifier}`}\n onClick={(e) => {\n // Ensure focus behavior is consistent across all mobile browsers\n (e.currentTarget as HTMLButtonElement).focus();\n }}\n // onBlur={(e) => {\n // // Default behavior: ensure the trigger is unfocused when leaving the dropdown\n // e.currentTarget.blur();\n // }}\n variant=\"none\"\n {...props}\n >\n {children}\n </Button>\n);\n\n/**\n * Alignment options for the dropdown panel relative to the trigger\n */\nexport enum DropDownAlign {\n /** Align panel to the start (left in LTR, right in RTL) of the trigger */\n START = 'start',\n /** Align panel to the end (right in LTR, left in RTL) of the trigger */\n END = 'end',\n}\n\n/**\n * Props for the DropDown.Panel component\n */\nexport interface PanelProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Whether the panel should be visible when the trigger is focused.\n * Enables keyboard accessibility for the dropdown.\n * @default false\n */\n isFocusable?: boolean;\n\n /**\n * Controls panel visibility explicitly.\n * - `true`: Panel is hidden\n * - `false`: Panel is visible\n * - `undefined`: Panel visibility controlled by hover/focus states\n * @default undefined\n */\n isHidden?: boolean;\n\n /**\n * Whether the panel should be visible when hovering over the trigger.\n * Provides quick access via mouse interaction.\n * @default false\n */\n isOverable?: boolean;\n\n /**\n * Unique identifier that matches the parent DropDown identifier\n * @example \"user-menu\"\n */\n identifier: string;\n\n /**\n * Horizontal alignment of the panel relative to the trigger\n * @default DropDownAlign.START\n */\n align?: DropDownAlign | `${DropDownAlign}`;\n}\n\n/**\n * DropDown.Panel Component\n *\n * The content area that appears when the dropdown is triggered.\n * Supports multiple trigger methods (hover, focus, controlled) with smooth animations.\n *\n * @example\n * ```tsx\n * // Hover-triggered panel\n * <DropDown.Panel identifier=\"menu\" isOverable>\n * <div>Content appears on hover</div>\n * </DropDown.Panel>\n *\n * // Focus-triggered panel (accessible)\n * <DropDown.Panel identifier=\"menu\" isFocusable>\n * <div>Content appears on focus</div>\n * </DropDown.Panel>\n *\n * // Controlled panel\n * <DropDown.Panel identifier=\"menu\" isHidden={!isOpen}>\n * <div>Content visibility controlled externally</div>\n * </DropDown.Panel>\n *\n * // Right-aligned panel\n * <DropDown.Panel identifier=\"menu\" align={DropDownAlign.END} isOverable>\n * <div>Right-aligned content</div>\n * </DropDown.Panel>\n * ```\n *\n * @component\n * @accessibility\n * - Proper ARIA attributes (role, aria-labelledby, aria-hidden)\n * - Smooth height transitions with MaxHeightSmoother\n * - Keyboard navigation support when isFocusable is enabled\n * - Screen reader announcements for state changes\n */\nconst Panel: FC<PanelProps> = ({\n children,\n isHidden = undefined,\n isOverable = false,\n isFocusable = false,\n align = DropDownAlign.START,\n identifier,\n className,\n ...props\n}) => (\n <div\n className={cn(\n 'absolute top-[calc(100%+0.5rem)] z-[1000] min-w-full',\n align === DropDownAlign.START && 'left-0',\n align === DropDownAlign.END && 'right-0',\n className\n )}\n aria-hidden={isHidden}\n role=\"region\"\n aria-labelledby={`dropdown-trigger-${identifier}`}\n id={`dropdown-panel-${identifier}`}\n >\n <MaxHeightSmoother\n isHidden={isHidden}\n className={cn(\n 'overflow-x-visible',\n isHidden === false && 'invisible',\n isHidden === true && 'visible',\n isOverable &&\n 'group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]',\n isFocusable &&\n 'group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]'\n )}\n {...props}\n >\n {children}\n </MaxHeightSmoother>\n </div>\n);\n\nDropDown.Trigger = Trigger;\nDropDown.Panel = Panel;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEA,MAAaA,YAA0B,EACrC,UACA,WACA,YACA,GAAG,YAEH,oBAAC;CACC,WAAW,GAAG,gCAAgC,UAAU;CACxD,cAAY,YAAY;CACxB,IAAI,sBAAsB;CAC1B,GAAI;CAEH;EACG;;;;;;;;;;;;;;;;;;;;;;;AAoCR,MAAMC,WAA6B,EACjC,UACA,YACA,WACA,OACA,GAAG,YAEH,oBAAC;CACC,WAAW,GAAG,yBAAyB,UAAU;CACjD,OAAO,SAAS,cAAc;CAC9B,iBAAc;CACd,iBAAe,kBAAkB;CACjC,IAAI,oBAAoB;CACxB,UAAU,MAAM;AAEd,EAAC,EAAE,cAAoC,OAAO;;CAMhD,SAAQ;CACR,GAAI;CAEH;EACM;;;;AAMX,IAAY,0DAAL;;AAEL;;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EF,MAAMC,SAAyB,EAC7B,UACA,WAAW,QACX,aAAa,OACb,cAAc,OACd,QAAQ,cAAc,OACtB,YACA,WACA,GAAG,YAEH,oBAAC;CACC,WAAW,GACT,wDACA,UAAU,cAAc,SAAS,UACjC,UAAU,cAAc,OAAO,WAC/B,UACD;CACD,eAAa;CACb,MAAK;CACL,mBAAiB,oBAAoB;CACrC,IAAI,kBAAkB;WAEtB,oBAAC;EACW;EACV,WAAW,GACT,sBACA,aAAa,SAAS,aACtB,aAAa,QAAQ,WACrB,cACE,qEACF,eACE,kFACH;EACD,GAAI;EAEH;GACiB;EAChB;AAGR,SAAS,UAAU;AACnB,SAAS,QAAQ"}
|
|
@@ -40,7 +40,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
40
40
|
* @param props - EditableFieldInputProps extending InputProps
|
|
41
41
|
* @returns React functional component
|
|
42
42
|
*/
|
|
43
|
-
const EditableFieldInput = ({ onSave, onCancel, ref
|
|
43
|
+
const EditableFieldInput = ({ onSave, onCancel, ref, ...props }) => {
|
|
44
44
|
const inputRef = useRef(null);
|
|
45
45
|
const handleSave = () => {
|
|
46
46
|
onSave?.(inputRef.current?.value ?? "");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableFieldInput.mjs","names":["EditableFieldInput: FC<EditableFieldInputProps>"],"sources":["../../../../src/components/EditableField/EditableFieldInput.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type Ref, useImperativeHandle, useMemo, useRef } from 'react';\nimport { Input, type InputProps } from '../Input';\nimport { EditableFieldLayout } from './EditableFieldLayout';\n\n/**\n * Props for the EditableFieldInput component, extending standard Input props\n */\ntype EditableFieldInputProps = InputProps & {\n /** Callback function called when the user saves the edited value */\n onSave?: (value: string) => void;\n /** Callback function called when the user cancels the edit operation */\n onCancel?: () => void;\n};\n\n/**\n * EditableFieldInput Component\n *\n * An inline editable input field that displays as read-only text until clicked.\n * When activated, it shows an input field with save and cancel buttons.\n *\n * @example\n * ```tsx\n * <EditableFieldInput\n * defaultValue=\"Edit me\"\n * placeholder=\"Click to edit...\"\n * onSave={(value) => console.log('Saved:', value)}\n * onCancel={() => console.log('Cancelled')}\n * />\n * ```\n *\n * ## Features\n * - **Inline Editing**: Click to edit, displays as text when not editing\n * - **Save/Cancel Actions**: Built-in save and cancel buttons with callbacks\n * - **Keyboard Support**: Accessible keyboard navigation\n * - **Input Variants**: Supports all Input component variants and sizes\n * - **Auto-save on Click Away**: Saves automatically when clicking outside\n * - **Ref Forwarding**: Exposes the underlying input element reference\n *\n * ## Accessibility\n * - Uses semantic HTML with proper ARIA attributes\n * - Keyboard accessible with tab navigation\n * - Screen reader friendly with descriptive labels\n * - Focus management for edit mode transitions\n *\n * @param props - EditableFieldInputProps extending InputProps\n * @returns React functional component\n */\nexport const EditableFieldInput: FC<EditableFieldInputProps> = ({\n onSave,\n onCancel,\n ref,\n ...props\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleSave = () => {\n // Your save logic here\n onSave?.(inputRef.current?.value ?? '');\n };\n\n const handleCancel = () => {\n if (inputRef.current) {\n inputRef.current.value = inputRef.current.defaultValue ?? '';\n }\n onCancel?.();\n };\n\n // Expose the input ref to parent components\n useImperativeHandle(ref as Ref<HTMLElement>, () => inputRef.current!);\n\n const value = useMemo(\n () =>\n (props.value as string) ??\n inputRef.current?.value ??\n (props.defaultValue as string),\n\n [props.value, props.defaultValue, inputRef.current?.value]\n );\n\n return (\n <EditableFieldLayout\n value={value}\n onCancel={handleCancel}\n onSave={handleSave}\n >\n <Input ref={inputRef} {...props} />\n </EditableFieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAaA,sBAAmD,EAC9D,QACA,UACA,
|
|
1
|
+
{"version":3,"file":"EditableFieldInput.mjs","names":["EditableFieldInput: FC<EditableFieldInputProps>"],"sources":["../../../../src/components/EditableField/EditableFieldInput.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type Ref, useImperativeHandle, useMemo, useRef } from 'react';\nimport { Input, type InputProps } from '../Input';\nimport { EditableFieldLayout } from './EditableFieldLayout';\n\n/**\n * Props for the EditableFieldInput component, extending standard Input props\n */\ntype EditableFieldInputProps = InputProps & {\n /** Callback function called when the user saves the edited value */\n onSave?: (value: string) => void;\n /** Callback function called when the user cancels the edit operation */\n onCancel?: () => void;\n};\n\n/**\n * EditableFieldInput Component\n *\n * An inline editable input field that displays as read-only text until clicked.\n * When activated, it shows an input field with save and cancel buttons.\n *\n * @example\n * ```tsx\n * <EditableFieldInput\n * defaultValue=\"Edit me\"\n * placeholder=\"Click to edit...\"\n * onSave={(value) => console.log('Saved:', value)}\n * onCancel={() => console.log('Cancelled')}\n * />\n * ```\n *\n * ## Features\n * - **Inline Editing**: Click to edit, displays as text when not editing\n * - **Save/Cancel Actions**: Built-in save and cancel buttons with callbacks\n * - **Keyboard Support**: Accessible keyboard navigation\n * - **Input Variants**: Supports all Input component variants and sizes\n * - **Auto-save on Click Away**: Saves automatically when clicking outside\n * - **Ref Forwarding**: Exposes the underlying input element reference\n *\n * ## Accessibility\n * - Uses semantic HTML with proper ARIA attributes\n * - Keyboard accessible with tab navigation\n * - Screen reader friendly with descriptive labels\n * - Focus management for edit mode transitions\n *\n * @param props - EditableFieldInputProps extending InputProps\n * @returns React functional component\n */\nexport const EditableFieldInput: FC<EditableFieldInputProps> = ({\n onSave,\n onCancel,\n ref,\n ...props\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleSave = () => {\n // Your save logic here\n onSave?.(inputRef.current?.value ?? '');\n };\n\n const handleCancel = () => {\n if (inputRef.current) {\n inputRef.current.value = inputRef.current.defaultValue ?? '';\n }\n onCancel?.();\n };\n\n // Expose the input ref to parent components\n useImperativeHandle(ref as Ref<HTMLElement>, () => inputRef.current!);\n\n const value = useMemo(\n () =>\n (props.value as string) ??\n inputRef.current?.value ??\n (props.defaultValue as string),\n\n [props.value, props.defaultValue, inputRef.current?.value]\n );\n\n return (\n <EditableFieldLayout\n value={value}\n onCancel={handleCancel}\n onSave={handleSave}\n >\n <Input ref={inputRef} {...props} />\n </EditableFieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDA,MAAaA,sBAAmD,EAC9D,QACA,UACA,KACA,GAAG,YACC;CACJ,MAAM,WAAW,OAAyB,KAAK;CAE/C,MAAM,mBAAmB;AAEvB,WAAS,SAAS,SAAS,SAAS,GAAG;;CAGzC,MAAM,qBAAqB;AACzB,MAAI,SAAS,QACX,UAAS,QAAQ,QAAQ,SAAS,QAAQ,gBAAgB;AAE5D,cAAY;;AAId,qBAAoB,WAA+B,SAAS,QAAS;AAWrE,QACE,oBAAC;EACC,OAXU,cAET,MAAM,SACP,SAAS,SAAS,SACjB,MAAM,cAET;GAAC,MAAM;GAAO,MAAM;GAAc,SAAS,SAAS;GAAM,CAC3D;EAKG,UAAU;EACV,QAAQ;YAER,oBAAC;GAAM,KAAK;GAAU,GAAI;IAAS;GACf"}
|
|
@@ -8,7 +8,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
|
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
|
|
10
10
|
//#region src/components/EditableField/EditableFieldLayout.tsx
|
|
11
|
-
const EditableFieldLayout = ({ value = "", onCancel, onSave, onClick, children, isDisabled
|
|
11
|
+
const EditableFieldLayout = ({ value = "", onCancel, onSave, onClick, children, isDisabled, ...props }) => {
|
|
12
12
|
const [isEditing, setIsEditing] = useState(false);
|
|
13
13
|
const editableFieldRef = useRef(null);
|
|
14
14
|
const handleSave = (e) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableFieldLayout.mjs","names":["EditableFieldLayout: FC<EditableFieldLayoutProps>"],"sources":["../../../../src/components/EditableField/EditableFieldLayout.tsx"],"sourcesContent":["'use client';\n\nimport { Check, Pencil, X } from 'lucide-react';\nimport {\n type FC,\n type HTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../utils/cn';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\n\ntype EditableFieldLayoutProps = {\n value?: string | null | undefined;\n onCancel: () => void;\n onSave: () => void;\n children: ReactNode;\n isDisabled?: boolean;\n} & HTMLAttributes<HTMLSpanElement>;\n\nexport const EditableFieldLayout: FC<EditableFieldLayoutProps> = ({\n value = '',\n onCancel,\n onSave,\n onClick,\n children,\n isDisabled,\n ...props\n}) => {\n const [isEditing, setIsEditing] = useState(false);\n const editableFieldRef = useRef<HTMLSpanElement>(null);\n\n const handleSave = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onSave();\n };\n\n const handleCancel = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onCancel();\n };\n\n const result = !value || value === '' ? '-' : value;\n\n const handleClickOutside = useCallback(\n (e: MouseEvent) => {\n // Check if there's any text selected\n const selection = window.getSelection();\n if (selection && selection.toString().trim() !== '') {\n // If there is a selection, do not trigger the save and exit early.\n return;\n }\n\n // Proceed if the click is truly outside the component.\n if (\n editableFieldRef.current &&\n !editableFieldRef.current.contains(e.target as Node)\n ) {\n setIsEditing(false);\n onSave();\n }\n },\n [onSave]\n );\n\n useEffect(() => {\n if (isEditing) {\n document.addEventListener('click', handleClickOutside);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n\n return () => document.removeEventListener('click', handleClickOutside);\n }, [handleClickOutside, isEditing]);\n\n return (\n <span\n className=\"group/editable-field flex gap-2\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n setIsEditing(true);\n onClick?.(e);\n }}\n ref={editableFieldRef}\n {...props}\n >\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'display' : 'hidden')}\n key={String(isEditing)}\n >\n {children}\n <Button\n label=\"Save\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n Icon={Check}\n onClick={handleSave}\n disabled={isDisabled}\n className=\"!text-current\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"Save changes\"\n data-testid=\"editable-field-save-button\"\n />\n <Button\n label=\"Cancel\"\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n className=\"!text-current\"\n size={ButtonSize.ICON_SM}\n Icon={X}\n onClick={handleCancel}\n disabled={isDisabled}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Cancel changes\"\n data-testid=\"editable-field-cancel-button\"\n />\n </div>\n\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'hidden' : 'display')}\n >\n <span className=\"ml-2 flex w-full whitespace-pre-wrap p-1 text-sm leading-6\">\n {result}\n </span>\n <Button\n label=\"Edit\"\n Icon={Pencil}\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n className=\"!text-current invisible group-hover/editable-field:visible\"\n disabled={isDisabled}\n onClick={(e) => {\n e.stopPropagation();\n setIsEditing(true);\n }}\n />\n </div>\n </span>\n );\n};\n"],"mappings":";;;;;;;;;;AAuBA,MAAaA,uBAAqD,EAChE,QAAQ,IACR,UACA,QACA,SACA,UACA,
|
|
1
|
+
{"version":3,"file":"EditableFieldLayout.mjs","names":["EditableFieldLayout: FC<EditableFieldLayoutProps>"],"sources":["../../../../src/components/EditableField/EditableFieldLayout.tsx"],"sourcesContent":["'use client';\n\nimport { Check, Pencil, X } from 'lucide-react';\nimport {\n type FC,\n type HTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../utils/cn';\nimport { Button, ButtonColor, ButtonSize, ButtonVariant } from '../Button';\n\ntype EditableFieldLayoutProps = {\n value?: string | null | undefined;\n onCancel: () => void;\n onSave: () => void;\n children: ReactNode;\n isDisabled?: boolean;\n} & HTMLAttributes<HTMLSpanElement>;\n\nexport const EditableFieldLayout: FC<EditableFieldLayoutProps> = ({\n value = '',\n onCancel,\n onSave,\n onClick,\n children,\n isDisabled,\n ...props\n}) => {\n const [isEditing, setIsEditing] = useState(false);\n const editableFieldRef = useRef<HTMLSpanElement>(null);\n\n const handleSave = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onSave();\n };\n\n const handleCancel = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n setIsEditing(false);\n onCancel();\n };\n\n const result = !value || value === '' ? '-' : value;\n\n const handleClickOutside = useCallback(\n (e: MouseEvent) => {\n // Check if there's any text selected\n const selection = window.getSelection();\n if (selection && selection.toString().trim() !== '') {\n // If there is a selection, do not trigger the save and exit early.\n return;\n }\n\n // Proceed if the click is truly outside the component.\n if (\n editableFieldRef.current &&\n !editableFieldRef.current.contains(e.target as Node)\n ) {\n setIsEditing(false);\n onSave();\n }\n },\n [onSave]\n );\n\n useEffect(() => {\n if (isEditing) {\n document.addEventListener('click', handleClickOutside);\n } else {\n document.removeEventListener('click', handleClickOutside);\n }\n\n return () => document.removeEventListener('click', handleClickOutside);\n }, [handleClickOutside, isEditing]);\n\n return (\n <span\n className=\"group/editable-field flex gap-2\"\n role=\"button\"\n tabIndex={0}\n onClick={(e) => {\n setIsEditing(true);\n onClick?.(e);\n }}\n ref={editableFieldRef}\n {...props}\n >\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'display' : 'hidden')}\n key={String(isEditing)}\n >\n {children}\n <Button\n label=\"Save\"\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n color={ButtonColor.TEXT}\n Icon={Check}\n onClick={handleSave}\n disabled={isDisabled}\n className=\"!text-current\"\n role=\"button\"\n tabIndex={0}\n aria-label=\"Save changes\"\n data-testid=\"editable-field-save-button\"\n />\n <Button\n label=\"Cancel\"\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n className=\"!text-current\"\n size={ButtonSize.ICON_SM}\n Icon={X}\n onClick={handleCancel}\n disabled={isDisabled}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Cancel changes\"\n data-testid=\"editable-field-cancel-button\"\n />\n </div>\n\n <div\n className={cn('flex flex-1 gap-2', isEditing ? 'hidden' : 'display')}\n >\n <span className=\"ml-2 flex w-full whitespace-pre-wrap p-1 text-sm leading-6\">\n {result}\n </span>\n <Button\n label=\"Edit\"\n Icon={Pencil}\n color={ButtonColor.TEXT}\n variant={ButtonVariant.HOVERABLE}\n size={ButtonSize.ICON_SM}\n className=\"!text-current invisible group-hover/editable-field:visible\"\n disabled={isDisabled}\n onClick={(e) => {\n e.stopPropagation();\n setIsEditing(true);\n }}\n />\n </div>\n </span>\n );\n};\n"],"mappings":";;;;;;;;;;AAuBA,MAAaA,uBAAqD,EAChE,QAAQ,IACR,UACA,QACA,SACA,UACA,YACA,GAAG,YACC;CACJ,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,mBAAmB,OAAwB,KAAK;CAEtD,MAAM,cAAc,MAA2C;AAC7D,IAAE,iBAAiB;AACnB,eAAa,MAAM;AACnB,UAAQ;;CAGV,MAAM,gBAAgB,MAA2C;AAC/D,IAAE,iBAAiB;AACnB,eAAa,MAAM;AACnB,YAAU;;CAGZ,MAAM,SAAS,CAAC,SAAS,UAAU,KAAK,MAAM;CAE9C,MAAM,qBAAqB,aACxB,MAAkB;EAEjB,MAAM,YAAY,OAAO,cAAc;AACvC,MAAI,aAAa,UAAU,UAAU,CAAC,MAAM,KAAK,GAE/C;AAIF,MACE,iBAAiB,WACjB,CAAC,iBAAiB,QAAQ,SAAS,EAAE,OAAe,EACpD;AACA,gBAAa,MAAM;AACnB,WAAQ;;IAGZ,CAAC,OAAO,CACT;AAED,iBAAgB;AACd,MAAI,UACF,UAAS,iBAAiB,SAAS,mBAAmB;MAEtD,UAAS,oBAAoB,SAAS,mBAAmB;AAG3D,eAAa,SAAS,oBAAoB,SAAS,mBAAmB;IACrE,CAAC,oBAAoB,UAAU,CAAC;AAEnC,QACE,qBAAC;EACC,WAAU;EACV,MAAK;EACL,UAAU;EACV,UAAU,MAAM;AACd,gBAAa,KAAK;AAClB,aAAU,EAAE;;EAEd,KAAK;EACL,GAAI;aAEJ,qBAAC;GACC,WAAW,GAAG,qBAAqB,YAAY,YAAY,SAAS;;IAGnE;IACD,oBAAC;KACC,OAAM;KACN,SAAS,cAAc;KACvB,MAAM,WAAW;KACjB,OAAO,YAAY;KACnB,MAAM;KACN,SAAS;KACT,UAAU;KACV,WAAU;KACV,MAAK;KACL,UAAU;KACV,cAAW;KACX,eAAY;MACZ;IACF,oBAAC;KACC,OAAM;KACN,OAAO,YAAY;KACnB,SAAS,cAAc;KACvB,WAAU;KACV,MAAM,WAAW;KACjB,MAAM;KACN,SAAS;KACT,UAAU;KACV,MAAK;KACL,UAAU;KACV,cAAW;KACX,eAAY;MACZ;;KA9BG,OAAO,UAAU,CA+BlB,EAEN,qBAAC;GACC,WAAW,GAAG,qBAAqB,YAAY,WAAW,UAAU;cAEpE,oBAAC;IAAK,WAAU;cACb;KACI,EACP,oBAAC;IACC,OAAM;IACN,MAAM;IACN,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,WAAU;IACV,UAAU;IACV,UAAU,MAAM;AACd,OAAE,iBAAiB;AACnB,kBAAa,KAAK;;KAEpB;IACE;GACD"}
|
|
@@ -44,7 +44,7 @@ import { jsx } from "react/jsx-runtime";
|
|
|
44
44
|
* @param props - EditableFieldTextAreaProps extending AutoSizedTextAreaProps
|
|
45
45
|
* @returns React functional component
|
|
46
46
|
*/
|
|
47
|
-
const EditableFieldTextArea = ({ onSave, onCancel, ref
|
|
47
|
+
const EditableFieldTextArea = ({ onSave, onCancel, ref, ...props }) => {
|
|
48
48
|
const textAreaRef = useRef(null);
|
|
49
49
|
useImperativeHandle(ref, () => textAreaRef.current);
|
|
50
50
|
const handleSave = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditableFieldTextArea.mjs","names":["EditableFieldTextArea: FC<EditableFieldTextAreaProps>"],"sources":["../../../../src/components/EditableField/EditableFieldTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type Ref, useImperativeHandle, useRef } from 'react';\nimport { AutoSizedTextArea, type AutoSizedTextAreaProps } from '../TextArea';\nimport { EditableFieldLayout } from './EditableFieldLayout';\n\n/**\n * Props for the EditableFieldTextArea component, extending AutoSizedTextAreaProps\n */\ntype EditableFieldTextAreaProps = AutoSizedTextAreaProps & {\n /** Callback function called when the user saves the edited value */\n onSave?: (value: string) => void;\n /** Callback function called when the user cancels the edit operation */\n onCancel?: () => void;\n};\n\n/**\n * EditableFieldTextArea Component\n *\n * An inline editable textarea field that displays as read-only text until clicked.\n * When activated, it shows an auto-sized textarea with save and cancel buttons.\n * Perfect for multiline text editing with automatic height adjustment.\n *\n * @example\n * ```tsx\n * <EditableFieldTextArea\n * defaultValue=\"Multiline text content\"\n * placeholder=\"Click to edit...\"\n * maxRows={10}\n * onSave={(value) => console.log('Saved:', value)}\n * onCancel={() => console.log('Cancelled')}\n * />\n * ```\n *\n * ## Features\n * - **Inline Editing**: Click to edit, displays as formatted text when not editing\n * - **Auto-Sizing**: Automatically adjusts height to fit content\n * - **Save/Cancel Actions**: Built-in save and cancel buttons with callbacks\n * - **Multiline Support**: Preserves line breaks and formatting\n * - **Max Rows Control**: Configurable maximum height with scroll\n * - **Auto-save on Click Away**: Saves automatically when clicking outside\n * - **Ref Forwarding**: Exposes the underlying textarea element reference\n *\n * ## Accessibility\n * - Uses semantic HTML with proper ARIA attributes\n * - Keyboard accessible with tab navigation\n * - Screen reader friendly with descriptive labels\n * - Focus management for edit mode transitions\n * - Preserves whitespace and formatting for screen readers\n *\n * @param props - EditableFieldTextAreaProps extending AutoSizedTextAreaProps\n * @returns React functional component\n */\nexport const EditableFieldTextArea: FC<EditableFieldTextAreaProps> = ({\n onSave,\n onCancel,\n ref,\n ...props\n}) => {\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n\n // Expose the text area ref to parent components\n useImperativeHandle(ref as Ref<HTMLElement>, () => textAreaRef.current!);\n\n const handleSave = () => {\n // Your save logic here\n onSave?.(textAreaRef.current?.value ?? '');\n };\n\n const handleCancel = () => {\n if (textAreaRef.current) {\n textAreaRef.current.value = textAreaRef.current.defaultValue ?? '';\n }\n onCancel?.();\n };\n\n const memoValue =\n (props.value as string) ??\n textAreaRef.current?.value ??\n (props.defaultValue as string) ??\n '';\n\n return (\n <EditableFieldLayout\n value={memoValue}\n onCancel={handleCancel}\n onSave={handleSave}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <AutoSizedTextArea\n className=\"leading-6\"\n ref={textAreaRef}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n {...props}\n />\n </EditableFieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,MAAaA,yBAAyD,EACpE,QACA,UACA,
|
|
1
|
+
{"version":3,"file":"EditableFieldTextArea.mjs","names":["EditableFieldTextArea: FC<EditableFieldTextAreaProps>"],"sources":["../../../../src/components/EditableField/EditableFieldTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type Ref, useImperativeHandle, useRef } from 'react';\nimport { AutoSizedTextArea, type AutoSizedTextAreaProps } from '../TextArea';\nimport { EditableFieldLayout } from './EditableFieldLayout';\n\n/**\n * Props for the EditableFieldTextArea component, extending AutoSizedTextAreaProps\n */\ntype EditableFieldTextAreaProps = AutoSizedTextAreaProps & {\n /** Callback function called when the user saves the edited value */\n onSave?: (value: string) => void;\n /** Callback function called when the user cancels the edit operation */\n onCancel?: () => void;\n};\n\n/**\n * EditableFieldTextArea Component\n *\n * An inline editable textarea field that displays as read-only text until clicked.\n * When activated, it shows an auto-sized textarea with save and cancel buttons.\n * Perfect for multiline text editing with automatic height adjustment.\n *\n * @example\n * ```tsx\n * <EditableFieldTextArea\n * defaultValue=\"Multiline text content\"\n * placeholder=\"Click to edit...\"\n * maxRows={10}\n * onSave={(value) => console.log('Saved:', value)}\n * onCancel={() => console.log('Cancelled')}\n * />\n * ```\n *\n * ## Features\n * - **Inline Editing**: Click to edit, displays as formatted text when not editing\n * - **Auto-Sizing**: Automatically adjusts height to fit content\n * - **Save/Cancel Actions**: Built-in save and cancel buttons with callbacks\n * - **Multiline Support**: Preserves line breaks and formatting\n * - **Max Rows Control**: Configurable maximum height with scroll\n * - **Auto-save on Click Away**: Saves automatically when clicking outside\n * - **Ref Forwarding**: Exposes the underlying textarea element reference\n *\n * ## Accessibility\n * - Uses semantic HTML with proper ARIA attributes\n * - Keyboard accessible with tab navigation\n * - Screen reader friendly with descriptive labels\n * - Focus management for edit mode transitions\n * - Preserves whitespace and formatting for screen readers\n *\n * @param props - EditableFieldTextAreaProps extending AutoSizedTextAreaProps\n * @returns React functional component\n */\nexport const EditableFieldTextArea: FC<EditableFieldTextAreaProps> = ({\n onSave,\n onCancel,\n ref,\n ...props\n}) => {\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n\n // Expose the text area ref to parent components\n useImperativeHandle(ref as Ref<HTMLElement>, () => textAreaRef.current!);\n\n const handleSave = () => {\n // Your save logic here\n onSave?.(textAreaRef.current?.value ?? '');\n };\n\n const handleCancel = () => {\n if (textAreaRef.current) {\n textAreaRef.current.value = textAreaRef.current.defaultValue ?? '';\n }\n onCancel?.();\n };\n\n const memoValue =\n (props.value as string) ??\n textAreaRef.current?.value ??\n (props.defaultValue as string) ??\n '';\n\n return (\n <EditableFieldLayout\n value={memoValue}\n onCancel={handleCancel}\n onSave={handleSave}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n >\n <AutoSizedTextArea\n className=\"leading-6\"\n ref={textAreaRef}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n {...props}\n />\n </EditableFieldLayout>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,MAAaA,yBAAyD,EACpE,QACA,UACA,KACA,GAAG,YACC;CACJ,MAAM,cAAc,OAA4B,KAAK;AAGrD,qBAAoB,WAA+B,YAAY,QAAS;CAExE,MAAM,mBAAmB;AAEvB,WAAS,YAAY,SAAS,SAAS,GAAG;;CAG5C,MAAM,qBAAqB;AACzB,MAAI,YAAY,QACd,aAAY,QAAQ,QAAQ,YAAY,QAAQ,gBAAgB;AAElE,cAAY;;AASd,QACE,oBAAC;EACC,OAPD,MAAM,SACP,YAAY,SAAS,SACpB,MAAM,gBACP;EAKE,UAAU;EACV,QAAQ;EACR,UAAU,MAAM;AACd,KAAE,gBAAgB;AAClB,KAAE,iBAAiB;;YAGrB,oBAAC;GACC,WAAU;GACV,KAAK;GACL,UAAU,MAAM;AACd,MAAE,gBAAgB;AAClB,MAAE,iBAAiB;;GAErB,GAAI;IACJ;GACkB"}
|
|
@@ -375,7 +375,7 @@ const flagRecord = {
|
|
|
375
375
|
[Locales.NEPALI]: np_default,
|
|
376
376
|
[Locales.NEPALI_NEPAL]: np_default
|
|
377
377
|
};
|
|
378
|
-
const Flag = ({ locale, alt
|
|
378
|
+
const Flag = ({ locale, alt, ...props }) => {
|
|
379
379
|
const asset = flagRecord[locale] ?? xx_default;
|
|
380
380
|
if (typeof asset === "string" || asset?.src) return /* @__PURE__ */ jsx("img", {
|
|
381
381
|
src: typeof asset === "string" ? asset : asset.src,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Flag.mjs","names":["flagRecord: Partial<Record<Locale, typeof unknown>>","unitedStatesOfAmerica","france","spain","portugal","germany","southAfrica","saudiArabia","azerbaijan","belarus","bulgaria","bosniaAndHerzegovina","catalonia","czechRepublic","wales","denmark","maldives","greece","unknown","estonia","basqueCountry","iran","finland","faroeIslands","galicia","india","israel","croatia","hungary","armenia","indonesia","iceland","italy","japan","georgia","kazakhstan","southKorea","kyrgyzstan","lithuania","latvia","newZealand","northMacedonia","mongolia","malaysia","malta","norway","netherlands","poland","afghanistan","peru","romania","russia","slovakia","slovenia","albania","serbia","sweden","kenya","syria","thailand","philippines","türkiye","ukraine","pakistan","uzbekistan","vietnam","china","taiwan","unitedArabEmirates","bahrain","algeria","egypt","iraq","jordan","kuwait","lebanon","libya","morocco","oman","qatar","tunisia","yemen","austria","switzerland","liechtenstein","luxembourg","australia","belize","canada","unitedKingdom","ireland","jamaica","trinidadAndTobago","zimbabwe","argentina","bolivia","chile","colombia","costaRica","dominicanRepublic","ecuador","guatemala","honduras","mexico","nicaragua","panama","puertoRico","paraguay","elSalvador","uruguay","venezuela","belgium","monaco","bruneiDarussalam","brazil","hongKong","macau","singapore","bangladesh","myanmar","cambodia","laos","nigeria","ethiopia","nepal","Flag: FC<FlagProps>"],"sources":["../../../../src/components/Flags/Flag.tsx"],"sourcesContent":["import { type Locale, Locales } from '@intlayer/types';\nimport type {\n ComponentType,\n FC,\n ImgHTMLAttributes,\n JSX,\n SVGProps,\n} from 'react';\n\n// import andorra from './ad.svg';\nimport unitedArabEmirates from './ae.svg';\nimport afghanistan from './af.svg';\n// import antiguaAndBarbuda from './ag.svg';\n// import anguilla from './ai.svg';\nimport albania from './al.svg';\nimport armenia from './am.svg';\n// import angola from './ao.svg';\n// import antarctica from './aq.svg';\nimport argentina from './ar.svg';\n// import leagueOfArabStates from './arab.svg';\n// import americanSamoa from './as.svg';\nimport austria from './at.svg';\nimport australia from './au.svg';\n// import aruba from './aw.svg';\n// import alandIslands from './ax.svg';\nimport azerbaijan from './az.svg';\nimport bosniaAndHerzegovina from './ba.svg';\n// import barbados from './bb.svg';\nimport bangladesh from './bd.svg';\nimport belgium from './be.svg';\n// import burkinaFaso from './bf.svg';\nimport bulgaria from './bg.svg';\nimport bahrain from './bh.svg';\n// import burundi from './bi.svg';\n// import benin from './bj.svg';\n// import saintBarthélemy from './bl.svg';\n// import bermuda from './bm.svg';\nimport bruneiDarussalam from './bn.svg';\nimport bolivia from './bo.svg';\n// import bonaireSintEustatiusAndSaba from './bq.svg';\nimport brazil from './br.svg';\n// import bahamas from './bs.svg';\n// import bouvetIsland from './bv.svg';\n// import botswana from './bw.svg';\nimport belarus from './by.svg';\nimport belize from './bz.svg';\nimport canada from './ca.svg';\n// import cocosKeelingIslands from './cc.svg';\n// import democraticRepublicOfTheCongo from './cd.svg';\n// import centralEuropeanFreeTradeAgreement from './cefta.svg';\n// import centralAfricanRepublic from './cf.svg';\n// import republicOfTheCongo from './cg.svg';\nimport switzerland from './ch.svg';\n// import côteDIvoire from './ci.svg';\n// import cookIslands from './ck.svg';\nimport chile from './cl.svg';\n// import cameroon from './cm.svg';\nimport china from './cn.svg';\nimport colombia from './co.svg';\n// import clippertonIsland from './cp.svg';\nimport costaRica from './cr.svg';\n// import cuba from './cu.svg';\n// import caboVerde from './cv.svg';\n// import curaçao from './cw.svg';\n// import christmasIsland from './cx.svg';\n// import cyprus from './cy.svg';\nimport czechRepublic from './cz.svg';\nimport germany from './de.svg';\n// import diegoGarcia from './dg.svg';\n// import djibouti from './dj.svg';\nimport denmark from './dk.svg';\n// import dominica from './dm.svg';\nimport dominicanRepublic from './do.svg';\nimport algeria from './dz.svg';\n// import eastAfricanCommunity from './eac.svg';\nimport ecuador from './ec.svg';\nimport estonia from './ee.svg';\nimport egypt from './eg.svg';\nimport spain from './es.svg';\n// import westernSahara from './eh.svg';\n// import eritrea from './er.svg';\nimport catalonia from './es-ct.svg';\nimport galicia from './es-ga.svg';\nimport basqueCountry from './es-pv.svg';\n// import mozambique from './mz.svg';\n// import ascensionIsland from './sh-ac.svg';\n// import canaryIslands from './ic.svg';\n// import pacificCommunity from './pc.svg';\n// import saintHelena from './sh-hl.svg';\n// import tristanDaCunha from './sh-ta.svg';\nimport ethiopia from './et.svg';\n// import ethiopia from './et.svg';\n// import europe from './eu.svg';\nimport finland from './fi.svg';\n// import fiji from './fj.svg';\n// import falklandIslands from './fk.svg';\n// import federatedStatesOfMicronesia from './fm.svg';\nimport faroeIslands from './fo.svg';\nimport france from './fr.svg';\nimport unitedKingdom from './gb.svg';\n// import gabon from './ga.svg';\n// import england from './gb-eng.svg';\n// import northernIreland from './gb-nir.svg';\n// import scotland from './gb-sct.svg';\nimport wales from './gb-wls.svg';\n// import grenada from './gd.svg';\nimport georgia from './ge.svg';\n// import frenchGuiana from './gf.svg';\n// import guernsey from './gg.svg';\n// import ghana from './gh.svg';\n// import gibraltar from './gi.svg';\n// import greenland from './gl.svg';\n// import gambia from './gm.svg';\n// import guinea from './gn.svg';\n// import guadeloupe from './gp.svg';\n// import equatorialGuinea from './gq.svg';\nimport greece from './gr.svg';\nimport guatemala from './gt.svg';\nimport hongKong from './hk.svg';\nimport honduras from './hn.svg';\nimport croatia from './hr.svg';\n// import britishIndianOceanTerritory from './io.svg';\nimport hungary from './hu.svg';\nimport indonesia from './id.svg';\nimport ireland from './ie.svg';\nimport israel from './il.svg';\nimport india from './in.svg';\nimport iraq from './iq.svg';\nimport iran from './ir.svg';\nimport iceland from './is.svg';\nimport italy from './it.svg';\nimport jamaica from './jm.svg';\nimport jordan from './jo.svg';\nimport japan from './jp.svg';\nimport kenya from './ke.svg';\nimport kyrgyzstan from './kg.svg';\nimport cambodia from './kh.svg';\nimport southKorea from './kr.svg';\nimport kuwait from './kw.svg';\n// import caymanIslands from './ky.svg';\n// import chad from './td.svg';\n// import eswatini from './sz.svg';\n// import frenchPolynesia from './pf.svg';\n// import frenchSouthernTerritories from './tf.svg';\n// import guam from './gu.svg';\n// import guineaBissau from './gw.svg';\n// import guyana from './gy.svg';\n// import haiti from './ht.svg';\n// import heardIslandAndMcdonaldIslands from './hm.svg';\n// import togo from './tg.svg';\n// import tajikistan from './tj.svg';\n// import tokelau from './tk.svg';\n// import timorLeste from './tl.svg';\n// import turkmenistan from './tm.svg';\n// import tonga from './to.svg';\n// import tuvalu from './tv.svg';\n// import tanzania from './tz.svg';\n// import uganda from './ug.svg';\n// import unitedStatesMinorOutlyingIslands from './um.svg';\n// import unitedNations from './un.svg';\n// import holySee from './va.svg';\n// import isleOfMan from './im.svg';\n// import jersey from './je.svg';\nimport kazakhstan from './kz.svg';\n// import kiribati from './ki.svg';\nimport laos from './la.svg';\nimport lebanon from './lb.svg';\n// import lesotho from './ls.svg';\n// import liberia from './lr.svg';\nimport liechtenstein from './li.svg';\nimport lithuania from './lt.svg';\nimport luxembourg from './lu.svg';\nimport latvia from './lv.svg';\nimport libya from './ly.svg';\n// import madagascar from './mg.svg';\n// import malawi from './mw.svg';\n// import mali from './ml.svg';\n// import marshallIslands from './mh.svg';\n// import martinique from './mq.svg';\n// import mauritania from './mr.svg';\n// import mauritius from './mu.svg';\n// import saintVincentAndTheGrenadines from './vc.svg';\n// import virginIslandsBritish from './vg.svg';\n// import virginIslandsUS from './vi.svg';\n// import vanuatu from './vu.svg';\n// import wallisAndFutuna from './wf.svg';\n// import samoa from './ws.svg';\n// import kosovo from './xk.svg';\n// import mayotte from './yt.svg';\n// import moldova from './md.svg';\n// import montenegro from './me.svg';\n// import montserrat from './ms.svg';\nimport morocco from './ma.svg';\nimport monaco from './mc.svg';\nimport northMacedonia from './mk.svg';\nimport myanmar from './mm.svg';\nimport mongolia from './mn.svg';\nimport macau from './mo.svg';\nimport malta from './mt.svg';\nimport maldives from './mv.svg';\nimport mexico from './mx.svg';\nimport malaysia from './my.svg';\nimport nigeria from './ng.svg';\nimport nicaragua from './ni.svg';\nimport netherlands from './nl.svg';\nimport norway from './no.svg';\nimport nepal from './np.svg';\nimport newZealand from './nz.svg';\nimport oman from './om.svg';\nimport panama from './pa.svg';\nimport peru from './pe.svg';\nimport philippines from './ph.svg';\nimport pakistan from './pk.svg';\nimport poland from './pl.svg';\nimport puertoRico from './pr.svg';\nimport portugal from './pt.svg';\nimport paraguay from './py.svg';\nimport qatar from './qa.svg';\nimport romania from './ro.svg';\nimport serbia from './rs.svg';\nimport russia from './ru.svg';\nimport saudiArabia from './sa.svg';\nimport sweden from './se.svg';\nimport singapore from './sg.svg';\nimport slovenia from './si.svg';\nimport slovakia from './sk.svg';\nimport elSalvador from './sv.svg';\nimport syria from './sy.svg';\nimport thailand from './th.svg';\nimport tunisia from './tn.svg';\nimport türkiye from './tr.svg';\nimport trinidadAndTobago from './tt.svg';\nimport taiwan from './tw.svg';\nimport ukraine from './ua.svg';\nimport unitedStatesOfAmerica from './us.svg';\nimport uruguay from './uy.svg';\nimport uzbekistan from './uz.svg';\nimport venezuela from './ve.svg';\nimport vietnam from './vn.svg';\nimport unknown from './xx.svg';\nimport yemen from './ye.svg';\nimport southAfrica from './za.svg';\nimport zimbabwe from './zw.svg';\n\ntype FlagProps = ImgHTMLAttributes<HTMLImageElement> & {\n locale: Locale;\n};\n\nconst flagRecord: Partial<Record<Locale, typeof unknown>> = {\n [Locales.ENGLISH]: unitedStatesOfAmerica,\n [Locales.FRENCH]: france,\n [Locales.SPANISH]: spain,\n [Locales.PORTUGUESE]: portugal,\n [Locales.GERMAN]: germany,\n [Locales.AFRIKAANS]: southAfrica,\n [Locales.ARABIC]: saudiArabia,\n [Locales.AZERI_LATIN]: azerbaijan,\n [Locales.BELARUSIAN]: belarus,\n [Locales.BULGARIAN]: bulgaria,\n [Locales.BOSNIAN]: bosniaAndHerzegovina,\n [Locales.CATALAN]: catalonia,\n [Locales.CZECH]: czechRepublic,\n [Locales.WELSH]: wales,\n [Locales.DANISH]: denmark,\n [Locales.DIVEHI]: maldives,\n [Locales.GREEK]: greece,\n [Locales.ESPERANTO]: unknown, // No specific flag\n [Locales.ESTONIAN]: estonia,\n [Locales.BASQUE]: basqueCountry,\n [Locales.FARSI]: iran,\n [Locales.FINNISH]: finland,\n [Locales.FAROESE]: faroeIslands,\n [Locales.GALICIAN]: galicia,\n [Locales.GUJARATI]: india,\n [Locales.HEBREW]: israel,\n [Locales.HINDI]: india,\n [Locales.CROATIAN]: croatia,\n [Locales.HUNGARIAN]: hungary,\n [Locales.ARMENIAN]: armenia,\n [Locales.INDONESIAN]: indonesia,\n [Locales.ICELANDIC]: iceland,\n [Locales.ITALIAN]: italy,\n [Locales.JAPANESE]: japan,\n [Locales.GEORGIAN]: georgia,\n [Locales.KAZAKH]: kazakhstan,\n [Locales.KANNADA]: india,\n [Locales.KOREAN]: southKorea,\n [Locales.KONKANI]: india,\n [Locales.KYRGYZ]: kyrgyzstan,\n [Locales.LITHUANIAN]: lithuania,\n [Locales.LATVIAN]: latvia,\n [Locales.MAORI]: newZealand,\n [Locales.FYRO_MACEDONIAN]: northMacedonia,\n [Locales.MONGOLIAN]: mongolia,\n [Locales.MARATHI]: india,\n [Locales.MALAY]: malaysia,\n [Locales.MALTESE]: malta,\n [Locales.NORWEGIAN_BOKMAL]: norway,\n [Locales.DUTCH]: netherlands,\n [Locales.NORTHERN_SOTHO]: southAfrica,\n [Locales.PUNJABI]: india,\n [Locales.POLISH]: poland,\n [Locales.PASHTO]: afghanistan,\n [Locales.QUECHUA]: peru,\n [Locales.ROMANIAN]: romania,\n [Locales.RUSSIAN]: russia,\n [Locales.SANSKRIT]: india,\n [Locales.SAMI_NORTHERN]: norway, // No specific flag, assuming Norway\n [Locales.SLOVAK]: slovakia,\n [Locales.SLOVENIAN]: slovenia,\n [Locales.ALBANIAN]: albania,\n [Locales.SERBIAN_LATIN]: serbia,\n [Locales.SWEDISH]: sweden,\n [Locales.SWEDISH_FINLAND]: finland,\n [Locales.SWEDISH_SWEDEN]: sweden,\n [Locales.SWAHILI]: kenya,\n [Locales.SYRIAC]: syria,\n [Locales.TAMIL]: india,\n [Locales.TELUGU]: india,\n [Locales.THAI]: thailand,\n [Locales.TAGALOG]: philippines,\n [Locales.TSWANA]: southAfrica,\n [Locales.TURKISH]: türkiye,\n [Locales.TATAR]: russia, // Assuming Russian Federation\n [Locales.UKRAINIAN]: ukraine,\n [Locales.URDU]: pakistan,\n [Locales.UZBEK_LATIN]: uzbekistan,\n [Locales.VIETNAMESE]: vietnam,\n [Locales.XHOSA]: southAfrica,\n [Locales.CHINESE_SIMPLIFIED]: china,\n [Locales.CHINESE_TRADITIONAL]: taiwan,\n [Locales.ZULU]: southAfrica,\n [Locales.AFRIKAANS_SOUTH_AFRICA]: southAfrica,\n [Locales.ARABIC_UNITED_ARAB_EMIRATES]: unitedArabEmirates,\n [Locales.ARABIC_BAHRAIN]: bahrain,\n [Locales.ARABIC_ALGERIA]: algeria,\n [Locales.ARABIC_EGYPT]: egypt,\n [Locales.ARABIC_IRAQ]: iraq,\n [Locales.ARABIC_JORDAN]: jordan,\n [Locales.ARABIC_KUWAIT]: kuwait,\n [Locales.ARABIC_LEBANON]: lebanon,\n [Locales.ARABIC_LIBYA]: libya,\n [Locales.ARABIC_MOROCCO]: morocco,\n [Locales.ARABIC_OMAN]: oman,\n [Locales.ARABIC_QATAR]: qatar,\n [Locales.ARABIC_SAUDI_ARABIA]: saudiArabia,\n [Locales.ARABIC_SYRIA]: syria,\n [Locales.ARABIC_TUNISIA]: tunisia,\n [Locales.ARABIC_YEMEN]: yemen,\n [Locales.AZERI_LATIN_AZERBAIJAN]: azerbaijan,\n [Locales.BELARUSIAN_BELARUS]: belarus,\n [Locales.BULGARIAN_BULGARIA]: bulgaria,\n [Locales.BOSNIAN_BOSNIA_AND_HERZEGOVINA]: bosniaAndHerzegovina,\n [Locales.CATALAN_SPAIN]: catalonia,\n [Locales.CZECH_CZECH_REPUBLIC]: czechRepublic,\n [Locales.WELSH_UNITED_KINGDOM]: wales,\n [Locales.DANISH_DENMARK]: denmark,\n [Locales.GERMAN_AUSTRIA]: austria,\n [Locales.GERMAN_SWITZERLAND]: switzerland,\n [Locales.GERMAN_GERMANY]: germany,\n [Locales.GERMAN_LIECHTENSTEIN]: liechtenstein,\n [Locales.GERMAN_LUXEMBOURG]: luxembourg,\n [Locales.DIVEHI_MALDIVES]: maldives,\n [Locales.GREEK_GREECE]: greece,\n [Locales.ENGLISH_AUSTRALIA]: australia,\n [Locales.ENGLISH_BELIZE]: belize,\n [Locales.ENGLISH_CANADA]: canada,\n [Locales.ENGLISH_CARIBBEAN]: unknown, // No specific flag\n [Locales.ENGLISH_UNITED_KINGDOM]: unitedKingdom,\n [Locales.ENGLISH_IRELAND]: ireland,\n [Locales.ENGLISH_JAMAICA]: jamaica,\n [Locales.ENGLISH_NEW_ZEALAND]: newZealand,\n [Locales.ENGLISH_PHILIPPINES]: philippines,\n [Locales.ENGLISH_TRINIDAD_AND_TOBAGO]: trinidadAndTobago,\n [Locales.ENGLISH_UNITED_STATES]: unitedStatesOfAmerica,\n [Locales.ENGLISH_SOUTH_AFRICA]: southAfrica,\n [Locales.ENGLISH_ZIMBABWE]: zimbabwe,\n [Locales.SPANISH_ARGENTINA]: argentina,\n [Locales.SPANISH_BOLIVIA]: bolivia,\n [Locales.SPANISH_CHILE]: chile,\n [Locales.SPANISH_COLOMBIA]: colombia,\n [Locales.SPANISH_COSTA_RICA]: costaRica,\n [Locales.SPANISH_DOMINICAN_REPUBLIC]: dominicanRepublic,\n [Locales.SPANISH_ECUADOR]: ecuador,\n [Locales.SPANISH_SPAIN]: spain,\n [Locales.SPANISH_GUATEMALA]: guatemala,\n [Locales.SPANISH_HONDURAS]: honduras,\n [Locales.SPANISH_MEXICO]: mexico,\n [Locales.SPANISH_NICARAGUA]: nicaragua,\n [Locales.SPANISH_PANAMA]: panama,\n [Locales.SPANISH_PERU]: peru,\n [Locales.SPANISH_PUERTO_RICO]: puertoRico,\n [Locales.SPANISH_PARAGUAY]: paraguay,\n [Locales.SPANISH_EL_SALVADOR]: elSalvador,\n [Locales.SPANISH_URUGUAY]: uruguay,\n [Locales.SPANISH_VENEZUELA]: venezuela,\n [Locales.ESTONIAN_ESTONIA]: estonia,\n [Locales.BASQUE_SPAIN]: basqueCountry,\n [Locales.FARSI_IRAN]: iran,\n [Locales.FINNISH_FINLAND]: finland,\n [Locales.FAROESE_FAROE_ISLANDS]: faroeIslands,\n [Locales.FRENCH_BELGIUM]: belgium,\n [Locales.FRENCH_CANADA]: canada,\n [Locales.FRENCH_SWITZERLAND]: switzerland,\n [Locales.FRENCH_FRANCE]: france,\n [Locales.FRENCH_LUXEMBOURG]: luxembourg,\n [Locales.FRENCH_PRINCIPALITY_OF_MONACO]: monaco,\n [Locales.GALICIAN_SPAIN]: galicia,\n [Locales.GUJARATI_INDIA]: india,\n [Locales.HEBREW_ISRAEL]: israel,\n [Locales.HINDI_INDIA]: india,\n [Locales.CROATIAN_BOSNIA_AND_HERZEGOVINA]: bosniaAndHerzegovina,\n [Locales.CROATIAN_CROATIA]: croatia,\n [Locales.HUNGARIAN_HUNGARY]: hungary,\n [Locales.ARMENIAN_ARMENIA]: armenia,\n [Locales.INDONESIAN_INDONESIA]: indonesia,\n [Locales.ICELANDIC_ICELAND]: iceland,\n [Locales.ITALIAN_SWITZERLAND]: switzerland,\n [Locales.ITALIAN_ITALY]: italy,\n [Locales.JAPANESE_JAPAN]: japan,\n [Locales.GEORGIAN_GEORGIA]: georgia,\n [Locales.KAZAKH_KAZAKHSTAN]: kazakhstan,\n [Locales.KANNADA_INDIA]: india,\n [Locales.KOREAN_KOREA]: southKorea,\n [Locales.KONKANI_INDIA]: india,\n [Locales.KYRGYZ_KYRGYZSTAN]: kyrgyzstan,\n [Locales.LITHUANIAN_LITHUANIA]: lithuania,\n [Locales.LATVIAN_LATVIA]: latvia,\n [Locales.MAORI_NEW_ZEALAND]: newZealand,\n [Locales.FYRO_MACEDONIAN_MACEDONIA]: northMacedonia,\n [Locales.MONGOLIAN_MONGOLIA]: mongolia,\n [Locales.MARATHI_INDIA]: india,\n [Locales.MALAY_BRUNEI_DARUSSALAM]: bruneiDarussalam,\n [Locales.MALAY_MALAYSIA]: malaysia,\n [Locales.MALTESE_MALTA]: malta,\n [Locales.NORWEGIAN_BOKMAL_NORWAY]: norway,\n [Locales.DUTCH_BELGIUM]: belgium,\n [Locales.DUTCH_NETHERLANDS]: netherlands,\n [Locales.NORWEGIAN_NYNORSK_NORWAY]: norway,\n [Locales.NORTHERN_SOTHO_SOUTH_AFRICA]: southAfrica,\n [Locales.PUNJABI_INDIA]: india,\n [Locales.POLISH_POLAND]: poland,\n [Locales.PASHTO_AFGHANISTAN]: afghanistan,\n [Locales.PORTUGUESE_BRAZIL]: brazil,\n [Locales.PORTUGUESE_PORTUGAL]: portugal,\n [Locales.QUECHUA_BOLIVIA]: bolivia,\n [Locales.QUECHUA_ECUADOR]: ecuador,\n [Locales.QUECHUA_PERU]: peru,\n [Locales.ROMANIAN_ROMANIA]: romania,\n [Locales.RUSSIAN_RUSSIA]: russia,\n [Locales.SANSKRIT_INDIA]: india,\n [Locales.SAMI_NORTHERN_FINLAND]: finland,\n [Locales.SAMI_NORTHERN_NORWAY]: norway,\n [Locales.SAMI_NORTHERN_SWEDEN]: sweden,\n [Locales.SLOVAK_SLOVAKIA]: slovakia,\n [Locales.SLOVENIAN_SLOVENIA]: slovenia,\n [Locales.ALBANIAN_ALBANIA]: albania,\n [Locales.SERBIAN_LATIN_BOSNIA_AND_HERZEGOVINA]: bosniaAndHerzegovina,\n [Locales.SERBIAN_LATIN_SERBIA_AND_MONTENEGRO]: serbia,\n [Locales.SWAHILI_KENYA]: kenya,\n [Locales.SYRIAC_SYRIA]: syria,\n [Locales.TAMIL_INDIA]: india,\n [Locales.TELUGU_INDIA]: india,\n [Locales.THAI_THAILAND]: thailand,\n [Locales.TAGALOG_PHILIPPINES]: philippines,\n [Locales.TSWANA_SOUTH_AFRICA]: southAfrica,\n [Locales.TURKISH_TURKEY]: türkiye,\n [Locales.TATAR_RUSSIA]: russia,\n [Locales.TSOGA]: unknown, // No specific flag\n [Locales.UKRAINIAN_UKRAINE]: ukraine,\n [Locales.URDU_ISLAMIC_REPUBLIC_OF_PAKISTAN]: pakistan,\n [Locales.UZBEK_LATIN_UZBEKISTAN]: uzbekistan,\n [Locales.VIETNAMESE_VIET_NAM]: vietnam,\n [Locales.XHOSA_SOUTH_AFRICA]: southAfrica,\n [Locales.CHINESE]: china,\n [Locales.CHINESE_SIMPLIFIED_CHINA]: china,\n [Locales.CHINESE_HONG_KONG]: hongKong,\n [Locales.CHINESE_MACAU]: macau,\n [Locales.CHINESE_SINGAPORE]: singapore,\n [Locales.ZULU_SOUTH_AFRICA]: southAfrica,\n [Locales.BENGALI]: india,\n [Locales.BENGALI_BANGLADESH]: bangladesh,\n [Locales.BENGALI_INDIA]: india,\n [Locales.BENGALI_MYANMAR]: myanmar,\n [Locales.BURMESE]: myanmar,\n [Locales.BURMESE_MYANMAR]: myanmar,\n [Locales.KHMER]: cambodia,\n [Locales.KHMER_CAMBODIA]: cambodia,\n [Locales.LAO]: laos,\n [Locales.LAO_LAOS]: laos,\n [Locales.YORUBA]: nigeria,\n [Locales.YORUBA_NIGERIA]: nigeria,\n [Locales.AMHARIC]: ethiopia,\n [Locales.AMHARIC_ETHIOPIA]: ethiopia,\n [Locales.NEPALI]: nepal,\n [Locales.NEPALI_NEPAL]: nepal,\n};\n\nexport const Flag: FC<FlagProps> = ({ locale, alt, ...props }): JSX.Element => {\n const asset = flagRecord[locale] ?? unknown;\n\n // Case 1: bundler returns a URL string or an object with a .src field\n if (typeof asset === 'string' || (asset as any)?.src) {\n const src =\n typeof asset === 'string' ? (asset as string) : (asset as any).src;\n return <img src={src} alt={alt ?? `${locale} flag`} {...props} />;\n }\n\n // Case 2: bundler returns a React component (SVGR)\n const Svg = asset as ComponentType<SVGProps<SVGSVGElement>>;\n const { width, height, className, style, onClick } = props;\n\n return (\n <Svg\n aria-label={alt ?? `${locale} flag`}\n width={width as any}\n height={height as any}\n className={className}\n style={style}\n onClick={onClick as any}\n role=\"img\"\n focusable={false as any}\n />\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Flag.mjs","names":["flagRecord: Partial<Record<Locale, typeof unknown>>","unitedStatesOfAmerica","france","spain","portugal","germany","southAfrica","saudiArabia","azerbaijan","belarus","bulgaria","bosniaAndHerzegovina","catalonia","czechRepublic","wales","denmark","maldives","greece","unknown","estonia","basqueCountry","iran","finland","faroeIslands","galicia","india","israel","croatia","hungary","armenia","indonesia","iceland","italy","japan","georgia","kazakhstan","southKorea","kyrgyzstan","lithuania","latvia","newZealand","northMacedonia","mongolia","malaysia","malta","norway","netherlands","poland","afghanistan","peru","romania","russia","slovakia","slovenia","albania","serbia","sweden","kenya","syria","thailand","philippines","türkiye","ukraine","pakistan","uzbekistan","vietnam","china","taiwan","unitedArabEmirates","bahrain","algeria","egypt","iraq","jordan","kuwait","lebanon","libya","morocco","oman","qatar","tunisia","yemen","austria","switzerland","liechtenstein","luxembourg","australia","belize","canada","unitedKingdom","ireland","jamaica","trinidadAndTobago","zimbabwe","argentina","bolivia","chile","colombia","costaRica","dominicanRepublic","ecuador","guatemala","honduras","mexico","nicaragua","panama","puertoRico","paraguay","elSalvador","uruguay","venezuela","belgium","monaco","bruneiDarussalam","brazil","hongKong","macau","singapore","bangladesh","myanmar","cambodia","laos","nigeria","ethiopia","nepal","Flag: FC<FlagProps>"],"sources":["../../../../src/components/Flags/Flag.tsx"],"sourcesContent":["import { type Locale, Locales } from '@intlayer/types';\nimport type {\n ComponentType,\n FC,\n ImgHTMLAttributes,\n JSX,\n SVGProps,\n} from 'react';\n\n// import andorra from './ad.svg';\nimport unitedArabEmirates from './ae.svg';\nimport afghanistan from './af.svg';\n// import antiguaAndBarbuda from './ag.svg';\n// import anguilla from './ai.svg';\nimport albania from './al.svg';\nimport armenia from './am.svg';\n// import angola from './ao.svg';\n// import antarctica from './aq.svg';\nimport argentina from './ar.svg';\n// import leagueOfArabStates from './arab.svg';\n// import americanSamoa from './as.svg';\nimport austria from './at.svg';\nimport australia from './au.svg';\n// import aruba from './aw.svg';\n// import alandIslands from './ax.svg';\nimport azerbaijan from './az.svg';\nimport bosniaAndHerzegovina from './ba.svg';\n// import barbados from './bb.svg';\nimport bangladesh from './bd.svg';\nimport belgium from './be.svg';\n// import burkinaFaso from './bf.svg';\nimport bulgaria from './bg.svg';\nimport bahrain from './bh.svg';\n// import burundi from './bi.svg';\n// import benin from './bj.svg';\n// import saintBarthélemy from './bl.svg';\n// import bermuda from './bm.svg';\nimport bruneiDarussalam from './bn.svg';\nimport bolivia from './bo.svg';\n// import bonaireSintEustatiusAndSaba from './bq.svg';\nimport brazil from './br.svg';\n// import bahamas from './bs.svg';\n// import bouvetIsland from './bv.svg';\n// import botswana from './bw.svg';\nimport belarus from './by.svg';\nimport belize from './bz.svg';\nimport canada from './ca.svg';\n// import cocosKeelingIslands from './cc.svg';\n// import democraticRepublicOfTheCongo from './cd.svg';\n// import centralEuropeanFreeTradeAgreement from './cefta.svg';\n// import centralAfricanRepublic from './cf.svg';\n// import republicOfTheCongo from './cg.svg';\nimport switzerland from './ch.svg';\n// import côteDIvoire from './ci.svg';\n// import cookIslands from './ck.svg';\nimport chile from './cl.svg';\n// import cameroon from './cm.svg';\nimport china from './cn.svg';\nimport colombia from './co.svg';\n// import clippertonIsland from './cp.svg';\nimport costaRica from './cr.svg';\n// import cuba from './cu.svg';\n// import caboVerde from './cv.svg';\n// import curaçao from './cw.svg';\n// import christmasIsland from './cx.svg';\n// import cyprus from './cy.svg';\nimport czechRepublic from './cz.svg';\nimport germany from './de.svg';\n// import diegoGarcia from './dg.svg';\n// import djibouti from './dj.svg';\nimport denmark from './dk.svg';\n// import dominica from './dm.svg';\nimport dominicanRepublic from './do.svg';\nimport algeria from './dz.svg';\n// import eastAfricanCommunity from './eac.svg';\nimport ecuador from './ec.svg';\nimport estonia from './ee.svg';\nimport egypt from './eg.svg';\nimport spain from './es.svg';\n// import westernSahara from './eh.svg';\n// import eritrea from './er.svg';\nimport catalonia from './es-ct.svg';\nimport galicia from './es-ga.svg';\nimport basqueCountry from './es-pv.svg';\n// import mozambique from './mz.svg';\n// import ascensionIsland from './sh-ac.svg';\n// import canaryIslands from './ic.svg';\n// import pacificCommunity from './pc.svg';\n// import saintHelena from './sh-hl.svg';\n// import tristanDaCunha from './sh-ta.svg';\nimport ethiopia from './et.svg';\n// import ethiopia from './et.svg';\n// import europe from './eu.svg';\nimport finland from './fi.svg';\n// import fiji from './fj.svg';\n// import falklandIslands from './fk.svg';\n// import federatedStatesOfMicronesia from './fm.svg';\nimport faroeIslands from './fo.svg';\nimport france from './fr.svg';\nimport unitedKingdom from './gb.svg';\n// import gabon from './ga.svg';\n// import england from './gb-eng.svg';\n// import northernIreland from './gb-nir.svg';\n// import scotland from './gb-sct.svg';\nimport wales from './gb-wls.svg';\n// import grenada from './gd.svg';\nimport georgia from './ge.svg';\n// import frenchGuiana from './gf.svg';\n// import guernsey from './gg.svg';\n// import ghana from './gh.svg';\n// import gibraltar from './gi.svg';\n// import greenland from './gl.svg';\n// import gambia from './gm.svg';\n// import guinea from './gn.svg';\n// import guadeloupe from './gp.svg';\n// import equatorialGuinea from './gq.svg';\nimport greece from './gr.svg';\nimport guatemala from './gt.svg';\nimport hongKong from './hk.svg';\nimport honduras from './hn.svg';\nimport croatia from './hr.svg';\n// import britishIndianOceanTerritory from './io.svg';\nimport hungary from './hu.svg';\nimport indonesia from './id.svg';\nimport ireland from './ie.svg';\nimport israel from './il.svg';\nimport india from './in.svg';\nimport iraq from './iq.svg';\nimport iran from './ir.svg';\nimport iceland from './is.svg';\nimport italy from './it.svg';\nimport jamaica from './jm.svg';\nimport jordan from './jo.svg';\nimport japan from './jp.svg';\nimport kenya from './ke.svg';\nimport kyrgyzstan from './kg.svg';\nimport cambodia from './kh.svg';\nimport southKorea from './kr.svg';\nimport kuwait from './kw.svg';\n// import caymanIslands from './ky.svg';\n// import chad from './td.svg';\n// import eswatini from './sz.svg';\n// import frenchPolynesia from './pf.svg';\n// import frenchSouthernTerritories from './tf.svg';\n// import guam from './gu.svg';\n// import guineaBissau from './gw.svg';\n// import guyana from './gy.svg';\n// import haiti from './ht.svg';\n// import heardIslandAndMcdonaldIslands from './hm.svg';\n// import togo from './tg.svg';\n// import tajikistan from './tj.svg';\n// import tokelau from './tk.svg';\n// import timorLeste from './tl.svg';\n// import turkmenistan from './tm.svg';\n// import tonga from './to.svg';\n// import tuvalu from './tv.svg';\n// import tanzania from './tz.svg';\n// import uganda from './ug.svg';\n// import unitedStatesMinorOutlyingIslands from './um.svg';\n// import unitedNations from './un.svg';\n// import holySee from './va.svg';\n// import isleOfMan from './im.svg';\n// import jersey from './je.svg';\nimport kazakhstan from './kz.svg';\n// import kiribati from './ki.svg';\nimport laos from './la.svg';\nimport lebanon from './lb.svg';\n// import lesotho from './ls.svg';\n// import liberia from './lr.svg';\nimport liechtenstein from './li.svg';\nimport lithuania from './lt.svg';\nimport luxembourg from './lu.svg';\nimport latvia from './lv.svg';\nimport libya from './ly.svg';\n// import madagascar from './mg.svg';\n// import malawi from './mw.svg';\n// import mali from './ml.svg';\n// import marshallIslands from './mh.svg';\n// import martinique from './mq.svg';\n// import mauritania from './mr.svg';\n// import mauritius from './mu.svg';\n// import saintVincentAndTheGrenadines from './vc.svg';\n// import virginIslandsBritish from './vg.svg';\n// import virginIslandsUS from './vi.svg';\n// import vanuatu from './vu.svg';\n// import wallisAndFutuna from './wf.svg';\n// import samoa from './ws.svg';\n// import kosovo from './xk.svg';\n// import mayotte from './yt.svg';\n// import moldova from './md.svg';\n// import montenegro from './me.svg';\n// import montserrat from './ms.svg';\nimport morocco from './ma.svg';\nimport monaco from './mc.svg';\nimport northMacedonia from './mk.svg';\nimport myanmar from './mm.svg';\nimport mongolia from './mn.svg';\nimport macau from './mo.svg';\nimport malta from './mt.svg';\nimport maldives from './mv.svg';\nimport mexico from './mx.svg';\nimport malaysia from './my.svg';\nimport nigeria from './ng.svg';\nimport nicaragua from './ni.svg';\nimport netherlands from './nl.svg';\nimport norway from './no.svg';\nimport nepal from './np.svg';\nimport newZealand from './nz.svg';\nimport oman from './om.svg';\nimport panama from './pa.svg';\nimport peru from './pe.svg';\nimport philippines from './ph.svg';\nimport pakistan from './pk.svg';\nimport poland from './pl.svg';\nimport puertoRico from './pr.svg';\nimport portugal from './pt.svg';\nimport paraguay from './py.svg';\nimport qatar from './qa.svg';\nimport romania from './ro.svg';\nimport serbia from './rs.svg';\nimport russia from './ru.svg';\nimport saudiArabia from './sa.svg';\nimport sweden from './se.svg';\nimport singapore from './sg.svg';\nimport slovenia from './si.svg';\nimport slovakia from './sk.svg';\nimport elSalvador from './sv.svg';\nimport syria from './sy.svg';\nimport thailand from './th.svg';\nimport tunisia from './tn.svg';\nimport türkiye from './tr.svg';\nimport trinidadAndTobago from './tt.svg';\nimport taiwan from './tw.svg';\nimport ukraine from './ua.svg';\nimport unitedStatesOfAmerica from './us.svg';\nimport uruguay from './uy.svg';\nimport uzbekistan from './uz.svg';\nimport venezuela from './ve.svg';\nimport vietnam from './vn.svg';\nimport unknown from './xx.svg';\nimport yemen from './ye.svg';\nimport southAfrica from './za.svg';\nimport zimbabwe from './zw.svg';\n\ntype FlagProps = ImgHTMLAttributes<HTMLImageElement> & {\n locale: Locale;\n};\n\nconst flagRecord: Partial<Record<Locale, typeof unknown>> = {\n [Locales.ENGLISH]: unitedStatesOfAmerica,\n [Locales.FRENCH]: france,\n [Locales.SPANISH]: spain,\n [Locales.PORTUGUESE]: portugal,\n [Locales.GERMAN]: germany,\n [Locales.AFRIKAANS]: southAfrica,\n [Locales.ARABIC]: saudiArabia,\n [Locales.AZERI_LATIN]: azerbaijan,\n [Locales.BELARUSIAN]: belarus,\n [Locales.BULGARIAN]: bulgaria,\n [Locales.BOSNIAN]: bosniaAndHerzegovina,\n [Locales.CATALAN]: catalonia,\n [Locales.CZECH]: czechRepublic,\n [Locales.WELSH]: wales,\n [Locales.DANISH]: denmark,\n [Locales.DIVEHI]: maldives,\n [Locales.GREEK]: greece,\n [Locales.ESPERANTO]: unknown, // No specific flag\n [Locales.ESTONIAN]: estonia,\n [Locales.BASQUE]: basqueCountry,\n [Locales.FARSI]: iran,\n [Locales.FINNISH]: finland,\n [Locales.FAROESE]: faroeIslands,\n [Locales.GALICIAN]: galicia,\n [Locales.GUJARATI]: india,\n [Locales.HEBREW]: israel,\n [Locales.HINDI]: india,\n [Locales.CROATIAN]: croatia,\n [Locales.HUNGARIAN]: hungary,\n [Locales.ARMENIAN]: armenia,\n [Locales.INDONESIAN]: indonesia,\n [Locales.ICELANDIC]: iceland,\n [Locales.ITALIAN]: italy,\n [Locales.JAPANESE]: japan,\n [Locales.GEORGIAN]: georgia,\n [Locales.KAZAKH]: kazakhstan,\n [Locales.KANNADA]: india,\n [Locales.KOREAN]: southKorea,\n [Locales.KONKANI]: india,\n [Locales.KYRGYZ]: kyrgyzstan,\n [Locales.LITHUANIAN]: lithuania,\n [Locales.LATVIAN]: latvia,\n [Locales.MAORI]: newZealand,\n [Locales.FYRO_MACEDONIAN]: northMacedonia,\n [Locales.MONGOLIAN]: mongolia,\n [Locales.MARATHI]: india,\n [Locales.MALAY]: malaysia,\n [Locales.MALTESE]: malta,\n [Locales.NORWEGIAN_BOKMAL]: norway,\n [Locales.DUTCH]: netherlands,\n [Locales.NORTHERN_SOTHO]: southAfrica,\n [Locales.PUNJABI]: india,\n [Locales.POLISH]: poland,\n [Locales.PASHTO]: afghanistan,\n [Locales.QUECHUA]: peru,\n [Locales.ROMANIAN]: romania,\n [Locales.RUSSIAN]: russia,\n [Locales.SANSKRIT]: india,\n [Locales.SAMI_NORTHERN]: norway, // No specific flag, assuming Norway\n [Locales.SLOVAK]: slovakia,\n [Locales.SLOVENIAN]: slovenia,\n [Locales.ALBANIAN]: albania,\n [Locales.SERBIAN_LATIN]: serbia,\n [Locales.SWEDISH]: sweden,\n [Locales.SWEDISH_FINLAND]: finland,\n [Locales.SWEDISH_SWEDEN]: sweden,\n [Locales.SWAHILI]: kenya,\n [Locales.SYRIAC]: syria,\n [Locales.TAMIL]: india,\n [Locales.TELUGU]: india,\n [Locales.THAI]: thailand,\n [Locales.TAGALOG]: philippines,\n [Locales.TSWANA]: southAfrica,\n [Locales.TURKISH]: türkiye,\n [Locales.TATAR]: russia, // Assuming Russian Federation\n [Locales.UKRAINIAN]: ukraine,\n [Locales.URDU]: pakistan,\n [Locales.UZBEK_LATIN]: uzbekistan,\n [Locales.VIETNAMESE]: vietnam,\n [Locales.XHOSA]: southAfrica,\n [Locales.CHINESE_SIMPLIFIED]: china,\n [Locales.CHINESE_TRADITIONAL]: taiwan,\n [Locales.ZULU]: southAfrica,\n [Locales.AFRIKAANS_SOUTH_AFRICA]: southAfrica,\n [Locales.ARABIC_UNITED_ARAB_EMIRATES]: unitedArabEmirates,\n [Locales.ARABIC_BAHRAIN]: bahrain,\n [Locales.ARABIC_ALGERIA]: algeria,\n [Locales.ARABIC_EGYPT]: egypt,\n [Locales.ARABIC_IRAQ]: iraq,\n [Locales.ARABIC_JORDAN]: jordan,\n [Locales.ARABIC_KUWAIT]: kuwait,\n [Locales.ARABIC_LEBANON]: lebanon,\n [Locales.ARABIC_LIBYA]: libya,\n [Locales.ARABIC_MOROCCO]: morocco,\n [Locales.ARABIC_OMAN]: oman,\n [Locales.ARABIC_QATAR]: qatar,\n [Locales.ARABIC_SAUDI_ARABIA]: saudiArabia,\n [Locales.ARABIC_SYRIA]: syria,\n [Locales.ARABIC_TUNISIA]: tunisia,\n [Locales.ARABIC_YEMEN]: yemen,\n [Locales.AZERI_LATIN_AZERBAIJAN]: azerbaijan,\n [Locales.BELARUSIAN_BELARUS]: belarus,\n [Locales.BULGARIAN_BULGARIA]: bulgaria,\n [Locales.BOSNIAN_BOSNIA_AND_HERZEGOVINA]: bosniaAndHerzegovina,\n [Locales.CATALAN_SPAIN]: catalonia,\n [Locales.CZECH_CZECH_REPUBLIC]: czechRepublic,\n [Locales.WELSH_UNITED_KINGDOM]: wales,\n [Locales.DANISH_DENMARK]: denmark,\n [Locales.GERMAN_AUSTRIA]: austria,\n [Locales.GERMAN_SWITZERLAND]: switzerland,\n [Locales.GERMAN_GERMANY]: germany,\n [Locales.GERMAN_LIECHTENSTEIN]: liechtenstein,\n [Locales.GERMAN_LUXEMBOURG]: luxembourg,\n [Locales.DIVEHI_MALDIVES]: maldives,\n [Locales.GREEK_GREECE]: greece,\n [Locales.ENGLISH_AUSTRALIA]: australia,\n [Locales.ENGLISH_BELIZE]: belize,\n [Locales.ENGLISH_CANADA]: canada,\n [Locales.ENGLISH_CARIBBEAN]: unknown, // No specific flag\n [Locales.ENGLISH_UNITED_KINGDOM]: unitedKingdom,\n [Locales.ENGLISH_IRELAND]: ireland,\n [Locales.ENGLISH_JAMAICA]: jamaica,\n [Locales.ENGLISH_NEW_ZEALAND]: newZealand,\n [Locales.ENGLISH_PHILIPPINES]: philippines,\n [Locales.ENGLISH_TRINIDAD_AND_TOBAGO]: trinidadAndTobago,\n [Locales.ENGLISH_UNITED_STATES]: unitedStatesOfAmerica,\n [Locales.ENGLISH_SOUTH_AFRICA]: southAfrica,\n [Locales.ENGLISH_ZIMBABWE]: zimbabwe,\n [Locales.SPANISH_ARGENTINA]: argentina,\n [Locales.SPANISH_BOLIVIA]: bolivia,\n [Locales.SPANISH_CHILE]: chile,\n [Locales.SPANISH_COLOMBIA]: colombia,\n [Locales.SPANISH_COSTA_RICA]: costaRica,\n [Locales.SPANISH_DOMINICAN_REPUBLIC]: dominicanRepublic,\n [Locales.SPANISH_ECUADOR]: ecuador,\n [Locales.SPANISH_SPAIN]: spain,\n [Locales.SPANISH_GUATEMALA]: guatemala,\n [Locales.SPANISH_HONDURAS]: honduras,\n [Locales.SPANISH_MEXICO]: mexico,\n [Locales.SPANISH_NICARAGUA]: nicaragua,\n [Locales.SPANISH_PANAMA]: panama,\n [Locales.SPANISH_PERU]: peru,\n [Locales.SPANISH_PUERTO_RICO]: puertoRico,\n [Locales.SPANISH_PARAGUAY]: paraguay,\n [Locales.SPANISH_EL_SALVADOR]: elSalvador,\n [Locales.SPANISH_URUGUAY]: uruguay,\n [Locales.SPANISH_VENEZUELA]: venezuela,\n [Locales.ESTONIAN_ESTONIA]: estonia,\n [Locales.BASQUE_SPAIN]: basqueCountry,\n [Locales.FARSI_IRAN]: iran,\n [Locales.FINNISH_FINLAND]: finland,\n [Locales.FAROESE_FAROE_ISLANDS]: faroeIslands,\n [Locales.FRENCH_BELGIUM]: belgium,\n [Locales.FRENCH_CANADA]: canada,\n [Locales.FRENCH_SWITZERLAND]: switzerland,\n [Locales.FRENCH_FRANCE]: france,\n [Locales.FRENCH_LUXEMBOURG]: luxembourg,\n [Locales.FRENCH_PRINCIPALITY_OF_MONACO]: monaco,\n [Locales.GALICIAN_SPAIN]: galicia,\n [Locales.GUJARATI_INDIA]: india,\n [Locales.HEBREW_ISRAEL]: israel,\n [Locales.HINDI_INDIA]: india,\n [Locales.CROATIAN_BOSNIA_AND_HERZEGOVINA]: bosniaAndHerzegovina,\n [Locales.CROATIAN_CROATIA]: croatia,\n [Locales.HUNGARIAN_HUNGARY]: hungary,\n [Locales.ARMENIAN_ARMENIA]: armenia,\n [Locales.INDONESIAN_INDONESIA]: indonesia,\n [Locales.ICELANDIC_ICELAND]: iceland,\n [Locales.ITALIAN_SWITZERLAND]: switzerland,\n [Locales.ITALIAN_ITALY]: italy,\n [Locales.JAPANESE_JAPAN]: japan,\n [Locales.GEORGIAN_GEORGIA]: georgia,\n [Locales.KAZAKH_KAZAKHSTAN]: kazakhstan,\n [Locales.KANNADA_INDIA]: india,\n [Locales.KOREAN_KOREA]: southKorea,\n [Locales.KONKANI_INDIA]: india,\n [Locales.KYRGYZ_KYRGYZSTAN]: kyrgyzstan,\n [Locales.LITHUANIAN_LITHUANIA]: lithuania,\n [Locales.LATVIAN_LATVIA]: latvia,\n [Locales.MAORI_NEW_ZEALAND]: newZealand,\n [Locales.FYRO_MACEDONIAN_MACEDONIA]: northMacedonia,\n [Locales.MONGOLIAN_MONGOLIA]: mongolia,\n [Locales.MARATHI_INDIA]: india,\n [Locales.MALAY_BRUNEI_DARUSSALAM]: bruneiDarussalam,\n [Locales.MALAY_MALAYSIA]: malaysia,\n [Locales.MALTESE_MALTA]: malta,\n [Locales.NORWEGIAN_BOKMAL_NORWAY]: norway,\n [Locales.DUTCH_BELGIUM]: belgium,\n [Locales.DUTCH_NETHERLANDS]: netherlands,\n [Locales.NORWEGIAN_NYNORSK_NORWAY]: norway,\n [Locales.NORTHERN_SOTHO_SOUTH_AFRICA]: southAfrica,\n [Locales.PUNJABI_INDIA]: india,\n [Locales.POLISH_POLAND]: poland,\n [Locales.PASHTO_AFGHANISTAN]: afghanistan,\n [Locales.PORTUGUESE_BRAZIL]: brazil,\n [Locales.PORTUGUESE_PORTUGAL]: portugal,\n [Locales.QUECHUA_BOLIVIA]: bolivia,\n [Locales.QUECHUA_ECUADOR]: ecuador,\n [Locales.QUECHUA_PERU]: peru,\n [Locales.ROMANIAN_ROMANIA]: romania,\n [Locales.RUSSIAN_RUSSIA]: russia,\n [Locales.SANSKRIT_INDIA]: india,\n [Locales.SAMI_NORTHERN_FINLAND]: finland,\n [Locales.SAMI_NORTHERN_NORWAY]: norway,\n [Locales.SAMI_NORTHERN_SWEDEN]: sweden,\n [Locales.SLOVAK_SLOVAKIA]: slovakia,\n [Locales.SLOVENIAN_SLOVENIA]: slovenia,\n [Locales.ALBANIAN_ALBANIA]: albania,\n [Locales.SERBIAN_LATIN_BOSNIA_AND_HERZEGOVINA]: bosniaAndHerzegovina,\n [Locales.SERBIAN_LATIN_SERBIA_AND_MONTENEGRO]: serbia,\n [Locales.SWAHILI_KENYA]: kenya,\n [Locales.SYRIAC_SYRIA]: syria,\n [Locales.TAMIL_INDIA]: india,\n [Locales.TELUGU_INDIA]: india,\n [Locales.THAI_THAILAND]: thailand,\n [Locales.TAGALOG_PHILIPPINES]: philippines,\n [Locales.TSWANA_SOUTH_AFRICA]: southAfrica,\n [Locales.TURKISH_TURKEY]: türkiye,\n [Locales.TATAR_RUSSIA]: russia,\n [Locales.TSOGA]: unknown, // No specific flag\n [Locales.UKRAINIAN_UKRAINE]: ukraine,\n [Locales.URDU_ISLAMIC_REPUBLIC_OF_PAKISTAN]: pakistan,\n [Locales.UZBEK_LATIN_UZBEKISTAN]: uzbekistan,\n [Locales.VIETNAMESE_VIET_NAM]: vietnam,\n [Locales.XHOSA_SOUTH_AFRICA]: southAfrica,\n [Locales.CHINESE]: china,\n [Locales.CHINESE_SIMPLIFIED_CHINA]: china,\n [Locales.CHINESE_HONG_KONG]: hongKong,\n [Locales.CHINESE_MACAU]: macau,\n [Locales.CHINESE_SINGAPORE]: singapore,\n [Locales.ZULU_SOUTH_AFRICA]: southAfrica,\n [Locales.BENGALI]: india,\n [Locales.BENGALI_BANGLADESH]: bangladesh,\n [Locales.BENGALI_INDIA]: india,\n [Locales.BENGALI_MYANMAR]: myanmar,\n [Locales.BURMESE]: myanmar,\n [Locales.BURMESE_MYANMAR]: myanmar,\n [Locales.KHMER]: cambodia,\n [Locales.KHMER_CAMBODIA]: cambodia,\n [Locales.LAO]: laos,\n [Locales.LAO_LAOS]: laos,\n [Locales.YORUBA]: nigeria,\n [Locales.YORUBA_NIGERIA]: nigeria,\n [Locales.AMHARIC]: ethiopia,\n [Locales.AMHARIC_ETHIOPIA]: ethiopia,\n [Locales.NEPALI]: nepal,\n [Locales.NEPALI_NEPAL]: nepal,\n};\n\nexport const Flag: FC<FlagProps> = ({ locale, alt, ...props }): JSX.Element => {\n const asset = flagRecord[locale] ?? unknown;\n\n // Case 1: bundler returns a URL string or an object with a .src field\n if (typeof asset === 'string' || (asset as any)?.src) {\n const src =\n typeof asset === 'string' ? (asset as string) : (asset as any).src;\n return <img src={src} alt={alt ?? `${locale} flag`} {...props} />;\n }\n\n // Case 2: bundler returns a React component (SVGR)\n const Svg = asset as ComponentType<SVGProps<SVGSVGElement>>;\n const { width, height, className, style, onClick } = props;\n\n return (\n <Svg\n aria-label={alt ?? `${locale} flag`}\n width={width as any}\n height={height as any}\n className={className}\n style={style}\n onClick={onClick as any}\n role=\"img\"\n focusable={false as any}\n />\n );\n};\n"],"mappings":"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"}
|
|
@@ -7,6 +7,8 @@ import { EditableFieldInputElement } from "./elements/EditableFieldInputElement.
|
|
|
7
7
|
import { EditableFieldTextAreaElement } from "./elements/EditableFieldTextAreaElement.mjs";
|
|
8
8
|
import { InputElement } from "./elements/InputElement.mjs";
|
|
9
9
|
import { InputPasswordElement } from "./elements/InputPasswordElement.mjs";
|
|
10
|
+
import { OTPElement } from "./elements/OTPElement.mjs";
|
|
11
|
+
import { SearchInputElement } from "./elements/SearchInputElement.mjs";
|
|
10
12
|
import { TextAreaElement } from "./elements/TextAreaElement.mjs";
|
|
11
13
|
import { AutoSizedTextAreaElement } from "./elements/AutoSizeTextAreaElement.mjs";
|
|
12
14
|
import { CheckboxElement } from "./elements/CheckboxElement.mjs";
|
|
@@ -56,6 +58,8 @@ Form.MultiSelect = MultiSelectElement;
|
|
|
56
58
|
Form.EditableFieldInput = EditableFieldInputElement;
|
|
57
59
|
Form.EditableFieldTextArea = EditableFieldTextAreaElement;
|
|
58
60
|
Form.SwitchSelector = SwitchSelectorElement;
|
|
61
|
+
Form.OTP = OTPElement;
|
|
62
|
+
Form.SearchInput = SearchInputElement;
|
|
59
63
|
|
|
60
64
|
//#endregion
|
|
61
65
|
export { Form };
|