diff --git a/services/web/frontend/extracted-translations.json b/services/web/frontend/extracted-translations.json
index 47fad03f9e..8410d3660c 100644
--- a/services/web/frontend/extracted-translations.json
+++ b/services/web/frontend/extracted-translations.json
@@ -1513,6 +1513,7 @@
"writefull_loading_error_body": "",
"writefull_loading_error_title": "",
"writefull_prompt_body": "",
+ "writefull_prompt_terms": "",
"writefull_prompt_title": "",
"writefull_settings_description": "",
"x_changes_in": "",
diff --git a/services/web/frontend/js/shared/components/notification.tsx b/services/web/frontend/js/shared/components/notification.tsx
index 574a7c44d7..2c0155c2fa 100644
--- a/services/web/frontend/js/shared/components/notification.tsx
+++ b/services/web/frontend/js/shared/components/notification.tsx
@@ -16,6 +16,7 @@ export type NotificationProps = {
className?: string
content: React.ReactElement | string
customIcon?: React.ReactElement
+ disclaimer?: React.ReactElement | string
isDismissible?: boolean
isActionBelowContent?: boolean
onDismiss?: () => void
@@ -53,6 +54,7 @@ function Notification({
className = '',
content,
customIcon,
+ disclaimer,
isActionBelowContent,
isDismissible,
onDismiss,
@@ -99,6 +101,9 @@ function Notification({
{content}
{action &&
{action}
}
+ {disclaimer && (
+ {disclaimer}
+ )}
{isDismissible && (
diff --git a/services/web/frontend/js/shared/context/editor-context.tsx b/services/web/frontend/js/shared/context/editor-context.tsx
index 18d34aaec4..b7e0070cfd 100644
--- a/services/web/frontend/js/shared/context/editor-context.tsx
+++ b/services/web/frontend/js/shared/context/editor-context.tsx
@@ -19,6 +19,8 @@ import { useUserContext } from './user-context'
import { saveProjectSettings } from '@/features/editor-left-menu/utils/api'
import { PermissionsLevel } from '@/features/ide-react/types/permissions'
+type writefullAdButtons = '' | 'try-it' | 'log-in'
+
export const EditorContext = createContext<
| {
cobranding?: {
@@ -46,8 +48,8 @@ export const EditorContext = createContext<
inactiveTutorials: [string]
currentPopup: string | null
setCurrentPopup: Dispatch>
- writefullAdClicked: boolean
- setWritefullAdClicked: Dispatch>
+ writefullAdClicked: writefullAdButtons
+ setWritefullAdClicked: Dispatch>
}
| undefined
>(undefined)
@@ -86,7 +88,8 @@ export const EditorProvider: FC = ({ children }) => {
getMeta('ol-inactiveTutorials', [])
)
- const [writefullAdClicked, setWritefullAdClicked] = useState(false)
+ const [writefullAdClicked, setWritefullAdClicked] =
+ useState('')
const [currentPopup, setCurrentPopup] = useState(null)
diff --git a/services/web/frontend/stylesheets/components/notifications.less b/services/web/frontend/stylesheets/components/notifications.less
index b46fa9d910..8da642cb7d 100644
--- a/services/web/frontend/stylesheets/components/notifications.less
+++ b/services/web/frontend/stylesheets/components/notifications.less
@@ -96,6 +96,10 @@
}
}
+ .notification-disclaimer {
+ padding-bottom: 16px;
+ }
+
.notification-close-btn {
height: 56px;
align-items: center;
diff --git a/services/web/locales/en.json b/services/web/locales/en.json
index bdcb9e914c..fba3c63965 100644
--- a/services/web/locales/en.json
+++ b/services/web/locales/en.json
@@ -2175,6 +2175,7 @@
"writefull_loading_error_body": "Try refreshing the page. If this doesn’t work, try disabling any active browser extensions to check they aren’t blocking Writefull from loading.",
"writefull_loading_error_title": "Writefull didn’t load correctly",
"writefull_prompt_body": "Turn on the new Writefull integration to get free AI-powered language feedback specifically tailored to research writing.",
+ "writefull_prompt_terms": "[COPY NOT FINAL] By trying Writefull you agree to their <0>terms of service0> and <1>privacy policy1>. If you already have a Writefull account, you can <2>log in2> to it. If not, we’ll create one for you as <3>__email__3>.",
"writefull_prompt_title": "AI writing assistance in Overleaf",
"writefull_settings_description": "Get free AI-based language feedback specifically tailored for research writing with Writefull for Overleaf.",
"x_changes_in": "__count__ change in",