@heyo-sh/create-heyo-docs 1.0.0 → 2.0.0

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 (122) hide show
  1. package/deployments/cloudflare/astro/package.json +2 -1
  2. package/deployments/cloudflare/astro/src/env.d.ts +8 -0
  3. package/deployments/cloudflare/astro/src/pages/heyo-docs-internal/ai-chat.ts +32 -0
  4. package/deployments/cloudflare/next/app/heyo-docs-internal/ai-chat/route.ts +27 -0
  5. package/deployments/cloudflare/next/cloudflare-env.d.ts +7 -0
  6. package/deployments/cloudflare/react-router/app/cloudflare-env.d.ts +7 -0
  7. package/deployments/cloudflare/react-router/app/lib/cloudflare-context.ts +4 -0
  8. package/deployments/cloudflare/react-router/app/routes/ai-chat.ts +31 -0
  9. package/deployments/cloudflare/react-router/package.json +2 -1
  10. package/deployments/cloudflare/react-router/workers/app.ts +6 -2
  11. package/deployments/vercel/astro/package.json +1 -0
  12. package/dist/index.js +37 -16
  13. package/dist/project-name.d.ts +1 -1
  14. package/dist/project-name.d.ts.map +1 -1
  15. package/dist/scaffold.d.ts.map +1 -1
  16. package/dist/utils.d.ts.map +1 -1
  17. package/package.json +2 -2
  18. package/templates/astro/content/index.mdx +8 -0
  19. package/templates/astro/heyo-docs.config.ts +4 -48
  20. package/templates/astro/src/components/docs-app.tsx +30 -130
  21. package/templates/astro/src/heyo-docs-icons.tsx +3 -1
  22. package/templates/astro/src/layouts/docs-layout.astro +20 -504
  23. package/templates/astro/src/lib/docs.ts +3 -2
  24. package/templates/astro/src/lib/openapi-request.ts +6 -146
  25. package/templates/astro/src/pages/[...slug].astro +7 -15
  26. package/templates/astro/src/pages/[...slug].md.ts +4 -1
  27. package/templates/astro/src/pages/heyo-docs-internal/ai-chat.ts +10 -3
  28. package/templates/astro/src/pages/heyo-docs-internal/openapi-request.ts +6 -0
  29. package/templates/astro/src/pages/index.astro +18 -9
  30. package/templates/astro/src/pages/llms-full.txt.ts +1 -1
  31. package/templates/astro/src/pages/llms.txt.ts +1 -1
  32. package/templates/astro/src/pages/rss.xml.ts +1 -1
  33. package/templates/astro/src/pages/sitemap.xml.ts +2 -2
  34. package/templates/astro/src/virtual.d.ts +5 -5
  35. package/templates/next/app/[[...slug]]/page.tsx +10 -9
  36. package/templates/next/app/components/docs-app.tsx +28 -120
  37. package/templates/next/app/heyo-docs-icons.tsx +1 -1
  38. package/templates/next/app/heyo-docs-internal/ai-chat/route.ts +9 -2
  39. package/templates/next/app/heyo-docs-internal/markdown/[[...slug]]/route.ts +1 -1
  40. package/templates/next/app/layout.tsx +25 -444
  41. package/templates/next/app/lib/docs.ts +3 -3
  42. package/templates/next/app/lib/openapi-request.ts +4 -136
  43. package/templates/next/app/llms-full.txt/route.ts +1 -1
  44. package/templates/next/app/llms.txt/route.ts +1 -1
  45. package/templates/next/app/rss.xml/route.ts +1 -1
  46. package/templates/next/app/sitemap.xml/route.ts +1 -1
  47. package/templates/next/content/index.mdx +8 -0
  48. package/templates/next/heyo-docs.config.ts +3 -47
  49. package/templates/next/next.config.ts +7 -1
  50. package/templates/react-router/app/heyo-docs-icons.tsx +3 -1
  51. package/templates/react-router/app/root.tsx +28 -465
  52. package/templates/react-router/app/routes/ai-chat.ts +6 -2
  53. package/templates/react-router/app/routes/docs.tsx +22 -63
  54. package/templates/react-router/app/routes/home.tsx +6 -1
  55. package/templates/react-router/app/routes/llms-full.ts +1 -1
  56. package/templates/react-router/app/routes/llms.ts +1 -1
  57. package/templates/react-router/app/routes/markdown.ts +4 -1
  58. package/templates/react-router/app/routes/openapi-request.ts +11 -144
  59. package/templates/react-router/app/routes/rss.ts +1 -1
  60. package/templates/react-router/app/routes/sitemap.ts +5 -8
  61. package/templates/react-router/app/virtual.d.ts +5 -5
  62. package/templates/react-router/content/index.mdx +8 -0
  63. package/templates/react-router/heyo-docs.config.ts +4 -48
  64. package/templates/astro/content/api-overview.mdx +0 -20
  65. package/templates/astro/content/assets/local-architecture.svg +0 -22
  66. package/templates/astro/content/assets/quick-reference.txt +0 -5
  67. package/templates/astro/content/changelog.mdx +0 -38
  68. package/templates/astro/content/configuration.mdx +0 -117
  69. package/templates/astro/content/deploying.mdx +0 -57
  70. package/templates/astro/content/essentials/callouts.mdx +0 -34
  71. package/templates/astro/content/essentials/code-blocks.mdx +0 -43
  72. package/templates/astro/content/essentials/lists.mdx +0 -36
  73. package/templates/astro/content/essentials/tables.mdx +0 -30
  74. package/templates/astro/content/essentials/tabs.mdx +0 -40
  75. package/templates/astro/content/essentials/text-styling.mdx +0 -43
  76. package/templates/astro/content/getting-started.mdx +0 -16
  77. package/templates/astro/content/mdx-components.mdx +0 -44
  78. package/templates/astro/content/openapi-petstore.json +0 -160
  79. package/templates/astro/content/openapi.json +0 -278
  80. package/templates/astro/content/quickstart.mdx +0 -60
  81. package/templates/astro/src/components/theme-provider.tsx +0 -106
  82. package/templates/astro/src/lib/seo.ts +0 -221
  83. package/templates/astro/src/lib/theme.ts +0 -74
  84. package/templates/next/app/components/theme-provider.tsx +0 -93
  85. package/templates/next/app/lib/seo.ts +0 -189
  86. package/templates/next/app/lib/theme.ts +0 -61
  87. package/templates/next/content/api-overview.mdx +0 -20
  88. package/templates/next/content/assets/local-architecture.svg +0 -22
  89. package/templates/next/content/assets/quick-reference.txt +0 -5
  90. package/templates/next/content/changelog.mdx +0 -38
  91. package/templates/next/content/configuration.mdx +0 -117
  92. package/templates/next/content/deploying.mdx +0 -57
  93. package/templates/next/content/essentials/callouts.mdx +0 -34
  94. package/templates/next/content/essentials/code-blocks.mdx +0 -43
  95. package/templates/next/content/essentials/lists.mdx +0 -36
  96. package/templates/next/content/essentials/tables.mdx +0 -30
  97. package/templates/next/content/essentials/tabs.mdx +0 -40
  98. package/templates/next/content/essentials/text-styling.mdx +0 -43
  99. package/templates/next/content/getting-started.mdx +0 -16
  100. package/templates/next/content/mdx-components.mdx +0 -41
  101. package/templates/next/content/openapi-petstore.json +0 -160
  102. package/templates/next/content/openapi.json +0 -278
  103. package/templates/next/content/quickstart.mdx +0 -60
  104. package/templates/react-router/app/components/theme-provider.tsx +0 -106
  105. package/templates/react-router/app/lib/theme.ts +0 -74
  106. package/templates/react-router/content/api-overview.mdx +0 -20
  107. package/templates/react-router/content/assets/local-architecture.svg +0 -22
  108. package/templates/react-router/content/assets/quick-reference.txt +0 -5
  109. package/templates/react-router/content/changelog.mdx +0 -38
  110. package/templates/react-router/content/configuration.mdx +0 -117
  111. package/templates/react-router/content/deploying.mdx +0 -57
  112. package/templates/react-router/content/essentials/callouts.mdx +0 -34
  113. package/templates/react-router/content/essentials/code-blocks.mdx +0 -43
  114. package/templates/react-router/content/essentials/lists.mdx +0 -36
  115. package/templates/react-router/content/essentials/tables.mdx +0 -30
  116. package/templates/react-router/content/essentials/tabs.mdx +0 -40
  117. package/templates/react-router/content/essentials/text-styling.mdx +0 -43
  118. package/templates/react-router/content/getting-started.mdx +0 -16
  119. package/templates/react-router/content/mdx-components.mdx +0 -293
  120. package/templates/react-router/content/openapi-petstore.json +0 -160
  121. package/templates/react-router/content/openapi.json +0 -278
  122. package/templates/react-router/content/quickstart.mdx +0 -60
