@intlayer/design-system 9.4.3 → 9.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/api/index.mjs +2 -2
- package/dist/esm/api/useUser/index.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +6 -6
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NodeEditor.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -1
- package/dist/esm/components/IDE/MarkDownRender.mjs +1 -1
- package/dist/esm/components/Navbar/MobileNavbar.mjs +14 -3
- package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
- package/dist/esm/components/Navbar/index.mjs +22 -15
- package/dist/esm/components/Navbar/index.mjs.map +1 -1
- package/dist/esm/components/Pattern/GridDistortionPattern.mjs +1 -1
- package/dist/esm/components/Status/index.mjs +1 -1
- package/dist/esm/hooks/useDevice.mjs +105 -37
- package/dist/esm/hooks/useDevice.mjs.map +1 -1
- package/dist/types/api/hooks/ai.d.ts +10 -11
- package/dist/types/api/hooks/ai.d.ts.map +1 -1
- package/dist/types/api/hooks/analytics.d.ts +3 -4
- package/dist/types/api/hooks/analytics.d.ts.map +1 -1
- package/dist/types/api/hooks/asset.d.ts +5 -6
- package/dist/types/api/hooks/asset.d.ts.map +1 -1
- package/dist/types/api/hooks/audit.d.ts +3 -4
- package/dist/types/api/hooks/audit.d.ts.map +1 -1
- package/dist/types/api/hooks/auth.d.ts +25 -26
- package/dist/types/api/hooks/auth.d.ts.map +1 -1
- package/dist/types/api/hooks/bitbucket.d.ts +4 -5
- package/dist/types/api/hooks/bitbucket.d.ts.map +1 -1
- package/dist/types/api/hooks/dictionary.d.ts +8 -9
- package/dist/types/api/hooks/dictionary.d.ts.map +1 -1
- package/dist/types/api/hooks/discussions.d.ts +2 -3
- package/dist/types/api/hooks/discussions.d.ts.map +1 -1
- package/dist/types/api/hooks/editor.d.ts +2 -3
- package/dist/types/api/hooks/editor.d.ts.map +1 -1
- package/dist/types/api/hooks/environment.d.ts +6 -7
- package/dist/types/api/hooks/environment.d.ts.map +1 -1
- package/dist/types/api/hooks/github.d.ts +6 -7
- package/dist/types/api/hooks/github.d.ts.map +1 -1
- package/dist/types/api/hooks/gitlab.d.ts +4 -5
- package/dist/types/api/hooks/gitlab.d.ts.map +1 -1
- package/dist/types/api/hooks/newsletter.d.ts +3 -4
- package/dist/types/api/hooks/newsletter.d.ts.map +1 -1
- package/dist/types/api/hooks/organization.d.ts +11 -12
- package/dist/types/api/hooks/organization.d.ts.map +1 -1
- package/dist/types/api/hooks/project.d.ts +18 -19
- package/dist/types/api/hooks/project.d.ts.map +1 -1
- package/dist/types/api/hooks/reviewer.d.ts +21 -22
- package/dist/types/api/hooks/reviewer.d.ts.map +1 -1
- package/dist/types/api/hooks/search.d.ts +1 -2
- package/dist/types/api/hooks/search.d.ts.map +1 -1
- package/dist/types/api/hooks/showcaseProject.d.ts +8 -9
- package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -1
- package/dist/types/api/hooks/stripe.d.ts +24 -25
- package/dist/types/api/hooks/stripe.d.ts.map +1 -1
- package/dist/types/api/hooks/tag.d.ts +4 -5
- package/dist/types/api/hooks/tag.d.ts.map +1 -1
- package/dist/types/api/hooks/translate.d.ts +4 -5
- package/dist/types/api/hooks/translate.d.ts.map +1 -1
- package/dist/types/api/hooks/user.d.ts +6 -7
- package/dist/types/api/hooks/user.d.ts.map +1 -1
- package/dist/types/api/hooks/utils.d.ts +2 -3
- package/dist/types/api/hooks/utils.d.ts.map +1 -1
- package/dist/types/api/useAuth/useAuth.d.ts +1 -2
- package/dist/types/api/useAuth/useAuth.d.ts.map +1 -1
- package/dist/types/api/useAuth/useOAuth2.d.ts +2 -3
- package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -1
- package/dist/types/api/useAuth/useSession.d.ts +2 -3
- package/dist/types/api/useAuth/useSession.d.ts.map +1 -1
- package/dist/types/api/useIntlayerAPI.d.ts +25 -26
- package/dist/types/api/useIntlayerAPI.d.ts.map +1 -1
- package/dist/types/api/useUser/index.d.ts +1 -2
- package/dist/types/api/useUser/index.d.ts.map +1 -1
- package/dist/types/components/Accordion/Accordion.d.ts +2 -3
- package/dist/types/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/types/components/Avatar/image.d.ts +2 -3
- package/dist/types/components/Avatar/image.d.ts.map +1 -1
- package/dist/types/components/Avatar/index.d.ts +3 -4
- package/dist/types/components/Avatar/index.d.ts.map +1 -1
- package/dist/types/components/Badge/index.d.ts +7 -8
- package/dist/types/components/Badge/index.d.ts.map +1 -1
- package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +2 -2
- package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts.map +1 -1
- package/dist/types/components/Breadcrumb/index.d.ts +3 -4
- package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/types/components/Browser/Browser.content.d.ts +2 -2
- package/dist/types/components/Browser/Browser.content.d.ts.map +1 -1
- package/dist/types/components/Browser/Browser.d.ts +2 -3
- package/dist/types/components/Browser/Browser.d.ts.map +1 -1
- package/dist/types/components/Browser/extractUrlFromSitemap.d.ts +1 -2
- package/dist/types/components/Browser/extractUrlFromSitemap.d.ts.map +1 -1
- package/dist/types/components/Button/Button.d.ts +7 -8
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Carousel/index.d.ts +1 -2
- package/dist/types/components/Carousel/index.d.ts.map +1 -1
- package/dist/types/components/ClickOutsideDiv/index.d.ts +2 -3
- package/dist/types/components/ClickOutsideDiv/index.d.ts.map +1 -1
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -3
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
- package/dist/types/components/Command/index.d.ts +2 -3
- package/dist/types/components/Command/index.d.ts.map +1 -1
- package/dist/types/components/Container/index.d.ts +10 -11
- package/dist/types/components/Container/index.d.ts.map +1 -1
- package/dist/types/components/ContentEditor/ContentEditor.d.ts +2 -3
- package/dist/types/components/ContentEditor/ContentEditor.d.ts.map +1 -1
- package/dist/types/components/ContentEditor/ContentEditorInput.d.ts +2 -3
- package/dist/types/components/ContentEditor/ContentEditorInput.d.ts.map +1 -1
- package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts +2 -3
- package/dist/types/components/ContentEditor/ContentEditorTextArea.d.ts.map +1 -1
- package/dist/types/components/ContentSelector/ContentSelector.d.ts +1 -2
- package/dist/types/components/ContentSelector/ContentSelector.d.ts.map +1 -1
- package/dist/types/components/CopyButton/CopyButton.content.d.ts +2 -2
- package/dist/types/components/CopyButton/CopyButton.content.d.ts.map +1 -1
- package/dist/types/components/CopyButton/index.d.ts +1 -2
- package/dist/types/components/CopyButton/index.d.ts.map +1 -1
- package/dist/types/components/CopyToClipboard/index.d.ts +3 -4
- package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/DictionaryEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/ItemLayout.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/ItemLayout.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/ArrayWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts +2 -3
- package/dist/types/components/DictionaryEditor/NodeWrapper/BooleanWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts +2 -3
- package/dist/types/components/DictionaryEditor/NodeWrapper/NumberWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/PluralWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/SelectWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/SelectWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts +2 -3
- package/dist/types/components/DictionaryEditor/NodeWrapper/StringWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -2
- package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts +3 -4
- package/dist/types/components/DictionaryEditor/NodeWrapper/index.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/SafeHtmlRenderer.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts +4 -5
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts +2 -3
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/object.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts +4 -5
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts +2 -3
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/DictionaryFieldEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/EnumKeyInput.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/JSONEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts +3 -4
- package/dist/types/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts +2 -3
- package/dist/types/components/DictionaryFieldEditor/NodeEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/NodeTypeSelector.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/SaveForm/SaveForm.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/StructureEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts +3 -4
- package/dist/types/components/DictionaryFieldEditor/StructureView/StructureView.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts +2 -3
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts +2 -3
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts +1 -2
- package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
- package/dist/types/components/DropDown/index.d.ts +7 -8
- package/dist/types/components/DropDown/index.d.ts.map +1 -1
- package/dist/types/components/EditableField/EditableFieldInput.d.ts +1 -2
- package/dist/types/components/EditableField/EditableFieldInput.d.ts.map +1 -1
- package/dist/types/components/EditableField/EditableFieldLayout.d.ts +1 -2
- package/dist/types/components/EditableField/EditableFieldLayout.d.ts.map +1 -1
- package/dist/types/components/EditableField/EditableFieldTextArea.d.ts +1 -2
- package/dist/types/components/EditableField/EditableFieldTextArea.d.ts.map +1 -1
- package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts +2 -3
- package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
- package/dist/types/components/Flags/Flag.d.ts +1 -2
- package/dist/types/components/Flags/Flag.d.ts.map +1 -1
- package/dist/types/components/Flags/flags.d.ts +305 -305
- package/dist/types/components/Flags/flags.d.ts.map +1 -1
- package/dist/types/components/Footer/index.d.ts +3 -4
- package/dist/types/components/Footer/index.d.ts.map +1 -1
- package/dist/types/components/Form/Form.d.ts +1 -2
- package/dist/types/components/Form/Form.d.ts.map +1 -1
- package/dist/types/components/Form/FormBase.d.ts +2 -3
- package/dist/types/components/Form/FormBase.d.ts.map +1 -1
- package/dist/types/components/Form/FormControl.d.ts +1 -2
- package/dist/types/components/Form/FormControl.d.ts.map +1 -1
- package/dist/types/components/Form/FormDescription.d.ts +1 -2
- package/dist/types/components/Form/FormDescription.d.ts.map +1 -1
- package/dist/types/components/Form/FormField.d.ts +2 -3
- package/dist/types/components/Form/FormField.d.ts.map +1 -1
- package/dist/types/components/Form/FormItem.d.ts +2 -3
- package/dist/types/components/Form/FormItem.d.ts.map +1 -1
- package/dist/types/components/Form/FormLabel.d.ts +1 -2
- package/dist/types/components/Form/FormLabel.d.ts.map +1 -1
- package/dist/types/components/Form/FormMessage.d.ts +1 -2
- package/dist/types/components/Form/FormMessage.d.ts.map +1 -1
- package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts +1 -2
- package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/CheckboxElement.d.ts +1 -2
- package/dist/types/components/Form/elements/CheckboxElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +1 -2
- package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts +1 -2
- package/dist/types/components/Form/elements/EditableFieldTextAreaElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/FormElement.d.ts +2 -3
- package/dist/types/components/Form/elements/FormElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/FormElementWrapper.d.ts +1 -2
- package/dist/types/components/Form/elements/FormElementWrapper.d.ts.map +1 -1
- package/dist/types/components/Form/elements/InputElement.d.ts +1 -2
- package/dist/types/components/Form/elements/InputElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/InputPasswordElement.d.ts +1 -2
- package/dist/types/components/Form/elements/InputPasswordElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/MultiselectElement.d.ts +1 -2
- package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/OTPElement.d.ts +1 -2
- package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SearchInputElement.d.ts +1 -2
- package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SelectElement.d.ts +1 -2
- package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +1 -2
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/TextAreaElement.d.ts +1 -2
- package/dist/types/components/Form/elements/TextAreaElement.d.ts.map +1 -1
- package/dist/types/components/Form/layout/FormItemLayout.d.ts +2 -3
- package/dist/types/components/Form/layout/FormItemLayout.d.ts.map +1 -1
- package/dist/types/components/Form/layout/FormLabelLayout.d.ts +2 -3
- package/dist/types/components/Form/layout/FormLabelLayout.d.ts.map +1 -1
- package/dist/types/components/Form/layout/RequiredStar.d.ts +1 -2
- package/dist/types/components/Form/layout/RequiredStar.d.ts.map +1 -1
- package/dist/types/components/HTMLRender/HTMLRender.d.ts +2 -3
- package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
- package/dist/types/components/Headers/index.d.ts +7 -8
- package/dist/types/components/Headers/index.d.ts.map +1 -1
- package/dist/types/components/HeightResizer/index.d.ts +1 -2
- package/dist/types/components/HeightResizer/index.d.ts.map +1 -1
- package/dist/types/components/HideShow/index.d.ts +2 -3
- package/dist/types/components/HideShow/index.d.ts.map +1 -1
- package/dist/types/components/IDE/Code.d.ts +2 -3
- package/dist/types/components/IDE/Code.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeBlockClient.d.ts +6 -6
- package/dist/types/components/IDE/CodeBlockClient.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeBlockHighlight.d.ts +1 -2
- package/dist/types/components/IDE/CodeBlockHighlight.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeBlockServer.d.ts +3 -4
- package/dist/types/components/IDE/CodeBlockServer.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeBlockShiki.d.ts +2 -3
- package/dist/types/components/IDE/CodeBlockShiki.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeConditionalRenderer.d.ts +1 -2
- package/dist/types/components/IDE/CodeConditionalRenderer.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeContext.d.ts +6 -7
- package/dist/types/components/IDE/CodeContext.d.ts.map +1 -1
- package/dist/types/components/IDE/CodeFormatSelector.d.ts +1 -2
- package/dist/types/components/IDE/CodeFormatSelector.d.ts.map +1 -1
- package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts +1 -2
- package/dist/types/components/IDE/ContentDeclarationFormatSelector.d.ts.map +1 -1
- package/dist/types/components/IDE/CopyCode.d.ts +1 -2
- package/dist/types/components/IDE/CopyCode.d.ts.map +1 -1
- package/dist/types/components/IDE/FileList.d.ts +2 -3
- package/dist/types/components/IDE/FileList.d.ts.map +1 -1
- package/dist/types/components/IDE/FileTree.d.ts +1 -2
- package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
- package/dist/types/components/IDE/IDE.d.ts +2 -3
- package/dist/types/components/IDE/IDE.d.ts.map +1 -1
- package/dist/types/components/IDE/MarkDownRender.d.ts +1 -2
- package/dist/types/components/IDE/MarkDownRender.d.ts.map +1 -1
- package/dist/types/components/IDE/MonacoCode.d.ts +1 -2
- package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
- package/dist/types/components/IDE/PackageManagerSelector.d.ts +1 -2
- package/dist/types/components/IDE/PackageManagerSelector.d.ts.map +1 -1
- package/dist/types/components/IDE/codeTransformer.d.ts +4 -5
- package/dist/types/components/IDE/codeTransformer.d.ts.map +1 -1
- package/dist/types/components/IDE/createFileTree.d.ts +2 -3
- package/dist/types/components/IDE/createFileTree.d.ts.map +1 -1
- package/dist/types/components/IDE/shikiBundle.d.ts +9 -10
- package/dist/types/components/IDE/shikiBundle.d.ts.map +1 -1
- package/dist/types/components/IDE/shikiLanguages.d.ts +11 -12
- package/dist/types/components/IDE/shikiLanguages.d.ts.map +1 -1
- package/dist/types/components/IDE/shikiThemes.d.ts +3 -4
- package/dist/types/components/IDE/shikiThemes.d.ts.map +1 -1
- package/dist/types/components/InformationTag/index.d.ts +1 -2
- package/dist/types/components/InformationTag/index.d.ts.map +1 -1
- package/dist/types/components/Input/Checkbox.d.ts +5 -6
- package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
- package/dist/types/components/Input/Input.d.ts +5 -6
- package/dist/types/components/Input/Input.d.ts.map +1 -1
- package/dist/types/components/Input/InputPassword.d.ts +1 -2
- package/dist/types/components/Input/InputPassword.d.ts.map +1 -1
- package/dist/types/components/Input/OTPInput.d.ts +13 -14
- package/dist/types/components/Input/OTPInput.d.ts.map +1 -1
- package/dist/types/components/Input/Radio.d.ts +5 -6
- package/dist/types/components/Input/Radio.d.ts.map +1 -1
- package/dist/types/components/Input/SearchInput.d.ts +1 -2
- package/dist/types/components/Input/SearchInput.d.ts.map +1 -1
- package/dist/types/components/KeyboardScreenAdapter/index.d.ts +1 -2
- package/dist/types/components/KeyboardScreenAdapter/index.d.ts.map +1 -1
- package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts +4 -5
- package/dist/types/components/KeyboardShortcut/KeyboardShortcut.d.ts.map +1 -1
- package/dist/types/components/Label/index.d.ts +2 -3
- package/dist/types/components/Label/index.d.ts.map +1 -1
- package/dist/types/components/LanguageBackground/LanguageBackground.d.ts +1 -2
- package/dist/types/components/LanguageBackground/LanguageBackground.d.ts.map +1 -1
- package/dist/types/components/LanguageBackground/LanguageSection.d.ts +2 -3
- package/dist/types/components/LanguageBackground/LanguageSection.d.ts.map +1 -1
- package/dist/types/components/Link/Link.d.ts +10 -11
- package/dist/types/components/Link/Link.d.ts.map +1 -1
- package/dist/types/components/Loader/index.content.d.ts +2 -2
- package/dist/types/components/Loader/index.content.d.ts.map +1 -1
- package/dist/types/components/Loader/index.d.ts +2 -3
- package/dist/types/components/Loader/index.d.ts.map +1 -1
- package/dist/types/components/Loader/spinner.d.ts +1 -2
- package/dist/types/components/Loader/spinner.d.ts.map +1 -1
- package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts +2 -3
- package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.d.ts.map +1 -1
- package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts +2 -3
- package/dist/types/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.d.ts.map +1 -1
- package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts +2 -3
- package/dist/types/components/LocaleSwitcherDropDown/LocaleSwitcher.d.ts.map +1 -1
- package/dist/types/components/Logo/Logo.d.ts +2 -3
- package/dist/types/components/Logo/Logo.d.ts.map +1 -1
- package/dist/types/components/Logo/LogoTextOnly.d.ts +1 -2
- package/dist/types/components/Logo/LogoTextOnly.d.ts.map +1 -1
- package/dist/types/components/Logo/LogoWithText.d.ts +1 -2
- package/dist/types/components/Logo/LogoWithText.d.ts.map +1 -1
- package/dist/types/components/Logo/LogoWithTextBelow.d.ts +2 -3
- package/dist/types/components/Logo/LogoWithTextBelow.d.ts.map +1 -1
- package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts +1 -2
- package/dist/types/components/MarkDownRender/MarkDownIframe.d.ts.map +1 -1
- package/dist/types/components/MarkDownRender/MarkDownRender.d.ts +4 -4
- package/dist/types/components/MarkDownRender/MarkDownRender.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/extensions.d.ts +1 -2
- package/dist/types/components/MarkdownEditor/extensions.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/generative/AICompletionCommands.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/generative/AISelector.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/generative/AISelectorCommands.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/generative/GenerativeMenuSwitch.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts +3 -4
- package/dist/types/components/MarkdownEditor/generative/useAICompletion.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/imageUpload.d.ts +3 -4
- package/dist/types/components/MarkdownEditor/imageUpload.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts +2 -2
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble-item.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts +3 -3
- package/dist/types/components/MarkdownEditor/novel/components/editor-bubble.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts +3 -3
- package/dist/types/components/MarkdownEditor/novel/components/editor-command-item.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts +4 -5
- package/dist/types/components/MarkdownEditor/novel/components/editor-command.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts +4 -5
- package/dist/types/components/MarkdownEditor/novel/components/editor.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts +6 -7
- package/dist/types/components/MarkdownEditor/novel/extensions/ai-highlight.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/novel/extensions/code-block-shiki.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts +1 -2
- package/dist/types/components/MarkdownEditor/novel/extensions/image-resizer.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts +4 -4
- package/dist/types/components/MarkdownEditor/novel/extensions/slash-command.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts +6 -7
- package/dist/types/components/MarkdownEditor/novel/plugins/upload-images.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts +4 -5
- package/dist/types/components/MarkdownEditor/novel/utils/atoms.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts +4 -5
- package/dist/types/components/MarkdownEditor/novel/utils/index.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/selectors/ColorSelector.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts +1 -2
- package/dist/types/components/MarkdownEditor/selectors/LinkSelector.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/selectors/NodeSelector.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts +1 -2
- package/dist/types/components/MarkdownEditor/selectors/TextButtons.d.ts.map +1 -1
- package/dist/types/components/MarkdownEditor/slashCommand.d.ts +2 -3
- package/dist/types/components/MarkdownEditor/slashCommand.d.ts.map +1 -1
- package/dist/types/components/MaxHeightSmoother/index.d.ts +1 -2
- package/dist/types/components/MaxHeightSmoother/index.d.ts.map +1 -1
- package/dist/types/components/MaxWidthSmoother/index.d.ts +1 -2
- package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
- package/dist/types/components/Modal/Modal.d.ts +2 -3
- package/dist/types/components/Modal/Modal.d.ts.map +1 -1
- package/dist/types/components/Navbar/Burger.d.ts +1 -2
- package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
- package/dist/types/components/Navbar/DesktopNavbar.d.ts +1 -2
- package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
- package/dist/types/components/Navbar/MobileNavbar.d.ts +8 -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/Navbar/useNavigation.d.ts +1 -2
- package/dist/types/components/Navbar/useNavigation.d.ts.map +1 -1
- package/dist/types/components/Pagination/NumberItemsSelector.d.ts +2 -3
- package/dist/types/components/Pagination/NumberItemsSelector.d.ts.map +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +5 -6
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts +2 -3
- package/dist/types/components/Pagination/ShowingResultsNumberItems.d.ts.map +1 -1
- package/dist/types/components/Pattern/DotPattern.d.ts +1 -2
- package/dist/types/components/Pattern/DotPattern.d.ts.map +1 -1
- package/dist/types/components/Pattern/GridDistortionPattern.d.ts +1 -2
- package/dist/types/components/Pattern/GridDistortionPattern.d.ts.map +1 -1
- package/dist/types/components/Pattern/GridPattern.d.ts +1 -2
- package/dist/types/components/Pattern/GridPattern.d.ts.map +1 -1
- package/dist/types/components/Pattern/SpotLight.d.ts +1 -2
- package/dist/types/components/Pattern/SpotLight.d.ts.map +1 -1
- package/dist/types/components/Popover/dynamic.d.ts +1 -2
- package/dist/types/components/Popover/dynamic.d.ts.map +1 -1
- package/dist/types/components/Popover/static.d.ts +8 -8
- package/dist/types/components/Popover/static.d.ts.map +1 -1
- package/dist/types/components/PressableSpan/PressableSpan.d.ts +1 -2
- package/dist/types/components/PressableSpan/PressableSpan.d.ts.map +1 -1
- package/dist/types/components/RightDrawer/RightDrawer.d.ts +1 -2
- package/dist/types/components/RightDrawer/RightDrawer.d.ts.map +1 -1
- package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts +1 -2
- package/dist/types/components/RightDrawer/isElementAtTopAndNotCovered.d.ts.map +1 -1
- package/dist/types/components/RightDrawer/useRightDrawer.d.ts +4 -5
- package/dist/types/components/RightDrawer/useRightDrawer.d.ts.map +1 -1
- package/dist/types/components/Select/Multiselect.d.ts +1 -2
- package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts +5 -6
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/DiscordLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/DiscordLogo.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/FacebookLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/FacebookLogo.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/InstagramLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/InstagramLogo.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/ProductHuntLogo.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/TiktokLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/TiktokLogo.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/XLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/XLogo.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/YoutubeLogo.d.ts +1 -2
- package/dist/types/components/SocialNetworks/YoutubeLogo.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/Status/index.d.ts +1 -2
- package/dist/types/components/Status/index.d.ts.map +1 -1
- package/dist/types/components/Steps/index.d.ts +2 -3
- package/dist/types/components/Steps/index.d.ts.map +1 -1
- package/dist/types/components/Steps/steps.content.d.ts +2 -2
- package/dist/types/components/Steps/steps.content.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +11 -12
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +2 -3
- package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts +1 -2
- package/dist/types/components/SwitchSelector/useSwitchSelector.d.ts.map +1 -1
- package/dist/types/components/Tab/Tab.d.ts +3 -4
- package/dist/types/components/Tab/Tab.d.ts.map +1 -1
- package/dist/types/components/Tab/TabContext.d.ts +3 -4
- package/dist/types/components/Tab/TabContext.d.ts.map +1 -1
- package/dist/types/components/TabSelector/TabSelector.d.ts +4 -5
- package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
- package/dist/types/components/Table/ExpandButton.d.ts +1 -2
- package/dist/types/components/Table/ExpandButton.d.ts.map +1 -1
- package/dist/types/components/Table/SmartTable.d.ts +1 -2
- package/dist/types/components/Table/SmartTable.d.ts.map +1 -1
- package/dist/types/components/Table/Table.d.ts +2 -3
- package/dist/types/components/Table/Table.d.ts.map +1 -1
- package/dist/types/components/Table/TableElements.d.ts +4 -5
- package/dist/types/components/Table/TableElements.d.ts.map +1 -1
- package/dist/types/components/Table/useTableWidths.d.ts +1 -2
- package/dist/types/components/Table/useTableWidths.d.ts.map +1 -1
- package/dist/types/components/Tag/index.d.ts +6 -7
- package/dist/types/components/Tag/index.d.ts.map +1 -1
- package/dist/types/components/TechLogo/TechLogo.d.ts +2 -3
- package/dist/types/components/TechLogo/TechLogo.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Adonis.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Adonis.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Angular.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Angular.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Anthropic.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Anthropic.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Astro.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Astro.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Atlassian.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Atlassian.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Bitbucket.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Bitbucket.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/ChatGPT.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/ChatGPT.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Claude.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Claude.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/DeepSeek.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/DeepSeek.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Elysia.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Elysia.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Express.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Express.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Fastify.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Fastify.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Gemini.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Gemini.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/GitHub.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/GitHub.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/GitLab.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/GitLab.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Google.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Google.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/GoogleAI.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/GoogleAI.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Grok.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Grok.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/HTMX.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/HTMX.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Hono.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Hono.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/LinkedIn.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/LinkedIn.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Lit.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Lit.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Lynx.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Lynx.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Microsoft.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Microsoft.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Mistral.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Mistral.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/NestJS.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/NestJS.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Nextjs.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Nextjs.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Node.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Node.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Nuxt.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Nuxt.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Ollama.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Ollama.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/OpenAI.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/OpenAI.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Perplexity.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Perplexity.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Preact.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Preact.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Reactjs.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Reactjs.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Remix.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Remix.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Solid.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Solid.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Svelte.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Svelte.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Tanstack.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Tanstack.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Vanilla.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Vanilla.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Vitejs.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Vitejs.d.ts.map +1 -1
- package/dist/types/components/TechLogo/logos/Vuejs.d.ts +1 -2
- package/dist/types/components/TechLogo/logos/Vuejs.d.ts.map +1 -1
- package/dist/types/components/TechLogo/types.d.ts +1 -2
- package/dist/types/components/TechLogo/types.d.ts.map +1 -1
- package/dist/types/components/Terminal/Terminal.d.ts +2 -3
- package/dist/types/components/Terminal/Terminal.d.ts.map +1 -1
- package/dist/types/components/TextArea/AutoSizeTextArea.d.ts +2 -3
- package/dist/types/components/TextArea/AutoSizeTextArea.d.ts.map +1 -1
- package/dist/types/components/TextArea/AutocompleteTextArea.d.ts +2 -3
- package/dist/types/components/TextArea/AutocompleteTextArea.d.ts.map +1 -1
- package/dist/types/components/TextArea/ContentEditableTextArea.d.ts +4 -5
- package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
- package/dist/types/components/TextArea/TextArea.d.ts +2 -3
- package/dist/types/components/TextArea/TextArea.d.ts.map +1 -1
- package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts +1 -2
- package/dist/types/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.d.ts.map +1 -1
- package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts +1 -2
- package/dist/types/components/ThemeSwitcherDropDown/MobileThemeSwitcher.d.ts.map +1 -1
- package/dist/types/components/ThemeSwitcherDropDown/types.d.ts +1 -2
- package/dist/types/components/ThemeSwitcherDropDown/types.d.ts.map +1 -1
- package/dist/types/components/Toaster/Toast.d.ts +10 -11
- package/dist/types/components/Toaster/Toast.d.ts.map +1 -1
- package/dist/types/components/Toaster/Toaster.d.ts +1 -2
- package/dist/types/components/Toaster/Toaster.d.ts.map +1 -1
- package/dist/types/components/Toaster/useToast.d.ts +2 -2
- package/dist/types/components/Toaster/useToast.d.ts.map +1 -1
- package/dist/types/components/WithResizer/index.d.ts +1 -2
- package/dist/types/components/WithResizer/index.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +2 -2
- package/dist/types/hooks/useDevice.d.ts +27 -17
- package/dist/types/hooks/useDevice.d.ts.map +1 -1
- package/dist/types/hooks/useGetElementById.d.ts +1 -2
- package/dist/types/hooks/useGetElementById.d.ts.map +1 -1
- package/dist/types/hooks/useGetElementOrWindow.d.ts +1 -2
- package/dist/types/hooks/useGetElementOrWindow.d.ts.map +1 -1
- package/dist/types/hooks/useHorizontalSwipe.d.ts +3 -4
- package/dist/types/hooks/useHorizontalSwipe.d.ts.map +1 -1
- package/dist/types/hooks/useIsMounted.d.ts +1 -2
- package/dist/types/hooks/useIsMounted.d.ts.map +1 -1
- package/dist/types/hooks/useItemSelector.d.ts +2 -3
- package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
- package/dist/types/hooks/useKeyboardDetector.d.ts +1 -2
- package/dist/types/hooks/useKeyboardDetector.d.ts.map +1 -1
- package/dist/types/hooks/usePersistedStore.d.ts +1 -2
- package/dist/types/hooks/usePersistedStore.d.ts.map +1 -1
- package/dist/types/hooks/useScreenWidth.d.ts +1 -2
- package/dist/types/hooks/useScreenWidth.d.ts.map +1 -1
- package/dist/types/hooks/useScrollBlockage/index.d.ts +1 -2
- package/dist/types/hooks/useScrollBlockage/index.d.ts.map +1 -1
- package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts +2 -3
- package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts.map +1 -1
- package/dist/types/hooks/useScrollDetection.d.ts +1 -2
- package/dist/types/hooks/useScrollDetection.d.ts.map +1 -1
- package/dist/types/hooks/useScrollY.d.ts +1 -2
- package/dist/types/hooks/useScrollY.d.ts.map +1 -1
- package/dist/types/hooks/useSearch.d.ts +1 -2
- package/dist/types/hooks/useSearch.d.ts.map +1 -1
- package/dist/types/hooks/useStickToBottom.d.ts +2 -3
- package/dist/types/hooks/useStickToBottom.d.ts.map +1 -1
- package/dist/types/libs/auth.d.ts +2 -3
- package/dist/types/libs/auth.d.ts.map +1 -1
- package/dist/types/providers/DeferredAuthProvider.d.ts +2 -3
- package/dist/types/providers/DeferredAuthProvider.d.ts.map +1 -1
- package/dist/types/providers/ReactQueryProvider.d.ts +2 -3
- package/dist/types/providers/ReactQueryProvider.d.ts.map +1 -1
- package/dist/types/providers/ThemeProvider.d.ts +5 -6
- package/dist/types/providers/ThemeProvider.d.ts.map +1 -1
- package/dist/types/routes.d.ts +319 -320
- package/dist/types/routes.d.ts.map +1 -1
- package/dist/types/structured-data/buildAuthorJsonLd.d.ts +2 -3
- package/dist/types/structured-data/buildAuthorJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts +3 -4
- package/dist/types/structured-data/buildBreadcrumbsJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts +4 -5
- package/dist/types/structured-data/buildCreativeWorkJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildFAQPageJsonLd.d.ts +3 -4
- package/dist/types/structured-data/buildFAQPageJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildItemListJsonLd.d.ts +3 -4
- package/dist/types/structured-data/buildItemListJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildOrganizationJsonLd.d.ts +2 -3
- package/dist/types/structured-data/buildOrganizationJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildProductJsonLd.d.ts +3 -4
- package/dist/types/structured-data/buildProductJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts +2 -3
- package/dist/types/structured-data/buildSoftwareApplicationJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/buildWebsiteJsonLd.d.ts +2 -3
- package/dist/types/structured-data/buildWebsiteJsonLd.d.ts.map +1 -1
- package/dist/types/structured-data/normalizeJsonLdUrl.d.ts +2 -3
- package/dist/types/structured-data/normalizeJsonLdUrl.d.ts.map +1 -1
- package/dist/types/utils/observeScrollExtent.d.ts +1 -2
- package/dist/types/utils/observeScrollExtent.d.ts.map +1 -1
- package/dist/types/utils/scheduleFrameTask.d.ts +1 -2
- package/dist/types/utils/scheduleFrameTask.d.ts.map +1 -1
- package/package.json +30 -35
package/dist/esm/api/index.mjs
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { useAiAPI, useAnalyticsAPI, useAssetAPI, useAuditAPI, useBitbucketAPI, useDictionaryAPI, useEditorAPI, useEnvironmentAPI, useGithubAPI, useGitlabAPI, useIntlayerAuth, useIntlayerOAuth, useIntlayerOAuthOptions, useNewsletterAPI, useOAuthAPI, useOrganizationAPI, useProjectAPI, useReviewerAPI, useSearchAPI, useShowcaseProjectAPI, useStripeAPI, useTagAPI, useTranslateAPI, useUserAPI } from "./useIntlayerAPI.mjs";
|
|
2
|
-
import { useAddPasskey, useAskResetPassword, useChangePassword, useDeletePasskey, useDeleteSSOProvider, useDisableTwoFactor, useEnableTwoFactor, useGetUserByAccount, useGetVerifyEmailStatus, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useRegister, useRegisterSSO, useResetPassword, useSignInMagicLink, useSignInPasskey, useSignInSSO, useUnlinkAccount, useVerifyBackupCode, useVerifyEmail, useVerifyTotp } from "./hooks/auth.mjs";
|
|
3
2
|
import { useOAuth2 } from "./useAuth/useOAuth2.mjs";
|
|
4
3
|
import { useSession } from "./useAuth/useSession.mjs";
|
|
5
4
|
import { useAuth } from "./useAuth/useAuth.mjs";
|
|
6
|
-
import { useUser } from "./useUser/index.mjs";
|
|
7
5
|
import { useAskDocQuestion, useAuditContentDeclaration, useAuditContentDeclarationField, useAuditContentDeclarationMetadata, useAuditTag, useAutocomplete, useChat, useCustomQuery, useGetAIStats, useTranslateJSONDeclaration } from "./hooks/ai.mjs";
|
|
8
6
|
import { useGetAnalyticsAudience, useGetContentStats, useGetExperimentResults } from "./hooks/analytics.mjs";
|
|
9
7
|
import { useDeleteAsset, useGetAssetById, useGetAssets, useUpdateAsset, useUploadAsset } from "./hooks/asset.mjs";
|
|
10
8
|
import { useAuditScan, useGetRecursiveAuditStatus, useStartRecursiveAudit } from "./hooks/audit.mjs";
|
|
9
|
+
import { useAddPasskey, useAskResetPassword, useChangePassword, useDeletePasskey, useDeleteSSOProvider, useDisableTwoFactor, useEnableTwoFactor, useGetUserByAccount, useGetVerifyEmailStatus, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useRegister, useRegisterSSO, useResetPassword, useSignInMagicLink, useSignInPasskey, useSignInSSO, useUnlinkAccount, useVerifyBackupCode, useVerifyEmail, useVerifyTotp } from "./hooks/auth.mjs";
|
|
11
10
|
import { useBitbucketAuth, useBitbucketCheckConfig, useBitbucketGetConfigFile, useBitbucketRepos } from "./hooks/bitbucket.mjs";
|
|
12
11
|
import { useAddDictionary, useDeleteDictionary, useGetDictionaries, useGetDictionariesKeys, useGetDictionary, useInfiniteGetDictionaries, usePushDictionaries, useUpdateDictionary } from "./hooks/dictionary.mjs";
|
|
13
12
|
import { useGetDiscussions, useGetDiscussionsData } from "./hooks/discussions.mjs";
|
|
@@ -25,5 +24,6 @@ import { useAcceptAffiliateInvitation, useCancelSubscription, useCreatePortalSes
|
|
|
25
24
|
import { useAddTag, useDeleteTag, useGetTags, useUpdateTag } from "./hooks/tag.mjs";
|
|
26
25
|
import { useFillAllTranslations, usePauseTranslationJob, useResumeTranslationJob, useStopTranslationJob } from "./hooks/translate.mjs";
|
|
27
26
|
import { useCreateUser, useDeleteUser, useGetUserById, useGetUsers, useUpdateUser, useUploadUserAvatar } from "./hooks/user.mjs";
|
|
27
|
+
import { useUser } from "./useUser/index.mjs";
|
|
28
28
|
|
|
29
29
|
export { useAcceptAffiliateInvitation, useAddDictionary, useAddEnvironment, useAddNewAccessKey, useAddOrganization, useAddOrganizationMember, useAddPasskey, useAddProject, useAddTag, useAiAPI, useAnalyticsAPI, useAskDocQuestion, useAskResetPassword, useAssetAPI, useAuditAPI, useAuditContentDeclaration, useAuditContentDeclarationField, useAuditContentDeclarationMetadata, useAuditScan, useAuditTag, useAuth, useAutocomplete, useBitbucketAPI, useBitbucketAuth, useBitbucketCheckConfig, useBitbucketGetConfigFile, useBitbucketRepos, useCancelSubscription, useChangePassword, useChat, useContactReviewer, useCreateMission, useCreatePortalSession, useCreatePromoCode, useCreateUser, useCustomQuery, useDeleteAccessKey, useDeleteAsset, useDeleteDictionary, useDeleteEnvironment, useDeleteOrganization, useDeleteOrganizationById, useDeletePasskey, useDeleteProject, useDeleteProjectById, useDeletePromoCode, useDeleteReviewerProfile, useDeleteSSOProvider, useDeleteShowcaseProject, useDeleteTag, useDeleteUser, useDictionaryAPI, useDisableTwoFactor, useEditorAPI, useEnableTwoFactor, useEnvironmentAPI, useEstimateMission, useFillAllTranslations, useGetAIStats, useGetAdminReviewers, useGetAffiliate, useGetAffiliateAccountSession, useGetAffiliateById, useGetAffiliateInvitation, useGetAffiliateInvitations, useGetAffiliateOnboardingLink, useGetAffiliatePromoCode, useGetAffiliateStats, useGetAffiliates, useGetAnalyticsAudience, useGetAssetById, useGetAssets, useGetCIConfig, useGetChatHistory, useGetContentStats, useGetDictionaries, useGetDictionariesKeys, useGetDictionary, useGetDiscussions, useGetDiscussionsData, useGetEditorDictionaries, useGetExperimentResults, useGetInvoices, useGetMissionById, useGetMyMissions, useGetMyReviewerProfile, useGetNewsletterStatus, useGetOrganizations, useGetOtherShowcaseProjects, useGetPaymentMethod, useGetPricing, useGetProjectInsights, useGetProjects, useGetPromoCodeById, useGetPromoCodes, useGetRecursiveAuditStatus, useGetReviewerById, useGetReviewerMarketplace, useGetReviewerPriceDistribution, useGetReviewerReviews, useGetShowcaseProjectById, useGetShowcaseProjects, useGetSubscription, useGetTags, useGetUserByAccount, useGetUserById, useGetUsers, useGetVerifyEmailStatus, useGithubAPI, useGithubAuth, useGithubCheckConfig, useGithubGetAuthUrl, useGithubGetConfigFile, useGithubRepos, useGithubToken, useGitlabAPI, useGitlabAuth, useGitlabCheckConfig, useGitlabGetConfigFile, useGitlabProjects, useGrantAffiliateAccess, useInfiniteGetDictionaries, useIntlayerAuth, useIntlayerOAuth, useIntlayerOAuthOptions, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useMigrateEnvironment, useNewsletterAPI, useOAuth2, useOAuthAPI, useOrganizationAPI, usePauseTranslationJob, useProjectAPI, usePushCIConfig, usePushDictionaries, usePushProjectConfiguration, useRefreshAccessKey, useRegister, useRegisterAsReviewer, useRegisterSSO, useResetPassword, useResetToProductionEnvironment, useResumeTranslationJob, useReviewerAPI, useSearchAPI, useSearchDoc, useSelectEnvironment, useSelectOrganization, useSelectProject, useSendAffiliateInvitation, useSendReviewerMessage, useSession, useShowcaseProjectAPI, useSignInMagicLink, useSignInPasskey, useSignInSSO, useStartRecursiveAudit, useStopTranslationJob, useStripeAPI, useSubmitReview, useSubmitShowcaseProject, useSubscribeToNewsletter, useTagAPI, useToggleShowcaseDownvote, useToggleShowcaseUpvote, useTranslateAPI, useTranslateJSONDeclaration, useTriggerBuild, useTriggerWebhook, useUnlinkAccount, useUnselectOrganization, useUnselectProject, useUnsubscribeFromNewsletter, useUpdateAffiliateStatus, useUpdateAsset, useUpdateDictionary, useUpdateEnvironment, useUpdateMemberAccess, useUpdateMissionStatus, useUpdateOrganization, useUpdateOrganizationMailerConfig, useUpdateOrganizationMembers, useUpdateOrganizationMembersById, useUpdateProject, useUpdateProjectMembers, useUpdatePromoCode, useUpdateReviewerProfile, useUpdateShowcaseProject, useUpdateTag, useUpdateUser, useUploadAsset, useUploadReviewerCoverPicture, useUploadReviewerMainPicture, useUploadUserAvatar, useUser, useUserAPI, useValidateReviewerProfile, useVerifyBackupCode, useVerifyEmail, useVerifyTotp, useWriteDictionary };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { Button } from "../Button/Button.mjs";
|
|
4
3
|
import { useUser } from "../../api/useUser/index.mjs";
|
|
4
|
+
import { Button } from "../Button/Button.mjs";
|
|
5
5
|
import { AutoCompleteTextarea } from "../TextArea/AutocompleteTextArea.mjs";
|
|
6
6
|
import { useEffect, useState } from "react";
|
|
7
7
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { useAuditContentDeclarationField } from "../../../api/hooks/ai.mjs";
|
|
3
4
|
import { Loader } from "../../Loader/index.mjs";
|
|
4
5
|
import { Button } from "../../Button/Button.mjs";
|
|
5
6
|
import { Accordion } from "../../Accordion/Accordion.mjs";
|
|
@@ -7,7 +8,6 @@ import { Container } from "../../Container/index.mjs";
|
|
|
7
8
|
import { ContentEditorInput as ContentEditorInput$1 } from "../../ContentEditor/ContentEditorInput.mjs";
|
|
8
9
|
import { ContentEditorTextArea as ContentEditorTextArea$1 } from "../../ContentEditor/ContentEditorTextArea.mjs";
|
|
9
10
|
import { SwitchSelector } from "../../SwitchSelector/SwitchSelector.mjs";
|
|
10
|
-
import { useAuditContentDeclarationField } from "../../../api/hooks/ai.mjs";
|
|
11
11
|
import { renameKey } from "./object.mjs";
|
|
12
12
|
import { Label } from "../../Label/index.mjs";
|
|
13
13
|
import { useLocaleSwitcherContent } from "../../LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs";
|
|
@@ -16,9 +16,9 @@ import { SafeHtmlRenderer } from "./SafeHtmlRenderer.mjs";
|
|
|
16
16
|
import { Fragment, Suspense, lazy, memo, useState } from "react";
|
|
17
17
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
18
|
import { Plus, Trash, WandSparkles } from "lucide-react";
|
|
19
|
+
import { useConfiguration, useEditedContent } from "@intlayer/editor-react";
|
|
19
20
|
import { useIntlayer, useLocale } from "react-intlayer";
|
|
20
21
|
import { getLocaleName } from "@intlayer/core/localization";
|
|
21
|
-
import { useConfiguration, useEditedContent } from "@intlayer/editor-react";
|
|
22
22
|
import { getEmptyNode, getNodeType } from "@intlayer/core/dictionaryManipulator";
|
|
23
23
|
import * as NodeTypes from "@intlayer/types/nodeType";
|
|
24
24
|
import { camelCaseToSentence } from "@intlayer/config/client";
|
package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { Button } from "../../Button/Button.mjs";
|
|
4
3
|
import { useSession } from "../../../api/useAuth/useSession.mjs";
|
|
5
4
|
import { useAddDictionary } from "../../../api/hooks/dictionary.mjs";
|
|
6
5
|
import { useGetProjects } from "../../../api/hooks/project.mjs";
|
|
6
|
+
import { Button } from "../../Button/Button.mjs";
|
|
7
7
|
import { MultiSelect } from "../../Select/Multiselect.mjs";
|
|
8
8
|
import { Select } from "../../Select/Select.mjs";
|
|
9
9
|
import { InputElement } from "../../Form/elements/InputElement.mjs";
|
package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { cn } from "../../../utils/cn.mjs";
|
|
4
|
-
import { Loader } from "../../Loader/index.mjs";
|
|
5
|
-
import { Button } from "../../Button/Button.mjs";
|
|
6
|
-
import { Container } from "../../Container/index.mjs";
|
|
7
|
-
import { Checkbox } from "../../Input/Checkbox.mjs";
|
|
8
|
-
import { Input } from "../../Input/Input.mjs";
|
|
9
4
|
import { useSession } from "../../../api/useAuth/useSession.mjs";
|
|
10
5
|
import { useAuditContentDeclarationMetadata } from "../../../api/hooks/ai.mjs";
|
|
11
6
|
import { useGetDictionaries } from "../../../api/hooks/dictionary.mjs";
|
|
12
7
|
import { useGetProjects } from "../../../api/hooks/project.mjs";
|
|
13
8
|
import { useGetTags } from "../../../api/hooks/tag.mjs";
|
|
9
|
+
import { Loader } from "../../Loader/index.mjs";
|
|
10
|
+
import { Button } from "../../Button/Button.mjs";
|
|
11
|
+
import { Container } from "../../Container/index.mjs";
|
|
12
|
+
import { Checkbox } from "../../Input/Checkbox.mjs";
|
|
13
|
+
import { Input } from "../../Input/Input.mjs";
|
|
14
14
|
import { MultiSelect } from "../../Select/Multiselect.mjs";
|
|
15
15
|
import { Select } from "../../Select/Select.mjs";
|
|
16
16
|
import { FormItem } from "../../Form/FormItem.mjs";
|
|
@@ -30,8 +30,8 @@ import { useDictionaryDetailsSchema } from "./useDictionaryDetailsSchema.mjs";
|
|
|
30
30
|
import { useEffect, useMemo, useState } from "react";
|
|
31
31
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
32
32
|
import { WandSparkles } from "lucide-react";
|
|
33
|
-
import { useIntlayer } from "react-intlayer";
|
|
34
33
|
import { useEditedContent } from "@intlayer/editor-react";
|
|
34
|
+
import { useIntlayer } from "react-intlayer";
|
|
35
35
|
import { useWatch } from "react-hook-form";
|
|
36
36
|
import { AnimatePresence, motion } from "framer-motion";
|
|
37
37
|
|
|
@@ -13,8 +13,8 @@ import { StructureEditor } from "./StructureEditor.mjs";
|
|
|
13
13
|
import { useEffect, useState } from "react";
|
|
14
14
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
15
|
import { ArrowLeft } from "lucide-react";
|
|
16
|
-
import { useIntlayer } from "react-intlayer";
|
|
17
16
|
import { useConfiguration, useDictionariesRecordActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
|
|
17
|
+
import { useIntlayer } from "react-intlayer";
|
|
18
18
|
|
|
19
19
|
//#region src/components/DictionaryFieldEditor/DictionaryFieldEditor.tsx
|
|
20
20
|
const DictionaryFieldEditor = ({ dictionary, onClickDictionaryList, isDarkMode, mode, onDelete, onSave, showReturnButton = true, rightContent }) => {
|
|
@@ -5,8 +5,8 @@ import { getIsEditableSection } from "../getIsEditableSection.mjs";
|
|
|
5
5
|
import { useState } from "react";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { ChevronRight, Plus } from "lucide-react";
|
|
8
|
-
import { useIntlayer } from "react-intlayer";
|
|
9
8
|
import { useEditedContentActions, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
|
|
9
|
+
import { useIntlayer } from "react-intlayer";
|
|
10
10
|
import { getContentNodeByKeyPath, getEmptyNode, getNodeType } from "@intlayer/core/dictionaryManipulator";
|
|
11
11
|
import * as NodeTypes from "@intlayer/types/nodeType";
|
|
12
12
|
import { isSameKeyPath } from "@intlayer/core/utils";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { Container } from "../Container/index.mjs";
|
|
4
3
|
import { useGetDictionaries } from "../../api/hooks/dictionary.mjs";
|
|
4
|
+
import { Container } from "../Container/index.mjs";
|
|
5
5
|
import { LocaleSwitcherContent } from "../LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs";
|
|
6
6
|
import { TextEditorContainer } from "./ContentEditorView/TextEditor.mjs";
|
|
7
7
|
import { Pagination } from "../Pagination/Pagination.mjs";
|
|
@@ -10,8 +10,8 @@ import { KeyPathBreadcrumb } from "./KeyPathBreadcrumb.mjs";
|
|
|
10
10
|
import { NavigationViewNode } from "./NavigationView/NavigationViewNode.mjs";
|
|
11
11
|
import { useCallback, useDeferredValue, useEffect, useMemo, useState, useTransition } from "react";
|
|
12
12
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { useIntlayer } from "react-intlayer";
|
|
14
13
|
import { useEditedContent, useEditorLocale, useFocusUnmergedDictionary } from "@intlayer/editor-react";
|
|
14
|
+
import { useIntlayer } from "react-intlayer";
|
|
15
15
|
import { getContentNodeByKeyPath } from "@intlayer/core/dictionaryManipulator";
|
|
16
16
|
|
|
17
17
|
//#region src/components/DictionaryFieldEditor/NodeEditor.tsx
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { cn } from "../../../utils/cn.mjs";
|
|
4
|
-
import { Button } from "../../Button/Button.mjs";
|
|
5
4
|
import { useSession } from "../../../api/useAuth/useSession.mjs";
|
|
6
5
|
import { useAuth } from "../../../api/useAuth/useAuth.mjs";
|
|
7
6
|
import { useDeleteDictionary, usePushDictionaries } from "../../../api/hooks/dictionary.mjs";
|
|
8
7
|
import { useWriteDictionary } from "../../../api/hooks/editor.mjs";
|
|
8
|
+
import { Button } from "../../Button/Button.mjs";
|
|
9
9
|
import { Modal } from "../../Modal/Modal.mjs";
|
|
10
10
|
import { useState } from "react";
|
|
11
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
12
12
|
import { ArrowUpFromLine, Download, RotateCcw, Save, Trash } from "lucide-react";
|
|
13
|
-
import { useIntlayer } from "react-intlayer";
|
|
14
13
|
import { useDictionariesRecordActions, useEditedContent } from "@intlayer/editor-react";
|
|
14
|
+
import { useIntlayer } from "react-intlayer";
|
|
15
15
|
|
|
16
16
|
//#region src/components/DictionaryFieldEditor/SaveForm/SaveForm.tsx
|
|
17
17
|
const SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) => {
|
|
@@ -6,8 +6,8 @@ import { EditableFieldInput } from "../../EditableField/EditableFieldInput.mjs";
|
|
|
6
6
|
import { NodeTypeSelector } from "../NodeTypeSelector.mjs";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
import { Plus, Trash } from "lucide-react";
|
|
9
|
-
import { useIntlayer } from "react-intlayer";
|
|
10
9
|
import { useConfiguration, useEditedContentActions, useFocusUnmergedDictionary } from "@intlayer/editor-react";
|
|
10
|
+
import { useIntlayer } from "react-intlayer";
|
|
11
11
|
import { getDefaultNode, getNodeChildren, getNodeType } from "@intlayer/core/dictionaryManipulator";
|
|
12
12
|
import * as NodeTypes from "@intlayer/types/nodeType";
|
|
13
13
|
import { isSameKeyPath } from "@intlayer/core/utils";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Code } from "./Code.mjs";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
2
|
import cn from "cnfast";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { MarkdownRenderer as MarkdownRenderer$1 } from "react-intlayer/markdown";
|
|
5
5
|
|
|
6
6
|
//#region src/components/IDE/MarkDownRender.tsx
|
|
@@ -107,21 +107,32 @@ const bgStyle = "bg-card/95 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blu
|
|
|
107
107
|
* @param props - MobileNavbar component props
|
|
108
108
|
* @returns Mobile navigation with rollable full-screen menu
|
|
109
109
|
*/
|
|
110
|
-
const MobileNavbar = ({ logo, topChildren, topSections = [], bottomChildren, bottomSections = [], rightItems, rollable = true }) => {
|
|
110
|
+
const MobileNavbar = ({ logo, topChildren, topSections = [], bottomChildren, bottomSections = [], rightItems, rollable = true, isActive = true }) => {
|
|
111
111
|
const [isHidden, setIsHidden] = useState(false);
|
|
112
112
|
const [isUnrolled, setIsUnrolled] = useState(false);
|
|
113
113
|
const [headerHeight, setHeaderHeight] = useState(0);
|
|
114
114
|
const navRef = useRef(null);
|
|
115
115
|
useScrollBlockage({
|
|
116
|
-
disableScroll: rollable,
|
|
116
|
+
disableScroll: isActive && rollable,
|
|
117
117
|
key: "mobile_nav"
|
|
118
118
|
});
|
|
119
119
|
useScrollDetection({
|
|
120
120
|
onScrollUp: () => setIsHidden(false),
|
|
121
121
|
onScrollDown: () => setIsHidden(true),
|
|
122
|
-
isEnabled: !isUnrolled && rollable
|
|
122
|
+
isEnabled: isActive && !isUnrolled && rollable
|
|
123
123
|
});
|
|
124
124
|
/**
|
|
125
|
+
* Clears the transient state when the desktop layout takes over. Without it,
|
|
126
|
+
* a viewport that grows past the breakpoint while the header is scrolled away
|
|
127
|
+
* — or while the menu is open — restores that state on the way back, and the
|
|
128
|
+
* user returns to a navbar that is translated off screen.
|
|
129
|
+
*/
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
if (isActive) return;
|
|
132
|
+
setIsHidden(false);
|
|
133
|
+
setIsUnrolled(false);
|
|
134
|
+
}, [isActive]);
|
|
135
|
+
/**
|
|
125
136
|
* Measures the collapsed header so the rolled-down panel can size itself to
|
|
126
137
|
* the rest of the viewport.
|
|
127
138
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MobileNavbar.mjs","names":[],"sources":["../../../../src/components/Navbar/MobileNavbar.tsx"],"sourcesContent":["'use client';\n\nimport { useScrollBlockage } from '@hooks/useScrollBlockage';\nimport { useScrollDetection } from '@hooks/useScrollDetection';\nimport { cn } from '@utils/cn';\nimport { m, type Variants } from 'framer-motion';\nimport {\n type ReactElement,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { Burger } from './Burger';\n\n/**\n * Props for the MobileNavbar component\n * @template T - The tab props type extending TabProps\n */\ntype MobileNavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element displayed in the header */\n logo: ReactNode;\n /** Additional content displayed at the top of expanded mobile menu */\n topChildren?: ReactNode;\n /** Navigation sections displayed in the top area of expanded menu */\n topSections?: ReactElement<T>[];\n /** Additional content displayed at the bottom of expanded mobile menu */\n bottomChildren?: ReactNode;\n /** Navigation sections displayed in the bottom area of expanded menu */\n bottomSections?: ReactElement<T>[];\n /** Right-aligned items in the collapsed header (e.g., search, notifications) */\n rightItems?: ReactNode;\n /** Whether the navbar should be rollable (default: true) */\n rollable?: boolean;\n};\n\n/**\n * Framer Motion animation variants for staggered menu item reveals\n * Creates a smooth cascading effect when menu opens/closes\n */\nconst navVariants: Variants = {\n open: {\n transition: { staggerChildren: 0.07, delayChildren: 0.2 },\n },\n closed: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 },\n },\n};\n\n/**\n * Shared background styling for mobile navbar components\n * Provides glass-morphism effect with blur and transparency\n */\nconst bgStyle =\n 'bg-card/95 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur';\n\n/**\n * Mobile Navigation Bar Component\n *\n * A sophisticated mobile-first navigation component with rollable full-screen menu,\n * scroll-aware behavior, and smooth animations. Optimized for touch interactions and\n * mobile user experience patterns.\n *\n * Features:\n * - rollable hamburger menu with full-screen overlay\n * - Auto-hide on scroll down, show on scroll up for screen space optimization\n * - Background scroll prevention when menu is open\n * - Staggered animations for smooth menu item reveals\n * - Flexible content areas (top/bottom children and sections)\n * - Responsive layout with viewport-aware sizing\n * - Backdrop blur effects for modern glass-morphism design\n *\n * Layout Structure:\n * ```\n * [Logo] ----------- [Right Items] [Burger]\n * (when expanded)\n * ┌─────────────────────────────────────────┐\n * │ [Top Children] │\n * │ [Top Sections - Navigation Items] │\n * │ [Bottom Sections - Navigation Items] │\n * │ [Bottom Children] │\n * └─────────────────────────────────────────┘\n * ```\n *\n * Behavioral Features:\n * - Sticky positioning with dynamic hide/show based on scroll direction\n * - Background scroll locking when menu is expanded\n * - Click outside to close expanded menu\n * - Smooth height animations with MaxHeightSmoother\n * - Intelligent burger button visibility (only shown if sections exist)\n *\n * Animation Details:\n * - Menu items animate in with staggered timing (70ms delay between items)\n * - Exit animations are reversed with 50ms stagger\n * - Initial delay of 200ms before items start animating in\n * - Full viewport height menu with dynamic height calculation\n *\n * @example\n * Basic mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<MobileLogo />}\n * topSections={primaryNavItems}\n * rightItems={<SearchIcon />}\n * />\n * ```\n *\n * @example\n * Full-featured mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<Logo />}\n * topChildren={<WelcomeMessage />}\n * topSections={mainNavItems}\n * bottomSections={utilityNavItems}\n * bottomChildren={<UserProfile />}\n * rightItems={\n * <>\n * <NotificationIcon />\n * <SearchIcon />\n * </>\n * }\n * />\n * ```\n *\n * Accessibility Features:\n * - Menu expanded state communicated via aria-expanded\n * - Focus management and keyboard navigation support\n * - Screen reader friendly with semantic nav structure\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - MobileNavbar component props\n * @returns Mobile navigation with rollable full-screen menu\n */\nexport const MobileNavbar = <T extends TabSelectorItemProps>({\n logo,\n topChildren,\n topSections = [],\n bottomChildren,\n bottomSections = [],\n rightItems,\n rollable = true,\n}: MobileNavbarProps<T>) => {\n const [isHidden, setIsHidden] = useState<boolean>(false);\n const [isUnrolled, setIsUnrolled] = useState<boolean>(false);\n const [headerHeight, setHeaderHeight] = useState<number>(0);\n\n const navRef = useRef<HTMLDivElement>(null);\n\n useScrollBlockage({\n disableScroll: rollable,\n key: 'mobile_nav',\n });\n\n useScrollDetection({\n onScrollUp: () => setIsHidden(false),\n onScrollDown: () => setIsHidden(true),\n isEnabled: !isUnrolled && rollable,\n });\n\n /**\n * Measures the collapsed header so the rolled-down panel can size itself to\n * the rest of the viewport.\n *\n * Reading `clientHeight` from the render body forced a layout on every\n * render, and `useScrollDetection` re-renders this component on each wheel\n * event — so the measurement ran once per scroll frame. A `ResizeObserver`\n * callback runs *after* layout, which makes the same read free, and the\n * height is published only when it actually changed.\n */\n useEffect(() => {\n const headerElement = navRef.current;\n\n if (!headerElement) return;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n if (!entry) return;\n\n // Border box, to stay equivalent to the `clientHeight` this replaces:\n // `contentRect` would drop the header's vertical padding.\n const measuredHeight =\n entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height;\n\n setHeaderHeight((previousHeight) =>\n previousHeight === measuredHeight ? previousHeight : measuredHeight\n );\n });\n\n resizeObserver.observe(headerElement);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n const backDivHeight = isHidden ? 0 : headerHeight;\n\n const isBurgerShowed = topSections.length + bottomSections.length > 0;\n\n return (\n <nav\n className={cn(\n bgStyle,\n 'sticky top-0 z-50 flex w-screen flex-col transition',\n isHidden ? '-translate-y-full' : 'translate-y-0'\n )}\n id=\"mobile-menu\"\n >\n <div\n className=\"flex w-full items-center justify-between gap-1 px-4 py-3 md:gap-[10vw]\"\n ref={navRef}\n >\n {logo}\n\n <div className=\"flex w-full flex-1 items-center justify-end gap-6\">\n <div className=\"flex w-full items-center justify-end gap-1\">\n {rightItems}\n </div>\n\n {isBurgerShowed && (\n <Burger\n isActive={isUnrolled}\n onClick={() => setIsUnrolled((isUnrolled) => !isUnrolled)}\n />\n )}\n </div>\n </div>\n\n <div\n className={cn(\n bgStyle,\n 'absolute bottom-0 left-0 w-full translate-y-full'\n )}\n >\n <MaxHeightSmoother isHidden={!isUnrolled}>\n <m.div\n className=\"flex w-full flex-col pt-10 pb-[20%] text-foreground text-lg tracking-wide\"\n onClick={() => setIsUnrolled(false)}\n animate={isUnrolled ? 'open' : 'closed'}\n variants={navVariants}\n style={{\n height: `calc(100vh - ${backDivHeight}px)`,\n }}\n >\n {topChildren}\n <div className=\"flex h-full flex-col justify-center\">\n {topSections}\n {bottomSections}\n </div>\n\n <div className=\"m-auto flex w-full max-w-100 items-center justify-center gap-1 px-5 py-3\">\n {bottomChildren}\n </div>\n </m.div>\n </MaxHeightSmoother>\n </div>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AA0CA,MAAM,cAAwB;CAC5B,MAAM,EACJ,YAAY;EAAE,iBAAiB;EAAM,eAAe;CAAI,EAC1D;CACA,QAAQ,EACN,YAAY;EAAE,iBAAiB;EAAM,kBAAkB;CAAG,EAC5D;AACF;;;;;AAMA,MAAM,UACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFF,MAAa,gBAAgD,EAC3D,MACA,aACA,cAAc,CAAC,GACf,gBACA,iBAAiB,CAAC,GAClB,YACA,WAAW,WACe;CAC1B,MAAM,CAAC,UAAU,eAAe,SAAkB,KAAK;CACvD,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAiB,CAAC;CAE1D,MAAM,SAAS,OAAuB,IAAI;CAE1C,kBAAkB;EAChB,eAAe;EACf,KAAK;CACP,CAAC;CAED,mBAAmB;EACjB,kBAAkB,YAAY,KAAK;EACnC,oBAAoB,YAAY,IAAI;EACpC,WAAW,CAAC,cAAc;CAC5B,CAAC;;;;;;;;;;;CAYD,gBAAgB;EACd,MAAM,gBAAgB,OAAO;EAE7B,IAAI,CAAC,eAAe;EAEpB,MAAM,iBAAiB,IAAI,gBAAgB,CAAC,WAAW;GACrD,IAAI,CAAC,OAAO;GAIZ,MAAM,iBACJ,MAAM,gBAAgB,EAAE,EAAE,aAAa,MAAM,YAAY;GAE3D,iBAAiB,mBACf,mBAAmB,iBAAiB,iBAAiB,cACvD;EACF,CAAC;EAED,eAAe,QAAQ,aAAa;EAEpC,aAAa,eAAe,WAAW;CACzC,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,WAAW,IAAI;CAErC,MAAM,iBAAiB,YAAY,SAAS,eAAe,SAAS;CAEpE,OACE,qBAAC,OAAD;EACE,WAAW,GACT,SACA,uDACA,WAAW,sBAAsB,eACnC;EACA,IAAG;YANL,CAQE,qBAAC,OAAD;GACE,WAAU;GACV,KAAK;aAFP,CAIG,MAED,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,OAAD;KAAK,WAAU;eACZ;IACE,IAEJ,kBACC,oBAAC,QAAD;KACE,UAAU;KACV,eAAe,eAAe,eAAe,CAAC,UAAU;IACzD,EAEA;KACF;MAEL,oBAAC,OAAD;GACE,WAAW,GACT,SACA,kDACF;aAEA,oBAAC,mBAAD;IAAmB,UAAU,CAAC;cAC5B,qBAAC,EAAE,KAAH;KACE,WAAU;KACV,eAAe,cAAc,KAAK;KAClC,SAAS,aAAa,SAAS;KAC/B,UAAU;KACV,OAAO,EACL,QAAQ,gBAAgB,cAAc,KACxC;eAPF;MASG;MACD,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,aACA,cACE;;MAEL,oBAAC,OAAD;OAAK,WAAU;iBACZ;MACE;KACA;;GACU;EAChB,EACF;;AAET"}
|
|
1
|
+
{"version":3,"file":"MobileNavbar.mjs","names":[],"sources":["../../../../src/components/Navbar/MobileNavbar.tsx"],"sourcesContent":["'use client';\n\nimport { useScrollBlockage } from '@hooks/useScrollBlockage';\nimport { useScrollDetection } from '@hooks/useScrollDetection';\nimport { cn } from '@utils/cn';\nimport { m, type Variants } from 'framer-motion';\nimport {\n type ReactElement,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { MaxHeightSmoother } from '../MaxHeightSmoother';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { Burger } from './Burger';\n\n/**\n * Props for the MobileNavbar component\n * @template T - The tab props type extending TabProps\n */\ntype MobileNavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element displayed in the header */\n logo: ReactNode;\n /** Additional content displayed at the top of expanded mobile menu */\n topChildren?: ReactNode;\n /** Navigation sections displayed in the top area of expanded menu */\n topSections?: ReactElement<T>[];\n /** Additional content displayed at the bottom of expanded mobile menu */\n bottomChildren?: ReactNode;\n /** Navigation sections displayed in the bottom area of expanded menu */\n bottomSections?: ReactElement<T>[];\n /** Right-aligned items in the collapsed header (e.g., search, notifications) */\n rightItems?: ReactNode;\n /** Whether the navbar should be rollable (default: true) */\n rollable?: boolean;\n /**\n * Whether this navbar is the one on screen. The responsive switch is done in\n * CSS, so the desktop layout keeps this component mounted but hidden; a\n * hidden navbar must not lock the page scroll or answer scroll events.\n * Defaults to `true`, for the standalone use of this component.\n */\n isActive?: boolean;\n};\n\n/**\n * Framer Motion animation variants for staggered menu item reveals\n * Creates a smooth cascading effect when menu opens/closes\n */\nconst navVariants: Variants = {\n open: {\n transition: { staggerChildren: 0.07, delayChildren: 0.2 },\n },\n closed: {\n transition: { staggerChildren: 0.05, staggerDirection: -1 },\n },\n};\n\n/**\n * Shared background styling for mobile navbar components\n * Provides glass-morphism effect with blur and transparency\n */\nconst bgStyle =\n 'bg-card/95 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur';\n\n/**\n * Mobile Navigation Bar Component\n *\n * A sophisticated mobile-first navigation component with rollable full-screen menu,\n * scroll-aware behavior, and smooth animations. Optimized for touch interactions and\n * mobile user experience patterns.\n *\n * Features:\n * - rollable hamburger menu with full-screen overlay\n * - Auto-hide on scroll down, show on scroll up for screen space optimization\n * - Background scroll prevention when menu is open\n * - Staggered animations for smooth menu item reveals\n * - Flexible content areas (top/bottom children and sections)\n * - Responsive layout with viewport-aware sizing\n * - Backdrop blur effects for modern glass-morphism design\n *\n * Layout Structure:\n * ```\n * [Logo] ----------- [Right Items] [Burger]\n * (when expanded)\n * ┌─────────────────────────────────────────┐\n * │ [Top Children] │\n * │ [Top Sections - Navigation Items] │\n * │ [Bottom Sections - Navigation Items] │\n * │ [Bottom Children] │\n * └─────────────────────────────────────────┘\n * ```\n *\n * Behavioral Features:\n * - Sticky positioning with dynamic hide/show based on scroll direction\n * - Background scroll locking when menu is expanded\n * - Click outside to close expanded menu\n * - Smooth height animations with MaxHeightSmoother\n * - Intelligent burger button visibility (only shown if sections exist)\n *\n * Animation Details:\n * - Menu items animate in with staggered timing (70ms delay between items)\n * - Exit animations are reversed with 50ms stagger\n * - Initial delay of 200ms before items start animating in\n * - Full viewport height menu with dynamic height calculation\n *\n * @example\n * Basic mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<MobileLogo />}\n * topSections={primaryNavItems}\n * rightItems={<SearchIcon />}\n * />\n * ```\n *\n * @example\n * Full-featured mobile navbar:\n * ```tsx\n * <MobileNavbar\n * logo={<Logo />}\n * topChildren={<WelcomeMessage />}\n * topSections={mainNavItems}\n * bottomSections={utilityNavItems}\n * bottomChildren={<UserProfile />}\n * rightItems={\n * <>\n * <NotificationIcon />\n * <SearchIcon />\n * </>\n * }\n * />\n * ```\n *\n * Accessibility Features:\n * - Menu expanded state communicated via aria-expanded\n * - Focus management and keyboard navigation support\n * - Screen reader friendly with semantic nav structure\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - MobileNavbar component props\n * @returns Mobile navigation with rollable full-screen menu\n */\nexport const MobileNavbar = <T extends TabSelectorItemProps>({\n logo,\n topChildren,\n topSections = [],\n bottomChildren,\n bottomSections = [],\n rightItems,\n rollable = true,\n isActive = true,\n}: MobileNavbarProps<T>) => {\n const [isHidden, setIsHidden] = useState<boolean>(false);\n const [isUnrolled, setIsUnrolled] = useState<boolean>(false);\n const [headerHeight, setHeaderHeight] = useState<number>(0);\n\n const navRef = useRef<HTMLDivElement>(null);\n\n useScrollBlockage({\n disableScroll: isActive && rollable,\n key: 'mobile_nav',\n });\n\n useScrollDetection({\n onScrollUp: () => setIsHidden(false),\n onScrollDown: () => setIsHidden(true),\n isEnabled: isActive && !isUnrolled && rollable,\n });\n\n /**\n * Clears the transient state when the desktop layout takes over. Without it,\n * a viewport that grows past the breakpoint while the header is scrolled away\n * — or while the menu is open — restores that state on the way back, and the\n * user returns to a navbar that is translated off screen.\n */\n useEffect(() => {\n if (isActive) return;\n\n setIsHidden(false);\n setIsUnrolled(false);\n }, [isActive]);\n\n /**\n * Measures the collapsed header so the rolled-down panel can size itself to\n * the rest of the viewport.\n *\n * Reading `clientHeight` from the render body forced a layout on every\n * render, and `useScrollDetection` re-renders this component on each wheel\n * event — so the measurement ran once per scroll frame. A `ResizeObserver`\n * callback runs *after* layout, which makes the same read free, and the\n * height is published only when it actually changed.\n */\n useEffect(() => {\n const headerElement = navRef.current;\n\n if (!headerElement) return;\n\n const resizeObserver = new ResizeObserver(([entry]) => {\n if (!entry) return;\n\n // Border box, to stay equivalent to the `clientHeight` this replaces:\n // `contentRect` would drop the header's vertical padding.\n const measuredHeight =\n entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height;\n\n setHeaderHeight((previousHeight) =>\n previousHeight === measuredHeight ? previousHeight : measuredHeight\n );\n });\n\n resizeObserver.observe(headerElement);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n const backDivHeight = isHidden ? 0 : headerHeight;\n\n const isBurgerShowed = topSections.length + bottomSections.length > 0;\n\n return (\n <nav\n className={cn(\n bgStyle,\n 'sticky top-0 z-50 flex w-screen flex-col transition',\n isHidden ? '-translate-y-full' : 'translate-y-0'\n )}\n id=\"mobile-menu\"\n >\n <div\n className=\"flex w-full items-center justify-between gap-1 px-4 py-3 md:gap-[10vw]\"\n ref={navRef}\n >\n {logo}\n\n <div className=\"flex w-full flex-1 items-center justify-end gap-6\">\n <div className=\"flex w-full items-center justify-end gap-1\">\n {rightItems}\n </div>\n\n {isBurgerShowed && (\n <Burger\n isActive={isUnrolled}\n onClick={() => setIsUnrolled((isUnrolled) => !isUnrolled)}\n />\n )}\n </div>\n </div>\n\n <div\n className={cn(\n bgStyle,\n 'absolute bottom-0 left-0 w-full translate-y-full'\n )}\n >\n <MaxHeightSmoother isHidden={!isUnrolled}>\n <m.div\n className=\"flex w-full flex-col pt-10 pb-[20%] text-foreground text-lg tracking-wide\"\n onClick={() => setIsUnrolled(false)}\n animate={isUnrolled ? 'open' : 'closed'}\n variants={navVariants}\n style={{\n height: `calc(100vh - ${backDivHeight}px)`,\n }}\n >\n {topChildren}\n <div className=\"flex h-full flex-col justify-center\">\n {topSections}\n {bottomSections}\n </div>\n\n <div className=\"m-auto flex w-full max-w-100 items-center justify-center gap-1 px-5 py-3\">\n {bottomChildren}\n </div>\n </m.div>\n </MaxHeightSmoother>\n </div>\n </nav>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAiDA,MAAM,cAAwB;CAC5B,MAAM,EACJ,YAAY;EAAE,iBAAiB;EAAM,eAAe;CAAI,EAC1D;CACA,QAAQ,EACN,YAAY;EAAE,iBAAiB;EAAM,kBAAkB;CAAG,EAC5D;AACF;;;;;AAMA,MAAM,UACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFF,MAAa,gBAAgD,EAC3D,MACA,aACA,cAAc,CAAC,GACf,gBACA,iBAAiB,CAAC,GAClB,YACA,WAAW,MACX,WAAW,WACe;CAC1B,MAAM,CAAC,UAAU,eAAe,SAAkB,KAAK;CACvD,MAAM,CAAC,YAAY,iBAAiB,SAAkB,KAAK;CAC3D,MAAM,CAAC,cAAc,mBAAmB,SAAiB,CAAC;CAE1D,MAAM,SAAS,OAAuB,IAAI;CAE1C,kBAAkB;EAChB,eAAe,YAAY;EAC3B,KAAK;CACP,CAAC;CAED,mBAAmB;EACjB,kBAAkB,YAAY,KAAK;EACnC,oBAAoB,YAAY,IAAI;EACpC,WAAW,YAAY,CAAC,cAAc;CACxC,CAAC;;;;;;;CAQD,gBAAgB;EACd,IAAI,UAAU;EAEd,YAAY,KAAK;EACjB,cAAc,KAAK;CACrB,GAAG,CAAC,QAAQ,CAAC;;;;;;;;;;;CAYb,gBAAgB;EACd,MAAM,gBAAgB,OAAO;EAE7B,IAAI,CAAC,eAAe;EAEpB,MAAM,iBAAiB,IAAI,gBAAgB,CAAC,WAAW;GACrD,IAAI,CAAC,OAAO;GAIZ,MAAM,iBACJ,MAAM,gBAAgB,EAAE,EAAE,aAAa,MAAM,YAAY;GAE3D,iBAAiB,mBACf,mBAAmB,iBAAiB,iBAAiB,cACvD;EACF,CAAC;EAED,eAAe,QAAQ,aAAa;EAEpC,aAAa,eAAe,WAAW;CACzC,GAAG,CAAC,CAAC;CAEL,MAAM,gBAAgB,WAAW,IAAI;CAErC,MAAM,iBAAiB,YAAY,SAAS,eAAe,SAAS;CAEpE,OACE,qBAAC,OAAD;EACE,WAAW,GACT,SACA,uDACA,WAAW,sBAAsB,eACnC;EACA,IAAG;YANL,CAQE,qBAAC,OAAD;GACE,WAAU;GACV,KAAK;aAFP,CAIG,MAED,qBAAC,OAAD;IAAK,WAAU;cAAf,CACE,oBAAC,OAAD;KAAK,WAAU;eACZ;IACE,IAEJ,kBACC,oBAAC,QAAD;KACE,UAAU;KACV,eAAe,eAAe,eAAe,CAAC,UAAU;IACzD,EAEA;KACF;MAEL,oBAAC,OAAD;GACE,WAAW,GACT,SACA,kDACF;aAEA,oBAAC,mBAAD;IAAmB,UAAU,CAAC;cAC5B,qBAAC,EAAE,KAAH;KACE,WAAU;KACV,eAAe,cAAc,KAAK;KAClC,SAAS,aAAa,SAAS;KAC/B,UAAU;KACV,OAAO,EACL,QAAQ,gBAAgB,cAAc,KACxC;eAPF;MASG;MACD,qBAAC,OAAD;OAAK,WAAU;iBAAf,CACG,aACA,cACE;;MAEL,oBAAC,OAAD;OAAK,WAAU;iBACZ;MACE;KACA;;GACU;EAChB,EACF;;AAET"}
|
|
@@ -4,25 +4,32 @@ import { useDevice } from "../../hooks/useDevice.mjs";
|
|
|
4
4
|
import { DesktopNavbar } from "./DesktopNavbar.mjs";
|
|
5
5
|
import { Burger } from "./Burger.mjs";
|
|
6
6
|
import { MobileNavbar } from "./MobileNavbar.mjs";
|
|
7
|
-
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
|
|
9
9
|
//#region src/components/Navbar/index.tsx
|
|
10
10
|
const Navbar = ({ logo, mobileTopChildren, desktopSections = [], mobileTopSections = [], mobileBottomChildren, mobileBottomSections = [], rightItemsDesktop, rightItemsMobile, selectedChoice, mobileRollable = true }) => {
|
|
11
11
|
const { isMobile } = useDevice("lg");
|
|
12
|
-
return
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
12
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
13
|
+
className: "contents lg:hidden",
|
|
14
|
+
children: /* @__PURE__ */ jsx(MobileNavbar, {
|
|
15
|
+
topChildren: mobileTopChildren,
|
|
16
|
+
topSections: mobileTopSections,
|
|
17
|
+
bottomChildren: mobileBottomChildren,
|
|
18
|
+
bottomSections: mobileBottomSections,
|
|
19
|
+
logo,
|
|
20
|
+
rightItems: rightItemsMobile,
|
|
21
|
+
rollable: mobileRollable,
|
|
22
|
+
isActive: isMobile === true
|
|
23
|
+
})
|
|
24
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
25
|
+
className: "hidden lg:contents",
|
|
26
|
+
children: /* @__PURE__ */ jsx(DesktopNavbar, {
|
|
27
|
+
sections: desktopSections,
|
|
28
|
+
rightItems: rightItemsDesktop,
|
|
29
|
+
logo,
|
|
30
|
+
selectedChoice
|
|
31
|
+
})
|
|
32
|
+
})] });
|
|
26
33
|
};
|
|
27
34
|
|
|
28
35
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Navbar/index.tsx"],"sourcesContent":["'use client';\n\nimport { useDevice } from '@hooks/useDevice';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { DesktopNavbar } from './DesktopNavbar';\nimport { MobileNavbar } from './MobileNavbar';\n\n/**\n * Props for the responsive Navbar component\n * @template T - The tab props type extending TabProps\n */\ntype NavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element to display in navbar */\n logo: ReactNode;\n /** Currently selected tab key for active state management */\n selectedChoice: T['key'];\n /** Navigation sections displayed on desktop layout */\n desktopSections?: ReactElement<T>[];\n /** Additional content displayed at top of mobile navbar */\n mobileTopChildren?: ReactNode;\n /** Navigation sections displayed at top of mobile navbar */\n mobileTopSections?: ReactElement<T>[];\n /** Additional content displayed at bottom of mobile navbar */\n mobileBottomChildren?: ReactNode;\n /** Navigation sections displayed at bottom of mobile navbar */\n mobileBottomSections?: ReactElement<T>[];\n /** Right-aligned items for desktop navbar (e.g., user menu, settings) */\n rightItemsDesktop?: ReactNode;\n /** Right-aligned items for mobile navbar */\n rightItemsMobile?: ReactNode;\n /** Whether the mobile navbar should be rollable (default: true) */\n mobileRollable?: boolean;\n};\n\n/**\n * Responsive Navbar Component\n *\n * A highly adaptable navigation component that automatically switches between desktop and mobile\n * layouts based on screen size. Provides comprehensive navigation structure with flexible content areas.\n *\n * Features:\n * - Automatic responsive switching at 'lg' breakpoint (1024px)\n * - Separate section configurations for desktop and mobile layouts\n * - Support for logo placement and right-aligned utility items\n * - Generic typing for tab properties and selected states\n * - Mobile-specific top/bottom content areas for enhanced mobile UX\n * - Hydration-safe rendering with useIsMounted hook\n *\n * @example\n * Basic usage:\n * ```tsx\n * const navSections = [\n * { key: 'home', label: 'Home', href: '/' },\n * { key: 'about', label: 'About', href: '/about' }\n * ];\n *\n * <Navbar\n * logo={<Logo />}\n * selectedChoice=\"home\"\n * desktopSections={navSections}\n * mobileTopSections={navSections}\n * rightItemsDesktop={<UserMenu />}\n * />\n * ```\n *\n * @example\n * Advanced mobile configuration:\n * ```tsx\n * <Navbar\n * logo={<Logo />}\n * selectedChoice={activeTab}\n * desktopSections={mainNavItems}\n * mobileTopSections={primaryMobileNavItems}\n * mobileTopChildren={<SearchBar />}\n * mobileBottomSections={secondaryMobileNavItems}\n * mobileBottomChildren={<UserProfile />}\n * rightItemsDesktop={<DesktopActions />}\n * rightItemsMobile={<MobileActions />}\n * />\n * ```\n *\n * Responsive Behavior:\n * - Desktop (≥1024px): Shows DesktopNavbar with horizontal layout\n * - Mobile (<1024px): Shows MobileNavbar with collapsible vertical layout\n * -
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../src/components/Navbar/index.tsx"],"sourcesContent":["'use client';\n\nimport { useDevice } from '@hooks/useDevice';\nimport type { ReactElement, ReactNode } from 'react';\nimport type { TabSelectorItemProps } from '../TabSelector';\nimport { DesktopNavbar } from './DesktopNavbar';\nimport { MobileNavbar } from './MobileNavbar';\n\n/**\n * Props for the responsive Navbar component\n * @template T - The tab props type extending TabProps\n */\ntype NavbarProps<T extends TabSelectorItemProps> = {\n /** Logo component or element to display in navbar */\n logo: ReactNode;\n /** Currently selected tab key for active state management */\n selectedChoice: T['key'];\n /** Navigation sections displayed on desktop layout */\n desktopSections?: ReactElement<T>[];\n /** Additional content displayed at top of mobile navbar */\n mobileTopChildren?: ReactNode;\n /** Navigation sections displayed at top of mobile navbar */\n mobileTopSections?: ReactElement<T>[];\n /** Additional content displayed at bottom of mobile navbar */\n mobileBottomChildren?: ReactNode;\n /** Navigation sections displayed at bottom of mobile navbar */\n mobileBottomSections?: ReactElement<T>[];\n /** Right-aligned items for desktop navbar (e.g., user menu, settings) */\n rightItemsDesktop?: ReactNode;\n /** Right-aligned items for mobile navbar */\n rightItemsMobile?: ReactNode;\n /** Whether the mobile navbar should be rollable (default: true) */\n mobileRollable?: boolean;\n};\n\n/**\n * Responsive Navbar Component\n *\n * A highly adaptable navigation component that automatically switches between desktop and mobile\n * layouts based on screen size. Provides comprehensive navigation structure with flexible content areas.\n *\n * Features:\n * - Automatic responsive switching at 'lg' breakpoint (1024px)\n * - Separate section configurations for desktop and mobile layouts\n * - Support for logo placement and right-aligned utility items\n * - Generic typing for tab properties and selected states\n * - Mobile-specific top/bottom content areas for enhanced mobile UX\n * - Hydration-safe rendering with useIsMounted hook\n *\n * @example\n * Basic usage:\n * ```tsx\n * const navSections = [\n * { key: 'home', label: 'Home', href: '/' },\n * { key: 'about', label: 'About', href: '/about' }\n * ];\n *\n * <Navbar\n * logo={<Logo />}\n * selectedChoice=\"home\"\n * desktopSections={navSections}\n * mobileTopSections={navSections}\n * rightItemsDesktop={<UserMenu />}\n * />\n * ```\n *\n * @example\n * Advanced mobile configuration:\n * ```tsx\n * <Navbar\n * logo={<Logo />}\n * selectedChoice={activeTab}\n * desktopSections={mainNavItems}\n * mobileTopSections={primaryMobileNavItems}\n * mobileTopChildren={<SearchBar />}\n * mobileBottomSections={secondaryMobileNavItems}\n * mobileBottomChildren={<UserProfile />}\n * rightItemsDesktop={<DesktopActions />}\n * rightItemsMobile={<MobileActions />}\n * />\n * ```\n *\n * Responsive Behavior:\n * - Desktop (≥1024px): Shows DesktopNavbar with horizontal layout\n * - Mobile (<1024px): Shows MobileNavbar with collapsible vertical layout\n * - Both are mounted and CSS picks one, so server-rendered and prerendered\n * markup paints the right layout with no swap once the bundle hydrates\n *\n * @template T - Tab properties type extending TabProps for type safety\n * @param props - Navbar component props\n * @returns Responsive navbar JSX element\n */\nexport { Burger } from './Burger';\nexport { DesktopNavbar } from './DesktopNavbar';\nexport { MobileNavbar } from './MobileNavbar';\n\nexport const Navbar = <T extends TabSelectorItemProps>({\n logo,\n mobileTopChildren,\n desktopSections = [],\n mobileTopSections = [],\n mobileBottomChildren,\n mobileBottomSections = [],\n rightItemsDesktop,\n rightItemsMobile,\n selectedChoice,\n mobileRollable = true,\n}: NavbarProps<T>) => {\n // Only decides which navbar *behaves*, never which one is shown: the media\n // query cannot resolve before hydration, and picking the layout in JS baked\n // the desktop navbar into the prerendered HTML — mobile visitors watched it\n // swap once the bundle arrived. CSS makes the first paint already correct.\n const { isMobile } = useDevice('lg');\n\n return (\n <>\n {/* `contents` keeps the wrapper out of the layout, so each navbar still\n sticks and stretches exactly as it did when rendered on its own. */}\n <div className=\"contents lg:hidden\">\n <MobileNavbar\n topChildren={mobileTopChildren}\n topSections={mobileTopSections}\n bottomChildren={mobileBottomChildren}\n bottomSections={mobileBottomSections}\n logo={logo}\n rightItems={rightItemsMobile}\n rollable={mobileRollable}\n isActive={isMobile === true}\n />\n </div>\n <div className=\"hidden lg:contents\">\n <DesktopNavbar\n sections={desktopSections}\n rightItems={rightItemsDesktop}\n logo={logo}\n selectedChoice={selectedChoice}\n />\n </div>\n </>\n );\n};\n"],"mappings":";;;;;;;;;AAgGA,MAAa,UAA0C,EACrD,MACA,mBACA,kBAAkB,CAAC,GACnB,oBAAoB,CAAC,GACrB,sBACA,uBAAuB,CAAC,GACxB,mBACA,kBACA,gBACA,iBAAiB,WACG;CAKpB,MAAM,EAAE,aAAa,UAAU,IAAI;CAEnC,OACE,4CAGE,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,cAAD;GACE,aAAa;GACb,aAAa;GACb,gBAAgB;GAChB,gBAAgB;GACV;GACN,YAAY;GACZ,UAAU;GACV,UAAU,aAAa;EACxB;CACE,IACL,oBAAC,OAAD;EAAK,WAAU;YACb,oBAAC,eAAD;GACE,UAAU;GACV,YAAY;GACN;GACU;EACjB;CACE,EACL;AAEN"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { useTheme } from "../../providers/ThemeProvider.mjs";
|
|
4
3
|
import { cn } from "../../utils/cn.mjs";
|
|
4
|
+
import { useTheme } from "../../providers/ThemeProvider.mjs";
|
|
5
5
|
import { useEffect, useRef } from "react";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useTheme } from "../../providers/ThemeProvider.mjs";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
2
|
import cn from "cnfast";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/components/Status/index.tsx
|
|
6
6
|
const Status = ({ className, ...props }) => {
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { useCallback, useSyncExternalStore } from "react";
|
|
4
4
|
|
|
5
5
|
//#region src/hooks/useDevice.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
default: return breakpoint;
|
|
15
|
-
}
|
|
6
|
+
/** Tailwind's breakpoints, in pixels. */
|
|
7
|
+
const BREAKPOINT_WIDTHS = {
|
|
8
|
+
xs: 480,
|
|
9
|
+
sm: 640,
|
|
10
|
+
md: 768,
|
|
11
|
+
lg: 1024,
|
|
12
|
+
xl: 1280,
|
|
13
|
+
"2xl": 1536
|
|
16
14
|
};
|
|
15
|
+
const getBreakpointFromSize = (breakpoint) => typeof breakpoint === "number" ? breakpoint : BREAKPOINT_WIDTHS[breakpoint] ?? BREAKPOINT_WIDTHS.md;
|
|
17
16
|
const checkIsMobileUserAgent = () => {
|
|
18
17
|
if (typeof window === "undefined") return;
|
|
19
18
|
const userAgent = window.navigator?.userAgent;
|
|
@@ -55,33 +54,102 @@ const calculateIsMobile = (breakpoint = "md") => {
|
|
|
55
54
|
isMac: checkIsMac()
|
|
56
55
|
};
|
|
57
56
|
};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Snapshot served while rendering on the server and while hydrating, where no
|
|
59
|
+
* viewport exists. Frozen and shared so every consumer reads the very same
|
|
60
|
+
* reference — `useSyncExternalStore` compares snapshots by identity.
|
|
61
|
+
*/
|
|
62
|
+
const SERVER_SNAPSHOT = Object.freeze({
|
|
63
|
+
isMobileScreen: void 0,
|
|
64
|
+
isMobileUserAgent: void 0,
|
|
65
|
+
isMobile: void 0,
|
|
66
|
+
isIOS: void 0,
|
|
67
|
+
isMac: void 0
|
|
68
|
+
});
|
|
69
|
+
/** The user agent never changes within a document, so parse it once. */
|
|
70
|
+
let userAgentFlags;
|
|
71
|
+
const getUserAgentFlags = () => {
|
|
72
|
+
userAgentFlags ??= {
|
|
73
|
+
isMobileUserAgent: checkIsMobileUserAgent(),
|
|
74
|
+
isIOS: checkIsIOS(),
|
|
75
|
+
isMac: checkIsMac()
|
|
76
|
+
};
|
|
77
|
+
return userAgentFlags;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* One store per breakpoint, shared by every component asking for it.
|
|
81
|
+
*
|
|
82
|
+
* A page mounts this hook from a dozen components; giving each its own
|
|
83
|
+
* `MediaQueryList`, state and effect made the browser evaluate the same query a
|
|
84
|
+
* dozen times and React commit a dozen separate post-hydration renders. Reading
|
|
85
|
+
* from a single store collapses those into one subscription and one commit.
|
|
86
|
+
*/
|
|
87
|
+
const breakpointStores = /* @__PURE__ */ new Map();
|
|
88
|
+
const createBreakpointStore = (breakpointValue) => {
|
|
89
|
+
const mediaQuery = window.matchMedia(`(max-width: ${breakpointValue}px)`);
|
|
90
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
91
|
+
const buildSnapshot = (isMobileScreen) => ({
|
|
92
|
+
...getUserAgentFlags(),
|
|
93
|
+
isMobileScreen,
|
|
94
|
+
isMobile: isMobileScreen
|
|
65
95
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
96
|
+
let snapshot = buildSnapshot(mediaQuery.matches);
|
|
97
|
+
/**
|
|
98
|
+
* Replaces the snapshot only when the viewport actually crossed the
|
|
99
|
+
* breakpoint. `useSyncExternalStore` compares snapshots by identity, so
|
|
100
|
+
* rebuilding an equal object would schedule a render for nothing.
|
|
101
|
+
*
|
|
102
|
+
* @returns Whether the snapshot changed.
|
|
103
|
+
*/
|
|
104
|
+
const refreshSnapshot = (isMobileScreen) => {
|
|
105
|
+
if (snapshot.isMobileScreen === isMobileScreen) return false;
|
|
106
|
+
snapshot = buildSnapshot(isMobileScreen);
|
|
107
|
+
return true;
|
|
108
|
+
};
|
|
109
|
+
const handleChange = (event) => {
|
|
110
|
+
if (!refreshSnapshot(event.matches)) return;
|
|
111
|
+
for (const listener of listeners) listener();
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
subscribe: (onStoreChange) => {
|
|
115
|
+
if (listeners.size === 0) {
|
|
116
|
+
refreshSnapshot(mediaQuery.matches);
|
|
117
|
+
mediaQuery.addEventListener("change", handleChange);
|
|
118
|
+
}
|
|
119
|
+
listeners.add(onStoreChange);
|
|
120
|
+
return () => {
|
|
121
|
+
listeners.delete(onStoreChange);
|
|
122
|
+
if (listeners.size === 0) mediaQuery.removeEventListener("change", handleChange);
|
|
123
|
+
};
|
|
124
|
+
},
|
|
125
|
+
getSnapshot: () => snapshot
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
const getBreakpointStore = (breakpointValue) => {
|
|
129
|
+
const existingStore = breakpointStores.get(breakpointValue);
|
|
130
|
+
if (existingStore) return existingStore;
|
|
131
|
+
const store = createBreakpointStore(breakpointValue);
|
|
132
|
+
breakpointStores.set(breakpointValue, store);
|
|
133
|
+
return store;
|
|
134
|
+
};
|
|
135
|
+
const getServerSnapshot = () => SERVER_SNAPSHOT;
|
|
136
|
+
/**
|
|
137
|
+
* Reports whether the current device is mobile, and which platform it runs.
|
|
138
|
+
*
|
|
139
|
+
* Server renders — including the prerendered HTML both apps ship — resolve to
|
|
140
|
+
* `undefined`, then settle to the real values in a single commit once the
|
|
141
|
+
* browser takes over.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```tsx
|
|
145
|
+
* const { isMobile } = useDevice('lg');
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
const useDevice = (breakpoint = "md") => {
|
|
149
|
+
const breakpointValue = getBreakpointFromSize(breakpoint);
|
|
150
|
+
const subscribe = useCallback((onStoreChange) => getBreakpointStore(breakpointValue).subscribe(onStoreChange), [breakpointValue]);
|
|
151
|
+
const getSnapshot = useCallback(() => getBreakpointStore(breakpointValue).getSnapshot(), [breakpointValue]);
|
|
152
|
+
return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
|
|
85
153
|
};
|
|
86
154
|
|
|
87
155
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDevice.mjs","names":[],"sources":["../../../src/hooks/useDevice.ts"],"sourcesContent":["'use client';\n\nimport { useEffect, useState } from 'react';\n\nexport type SizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport const getBreakpointFromSize = (breakpoint: SizeType | number) => {\n switch (breakpoint) {\n case 'xs':\n return 480;\n case 'sm':\n return 640;\n case 'md':\n return 768;\n case 'lg':\n return 1024;\n case 'xl':\n return 1280;\n case '2xl':\n return 1536;\n default:\n return breakpoint;\n }\n};\n\nexport const checkIsMobileUserAgent = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n return /android|bb\\d+|meego|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(?:hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(?:ob|in)i|palm(?: os)?|phone|p(?:ixi|re)\\/|plucker|pocket|psp|series(?:4|6)0|symbian|treo|up\\.(?:browser|link)|vodafone|wap|windows ce|windows phone|xda|xiino|zte-/i.test(\n userAgent\n );\n};\n\nexport const checkIsIphoneOrSafariDevice = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n /* 1 . is it Safari? (Chrome & co. also contain “Safari/…”, so exclude them) */\n const isSafari =\n /Safari\\/\\d/i.test(userAgent) && // has “Safari/xxx”\n !/Chrome|CriOS|FxiOS|Edg|OPR/i.test(userAgent); // …but not the other browsers\n\n /* 2. is it an Apple device? (macOS or iOS/iPadOS) */\n const isAppleDevice = /Macintosh|iP(?:hone|ad|od)/.test(userAgent);\n\n return isSafari && isAppleDevice; // true for mac-Safari & iOS-Safari\n};\n\nexport const checkIsIOS = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for iOS devices: iPhone, iPad, iPod\n return /iP(?:hone|ad|od)/.test(userAgent);\n};\n\nexport const checkIsMac = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for macOS/Mac devices\n return /Macintosh|MacIntel|Mac OS X/.test(userAgent);\n};\n\nexport const checkIsMobileScreen = (\n breakpoint: number\n): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n return (window?.innerWidth ?? 0) <= breakpoint;\n};\n\ntype UseDeviceState = {\n isMobileScreen: boolean | undefined;\n isMobileUserAgent: boolean | undefined;\n isMobile: boolean | undefined;\n isIOS: boolean | undefined;\n isMac: boolean | undefined;\n};\n\nexport const calculateIsMobile = (breakpoint: SizeType | number = 'md') => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n\n const isMobileUserAgent = checkIsMobileUserAgent();\n const isMobileScreen = checkIsMobileScreen(breakpointValue);\n const isMobile = isMobileScreen ?? isMobileUserAgent;\n const isIOS = checkIsIOS();\n const isMac = checkIsMac();\n\n return {\n isMobileScreen, // Is the screen width within a mobile breakpoint.\n isMobileUserAgent, // Is the user agent indicative of a mobile device.\n isMobile, // Combines both checks to determine if the device is mobile.\n isIOS, // Is the device running iOS (iPhone, iPad, iPod).\n isMac, // Is the device a Mac computer (macOS).\n };\n};\n\nexport const useDevice = (breakpoint: SizeType | number = 'md') => {\n const [result, setResult] = useState<UseDeviceState>({\n isMobileScreen: undefined,\n isMobileUserAgent: undefined,\n isMobile: undefined,\n isIOS: undefined,\n isMac: undefined,\n });\n\n useEffect(() => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n const mobileScreenQuery = window.matchMedia(\n `(max-width: ${breakpointValue}px)`\n );\n\n const isMobileUserAgent = checkIsMobileUserAgent();\n const isIOS = checkIsIOS();\n const isMac = checkIsMac();\n\n const applyMatches = (isMobileScreen: boolean) =>\n setResult({\n isMobileScreen,\n isMobileUserAgent,\n isMobile: isMobileScreen,\n isIOS,\n isMac,\n });\n\n applyMatches(mobileScreenQuery.matches);\n\n const handleChange = (event: MediaQueryListEvent) =>\n applyMatches(event.matches);\n\n mobileScreenQuery.addEventListener('change', handleChange);\n\n return () => mobileScreenQuery.removeEventListener('change', handleChange);\n }, [breakpoint]);\n\n return result;\n};\n"],"mappings":";;;;;AAMA,MAAa,yBAAyB,eAAkC;CACtE,QAAQ,YAAR;EACE,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,MACH,OAAO;EACT,KAAK,OACH,OAAO;EACT,SACE,OAAO;CACX;AACF;AAEA,MAAa,+BAAoD;CAC/D,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAEtC,OAAO,mVAAmV,KACxV,SACF;AACF;AAEA,MAAa,oCAAyD;CACpE,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAGpC,MAAM,WACJ,cAAc,KAAK,SAAS,KAC5B,CAAC,8BAA8B,KAAK,SAAS;CAG/C,MAAM,gBAAgB,6BAA6B,KAAK,SAAS;CAEjE,OAAO,YAAY;AACrB;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,mBAAmB,KAAK,SAAS;AAC1C;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,8BAA8B,KAAK,SAAS;AACrD;AAEA,MAAa,uBACX,eACwB;CACxB,IAAI,OAAO,WAAW,aAAa;CAEnC,QAAQ,QAAQ,cAAc,MAAM;AACtC;AAUA,MAAa,qBAAqB,aAAgC,SAAS;CACzE,MAAM,kBAAkB,sBAAsB,UAAU;CAExD,MAAM,oBAAoB,uBAAuB;CACjD,MAAM,iBAAiB,oBAAoB,eAAe;CAK1D,OAAO;EACL;EACA;EACA,UAPe,kBAAkB;EAQjC,OAPY,WAOR;EACJ,OAPY,WAOR;CACN;AACF;AAEA,MAAa,aAAa,aAAgC,SAAS;CACjE,MAAM,CAAC,QAAQ,aAAa,SAAyB;EACnD,gBAAgB;EAChB,mBAAmB;EACnB,UAAU;EACV,OAAO;EACP,OAAO;CACT,CAAC;CAED,gBAAgB;EACd,MAAM,kBAAkB,sBAAsB,UAAU;EACxD,MAAM,oBAAoB,OAAO,WAC/B,eAAe,gBAAgB,IACjC;EAEA,MAAM,oBAAoB,uBAAuB;EACjD,MAAM,QAAQ,WAAW;EACzB,MAAM,QAAQ,WAAW;EAEzB,MAAM,gBAAgB,mBACpB,UAAU;GACR;GACA;GACA,UAAU;GACV;GACA;EACF,CAAC;EAEH,aAAa,kBAAkB,OAAO;EAEtC,MAAM,gBAAgB,UACpB,aAAa,MAAM,OAAO;EAE5B,kBAAkB,iBAAiB,UAAU,YAAY;EAEzD,aAAa,kBAAkB,oBAAoB,UAAU,YAAY;CAC3E,GAAG,CAAC,UAAU,CAAC;CAEf,OAAO;AACT"}
|
|
1
|
+
{"version":3,"file":"useDevice.mjs","names":[],"sources":["../../../src/hooks/useDevice.ts"],"sourcesContent":["'use client';\n\nimport { useCallback, useSyncExternalStore } from 'react';\n\nexport type SizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/** Tailwind's breakpoints, in pixels. */\nconst BREAKPOINT_WIDTHS: Readonly<Record<SizeType, number>> = {\n xs: 480,\n sm: 640,\n md: 768,\n lg: 1024,\n xl: 1280,\n '2xl': 1536,\n};\n\nexport const getBreakpointFromSize = (breakpoint: SizeType | number): number =>\n typeof breakpoint === 'number'\n ? breakpoint\n : (BREAKPOINT_WIDTHS[breakpoint] ?? BREAKPOINT_WIDTHS.md);\n\nexport const checkIsMobileUserAgent = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n return /android|bb\\d+|meego|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(?:hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(?:ob|in)i|palm(?: os)?|phone|p(?:ixi|re)\\/|plucker|pocket|psp|series(?:4|6)0|symbian|treo|up\\.(?:browser|link)|vodafone|wap|windows ce|windows phone|xda|xiino|zte-/i.test(\n userAgent\n );\n};\n\nexport const checkIsIphoneOrSafariDevice = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n /* 1 . is it Safari? (Chrome & co. also contain “Safari/…”, so exclude them) */\n const isSafari =\n /Safari\\/\\d/i.test(userAgent) && // has “Safari/xxx”\n !/Chrome|CriOS|FxiOS|Edg|OPR/i.test(userAgent); // …but not the other browsers\n\n /* 2. is it an Apple device? (macOS or iOS/iPadOS) */\n const isAppleDevice = /Macintosh|iP(?:hone|ad|od)/.test(userAgent);\n\n return isSafari && isAppleDevice; // true for mac-Safari & iOS-Safari\n};\n\nexport const checkIsIOS = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for iOS devices: iPhone, iPad, iPod\n return /iP(?:hone|ad|od)/.test(userAgent);\n};\n\nexport const checkIsMac = (): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n const userAgent = window.navigator?.userAgent;\n\n if (typeof userAgent === 'undefined') return;\n\n // Check for macOS/Mac devices\n return /Macintosh|MacIntel|Mac OS X/.test(userAgent);\n};\n\nexport const checkIsMobileScreen = (\n breakpoint: number\n): boolean | undefined => {\n if (typeof window === 'undefined') return;\n\n return (window?.innerWidth ?? 0) <= breakpoint;\n};\n\nexport type DeviceState = {\n /** Is the screen width within a mobile breakpoint. */\n isMobileScreen: boolean | undefined;\n /** Is the user agent indicative of a mobile device. */\n isMobileUserAgent: boolean | undefined;\n /** Combines both checks to determine if the device is mobile. */\n isMobile: boolean | undefined;\n /** Is the device running iOS (iPhone, iPad, iPod). */\n isIOS: boolean | undefined;\n /** Is the device a Mac computer (macOS). */\n isMac: boolean | undefined;\n};\n\nexport const calculateIsMobile = (\n breakpoint: SizeType | number = 'md'\n): DeviceState => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n\n const isMobileUserAgent = checkIsMobileUserAgent();\n const isMobileScreen = checkIsMobileScreen(breakpointValue);\n const isMobile = isMobileScreen ?? isMobileUserAgent;\n const isIOS = checkIsIOS();\n const isMac = checkIsMac();\n\n return { isMobileScreen, isMobileUserAgent, isMobile, isIOS, isMac };\n};\n\n/**\n * Snapshot served while rendering on the server and while hydrating, where no\n * viewport exists. Frozen and shared so every consumer reads the very same\n * reference — `useSyncExternalStore` compares snapshots by identity.\n */\nconst SERVER_SNAPSHOT: DeviceState = Object.freeze({\n isMobileScreen: undefined,\n isMobileUserAgent: undefined,\n isMobile: undefined,\n isIOS: undefined,\n isMac: undefined,\n});\n\ntype UserAgentFlags = Pick<\n DeviceState,\n 'isMobileUserAgent' | 'isIOS' | 'isMac'\n>;\n\n/** The user agent never changes within a document, so parse it once. */\nlet userAgentFlags: UserAgentFlags | undefined;\n\nconst getUserAgentFlags = (): UserAgentFlags => {\n userAgentFlags ??= {\n isMobileUserAgent: checkIsMobileUserAgent(),\n isIOS: checkIsIOS(),\n isMac: checkIsMac(),\n };\n\n return userAgentFlags;\n};\n\ntype BreakpointStore = {\n subscribe: (onStoreChange: () => void) => () => void;\n getSnapshot: () => DeviceState;\n};\n\n/**\n * One store per breakpoint, shared by every component asking for it.\n *\n * A page mounts this hook from a dozen components; giving each its own\n * `MediaQueryList`, state and effect made the browser evaluate the same query a\n * dozen times and React commit a dozen separate post-hydration renders. Reading\n * from a single store collapses those into one subscription and one commit.\n */\nconst breakpointStores = new Map<number, BreakpointStore>();\n\nconst createBreakpointStore = (breakpointValue: number): BreakpointStore => {\n const mediaQuery = window.matchMedia(`(max-width: ${breakpointValue}px)`);\n const listeners = new Set<() => void>();\n\n const buildSnapshot = (isMobileScreen: boolean): DeviceState => ({\n ...getUserAgentFlags(),\n isMobileScreen,\n isMobile: isMobileScreen,\n });\n\n let snapshot = buildSnapshot(mediaQuery.matches);\n\n /**\n * Replaces the snapshot only when the viewport actually crossed the\n * breakpoint. `useSyncExternalStore` compares snapshots by identity, so\n * rebuilding an equal object would schedule a render for nothing.\n *\n * @returns Whether the snapshot changed.\n */\n const refreshSnapshot = (isMobileScreen: boolean): boolean => {\n if (snapshot.isMobileScreen === isMobileScreen) return false;\n\n snapshot = buildSnapshot(isMobileScreen);\n\n return true;\n };\n\n const handleChange = (event: MediaQueryListEvent) => {\n if (!refreshSnapshot(event.matches)) return;\n\n for (const listener of listeners) listener();\n };\n\n return {\n subscribe: (onStoreChange) => {\n if (listeners.size === 0) {\n // The viewport may have moved while nothing was listening; React reads\n // the snapshot again right after subscribing, so refreshing it here is\n // what keeps a remounted consumer from rendering a stale width.\n refreshSnapshot(mediaQuery.matches);\n mediaQuery.addEventListener('change', handleChange);\n }\n\n listeners.add(onStoreChange);\n\n return () => {\n listeners.delete(onStoreChange);\n\n if (listeners.size === 0) {\n mediaQuery.removeEventListener('change', handleChange);\n }\n };\n },\n getSnapshot: () => snapshot,\n };\n};\n\nconst getBreakpointStore = (breakpointValue: number): BreakpointStore => {\n const existingStore = breakpointStores.get(breakpointValue);\n\n if (existingStore) return existingStore;\n\n const store = createBreakpointStore(breakpointValue);\n\n breakpointStores.set(breakpointValue, store);\n\n return store;\n};\n\nconst getServerSnapshot = (): DeviceState => SERVER_SNAPSHOT;\n\n/**\n * Reports whether the current device is mobile, and which platform it runs.\n *\n * Server renders — including the prerendered HTML both apps ship — resolve to\n * `undefined`, then settle to the real values in a single commit once the\n * browser takes over.\n *\n * @example\n * ```tsx\n * const { isMobile } = useDevice('lg');\n * ```\n */\nexport const useDevice = (\n breakpoint: SizeType | number = 'md'\n): DeviceState => {\n const breakpointValue = getBreakpointFromSize(breakpoint);\n\n const subscribe = useCallback(\n (onStoreChange: () => void) =>\n getBreakpointStore(breakpointValue).subscribe(onStoreChange),\n [breakpointValue]\n );\n\n const getSnapshot = useCallback(\n () => getBreakpointStore(breakpointValue).getSnapshot(),\n [breakpointValue]\n );\n\n return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n};\n"],"mappings":";;;;;;AAOA,MAAM,oBAAwD;CAC5D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;AACT;AAEA,MAAa,yBAAyB,eACpC,OAAO,eAAe,WAClB,aACC,kBAAkB,eAAe,kBAAkB;AAE1D,MAAa,+BAAoD;CAC/D,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAEtC,OAAO,mVAAmV,KACxV,SACF;AACF;AAEA,MAAa,oCAAyD;CACpE,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAGpC,MAAM,WACJ,cAAc,KAAK,SAAS,KAC5B,CAAC,8BAA8B,KAAK,SAAS;CAG/C,MAAM,gBAAgB,6BAA6B,KAAK,SAAS;CAEjE,OAAO,YAAY;AACrB;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,mBAAmB,KAAK,SAAS;AAC1C;AAEA,MAAa,mBAAwC;CACnD,IAAI,OAAO,WAAW,aAAa;CAEnC,MAAM,YAAY,OAAO,WAAW;CAEpC,IAAI,OAAO,cAAc,aAAa;CAGtC,OAAO,8BAA8B,KAAK,SAAS;AACrD;AAEA,MAAa,uBACX,eACwB;CACxB,IAAI,OAAO,WAAW,aAAa;CAEnC,QAAQ,QAAQ,cAAc,MAAM;AACtC;AAeA,MAAa,qBACX,aAAgC,SAChB;CAChB,MAAM,kBAAkB,sBAAsB,UAAU;CAExD,MAAM,oBAAoB,uBAAuB;CACjD,MAAM,iBAAiB,oBAAoB,eAAe;CAK1D,OAAO;EAAE;EAAgB;EAAmB,UAJ3B,kBAAkB;EAImB,OAHxC,WAG4C;EAAG,OAF/C,WAEmD;CAAE;AACrE;;;;;;AAOA,MAAM,kBAA+B,OAAO,OAAO;CACjD,gBAAgB;CAChB,mBAAmB;CACnB,UAAU;CACV,OAAO;CACP,OAAO;AACT,CAAC;;AAQD,IAAI;AAEJ,MAAM,0BAA0C;CAC9C,mBAAmB;EACjB,mBAAmB,uBAAuB;EAC1C,OAAO,WAAW;EAClB,OAAO,WAAW;CACpB;CAEA,OAAO;AACT;;;;;;;;;AAeA,MAAM,mCAAmB,IAAI,IAA6B;AAE1D,MAAM,yBAAyB,oBAA6C;CAC1E,MAAM,aAAa,OAAO,WAAW,eAAe,gBAAgB,IAAI;CACxE,MAAM,4BAAY,IAAI,IAAgB;CAEtC,MAAM,iBAAiB,oBAA0C;EAC/D,GAAG,kBAAkB;EACrB;EACA,UAAU;CACZ;CAEA,IAAI,WAAW,cAAc,WAAW,OAAO;;;;;;;;CAS/C,MAAM,mBAAmB,mBAAqC;EAC5D,IAAI,SAAS,mBAAmB,gBAAgB,OAAO;EAEvD,WAAW,cAAc,cAAc;EAEvC,OAAO;CACT;CAEA,MAAM,gBAAgB,UAA+B;EACnD,IAAI,CAAC,gBAAgB,MAAM,OAAO,GAAG;EAErC,KAAK,MAAM,YAAY,WAAW,SAAS;CAC7C;CAEA,OAAO;EACL,YAAY,kBAAkB;GAC5B,IAAI,UAAU,SAAS,GAAG;IAIxB,gBAAgB,WAAW,OAAO;IAClC,WAAW,iBAAiB,UAAU,YAAY;GACpD;GAEA,UAAU,IAAI,aAAa;GAE3B,aAAa;IACX,UAAU,OAAO,aAAa;IAE9B,IAAI,UAAU,SAAS,GACrB,WAAW,oBAAoB,UAAU,YAAY;GAEzD;EACF;EACA,mBAAmB;CACrB;AACF;AAEA,MAAM,sBAAsB,oBAA6C;CACvE,MAAM,gBAAgB,iBAAiB,IAAI,eAAe;CAE1D,IAAI,eAAe,OAAO;CAE1B,MAAM,QAAQ,sBAAsB,eAAe;CAEnD,iBAAiB,IAAI,iBAAiB,KAAK;CAE3C,OAAO;AACT;AAEA,MAAM,0BAAuC;;;;;;;;;;;;;AAc7C,MAAa,aACX,aAAgC,SAChB;CAChB,MAAM,kBAAkB,sBAAsB,UAAU;CAExD,MAAM,YAAY,aACf,kBACC,mBAAmB,eAAe,CAAC,CAAC,UAAU,aAAa,GAC7D,CAAC,eAAe,CAClB;CAEA,MAAM,cAAc,kBACZ,mBAAmB,eAAe,CAAC,CAAC,YAAY,GACtD,CAAC,eAAe,CAClB;CAEA,OAAO,qBAAqB,WAAW,aAAa,iBAAiB;AACvE"}
|