@intlayer/design-system 8.1.2 → 8.1.3
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/_virtual/_rolldown/runtime.mjs +1 -18
- package/dist/esm/components/Accordion/Accordion.mjs +1 -99
- package/dist/esm/components/Accordion/Accordion.mjs.map +1 -1
- package/dist/esm/components/Accordion/index.mjs +1 -3
- package/dist/esm/components/Avatar/index.mjs +1 -126
- package/dist/esm/components/Avatar/index.mjs.map +1 -1
- package/dist/esm/components/Badge/index.mjs +1 -150
- package/dist/esm/components/Badge/index.mjs.map +1 -1
- package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs +1 -32
- package/dist/esm/components/Breadcrumb/breadcrumb.content.mjs.map +1 -1
- package/dist/esm/components/Breadcrumb/index.mjs +1 -232
- package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
- package/dist/esm/components/Browser/Browser.content.mjs +1 -179
- package/dist/esm/components/Browser/Browser.content.mjs.map +1 -1
- package/dist/esm/components/Browser/Browser.mjs +1 -249
- package/dist/esm/components/Browser/Browser.mjs.map +1 -1
- package/dist/esm/components/Browser/index.mjs +1 -3
- package/dist/esm/components/Button/Button.mjs +1 -287
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/Button/index.mjs +1 -3
- package/dist/esm/components/Carousel/index.content.mjs +1 -79
- package/dist/esm/components/Carousel/index.content.mjs.map +1 -1
- package/dist/esm/components/Carousel/index.mjs +4 -270
- package/dist/esm/components/Carousel/index.mjs.map +1 -1
- package/dist/esm/components/ClickOutsideDiv/index.mjs +1 -42
- package/dist/esm/components/ClickOutsideDiv/index.mjs.map +1 -1
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs +1 -246
- package/dist/esm/components/CollapsibleTable/CollapsibleTable.mjs.map +1 -1
- package/dist/esm/components/CollapsibleTable/index.mjs +1 -3
- package/dist/esm/components/Command/index.mjs +1 -88
- package/dist/esm/components/Command/index.mjs.map +1 -1
- package/dist/esm/components/Container/index.mjs +1 -203
- package/dist/esm/components/Container/index.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditor.mjs +1 -107
- package/dist/esm/components/ContentEditor/ContentEditor.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorInput.mjs +1 -110
- package/dist/esm/components/ContentEditor/ContentEditorInput.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -113
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/index.mjs +1 -5
- package/dist/esm/components/ContentSelector/ContentSelector.mjs +1 -81
- package/dist/esm/components/ContentSelector/ContentSelector.mjs.map +1 -1
- package/dist/esm/components/ContentSelector/index.mjs +1 -3
- package/dist/esm/components/CopyButton/CopyButton.content.mjs +1 -32
- package/dist/esm/components/CopyButton/CopyButton.content.mjs.map +1 -1
- package/dist/esm/components/CopyButton/index.mjs +1 -121
- package/dist/esm/components/CopyButton/index.mjs.map +1 -1
- package/dist/esm/components/CopyToClipboard/index.mjs +1 -101
- package/dist/esm/components/CopyToClipboard/index.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs +1 -31
- package/dist/esm/components/DictionaryEditor/DictionaryEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs +1 -36
- package/dist/esm/components/DictionaryEditor/ItemLayout.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs +1 -35
- package/dist/esm/components/DictionaryEditor/NodeWrapper/ArrayWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs +1 -32
- package/dist/esm/components/DictionaryEditor/NodeWrapper/ConditionWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs +1 -32
- package/dist/esm/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs +1 -36
- package/dist/esm/components/DictionaryEditor/NodeWrapper/FileWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs +1 -21
- package/dist/esm/components/DictionaryEditor/NodeWrapper/HtmlWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs +1 -21
- package/dist/esm/components/DictionaryEditor/NodeWrapper/InsertionWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs +1 -21
- package/dist/esm/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs +1 -39
- package/dist/esm/components/DictionaryEditor/NodeWrapper/NestedObjectWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs +1 -35
- package/dist/esm/components/DictionaryEditor/NodeWrapper/StringWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs +1 -22
- package/dist/esm/components/DictionaryEditor/NodeWrapper/TranslationWrapper.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs +1 -88
- package/dist/esm/components/DictionaryEditor/NodeWrapper/index.mjs.map +1 -1
- package/dist/esm/components/DictionaryEditor/index.mjs +1 -3
- package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs +1 -61
- package/dist/esm/components/DictionaryFieldEditor/ContentEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +1 -661
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +1 -64
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs +1 -268
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/dictionaryCreationForm.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs +1 -98
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs +1 -14
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +1 -328
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs +1 -575
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs +1 -338
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs +1 -29
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs +1 -112
- package/dist/esm/components/DictionaryFieldEditor/DictionaryFieldEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs +1 -98
- package/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs +1 -28
- package/dist/esm/components/DictionaryFieldEditor/JSONEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs +1 -22
- package/dist/esm/components/DictionaryFieldEditor/KeyPathBreadcrumb.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs +1 -172
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/NavigationViewNode.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs +1 -268
- package/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs +1 -84
- package/dist/esm/components/DictionaryFieldEditor/NodeTypeSelector.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +1 -153
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs +1 -350
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/saveForm.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs +1 -19
- package/dist/esm/components/DictionaryFieldEditor/StructureEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs +1 -199
- package/dist/esm/components/DictionaryFieldEditor/StructureView/StructureView.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs +1 -100
- package/dist/esm/components/DictionaryFieldEditor/StructureView/structureView.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs +1 -73
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcher.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs +1 -27
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/VersionSwitcherContext.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/index.mjs +1 -4
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs +1 -78
- package/dist/esm/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs +1 -58
- package/dist/esm/components/DictionaryFieldEditor/dictionaryFieldEditor.content.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs +1 -14
- package/dist/esm/components/DictionaryFieldEditor/getIsEditableSection.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/index.mjs +1 -10
- package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs +1 -318
- package/dist/esm/components/DictionaryFieldEditor/nodeTypeSelector.content.mjs.map +1 -1
- package/dist/esm/components/DropDown/index.mjs +1 -177
- package/dist/esm/components/DropDown/index.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldInput.mjs +1 -68
- package/dist/esm/components/EditableField/EditableFieldInput.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldLayout.mjs +1 -103
- package/dist/esm/components/EditableField/EditableFieldLayout.mjs.map +1 -1
- package/dist/esm/components/EditableField/EditableFieldTextArea.mjs +1 -77
- package/dist/esm/components/EditableField/EditableFieldTextArea.mjs.map +1 -1
- package/dist/esm/components/EditableField/index.mjs +1 -4
- package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs +1 -96
- package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
- package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs +1 -58
- package/dist/esm/components/ExpandCollapse/expandCollapse.content.mjs.map +1 -1
- package/dist/esm/components/ExpandCollapse/index.mjs +1 -3
- package/dist/esm/components/Flags/Flag.mjs +1 -326
- package/dist/esm/components/Flags/Flag.mjs.map +1 -1
- package/dist/esm/components/Flags/ae.mjs +1 -36
- package/dist/esm/components/Flags/ae.mjs.map +1 -1
- package/dist/esm/components/Flags/af.mjs +1 -96
- package/dist/esm/components/Flags/af.mjs.map +1 -1
- package/dist/esm/components/Flags/al.mjs +1 -37
- package/dist/esm/components/Flags/al.mjs.map +1 -1
- package/dist/esm/components/Flags/am.mjs +1 -33
- package/dist/esm/components/Flags/am.mjs.map +1 -1
- package/dist/esm/components/Flags/ar.mjs +1 -160
- package/dist/esm/components/Flags/ar.mjs.map +1 -1
- package/dist/esm/components/Flags/at.mjs +1 -30
- package/dist/esm/components/Flags/at.mjs.map +1 -1
- package/dist/esm/components/Flags/au.mjs +1 -42
- package/dist/esm/components/Flags/au.mjs.map +1 -1
- package/dist/esm/components/Flags/az.mjs +1 -46
- package/dist/esm/components/Flags/az.mjs.map +1 -1
- package/dist/esm/components/Flags/ba.mjs +1 -40
- package/dist/esm/components/Flags/ba.mjs.map +1 -1
- package/dist/esm/components/Flags/bd.mjs +1 -32
- package/dist/esm/components/Flags/bd.mjs.map +1 -1
- package/dist/esm/components/Flags/be.mjs +1 -36
- package/dist/esm/components/Flags/be.mjs.map +1 -1
- package/dist/esm/components/Flags/bg.mjs +1 -33
- package/dist/esm/components/Flags/bg.mjs.map +1 -1
- package/dist/esm/components/Flags/bh.mjs +1 -30
- package/dist/esm/components/Flags/bh.mjs.map +1 -1
- package/dist/esm/components/Flags/bn.mjs +1 -42
- package/dist/esm/components/Flags/bn.mjs.map +1 -1
- package/dist/esm/components/Flags/bo.mjs +1 -3030
- package/dist/esm/components/Flags/bo.mjs.map +1 -1
- package/dist/esm/components/Flags/br.mjs +1 -106
- package/dist/esm/components/Flags/br.mjs.map +1 -1
- package/dist/esm/components/Flags/bw.mjs +1 -33
- package/dist/esm/components/Flags/bw.mjs.map +1 -1
- package/dist/esm/components/Flags/by.mjs +1 -45
- package/dist/esm/components/Flags/by.mjs.map +1 -1
- package/dist/esm/components/Flags/bz.mjs +1 -338
- package/dist/esm/components/Flags/bz.mjs.map +1 -1
- package/dist/esm/components/Flags/ca.mjs +1 -30
- package/dist/esm/components/Flags/ca.mjs.map +1 -1
- package/dist/esm/components/Flags/ch.mjs +1 -30
- package/dist/esm/components/Flags/ch.mjs.map +1 -1
- package/dist/esm/components/Flags/cl.mjs +1 -43
- package/dist/esm/components/Flags/cl.mjs.map +1 -1
- package/dist/esm/components/Flags/cn.mjs +1 -57
- package/dist/esm/components/Flags/cn.mjs.map +1 -1
- package/dist/esm/components/Flags/co.mjs +1 -36
- package/dist/esm/components/Flags/co.mjs.map +1 -1
- package/dist/esm/components/Flags/cr.mjs +1 -36
- package/dist/esm/components/Flags/cr.mjs.map +1 -1
- package/dist/esm/components/Flags/cu.mjs +1 -43
- package/dist/esm/components/Flags/cu.mjs.map +1 -1
- package/dist/esm/components/Flags/cv.mjs +1 -43
- package/dist/esm/components/Flags/cv.mjs.map +1 -1
- package/dist/esm/components/Flags/cz.mjs +1 -33
- package/dist/esm/components/Flags/cz.mjs.map +1 -1
- package/dist/esm/components/Flags/de.mjs +1 -33
- package/dist/esm/components/Flags/de.mjs.map +1 -1
- package/dist/esm/components/Flags/dj.mjs +1 -43
- package/dist/esm/components/Flags/dj.mjs.map +1 -1
- package/dist/esm/components/Flags/dk.mjs +1 -33
- package/dist/esm/components/Flags/dk.mjs.map +1 -1
- package/dist/esm/components/Flags/do.mjs +1 -211
- package/dist/esm/components/Flags/do.mjs.map +1 -1
- package/dist/esm/components/Flags/dz.mjs +1 -33
- package/dist/esm/components/Flags/dz.mjs.map +1 -1
- package/dist/esm/components/Flags/ec.mjs +1 -622
- package/dist/esm/components/Flags/ec.mjs.map +1 -1
- package/dist/esm/components/Flags/ee.mjs +1 -33
- package/dist/esm/components/Flags/ee.mjs.map +1 -1
- package/dist/esm/components/Flags/eg.mjs +1 -112
- package/dist/esm/components/Flags/eg.mjs.map +1 -1
- package/dist/esm/components/Flags/es-ct.mjs +1 -32
- package/dist/esm/components/Flags/es-ct.mjs.map +1 -1
- package/dist/esm/components/Flags/es-ga.mjs +1 -792
- package/dist/esm/components/Flags/es-ga.mjs.map +1 -1
- package/dist/esm/components/Flags/es-pv.mjs +1 -33
- package/dist/esm/components/Flags/es-pv.mjs.map +1 -1
- package/dist/esm/components/Flags/es.mjs +1 -2226
- package/dist/esm/components/Flags/es.mjs.map +1 -1
- package/dist/esm/components/Flags/et.mjs +1 -50
- package/dist/esm/components/Flags/et.mjs.map +1 -1
- package/dist/esm/components/Flags/fi.mjs +1 -33
- package/dist/esm/components/Flags/fi.mjs.map +1 -1
- package/dist/esm/components/Flags/flags.mjs +1 -1363
- package/dist/esm/components/Flags/flags.mjs.map +1 -1
- package/dist/esm/components/Flags/fo.mjs +1 -41
- package/dist/esm/components/Flags/fo.mjs.map +1 -1
- package/dist/esm/components/Flags/fr.mjs +1 -33
- package/dist/esm/components/Flags/fr.mjs.map +1 -1
- package/dist/esm/components/Flags/gb-wls.mjs +1 -43
- package/dist/esm/components/Flags/gb-wls.mjs.map +1 -1
- package/dist/esm/components/Flags/gb.mjs +1 -39
- package/dist/esm/components/Flags/gb.mjs.map +1 -1
- package/dist/esm/components/Flags/ge.mjs +1 -37
- package/dist/esm/components/Flags/ge.mjs.map +1 -1
- package/dist/esm/components/Flags/gh.mjs +1 -36
- package/dist/esm/components/Flags/gh.mjs.map +1 -1
- package/dist/esm/components/Flags/gr.mjs +1 -66
- package/dist/esm/components/Flags/gr.mjs.map +1 -1
- package/dist/esm/components/Flags/gt.mjs +1 -461
- package/dist/esm/components/Flags/gt.mjs.map +1 -1
- package/dist/esm/components/Flags/gw.mjs +1 -67
- package/dist/esm/components/Flags/gw.mjs.map +1 -1
- package/dist/esm/components/Flags/hk.mjs +1 -44
- package/dist/esm/components/Flags/hk.mjs.map +1 -1
- package/dist/esm/components/Flags/hn.mjs +1 -83
- package/dist/esm/components/Flags/hn.mjs.map +1 -1
- package/dist/esm/components/Flags/hr.mjs +1 -94
- package/dist/esm/components/Flags/hr.mjs.map +1 -1
- package/dist/esm/components/Flags/hu.mjs +1 -33
- package/dist/esm/components/Flags/hu.mjs.map +1 -1
- package/dist/esm/components/Flags/id.mjs +1 -30
- package/dist/esm/components/Flags/id.mjs.map +1 -1
- package/dist/esm/components/Flags/ie.mjs +1 -36
- package/dist/esm/components/Flags/ie.mjs.map +1 -1
- package/dist/esm/components/Flags/il.mjs +1 -46
- package/dist/esm/components/Flags/il.mjs.map +1 -1
- package/dist/esm/components/Flags/in.mjs +1 -74
- package/dist/esm/components/Flags/in.mjs.map +1 -1
- package/dist/esm/components/Flags/index.mjs +1 -4
- package/dist/esm/components/Flags/iq.mjs +1 -40
- package/dist/esm/components/Flags/iq.mjs.map +1 -1
- package/dist/esm/components/Flags/ir.mjs +1 -112
- package/dist/esm/components/Flags/ir.mjs.map +1 -1
- package/dist/esm/components/Flags/is.mjs +1 -40
- package/dist/esm/components/Flags/is.mjs.map +1 -1
- package/dist/esm/components/Flags/it.mjs +1 -36
- package/dist/esm/components/Flags/it.mjs.map +1 -1
- package/dist/esm/components/Flags/jm.mjs +1 -36
- package/dist/esm/components/Flags/jm.mjs.map +1 -1
- package/dist/esm/components/Flags/jo.mjs +1 -48
- package/dist/esm/components/Flags/jo.mjs.map +1 -1
- package/dist/esm/components/Flags/jp.mjs +1 -41
- package/dist/esm/components/Flags/jp.mjs.map +1 -1
- package/dist/esm/components/Flags/ke.mjs +1 -91
- package/dist/esm/components/Flags/ke.mjs.map +1 -1
- package/dist/esm/components/Flags/kg.mjs +1 -49
- package/dist/esm/components/Flags/kg.mjs.map +1 -1
- package/dist/esm/components/Flags/kh.mjs +1 -76
- package/dist/esm/components/Flags/kh.mjs.map +1 -1
- package/dist/esm/components/Flags/km.mjs +1 -52
- package/dist/esm/components/Flags/km.mjs.map +1 -1
- package/dist/esm/components/Flags/kr.mjs +1 -64
- package/dist/esm/components/Flags/kr.mjs.map +1 -1
- package/dist/esm/components/Flags/kw.mjs +1 -44
- package/dist/esm/components/Flags/kw.mjs.map +1 -1
- package/dist/esm/components/Flags/kz.mjs +1 -94
- package/dist/esm/components/Flags/kz.mjs.map +1 -1
- package/dist/esm/components/Flags/la.mjs +1 -39
- package/dist/esm/components/Flags/la.mjs.map +1 -1
- package/dist/esm/components/Flags/lb.mjs +1 -50
- package/dist/esm/components/Flags/lb.mjs.map +1 -1
- package/dist/esm/components/Flags/li.mjs +1 -136
- package/dist/esm/components/Flags/li.mjs.map +1 -1
- package/dist/esm/components/Flags/lk.mjs +1 -73
- package/dist/esm/components/Flags/lk.mjs.map +1 -1
- package/dist/esm/components/Flags/lt.mjs +1 -46
- package/dist/esm/components/Flags/lt.mjs.map +1 -1
- package/dist/esm/components/Flags/lu.mjs +1 -33
- package/dist/esm/components/Flags/lu.mjs.map +1 -1
- package/dist/esm/components/Flags/lv.mjs +1 -30
- package/dist/esm/components/Flags/lv.mjs.map +1 -1
- package/dist/esm/components/Flags/ly.mjs +1 -39
- package/dist/esm/components/Flags/ly.mjs.map +1 -1
- package/dist/esm/components/Flags/ma.mjs +1 -32
- package/dist/esm/components/Flags/ma.mjs.map +1 -1
- package/dist/esm/components/Flags/mc.mjs +1 -33
- package/dist/esm/components/Flags/mc.mjs.map +1 -1
- package/dist/esm/components/Flags/md.mjs +1 -317
- package/dist/esm/components/Flags/md.mjs.map +1 -1
- package/dist/esm/components/Flags/mk.mjs +1 -37
- package/dist/esm/components/Flags/mk.mjs.map +1 -1
- package/dist/esm/components/Flags/mm.mjs +1 -58
- package/dist/esm/components/Flags/mm.mjs.map +1 -1
- package/dist/esm/components/Flags/mn.mjs +1 -59
- package/dist/esm/components/Flags/mn.mjs.map +1 -1
- package/dist/esm/components/Flags/mo.mjs +1 -42
- package/dist/esm/components/Flags/mo.mjs.map +1 -1
- package/dist/esm/components/Flags/mr.mjs +1 -37
- package/dist/esm/components/Flags/mr.mjs.map +1 -1
- package/dist/esm/components/Flags/mt.mjs +1 -153
- package/dist/esm/components/Flags/mt.mjs.map +1 -1
- package/dist/esm/components/Flags/mv.mjs +1 -40
- package/dist/esm/components/Flags/mv.mjs.map +1 -1
- package/dist/esm/components/Flags/mx.mjs +1 -1365
- package/dist/esm/components/Flags/mx.mjs.map +1 -1
- package/dist/esm/components/Flags/my.mjs +1 -78
- package/dist/esm/components/Flags/my.mjs.map +1 -1
- package/dist/esm/components/Flags/mz.mjs +1 -92
- package/dist/esm/components/Flags/mz.mjs.map +1 -1
- package/dist/esm/components/Flags/ng.mjs +1 -33
- package/dist/esm/components/Flags/ng.mjs.map +1 -1
- package/dist/esm/components/Flags/ni.mjs +1 -451
- package/dist/esm/components/Flags/ni.mjs.map +1 -1
- package/dist/esm/components/Flags/nl.mjs +1 -33
- package/dist/esm/components/Flags/nl.mjs.map +1 -1
- package/dist/esm/components/Flags/no.mjs +1 -39
- package/dist/esm/components/Flags/no.mjs.map +1 -1
- package/dist/esm/components/Flags/np.mjs +1 -38
- package/dist/esm/components/Flags/np.mjs.map +1 -1
- package/dist/esm/components/Flags/nz.mjs +1 -104
- package/dist/esm/components/Flags/nz.mjs.map +1 -1
- package/dist/esm/components/Flags/om.mjs +1 -539
- package/dist/esm/components/Flags/om.mjs.map +1 -1
- package/dist/esm/components/Flags/pa.mjs +1 -46
- package/dist/esm/components/Flags/pa.mjs.map +1 -1
- package/dist/esm/components/Flags/pe.mjs +1 -30
- package/dist/esm/components/Flags/pe.mjs.map +1 -1
- package/dist/esm/components/Flags/ph.mjs +1 -36
- package/dist/esm/components/Flags/ph.mjs.map +1 -1
- package/dist/esm/components/Flags/pk.mjs +1 -38
- package/dist/esm/components/Flags/pk.mjs.map +1 -1
- package/dist/esm/components/Flags/pl.mjs +1 -30
- package/dist/esm/components/Flags/pl.mjs.map +1 -1
- package/dist/esm/components/Flags/pr.mjs +1 -43
- package/dist/esm/components/Flags/pr.mjs.map +1 -1
- package/dist/esm/components/Flags/ps.mjs +1 -45
- package/dist/esm/components/Flags/ps.mjs.map +1 -1
- package/dist/esm/components/Flags/pt.mjs +1 -152
- package/dist/esm/components/Flags/pt.mjs.map +1 -1
- package/dist/esm/components/Flags/py.mjs +1 -61
- package/dist/esm/components/Flags/py.mjs.map +1 -1
- package/dist/esm/components/Flags/qa.mjs +1 -30
- package/dist/esm/components/Flags/qa.mjs.map +1 -1
- package/dist/esm/components/Flags/ro.mjs +1 -36
- package/dist/esm/components/Flags/ro.mjs.map +1 -1
- package/dist/esm/components/Flags/rs.mjs +1 -820
- package/dist/esm/components/Flags/rs.mjs.map +1 -1
- package/dist/esm/components/Flags/ru.mjs +1 -33
- package/dist/esm/components/Flags/ru.mjs.map +1 -1
- package/dist/esm/components/Flags/sa.mjs +1 -79
- package/dist/esm/components/Flags/sa.mjs.map +1 -1
- package/dist/esm/components/Flags/sd.mjs +1 -44
- package/dist/esm/components/Flags/sd.mjs.map +1 -1
- package/dist/esm/components/Flags/se.mjs +1 -30
- package/dist/esm/components/Flags/se.mjs.map +1 -1
- package/dist/esm/components/Flags/sg.mjs +1 -42
- package/dist/esm/components/Flags/sg.mjs.map +1 -1
- package/dist/esm/components/Flags/si.mjs +1 -59
- package/dist/esm/components/Flags/si.mjs.map +1 -1
- package/dist/esm/components/Flags/sk.mjs +1 -45
- package/dist/esm/components/Flags/sk.mjs.map +1 -1
- package/dist/esm/components/Flags/so.mjs +1 -37
- package/dist/esm/components/Flags/so.mjs.map +1 -1
- package/dist/esm/components/Flags/st.mjs +1 -73
- package/dist/esm/components/Flags/st.mjs.map +1 -1
- package/dist/esm/components/Flags/sv.mjs +1 -1735
- package/dist/esm/components/Flags/sv.mjs.map +1 -1
- package/dist/esm/components/Flags/sy.mjs +1 -36
- package/dist/esm/components/Flags/sy.mjs.map +1 -1
- package/dist/esm/components/Flags/td.mjs +1 -33
- package/dist/esm/components/Flags/td.mjs.map +1 -1
- package/dist/esm/components/Flags/th.mjs +1 -33
- package/dist/esm/components/Flags/th.mjs.map +1 -1
- package/dist/esm/components/Flags/tl.mjs +1 -43
- package/dist/esm/components/Flags/tl.mjs.map +1 -1
- package/dist/esm/components/Flags/tn.mjs +1 -30
- package/dist/esm/components/Flags/tn.mjs.map +1 -1
- package/dist/esm/components/Flags/tr.mjs +1 -36
- package/dist/esm/components/Flags/tr.mjs.map +1 -1
- package/dist/esm/components/Flags/tt.mjs +1 -35
- package/dist/esm/components/Flags/tt.mjs.map +1 -1
- package/dist/esm/components/Flags/tw.mjs +1 -40
- package/dist/esm/components/Flags/tw.mjs.map +1 -1
- package/dist/esm/components/Flags/tz.mjs +1 -44
- package/dist/esm/components/Flags/tz.mjs.map +1 -1
- package/dist/esm/components/Flags/ua.mjs +1 -33
- package/dist/esm/components/Flags/ua.mjs.map +1 -1
- package/dist/esm/components/Flags/ug.mjs +1 -145
- package/dist/esm/components/Flags/ug.mjs.map +1 -1
- package/dist/esm/components/Flags/us.mjs +1 -45
- package/dist/esm/components/Flags/us.mjs.map +1 -1
- package/dist/esm/components/Flags/uy.mjs +1 -63
- package/dist/esm/components/Flags/uy.mjs.map +1 -1
- package/dist/esm/components/Flags/uz.mjs +1 -109
- package/dist/esm/components/Flags/uz.mjs.map +1 -1
- package/dist/esm/components/Flags/ve.mjs +1 -84
- package/dist/esm/components/Flags/ve.mjs.map +1 -1
- package/dist/esm/components/Flags/vn.mjs +1 -37
- package/dist/esm/components/Flags/vn.mjs.map +1 -1
- package/dist/esm/components/Flags/xx.mjs +1 -35
- package/dist/esm/components/Flags/xx.mjs.map +1 -1
- package/dist/esm/components/Flags/ye.mjs +1 -36
- package/dist/esm/components/Flags/ye.mjs.map +1 -1
- package/dist/esm/components/Flags/za.mjs +1 -51
- package/dist/esm/components/Flags/za.mjs.map +1 -1
- package/dist/esm/components/Flags/zw.mjs +1 -70
- package/dist/esm/components/Flags/zw.mjs.map +1 -1
- package/dist/esm/components/Footer/index.mjs +1 -123
- package/dist/esm/components/Footer/index.mjs.map +1 -1
- package/dist/esm/components/Form/Form.mjs +1 -65
- package/dist/esm/components/Form/Form.mjs.map +1 -1
- package/dist/esm/components/Form/FormBase.mjs +1 -50
- package/dist/esm/components/Form/FormBase.mjs.map +1 -1
- package/dist/esm/components/Form/FormControl.mjs +1 -19
- package/dist/esm/components/Form/FormControl.mjs.map +1 -1
- package/dist/esm/components/Form/FormDescription.mjs +1 -17
- package/dist/esm/components/Form/FormDescription.mjs.map +1 -1
- package/dist/esm/components/Form/FormField.mjs +1 -34
- package/dist/esm/components/Form/FormField.mjs.map +1 -1
- package/dist/esm/components/Form/FormItem.mjs +1 -23
- package/dist/esm/components/Form/FormItem.mjs.map +1 -1
- package/dist/esm/components/Form/FormLabel.mjs +1 -19
- package/dist/esm/components/Form/FormLabel.mjs.map +1 -1
- package/dist/esm/components/Form/FormMessage.mjs +1 -21
- package/dist/esm/components/Form/FormMessage.mjs.map +1 -1
- package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs +1 -14
- package/dist/esm/components/Form/elements/AutoSizeTextAreaElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/CheckboxElement.mjs +1 -25
- package/dist/esm/components/Form/elements/CheckboxElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs +1 -16
- package/dist/esm/components/Form/elements/EditableFieldInputElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs +1 -16
- package/dist/esm/components/Form/elements/EditableFieldTextAreaElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/FormElement.mjs +1 -58
- package/dist/esm/components/Form/elements/FormElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/FormElementWrapper.mjs +1 -34
- package/dist/esm/components/Form/elements/FormElementWrapper.mjs.map +1 -1
- package/dist/esm/components/Form/elements/InputElement.mjs +1 -16
- package/dist/esm/components/Form/elements/InputElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/InputPasswordElement.mjs +1 -19
- package/dist/esm/components/Form/elements/InputPasswordElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/MultiselectElement.mjs +1 -49
- package/dist/esm/components/Form/elements/MultiselectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/OTPElement.mjs +1 -108
- package/dist/esm/components/Form/elements/OTPElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SearchInputElement.mjs +1 -16
- package/dist/esm/components/Form/elements/SearchInputElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SelectElement.mjs +1 -49
- package/dist/esm/components/Form/elements/SelectElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs +1 -48
- package/dist/esm/components/Form/elements/SwitchSelectorElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/TextAreaElement.mjs +1 -16
- package/dist/esm/components/Form/elements/TextAreaElement.mjs.map +1 -1
- package/dist/esm/components/Form/elements/index.mjs +1 -10
- package/dist/esm/components/Form/index.mjs +1 -5
- package/dist/esm/components/Form/layout/FormItemLayout.mjs +1 -24
- package/dist/esm/components/Form/layout/FormItemLayout.mjs.map +1 -1
- package/dist/esm/components/Form/layout/FormLabelLayout.mjs +1 -20
- package/dist/esm/components/Form/layout/FormLabelLayout.mjs.map +1 -1
- package/dist/esm/components/Form/layout/RequiredStar.mjs +1 -10
- package/dist/esm/components/Form/layout/RequiredStar.mjs.map +1 -1
- package/dist/esm/components/Form/layout/index.mjs +1 -4
- package/dist/esm/components/HTMLRender/HTMLRender.mjs +1 -65
- package/dist/esm/components/HTMLRender/HTMLRender.mjs.map +1 -1
- package/dist/esm/components/HTMLRender/index.mjs +1 -3
- package/dist/esm/components/Headers/index.mjs +1 -216
- package/dist/esm/components/Headers/index.mjs.map +1 -1
- package/dist/esm/components/HeightResizer/index.mjs +1 -163
- package/dist/esm/components/HeightResizer/index.mjs.map +1 -1
- package/dist/esm/components/HideShow/index.mjs +1 -70
- package/dist/esm/components/HideShow/index.mjs.map +1 -1
- package/dist/esm/components/IDE/Code.mjs +2 -59
- package/dist/esm/components/IDE/Code.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockClient.mjs +2 -31
- package/dist/esm/components/IDE/CodeBlockClient.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockServer.mjs +2 -45
- package/dist/esm/components/IDE/CodeBlockServer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeBlockShiki.mjs +1 -109
- package/dist/esm/components/IDE/CodeBlockShiki.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeConditionalRenderer.mjs +1 -20
- package/dist/esm/components/IDE/CodeConditionalRenderer.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeContext.mjs +1 -44
- package/dist/esm/components/IDE/CodeContext.mjs.map +1 -1
- package/dist/esm/components/IDE/CodeFormatSelector.mjs +1 -40
- package/dist/esm/components/IDE/CodeFormatSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs +1 -41
- package/dist/esm/components/IDE/ContentDeclarationFormatSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/CopyCode.mjs +1 -27
- package/dist/esm/components/IDE/CopyCode.mjs.map +1 -1
- package/dist/esm/components/IDE/FileList.mjs +1 -34
- package/dist/esm/components/IDE/FileList.mjs.map +1 -1
- package/dist/esm/components/IDE/FileTree.mjs +1 -64
- package/dist/esm/components/IDE/FileTree.mjs.map +1 -1
- package/dist/esm/components/IDE/IDE.mjs +1 -87
- package/dist/esm/components/IDE/IDE.mjs.map +1 -1
- package/dist/esm/components/IDE/MarkDownRender.mjs +1 -22
- package/dist/esm/components/IDE/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/IDE/MonacoCode.mjs +2 -103
- package/dist/esm/components/IDE/MonacoCode.mjs.map +1 -1
- package/dist/esm/components/IDE/PackageManagerSelector.mjs +1 -42
- package/dist/esm/components/IDE/PackageManagerSelector.mjs.map +1 -1
- package/dist/esm/components/IDE/code.content.mjs +1 -58
- package/dist/esm/components/IDE/code.content.mjs.map +1 -1
- package/dist/esm/components/IDE/copyCode.content.mjs +1 -58
- package/dist/esm/components/IDE/copyCode.content.mjs.map +1 -1
- package/dist/esm/components/IDE/createFileTree.mjs +1 -31
- package/dist/esm/components/IDE/createFileTree.mjs.map +1 -1
- package/dist/esm/components/IDE/index.mjs +1 -6
- package/dist/esm/components/IDE/selectors.content.mjs +1 -144
- package/dist/esm/components/IDE/selectors.content.mjs.map +1 -1
- package/dist/esm/components/InformationTag/index.mjs +1 -80
- package/dist/esm/components/InformationTag/index.mjs.map +1 -1
- package/dist/esm/components/Input/Checkbox.mjs +1 -97
- package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
- package/dist/esm/components/Input/Input.mjs +1 -64
- package/dist/esm/components/Input/Input.mjs.map +1 -1
- package/dist/esm/components/Input/InputPassword.mjs +1 -38
- package/dist/esm/components/Input/InputPassword.mjs.map +1 -1
- package/dist/esm/components/Input/OTPInput.mjs +2 -474
- package/dist/esm/components/Input/OTPInput.mjs.map +1 -1
- package/dist/esm/components/Input/SearchInput.mjs +1 -17
- package/dist/esm/components/Input/SearchInput.mjs.map +1 -1
- package/dist/esm/components/Input/index.mjs +1 -7
- package/dist/esm/components/KeyboardScreenAdapter/index.mjs +1 -119
- package/dist/esm/components/KeyboardScreenAdapter/index.mjs.map +1 -1
- package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs +1 -230
- package/dist/esm/components/KeyboardShortcut/KeyboardShortcut.mjs.map +1 -1
- package/dist/esm/components/KeyboardShortcut/index.mjs +1 -3
- package/dist/esm/components/Label/index.mjs +1 -53
- package/dist/esm/components/Label/index.mjs.map +1 -1
- package/dist/esm/components/LanguageBackground/index.mjs +1 -87
- package/dist/esm/components/LanguageBackground/index.mjs.map +1 -1
- package/dist/esm/components/Link/Link.mjs +1 -239
- package/dist/esm/components/Link/Link.mjs.map +1 -1
- package/dist/esm/components/Link/index.mjs +1 -3
- package/dist/esm/components/Loader/index.content.mjs +1 -32
- package/dist/esm/components/Loader/index.content.mjs.map +1 -1
- package/dist/esm/components/Loader/index.mjs +1 -111
- package/dist/esm/components/Loader/index.mjs.map +1 -1
- package/dist/esm/components/Loader/spinner.mjs +1 -121
- package/dist/esm/components/Loader/spinner.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs +1 -183
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContent.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs +1 -29
- package/dist/esm/components/LocaleSwitcherContentDropDown/LocaleSwitcherContentContext.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherContentDropDown/index.mjs +1 -4
- package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs +1 -182
- package/dist/esm/components/LocaleSwitcherContentDropDown/localeSwitcher.content.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs +1 -134
- package/dist/esm/components/LocaleSwitcherDropDown/LocaleSwitcher.mjs.map +1 -1
- package/dist/esm/components/LocaleSwitcherDropDown/index.mjs +1 -3
- package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs +1 -140
- package/dist/esm/components/LocaleSwitcherDropDown/localeSwitcher.content.mjs.map +1 -1
- package/dist/esm/components/Logo/Logo.mjs +1 -34
- package/dist/esm/components/Logo/Logo.mjs.map +1 -1
- package/dist/esm/components/Logo/LogoTextOnly.mjs +1 -28
- package/dist/esm/components/Logo/LogoTextOnly.mjs.map +1 -1
- package/dist/esm/components/Logo/LogoWithText.mjs +1 -34
- package/dist/esm/components/Logo/LogoWithText.mjs.map +1 -1
- package/dist/esm/components/Logo/LogoWithTextBelow.mjs +1 -34
- package/dist/esm/components/Logo/LogoWithTextBelow.mjs.map +1 -1
- package/dist/esm/components/Logo/index.mjs +1 -6
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs +1 -167
- package/dist/esm/components/MarkDownRender/MarkDownRender.mjs.map +1 -1
- package/dist/esm/components/MarkDownRender/index.mjs +1 -3
- package/dist/esm/components/MaxHeightSmoother/index.mjs +1 -163
- package/dist/esm/components/MaxHeightSmoother/index.mjs.map +1 -1
- package/dist/esm/components/MaxWidthSmoother/index.mjs +1 -18
- package/dist/esm/components/MaxWidthSmoother/index.mjs.map +1 -1
- package/dist/esm/components/Modal/Modal.mjs +1 -201
- package/dist/esm/components/Modal/Modal.mjs.map +1 -1
- package/dist/esm/components/Modal/index.mjs +1 -3
- package/dist/esm/components/Navbar/Burger.mjs +1 -76
- package/dist/esm/components/Navbar/Burger.mjs.map +1 -1
- package/dist/esm/components/Navbar/DesktopNavbar.mjs +1 -96
- package/dist/esm/components/Navbar/DesktopNavbar.mjs.map +1 -1
- package/dist/esm/components/Navbar/MobileNavbar.mjs +1 -169
- package/dist/esm/components/Navbar/MobileNavbar.mjs.map +1 -1
- package/dist/esm/components/Navbar/index.mjs +1 -86
- package/dist/esm/components/Navbar/index.mjs.map +1 -1
- package/dist/esm/components/Navbar/useNavigation.mjs +1 -152
- package/dist/esm/components/Navbar/useNavigation.mjs.map +1 -1
- package/dist/esm/components/Pagination/NumberItemsSelector.mjs +1 -46
- package/dist/esm/components/Pagination/NumberItemsSelector.mjs.map +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs +1 -173
- package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
- package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs +1 -27
- package/dist/esm/components/Pagination/ShowingResultsNumberItems.mjs.map +1 -1
- package/dist/esm/components/Pagination/index.mjs +1 -5
- package/dist/esm/components/Pagination/pagination.content.mjs +1 -114
- package/dist/esm/components/Pagination/pagination.content.mjs.map +1 -1
- package/dist/esm/components/Pattern/DotPattern.mjs +1 -121
- package/dist/esm/components/Pattern/DotPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/GridPattern.mjs +1 -156
- package/dist/esm/components/Pattern/GridPattern.mjs.map +1 -1
- package/dist/esm/components/Pattern/SpotLight.mjs +1 -168
- package/dist/esm/components/Pattern/SpotLight.mjs.map +1 -1
- package/dist/esm/components/Pattern/index.mjs +1 -5
- package/dist/esm/components/Popover/dynamic.mjs +1 -128
- package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
- package/dist/esm/components/Popover/index.mjs +1 -4
- package/dist/esm/components/Popover/static.mjs +1 -192
- package/dist/esm/components/Popover/static.mjs.map +1 -1
- package/dist/esm/components/PressableSpan/PressableSpan.mjs +1 -158
- package/dist/esm/components/PressableSpan/PressableSpan.mjs.map +1 -1
- package/dist/esm/components/PressableSpan/index.mjs +1 -3
- package/dist/esm/components/RightDrawer/RightDrawer.mjs +1 -179
- package/dist/esm/components/RightDrawer/RightDrawer.mjs.map +1 -1
- package/dist/esm/components/RightDrawer/index.mjs +1 -4
- package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs +1 -60
- package/dist/esm/components/RightDrawer/isElementAtTopAndNotCovered.mjs.map +1 -1
- package/dist/esm/components/RightDrawer/rightDrawer.content.mjs +1 -59
- package/dist/esm/components/RightDrawer/rightDrawer.content.mjs.map +1 -1
- package/dist/esm/components/RightDrawer/useRightDrawer.mjs +1 -64
- package/dist/esm/components/RightDrawer/useRightDrawer.mjs.map +1 -1
- package/dist/esm/components/Select/Multiselect.mjs +1 -353
- package/dist/esm/components/Select/Multiselect.mjs.map +1 -1
- package/dist/esm/components/Select/Select.mjs +1 -276
- package/dist/esm/components/Select/Select.mjs.map +1 -1
- package/dist/esm/components/Select/index.mjs +1 -4
- package/dist/esm/components/SocialNetworks/DiscordLogo.mjs +1 -20
- package/dist/esm/components/SocialNetworks/DiscordLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/FacebookLogo.mjs +1 -17
- package/dist/esm/components/SocialNetworks/FacebookLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/InstagramLogo.mjs +1 -29
- package/dist/esm/components/SocialNetworks/InstagramLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs +1 -32
- package/dist/esm/components/SocialNetworks/LinkedInLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs +1 -15
- package/dist/esm/components/SocialNetworks/ProductHuntLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/TiktokLogo.mjs +1 -17
- package/dist/esm/components/SocialNetworks/TiktokLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/XLogo.mjs +1 -17
- package/dist/esm/components/SocialNetworks/XLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs +1 -17
- package/dist/esm/components/SocialNetworks/YoutubeLogo.mjs.map +1 -1
- package/dist/esm/components/SocialNetworks/index.mjs +1 -64
- package/dist/esm/components/SocialNetworks/index.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/index.mjs +1 -145
- package/dist/esm/components/SwitchSelector/index.mjs.map +1 -1
- package/dist/esm/components/Tab/Tab.mjs +1 -148
- package/dist/esm/components/Tab/Tab.mjs.map +1 -1
- package/dist/esm/components/Tab/TabContext.mjs +1 -33
- package/dist/esm/components/Tab/TabContext.mjs.map +1 -1
- package/dist/esm/components/Tab/index.mjs +1 -3
- package/dist/esm/components/TabSelector/TabSelector.mjs +1 -111
- package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
- package/dist/esm/components/TabSelector/index.mjs +1 -3
- package/dist/esm/components/Table/Table.mjs +1 -195
- package/dist/esm/components/Table/Table.mjs.map +1 -1
- package/dist/esm/components/Table/index.mjs +1 -3
- package/dist/esm/components/Table/table.content.mjs +1 -36
- package/dist/esm/components/Table/table.content.mjs.map +1 -1
- package/dist/esm/components/Tag/index.mjs +1 -316
- package/dist/esm/components/Tag/index.mjs.map +1 -1
- package/dist/esm/components/Terminal/Terminal.mjs +3 -160
- package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
- package/dist/esm/components/Terminal/index.mjs +1 -3
- package/dist/esm/components/Terminal/terminal.content.mjs +1 -60
- package/dist/esm/components/Terminal/terminal.content.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +1 -106
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutocompleteTextArea.mjs +1 -257
- package/dist/esm/components/TextArea/AutocompleteTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/TextArea.mjs +1 -58
- package/dist/esm/components/TextArea/TextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/index.mjs +1 -5
- package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs +1 -79
- package/dist/esm/components/ThemeSwitcherDropDown/DesktopThemeSwitcher.mjs.map +1 -1
- package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs +1 -53
- package/dist/esm/components/ThemeSwitcherDropDown/MobileThemeSwitcher.mjs.map +1 -1
- package/dist/esm/components/ThemeSwitcherDropDown/index.mjs +1 -5
- package/dist/esm/components/ThemeSwitcherDropDown/types.mjs +1 -10
- package/dist/esm/components/ThemeSwitcherDropDown/types.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toast.mjs +1 -187
- package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toaster.mjs +1 -66
- package/dist/esm/components/Toaster/Toaster.mjs.map +1 -1
- package/dist/esm/components/Toaster/index.mjs +1 -5
- package/dist/esm/components/Toaster/useToast.mjs +1 -308
- package/dist/esm/components/Toaster/useToast.mjs.map +1 -1
- package/dist/esm/components/WithResizer/index.mjs +1 -200
- package/dist/esm/components/WithResizer/index.mjs.map +1 -1
- package/dist/esm/components/index.mjs +1 -105
- package/dist/esm/hooks/index.mjs +1 -22
- package/dist/esm/hooks/reactQuery.mjs +1 -915
- package/dist/esm/hooks/reactQuery.mjs.map +1 -1
- package/dist/esm/hooks/useAuth/index.mjs +1 -5
- package/dist/esm/hooks/useAuth/useAuth.mjs +1 -21
- package/dist/esm/hooks/useAuth/useAuth.mjs.map +1 -1
- package/dist/esm/hooks/useAuth/useOAuth2.mjs +1 -28
- package/dist/esm/hooks/useAuth/useOAuth2.mjs.map +1 -1
- package/dist/esm/hooks/useAuth/useSession.mjs +1 -42
- package/dist/esm/hooks/useAuth/useSession.mjs.map +1 -1
- package/dist/esm/hooks/useDevice.mjs +1 -71
- package/dist/esm/hooks/useDevice.mjs.map +1 -1
- package/dist/esm/hooks/useGetElementById.mjs +1 -15
- package/dist/esm/hooks/useGetElementById.mjs.map +1 -1
- package/dist/esm/hooks/useGetElementOrWindow.mjs +1 -15
- package/dist/esm/hooks/useGetElementOrWindow.mjs.map +1 -1
- package/dist/esm/hooks/useHorizontalSwipe.mjs +1 -123
- package/dist/esm/hooks/useHorizontalSwipe.mjs.map +1 -1
- package/dist/esm/hooks/useIntlayerAPI.mjs +1 -21
- package/dist/esm/hooks/useIntlayerAPI.mjs.map +1 -1
- package/dist/esm/hooks/useIsDarkMode.mjs +1 -15
- package/dist/esm/hooks/useIsDarkMode.mjs.map +1 -1
- package/dist/esm/hooks/useIsMounted.mjs +1 -15
- package/dist/esm/hooks/useIsMounted.mjs.map +1 -1
- package/dist/esm/hooks/useItemSelector.mjs +1 -146
- package/dist/esm/hooks/useItemSelector.mjs.map +1 -1
- package/dist/esm/hooks/useKeyboardDetector.mjs +1 -26
- package/dist/esm/hooks/useKeyboardDetector.mjs.map +1 -1
- package/dist/esm/hooks/usePersistedStore.mjs +1 -65
- package/dist/esm/hooks/usePersistedStore.mjs.map +1 -1
- package/dist/esm/hooks/useScreenWidth.mjs +1 -20
- package/dist/esm/hooks/useScreenWidth.mjs.map +1 -1
- package/dist/esm/hooks/useScrollBlockage/index.mjs +1 -27
- package/dist/esm/hooks/useScrollBlockage/index.mjs.map +1 -1
- package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs +1 -70
- package/dist/esm/hooks/useScrollBlockage/useScrollBlockageStore.mjs.map +1 -1
- package/dist/esm/hooks/useScrollDetection.mjs +1 -61
- package/dist/esm/hooks/useScrollDetection.mjs.map +1 -1
- package/dist/esm/hooks/useScrollY.mjs +1 -68
- package/dist/esm/hooks/useScrollY.mjs.map +1 -1
- package/dist/esm/hooks/useSearch.mjs +1 -50
- package/dist/esm/hooks/useSearch.mjs.map +1 -1
- package/dist/esm/hooks/useUser/index.mjs +1 -28
- package/dist/esm/hooks/useUser/index.mjs.map +1 -1
- package/dist/esm/libs/auth.mjs +1 -176
- package/dist/esm/libs/auth.mjs.map +1 -1
- package/dist/esm/libs/index.mjs +1 -3
- package/dist/esm/providers/ReactQueryProvider.mjs +1 -86
- package/dist/esm/providers/ReactQueryProvider.mjs.map +1 -1
- package/dist/esm/providers/index.mjs +1 -4
- package/dist/esm/tailwind.config.mjs +1 -15
- package/dist/esm/tailwind.config.mjs.map +1 -1
- package/dist/esm/utils/cn.mjs +1 -8
- package/dist/esm/utils/cn.mjs.map +1 -1
- package/dist/esm/utils/image.mjs +1 -51
- package/dist/esm/utils/image.mjs.map +1 -1
- package/dist/esm/utils/object.mjs +1 -32
- package/dist/esm/utils/object.mjs.map +1 -1
- package/dist/types/components/Avatar/index.d.ts.map +1 -1
- package/dist/types/components/Breadcrumb/breadcrumb.content.d.ts +1 -1
- package/dist/types/components/Browser/Browser.content.d.ts +8 -8
- package/dist/types/components/Button/Button.d.ts +3 -3
- package/dist/types/components/Carousel/index.content.d.ts +5 -5
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +2 -84
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts.map +1 -1
- package/dist/types/components/Command/index.d.ts +2 -2
- package/dist/types/components/Container/index.d.ts +7 -7
- package/dist/types/components/CopyButton/CopyButton.content.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/ConditionWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/EnumerationWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/FileWrapper.d.ts.map +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/HtmlWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/InsertionWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/MarkdownWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/TranslationWrapper.d.ts +1 -1
- package/dist/types/components/DictionaryEditor/NodeWrapper/index.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 +12 -12
- package/dist/types/components/DictionaryFieldEditor/DictionaryCreationForm/useDictionaryFormSchema.content.d.ts +4 -4
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/dictionaryDetails.content.d.ts +27 -27
- package/dist/types/components/DictionaryFieldEditor/DictionaryDetails/useDictionaryDetailsSchema.content.d.ts +16 -16
- package/dist/types/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.d.ts +12 -12
- package/dist/types/components/DictionaryFieldEditor/SaveForm/saveForm.content.d.ts +16 -16
- package/dist/types/components/DictionaryFieldEditor/StructureView/structureView.content.d.ts +4 -4
- package/dist/types/components/DictionaryFieldEditor/VersionSwitcherDropDown/versionSwitcherDropDown.content.d.ts +3 -3
- package/dist/types/components/DictionaryFieldEditor/dictionaryFieldEditor.content.d.ts +2 -2
- package/dist/types/components/DictionaryFieldEditor/getIsEditableSection.d.ts.map +1 -1
- package/dist/types/components/DictionaryFieldEditor/nodeTypeSelector.content.d.ts +15 -15
- package/dist/types/components/ExpandCollapse/expandCollapse.content.d.ts +3 -3
- package/dist/types/components/HTMLRender/HTMLRender.d.ts.map +1 -1
- package/dist/types/components/IDE/MonacoCode.d.ts.map +1 -1
- package/dist/types/components/IDE/code.content.d.ts +2 -2
- package/dist/types/components/IDE/copyCode.content.d.ts +2 -2
- package/dist/types/components/IDE/selectors.content.d.ts +6 -6
- package/dist/types/components/Input/Checkbox.d.ts +2 -2
- package/dist/types/components/Input/Input.d.ts +1 -1
- package/dist/types/components/Link/Link.d.ts +3 -3
- package/dist/types/components/Loader/index.content.d.ts +1 -1
- package/dist/types/components/LocaleSwitcherContentDropDown/localeSwitcher.content.d.ts +8 -8
- package/dist/types/components/LocaleSwitcherDropDown/localeSwitcher.content.d.ts +6 -6
- package/dist/types/components/Pagination/Pagination.d.ts +1 -1
- package/dist/types/components/Pagination/pagination.content.d.ts +7 -7
- package/dist/types/components/RightDrawer/rightDrawer.content.d.ts +2 -2
- package/dist/types/components/SwitchSelector/index.d.ts +2 -2
- package/dist/types/components/Tab/Tab.d.ts +1 -1
- package/dist/types/components/TabSelector/TabSelector.d.ts +1 -1
- package/dist/types/components/Table/table.content.d.ts +1 -1
- package/dist/types/components/Tag/index.d.ts +3 -3
- package/dist/types/components/Terminal/terminal.content.d.ts +2 -2
- package/package.json +14 -14
- package/tailwind.css +3 -1
|
@@ -1,61 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
//#region src/components/Terminal/terminal.content.ts
|
|
4
|
-
const terminalContent = {
|
|
5
|
-
key: "terminal",
|
|
6
|
-
content: {
|
|
7
|
-
closeTab: t({
|
|
8
|
-
en: "Close tab",
|
|
9
|
-
fr: "Fermer l'onglet",
|
|
10
|
-
es: "Cerrar pestaña",
|
|
11
|
-
"en-GB": "Close tab",
|
|
12
|
-
de: "Tab schließen",
|
|
13
|
-
ja: "タブを閉じる",
|
|
14
|
-
ko: "탭 닫기",
|
|
15
|
-
zh: "关闭标签",
|
|
16
|
-
it: "Chiudi tab",
|
|
17
|
-
pt: "Fechar aba",
|
|
18
|
-
hi: "टैब बंद करें",
|
|
19
|
-
ar: "إغلاق التاب",
|
|
20
|
-
ru: "Закрыть вкладку",
|
|
21
|
-
tr: "Sekmeyi kapat",
|
|
22
|
-
pl: "Zamknij kartę",
|
|
23
|
-
id: "Tutup tab",
|
|
24
|
-
vi: "Đóng tab",
|
|
25
|
-
uk: "Закрити вкладку"
|
|
26
|
-
}),
|
|
27
|
-
terminalInput: t({
|
|
28
|
-
en: "Terminal input",
|
|
29
|
-
fr: "Entrée du terminal",
|
|
30
|
-
es: "Entrada del terminal",
|
|
31
|
-
"en-GB": "Terminal input",
|
|
32
|
-
de: "Terminaleingabe",
|
|
33
|
-
ja: "ターミナル入力",
|
|
34
|
-
ko: "터미널 입력",
|
|
35
|
-
zh: "终端输入",
|
|
36
|
-
it: "Input del terminale",
|
|
37
|
-
pt: "Entrada do terminal",
|
|
38
|
-
hi: "टर्मिनल इनपुट",
|
|
39
|
-
ar: "إدخال الترميز",
|
|
40
|
-
ru: "Ввод терминала",
|
|
41
|
-
tr: "Terminal girişi",
|
|
42
|
-
pl: "Wejście terminala",
|
|
43
|
-
id: "Masukan terminal",
|
|
44
|
-
vi: "Đầu vào terminal",
|
|
45
|
-
uk: "Ввід терміналу"
|
|
46
|
-
})
|
|
47
|
-
},
|
|
48
|
-
title: "Terminal component content",
|
|
49
|
-
description: "Localized content for the Terminal component, providing labels such as 'Close tab' and 'Terminal input'.",
|
|
50
|
-
tags: [
|
|
51
|
-
"component",
|
|
52
|
-
"terminal",
|
|
53
|
-
"ui",
|
|
54
|
-
"localization",
|
|
55
|
-
"labels"
|
|
56
|
-
]
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
//#endregion
|
|
60
|
-
export { terminalContent as default };
|
|
1
|
+
import{t as e}from"intlayer";const t={key:`terminal`,content:{closeTab:e({en:`Close tab`,fr:`Fermer l'onglet`,es:`Cerrar pestaña`,"en-GB":`Close tab`,de:`Tab schließen`,ja:`タブを閉じる`,ko:`탭 닫기`,zh:`关闭标签`,it:`Chiudi tab`,pt:`Fechar aba`,hi:`टैब बंद करें`,ar:`إغلاق التاب`,ru:`Закрыть вкладку`,tr:`Sekmeyi kapat`,pl:`Zamknij kartę`,id:`Tutup tab`,vi:`Đóng tab`,uk:`Закрити вкладку`}),terminalInput:e({en:`Terminal input`,fr:`Entrée du terminal`,es:`Entrada del terminal`,"en-GB":`Terminal input`,de:`Terminaleingabe`,ja:`ターミナル入力`,ko:`터미널 입력`,zh:`终端输入`,it:`Input del terminale`,pt:`Entrada do terminal`,hi:`टर्मिनल इनपुट`,ar:`إدخال الترميز`,ru:`Ввод терминала`,tr:`Terminal girişi`,pl:`Wejście terminala`,id:`Masukan terminal`,vi:`Đầu vào terminal`,uk:`Ввід терміналу`})},title:`Terminal component content`,description:`Localized content for the Terminal component, providing labels such as 'Close tab' and 'Terminal input'.`,tags:[`component`,`terminal`,`ui`,`localization`,`labels`]};export{t as default};
|
|
61
2
|
//# sourceMappingURL=terminal.content.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal.content.mjs","names":[],"sources":["../../../../src/components/Terminal/terminal.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nconst terminalContent = {\n key: 'terminal',\n content: {\n closeTab: t({\n en: 'Close tab',\n fr: \"Fermer l'onglet\",\n es: 'Cerrar pestaña',\n 'en-GB': 'Close tab',\n de: 'Tab schließen',\n ja: 'タブを閉じる',\n ko: '탭 닫기',\n zh: '关闭标签',\n it: 'Chiudi tab',\n pt: 'Fechar aba',\n hi: 'टैब बंद करें',\n ar: 'إغلاق التاب',\n ru: 'Закрыть вкладку',\n tr: 'Sekmeyi kapat',\n pl: 'Zamknij kartę',\n id: 'Tutup tab',\n vi: 'Đóng tab',\n uk: 'Закрити вкладку',\n }),\n terminalInput: t({\n en: 'Terminal input',\n fr: 'Entrée du terminal',\n es: 'Entrada del terminal',\n 'en-GB': 'Terminal input',\n de: 'Terminaleingabe',\n ja: 'ターミナル入力',\n ko: '터미널 입력',\n zh: '终端输入',\n it: 'Input del terminale',\n pt: 'Entrada do terminal',\n hi: 'टर्मिनल इनपुट',\n ar: 'إدخال الترميز',\n ru: 'Ввод терминала',\n tr: 'Terminal girişi',\n pl: 'Wejście terminala',\n id: 'Masukan terminal',\n vi: 'Đầu vào terminal',\n uk: 'Ввід терміналу',\n }),\n },\n title: 'Terminal component content',\n description:\n \"Localized content for the Terminal component, providing labels such as 'Close tab' and 'Terminal input'.\",\n tags: ['component', 'terminal', 'ui', 'localization', 'labels'],\n} satisfies Dictionary;\n\nexport default terminalContent;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"terminal.content.mjs","names":[],"sources":["../../../../src/components/Terminal/terminal.content.ts"],"sourcesContent":["import { type Dictionary, t } from 'intlayer';\n\nconst terminalContent = {\n key: 'terminal',\n content: {\n closeTab: t({\n en: 'Close tab',\n fr: \"Fermer l'onglet\",\n es: 'Cerrar pestaña',\n 'en-GB': 'Close tab',\n de: 'Tab schließen',\n ja: 'タブを閉じる',\n ko: '탭 닫기',\n zh: '关闭标签',\n it: 'Chiudi tab',\n pt: 'Fechar aba',\n hi: 'टैब बंद करें',\n ar: 'إغلاق التاب',\n ru: 'Закрыть вкладку',\n tr: 'Sekmeyi kapat',\n pl: 'Zamknij kartę',\n id: 'Tutup tab',\n vi: 'Đóng tab',\n uk: 'Закрити вкладку',\n }),\n terminalInput: t({\n en: 'Terminal input',\n fr: 'Entrée du terminal',\n es: 'Entrada del terminal',\n 'en-GB': 'Terminal input',\n de: 'Terminaleingabe',\n ja: 'ターミナル入力',\n ko: '터미널 입력',\n zh: '终端输入',\n it: 'Input del terminale',\n pt: 'Entrada do terminal',\n hi: 'टर्मिनल इनपुट',\n ar: 'إدخال الترميز',\n ru: 'Ввод терминала',\n tr: 'Terminal girişi',\n pl: 'Wejście terminala',\n id: 'Masukan terminal',\n vi: 'Đầu vào terminal',\n uk: 'Ввід терміналу',\n }),\n },\n title: 'Terminal component content',\n description:\n \"Localized content for the Terminal component, providing labels such as 'Close tab' and 'Terminal input'.\",\n tags: ['component', 'terminal', 'ui', 'localization', 'labels'],\n} satisfies Dictionary;\n\nexport default terminalContent;\n"],"mappings":"6BAEA,MAAM,EAAkB,CACtB,IAAK,WACL,QAAS,CACP,SAAU,EAAE,CACV,GAAI,YACJ,GAAI,kBACJ,GAAI,iBACJ,QAAS,YACT,GAAI,gBACJ,GAAI,SACJ,GAAI,OACJ,GAAI,OACJ,GAAI,aACJ,GAAI,aACJ,GAAI,eACJ,GAAI,cACJ,GAAI,kBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,YACJ,GAAI,WACJ,GAAI,kBACL,CAAC,CACF,cAAe,EAAE,CACf,GAAI,iBACJ,GAAI,qBACJ,GAAI,uBACJ,QAAS,iBACT,GAAI,kBACJ,GAAI,UACJ,GAAI,SACJ,GAAI,OACJ,GAAI,sBACJ,GAAI,sBACJ,GAAI,gBACJ,GAAI,gBACJ,GAAI,iBACJ,GAAI,kBACJ,GAAI,oBACJ,GAAI,mBACJ,GAAI,mBACJ,GAAI,iBACL,CAAC,CACH,CACD,MAAO,6BACP,YACE,2GACF,KAAM,CAAC,YAAa,WAAY,KAAM,eAAgB,SAAS,CAChE"}
|
|
@@ -1,107 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { cn } from "../../utils/cn.mjs";
|
|
4
|
-
import { TextArea } from "./TextArea.mjs";
|
|
5
|
-
import { useEffect, useImperativeHandle, useRef } from "react";
|
|
6
|
-
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
|
|
8
|
-
//#region src/components/TextArea/AutoSizeTextArea.tsx
|
|
9
|
-
const LINE_HEIGHT = 24;
|
|
10
|
-
const LINE_PADDING = 12;
|
|
11
|
-
/**
|
|
12
|
-
* AutoSizedTextArea Component
|
|
13
|
-
*
|
|
14
|
-
* An enhanced textarea that automatically adjusts its height based on content,
|
|
15
|
-
* providing a smooth user experience for variable-length text input.
|
|
16
|
-
*
|
|
17
|
-
* ## Features
|
|
18
|
-
* - **Auto-Sizing**: Dynamically grows and shrinks based on content
|
|
19
|
-
* - **Row Limits**: Configurable maximum rows before scrolling
|
|
20
|
-
* - **Smooth Transitions**: Seamless height adjustments as user types
|
|
21
|
-
* - **Scroll Management**: Automatic overflow handling when max height reached
|
|
22
|
-
* - **Performance Optimized**: Efficient height calculations and updates
|
|
23
|
-
*
|
|
24
|
-
* ## Technical Details
|
|
25
|
-
* - Line height: 24px with 12px padding
|
|
26
|
-
* - Height calculation: `scrollHeight` vs `maxRows * lineHeight + padding`
|
|
27
|
-
* - Resize: Disabled when auto-sizing is active for smooth experience
|
|
28
|
-
* - Ref forwarding: Supports imperative access to textarea element
|
|
29
|
-
*
|
|
30
|
-
* ## Use Cases
|
|
31
|
-
* - Chat message composition with dynamic sizing
|
|
32
|
-
* - Comment forms that expand with content
|
|
33
|
-
* - Note-taking interfaces with variable length
|
|
34
|
-
* - Social media post creation
|
|
35
|
-
* - Code snippet input with growth limits
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```tsx
|
|
39
|
-
* // Chat-style auto-expanding textarea
|
|
40
|
-
* const [message, setMessage] = useState('');
|
|
41
|
-
*
|
|
42
|
-
* <AutoSizedTextArea
|
|
43
|
-
* value={message}
|
|
44
|
-
* onChange={(e) => setMessage(e.target.value)}
|
|
45
|
-
* placeholder="Type your message..."
|
|
46
|
-
* autoSize={true}
|
|
47
|
-
* maxRows={8}
|
|
48
|
-
* className="min-h-[40px]"
|
|
49
|
-
* onKeyDown={(e) => {
|
|
50
|
-
* if (e.key === 'Enter' && !e.shiftKey) {
|
|
51
|
-
* e.preventDefault();
|
|
52
|
-
* sendMessage(message);
|
|
53
|
-
* setMessage('');
|
|
54
|
-
* }
|
|
55
|
-
* }}
|
|
56
|
-
* />
|
|
57
|
-
*
|
|
58
|
-
* // Note-taking with generous height limits
|
|
59
|
-
* <AutoSizedTextArea
|
|
60
|
-
* defaultValue={note.content}
|
|
61
|
-
* onChange={handleNoteChange}
|
|
62
|
-
* placeholder="Write your notes here..."
|
|
63
|
-
* autoSize={true}
|
|
64
|
-
* maxRows={20}
|
|
65
|
-
* variant={InputVariant.DEFAULT}
|
|
66
|
-
* />
|
|
67
|
-
* ```
|
|
68
|
-
*/
|
|
69
|
-
const AutoSizedTextArea = ({ className, autoSize = true, onChange, maxRows = 999, ref, ...props }) => {
|
|
70
|
-
const textAreaRef = useRef(null);
|
|
71
|
-
useImperativeHandle(ref, () => textAreaRef.current);
|
|
72
|
-
const adjustHeight = () => {
|
|
73
|
-
const textAreaEl = textAreaRef.current;
|
|
74
|
-
if (!textAreaEl || !autoSize) return;
|
|
75
|
-
const textAreaStyle = textAreaEl.style;
|
|
76
|
-
textAreaStyle.height = "auto";
|
|
77
|
-
const scrollHeight = textAreaEl.scrollHeight;
|
|
78
|
-
const maxHeight = LINE_HEIGHT * maxRows + LINE_PADDING;
|
|
79
|
-
const minHeight = LINE_HEIGHT + LINE_PADDING;
|
|
80
|
-
textAreaStyle.height = `${Math.max(Math.min(scrollHeight, maxHeight), minHeight)}px`;
|
|
81
|
-
};
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
adjustHeight();
|
|
84
|
-
}, [
|
|
85
|
-
props.value,
|
|
86
|
-
props.defaultValue,
|
|
87
|
-
adjustHeight
|
|
88
|
-
]);
|
|
89
|
-
const handleChange = (e) => {
|
|
90
|
-
onChange?.(e);
|
|
91
|
-
adjustHeight();
|
|
92
|
-
};
|
|
93
|
-
const setRef = (el) => {
|
|
94
|
-
textAreaRef.current = el;
|
|
95
|
-
if (el) adjustHeight();
|
|
96
|
-
};
|
|
97
|
-
return /* @__PURE__ */ jsx(TextArea, {
|
|
98
|
-
ref: setRef,
|
|
99
|
-
onChange: handleChange,
|
|
100
|
-
className: cn("overflow-y-auto", autoSize && "resize-none", className),
|
|
101
|
-
...props
|
|
102
|
-
});
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
//#endregion
|
|
106
|
-
export { AutoSizedTextArea };
|
|
1
|
+
"use client";import{cn as e}from"../../utils/cn.mjs";import{TextArea as t}from"./TextArea.mjs";import{useEffect as n,useImperativeHandle as r,useRef as i}from"react";import{jsx as a}from"react/jsx-runtime";const o=({className:o,autoSize:s=!0,onChange:c,maxRows:l=999,ref:u,...d})=>{let f=i(null);r(u,()=>f.current);let p=()=>{let e=f.current;if(!e||!s)return;let t=e.style;t.height=`auto`;let n=e.scrollHeight,r=24*l+12;t.height=`${Math.max(Math.min(n,r),36)}px`};return n(()=>{p()},[d.value,d.defaultValue,p]),a(t,{ref:e=>{f.current=e,e&&p()},onChange:e=>{c?.(e),p()},className:e(`overflow-y-auto`,s&&`resize-none`,o),...d})};export{o as AutoSizedTextArea};
|
|
107
2
|
//# sourceMappingURL=AutoSizeTextArea.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutoSizeTextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/AutoSizeTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport {\n type ChangeEventHandler,\n type FC,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { TextArea, type TextAreaProps } from './TextArea';\n\n/**\n * Props for the AutoSizedTextArea component.\n *\n * Extends TextAreaProps with auto-sizing functionality and row limitations.\n *\n * @example\n * ```tsx\n * // Auto-sizing textarea that grows with content\n * <AutoSizedTextArea\n * placeholder=\"Start typing and watch it grow...\"\n * autoSize={true}\n * maxRows={10}\n * />\n *\n * // Limited height with scroll when exceeded\n * <AutoSizedTextArea\n * value={longText}\n * onChange={handleChange}\n * autoSize={true}\n * maxRows={5}\n * className=\"max-h-[120px]\"\n * />\n *\n * // Disable auto-sizing for fixed height\n * <AutoSizedTextArea\n * autoSize={false}\n * rows={3}\n * placeholder=\"Fixed height textarea\"\n * />\n * ```\n */\nexport type AutoSizedTextAreaProps = TextAreaProps & {\n /** Whether to automatically adjust height based on content */\n autoSize?: boolean;\n /** Maximum number of rows before scrolling is enabled */\n maxRows?: number;\n};\n\nconst LINE_HEIGHT = 24; // px\nconst LINE_PADDING = 12; // px\n\n/**\n * AutoSizedTextArea Component\n *\n * An enhanced textarea that automatically adjusts its height based on content,\n * providing a smooth user experience for variable-length text input.\n *\n * ## Features\n * - **Auto-Sizing**: Dynamically grows and shrinks based on content\n * - **Row Limits**: Configurable maximum rows before scrolling\n * - **Smooth Transitions**: Seamless height adjustments as user types\n * - **Scroll Management**: Automatic overflow handling when max height reached\n * - **Performance Optimized**: Efficient height calculations and updates\n *\n * ## Technical Details\n * - Line height: 24px with 12px padding\n * - Height calculation: `scrollHeight` vs `maxRows * lineHeight + padding`\n * - Resize: Disabled when auto-sizing is active for smooth experience\n * - Ref forwarding: Supports imperative access to textarea element\n *\n * ## Use Cases\n * - Chat message composition with dynamic sizing\n * - Comment forms that expand with content\n * - Note-taking interfaces with variable length\n * - Social media post creation\n * - Code snippet input with growth limits\n *\n * @example\n * ```tsx\n * // Chat-style auto-expanding textarea\n * const [message, setMessage] = useState('');\n *\n * <AutoSizedTextArea\n * value={message}\n * onChange={(e) => setMessage(e.target.value)}\n * placeholder=\"Type your message...\"\n * autoSize={true}\n * maxRows={8}\n * className=\"min-h-[40px]\"\n * onKeyDown={(e) => {\n * if (e.key === 'Enter' && !e.shiftKey) {\n * e.preventDefault();\n * sendMessage(message);\n * setMessage('');\n * }\n * }}\n * />\n *\n * // Note-taking with generous height limits\n * <AutoSizedTextArea\n * defaultValue={note.content}\n * onChange={handleNoteChange}\n * placeholder=\"Write your notes here...\"\n * autoSize={true}\n * maxRows={20}\n * variant={InputVariant.DEFAULT}\n * />\n * ```\n */\nexport const AutoSizedTextArea: FC<AutoSizedTextAreaProps> = ({\n className,\n autoSize = true,\n onChange,\n maxRows = 999,\n ref,\n ...props\n}) => {\n const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n\n useImperativeHandle(ref, () => textAreaRef.current!);\n\n const adjustHeight = () => {\n const textAreaEl = textAreaRef.current;\n\n if (!textAreaEl || !autoSize) return;\n\n const textAreaStyle = textAreaEl.style;\n\n // Reset height to get accurate scrollHeight\n textAreaStyle.height = 'auto';\n const scrollHeight = textAreaEl.scrollHeight;\n const maxHeight = LINE_HEIGHT * maxRows + LINE_PADDING;\n const minHeight = LINE_HEIGHT + LINE_PADDING;\n\n // Set the new height\n textAreaStyle.height = `${Math.max(Math.min(scrollHeight, maxHeight), minHeight)}px`;\n };\n\n useEffect(() => {\n adjustHeight();\n }, [props.value, props.defaultValue, adjustHeight]);\n\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (e) => {\n onChange?.(e);\n adjustHeight();\n };\n\n const setRef = (el: HTMLTextAreaElement | null) => {\n textAreaRef.current = el;\n if (el) {\n adjustHeight();\n }\n };\n\n return (\n <TextArea\n ref={setRef}\n onChange={handleChange}\n className={cn('overflow-y-auto', autoSize && 'resize-none', className)}\n {...props}\n />\n );\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"AutoSizeTextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/AutoSizeTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { cn } from '@utils/cn';\nimport {\n type ChangeEventHandler,\n type FC,\n useEffect,\n useImperativeHandle,\n useRef,\n} from 'react';\nimport { TextArea, type TextAreaProps } from './TextArea';\n\n/**\n * Props for the AutoSizedTextArea component.\n *\n * Extends TextAreaProps with auto-sizing functionality and row limitations.\n *\n * @example\n * ```tsx\n * // Auto-sizing textarea that grows with content\n * <AutoSizedTextArea\n * placeholder=\"Start typing and watch it grow...\"\n * autoSize={true}\n * maxRows={10}\n * />\n *\n * // Limited height with scroll when exceeded\n * <AutoSizedTextArea\n * value={longText}\n * onChange={handleChange}\n * autoSize={true}\n * maxRows={5}\n * className=\"max-h-[120px]\"\n * />\n *\n * // Disable auto-sizing for fixed height\n * <AutoSizedTextArea\n * autoSize={false}\n * rows={3}\n * placeholder=\"Fixed height textarea\"\n * />\n * ```\n */\nexport type AutoSizedTextAreaProps = TextAreaProps & {\n /** Whether to automatically adjust height based on content */\n autoSize?: boolean;\n /** Maximum number of rows before scrolling is enabled */\n maxRows?: number;\n};\n\nconst LINE_HEIGHT = 24; // px\nconst LINE_PADDING = 12; // px\n\n/**\n * AutoSizedTextArea Component\n *\n * An enhanced textarea that automatically adjusts its height based on content,\n * providing a smooth user experience for variable-length text input.\n *\n * ## Features\n * - **Auto-Sizing**: Dynamically grows and shrinks based on content\n * - **Row Limits**: Configurable maximum rows before scrolling\n * - **Smooth Transitions**: Seamless height adjustments as user types\n * - **Scroll Management**: Automatic overflow handling when max height reached\n * - **Performance Optimized**: Efficient height calculations and updates\n *\n * ## Technical Details\n * - Line height: 24px with 12px padding\n * - Height calculation: `scrollHeight` vs `maxRows * lineHeight + padding`\n * - Resize: Disabled when auto-sizing is active for smooth experience\n * - Ref forwarding: Supports imperative access to textarea element\n *\n * ## Use Cases\n * - Chat message composition with dynamic sizing\n * - Comment forms that expand with content\n * - Note-taking interfaces with variable length\n * - Social media post creation\n * - Code snippet input with growth limits\n *\n * @example\n * ```tsx\n * // Chat-style auto-expanding textarea\n * const [message, setMessage] = useState('');\n *\n * <AutoSizedTextArea\n * value={message}\n * onChange={(e) => setMessage(e.target.value)}\n * placeholder=\"Type your message...\"\n * autoSize={true}\n * maxRows={8}\n * className=\"min-h-[40px]\"\n * onKeyDown={(e) => {\n * if (e.key === 'Enter' && !e.shiftKey) {\n * e.preventDefault();\n * sendMessage(message);\n * setMessage('');\n * }\n * }}\n * />\n *\n * // Note-taking with generous height limits\n * <AutoSizedTextArea\n * defaultValue={note.content}\n * onChange={handleNoteChange}\n * placeholder=\"Write your notes here...\"\n * autoSize={true}\n * maxRows={20}\n * variant={InputVariant.DEFAULT}\n * />\n * ```\n */\nexport const AutoSizedTextArea: FC<AutoSizedTextAreaProps> = ({\n className,\n autoSize = true,\n onChange,\n maxRows = 999,\n ref,\n ...props\n}) => {\n const textAreaRef = useRef<HTMLTextAreaElement | null>(null);\n\n useImperativeHandle(ref, () => textAreaRef.current!);\n\n const adjustHeight = () => {\n const textAreaEl = textAreaRef.current;\n\n if (!textAreaEl || !autoSize) return;\n\n const textAreaStyle = textAreaEl.style;\n\n // Reset height to get accurate scrollHeight\n textAreaStyle.height = 'auto';\n const scrollHeight = textAreaEl.scrollHeight;\n const maxHeight = LINE_HEIGHT * maxRows + LINE_PADDING;\n const minHeight = LINE_HEIGHT + LINE_PADDING;\n\n // Set the new height\n textAreaStyle.height = `${Math.max(Math.min(scrollHeight, maxHeight), minHeight)}px`;\n };\n\n useEffect(() => {\n adjustHeight();\n }, [props.value, props.defaultValue, adjustHeight]);\n\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (e) => {\n onChange?.(e);\n adjustHeight();\n };\n\n const setRef = (el: HTMLTextAreaElement | null) => {\n textAreaRef.current = el;\n if (el) {\n adjustHeight();\n }\n };\n\n return (\n <TextArea\n ref={setRef}\n onChange={handleChange}\n className={cn('overflow-y-auto', autoSize && 'resize-none', className)}\n {...props}\n />\n );\n};\n"],"mappings":"8MAkDA,MA6Da,GAAiD,CAC5D,YACA,WAAW,GACX,WACA,UAAU,IACV,MACA,GAAG,KACC,CACJ,IAAM,EAAc,EAAmC,KAAK,CAE5D,EAAoB,MAAW,EAAY,QAAS,CAEpD,IAAM,MAAqB,CACzB,IAAM,EAAa,EAAY,QAE/B,GAAI,CAAC,GAAc,CAAC,EAAU,OAE9B,IAAM,EAAgB,EAAW,MAGjC,EAAc,OAAS,OACvB,IAAM,EAAe,EAAW,aAC1B,EAAY,GAAc,EAAU,GAI1C,EAAc,OAAS,GAAG,KAAK,IAAI,KAAK,IAAI,EAAc,EAAU,CAAE,GAAU,CAAC,KAmBnF,OAhBA,MAAgB,CACd,GAAc,EACb,CAAC,EAAM,MAAO,EAAM,aAAc,EAAa,CAAC,CAejD,EAAC,EAAA,CACC,IATY,GAAmC,CACjD,EAAY,QAAU,EAClB,GACF,GAAc,EAOd,SAf2D,GAAM,CACnE,IAAW,EAAE,CACb,GAAc,EAcZ,UAAW,EAAG,kBAAmB,GAAY,cAAe,EAAU,CACtE,GAAI,GACJ"}
|
|
@@ -1,258 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { useAutocomplete } from "../../hooks/reactQuery.mjs";
|
|
4
|
-
import { AutoSizedTextArea } from "./AutoSizeTextArea.mjs";
|
|
5
|
-
import { useEffect, useRef, useState } from "react";
|
|
6
|
-
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
import { useConfiguration } from "@intlayer/editor-react";
|
|
8
|
-
|
|
9
|
-
//#region src/components/TextArea/AutocompleteTextArea.tsx
|
|
10
|
-
/**
|
|
11
|
-
* Custom hook for debouncing values to prevent excessive API calls.
|
|
12
|
-
*
|
|
13
|
-
* Delays updating the returned value until the input value has stopped changing
|
|
14
|
-
* for the specified delay period.
|
|
15
|
-
*
|
|
16
|
-
* @param value - The value to debounce
|
|
17
|
-
* @param delay - Delay in milliseconds before updating the debounced value
|
|
18
|
-
* @returns The debounced value that only updates after the delay period
|
|
19
|
-
*
|
|
20
|
-
* @example
|
|
21
|
-
* ```tsx
|
|
22
|
-
* const [searchTerm, setSearchTerm] = useState('');
|
|
23
|
-
* const debouncedSearchTerm = useDebounce(searchTerm, 300);
|
|
24
|
-
*
|
|
25
|
-
* useEffect(() => {
|
|
26
|
-
* if (debouncedSearchTerm) {
|
|
27
|
-
* performSearch(debouncedSearchTerm);
|
|
28
|
-
* }
|
|
29
|
-
* }, [debouncedSearchTerm]);
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
const useDebounce = (value, delay) => {
|
|
33
|
-
const [debouncedValue, setDebouncedValue] = useState(value);
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
const timer = setTimeout(() => {
|
|
36
|
-
setDebouncedValue(value);
|
|
37
|
-
}, delay);
|
|
38
|
-
return () => clearTimeout(timer);
|
|
39
|
-
}, [value, delay]);
|
|
40
|
-
return debouncedValue;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* AutoCompleteTextarea Component
|
|
44
|
-
*
|
|
45
|
-
* An intelligent textarea that provides AI-powered autocomplete suggestions as users type,
|
|
46
|
-
* combining auto-sizing functionality with contextual text completion.
|
|
47
|
-
*
|
|
48
|
-
* ## Features
|
|
49
|
-
* - **AI-Powered Suggestions**: Context-aware autocomplete using configured AI models
|
|
50
|
-
* - **Debounced API Calls**: Efficient suggestion fetching with 200ms debounce
|
|
51
|
-
* - **Visual Suggestions**: Inline preview of suggested completions
|
|
52
|
-
* - **Keyboard Navigation**: Tab key to accept suggestions
|
|
53
|
-
* - **Context Analysis**: Uses surrounding text for better suggestions
|
|
54
|
-
* - **Auto-Sizing**: Inherits all AutoSizedTextArea capabilities
|
|
55
|
-
* - **Performance Optimized**: Smart caching and minimal re-renders
|
|
56
|
-
*
|
|
57
|
-
* ## Technical Implementation
|
|
58
|
-
* - **Debounce Strategy**: 200ms delay before fetching suggestions
|
|
59
|
-
* - **Context Window**: 5 lines before/after cursor for context
|
|
60
|
-
* - **Minimum Trigger**: Requires 3+ characters before suggesting
|
|
61
|
-
* - **Position Tracking**: Ghost layer for accurate suggestion positioning
|
|
62
|
-
* - **Cursor Management**: Tracks cursor position during suggestion fetch
|
|
63
|
-
*
|
|
64
|
-
* ## AI Integration
|
|
65
|
-
* - Uses configured AI model (OpenAI, Anthropic, etc.)
|
|
66
|
-
* - Sends context-aware prompts for relevant suggestions
|
|
67
|
-
* - Respects temperature and model settings from configuration
|
|
68
|
-
* - Handles API errors gracefully without interrupting user flow
|
|
69
|
-
*
|
|
70
|
-
* ## Use Cases
|
|
71
|
-
* - **Content Creation**: Blog posts, articles, documentation
|
|
72
|
-
* - **Code Comments**: Intelligent code documentation assistance
|
|
73
|
-
* - **Email Composition**: Professional email writing assistance
|
|
74
|
-
* - **Creative Writing**: Story and narrative completion
|
|
75
|
-
* - **Technical Documentation**: API docs, README files
|
|
76
|
-
* - **Social Media**: Post creation with engagement optimization
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```tsx
|
|
80
|
-
* // Blog writing assistant
|
|
81
|
-
* const [blogPost, setBlogPost] = useState('');
|
|
82
|
-
* const [isAiEnabled, setIsAiEnabled] = useState(true);
|
|
83
|
-
*
|
|
84
|
-
* <div className="space-y-4">
|
|
85
|
-
* <div className="flex items-center gap-2">
|
|
86
|
-
* <Switch
|
|
87
|
-
* checked={isAiEnabled}
|
|
88
|
-
* onChange={setIsAiEnabled}
|
|
89
|
-
* />
|
|
90
|
-
* <label>AI Writing Assistant</label>
|
|
91
|
-
* </div>
|
|
92
|
-
*
|
|
93
|
-
* <AutoCompleteTextarea
|
|
94
|
-
* value={blogPost}
|
|
95
|
-
* onChange={(e) => setBlogPost(e.target.value)}
|
|
96
|
-
* placeholder="Start writing your blog post..."
|
|
97
|
-
* isActive={isAiEnabled}
|
|
98
|
-
* autoSize={true}
|
|
99
|
-
* maxRows={15}
|
|
100
|
-
* className="min-h-[200px] font-serif text-lg leading-relaxed"
|
|
101
|
-
* />
|
|
102
|
-
* </div>
|
|
103
|
-
*
|
|
104
|
-
* // Code documentation assistant
|
|
105
|
-
* <AutoCompleteTextarea
|
|
106
|
-
* value={docComment}
|
|
107
|
-
* onChange={handleDocChange}
|
|
108
|
-
* placeholder="/** Describe this function... *\/"
|
|
109
|
-
* isActive={true}
|
|
110
|
-
* autoSize={true}
|
|
111
|
-
* maxRows={8}
|
|
112
|
-
* className="font-mono text-sm"
|
|
113
|
-
* />
|
|
114
|
-
*
|
|
115
|
-
* // Email composition with templates
|
|
116
|
-
* <AutoCompleteTextarea
|
|
117
|
-
* defaultValue="Dear "
|
|
118
|
-
* placeholder="AI will help complete your email..."
|
|
119
|
-
* isActive={true}
|
|
120
|
-
* autoSize={true}
|
|
121
|
-
* maxRows={12}
|
|
122
|
-
* variant={InputVariant.DEFAULT}
|
|
123
|
-
* />
|
|
124
|
-
* ```
|
|
125
|
-
*
|
|
126
|
-
* ## Accessibility
|
|
127
|
-
* - Ghost layer is properly hidden from screen readers
|
|
128
|
-
* - Maintains focus management during suggestion acceptance
|
|
129
|
-
* - Preserves keyboard navigation patterns
|
|
130
|
-
* - Respects reduced motion preferences
|
|
131
|
-
*/
|
|
132
|
-
const AutoCompleteTextarea = ({ isActive = true, suggestion: suggestionProp, ...props }) => {
|
|
133
|
-
const defaultValue = String(props.value ?? props.defaultValue ?? "");
|
|
134
|
-
const { mutate: autocomplete } = useAutocomplete();
|
|
135
|
-
const configuration = useConfiguration();
|
|
136
|
-
const [isTyped, setIsTyped] = useState(false);
|
|
137
|
-
const [text, setText] = useState(defaultValue);
|
|
138
|
-
const [suggestion, setSuggestion] = useState("");
|
|
139
|
-
const textareaRef = useRef(null);
|
|
140
|
-
const placeholderRef = useRef(null);
|
|
141
|
-
const ghostLayerRef = useRef(null);
|
|
142
|
-
const [suggestionPosition, setSuggestionPosition] = useState(null);
|
|
143
|
-
const [cursorAtFetch, setCursorAtFetch] = useState(-1);
|
|
144
|
-
const debouncedText = useDebounce(text, 200);
|
|
145
|
-
useEffect(() => {
|
|
146
|
-
if (typeof props.value === "undefined") return;
|
|
147
|
-
setText(defaultValue);
|
|
148
|
-
}, [props.value, props.defaultValue]);
|
|
149
|
-
useEffect(() => {
|
|
150
|
-
if (!isActive) return;
|
|
151
|
-
if (!isTyped) return;
|
|
152
|
-
if (debouncedText.length > 3) setSuggestion("");
|
|
153
|
-
else setSuggestion("");
|
|
154
|
-
}, [
|
|
155
|
-
debouncedText,
|
|
156
|
-
isActive,
|
|
157
|
-
autocomplete,
|
|
158
|
-
configuration
|
|
159
|
-
]);
|
|
160
|
-
useEffect(() => {
|
|
161
|
-
if (!suggestion || cursorAtFetch === -1 || !placeholderRef.current || !ghostLayerRef.current) {
|
|
162
|
-
setSuggestionPosition(null);
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
const rect = placeholderRef.current.getBoundingClientRect();
|
|
166
|
-
const parentRect = ghostLayerRef.current.getBoundingClientRect();
|
|
167
|
-
setSuggestionPosition({
|
|
168
|
-
left: rect.left - parentRect.left,
|
|
169
|
-
top: rect.top - parentRect.top
|
|
170
|
-
});
|
|
171
|
-
}, [
|
|
172
|
-
suggestion,
|
|
173
|
-
cursorAtFetch,
|
|
174
|
-
text
|
|
175
|
-
]);
|
|
176
|
-
const acceptSuggestion = () => {
|
|
177
|
-
const currentCursor = textareaRef.current?.selectionStart ?? cursorAtFetch;
|
|
178
|
-
if (currentCursor !== cursorAtFetch) return;
|
|
179
|
-
setText(text.slice(0, currentCursor) + suggestion + text.slice(currentCursor));
|
|
180
|
-
setSuggestion("");
|
|
181
|
-
setCursorAtFetch(-1);
|
|
182
|
-
setTimeout(() => {
|
|
183
|
-
textareaRef.current?.focus();
|
|
184
|
-
const newCursorPos = currentCursor + suggestion.length;
|
|
185
|
-
textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos);
|
|
186
|
-
}, 0);
|
|
187
|
-
};
|
|
188
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
189
|
-
className: "relative w-full",
|
|
190
|
-
children: [
|
|
191
|
-
/* @__PURE__ */ jsxs("div", {
|
|
192
|
-
ref: ghostLayerRef,
|
|
193
|
-
className: "pointer-events-none absolute inset-0 whitespace-pre-wrap break-words px-1 py-3 text-base leading-[1.45rem] md:py-1 md:text-sm md:leading-[1.23rem]",
|
|
194
|
-
"aria-hidden": "true",
|
|
195
|
-
children: [suggestion && cursorAtFetch !== -1 ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
196
|
-
/* @__PURE__ */ jsx("span", {
|
|
197
|
-
className: "align-text-top text-transparent",
|
|
198
|
-
children: text.slice(0, cursorAtFetch)
|
|
199
|
-
}),
|
|
200
|
-
/* @__PURE__ */ jsx("span", {
|
|
201
|
-
ref: placeholderRef,
|
|
202
|
-
style: { visibility: "hidden" },
|
|
203
|
-
"aria-hidden": "true",
|
|
204
|
-
children: suggestion
|
|
205
|
-
}),
|
|
206
|
-
/* @__PURE__ */ jsx("span", {
|
|
207
|
-
className: "align-text-top text-transparent",
|
|
208
|
-
children: text.slice(cursorAtFetch)
|
|
209
|
-
})
|
|
210
|
-
] }) : /* @__PURE__ */ jsx("span", {
|
|
211
|
-
className: "align-text-top text-transparent",
|
|
212
|
-
children: text
|
|
213
|
-
}), suggestionProp && /* @__PURE__ */ jsx("span", {
|
|
214
|
-
className: "align-text-top text-neutral",
|
|
215
|
-
children: suggestionProp
|
|
216
|
-
})]
|
|
217
|
-
}),
|
|
218
|
-
suggestion && suggestionPosition && /* @__PURE__ */ jsx("div", {
|
|
219
|
-
className: "pointer-events-none whitespace-pre-wrap break-words text-base text-neutral leading-[1.45rem] md:text-sm md:leading-[1.23rem]",
|
|
220
|
-
style: {
|
|
221
|
-
position: "absolute",
|
|
222
|
-
left: suggestionPosition.left,
|
|
223
|
-
top: suggestionPosition.top
|
|
224
|
-
},
|
|
225
|
-
children: suggestion
|
|
226
|
-
}),
|
|
227
|
-
/* @__PURE__ */ jsx(AutoSizedTextArea, {
|
|
228
|
-
...props,
|
|
229
|
-
ref: textareaRef,
|
|
230
|
-
value: text,
|
|
231
|
-
onChange: (e) => {
|
|
232
|
-
setIsTyped(true);
|
|
233
|
-
setText(e.target.value);
|
|
234
|
-
setSuggestion("");
|
|
235
|
-
props.onChange?.(e);
|
|
236
|
-
},
|
|
237
|
-
onKeyDown: (e) => {
|
|
238
|
-
if (e.key === "Tab" && suggestion) {
|
|
239
|
-
e.preventDefault();
|
|
240
|
-
acceptSuggestion();
|
|
241
|
-
}
|
|
242
|
-
props.onKeyDown?.(e);
|
|
243
|
-
},
|
|
244
|
-
onSelect: (e) => {
|
|
245
|
-
if (suggestion && e.target.selectionStart !== cursorAtFetch) {
|
|
246
|
-
setSuggestion("");
|
|
247
|
-
setCursorAtFetch(-1);
|
|
248
|
-
}
|
|
249
|
-
props.onSelect?.(e);
|
|
250
|
-
}
|
|
251
|
-
})
|
|
252
|
-
]
|
|
253
|
-
});
|
|
254
|
-
};
|
|
255
|
-
|
|
256
|
-
//#endregion
|
|
257
|
-
export { AutoCompleteTextarea, useDebounce };
|
|
1
|
+
"use client";import{useAutocomplete as e}from"../../hooks/reactQuery.mjs";import{AutoSizedTextArea as t}from"./AutoSizeTextArea.mjs";import{useEffect as n,useRef as r,useState as i}from"react";import{Fragment as a,jsx as o,jsxs as s}from"react/jsx-runtime";import{useConfiguration as c}from"@intlayer/editor-react";const l=(e,t)=>{let[r,a]=i(e);return n(()=>{let n=setTimeout(()=>{a(e)},t);return()=>clearTimeout(n)},[e,t]),r},u=({isActive:u=!0,suggestion:d,...f})=>{let p=String(f.value??f.defaultValue??``),{mutate:m}=e(),h=c(),[g,_]=i(!1),[v,y]=i(p),[b,x]=i(``),S=r(null),C=r(null),w=r(null),[T,E]=i(null),[D,O]=i(-1),k=l(v,200);n(()=>{f.value!==void 0&&y(p)},[f.value,f.defaultValue]),n(()=>{u&&g&&(k.length,x(``))},[k,u,m,h]),n(()=>{if(!b||D===-1||!C.current||!w.current){E(null);return}let e=C.current.getBoundingClientRect(),t=w.current.getBoundingClientRect();E({left:e.left-t.left,top:e.top-t.top})},[b,D,v]);let A=()=>{let e=S.current?.selectionStart??D;e===D&&(y(v.slice(0,e)+b+v.slice(e)),x(``),O(-1),setTimeout(()=>{S.current?.focus();let t=e+b.length;S.current?.setSelectionRange(t,t)},0))};return s(`div`,{className:`relative w-full`,children:[s(`div`,{ref:w,className:`pointer-events-none absolute inset-0 whitespace-pre-wrap break-words px-1 py-3 text-base leading-[1.45rem] md:py-1 md:text-sm md:leading-[1.23rem]`,"aria-hidden":`true`,children:[b&&D!==-1?s(a,{children:[o(`span`,{className:`align-text-top text-transparent`,children:v.slice(0,D)}),o(`span`,{ref:C,style:{visibility:`hidden`},"aria-hidden":`true`,children:b}),o(`span`,{className:`align-text-top text-transparent`,children:v.slice(D)})]}):o(`span`,{className:`align-text-top text-transparent`,children:v}),d&&o(`span`,{className:`align-text-top text-neutral`,children:d})]}),b&&T&&o(`div`,{className:`pointer-events-none whitespace-pre-wrap break-words text-base text-neutral leading-[1.45rem] md:text-sm md:leading-[1.23rem]`,style:{position:`absolute`,left:T.left,top:T.top},children:b}),o(t,{...f,ref:S,value:v,onChange:e=>{_(!0),y(e.target.value),x(``),f.onChange?.(e)},onKeyDown:e=>{e.key===`Tab`&&b&&(e.preventDefault(),A()),f.onKeyDown?.(e)},onSelect:e=>{b&&e.target.selectionStart!==D&&(x(``),O(-1)),f.onSelect?.(e)}})]})};export{u as AutoCompleteTextarea,l as useDebounce};
|
|
258
2
|
//# sourceMappingURL=AutocompleteTextArea.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteTextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/AutocompleteTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { useAutocomplete } from '@hooks/reactQuery';\nimport type { AutocompleteResponse } from '@intlayer/backend';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport { type FC, useEffect, useRef, useState } from 'react';\nimport {\n AutoSizedTextArea,\n type AutoSizedTextAreaProps,\n} from './AutoSizeTextArea';\n\n/**\n * Custom hook for debouncing values to prevent excessive API calls.\n *\n * Delays updating the returned value until the input value has stopped changing\n * for the specified delay period.\n *\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds before updating the debounced value\n * @returns The debounced value that only updates after the delay period\n *\n * @example\n * ```tsx\n * const [searchTerm, setSearchTerm] = useState('');\n * const debouncedSearchTerm = useDebounce(searchTerm, 300);\n *\n * useEffect(() => {\n * if (debouncedSearchTerm) {\n * performSearch(debouncedSearchTerm);\n * }\n * }, [debouncedSearchTerm]);\n * ```\n */\nexport const useDebounce = <T,>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cleanup the timer if value changes before 'delay' ms\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n};\n\n/**\n * Props for the AutocompleteTextArea component.\n *\n * Extends AutoSizedTextAreaProps with AI-powered autocomplete functionality.\n *\n * @example\n * ```tsx\n * // AI-powered autocomplete textarea\n * <AutoCompleteTextarea\n * placeholder=\"Start typing for AI suggestions...\"\n * isActive={true}\n * autoSize={true}\n * maxRows={10}\n * />\n *\n * // Manual suggestion mode\n * <AutoCompleteTextarea\n * value={content}\n * onChange={handleChange}\n * suggestion=\"Consider adding more details about...\"\n * isActive={false}\n * />\n *\n * // Disabled autocomplete for sensitive content\n * <AutoCompleteTextarea\n * placeholder=\"Private notes (no AI assistance)\"\n * isActive={false}\n * autoSize={true}\n * />\n * ```\n */\nexport type AutocompleteTextAreaProps = AutoSizedTextAreaProps & {\n /** Whether AI autocomplete is active and should fetch suggestions */\n isActive?: boolean;\n /** Manual suggestion text to display (overrides AI suggestions) */\n suggestion?: string;\n};\n\n/**\n * AutoCompleteTextarea Component\n *\n * An intelligent textarea that provides AI-powered autocomplete suggestions as users type,\n * combining auto-sizing functionality with contextual text completion.\n *\n * ## Features\n * - **AI-Powered Suggestions**: Context-aware autocomplete using configured AI models\n * - **Debounced API Calls**: Efficient suggestion fetching with 200ms debounce\n * - **Visual Suggestions**: Inline preview of suggested completions\n * - **Keyboard Navigation**: Tab key to accept suggestions\n * - **Context Analysis**: Uses surrounding text for better suggestions\n * - **Auto-Sizing**: Inherits all AutoSizedTextArea capabilities\n * - **Performance Optimized**: Smart caching and minimal re-renders\n *\n * ## Technical Implementation\n * - **Debounce Strategy**: 200ms delay before fetching suggestions\n * - **Context Window**: 5 lines before/after cursor for context\n * - **Minimum Trigger**: Requires 3+ characters before suggesting\n * - **Position Tracking**: Ghost layer for accurate suggestion positioning\n * - **Cursor Management**: Tracks cursor position during suggestion fetch\n *\n * ## AI Integration\n * - Uses configured AI model (OpenAI, Anthropic, etc.)\n * - Sends context-aware prompts for relevant suggestions\n * - Respects temperature and model settings from configuration\n * - Handles API errors gracefully without interrupting user flow\n *\n * ## Use Cases\n * - **Content Creation**: Blog posts, articles, documentation\n * - **Code Comments**: Intelligent code documentation assistance\n * - **Email Composition**: Professional email writing assistance\n * - **Creative Writing**: Story and narrative completion\n * - **Technical Documentation**: API docs, README files\n * - **Social Media**: Post creation with engagement optimization\n *\n * @example\n * ```tsx\n * // Blog writing assistant\n * const [blogPost, setBlogPost] = useState('');\n * const [isAiEnabled, setIsAiEnabled] = useState(true);\n *\n * <div className=\"space-y-4\">\n * <div className=\"flex items-center gap-2\">\n * <Switch\n * checked={isAiEnabled}\n * onChange={setIsAiEnabled}\n * />\n * <label>AI Writing Assistant</label>\n * </div>\n *\n * <AutoCompleteTextarea\n * value={blogPost}\n * onChange={(e) => setBlogPost(e.target.value)}\n * placeholder=\"Start writing your blog post...\"\n * isActive={isAiEnabled}\n * autoSize={true}\n * maxRows={15}\n * className=\"min-h-[200px] font-serif text-lg leading-relaxed\"\n * />\n * </div>\n *\n * // Code documentation assistant\n * <AutoCompleteTextarea\n * value={docComment}\n * onChange={handleDocChange}\n * placeholder=\"/** Describe this function... *\\/\"\n * isActive={true}\n * autoSize={true}\n * maxRows={8}\n * className=\"font-mono text-sm\"\n * />\n *\n * // Email composition with templates\n * <AutoCompleteTextarea\n * defaultValue=\"Dear \"\n * placeholder=\"AI will help complete your email...\"\n * isActive={true}\n * autoSize={true}\n * maxRows={12}\n * variant={InputVariant.DEFAULT}\n * />\n * ```\n *\n * ## Accessibility\n * - Ghost layer is properly hidden from screen readers\n * - Maintains focus management during suggestion acceptance\n * - Preserves keyboard navigation patterns\n * - Respects reduced motion preferences\n */\nexport const AutoCompleteTextarea: FC<AutocompleteTextAreaProps> = ({\n isActive = true,\n suggestion: suggestionProp,\n ...props\n}) => {\n const defaultValue = String(props.value ?? props.defaultValue ?? '');\n const { mutate: autocomplete } = useAutocomplete();\n const configuration = useConfiguration();\n const [isTyped, setIsTyped] = useState(false);\n const [text, setText] = useState(defaultValue);\n const [suggestion, setSuggestion] = useState('');\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const placeholderRef = useRef<HTMLSpanElement>(null);\n const ghostLayerRef = useRef<HTMLDivElement>(null);\n const [suggestionPosition, setSuggestionPosition] = useState<{\n left: number;\n top: number;\n } | null>(null);\n const [cursorAtFetch, setCursorAtFetch] = useState(-1);\n\n // Only update this “debouncedText” after the user stops typing for 200ms\n const debouncedText = useDebounce(text, 200);\n\n useEffect(() => {\n if (typeof props.value === 'undefined') return;\n setText(defaultValue);\n }, [props.value, props.defaultValue]);\n\n useEffect(() => {\n if (!isActive) return;\n if (!isTyped) return;\n\n const fetchSuggestion = async () => {\n try {\n const cursor =\n textareaRef.current?.selectionStart ?? debouncedText.length;\n const before = debouncedText.slice(0, cursor);\n const after = debouncedText.slice(cursor);\n const numLines = 5;\n const beforeLines = before.split('\\n');\n const contextBeforeLines = beforeLines.slice(\n Math.max(0, beforeLines.length - numLines - 1),\n -1\n );\n const contextBefore = contextBeforeLines.join('\\n');\n const currentLine = beforeLines[beforeLines.length - 1] ?? '';\n const afterLines = after.split('\\n');\n const contextAfter = afterLines.slice(1, numLines + 1).join('\\n');\n\n autocomplete(\n {\n text: before,\n contextBefore,\n currentLine,\n contextAfter,\n aiOptions: {\n apiKey: configuration.ai?.apiKey,\n model: configuration.ai?.model,\n temperature: configuration.ai?.temperature,\n },\n },\n {\n onSuccess: (data: AutocompleteResponse) => {\n setSuggestion(data.data?.autocompletion ?? '');\n setCursorAtFetch(cursor);\n },\n }\n );\n } catch (err) {\n console.error('Autocomplete error:', err);\n }\n };\n\n if (debouncedText.length > 3) {\n // Only fetch if user typed more than 3 chars and has paused\n setSuggestion('');\n // TODO: Uncomment this when the autocomplete works well enough\n // fetchSuggestion();\n } else {\n // If typed less than threshold, clear the suggestion\n setSuggestion('');\n }\n }, [debouncedText, isActive, autocomplete, configuration]);\n\n useEffect(() => {\n if (\n !suggestion ||\n cursorAtFetch === -1 ||\n !placeholderRef.current ||\n !ghostLayerRef.current\n ) {\n setSuggestionPosition(null);\n return;\n }\n\n const rect = placeholderRef.current.getBoundingClientRect();\n const parentRect = ghostLayerRef.current.getBoundingClientRect();\n setSuggestionPosition({\n left: rect.left - parentRect.left,\n top: rect.top - parentRect.top,\n });\n }, [suggestion, cursorAtFetch, text]);\n\n const acceptSuggestion = () => {\n const currentCursor = textareaRef.current?.selectionStart ?? cursorAtFetch;\n if (currentCursor !== cursorAtFetch) return;\n const newText =\n text.slice(0, currentCursor) + suggestion + text.slice(currentCursor);\n setText(newText);\n setSuggestion('');\n setCursorAtFetch(-1);\n setTimeout(() => {\n textareaRef.current?.focus();\n const newCursorPos = currentCursor + suggestion.length;\n textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos);\n }, 0);\n };\n\n return (\n <div className=\"relative w-full\">\n <div\n ref={ghostLayerRef}\n className=\"pointer-events-none absolute inset-0 whitespace-pre-wrap break-words px-1 py-3 text-base leading-[1.45rem] md:py-1 md:text-sm md:leading-[1.23rem]\"\n aria-hidden=\"true\"\n >\n {suggestion && cursorAtFetch !== -1 ? (\n <>\n <span className=\"align-text-top text-transparent\">\n {text.slice(0, cursorAtFetch)}\n </span>\n <span\n ref={placeholderRef}\n style={{ visibility: 'hidden' }}\n aria-hidden=\"true\"\n >\n {suggestion}\n </span>\n <span className=\"align-text-top text-transparent\">\n {text.slice(cursorAtFetch)}\n </span>\n </>\n ) : (\n <span className=\"align-text-top text-transparent\">{text}</span>\n )}\n {suggestionProp && (\n <span className=\"align-text-top text-neutral\">{suggestionProp}</span>\n )}\n </div>\n {suggestion && suggestionPosition && (\n <div\n className=\"pointer-events-none whitespace-pre-wrap break-words text-base text-neutral leading-[1.45rem] md:text-sm md:leading-[1.23rem]\"\n style={{\n position: 'absolute',\n left: suggestionPosition.left,\n top: suggestionPosition.top,\n }}\n >\n {suggestion}\n </div>\n )}\n <AutoSizedTextArea\n {...props}\n ref={textareaRef}\n value={text}\n onChange={(e) => {\n setIsTyped(true);\n setText(e.target.value);\n setSuggestion('');\n props.onChange?.(e);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Tab' && suggestion) {\n e.preventDefault();\n acceptSuggestion();\n }\n props.onKeyDown?.(e);\n }}\n onSelect={(e) => {\n if (\n suggestion &&\n (e.target as HTMLTextAreaElement).selectionStart !== cursorAtFetch\n ) {\n setSuggestion('');\n setCursorAtFetch(-1);\n }\n props.onSelect?.(e);\n }}\n />\n </div>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAa,eAAmB,OAAU,UAAqB;CAC7D,MAAM,CAAC,gBAAgB,qBAAqB,SAAY,MAAM;AAE9D,iBAAgB;EACd,MAAM,QAAQ,iBAAiB;AAC7B,qBAAkB,MAAM;KACvB,MAAM;AAGT,eAAa,aAAa,MAAM;IAC/B,CAAC,OAAO,MAAM,CAAC;AAElB,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIT,MAAa,wBAAuD,EAClE,WAAW,MACX,YAAY,gBACZ,GAAG,YACC;CACJ,MAAM,eAAe,OAAO,MAAM,SAAS,MAAM,gBAAgB,GAAG;CACpE,MAAM,EAAE,QAAQ,iBAAiB,iBAAiB;CAClD,MAAM,gBAAgB,kBAAkB;CACxC,MAAM,CAAC,SAAS,cAAc,SAAS,MAAM;CAC7C,MAAM,CAAC,MAAM,WAAW,SAAS,aAAa;CAC9C,MAAM,CAAC,YAAY,iBAAiB,SAAS,GAAG;CAChD,MAAM,cAAc,OAA4B,KAAK;CACrD,MAAM,iBAAiB,OAAwB,KAAK;CACpD,MAAM,gBAAgB,OAAuB,KAAK;CAClD,MAAM,CAAC,oBAAoB,yBAAyB,SAG1C,KAAK;CACf,MAAM,CAAC,eAAe,oBAAoB,SAAS,GAAG;CAGtD,MAAM,gBAAgB,YAAY,MAAM,IAAI;AAE5C,iBAAgB;AACd,MAAI,OAAO,MAAM,UAAU,YAAa;AACxC,UAAQ,aAAa;IACpB,CAAC,MAAM,OAAO,MAAM,aAAa,CAAC;AAErC,iBAAgB;AACd,MAAI,CAAC,SAAU;AACf,MAAI,CAAC,QAAS;AA2Cd,MAAI,cAAc,SAAS,EAEzB,eAAc,GAAG;MAKjB,eAAc,GAAG;IAElB;EAAC;EAAe;EAAU;EAAc;EAAc,CAAC;AAE1D,iBAAgB;AACd,MACE,CAAC,cACD,kBAAkB,MAClB,CAAC,eAAe,WAChB,CAAC,cAAc,SACf;AACA,yBAAsB,KAAK;AAC3B;;EAGF,MAAM,OAAO,eAAe,QAAQ,uBAAuB;EAC3D,MAAM,aAAa,cAAc,QAAQ,uBAAuB;AAChE,wBAAsB;GACpB,MAAM,KAAK,OAAO,WAAW;GAC7B,KAAK,KAAK,MAAM,WAAW;GAC5B,CAAC;IACD;EAAC;EAAY;EAAe;EAAK,CAAC;CAErC,MAAM,yBAAyB;EAC7B,MAAM,gBAAgB,YAAY,SAAS,kBAAkB;AAC7D,MAAI,kBAAkB,cAAe;AAGrC,UADE,KAAK,MAAM,GAAG,cAAc,GAAG,aAAa,KAAK,MAAM,cAAc,CACvD;AAChB,gBAAc,GAAG;AACjB,mBAAiB,GAAG;AACpB,mBAAiB;AACf,eAAY,SAAS,OAAO;GAC5B,MAAM,eAAe,gBAAgB,WAAW;AAChD,eAAY,SAAS,kBAAkB,cAAc,aAAa;KACjE,EAAE;;AAGP,QACE,qBAAC;EAAI,WAAU;;GACb,qBAAC;IACC,KAAK;IACL,WAAU;IACV,eAAY;eAEX,cAAc,kBAAkB,KAC/B;KACE,oBAAC;MAAK,WAAU;gBACb,KAAK,MAAM,GAAG,cAAc;OACxB;KACP,oBAAC;MACC,KAAK;MACL,OAAO,EAAE,YAAY,UAAU;MAC/B,eAAY;gBAEX;OACI;KACP,oBAAC;MAAK,WAAU;gBACb,KAAK,MAAM,cAAc;OACrB;QACN,GAEH,oBAAC;KAAK,WAAU;eAAmC;MAAY,EAEhE,kBACC,oBAAC;KAAK,WAAU;eAA+B;MAAsB;KAEnE;GACL,cAAc,sBACb,oBAAC;IACC,WAAU;IACV,OAAO;KACL,UAAU;KACV,MAAM,mBAAmB;KACzB,KAAK,mBAAmB;KACzB;cAEA;KACG;GAER,oBAAC;IACC,GAAI;IACJ,KAAK;IACL,OAAO;IACP,WAAW,MAAM;AACf,gBAAW,KAAK;AAChB,aAAQ,EAAE,OAAO,MAAM;AACvB,mBAAc,GAAG;AACjB,WAAM,WAAW,EAAE;;IAErB,YAAY,MAAM;AAChB,SAAI,EAAE,QAAQ,SAAS,YAAY;AACjC,QAAE,gBAAgB;AAClB,wBAAkB;;AAEpB,WAAM,YAAY,EAAE;;IAEtB,WAAW,MAAM;AACf,SACE,cACC,EAAE,OAA+B,mBAAmB,eACrD;AACA,oBAAc,GAAG;AACjB,uBAAiB,GAAG;;AAEtB,WAAM,WAAW,EAAE;;KAErB;;GACE"}
|
|
1
|
+
{"version":3,"file":"AutocompleteTextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/AutocompleteTextArea.tsx"],"sourcesContent":["'use client';\n\nimport { useAutocomplete } from '@hooks/reactQuery';\nimport type { AutocompleteResponse } from '@intlayer/backend';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport { type FC, useEffect, useRef, useState } from 'react';\nimport {\n AutoSizedTextArea,\n type AutoSizedTextAreaProps,\n} from './AutoSizeTextArea';\n\n/**\n * Custom hook for debouncing values to prevent excessive API calls.\n *\n * Delays updating the returned value until the input value has stopped changing\n * for the specified delay period.\n *\n * @param value - The value to debounce\n * @param delay - Delay in milliseconds before updating the debounced value\n * @returns The debounced value that only updates after the delay period\n *\n * @example\n * ```tsx\n * const [searchTerm, setSearchTerm] = useState('');\n * const debouncedSearchTerm = useDebounce(searchTerm, 300);\n *\n * useEffect(() => {\n * if (debouncedSearchTerm) {\n * performSearch(debouncedSearchTerm);\n * }\n * }, [debouncedSearchTerm]);\n * ```\n */\nexport const useDebounce = <T,>(value: T, delay: number): T => {\n const [debouncedValue, setDebouncedValue] = useState<T>(value);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cleanup the timer if value changes before 'delay' ms\n return () => clearTimeout(timer);\n }, [value, delay]);\n\n return debouncedValue;\n};\n\n/**\n * Props for the AutocompleteTextArea component.\n *\n * Extends AutoSizedTextAreaProps with AI-powered autocomplete functionality.\n *\n * @example\n * ```tsx\n * // AI-powered autocomplete textarea\n * <AutoCompleteTextarea\n * placeholder=\"Start typing for AI suggestions...\"\n * isActive={true}\n * autoSize={true}\n * maxRows={10}\n * />\n *\n * // Manual suggestion mode\n * <AutoCompleteTextarea\n * value={content}\n * onChange={handleChange}\n * suggestion=\"Consider adding more details about...\"\n * isActive={false}\n * />\n *\n * // Disabled autocomplete for sensitive content\n * <AutoCompleteTextarea\n * placeholder=\"Private notes (no AI assistance)\"\n * isActive={false}\n * autoSize={true}\n * />\n * ```\n */\nexport type AutocompleteTextAreaProps = AutoSizedTextAreaProps & {\n /** Whether AI autocomplete is active and should fetch suggestions */\n isActive?: boolean;\n /** Manual suggestion text to display (overrides AI suggestions) */\n suggestion?: string;\n};\n\n/**\n * AutoCompleteTextarea Component\n *\n * An intelligent textarea that provides AI-powered autocomplete suggestions as users type,\n * combining auto-sizing functionality with contextual text completion.\n *\n * ## Features\n * - **AI-Powered Suggestions**: Context-aware autocomplete using configured AI models\n * - **Debounced API Calls**: Efficient suggestion fetching with 200ms debounce\n * - **Visual Suggestions**: Inline preview of suggested completions\n * - **Keyboard Navigation**: Tab key to accept suggestions\n * - **Context Analysis**: Uses surrounding text for better suggestions\n * - **Auto-Sizing**: Inherits all AutoSizedTextArea capabilities\n * - **Performance Optimized**: Smart caching and minimal re-renders\n *\n * ## Technical Implementation\n * - **Debounce Strategy**: 200ms delay before fetching suggestions\n * - **Context Window**: 5 lines before/after cursor for context\n * - **Minimum Trigger**: Requires 3+ characters before suggesting\n * - **Position Tracking**: Ghost layer for accurate suggestion positioning\n * - **Cursor Management**: Tracks cursor position during suggestion fetch\n *\n * ## AI Integration\n * - Uses configured AI model (OpenAI, Anthropic, etc.)\n * - Sends context-aware prompts for relevant suggestions\n * - Respects temperature and model settings from configuration\n * - Handles API errors gracefully without interrupting user flow\n *\n * ## Use Cases\n * - **Content Creation**: Blog posts, articles, documentation\n * - **Code Comments**: Intelligent code documentation assistance\n * - **Email Composition**: Professional email writing assistance\n * - **Creative Writing**: Story and narrative completion\n * - **Technical Documentation**: API docs, README files\n * - **Social Media**: Post creation with engagement optimization\n *\n * @example\n * ```tsx\n * // Blog writing assistant\n * const [blogPost, setBlogPost] = useState('');\n * const [isAiEnabled, setIsAiEnabled] = useState(true);\n *\n * <div className=\"space-y-4\">\n * <div className=\"flex items-center gap-2\">\n * <Switch\n * checked={isAiEnabled}\n * onChange={setIsAiEnabled}\n * />\n * <label>AI Writing Assistant</label>\n * </div>\n *\n * <AutoCompleteTextarea\n * value={blogPost}\n * onChange={(e) => setBlogPost(e.target.value)}\n * placeholder=\"Start writing your blog post...\"\n * isActive={isAiEnabled}\n * autoSize={true}\n * maxRows={15}\n * className=\"min-h-[200px] font-serif text-lg leading-relaxed\"\n * />\n * </div>\n *\n * // Code documentation assistant\n * <AutoCompleteTextarea\n * value={docComment}\n * onChange={handleDocChange}\n * placeholder=\"/** Describe this function... *\\/\"\n * isActive={true}\n * autoSize={true}\n * maxRows={8}\n * className=\"font-mono text-sm\"\n * />\n *\n * // Email composition with templates\n * <AutoCompleteTextarea\n * defaultValue=\"Dear \"\n * placeholder=\"AI will help complete your email...\"\n * isActive={true}\n * autoSize={true}\n * maxRows={12}\n * variant={InputVariant.DEFAULT}\n * />\n * ```\n *\n * ## Accessibility\n * - Ghost layer is properly hidden from screen readers\n * - Maintains focus management during suggestion acceptance\n * - Preserves keyboard navigation patterns\n * - Respects reduced motion preferences\n */\nexport const AutoCompleteTextarea: FC<AutocompleteTextAreaProps> = ({\n isActive = true,\n suggestion: suggestionProp,\n ...props\n}) => {\n const defaultValue = String(props.value ?? props.defaultValue ?? '');\n const { mutate: autocomplete } = useAutocomplete();\n const configuration = useConfiguration();\n const [isTyped, setIsTyped] = useState(false);\n const [text, setText] = useState(defaultValue);\n const [suggestion, setSuggestion] = useState('');\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const placeholderRef = useRef<HTMLSpanElement>(null);\n const ghostLayerRef = useRef<HTMLDivElement>(null);\n const [suggestionPosition, setSuggestionPosition] = useState<{\n left: number;\n top: number;\n } | null>(null);\n const [cursorAtFetch, setCursorAtFetch] = useState(-1);\n\n // Only update this “debouncedText” after the user stops typing for 200ms\n const debouncedText = useDebounce(text, 200);\n\n useEffect(() => {\n if (typeof props.value === 'undefined') return;\n setText(defaultValue);\n }, [props.value, props.defaultValue]);\n\n useEffect(() => {\n if (!isActive) return;\n if (!isTyped) return;\n\n const fetchSuggestion = async () => {\n try {\n const cursor =\n textareaRef.current?.selectionStart ?? debouncedText.length;\n const before = debouncedText.slice(0, cursor);\n const after = debouncedText.slice(cursor);\n const numLines = 5;\n const beforeLines = before.split('\\n');\n const contextBeforeLines = beforeLines.slice(\n Math.max(0, beforeLines.length - numLines - 1),\n -1\n );\n const contextBefore = contextBeforeLines.join('\\n');\n const currentLine = beforeLines[beforeLines.length - 1] ?? '';\n const afterLines = after.split('\\n');\n const contextAfter = afterLines.slice(1, numLines + 1).join('\\n');\n\n autocomplete(\n {\n text: before,\n contextBefore,\n currentLine,\n contextAfter,\n aiOptions: {\n apiKey: configuration.ai?.apiKey,\n model: configuration.ai?.model,\n temperature: configuration.ai?.temperature,\n },\n },\n {\n onSuccess: (data: AutocompleteResponse) => {\n setSuggestion(data.data?.autocompletion ?? '');\n setCursorAtFetch(cursor);\n },\n }\n );\n } catch (err) {\n console.error('Autocomplete error:', err);\n }\n };\n\n if (debouncedText.length > 3) {\n // Only fetch if user typed more than 3 chars and has paused\n setSuggestion('');\n // TODO: Uncomment this when the autocomplete works well enough\n // fetchSuggestion();\n } else {\n // If typed less than threshold, clear the suggestion\n setSuggestion('');\n }\n }, [debouncedText, isActive, autocomplete, configuration]);\n\n useEffect(() => {\n if (\n !suggestion ||\n cursorAtFetch === -1 ||\n !placeholderRef.current ||\n !ghostLayerRef.current\n ) {\n setSuggestionPosition(null);\n return;\n }\n\n const rect = placeholderRef.current.getBoundingClientRect();\n const parentRect = ghostLayerRef.current.getBoundingClientRect();\n setSuggestionPosition({\n left: rect.left - parentRect.left,\n top: rect.top - parentRect.top,\n });\n }, [suggestion, cursorAtFetch, text]);\n\n const acceptSuggestion = () => {\n const currentCursor = textareaRef.current?.selectionStart ?? cursorAtFetch;\n if (currentCursor !== cursorAtFetch) return;\n const newText =\n text.slice(0, currentCursor) + suggestion + text.slice(currentCursor);\n setText(newText);\n setSuggestion('');\n setCursorAtFetch(-1);\n setTimeout(() => {\n textareaRef.current?.focus();\n const newCursorPos = currentCursor + suggestion.length;\n textareaRef.current?.setSelectionRange(newCursorPos, newCursorPos);\n }, 0);\n };\n\n return (\n <div className=\"relative w-full\">\n <div\n ref={ghostLayerRef}\n className=\"pointer-events-none absolute inset-0 whitespace-pre-wrap break-words px-1 py-3 text-base leading-[1.45rem] md:py-1 md:text-sm md:leading-[1.23rem]\"\n aria-hidden=\"true\"\n >\n {suggestion && cursorAtFetch !== -1 ? (\n <>\n <span className=\"align-text-top text-transparent\">\n {text.slice(0, cursorAtFetch)}\n </span>\n <span\n ref={placeholderRef}\n style={{ visibility: 'hidden' }}\n aria-hidden=\"true\"\n >\n {suggestion}\n </span>\n <span className=\"align-text-top text-transparent\">\n {text.slice(cursorAtFetch)}\n </span>\n </>\n ) : (\n <span className=\"align-text-top text-transparent\">{text}</span>\n )}\n {suggestionProp && (\n <span className=\"align-text-top text-neutral\">{suggestionProp}</span>\n )}\n </div>\n {suggestion && suggestionPosition && (\n <div\n className=\"pointer-events-none whitespace-pre-wrap break-words text-base text-neutral leading-[1.45rem] md:text-sm md:leading-[1.23rem]\"\n style={{\n position: 'absolute',\n left: suggestionPosition.left,\n top: suggestionPosition.top,\n }}\n >\n {suggestion}\n </div>\n )}\n <AutoSizedTextArea\n {...props}\n ref={textareaRef}\n value={text}\n onChange={(e) => {\n setIsTyped(true);\n setText(e.target.value);\n setSuggestion('');\n props.onChange?.(e);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Tab' && suggestion) {\n e.preventDefault();\n acceptSuggestion();\n }\n props.onKeyDown?.(e);\n }}\n onSelect={(e) => {\n if (\n suggestion &&\n (e.target as HTMLTextAreaElement).selectionStart !== cursorAtFetch\n ) {\n setSuggestion('');\n setCursorAtFetch(-1);\n }\n props.onSelect?.(e);\n }}\n />\n </div>\n );\n};\n"],"mappings":"2TAiCA,MAAa,GAAmB,EAAU,IAAqB,CAC7D,GAAM,CAAC,EAAgB,GAAqB,EAAY,EAAM,CAW9D,OATA,MAAgB,CACd,IAAM,EAAQ,eAAiB,CAC7B,EAAkB,EAAM,EACvB,EAAM,CAGT,UAAa,aAAa,EAAM,EAC/B,CAAC,EAAO,EAAM,CAAC,CAEX,GAmII,GAAuD,CAClE,WAAW,GACX,WAAY,EACZ,GAAG,KACC,CACJ,IAAM,EAAe,OAAO,EAAM,OAAS,EAAM,cAAgB,GAAG,CAC9D,CAAE,OAAQ,GAAiB,GAAiB,CAC5C,EAAgB,GAAkB,CAClC,CAAC,EAAS,GAAc,EAAS,GAAM,CACvC,CAAC,EAAM,GAAW,EAAS,EAAa,CACxC,CAAC,EAAY,GAAiB,EAAS,GAAG,CAC1C,EAAc,EAA4B,KAAK,CAC/C,EAAiB,EAAwB,KAAK,CAC9C,EAAgB,EAAuB,KAAK,CAC5C,CAAC,EAAoB,GAAyB,EAG1C,KAAK,CACT,CAAC,EAAe,GAAoB,EAAS,GAAG,CAGhD,EAAgB,EAAY,EAAM,IAAI,CAE5C,MAAgB,CACH,EAAM,QAAU,QAC3B,EAAQ,EAAa,EACpB,CAAC,EAAM,MAAO,EAAM,aAAa,CAAC,CAErC,MAAgB,CACT,GACA,IA2CD,EAAc,OAEhB,EAAc,GAAG,GAOlB,CAAC,EAAe,EAAU,EAAc,EAAc,CAAC,CAE1D,MAAgB,CACd,GACE,CAAC,GACD,IAAkB,IAClB,CAAC,EAAe,SAChB,CAAC,EAAc,QACf,CACA,EAAsB,KAAK,CAC3B,OAGF,IAAM,EAAO,EAAe,QAAQ,uBAAuB,CACrD,EAAa,EAAc,QAAQ,uBAAuB,CAChE,EAAsB,CACpB,KAAM,EAAK,KAAO,EAAW,KAC7B,IAAK,EAAK,IAAM,EAAW,IAC5B,CAAC,EACD,CAAC,EAAY,EAAe,EAAK,CAAC,CAErC,IAAM,MAAyB,CAC7B,IAAM,EAAgB,EAAY,SAAS,gBAAkB,EACzD,IAAkB,IAGtB,EADE,EAAK,MAAM,EAAG,EAAc,CAAG,EAAa,EAAK,MAAM,EAAc,CACvD,CAChB,EAAc,GAAG,CACjB,EAAiB,GAAG,CACpB,eAAiB,CACf,EAAY,SAAS,OAAO,CAC5B,IAAM,EAAe,EAAgB,EAAW,OAChD,EAAY,SAAS,kBAAkB,EAAc,EAAa,EACjE,EAAE,GAGP,OACE,EAAC,MAAA,CAAI,UAAU,4BACb,EAAC,MAAA,CACC,IAAK,EACL,UAAU,qJACV,cAAY,iBAEX,GAAc,IAAkB,GAC/B,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,OAAA,CAAK,UAAU,2CACb,EAAK,MAAM,EAAG,EAAc,EACxB,CACP,EAAC,OAAA,CACC,IAAK,EACL,MAAO,CAAE,WAAY,SAAU,CAC/B,cAAY,gBAEX,GACI,CACP,EAAC,OAAA,CAAK,UAAU,2CACb,EAAK,MAAM,EAAc,EACrB,GACN,CAEH,EAAC,OAAA,CAAK,UAAU,2CAAmC,GAAY,CAEhE,GACC,EAAC,OAAA,CAAK,UAAU,uCAA+B,GAAsB,CAAA,EAEnE,CACL,GAAc,GACb,EAAC,MAAA,CACC,UAAU,+HACV,MAAO,CACL,SAAU,WACV,KAAM,EAAmB,KACzB,IAAK,EAAmB,IACzB,UAEA,GACG,CAER,EAAC,EAAA,CACC,GAAI,EACJ,IAAK,EACL,MAAO,EACP,SAAW,GAAM,CACf,EAAW,GAAK,CAChB,EAAQ,EAAE,OAAO,MAAM,CACvB,EAAc,GAAG,CACjB,EAAM,WAAW,EAAE,EAErB,UAAY,GAAM,CACZ,EAAE,MAAQ,OAAS,IACrB,EAAE,gBAAgB,CAClB,GAAkB,EAEpB,EAAM,YAAY,EAAE,EAEtB,SAAW,GAAM,CAEb,GACC,EAAE,OAA+B,iBAAmB,IAErD,EAAc,GAAG,CACjB,EAAiB,GAAG,EAEtB,EAAM,WAAW,EAAE,GAErB,GACE"}
|
|
@@ -1,59 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { inputVariants } from "../Input/Input.mjs";
|
|
3
|
-
import { jsx } from "react/jsx-runtime";
|
|
4
|
-
|
|
5
|
-
//#region src/components/TextArea/TextArea.tsx
|
|
6
|
-
/**
|
|
7
|
-
* TextArea Component
|
|
8
|
-
*
|
|
9
|
-
* A flexible textarea component that extends the standard HTML textarea with
|
|
10
|
-
* design system styling variants, validation states, and consistent visual appearance.
|
|
11
|
-
*
|
|
12
|
-
* ## Features
|
|
13
|
-
* - **Variant Support**: Multiple visual states (default, error, success, warning)
|
|
14
|
-
* - **Validation Styling**: Optional validation feedback styling
|
|
15
|
-
* - **Resize Control**: Disabled by default for consistent layout
|
|
16
|
-
* - **Design System Integration**: Uses shared input variants for consistency
|
|
17
|
-
* - **Accessibility**: Maintains all standard textarea accessibility features
|
|
18
|
-
*
|
|
19
|
-
* ## Use Cases
|
|
20
|
-
* - Multi-line text input forms
|
|
21
|
-
* - Comment and message composition
|
|
22
|
-
* - Description and content fields
|
|
23
|
-
* - Feedback and review forms
|
|
24
|
-
* - Code snippet input (when combined with monospace styling)
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```tsx
|
|
28
|
-
* // Basic textarea
|
|
29
|
-
* <TextArea
|
|
30
|
-
* placeholder="Enter your thoughts..."
|
|
31
|
-
* rows={4}
|
|
32
|
-
* />
|
|
33
|
-
*
|
|
34
|
-
* // Controlled with validation
|
|
35
|
-
* const [content, setContent] = useState('');
|
|
36
|
-
* const hasError = content.length < 10;
|
|
37
|
-
*
|
|
38
|
-
* <TextArea
|
|
39
|
-
* value={content}
|
|
40
|
-
* onChange={(e) => setContent(e.target.value)}
|
|
41
|
-
* variant={hasError ? InputVariant.ERROR : InputVariant.SUCCESS}
|
|
42
|
-
* validationStyleEnabled={true}
|
|
43
|
-
* placeholder="Minimum 10 characters required"
|
|
44
|
-
* className="min-h-[100px]"
|
|
45
|
-
* />
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
const TextArea = ({ className, variant, validationStyleEnabled = false, ...props }) => /* @__PURE__ */ jsx("textarea", {
|
|
49
|
-
className: cn("resize-none", inputVariants({
|
|
50
|
-
variant,
|
|
51
|
-
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled",
|
|
52
|
-
className
|
|
53
|
-
})),
|
|
54
|
-
...props
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
//#endregion
|
|
58
|
-
export { TextArea };
|
|
1
|
+
import{cn as e}from"../../utils/cn.mjs";import{inputVariants as t}from"../Input/Input.mjs";import{jsx as n}from"react/jsx-runtime";const r=({className:r,variant:i,validationStyleEnabled:a=!1,...o})=>n(`textarea`,{className:e(`resize-none`,t({variant:i,validationStyleEnabled:a?`enabled`:`disabled`,className:r})),...o});export{r as TextArea};
|
|
59
2
|
//# sourceMappingURL=TextArea.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { DetailedHTMLProps, FC, TextareaHTMLAttributes } from 'react';\nimport { type InputVariant, inputVariants } from '../Input';\n\n/**\n * Props for the TextArea component.\n *\n * Extends standard HTML textarea attributes with additional design system variants\n * and validation styling options.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TextArea placeholder=\"Enter your message...\" />\n *\n * // With error validation styling\n * <TextArea\n * value={message}\n * onChange={handleChange}\n * variant={InputVariant.ERROR}\n * validationStyleEnabled={true}\n * placeholder=\"Message is required\"\n * />\n *\n * // Large multiline input\n * <TextArea\n * rows={6}\n * cols={50}\n * variant={InputVariant.DEFAULT}\n * className=\"min-h-[120px]\"\n * placeholder=\"Write a detailed description...\"\n * />\n * ```\n */\nexport type TextAreaProps = DetailedHTMLProps<\n DetailedHTMLProps<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n >,\n HTMLTextAreaElement\n> & {\n /** Enable validation styling based on the variant prop */\n validationStyleEnabled?: boolean;\n} & Omit<\n VariantProps<typeof inputVariants>,\n 'validationStyleEnabled' | 'variant'\n > & {\n /** Visual variant of the textarea (default, success, error, warning, etc.) */\n variant?: InputVariant | `${InputVariant}`;\n };\n\n/**\n * TextArea Component\n *\n * A flexible textarea component that extends the standard HTML textarea with\n * design system styling variants, validation states, and consistent visual appearance.\n *\n * ## Features\n * - **Variant Support**: Multiple visual states (default, error, success, warning)\n * - **Validation Styling**: Optional validation feedback styling\n * - **Resize Control**: Disabled by default for consistent layout\n * - **Design System Integration**: Uses shared input variants for consistency\n * - **Accessibility**: Maintains all standard textarea accessibility features\n *\n * ## Use Cases\n * - Multi-line text input forms\n * - Comment and message composition\n * - Description and content fields\n * - Feedback and review forms\n * - Code snippet input (when combined with monospace styling)\n *\n * @example\n * ```tsx\n * // Basic textarea\n * <TextArea\n * placeholder=\"Enter your thoughts...\"\n * rows={4}\n * />\n *\n * // Controlled with validation\n * const [content, setContent] = useState('');\n * const hasError = content.length < 10;\n *\n * <TextArea\n * value={content}\n * onChange={(e) => setContent(e.target.value)}\n * variant={hasError ? InputVariant.ERROR : InputVariant.SUCCESS}\n * validationStyleEnabled={true}\n * placeholder=\"Minimum 10 characters required\"\n * className=\"min-h-[100px]\"\n * />\n * ```\n */\nexport const TextArea: FC<TextAreaProps> = ({\n className,\n variant,\n validationStyleEnabled = false,\n ...props\n}) => (\n <textarea\n className={cn(\n 'resize-none',\n inputVariants({\n variant,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })\n )}\n {...props}\n />\n);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"TextArea.mjs","names":[],"sources":["../../../../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { cn } from '@utils/cn';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { DetailedHTMLProps, FC, TextareaHTMLAttributes } from 'react';\nimport { type InputVariant, inputVariants } from '../Input';\n\n/**\n * Props for the TextArea component.\n *\n * Extends standard HTML textarea attributes with additional design system variants\n * and validation styling options.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <TextArea placeholder=\"Enter your message...\" />\n *\n * // With error validation styling\n * <TextArea\n * value={message}\n * onChange={handleChange}\n * variant={InputVariant.ERROR}\n * validationStyleEnabled={true}\n * placeholder=\"Message is required\"\n * />\n *\n * // Large multiline input\n * <TextArea\n * rows={6}\n * cols={50}\n * variant={InputVariant.DEFAULT}\n * className=\"min-h-[120px]\"\n * placeholder=\"Write a detailed description...\"\n * />\n * ```\n */\nexport type TextAreaProps = DetailedHTMLProps<\n DetailedHTMLProps<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n HTMLTextAreaElement\n >,\n HTMLTextAreaElement\n> & {\n /** Enable validation styling based on the variant prop */\n validationStyleEnabled?: boolean;\n} & Omit<\n VariantProps<typeof inputVariants>,\n 'validationStyleEnabled' | 'variant'\n > & {\n /** Visual variant of the textarea (default, success, error, warning, etc.) */\n variant?: InputVariant | `${InputVariant}`;\n };\n\n/**\n * TextArea Component\n *\n * A flexible textarea component that extends the standard HTML textarea with\n * design system styling variants, validation states, and consistent visual appearance.\n *\n * ## Features\n * - **Variant Support**: Multiple visual states (default, error, success, warning)\n * - **Validation Styling**: Optional validation feedback styling\n * - **Resize Control**: Disabled by default for consistent layout\n * - **Design System Integration**: Uses shared input variants for consistency\n * - **Accessibility**: Maintains all standard textarea accessibility features\n *\n * ## Use Cases\n * - Multi-line text input forms\n * - Comment and message composition\n * - Description and content fields\n * - Feedback and review forms\n * - Code snippet input (when combined with monospace styling)\n *\n * @example\n * ```tsx\n * // Basic textarea\n * <TextArea\n * placeholder=\"Enter your thoughts...\"\n * rows={4}\n * />\n *\n * // Controlled with validation\n * const [content, setContent] = useState('');\n * const hasError = content.length < 10;\n *\n * <TextArea\n * value={content}\n * onChange={(e) => setContent(e.target.value)}\n * variant={hasError ? InputVariant.ERROR : InputVariant.SUCCESS}\n * validationStyleEnabled={true}\n * placeholder=\"Minimum 10 characters required\"\n * className=\"min-h-[100px]\"\n * />\n * ```\n */\nexport const TextArea: FC<TextAreaProps> = ({\n className,\n variant,\n validationStyleEnabled = false,\n ...props\n}) => (\n <textarea\n className={cn(\n 'resize-none',\n inputVariants({\n variant,\n validationStyleEnabled: validationStyleEnabled ? 'enabled' : 'disabled',\n className,\n })\n )}\n {...props}\n />\n);\n"],"mappings":"mIA8FA,MAAa,GAA+B,CAC1C,YACA,UACA,yBAAyB,GACzB,GAAG,KAEH,EAAC,WAAA,CACC,UAAW,EACT,cACA,EAAc,CACZ,UACA,uBAAwB,EAAyB,UAAY,WAC7D,YACD,CAAC,CACH,CACD,GAAI,GACJ"}
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { AutoSizedTextArea } from "./AutoSizeTextArea.mjs";
|
|
3
|
-
import { AutoCompleteTextarea, useDebounce } from "./AutocompleteTextArea.mjs";
|
|
4
|
-
|
|
5
|
-
export { AutoCompleteTextarea, AutoSizedTextArea, TextArea, useDebounce };
|
|
1
|
+
import{TextArea as e}from"./TextArea.mjs";import{AutoSizedTextArea as t}from"./AutoSizeTextArea.mjs";import{AutoCompleteTextarea as n,useDebounce as r}from"./AutocompleteTextArea.mjs";export{n as AutoCompleteTextarea,t as AutoSizedTextArea,e as TextArea,r as useDebounce};
|