@@ -1,67 +1,13 @@
1
1
  ---
2
2
  import config from "../../heyo-docs.config";
3
- import { adobeAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/adobe";
4
- import { amplitudeAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/amplitude";
5
- import { clarityBootstrapScript } from "@heyo-sh/heyo-docs/integrations/analytics/clarity";
6
- import { clearbitAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/clearbit";
7
- import { fathomAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/fathom";
8
3
  import {
9
- googleAnalyticsBootstrapScript,
10
- googleAnalyticsScript,
11
- } from "@heyo-sh/heyo-docs/integrations/analytics/google-analytics";
12
- import {
13
- googleTagManagerBootstrapScript,
14
- googleTagManagerNoScriptUrl,
15
- } from "@heyo-sh/heyo-docs/integrations/analytics/google-tag-manager";
16
- import { heapBootstrapScript } from "@heyo-sh/heyo-docs/integrations/analytics/heap";
17
- import { hotjarBootstrapScript } from "@heyo-sh/heyo-docs/integrations/analytics/hotjar";
18
- import {
19
- logRocketBootstrapScript,
20
- logRocketScript,
21
- } from "@heyo-sh/heyo-docs/integrations/analytics/logrocket";
22
- import {
23
- mixpanelBootstrapScript,
24
- mixpanelScript,
25
- } from "@heyo-sh/heyo-docs/integrations/analytics/mixpanel";
26
- import {
27
- openpanelBootstrapScript,
28
- openpanelScript,
29
- } from "@heyo-sh/heyo-docs/integrations/analytics/openpanel";
30
- import { openReplayBootstrapScript } from "@heyo-sh/heyo-docs/integrations/analytics/openreplay";
31
- import { osanoConsentScript } from "@heyo-sh/heyo-docs/integrations/consent/osano";
32
- import {
33
- transcendConsentScript,
34
- transcendGoogleConsentModeDefaultsScript,
35
- } from "@heyo-sh/heyo-docs/integrations/consent/transcend";
36
- import { pirschAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/pirsch";
37
- import { plausibleAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/plausible";
38
- import {
39
- posthogApiHost,
40
- posthogBootstrapScript,
41
- posthogScript,
42
- } from "@heyo-sh/heyo-docs/integrations/analytics/posthog";
43
- import { rybbitAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/rybbit";
44
- import {
45
- swetrixBootstrapScript,
46
- swetrixScript,
47
- } from "@heyo-sh/heyo-docs/integrations/analytics/swetrix";
48
- import { chaskiqBootstrapScript } from "@heyo-sh/heyo-docs/integrations/support/chaskiq";
49
- import { chatwootBootstrapScript } from "@heyo-sh/heyo-docs/integrations/support/chatwoot";
50
- import {
51
- frontChatBootstrapScript,
52
- frontChatScript,
53
- } from "@heyo-sh/heyo-docs/integrations/support/front";
54
- import { intercomBootstrapScript } from "@heyo-sh/heyo-docs/integrations/support/intercom";
55
- import { papercupsBootstrapScript } from "@heyo-sh/heyo-docs/integrations/support/papercups";
56
- import { typebotBootstrapScript } from "@heyo-sh/heyo-docs/integrations/support/typebot";
57
- import { umamiAnalyticsScript } from "@heyo-sh/heyo-docs/integrations/analytics/umami";
58
- import {
59
- zammadBootstrapScript,
60
- zammadChatScript,
61
- } from "@heyo-sh/heyo-docs/integrations/support/zammad";
62
- import "../styles/app.css";
4
+ DEFAULT_THEME_STORAGE_KEY,
5
+ themeBootstrapScript,
6
+ } from "@heyo-sh/heyo-docs/theme/script";
7
+ import { IntegrationScripts } from "@heyo-sh/heyo-docs/integrations";
8
+ import { serializeJsonLd } from "@heyo-sh/heyo-docs/seo";
63
9
  import "virtual:heyo-docs-theme.css";
64
- import { getThemeScript, THEME_STORAGE_KEY } from "../lib/theme";
10
+ import "../styles/app.css";
65
11
 
66
12
  interface Props {
67
13
  title: string;
@@ -78,135 +24,16 @@ const {
78
24
  robots = "index, follow",
79
25
  structuredData,
80
26
  } = Astro.props;
81
- const jsonLd = JSON.stringify(structuredData).replace(/</g, "\\u003c");
27
+ const jsonLd = serializeJsonLd(structuredData);
82
28
  const hasChangelog = config.groups.some((group) => group.type === "changelog");
83
- const osano = config.integrations.consent.osano
84
- ? osanoConsentScript(config.integrations.consent.osano)
85
- : undefined;
86
- const transcend = config.integrations.consent.transcend
87
- ? transcendConsentScript(config.integrations.consent.transcend)
88
- : undefined;
89
- const transcendGoogleConsentDefaults =
90
- transcend &&
91
- (config.integrations.analytics.ga4 || config.integrations.analytics.gtm)
92
- ? transcendGoogleConsentModeDefaultsScript()
93
- : undefined;
94
- const adobe = config.integrations.analytics.adobe
95
- ? adobeAnalyticsScript(config.integrations.analytics.adobe)
96
- : undefined;
97
- const amplitude = config.integrations.analytics.amplitude
98
- ? amplitudeAnalyticsScript(config.integrations.analytics.amplitude)
99
- : undefined;
100
- const clarity = config.integrations.analytics.clarity
101
- ? clarityBootstrapScript()
102
- : undefined;
103
- const clearbit = config.integrations.analytics.clearbit
104
- ? clearbitAnalyticsScript(config.integrations.analytics.clearbit)
105
- : undefined;
106
- const fathom = config.integrations.analytics.fathom
107
- ? fathomAnalyticsScript(config.integrations.analytics.fathom)
108
- : undefined;
109
- const googleAnalytics = config.integrations.analytics.ga4
110
- ? googleAnalyticsScript(config.integrations.analytics.ga4)
111
- : undefined;
112
- const googleAnalyticsBootstrap = googleAnalytics
113
- ? googleAnalyticsBootstrapScript()
114
- : undefined;
115
- const googleTagManager = config.integrations.analytics.gtm
116
- ? googleTagManagerBootstrapScript()
117
- : undefined;
118
- const googleTagManagerNoScript = config.integrations.analytics.gtm
119
- ? googleTagManagerNoScriptUrl(config.integrations.analytics.gtm)
120
- : undefined;
121
- const heap = config.integrations.analytics.heap
122
- ? heapBootstrapScript()
123
- : undefined;
124
- const hotjar = config.integrations.analytics.hotjar
125
- ? hotjarBootstrapScript()
126
- : undefined;
127
- const logRocket = config.integrations.analytics.logrocket
128
- ? logRocketScript()
129
- : undefined;
130
- const logRocketBootstrap = logRocket ? logRocketBootstrapScript() : undefined;
131
- const mixpanel = config.integrations.analytics.mixpanel
132
- ? mixpanelScript()
133
- : undefined;
134
- const mixpanelBootstrap = mixpanel ? mixpanelBootstrapScript() : undefined;
135
- const openpanel = config.integrations.analytics.openpanel
136
- ? openpanelScript()
137
- : undefined;
138
- const openpanelBootstrap = openpanel ? openpanelBootstrapScript() : undefined;
139
- const openReplay = config.integrations.analytics.openreplay
140
- ? openReplayBootstrapScript()
141
- : undefined;
142
- const pirsch = config.integrations.analytics.pirsch
143
- ? pirschAnalyticsScript(config.integrations.analytics.pirsch)
144
- : undefined;
145
- const plausible = config.integrations.analytics.plausible
146
- ? plausibleAnalyticsScript(config.integrations.analytics.plausible)
147
- : undefined;
148
- const posthog = config.integrations.analytics.posthog
149
- ? posthogScript(config.integrations.analytics.posthog)
150
- : undefined;
151
- const posthogBootstrap = posthog ? posthogBootstrapScript() : undefined;
152
- const posthogHost = config.integrations.analytics.posthog
153
- ? posthogApiHost(config.integrations.analytics.posthog)
154
- : undefined;
155
- const rybbit = config.integrations.analytics.rybbit
156
- ? rybbitAnalyticsScript(config.integrations.analytics.rybbit)
157
- : undefined;
158
- const swetrix = config.integrations.analytics.swetrix
159
- ? swetrixScript()
160
- : undefined;
161
- const swetrixBootstrap = swetrix ? swetrixBootstrapScript() : undefined;
162
- const umami = config.integrations.analytics.umami
163
- ? umamiAnalyticsScript(config.integrations.analytics.umami)
164
- : undefined;
165
- const intercom = config.integrations.support.intercom
166
- ? intercomBootstrapScript()
167
- : undefined;
168
- const front = config.integrations.support.front ? frontChatScript() : undefined;
169
- const frontBootstrap = front ? frontChatBootstrapScript() : undefined;
170
- const chatwoot = config.integrations.support.chatwoot
171
- ? chatwootBootstrapScript()
172
- : undefined;
173
- const chaskiq = config.integrations.support.chaskiq
174
- ? chaskiqBootstrapScript()
175
- : undefined;
176
- const papercups = config.integrations.support.papercups
177
- ? papercupsBootstrapScript()
178
- : undefined;
179
- const typebot = config.integrations.support.typebot
180
- ? typebotBootstrapScript()
181
- : undefined;
182
- const zammad = config.integrations.support.zammad
183
- ? zammadChatScript(config.integrations.support.zammad)
184
- : undefined;
185
- const zammadBootstrap = zammad ? zammadBootstrapScript() : undefined;
186
29
  ---
187
30
 
188
31
  <!doctype html>
189
32
  <html lang="en">
190
33
  <head>
191
- {
192
- transcendGoogleConsentDefaults && (
193
- <script is:inline set:html={transcendGoogleConsentDefaults} />
194
- )
195
- }
196
- {
197
- transcend && (
198
- <script
199
- is:inline
200
- data-cfasync={transcend.dataCfasync}
201
- src={transcend.src}
202
- />
203
- )
204
- }
205
34
  <meta charset="utf-8" />
206
35
  <meta name="viewport" content="width=device-width, initial-scale=1" />
207
- <meta name="color-scheme" content="light dark" />
208
36
  <meta name="robots" content={robots} />
209
- <meta name="referrer" content="strict-origin-when-cross-origin" />
210
37
  <title>{title}</title>
211
38
  <meta name="description" content={description} />
212
39
  <meta property="og:type" content="article" />
@@ -223,334 +50,23 @@ const zammadBootstrap = zammad ? zammadBootstrapScript() : undefined;
223
50
  <link rel="icon" href="/favicon-96x96.png" sizes="96x96" type="image/png" />
224
51
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
225
52
  <link rel="manifest" href="/site.webmanifest" />
226
- {
227
- hasChangelog && (
228
- <link
229
- rel="alternate"
230
- href="/rss.xml"
231
- type="application/rss+xml"
232
- title={`${config.title} updates`}
233
- />
234
- )
235
- }
236
- {osano && <script is:inline src={osano.src} />}
237
- {
238
- googleTagManager && (
239
- <script
240
- is:inline
241
- data-google-tag-manager-container-id={
242
- config.integrations.analytics.gtm?.containerId
243
- }
244
- set:html={googleTagManager}
245
- />
246
- )
247
- }
53
+ {hasChangelog && (
54
+ <link
55
+ rel="alternate"
56
+ href="/rss.xml"
57
+ type="application/rss+xml"
58
+ title={`${config.title} updates`}
59
+ />
60
+ )}
248
61
  <script
249
62
  is:inline
250
- set:html={getThemeScript(THEME_STORAGE_KEY, config.mode)}
251
- />
252
- {adobe && <script is:inline async src={adobe.src} />}
253
- {amplitude && <script is:inline src={amplitude.src} />}
254
- {
255
- clarity && (
256
- <script
257
- is:inline
258
- data-clarity-project-id={
259
- config.integrations.analytics.clarity?.projectId
260
- }
261
- set:html={clarity}
262
- />
263
- )
264
- }
265
- {clearbit && <script is:inline src={clearbit.src} />}
266
- {
267
- fathom && (
268
- <script
269
- is:inline
270
- data-site={fathom.siteId}
271
- data-spa={fathom.spa}
272
- defer={fathom.defer}
273
- src={fathom.src}
274
- />
275
- )
276
- }
277
- {
278
- googleAnalytics && googleAnalyticsBootstrap && (
279
- <>
280
- <script
281
- is:inline
282
- async={googleAnalytics.async}
283
- src={googleAnalytics.src}
284
- />
285
- <script
286
- is:inline
287
- data-google-analytics-measurement-id={
288
- config.integrations.analytics.ga4?.measurementId
289
- }
290
- set:html={googleAnalyticsBootstrap}
291
- />
292
- </>
293
- )
294
- }
295
- {
296
- heap && (
297
- <script
298
- is:inline
299
- data-heap-environment-id={
300
- config.integrations.analytics.heap?.environmentId
301
- }
302
- set:html={heap}
303
- />
304
- )
305
- }
306
- {
307
- hotjar && (
308
- <script
309
- is:inline
310
- data-hotjar-site-id={config.integrations.analytics.hotjar?.siteId}
311
- data-hotjar-snippet-version={
312
- config.integrations.analytics.hotjar?.snippetVersion
313
- }
314
- set:html={hotjar}
315
- />
316
- )
317
- }
318
- {
319
- logRocket && logRocketBootstrap && (
320
- <>
321
- <script
322
- is:inline
323
- crossorigin={logRocket.crossOrigin}
324
- src={logRocket.src}
325
- />
326
- <script
327
- is:inline
328
- data-logrocket-app-id={
329
- config.integrations.analytics.logrocket?.appId
330
- }
331
- set:html={logRocketBootstrap}
332
- />
333
- </>
334
- )
335
- }
336
- {
337
- mixpanel && mixpanelBootstrap && (
338
- <>
339
- <script is:inline src={mixpanel.src} />
340
- <script
341
- is:inline
342
- data-mixpanel-project-token={
343
- config.integrations.analytics.mixpanel?.projectToken
344
- }
345
- set:html={mixpanelBootstrap}
346
- />
347
- </>
348
- )
349
- }
350
- {
351
- openpanel && openpanelBootstrap && (
352
- <>
353
- <script
354
- is:inline
355
- data-openpanel-api-url={
356
- config.integrations.analytics.openpanel?.apiUrl
357
- }
358
- data-openpanel-client-id={
359
- config.integrations.analytics.openpanel?.clientId
360
- }
361
- set:html={openpanelBootstrap}
362
- />
363
- <script
364
- is:inline
365
- async={openpanel.async}
366
- defer={openpanel.defer}
367
- src={openpanel.src}
368
- />
369
- </>
370
- )
371
- }
372
- {
373
- openReplay && (
374
- <script
375
- is:inline
376
- data-openreplay-ingest-point={
377
- config.integrations.analytics.openreplay?.ingestPoint
378
- }
379
- data-openreplay-project-key={
380
- config.integrations.analytics.openreplay?.projectKey
381
- }
382
- set:html={openReplay}
383
- />
384
- )
385
- }
386
- {
387
- pirsch && (
388
- <script
389
- is:inline
390
- data-code={pirsch.code}
391
- defer={pirsch.defer}
392
- src={pirsch.src}
393
- />
394
- )
395
- }
396
- {
397
- plausible && (
398
- <script
399
- is:inline
400
- data-domain={plausible.domain}
401
- defer={plausible.defer}
402
- src={plausible.src}
403
- />
404
- )
405
- }
406
- {
407
- posthog && posthogBootstrap && posthogHost && (
408
- <>
409
- <script is:inline src={posthog.src} />
410
- <script
411
- is:inline
412
- data-posthog-api-host={posthogHost}
413
- data-posthog-project-api-key={
414
- config.integrations.analytics.posthog?.projectApiKey
415
- }
416
- set:html={posthogBootstrap}
417
- />
418
- </>
419
- )
420
- }
421
- {
422
- rybbit && (
423
- <script
424
- is:inline
425
- data-site-id={rybbit.siteId}
426
- defer={rybbit.defer}
427
- src={rybbit.src}
428
- />
429
- )
430
- }
431
- {
432
- umami && (
433
- <script
434
- is:inline
435
- data-website-id={umami.websiteId}
436
- defer={umami.defer}
437
- src={umami.src}
438
- />
439
- )
440
- }
441
- {
442
- chaskiq && (
443
- <script
444
- is:inline
445
- data-chaskiq-app-id={config.integrations.support.chaskiq?.appId}
446
- data-chaskiq-base-url={config.integrations.support.chaskiq?.baseUrl}
447
- data-chaskiq-ws-url={config.integrations.support.chaskiq?.wsUrl}
448
- set:html={chaskiq}
449
- />
450
- )
451
- }
452
- {
453
- papercups && (
454
- <script
455
- is:inline
456
- data-papercups-base-url={
457
- config.integrations.support.papercups?.baseUrl
458
- }
459
- data-papercups-inbox={config.integrations.support.papercups?.inbox}
460
- data-papercups-token={config.integrations.support.papercups?.token}
461
- set:html={papercups}
462
- />
463
- )
464
- }
465
- {
466
- typebot && (
467
- <script
468
- is:inline
469
- data-heyo-typebot
470
- data-typebot-api-host={config.integrations.support.typebot?.apiHost}
471
- data-typebot-id={config.integrations.support.typebot?.typebot}
472
- set:html={typebot}
473
- type="module"
474
- />
475
- )
476
- }
477
- <script is:inline type="application/ld+json" set:html={jsonLd} />
63
+ set:html={themeBootstrapScript(DEFAULT_THEME_STORAGE_KEY, config.mode)}
64
+ ></script>
65
+ <IntegrationScripts integrations={config.integrations} placement="head" />
66
+ <script is:inline type="application/ld+json" set:html={jsonLd}></script>
478
67
  </head>
479
68
  <body>
480
- {
481
- googleTagManagerNoScript && (
482
- <noscript>
483
- <iframe
484
- height="0"
485
- src={googleTagManagerNoScript}
486
- style="display:none;visibility:hidden"
487
- title="Google Tag Manager"
488
- width="0"
489
- />
490
- </noscript>
491
- )
492
- }
493
69
  <slot />
494
- {
495
- swetrix && swetrixBootstrap && (
496
- <>
497
- <script is:inline defer={swetrix.defer} src={swetrix.src} />
498
- <script
499
- is:inline
500
- data-swetrix-api-url={config.integrations.analytics.swetrix?.apiUrl}
501
- data-swetrix-project-id={
502
- config.integrations.analytics.swetrix?.projectId
503
- }
504
- set:html={swetrixBootstrap}
505
- />
506
- </>
507
- )
508
- }
509
- {
510
- intercom && (
511
- <script
512
- is:inline
513
- data-intercom-app-id={config.integrations.support.intercom?.appId}
514
- data-intercom-api-base={config.integrations.support.intercom?.apiBase}
515
- set:html={intercom}
516
- />
517
- )
518
- }
519
- {
520
- front && frontBootstrap && (
521
- <>
522
- <script is:inline src={front.src} />
523
- <script
524
- is:inline
525
- data-front-chat-id={config.integrations.support.front?.chatId}
526
- set:html={frontBootstrap}
527
- />
528
- </>
529
- )
530
- }
531
- {
532
- chatwoot && (
533
- <script
534
- is:inline
535
- data-chatwoot-base-url={config.integrations.support.chatwoot?.baseUrl}
536
- data-chatwoot-website-token={
537
- config.integrations.support.chatwoot?.websiteToken
538
- }
539
- set:html={chatwoot}
540
- />
541
- )
542
- }
543
- {
544
- zammad && zammadBootstrap && (
545
- <>
546
- <script is:inline src={zammad.src} />
547
- <script
548
- is:inline
549
- data-zammad-chat-id={config.integrations.support.zammad?.chatId}
550
- set:html={zammadBootstrap}
551
- />
552
- </>
553
- )
554
- }
70
+ <IntegrationScripts integrations={config.integrations} placement="body" />
555
71
  </body>
556
72
  </html>
@@ -1,10 +1,10 @@
1
1
  import {
2
- changelogGroupForPage,
3
2
  createDocsModel,
4
3
  findDocsPage,
5
4
  findOpenApiEndpoint,
6
5
  normaliseDocsPathname,
7
- } from "@heyo-sh/heyo-docs";
6
+ } from "@heyo-sh/heyo-docs/model";
7
+ import { changelogGroupForPage } from "@heyo-sh/heyo-docs/navigation";
8
8
 
9
9
  import config from "../../heyo-docs.config";
10
10
  import { openApiDocuments } from "virtual:heyo-docs-openapi";
@@ -22,6 +22,7 @@ export function docsContext(pathname: string) {
22
22
  return {
23
23
  config,
24
24
  model,
25
+ navigation: model.navigation,
25
26
  page,
26
27
  endpoint,
27
28
  changelogGroup: page