@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.
Files changed (72) hide show
  1. package/CHANGELOG.md +509 -0
  2. package/README.md +146 -0
  3. package/dist/external/createHubspotFormExternalRenderer.d.ts +23 -0
  4. package/dist/external/createHubspotFormExternalRenderer.d.ts.map +1 -0
  5. package/dist/external/createHubspotFormExternalRenderer.js +26 -0
  6. package/dist/external/createHubspotFormExternalRenderer.js.map +1 -0
  7. package/dist/forms/client/HubspotDynamicForm.d.ts +27 -0
  8. package/dist/forms/client/HubspotDynamicForm.d.ts.map +1 -0
  9. package/dist/forms/client/HubspotDynamicForm.js +113 -0
  10. package/dist/forms/client/HubspotDynamicForm.js.map +1 -0
  11. package/dist/forms/client/dependentFields.d.ts +11 -0
  12. package/dist/forms/client/dependentFields.d.ts.map +1 -0
  13. package/dist/forms/client/dependentFields.js +39 -0
  14. package/dist/forms/client/dependentFields.js.map +1 -0
  15. package/dist/forms/client/getCookieValue.d.ts +2 -0
  16. package/dist/forms/client/getCookieValue.d.ts.map +1 -0
  17. package/dist/forms/client/getCookieValue.js +8 -0
  18. package/dist/forms/client/getCookieValue.js.map +1 -0
  19. package/dist/forms/client/marketingParams.d.ts +28 -0
  20. package/dist/forms/client/marketingParams.d.ts.map +1 -0
  21. package/dist/forms/client/marketingParams.js +164 -0
  22. package/dist/forms/client/marketingParams.js.map +1 -0
  23. package/dist/forms/client/navigateAfterSubmit.d.ts +8 -0
  24. package/dist/forms/client/navigateAfterSubmit.d.ts.map +1 -0
  25. package/dist/forms/client/navigateAfterSubmit.js +20 -0
  26. package/dist/forms/client/navigateAfterSubmit.js.map +1 -0
  27. package/dist/forms/client/renderHubspotField.d.ts +11 -0
  28. package/dist/forms/client/renderHubspotField.d.ts.map +1 -0
  29. package/dist/forms/client/renderHubspotField.js +61 -0
  30. package/dist/forms/client/renderHubspotField.js.map +1 -0
  31. package/dist/forms/client/useHubspotSubmit.d.ts +25 -0
  32. package/dist/forms/client/useHubspotSubmit.d.ts.map +1 -0
  33. package/dist/forms/client/useHubspotSubmit.js +97 -0
  34. package/dist/forms/client/useHubspotSubmit.js.map +1 -0
  35. package/dist/forms/server/getFormDefinition.d.ts +7 -0
  36. package/dist/forms/server/getFormDefinition.d.ts.map +1 -0
  37. package/dist/forms/server/getFormDefinition.js +24 -0
  38. package/dist/forms/server/getFormDefinition.js.map +1 -0
  39. package/dist/forms/server/hubspotFormTag.d.ts +3 -0
  40. package/dist/forms/server/hubspotFormTag.d.ts.map +1 -0
  41. package/dist/forms/server/hubspotFormTag.js +5 -0
  42. package/dist/forms/server/hubspotFormTag.js.map +1 -0
  43. package/dist/forms/server/mapApiResponse.d.ts +4 -0
  44. package/dist/forms/server/mapApiResponse.d.ts.map +1 -0
  45. package/dist/forms/server/mapApiResponse.js +105 -0
  46. package/dist/forms/server/mapApiResponse.js.map +1 -0
  47. package/dist/forms/server/submitForm.d.ts +8 -0
  48. package/dist/forms/server/submitForm.d.ts.map +1 -0
  49. package/dist/forms/server/submitForm.js +30 -0
  50. package/dist/forms/server/submitForm.js.map +1 -0
  51. package/dist/forms/types.d.ts +102 -0
  52. package/dist/forms/types.d.ts.map +1 -0
  53. package/dist/forms/types.js +2 -0
  54. package/dist/forms/types.js.map +1 -0
  55. package/dist/index.d.ts +11 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +7 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/server.d.ts +7 -0
  60. package/dist/server.d.ts.map +1 -0
  61. package/dist/server.js +6 -0
  62. package/dist/server.js.map +1 -0
  63. package/dist/tracking/HubSpotAnalyticsAdapter.d.ts +23 -0
  64. package/dist/tracking/HubSpotAnalyticsAdapter.d.ts.map +1 -0
  65. package/dist/tracking/HubSpotAnalyticsAdapter.js +84 -0
  66. package/dist/tracking/HubSpotAnalyticsAdapter.js.map +1 -0
  67. package/dist/tracking/createHubSpotBootstrapScript.d.ts +9 -0
  68. package/dist/tracking/createHubSpotBootstrapScript.d.ts.map +1 -0
  69. package/dist/tracking/createHubSpotBootstrapScript.js +17 -0
  70. package/dist/tracking/createHubSpotBootstrapScript.js.map +1 -0
  71. package/docs/llms.md +46 -0
  72. 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
+ }