diff --git a/packages/react/components/Tab/index.mjs b/packages/react/components/Tab/index.mjs
index 7c430fbe0f3..d973e458961 100644
--- a/packages/react/components/Tab/index.mjs
+++ b/packages/react/components/Tab/index.mjs
@@ -4,12 +4,17 @@ import { ModalWrapper } from '@freesewing/react/components/Modal'
import { KioskIcon } from '@freesewing/react/components/Icon'
/**
- * FreeSewing Tabs component, typically used for dev examples
+ * A component to render Tabs, typically used for dev examples.
*
- * @param {string} tabs - The list of tabs
- * @param {number} active - The nr of the active tab
- * @param {array} children - Content to render within the tabs
- * @param {bool} withModal - Set to true to load tab content in a modal window when kiosk icon is clicked
+ * Note that children MUST be at least two Tab components.
+ *
+ * @component
+ * @param {object} props - All component props
+ * @param {string} props.tabs - The list of tabs
+ * @param {number} [props.active = 0] - The index of the active tab
+ * @param {JSX.Element} props.children - The component children, will be rendered if props.js is not set
+ * @param {bool} [props.withModal = false] - Set to true to load tab content in a modal window when kiosk icon is clicked
+ * @returns {JSX.Element}
*/
export const Tabs = ({ tabs = '', active = 0, children, withModal = false }) => {
const { setModal } = useContext(ModalContext)
@@ -72,10 +77,16 @@ export const Tabs = ({ tabs = '', active = 0, children, withModal = false }) =>
}
/**
- * FreeSewing Tab component, use it together with Tabs
+ * A component to render an individual Tab inside Tabs.
*
- * @param {number} tabId - The ID of this tab
- * @param {number} activeTab - The ID of the active tab
- * @param {array} children - Content to render within the tab
+ * You should not use this component directly, or pass any props to it apart from children.
+ * Instead, use them as direct children in the Tabs component.
+ *
+ * @component
+ * @param {object} props - All component props
+ * @param {number} props.activeTab - The id/index of the active tab (do not set this manually)
+ * @param {number} props.tabId - The id/index of this tab (do not set this manually)
+ * @param {JSX.Element} props.children - The component children, will be rendered if props.js is not set
+ * @returns {JSX.Element}
*/
export const Tab = ({ children, tabId, activeTab }) => (activeTab === tabId ? children : null)
diff --git a/packages/react/mkdocs.sh b/packages/react/mkdocs.sh
index 82fda19e5bf..57a9ecf4eb1 100755
--- a/packages/react/mkdocs.sh
+++ b/packages/react/mkdocs.sh
@@ -36,3 +36,4 @@ jsdoc -c jsdoc.json components/SignIn/* > ../../sites/dev/prebuild/jsdoc/react/c
jsdoc -c jsdoc.json components/SignUp/* > ../../sites/dev/prebuild/jsdoc/react/components/signup.json
jsdoc -c jsdoc.json components/Spinner/* > ../../sites/dev/prebuild/jsdoc/react/components/spinner.json
jsdoc -c jsdoc.json components/Stats/* > ../../sites/dev/prebuild/jsdoc/react/components/stats.json
+jsdoc -c jsdoc.json components/Tab/* > ../../sites/dev/prebuild/jsdoc/react/components/tab.json
diff --git a/sites/dev/docs/reference/packages/react/components/tab/_examples.js b/sites/dev/docs/reference/packages/react/components/tab/_examples.js
new file mode 100644
index 00000000000..e1a28a6ca17
--- /dev/null
+++ b/sites/dev/docs/reference/packages/react/components/tab/_examples.js
@@ -0,0 +1,12 @@
+import React from 'react'
+import { Tab, Tabs } from '@freesewing/react/components/Tab'
+import { MiniNote } from '@freesewing/react/components/Mini'
+
+export const TabExample = () => Do not use a Tab component on its own, but only as direct children of a Tabs component.
+export const TabsExample = () => (
+
+ Apple tab
+ Banana tab
+ Coconut tab
+
+)
diff --git a/sites/dev/docs/reference/packages/react/components/tab/readme.mdx b/sites/dev/docs/reference/packages/react/components/tab/readme.mdx
index 27206fabb08..2493891cd4e 100644
--- a/sites/dev/docs/reference/packages/react/components/tab/readme.mdx
+++ b/sites/dev/docs/reference/packages/react/components/tab/readme.mdx
@@ -2,6 +2,28 @@
title: Tab
---
-:::note
-This page is yet to be created
-:::
+import { DocusaurusDoc } from '@freesewing/react/components/Docusaurus'
+import { ComponentDocs } from '@site/src/components/component-docs.js'
+import * as jsdoc from '@site/prebuild/jsdoc/components.tab.mjs'
+import { TabExample, TabsExample } from './_examples.js'
+
+
+
+- [Components](#components)
+
+## Components
+
+The **Tab** component family provides the following components:
+
+- [Tab](#tab)
+- [Tabs](#tabs)
+
+### Tab
+
+
+
+### Tabs
+
+
+
+