@intlayer/design-system 7.0.8 → 7.0.9-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/esm/components/Accordion/Accordion.mjs +1 -1
- package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
- package/dist/esm/components/Avatar/index.mjs +2 -2
- package/dist/esm/components/Avatar/index.mjs.map +1 -1
- package/dist/esm/components/Badge/index.mjs +1 -1
- package/dist/esm/components/Badge/index.mjs.map +1 -1
- package/dist/esm/components/Breadcrumb/index.mjs +4 -4
- package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
- package/dist/esm/components/Button/Button.mjs +99 -88
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/Button/index.mjs +2 -2
- package/dist/esm/components/ClickOutsideDiv/index.mjs +1 -1
- package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -1
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
- package/dist/esm/components/Command/index.mjs +8 -8
- package/dist/esm/components/Command/index.mjs.map +1 -1
- package/dist/esm/components/Container/index.mjs +14 -13
- package/dist/esm/components/Container/index.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
- package/dist/esm/components/CopyButton/index.mjs +1 -1
- package/dist/esm/components/CopyButton/index.mjs.map +1 -1
- package/dist/esm/components/CopyToClipboard/index.mjs +29 -27
- package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -1
- package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs +6 -3
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs +2 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +40 -22
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +2 -1
- package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +2 -2
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +1 -1
- package/dist/esm/components/DropDown/index.mjs +3 -3
- package/dist/esm/components/DropDown/index.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldInput.mjs +1 -1
- package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -1
- package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldTextArea.mjs +1 -1
- package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
- package/dist/esm/components/Flags/Flag.mjs +1 -1
- package/dist/esm/components/Flags/Flag.mjs.map +1 -1
- package/dist/esm/components/Form/Form.mjs +4 -0
- package/dist/esm/components/Form/Form.mjs.map +1 -1
- package/dist/esm/components/Form/FormBase.mjs +1 -1
- package/dist/esm/components/Form/FormBase.mjs.map +1 -1
- package/dist/esm/components/Form/FormItem.mjs +1 -1
- package/dist/esm/components/Form/FormItem.mjs.map +1 -1
- package/dist/esm/components/Form/FormLabel.mjs +1 -1
- package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
- package/dist/esm/components/Form/FormMessage.mjs +1 -1
- package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
- package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/CheckboxElement.mjs +2 -2
- package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/CodeInputElement.mjs +40 -0
- package/dist/esm/components/Form/elements/CodeInputElement.mjs.map +1 -0
- package/dist/esm/components/Form/elements/FormElement.mjs +2 -2
- package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/FormElementWrapper.mjs +1 -1
- package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
- package/dist/esm/components/Form/elements/InputPasswordElement.mjs +1 -1
- package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/MultiselectElement.mjs +30 -19
- package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/OTPElement.mjs +114 -0
- package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -0
- package/dist/esm/components/Form/elements/SearchInputElement.mjs +17 -0
- package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -0
- package/dist/esm/components/Form/elements/SelectElement.mjs +30 -19
- package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +29 -18
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/index.mjs +3 -1
- package/dist/esm/components/Form/layout/FormItemLayout.mjs +1 -2
- package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
- package/dist/esm/components/Headers/index.mjs +19 -19
- package/dist/esm/components/Headers/index.mjs.map +1 -1
- package/dist/esm/components/HeightResizer/index.mjs +1 -1
- package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
- package/dist/esm/components/HideShow/index.mjs +2 -1
- package/dist/esm/components/HideShow/index.mjs.map +1 -1
- package/dist/esm/components/IDE/Code.mjs +1 -1
- package/dist/esm/components/IDE/Code.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockClient.mjs +1 -1
- package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockServer.mjs +3 -3
- package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeConditionalRenderer.mjs +1 -1
- package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeFormatSelector.mjs +4 -1
- package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs +4 -1
- package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/FileList.mjs +1 -1
- package/dist/esm/components/IDE/FileList.mjs.map +1 -1
- package/dist/esm/components/IDE/IDE.mjs +1 -1
- package/dist/esm/components/IDE/IDE.mjs.map +1 -1
- package/dist/esm/components/IDE/PackageManagerSelector.mjs +4 -1
- package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
- package/dist/esm/components/InformationTag/index.mjs +1 -1
- package/dist/esm/components/InformationTag/index.mjs.map +1 -1
- package/dist/esm/components/Input/Checkbox.mjs +22 -15
- package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
- package/dist/esm/components/Input/CodeInput.mjs +84 -0
- package/dist/esm/components/Input/CodeInput.mjs.map +1 -0
- package/dist/esm/components/Input/Input.mjs +25 -14
- package/dist/esm/components/Input/Input.mjs.map +1 -1
- package/dist/esm/components/Input/InputPassword.mjs +1 -1
- package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
- package/dist/esm/components/Input/OTPInput/Input.mjs +426 -0
- package/dist/esm/components/Input/OTPInput/Input.mjs.map +1 -0
- package/dist/esm/components/Input/OTPInput/index.mjs +495 -0
- package/dist/esm/components/Input/OTPInput/index.mjs.map +1 -0
- package/dist/esm/components/Input/OTPInput.mjs +495 -0
- package/dist/esm/components/Input/OTPInput.mjs.map +1 -0
- package/dist/esm/components/Input/SearchInput.mjs +1 -1
- package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
- package/dist/esm/components/Input/index.mjs +2 -1
- package/dist/esm/components/KeyboardScreenAdapter/index.mjs +1 -1
- package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
- package/dist/esm/components/Label/index.mjs +1 -1
- package/dist/esm/components/Label/index.mjs.map +1 -1
- package/dist/esm/components/Link/Link.mjs +1 -1
- package/dist/esm/components/Link/Link.mjs.map +1 -1
- package/dist/esm/components/Loader/index.mjs +1 -1
- package/dist/esm/components/Loader/index.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -1
- package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -1
- package/dist/esm/components/Logo/Logo.mjs +1 -1
- package/dist/esm/components/Logo/Logo.mjs.map +1 -1
- package/dist/esm/components/Logo/LogoWithTextBelow.mjs +1 -1
- package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +16 -11
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/processor.mjs +1 -1
- package/dist/esm/components/MarkDownRender/processor.mjs.map +1 -1
- package/dist/esm/components/MaxHeightSmoother/index.mjs +1 -1
- package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
- package/dist/esm/components/MaxWidthSmoother/index.mjs +1 -1
- package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
- package/dist/esm/components/Modal/Modal.mjs +48 -41
- package/dist/esm/components/Modal/Modal.mjs.map +1 -1
- package/dist/esm/components/Navbar/Burger.mjs +1 -1
- package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
- package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs +5 -2
- package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
- package/dist/esm/components/Pattern/DotPattern.mjs +1 -1
- package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/SpotLight.mjs +1 -1
- package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
- package/dist/esm/components/Popover/dynamic.mjs +1 -1
- package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
- package/dist/esm/components/Popover/static.mjs +2 -2
- package/dist/esm/components/Popover/static.mjs.map +1 -1
- package/dist/esm/components/PressableSpan/PressableSpan.mjs +1 -1
- package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
- package/dist/esm/components/RightDrawer/RightDrawer.mjs +1 -1
- package/dist/esm/components/Select/Multiselect.mjs +7 -7
- package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
- package/dist/esm/components/Select/Select.mjs +12 -12
- package/dist/esm/components/Select/Select.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/index.mjs +3 -8
- package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/index.mjs +35 -27
- package/dist/esm/components/SwitchSelector/index.mjs.map +1 -1
- package/dist/esm/components/Tab/Tab.mjs +2 -2
- package/dist/esm/components/Tab/Tab.mjs.map +1 -1
- package/dist/esm/components/TabSelector/TabSelector.mjs +1 -1
- package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
- package/dist/esm/components/Table/Table.mjs +1 -1
- package/dist/esm/components/Table/Table.mjs.map +1 -1
- package/dist/esm/components/Tag/index.mjs +1 -1
- package/dist/esm/components/Tag/index.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +1 -1
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +1 -1
- package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +2 -2
- package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toast.mjs +7 -7
- package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toaster.mjs +1 -1
- package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
- package/dist/esm/components/index.mjs +6 -5
- package/dist/esm/hooks/index.mjs +4 -3
- package/dist/esm/hooks/reactQuery.mjs +66 -3
- package/dist/esm/hooks/reactQuery.mjs.map +1 -1
- package/dist/esm/hooks/useAuth/useSession.mjs +5 -3
- package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
- package/dist/esm/hooks/useDevice.mjs +16 -2
- package/dist/esm/hooks/useDevice.mjs.map +1 -1
- package/dist/esm/hooks/useItemSelector.mjs +4 -1
- package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
- package/dist/esm/libs/auth.mjs +77 -32
- package/dist/esm/libs/auth.mjs.map +1 -1
- package/dist/types/Checkbox.d.ts +2 -0
- package/dist/types/Input.d.ts +16 -0
- package/dist/types/Input.d.ts.map +1 -0
- package/dist/types/InputPassword.d.ts +2 -0
- package/dist/types/OTPElement.d.ts +30 -0
- package/dist/types/OTPElement.d.ts.map +1 -0
- package/dist/types/OTPInput.d.ts +3 -0
- package/dist/types/SearchInput.d.ts +1 -0
- package/dist/types/components/Badge/index.d.ts +2 -2
- package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +3 -3
- package/dist/types/components/Breadcrumb/index.d.ts +2 -2
- package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/types/components/Browser/Browser.content.d.ts +11 -11
- package/dist/types/components/Button/Button.d.ts +10 -18
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Button/index.d.ts +2 -2
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +5 -5
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
- package/dist/types/components/Command/index.d.ts +13 -13
- package/dist/types/components/Container/index.d.ts +9 -9
- package/dist/types/components/Container/index.d.ts.map +1 -1
- package/dist/types/components/CopyToClipboard/index.d.ts +7 -3
- package/dist/types/components/CopyToClipboard/index.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.d.ts +25 -25
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +9 -9
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +33 -33
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +25 -25
- package/dist/types/components/DictionaryFieldEditor/KeyPathBreadcrumb.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +25 -25
- package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +33 -33
- package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +9 -9
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +7 -7
- package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +5 -5
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +31 -31
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts.map +1 -1
- package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -3
- package/dist/types/components/Form/Form.d.ts +4 -0
- package/dist/types/components/Form/Form.d.ts.map +1 -1
- package/dist/types/components/Form/FormBase.d.ts +2 -2
- package/dist/types/components/Form/FormBase.d.ts.map +1 -1
- package/dist/types/components/Form/FormField.d.ts +2 -2
- package/dist/types/components/Form/FormField.d.ts.map +1 -1
- package/dist/types/components/Form/FormItem.d.ts +2 -2
- package/dist/types/components/Form/FormItem.d.ts.map +1 -1
- package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts +2 -2
- package/dist/types/components/Form/elements/AutoSizeTextAreaElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts +2 -2
- package/dist/types/components/Form/elements/EditableFieldInputElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/FormElement.d.ts +2 -2
- package/dist/types/components/Form/elements/MultiselectElement.d.ts +2 -2
- package/dist/types/components/Form/elements/MultiselectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/OTPElement.d.ts +30 -0
- package/dist/types/components/Form/elements/OTPElement.d.ts.map +1 -0
- package/dist/types/components/Form/elements/SearchInputElement.d.ts +13 -0
- package/dist/types/components/Form/elements/SearchInputElement.d.ts.map +1 -0
- package/dist/types/components/Form/elements/SelectElement.d.ts +2 -2
- package/dist/types/components/Form/elements/SelectElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts +2 -2
- package/dist/types/components/Form/elements/SwitchSelectorElement.d.ts.map +1 -1
- package/dist/types/components/Form/elements/index.d.ts +3 -1
- package/dist/types/components/HideShow/index.d.ts.map +1 -1
- package/dist/types/components/IDE/FileTree.d.ts.map +1 -1
- package/dist/types/components/IDE/code.content.d.ts +5 -5
- package/dist/types/components/IDE/code.content.d.ts.map +1 -1
- package/dist/types/components/IDE/copyCode.content.d.ts +5 -5
- package/dist/types/components/IDE/copyCode.content.d.ts.map +1 -1
- package/dist/types/components/Input/Checkbox.d.ts +5 -5
- package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
- package/dist/types/components/Input/Input.d.ts +3 -3
- package/dist/types/components/Input/Input.d.ts.map +1 -1
- package/dist/types/components/Input/OTPInput/Input.d.ts +57 -0
- package/dist/types/components/Input/OTPInput/Input.d.ts.map +1 -0
- package/dist/types/components/Input/OTPInput/index.d.ts +78 -0
- package/dist/types/components/Input/OTPInput/index.d.ts.map +1 -0
- package/dist/types/components/Input/OTPInput.d.ts +78 -0
- package/dist/types/components/Input/OTPInput.d.ts.map +1 -0
- package/dist/types/components/Input/SearchInput.d.ts +2 -2
- package/dist/types/components/Input/index.d.ts +2 -1
- package/dist/types/components/Link/Link.d.ts +4 -4
- package/dist/types/components/Loader/index.content.d.ts +3 -3
- package/dist/types/components/Loader/spinner.d.ts +2 -2
- package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +17 -17
- package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +13 -13
- package/dist/types/components/MaxWidthSmoother/index.d.ts +2 -2
- package/dist/types/components/MaxWidthSmoother/index.d.ts.map +1 -1
- package/dist/types/components/Modal/Modal.d.ts.map +1 -1
- package/dist/types/components/Navbar/Burger.d.ts +2 -2
- package/dist/types/components/Navbar/Burger.d.ts.map +1 -1
- package/dist/types/components/Navbar/DesktopNavbar.d.ts +2 -2
- package/dist/types/components/Navbar/DesktopNavbar.d.ts.map +1 -1
- package/dist/types/components/Navbar/MobileNavbar.d.ts +2 -2
- package/dist/types/components/Navbar/MobileNavbar.d.ts.map +1 -1
- package/dist/types/components/Navbar/index.d.ts +2 -2
- package/dist/types/components/Navbar/index.d.ts.map +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +4 -4
- package/dist/types/components/Pagination/pagination.content.d.ts +11 -11
- package/dist/types/components/Popover/static.d.ts +3 -3
- package/dist/types/components/RightDrawer/useRightDrawerStore.d.ts +2 -2
- package/dist/types/components/Select/Multiselect.d.ts.map +1 -1
- package/dist/types/components/Select/Select.d.ts +3 -3
- package/dist/types/components/Select/Select.d.ts.map +1 -1
- package/dist/types/components/SocialNetworks/index.d.ts +2 -2
- package/dist/types/components/SocialNetworks/index.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/index.d.ts +10 -8
- package/dist/types/components/SwitchSelector/index.d.ts.map +1 -1
- package/dist/types/components/Tab/Tab.d.ts +5 -5
- package/dist/types/components/Tab/Tab.d.ts.map +1 -1
- package/dist/types/components/Tab/TabContext.d.ts +2 -2
- package/dist/types/components/TabSelector/TabSelector.d.ts +5 -5
- package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
- package/dist/types/components/Table/table.content.d.ts +3 -3
- package/dist/types/components/Table/table.content.d.ts.map +1 -1
- package/dist/types/components/Tag/index.d.ts +5 -5
- package/dist/types/components/Toaster/Toast.d.ts +2 -2
- package/dist/types/components/Toaster/Toaster.d.ts +2 -2
- package/dist/types/components/index.d.ts +4 -3
- package/dist/types/hooks/index.d.ts +5 -4
- package/dist/types/hooks/reactQuery.d.ts +1258 -65
- package/dist/types/hooks/reactQuery.d.ts.map +1 -1
- package/dist/types/hooks/useAuth/index.d.ts +2 -2
- package/dist/types/hooks/useAuth/useOAuth2.d.ts +2 -1
- package/dist/types/hooks/useAuth/useOAuth2.d.ts.map +1 -1
- package/dist/types/hooks/useAuth/useSession.d.ts +9 -4
- package/dist/types/hooks/useAuth/useSession.d.ts.map +1 -1
- package/dist/types/hooks/useDevice.d.ts +7 -1
- package/dist/types/hooks/useDevice.d.ts.map +1 -1
- package/dist/types/hooks/useItemSelector.d.ts +8 -1
- package/dist/types/hooks/useItemSelector.d.ts.map +1 -1
- package/dist/types/hooks/useScrollBlockage/useScrollBlockageStore.d.ts +2 -2
- package/dist/types/hooks/useUser/index.d.ts +18 -1
- package/dist/types/hooks/useUser/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -0
- package/dist/types/libs/auth.d.ts +3375 -2
- package/dist/types/libs/auth.d.ts.map +1 -1
- package/package.json +51 -45
- package/tailwind.css +55 -34
- package/dist/esm/components/Popover/index.mjs.map +0 -1
- package/dist/esm/utils/camelCase.mjs +0 -12
- package/dist/esm/utils/camelCase.mjs.map +0 -1
- package/dist/types/components/Popover/index.d.ts.map +0 -1
- package/dist/types/utils/camelCase.d.ts +0 -6
- package/dist/types/utils/camelCase.d.ts.map +0 -1
|
@@ -10,7 +10,7 @@ import { useEffect, useState } from "react";
|
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
|
|
12
12
|
//#region src/components/IDE/IDE.tsx
|
|
13
|
-
const IDE = ({ pages: initialPages, isDarkMode, className, activeTab: defaultActiveTab
|
|
13
|
+
const IDE = ({ pages: initialPages, isDarkMode, className, activeTab: defaultActiveTab, ...props }) => {
|
|
14
14
|
const [pages, setPages] = useState(initialPages);
|
|
15
15
|
const tabs = pages.filter(({ isOpen }) => isOpen);
|
|
16
16
|
const firstTabIndex = tabs.findIndex(({ isOpen }) => isOpen);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IDE.mjs","names":["IDE: FC<IDEProps>","path"],"sources":["../../../../src/components/IDE/IDE.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type HTMLAttributes, useEffect, useState } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Container } from '../Container';\nimport { WithResizer } from '../WithResizer';\nimport { FileTree } from './FileTree';\nimport { MarkdownRenderer } from './MarkDownRender';\n\nexport type IDEProps = {\n pages: {\n path: string;\n content: string;\n isOpen?: boolean;\n }[];\n isDarkMode?: boolean;\n activeTab?: number;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport const IDE: FC<IDEProps> = ({\n pages: initialPages,\n isDarkMode,\n className,\n activeTab: defaultActiveTab,\n ...props\n}) => {\n const [pages, setPages] = useState(initialPages);\n const tabs = pages.filter(({ isOpen }) => isOpen);\n\n const firstTabIndex = tabs.findIndex(({ isOpen }) => isOpen);\n const [activeTab, setActiveTab] = useState(defaultActiveTab ?? firstTabIndex);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab ?? firstTabIndex);\n }, [initialPages, defaultActiveTab]);\n\n const { content, path } = pages[activeTab];\n const filePaths = initialPages.map(({ path: title }) => title);\n\n const handleClickFile = (title: string) => {\n const page = pages.find(({ path: tabTitle }) => tabTitle === title);\n if (!page) return;\n\n const newPages = pages.map((page) => {\n if (page.path === title) {\n return { ...page, isOpen: true };\n }\n return page;\n });\n\n setPages(newPages);\n\n const newPageIndex = newPages.findIndex(\n ({ path: tabTitle }) => tabTitle === title\n );\n\n setActiveTab(newPageIndex);\n };\n\n return (\n <Container\n className={cn(\n 'flex size-full flex-col justify-start overflow-hidden shadow-lg',\n className\n )}\n roundedSize=\"3xl\"\n transparency=\"none\"\n {...props}\n >\n <div className=\"flex w-auto flex-row items-center justify-start gap-1 rounded-t-3xl bg-neutral-200 text-neutral text-xs dark:bg-neutral-950\">\n <div className=\"mx-2 flex items-center justify-start gap-2 p-1\">\n <div className=\"size-3 rounded-full bg-red-500\" />\n <div className=\"size-3 rounded-full bg-yellow-500\" />\n <div className=\"size-3 rounded-full bg-green-500\" />\n </div>\n <div className=\"flex size-full overflow-y-auto\">\n {tabs.map(({ path }, index) => {\n const fullPath = path.split('/');\n const title = fullPath[fullPath.length - 1];\n const isActive = index === activeTab;\n\n return (\n <button\n className={cn(\n 'flex h-8 min-w-20 items-center justify-start px-3 py-1 transition',\n isActive\n ? 'bg-card'\n : 'cursor-pointer bg-neutral-200 hover:bg-neutral-300 dark:bg-neutral-950'\n )}\n key={title}\n onClick={() => setActiveTab(index)}\n >\n {title}\n </button>\n );\n })}\n </div>\n </div>\n <div className=\"relative flex size-full flex-1 flex-row justify-start\">\n <div className=\"absolute top-0 left-0 size-full\">\n <div className=\"flex size-full\">\n <WithResizer initialWidth={150}>\n <FileTree\n filesPaths={filePaths}\n activeFile={path}\n onClickFile={handleClickFile}\n />\n </WithResizer>\n\n <div className=\"size-full flex-1 overflow-auto pt-2 text-xs\">\n <MarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </MarkdownRenderer>\n </div>\n </div>\n </div>\n </div>\n </Container>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAaA,OAAqB,EAChC,OAAO,cACP,YACA,WACA,WAAW,
|
|
1
|
+
{"version":3,"file":"IDE.mjs","names":["IDE: FC<IDEProps>","path"],"sources":["../../../../src/components/IDE/IDE.tsx"],"sourcesContent":["'use client';\n\nimport { type FC, type HTMLAttributes, useEffect, useState } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Container } from '../Container';\nimport { WithResizer } from '../WithResizer';\nimport { FileTree } from './FileTree';\nimport { MarkdownRenderer } from './MarkDownRender';\n\nexport type IDEProps = {\n pages: {\n path: string;\n content: string;\n isOpen?: boolean;\n }[];\n isDarkMode?: boolean;\n activeTab?: number;\n} & HTMLAttributes<HTMLDivElement>;\n\nexport const IDE: FC<IDEProps> = ({\n pages: initialPages,\n isDarkMode,\n className,\n activeTab: defaultActiveTab,\n ...props\n}) => {\n const [pages, setPages] = useState(initialPages);\n const tabs = pages.filter(({ isOpen }) => isOpen);\n\n const firstTabIndex = tabs.findIndex(({ isOpen }) => isOpen);\n const [activeTab, setActiveTab] = useState(defaultActiveTab ?? firstTabIndex);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab ?? firstTabIndex);\n }, [initialPages, defaultActiveTab]);\n\n const { content, path } = pages[activeTab];\n const filePaths = initialPages.map(({ path: title }) => title);\n\n const handleClickFile = (title: string) => {\n const page = pages.find(({ path: tabTitle }) => tabTitle === title);\n if (!page) return;\n\n const newPages = pages.map((page) => {\n if (page.path === title) {\n return { ...page, isOpen: true };\n }\n return page;\n });\n\n setPages(newPages);\n\n const newPageIndex = newPages.findIndex(\n ({ path: tabTitle }) => tabTitle === title\n );\n\n setActiveTab(newPageIndex);\n };\n\n return (\n <Container\n className={cn(\n 'flex size-full flex-col justify-start overflow-hidden shadow-lg',\n className\n )}\n roundedSize=\"3xl\"\n transparency=\"none\"\n {...props}\n >\n <div className=\"flex w-auto flex-row items-center justify-start gap-1 rounded-t-3xl bg-neutral-200 text-neutral text-xs dark:bg-neutral-950\">\n <div className=\"mx-2 flex items-center justify-start gap-2 p-1\">\n <div className=\"size-3 rounded-full bg-red-500\" />\n <div className=\"size-3 rounded-full bg-yellow-500\" />\n <div className=\"size-3 rounded-full bg-green-500\" />\n </div>\n <div className=\"flex size-full overflow-y-auto\">\n {tabs.map(({ path }, index) => {\n const fullPath = path.split('/');\n const title = fullPath[fullPath.length - 1];\n const isActive = index === activeTab;\n\n return (\n <button\n className={cn(\n 'flex h-8 min-w-20 items-center justify-start px-3 py-1 transition',\n isActive\n ? 'bg-card'\n : 'cursor-pointer bg-neutral-200 hover:bg-neutral-300 dark:bg-neutral-950'\n )}\n key={title}\n onClick={() => setActiveTab(index)}\n >\n {title}\n </button>\n );\n })}\n </div>\n </div>\n <div className=\"relative flex size-full flex-1 flex-row justify-start\">\n <div className=\"absolute top-0 left-0 size-full\">\n <div className=\"flex size-full\">\n <WithResizer initialWidth={150}>\n <FileTree\n filesPaths={filePaths}\n activeFile={path}\n onClickFile={handleClickFile}\n />\n </WithResizer>\n\n <div className=\"size-full flex-1 overflow-auto pt-2 text-xs\">\n <MarkdownRenderer isDarkMode={isDarkMode}>\n {content}\n </MarkdownRenderer>\n </div>\n </div>\n </div>\n </div>\n </Container>\n );\n};\n"],"mappings":";;;;;;;;;;;;AAmBA,MAAaA,OAAqB,EAChC,OAAO,cACP,YACA,WACA,WAAW,kBACX,GAAG,YACC;CACJ,MAAM,CAAC,OAAO,YAAY,SAAS,aAAa;CAChD,MAAM,OAAO,MAAM,QAAQ,EAAE,aAAa,OAAO;CAEjD,MAAM,gBAAgB,KAAK,WAAW,EAAE,aAAa,OAAO;CAC5D,MAAM,CAAC,WAAW,gBAAgB,SAAS,oBAAoB,cAAc;AAE7E,iBAAgB;AACd,eAAa,oBAAoB,cAAc;IAC9C,CAAC,cAAc,iBAAiB,CAAC;CAEpC,MAAM,EAAE,SAAS,SAAS,MAAM;CAChC,MAAM,YAAY,aAAa,KAAK,EAAE,MAAM,YAAY,MAAM;CAE9D,MAAM,mBAAmB,UAAkB;AAEzC,MAAI,CADS,MAAM,MAAM,EAAE,MAAM,eAAe,aAAa,MAAM,CACxD;EAEX,MAAM,WAAW,MAAM,KAAK,SAAS;AACnC,OAAI,KAAK,SAAS,MAChB,QAAO;IAAE,GAAG;IAAM,QAAQ;IAAM;AAElC,UAAO;IACP;AAEF,WAAS,SAAS;AAMlB,eAJqB,SAAS,WAC3B,EAAE,MAAM,eAAe,aAAa,MACtC,CAEyB;;AAG5B,QACE,qBAAC;EACC,WAAW,GACT,mEACA,UACD;EACD,aAAY;EACZ,cAAa;EACb,GAAI;aAEJ,qBAAC;GAAI,WAAU;cACb,qBAAC;IAAI,WAAU;;KACb,oBAAC,SAAI,WAAU,mCAAmC;KAClD,oBAAC,SAAI,WAAU,sCAAsC;KACrD,oBAAC,SAAI,WAAU,qCAAqC;;KAChD,EACN,oBAAC;IAAI,WAAU;cACZ,KAAK,KAAK,EAAE,gBAAQ,UAAU;KAC7B,MAAM,WAAWC,OAAK,MAAM,IAAI;KAChC,MAAM,QAAQ,SAAS,SAAS,SAAS;AAGzC,YACE,oBAAC;MACC,WAAW,GACT,qEALW,UAAU,YAOjB,YACA,yEACL;MAED,eAAe,aAAa,MAAM;gBAEjC;QAHI,MAIE;MAEX;KACE;IACF,EACN,oBAAC;GAAI,WAAU;aACb,oBAAC;IAAI,WAAU;cACb,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAY,cAAc;gBACzB,oBAAC;OACC,YAAY;OACZ,YAAY;OACZ,aAAa;QACb;OACU,EAEd,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAA6B;iBAC3B;QACgB;OACf;MACF;KACF;IACF;GACI"}
|
|
@@ -11,7 +11,10 @@ const PackageManagerSelector = () => {
|
|
|
11
11
|
return /* @__PURE__ */ jsxs(Select, {
|
|
12
12
|
value: packageManager,
|
|
13
13
|
onValueChange: setPackageManager,
|
|
14
|
-
children: [/* @__PURE__ */ jsx(Select.Trigger, {
|
|
14
|
+
children: [/* @__PURE__ */ jsx(Select.Trigger, {
|
|
15
|
+
className: "py-1",
|
|
16
|
+
children: /* @__PURE__ */ jsx(Select.Value, { placeholder: "Package Manager" })
|
|
17
|
+
}), /* @__PURE__ */ jsxs(Select.Content, { children: [
|
|
15
18
|
/* @__PURE__ */ jsx(Select.Item, {
|
|
16
19
|
value: "npm",
|
|
17
20
|
children: "npm"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageManagerSelector.mjs","names":["PackageManagerSelector: FC"],"sources":["../../../../src/components/IDE/PackageManagerSelector.tsx"],"sourcesContent":["'use client';\n\nimport type { FC } from 'react';\nimport { Select } from '../Select';\nimport { useCodeContext } from './CodeContext';\n\nexport const PackageManagerSelector: FC = () => {\n const { packageManager, setPackageManager } = useCodeContext();\n\n return (\n <Select value={packageManager} onValueChange={setPackageManager}>\n <Select.Trigger>\n <Select.Value placeholder=\"Package Manager\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"npm\">npm</Select.Item>\n <Select.Item value=\"pnpm\">pnpm</Select.Item>\n <Select.Item value=\"yarn\">yarn</Select.Item>\n <Select.Item value=\"bun\">bun</Select.Item>\n </Select.Content>\n </Select>\n );\n};\n"],"mappings":";;;;;;;;AAMA,MAAaA,+BAAmC;CAC9C,MAAM,EAAE,gBAAgB,sBAAsB,gBAAgB;AAE9D,QACE,qBAAC;EAAO,OAAO;EAAgB,eAAe;aAC5C,oBAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"PackageManagerSelector.mjs","names":["PackageManagerSelector: FC"],"sources":["../../../../src/components/IDE/PackageManagerSelector.tsx"],"sourcesContent":["'use client';\n\nimport type { FC } from 'react';\nimport { Select } from '../Select';\nimport { useCodeContext } from './CodeContext';\n\nexport const PackageManagerSelector: FC = () => {\n const { packageManager, setPackageManager } = useCodeContext();\n\n return (\n <Select value={packageManager} onValueChange={setPackageManager}>\n <Select.Trigger className=\"py-1\">\n <Select.Value placeholder=\"Package Manager\" />\n </Select.Trigger>\n <Select.Content>\n <Select.Item value=\"npm\">npm</Select.Item>\n <Select.Item value=\"pnpm\">pnpm</Select.Item>\n <Select.Item value=\"yarn\">yarn</Select.Item>\n <Select.Item value=\"bun\">bun</Select.Item>\n </Select.Content>\n </Select>\n );\n};\n"],"mappings":";;;;;;;;AAMA,MAAaA,+BAAmC;CAC9C,MAAM,EAAE,gBAAgB,sBAAsB,gBAAgB;AAE9D,QACE,qBAAC;EAAO,OAAO;EAAgB,eAAe;aAC5C,oBAAC,OAAO;GAAQ,WAAU;aACxB,oBAAC,OAAO,SAAM,aAAY,oBAAoB;IAC/B,EACjB,qBAAC,OAAO;GACN,oBAAC,OAAO;IAAK,OAAM;cAAM;KAAiB;GAC1C,oBAAC,OAAO;IAAK,OAAM;cAAO;KAAkB;GAC5C,oBAAC,OAAO;IAAK,OAAM;cAAO;KAAkB;GAC5C,oBAAC,OAAO;IAAK,OAAM;cAAM;KAAiB;MAC3B;GACV"}
|
|
@@ -70,7 +70,7 @@ import { jsxs } from "react/jsx-runtime";
|
|
|
70
70
|
*
|
|
71
71
|
* @returns A rendered information tag with icon and text content
|
|
72
72
|
*/
|
|
73
|
-
const InformationTag = ({ className, children
|
|
73
|
+
const InformationTag = ({ className, children, ...props }) => /* @__PURE__ */ jsxs("i", {
|
|
74
74
|
className: cn("text-neutral-400 text-xs", className),
|
|
75
75
|
...props,
|
|
76
76
|
children: ["ⓘ ", children]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["InformationTag: FC<CopiedTextInformationProps>"],"sources":["../../../../src/components/InformationTag/index.tsx"],"sourcesContent":["import type { DetailedHTMLProps, FC } from 'react';\nimport { cn } from '../../utils/cn';\n\n/**\n * Props for the InformationTag component.\n * Extends standard HTML element attributes for maximum flexibility.\n */\ntype CopiedTextInformationProps = DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement>,\n HTMLElement\n>;\n\n/**\n * InformationTag Component\n *\n * A lightweight component that displays informational text with a distinctive info icon (ⓘ).\n * Perfect for showing contextual hints, supplementary information, or subtle guidance text.\n *\n * @component\n * @example\n * Basic usage:\n * ```tsx\n * <InformationTag>This field is required</InformationTag>\n * ```\n *\n * @example\n * With custom styling:\n * ```tsx\n * <InformationTag className=\"text-blue-600 font-medium\">\n * Pro tip: Use keyboard shortcuts for faster navigation\n * </InformationTag>\n * ```\n *\n * @example\n * Form field context:\n * ```tsx\n * <div>\n * <input type=\"email\" placeholder=\"your@email.com\" />\n * <InformationTag>We'll never share your email address</InformationTag>\n * </div>\n * ```\n *\n * @example\n * Status information:\n * ```tsx\n * <InformationTag className=\"text-green-500\">\n * Changes saved automatically\n * </InformationTag>\n * ```\n *\n * Features:\n * - Lightweight and semantic HTML structure using <i> tag\n * - Distinctive info icon (ⓘ) for visual recognition\n * - Default subtle styling with neutral colors\n * - Fully customizable with className overrides\n * - Supports all standard HTML element attributes\n * - Screen reader friendly with meaningful semantic content\n *\n * Accessibility:\n * - Uses semantic <i> tag which is announced by screen readers\n * - Info icon (ⓘ) provides visual context for sighted users\n * - Text content is fully accessible and readable\n * - Supports ARIA attributes through props spreading\n *\n * @param props - Component props extending HTML element attributes\n * @param props.children - The informational text content to display\n * @param props.className - Additional CSS classes for custom styling\n * @param props.title - Optional tooltip text (HTML title attribute)\n * @param props.role - ARIA role (defaults to implicit role from <i> tag)\n * @param props.aria-label - ARIA label for screen readers\n * @param props.id - Unique identifier for the element\n * @param props.onClick - Click event handler\n * @param props.onMouseEnter - Mouse enter event handler\n * @param props.onMouseLeave - Mouse leave event handler\n * @param props.style - Inline styles object\n * @param props.data-* - Data attributes for testing or tracking\n * @param props...rest - All other standard HTML element attributes\n *\n * @returns A rendered information tag with icon and text content\n */\nexport const InformationTag: FC<CopiedTextInformationProps> = ({\n className,\n children,\n ...props\n}) => (\n <i className={cn('text-neutral-400 text-xs', className)} {...props}>\n ⓘ {children}\n </i>\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,MAAaA,kBAAkD,EAC7D,WACA,
|
|
1
|
+
{"version":3,"file":"index.mjs","names":["InformationTag: FC<CopiedTextInformationProps>"],"sources":["../../../../src/components/InformationTag/index.tsx"],"sourcesContent":["import type { DetailedHTMLProps, FC } from 'react';\nimport { cn } from '../../utils/cn';\n\n/**\n * Props for the InformationTag component.\n * Extends standard HTML element attributes for maximum flexibility.\n */\ntype CopiedTextInformationProps = DetailedHTMLProps<\n React.HTMLAttributes<HTMLElement>,\n HTMLElement\n>;\n\n/**\n * InformationTag Component\n *\n * A lightweight component that displays informational text with a distinctive info icon (ⓘ).\n * Perfect for showing contextual hints, supplementary information, or subtle guidance text.\n *\n * @component\n * @example\n * Basic usage:\n * ```tsx\n * <InformationTag>This field is required</InformationTag>\n * ```\n *\n * @example\n * With custom styling:\n * ```tsx\n * <InformationTag className=\"text-blue-600 font-medium\">\n * Pro tip: Use keyboard shortcuts for faster navigation\n * </InformationTag>\n * ```\n *\n * @example\n * Form field context:\n * ```tsx\n * <div>\n * <input type=\"email\" placeholder=\"your@email.com\" />\n * <InformationTag>We'll never share your email address</InformationTag>\n * </div>\n * ```\n *\n * @example\n * Status information:\n * ```tsx\n * <InformationTag className=\"text-green-500\">\n * Changes saved automatically\n * </InformationTag>\n * ```\n *\n * Features:\n * - Lightweight and semantic HTML structure using <i> tag\n * - Distinctive info icon (ⓘ) for visual recognition\n * - Default subtle styling with neutral colors\n * - Fully customizable with className overrides\n * - Supports all standard HTML element attributes\n * - Screen reader friendly with meaningful semantic content\n *\n * Accessibility:\n * - Uses semantic <i> tag which is announced by screen readers\n * - Info icon (ⓘ) provides visual context for sighted users\n * - Text content is fully accessible and readable\n * - Supports ARIA attributes through props spreading\n *\n * @param props - Component props extending HTML element attributes\n * @param props.children - The informational text content to display\n * @param props.className - Additional CSS classes for custom styling\n * @param props.title - Optional tooltip text (HTML title attribute)\n * @param props.role - ARIA role (defaults to implicit role from <i> tag)\n * @param props.aria-label - ARIA label for screen readers\n * @param props.id - Unique identifier for the element\n * @param props.onClick - Click event handler\n * @param props.onMouseEnter - Mouse enter event handler\n * @param props.onMouseLeave - Mouse leave event handler\n * @param props.style - Inline styles object\n * @param props.data-* - Data attributes for testing or tracking\n * @param props...rest - All other standard HTML element attributes\n *\n * @returns A rendered information tag with icon and text content\n */\nexport const InformationTag: FC<CopiedTextInformationProps> = ({\n className,\n children,\n ...props\n}) => (\n <i className={cn('text-neutral-400 text-xs', className)} {...props}>\n ⓘ {children}\n </i>\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFA,MAAaA,kBAAkD,EAC7D,WACA,UACA,GAAG,YAEH,qBAAC;CAAE,WAAW,GAAG,4BAA4B,UAAU;CAAE,GAAI;YAAO,MAC/D;EACD"}
|
|
@@ -3,18 +3,26 @@ import { cva } from "class-variance-authority";
|
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/components/Input/Checkbox.tsx
|
|
6
|
-
const checkboxVariants = cva(
|
|
6
|
+
const checkboxVariants = cva([
|
|
7
|
+
"appearance-none",
|
|
8
|
+
"pointer relative border-2",
|
|
9
|
+
"focus:outline-0",
|
|
10
|
+
"checked:border-current checked:bg-current checked:hover:bg-current/80",
|
|
11
|
+
"ring-current/20 ring-offset-current",
|
|
12
|
+
"hover:bg-current/20",
|
|
13
|
+
"disabled:opacity-50",
|
|
14
|
+
"ring-0 transition-all duration-300 ease-in-out hover:ring-4 focus-visible:ring-6",
|
|
15
|
+
"checked:before:absolute checked:before:inset-0 checked:before:content-['✓']",
|
|
16
|
+
"checked:before:flex checked:before:items-center checked:before:justify-center",
|
|
17
|
+
"checked:before:text-text-opposite/80",
|
|
18
|
+
"rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl"
|
|
19
|
+
].join(" "), {
|
|
7
20
|
variants: {
|
|
8
|
-
variant: { default:
|
|
9
|
-
"pointer rounded border-2 bg-input-background text-input-text shadow-none outline-0 transition-all",
|
|
10
|
-
"border-input-border hover:border-input-border-hover focus:border-input-border-focus focus:outline-0 focus:[box-shadow:none]",
|
|
11
|
-
"checked:border-checkbox-checked-border checked:bg-checkbox-checked",
|
|
12
|
-
"disabled:opacity-50"
|
|
13
|
-
] },
|
|
21
|
+
variant: { default: "" },
|
|
14
22
|
size: {
|
|
15
|
-
sm: "size-4",
|
|
16
|
-
md: "size-5",
|
|
17
|
-
lg: "size-6"
|
|
23
|
+
sm: "size-4 rounded-md",
|
|
24
|
+
md: "size-5 rounded-lg",
|
|
25
|
+
lg: "size-6 rounded-xl"
|
|
18
26
|
},
|
|
19
27
|
color: {
|
|
20
28
|
primary: "accent-primary",
|
|
@@ -59,15 +67,14 @@ let CheckboxColor = /* @__PURE__ */ function(CheckboxColor$1) {
|
|
|
59
67
|
CheckboxColor$1["CUSTOM"] = "custom";
|
|
60
68
|
return CheckboxColor$1;
|
|
61
69
|
}({});
|
|
62
|
-
const Input = ({ validationStyleEnabled = false, label, size, color, name, variant, className, labelClassName
|
|
70
|
+
const Input = ({ validationStyleEnabled = false, label, size, color, name, variant, className, labelClassName, ...props }) => /* @__PURE__ */ jsx("input", {
|
|
63
71
|
type: "checkbox",
|
|
64
|
-
className: checkboxVariants({
|
|
72
|
+
className: cn(checkboxVariants({
|
|
65
73
|
variant,
|
|
66
74
|
size,
|
|
67
75
|
color,
|
|
68
|
-
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
|
|
69
|
-
|
|
70
|
-
}),
|
|
76
|
+
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
|
|
77
|
+
}), className),
|
|
71
78
|
...props
|
|
72
79
|
});
|
|
73
80
|
const Checkbox = (props) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.mjs","names":["Input: FC<CheckboxProps>","Checkbox: FC<CheckboxProps>"],"sources":["../../../../src/components/Input/Checkbox.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type {\n DetailedHTMLProps,\n FC,\n InputHTMLAttributes,\n ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport const checkboxVariants = cva(
|
|
1
|
+
{"version":3,"file":"Checkbox.mjs","names":["Input: FC<CheckboxProps>","Checkbox: FC<CheckboxProps>"],"sources":["../../../../src/components/Input/Checkbox.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type {\n DetailedHTMLProps,\n FC,\n InputHTMLAttributes,\n ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport const checkboxVariants = cva(\n [\n 'appearance-none',\n 'pointer relative border-2',\n 'focus:outline-0',\n 'checked:border-current checked:bg-current checked:hover:bg-current/80',\n 'ring-current/20 ring-offset-current',\n 'hover:bg-current/20',\n 'disabled:opacity-50',\n\n // Ring + animation\n 'ring-0 transition-all duration-300 ease-in-out hover:ring-4 focus-visible:ring-6',\n\n // centered custom checkmark with text-opposite color\n \"checked:before:absolute checked:before:inset-0 checked:before:content-['✓']\",\n 'checked:before:flex checked:before:items-center checked:before:justify-center',\n 'checked:before:text-text-opposite/80',\n\n // Corner shape\n 'rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl',\n ].join(' '),\n {\n variants: {\n variant: {\n default: '',\n },\n size: {\n sm: 'size-4 rounded-md',\n md: 'size-5 rounded-lg',\n lg: 'size-6 rounded-xl',\n },\n color: {\n primary: 'accent-primary',\n secondary: 'accent-secondary',\n destructive: 'accent-destructive',\n neutral: 'accent-neutral',\n light: 'accent-light',\n text: 'accent-text',\n dark: 'accent-dark',\n error: 'accent-error',\n success: 'accent-success',\n custom: 'accent-custom',\n },\n validationStyleEnabled: {\n disabled: '',\n enabled: 'valid:border-success invalid:border-error',\n },\n },\n defaultVariants: {\n variant: 'default',\n color: 'primary',\n validationStyleEnabled: 'disabled',\n size: 'md',\n },\n }\n);\n\nexport enum CheckboxSize {\n SM = 'sm',\n MD = 'md',\n LG = 'lg',\n}\n\nexport enum CheckboxColor {\n PRIMARY = 'primary',\n SECONDARY = 'secondary',\n DESTRUCTIVE = 'destructive',\n NEUTRAL = 'neutral',\n LIGHT = 'light',\n TEXT = 'text',\n DARK = 'dark',\n ERROR = 'error',\n SUCCESS = 'success',\n CUSTOM = 'custom',\n}\n\nexport type CheckboxProps = Omit<\n DetailedHTMLProps<InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>,\n 'size'\n> & {\n name: string;\n validationStyleEnabled?: boolean;\n label?: ReactNode;\n} & Omit<\n VariantProps<typeof checkboxVariants>,\n 'validationStyleEnabled' | 'size' | 'color'\n > & {\n size?: CheckboxSize | `${CheckboxSize}`;\n color?: CheckboxColor | `${CheckboxColor}`;\n labelClassName?: string;\n };\n\nconst Input: FC<CheckboxProps> = ({\n validationStyleEnabled = false,\n label,\n size,\n color,\n name,\n variant,\n className,\n labelClassName,\n ...props\n}) => (\n <input\n type=\"checkbox\"\n className={cn(\n checkboxVariants({\n variant,\n size,\n color,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n }),\n className\n )}\n {...props}\n />\n);\n\nexport const Checkbox: FC<CheckboxProps> = (props) => {\n const { label, name, id } = props;\n\n return label ? (\n <label\n htmlFor={id ?? name}\n className={cn(\n 'flex w-full cursor-pointer items-center gap-x-4 font-medium text-sm',\n props.labelClassName\n )}\n >\n <Input id={id ?? name} {...props} />\n {label}\n </label>\n ) : (\n <Input id={id ?? name} {...props} />\n );\n};\n"],"mappings":";;;;;AASA,MAAa,mBAAmB,IAC9B;CACE;CACA;CACA;CACA;CACA;CACA;CACA;CAGA;CAGA;CACA;CACA;CAGA;CACD,CAAC,KAAK,IAAI,EACX;CACE,UAAU;EACR,SAAS,EACP,SAAS,IACV;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACD,OAAO;GACL,SAAS;GACT,WAAW;GACX,aAAa;GACb,SAAS;GACT,OAAO;GACP,MAAM;GACN,MAAM;GACN,OAAO;GACP,SAAS;GACT,QAAQ;GACT;EACD,wBAAwB;GACtB,UAAU;GACV,SAAS;GACV;EACF;CACD,iBAAiB;EACf,SAAS;EACT,OAAO;EACP,wBAAwB;EACxB,MAAM;EACP;CACF,CACF;AAED,IAAY,wDAAL;AACL;AACA;AACA;;;AAGF,IAAY,0DAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAmBF,MAAMA,SAA4B,EAChC,yBAAyB,OACzB,OACA,MACA,OACA,MACA,SACA,WACA,gBACA,GAAG,YAEH,oBAAC;CACC,MAAK;CACL,WAAW,GACT,iBAAiB;EACf;EACA;EACA;EACA,wBAAwB,yBAAyB,YAAY;EAC9D,CAAC,EACF,UACD;CACD,GAAI;EACJ;AAGJ,MAAaC,YAA+B,UAAU;CACpD,MAAM,EAAE,OAAO,MAAM,OAAO;AAE5B,QAAO,QACL,qBAAC;EACC,SAAS,MAAM;EACf,WAAW,GACT,uEACA,MAAM,eACP;aAED,oBAAC;GAAM,IAAI,MAAM;GAAM,GAAI;IAAS,EACnC;GACK,GAER,oBAAC;EAAM,IAAI,MAAM;EAAM,GAAI;GAAS"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import { cn } from "../../utils/cn.mjs";
|
|
5
|
+
import { useRef, useState } from "react";
|
|
6
|
+
import { jsx } from "react/jsx-runtime";
|
|
7
|
+
|
|
8
|
+
//#region src/components/Input/CodeInput.tsx
|
|
9
|
+
const CodeInput = ({ length = 6, onValueChange, defaultValue = "", value: controlledValue, disabled = false, containerClassName, slotClassName, "aria-invalid": ariaInvalid }) => {
|
|
10
|
+
const isControlled = controlledValue !== void 0;
|
|
11
|
+
const [internalValue, setInternalValue] = useState(defaultValue);
|
|
12
|
+
const value = isControlled ? controlledValue : internalValue;
|
|
13
|
+
const inputRefs = useRef([]);
|
|
14
|
+
const handleChange = (index, newValue) => {
|
|
15
|
+
const digit = newValue.replace(/\D/g, "").slice(-1);
|
|
16
|
+
const newCode = value.split("");
|
|
17
|
+
while (newCode.length < length) newCode.push("");
|
|
18
|
+
newCode[index] = digit;
|
|
19
|
+
const finalValue = newCode.join("");
|
|
20
|
+
if (!isControlled) setInternalValue(finalValue);
|
|
21
|
+
onValueChange?.(finalValue);
|
|
22
|
+
if (digit && index < length - 1) inputRefs.current[index + 1]?.focus();
|
|
23
|
+
};
|
|
24
|
+
const handleKeyDown = (index, e) => {
|
|
25
|
+
if (e.key === "Backspace") {
|
|
26
|
+
const newCode = value.split("");
|
|
27
|
+
if (!newCode[index] && index > 0) {
|
|
28
|
+
e.preventDefault();
|
|
29
|
+
newCode[index - 1] = "";
|
|
30
|
+
const finalValue = newCode.join("");
|
|
31
|
+
if (!isControlled) setInternalValue(finalValue);
|
|
32
|
+
onValueChange?.(finalValue);
|
|
33
|
+
inputRefs.current[index - 1]?.focus();
|
|
34
|
+
} else if (newCode[index]) {
|
|
35
|
+
newCode[index] = "";
|
|
36
|
+
const finalValue = newCode.join("");
|
|
37
|
+
if (!isControlled) setInternalValue(finalValue);
|
|
38
|
+
onValueChange?.(finalValue);
|
|
39
|
+
}
|
|
40
|
+
} else if (e.key === "ArrowLeft" && index > 0) {
|
|
41
|
+
e.preventDefault();
|
|
42
|
+
inputRefs.current[index - 1]?.focus();
|
|
43
|
+
} else if (e.key === "ArrowRight" && index < length - 1) {
|
|
44
|
+
e.preventDefault();
|
|
45
|
+
inputRefs.current[index + 1]?.focus();
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const handlePaste = (e) => {
|
|
49
|
+
e.preventDefault();
|
|
50
|
+
const newCode = e.clipboardData.getData("text").replace(/\D/g, "").slice(0, length).split("");
|
|
51
|
+
while (newCode.length < length) newCode.push("");
|
|
52
|
+
const finalValue = newCode.join("");
|
|
53
|
+
if (!isControlled) setInternalValue(finalValue);
|
|
54
|
+
onValueChange?.(finalValue);
|
|
55
|
+
const nextEmptyIndex = newCode.findIndex((digit) => !digit);
|
|
56
|
+
const focusIndex = nextEmptyIndex === -1 ? length - 1 : nextEmptyIndex;
|
|
57
|
+
inputRefs.current[focusIndex]?.focus();
|
|
58
|
+
};
|
|
59
|
+
const digits = value.split("");
|
|
60
|
+
while (digits.length < length) digits.push("");
|
|
61
|
+
return /* @__PURE__ */ jsx("div", {
|
|
62
|
+
className: cn("flex items-center gap-2", disabled && "opacity-50", containerClassName),
|
|
63
|
+
children: Array.from({ length }).map((_, index) => /* @__PURE__ */ jsx("input", {
|
|
64
|
+
ref: (el) => {
|
|
65
|
+
inputRefs.current[index] = el;
|
|
66
|
+
},
|
|
67
|
+
type: "text",
|
|
68
|
+
inputMode: "numeric",
|
|
69
|
+
pattern: "[0-9]*",
|
|
70
|
+
maxLength: 1,
|
|
71
|
+
value: digits[index] || "",
|
|
72
|
+
onChange: (e) => handleChange(index, e.target.value),
|
|
73
|
+
onKeyDown: (e) => handleKeyDown(index, e),
|
|
74
|
+
onPaste: handlePaste,
|
|
75
|
+
disabled,
|
|
76
|
+
"aria-invalid": ariaInvalid,
|
|
77
|
+
className: cn("relative flex h-12 w-12 items-center justify-center rounded-md border border-input bg-neutral-50 text-center text-base font-medium shadow-xs outline-none transition-all", "focus:z-10 focus:border-ring focus:ring-[3px] focus:ring-ring/50", "disabled:cursor-not-allowed disabled:opacity-50", "dark:bg-input/30", ariaInvalid && "border-destructive focus:border-destructive focus:ring-destructive/20 dark:focus:ring-destructive/40", slotClassName)
|
|
78
|
+
}, index))
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { CodeInput };
|
|
84
|
+
//# sourceMappingURL=CodeInput.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeInput.mjs","names":["CodeInput: FC<CodeInputProps>"],"sources":["../../../../src/components/Input/CodeInput.tsx"],"sourcesContent":["'use client';\n\nimport {\n type ChangeEvent,\n type ClipboardEvent,\n type FC,\n type KeyboardEvent,\n useRef,\n useState,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CodeInputProps {\n /** Number of input fields (default: 6) */\n length?: number;\n /** Callback when value changes */\n onValueChange?: (value: string) => void;\n /** Default value */\n defaultValue?: string;\n /** Current value (controlled) */\n value?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Custom class name for container */\n containerClassName?: string;\n /** Custom class name for each input slot */\n slotClassName?: string;\n /** Whether to show error state */\n 'aria-invalid'?: boolean;\n}\n\nexport const CodeInput: FC<CodeInputProps> = ({\n length = 6,\n onValueChange,\n defaultValue = '',\n value: controlledValue,\n disabled = false,\n containerClassName,\n slotClassName,\n 'aria-invalid': ariaInvalid,\n}) => {\n const isControlled = controlledValue !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const value = isControlled ? controlledValue : internalValue;\n \n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n const handleChange = (index: number, newValue: string) => {\n // Only allow digits\n const digit = newValue.replace(/\\D/g, '').slice(-1);\n \n const newCode = value.split('');\n while (newCode.length < length) {\n newCode.push('');\n }\n newCode[index] = digit;\n \n const finalValue = newCode.join('');\n \n if (!isControlled) {\n setInternalValue(finalValue);\n }\n onValueChange?.(finalValue);\n\n // Auto-focus next input\n if (digit && index < length - 1) {\n inputRefs.current[index + 1]?.focus();\n }\n };\n\n const handleKeyDown = (index: number, e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n const newCode = value.split('');\n \n if (!newCode[index] && index > 0) {\n // If current is empty, go back and clear previous\n e.preventDefault();\n newCode[index - 1] = '';\n const finalValue = newCode.join('');\n \n if (!isControlled) {\n setInternalValue(finalValue);\n }\n onValueChange?.(finalValue);\n inputRefs.current[index - 1]?.focus();\n } else if (newCode[index]) {\n // Clear current\n newCode[index] = '';\n const finalValue = newCode.join('');\n \n if (!isControlled) {\n setInternalValue(finalValue);\n }\n onValueChange?.(finalValue);\n }\n } else if (e.key === 'ArrowLeft' && index > 0) {\n e.preventDefault();\n inputRefs.current[index - 1]?.focus();\n } else if (e.key === 'ArrowRight' && index < length - 1) {\n e.preventDefault();\n inputRefs.current[index + 1]?.focus();\n }\n };\n\n const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text').replace(/\\D/g, '');\n const newCode = pastedData.slice(0, length).split('');\n \n while (newCode.length < length) {\n newCode.push('');\n }\n \n const finalValue = newCode.join('');\n \n if (!isControlled) {\n setInternalValue(finalValue);\n }\n onValueChange?.(finalValue);\n\n // Focus the next empty input or the last one\n const nextEmptyIndex = newCode.findIndex((digit) => !digit);\n const focusIndex = nextEmptyIndex === -1 ? length - 1 : nextEmptyIndex;\n inputRefs.current[focusIndex]?.focus();\n };\n\n const digits = value.split('');\n while (digits.length < length) {\n digits.push('');\n }\n\n return (\n <div\n className={cn(\n 'flex items-center gap-2',\n disabled && 'opacity-50',\n containerClassName\n )}\n >\n {Array.from({ length }).map((_, index) => (\n <input\n key={index}\n ref={(el) => {\n inputRefs.current[index] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n pattern=\"[0-9]*\"\n maxLength={1}\n value={digits[index] || ''}\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleChange(index, e.target.value)\n }\n onKeyDown={(e: KeyboardEvent<HTMLInputElement>) =>\n handleKeyDown(index, e)\n }\n onPaste={handlePaste}\n disabled={disabled}\n aria-invalid={ariaInvalid}\n className={cn(\n 'relative flex h-12 w-12 items-center justify-center rounded-md border border-input bg-neutral-50 text-center text-base font-medium shadow-xs outline-none transition-all',\n 'focus:z-10 focus:border-ring focus:ring-[3px] focus:ring-ring/50',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'dark:bg-input/30',\n ariaInvalid &&\n 'border-destructive focus:border-destructive focus:ring-destructive/20 dark:focus:ring-destructive/40',\n slotClassName\n )}\n />\n ))}\n </div>\n );\n};\n\n"],"mappings":";;;;;;;;AA+BA,MAAaA,aAAiC,EAC5C,SAAS,GACT,eACA,eAAe,IACf,OAAO,iBACP,WAAW,OACX,oBACA,eACA,gBAAgB,kBACZ;CACJ,MAAM,eAAe,oBAAoB;CACzC,MAAM,CAAC,eAAe,oBAAoB,SAAS,aAAa;CAChE,MAAM,QAAQ,eAAe,kBAAkB;CAE/C,MAAM,YAAY,OAAoC,EAAE,CAAC;CAEzD,MAAM,gBAAgB,OAAe,aAAqB;EAExD,MAAM,QAAQ,SAAS,QAAQ,OAAO,GAAG,CAAC,MAAM,GAAG;EAEnD,MAAM,UAAU,MAAM,MAAM,GAAG;AAC/B,SAAO,QAAQ,SAAS,OACtB,SAAQ,KAAK,GAAG;AAElB,UAAQ,SAAS;EAEjB,MAAM,aAAa,QAAQ,KAAK,GAAG;AAEnC,MAAI,CAAC,aACH,kBAAiB,WAAW;AAE9B,kBAAgB,WAAW;AAG3B,MAAI,SAAS,QAAQ,SAAS,EAC5B,WAAU,QAAQ,QAAQ,IAAI,OAAO;;CAIzC,MAAM,iBAAiB,OAAe,MAAuC;AAC3E,MAAI,EAAE,QAAQ,aAAa;GACzB,MAAM,UAAU,MAAM,MAAM,GAAG;AAE/B,OAAI,CAAC,QAAQ,UAAU,QAAQ,GAAG;AAEhC,MAAE,gBAAgB;AAClB,YAAQ,QAAQ,KAAK;IACrB,MAAM,aAAa,QAAQ,KAAK,GAAG;AAEnC,QAAI,CAAC,aACH,kBAAiB,WAAW;AAE9B,oBAAgB,WAAW;AAC3B,cAAU,QAAQ,QAAQ,IAAI,OAAO;cAC5B,QAAQ,QAAQ;AAEzB,YAAQ,SAAS;IACjB,MAAM,aAAa,QAAQ,KAAK,GAAG;AAEnC,QAAI,CAAC,aACH,kBAAiB,WAAW;AAE9B,oBAAgB,WAAW;;aAEpB,EAAE,QAAQ,eAAe,QAAQ,GAAG;AAC7C,KAAE,gBAAgB;AAClB,aAAU,QAAQ,QAAQ,IAAI,OAAO;aAC5B,EAAE,QAAQ,gBAAgB,QAAQ,SAAS,GAAG;AACvD,KAAE,gBAAgB;AAClB,aAAU,QAAQ,QAAQ,IAAI,OAAO;;;CAIzC,MAAM,eAAe,MAAwC;AAC3D,IAAE,gBAAgB;EAElB,MAAM,UADa,EAAE,cAAc,QAAQ,OAAO,CAAC,QAAQ,OAAO,GAAG,CAC1C,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG;AAErD,SAAO,QAAQ,SAAS,OACtB,SAAQ,KAAK,GAAG;EAGlB,MAAM,aAAa,QAAQ,KAAK,GAAG;AAEnC,MAAI,CAAC,aACH,kBAAiB,WAAW;AAE9B,kBAAgB,WAAW;EAG3B,MAAM,iBAAiB,QAAQ,WAAW,UAAU,CAAC,MAAM;EAC3D,MAAM,aAAa,mBAAmB,KAAK,SAAS,IAAI;AACxD,YAAU,QAAQ,aAAa,OAAO;;CAGxC,MAAM,SAAS,MAAM,MAAM,GAAG;AAC9B,QAAO,OAAO,SAAS,OACrB,QAAO,KAAK,GAAG;AAGjB,QACE,oBAAC;EACC,WAAW,GACT,2BACA,YAAY,cACZ,mBACD;YAEA,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC,KAAK,GAAG,UAC9B,oBAAC;GAEC,MAAM,OAAO;AACX,cAAU,QAAQ,SAAS;;GAE7B,MAAK;GACL,WAAU;GACV,SAAQ;GACR,WAAW;GACX,OAAO,OAAO,UAAU;GACxB,WAAW,MACT,aAAa,OAAO,EAAE,OAAO,MAAM;GAErC,YAAY,MACV,cAAc,OAAO,EAAE;GAEzB,SAAS;GACC;GACV,gBAAc;GACd,WAAW,GACT,4KACA,oEACA,mDACA,oBACA,eACE,wGACF,cACD;KA1BI,MA2BL,CACF;GACE"}
|
|
@@ -2,20 +2,32 @@ import { cva } from "class-variance-authority";
|
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/Input/Input.tsx
|
|
5
|
-
const
|
|
5
|
+
const cn = (...classes) => classes.filter(Boolean).join(" ");
|
|
6
|
+
const inputVariants = cva([
|
|
7
|
+
"w-full select-text resize-none text-base shadow-none outline-none",
|
|
8
|
+
"transition-shadow duration-100 md:text-sm",
|
|
9
|
+
"ring-0",
|
|
10
|
+
"disabled:opacity-50",
|
|
11
|
+
"rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl"
|
|
12
|
+
].join(" "), {
|
|
6
13
|
variants: {
|
|
7
14
|
variant: {
|
|
8
15
|
default: [
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
"text-text",
|
|
17
|
+
"bg-neutral-50 dark:bg-neutral-950",
|
|
18
|
+
"ring-neutral-100 dark:ring-neutral-700",
|
|
19
|
+
"ring-offset-neutral-100 dark:ring-offset-neutral-700",
|
|
20
|
+
"focus-visible:outline-none",
|
|
21
|
+
"disabled:ring-0",
|
|
22
|
+
"focus-visible:ring-3",
|
|
23
|
+
"[box-shadow:none] focus:[box-shadow:none]",
|
|
24
|
+
"aria-invalid:border-error"
|
|
25
|
+
].join(" "),
|
|
26
|
+
invisible: ["border-none bg-inherit text-inherit outline-none ring-0"].join(" ")
|
|
15
27
|
},
|
|
16
28
|
size: {
|
|
17
|
-
md: "px-2 py-3 md:py-
|
|
18
|
-
lg: "p-4
|
|
29
|
+
md: "px-2 py-3 md:py-2",
|
|
30
|
+
lg: "p-4"
|
|
19
31
|
},
|
|
20
32
|
validationStyleEnabled: {
|
|
21
33
|
disabled: "",
|
|
@@ -38,13 +50,12 @@ let InputSize = /* @__PURE__ */ function(InputSize$1) {
|
|
|
38
50
|
InputSize$1["LG"] = "lg";
|
|
39
51
|
return InputSize$1;
|
|
40
52
|
}({});
|
|
41
|
-
const Input = ({ validationStyleEnabled = false, variant, size, className
|
|
42
|
-
className: inputVariants({
|
|
53
|
+
const Input = ({ validationStyleEnabled = false, variant, size, className, ...props }) => /* @__PURE__ */ jsx("input", {
|
|
54
|
+
className: cn(inputVariants({
|
|
43
55
|
variant,
|
|
44
56
|
size,
|
|
45
|
-
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
|
|
46
|
-
|
|
47
|
-
}),
|
|
57
|
+
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
|
|
58
|
+
}), className),
|
|
48
59
|
...props
|
|
49
60
|
});
|
|
50
61
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.mjs","names":["Input: FC<InputProps>"],"sources":["../../../../src/components/Input/Input.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type { DetailedHTMLProps, FC, InputHTMLAttributes } from 'react';\n\nexport const inputVariants = cva(
|
|
1
|
+
{"version":3,"file":"Input.mjs","names":["Input: FC<InputProps>"],"sources":["../../../../src/components/Input/Input.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport type { DetailedHTMLProps, FC, InputHTMLAttributes } from 'react';\n\n// Optional: your own cn helper to merge class names\nconst cn = (...classes: (string | undefined | false | null)[]) =>\n classes.filter(Boolean).join(' ');\n\nexport const inputVariants = cva(\n [\n // base styles\n 'w-full select-text resize-none text-base shadow-none outline-none',\n 'transition-shadow duration-100 md:text-sm',\n 'ring-0', // base ring\n 'disabled:opacity-50',\n\n // Corner shape\n 'rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl',\n ].join(' '),\n {\n variants: {\n variant: {\n default: [\n 'text-text',\n 'bg-neutral-50 dark:bg-neutral-950',\n 'ring-neutral-100 dark:ring-neutral-700',\n 'ring-offset-neutral-100 dark:ring-offset-neutral-700',\n\n // Focus ring + animation\n 'focus-visible:outline-none',\n\n 'disabled:ring-0',\n 'focus-visible:ring-3',\n\n // Remove any weird box-shadow\n '[box-shadow:none] focus:[box-shadow:none]',\n\n // aria-invalid border color\n 'aria-invalid:border-error',\n ].join(' '),\n invisible: [\n 'border-none bg-inherit text-inherit outline-none ring-0',\n ].join(' '),\n },\n size: {\n md: 'px-2 py-3 md:py-2',\n lg: 'p-4',\n },\n validationStyleEnabled: {\n disabled: '',\n enabled: 'valid:border-success invalid:border-error',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n validationStyleEnabled: 'disabled',\n },\n }\n);\n\nexport enum InputVariant {\n DEFAULT = 'default',\n INVISIBLE = 'invisible',\n}\n\nexport enum InputSize {\n MD = 'md',\n LG = 'lg',\n}\n\nexport type InputProps = DetailedHTMLProps<\n InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n> & {\n validationStyleEnabled?: boolean;\n} & Omit<\n VariantProps<typeof inputVariants>,\n 'validationStyleEnabled' | 'variant' | 'size'\n > & {\n variant?: InputVariant;\n size?: InputSize;\n };\n\nexport const Input: FC<InputProps> = ({\n validationStyleEnabled = false,\n variant,\n size,\n className,\n ...props\n}) => (\n <input\n className={cn(\n inputVariants({\n variant,\n size,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n }),\n className // <- merged *outside* cva\n )}\n {...props}\n />\n);\n"],"mappings":";;;;AAIA,MAAM,MAAM,GAAG,YACb,QAAQ,OAAO,QAAQ,CAAC,KAAK,IAAI;AAEnC,MAAa,gBAAgB,IAC3B;CAEE;CACA;CACA;CACA;CAGA;CACD,CAAC,KAAK,IAAI,EACX;CACE,UAAU;EACR,SAAS;GACP,SAAS;IACP;IACA;IACA;IACA;IAGA;IAEA;IACA;IAGA;IAGA;IACD,CAAC,KAAK,IAAI;GACX,WAAW,CACT,0DACD,CAAC,KAAK,IAAI;GACZ;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACL;EACD,wBAAwB;GACtB,UAAU;GACV,SAAS;GACV;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACN,wBAAwB;EACzB;CACF,CACF;AAED,IAAY,wDAAL;AACL;AACA;;;AAGF,IAAY,kDAAL;AACL;AACA;;;AAgBF,MAAaA,SAAyB,EACpC,yBAAyB,OACzB,SACA,MACA,WACA,GAAG,YAEH,oBAAC;CACC,WAAW,GACT,cAAc;EACZ;EACA;EACA,wBAAwB,yBAAyB,YAAY;EAC9D,CAAC,EACF,UACD;CACD,GAAI;EACJ"}
|
|
@@ -27,7 +27,7 @@ const InputPassword = (props) => {
|
|
|
27
27
|
onClick: handlePasswordReveal,
|
|
28
28
|
"aria-label": isPasswordRevealed ? "Hide password" : "Show password",
|
|
29
29
|
children: /* @__PURE__ */ jsx(EyeIconComponent, {
|
|
30
|
-
className: "mr-2 inline-block text-neutral",
|
|
30
|
+
className: "mr-2 inline-block cursor-pointer text-neutral",
|
|
31
31
|
size: 20
|
|
32
32
|
})
|
|
33
33
|
})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputPassword.mjs","names":["InputPassword: FC<InputPasswordProps>","handlePasswordReveal: MouseEventHandler<HTMLButtonElement>","isPasswordRevealed"],"sources":["../../../../src/components/Input/InputPassword.tsx"],"sourcesContent":["'use client';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { type FC, type MouseEventHandler, useState } from 'react';\nimport { Input, type InputProps } from './Input';\n\ntype InputPasswordProps = Omit<InputProps, 'type'>;\n\nexport const InputPassword: FC<InputPasswordProps> = (props) => {\n const [isPasswordRevealed, setIsPasswordRevealed] = useState(false);\n\n const handlePasswordReveal: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsPasswordRevealed((isPasswordRevealed) => !isPasswordRevealed);\n };\n\n const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;\n\n return (\n <div className=\"relative\">\n <Input\n {...props}\n aria-label=\"password\"\n type={isPasswordRevealed ? 'text' : 'password'}\n />\n\n <button\n data-testid=\"eye-icon\"\n className=\"absolute right-2 h-full flex-row items-center\"\n onClick={handlePasswordReveal}\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <EyeIconComponent\n className=\"mr-2 inline-block text-neutral\"\n size={20}\n />\n </button>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAQA,MAAaA,iBAAyC,UAAU;CAC9D,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,MAAM;CAEnE,MAAMC,wBAA8D,MAAM;AACxE,IAAE,gBAAgB;AAClB,IAAE,iBAAiB;AACnB,yBAAuB,yBAAuB,CAACC,qBAAmB;;CAGpE,MAAM,mBAAmB,qBAAqB,UAAU;AAExD,QACE,qBAAC;EAAI,WAAU;aACb,oBAAC;GACC,GAAI;GACJ,cAAW;GACX,MAAM,qBAAqB,SAAS;IACpC,EAEF,oBAAC;GACC,eAAY;GACZ,WAAU;GACV,SAAS;GACT,cAAY,qBAAqB,kBAAkB;aAEnD,oBAAC;IACC,WAAU;IACV,MAAM;KACN;IACK;GACL"}
|
|
1
|
+
{"version":3,"file":"InputPassword.mjs","names":["InputPassword: FC<InputPasswordProps>","handlePasswordReveal: MouseEventHandler<HTMLButtonElement>","isPasswordRevealed"],"sources":["../../../../src/components/Input/InputPassword.tsx"],"sourcesContent":["'use client';\n\nimport { EyeIcon, EyeOffIcon } from 'lucide-react';\nimport { type FC, type MouseEventHandler, useState } from 'react';\nimport { Input, type InputProps } from './Input';\n\ntype InputPasswordProps = Omit<InputProps, 'type'>;\n\nexport const InputPassword: FC<InputPasswordProps> = (props) => {\n const [isPasswordRevealed, setIsPasswordRevealed] = useState(false);\n\n const handlePasswordReveal: MouseEventHandler<HTMLButtonElement> = (e) => {\n e.preventDefault();\n e.stopPropagation();\n setIsPasswordRevealed((isPasswordRevealed) => !isPasswordRevealed);\n };\n\n const EyeIconComponent = isPasswordRevealed ? EyeIcon : EyeOffIcon;\n\n return (\n <div className=\"relative\">\n <Input\n {...props}\n aria-label=\"password\"\n type={isPasswordRevealed ? 'text' : 'password'}\n />\n\n <button\n data-testid=\"eye-icon\"\n className=\"absolute right-2 h-full flex-row items-center\"\n onClick={handlePasswordReveal}\n aria-label={isPasswordRevealed ? 'Hide password' : 'Show password'}\n >\n <EyeIconComponent\n className=\"mr-2 inline-block cursor-pointer text-neutral\"\n size={20}\n />\n </button>\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAQA,MAAaA,iBAAyC,UAAU;CAC9D,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,MAAM;CAEnE,MAAMC,wBAA8D,MAAM;AACxE,IAAE,gBAAgB;AAClB,IAAE,iBAAiB;AACnB,yBAAuB,yBAAuB,CAACC,qBAAmB;;CAGpE,MAAM,mBAAmB,qBAAqB,UAAU;AAExD,QACE,qBAAC;EAAI,WAAU;aACb,oBAAC;GACC,GAAI;GACJ,cAAW;GACX,MAAM,qBAAqB,SAAS;IACpC,EAEF,oBAAC;GACC,eAAY;GACZ,WAAU;GACV,SAAS;GACT,cAAY,qBAAqB,kBAAkB;aAEnD,oBAAC;IACC,WAAU;IACV,MAAM;KACN;IACK;GACL"}
|