- )
-}
-
-export default withRouter(Onboarding);
\ No newline at end of file
diff --git a/frontend/app/components/Onboarding/Onboarding.tsx b/frontend/app/components/Onboarding/Onboarding.tsx
new file mode 100644
index 000000000..f6b508446
--- /dev/null
+++ b/frontend/app/components/Onboarding/Onboarding.tsx
@@ -0,0 +1,63 @@
+import React from 'react';
+import SideMenu from './components/SideMenu';
+import { withRouter } from 'react-router-dom';
+import { Switch, Route, Redirect, RouteComponentProps } from 'react-router';
+import { OB_TABS, onboarding as onboardingRoute } from 'App/routes';
+import InstallOpenReplayTab from './components/InstallOpenReplayTab';
+import IdentifyUsersTab from './components/IdentifyUsersTab';
+import IntegrationsTab from './components/IntegrationsTab';
+import ManageUsersTab from './components/ManageUsersTab';
+import { withSiteId } from 'App/routes';
+interface Props {
+ match: {
+ params: {
+ activeTab: string;
+ siteId: string;
+ };
+ };
+ history: RouteComponentProps['history'];
+}
+const Onboarding = (props: Props) => {
+ const {
+ match: {
+ params: { activeTab, siteId },
+ },
+ } = props;
+
+ const route = (path: string) => {
+ return withSiteId(onboardingRoute(path));
+ };
+
+ const onMenuItemClick = (tab: string) => {
+ props.history.push(withSiteId(onboardingRoute(tab), siteId));
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/*
+
+
+
+
*/}
+
+ );
+};
+
+export default withRouter(Onboarding);
diff --git a/frontend/app/components/Onboarding/components/CircleNumber/circleNumber.module.css b/frontend/app/components/Onboarding/components/CircleNumber/circleNumber.module.css
index aaea1eb41..09ea8aae2 100644
--- a/frontend/app/components/Onboarding/components/CircleNumber/circleNumber.module.css
+++ b/frontend/app/components/Onboarding/components/CircleNumber/circleNumber.module.css
@@ -9,4 +9,5 @@
color: white;
font-size: 12px;
margin-right: 10px;
+ flex-shrink: 0;
}
\ No newline at end of file
diff --git a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js
deleted file mode 100644
index b4ba5b0a9..000000000
--- a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React from 'react'
-import CircleNumber from '../CircleNumber'
-import MetadataList from '../MetadataList/MetadataList'
-import { HighlightCode } from 'UI'
-
-export default function IdentifyUsersTab() {
- return (
-
-
-
- 🕵️♂️
-
Identify Users
-
-
-
By User ID
-
- Call setUserID to identify your users when recording a session. The identity of the user can be changed, but OpenReplay will only keep the last communicated user ID.
-
-
-
-
-
-
-
By adding metadata
-
-
-
- Explicitly specify the metadata
-
You can add up to 10 keys.
-
-
-
-
-
-
-
-
-
-
- Inject metadata when recording sessions
-
Use the setMetadata method in your code to inject custom user data in the form of a key/value pair (string).
-
-
-
-
-
-
-
-
-
-
Why Identify Users?
-
Make it easy to search and filter replays by user id. OpenReplay allows you to associate your internal-user-id with the recording.
-
-
-
-
What is Metadata?
-
Additional information about users can be provided with metadata (also known as traits or user variables). They take the form of key/value pairs, and are useful for filtering and searching for specific session replays.
-
-
-
- )
-}
diff --git a/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.tsx b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.tsx
new file mode 100644
index 000000000..6c6083f03
--- /dev/null
+++ b/frontend/app/components/Onboarding/components/IdentifyUsersTab/IdentifyUsersTab.tsx
@@ -0,0 +1,99 @@
+import React from 'react';
+import CircleNumber from '../CircleNumber';
+import MetadataList from '../MetadataList/MetadataList';
+import { HighlightCode, Icon, Button } from 'UI';
+import DocCard from 'Shared/DocCard/DocCard';
+import withOnboarding, { WithOnboardingProps } from '../withOnboarding';
+import { OB_TABS } from 'App/routes';
+
+interface Props extends WithOnboardingProps {}
+
+function IdentifyUsersTab(props: Props) {
+ return (
+ <>
+
+ 🕵️♂️
+
Identify Users
+
+
+
+
+
Identify users by user ID
+
+ Call setUserID to identify your users when
+ recording a session.
+
+
+
+
+
+ OpenReplay keeps the last communicated user ID.
+
+
+
+
+
+
+
+
Identify users by adding metadata
+
+ To identify users through metadata, you will have to explicitly specify your user
+ metadata so it can be injected during sessions. Follow the below steps
+
+
+
+
+
+
+
+
+
+
+ Inject metadata when recording sessions
+
+ Use the setMetadata method in your code to
+ inject custom user data in the form of a key/value pair (string).
+
+
+
+
+
+
+
+
+
+ Make it easy to search and filter replays by user id. OpenReplay allows you to associate
+ your internal-user-id with the recording.
+
+
+
+ Additional information about users can be provided with metadata (also known as traits
+ or user variables). They take the form of key/value pairs, and are useful for filtering
+ and searching for specific session replays.
+
+
+
+
+
+
+
+
+ >
+ );
+}
+
+export default withOnboarding(IdentifyUsersTab);
diff --git a/frontend/app/components/Onboarding/components/IdentifyUsersTab/index.js b/frontend/app/components/Onboarding/components/IdentifyUsersTab/index.ts
similarity index 100%
rename from frontend/app/components/Onboarding/components/IdentifyUsersTab/index.js
rename to frontend/app/components/Onboarding/components/IdentifyUsersTab/index.ts
diff --git a/frontend/app/components/Onboarding/components/InstallOpenReplayTab/InstallOpenReplayTab.js b/frontend/app/components/Onboarding/components/InstallOpenReplayTab/InstallOpenReplayTab.js
deleted file mode 100644
index 1d6288c4d..000000000
--- a/frontend/app/components/Onboarding/components/InstallOpenReplayTab/InstallOpenReplayTab.js
+++ /dev/null
@@ -1,19 +0,0 @@
-import React from 'react'
-import OnboardingTabs from '../OnboardingTabs'
-import ProjectFormButton from '../ProjectFormButton'
-
-export default function InstallOpenReplayTab() {
- return (
-
-
- 👋
-
- Hey there! Setup
-
-
-
-
OpenReplay can be installed via script or NPM package (recommended).
-
-
- )
-}
diff --git a/frontend/app/components/Onboarding/components/InstallOpenReplayTab/InstallOpenReplayTab.tsx b/frontend/app/components/Onboarding/components/InstallOpenReplayTab/InstallOpenReplayTab.tsx
new file mode 100644
index 000000000..c09506a28
--- /dev/null
+++ b/frontend/app/components/Onboarding/components/InstallOpenReplayTab/InstallOpenReplayTab.tsx
@@ -0,0 +1,49 @@
+import React from 'react';
+import OnboardingTabs from '../OnboardingTabs';
+import ProjectFormButton from '../ProjectFormButton';
+import { Button, Icon } from 'UI';
+import withOnboarding from '../withOnboarding';
+import { WithOnboardingProps } from '../withOnboarding';
+import { OB_TABS } from 'App/routes';
+
+interface Props extends WithOnboardingProps {}
+
+function InstallOpenReplayTab(props: Props) {
+ const { site } = props;
+ return (
+ <>
+
+ Reproduce issues as if they happened in your own browser. Plugins help capture your
+ application’s store, HTTP requests, GraphQL queries and more.
+
+
+
+
+
Why Use Integrations?
+
+ Sync your backend errors with sessions replays and see what happened front-to-back.
+
+
+
*/}
+
+
+
+ >
+ );
+}
+
+export default withOnboarding(IntegrationsTab);
diff --git a/frontend/app/components/Onboarding/components/IntegrationsTab/index.js b/frontend/app/components/Onboarding/components/IntegrationsTab/index.ts
similarity index 100%
rename from frontend/app/components/Onboarding/components/IntegrationsTab/index.js
rename to frontend/app/components/Onboarding/components/IntegrationsTab/index.ts
diff --git a/frontend/app/components/Onboarding/components/ManageUsersTab/ManageUsersTab.js b/frontend/app/components/Onboarding/components/ManageUsersTab/ManageUsersTab.js
deleted file mode 100644
index 1f4763247..000000000
--- a/frontend/app/components/Onboarding/components/ManageUsersTab/ManageUsersTab.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import UsersView from 'App/components/Client/Users/UsersView'
-import React from 'react'
-
-export default function ManageUsersTab() {
- return (
-
-
-
- 👨💻
-
Invite Collaborators
-
-
-
-
-
-
-
Why Invite Collaborators?
-
Session replay is useful for all team members, from developers, testers and product managers to design, support and marketing folks. Invite them all and start improving your app now.
-
-
-
- )
-}
diff --git a/frontend/app/components/Onboarding/components/ManageUsersTab/ManageUsersTab.tsx b/frontend/app/components/Onboarding/components/ManageUsersTab/ManageUsersTab.tsx
new file mode 100644
index 000000000..3f888bea5
--- /dev/null
+++ b/frontend/app/components/Onboarding/components/ManageUsersTab/ManageUsersTab.tsx
@@ -0,0 +1,53 @@
+import UsersView from 'App/components/Client/Users/UsersView';
+import DocCard from 'Shared/DocCard/DocCard';
+import React from 'react';
+import { Button, Icon } from 'UI';
+import withOnboarding, { WithOnboardingProps } from '../withOnboarding';
+import { OB_TABS } from 'App/routes';
+
+interface Props extends WithOnboardingProps {}
+
+function ManageUsersTab(props: Props) {
+ return (
+ <>
+
+ 👨💻
+
Invite Collaborators
+
+
+
+
+
+
+
+
Come together and unlock the potential collaborative improvements!
+
+ Session replays are useful to developers, designers, product managers and to everyone
+ on the product team.
+
Below code snippet changes depending on the data recording options chosen.
-
-
+
+
+ Enable Assist (Optional)
+
+
+
+
+ OpenReplay Assist allows you to support your users by seeing their live screen and
+ instantly hopping on call (WebRTC) with them without requiring any 3rd-party screen
+ sharing software.
+
+ setAssistEnabled(!isAssistEnabled)}
+ />
+
+
+
+
+ Install SDK
-
{ 'Project Key: ' } { site.projectKey }
-
- Paste this snippet { 'before the ' }
- { '' }
- { ' tag of your page.' }
+
+ Paste this snippet {'before the '}
+ {''}
+ {' tag of your page.'}