diff --git a/assets/js/src/settings/components/index.ts b/assets/js/src/settings/components/index.ts
index d96239b872..9535c9cc83 100644
--- a/assets/js/src/settings/components/index.ts
+++ b/assets/js/src/settings/components/index.ts
@@ -3,3 +3,4 @@ export { default as Label } from './label';
export { default as Inputs } from './inputs';
export { default as SaveButton } from './save_button';
export { default as SegmentsSelect } from './segments_select';
+export { default as PagesSelect } from './pages_select';
diff --git a/assets/js/src/settings/components/label.tsx b/assets/js/src/settings/components/label.tsx
index e0e7d50db5..8b26398e68 100644
--- a/assets/js/src/settings/components/label.tsx
+++ b/assets/js/src/settings/components/label.tsx
@@ -1,8 +1,8 @@
-import React from 'react';
+import React, { ReactNode } from 'react';
type Props = {
title: string
- description: string
+ description: ReactNode
htmlFor: string
}
diff --git a/assets/js/src/settings/components/pages_select.tsx b/assets/js/src/settings/components/pages_select.tsx
new file mode 100644
index 0000000000..eee80169ab
--- /dev/null
+++ b/assets/js/src/settings/components/pages_select.tsx
@@ -0,0 +1,39 @@
+import React from 'react';
+import { onChange, t } from 'settings/utils';
+import { useSelector } from 'settings/store/hooks';
+
+type Props = {
+ id?: string
+ value: string
+ linkAutomationId?: string
+ setValue: (x: string) => any
+ preview: 'manage' | 'unsubscribe' | 'confirm'
+}
+
+export default (props: Props) => {
+ const pages = useSelector('getPages')();
+ const selectedPage = props.value
+ ? pages.find((x) => x.id === parseInt(props.value, 10))
+ : pages[0];
+ return (
+ <>
+
+ {' '}
+
+ {t`preview`}
+
+ >
+ );
+};
diff --git a/assets/js/src/settings/components/segments_select.tsx b/assets/js/src/settings/components/segments_select.tsx
index 56136d2c48..12a98c3342 100644
--- a/assets/js/src/settings/components/segments_select.tsx
+++ b/assets/js/src/settings/components/segments_select.tsx
@@ -4,7 +4,7 @@ import 'select2';
import { useSelector } from 'settings/store/hooks';
type Props = {
- id?: string
+ id: string
value: string[]
placeholder?: string
setValue: (x: string[]) => any
diff --git a/assets/js/src/settings/pages/basics/index.tsx b/assets/js/src/settings/pages/basics/index.tsx
index f59c22d03e..c4bbdb7095 100644
--- a/assets/js/src/settings/pages/basics/index.tsx
+++ b/assets/js/src/settings/pages/basics/index.tsx
@@ -3,6 +3,7 @@ import { SaveButton } from 'settings/components';
import { t } from 'settings/utils';
import DefaultSender from './default_sender';
import SubscribeOn from './subscribe_on';
+import ManageSubscription from './manage_subscription';
export default function Basics() {
return (
@@ -18,6 +19,7 @@ export default function Basics() {
title={t`subscribeInRegistrationTitle`}
description={t`subscribeInRegistrationDescription`}
/>
+
);
diff --git a/assets/js/src/settings/pages/basics/manage_subscription.tsx b/assets/js/src/settings/pages/basics/manage_subscription.tsx
new file mode 100644
index 0000000000..9a624b34a4
--- /dev/null
+++ b/assets/js/src/settings/pages/basics/manage_subscription.tsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import { t } from 'settings/utils';
+import { useSetting } from 'settings/store/hooks';
+import {
+ Label, Inputs, SegmentsSelect, PagesSelect,
+} from 'settings/components';
+
+export default function ManageSubscription() {
+ const [page, setPage] = useSetting('subscription', 'pages', 'manage');
+ const [segments, setSegments] = useSetting('subscription', 'segments');
+ return (
+ <>
+