-
- {withIcons[type] &&
}
-
-
);
};
-Flashes.propTypes = {
- flashes: T.shape({ items: T.arrayOf(T.shape(FlashT)) }),
-};
-
-const BackendFlashes = ({ flashes }) => {
+const BackendFlashes = ({ flashes }: BackendFlashesProps) => {
useEffect(() => {
const transformedFlashes =
flashes.map((flash) => {
@@ -183,14 +223,12 @@ const BackendFlashes = ({ flashes }) => {
}
}, []);
- const WrappedFlashes = ConnectStateWrapper(Flashes, { flashes: selectFlashes });
+ const WrappedFlashes = ConnectStateWrapper(Flashes, {
+ flashes: selectFlashes,
+ });
return
;
};
-BackendFlashes.propTypes = {
- flashes: T.arrayOf(T.arrayOf(T.string)),
-};
-
export { reducerFlashes, FLASH_DATA_ID, Flashes };
export default BackendFlashes;
diff --git a/src/core/Footer/Footer.stories.tsx b/src/core/Footer/Footer.stories.tsx
index 8de0e823f..c1e091a37 100644
--- a/src/core/Footer/Footer.stories.tsx
+++ b/src/core/Footer/Footer.stories.tsx
@@ -1,4 +1,4 @@
-import Footer from "./component.jsx";
+import Footer from "./component.tsx";
import ablyStack from "../images/ably-stack.svg";
import highestPerformer from "../images/high-performer-2023.svg";
diff --git a/src/core/Footer/component.jsx b/src/core/Footer/component.tsx
similarity index 58%
rename from src/core/Footer/component.jsx
rename to src/core/Footer/component.tsx
index 1f3a061e5..4ba85af2b 100644
--- a/src/core/Footer/component.jsx
+++ b/src/core/Footer/component.tsx
@@ -1,45 +1,77 @@
import React from "react";
-import T from "prop-types";
-import Icon from "../Icon/component.jsx";
-import _absUrl from "../url-base";
+import Icon from "../Icon/component.tsx";
+import _absUrl from "../url-base.js";
import "./component.css";
-export default function Footer({ paths, urlBase }) {
+type FooterProps = {
+ paths: {
+ ablyStack: string;
+ highestPerformer: string;
+ highestUserAdoption: string;
+ bestSupport: string;
+ fastestImplementation: string;
+ };
+ urlBase: string;
+};
+
+const Footer = ({ paths, urlBase }: FooterProps) => {
const absUrl = (path) => _absUrl(path, urlBase);
return (
-