@wildo-ai/saas-website 1.1.1 → 1.1.3

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 (77) hide show
  1. package/dist/esm/astro/blog-post-bridge.d.ts +21 -0
  2. package/dist/esm/astro/blog-post-bridge.d.ts.map +1 -1
  3. package/dist/esm/astro/blog-post-bridge.js +5 -2
  4. package/dist/esm/astro/blog-post-bridge.js.map +1 -1
  5. package/dist/esm/astro/bridge-runtime.d.ts +37 -0
  6. package/dist/esm/astro/bridge-runtime.d.ts.map +1 -1
  7. package/dist/esm/astro/bridge-runtime.js +6 -2
  8. package/dist/esm/astro/bridge-runtime.js.map +1 -1
  9. package/dist/esm/astro/robots-renderer.d.ts.map +1 -1
  10. package/dist/esm/astro/robots-renderer.js +14 -1
  11. package/dist/esm/astro/robots-renderer.js.map +1 -1
  12. package/dist/esm/astro/website-page-head.renderer.d.ts.map +1 -1
  13. package/dist/esm/astro/website-page-head.renderer.js +32 -12
  14. package/dist/esm/astro/website-page-head.renderer.js.map +1 -1
  15. package/dist/esm/config/wildo-website-config.schemas.d.ts +12 -5
  16. package/dist/esm/config/wildo-website-config.schemas.d.ts.map +1 -1
  17. package/dist/esm/config/wildo-website-config.schemas.js +12 -5
  18. package/dist/esm/config/wildo-website-config.schemas.js.map +1 -1
  19. package/dist/esm/core/anonymous-session/inbound-contact-form.schema.d.ts +5 -5
  20. package/dist/esm/core/anonymous-session/inbound-contact-form.schema.d.ts.map +1 -1
  21. package/dist/esm/core/anonymous-session/inbound-contact-form.schema.js +7 -6
  22. package/dist/esm/core/anonymous-session/inbound-contact-form.schema.js.map +1 -1
  23. package/dist/esm/core/contexts/WebsitePageContext.d.ts +4 -3
  24. package/dist/esm/core/contexts/WebsitePageContext.d.ts.map +1 -1
  25. package/dist/esm/core/contexts/WebsitePageContext.js.map +1 -1
  26. package/dist/esm/core/contexts/WebsiteRuntimeContext.d.ts +36 -7
  27. package/dist/esm/core/contexts/WebsiteRuntimeContext.d.ts.map +1 -1
  28. package/dist/esm/core/contexts/WebsiteRuntimeContext.js.map +1 -1
  29. package/dist/esm/core/contexts/WebsiteSectionContext.d.ts +3 -2
  30. package/dist/esm/core/contexts/WebsiteSectionContext.d.ts.map +1 -1
  31. package/dist/esm/core/contexts/WebsiteSectionContext.js.map +1 -1
  32. package/dist/esm/core/external-providers/frontend-provider-registry.website.d.ts +37 -13
  33. package/dist/esm/core/external-providers/frontend-provider-registry.website.d.ts.map +1 -1
  34. package/dist/esm/core/external-providers/frontend-provider-registry.website.js +28 -19
  35. package/dist/esm/core/external-providers/frontend-provider-registry.website.js.map +1 -1
  36. package/dist/esm/core/external-providers/provider-scripts.website.d.ts +68 -0
  37. package/dist/esm/core/external-providers/provider-scripts.website.d.ts.map +1 -0
  38. package/dist/esm/core/external-providers/provider-scripts.website.js +99 -0
  39. package/dist/esm/core/external-providers/provider-scripts.website.js.map +1 -0
  40. package/dist/esm/core/external-providers/useWebsiteProviderScripts.d.ts +34 -0
  41. package/dist/esm/core/external-providers/useWebsiteProviderScripts.d.ts.map +1 -0
  42. package/dist/esm/core/external-providers/useWebsiteProviderScripts.js +78 -0
  43. package/dist/esm/core/external-providers/useWebsiteProviderScripts.js.map +1 -0
  44. package/dist/esm/core/layouts/WebsitePageLayout.d.ts.map +1 -1
  45. package/dist/esm/core/layouts/WebsitePageLayout.js +7 -0
  46. package/dist/esm/core/layouts/WebsitePageLayout.js.map +1 -1
  47. package/dist/esm/schemas/sections/website-section-category.shared.d.ts +19 -20
  48. package/dist/esm/schemas/sections/website-section-category.shared.d.ts.map +1 -1
  49. package/dist/esm/schemas/sections/website-section-category.shared.js +19 -20
  50. package/dist/esm/schemas/sections/website-section-category.shared.js.map +1 -1
  51. package/dist/tsconfig.build.tsbuildinfo +1 -1
  52. package/package.json +5 -4
  53. package/src/__tests__/bundle-isolation.test.ts +21 -0
  54. package/src/astro/__tests__/blog-post-bridge.test.tsx +2 -2
  55. package/src/astro/__tests__/bridge-runtime.test.tsx +57 -2
  56. package/src/astro/__tests__/robots-renderer.test.ts +16 -1
  57. package/src/astro/__tests__/website-page-head.renderer.test.ts +43 -0
  58. package/src/astro/__tests__/website-site-context.test.ts +1 -1
  59. package/src/astro/blog-post-bridge.tsx +26 -1
  60. package/src/astro/bridge-runtime.tsx +44 -1
  61. package/src/astro/robots-renderer.ts +14 -1
  62. package/src/astro/website-page-head.renderer.ts +32 -12
  63. package/src/config/__tests__/define-website-config.test.ts +9 -3
  64. package/src/config/wildo-website-config.schemas.ts +12 -5
  65. package/src/core/__tests__/WebsitePageLayout.test.tsx +47 -4
  66. package/src/core/anonymous-session/inbound-contact-form.schema.ts +7 -6
  67. package/src/core/contexts/WebsitePageContext.tsx +4 -3
  68. package/src/core/contexts/WebsiteRuntimeContext.tsx +36 -7
  69. package/src/core/contexts/WebsiteSectionContext.tsx +3 -2
  70. package/src/core/external-providers/__tests__/frontend-provider-registry.website.test.ts +79 -0
  71. package/src/core/external-providers/__tests__/provider-scripts.website.test.ts +146 -0
  72. package/src/core/external-providers/frontend-provider-registry.website.ts +53 -54
  73. package/src/core/external-providers/provider-scripts.website.ts +126 -0
  74. package/src/core/external-providers/useWebsiteProviderScripts.ts +92 -0
  75. package/src/core/layouts/WebsitePageLayout.tsx +11 -0
  76. package/src/schemas/sections/website-section-category.shared.ts +19 -20
  77. package/dist/esm/.builder.pid +0 -9
