diff --git a/frontend/src/scenes/onboarding/sdks/allSDKs.tsx b/frontend/src/scenes/onboarding/sdks/allSDKs.tsx index a2bee604868e6..c9a6a88c5b3cc 100644 --- a/frontend/src/scenes/onboarding/sdks/allSDKs.tsx +++ b/frontend/src/scenes/onboarding/sdks/allSDKs.tsx @@ -58,6 +58,13 @@ export const allSDKs: SDK[] = [ image: require('./logos/bubble.svg'), docsLink: 'https://posthog.com/docs/libraries/bubble', }, + { + name: 'Django', + key: SDKKey.DJANGO, + tags: [SDKTag.SERVER], + image: require('./logos/django.svg'), + docsLink: 'https://posthog.com/docs/libraries/django', + }, { name: 'Elixir', key: SDKKey.ELIXIR, @@ -180,6 +187,20 @@ export const allSDKs: SDK[] = [ image: require('./logos/ruby.svg'), docsLink: 'https://posthog.com/docs/libraries/ruby', }, + { + name: 'Rust', + key: SDKKey.RUST, + tags: [SDKTag.SERVER], + image: require('./logos/rust.svg'), + docsLink: 'https://posthog.com/docs/libraries/rust', + }, + { + name: 'Svelte', + key: SDKKey.SVELTE, + tags: [SDKTag.WEB], + image: require('./logos/svelte.svg'), + docsLink: 'https://posthog.com/docs/libraries/svelte', + }, { name: 'Vue.js', key: SDKKey.VUE_JS, @@ -188,11 +209,11 @@ export const allSDKs: SDK[] = [ docsLink: 'https://posthog.com/docs/libraries/vue-js', }, { - name: 'Rust', - key: SDKKey.RUST, - tags: [SDKTag.SERVER], - image: require('./logos/rust.svg'), - docsLink: 'https://posthog.com/docs/libraries/rust', + name: 'Webflow', + key: SDKKey.WEBFLOW, + tags: [SDKTag.WEB], + image: require('./logos/webflow.svg'), + docsLink: 'https://posthog.com/docs/libraries/webflow', }, // integrations { diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/FeatureFlagsSDKInstructions.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/FeatureFlagsSDKInstructions.tsx index 47148380d9554..ab58f83895d72 100644 --- a/frontend/src/scenes/onboarding/sdks/feature-flags/FeatureFlagsSDKInstructions.tsx +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/FeatureFlagsSDKInstructions.tsx @@ -6,6 +6,7 @@ import { FeatureFlagsAPIInstructions, FeatureFlagsAstroInstructions, FeatureFlagsBubbleInstructions, + FeatureFlagsDjangoInstructions, FeatureFlagsFlutterInstructions, FeatureFlagsFramerInstructions, FeatureFlagsGoInstructions, @@ -21,6 +22,9 @@ import { FeatureFlagsRemixJSInstructions, FeatureFlagsRNInstructions, FeatureFlagsRubyInstructions, + FeatureFlagsSvelteInstructions, + FeatureFlagsVueInstructions, + FeatureFlagsWebflowInstructions, } from '.' export const FeatureFlagsSDKInstructions: SDKInstructionsMap = { @@ -30,6 +34,7 @@ export const FeatureFlagsSDKInstructions: SDKInstructionsMap = { [SDKKey.API]: FeatureFlagsAPIInstructions, [SDKKey.ASTRO]: FeatureFlagsAstroInstructions, [SDKKey.BUBBLE]: FeatureFlagsBubbleInstructions, + [SDKKey.DJANGO]: FeatureFlagsDjangoInstructions, [SDKKey.FLUTTER]: FeatureFlagsFlutterInstructions, [SDKKey.FRAMER]: FeatureFlagsFramerInstructions, [SDKKey.GO]: FeatureFlagsGoInstructions, @@ -44,5 +49,7 @@ export const FeatureFlagsSDKInstructions: SDKInstructionsMap = { [SDKKey.REACT_NATIVE]: FeatureFlagsRNInstructions, [SDKKey.REMIX]: FeatureFlagsRemixJSInstructions, [SDKKey.RUBY]: FeatureFlagsRubyInstructions, - // add rust, gatsby, nuxt, vue, svelte, and others here + [SDKKey.SVELTE]: FeatureFlagsSvelteInstructions, + [SDKKey.VUE_JS]: FeatureFlagsVueInstructions, + [SDKKey.WEBFLOW]: FeatureFlagsWebflowInstructions, } diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/django.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/django.tsx new file mode 100644 index 0000000000000..6f6e3043e9377 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/django.tsx @@ -0,0 +1,13 @@ +import { SDKKey } from '~/types' + +import { SDKInstallDjangoInstructions } from '../sdk-install-instructions' +import { FlagImplementationSnippet } from './flagImplementationSnippet' + +export function FeatureFlagsDjangoInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/index.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/index.tsx index 94df56bf9395a..83d8dd502923b 100644 --- a/frontend/src/scenes/onboarding/sdks/feature-flags/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/index.tsx @@ -3,6 +3,7 @@ export * from './angular' export * from './api' export * from './astro' export * from './bubble' +export * from './django' export * from './flutter' export * from './framer' export * from './go' @@ -18,3 +19,6 @@ export * from './react' export * from './react-native' export * from './remix' export * from './ruby' +export * from './svelte' +export * from './vue' +export * from './webflow' diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/remix.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/remix.tsx index 6ff3103f58751..3ed90cab39edc 100644 --- a/frontend/src/scenes/onboarding/sdks/feature-flags/remix.tsx +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/remix.tsx @@ -9,7 +9,7 @@ export function FeatureFlagsRemixJSInstructions(): JSX.Element { <>

Client-side rendering

- +

Server-side rendering

Install

diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/svelte.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/svelte.tsx new file mode 100644 index 0000000000000..74349718ac517 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/svelte.tsx @@ -0,0 +1,21 @@ +import { SDKKey } from '~/types' + +import { NodeInstallSnippet, NodeSetupSnippet } from '../sdk-install-instructions' +import { SDKInstallSvelteJSInstructions } from '../sdk-install-instructions/svelte' +import { FlagImplementationSnippet } from './flagImplementationSnippet' + +export function FeatureFlagsSvelteInstructions(): JSX.Element { + return ( + <> + +

Client-side rendering

+ +

Server-side rendering

+

Install

+ +

Configure

+ + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/vue.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/vue.tsx new file mode 100644 index 0000000000000..eec3c3d13f093 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/vue.tsx @@ -0,0 +1,13 @@ +import { SDKKey } from '~/types' + +import { SDKInstallVueInstructions } from '../sdk-install-instructions/vue' +import { FlagImplementationSnippet } from './flagImplementationSnippet' + +export function FeatureFlagsVueInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/feature-flags/webflow.tsx b/frontend/src/scenes/onboarding/sdks/feature-flags/webflow.tsx new file mode 100644 index 0000000000000..3f4cbf0c157a7 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/feature-flags/webflow.tsx @@ -0,0 +1,13 @@ +import { SDKKey } from '~/types' + +import { SDKInstallWebflowInstructions } from '../sdk-install-instructions/webflow' +import { FlagImplementationSnippet } from './flagImplementationSnippet' + +export function FeatureFlagsWebflowInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/ProductAnalyticsSDKInstructions.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/ProductAnalyticsSDKInstructions.tsx index 96552ce6e8b9a..d435dc8bfa3ad 100644 --- a/frontend/src/scenes/onboarding/sdks/product-analytics/ProductAnalyticsSDKInstructions.tsx +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/ProductAnalyticsSDKInstructions.tsx @@ -8,6 +8,7 @@ import { ProductAnalyticsAPIInstructions, ProductAnalyticsAstroInstructions, ProductAnalyticsBubbleInstructions, + ProductAnalyticsDjangoInstructions, ProductAnalyticsElixirInstructions, ProductAnalyticsFlutterInstructions, ProductAnalyticsFramerInstructions, @@ -22,6 +23,9 @@ import { ProductAnalyticsRemixJSInstructions, ProductAnalyticsRNInstructions, ProductAnalyticsRubyInstructions, + ProductAnalyticsSvelteJSInstructions, + ProductAnalyticsVueInstructions, + ProductAnalyticsWebflowInstructions, } from '.' export const ProductAnalyticsSDKInstructions: SDKInstructionsMap = { @@ -31,6 +35,7 @@ export const ProductAnalyticsSDKInstructions: SDKInstructionsMap = { [SDKKey.API]: ProductAnalyticsAPIInstructions, [SDKKey.ASTRO]: ProductAnalyticsAstroInstructions, [SDKKey.BUBBLE]: ProductAnalyticsBubbleInstructions, + [SDKKey.DJANGO]: ProductAnalyticsDjangoInstructions, [SDKKey.ELIXIR]: ProductAnalyticsElixirInstructions, [SDKKey.FLUTTER]: ProductAnalyticsFlutterInstructions, [SDKKey.FRAMER]: ProductAnalyticsFramerInstructions, @@ -46,4 +51,7 @@ export const ProductAnalyticsSDKInstructions: SDKInstructionsMap = { [SDKKey.REACT_NATIVE]: ProductAnalyticsRNInstructions, [SDKKey.REMIX]: ProductAnalyticsRemixJSInstructions, [SDKKey.RUBY]: ProductAnalyticsRubyInstructions, + [SDKKey.SVELTE]: ProductAnalyticsSvelteJSInstructions, + [SDKKey.VUE_JS]: ProductAnalyticsVueInstructions, + [SDKKey.WEBFLOW]: ProductAnalyticsWebflowInstructions, } diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/django.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/django.tsx new file mode 100644 index 0000000000000..8729c42c514a1 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/django.tsx @@ -0,0 +1,21 @@ +import { CodeSnippet, Language } from 'lib/components/CodeSnippet' + +import { SDKInstallDjangoInstructions } from '../sdk-install-instructions' + +function DjangoCaptureSnippet(): JSX.Element { + return ( + {`import posthog + +posthog.capture('test-id', 'test-event')`} + ) +} + +export function ProductAnalyticsDjangoInstructions(): JSX.Element { + return ( + <> + +

Send an Event

+ + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/index.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/index.tsx index e3364337bf72c..bf5c8678d04a1 100644 --- a/frontend/src/scenes/onboarding/sdks/product-analytics/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/index.tsx @@ -3,6 +3,7 @@ export * from './angular' export * from './api' export * from './astro' export * from './bubble' +export * from './django' export * from './elixir' export * from './flutter' export * from './framer' @@ -19,3 +20,6 @@ export * from './python' export * from './react-native' export * from './remix' export * from './ruby' +export * from './svelte' +export * from './vue' +export * from './webflow' diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/svelte.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/svelte.tsx new file mode 100644 index 0000000000000..8c60a6e20ee6a --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/svelte.tsx @@ -0,0 +1,11 @@ +import { SDKInstallSvelteJSInstructions } from '../sdk-install-instructions/svelte' +import { ProductAnalyticsAllJSFinalSteps } from './AllJSFinalSteps' + +export function ProductAnalyticsSvelteJSInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/vue.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/vue.tsx new file mode 100644 index 0000000000000..f4646bb7867c2 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/vue.tsx @@ -0,0 +1,11 @@ +import { SDKInstallVueInstructions } from '../sdk-install-instructions/vue' +import { ProductAnalyticsAllJSFinalSteps } from './AllJSFinalSteps' + +export function ProductAnalyticsVueInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/product-analytics/webflow.tsx b/frontend/src/scenes/onboarding/sdks/product-analytics/webflow.tsx new file mode 100644 index 0000000000000..3edc373793c54 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/product-analytics/webflow.tsx @@ -0,0 +1,11 @@ +import { SDKInstallWebflowInstructions } from '../sdk-install-instructions/webflow' +import { ProductAnalyticsAllJSFinalSteps } from './AllJSFinalSteps' + +export function ProductAnalyticsWebflowInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/django.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/django.tsx new file mode 100644 index 0000000000000..aee7182c84c6a --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/django.tsx @@ -0,0 +1,55 @@ +import { useValues } from 'kea' +import { CodeSnippet, Language } from 'lib/components/CodeSnippet' +import { apiHostOrigin } from 'lib/utils/apiHost' +import { teamLogic } from 'scenes/teamLogic' + +function DjangoInstallSnippet(): JSX.Element { + return pip install posthog +} + +function DjangoAppConfigSnippet(): JSX.Element { + const { currentTeam } = useValues(teamLogic) + + return ( + + {`from django.apps import AppConfig +import posthog + +class YourAppConfig(AppConfig): + name = "your_app_name" + def ready(self): + posthog.api_key = '${currentTeam?.api_token}' + posthog.host = '${apiHostOrigin()}'`} + + ) +} + +function DjangoSettingsSnippet(): JSX.Element { + return ( + + {`INSTALLED_APPS = [ + # other apps + 'your_app_name.apps.MyAppConfig', # Add your app config +] `} + + ) +} + +export function SDKInstallDjangoInstructions(): JSX.Element { + return ( + <> +

Install

+ +

Configure

+

+ Set the PostHog API key and host in your AppConfig in apps.py so that's it's + available everywhere: +

+ +

+ Next, if you haven't done so already, make sure you add your AppConfig to your{' '} + settings.py under INSTALLED_APPS: + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx index 5bfe78571d5fe..45ffdf34a9919 100644 --- a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/index.tsx @@ -2,6 +2,7 @@ export * from './android' export * from './angular' export * from './astro' export * from './bubble' +export * from './django' export * from './elixir' export * from './flutter' export * from './framer' @@ -16,3 +17,6 @@ export * from './python' export * from './react-native' export * from './remix' export * from './ruby' +export * from './svelte' +export * from './vue' +export * from './webflow' diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/svelte.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/svelte.tsx new file mode 100644 index 0000000000000..141de4ab8acc3 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/svelte.tsx @@ -0,0 +1,49 @@ +import { Link } from '@posthog/lemon-ui' +import { useValues } from 'kea' +import { CodeSnippet, Language } from 'lib/components/CodeSnippet' +import { apiHostOrigin } from 'lib/utils/apiHost' +import { teamLogic } from 'scenes/teamLogic' + +import { JSInstallSnippet } from './js-web' + +function SvelteAppClientCodeSnippet(): JSX.Element { + const { currentTeam } = useValues(teamLogic) + + return ( + + {`import posthog from 'posthog-js' +import { browser } from '$app/environment'; + +export const load = async () => { + + if (browser) { + posthog.init( + '${currentTeam?.api_token}', + { api_host: "${apiHostOrigin()}" } + ) + } + return +};`} + + ) +} + +export function SDKInstallSvelteJSInstructions(): JSX.Element { + return ( + <> +

Install posthog-js using your package manager

+ + +

Initialize

+

+ If you haven't created a root{' '} + + layout + {' '} + already, create a new file called +layout.js in your src/routes folder. In + this file, check the environment is the browser, and initialize PostHog if so: +

+ + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/vue.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/vue.tsx new file mode 100644 index 0000000000000..9bd3eb224ec10 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/vue.tsx @@ -0,0 +1,78 @@ +import { useValues } from 'kea' +import { CodeSnippet, Language } from 'lib/components/CodeSnippet' +import { Link } from 'lib/lemon-ui/Link' +import { apiHostOrigin } from 'lib/utils/apiHost' +import { teamLogic } from 'scenes/teamLogic' + +import { JSInstallSnippet } from './js-web' + +function VueCreatePluginsFileSnippet(): JSX.Element { + return ( + + {`mkdir plugins #skip if you already have one +cd plugins +touch posthog.js`} + + ) +} + +function VuePluginsCodeSnippet(): JSX.Element { + const { currentTeam } = useValues(teamLogic) + + return ( + + {`//./plugins/posthog.js +import posthog from "posthog-js"; + +export default { + install(app) { + app.config.globalProperties.$posthog = posthog.init( + '${currentTeam?.api_token}', + { + api_host: '${apiHostOrigin()}', + } + ); + }, +};`} + + ) +} + +function VueActivatePluginSnippet(): JSX.Element { + return ( + + {`//main.js +import { createApp } from 'vue' +import App from './App.vue' +import posthogPlugin from "./plugins/posthog"; //import the plugin. + +const app = createApp(App); + +app.use(posthogPlugin); //install the plugin +app.mount('#app')`} + + ) +} + +export function SDKInstallVueInstructions(): JSX.Element { + return ( + <> +

+ The below guide is for integrating using plugins in Vue versions 3 and above. For integrating PostHog + using Provide/inject, Vue.prototype, or versions 2.7 and below, see our{' '} + Vue docs +

+

Install posthog-js using your package manager

+ +

Create a plugin

+

+ Create a new file posthog.js in your plugins directory: +

+ + Add the following code to posthog.js: + +

Activate your plugin

+ + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/webflow.tsx b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/webflow.tsx new file mode 100644 index 0000000000000..c0f45d721f6b1 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/sdk-install-instructions/webflow.tsx @@ -0,0 +1,24 @@ +import { JSSnippet } from 'lib/components/JSSnippet' + +export function SDKInstallWebflowInstructions(): JSX.Element { + return ( + <> +

Install the PostHog web snippet

+

First copy your web snippet:

+ +

+ Go to your Webflow site settings by clicking on the menu icon in the top left. If you haven’t already, + sign up for at least the Basic site plan. This enables you to add custom code. Then: +

+
    +
  1. + Go to the Custom code tab in site settings. +
  2. +
  3. + In the Head code section, paste your PostHog snippet and press save. +
  4. +
  5. Publish your site.
  6. +
+ + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx index 25b8956d50f9a..b8fc50a5bd38a 100644 --- a/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx +++ b/frontend/src/scenes/onboarding/sdks/session-replay/SessionReplaySDKInstructions.tsx @@ -11,6 +11,9 @@ import { NuxtJSInstructions, ReactInstructions, RemixInstructions, + SvelteInstructions, + VueInstructions, + WebflowInstructions, } from '.' export const SessionReplaySDKInstructions: SDKInstructionsMap = { @@ -24,4 +27,7 @@ export const SessionReplaySDKInstructions: SDKInstructionsMap = { [SDKKey.NUXT_JS]: NuxtJSInstructions, [SDKKey.REACT]: ReactInstructions, [SDKKey.REMIX]: RemixInstructions, + [SDKKey.SVELTE]: SvelteInstructions, + [SDKKey.VUE_JS]: VueInstructions, + [SDKKey.WEBFLOW]: WebflowInstructions, } diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx index 7f4f03520b7ac..a1fbaef355a9c 100644 --- a/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/session-replay/index.tsx @@ -8,3 +8,6 @@ export * from './next-js' export * from './nuxt' export * from './react' export * from './remix' +export * from './svelte' +export * from './vue' +export * from './webflow' diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/svelte.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/svelte.tsx new file mode 100644 index 0000000000000..5908939d2ba18 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/session-replay/svelte.tsx @@ -0,0 +1,11 @@ +import { SDKInstallSvelteJSInstructions } from '../sdk-install-instructions/svelte' +import { SessionReplayFinalSteps } from '../shared-snippets' + +export function SvelteInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/vue.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/vue.tsx new file mode 100644 index 0000000000000..3e783a11ba9fb --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/session-replay/vue.tsx @@ -0,0 +1,11 @@ +import { SDKInstallVueInstructions } from '../sdk-install-instructions' +import { SessionReplayFinalSteps } from '../shared-snippets' + +export function VueInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/session-replay/webflow.tsx b/frontend/src/scenes/onboarding/sdks/session-replay/webflow.tsx new file mode 100644 index 0000000000000..081182e59adf3 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/session-replay/webflow.tsx @@ -0,0 +1,11 @@ +import { SDKInstallWebflowInstructions } from '../sdk-install-instructions' +import { SessionReplayFinalSteps } from '../shared-snippets' + +export function WebflowInstructions(): JSX.Element { + return ( + <> + + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/surveys/SurveysSDKInstructions.tsx b/frontend/src/scenes/onboarding/sdks/surveys/SurveysSDKInstructions.tsx index 66d585ed66188..c0ee501fc6fe7 100644 --- a/frontend/src/scenes/onboarding/sdks/surveys/SurveysSDKInstructions.tsx +++ b/frontend/src/scenes/onboarding/sdks/surveys/SurveysSDKInstructions.tsx @@ -11,6 +11,9 @@ import { NuxtJSInstructions, ReactInstructions, RemixInstructions, + SvelteInstructions, + VueInstructions, + WebflowInstructions, } from '.' export const SurveysSDKInstructions: SDKInstructionsMap = { @@ -24,4 +27,7 @@ export const SurveysSDKInstructions: SDKInstructionsMap = { [SDKKey.NUXT_JS]: NuxtJSInstructions, [SDKKey.REACT]: ReactInstructions, [SDKKey.REMIX]: RemixInstructions, + [SDKKey.SVELTE]: SvelteInstructions, + [SDKKey.VUE_JS]: VueInstructions, + [SDKKey.WEBFLOW]: WebflowInstructions, } diff --git a/frontend/src/scenes/onboarding/sdks/surveys/index.tsx b/frontend/src/scenes/onboarding/sdks/surveys/index.tsx index 7f4f03520b7ac..a1fbaef355a9c 100644 --- a/frontend/src/scenes/onboarding/sdks/surveys/index.tsx +++ b/frontend/src/scenes/onboarding/sdks/surveys/index.tsx @@ -8,3 +8,6 @@ export * from './next-js' export * from './nuxt' export * from './react' export * from './remix' +export * from './svelte' +export * from './vue' +export * from './webflow' diff --git a/frontend/src/scenes/onboarding/sdks/surveys/svelte.tsx b/frontend/src/scenes/onboarding/sdks/surveys/svelte.tsx new file mode 100644 index 0000000000000..3faf6bbbd394f --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/surveys/svelte.tsx @@ -0,0 +1,9 @@ +import { SDKInstallSvelteJSInstructions } from '../sdk-install-instructions/svelte' + +export function SvelteInstructions(): JSX.Element { + return ( + <> + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/surveys/vue.tsx b/frontend/src/scenes/onboarding/sdks/surveys/vue.tsx new file mode 100644 index 0000000000000..1714535074989 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/surveys/vue.tsx @@ -0,0 +1,9 @@ +import { SDKInstallVueInstructions } from '../sdk-install-instructions/vue' + +export function VueInstructions(): JSX.Element { + return ( + <> + + + ) +} diff --git a/frontend/src/scenes/onboarding/sdks/surveys/webflow.tsx b/frontend/src/scenes/onboarding/sdks/surveys/webflow.tsx new file mode 100644 index 0000000000000..d7431d7b7d307 --- /dev/null +++ b/frontend/src/scenes/onboarding/sdks/surveys/webflow.tsx @@ -0,0 +1,9 @@ +import { SDKInstallWebflowInstructions } from '../sdk-install-instructions/webflow' + +export function WebflowInstructions(): JSX.Element { + return ( + <> + + + ) +} diff --git a/frontend/src/types.ts b/frontend/src/types.ts index b057670539150..00ad4a8cdbfe7 100644 --- a/frontend/src/types.ts +++ b/frontend/src/types.ts @@ -3744,6 +3744,7 @@ export enum SDKKey { ASTRO = 'astro', API = 'api', BUBBLE = 'bubble', + DJANGO = 'django', DOCUSAURUS = 'docusaurus', ELIXIR = 'elixir', FRAMER = 'framer', @@ -3771,7 +3772,9 @@ export enum SDKKey { SEGMENT = 'segment', SENTRY = 'sentry', SHOPIFY = 'shopify', + SVELTE = 'svelte', VUE_JS = 'vuejs', + WEBFLOW = 'webflow', WORDPRESS = 'wordpress', }