@intlayer/design-system 7.5.3 → 7.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/dist/esm/components/Accordion/Accordion.mjs +1 -1
  2. package/dist/esm/components/Avatar/index.mjs +1 -1
  3. package/dist/esm/components/Breadcrumb/index.mjs +1 -1
  4. package/dist/esm/components/Browser/Browser.content.mjs +36 -17
  5. package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
  6. package/dist/esm/components/Browser/Browser.mjs +191 -131
  7. package/dist/esm/components/Browser/Browser.mjs.map +1 -1
  8. package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
  9. package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -1
  10. package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -1
  11. package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +2 -2
  12. package/dist/esm/components/CopyButton/index.mjs +1 -1
  13. package/dist/esm/components/CopyToClipboard/index.mjs +1 -1
  14. package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -1
  15. package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs +1 -1
  16. package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +1 -1
  17. package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs +1 -1
  18. package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +1 -1
  19. package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +3 -3
  20. package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
  21. package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +4 -4
  22. package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +2 -2
  23. package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs +1 -1
  24. package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +2 -2
  25. package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +4 -4
  26. package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +1 -1
  27. package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
  28. package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -1
  29. package/dist/esm/components/HideShow/index.mjs +1 -1
  30. package/dist/esm/components/IDE/FileTree.mjs +1 -1
  31. package/dist/esm/components/Input/InputPassword.mjs +1 -1
  32. package/dist/esm/components/Input/OTPInput.mjs +1 -1
  33. package/dist/esm/components/KeyboardScreenAdapter/index.mjs +1 -1
  34. package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +1 -1
  35. package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +2 -2
  36. package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -1
  37. package/dist/esm/components/Modal/Modal.mjs +3 -3
  38. package/dist/esm/components/Navbar/MobileNavbar.mjs +2 -2
  39. package/dist/esm/components/Pagination/Pagination.mjs +2 -2
  40. package/dist/esm/components/RightDrawer/RightDrawer.mjs +3 -3
  41. package/dist/esm/components/Select/Multiselect.mjs +1 -1
  42. package/dist/esm/components/SwitchSelector/index.mjs +1 -1
  43. package/dist/esm/components/Tab/Tab.mjs +2 -1
  44. package/dist/esm/components/Tab/Tab.mjs.map +1 -1
  45. package/dist/esm/components/TabSelector/TabSelector.mjs +3 -3
  46. package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
  47. package/dist/esm/components/Table/Table.mjs +1 -1
  48. package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +1 -1
  49. package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +1 -1
  50. package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +1 -1
  51. package/dist/esm/hooks/useAuth/useOAuth2.mjs +1 -1
  52. package/dist/esm/hooks/useAuth/useSession.mjs +1 -1
  53. package/dist/esm/libs/auth.mjs +1 -1
  54. package/dist/esm/providers/ReactQueryProvider.mjs +1 -1
  55. package/dist/types/components/Badge/index.d.ts +2 -2
  56. package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +3 -3
  57. package/dist/types/components/Breadcrumb/index.d.ts +2 -2
  58. package/dist/types/components/Browser/Browser.content.d.ts +52 -11
  59. package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
  60. package/dist/types/components/Browser/Browser.d.ts +18 -60
  61. package/dist/types/components/Browser/Browser.d.ts.map +1 -1
  62. package/dist/types/components/Button/Button.d.ts +3 -3
  63. package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +3 -3
  64. package/dist/types/components/Command/index.d.ts +20 -20
  65. package/dist/types/components/Command/index.d.ts.map +1 -1
  66. package/dist/types/components/Container/index.d.ts +7 -7
  67. package/dist/types/components/Container/index.d.ts.map +1 -1
  68. package/dist/types/components/CopyButton/CopyButton.content.d.ts +3 -3
  69. package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
  70. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +25 -25
  71. package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +9 -9
  72. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +33 -33
  73. package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +25 -25
  74. package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +25 -25
  75. package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +33 -33
  76. package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +9 -9
  77. package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +7 -7
  78. package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +5 -5
  79. package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +31 -31
  80. package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -3
  81. package/dist/types/components/Form/FormBase.d.ts +2 -2
  82. package/dist/types/components/Form/FormBase.d.ts.map +1 -1
  83. package/dist/types/components/Form/FormField.d.ts +2 -2
  84. package/dist/types/components/Form/FormField.d.ts.map +1 -1
  85. package/dist/types/components/Form/FormItem.d.ts +2 -2
  86. package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -2
  87. package/dist/types/components/Form/elements/OTPElement.d.ts +2 -2
  88. package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -2
  89. package/dist/types/components/IDE/CodeContext.d.ts +2 -2
  90. package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
  91. package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
  92. package/dist/types/components/IDE/code.content.d.ts +5 -5
  93. package/dist/types/components/IDE/code.content.d.ts.map +1 -1
  94. package/dist/types/components/IDE/copyCode.content.d.ts +5 -5
  95. package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
  96. package/dist/types/components/IDE/selectors.content.d.ts +7 -7
  97. package/dist/types/components/Input/Checkbox.d.ts +4 -4
  98. package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
  99. package/dist/types/components/Input/Input.d.ts +2 -2
  100. package/dist/types/components/Input/Input.d.ts.map +1 -1
  101. package/dist/types/components/Input/OTPInput.d.ts +7 -7
  102. package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
  103. package/dist/types/components/Input/SearchInput.d.ts +2 -2
  104. package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
  105. package/dist/types/components/Link/Link.d.ts +4 -4
  106. package/dist/types/components/Link/Link.d.ts.map +1 -1
  107. package/dist/types/components/Loader/index.content.d.ts +3 -3
  108. package/dist/types/components/Loader/index.content.d.ts.map +1 -1
  109. package/dist/types/components/Loader/spinner.d.ts +2 -2
  110. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +17 -17
  111. package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts.map +1 -1
  112. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +13 -13
  113. package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts.map +1 -1
  114. package/dist/types/components/MaxWidthSmoother/index.d.ts +2 -2
  115. package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
  116. package/dist/types/components/Navbar/Burger.d.ts +2 -2
  117. package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -2
  118. package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -2
  119. package/dist/types/components/Navbar/index.d.ts +2 -2
  120. package/dist/types/components/Navbar/index.d.ts.map +1 -1
  121. package/dist/types/components/Pagination/Pagination.d.ts +3 -3
  122. package/dist/types/components/Pagination/pagination.content.d.ts +11 -11
  123. package/dist/types/components/Select/Select.d.ts +3 -3
  124. package/dist/types/components/Select/Select.d.ts.map +1 -1
  125. package/dist/types/components/SocialNetworks/index.d.ts +2 -2
  126. package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
  127. package/dist/types/components/SwitchSelector/index.d.ts +6 -6
  128. package/dist/types/components/SwitchSelector/index.d.ts.map +1 -1
  129. package/dist/types/components/Tab/Tab.d.ts +5 -5
  130. package/dist/types/components/Tab/Tab.d.ts.map +1 -1
  131. package/dist/types/components/Tab/TabContext.d.ts +2 -2
  132. package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
  133. package/dist/types/components/TabSelector/TabSelector.d.ts +4 -4
  134. package/dist/types/components/Table/table.content.d.ts +3 -3
  135. package/dist/types/components/Table/table.content.d.ts.map +1 -1
  136. package/dist/types/components/Tag/index.d.ts +2 -2
  137. package/dist/types/components/Terminal/terminal.content.d.ts +5 -5
  138. package/dist/types/components/Terminal/terminal.content.d.ts.map +1 -1
  139. package/dist/types/components/Toaster/Toast.d.ts +1 -1
  140. package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
  141. package/dist/types/components/Toaster/Toaster.d.ts +2 -2
  142. package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
  143. package/package.json +14 -14
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
4
- import { CopyCheckIcon, CopyIcon } from "lucide-react";
5
4
  import { useEffect, useState } from "react";
