= ({ suggestedActions }) =>
+const LiveRegionSuggestedActions = ({ suggestedActions }: LiveRegionSuggestedActionsProps) =>
suggestedActions.actions?.length && (
{suggestedActions.actions.map((action, index) => (
diff --git a/packages/component/src/Middleware/Activity/createCoreMiddleware.tsx b/packages/component/src/Middleware/Activity/createCoreMiddleware.tsx
index ca3e01002b..143cc61ddd 100644
--- a/packages/component/src/Middleware/Activity/createCoreMiddleware.tsx
+++ b/packages/component/src/Middleware/Activity/createCoreMiddleware.tsx
@@ -1,4 +1,4 @@
-import { ActivityMiddleware } from 'botframework-webchat-api';
+import { type ActivityMiddleware } from 'botframework-webchat-api';
import React from 'react';
import { getActivityLivestreamingMetadata } from 'botframework-webchat-core';
diff --git a/packages/component/src/Middleware/ActivityStatus/createCoreMiddleware.tsx b/packages/component/src/Middleware/ActivityStatus/createCoreMiddleware.tsx
index a6e5d18540..e7fb3df51f 100644
--- a/packages/component/src/Middleware/ActivityStatus/createCoreMiddleware.tsx
+++ b/packages/component/src/Middleware/ActivityStatus/createCoreMiddleware.tsx
@@ -1,7 +1,7 @@
import createSendStatusMiddleware from './createSendStatusMiddleware';
import createTimestampMiddleware from './createTimestampMiddleware';
-import type { ActivityStatusMiddleware } from 'botframework-webchat-api';
+import { type ActivityStatusMiddleware } from 'botframework-webchat-api';
export default function createCoreMiddleware(): ActivityStatusMiddleware[] {
return [createSendStatusMiddleware(), createTimestampMiddleware()];
diff --git a/packages/component/src/Middleware/ActivityStatus/createSendStatusMiddleware.tsx b/packages/component/src/Middleware/ActivityStatus/createSendStatusMiddleware.tsx
index 7ba633061c..d5d60b7318 100644
--- a/packages/component/src/Middleware/ActivityStatus/createSendStatusMiddleware.tsx
+++ b/packages/component/src/Middleware/ActivityStatus/createSendStatusMiddleware.tsx
@@ -1,4 +1,4 @@
-import { ActivityStatusMiddleware } from 'botframework-webchat-api';
+import { type ActivityStatusMiddleware } from 'botframework-webchat-api';
import React from 'react';
import { SENDING, SEND_FAILED } from '../../types/internal/SendStatus';
diff --git a/packages/component/src/Middleware/ActivityStatus/createTimestampMiddleware.tsx b/packages/component/src/Middleware/ActivityStatus/createTimestampMiddleware.tsx
index ea8896988f..40b9a07d7e 100644
--- a/packages/component/src/Middleware/ActivityStatus/createTimestampMiddleware.tsx
+++ b/packages/component/src/Middleware/ActivityStatus/createTimestampMiddleware.tsx
@@ -1,4 +1,4 @@
-import { ActivityStatusMiddleware } from 'botframework-webchat-api';
+import { type ActivityStatusMiddleware } from 'botframework-webchat-api';
import React, { Fragment } from 'react';
import AbsoluteTime from '../../ActivityStatus/AbsoluteTime';
diff --git a/packages/component/src/Middleware/AttachmentForScreenReader/createCoreMiddleware.tsx b/packages/component/src/Middleware/AttachmentForScreenReader/createCoreMiddleware.tsx
index c74c55424c..09654a65ad 100644
--- a/packages/component/src/Middleware/AttachmentForScreenReader/createCoreMiddleware.tsx
+++ b/packages/component/src/Middleware/AttachmentForScreenReader/createCoreMiddleware.tsx
@@ -1,4 +1,4 @@
-import { AttachmentForScreenReaderMiddleware } from 'botframework-webchat-api';
+import { type AttachmentForScreenReaderMiddleware } from 'botframework-webchat-api';
import React from 'react';
import AudioAttachment from './AudioAttachment';
diff --git a/packages/component/src/Middleware/Avatar/createCoreMiddleware.tsx b/packages/component/src/Middleware/Avatar/createCoreMiddleware.tsx
index 07863132f0..3ba4d64beb 100644
--- a/packages/component/src/Middleware/Avatar/createCoreMiddleware.tsx
+++ b/packages/component/src/Middleware/Avatar/createCoreMiddleware.tsx
@@ -1,7 +1,7 @@
-import { AvatarMiddleware } from 'botframework-webchat-api';
+import { type AvatarMiddleware } from 'botframework-webchat-api';
import classNames from 'classnames';
import PropTypes from 'prop-types';
-import React, { FC } from 'react';
+import React from 'react';
import ImageAvatar from '../../Avatar/ImageAvatar';
import InitialsAvatar from '../../Avatar/InitialsAvatar';
@@ -19,13 +19,13 @@ const ROOT_STYLE = {
}
};
-type DefaultAvatarProps = {
+type DefaultAvatarProps = Readonly<{
'aria-hidden'?: boolean;
className?: string;
fromUser: boolean;
-};
+}>;
-const DefaultAvatar: FC = ({ 'aria-hidden': ariaHidden, className, fromUser }) => {
+const DefaultAvatar = ({ 'aria-hidden': ariaHidden, className, fromUser }: DefaultAvatarProps) => {
const [{ avatar: avatarStyleSet }] = useStyleSet();
const rootClassName = useStyleToEmotionObject()(ROOT_STYLE) + '';
diff --git a/packages/component/src/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.ts b/packages/component/src/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.ts
index 060befaec3..d869796502 100644
--- a/packages/component/src/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.ts
+++ b/packages/component/src/Middleware/ScrollToEndButton/createScrollToEndButtonMiddleware.ts
@@ -1,4 +1,4 @@
-import { ScrollToEndButtonMiddleware } from 'botframework-webchat-api';
+import { type ScrollToEndButtonMiddleware } from 'botframework-webchat-api';
import ScrollToEndButton from './ScrollToEndButton';
diff --git a/packages/component/src/Middleware/Toast/createCoreMiddleware.tsx b/packages/component/src/Middleware/Toast/createCoreMiddleware.tsx
index d75d0db6ab..faf1a12b73 100644
--- a/packages/component/src/Middleware/Toast/createCoreMiddleware.tsx
+++ b/packages/component/src/Middleware/Toast/createCoreMiddleware.tsx
@@ -1,4 +1,4 @@
-import { ToastMiddleware } from 'botframework-webchat-api';
+import { type ToastMiddleware } from 'botframework-webchat-api';
import createToastMiddleware from '../../Toast/createToastMiddleware';
diff --git a/packages/component/src/Middleware/TypingIndicator/createCoreMiddleware.tsx b/packages/component/src/Middleware/TypingIndicator/createCoreMiddleware.tsx
index e711878eb4..7de961acfb 100644
--- a/packages/component/src/Middleware/TypingIndicator/createCoreMiddleware.tsx
+++ b/packages/component/src/Middleware/TypingIndicator/createCoreMiddleware.tsx
@@ -1,4 +1,4 @@
-import { hooks, TypingIndicatorMiddleware } from 'botframework-webchat-api';
+import { hooks, type TypingIndicatorMiddleware } from 'botframework-webchat-api';
import classNames from 'classnames';
import React from 'react';
diff --git a/packages/component/src/ReactWebChat.tsx b/packages/component/src/ReactWebChat.tsx
index 2103379247..0b7811298b 100644
--- a/packages/component/src/ReactWebChat.tsx
+++ b/packages/component/src/ReactWebChat.tsx
@@ -2,7 +2,7 @@ import PropTypes from 'prop-types';
import React from 'react';
import BasicWebChat from './BasicWebChat';
-import Composer, { ComposerProps } from './Composer';
+import Composer, { type ComposerProps } from './Composer';
// Please keep this file as simple as possible. This is for setting up the surface (a.k.a. ) and only.
@@ -28,10 +28,12 @@ const ReactWebChat = ({ className, role, ...composerProps }: ReactWebChatProps)
);
+const { children: __, ...composerDefaultProps } = Composer.defaultProps;
+
ReactWebChat.defaultProps = {
className: undefined,
role: undefined,
- ...Composer.defaultProps
+ ...composerDefaultProps
};
const {
diff --git a/packages/component/src/ScreenReaderText.tsx b/packages/component/src/ScreenReaderText.tsx
index a5b0802a52..c5d57b8e35 100644
--- a/packages/component/src/ScreenReaderText.tsx
+++ b/packages/component/src/ScreenReaderText.tsx
@@ -3,8 +3,6 @@
import PropTypes from 'prop-types';
import React, { forwardRef, memo } from 'react';
-import type { VFC } from 'react';
-
import { useStyleToEmotionObject } from './hooks/internal/styleToEmotionObject';
const ROOT_STYLE = {
@@ -23,13 +21,13 @@ const ROOT_STYLE = {
width: 1
};
-type ScreenReaderTextProps = {
+type ScreenReaderTextProps = Readonly<{
'aria-hidden'?: boolean;
id?: string;
text: string;
-};
+}>;
-const ScreenReaderText: VFC = forwardRef(
+const ScreenReaderText = forwardRef(
({ 'aria-hidden': ariaHidden, id, text }, ref) => {
const rootClassName = useStyleToEmotionObject()(ROOT_STYLE) + '';
diff --git a/packages/component/src/SendBox/AutoResizeTextArea.tsx b/packages/component/src/SendBox/AutoResizeTextArea.tsx
index cf59b83d2c..9587e35581 100644
--- a/packages/component/src/SendBox/AutoResizeTextArea.tsx
+++ b/packages/component/src/SendBox/AutoResizeTextArea.tsx
@@ -1,10 +1,10 @@
import classNames from 'classnames';
import React, {
- ChangeEventHandler,
- FocusEventHandler,
forwardRef,
- KeyboardEventHandler,
- ReactEventHandler
+ type ChangeEventHandler,
+ type FocusEventHandler,
+ type KeyboardEventHandler,
+ type ReactEventHandler
} from 'react';
import AccessibleTextArea from '../Utils/AccessibleTextArea';
diff --git a/packages/component/src/SendBox/BasicSendBox.tsx b/packages/component/src/SendBox/BasicSendBox.tsx
index e4acd9b869..9fee91a8df 100644
--- a/packages/component/src/SendBox/BasicSendBox.tsx
+++ b/packages/component/src/SendBox/BasicSendBox.tsx
@@ -1,7 +1,7 @@
import { SendBoxToolbarMiddlewareProxy, hooks } from 'botframework-webchat-api';
import { Constants } from 'botframework-webchat-core';
import classNames from 'classnames';
-import React, { FC } from 'react';
+import React from 'react';
import { useStyleToEmotionObject } from '../hooks/internal/styleToEmotionObject';
import useStyleSet from '../hooks/useStyleSet';
@@ -13,7 +13,7 @@ import SendButton from './SendButton';
import SuggestedActions from './SuggestedActions';
import TextBox from './TextBox';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
const {
DictateState: { DICTATING, STARTING }
@@ -50,7 +50,7 @@ type BasicSendBoxProps = Readonly<{
className?: string;
}>;
-const BasicSendBox: FC = ({ className }) => {
+const BasicSendBox = ({ className }: BasicSendBoxProps) => {
const [{ sendBoxButtonAlignment }] = useStyleOptions();
const [{ sendBox: sendBoxStyleSet }] = useStyleSet();
const [{ SpeechRecognition = undefined } = {}] = useWebSpeechPonyfill();
diff --git a/packages/component/src/SendBox/DictationInterims.tsx b/packages/component/src/SendBox/DictationInterims.tsx
index ff69dd9c42..1e0246396f 100644
--- a/packages/component/src/SendBox/DictationInterims.tsx
+++ b/packages/component/src/SendBox/DictationInterims.tsx
@@ -4,7 +4,7 @@ import { Constants } from 'botframework-webchat-core';
import { hooks } from 'botframework-webchat-api';
import classNames from 'classnames';
import PropTypes from 'prop-types';
-import React, { FC } from 'react';
+import React from 'react';
import useStyleSet from '../hooks/useStyleSet';
import { useStyleToEmotionObject } from '../hooks/internal/styleToEmotionObject';
@@ -24,7 +24,7 @@ type DictationInterimsProps = {
className?: string;
};
-const DictationInterims: FC = ({ className }) => {
+const DictationInterims = ({ className }: DictationInterimsProps) => {
const [dictateInterims] = useDictateInterims();
const [dictateState] = useDictateState();
const [{ dictationInterims: dictationInterimsStyleSet }] = useStyleSet();
diff --git a/packages/component/src/SendBox/IconButton.tsx b/packages/component/src/SendBox/IconButton.tsx
index 4c1ee33960..c9a48c184c 100644
--- a/packages/component/src/SendBox/IconButton.tsx
+++ b/packages/component/src/SendBox/IconButton.tsx
@@ -1,7 +1,7 @@
import { hooks } from 'botframework-webchat-api';
import classNames from 'classnames';
import PropTypes from 'prop-types';
-import React, { FC, MouseEventHandler, ReactNode, useRef } from 'react';
+import React, { type ReactNode, type MouseEventHandler, useRef } from 'react';
import AccessibleButton from '../Utils/AccessibleButton';
import useFocusVisible from '../hooks/internal/useFocusVisible';
@@ -9,15 +9,15 @@ import useStyleSet from '../hooks/useStyleSet';
const { useStyleOptions } = hooks;
-type IconButtonProps = {
+type IconButtonProps = Readonly<{
alt?: string;
- children?: ReactNode;
+ children?: ReactNode | undefined;
className?: string;
disabled?: boolean;
onClick?: MouseEventHandler;
-};
+}>;
-const IconButton: FC = ({ alt, children, className, disabled, onClick }) => {
+const IconButton = ({ alt, children, className, disabled, onClick }: IconButtonProps) => {
const [{ sendBoxButton: sendBoxButtonStyleSet }] = useStyleSet();
const [{ sendBoxButtonAlignment }] = useStyleOptions();
const buttonRef = useRef();
diff --git a/packages/component/src/SendBox/SendButton.tsx b/packages/component/src/SendBox/SendButton.tsx
index f4feab786f..a0def2c0cc 100644
--- a/packages/component/src/SendBox/SendButton.tsx
+++ b/packages/component/src/SendBox/SendButton.tsx
@@ -7,15 +7,13 @@ import useSubmit from '../providers/internal/SendBox/useSubmit';
import SendIcon from './Assets/SendIcon';
import IconButton from './IconButton';
-import type { FC } from 'react';
-
const { useLocalizer, useUIState } = hooks;
-type SendButtonProps = {
+type SendButtonProps = Readonly<{
className?: string;
-};
+}>;
-const SendButton: FC = ({ className }) => {
+const SendButton = ({ className }: SendButtonProps) => {
const [uiState] = useUIState();
const localize = useLocalizer();
const submit = useSubmit();
diff --git a/packages/component/src/SendBox/SuggestedAction.tsx b/packages/component/src/SendBox/SuggestedAction.tsx
index 21b4244c32..fcaedcc6d0 100644
--- a/packages/component/src/SendBox/SuggestedAction.tsx
+++ b/packages/component/src/SendBox/SuggestedAction.tsx
@@ -1,8 +1,8 @@
import { hooks } from 'botframework-webchat-api';
-import type { DirectLineCardAction } from 'botframework-webchat-core';
+import { type DirectLineCardAction } from 'botframework-webchat-core';
import classNames from 'classnames';
import PropTypes from 'prop-types';
-import React, { MouseEventHandler, useCallback, VFC } from 'react';
+import React, { type MouseEventHandler, useCallback } from 'react';
import useFocusVisible from '../hooks/internal/useFocusVisible';
import useLocalizeAccessKey from '../hooks/internal/useLocalizeAccessKey';
@@ -47,7 +47,7 @@ type SuggestedActionProps = {
value?: any;
};
-const SuggestedAction: VFC = ({
+const SuggestedAction = ({
buttonText,
className,
displayText,
@@ -58,7 +58,7 @@ const SuggestedAction: VFC = ({
textClassName,
type,
value
-}) => {
+}: SuggestedActionProps) => {
const [_, setSuggestedActions] = useSuggestedActions();
const [{ suggestedActionsStackedLayoutButtonTextWrap }] = useStyleOptions();
const [{ suggestedAction: suggestedActionStyleSet }] = useStyleSet();
diff --git a/packages/component/src/SendBox/SuggestedActions.tsx b/packages/component/src/SendBox/SuggestedActions.tsx
index be26f7cdf0..8d4ce6284c 100644
--- a/packages/component/src/SendBox/SuggestedActions.tsx
+++ b/packages/component/src/SendBox/SuggestedActions.tsx
@@ -3,7 +3,7 @@
import { hooks } from 'botframework-webchat-api';
import classNames from 'classnames';
import PropTypes from 'prop-types';
-import React, { useCallback, useMemo, useRef } from 'react';
+import React, { useCallback, useMemo, useRef, type ReactNode } from 'react';
// eslint-disable-next-line import/no-named-as-default
import BasicFilm, { createBasicStyleSet as createBasicStyleSetForReactFilm } from 'react-film';
@@ -120,7 +120,13 @@ SuggestedActionCarouselContainer.propTypes = {
label: PropTypes.string.isRequired
};
-const SuggestedActionFlowContainer = ({ children, className, label }) => {
+type SuggestedActionFlowContainerProps = Readonly<{
+ children?: ReactNode | undefined;
+ className?: string | undefined;
+ label: string;
+}>;
+
+const SuggestedActionFlowContainer = ({ children, className, label }: SuggestedActionFlowContainerProps) => {
const [{ suggestedActions: suggestedActionsStyleSet }] = useStyleSet();
const rootClassName = useStyleToEmotionObject()(ROOT_STYLE) + '';
diff --git a/packages/component/src/SendBox/TextBox.tsx b/packages/component/src/SendBox/TextBox.tsx
index df2be620f7..ceac1746cc 100644
--- a/packages/component/src/SendBox/TextBox.tsx
+++ b/packages/component/src/SendBox/TextBox.tsx
@@ -14,7 +14,7 @@ import useSubmit from '../providers/internal/SendBox/useSubmit';
import withEmoji from '../withEmoji/withEmoji';
import AutoResizeTextArea from './AutoResizeTextArea';
-import type { MutableRefObject } from 'react';
+import { type MutableRefObject } from 'react';
import testIds from '../testIds';
const { useLocalizer, usePonyfill, useSendBoxValue, useStopDictate, useStyleOptions, useUIState } = hooks;
diff --git a/packages/component/src/Styles/StyleSet/AutoResizeTextArea.ts b/packages/component/src/Styles/StyleSet/AutoResizeTextArea.ts
index 5d97d283ce..e9b0e9190e 100644
--- a/packages/component/src/Styles/StyleSet/AutoResizeTextArea.ts
+++ b/packages/component/src/Styles/StyleSet/AutoResizeTextArea.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function AutoResizeTextArea({ primaryFont }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/Avatar.ts b/packages/component/src/Styles/StyleSet/Avatar.ts
index 5d89af0a73..2707423fe7 100644
--- a/packages/component/src/Styles/StyleSet/Avatar.ts
+++ b/packages/component/src/Styles/StyleSet/Avatar.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import CSSTokens from '../CSSTokens';
export default function createAvatarStyle({ avatarBorderRadius }: StrictStyleOptions) {
diff --git a/packages/component/src/Styles/StyleSet/BasicTranscript.ts b/packages/component/src/Styles/StyleSet/BasicTranscript.ts
index 0e63129a9c..9d232642ca 100644
--- a/packages/component/src/Styles/StyleSet/BasicTranscript.ts
+++ b/packages/component/src/Styles/StyleSet/BasicTranscript.ts
@@ -1,6 +1,6 @@
/* eslint no-magic-numbers: ["error", { "ignore": [2] }] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createBasicTranscriptStyleSet({
paddingRegular,
diff --git a/packages/component/src/Styles/StyleSet/Bubble.ts b/packages/component/src/Styles/StyleSet/Bubble.ts
index 7efa2a7eca..aa94079719 100644
--- a/packages/component/src/Styles/StyleSet/Bubble.ts
+++ b/packages/component/src/Styles/StyleSet/Bubble.ts
@@ -1,5 +1,5 @@
/* eslint no-magic-numbers: ["error", { "ignore": [0, 1, 2] }] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import mirrorStyle from '../mirrorStyle';
diff --git a/packages/component/src/Styles/StyleSet/CarouselFilmStrip.ts b/packages/component/src/Styles/StyleSet/CarouselFilmStrip.ts
index 4899db8dbe..044673d914 100644
--- a/packages/component/src/Styles/StyleSet/CarouselFilmStrip.ts
+++ b/packages/component/src/Styles/StyleSet/CarouselFilmStrip.ts
@@ -1,5 +1,5 @@
/* eslint no-magic-numbers: ["error", { "ignore": [2] }] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import CSSTokens from '../CSSTokens';
import mirrorStyle from '../mirrorStyle';
diff --git a/packages/component/src/Styles/StyleSet/CarouselFilmStripAttachment.ts b/packages/component/src/Styles/StyleSet/CarouselFilmStripAttachment.ts
index caa5ccb7fc..0d3900a990 100644
--- a/packages/component/src/Styles/StyleSet/CarouselFilmStripAttachment.ts
+++ b/packages/component/src/Styles/StyleSet/CarouselFilmStripAttachment.ts
@@ -1,5 +1,5 @@
/* eslint no-magic-numbers: ["error", { "ignore": [2] }] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import CSSTokens from '../CSSTokens';
import mirrorStyle from '../mirrorStyle';
diff --git a/packages/component/src/Styles/StyleSet/CarouselFlipper.ts b/packages/component/src/Styles/StyleSet/CarouselFlipper.ts
index 289b017a83..6c4108e216 100644
--- a/packages/component/src/Styles/StyleSet/CarouselFlipper.ts
+++ b/packages/component/src/Styles/StyleSet/CarouselFlipper.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function CarouselFlipper({
transcriptOverlayButtonBackground,
diff --git a/packages/component/src/Styles/StyleSet/ConnectivityNotification.ts b/packages/component/src/Styles/StyleSet/ConnectivityNotification.ts
index 751b1243f8..9cfdc0d947 100644
--- a/packages/component/src/Styles/StyleSet/ConnectivityNotification.ts
+++ b/packages/component/src/Styles/StyleSet/ConnectivityNotification.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function ConnectivityNotification({
connectivityMarginLeftRight,
diff --git a/packages/component/src/Styles/StyleSet/DictationInterims.ts b/packages/component/src/Styles/StyleSet/DictationInterims.ts
index d9f7dbd157..e25e29941d 100644
--- a/packages/component/src/Styles/StyleSet/DictationInterims.ts
+++ b/packages/component/src/Styles/StyleSet/DictationInterims.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createDictationInterimsStyle({ paddingRegular, primaryFont }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/ErrorBox.ts b/packages/component/src/Styles/StyleSet/ErrorBox.ts
index f2b8f2c700..b9f45de7c2 100644
--- a/packages/component/src/Styles/StyleSet/ErrorBox.ts
+++ b/packages/component/src/Styles/StyleSet/ErrorBox.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createErrorBoxStyle({ monospaceFont, primaryFont }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/ErrorNotification.ts b/packages/component/src/Styles/StyleSet/ErrorNotification.ts
index a0349ace69..1719bdbbd0 100644
--- a/packages/component/src/Styles/StyleSet/ErrorNotification.ts
+++ b/packages/component/src/Styles/StyleSet/ErrorNotification.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createErrorNotificationStyle({
connectivityIconPadding,
diff --git a/packages/component/src/Styles/StyleSet/FileContent.ts b/packages/component/src/Styles/StyleSet/FileContent.ts
index 98e1743593..76af192c13 100644
--- a/packages/component/src/Styles/StyleSet/FileContent.ts
+++ b/packages/component/src/Styles/StyleSet/FileContent.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createFileContentStyle({
accent,
diff --git a/packages/component/src/Styles/StyleSet/InitialsAvatar.ts b/packages/component/src/Styles/StyleSet/InitialsAvatar.ts
index c2fc6f9495..71f467c6f7 100644
--- a/packages/component/src/Styles/StyleSet/InitialsAvatar.ts
+++ b/packages/component/src/Styles/StyleSet/InitialsAvatar.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import CSSTokens from '../CSSTokens';
export default function createInitialsAvatarStyle({
diff --git a/packages/component/src/Styles/StyleSet/MicrophoneButton.ts b/packages/component/src/Styles/StyleSet/MicrophoneButton.ts
index 9b24bc6b09..4742a06245 100644
--- a/packages/component/src/Styles/StyleSet/MicrophoneButton.ts
+++ b/packages/component/src/Styles/StyleSet/MicrophoneButton.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createMicrophoneButtonStyle({ microphoneButtonColorOnDictate }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/Root.ts b/packages/component/src/Styles/StyleSet/Root.ts
index f7f5e0a344..4a9ec35eb0 100644
--- a/packages/component/src/Styles/StyleSet/Root.ts
+++ b/packages/component/src/Styles/StyleSet/Root.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function ({
backgroundColor,
diff --git a/packages/component/src/Styles/StyleSet/ScrollToEndButton.ts b/packages/component/src/Styles/StyleSet/ScrollToEndButton.ts
index 2d9548c087..8e959ee67d 100644
--- a/packages/component/src/Styles/StyleSet/ScrollToEndButton.ts
+++ b/packages/component/src/Styles/StyleSet/ScrollToEndButton.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createScrollToEndButtonStyle({
paddingRegular,
diff --git a/packages/component/src/Styles/StyleSet/SendBox.ts b/packages/component/src/Styles/StyleSet/SendBox.ts
index 76ea01c0fc..a3c612b4df 100644
--- a/packages/component/src/Styles/StyleSet/SendBox.ts
+++ b/packages/component/src/Styles/StyleSet/SendBox.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createSendBoxStyle({
sendBoxBackground,
diff --git a/packages/component/src/Styles/StyleSet/SendBoxButton.ts b/packages/component/src/Styles/StyleSet/SendBoxButton.ts
index b2d329f7b4..44fe84f09e 100644
--- a/packages/component/src/Styles/StyleSet/SendBoxButton.ts
+++ b/packages/component/src/Styles/StyleSet/SendBoxButton.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createSendBoxButtonStyle({
sendBoxButtonColor,
diff --git a/packages/component/src/Styles/StyleSet/SendBoxTextBox.ts b/packages/component/src/Styles/StyleSet/SendBoxTextBox.ts
index f30df4734b..ed33bb4aaf 100644
--- a/packages/component/src/Styles/StyleSet/SendBoxTextBox.ts
+++ b/packages/component/src/Styles/StyleSet/SendBoxTextBox.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createSendBoxTextBoxStyle({
paddingRegular,
diff --git a/packages/component/src/Styles/StyleSet/SpinnerAnimation.ts b/packages/component/src/Styles/StyleSet/SpinnerAnimation.ts
index 293add109a..290d0d36e6 100644
--- a/packages/component/src/Styles/StyleSet/SpinnerAnimation.ts
+++ b/packages/component/src/Styles/StyleSet/SpinnerAnimation.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import { toByteArray } from 'base64-js';
diff --git a/packages/component/src/Styles/StyleSet/StackedLayout.ts b/packages/component/src/Styles/StyleSet/StackedLayout.ts
index b5ad9b47a9..8ffb422933 100644
--- a/packages/component/src/Styles/StyleSet/StackedLayout.ts
+++ b/packages/component/src/Styles/StyleSet/StackedLayout.ts
@@ -1,6 +1,6 @@
/* eslint no-magic-numbers: ["error", { "ignore": [2] }] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import CSSTokens from '../CSSTokens';
export default function createStackedLayoutStyle({
diff --git a/packages/component/src/Styles/StyleSet/SuggestedAction.ts b/packages/component/src/Styles/StyleSet/SuggestedAction.ts
index 97b4d7d4a2..61f01237c2 100644
--- a/packages/component/src/Styles/StyleSet/SuggestedAction.ts
+++ b/packages/component/src/Styles/StyleSet/SuggestedAction.ts
@@ -1,6 +1,6 @@
/* eslint no-magic-numbers: "off" */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createSuggestedActionStyle({
accent,
diff --git a/packages/component/src/Styles/StyleSet/SuggestedActions.ts b/packages/component/src/Styles/StyleSet/SuggestedActions.ts
index d395d460bd..d5fd118f32 100644
--- a/packages/component/src/Styles/StyleSet/SuggestedActions.ts
+++ b/packages/component/src/Styles/StyleSet/SuggestedActions.ts
@@ -1,7 +1,7 @@
/* eslint no-empty-pattern: "off" */
/* eslint no-magic-numbers: ["error", { "ignore": [1.5, 2] }] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createSuggestedActionsStyle({
paddingRegular,
diff --git a/packages/component/src/Styles/StyleSet/Toast.ts b/packages/component/src/Styles/StyleSet/Toast.ts
index 6ee99e58be..c35cc1cc13 100644
--- a/packages/component/src/Styles/StyleSet/Toast.ts
+++ b/packages/component/src/Styles/StyleSet/Toast.ts
@@ -1,5 +1,5 @@
/* eslint no-magic-numbers: ["off"] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createToastStyle({
primaryFont,
diff --git a/packages/component/src/Styles/StyleSet/Toaster.ts b/packages/component/src/Styles/StyleSet/Toaster.ts
index 42df1c28fb..eddb28690e 100644
--- a/packages/component/src/Styles/StyleSet/Toaster.ts
+++ b/packages/component/src/Styles/StyleSet/Toaster.ts
@@ -1,6 +1,6 @@
/* eslint no-magic-numbers: ["off"] */
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createToasterStyle({
primaryFont,
diff --git a/packages/component/src/Styles/StyleSet/TypingAnimation.ts b/packages/component/src/Styles/StyleSet/TypingAnimation.ts
index 132672e61c..e8f0c27293 100644
--- a/packages/component/src/Styles/StyleSet/TypingAnimation.ts
+++ b/packages/component/src/Styles/StyleSet/TypingAnimation.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
import { toByteArray } from 'base64-js';
const DEFAULT_IMAGE_BASE64 =
diff --git a/packages/component/src/Styles/StyleSet/TypingIndicator.ts b/packages/component/src/Styles/StyleSet/TypingIndicator.ts
index 9f964c810f..334240e4ff 100644
--- a/packages/component/src/Styles/StyleSet/TypingIndicator.ts
+++ b/packages/component/src/Styles/StyleSet/TypingIndicator.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createTypingIndicatorStyle({ paddingRegular }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/UploadButton.ts b/packages/component/src/Styles/StyleSet/UploadButton.ts
index b1136ebde9..2becfbf790 100644
--- a/packages/component/src/Styles/StyleSet/UploadButton.ts
+++ b/packages/component/src/Styles/StyleSet/UploadButton.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createUploadButtonStyle({
sendBoxButtonColor,
diff --git a/packages/component/src/Styles/StyleSet/VideoContent.ts b/packages/component/src/Styles/StyleSet/VideoContent.ts
index 9c23dcda52..f7492d301f 100644
--- a/packages/component/src/Styles/StyleSet/VideoContent.ts
+++ b/packages/component/src/Styles/StyleSet/VideoContent.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createVideoContentStyle({ videoHeight }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/VimeoContent.ts b/packages/component/src/Styles/StyleSet/VimeoContent.ts
index 02e2764862..276b1a0fb7 100644
--- a/packages/component/src/Styles/StyleSet/VimeoContent.ts
+++ b/packages/component/src/Styles/StyleSet/VimeoContent.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createVimeoContentStyle({ videoHeight }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/StyleSet/WarningNotification.ts b/packages/component/src/Styles/StyleSet/WarningNotification.ts
index 7ec46b92a6..173aa92490 100644
--- a/packages/component/src/Styles/StyleSet/WarningNotification.ts
+++ b/packages/component/src/Styles/StyleSet/WarningNotification.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createWarningNotificationStyle({
connectivityIconPadding,
diff --git a/packages/component/src/Styles/StyleSet/YouTubeContent.ts b/packages/component/src/Styles/StyleSet/YouTubeContent.ts
index 27cfd14749..6d357298e3 100644
--- a/packages/component/src/Styles/StyleSet/YouTubeContent.ts
+++ b/packages/component/src/Styles/StyleSet/YouTubeContent.ts
@@ -1,4 +1,4 @@
-import { StrictStyleOptions } from 'botframework-webchat-api';
+import { type StrictStyleOptions } from 'botframework-webchat-api';
export default function createYouTubeContentStyle({ videoHeight }: StrictStyleOptions) {
return {
diff --git a/packages/component/src/Styles/createStyleSet.ts b/packages/component/src/Styles/createStyleSet.ts
index ecf70b65e1..b04a927ec0 100644
--- a/packages/component/src/Styles/createStyleSet.ts
+++ b/packages/component/src/Styles/createStyleSet.ts
@@ -1,4 +1,4 @@
-import { normalizeStyleOptions, StyleOptions } from 'botframework-webchat-api';
+import { normalizeStyleOptions, type StyleOptions } from 'botframework-webchat-api';
import createActivitiesStyle from './StyleSet/Activities';
import createActivityButtonStyle from './StyleSet/ActivityButton';
diff --git a/packages/component/src/Toast/createToastMiddleware.tsx b/packages/component/src/Toast/createToastMiddleware.tsx
index 15b64b2e2c..7e9f99467f 100644
--- a/packages/component/src/Toast/createToastMiddleware.tsx
+++ b/packages/component/src/Toast/createToastMiddleware.tsx
@@ -1,6 +1,6 @@
/* eslint react/prop-types: "off" */
-import { ToastMiddleware } from 'botframework-webchat-api';
+import { type ToastMiddleware } from 'botframework-webchat-api';
import React from 'react';
import BasicToast from '../BasicToast';
diff --git a/packages/component/src/Transcript/ActivityRow.tsx b/packages/component/src/Transcript/ActivityRow.tsx
index da25c9b1f8..67a675d449 100644
--- a/packages/component/src/Transcript/ActivityRow.tsx
+++ b/packages/component/src/Transcript/ActivityRow.tsx
@@ -12,13 +12,13 @@ import useActivityAccessibleName from './useActivityAccessibleName';
import useFocusByActivityKey from '../providers/TranscriptFocus/useFocusByActivityKey';
import useGetDescendantIdByActivityKey from '../providers/TranscriptFocus/useGetDescendantIdByActivityKey';
-import type { MouseEventHandler, PropsWithChildren } from 'react';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type MouseEventHandler, type ReactNode } from 'react';
+import { type WebChatActivity } from 'botframework-webchat-core';
import { useRefFrom } from 'use-ref-from';
const { useActivityKeysByRead, useGetHasAcknowledgedByActivityKey, useGetKeyByActivity } = hooks;
-type ActivityRowProps = PropsWithChildren<{ activity: WebChatActivity }>;
+type ActivityRowProps = Readonly<{ activity: WebChatActivity; children?: ReactNode | undefined }>;
const ActivityRow = forwardRef(({ activity, children }, ref) => {
const [activeDescendantId] = useActiveDescendantId();
diff --git a/packages/component/src/Transcript/LiveRegion/isPresentational.ts b/packages/component/src/Transcript/LiveRegion/isPresentational.ts
index c2b42a6455..a72c3c35b9 100644
--- a/packages/component/src/Transcript/LiveRegion/isPresentational.ts
+++ b/packages/component/src/Transcript/LiveRegion/isPresentational.ts
@@ -1,4 +1,4 @@
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
/**
* Determines if the rendering activity is presentational or not.
diff --git a/packages/component/src/Transcript/LiveRegionTranscript.tsx b/packages/component/src/Transcript/LiveRegionTranscript.tsx
index a56adb2524..7d7fec97e2 100644
--- a/packages/component/src/Transcript/LiveRegionTranscript.tsx
+++ b/packages/component/src/Transcript/LiveRegionTranscript.tsx
@@ -1,6 +1,6 @@
import { hooks } from 'botframework-webchat-api';
-import type { WebChatActivity } from 'botframework-webchat-core';
-import type { RefObject } from 'react';
+import { type WebChatActivity } from 'botframework-webchat-core';
+import { type RefObject } from 'react';
import React, { memo, useEffect, useMemo, useRef } from 'react';
import LiveRegionActivity from '../LiveRegion/LiveRegionActivity';
@@ -12,7 +12,7 @@ import LiveRegionSendFailed from './LiveRegion/SendFailed';
import isPresentational from './LiveRegion/isPresentational';
import useTypistNames from './useTypistNames';
-import type { ActivityElementMap } from './types';
+import { type ActivityElementMap } from './types';
const { useActivities, useGetKeyByActivity, useLocalizer } = hooks;
diff --git a/packages/component/src/Transcript/useActivityAccessibleName.ts b/packages/component/src/Transcript/useActivityAccessibleName.ts
index 9e3d9d3473..b6b3dd998b 100644
--- a/packages/component/src/Transcript/useActivityAccessibleName.ts
+++ b/packages/component/src/Transcript/useActivityAccessibleName.ts
@@ -1,7 +1,7 @@
import { hooks } from 'botframework-webchat-api';
import { useEffect, useMemo, useState } from 'react';
-import type { RefObject } from 'react';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type RefObject } from 'react';
+import { type WebChatActivity } from 'botframework-webchat-core';
import { SEND_FAILED } from '../types/internal/SendStatus';
import activityAltText from '../Utils/activityAltText';
diff --git a/packages/component/src/TranscriptActivity.tsx b/packages/component/src/TranscriptActivity.tsx
index 3aef0b65fb..b27eb0c99c 100644
--- a/packages/component/src/TranscriptActivity.tsx
+++ b/packages/component/src/TranscriptActivity.tsx
@@ -1,8 +1,8 @@
import React, { memo, useCallback, useMemo } from 'react';
import { hooks, type ActivityComponentFactory } from 'botframework-webchat-api';
-import type { ActivityElementMap } from './Transcript/types';
-import type { MutableRefObject, ReactNode } from 'react';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type ActivityElementMap } from './Transcript/types';
+import { type MutableRefObject, type ReactNode } from 'react';
+import { type WebChatActivity } from 'botframework-webchat-core';
import ActivityRow from './Transcript/ActivityRow';
const { useCreateActivityStatusRenderer } = hooks;
diff --git a/packages/component/src/Utils/AccessibleButton.tsx b/packages/component/src/Utils/AccessibleButton.tsx
index 24f3280ad9..674f2db8fc 100644
--- a/packages/component/src/Utils/AccessibleButton.tsx
+++ b/packages/component/src/Utils/AccessibleButton.tsx
@@ -1,7 +1,7 @@
/* eslint no-magic-numbers: ["error", { "ignore": [-1] }] */
import PropTypes from 'prop-types';
-import React, { forwardRef, MouseEventHandler, ReactNode, useRef } from 'react';
+import React, { forwardRef, type MouseEventHandler, type ReactNode, useRef } from 'react';
const PREVENT_DEFAULT_HANDLER = event => event.preventDefault();
diff --git a/packages/component/src/Utils/AccessibleInputText.tsx b/packages/component/src/Utils/AccessibleInputText.tsx
index 3e19f3c57d..b496e54859 100644
--- a/packages/component/src/Utils/AccessibleInputText.tsx
+++ b/packages/component/src/Utils/AccessibleInputText.tsx
@@ -1,11 +1,11 @@
/* eslint no-magic-numbers: ["error", { "ignore": [-1] }] */
import React, {
- ChangeEventHandler,
- FocusEventHandler,
forwardRef,
- KeyboardEventHandler,
- ReactEventHandler,
+ type ChangeEventHandler,
+ type FocusEventHandler,
+ type KeyboardEventHandler,
+ type ReactEventHandler,
useRef
} from 'react';
diff --git a/packages/component/src/Utils/AccessibleTextArea.tsx b/packages/component/src/Utils/AccessibleTextArea.tsx
index d239678264..1893e989bf 100644
--- a/packages/component/src/Utils/AccessibleTextArea.tsx
+++ b/packages/component/src/Utils/AccessibleTextArea.tsx
@@ -2,11 +2,11 @@
import PropTypes from 'prop-types';
import React, {
- ChangeEventHandler,
- FocusEventHandler,
+ type ChangeEventHandler,
+ type FocusEventHandler,
forwardRef,
- KeyboardEventHandler,
- ReactEventHandler,
+ type KeyboardEventHandler,
+ type ReactEventHandler,
useRef
} from 'react';
diff --git a/packages/component/src/Utils/FocusRedirector.tsx b/packages/component/src/Utils/FocusRedirector.tsx
index 170e749f2c..b14aef3101 100644
--- a/packages/component/src/Utils/FocusRedirector.tsx
+++ b/packages/component/src/Utils/FocusRedirector.tsx
@@ -1,7 +1,5 @@
import PropTypes from 'prop-types';
-import React, { useCallback } from 'react';
-
-import type { FC, MutableRefObject } from 'react';
+import React, { useCallback, type MutableRefObject } from 'react';
// This is an element, when focused, will send the focus to the ref specified in "redirectRef".
// Although the focus is being redirected, browser will scroll this redirector element into view.
@@ -12,13 +10,13 @@ import type { FC, MutableRefObject } from 'react';
// When this focus redirector is put inside a scrollable container, you may want to resize or reposition
// it to prevent unintentional scroll done by the browser default behavior.
-type FocusRedirectorProps = {
+type FocusRedirectorProps = Readonly<{
className?: string;
onFocus?: () => void;
redirectRef?: MutableRefObject;
-};
+}>;
-const FocusRedirector: FC = ({ className, onFocus, redirectRef }) => {
+const FocusRedirector = ({ className, onFocus, redirectRef }: FocusRedirectorProps) => {
const handleFocus = useCallback(() => {
redirectRef?.current?.focus();
onFocus && onFocus();
diff --git a/packages/component/src/Utils/computeSuggestedActionText.ts b/packages/component/src/Utils/computeSuggestedActionText.ts
index 9ccb74d83a..73e456651d 100644
--- a/packages/component/src/Utils/computeSuggestedActionText.ts
+++ b/packages/component/src/Utils/computeSuggestedActionText.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from 'botframework-webchat-core';
+import { type DirectLineCardAction } from 'botframework-webchat-core';
// Please refer to this article to find out how to compute the "button text" for suggested action.
// https://github.com/Microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md#card-action
diff --git a/packages/component/src/Utils/getActivityUniqueId.ts b/packages/component/src/Utils/getActivityUniqueId.ts
index 7e4441d75f..091d9a2d97 100644
--- a/packages/component/src/Utils/getActivityUniqueId.ts
+++ b/packages/component/src/Utils/getActivityUniqueId.ts
@@ -1,4 +1,4 @@
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
export default function getActivityUniqueId(activity: WebChatActivity): string {
return activity?.channelData?.clientActivityID || activity?.id;
diff --git a/packages/component/src/hooks/internal/codeHighlighter/private/defaultHighlightCode.tsx b/packages/component/src/hooks/internal/codeHighlighter/private/defaultHighlightCode.tsx
index dca0631d2b..64e99f2abb 100644
--- a/packages/component/src/hooks/internal/codeHighlighter/private/defaultHighlightCode.tsx
+++ b/packages/component/src/hooks/internal/codeHighlighter/private/defaultHighlightCode.tsx
@@ -1,4 +1,4 @@
-import type { HighlightCodeFn } from './CodeHighlighterComposer';
+import { type HighlightCodeFn } from './CodeHighlighterComposer';
export const defaultHighlightCode: HighlightCodeFn = (source, language) => {
try {
diff --git a/packages/component/src/hooks/internal/useFocusVisible.ts b/packages/component/src/hooks/internal/useFocusVisible.ts
index ca0c96fe4e..4e335b2503 100644
--- a/packages/component/src/hooks/internal/useFocusVisible.ts
+++ b/packages/component/src/hooks/internal/useFocusVisible.ts
@@ -1,4 +1,4 @@
-import { RefObject, useCallback, useEffect, useState } from 'react';
+import { type RefObject, useCallback, useEffect, useState } from 'react';
import useObserveFocusVisible from './useObserveFocusVisible';
diff --git a/packages/component/src/hooks/internal/useFocusWithin.ts b/packages/component/src/hooks/internal/useFocusWithin.ts
index cbf5560fd8..25b988969b 100644
--- a/packages/component/src/hooks/internal/useFocusWithin.ts
+++ b/packages/component/src/hooks/internal/useFocusWithin.ts
@@ -1,6 +1,4 @@
-import { useCallback, useEffect, useState } from 'react';
-
-import type { RefObject } from 'react';
+import { type RefObject, useCallback, useEffect, useState } from 'react';
export default function useFocusWithin(targetRef: RefObject): readonly [boolean] {
const [focusWithin, setFocusWithin] = useState(false);
diff --git a/packages/component/src/hooks/internal/useForceRenderAtInterval.ts b/packages/component/src/hooks/internal/useForceRenderAtInterval.ts
index a68b990ec8..b6a90674b4 100644
--- a/packages/component/src/hooks/internal/useForceRenderAtInterval.ts
+++ b/packages/component/src/hooks/internal/useForceRenderAtInterval.ts
@@ -1,11 +1,10 @@
import { hooks } from 'botframework-webchat-api';
-import { useCallback, useState } from 'react';
+import { type Dispatch, type SetStateAction, useCallback, useState } from 'react';
import random from 'math-random';
import useTimer from './useTimer';
-import type { Dispatch, SetStateAction } from 'react';
-import type { GlobalScopePonyfill } from 'botframework-webchat-core';
+import { type GlobalScopePonyfill } from 'botframework-webchat-core';
const { usePonyfill } = hooks;
diff --git a/packages/component/src/hooks/internal/useMemoWithPrevious.ts b/packages/component/src/hooks/internal/useMemoWithPrevious.ts
index 31368d5bed..95f618406d 100644
--- a/packages/component/src/hooks/internal/useMemoWithPrevious.ts
+++ b/packages/component/src/hooks/internal/useMemoWithPrevious.ts
@@ -1,6 +1,4 @@
-import { useEffect, useMemo, useRef } from 'react';
-
-import type { DependencyList } from 'react';
+import { type DependencyList, useEffect, useMemo, useRef } from 'react';
export default function useMemoWithPrevious(factory: (prevValue: T) => T, deps: DependencyList): T {
const prevValueRef = useRef();
diff --git a/packages/component/src/hooks/internal/useObserveFocusVisible.ts b/packages/component/src/hooks/internal/useObserveFocusVisible.ts
index 62cd85431a..3c3e6f4be1 100644
--- a/packages/component/src/hooks/internal/useObserveFocusVisible.ts
+++ b/packages/component/src/hooks/internal/useObserveFocusVisible.ts
@@ -1,5 +1,5 @@
import { hooks } from 'botframework-webchat-api';
-import { MutableRefObject, RefObject, useCallback, useEffect, useMemo, useRef } from 'react';
+import { type MutableRefObject, type RefObject, useCallback, useEffect, useMemo, useRef } from 'react';
import supportPseudoClass from '../../Utils/supportPseudoClass';
import useNonce from './useNonce';
diff --git a/packages/component/src/hooks/internal/useStateRef.ts b/packages/component/src/hooks/internal/useStateRef.ts
index 3d735f7951..ef093d5593 100644
--- a/packages/component/src/hooks/internal/useStateRef.ts
+++ b/packages/component/src/hooks/internal/useStateRef.ts
@@ -1,6 +1,4 @@
-import { useCallback, useRef, useState } from 'react';
-
-import type { Dispatch, MutableRefObject, SetStateAction } from 'react';
+import { type Dispatch, type MutableRefObject, type SetStateAction, useCallback, useRef, useState } from 'react';
export default function useStateRef(
initialValue?: T
diff --git a/packages/component/src/hooks/internal/useValueRef.ts b/packages/component/src/hooks/internal/useValueRef.ts
index 26704acc19..3952ea83c7 100644
--- a/packages/component/src/hooks/internal/useValueRef.ts
+++ b/packages/component/src/hooks/internal/useValueRef.ts
@@ -1,5 +1,5 @@
// TODO: [P0] #4133 Don't copy.
-import { RefObject, useMemo, useRef } from 'react';
+import { type RefObject, useMemo, useRef } from 'react';
export default function useValueRef(value: T): RefObject {
const ref = useRef();
diff --git a/packages/component/src/hooks/sendBoxFocus.ts b/packages/component/src/hooks/sendBoxFocus.ts
index 065097b0e5..0304586afa 100644
--- a/packages/component/src/hooks/sendBoxFocus.ts
+++ b/packages/component/src/hooks/sendBoxFocus.ts
@@ -1,4 +1,4 @@
-import { WaitUntilable } from './internal/createWaitUntilable';
+import { type WaitUntilable } from './internal/createWaitUntilable';
import { createPropagation } from 'use-propagate';
export type SendBoxFocusOptions = WaitUntilable<{ noKeyboard: boolean }>;
diff --git a/packages/component/src/hooks/useObserveScrollPosition.ts b/packages/component/src/hooks/useObserveScrollPosition.ts
index cb5b7432b9..01422e0cfc 100644
--- a/packages/component/src/hooks/useObserveScrollPosition.ts
+++ b/packages/component/src/hooks/useObserveScrollPosition.ts
@@ -1,6 +1,6 @@
import { useEffect } from 'react';
-import ScrollPosition from '../types/ScrollPosition';
+import type ScrollPosition from '../types/ScrollPosition';
import useWebChatUIContext from './internal/useWebChatUIContext';
export default function useObserveScrollPosition(
diff --git a/packages/component/src/hooks/useObserveTranscriptFocus.ts b/packages/component/src/hooks/useObserveTranscriptFocus.ts
index 6b39fb265e..11e899ab2b 100644
--- a/packages/component/src/hooks/useObserveTranscriptFocus.ts
+++ b/packages/component/src/hooks/useObserveTranscriptFocus.ts
@@ -1,5 +1,5 @@
import { useEffect } from 'react';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
import useWebChatUIContext from './internal/useWebChatUIContext';
diff --git a/packages/component/src/hooks/useRenderMarkdownAsHTML.ts b/packages/component/src/hooks/useRenderMarkdownAsHTML.ts
index 8eae1dd4a7..e9a0ced723 100644
--- a/packages/component/src/hooks/useRenderMarkdownAsHTML.ts
+++ b/packages/component/src/hooks/useRenderMarkdownAsHTML.ts
@@ -1,5 +1,5 @@
import { cx } from '@emotion/css';
-import { hooks, StrictStyleOptions } from 'botframework-webchat-api';
+import { hooks, type StrictStyleOptions } from 'botframework-webchat-api';
import { useMemo } from 'react';
import { useTransformHTMLContent } from '../providers/HTMLContentTransformCOR/index';
diff --git a/packages/component/src/hooks/useScrollTo.ts b/packages/component/src/hooks/useScrollTo.ts
index 6157eaee49..610026fd07 100644
--- a/packages/component/src/hooks/useScrollTo.ts
+++ b/packages/component/src/hooks/useScrollTo.ts
@@ -1,6 +1,6 @@
import { useCallback } from 'react';
-import ScrollPosition from '../types/ScrollPosition';
+import type ScrollPosition from '../types/ScrollPosition';
import useWebChatUIContext from './internal/useWebChatUIContext';
export default function useScrollTo(): (
diff --git a/packages/component/src/hooks/useWebSpeechPonyfill.ts b/packages/component/src/hooks/useWebSpeechPonyfill.ts
index 41bf7f02d7..61c733d5f2 100644
--- a/packages/component/src/hooks/useWebSpeechPonyfill.ts
+++ b/packages/component/src/hooks/useWebSpeechPonyfill.ts
@@ -1,4 +1,4 @@
-import { WebSpeechPonyfill } from 'botframework-webchat-api';
+import { type WebSpeechPonyfill } from 'botframework-webchat-api';
import useWebChatUIContext from './internal/useWebChatUIContext';
diff --git a/packages/component/src/index.ts b/packages/component/src/index.ts
index 0835d92936..91cb83bdf6 100644
--- a/packages/component/src/index.ts
+++ b/packages/component/src/index.ts
@@ -1,16 +1,16 @@
import { hooks as apiHooks, concatMiddleware, localize } from 'botframework-webchat-api';
import { type WebChatActivity } from 'botframework-webchat-core';
-import ReactWebChat, { ReactWebChatProps } from './ReactWebChat';
+import ReactWebChat, { type ReactWebChatProps } from './ReactWebChat';
-import Composer, { ComposerProps } from './Composer';
+import Composer, { type ComposerProps } from './Composer';
import AccessKeySinkSurface from './Utils/AccessKeySink/Surface';
import BasicConnectivityStatus from './BasicConnectivityStatus';
import BasicToaster from './BasicToaster';
import BasicTranscript from './BasicTranscript';
-import BasicWebChat, { BasicWebChatProps } from './BasicWebChat';
+import BasicWebChat, { type BasicWebChatProps } from './BasicWebChat';
import BasicSendBox from './SendBox/BasicSendBox';
import BasicSendBoxToolbar from './SendBoxToolbar/BasicSendBoxToolbar';
diff --git a/packages/component/src/providers/ActivityTree/ActivityTreeComposer.tsx b/packages/component/src/providers/ActivityTree/ActivityTreeComposer.tsx
index d5569b92ce..d70dbc9c14 100644
--- a/packages/component/src/providers/ActivityTree/ActivityTreeComposer.tsx
+++ b/packages/component/src/providers/ActivityTree/ActivityTreeComposer.tsx
@@ -1,15 +1,15 @@
import { hooks, type ActivityComponentFactory } from 'botframework-webchat-api';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
import React, { useMemo, type ReactNode } from 'react';
import useMemoWithPrevious from '../../hooks/internal/useMemoWithPrevious';
import ActivityTreeContext from './private/Context';
-import { ActivityWithRenderer, ReadonlyActivityTree } from './private/types';
+import { type ActivityWithRenderer, type ReadonlyActivityTree } from './private/types';
import useActivitiesWithRenderer from './private/useActivitiesWithRenderer';
import useActivityTreeWithRenderer from './private/useActivityTreeWithRenderer';
import useActivityTreeContext from './private/useContext';
-import type { ActivityTreeContextType } from './private/Context';
+import { type ActivityTreeContextType } from './private/Context';
type ActivityTreeComposerProps = Readonly<{ children?: ReactNode | undefined }>;
diff --git a/packages/component/src/providers/ActivityTree/private/Context.ts b/packages/component/src/providers/ActivityTree/private/Context.ts
index dcd1c99b1d..d7d082c23f 100644
--- a/packages/component/src/providers/ActivityTree/private/Context.ts
+++ b/packages/component/src/providers/ActivityTree/private/Context.ts
@@ -1,6 +1,6 @@
import { createContext } from 'react';
-import type { ActivityWithRenderer, ReadonlyActivityTree } from './types';
+import { type ActivityWithRenderer, type ReadonlyActivityTree } from './types';
type ActivityTreeContextType = {
activityTreeWithRendererState: readonly [ReadonlyActivityTree];
diff --git a/packages/component/src/providers/ActivityTree/private/types.ts b/packages/component/src/providers/ActivityTree/private/types.ts
index b0f40b0ed9..3d919536f0 100644
--- a/packages/component/src/providers/ActivityTree/private/types.ts
+++ b/packages/component/src/providers/ActivityTree/private/types.ts
@@ -1,5 +1,5 @@
-import type { ActivityComponentFactory } from 'botframework-webchat-api';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type ActivityComponentFactory } from 'botframework-webchat-api';
+import { type WebChatActivity } from 'botframework-webchat-core';
type ActivityWithRenderer = {
activity: WebChatActivity;
diff --git a/packages/component/src/providers/ActivityTree/private/useActivitiesWithRenderer.ts b/packages/component/src/providers/ActivityTree/private/useActivitiesWithRenderer.ts
index 82cc58f07e..b9f08c1b83 100644
--- a/packages/component/src/providers/ActivityTree/private/useActivitiesWithRenderer.ts
+++ b/packages/component/src/providers/ActivityTree/private/useActivitiesWithRenderer.ts
@@ -1,7 +1,7 @@
import { useMemo } from 'react';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
-import type { ActivityWithRenderer } from './types';
+import { type ActivityWithRenderer } from './types';
import useMemoized from '../../../hooks/internal/useMemoized';
export default function useActivitiesWithRenderer(
diff --git a/packages/component/src/providers/ActivityTree/private/useActivityTreeWithRenderer.ts b/packages/component/src/providers/ActivityTree/private/useActivityTreeWithRenderer.ts
index db0f8c2a02..62e2ef8202 100644
--- a/packages/component/src/providers/ActivityTree/private/useActivityTreeWithRenderer.ts
+++ b/packages/component/src/providers/ActivityTree/private/useActivityTreeWithRenderer.ts
@@ -1,10 +1,10 @@
import { hooks } from 'botframework-webchat-api';
import { useMemo } from 'react';
-import type { WebChatActivity } from 'botframework-webchat-core';
+import { type WebChatActivity } from 'botframework-webchat-core';
import intersectionOf from '../../../Utils/intersectionOf';
import removeInline from '../../../Utils/removeInline';
-import type { ActivityWithRenderer, ReadonlyActivityTree } from './types';
+import { type ActivityWithRenderer, type ReadonlyActivityTree } from './types';
const { useGroupActivities } = hooks;
diff --git a/packages/component/src/providers/ActivityTree/private/useContext.ts b/packages/component/src/providers/ActivityTree/private/useContext.ts
index d543fe4a18..e43eae8e68 100644
--- a/packages/component/src/providers/ActivityTree/private/useContext.ts
+++ b/packages/component/src/providers/ActivityTree/private/useContext.ts
@@ -2,7 +2,7 @@ import { useContext } from 'react';
import ActivityTreeContext from './Context';
-import type { ActivityTreeContextType } from './Context';
+import { type ActivityTreeContextType } from './Context';
export default function useActivityTreeContext(thrownOnUndefined = true): ActivityTreeContextType {
const contextValue = useContext(ActivityTreeContext);
diff --git a/packages/component/src/providers/ActivityTree/useActivityTreeWithRenderer.ts b/packages/component/src/providers/ActivityTree/useActivityTreeWithRenderer.ts
index dda028c7df..60936438c8 100644
--- a/packages/component/src/providers/ActivityTree/useActivityTreeWithRenderer.ts
+++ b/packages/component/src/providers/ActivityTree/useActivityTreeWithRenderer.ts
@@ -1,6 +1,6 @@
import useActivityTreeContext from './private/useContext';
-import type { ActivityWithRenderer, ReadonlyActivityTree } from './private/types';
+import { type ActivityWithRenderer, type ReadonlyActivityTree } from './private/types';
export default function useActivityTreeWithRenderer(options?: { flat?: false }): readonly [ReadonlyActivityTree];
export default function useActivityTreeWithRenderer(options: {
diff --git a/packages/component/src/providers/CustomElements/customElements/CodeBlock.ts b/packages/component/src/providers/CustomElements/customElements/CodeBlock.ts
index e8942e68d6..f02dc7ae41 100644
--- a/packages/component/src/providers/CustomElements/customElements/CodeBlock.ts
+++ b/packages/component/src/providers/CustomElements/customElements/CodeBlock.ts
@@ -1,9 +1,9 @@
/* eslint-disable class-methods-use-this */
import { hooks } from 'botframework-webchat-api';
-import { ReactNode, useMemo, useRef } from 'react';
+import { type ReactNode, useMemo, useRef } from 'react';
import { useStyleSet } from '../../../hooks';
-import { defaultHighlightCode, HighlightCodeFn } from '../../../hooks/internal/codeHighlighter';
+import { defaultHighlightCode, type HighlightCodeFn } from '../../../hooks/internal/codeHighlighter';
import { parseDocumentFragmentFromString, useCodeHighlighter } from '../../../internal';
const { useStyleOptions, useLocalizer } = hooks;
diff --git a/packages/component/src/providers/CustomElements/useCodeBlockTagName.ts b/packages/component/src/providers/CustomElements/useCodeBlockTagName.ts
index 3313272d3a..bb04752794 100644
--- a/packages/component/src/providers/CustomElements/useCodeBlockTagName.ts
+++ b/packages/component/src/providers/CustomElements/useCodeBlockTagName.ts
@@ -1,6 +1,6 @@
import { createElement, memo, useMemo } from 'react';
-import { CodeBlockProps } from './customElements/CodeBlock';
+import { type CodeBlockProps } from './customElements/CodeBlock';
import useCustomElementsContext from './private/useCustomElementsContext';
export default function useCodeBlockTag() {
diff --git a/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinComposer.ts b/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinComposer.ts
index 6908f0b1fb..11e944f965 100644
--- a/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinComposer.ts
+++ b/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinComposer.ts
@@ -1,7 +1,7 @@
import { createContext } from 'react';
import createLiveRegionTwinComposer from './createLiveRegionTwinComposer';
-import type { StaticElement, StaticElementEntry } from './types';
+import { type StaticElement, type StaticElementEntry } from './types';
export type LiveRegionTwinContextType = {
markAllAsRendered: () => void;
diff --git a/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinContainer.tsx b/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinContainer.tsx
index 0f571c79a2..da54a5df2d 100644
--- a/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinContainer.tsx
+++ b/packages/component/src/providers/LiveRegionTwin/private/LiveRegionTwinContainer.tsx
@@ -1,29 +1,27 @@
import PropTypes from 'prop-types';
import React, { Fragment } from 'react';
-import type { VFC } from 'react';
-
import useMarkAllAsRenderedEffect from './useMarkAllAsRenderedEffect';
import useStaticElementEntries from './useStaticElementEntries';
-type LiveRegionTwinContainerProps = {
+type LiveRegionTwinContainerProps = Readonly<{
'aria-label'?: string;
'aria-live': 'assertive' | 'polite';
'aria-roledescription'?: string;
className?: string;
role?: string;
textElementClassName?: string;
-};
+}>;
// This container is marked as private because we assume there is only one instance under the .
-const LiveRegionTwinContainer: VFC = ({
+const LiveRegionTwinContainer = ({
'aria-label': ariaLabel,
'aria-live': ariaLive,
'aria-roledescription': ariaRoleDescription,
className,
role,
textElementClassName
-}) => {
+}: LiveRegionTwinContainerProps) => {
const [staticElementEntries] = useStaticElementEntries();
// We assume there is only one instance under the .
diff --git a/packages/component/src/providers/LiveRegionTwin/private/createLiveRegionTwinComposer.tsx b/packages/component/src/providers/LiveRegionTwin/private/createLiveRegionTwinComposer.tsx
index 7a59585c1f..518bbee736 100644
--- a/packages/component/src/providers/LiveRegionTwin/private/createLiveRegionTwinComposer.tsx
+++ b/packages/component/src/providers/LiveRegionTwin/private/createLiveRegionTwinComposer.tsx
@@ -5,7 +5,7 @@ import { useRefFrom } from 'use-ref-from';
import { type LiveRegionTwinContextType } from './LiveRegionTwinComposer';
import LiveRegionTwinContainer from './LiveRegionTwinContainer';
-import type { StaticElement, StaticElementEntry } from './types';
+import { type StaticElement, type StaticElementEntry } from './types';
const { usePonyfill } = hooks;
diff --git a/packages/component/src/providers/LiveRegionTwin/private/types.ts b/packages/component/src/providers/LiveRegionTwin/private/types.ts
index c7a4342ece..546b4f85c6 100644
--- a/packages/component/src/providers/LiveRegionTwin/private/types.ts
+++ b/packages/component/src/providers/LiveRegionTwin/private/types.ts
@@ -1,4 +1,4 @@
-import type { ReactElement } from 'react';
+import { type ReactElement } from 'react';
type StaticElement = Exclude;
diff --git a/packages/component/src/providers/LiveRegionTwin/private/useStaticElementEntries.ts b/packages/component/src/providers/LiveRegionTwin/private/useStaticElementEntries.ts
index cc2fcd0919..f6e3914def 100644
--- a/packages/component/src/providers/LiveRegionTwin/private/useStaticElementEntries.ts
+++ b/packages/component/src/providers/LiveRegionTwin/private/useStaticElementEntries.ts
@@ -1,6 +1,6 @@
import useLiveRegionTwinContext from './useContext';
-import type { StaticElementEntry } from './types';
+import { type StaticElementEntry } from './types';
export default function useStaticElementEntries(): readonly [readonly StaticElementEntry[]] {
return useLiveRegionTwinContext().staticElementEntriesState;
diff --git a/packages/component/src/providers/LiveRegionTwin/useQueueStaticElement.ts b/packages/component/src/providers/LiveRegionTwin/useQueueStaticElement.ts
index 50d69d77a6..2f974a9b51 100644
--- a/packages/component/src/providers/LiveRegionTwin/useQueueStaticElement.ts
+++ b/packages/component/src/providers/LiveRegionTwin/useQueueStaticElement.ts
@@ -1,6 +1,6 @@
import useLiveRegionTwinContext from './private/useContext';
-import type { StaticElement } from './private/types';
+import { type StaticElement } from './private/types';
/**
* Queues a static element to the live region.
diff --git a/packages/component/src/providers/ModalDialog/private/Popover.tsx b/packages/component/src/providers/ModalDialog/private/Popover.tsx
index 97e307d3e0..f3b9621482 100644
--- a/packages/component/src/providers/ModalDialog/private/Popover.tsx
+++ b/packages/component/src/providers/ModalDialog/private/Popover.tsx
@@ -1,19 +1,18 @@
import { hooks } from 'botframework-webchat-api';
import classNames from 'classnames';
-import React, { memo, type PropsWithChildren, useCallback, useLayoutEffect, useRef } from 'react';
+import React, { memo, useCallback, useLayoutEffect, useRef, type ReactNode } from 'react';
import useStyleSet from '../../../hooks/useStyleSet';
const { useLocalizer } = hooks;
-type Props = Readonly<
- PropsWithChildren<{
- 'aria-label'?: string;
- 'aria-labelledby'?: string;
- className?: string;
- onDismiss?: () => void;
- }>
->;
+type Props = Readonly<{
+ 'aria-label'?: string;
+ 'aria-labelledby'?: string;
+ children?: ReactNode | undefined;
+ className?: string;
+ onDismiss?: () => void;
+}>;
const ModalDialog = memo(
({ 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, children, className, onDismiss }: Props) => {
diff --git a/packages/component/src/providers/RovingTabIndex/RovingTabIndexComposer.tsx b/packages/component/src/providers/RovingTabIndex/RovingTabIndexComposer.tsx
index 28c06db473..9f2fe50b52 100644
--- a/packages/component/src/providers/RovingTabIndex/RovingTabIndexComposer.tsx
+++ b/packages/component/src/providers/RovingTabIndex/RovingTabIndexComposer.tsx
@@ -1,21 +1,21 @@
/* eslint complexity: ["error", 50] */
import PropTypes from 'prop-types';
-import React, { useCallback, useEffect, useMemo, useRef } from 'react';
+import React, { type MutableRefObject, type ReactNode, useCallback, useEffect, useMemo, useRef } from 'react';
import RovingTabIndexContext from './private/Context';
-import type { FC, MutableRefObject, PropsWithChildren } from 'react';
-import type { RovingTabIndexContextType } from './private/Context';
+import { type RovingTabIndexContextType } from './private/Context';
type ItemRef = MutableRefObject;
-type RovingTabIndexContextProps = PropsWithChildren<{
+type RovingTabIndexContextProps = Readonly<{
+ children?: ReactNode | undefined;
onEscapeKey?: () => void;
orientation?: 'horizontal' | 'vertical';
}>;
-const RovingTabIndexComposer: FC = ({ children, onEscapeKey, orientation }) => {
+const RovingTabIndexComposer = ({ children, onEscapeKey, orientation }: RovingTabIndexContextProps) => {
const activeItemIndexRef = useRef(0);
const itemRefsRef = useRef([]);
diff --git a/packages/component/src/providers/RovingTabIndex/private/Context.ts b/packages/component/src/providers/RovingTabIndex/private/Context.ts
index cd117fd15e..bbe4fdce49 100644
--- a/packages/component/src/providers/RovingTabIndex/private/Context.ts
+++ b/packages/component/src/providers/RovingTabIndex/private/Context.ts
@@ -1,6 +1,6 @@
import { createContext } from 'react';
-import type { MutableRefObject } from 'react';
+import { type MutableRefObject } from 'react';
type RovingTabIndexContextType = {
itemEffector: (ref: MutableRefObject, index: number) => () => void;
diff --git a/packages/component/src/providers/RovingTabIndex/useItemRef.ts b/packages/component/src/providers/RovingTabIndex/useItemRef.ts
index e67e396e46..87b3be884c 100644
--- a/packages/component/src/providers/RovingTabIndex/useItemRef.ts
+++ b/packages/component/src/providers/RovingTabIndex/useItemRef.ts
@@ -1,7 +1,7 @@
import { useEffect, useRef } from 'react';
import useContext from './private/useContext';
-import type { MutableRefObject } from 'react';
+import { type MutableRefObject } from 'react';
export default function useItemRef(itemIndex: number): MutableRefObject {
const ref = useRef();
diff --git a/packages/component/src/providers/Theme/private/Context.ts b/packages/component/src/providers/Theme/private/Context.ts
index dbc1bdb291..558eba083f 100644
--- a/packages/component/src/providers/Theme/private/Context.ts
+++ b/packages/component/src/providers/Theme/private/Context.ts
@@ -1,17 +1,17 @@
-import type {
- ActivityMiddleware,
- ActivityStatusMiddleware,
- AttachmentForScreenReaderMiddleware,
- AttachmentMiddleware,
- AvatarMiddleware,
- CardActionMiddleware,
- GroupActivitiesMiddleware,
- ScrollToEndButtonMiddleware,
- SendBoxMiddleware,
- SendBoxToolbarMiddleware,
- StyleOptions,
- ToastMiddleware,
- TypingIndicatorMiddleware
+import {
+ type ActivityMiddleware,
+ type ActivityStatusMiddleware,
+ type AttachmentForScreenReaderMiddleware,
+ type AttachmentMiddleware,
+ type AvatarMiddleware,
+ type CardActionMiddleware,
+ type GroupActivitiesMiddleware,
+ type ScrollToEndButtonMiddleware,
+ type SendBoxMiddleware,
+ type SendBoxToolbarMiddleware,
+ type StyleOptions,
+ type ToastMiddleware,
+ type TypingIndicatorMiddleware
} from 'botframework-webchat-api';
import { createContext } from 'react';
diff --git a/packages/component/src/providers/TranscriptFocus/TranscriptFocusComposer.tsx b/packages/component/src/providers/TranscriptFocus/TranscriptFocusComposer.tsx
index 5b410be65d..cec80427e0 100644
--- a/packages/component/src/providers/TranscriptFocus/TranscriptFocusComposer.tsx
+++ b/packages/component/src/providers/TranscriptFocus/TranscriptFocusComposer.tsx
@@ -1,7 +1,7 @@
import { hooks } from 'botframework-webchat-api';
import PropTypes from 'prop-types';
import random from 'math-random';
-import React, { useCallback, useMemo } from 'react';
+import React, { type MutableRefObject, type ReactNode, useCallback, useMemo } from 'react';
import scrollIntoViewWithBlockNearest from '../../Utils/scrollIntoViewWithBlockNearest';
import TranscriptFocusContext from './private/Context';
@@ -10,12 +10,12 @@ import usePrevious from '../../hooks/internal/usePrevious';
import useStateRef from '../../hooks/internal/useStateRef';
import useValueRef from '../../hooks/internal/useValueRef';
-import type { FC, MutableRefObject, PropsWithChildren } from 'react';
-import type { TranscriptFocusContextType } from './private/Context';
+import { type TranscriptFocusContextType } from './private/Context';
const { useGetKeyByActivity } = hooks;
-type TranscriptFocusComposerProps = PropsWithChildren<{
+type TranscriptFocusComposerProps = Readonly<{
+ children?: ReactNode | undefined;
containerRef: MutableRefObject;
}>;
@@ -33,7 +33,7 @@ function uniqueId(count = Infinity) {
);
}
-const TranscriptFocusComposer: FC = ({ children, containerRef }) => {
+const TranscriptFocusComposer = ({ children, containerRef }: TranscriptFocusComposerProps) => {
const [flattenedActivityTree] = useActivityTreeWithRenderer({ flat: true });
const [_, setRawFocusedActivityKey, rawFocusedActivityKeyRef] = useStateRef();
const getKeyByActivity = useGetKeyByActivity();
diff --git a/packages/component/src/providers/internal/SendBox/private/Context.ts b/packages/component/src/providers/internal/SendBox/private/Context.ts
index 5e632bab32..ec95898015 100644
--- a/packages/component/src/providers/internal/SendBox/private/Context.ts
+++ b/packages/component/src/providers/internal/SendBox/private/Context.ts
@@ -1,6 +1,6 @@
import { createContext } from 'react';
-import type { ContextType } from './types';
+import { type ContextType } from './types';
const SendBoxContext = createContext(undefined);
diff --git a/packages/component/src/providers/internal/SendBox/private/useContext.ts b/packages/component/src/providers/internal/SendBox/private/useContext.ts
index ec61c87d06..b48f480e4e 100644
--- a/packages/component/src/providers/internal/SendBox/private/useContext.ts
+++ b/packages/component/src/providers/internal/SendBox/private/useContext.ts
@@ -2,7 +2,7 @@ import { useContext } from 'react';
import Context from './Context';
-import type { ContextType } from './types';
+import { type ContextType } from './types';
export default function useSendBoxContext(): ContextType {
const context = useContext(Context);
diff --git a/packages/component/src/withEmoji/withEmoji.tsx b/packages/component/src/withEmoji/withEmoji.tsx
index 9d2f8c6dde..da6fb1c3d4 100644
--- a/packages/component/src/withEmoji/withEmoji.tsx
+++ b/packages/component/src/withEmoji/withEmoji.tsx
@@ -1,16 +1,16 @@
import { useRefFrom } from 'use-ref-from';
import mergeRefs from 'merge-refs';
import React, {
- type ChangeEvent,
- type ComponentType,
- type FocusEvent,
forwardRef,
- type KeyboardEvent,
- type SyntheticEvent,
useCallback,
useMemo,
useRef,
- type Ref
+ type ChangeEvent,
+ type ComponentType,
+ type FocusEvent,
+ type KeyboardEvent,
+ type Ref,
+ type SyntheticEvent
} from 'react';
import useUndoStack from './private/useUndoStack';
diff --git a/packages/core/src/actions/incomingActivity.ts b/packages/core/src/actions/incomingActivity.ts
index 2f73195513..9700415e53 100644
--- a/packages/core/src/actions/incomingActivity.ts
+++ b/packages/core/src/actions/incomingActivity.ts
@@ -1,4 +1,4 @@
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type WebChatActivity } from '../types/WebChatActivity';
type IncomingActivityActionType = 'DIRECT_LINE/INCOMING_ACTIVITY';
diff --git a/packages/core/src/actions/postActivity.ts b/packages/core/src/actions/postActivity.ts
index fe9cde2f26..4e1f8545c2 100644
--- a/packages/core/src/actions/postActivity.ts
+++ b/packages/core/src/actions/postActivity.ts
@@ -1,4 +1,4 @@
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type WebChatActivity } from '../types/WebChatActivity';
type PostActivityActionType = 'DIRECT_LINE/POST_ACTIVITY';
type PostActivityFulfilledActionType = 'DIRECT_LINE/POST_ACTIVITY_FULFILLED';
diff --git a/packages/core/src/actions/setNotification.ts b/packages/core/src/actions/setNotification.ts
index e275ea54e9..3061c0f7c5 100644
--- a/packages/core/src/actions/setNotification.ts
+++ b/packages/core/src/actions/setNotification.ts
@@ -1,6 +1,6 @@
import uniqueID from '../utils/uniqueID';
-import type { Notification } from '../types/internal/Notification';
+import { type Notification } from '../types/internal/Notification';
const SET_NOTIFICATION = 'WEB_CHAT/SET_NOTIFICATION';
diff --git a/packages/core/src/actions/setSendBoxAttachments.ts b/packages/core/src/actions/setSendBoxAttachments.ts
index 98f3b55eb9..d77942f123 100644
--- a/packages/core/src/actions/setSendBoxAttachments.ts
+++ b/packages/core/src/actions/setSendBoxAttachments.ts
@@ -1,4 +1,4 @@
-import type { SendBoxAttachment } from '../types/SendBoxAttachment';
+import { type SendBoxAttachment } from '../types/SendBoxAttachment';
const SET_SEND_BOX_ATTACHMENTS = 'WEB_CHAT/SET_SEND_BOX_ATTACHMENTS';
diff --git a/packages/core/src/actions/setSuggestedActions.ts b/packages/core/src/actions/setSuggestedActions.ts
index e9e55ff194..aaa0b18aae 100644
--- a/packages/core/src/actions/setSuggestedActions.ts
+++ b/packages/core/src/actions/setSuggestedActions.ts
@@ -1,5 +1,5 @@
-import type { DirectLineCardAction } from '../types/external/DirectLineCardAction';
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type DirectLineCardAction } from '../types/external/DirectLineCardAction';
+import { type WebChatActivity } from '../types/WebChatActivity';
const EMPTY_ARRAY: readonly DirectLineCardAction[] = Object.freeze([]);
diff --git a/packages/core/src/createReducer.ts b/packages/core/src/createReducer.ts
index 3e9c9894b1..1101cf0a62 100644
--- a/packages/core/src/createReducer.ts
+++ b/packages/core/src/createReducer.ts
@@ -18,7 +18,7 @@ import shouldSpeakIncomingActivity from './reducers/shouldSpeakIncomingActivity'
import suggestedActions from './reducers/suggestedActions';
import suggestedActionsOriginActivity from './reducers/suggestedActionsOriginActivity';
-import type { GlobalScopePonyfill } from './types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from './types/GlobalScopePonyfill';
export default function createReducer(ponyfill: GlobalScopePonyfill) {
return combineReducers({
diff --git a/packages/core/src/createSagas.ts b/packages/core/src/createSagas.ts
index 1fda27ee4f..45306d83cd 100644
--- a/packages/core/src/createSagas.ts
+++ b/packages/core/src/createSagas.ts
@@ -23,8 +23,8 @@ import stopDictateOnCardActionSaga from './sagas/stopDictateOnCardActionSaga';
import stopSpeakingActivityOnInputSaga from './sagas/stopSpeakingActivityOnInputSaga';
import submitSendBoxSaga from './sagas/submitSendBoxSaga';
-import type { GlobalScopePonyfill } from './types/GlobalScopePonyfill';
-import type { Saga } from 'redux-saga';
+import { type GlobalScopePonyfill } from './types/GlobalScopePonyfill';
+import { type Saga } from 'redux-saga';
type CreateSagasOptions = {
ponyfill: GlobalScopePonyfill;
diff --git a/packages/core/src/createStore.ts b/packages/core/src/createStore.ts
index 33e581e09e..402fa99d7f 100644
--- a/packages/core/src/createStore.ts
+++ b/packages/core/src/createStore.ts
@@ -6,7 +6,7 @@ import createReducer from './createReducer';
import createSagas from './createSagas';
import sagaError from './actions/sagaError';
-import type { GlobalScopePonyfill } from './types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from './types/GlobalScopePonyfill';
type CreateStoreOptions = {
/**
diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts
index 2eb76a2da6..8408862c05 100644
--- a/packages/core/src/index.ts
+++ b/packages/core/src/index.ts
@@ -31,7 +31,7 @@ import createStore, {
withDevTools as createStoreWithDevTools,
withOptions as createStoreWithOptions
} from './createStore';
-import OneOrMany from './types/OneOrMany';
+import type OneOrMany from './types/OneOrMany';
import { parseAction } from './types/external/OrgSchema/Action';
import { parseClaim } from './types/external/OrgSchema/Claim';
import { parseCreativeWork } from './types/external/OrgSchema/CreativeWork';
@@ -46,29 +46,29 @@ import onErrorResumeNext from './utils/onErrorResumeNext';
import singleToArray from './utils/singleToArray';
import warnOnce from './utils/warnOnce';
-import type { GlobalScopePonyfill } from './types/GlobalScopePonyfill';
-import type { SendBoxAttachment } from './types/SendBoxAttachment';
-import type { WebChatActivity } from './types/WebChatActivity';
-import type { DirectLineActivity } from './types/external/DirectLineActivity';
-import type { DirectLineAnimationCard } from './types/external/DirectLineAnimationCard';
-import type { DirectLineAttachment } from './types/external/DirectLineAttachment';
-import type { DirectLineAudioCard } from './types/external/DirectLineAudioCard';
-import type { DirectLineCardAction } from './types/external/DirectLineCardAction';
-import type { DirectLineHeroCard } from './types/external/DirectLineHeroCard';
-import type { DirectLineJSBotConnection } from './types/external/DirectLineJSBotConnection';
-import type { DirectLineOAuthCard } from './types/external/DirectLineOAuthCard';
-import type { DirectLineReceiptCard } from './types/external/DirectLineReceiptCard';
-import type { DirectLineSignInCard } from './types/external/DirectLineSignInCard';
-import type { DirectLineSuggestedAction } from './types/external/DirectLineSuggestedAction';
-import type { DirectLineThumbnailCard } from './types/external/DirectLineThumbnailCard';
-import type { DirectLineVideoCard } from './types/external/DirectLineVideoCard';
-import type { Observable } from './types/external/Observable';
-import type { Action as OrgSchemaAction } from './types/external/OrgSchema/Action';
-import type { Claim as OrgSchemaClaim } from './types/external/OrgSchema/Claim';
-import type { CreativeWork as OrgSchemaCreativeWork } from './types/external/OrgSchema/CreativeWork';
-import type { DefinedTerm as OrgSchemaDefinedTerm } from './types/external/OrgSchema/DefinedTerm';
-import type { Project as OrgSchemaProject } from './types/external/OrgSchema/Project';
-import type { Thing as OrgSchemaThing } from './types/external/OrgSchema/Thing';
+import { type GlobalScopePonyfill } from './types/GlobalScopePonyfill';
+import { type SendBoxAttachment } from './types/SendBoxAttachment';
+import { type WebChatActivity } from './types/WebChatActivity';
+import { type DirectLineActivity } from './types/external/DirectLineActivity';
+import { type DirectLineAnimationCard } from './types/external/DirectLineAnimationCard';
+import { type DirectLineAttachment } from './types/external/DirectLineAttachment';
+import { type DirectLineAudioCard } from './types/external/DirectLineAudioCard';
+import { type DirectLineCardAction } from './types/external/DirectLineCardAction';
+import { type DirectLineHeroCard } from './types/external/DirectLineHeroCard';
+import { type DirectLineJSBotConnection } from './types/external/DirectLineJSBotConnection';
+import { type DirectLineOAuthCard } from './types/external/DirectLineOAuthCard';
+import { type DirectLineReceiptCard } from './types/external/DirectLineReceiptCard';
+import { type DirectLineSignInCard } from './types/external/DirectLineSignInCard';
+import { type DirectLineSuggestedAction } from './types/external/DirectLineSuggestedAction';
+import { type DirectLineThumbnailCard } from './types/external/DirectLineThumbnailCard';
+import { type DirectLineVideoCard } from './types/external/DirectLineVideoCard';
+import { type Observable } from './types/external/Observable';
+import { type Action as OrgSchemaAction } from './types/external/OrgSchema/Action';
+import { type Claim as OrgSchemaClaim } from './types/external/OrgSchema/Claim';
+import { type CreativeWork as OrgSchemaCreativeWork } from './types/external/OrgSchema/CreativeWork';
+import { type DefinedTerm as OrgSchemaDefinedTerm } from './types/external/OrgSchema/DefinedTerm';
+import { type Project as OrgSchemaProject } from './types/external/OrgSchema/Project';
+import { type Thing as OrgSchemaThing } from './types/external/OrgSchema/Thing';
const Constants = { ActivityClientState, DictateState };
const buildTool = process.env.build_tool;
diff --git a/packages/core/src/reducers/createActivitiesReducer.ts b/packages/core/src/reducers/createActivitiesReducer.ts
index 4cd7a2ab79..4b0f1c78f3 100644
--- a/packages/core/src/reducers/createActivitiesReducer.ts
+++ b/packages/core/src/reducers/createActivitiesReducer.ts
@@ -15,18 +15,18 @@ import { SENDING, SEND_FAILED, SENT } from '../types/internal/SendStatus';
import getActivityLivestreamingMetadata from '../utils/getActivityLivestreamingMetadata';
import findBeforeAfter from './private/findBeforeAfter';
-import type { Reducer } from 'redux';
-import type { DeleteActivityAction } from '../actions/deleteActivity';
-import type { IncomingActivityAction } from '../actions/incomingActivity';
-import type { MarkActivityAction } from '../actions/markActivity';
-import type {
- PostActivityFulfilledAction,
- PostActivityImpededAction,
- PostActivityPendingAction,
- PostActivityRejectedAction
+import { type Reducer } from 'redux';
+import { type DeleteActivityAction } from '../actions/deleteActivity';
+import { type IncomingActivityAction } from '../actions/incomingActivity';
+import { type MarkActivityAction } from '../actions/markActivity';
+import {
+ type PostActivityFulfilledAction,
+ type PostActivityImpededAction,
+ type PostActivityPendingAction,
+ type PostActivityRejectedAction
} from '../actions/postActivity';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type WebChatActivity } from '../types/WebChatActivity';
type ActivitiesAction =
| DeleteActivityAction
diff --git a/packages/core/src/reducers/createInternalReducer.ts b/packages/core/src/reducers/createInternalReducer.ts
index e29db5e365..ad3630fcbc 100644
--- a/packages/core/src/reducers/createInternalReducer.ts
+++ b/packages/core/src/reducers/createInternalReducer.ts
@@ -1,4 +1,4 @@
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
/**
* Creates a Redux reducer to store the ponyfill.
diff --git a/packages/core/src/reducers/createNotificationsReducer.ts b/packages/core/src/reducers/createNotificationsReducer.ts
index 721b87e900..8734d85087 100644
--- a/packages/core/src/reducers/createNotificationsReducer.ts
+++ b/packages/core/src/reducers/createNotificationsReducer.ts
@@ -5,12 +5,12 @@ import { SAGA_ERROR } from '../actions/sagaError';
import { SET_NOTIFICATION } from '../actions/setNotification';
import isForbiddenPropertyName from '../utils/isForbiddenPropertyName';
-import type { DismissNotificationAction } from '../actions/dismissNotification';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
-import type { Notification } from '../types/internal/Notification';
-import type { Reducer } from 'redux';
-import type { SagaErrorAction } from '../actions/sagaError';
-import type { SetNotificationAction } from '../actions/setNotification';
+import { type DismissNotificationAction } from '../actions/dismissNotification';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type Notification } from '../types/internal/Notification';
+import { type Reducer } from 'redux';
+import { type SagaErrorAction } from '../actions/sagaError';
+import { type SetNotificationAction } from '../actions/setNotification';
type NotificationsAction = DismissNotificationAction | SagaErrorAction | SetNotificationAction;
type NotificationsState = Record;
diff --git a/packages/core/src/reducers/createTypingReducer.ts b/packages/core/src/reducers/createTypingReducer.ts
index 54fc11a078..9c85a39c94 100644
--- a/packages/core/src/reducers/createTypingReducer.ts
+++ b/packages/core/src/reducers/createTypingReducer.ts
@@ -6,10 +6,10 @@ import updateIn from 'simple-update-in';
import { INCOMING_ACTIVITY } from '../actions/incomingActivity';
import { POST_ACTIVITY_PENDING } from '../actions/postActivity';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
-import type { IncomingActivityAction } from '../actions/incomingActivity';
-import type { PostActivityPendingAction } from '../actions/postActivity';
-import type { Reducer } from 'redux';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type IncomingActivityAction } from '../actions/incomingActivity';
+import { type PostActivityPendingAction } from '../actions/postActivity';
+import { type Reducer } from 'redux';
type TypingState = Record<
string,
diff --git a/packages/core/src/reducers/sendBoxAttachments.ts b/packages/core/src/reducers/sendBoxAttachments.ts
index 7a8f929532..f8229e4d5e 100644
--- a/packages/core/src/reducers/sendBoxAttachments.ts
+++ b/packages/core/src/reducers/sendBoxAttachments.ts
@@ -1,5 +1,5 @@
import { SET_SEND_BOX_ATTACHMENTS } from '../actions/setSendBoxAttachments';
-import type { SendBoxAttachment } from '../types/SendBoxAttachment';
+import { type SendBoxAttachment } from '../types/SendBoxAttachment';
const DEFAULT_STATE: readonly SendBoxAttachment[] = Object.freeze([]);
diff --git a/packages/core/src/reducers/suggestedActionsOriginActivity.ts b/packages/core/src/reducers/suggestedActionsOriginActivity.ts
index 8b2d06cd10..461292942b 100644
--- a/packages/core/src/reducers/suggestedActionsOriginActivity.ts
+++ b/packages/core/src/reducers/suggestedActionsOriginActivity.ts
@@ -2,7 +2,7 @@ import type clearSuggestedActions from '../actions/clearSuggestedActions';
import { CLEAR_SUGGESTED_ACTIONS } from '../actions/clearSuggestedActions';
import type setSuggestedActions from '../actions/setSuggestedActions';
import { SET_SUGGESTED_ACTIONS } from '../actions/setSuggestedActions';
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type WebChatActivity } from '../types/WebChatActivity';
type ClearSuggestedActions = ReturnType;
type SetSuggestedActions = ReturnType;
diff --git a/packages/core/src/sagas/detectSlowConnectionSaga.ts b/packages/core/src/sagas/detectSlowConnectionSaga.ts
index c26ed176a3..1899d65880 100644
--- a/packages/core/src/sagas/detectSlowConnectionSaga.ts
+++ b/packages/core/src/sagas/detectSlowConnectionSaga.ts
@@ -4,7 +4,7 @@ import { CONNECT_FULFILLED, CONNECT_PENDING, CONNECT_REJECTED, CONNECT_STILL_PEN
import { RECONNECT_FULFILLED, RECONNECT_PENDING, RECONNECT_REJECTED } from '../actions/reconnect';
import sleep from '../utils/sleep';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
const SLOW_CONNECTION_AFTER = 15000;
diff --git a/packages/core/src/sagas/effects/observeOnce.ts b/packages/core/src/sagas/effects/observeOnce.ts
index 2bd8128bb8..32a3dc67b1 100644
--- a/packages/core/src/sagas/effects/observeOnce.ts
+++ b/packages/core/src/sagas/effects/observeOnce.ts
@@ -1,6 +1,6 @@
import { call } from 'redux-saga/effects';
-import { Observable, Observer, Subscription } from '../../types/external/Observable';
+import { type Observable, type Observer, type Subscription } from '../../types/external/Observable';
export default function observeOnceEffect(observable: Observable) {
return call(function* observeOnce() {
diff --git a/packages/core/src/sagas/effects/whileConnected.ts b/packages/core/src/sagas/effects/whileConnected.ts
index d14909a480..37c03a701b 100644
--- a/packages/core/src/sagas/effects/whileConnected.ts
+++ b/packages/core/src/sagas/effects/whileConnected.ts
@@ -4,7 +4,7 @@ import { CONNECT_FULFILLING } from '../../actions/connect';
import { DISCONNECT_PENDING } from '../../actions/disconnect';
import { RECONNECT_PENDING, RECONNECT_FULFILLING } from '../../actions/reconnect';
-import type { DirectLineJSBotConnection } from '../../types/external/DirectLineJSBotConnection';
+import { type DirectLineJSBotConnection } from '../../types/external/DirectLineJSBotConnection';
export default function whileConnectedEffect(
fn: (
diff --git a/packages/core/src/sagas/observeActivitySaga.ts b/packages/core/src/sagas/observeActivitySaga.ts
index 3378c4c655..db93dcd029 100644
--- a/packages/core/src/sagas/observeActivitySaga.ts
+++ b/packages/core/src/sagas/observeActivitySaga.ts
@@ -4,9 +4,9 @@ import updateIn from 'simple-update-in';
import observeEach from './effects/observeEach';
import queueIncomingActivity from '../actions/queueIncomingActivity';
import whileConnected from './effects/whileConnected';
-import type { DirectLineActivity } from '../types/external/DirectLineActivity';
-import type { DirectLineJSBotConnection } from '../types/external/DirectLineJSBotConnection';
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type DirectLineActivity } from '../types/external/DirectLineActivity';
+import { type DirectLineJSBotConnection } from '../types/external/DirectLineJSBotConnection';
+import { type WebChatActivity } from '../types/WebChatActivity';
const PASSTHRU_FN = (value: unknown) => value;
diff --git a/packages/core/src/sagas/postActivitySaga.ts b/packages/core/src/sagas/postActivitySaga.ts
index 7bf8ab2e9b..17588b237d 100644
--- a/packages/core/src/sagas/postActivitySaga.ts
+++ b/packages/core/src/sagas/postActivitySaga.ts
@@ -17,19 +17,19 @@ import sleep from '../utils/sleep';
import uniqueID from '../utils/uniqueID';
import whileConnected from './effects/whileConnected';
-import type { DirectLineActivity } from '../types/external/DirectLineActivity';
-import type { DirectLineJSBotConnection } from '../types/external/DirectLineJSBotConnection';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
-import type { IncomingActivityAction } from '../actions/incomingActivity';
-import type {
- PostActivityAction,
- PostActivityFulfilledAction,
- PostActivityImpededAction,
- PostActivityPendingAction,
- PostActivityRejectedAction
+import { type DirectLineActivity } from '../types/external/DirectLineActivity';
+import { type DirectLineJSBotConnection } from '../types/external/DirectLineJSBotConnection';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type IncomingActivityAction } from '../actions/incomingActivity';
+import {
+ type PostActivityAction,
+ type PostActivityFulfilledAction,
+ type PostActivityImpededAction,
+ type PostActivityPendingAction,
+ type PostActivityRejectedAction
} from '../actions/postActivity';
-import type { WebChatActivity } from '../types/WebChatActivity';
-import type { WebChatOutgoingActivity } from '../types/internal/WebChatOutgoingActivity';
+import { type WebChatActivity } from '../types/WebChatActivity';
+import { type WebChatOutgoingActivity } from '../types/internal/WebChatOutgoingActivity';
// After 5 minutes, the saga will stop from listening for echo backs and consider the outgoing message as permanently undeliverable.
// This value must be equals to or larger than the user-defined `styleOptions.sendTimeout`.
diff --git a/packages/core/src/sagas/queueIncomingActivitySaga.ts b/packages/core/src/sagas/queueIncomingActivitySaga.ts
index 88717edc3e..8a25455d6f 100644
--- a/packages/core/src/sagas/queueIncomingActivitySaga.ts
+++ b/packages/core/src/sagas/queueIncomingActivitySaga.ts
@@ -8,7 +8,7 @@ import activitiesSelector, { ofType as activitiesOfType } from '../selectors/act
import sleep from '../utils/sleep';
import whileConnected from './effects/whileConnected';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
// We will hold up the replying activity if the originating activity did not arrive, up to 5 seconds.
const REPLY_TIMEOUT = 5000;
diff --git a/packages/core/src/sagas/sendMessageToPostActivitySaga.ts b/packages/core/src/sagas/sendMessageToPostActivitySaga.ts
index a72bff526e..04128fd5f1 100644
--- a/packages/core/src/sagas/sendMessageToPostActivitySaga.ts
+++ b/packages/core/src/sagas/sendMessageToPostActivitySaga.ts
@@ -1,7 +1,8 @@
import { put, takeEvery } from 'redux-saga/effects';
import postActivity from '../actions/postActivity';
-import sendMessage, { SEND_MESSAGE } from '../actions/sendMessage';
+import type sendMessage from '../actions/sendMessage';
+import { SEND_MESSAGE } from '../actions/sendMessage';
import whileConnected from './effects/whileConnected';
function* postActivityWithMessage({
diff --git a/packages/core/src/sagas/sendTypingIndicatorOnSetSendBoxSaga.ts b/packages/core/src/sagas/sendTypingIndicatorOnSetSendBoxSaga.ts
index e520203034..5ccb37c620 100644
--- a/packages/core/src/sagas/sendTypingIndicatorOnSetSendBoxSaga.ts
+++ b/packages/core/src/sagas/sendTypingIndicatorOnSetSendBoxSaga.ts
@@ -11,7 +11,7 @@ import sendTypingIndicatorSelector from '../selectors/sendTypingIndicator';
import sleep from '../utils/sleep';
import whileConnected from './effects/whileConnected';
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
import type setSendTypingIndicator from '../actions/setSendTypingIndicator';
type SetSendTypingIndicatorAction = ReturnType;
diff --git a/packages/core/src/selectors/activities.ts b/packages/core/src/selectors/activities.ts
index de6216f2dd..c82b433163 100644
--- a/packages/core/src/selectors/activities.ts
+++ b/packages/core/src/selectors/activities.ts
@@ -1,5 +1,5 @@
-import type { ReduxState } from '../types/internal/ReduxState';
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type ReduxState } from '../types/internal/ReduxState';
+import { type WebChatActivity } from '../types/WebChatActivity';
const activities = ({ activities }: ReduxState) => activities;
diff --git a/packages/core/src/selectors/dictateState.ts b/packages/core/src/selectors/dictateState.ts
index bedd660204..57e3a2aef5 100644
--- a/packages/core/src/selectors/dictateState.ts
+++ b/packages/core/src/selectors/dictateState.ts
@@ -1,3 +1,3 @@
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type ReduxState } from '../types/internal/ReduxState';
export default ({ dictateState }: ReduxState) => dictateState;
diff --git a/packages/core/src/selectors/language.ts b/packages/core/src/selectors/language.ts
index 9e30077f4f..bb68007ded 100644
--- a/packages/core/src/selectors/language.ts
+++ b/packages/core/src/selectors/language.ts
@@ -1,3 +1,3 @@
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type ReduxState } from '../types/internal/ReduxState';
export default ({ language }: ReduxState): string => language;
diff --git a/packages/core/src/selectors/notifications.ts b/packages/core/src/selectors/notifications.ts
index 870e4ebfc2..52fc278de9 100644
--- a/packages/core/src/selectors/notifications.ts
+++ b/packages/core/src/selectors/notifications.ts
@@ -1,5 +1,5 @@
-import type { Notification } from '../types/internal/Notification';
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type Notification } from '../types/internal/Notification';
+import { type ReduxState } from '../types/internal/ReduxState';
const notifications = ({ notifications }: ReduxState): { [key: string]: Notification } => notifications;
diff --git a/packages/core/src/selectors/sendBoxAttachments.ts b/packages/core/src/selectors/sendBoxAttachments.ts
index c5ee850382..35bbb4a86f 100644
--- a/packages/core/src/selectors/sendBoxAttachments.ts
+++ b/packages/core/src/selectors/sendBoxAttachments.ts
@@ -1,5 +1,5 @@
-import type { SendBoxAttachment } from '../types/SendBoxAttachment';
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type SendBoxAttachment } from '../types/SendBoxAttachment';
+import { type ReduxState } from '../types/internal/ReduxState';
export default function sendBoxAttachments({ sendBoxAttachments }: ReduxState): readonly SendBoxAttachment[] {
return sendBoxAttachments;
diff --git a/packages/core/src/selectors/sendBoxValue.ts b/packages/core/src/selectors/sendBoxValue.ts
index f36589141a..54bd94fe17 100644
--- a/packages/core/src/selectors/sendBoxValue.ts
+++ b/packages/core/src/selectors/sendBoxValue.ts
@@ -1,3 +1,3 @@
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type ReduxState } from '../types/internal/ReduxState';
export default ({ sendBoxValue }: ReduxState): string => sendBoxValue;
diff --git a/packages/core/src/selectors/sendTimeout.ts b/packages/core/src/selectors/sendTimeout.ts
index c85c3adeed..ffe3a72a77 100644
--- a/packages/core/src/selectors/sendTimeout.ts
+++ b/packages/core/src/selectors/sendTimeout.ts
@@ -1,3 +1,3 @@
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type ReduxState } from '../types/internal/ReduxState';
export default ({ sendTimeout }: ReduxState): number => sendTimeout;
diff --git a/packages/core/src/selectors/sendTypingIndicator.ts b/packages/core/src/selectors/sendTypingIndicator.ts
index c5b5da10a9..23b2657e73 100644
--- a/packages/core/src/selectors/sendTypingIndicator.ts
+++ b/packages/core/src/selectors/sendTypingIndicator.ts
@@ -1,3 +1,3 @@
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type ReduxState } from '../types/internal/ReduxState';
export default ({ sendTypingIndicator }: ReduxState): boolean => sendTypingIndicator;
diff --git a/packages/core/src/selectors/shouldSpeakIncomingActivity.ts b/packages/core/src/selectors/shouldSpeakIncomingActivity.ts
index a67140a995..b9e15ad034 100644
--- a/packages/core/src/selectors/shouldSpeakIncomingActivity.ts
+++ b/packages/core/src/selectors/shouldSpeakIncomingActivity.ts
@@ -1,3 +1,3 @@
-import type { ReduxState } from '../types/internal/ReduxState';
+import { type ReduxState } from '../types/internal/ReduxState';
export default ({ shouldSpeakIncomingActivity }: ReduxState): boolean => shouldSpeakIncomingActivity;
diff --git a/packages/core/src/types/GlobalScopePonyfill.ts b/packages/core/src/types/GlobalScopePonyfill.ts
index 22259db08b..300c3efb0e 100644
--- a/packages/core/src/types/GlobalScopePonyfill.ts
+++ b/packages/core/src/types/GlobalScopePonyfill.ts
@@ -1,4 +1,4 @@
-import type { GlobalScopeClock } from './internal/GlobalScopeClock';
+import { type GlobalScopeClock } from './internal/GlobalScopeClock';
// TODO: Should we rename this to "globalThisOverrides"?
diff --git a/packages/core/src/types/WebChatActivity.ts b/packages/core/src/types/WebChatActivity.ts
index f67fe08b47..27efe56c38 100644
--- a/packages/core/src/types/WebChatActivity.ts
+++ b/packages/core/src/types/WebChatActivity.ts
@@ -7,10 +7,10 @@
// - However, we do not expect the server to return "localTimestamp" as they may not have capability to store this information
// - "conversationUpdate" activity is never sent to Web Chat, thus, it is not defined
-import type { AnyAnd } from './AnyAnd';
-// import type { AsEntity, Thing } from './external/OrgSchema/Thing';
-import type { DirectLineAttachment } from './external/DirectLineAttachment';
-import type { DirectLineSuggestedAction } from './external/DirectLineSuggestedAction';
+import { type AnyAnd } from './AnyAnd';
+// import { type AsEntity, Thing } from './external/OrgSchema/Thing';
+import { type DirectLineAttachment } from './external/DirectLineAttachment';
+import { type DirectLineSuggestedAction } from './external/DirectLineSuggestedAction';
type SupportedRole = 'bot' | 'channel' | 'user';
type SupportedSendStatus = 'sending' | 'send failed' | 'sent';
diff --git a/packages/core/src/types/external/DirectLineAnimationCard.ts b/packages/core/src/types/external/DirectLineAnimationCard.ts
index 37e5e3f9c1..39035d24fb 100644
--- a/packages/core/src/types/external/DirectLineAnimationCard.ts
+++ b/packages/core/src/types/external/DirectLineAnimationCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineMediaCardEssence } from './DirectLineMediaCardEssence';
+import { type DirectLineMediaCardEssence } from './DirectLineMediaCardEssence';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#Animation-card
type DirectLineAnimationCard = DirectLineMediaCardEssence & {
diff --git a/packages/core/src/types/external/DirectLineAudioCard.ts b/packages/core/src/types/external/DirectLineAudioCard.ts
index 78ddeb876d..06e63162e3 100644
--- a/packages/core/src/types/external/DirectLineAudioCard.ts
+++ b/packages/core/src/types/external/DirectLineAudioCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineMediaCardEssence } from './DirectLineMediaCardEssence';
+import { type DirectLineMediaCardEssence } from './DirectLineMediaCardEssence';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#audio-card
type DirectLineAudioCard = DirectLineMediaCardEssence & {
diff --git a/packages/core/src/types/external/DirectLineBasicCardEssence.ts b/packages/core/src/types/external/DirectLineBasicCardEssence.ts
index 81041df4ca..6c0e1eba3c 100644
--- a/packages/core/src/types/external/DirectLineBasicCardEssence.ts
+++ b/packages/core/src/types/external/DirectLineBasicCardEssence.ts
@@ -1,5 +1,5 @@
-import type { DirectLineCardImage } from './DirectLineCardImage';
-import type { DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardImage } from './DirectLineCardImage';
+import { type DirectLineCardAction } from './DirectLineCardAction';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#basic-cards
type DirectLineBasicCardEssence = {
diff --git a/packages/core/src/types/external/DirectLineCardImage.ts b/packages/core/src/types/external/DirectLineCardImage.ts
index 83ff6cffa4..437ee69705 100644
--- a/packages/core/src/types/external/DirectLineCardImage.ts
+++ b/packages/core/src/types/external/DirectLineCardImage.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardAction } from './DirectLineCardAction';
type DirectLineCardImage = {
alt: string;
diff --git a/packages/core/src/types/external/DirectLineHeroCard.ts b/packages/core/src/types/external/DirectLineHeroCard.ts
index db52924f3c..672192898b 100644
--- a/packages/core/src/types/external/DirectLineHeroCard.ts
+++ b/packages/core/src/types/external/DirectLineHeroCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineBasicCardEssence } from './DirectLineBasicCardEssence';
+import { type DirectLineBasicCardEssence } from './DirectLineBasicCardEssence';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#Hero-cards
type DirectLineHeroCard = DirectLineBasicCardEssence & {
diff --git a/packages/core/src/types/external/DirectLineMediaCardEssence.ts b/packages/core/src/types/external/DirectLineMediaCardEssence.ts
index 30831bf851..f5b5d29b01 100644
--- a/packages/core/src/types/external/DirectLineMediaCardEssence.ts
+++ b/packages/core/src/types/external/DirectLineMediaCardEssence.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardAction } from './DirectLineCardAction';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#media-cards
type DirectLineMediaCardEssence = {
diff --git a/packages/core/src/types/external/DirectLineOAuthCard.ts b/packages/core/src/types/external/DirectLineOAuthCard.ts
index bd5665b458..40df55d546 100644
--- a/packages/core/src/types/external/DirectLineOAuthCard.ts
+++ b/packages/core/src/types/external/DirectLineOAuthCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardAction } from './DirectLineCardAction';
type DirectLineOAuthCard = {
buttons?: DirectLineCardAction[];
diff --git a/packages/core/src/types/external/DirectLineReceiptCard.ts b/packages/core/src/types/external/DirectLineReceiptCard.ts
index b6afeefce9..372dccba74 100644
--- a/packages/core/src/types/external/DirectLineReceiptCard.ts
+++ b/packages/core/src/types/external/DirectLineReceiptCard.ts
@@ -1,5 +1,5 @@
-import type { DirectLineCardAction } from './DirectLineCardAction';
-import type { DirectLineCardImage } from './DirectLineCardImage';
+import { type DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardImage } from './DirectLineCardImage';
type Fact = {
key?: string;
diff --git a/packages/core/src/types/external/DirectLineSignInCard.ts b/packages/core/src/types/external/DirectLineSignInCard.ts
index 4871cebbbe..c7070a827c 100644
--- a/packages/core/src/types/external/DirectLineSignInCard.ts
+++ b/packages/core/src/types/external/DirectLineSignInCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardAction } from './DirectLineCardAction';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#Signin-card
type DirectLineSignInCard = {
diff --git a/packages/core/src/types/external/DirectLineSuggestedAction.ts b/packages/core/src/types/external/DirectLineSuggestedAction.ts
index 275bd241a1..9f7da2e01a 100644
--- a/packages/core/src/types/external/DirectLineSuggestedAction.ts
+++ b/packages/core/src/types/external/DirectLineSuggestedAction.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from './DirectLineCardAction';
+import { type DirectLineCardAction } from './DirectLineCardAction';
type DirectLineSuggestedAction = {
actions?: DirectLineCardAction[];
diff --git a/packages/core/src/types/external/DirectLineThumbnailCard.ts b/packages/core/src/types/external/DirectLineThumbnailCard.ts
index d3d157908d..fbdea22585 100644
--- a/packages/core/src/types/external/DirectLineThumbnailCard.ts
+++ b/packages/core/src/types/external/DirectLineThumbnailCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineBasicCardEssence } from './DirectLineBasicCardEssence';
+import { type DirectLineBasicCardEssence } from './DirectLineBasicCardEssence';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#Thumbnail-cards
type DirectLineThumbnailCard = DirectLineBasicCardEssence & {
diff --git a/packages/core/src/types/external/DirectLineVideoCard.ts b/packages/core/src/types/external/DirectLineVideoCard.ts
index 98ba1369b1..c28229463e 100644
--- a/packages/core/src/types/external/DirectLineVideoCard.ts
+++ b/packages/core/src/types/external/DirectLineVideoCard.ts
@@ -1,4 +1,4 @@
-import type { DirectLineMediaCardEssence } from './DirectLineMediaCardEssence';
+import { type DirectLineMediaCardEssence } from './DirectLineMediaCardEssence';
// https://github.com/microsoft/botframework-sdk/blob/master/specs/botframework-activity/botframework-cards.md#video-card
type DirectLineVideoCard = DirectLineMediaCardEssence & {
diff --git a/packages/core/src/types/internal/ReduxState.ts b/packages/core/src/types/internal/ReduxState.ts
index a3c00c16d5..b98983be4f 100644
--- a/packages/core/src/types/internal/ReduxState.ts
+++ b/packages/core/src/types/internal/ReduxState.ts
@@ -1,6 +1,6 @@
import type sendBoxAttachments from '../../reducers/sendBoxAttachments';
-import type { WebChatActivity } from '../WebChatActivity';
-import type { Notification } from './Notification';
+import { type WebChatActivity } from '../WebChatActivity';
+import { type Notification } from './Notification';
// TODO: Should build this using typings of createReducer.
type ReduxState = {
diff --git a/packages/core/src/utils/getActivityLivestreamingMetadata.spec.ts b/packages/core/src/utils/getActivityLivestreamingMetadata.spec.ts
index 739b1cac50..22949ff76e 100644
--- a/packages/core/src/utils/getActivityLivestreamingMetadata.spec.ts
+++ b/packages/core/src/utils/getActivityLivestreamingMetadata.spec.ts
@@ -1,4 +1,4 @@
-import type { WebChatActivity } from '../types/WebChatActivity';
+import { type WebChatActivity } from '../types/WebChatActivity';
import getActivityLivestreamingMetadata from './getActivityLivestreamingMetadata';
describe.each([['with "streamId"' as const], ['without "streamId"' as const]])('activity %s', variant => {
diff --git a/packages/core/src/utils/sleep.ts b/packages/core/src/utils/sleep.ts
index c4c1430d22..1154c1f660 100644
--- a/packages/core/src/utils/sleep.ts
+++ b/packages/core/src/utils/sleep.ts
@@ -1,4 +1,4 @@
-import type { GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
+import { type GlobalScopePonyfill } from '../types/GlobalScopePonyfill';
export default function sleep(interval: number, ponyfill: GlobalScopePonyfill): Promise {
return new Promise(resolve => ponyfill.setTimeout(resolve, Math.max(interval, 0)));
diff --git a/packages/fluent-theme/src/components/activity/ActivityDecorator.tsx b/packages/fluent-theme/src/components/activity/ActivityDecorator.tsx
index 22a3bdc63c..919799bfdf 100644
--- a/packages/fluent-theme/src/components/activity/ActivityDecorator.tsx
+++ b/packages/fluent-theme/src/components/activity/ActivityDecorator.tsx
@@ -1,6 +1,6 @@
-import { WebChatActivity } from 'botframework-webchat-component';
+import { type WebChatActivity } from 'botframework-webchat-component';
import cx from 'classnames';
-import React, { ReactNode, memo } from 'react';
+import React, { type ReactNode, memo } from 'react';
import useVariants from '../../private/useVariants';
import { useStyles, useVariantClassName } from '../../styles';
import styles from './ActivityDecorator.module.css';
diff --git a/packages/fluent-theme/src/components/activity/CopilotMessageHeader.tsx b/packages/fluent-theme/src/components/activity/CopilotMessageHeader.tsx
index 51ef3e6688..b4e16e85e4 100644
--- a/packages/fluent-theme/src/components/activity/CopilotMessageHeader.tsx
+++ b/packages/fluent-theme/src/components/activity/CopilotMessageHeader.tsx
@@ -1,5 +1,5 @@
import React, { memo, useMemo, type CSSProperties } from 'react';
-import { WebChatActivity, hooks } from 'botframework-webchat-component';
+import { type WebChatActivity, hooks } from 'botframework-webchat-component';
import useActivityStyleOptions from './private/useActivityStyleOptions';
import isAIGeneratedActivity from './private/isAIGeneratedActivity';
diff --git a/packages/fluent-theme/src/components/suggestedActions/AccessibleButton.tsx b/packages/fluent-theme/src/components/suggestedActions/AccessibleButton.tsx
index fb9039f689..148793f3ff 100644
--- a/packages/fluent-theme/src/components/suggestedActions/AccessibleButton.tsx
+++ b/packages/fluent-theme/src/components/suggestedActions/AccessibleButton.tsx
@@ -1,4 +1,4 @@
-import React, { MouseEventHandler, ReactNode, forwardRef, memo, useRef } from 'react';
+import React, { type MouseEventHandler, type ReactNode, forwardRef, memo, useRef } from 'react';
const preventDefaultHandler: MouseEventHandler = event => event.preventDefault();
diff --git a/packages/fluent-theme/src/components/suggestedActions/SuggestedAction.tsx b/packages/fluent-theme/src/components/suggestedActions/SuggestedAction.tsx
index d51b43229a..81e5652f93 100644
--- a/packages/fluent-theme/src/components/suggestedActions/SuggestedAction.tsx
+++ b/packages/fluent-theme/src/components/suggestedActions/SuggestedAction.tsx
@@ -1,7 +1,7 @@
import { hooks } from 'botframework-webchat-component';
import { type DirectLineCardAction } from 'botframework-webchat-core';
import cx from 'classnames';
-import React, { MouseEventHandler, memo, useCallback } from 'react';
+import React, { type MouseEventHandler, memo, useCallback } from 'react';
import { useStyles } from '../../styles';
import testIds from '../../testIds';
diff --git a/packages/fluent-theme/src/components/suggestedActions/private/computeSuggestedActionText.ts b/packages/fluent-theme/src/components/suggestedActions/private/computeSuggestedActionText.ts
index 9f4c604224..bc07a9ee75 100644
--- a/packages/fluent-theme/src/components/suggestedActions/private/computeSuggestedActionText.ts
+++ b/packages/fluent-theme/src/components/suggestedActions/private/computeSuggestedActionText.ts
@@ -1,4 +1,4 @@
-import type { DirectLineCardAction } from 'botframework-webchat-core';
+import { type DirectLineCardAction } from 'botframework-webchat-core';
// Please refer to this article to find out how to compute the "button text" for suggested action.
// https://github.com/Microsoft/botframework-sdk/blob/main/specs/botframework-activity/botframework-activity.md#card-action
diff --git a/packages/fluent-theme/src/components/suggestedActions/private/rovingFocus.tsx b/packages/fluent-theme/src/components/suggestedActions/private/rovingFocus.tsx
index b604a9a452..3b867e7576 100644
--- a/packages/fluent-theme/src/components/suggestedActions/private/rovingFocus.tsx
+++ b/packages/fluent-theme/src/components/suggestedActions/private/rovingFocus.tsx
@@ -1,13 +1,13 @@
/* eslint-disable no-magic-numbers */
import React, {
- type MutableRefObject,
createContext,
memo,
useCallback,
useContext,
useEffect,
useMemo,
- useRef
+ useRef,
+ type MutableRefObject
} from 'react';
type ItemRef = MutableRefObject;
diff --git a/packages/fluent-theme/src/components/telephoneKeypad/Surrogate.tsx b/packages/fluent-theme/src/components/telephoneKeypad/Surrogate.tsx
index 3f6584d016..4f803334cb 100644
--- a/packages/fluent-theme/src/components/telephoneKeypad/Surrogate.tsx
+++ b/packages/fluent-theme/src/components/telephoneKeypad/Surrogate.tsx
@@ -1,6 +1,6 @@
import React, { memo } from 'react';
-import type { PropsOf } from '../../types';
+import { type PropsOf } from '../../types';
import TelephoneKeypad from './private/TelephoneKeypad';
import useShown from './useShown';
diff --git a/packages/fluent-theme/src/private/FluentThemeProvider.tsx b/packages/fluent-theme/src/private/FluentThemeProvider.tsx
index 7c1fcdfa6d..58a96e4e77 100644
--- a/packages/fluent-theme/src/private/FluentThemeProvider.tsx
+++ b/packages/fluent-theme/src/private/FluentThemeProvider.tsx
@@ -1,4 +1,4 @@
-import type { ActivityMiddleware } from 'botframework-webchat-api';
+import { type ActivityMiddleware } from 'botframework-webchat-api';
import { Components } from 'botframework-webchat-component';
import { WebChatDecorator } from 'botframework-webchat-component/decorator';
import React, { memo, type ReactNode } from 'react';
@@ -9,7 +9,7 @@ import { PrimarySendBox } from '../components/sendBox';
import { TelephoneKeypadProvider } from '../components/telephoneKeypad';
import { WebChatTheme } from '../components/theme';
import { createStyles } from '../styles';
-import VariantComposer, { VariantList } from './VariantComposer';
+import VariantComposer, { type VariantList } from './VariantComposer';
import { isLinerMessageActivity, LinerMessageActivity } from '../components/linerActivity';
const { ThemeProvider } = Components;
diff --git a/packages/styles/src/build/private/injectCSSPlugin.ts b/packages/styles/src/build/private/injectCSSPlugin.ts
index b6957f5ecd..3615f00fc8 100644
--- a/packages/styles/src/build/private/injectCSSPlugin.ts
+++ b/packages/styles/src/build/private/injectCSSPlugin.ts
@@ -1,5 +1,5 @@
import { decode, encode } from '@jridgewell/sourcemap-codec';
-import type { Plugin } from 'esbuild';
+import { type Plugin } from 'esbuild';
export interface InjectCSSPluginOptions {
stylesPlaceholder: string;
diff --git a/samples/01.getting-started/l.sharepoint-web-part/README.md b/samples/01.getting-started/l.sharepoint-web-part/README.md
index d00b48a455..5193ccbd4a 100644
--- a/samples/01.getting-started/l.sharepoint-web-part/README.md
+++ b/samples/01.getting-started/l.sharepoint-web-part/README.md
@@ -109,16 +109,14 @@ The component code is being replaced by a React function component. It connects
```ts
-import { useEffect, useState } from 'react';
-import * as React from 'react';
+import React, { type ReactNode, useEffect, useState } from 'react';
import ReactWebChat, { createDirectLine, createDirectLineAppServiceExtension } from 'botframework-webchat';
import { IWebChatProps } from './IWebChatProps';
import styles from './WebChat.module.scss';
-import type { VFC } from 'react';
-const WebChat: VFC = ({ domain, token }) => {
+const WebChat = ({ domain, token }: IWebChatProps): ReactNode => {
const [directLine, setDirectLine] = useState();
useEffect(() => {
diff --git a/samples/01.getting-started/l.sharepoint-web-part/src/spfx/src/webparts/webChat/components/WebChat.tsx b/samples/01.getting-started/l.sharepoint-web-part/src/spfx/src/webparts/webChat/components/WebChat.tsx
index e5339a54de..2a27b8dbd5 100644
--- a/samples/01.getting-started/l.sharepoint-web-part/src/spfx/src/webparts/webChat/components/WebChat.tsx
+++ b/samples/01.getting-started/l.sharepoint-web-part/src/spfx/src/webparts/webChat/components/WebChat.tsx
@@ -1,13 +1,10 @@
-import { useEffect, useState } from 'react';
-import * as React from 'react';
+import React, { type ReactNode, useEffect, useState } from 'react';
import ReactWebChat, { createDirectLine, createDirectLineAppServiceExtension } from 'botframework-webchat';
import { IWebChatProps } from './IWebChatProps';
import styles from './WebChat.module.scss';
-import type { VFC } from 'react';
-
-const WebChat: VFC = ({ domain, token }) => {
+const WebChat = ({ domain, token }: IWebChatProps) => {
const [directLine, setDirectLine] = useState();
useEffect(() => {