diff --git a/.eslintignore b/.eslintignore
index fc0b9d23..b8539793 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,12 +1,8 @@
*.log
coverage
.DS_Store
-_batfish*
src/docs/data
src/docs/_site
-pkg
src/test-cases-app/component-index.js
-dist
**/*underreact.config.js
**/*babel.config.js
-html.js
diff --git a/.gitignore b/.gitignore
index d8abc7bb..3faf6ded 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,5 @@ src/docs/data
pkg
src/test-cases-app/component-index.js
dist
+tsconfig.tsbuildinfo
+.vscode/launch.json
diff --git a/index.d.ts b/index.d.ts
new file mode 100644
index 00000000..37215dd5
--- /dev/null
+++ b/index.d.ts
@@ -0,0 +1,23825 @@
+///
+declare module "src/components/accordion-item/accordion-item" {
+ export default class AccordionItem extends React.Component {
+ static propTypes: {
+ /** Identifying value for accordion item. */
+ id: PropTypes.Validator;
+ /** Callback when an accordion header item is clicked. */
+ onToggle: PropTypes.Validator<(...args: any[]) => any>;
+ /** Function that accepts an `active` boolean argument and returns JSX. */
+ header: PropTypes.Validator<(...args: any[]) => any>;
+ /** Contents that shown when the accordion is active. */
+ body: PropTypes.Validator;
+ /** Determines if the state of the accordion item is active. */
+ active: PropTypes.Requireable;
+ /** Determines if the state of the accordion item is disabled. */
+ disabled: PropTypes.Requireable;
+ /** CSS classes to apply to the accordion item container. */
+ themeItem: PropTypes.Requireable;
+ /** CSS classes to apply to the accordion header. */
+ themeItemHeader: PropTypes.Requireable;
+ /** CSS classes to apply to the accordion header when `disabled` is true/ */
+ themeItemHeaderDisabled: PropTypes.Requireable;
+ /** CSS classes to apply to the accordion body. */
+ themeItemBody: PropTypes.Requireable;
+ };
+ static defaultProps: {
+ active: boolean;
+ themeItemHeader: string;
+ themeItemHeaderDisabled: string;
+ };
+ constructor(props: any);
+ constructor(props: any, context: any);
+ onToggle: () => void;
+ renderHeader: () => any;
+ render(): JSX.Element;
+ }
+ import React from "react";
+ import PropTypes from "prop-types";
+}
+declare module "src/components/accordion-item/index" {
+ export default main;
+ import main from "src/components/accordion-item/accordion-item";
+}
+declare module "src/test-utils/safe-spy" {
+ export default function safeSpy(nonSpyImplementation: any): any;
+}
+declare module "src/components/accordion-item/__tests__/accordion-item-test-cases" {
+ export namespace testCases {
+ namespace basic {
+ export const description: string;
+ export { AccordionItem as component };
+ export namespace props {
+ const onToggle: any;
+ const id: string;
+ function header(): JSX.Element;
+ const body: string;
+ }
+ }
+ namespace disabled {
+ const description_1: string;
+ export { description_1 as description };
+ export { AccordionItem as component };
+ export namespace props_1 {
+ const onToggle_1: any;
+ export { onToggle_1 as onToggle };
+ const id_1: string;
+ export { id_1 as id };
+ export function header_1(): JSX.Element;
+ export { header_1 as header };
+ const body_1: string;
+ export { body_1 as body };
+ const disabled_1: boolean;
+ export { disabled_1 as disabled };
+ }
+ export { props_1 as props };
+ }
+ namespace allOptions {
+ const description_2: string;
+ export { description_2 as description };
+ export { AccordionItem as component };
+ export namespace props_2 {
+ const onToggle_2: any;
+ export { onToggle_2 as onToggle };
+ const id_2: string;
+ export { id_2 as id };
+ export const active: boolean;
+ export function header_2(): JSX.Element;
+ export { header_2 as header };
+ const body_2: string;
+ export { body_2 as body };
+ export const themeItem: string;
+ export const themeItemHeader: string;
+ export const themeItemBody: string;
+ }
+ export { props_2 as props };
+ }
+ }
+ import AccordionItem from "src/components/accordion-item/accordion-item";
+}
+declare module "src/components/accordion-item/__tests__/accordion-item.test" {
+ export {};
+}
+declare module "src/components/button/button" {
+ export default Button;
+ /**
+ * A good-looking button!
+ *
+ * The rendered element will be a `