@confidencesystemsinc/sdk 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/playbook/confidence-playbook.d.ts +12 -5
- package/dist/components/playbook/playbook-header.d.ts +3 -1
- package/dist/components/playbook-button/ConfidencePlaybookButton.d.ts +2 -1
- package/dist/components/task/confidence-task.d.ts +10 -3
- package/dist/components/task/task-buttons.d.ts +2 -1
- package/dist/components/task/task-expanded-content.d.ts +3 -0
- package/dist/components/ui/button.d.ts +1 -0
- package/dist/confidence_logo.png +0 -0
- package/dist/constants/settings.constants.d.ts +2 -2
- package/dist/context/confidence-context.d.ts +10 -0
- package/dist/hooks/task/useTaskDetails.d.ts +173 -0
- package/dist/hooks/usePlaybookExpandedTasks.d.ts +4 -0
- package/dist/hooks/useTaskButtons.d.ts +2 -1
- package/dist/index.cjs +15 -15
- package/dist/index.js +3596 -3336
- package/dist/services/task-details.service.d.ts +4 -0
- package/dist/stories/confidence-task.stories.d.ts +50 -0
- package/dist/theme.css +1 -1
- package/package.json +3 -2
- package/src/components/badge.tsx +116 -0
- package/src/components/initiate-playbook-modal/InitiatePlaybookModal.tsx +53 -0
- package/src/components/playbook/confidence-playbook.tsx +309 -0
- package/src/components/playbook/playbook-header.tsx +34 -0
- package/src/components/playbook-button/ConfidencePlaybookButton.tsx +79 -0
- package/src/components/task/confidence-task.tsx +297 -0
- package/src/components/task/task-buttons.tsx +35 -0
- package/src/components/task/task-dropdown-badge.tsx +121 -0
- package/src/components/task/task-expanded-content.tsx +46 -0
- package/src/components/task/task-left-panel.tsx +60 -0
- package/src/components/task/task-status-badge.tsx +23 -0
- package/src/components/ui/button.tsx +272 -0
- package/src/components/ui/header.tsx +12 -0
- package/src/components/ui/input.tsx +39 -0
- package/src/components/ui/modal.tsx +88 -0
- package/src/components/ui/ui-wrapper.tsx +7 -0
- package/src/constants/settings.constants.ts +4 -0
- package/src/context/confidence-context.tsx +25 -0
- package/src/hooks/task/useCompleteTask.ts +32 -0
- package/src/hooks/task/useStartTask.ts +35 -0
- package/src/hooks/task/useTaskDetails.ts +42 -0
- package/src/hooks/usePlaybook.ts +54 -0
- package/src/hooks/usePlaybookActions.ts +69 -0
- package/src/hooks/usePlaybookExpandedTasks.ts +35 -0
- package/src/hooks/useTaskButtons.ts +47 -0
- package/src/index.ts +7 -0
- package/src/services/complete-task.service.ts +25 -0
- package/src/services/initiate-playbook.service.ts +26 -0
- package/src/services/start-task.services.ts +27 -0
- package/src/services/task-details.service.ts +17 -0
- package/src/stories/confidence-playbook.stories.tsx +124 -0
- package/src/stories/confidence-task.stories.tsx +63 -0
- package/src/stories/initiate-playbook-modal.stories.tsx +31 -0
- package/src/stories/modal.stories.tsx +50 -0
- package/src/task-description.css +629 -0
- package/src/theme.css +11 -0
- package/src/types/playbook.types.ts +22 -0
- package/src/types/task.types.ts +20 -0
- package/src/utils/cn.ts +6 -0
- package/src/vite-env.d.ts +1 -0
- /package/dist/hooks/{task-events → task}/useCompleteTask.d.ts +0 -0
- /package/dist/hooks/{task-events → task}/useStartTask.d.ts +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { useConfidenceContext } from "../context/confidence-context";
|
|
3
|
+
|
|
4
|
+
export const usePlaybookExpandedTasks = (
|
|
5
|
+
playbookInstanceId: number | string,
|
|
6
|
+
) => {
|
|
7
|
+
const { queryClient } = useConfidenceContext();
|
|
8
|
+
|
|
9
|
+
const query = useQuery({
|
|
10
|
+
initialData: {} as Record<string, boolean>,
|
|
11
|
+
queryKey: ["PLAYBOOK_EXPANDED_TASKS", +playbookInstanceId],
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const isTaskExpanded = (taskId: number | string) => {
|
|
15
|
+
return query.data?.[taskId.toString()] ?? false;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const toggleTaskExpanded = (taskId: number | string, expand?: boolean) => {
|
|
19
|
+
queryClient.setQueryData(
|
|
20
|
+
["PLAYBOOK_EXPANDED_TASKS", +playbookInstanceId],
|
|
21
|
+
() => {
|
|
22
|
+
const newData = {
|
|
23
|
+
[taskId]: expand !== undefined ? expand : !isTaskExpanded(taskId),
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return newData;
|
|
27
|
+
},
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
isTaskExpanded,
|
|
33
|
+
toggleTaskExpanded,
|
|
34
|
+
};
|
|
35
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { TASK_STATUS, TaskStatus } from "../types/task.types";
|
|
3
|
+
|
|
4
|
+
export const TASK_BUTTONS = {
|
|
5
|
+
START: "START",
|
|
6
|
+
PAUSE: "PAUSE",
|
|
7
|
+
RESUME: "RESUME",
|
|
8
|
+
COMPLETE: "COMPLETE",
|
|
9
|
+
EXPAND: "EXPAND",
|
|
10
|
+
} as const;
|
|
11
|
+
|
|
12
|
+
export const TASK_BUTTONS_DISPLAY_TEXT: {
|
|
13
|
+
[key in TaskButton]?: string;
|
|
14
|
+
} = {
|
|
15
|
+
START: "Start",
|
|
16
|
+
PAUSE: "Pause",
|
|
17
|
+
RESUME: "Resume",
|
|
18
|
+
COMPLETE: "Complete",
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export type TaskButton = (typeof TASK_BUTTONS)[keyof typeof TASK_BUTTONS];
|
|
22
|
+
|
|
23
|
+
export const useTaskButtons = (args: {
|
|
24
|
+
taskStatus: TaskStatus;
|
|
25
|
+
canStart: boolean;
|
|
26
|
+
}) => {
|
|
27
|
+
const { taskStatus } = args;
|
|
28
|
+
|
|
29
|
+
const buttons = useMemo(() => {
|
|
30
|
+
if (taskStatus === TASK_STATUS.OPEN && args.canStart) {
|
|
31
|
+
return [TASK_BUTTONS.START];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (taskStatus === TASK_STATUS.IN_PROGRESS) {
|
|
35
|
+
return [TASK_BUTTONS.PAUSE, TASK_BUTTONS.COMPLETE];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (taskStatus === TASK_STATUS.COMPLETED) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
return [];
|
|
42
|
+
}, [taskStatus]);
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
buttons,
|
|
46
|
+
};
|
|
47
|
+
};
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ConfidencePlaybook } from "./components/playbook/confidence-playbook";
|
|
2
|
+
import { ConfidencePlaybookButton } from "./components/playbook-button/ConfidencePlaybookButton";
|
|
3
|
+
import { ConfidenceUIWrapper } from "./components/ui/ui-wrapper";
|
|
4
|
+
|
|
5
|
+
export { ConfidencePlaybook };
|
|
6
|
+
export { ConfidencePlaybookButton };
|
|
7
|
+
export { ConfidenceUIWrapper };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CONFIDENCE_API_ENDPOINT } from "../constants/settings.constants";
|
|
2
|
+
import { TaskStatus } from "../types/task.types";
|
|
3
|
+
|
|
4
|
+
export const completeTask = async (
|
|
5
|
+
taskInstanceId: string,
|
|
6
|
+
): Promise<{
|
|
7
|
+
status: TaskStatus;
|
|
8
|
+
}> => {
|
|
9
|
+
const body = {
|
|
10
|
+
taskInstanceId,
|
|
11
|
+
};
|
|
12
|
+
const headers = new Headers();
|
|
13
|
+
headers.append("Content-Type", "application/json");
|
|
14
|
+
const response = await fetch(
|
|
15
|
+
`${CONFIDENCE_API_ENDPOINT}/playbook-task-complete`,
|
|
16
|
+
{
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers,
|
|
19
|
+
body: JSON.stringify(body),
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
const data = await response.json();
|
|
23
|
+
|
|
24
|
+
return data;
|
|
25
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { CONFIDENCE_API_ENDPOINT } from "../constants/settings.constants";
|
|
2
|
+
|
|
3
|
+
export const initiatePlaybook = async (body: {
|
|
4
|
+
bank: string;
|
|
5
|
+
email: string;
|
|
6
|
+
timezone: string;
|
|
7
|
+
playbookUid: string;
|
|
8
|
+
}): Promise<{
|
|
9
|
+
playbookInstanceId: number;
|
|
10
|
+
errorCode?: number;
|
|
11
|
+
details?: Array<string>;
|
|
12
|
+
message?: string;
|
|
13
|
+
}> => {
|
|
14
|
+
const headers = new Headers();
|
|
15
|
+
headers.append("Content-Type", "application/json");
|
|
16
|
+
const response = await fetch(`${CONFIDENCE_API_ENDPOINT}/playbook-initiate`, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers,
|
|
19
|
+
body: JSON.stringify(body),
|
|
20
|
+
});
|
|
21
|
+
const data = await response.json();
|
|
22
|
+
|
|
23
|
+
console.log({ data });
|
|
24
|
+
|
|
25
|
+
return data;
|
|
26
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CONFIDENCE_API_ENDPOINT } from "../constants/settings.constants";
|
|
2
|
+
import { TaskStatus } from "../types/task.types";
|
|
3
|
+
|
|
4
|
+
export const startTask = async (
|
|
5
|
+
taskInstanceId: string,
|
|
6
|
+
): Promise<{
|
|
7
|
+
status: TaskStatus;
|
|
8
|
+
}> => {
|
|
9
|
+
const body = {
|
|
10
|
+
taskInstanceId,
|
|
11
|
+
};
|
|
12
|
+
const headers = new Headers();
|
|
13
|
+
headers.append("Content-Type", "application/json");
|
|
14
|
+
const response = await fetch(
|
|
15
|
+
`${CONFIDENCE_API_ENDPOINT}/playbook-task-start`,
|
|
16
|
+
{
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers,
|
|
19
|
+
body: JSON.stringify(body),
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
const data = await response.json();
|
|
23
|
+
|
|
24
|
+
console.log({ data });
|
|
25
|
+
|
|
26
|
+
return data;
|
|
27
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CONFIDENCE_API_ENDPOINT } from "../constants/settings.constants";
|
|
2
|
+
|
|
3
|
+
export const getTaskDetails = async (body: {
|
|
4
|
+
taskId: number;
|
|
5
|
+
templateId: string;
|
|
6
|
+
}) => {
|
|
7
|
+
const response = await fetch(
|
|
8
|
+
`${CONFIDENCE_API_ENDPOINT}/playbook-task-details`,
|
|
9
|
+
{
|
|
10
|
+
method: "POST",
|
|
11
|
+
body: JSON.stringify(body),
|
|
12
|
+
},
|
|
13
|
+
);
|
|
14
|
+
const data = await response.json();
|
|
15
|
+
|
|
16
|
+
return data;
|
|
17
|
+
};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { ConfidencePlaybook } from "../components/playbook/confidence-playbook";
|
|
3
|
+
import { TaskButton } from "../hooks/useTaskButtons";
|
|
4
|
+
import { ConfidenceUIWrapper } from "../components/ui/ui-wrapper";
|
|
5
|
+
|
|
6
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
7
|
+
const meta = {
|
|
8
|
+
title: "ConfidencePlaybook",
|
|
9
|
+
component: ConfidencePlaybook.View,
|
|
10
|
+
decorators: [
|
|
11
|
+
(Story) => (
|
|
12
|
+
<ConfidenceUIWrapper>
|
|
13
|
+
<Story />
|
|
14
|
+
</ConfidenceUIWrapper>
|
|
15
|
+
),
|
|
16
|
+
],
|
|
17
|
+
parameters: {
|
|
18
|
+
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
|
|
19
|
+
layout: "fullscreen",
|
|
20
|
+
},
|
|
21
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
22
|
+
tags: ["autodocs"],
|
|
23
|
+
// More on argTypes: https://storybook.js.org/docs/api/argtypes
|
|
24
|
+
argTypes: {},
|
|
25
|
+
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
|
|
26
|
+
args: {
|
|
27
|
+
playbookMode: "list",
|
|
28
|
+
playbook: {
|
|
29
|
+
playbookInstanceId: 4771,
|
|
30
|
+
playbookInstanceName:
|
|
31
|
+
"ACH - Returns - [HORIZON] this is a test playbook introdued by confidence system that is a beatufiul company",
|
|
32
|
+
playbookId: 227718,
|
|
33
|
+
type: "Sequential",
|
|
34
|
+
quickComplete: true,
|
|
35
|
+
autoExpandTask: true,
|
|
36
|
+
autoStart: false,
|
|
37
|
+
leadEmail: "confidence@user.it",
|
|
38
|
+
workflowStatus: "Open",
|
|
39
|
+
numberofTasks: 3,
|
|
40
|
+
tasks: [
|
|
41
|
+
{
|
|
42
|
+
taskInstanceId: 10949,
|
|
43
|
+
taskId: 1676864,
|
|
44
|
+
sequenceOrder: 0,
|
|
45
|
+
workflowStatus: "Completed",
|
|
46
|
+
taskInstanceName:
|
|
47
|
+
"Identify Return Items [Deposit Operations Specialist]",
|
|
48
|
+
taskStartTime: "2025-05-20 09:06:13",
|
|
49
|
+
taskCompletedTime: "2025-05-20 09:06:20",
|
|
50
|
+
imageRequired: 0,
|
|
51
|
+
hasDescription: true,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
taskInstanceId: 10951,
|
|
55
|
+
taskId: 1676866,
|
|
56
|
+
sequenceOrder: 1,
|
|
57
|
+
workflowStatus: "Completed",
|
|
58
|
+
taskInstanceName:
|
|
59
|
+
"Review Return Items [Deposit Operations Specialist]",
|
|
60
|
+
taskStartTime: "2025-05-20 09:06:20",
|
|
61
|
+
taskCompletedTime: "2025-05-20 09:06:25",
|
|
62
|
+
imageRequired: 2,
|
|
63
|
+
hasDescription: true,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
taskInstanceId: 10950,
|
|
67
|
+
taskId: 1676865,
|
|
68
|
+
sequenceOrder: 2,
|
|
69
|
+
workflowStatus: "In progress",
|
|
70
|
+
taskInstanceName: "Return Items [Deposit Operations Specialist]",
|
|
71
|
+
imageRequired: 2,
|
|
72
|
+
hasDescription: true,
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
onTaskButtonClick: async (btn: TaskButton, taskId: number) => {
|
|
77
|
+
console.log("Button clicked:", btn, "for task ID:", taskId);
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
} satisfies Meta<typeof ConfidencePlaybook.View>;
|
|
81
|
+
|
|
82
|
+
export default meta;
|
|
83
|
+
type Story = StoryObj<typeof meta>;
|
|
84
|
+
|
|
85
|
+
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
|
|
86
|
+
export const CardMode: Story = {
|
|
87
|
+
args: {
|
|
88
|
+
playbookMode: "card",
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
export const ConfidenceOverlay: Story = {
|
|
93
|
+
args: {
|
|
94
|
+
playbookMode: "list",
|
|
95
|
+
playbookStyle: {
|
|
96
|
+
whiteLabel: {
|
|
97
|
+
primaryColor: "#007BFF",
|
|
98
|
+
},
|
|
99
|
+
overlay: {
|
|
100
|
+
position: "right",
|
|
101
|
+
width: 500,
|
|
102
|
+
height: "calc(100vh - 4rem)",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export const FiservOverlay: Story = {
|
|
109
|
+
args: {
|
|
110
|
+
playbookMode: "list",
|
|
111
|
+
playbookStyle: {
|
|
112
|
+
overlay: {
|
|
113
|
+
position: "right",
|
|
114
|
+
right: 0,
|
|
115
|
+
width: 500,
|
|
116
|
+
height: "calc(100vh - 4rem)",
|
|
117
|
+
},
|
|
118
|
+
whiteLabel: {
|
|
119
|
+
titleBackgroundColor: "#FFE3CF",
|
|
120
|
+
primaryColor: "#FF6600",
|
|
121
|
+
},
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { ConfidenceTask } from "../components/task/confidence-task";
|
|
3
|
+
import { TaskButton } from "../hooks/useTaskButtons";
|
|
4
|
+
|
|
5
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
6
|
+
const meta = {
|
|
7
|
+
title: "ConfidenceTask",
|
|
8
|
+
component: ConfidenceTask,
|
|
9
|
+
parameters: {
|
|
10
|
+
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
|
|
11
|
+
layout: "fullscreen",
|
|
12
|
+
},
|
|
13
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
14
|
+
tags: ["autodocs"],
|
|
15
|
+
// More on argTypes: https://storybook.js.org/docs/api/argtypes
|
|
16
|
+
argTypes: {},
|
|
17
|
+
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
|
|
18
|
+
args: {
|
|
19
|
+
task: {
|
|
20
|
+
taskInstanceId: 10949,
|
|
21
|
+
taskId: 1676864,
|
|
22
|
+
sequenceOrder: 0,
|
|
23
|
+
workflowStatus: "Open",
|
|
24
|
+
taskInstanceName: "Identify Return Items [Deposit Operations Specialist]",
|
|
25
|
+
taskStartTime: "2025-05-20 09:06:13",
|
|
26
|
+
taskCompletedTime: "2025-05-20 09:06:20",
|
|
27
|
+
imageRequired: 1,
|
|
28
|
+
hasDescription: true,
|
|
29
|
+
},
|
|
30
|
+
playbookType: "Non-Sequential",
|
|
31
|
+
step: 0,
|
|
32
|
+
onButtonClick: async (action: TaskButton) => {
|
|
33
|
+
console.log("Button clicked:", action);
|
|
34
|
+
},
|
|
35
|
+
viewMode: "card",
|
|
36
|
+
canStart: true,
|
|
37
|
+
isExpanded: false,
|
|
38
|
+
playbookId: 227718,
|
|
39
|
+
},
|
|
40
|
+
} satisfies Meta<typeof ConfidenceTask>;
|
|
41
|
+
|
|
42
|
+
export default meta;
|
|
43
|
+
type Story = StoryObj<typeof meta>;
|
|
44
|
+
|
|
45
|
+
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
|
|
46
|
+
export const CardMode: Story = {
|
|
47
|
+
args: {},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const ListMode: Story = {
|
|
51
|
+
args: {
|
|
52
|
+
viewMode: "list",
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export const Fiserv: Story = {
|
|
57
|
+
args: {
|
|
58
|
+
viewMode: "list",
|
|
59
|
+
taskStyle: {
|
|
60
|
+
titleColor: "#FF6600",
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { InitiatePlaybookModal } from "../components/initiate-playbook-modal/InitiatePlaybookModal";
|
|
3
|
+
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
5
|
+
const meta = {
|
|
6
|
+
title: "InitiatePlaybookModal",
|
|
7
|
+
component: InitiatePlaybookModal,
|
|
8
|
+
parameters: {
|
|
9
|
+
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
|
|
10
|
+
layout: "fullscreen",
|
|
11
|
+
},
|
|
12
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
13
|
+
tags: ["autodocs"],
|
|
14
|
+
// More on argTypes: https://storybook.js.org/docs/api/argtypes
|
|
15
|
+
argTypes: {},
|
|
16
|
+
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
|
|
17
|
+
args: {},
|
|
18
|
+
} satisfies Meta<typeof InitiatePlaybookModal>;
|
|
19
|
+
|
|
20
|
+
export default meta;
|
|
21
|
+
type Story = StoryObj<typeof meta>;
|
|
22
|
+
|
|
23
|
+
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
|
|
24
|
+
export const Default: Story = {
|
|
25
|
+
args: {
|
|
26
|
+
isOpen: true,
|
|
27
|
+
onClose: () => console.log("Modal closed"),
|
|
28
|
+
onConfirm: (email: string) =>
|
|
29
|
+
console.log(`Playbook initiated with email: ${email}`),
|
|
30
|
+
},
|
|
31
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
+
import { Modal } from "../components/ui/modal";
|
|
3
|
+
|
|
4
|
+
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export
|
|
5
|
+
const meta = {
|
|
6
|
+
title: "Modal",
|
|
7
|
+
component: Modal,
|
|
8
|
+
parameters: {
|
|
9
|
+
// Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/configure/story-layout
|
|
10
|
+
layout: "fullscreen",
|
|
11
|
+
},
|
|
12
|
+
// This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/writing-docs/autodocs
|
|
13
|
+
tags: ["autodocs"],
|
|
14
|
+
// More on argTypes: https://storybook.js.org/docs/api/argtypes
|
|
15
|
+
argTypes: {},
|
|
16
|
+
// Use `fn` to spy on the onClick arg, which will appear in the actions panel once invoked: https://storybook.js.org/docs/essentials/actions#action-args
|
|
17
|
+
args: {},
|
|
18
|
+
} satisfies Meta<typeof Modal>;
|
|
19
|
+
|
|
20
|
+
export default meta;
|
|
21
|
+
type Story = StoryObj<typeof meta>;
|
|
22
|
+
|
|
23
|
+
// More on writing stories with args: https://storybook.js.org/docs/writing-stories/args
|
|
24
|
+
export const Default: Story = {
|
|
25
|
+
args: {
|
|
26
|
+
isOpen: true,
|
|
27
|
+
children: (
|
|
28
|
+
<>
|
|
29
|
+
<p className="text-gray-500">
|
|
30
|
+
Are you sure you want to deactivate this playbook? This action cannot
|
|
31
|
+
be undone.
|
|
32
|
+
</p>
|
|
33
|
+
<p className="text-gray-500">
|
|
34
|
+
Deactivating a playbook will stop all associated tasks and prevent any
|
|
35
|
+
further actions.
|
|
36
|
+
</p>
|
|
37
|
+
</>
|
|
38
|
+
),
|
|
39
|
+
dismissOptions: {
|
|
40
|
+
label: "Cancel",
|
|
41
|
+
onClick: () => console.log("Modal dismissed"),
|
|
42
|
+
},
|
|
43
|
+
confirmOptions: {
|
|
44
|
+
label: "Deactivate",
|
|
45
|
+
onClick: () => console.log("Playbook deactivated"),
|
|
46
|
+
},
|
|
47
|
+
title: "Deactivate Playbook",
|
|
48
|
+
close() {},
|
|
49
|
+
},
|
|
50
|
+
};
|