+
+
Vertical orientation
+
+ Button 1
+ Button 2
+ Button 3
+
+
+
+
Multiple selection
+
+ Button 1
+ Button 2
+ Button 3
+ Button 4
+
+ Button 5 (disabled)
+
+
+
+
+
+ >
+ );
+}
diff --git a/packages/react-components/src/pages/ToggleButtonGroup/index.ts b/packages/react-components/src/pages/ToggleButtonGroup/index.ts
new file mode 100644
index 00000000..9b0a677f
--- /dev/null
+++ b/packages/react-components/src/pages/ToggleButtonGroup/index.ts
@@ -0,0 +1,3 @@
+import ToggleButtonGroupPage from "./ToggleButtonGroup";
+
+export default ToggleButtonGroupPage;
diff --git a/packages/react-components/src/pages/index.ts b/packages/react-components/src/pages/index.ts
index 196bc8e2..c93d1083 100644
--- a/packages/react-components/src/pages/index.ts
+++ b/packages/react-components/src/pages/index.ts
@@ -11,6 +11,7 @@ import SelectPage from "./Select";
import TagGroupPage from "./TagGroup";
import TextAreaPage from "./TextArea";
import TextFieldPage from "./TextField";
+import ToggleButtonGroupPage from "./ToggleButtonGroup";
import SwitchPage from "./Switch";
import TooltipPage from "./Tooltip";
@@ -28,6 +29,7 @@ export {
TagGroupPage,
TextAreaPage,
TextFieldPage,
+ ToggleButtonGroupPage,
SwitchPage,
TooltipPage,
};
diff --git a/packages/react-components/src/stories/ToggleButton.stories.tsx b/packages/react-components/src/stories/ToggleButton.stories.tsx
new file mode 100644
index 00000000..b3c217c5
--- /dev/null
+++ b/packages/react-components/src/stories/ToggleButton.stories.tsx
@@ -0,0 +1,101 @@
+import type { Meta, StoryObj } from "@storybook/react";
+
+import { ToggleButton, SvgCheckCircleIcon } from "../components";
+import { ToggleButtonProps } from "../components/ToggleButton";
+
+const meta = {
+ title: "Components/Toggle buttons/Toggle button",
+ component: ToggleButton,
+ parameters: {
+ layout: "centered",
+ },
+ argTypes: {
+ id: {
+ control: { type: "text" },
+ description: "Unique identifier for the button (required)",
+ },
+ children: {
+ control: { type: "object" },
+ description: "Populates button text",
+ },
+ isIconButton: {
+ control: { type: "boolean" },
+ description: "Must be set if not using a text label",
+ },
+ "aria-label": {
+ control: { type: "text" },
+ description: "Must be set if not using a text label",
+ },
+ type: {
+ control: { type: "radio" },
+ options: ["button", "submit", "reset"],
+ description: "The behavior of the button when used in an HTML form",
+ },
+ size: {
+ control: { type: "radio" },
+ options: ["small", "medium"],
+ description: "Sets button size",
+ },
+ isDisabled: {
+ control: { type: "boolean" },
+ description: "Whether a button is disabled",
+ },
+ autoFocus: {
+ control: { type: "boolean" },
+ description: "Whether the element should receive focus on render",
+ },
+ isSelected: {
+ control: { type: "boolean" },
+ description: "Whether the element should be selected (controlled)",
+ },
+ defaultSelected: {
+ control: { type: "boolean" },
+ description: "Whether the element should be selected (uncontrolled)",
+ },
+ },
+} satisfies Meta