@se-studio/hubspot 0.0.0-next16-20260822103555
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +509 -0
- package/README.md +146 -0
- package/dist/external/createHubspotFormExternalRenderer.d.ts +23 -0
- package/dist/external/createHubspotFormExternalRenderer.d.ts.map +1 -0
- package/dist/external/createHubspotFormExternalRenderer.js +26 -0
- package/dist/external/createHubspotFormExternalRenderer.js.map +1 -0
- package/dist/forms/client/HubspotDynamicForm.d.ts +27 -0
- package/dist/forms/client/HubspotDynamicForm.d.ts.map +1 -0
- package/dist/forms/client/HubspotDynamicForm.js +113 -0
- package/dist/forms/client/HubspotDynamicForm.js.map +1 -0
- package/dist/forms/client/dependentFields.d.ts +11 -0
- package/dist/forms/client/dependentFields.d.ts.map +1 -0
- package/dist/forms/client/dependentFields.js +39 -0
- package/dist/forms/client/dependentFields.js.map +1 -0
- package/dist/forms/client/getCookieValue.d.ts +2 -0
- package/dist/forms/client/getCookieValue.d.ts.map +1 -0
- package/dist/forms/client/getCookieValue.js +8 -0
- package/dist/forms/client/getCookieValue.js.map +1 -0
- package/dist/forms/client/marketingParams.d.ts +28 -0
- package/dist/forms/client/marketingParams.d.ts.map +1 -0
- package/dist/forms/client/marketingParams.js +164 -0
- package/dist/forms/client/marketingParams.js.map +1 -0
- package/dist/forms/client/navigateAfterSubmit.d.ts +8 -0
- package/dist/forms/client/navigateAfterSubmit.d.ts.map +1 -0
- package/dist/forms/client/navigateAfterSubmit.js +20 -0
- package/dist/forms/client/navigateAfterSubmit.js.map +1 -0
- package/dist/forms/client/renderHubspotField.d.ts +11 -0
- package/dist/forms/client/renderHubspotField.d.ts.map +1 -0
- package/dist/forms/client/renderHubspotField.js +61 -0
- package/dist/forms/client/renderHubspotField.js.map +1 -0
- package/dist/forms/client/useHubspotSubmit.d.ts +25 -0
- package/dist/forms/client/useHubspotSubmit.d.ts.map +1 -0
- package/dist/forms/client/useHubspotSubmit.js +97 -0
- package/dist/forms/client/useHubspotSubmit.js.map +1 -0
- package/dist/forms/server/getFormDefinition.d.ts +7 -0
- package/dist/forms/server/getFormDefinition.d.ts.map +1 -0
- package/dist/forms/server/getFormDefinition.js +24 -0
- package/dist/forms/server/getFormDefinition.js.map +1 -0
- package/dist/forms/server/hubspotFormTag.d.ts +3 -0
- package/dist/forms/server/hubspotFormTag.d.ts.map +1 -0
- package/dist/forms/server/hubspotFormTag.js +5 -0
- package/dist/forms/server/hubspotFormTag.js.map +1 -0
- package/dist/forms/server/mapApiResponse.d.ts +4 -0
- package/dist/forms/server/mapApiResponse.d.ts.map +1 -0
- package/dist/forms/server/mapApiResponse.js +105 -0
- package/dist/forms/server/mapApiResponse.js.map +1 -0
- package/dist/forms/server/submitForm.d.ts +8 -0
- package/dist/forms/server/submitForm.d.ts.map +1 -0
- package/dist/forms/server/submitForm.js +30 -0
- package/dist/forms/server/submitForm.js.map +1 -0
- package/dist/forms/types.d.ts +102 -0
- package/dist/forms/types.d.ts.map +1 -0
- package/dist/forms/types.js +2 -0
- package/dist/forms/types.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -0
- package/dist/tracking/HubSpotAnalyticsAdapter.d.ts +23 -0
- package/dist/tracking/HubSpotAnalyticsAdapter.d.ts.map +1 -0
- package/dist/tracking/HubSpotAnalyticsAdapter.js +84 -0
- package/dist/tracking/HubSpotAnalyticsAdapter.js.map +1 -0
- package/dist/tracking/createHubSpotBootstrapScript.d.ts +9 -0
- package/dist/tracking/createHubSpotBootstrapScript.d.ts.map +1 -0
- package/dist/tracking/createHubSpotBootstrapScript.js +17 -0
- package/dist/tracking/createHubSpotBootstrapScript.js.map +1 -0
- package/docs/llms.md +46 -0
- package/package.json +76 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline script for beforeInteractive: initialises _hsq and sets the path
|
|
3
|
+
* before the HubSpot tracking script loads (SPA Mode B).
|
|
4
|
+
*
|
|
5
|
+
* Call with no args in root layouts (SSG-safe): uses `window.location.pathname`
|
|
6
|
+
* at script execution time. Pass an explicit pathname only for tests or rare cases.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createHubSpotBootstrapScript(pathname?: string): string;
|
|
9
|
+
//# sourceMappingURL=createHubSpotBootstrapScript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHubSpotBootstrapScript.d.ts","sourceRoot":"","sources":["../../src/tracking/createHubSpotBootstrapScript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAStE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline script for beforeInteractive: initialises _hsq and sets the path
|
|
3
|
+
* before the HubSpot tracking script loads (SPA Mode B).
|
|
4
|
+
*
|
|
5
|
+
* Call with no args in root layouts (SSG-safe): uses `window.location.pathname`
|
|
6
|
+
* at script execution time. Pass an explicit pathname only for tests or rare cases.
|
|
7
|
+
*/
|
|
8
|
+
export function createHubSpotBootstrapScript(pathname) {
|
|
9
|
+
if (pathname === undefined) {
|
|
10
|
+
return `var _hsq = window._hsq = window._hsq || [];
|
|
11
|
+
_hsq.push(['setPath', window.location.pathname]);`;
|
|
12
|
+
}
|
|
13
|
+
const safePath = pathname.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
|
|
14
|
+
return `var _hsq = window._hsq = window._hsq || [];
|
|
15
|
+
_hsq.push(['setPath', '${safePath}']);`;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=createHubSpotBootstrapScript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHubSpotBootstrapScript.js","sourceRoot":"","sources":["../../src/tracking/createHubSpotBootstrapScript.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,QAAiB;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO;kDACuC,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtE,OAAO;yBACgB,QAAQ,MAAM,CAAC;AACxC,CAAC"}
|
package/docs/llms.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# @se-studio/hubspot — LLM reference
|
|
2
|
+
|
|
3
|
+
## Exports
|
|
4
|
+
|
|
5
|
+
| Import | Contents |
|
|
6
|
+
|--------|----------|
|
|
7
|
+
| `@se-studio/hubspot` | `HubSpotAnalyticsAdapter`, `createHubSpotBootstrapScript`, `HubspotDynamicForm`, `buildDefaultValues`, `captureMarketingParams`, `getMarketingParams`, `applyMarketingParamsToHiddenFields`, `useHubspotSubmit`, `navigateAfterSubmit`, types |
|
|
8
|
+
| `@se-studio/hubspot/server` | `getHubspotFormDefinition`, `submitHubspotForm`, `hubspotFormTag` |
|
|
9
|
+
| `@se-studio/hubspot/external` | `createHubspotFormExternalRenderer` |
|
|
10
|
+
|
|
11
|
+
## CMS external component
|
|
12
|
+
|
|
13
|
+
- `externalComponentType`: `"Hubspot form"`
|
|
14
|
+
- `data.formId` (required): HubSpot form GUID
|
|
15
|
+
- `data.portalId` (optional): defaults to `HUBSPOT_PORTAL_ID`
|
|
16
|
+
- Hidden UTM fields: `HubspotDynamicForm` auto-fills empty hidden fields from URL query + first-touch `sessionStorage` (`utm_source`, etc.). CMS `hiddenFields` override. Forks should import `buildDefaultValues` / `applyMarketingParamsToHiddenFields` rather than reimplementing.
|
|
17
|
+
|
|
18
|
+
## Post-submit
|
|
19
|
+
|
|
20
|
+
Not native HubSpot embed — client must handle redirect/thank-you.
|
|
21
|
+
|
|
22
|
+
Priority: `redirectUrlOverride` → submit `redirectUri` → form `postSubmitAction.redirect_url` → thank-you / inline message.
|
|
23
|
+
|
|
24
|
+
- External URLs → `window.location.assign` (via `navigateAfterSubmit`)
|
|
25
|
+
- Same-origin → `router.push`
|
|
26
|
+
- `onSuccess` is a **side-effect only** — does not suppress redirect/thank-you
|
|
27
|
+
- Preserve full `redirectUri` from HubSpot (do not strip host)
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
useHubspotSubmit({ portalId, formDefinition, onSuccess, redirectUrlOverride })
|
|
31
|
+
// or
|
|
32
|
+
<HubspotDynamicForm redirectUrlOverride={url} onSuccess={fn} ... />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
After HubSpot form editor changes, revalidate: `revalidateTag(hubspotFormTag(formId), { expire: 0 })` (definitions cached ~1h). Do not use `'max'` — that is stale-while-revalidate.
|
|
36
|
+
|
|
37
|
+
## Analytics
|
|
38
|
+
|
|
39
|
+
Use with `CompositeAnalyticsAdapter` + `AnalyticsPageTracker` from `@se-studio/core-ui`. HubSpot SPA Mode B: bootstrap `setPath` before script load; `AnalyticsPageTracker` skips first mount.
|
|
40
|
+
|
|
41
|
+
**SSG layouts:** call `createHubSpotBootstrapScript()` with **no args** in root layout. Do **not** use `headers()` or middleware to pass pathname — that breaks on-demand SSG routes in `next start`.
|
|
42
|
+
|
|
43
|
+
## Env
|
|
44
|
+
|
|
45
|
+
- `HUBSPOT_PORTAL_ID` — tracking + submit URL
|
|
46
|
+
- `HUBSPOT_PAT` — Marketing Forms API (server only)
|
package/package.json
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@se-studio/hubspot",
|
|
3
|
+
"version": "0.0.0-next16-20260822103555",
|
|
4
|
+
"description": "HubSpot tracking and API-driven form rendering for Next.js marketing sites",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/Something-Else-Studio/se-core-product",
|
|
8
|
+
"directory": "packages/hubspot"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./server": {
|
|
20
|
+
"types": "./dist/server.d.ts",
|
|
21
|
+
"import": "./dist/server.js"
|
|
22
|
+
},
|
|
23
|
+
"./external": {
|
|
24
|
+
"types": "./dist/external/createHubspotFormExternalRenderer.d.ts",
|
|
25
|
+
"import": "./dist/external/createHubspotFormExternalRenderer.js"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"*.md",
|
|
31
|
+
"docs"
|
|
32
|
+
],
|
|
33
|
+
"keywords": [
|
|
34
|
+
"hubspot",
|
|
35
|
+
"forms",
|
|
36
|
+
"analytics",
|
|
37
|
+
"nextjs",
|
|
38
|
+
"contentful",
|
|
39
|
+
"typescript",
|
|
40
|
+
"react"
|
|
41
|
+
],
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"next": ">=15.5.0 <17",
|
|
44
|
+
"react": "^19.0.0",
|
|
45
|
+
"react-dom": "^19.0.0",
|
|
46
|
+
"@se-studio/core-data-types": "1.12.0",
|
|
47
|
+
"@se-studio/core-ui": "0.0.0-next16-20260822103555"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"@hubspot/api-client": "^14.0.1",
|
|
51
|
+
"html-entities": "^2.6.0",
|
|
52
|
+
"server-only": "0.0.1"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@biomejs/biome": "^2.5.5",
|
|
56
|
+
"@types/node": "^24.13.3",
|
|
57
|
+
"@types/react": "^19.2.17",
|
|
58
|
+
"@types/react-dom": "^19.2.3",
|
|
59
|
+
"jsdom": "^29.1.1",
|
|
60
|
+
"next": "^16.3.1",
|
|
61
|
+
"react": "^19.2.8",
|
|
62
|
+
"react-dom": "^19.2.8",
|
|
63
|
+
"typescript": "^6.0.3",
|
|
64
|
+
"vitest": "^4.1.10",
|
|
65
|
+
"@se-studio/core-data-types": "1.12.0",
|
|
66
|
+
"@se-studio/core-ui": "0.0.0-next16-20260822103555"
|
|
67
|
+
},
|
|
68
|
+
"scripts": {
|
|
69
|
+
"build": "tsc --project tsconfig.build.json",
|
|
70
|
+
"dev": "tsc --project tsconfig.build.json --watch",
|
|
71
|
+
"type-check": "tsc --noEmit",
|
|
72
|
+
"lint": "biome lint .",
|
|
73
|
+
"test": "vitest run",
|
|
74
|
+
"clean": "rm -rf dist .turbo *.tsbuildinfo"
|
|
75
|
+
}
|
|
76
|
+
}
|