5
+ import { CopyCheckIcon, CopyIcon } from "lucide-react";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { useIntlayer } from "react-intlayer";
8
8
 
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import { CopyCheck, CopyIcon } from "lucide-react";
5
4
  import { useState } from "react";
5
+ import { CopyCheck, CopyIcon } from "lucide-react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
 
8
8
  //#region src/components/CopyToClipboard/index.tsx
@@ -2,9 +2,9 @@
2
2
 
3
3
  import { SaveForm } from "../DictionaryFieldEditor/SaveForm/SaveForm.mjs";
4
4
  import { NodeWrapper } from "./NodeWrapper/index.mjs";
5
+ import { useEditedContent, useFocusUnmergedDictionary } from "@intlayer/editor-react";
5
6
  import { createElement, useMemo } from "react";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
- import { useEditedContent, useFocusUnmergedDictionary } from "@intlayer/editor-react";
8
8
 
9
9
  //#region src/components/DictionaryEditor/DictionaryEditor.tsx
10
10
  const DictionaryEditor = ({ dictionary, mode, onDelete, ...props }) => {
@@ -1,7 +1,7 @@
1
1
  import { StringWrapper } from "./StringWrapper.mjs";
2
+ import { useEditedContent } from "@intlayer/editor-react";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
4
  import { getContentNodeByKeyPath } from "@intlayer/core";
4
- import { useEditedContent } from "@intlayer/editor-react";
5
5
  import { NodeType } from "@intlayer/types";
6
6
 
7
7
  //#region src/components/DictionaryEditor/NodeWrapper/FileWrapper.tsx
@@ -1,8 +1,8 @@
1
1
  import { cn } from "../../../utils/cn.mjs";
2
2
  import { EditableFieldTextArea } from "../../EditableField/EditableFieldTextArea.mjs";
3
+ import { useEditorLocale } from "@intlayer/editor-react";
3
4
  import { Fragment, jsx } from "react/jsx-runtime";
4
5
  import { getContentNodeByKeyPath } from "@intlayer/core";
5
- import { useEditorLocale } from "@intlayer/editor-react";
6
6
 
7
7
  //#region src/components/DictionaryEditor/NodeWrapper/StringWrapper.tsx
8
8
  const StringWrapper = ({ keyPath, section, editedContent, editedContentValue: editedContentValueProp, onContentChange, onFocusKeyPath, renderSection }) => {
@@ -9,10 +9,10 @@ import { InsertionWrapper } from "./InsertionWrapper.mjs";
9
9
  import { MarkdownWrapper } from "./MarkdownWrapper.mjs";
10
10
  import { NestedObjectWrapper } from "./NestedObjectWrapper.mjs";
11
11
  import { TranslationWrapper } from "./TranslationWrapper.mjs";
12
+ import { useEditorLocale } from "@intlayer/editor-react";
12
13
  import { memo, useMemo } from "react";
13
14
  import { jsx } from "react/jsx-runtime";
14
15
  import { getContentNodeByKeyPath, getNodeType } from "@intlayer/core";
15
- import { useEditorLocale } from "@intlayer/editor-react";
16
16
  import { NodeType } from "@intlayer/types";
17
17
 
18
18
  //#region src/components/DictionaryEditor/NodeWrapper/index.tsx
@@ -6,10 +6,10 @@ import { TextEditorContainer } from "./ContentEditorView/TextEditor.mjs";
6
6
  import { getIsEditableSection } from "./getIsEditableSection.mjs";
7
7
  import { KeyPathBreadcrumb } from "./KeyPathBreadcrumb.mjs";
8
8
  import { NavigationViewNode } from "./NavigationView/NavigationViewNode.mjs";
9
+ import { useEditedContent, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
9
10
  import { useEffect } from "react";
10
11
  import { jsx, jsxs } from "react/jsx-runtime";
11
12
  import { getContentNodeByKeyPath } from "@intlayer/core";
12
- import { useEditedContent, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
13
13
 
14
14
  //#region src/components/DictionaryFieldEditor/ContentEditor.tsx
15
15
  const ContentEditor = ({ dictionary, isDarkMode }) => {
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
+ import { useAuditContentDeclarationField } from "../../../hooks/reactQuery.mjs";
3
4
  import { Container } from "../../Container/index.mjs";
4
5
  import { Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant } from "../../Button/Button.mjs";
5
- import { useAuditContentDeclarationField } from "../../../hooks/reactQuery.mjs";
6
6
  import { InputVariant } from "../../Input/Input.mjs";
7
7
  import { Label } from "../../Label/index.mjs";
8
8
  import { SwitchSelector, SwitchSelectorColor, SwitchSelectorSize } from "../../SwitchSelector/index.mjs";
@@ -12,12 +12,12 @@ import { ContentEditorInput as ContentEditorInput$1 } from "../../ContentEditor/
12
12
  import { ContentEditorTextArea as ContentEditorTextArea$1 } from "../../ContentEditor/ContentEditorTextArea.mjs";
13
13
  import { MarkdownRenderer } from "../../MarkDownRender/MarkDownRender.mjs";
14
14
  import { EnumKeyInput } from "../EnumKeyInput.mjs";
15
- import { Plus, Trash, WandSparkles } from "lucide-react";
15
+ import { useConfiguration, useEditedContent } from "@intlayer/editor-react";
16
16
  import { Fragment, useState } from "react";
17
+ import { Plus, Trash, WandSparkles } from "lucide-react";
17
18
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
18
19
  import { getEmptyNode, getLocaleName, getNodeType } from "@intlayer/core";
19
20
  import { useIntlayer, useLocale } from "react-intlayer";
20
- import { useConfiguration, useEditedContent } from "@intlayer/editor-react";
21
21
  import { NodeType } from "@intlayer/types";
22
22
 
23
23
  //#region src/components/DictionaryFieldEditor/ContentEditorView/TextEditor.tsx
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
- import { ButtonColor } from "../../Button/Button.mjs";
4
3
  import { useSession } from "../../../hooks/useAuth/useSession.mjs";
5
4
  import { useAddDictionary, useGetProjects } from "../../../hooks/reactQuery.mjs";
5
+ import { ButtonColor } from "../../Button/Button.mjs";
6
6
  import { MultiSelect } from "../../Select/Multiselect.mjs";
7
7
  import { useForm } from "../../Form/FormBase.mjs";
8
8
  import { Form } from "../../Form/Form.mjs";
@@ -1,19 +1,19 @@
1
1
  'use client';
2
2
 
3
+ import { useSession } from "../../../hooks/useAuth/useSession.mjs";
4
+ import { useAuditContentDeclarationMetadata, useGetProjects, useGetTags } from "../../../hooks/reactQuery.mjs";
3
5
  import { Container } from "../../Container/index.mjs";
4
6
  import { Loader } from "../../Loader/index.mjs";
5
7
  import { ButtonColor, ButtonSize, ButtonVariant } from "../../Button/Button.mjs";
6
- import { useSession } from "../../../hooks/useAuth/useSession.mjs";
7
- import { useAuditContentDeclarationMetadata, useGetProjects, useGetTags } from "../../../hooks/reactQuery.mjs";
8
8
  import { MultiSelect } from "../../Select/Multiselect.mjs";
9
9
  import { useForm } from "../../Form/FormBase.mjs";
10
10
  import { Form } from "../../Form/Form.mjs";
11
11
  import { useDictionaryDetailsSchema } from "./useDictionaryDetailsSchema.mjs";
12
- import { WandSparkles } from "lucide-react";
12
+ import { useEditedContent } from "@intlayer/editor-react";
13
13
  import { useEffect } from "react";
14
+ import { WandSparkles } from "lucide-react";
14
15
  import { jsx, jsxs } from "react/jsx-runtime";
15
16
  import { useIntlayer } from "react-intlayer";
16
- import { useEditedContent } from "@intlayer/editor-react";
17
17
 
18
18
  //#region src/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.tsx
19
19
  const DictionaryDetailsForm = ({ dictionary }) => {
@@ -8,11 +8,11 @@ import { ContentEditor } from "./ContentEditor.mjs";
8
8
  import { DictionaryDetailsForm } from "./DictionaryDetails/DictionaryDetailsForm.mjs";
9
9
  import { JSONEditor } from "./JSONEditor.mjs";
10
10
  import { StructureEditor } from "./StructureEditor.mjs";
11
- import { ArrowLeft } from "lucide-react";
11
+ import { useConfiguration, useDictionariesRecordActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
12
12
  import { useEffect, useState } from "react";
13
+ import { ArrowLeft } from "lucide-react";
13
14
  import { jsx, jsxs } from "react/jsx-runtime";
14
15
  import { useIntlayer } from "react-intlayer";
15
- import { useConfiguration, useDictionariesRecordActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
16
16
 
17
17
  //#region src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx
18
18
  var EditorViewType = /* @__PURE__ */ function(EditorViewType$1) {
@@ -1,8 +1,8 @@
1
1
  import { Container } from "../Container/index.mjs";
2
2
  import { MonacoCode } from "../IDE/MonacoCode.mjs";
3
+ import { useEditedContent } from "@intlayer/editor-react";
3
4
  import { useMemo } from "react";
4
5
  import { jsx } from "react/jsx-runtime";
5
- import { useEditedContent } from "@intlayer/editor-react";
6
6
 
7
7
  //#region src/components/DictionaryFieldEditor/JSONEditor.tsx
8
8
  const JSONEditor = ({ dictionary, isDarkMode }) => {
@@ -1,12 +1,12 @@
1
1
  import { Button, ButtonColor, ButtonTextAlign, ButtonVariant } from "../../Button/Button.mjs";
2
2
  import { Accordion } from "../../Accordion/Accordion.mjs";
3
3
  import { getIsEditableSection } from "../getIsEditableSection.mjs";
4
+ import configuration from "@intlayer/config/built";
5
+ import { useEditedContentActions, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
4
6
  import { ChevronRight, Plus } from "lucide-react";
5
7
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
8
  import { getContentNodeByKeyPath, getEmptyNode, getNodeType, isSameKeyPath } from "@intlayer/core";
7
9
  import { useIntlayer } from "react-intlayer";
8
- import { useEditedContentActions, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
9
- import configuration from "@intlayer/config/built";
10
10
  import { NodeType } from "@intlayer/types";
11
11
  import { camelCaseToSentence } from "@intlayer/config/client";
12
12
 
@@ -1,16 +1,16 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../../utils/cn.mjs";
4
- import { ButtonColor, ButtonVariant } from "../../Button/Button.mjs";
5
3
  import { useAuth } from "../../../hooks/useAuth/useAuth.mjs";
6
4
  import { useDeleteDictionary, usePushDictionaries, useWriteDictionary } from "../../../hooks/reactQuery.mjs";
5
+ import { cn } from "../../../utils/cn.mjs";
6
+ import { ButtonColor, ButtonVariant } from "../../Button/Button.mjs";
7
7
  import { Modal, ModalSize } from "../../Modal/Modal.mjs";
8
8
  import { Form } from "../../Form/Form.mjs";
9
- import { ArrowUpFromLine, Download, RotateCcw, Save, Trash } from "lucide-react";
9
+ import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
10
10
  import { useState } from "react";
11
+ import { ArrowUpFromLine, Download, RotateCcw, Save, Trash } from "lucide-react";
11
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
12
13
  import { useIntlayer } from "react-intlayer";
13
- import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
14
14
 
15
15
  //#region src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx
16
16
  const SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) => {
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { NodeView } from "./StructureView/StructureView.mjs";
4
- import { jsx } from "react/jsx-runtime";
5
4
  import { useEditedContent } from "@intlayer/editor-react";
5
+ import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/components/DictionaryFieldEditor/StructureEditor.tsx
8
8
  const StructureEditor = ({ dictionary }) => {
@@ -5,11 +5,11 @@ import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../../Button/But
5
5
  import { InputVariant } from "../../Input/Input.mjs";
6
6
  import { EditableFieldInput } from "../../EditableField/EditableFieldInput.mjs";
7
7
  import { NodeTypeSelector } from "../NodeTypeSelector.mjs";
8
+ import { useConfiguration, useEditedContentActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
8
9
  import { Plus, Trash } from "lucide-react";
9
10
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
11
  import { getDefaultNode, getNodeChildren, getNodeType, isSameKeyPath } from "@intlayer/core";
11
12
  import { useIntlayer } from "react-intlayer";
12
- import { useConfiguration, useEditedContentActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
13
13
  import { NodeType } from "@intlayer/types";
14
14
  import { camelCaseToSentence } from "@intlayer/config/client";
15
15
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
5
- import { Check, Pencil, X } from "lucide-react";
6
5
  import { useCallback, useEffect, useRef, useState } from "react";
6
+ import { Check, Pencil, X } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
 
9
9
  //#region src/components/EditableField/EditableFieldLayout.tsx
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
- import { Eye, EyeOff } from "lucide-react";
5
4
  import { useEffect, useMemo, useRef, useState } from "react";
5
+ import { Eye, EyeOff } from "lucide-react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
 
8
8
  //#region src/components/HideShow/index.tsx
@@ -3,8 +3,8 @@
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { MaxHeightSmoother } from "../MaxHeightSmoother/index.mjs";
5
5
  import { createFileTree } from "./createFileTree.mjs";
6
- import { ChevronRight } from "lucide-react";
7
6
  import { useState } from "react";
7
+ import { ChevronRight } from "lucide-react";
8
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
9
 
10
10
  //#region src/components/IDE/FileTree.tsx
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import { Input } from "./Input.mjs";
4
- import { EyeIcon, EyeOffIcon } from "lucide-react";
5
4
  import { useState } from "react";
5
+ import { EyeIcon, EyeOffIcon } from "lucide-react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
 
8
8
  //#region src/components/Input/InputPassword.tsx
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { Button } from "../Button/Button.mjs";
5
- import { MinusIcon } from "lucide-react";
6
5
  import { createContext, useContext, useEffect, useRef, useState } from "react";
6
+ import { MinusIcon } from "lucide-react";
7
7
  import { cva } from "class-variance-authority";
8
8
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
9
9
 
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../utils/cn.mjs";
4
3
  import { useKeyboardDetector } from "../../hooks/useKeyboardDetector.mjs";
4
+ import { cn } from "../../utils/cn.mjs";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
 
7
7
  //#region src/components/KeyboardScreenAdapter/index.tsx
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../utils/cn.mjs";
4
3
  import { useDevice } from "../../hooks/useDevice.mjs";
4
+ import { cn } from "../../utils/cn.mjs";
5
5
  import { useEffect, useState } from "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
 
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
+ import { usePersistedStore } from "../../hooks/usePersistedStore.mjs";
3
4
  import { Container } from "../Container/index.mjs";
4
5
  import { Button, ButtonColor, ButtonSize, ButtonTextAlign, ButtonVariant } from "../Button/Button.mjs";
5
- import { usePersistedStore } from "../../hooks/usePersistedStore.mjs";
6
6
  import { Input } from "../Input/Input.mjs";
7
7
  import { SwitchSelector, SwitchSelectorColor, SwitchSelectorSize } from "../SwitchSelector/index.mjs";
8
8
  import { DropDown } from "../DropDown/index.mjs";
9
9
  import { useLocaleSwitcherContent } from "./LocaleSwitcherContentContext.mjs";
10
- import { Check, Globe, MoveVertical } from "lucide-react";
11
10
  import { useCallback, useMemo, useRef, useState } from "react";
11
+ import { Check, Globe, MoveVertical } from "lucide-react";
12
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
13
  import { getHTMLTextDir, getLocaleName } from "@intlayer/core";
14
14
  import { useIntlayer, useLocale } from "react-intlayer";
@@ -4,8 +4,8 @@ import { Container } from "../Container/index.mjs";
4
4
  import { Button, ButtonColor, ButtonTextAlign, ButtonVariant } from "../Button/Button.mjs";
5
5
  import { Input } from "../Input/Input.mjs";
6
6
  import { DropDown } from "../DropDown/index.mjs";
7
- import { MoveVertical } from "lucide-react";
8
7
  import { useCallback, useMemo, useRef, useState } from "react";
8
+ import { MoveVertical } from "lucide-react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
  import { getHTMLTextDir, getLocaleName } from "@intlayer/core";
11
11
  import { useIntlayer } from "react-intlayer";
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
 
3
+ import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
4
+ import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
3
5
  import { cn } from "../../utils/cn.mjs";
4
6
  import { Container } from "../Container/index.mjs";
5
7
  import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
6
- import { useGetElementOrWindow } from "../../hooks/useGetElementOrWindow.mjs";
7
- import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
8
8
  import { H3 } from "../Headers/index.mjs";
9
- import { X } from "lucide-react";
10
9
  import { useEffect } from "react";
10
+ import { X } from "lucide-react";
11
11
  import { cva } from "class-variance-authority";
12
12
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
13
13
  import { motion } from "framer-motion";
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../utils/cn.mjs";
4
- import { MaxHeightSmoother } from "../MaxHeightSmoother/index.mjs";
5
3
  import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
6
4
  import { useScrollDetection } from "../../hooks/useScrollDetection.mjs";
5
+ import { cn } from "../../utils/cn.mjs";
6
+ import { MaxHeightSmoother } from "../MaxHeightSmoother/index.mjs";
7
7
  import { Burger } from "./Burger.mjs";
8
8
  import { useRef, useState } from "react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
 
3
+ import { useItemSelector } from "../../hooks/useItemSelector.mjs";
3
4
  import { cn } from "../../utils/cn.mjs";
4
5
  import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
5
- import { useItemSelector } from "../../hooks/useItemSelector.mjs";
6
- import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react";
7
6
  import { useEffect, useRef } from "react";
7
+ import { ChevronLeft, ChevronRight, MoreHorizontal } from "lucide-react";
8
8
  import { cva } from "class-variance-authority";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
 
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
- import { Container } from "../Container/index.mjs";
4
- import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
5
3
  import { useDevice } from "../../hooks/useDevice.mjs";
6
4
  import { useScrollBlockage } from "../../hooks/useScrollBlockage/index.mjs";
5
+ import { Container } from "../Container/index.mjs";
6
+ import { Button, ButtonColor, ButtonSize, ButtonVariant } from "../Button/Button.mjs";
7
7
  import { MaxWidthSmoother } from "../MaxWidthSmoother/index.mjs";
8
8
  import { isElementAtTopAndNotCovered } from "./isElementAtTopAndNotCovered.mjs";
9
9
  import { useRightDrawerStore } from "./useRightDrawerStore.mjs";
10
- import { ChevronLeft, X } from "lucide-react";
11
10
  import { useEffect, useRef } from "react";
11
+ import { ChevronLeft, X } from "lucide-react";
12
12
  import { jsx, jsxs } from "react/jsx-runtime";
13
13
 
14
14
  //#region src/components/RightDrawer/RightDrawer.tsx
@@ -3,8 +3,8 @@
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { Badge, BadgeColor } from "../Badge/index.mjs";
5
5
  import { Command, CommandRoot } from "../Command/index.mjs";
6
- import { Check, X } from "lucide-react";
7
6
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
7
+ import { Check, X } from "lucide-react";
8
8
  import { jsx, jsxs } from "react/jsx-runtime";
9
9
 
10
10
  //#region src/components/Select/Multiselect.tsx
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../utils/cn.mjs";
4
3
  import { useItemSelector } from "../../hooks/useItemSelector.mjs";
4
+ import { cn } from "../../utils/cn.mjs";
5
5
  import { createElement, useEffect, useRef, useState } from "react";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../utils/cn.mjs";
4
3
  import { useHorizontalSwipe } from "../../hooks/useHorizontalSwipe.mjs";
4
+ import { cn } from "../../utils/cn.mjs";
5
5
  import { TabSelector, TabSelectorColor } from "../TabSelector/TabSelector.mjs";
6
6
  import { useTabContext } from "./TabContext.mjs";
7
7
  import { Children, createContext, isValidElement, useState } from "react";
@@ -96,6 +96,7 @@ const TabComponent = ({ defaultTab, group, variant, children, className, ...prop
96
96
  "aria-selected": isActive,
97
97
  "aria-controls": `tabpanel-${value}`,
98
98
  id: `tab-${value}`,
99
+ type: "button",
99
100
  children: label
100
101
  }, value);
101
102
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.mjs","names":["contextValue: TabContextType","props","children"],"sources":["../../../../src/components/Tab/Tab.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n Children,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useState,\n} from 'react';\nimport { useHorizontalSwipe } from '../../hooks';\nimport { cn } from '../../utils/cn';\nimport { TabSelector, TabSelectorColor } from '../TabSelector';\nimport { useTabContext } from './TabContext';\n\n// Context for managing tab state\ntype TabContextType = {\n activeTab: string;\n setActiveTab: (tab: string) => void;\n};\n\nconst TabContext = createContext<TabContextType | undefined>(undefined);\n\n// Tab container variants\nconst tabContainerVariant = cva(\n 'relative w-full rounded-lg border border-neutral/20 bg-background/2 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur',\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border-2',\n ghost: 'border-0 bg-transparent shadow-none',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type TabProps = HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof tabContainerVariant> & {\n defaultTab?: string;\n group?: string;\n children: ReactNode;\n };\n\nexport type TabItemProps = HTMLAttributes<HTMLDivElement> & {\n label: string;\n value: string;\n disabled?: boolean;\n children: ReactNode;\n};\n\n/**\n * TabItem component that represents a single tab\n * Must be used as a child of the Tab component\n */\nconst TabItem = ({ children, ...props }: TabItemProps) => (\n // This component is primarily used for its props by the parent Tab component\n // The actual rendering is handled by the Tab component\n <div {...props}>{children}</div>\n);\n\n// Add display name for better debugging\nTabItem.displayName = 'TabItem';\n\n/**\n * Tab container component that manages tab state and renders tab headers and content\n *\n * Example:\n * ```jsx\n * <Tab defaultTab=\"tab1\">\n * <Tab.Item label=\"First Tab\" value=\"tab1\">\n * Content for first tab\n * </Tab.Item>\n * <Tab.Item label=\"Second Tab\" value=\"tab2\">\n * Content for second tab\n * </Tab.Item>\n * </Tab>\n * ```\n */\nconst TabComponent = ({\n defaultTab,\n group,\n variant,\n children,\n className,\n ...props\n}: TabProps) => {\n // Extract TabItem children to get their props\n const tabItems = Children.toArray(children).filter((child) => {\n return isValidElement(child) && child.type === TabItem;\n }) as ReactElement<TabItemProps>[];\n\n const firstTabValue = tabItems[0]?.props?.value;\n const { tabsValues, setTabsValues } = useTabContext();\n const [activeTab, setActiveTab] = useState(defaultTab ?? firstTabValue ?? '');\n const hasGroup = group && typeof tabsValues === 'object';\n const currentTabValue =\n (hasGroup ? tabsValues?.[group] : activeTab) ?? defaultTab ?? firstTabValue;\n const activeTabIndex = tabItems.findIndex(\n (tab) => tab.props.value === currentTabValue\n );\n\n const tabsCount = tabItems.length;\n\n const { containerProps, dragDeltaPct, isDragging } = useHorizontalSwipe({\n itemIndex: activeTabIndex,\n itemCount: tabsCount,\n onSwipeLeft: () => {\n const targetIndex = Math.min(tabsCount - 1, activeTabIndex + 1);\n const nextValue = tabItems[targetIndex]?.props?.value;\n if (nextValue) handleSetActiveTab(nextValue);\n },\n onSwipeRight: () => {\n const targetIndex = Math.max(0, activeTabIndex - 1);\n const nextValue = tabItems[targetIndex]?.props?.value;\n if (nextValue) handleSetActiveTab(nextValue);\n },\n });\n\n const handleSetActiveTab = (tab: string) => {\n setActiveTab(tab);\n\n if (typeof setTabsValues === 'function') {\n setTabsValues((prev) => ({ ...prev, [group!]: tab }));\n }\n };\n\n const contextValue: TabContextType = {\n activeTab: activeTab ?? firstTabValue ?? '',\n setActiveTab: handleSetActiveTab,\n };\n\n return (\n <TabContext.Provider value={contextValue}>\n <div\n className={cn(tabContainerVariant({ variant }), className)}\n {...props}\n >\n {/* Tab Headers */}\n <div className=\"sticky top-36 z-10 flex gap-3 bg-background/70 p-3 backdrop-blur\">\n <TabSelector\n selectedChoice={currentTabValue}\n tabs={tabItems.map((child) => {\n const { label, value, disabled } = child.props;\n const isActive = currentTabValue === value;\n\n return (\n <button\n key={value}\n className={cn(\n 'cursor-pointer rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none',\n !isActive && 'text-neutral/70'\n )}\n data-active={isActive}\n disabled={disabled}\n onClick={() => !disabled && handleSetActiveTab(value)}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${value}`}\n id={`tab-${value}`}\n >\n {label}\n </button>\n );\n })}\n hoverable\n color={TabSelectorColor.TEXT}\n />\n </div>\n {/* Tab Content */}\n {/* Clipper: no overflow; uses clip-path */}\n <div\n className=\"relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]\"\n {...containerProps}\n >\n {/* Track */}\n <div\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={cn(\n 'grid w-full min-w-0',\n isDragging\n ? 'transition-none'\n : 'transition-transform duration-300 ease-in-out'\n )}\n style={{\n gridTemplateColumns: `repeat(${tabItems.length}, 100%)`,\n transform: `translateX(-${activeTabIndex * 100 - (isDragging ? dragDeltaPct : 0)}%)`,\n }}\n >\n {tabItems.map(({ props }, index) => {\n const { value, children } = props;\n const isActive = index === activeTabIndex;\n\n return (\n <div\n key={value}\n role=\"tabpanel\"\n aria-labelledby={`tab-${value}`}\n id={`tabpanel-${value}`}\n aria-hidden={!isActive}\n tabIndex={isActive ? 0 : -1}\n data-active={isActive}\n className={cn(\n 'w-full min-w-0 p-6 opacity-100 transition-opacity duration-300 ease-in-out',\n !isActive && 'pointer-events-none opacity-0' // prevent offscreen interaction\n )}\n >\n <div className=\"flex w-full min-w-0 flex-col items-stretch gap-6\">\n {children}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </TabContext.Provider>\n );\n};\n\n// Create the compound component\nexport const Tab = Object.assign(TabComponent, {\n Item: TabItem,\n});\n\n// Add display name for better debugging\n"],"mappings":"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"}
1
+ {"version":3,"file":"Tab.mjs","names":["contextValue: TabContextType","props","children"],"sources":["../../../../src/components/Tab/Tab.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n Children,\n createContext,\n type HTMLAttributes,\n isValidElement,\n type ReactElement,\n type ReactNode,\n useState,\n} from 'react';\nimport { useHorizontalSwipe } from '../../hooks';\nimport { cn } from '../../utils/cn';\nimport { TabSelector, TabSelectorColor } from '../TabSelector';\nimport { useTabContext } from './TabContext';\n\n// Context for managing tab state\ntype TabContextType = {\n activeTab: string;\n setActiveTab: (tab: string) => void;\n};\n\nconst TabContext = createContext<TabContextType | undefined>(undefined);\n\n// Tab container variants\nconst tabContainerVariant = cva(\n 'relative w-full rounded-lg border border-neutral/20 bg-background/2 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur',\n {\n variants: {\n variant: {\n default: '',\n bordered: 'border-2',\n ghost: 'border-0 bg-transparent shadow-none',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport type TabProps = HTMLAttributes<HTMLDivElement> &\n VariantProps<typeof tabContainerVariant> & {\n defaultTab?: string;\n group?: string;\n children: ReactNode;\n };\n\nexport type TabItemProps = HTMLAttributes<HTMLDivElement> & {\n label: string;\n value: string;\n disabled?: boolean;\n children: ReactNode;\n};\n\n/**\n * TabItem component that represents a single tab\n * Must be used as a child of the Tab component\n */\nconst TabItem = ({ children, ...props }: TabItemProps) => (\n // This component is primarily used for its props by the parent Tab component\n // The actual rendering is handled by the Tab component\n <div {...props}>{children}</div>\n);\n\n// Add display name for better debugging\nTabItem.displayName = 'TabItem';\n\n/**\n * Tab container component that manages tab state and renders tab headers and content\n *\n * Example:\n * ```jsx\n * <Tab defaultTab=\"tab1\">\n * <Tab.Item label=\"First Tab\" value=\"tab1\">\n * Content for first tab\n * </Tab.Item>\n * <Tab.Item label=\"Second Tab\" value=\"tab2\">\n * Content for second tab\n * </Tab.Item>\n * </Tab>\n * ```\n */\nconst TabComponent = ({\n defaultTab,\n group,\n variant,\n children,\n className,\n ...props\n}: TabProps) => {\n // Extract TabItem children to get their props\n const tabItems = Children.toArray(children).filter((child) => {\n return isValidElement(child) && child.type === TabItem;\n }) as ReactElement<TabItemProps>[];\n\n const firstTabValue = tabItems[0]?.props?.value;\n const { tabsValues, setTabsValues } = useTabContext();\n const [activeTab, setActiveTab] = useState(defaultTab ?? firstTabValue ?? '');\n const hasGroup = group && typeof tabsValues === 'object';\n const currentTabValue =\n (hasGroup ? tabsValues?.[group] : activeTab) ?? defaultTab ?? firstTabValue;\n const activeTabIndex = tabItems.findIndex(\n (tab) => tab.props.value === currentTabValue\n );\n\n const tabsCount = tabItems.length;\n\n const { containerProps, dragDeltaPct, isDragging } = useHorizontalSwipe({\n itemIndex: activeTabIndex,\n itemCount: tabsCount,\n onSwipeLeft: () => {\n const targetIndex = Math.min(tabsCount - 1, activeTabIndex + 1);\n const nextValue = tabItems[targetIndex]?.props?.value;\n if (nextValue) handleSetActiveTab(nextValue);\n },\n onSwipeRight: () => {\n const targetIndex = Math.max(0, activeTabIndex - 1);\n const nextValue = tabItems[targetIndex]?.props?.value;\n if (nextValue) handleSetActiveTab(nextValue);\n },\n });\n\n const handleSetActiveTab = (tab: string) => {\n setActiveTab(tab);\n\n if (typeof setTabsValues === 'function') {\n setTabsValues((prev) => ({ ...prev, [group!]: tab }));\n }\n };\n\n const contextValue: TabContextType = {\n activeTab: activeTab ?? firstTabValue ?? '',\n setActiveTab: handleSetActiveTab,\n };\n\n return (\n <TabContext.Provider value={contextValue}>\n <div\n className={cn(tabContainerVariant({ variant }), className)}\n {...props}\n >\n {/* Tab Headers */}\n <div className=\"sticky top-36 z-10 flex gap-3 bg-background/70 p-3 backdrop-blur\">\n <TabSelector\n selectedChoice={currentTabValue}\n tabs={tabItems.map((child) => {\n const { label, value, disabled } = child.props;\n const isActive = currentTabValue === value;\n\n return (\n <button\n key={value}\n className={cn(\n 'cursor-pointer rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none',\n !isActive && 'text-neutral/70'\n )}\n data-active={isActive}\n disabled={disabled}\n onClick={() => !disabled && handleSetActiveTab(value)}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${value}`}\n id={`tab-${value}`}\n type=\"button\"\n >\n {label}\n </button>\n );\n })}\n hoverable\n color={TabSelectorColor.TEXT}\n />\n </div>\n {/* Tab Content */}\n {/* Clipper: no overflow; uses clip-path */}\n <div\n className=\"relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]\"\n {...containerProps}\n >\n {/* Track */}\n <div\n role=\"tablist\"\n aria-orientation=\"horizontal\"\n className={cn(\n 'grid w-full min-w-0',\n isDragging\n ? 'transition-none'\n : 'transition-transform duration-300 ease-in-out'\n )}\n style={{\n gridTemplateColumns: `repeat(${tabItems.length}, 100%)`,\n transform: `translateX(-${activeTabIndex * 100 - (isDragging ? dragDeltaPct : 0)}%)`,\n }}\n >\n {tabItems.map(({ props }, index) => {\n const { value, children } = props;\n const isActive = index === activeTabIndex;\n\n return (\n <div\n key={value}\n role=\"tabpanel\"\n aria-labelledby={`tab-${value}`}\n id={`tabpanel-${value}`}\n aria-hidden={!isActive}\n tabIndex={isActive ? 0 : -1}\n data-active={isActive}\n className={cn(\n 'w-full min-w-0 p-6 opacity-100 transition-opacity duration-300 ease-in-out',\n !isActive && 'pointer-events-none opacity-0' // prevent offscreen interaction\n )}\n >\n <div className=\"flex w-full min-w-0 flex-col items-stretch gap-6\">\n {children}\n </div>\n </div>\n );\n })}\n </div>\n </div>\n </div>\n </TabContext.Provider>\n );\n};\n\n// Create the compound component\nexport const Tab = Object.assign(TabComponent, {\n Item: TabItem,\n});\n\n// Add display name for better debugging\n"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
- import { cn } from "../../utils/cn.mjs";
4
3
  import { useItemSelector } from "../../hooks/useItemSelector.mjs";
4
+ import { cn } from "../../utils/cn.mjs";
5
5
  import { cloneElement, useEffect, useRef } from "react";
6
6
  import { cva } from "class-variance-authority";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -17,7 +17,7 @@ let TabSelectorColor = /* @__PURE__ */ function(TabSelectorColor$1) {
17
17
  TabSelectorColor$1["TEXT"] = "text";
18
18
  return TabSelectorColor$1;
19
19
  }({});
20
- const tabSelectorVariant = cva("relative flex size-full flex-row items-center gap-2", {
20
+ const tabSelectorVariant = cva("relative z-0 flex size-full flex-row items-center gap-2", {
21
21
  variants: { color: {
22
22
  primary: "border-primary text-primary",
23
23
  secondary: "border-secondary text-secondary",
@@ -29,7 +29,7 @@ const tabSelectorVariant = cva("relative flex size-full flex-row items-center ga
29
29
  } },
30
30
  defaultVariants: { color: "primary" }
31
31
  });
32
- const indicatorVariant = cva("absolute z-[-1] rounded-lg duration-300 ease-in-out motion-reduce:transition-none", {
32
+ const indicatorVariant = cva("-z-1 absolute rounded-lg duration-300 ease-in-out motion-reduce:transition-none", {
33
33
  variants: {
34
34
  color: {
35
35
  primary: "bg-primary/10 aria-selected:text-text",
@@ -1 +1 @@
1
- {"version":3,"file":"TabSelector.mjs","names":[],"sources":["../../../../src/components/TabSelector/TabSelector.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n cloneElement,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n useEffect,\n useRef,\n} from 'react';\nimport {\n type ItemSelectorOrientation,\n useItemSelector,\n} from '../../hooks/useItemSelector';\nimport { cn } from '../../utils/cn';\n\nexport enum TabSelectorColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n DESTRUCTIVE = 'destructive',\n NEUTRAL = 'neutral',\n LIGHT = 'light',\n DARK = 'dark',\n TEXT = 'text',\n}\n\nconst tabSelectorVariant = cva(\n 'relative flex size-full flex-row items-center gap-2',\n {\n variants: {\n color: {\n primary: 'border-primary text-primary',\n secondary: 'border-secondary text-secondary',\n destructive: 'border-destructive bg-destructive text-destructive',\n neutral: 'border-neutral text-neutral',\n light: 'border-white text-white',\n dark: 'border-neutral-800 text-neutral-800',\n text: 'border-text text-text',\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n }\n);\n\nconst indicatorVariant = cva(\n 'absolute z-[-1] rounded-lg duration-300 ease-in-out motion-reduce:transition-none',\n {\n variants: {\n color: {\n primary: 'bg-primary/10 aria-selected:text-text',\n secondary: 'bg-secondary/10 aria-selected:text-text',\n destructive: 'bg-destructive/10 aria-selected:text-text',\n neutral: 'bg-neutral/10 aria-selected:text-white/10',\n light: 'bg-white/10 aria-selected:text-black',\n dark: 'bg-neutral-800/10 aria-selected:text-white',\n text: 'bg-text/10 aria-selected:text-text-opposite',\n },\n orientation: {\n horizontal: 'top-0 h-full w-auto transition-[left,width]',\n vertical: 'left-0 h-auto w-full transition-[top,height]',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n);\n\nexport type TabSelectorItemProps = HTMLAttributes<HTMLElement> & {\n key: string | number;\n};\n\nexport type TabSelectorProps<T extends TabSelectorItemProps> = {\n tabs: ReactElement<T>[];\n selectedChoice: T['key'];\n onTabClick?: (choice: T['key']) => void;\n hoverable?: boolean;\n orientation?: ItemSelectorOrientation;\n} & HTMLAttributes<HTMLElement> &\n Omit<VariantProps<typeof tabSelectorVariant>, 'color'> & {\n color?: TabSelectorColor | `${TabSelectorColor}`;\n };\n\n/**\n *\n * Component that allows the user to select one of the provided choices.\n *\n * Example:\n * ```jsx\n * <TabSelector\n * selectedChoice=\"option1\"\n * onTabClick={(choice) => console.log(choice)}\n * hoverable={true}\n * >\n * <Button key=\"option1\"/>\n * <Button key=\"option2\"/>\n * <Button key=\"option3\"/>\n * </TabSelector>\n * ```\n */\nexport const TabSelector = <T extends TabSelectorItemProps>({\n tabs,\n selectedChoice,\n onTabClick,\n color = TabSelectorColor.PRIMARY,\n hoverable = false,\n orientation = 'horizontal',\n className,\n}: TabSelectorProps<T>) => {\n const optionsRefs = useRef<HTMLElement[]>([]);\n const indicatorRef = useRef<HTMLDivElement | null>(null);\n const { choiceIndicatorPosition, calculatePosition } = useItemSelector(\n optionsRefs,\n { isHoverable: hoverable, orientation }\n );\n\n useEffect(() => {\n calculatePosition();\n }, [selectedChoice, tabs]);\n\n return (\n <div\n className={cn(\n tabSelectorVariant({\n color,\n }),\n className\n )}\n aria-orientation={orientation}\n aria-multiselectable=\"false\"\n role=\"tablist\"\n >\n {tabs.map((Tab, index) => {\n const key = Tab.key!;\n\n const isSelected = selectedChoice === key;\n\n return cloneElement(Tab, {\n key: key ?? index,\n role: 'tab',\n onClick: (e: MouseEvent<HTMLElement>) => {\n Tab.props?.onClick?.(e);\n onTabClick?.(key);\n },\n 'aria-selected': isSelected,\n 'data-active': isSelected as unknown as string,\n tabIndex: isSelected ? 0 : -1,\n ref: (el: HTMLElement) => {\n optionsRefs.current[index] = el!;\n },\n } as unknown as T);\n })}\n {choiceIndicatorPosition && (\n <div\n className={cn(\n indicatorVariant({\n color,\n orientation,\n })\n )}\n style={choiceIndicatorPosition}\n ref={indicatorRef}\n key={`${selectedChoice}${JSON.stringify(tabs.map((tab) => tab.key))}`}\n />\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAiBA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,MAAM,qBAAqB,IACzB,uDACA;CACE,UAAU,EACR,OAAO;EACL,SAAS;EACT,WAAW;EACX,aAAa;EACb,SAAS;EACT,OAAO;EACP,MAAM;EACN,MAAM;EACP,EACF;CACD,iBAAiB,EACf,OAAO,WACR;CACF,CACF;AAED,MAAM,mBAAmB,IACvB,qFACA;CACE,UAAU;EACR,OAAO;GACL,SAAS;GACT,WAAW;GACX,aAAa;GACb,SAAS;GACT,OAAO;GACP,MAAM;GACN,MAAM;GACP;EACD,aAAa;GACX,YAAY;GACZ,UAAU;GACX;EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CACF;;;;;;;;;;;;;;;;;;AAkCD,MAAa,eAA+C,EAC1D,MACA,gBACA,YACA,QAAQ,iBAAiB,SACzB,YAAY,OACZ,cAAc,cACd,gBACyB;CACzB,MAAM,cAAc,OAAsB,EAAE,CAAC;CAC7C,MAAM,eAAe,OAA8B,KAAK;CACxD,MAAM,EAAE,yBAAyB,sBAAsB,gBACrD,aACA;EAAE,aAAa;EAAW;EAAa,CACxC;AAED,iBAAgB;AACd,qBAAmB;IAClB,CAAC,gBAAgB,KAAK,CAAC;AAE1B,QACE,qBAAC;EACC,WAAW,GACT,mBAAmB,EACjB,OACD,CAAC,EACF,UACD;EACD,oBAAkB;EAClB,wBAAqB;EACrB,MAAK;aAEJ,KAAK,KAAK,KAAK,UAAU;GACxB,MAAM,MAAM,IAAI;GAEhB,MAAM,aAAa,mBAAmB;AAEtC,UAAO,aAAa,KAAK;IACvB,KAAK,OAAO;IACZ,MAAM;IACN,UAAU,MAA+B;AACvC,SAAI,OAAO,UAAU,EAAE;AACvB,kBAAa,IAAI;;IAEnB,iBAAiB;IACjB,eAAe;IACf,UAAU,aAAa,IAAI;IAC3B,MAAM,OAAoB;AACxB,iBAAY,QAAQ,SAAS;;IAEhC,CAAiB;IAClB,EACD,2BACC,oBAAC;GACC,WAAW,GACT,iBAAiB;IACf;IACA;IACD,CAAC,CACH;GACD,OAAO;GACP,KAAK;KACA,GAAG,iBAAiB,KAAK,UAAU,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GACnE;GAEA"}
1
+ {"version":3,"file":"TabSelector.mjs","names":[],"sources":["../../../../src/components/TabSelector/TabSelector.tsx"],"sourcesContent":["'use client';\n\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport {\n cloneElement,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n useEffect,\n useRef,\n} from 'react';\nimport {\n type ItemSelectorOrientation,\n useItemSelector,\n} from '../../hooks/useItemSelector';\nimport { cn } from '../../utils/cn';\n\nexport enum TabSelectorColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n DESTRUCTIVE = 'destructive',\n NEUTRAL = 'neutral',\n LIGHT = 'light',\n DARK = 'dark',\n TEXT = 'text',\n}\n\nconst tabSelectorVariant = cva(\n 'relative z-0 flex size-full flex-row items-center gap-2',\n {\n variants: {\n color: {\n primary: 'border-primary text-primary',\n secondary: 'border-secondary text-secondary',\n destructive: 'border-destructive bg-destructive text-destructive',\n neutral: 'border-neutral text-neutral',\n light: 'border-white text-white',\n dark: 'border-neutral-800 text-neutral-800',\n text: 'border-text text-text',\n },\n },\n defaultVariants: {\n color: 'primary',\n },\n }\n);\n\nconst indicatorVariant = cva(\n '-z-1 absolute rounded-lg duration-300 ease-in-out motion-reduce:transition-none',\n {\n variants: {\n color: {\n primary: 'bg-primary/10 aria-selected:text-text',\n secondary: 'bg-secondary/10 aria-selected:text-text',\n destructive: 'bg-destructive/10 aria-selected:text-text',\n neutral: 'bg-neutral/10 aria-selected:text-white/10',\n light: 'bg-white/10 aria-selected:text-black',\n dark: 'bg-neutral-800/10 aria-selected:text-white',\n text: 'bg-text/10 aria-selected:text-text-opposite',\n },\n orientation: {\n horizontal: 'top-0 h-full w-auto transition-[left,width]',\n vertical: 'left-0 h-auto w-full transition-[top,height]',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n }\n);\n\nexport type TabSelectorItemProps = HTMLAttributes<HTMLElement> & {\n key: string | number;\n};\n\nexport type TabSelectorProps<T extends TabSelectorItemProps> = {\n tabs: ReactElement<T>[];\n selectedChoice: T['key'];\n onTabClick?: (choice: T['key']) => void;\n hoverable?: boolean;\n orientation?: ItemSelectorOrientation;\n} & HTMLAttributes<HTMLElement> &\n Omit<VariantProps<typeof tabSelectorVariant>, 'color'> & {\n color?: TabSelectorColor | `${TabSelectorColor}`;\n };\n\n/**\n *\n * Component that allows the user to select one of the provided choices.\n *\n * Example:\n * ```jsx\n * <TabSelector\n * selectedChoice=\"option1\"\n * onTabClick={(choice) => console.log(choice)}\n * hoverable={true}\n * >\n * <Button key=\"option1\"/>\n * <Button key=\"option2\"/>\n * <Button key=\"option3\"/>\n * </TabSelector>\n * ```\n */\nexport const TabSelector = <T extends TabSelectorItemProps>({\n tabs,\n selectedChoice,\n onTabClick,\n color = TabSelectorColor.PRIMARY,\n hoverable = false,\n orientation = 'horizontal',\n className,\n}: TabSelectorProps<T>) => {\n const optionsRefs = useRef<HTMLElement[]>([]);\n const indicatorRef = useRef<HTMLDivElement | null>(null);\n const { choiceIndicatorPosition, calculatePosition } = useItemSelector(\n optionsRefs,\n { isHoverable: hoverable, orientation }\n );\n\n useEffect(() => {\n calculatePosition();\n }, [selectedChoice, tabs]);\n\n return (\n <div\n className={cn(\n tabSelectorVariant({\n color,\n }),\n className\n )}\n aria-orientation={orientation}\n aria-multiselectable=\"false\"\n role=\"tablist\"\n >\n {tabs.map((Tab, index) => {\n const key = Tab.key!;\n\n const isSelected = selectedChoice === key;\n\n return cloneElement(Tab, {\n key: key ?? index,\n role: 'tab',\n onClick: (e: MouseEvent<HTMLElement>) => {\n Tab.props?.onClick?.(e);\n onTabClick?.(key);\n },\n 'aria-selected': isSelected,\n 'data-active': isSelected as unknown as string,\n tabIndex: isSelected ? 0 : -1,\n ref: (el: HTMLElement) => {\n optionsRefs.current[index] = el!;\n },\n } as unknown as T);\n })}\n {choiceIndicatorPosition && (\n <div\n className={cn(\n indicatorVariant({\n color,\n orientation,\n })\n )}\n style={choiceIndicatorPosition}\n ref={indicatorRef}\n key={`${selectedChoice}${JSON.stringify(tabs.map((tab) => tab.key))}`}\n />\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAiBA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,MAAM,qBAAqB,IACzB,2DACA;CACE,UAAU,EACR,OAAO;EACL,SAAS;EACT,WAAW;EACX,aAAa;EACb,SAAS;EACT,OAAO;EACP,MAAM;EACN,MAAM;EACP,EACF;CACD,iBAAiB,EACf,OAAO,WACR;CACF,CACF;AAED,MAAM,mBAAmB,IACvB,mFACA;CACE,UAAU;EACR,OAAO;GACL,SAAS;GACT,WAAW;GACX,aAAa;GACb,SAAS;GACT,OAAO;GACP,MAAM;GACN,MAAM;GACP;EACD,aAAa;GACX,YAAY;GACZ,UAAU;GACX;EACF;CACD,iBAAiB,EACf,aAAa,cACd;CACF,CACF;;;;;;;;;;;;;;;;;;AAkCD,MAAa,eAA+C,EAC1D,MACA,gBACA,YACA,QAAQ,iBAAiB,SACzB,YAAY,OACZ,cAAc,cACd,gBACyB;CACzB,MAAM,cAAc,OAAsB,EAAE,CAAC;CAC7C,MAAM,eAAe,OAA8B,KAAK;CACxD,MAAM,EAAE,yBAAyB,sBAAsB,gBACrD,aACA;EAAE,aAAa;EAAW;EAAa,CACxC;AAED,iBAAgB;AACd,qBAAmB;IAClB,CAAC,gBAAgB,KAAK,CAAC;AAE1B,QACE,qBAAC;EACC,WAAW,GACT,mBAAmB,EACjB,OACD,CAAC,EACF,UACD;EACD,oBAAkB;EAClB,wBAAqB;EACrB,MAAK;aAEJ,KAAK,KAAK,KAAK,UAAU;GACxB,MAAM,MAAM,IAAI;GAEhB,MAAM,aAAa,mBAAmB;AAEtC,UAAO,aAAa,KAAK;IACvB,KAAK,OAAO;IACZ,MAAM;IACN,UAAU,MAA+B;AACvC,SAAI,OAAO,UAAU,EAAE;AACvB,kBAAa,IAAI;;IAEnB,iBAAiB;IACjB,eAAe;IACf,UAAU,aAAa,IAAI;IAC3B,MAAM,OAAoB;AACxB,iBAAY,QAAQ,SAAS;;IAEhC,CAAiB;IAClB,EACD,2BACC,oBAAC;GACC,WAAW,GACT,iBAAiB;IACf;IACA;IACD,CAAC,CACH;GACD,OAAO;GACP,KAAK;KACA,GAAG,iBAAiB,KAAK,UAAU,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,GACnE;GAEA"}
@@ -4,8 +4,8 @@ import { cn } from "../../utils/cn.mjs";
4
4
  import { Button } from "../Button/Button.mjs";
5
5
  import { Modal, ModalSize } from "../Modal/Modal.mjs";
6
6
  import { ExpandCollapse } from "../ExpandCollapse/ExpandCollapse.mjs";
7
- import { MoveDiagonal } from "lucide-react";
8
7
  import { useState } from "react";
8
+ import { MoveDiagonal } from "lucide-react";
9
9
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
10
 
11
11
  //#region src/components/Table/Table.tsx
@@ -2,9 +2,9 @@
2
2
 
3
3
  import { useAutocomplete } from "../../hooks/reactQuery.mjs";
4
4
  import { AutoSizedTextArea } from "./AutoSizeTextArea.mjs";
5
+ import { useConfiguration } from "@intlayer/editor-react";
5
6
  import { useEffect, useRef, useState } from "react";
6
7
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
7
- import { useConfiguration } from "@intlayer/editor-react";
8
8
 
9
9
  //#region src/components/TextArea/AutocompleteTextArea.tsx
10
10
  /**
@@ -4,8 +4,8 @@ import { Container } from "../Container/index.mjs";
4
4
  import { Button, ButtonVariant } from "../Button/Button.mjs";
5
5
  import { DropDown } from "../DropDown/index.mjs";
6
6
  import { Modes } from "./types.mjs";
7
- import { CircleDashed, Moon, Sun } from "lucide-react";
8
7
  import { useState } from "react";
8
+ import { CircleDashed, Moon, Sun } from "lucide-react";
9
9
  import { jsx, jsxs } from "react/jsx-runtime";
10
10
 
11
11
  //#region src/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.tsx
@@ -2,8 +2,8 @@
2
2
 
3
3
  import { cn } from "../../utils/cn.mjs";
4
4
  import { Modes } from "./types.mjs";
5
- import { CircleDashed, Moon, Sun } from "lucide-react";
6
5
  import { useState } from "react";
6
+ import { CircleDashed, Moon, Sun } from "lucide-react";
7
7
  import { jsx, jsxs } from "react/jsx-runtime";
8
8
 
9
9
  //#region src/components/ThemeSwitcherDropDown/MobileThemeSwitcher.tsx
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
+ import configuration from "@intlayer/config/built";
3
4
  import { useConfiguration } from "@intlayer/editor-react";
4
5
  import { useQuery } from "@tanstack/react-query";
5
6
  import { getOAuthAPI } from "@intlayer/api";
6
- import configuration from "@intlayer/config/built";
7
7
 
8
8
  //#region src/hooks/useAuth/useOAuth2.ts
9
9
  const useOAuth2 = (intlayerConfiguration) => {