diff --git a/app/client/src/components/featureWalkthrough/walkthroughContext.tsx b/app/client/src/components/featureWalkthrough/walkthroughContext.tsx
index 74978f9d2a..9b7048ce5b 100644
--- a/app/client/src/components/featureWalkthrough/walkthroughContext.tsx
+++ b/app/client/src/components/featureWalkthrough/walkthroughContext.tsx
@@ -27,8 +27,25 @@ export interface FeatureDetails {
description: string;
// Gif or Image to give a walkthrough
imageURL?: string;
+ // footer details
+ footerDetails?: FeatureFooterDetails;
}
+export interface FeatureFooterDetails {
+ // footer text
+ footerText: string;
+ // footer button text
+ footerButtonText: string;
+ // footer button onClick handler
+ onClickHandler: () => void;
+}
+
+export const isFeatureFooterDetails = (
+ obj: FeatureFooterDetails,
+): obj is FeatureFooterDetails => {
+ return !!obj;
+};
+
export interface FeatureParams {
// To execute a function on dismissing the tutorial walkthrough.
onDismiss?: () => void;
diff --git a/app/client/src/components/featureWalkthrough/walkthroughRenderer.tsx b/app/client/src/components/featureWalkthrough/walkthroughRenderer.tsx
index 9948e1c06c..c03df294b6 100644
--- a/app/client/src/components/featureWalkthrough/walkthroughRenderer.tsx
+++ b/app/client/src/components/featureWalkthrough/walkthroughRenderer.tsx
@@ -1,4 +1,4 @@
-import { Icon, Text } from "design-system";
+import { Icon, Text, Button, Divider } from "design-system";
import { showIndicator } from "pages/Editor/GuidedTour/utils";
import React, { useContext, useEffect, useState } from "react";
import styled from "styled-components";
@@ -8,7 +8,9 @@ import type {
FeatureParams,
OffsetType,
} from "./walkthroughContext";
-import WalkthroughContext from "./walkthroughContext";
+import WalkthroughContext, {
+ isFeatureFooterDetails,
+} from "./walkthroughContext";
import AnalyticsUtil from "utils/AnalyticsUtil";
const CLIPID = "clip__feature";
@@ -70,6 +72,19 @@ const InstructionsHeaderWrapper = styled.div`
}
`;
+const FeatureFooterDivider = styled(Divider)`
+ margin-top: 8px;
+`;
+
+const FeatureFooterWrapper = styled.div`
+ height: 36px;
+ margin-top: 8px;
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ align-items: center;
+`;
+
interface RefRectParams {
// body params
bh: number;
@@ -295,6 +310,18 @@ const InstructionsComponent = ({
)}
+ {!!details.footerDetails &&
+ isFeatureFooterDetails(details.footerDetails) && (
+ <>
+
+
+ {details.footerDetails.footerText}
+
+
+ >
+ )}
);
};
diff --git a/app/client/src/constants/WalkthroughConstants.ts b/app/client/src/constants/WalkthroughConstants.ts
index ac8e447025..9c64603924 100644
--- a/app/client/src/constants/WalkthroughConstants.ts
+++ b/app/client/src/constants/WalkthroughConstants.ts
@@ -2,6 +2,7 @@ export const FEATURE_WALKTHROUGH_KEYS = {
ds_binding: "ab_ds_binding_enabled",
ds_schema: "ab_ds_schema_enabled",
binding_widget: "binding_widget",
+ env_walkthrough: "ab_env_walkthrough_enabled",
// Signposting keys
back_to_canvas: "back_to_canvas",
add_table_widget: "add_table_widget",