diff --git a/app/soapbox/features/compose/components/text_icon_button.js b/app/soapbox/features/compose/components/text_icon_button.js
deleted file mode 100644
index 1ca71fe6f..000000000
--- a/app/soapbox/features/compose/components/text_icon_button.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import PropTypes from 'prop-types';
-import React from 'react';
-
-export default class TextIconButton extends React.PureComponent {
-
- static propTypes = {
- label: PropTypes.string.isRequired,
- title: PropTypes.string,
- active: PropTypes.bool,
- onClick: PropTypes.func.isRequired,
- ariaControls: PropTypes.string,
- unavailable: PropTypes.bool,
- };
-
- handleClick = (e) => {
- e.preventDefault();
- this.props.onClick();
- }
-
- render() {
- const { label, title, active, ariaControls, unavailable } = this.props;
-
- if (unavailable) {
- return null;
- }
-
- return (
-
- );
- }
-
-}
diff --git a/app/soapbox/features/compose/components/text_icon_button.tsx b/app/soapbox/features/compose/components/text_icon_button.tsx
new file mode 100644
index 000000000..fd49d4ed0
--- /dev/null
+++ b/app/soapbox/features/compose/components/text_icon_button.tsx
@@ -0,0 +1,36 @@
+import React from 'react';
+
+interface ITextIconButton {
+ label: string,
+ title: string,
+ active: boolean,
+ onClick: () => void,
+ ariaControls: string,
+ unavailable: boolean,
+}
+
+const TextIconButton: React.FC = ({
+ label,
+ title,
+ active,
+ ariaControls,
+ unavailable,
+ onClick,
+}) => {
+ const handleClick: React.MouseEventHandler = (e) => {
+ e.preventDefault();
+ onClick();
+ };
+
+ if (unavailable) {
+ return null;
+ }
+
+ return (
+
+ );
+};
+
+export default TextIconButton;