@@ -8,33 +8,31 @@ import { z } from 'zod';
8
8
  *
9
9
  * The category is NOT a layout-shape constraint and NOT a CSS class; the
10
10
  * framework ships zero concrete sections and never inspects
11
- * the category at render time. The category exists for three orthogonal
11
+ * the category at render time. The category exists for two orthogonal
12
12
  * non-render concerns:
13
13
  *
14
- * 1. **Structured-data dispatch**: the
15
- * SEO library reads `WebsiteSectionDefinition.category` to decide
16
- * which JSON-LD vocabulary the section's `getStructuredData()` hook
17
- * is allowed to emit. e.g. `PRICING` may emit `Product` /
18
- * `AggregateOffer`; `FAQ` may emit `FAQPage`; `HERO` may emit
19
- * `Organization` / `WebSite`. Mismatches are surfaced as build-time
20
- * warnings.
21
- * 2. **Authoring guidance**: each value has matching application-builder
14
+ * 1. **Authoring guidance**: each value has matching application-builder
22
15
  * guidance. When introducing a new category, provide its public authoring
23
16
  * method before asking an application to use it.
24
- * 3. **Analytics labelling**: the runtime emits
17
+ * 2. **Analytics labelling**: the runtime emits
25
18
  * `data-section-category="…"` on the `<WebsiteSection>` wrapper so
26
19
  * analytics tooling can group section impressions
27
20
  * without parsing className conventions.
28
21
  *
22
+ * **It does NOT gate structured data.** Nothing dispatches JSON-LD by category: the structured-data
23
+ * renderer receives only `sectionRef` and `getStructuredData`, the reconciliation contract carries
24
+ * no category at all, and no build-time warning compares the two. A section may return any
25
+ * vocabulary from `getStructuredData()` whatever its category says, so choose the category for what
26
+ * it does do (guidance and analytics grouping) and validate your JSON-LD yourself.
27
+ *
29
28
  * **Closed vocabulary on purpose**: a free-string `category` would
30
- * defeat the skill-mapping and SEO-dispatch contracts. Consumers who
31
- * need a wholly-novel section shape use the `RAW` advanced path
29
+ * defeat the skill mapping and would make the analytics attribute unaggregatable.
30
+ * Consumers who need a wholly-novel section shape use the `RAW` advanced path
32
31
  * (`website-factory-advanced` skill) which bypasses the category
33
32
  * vocabulary entirely.
34
33
  *
35
- * **Adding a value**: requires (a) a new entry here, (b) a matching
36
- * `website_section_<value>` skill stub, (c) (optionally) a
37
- * structured-data dispatch entry in the SEO library. Removing a value
34
+ * **Adding a value**: requires (a) a new entry here and (b) a matching
35
+ * `website_section_<value>` skill stub. Removing a value
38
36
  * is a labelled rename — every consumer's
39
37
  * `defineWebsiteSection({ category: … })` declaration breaks at compile
40
38
  * time, which is the desired loud failure.
@@ -51,11 +49,12 @@ export enum WebsiteSectionCategory {
51
49
  FOOTER_CTA = 'footer-cta',
52
50
  /**
53
51
  * Escape hatch for sections that don't fit any standard category
54
- * (third-party widgets, custom one-off marketing pieces). Skips the
55
- * SEO-dispatch contract — the section's `getStructuredData()` may
56
- * return any vocabulary, no validation. Authors should prefer a
57
- * concrete category whenever possible; using `RAW` opts the section
58
- * out of the framework's structured-data safety net.
52
+ * (third-party widgets, custom one-off marketing pieces). Authors should
53
+ * prefer a concrete category whenever possible, so the section receives the
54
+ * matching authoring guidance and groups with its peers in analytics.
55
+ *
56
+ * It makes no difference to structured data: no category validates
57
+ * `getStructuredData()`, so `RAW` opts out of nothing there.
59
58
  */
60
59
  RAW = 'raw',
61
60
  }
@@ -1,9 +0,0 @@
1
- {
2
- "schemaVersion": 1,
3
- "writerPid": 95147,
4
- "orchestratorPid": 94847,
5
- "orchestratorSessionId": null,
6
- "orchestratorStartedAt": "Mon Aug 31 09:18:19 2026",
7
- "distDirectory": "/Users/paulcayon/Projects/Wildo.ai/dev/wildo-ai/engine/saas-website/dist/esm",
8
- "acquiredAt": "2026-08-31T07:18:20.760Z"
9
- }