+ );
+}
diff --git a/src/components/Playbooks/Runs/PlaybookRunsActions.stories.tsx b/src/components/Playbooks/Runs/PlaybookRunsActions.stories.tsx
new file mode 100644
index 0000000000..ee56c5e076
--- /dev/null
+++ b/src/components/Playbooks/Runs/PlaybookRunsActions.stories.tsx
@@ -0,0 +1,86 @@
+import { StoryObj } from "@storybook/react";
+import PlaybookRunsActions, {
+ PlaybookRunWithActions
+} from "./PlaybookRunsActions";
+
+export default {
+ title: "PlaybookRunsActions",
+ component: PlaybookRunsActions
+};
+
+const mockPlaybookRun: PlaybookRunWithActions = {
+ id: "1",
+ playbook_id: "1",
+ status: "completed",
+ created_at: "2021-08-19T07:00:00.000Z",
+ start_time: "2021-08-19T07:00:00.000Z",
+ end_time: "2021-08-19T07:00:00.000Z",
+ created_by: {
+ id: "1",
+ name: "John Doe",
+ email: ""
+ },
+ component_id: "1",
+ parameters: {},
+ component: {
+ id: "1",
+ name: "Topology 1",
+ icon: "TopologyIcon"
+ },
+ actions: [
+ {
+ id: "1",
+ name: "Action 1",
+ status: "completed",
+ end_time: "2021-08-19T07:00:00.000Z",
+ start_time: "2021-08-19T07:00:00.000Z",
+ playbook_run_id: "1",
+ result: `You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:font-serif to apply the font-serif utility at only medium screen sizes and above.
+
+You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:font-serif to apply the font-serif utility at only medium screen sizes and above.
+
+You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:font-serif to apply the font-serif utility at only medium screen sizes and above.
+
+You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:font-serif to apply the font-serif utility at only medium screen sizes and above.`,
+ error: ""
+ },
+ {
+ id: "2",
+ name: "Action 2",
+ status: "completed",
+ end_time: "2021-08-19T07:00:00.000Z",
+ start_time: "2021-08-19T07:00:00.000Z",
+ playbook_run_id: "1",
+ result: `You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:font-serif to apply the font-serif utility at only medium screen sizes and above.
+
+You can also use variant modifiers to target media queries like responsive breakpoints, dark mode, prefers-reduced-motion, and more. For example, use md:font-serif to apply the font-serif utility at only medium screen sizes and above.`,
+ error: ""
+ },
+ {
+ id: "3",
+ name: "Action 3",
+ status: "pending",
+ end_time: undefined,
+ error: "",
+ result: "",
+ start_time: "2021-08-19T07:00:00.000Z",
+ playbook_run_id: "1"
+ },
+ {
+ id: "4",
+ name: "Action 4",
+ status: "running",
+ end_time: undefined,
+ error: "",
+ result: "",
+ start_time: "2021-08-19T07:00:00.000Z",
+ playbook_run_id: "1"
+ }
+ ]
+};
+
+type Story = StoryObj;
+
+export const Default: Story = {
+ render: () =>
+};
diff --git a/src/components/Playbooks/Runs/PlaybookRunsActions.tsx b/src/components/Playbooks/Runs/PlaybookRunsActions.tsx
new file mode 100644
index 0000000000..8b46b2cfa3
--- /dev/null
+++ b/src/components/Playbooks/Runs/PlaybookRunsActions.tsx
@@ -0,0 +1,119 @@
+import { ReactNode, useMemo, useState } from "react";
+import { Link } from "react-router-dom";
+import { relativeDateTime } from "../../../utils/date";
+import { Avatar } from "../../Avatar";
+import { Icon } from "../../Icon";
+import PlaybookRunsActionItem from "./PlaybookRunsActionItem";
+import { PlaybookRun, PlaybookRunStatus } from "./PlaybookRunsList";
+import PlaybookRunsStatus from "./PlaybookRunsStatus";
+
+export type PlaybookRunAction = {
+ id: string;
+ name: string;
+ status: PlaybookRunStatus;
+ playbook_run_id: string;
+ start_time?: string;
+ end_time?: string;
+ result?: {
+ stdout?: string;
+ };
+ error?: string;
+};
+
+export type PlaybookRunWithActions = PlaybookRun & {
+ actions: PlaybookRunAction[];
+};
+
+type PlaybookRunActionsProps = {
+ data: PlaybookRunWithActions;
+};
+
+export default function PlaybookRunsActions({ data }: PlaybookRunActionsProps) {
+ const [selectedAction, setSelectedAction] = useState();
+
+ const headerContent = useMemo(
+ () =>
+ new Map([
+ [
+ "Playbook",
+
+ {data.playbooks?.name}
+
+ ],
+ [
+ "Component",
+
+
+ {data.component?.name}
+
+ ],
+ [
+ "Status",
+