@thresho/site-sdk 0.0.0-stage → 2.1.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.
package/CHANGELOG.md ADDED
@@ -0,0 +1,11 @@
1
+ # Changelog
2
+
3
+ ## 2.1.0
4
+
5
+ Add the generated diagnostic catalog with canonical documentation URLs for all 40 authoring codes.
6
+ Keep package format 2 and compiler 10.
7
+
8
+ ## 2.0.0
9
+
10
+ Initial public format 2 SDK. Generate declaration-only element types, manifest types, JSON schemas and vocabulary from Forger.
11
+ The compiler remains authoritative for accepted source.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Thresho Ltd Co
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,53 @@
1
- # Temporary Holding Version
1
+ # @thresho/site-sdk
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Install the public authoring types:
4
+
5
+ ```sh
6
+ npm install -D @thresho/site-sdk
7
+ ```
8
+
9
+ Extend the package configuration in your workspace tsconfig.json:
10
+
11
+ ```json
12
+ {"extends":"@thresho/site-sdk/tsconfig.json","include":["src/**/*.tsx"]}
13
+ ```
14
+
15
+ Run TypeScript with no output. This package contains no JavaScript runtime, React dependency or install script.
16
+ It supports editor completion and local type checks. Source check, preview and submission still require sign-in to thresho.
17
+
18
+ Associate the manifest schema in your editor workspace settings:
19
+
20
+ ```json
21
+ {"json.schemas":[{"fileMatch":["thresho.site.json"],"url":"./node_modules/@thresho/site-sdk/schema/manifest.schema.json"}]}
22
+ ```
23
+
24
+ Do not add a $schema key to the manifest. The compiler refuses unknown manifest keys.
25
+
26
+ Import the named Catalog, Product, Cart, Checkout, Presentation, Form and Content namespaces.
27
+ Use a component reference for Catalog.Products item, or supply authored children.
28
+ Local component props can use the exported SiteChild type through an inline type reference.
29
+
30
+ TypeScript checks admitted element names, ordinary prop names, literal enums, required props and declared child permissions.
31
+ The compiler also checks source syntax, literal values, route capabilities, ancestry, checkout composition, expanded child emptiness,
32
+ manifest cross-field predicates, uniqueness, bounds and runtime safety. A successful type check does not establish compiler acceptance.
33
+ Unknown hyphenated JSX attributes, JSX children attributes, spreads and structural excess-property cases can pass TypeScript and fail the compiler.
34
+ Content.Text collects and discards its authored children; put visible text in the named content field.
35
+ Empty fragments do not satisfy the compiler's Catalog.Products child requirement.
36
+
37
+ The vocabulary.json file records the shared compiler vocabulary and enforcement boundaries.
38
+ The diagnostics.json file contains the generated authoring diagnostic catalog:
39
+
40
+ ```js
41
+ import catalog from "@thresho/site-sdk/diagnostics.json" with { type: "json" };
42
+ ```
43
+
44
+ The catalog has formatVersion 2 and a diagnostics array. Each record contains code, family, severity, message, cause, fix, docsAnchor and docsUrl.
45
+ The authoring pack contains the same catalog bytes. Occurrence messages retain source-specific context; each code has one canonical documentation URL.
46
+ The future thresho CLI (#57) consumes this JSON export and the source-check code, message and docsUrl fields.
47
+ Source checks remain authenticated. The catalog contains no compiler runtime or tenant data.
48
+ Documentation URLs reserve the future diagnostic reference route; this package does not deploy the documentation pages.
49
+
50
+ Version 2.x targets package format 2. Additions require a minor release; type corrections require a patch release.
51
+ Removal or narrowing requires a major format release.
52
+
53
+ The SDK and public authoring pack use the MIT licence. The thresho compiler and service runtime are separate products.
@@ -0,0 +1 @@
1
+ {"diagnostics":[{"cause":"Authored markup or CSS changes the platform consent banner.","code":"CONSENT_OVERRIDDEN","docsAnchor":"consent-overridden","docsUrl":"https://docs.thresho.com/reference/diagnostics#consent-overridden","family":"source","fix":"Remove selectors and attributes that target the platform consent banner.","message":"The cookie consent banner is restyled or hidden.","severity":"error"},{"cause":"A transaction route repeats a required disclosure control.","code":"DISCLOSURE_DUPLICATED","docsAnchor":"disclosure-duplicated","docsUrl":"https://docs.thresho.com/reference/diagnostics#disclosure-duplicated","family":"source","fix":"Keep one instance of the named disclosure in its required placement.","message":"A required disclosure appears more than once.","severity":"error"},{"cause":"An attribute or style hides a required disclosure or its ancestor.","code":"DISCLOSURE_HIDDEN","docsAnchor":"disclosure-hidden","docsUrl":"https://docs.thresho.com/reference/diagnostics#disclosure-hidden","family":"source","fix":"Remove hidden state and visibility treatments from the disclosure and its ancestors.","message":"A required disclosure is hidden.","severity":"error"},{"cause":"Authored children, properties or CSS replace a required disclosure.","code":"DISCLOSURE_OVERRIDDEN","docsAnchor":"disclosure-overridden","docsUrl":"https://docs.thresho.com/reference/diagnostics#disclosure-overridden","family":"source","fix":"Use the platform disclosure control without replacement children or unregistered treatments.","message":"A required disclosure is restyled or replaced.","severity":"error"},{"cause":"A transaction route omits a required disclosure control.","code":"DISCLOSURE_REQUIRED","docsAnchor":"disclosure-required","docsUrl":"https://docs.thresho.com/reference/diagnostics#disclosure-required","family":"source","fix":"Add the named disclosure exactly where the route contract requires it.","message":"A required disclosure is missing.","severity":"error"},{"cause":"An anchor names a route the manifest does not declare, a nodeId that is not authored on that route, or a property the compiler does not register.","code":"EXTENSION_ANCHOR_UNKNOWN","docsAnchor":"extension-anchor-unknown","docsUrl":"https://docs.thresho.com/reference/diagnostics#extension-anchor-unknown","family":"source","fix":"An anchor names a route the manifest does not declare, a nodeId that is not authored on that route, or a property the compiler does not register. Add the route, pin the nodeId in the source, and use a registered data-design property.","message":"An anchor names a route the manifest does not declare, a nodeId that is not authored on that route, or a property the compiler does not register.","severity":"error"},{"cause":"An anchor names a registered property with no patchable literal at that node.","code":"EXTENSION_ANCHOR_UNPATCHABLE","docsAnchor":"extension-anchor-unpatchable","docsUrl":"https://docs.thresho.com/reference/diagnostics#extension-anchor-unpatchable","family":"source","fix":"An anchor names a registered property with no patchable literal at that node. A generated or instance-scoped identity, a non-literal value, a shared source location or a duplicate declaration cannot be patched; move the value to a single literal at the anchored node.","message":"An anchor names a registered property with no patchable literal at that node.","severity":"error"},{"cause":"The extension surface names something the package does not declare, repeats an entry, uses an unknown key, or breaks a bound.","code":"EXTENSION_INVALID","docsAnchor":"extension-invalid","docsUrl":"https://docs.thresho.com/reference/diagnostics#extension-invalid","family":"source","fix":"The extension surface names something the package does not declare, repeats an entry, uses an unknown key, or breaks a bound. Name only declared content keys, declared image slots, registered tokens, explicit nodeIds, registered block names and free route patterns.","message":"The extension surface names something the package does not declare, repeats an entry, uses an unknown key, or breaks a bound.","severity":"error"},{"cause":"The extension surface reaches a protected surface.","code":"EXTENSION_PROTECTED_SURFACE","docsAnchor":"extension-protected-surface","docsUrl":"https://docs.thresho.com/reference/diagnostics#extension-protected-surface","family":"source","fix":"The extension surface reaches a protected surface. A region cannot sit on a cart, checkout, confirmation or account route, cannot name a Checkout control or a required-disclosure control, and cannot target a protected control or a node inside one. An anchor cannot target a protected control.","message":"The extension surface reaches a protected surface.","severity":"error"},{"cause":"Every form needs a consent label and a privacyPath that names a declared page on the same site.","code":"FORM_CONSENT_REQUIRED","docsAnchor":"form-consent-required","docsUrl":"https://docs.thresho.com/reference/diagnostics#form-consent-required","family":"source","fix":"Every form needs a consent label and a privacyPath that names a declared page on the same site.","message":"Every form needs a consent label and a privacyPath that names a declared page on the same site.","severity":"error"},{"cause":"A form or field value is outside its bound.","code":"FORM_FIELD_BOUND","docsAnchor":"form-field-bound","docsUrl":"https://docs.thresho.com/reference/diagnostics#form-field-bound","family":"source","fix":"A form or field value is outside its bound. Check the field count, option count, route count, text length, date, time and numeric range.","message":"A form or field value is outside its bound.","severity":"error"},{"cause":"A form field kind is not supported.","code":"FORM_FIELD_KIND_UNSUPPORTED","docsAnchor":"form-field-kind-unsupported","docsUrl":"https://docs.thresho.com/reference/diagnostics#form-field-kind-unsupported","family":"source","fix":"A form field kind is not supported. Use text, email, tel, url, number, textarea, select, checkbox, radio-group, date or time.","message":"A form field kind is not supported.","severity":"error"},{"cause":"A form field name is reserved for thresho or for the renderer.","code":"FORM_FIELD_NAME_RESERVED","docsAnchor":"form-field-name-reserved","docsUrl":"https://docs.thresho.com/reference/diagnostics#form-field-name-reserved","family":"source","fix":"A form field name is reserved for thresho or for the renderer. Rename it.","message":"A form field name is reserved for thresho or for the renderer.","severity":"error"},{"cause":"A form declaration or placement is not accepted.","code":"FORM_INVALID","docsAnchor":"form-invalid","docsUrl":"https://docs.thresho.com/reference/diagnostics#form-invalid","family":"source","fix":"A form declaration or placement is not accepted. Check the form kind, its required email, date or rating field, the form id, and that every placing Form tag names a declared form of the same kind.","message":"A form declaration or placement is not accepted.","severity":"error"},{"cause":"A form field collects health, identity or payment data.","code":"FORM_PHI_FIELD_REFUSED","docsAnchor":"form-phi-field-refused","docsUrl":"https://docs.thresho.com/reference/diagnostics#form-phi-field-refused","family":"source","fix":"A form field collects health, identity or payment data. Remove it; a thresho form cannot collect special-category data.","message":"A form field collects health, identity or payment data.","severity":"error"},{"cause":"An SDK component is used where its data is not available, with an unknown prop, or outside its allowed parent.","code":"INVALID_BINDING","docsAnchor":"invalid-binding","docsUrl":"https://docs.thresho.com/reference/diagnostics#invalid-binding","family":"source","fix":"An SDK component is used where its data is not available, with an unknown prop, or outside its allowed parent. Move it inside the right route or parent, or remove the prop.","message":"An SDK component is used where its data is not available, with an unknown prop, or outside its allowed parent.","severity":"error"},{"cause":"A font slot declaration or a font binding is not accepted.","code":"INVALID_FONT","docsAnchor":"invalid-font","docsUrl":"https://docs.thresho.com/reference/diagnostics#invalid-font","family":"source","fix":"A font slot declaration or a font binding is not accepted. Declare 1 to 8 unique slots with an approved family, a weight in steps of 100, a style, a display value and a preload flag.","message":"A font slot declaration or a font binding is not accepted.","severity":"error"},{"cause":"A locale tag, the supported locale list, a locale prefix on an authored route, or a per-locale content map is not accepted.","code":"INVALID_LOCALE","docsAnchor":"invalid-locale","docsUrl":"https://docs.thresho.com/reference/diagnostics#invalid-locale","family":"source","fix":"A locale tag, the supported locale list, a locale prefix on an authored route, or a per-locale content map is not accepted. Use a lowercase language tag with an optional uppercase region, list 1 to 8 unique tags, include the default tag, and let thresho own the first path segment for every declared tag.","message":"A locale tag, the supported locale list, a locale prefix on an authored route, or a per-locale content map is not accepted.","severity":"error"},{"cause":"A media slot declaration, a Presentation.Image or Presentation.Video slot, or a media binding is not accepted.","code":"INVALID_MEDIA","docsAnchor":"invalid-media","docsUrl":"https://docs.thresho.com/reference/diagnostics#invalid-media","family":"source","fix":"A media slot declaration, a Presentation.Image or Presentation.Video slot, or a media binding is not accepted. Declare 1 to 32 unique slots with a kind and a backend, name a declared image slot as the poster, and keep every binding URL on the platform media origin.","message":"A media slot declaration, a Presentation.Image or Presentation.Video slot, or a media binding is not accepted.","severity":"error"},{"cause":"The manifest or file map is malformed.","code":"INVALID_PACKAGE","docsAnchor":"invalid-package","docsUrl":"https://docs.thresho.com/reference/diagnostics#invalid-package","family":"source","fix":"The manifest or file map is malformed. Check kind, formatVersion, id, name, journeys, routes, content and every file path against schema/source.schema.json.","message":"The manifest or file map is malformed.","severity":"error"},{"cause":"A route path, entry, capability or role is not accepted, a protected path is used without the role that owns it, a route path ends with a slash, or the journey rules below are not met.","code":"INVALID_ROUTE","docsAnchor":"invalid-route","docsUrl":"https://docs.thresho.com/reference/diagnostics#invalid-route","family":"source","fix":"A route path, entry, capability or role is not accepted, a protected path is used without the role that owns it, a route path ends with a slash, or the journey rules below are not met. The message names the rule.","message":"A route path, entry, capability or role is not accepted, a protected path is used without the role that owns it, a route path ends with a slash, or the journey rules below are not met.","severity":"error"},{"cause":"A file, stylesheet, content field or total size limit was exceeded.","code":"LIMIT_EXCEEDED","docsAnchor":"limit-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#limit-exceeded","family":"source","fix":"A file, stylesheet, content field or total size limit was exceeded. Split or shorten the source.","message":"A file, stylesheet, content field or total size limit was exceeded.","severity":"error"},{"cause":"An overlay operation produces source that the compiler refuses.","code":"OVERLAY_COMPILE_FAILED","docsAnchor":"overlay-compile-failed","docsUrl":"https://docs.thresho.com/reference/diagnostics#overlay-compile-failed","family":"overlay","fix":"Correct the named source rule or reset the overlay operation, then check again.","message":"The effective source does not compile.","severity":"error"},{"cause":"The authored source no longer supports the requested edit.","code":"OVERLAY_CONFLICT","docsAnchor":"overlay-conflict","docsUrl":"https://docs.thresho.com/reference/diagnostics#overlay-conflict","family":"overlay","fix":"Reload the current source and correct the named conflicting operation.","message":"The overlay operation conflicts with the source.","severity":"error"},{"cause":"An overlay operation has an unsupported shape or value.","code":"OVERLAY_INVALID","docsAnchor":"overlay-invalid","docsUrl":"https://docs.thresho.com/reference/diagnostics#overlay-invalid","family":"overlay","fix":"Correct the named operation using the declared extension surface.","message":"The overlay operation is invalid.","severity":"error"},{"cause":"An overlay operation changes a protected control or its required context.","code":"OVERLAY_PROTECTED_SURFACE","docsAnchor":"overlay-protected-surface","docsUrl":"https://docs.thresho.com/reference/diagnostics#overlay-protected-surface","family":"overlay","fix":"Remove the edit or choose an editable target outside the protected surface.","message":"The overlay targets a protected surface.","severity":"error"},{"cause":"An overlay operation names a target absent from the current source.","code":"OVERLAY_TARGET_UNKNOWN","docsAnchor":"overlay-target-unknown","docsUrl":"https://docs.thresho.com/reference/diagnostics#overlay-target-unknown","family":"overlay","fix":"Choose a declared target from the current template and retry the edit.","message":"The overlay target is unknown.","severity":"error"},{"cause":"The package artifact is larger than 3 MiB after JSON escaping.","code":"PACKAGE_BYTES_EXCEEDED","docsAnchor":"package-bytes-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#package-bytes-exceeded","family":"source","fix":"The package artifact is larger than 3 MiB after JSON escaping. Shorten long text or remove repeated content.","message":"The package artifact is larger than 3 MiB after JSON escaping.","severity":"error"},{"cause":"The package compiled view has more than 16384 nodes.","code":"PACKAGE_NODES_EXCEEDED","docsAnchor":"package-nodes-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#package-nodes-exceeded","family":"source","fix":"The package compiled view has more than 16384 nodes. Remove sections or share components.","message":"The package compiled view has more than 16384 nodes.","severity":"error"},{"cause":"An element id starts with the reserved prefix site-source-.","code":"RESERVED_ELEMENT_ID","docsAnchor":"reserved-element-id","docsUrl":"https://docs.thresho.com/reference/diagnostics#reserved-element-id","family":"source","fix":"An element id starts with the reserved prefix site-source-. Rename it; thresho keeps that prefix for its hydration payload and root.","message":"An element id starts with the reserved prefix site-source-.","severity":"error"},{"cause":"One route nests more than 32 elements deep.","code":"ROUTE_DEPTH_EXCEEDED","docsAnchor":"route-depth-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#route-depth-exceeded","family":"source","fix":"One route nests more than 32 elements deep. Flatten the markup.","message":"One route nests more than 32 elements deep.","severity":"error"},{"cause":"One route has more than 2048 compiled nodes.","code":"ROUTE_NODES_EXCEEDED","docsAnchor":"route-nodes-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#route-nodes-exceeded","family":"source","fix":"One route has more than 2048 compiled nodes. Split the page or remove sections.","message":"One route has more than 2048 compiled nodes.","severity":"error"},{"cause":"A search description contains fewer than 50 or more than 160 characters.","code":"SEO_DESCRIPTION_LENGTH","docsAnchor":"seo-description-length","docsUrl":"https://docs.thresho.com/reference/diagnostics#seo-description-length","family":"source","fix":"Use 50 to 160 Unicode code points in the search description.","message":"A search description is outside the suggested length.","severity":"warning"},{"cause":"A public route does not name a nonempty search description content field.","code":"SEO_DESCRIPTION_REQUIRED","docsAnchor":"seo-description-required","docsUrl":"https://docs.thresho.com/reference/diagnostics#seo-description-required","family":"source","fix":"Set seo.description to a declared content field with text for every supported locale.","message":"A route has no search description.","severity":"error"},{"cause":"A search title contains fewer than 10 or more than 60 characters.","code":"SEO_TITLE_LENGTH","docsAnchor":"seo-title-length","docsUrl":"https://docs.thresho.com/reference/diagnostics#seo-title-length","family":"source","fix":"Use 10 to 60 Unicode code points in the search title.","message":"A search title is outside the suggested length.","severity":"warning"},{"cause":"A public route does not name a nonempty search title content field.","code":"SEO_TITLE_REQUIRED","docsAnchor":"seo-title-required","docsUrl":"https://docs.thresho.com/reference/diagnostics#seo-title-required","family":"source","fix":"Set seo.title to a declared content field with text for every supported locale.","message":"A route has no search title.","severity":"error"},{"cause":"The package source is larger than 512 KiB in total.","code":"SOURCE_BYTES_EXCEEDED","docsAnchor":"source-bytes-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#source-bytes-exceeded","family":"source","fix":"The package source is larger than 512 KiB in total. Remove or shorten source files.","message":"The package source is larger than 512 KiB in total.","severity":"error"},{"cause":"One source file is larger than 64 KiB.","code":"SOURCE_FILE_BYTES_EXCEEDED","docsAnchor":"source-file-bytes-exceeded","docsUrl":"https://docs.thresho.com/reference/diagnostics#source-file-bytes-exceeded","family":"source","fix":"One source file is larger than 64 KiB. Split it into smaller files.","message":"One source file is larger than 64 KiB.","severity":"error"},{"cause":"A registered presentation token reaches a CSS property its kind does not allow, directly or through a custom-property alias.","code":"TOKEN_SINK_REFUSED","docsAnchor":"token-sink-refused","docsUrl":"https://docs.thresho.com/reference/diagnostics#token-sink-refused","family":"source","fix":"A registered presentation token reaches a CSS property its kind does not allow, directly or through a custom-property alias. Use a colour token only in a colour property, a spacing token only in gap, margin or padding, a radius token only in border-radius, the type token only in font-size, and the layout token only in a column property.","message":"A registered presentation token reaches a CSS property its kind does not allow, directly or through a custom-property alias.","severity":"error"},{"cause":"A construct outside the bounded source language was used: imports other than @thresho/site-sdk and local components, hooks, handlers, function calls, spreads, dynamic names, network access.","code":"UNSUPPORTED_SOURCE","docsAnchor":"unsupported-source","docsUrl":"https://docs.thresho.com/reference/diagnostics#unsupported-source","family":"source","fix":"A construct outside the bounded source language was used: imports other than @thresho/site-sdk and local components, hooks, handlers, function calls, spreads, dynamic names, network access. Replace it with an SDK component or plain markup.","message":"A construct outside the bounded source language was used: imports other than @thresho/site-sdk and local components, hooks, handlers, function calls, spreads, dynamic names, network access.","severity":"error"}],"formatVersion":2}
package/index.d.ts ADDED
@@ -0,0 +1,90 @@
1
+ /** Generated from the compiler vocabulary. Do not edit. */
2
+ import type { JSX } from "./jsx-runtime.js";
3
+ export type SiteChild = JSX.Element | string | number | boolean | null | undefined | readonly SiteChild[];
4
+ /** @remarks The compiler enforces source syntax, scope, nesting, bounds and cross-field constraints. TypeScript alone does not establish source acceptance. */
5
+ export type SiteSourceManifest = { "kind": "thresho.website.source"; "formatVersion": 2; "id": string; "name": string; "journeys": Array<"presentation-retail-journey.v2">; "locales"?: { "default": string; "supported": Array<string>; }; "routes": Array<{ "path": string; "entry": string; "capability"?: "commerce.discovery" | "commerce.productPurchase" | "commerce.cart"; "role"?: "home" | "content" | "catalog" | "product" | "cart" | "checkout" | "confirmation" | "account" | "notFound"; "seo"?: { "title"?: string; "description"?: string; "ogImage"?: string; "noindex"?: boolean; }; }>; "content": Record<string, (string) | (Record<string, string>)>; "styles"?: Array<string>; "fonts"?: Array<{ "slot": string; "family": "manrope" | "playfair-display"; "weight"?: number; "style"?: "normal" | "italic"; "display"?: "auto" | "block" | "swap" | "fallback" | "optional"; "preload"?: boolean; }>; "media"?: Array<{ "slot": string; "kind": "image" | "video"; "backend": "r2" | "stream"; "poster"?: string; "hero"?: boolean; }>; "forms"?: Array<{ "formId": string; "formKind": "contact" | "lead" | "newsletter" | "booking" | "review"; "heading": string; "subheading"?: string; "submitLabel": string; "successMessage": string; "consent": { "label": string; "privacyPath": string; }; "fields": Array<{ "name": string; "kind": "text" | "email" | "tel" | "url" | "number" | "textarea" | "select" | "checkbox" | "radio-group" | "date" | "time"; "label": string; "purpose": "name" | "email" | "phone" | "company" | "role" | "message" | "service" | "budget" | "date" | "time" | "partySize" | "rating" | "notes" | "address" | "city" | "postalCode" | "country" | "url" | "quantity" | "preference"; "required"?: boolean; "hint"?: string; "placeholder"?: string; "autoComplete"?: string; "maxLength"?: number; "minLength"?: number; "min"?: (number) | (string); "max"?: (number) | (string); "step"?: number; "rows"?: number; "options"?: Array<{ "value": string; "label": string; }>; }>; }>; "extension"?: { "contentKeys"?: Array<string>; "imageSlots"?: Array<string>; "tokens"?: Array<{ "token": "--presentation-color-accent" | "--presentation-color-surface" | "--presentation-type-scale" | "--presentation-gap" | "--presentation-radius" | "--presentation-columns"; "minimum"?: number; "maximum"?: number; "allowedValues"?: Array<"var(--presentation-palette-accent)" | "var(--presentation-palette-ink)" | "var(--presentation-palette-muted)" | "var(--presentation-palette-line)" | "var(--presentation-palette-surface)">; }>; "anchors"?: Array<{ "route": string; "nodeId": string; "properties": Array<"data-design-columns" | "data-design-columns-tablet" | "data-design-columns-mobile" | "data-design-gap" | "data-design-image-ratio" | "data-design-typography" | "data-design-color" | "data-design-visibility" | "data-design-repeat" | "data-design-facet-search">; }>; "regions"?: Array<{ "id": string; "route": string; "nodeId": string; "position": "before" | "after" | "inside-start" | "inside-end"; "allowedBlocks": Array<"Content.Text" | "Catalog.Root" | "Catalog.Products" | "Catalog.ResultCount" | "Catalog.Filters" | "Catalog.PriceRange" | "Catalog.SelectedFilters" | "Catalog.Sort" | "Catalog.Categories" | "Catalog.FilterPanel" | "Catalog.ClearFilters" | "Catalog.Search" | "Catalog.Pickup" | "Catalog.LoadMore" | "Catalog.Status" | "Product.Link" | "Product.Image" | "Product.Options" | "Product.Name" | "Product.Description" | "Product.CompareAtPrice" | "Product.Rating" | "Product.Badge" | "Product.Pickup" | "Product.Availability" | "Product.GalleryImage" | "Product.GalleryThumbnails" | "Product.GalleryPrevious" | "Product.GalleryNext" | "Product.Specifications" | "Product.SKU" | "Presentation.Image" | "Presentation.Video" | "Presentation.Icon" | "Form.Contact" | "Form.Lead" | "Form.Newsletter" | "Form.Booking" | "Form.Review">; "minimumBlocks"?: number; "maximumBlocks"?: number; }>; "routeKits"?: Array<{ "id": string; "label": string; "template": string; "pathPattern": string; }>; }; };
6
+ export type SiteSourceInput = { manifest: SiteSourceManifest; files: Record<string, string> };
7
+ export type SiteSourceRoute = SiteSourceManifest["routes"][number];
8
+ export type SiteSourceRouteSeo = NonNullable<SiteSourceRoute["seo"]>;
9
+ export type SiteLocales = NonNullable<SiteSourceManifest["locales"]>;
10
+ export type SiteFontSlot = NonNullable<SiteSourceManifest["fonts"]>[number];
11
+ export type SiteMediaSlot = NonNullable<SiteSourceManifest["media"]>[number];
12
+ export type SiteFormDefinition = NonNullable<SiteSourceManifest["forms"]>[number];
13
+ export type SiteFormField = SiteFormDefinition["fields"][number];
14
+ export type SiteSourceExtension = NonNullable<SiteSourceManifest["extension"]>;
15
+ export type SiteSourceExtensionToken = NonNullable<SiteSourceExtension["tokens"]>[number];
16
+ export type SiteSourceExtensionAnchor = NonNullable<SiteSourceExtension["anchors"]>[number];
17
+ export type SiteSourceExtensionRegion = NonNullable<SiteSourceExtension["regions"]>[number];
18
+ export type SiteSourceExtensionRouteKit = NonNullable<SiteSourceExtension["routeKits"]>[number];
19
+ export declare const Content: {
20
+ readonly "Text": (props: { "field": string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
21
+ };
22
+ export declare const Catalog: {
23
+ readonly "Root": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
24
+ readonly "Products": (props: { "className"?: string; "nodeId"?: string; } & ({ item: string | (() => JSX.Element); children?: SiteChild } | { item?: never; children: SiteChild })) => JSX.Element;
25
+ readonly "ResultCount": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
26
+ readonly "Filters": (props: { "className"?: string; "data-design-facet-search"?: true | false | "true" | "false"; "nodeId"?: string; }) => JSX.Element;
27
+ readonly "PriceRange": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
28
+ readonly "SelectedFilters": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
29
+ readonly "Sort": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
30
+ readonly "Categories": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
31
+ readonly "FilterPanel": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
32
+ readonly "ClearFilters": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
33
+ readonly "Search": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
34
+ readonly "Pickup": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
35
+ readonly "LoadMore": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
36
+ readonly "Status": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
37
+ };
38
+ export declare const Product: {
39
+ readonly "Link": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
40
+ readonly "Image": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
41
+ readonly "QuickAdd": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
42
+ readonly "Options": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
43
+ readonly "Name": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
44
+ readonly "Description": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
45
+ readonly "CompareAtPrice": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
46
+ readonly "Rating": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
47
+ readonly "Badge": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
48
+ readonly "Pickup": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
49
+ readonly "Price": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
50
+ readonly "PurchaseTerms": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
51
+ readonly "Availability": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
52
+ readonly "GalleryImage": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
53
+ readonly "GalleryThumbnails": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
54
+ readonly "GalleryPrevious": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
55
+ readonly "GalleryNext": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
56
+ readonly "Specifications": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
57
+ readonly "SKU": (props: { "className"?: string; "nodeId"?: string; }) => JSX.Element;
58
+ };
59
+ export declare const Cart: {
60
+ readonly "Summary": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
61
+ readonly "Lines": (props: { "className"?: string; "label"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
62
+ readonly "LineQuantity": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
63
+ readonly "LineRemove": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
64
+ readonly "Adjustment": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
65
+ readonly "Total": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
66
+ readonly "Checkout": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
67
+ };
68
+ export declare const Checkout: {
69
+ readonly "Root": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
70
+ readonly "Coordinator": (props: { "className"?: string; "nodeId"?: string; children?: SiteChild; }) => JSX.Element;
71
+ readonly "Contact": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
72
+ readonly "Fulfillment": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
73
+ readonly "Summary": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
74
+ readonly "Payment": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
75
+ readonly "Submit": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
76
+ readonly "Status": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
77
+ readonly "Confirmation": (props: { "className"?: string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
78
+ };
79
+ export declare const Presentation: {
80
+ readonly "Image": (props: { "className"?: string; "slot": string; "alt": string; "nodeId"?: string; }) => JSX.Element;
81
+ readonly "Video": (props: { "className"?: string; "slot": string; "label"?: string; "nodeId"?: string; }) => JSX.Element;
82
+ readonly "Icon": (props: { "className"?: string; "name": "menu" | "search" | "heart" | "user" | "bag" | "chevron-down" | "arrow-left" | "arrow-right" | "x" | "plus" | "minus" | "star"; "nodeId"?: string; }) => JSX.Element;
83
+ };
84
+ export declare const Form: {
85
+ readonly "Contact": (props: { "form": string; "className"?: string; "nodeId"?: string; }) => JSX.Element;
86
+ readonly "Lead": (props: { "form": string; "className"?: string; "nodeId"?: string; }) => JSX.Element;
87
+ readonly "Newsletter": (props: { "form": string; "className"?: string; "nodeId"?: string; }) => JSX.Element;
88
+ readonly "Booking": (props: { "form": string; "className"?: string; "nodeId"?: string; }) => JSX.Element;
89
+ readonly "Review": (props: { "form": string; "className"?: string; "nodeId"?: string; }) => JSX.Element;
90
+ };
@@ -0,0 +1,32 @@
1
+ /** Generated from the compiler vocabulary. Do not edit. */
2
+ import type { SiteChild } from "./index.js";
3
+ export namespace JSX {
4
+ export interface Element { readonly __threshoSiteElement?: never; }
5
+ export interface ElementChildrenAttribute { children: unknown; }
6
+ export interface IntrinsicElements {
7
+ "div": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
8
+ "section": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
9
+ "main": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
10
+ "header": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
11
+ "nav": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
12
+ "aside": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
13
+ "footer": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
14
+ "article": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
15
+ "h1": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
16
+ "h2": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
17
+ "h3": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
18
+ "h4": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
19
+ "h5": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
20
+ "h6": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
21
+ "p": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
22
+ "span": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
23
+ "strong": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
24
+ "small": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
25
+ "em": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
26
+ "ul": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
27
+ "ol": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
28
+ "li": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
29
+ "a": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
30
+ "label": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
31
+ }
32
+ }
@@ -0,0 +1,32 @@
1
+ /** Generated from the compiler vocabulary. Do not edit. */
2
+ import type { SiteChild } from "./index.js";
3
+ export namespace JSX {
4
+ export interface Element { readonly __threshoSiteElement?: never; }
5
+ export interface ElementChildrenAttribute { children: unknown; }
6
+ export interface IntrinsicElements {
7
+ "div": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
8
+ "section": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
9
+ "main": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
10
+ "header": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
11
+ "nav": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
12
+ "aside": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
13
+ "footer": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
14
+ "article": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
15
+ "h1": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
16
+ "h2": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
17
+ "h3": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
18
+ "h4": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
19
+ "h5": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
20
+ "h6": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
21
+ "p": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
22
+ "span": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
23
+ "strong": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
24
+ "small": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
25
+ "em": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
26
+ "ul": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
27
+ "ol": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
28
+ "li": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
29
+ "a": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
30
+ "label": { "className"?: string; "id"?: string; "role"?: string; "href"?: string; "field"?: string; "item"?: string; "nodeId"?: string; "slot"?: string; "alt"?: string; "name"?: string; "form"?: string; "data-design-columns"?: number | `${number}`; "data-design-columns-tablet"?: number | `${number}`; "data-design-columns-mobile"?: number | `${number}`; "data-design-gap"?: number | `${number}`; "data-design-image-ratio"?: "1/1" | "4/5" | "3/2" | "16/9"; "data-design-typography"?: "display" | "title" | "heading" | "body" | "caption"; "data-design-color"?: "surface" | "ink" | "muted" | "accent" | "line"; "data-design-visibility"?: "visible" | "hidden"; "data-design-repeat"?: boolean | "true" | "false" | ""; "data-design-facet-search"?: never; children?: SiteChild; [name: `aria-${string}`]: string | boolean | undefined; };
31
+ }
32
+ }
package/package.json CHANGED
@@ -1,6 +1,45 @@
1
1
  {
2
2
  "name": "@thresho/site-sdk",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "2.1.0",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/thresholtd/site-sdk.git"
9
+ },
10
+ "types": "./index.d.ts",
11
+ "exports": {
12
+ ".": {
13
+ "types": "./index.d.ts"
14
+ },
15
+ "./jsx-runtime": {
16
+ "types": "./jsx-runtime.d.ts"
17
+ },
18
+ "./jsx-dev-runtime": {
19
+ "types": "./jsx-dev-runtime.d.ts"
20
+ },
21
+ "./tsconfig.json": "./tsconfig.json",
22
+ "./schema/manifest.schema.json": "./schema/manifest.schema.json",
23
+ "./schema/source.schema.json": "./schema/source.schema.json",
24
+ "./vocabulary.json": "./vocabulary.json",
25
+ "./diagnostics.json": "./diagnostics.json"
26
+ },
27
+ "files": [
28
+ "CHANGELOG.md",
29
+ "LICENSE",
30
+ "README.md",
31
+ "diagnostics.json",
32
+ "index.d.ts",
33
+ "jsx-dev-runtime.d.ts",
34
+ "jsx-runtime.d.ts",
35
+ "schema/manifest.schema.json",
36
+ "schema/source.schema.json",
37
+ "tsconfig.json",
38
+ "vocabulary.json"
39
+ ],
40
+ "thresho": {
41
+ "formatVersion": 2,
42
+ "compilerVersion": "site-source-compiler/10",
43
+ "vocabularyDigest": "c39d5c38e77cd041167eb953514c6de5c6b3acf8d6450a226db5d7494e76e638"
44
+ }
45
+ }
@@ -0,0 +1 @@
1
+ {"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"content":{"additionalProperties":{"oneOf":[{"description":"Maximum length is measured in Unicode code points.","maxLength":10000,"type":"string","x-thresho-maximumCharacters":10000},{"additionalProperties":{"maxLength":10000,"type":"string","x-thresho-maximumCharacters":10000},"maxProperties":8,"minProperties":1,"propertyNames":{"pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"type":"object"}]},"propertyNames":{"pattern":"^[a-z][a-z0-9_.-]{0,63}$"},"type":"object"},"extension":{"additionalProperties":false,"description":"The declared extension surface. The compiler also checks that every named content key, image slot, token declaration, nodeId, route and block exists in this package, and refuses a protected surface.","minProperties":1,"properties":{"anchors":{"items":{"additionalProperties":false,"properties":{"nodeId":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,79}$","type":"string"},"properties":{"items":{"enum":["data-design-columns","data-design-columns-tablet","data-design-columns-mobile","data-design-gap","data-design-image-ratio","data-design-typography","data-design-color","data-design-visibility","data-design-repeat","data-design-facet-search"]},"maxItems":16,"minItems":1,"type":"array","uniqueItems":true},"route":{"maxLength":256,"minLength":1,"type":"string"}},"required":["route","nodeId","properties"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"contentKeys":{"items":{"pattern":"^[a-z][a-z0-9_.-]{0,63}$","type":"string"},"maxItems":512,"minItems":1,"type":"array","uniqueItems":true},"imageSlots":{"items":{"pattern":"^[a-z][a-z0-9-]{0,63}$","type":"string"},"maxItems":32,"minItems":1,"type":"array","uniqueItems":true},"regions":{"items":{"additionalProperties":false,"properties":{"allowedBlocks":{"items":{"enum":["Content.Text","Catalog.Root","Catalog.Products","Catalog.ResultCount","Catalog.Filters","Catalog.PriceRange","Catalog.SelectedFilters","Catalog.Sort","Catalog.Categories","Catalog.FilterPanel","Catalog.ClearFilters","Catalog.Search","Catalog.Pickup","Catalog.LoadMore","Catalog.Status","Product.Link","Product.Image","Product.Options","Product.Name","Product.Description","Product.CompareAtPrice","Product.Rating","Product.Badge","Product.Pickup","Product.Availability","Product.GalleryImage","Product.GalleryThumbnails","Product.GalleryPrevious","Product.GalleryNext","Product.Specifications","Product.SKU","Presentation.Image","Presentation.Video","Presentation.Icon","Form.Contact","Form.Lead","Form.Newsletter","Form.Booking","Form.Review"]},"maxItems":32,"minItems":1,"type":"array","uniqueItems":true},"id":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"maximumBlocks":{"maximum":16,"minimum":0,"type":"integer"},"minimumBlocks":{"maximum":16,"minimum":0,"type":"integer"},"nodeId":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,79}$","type":"string"},"position":{"enum":["before","after","inside-start","inside-end"]},"route":{"maxLength":256,"minLength":1,"type":"string"}},"required":["id","route","nodeId","position","allowedBlocks"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"},"routeKits":{"items":{"additionalProperties":false,"properties":{"id":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"label":{"maxLength":80,"minLength":1,"type":"string"},"pathPattern":{"maxLength":256,"minLength":1,"type":"string"},"template":{"maxLength":256,"minLength":1,"type":"string"}},"required":["id","label","template","pathPattern"],"type":"object"},"maxItems":16,"minItems":1,"type":"array"},"tokens":{"items":{"additionalProperties":false,"allOf":[{"if":{"properties":{"token":{"enum":["--presentation-color-accent","--presentation-color-surface"]}},"required":["token"]},"then":{"not":{"anyOf":[{"required":["minimum"]},{"required":["maximum"]}]}}},{"if":{"properties":{"token":{"const":"--presentation-columns"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":12,"minimum":1,"type":"integer"},"minimum":{"maximum":12,"minimum":1,"type":"integer"}}}},{"if":{"properties":{"token":{"const":"--presentation-type-scale"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":2,"minimum":0.75,"type":"number"},"minimum":{"maximum":2,"minimum":0.75,"type":"number"}}}},{"if":{"properties":{"token":{"const":"--presentation-gap"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":96,"minimum":0,"type":"number"},"minimum":{"maximum":96,"minimum":0,"type":"number"}}}},{"if":{"properties":{"token":{"const":"--presentation-radius"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":32,"minimum":0,"type":"number"},"minimum":{"maximum":32,"minimum":0,"type":"number"}}}}],"properties":{"allowedValues":{"items":{"enum":["var(--presentation-palette-accent)","var(--presentation-palette-ink)","var(--presentation-palette-muted)","var(--presentation-palette-line)","var(--presentation-palette-surface)"]},"minItems":1,"type":"array","uniqueItems":true},"maximum":{"type":"number"},"minimum":{"type":"number"},"token":{"enum":["--presentation-color-accent","--presentation-color-surface","--presentation-type-scale","--presentation-gap","--presentation-radius","--presentation-columns"]}},"required":["token"],"type":"object"},"maxItems":16,"minItems":1,"type":"array","uniqueItems":true}},"type":"object"},"fonts":{"items":{"additionalProperties":false,"properties":{"display":{"enum":["auto","block","swap","fallback","optional"],"type":"string"},"family":{"enum":["manrope","playfair-display"],"type":"string"},"preload":{"type":"boolean"},"slot":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"style":{"enum":["normal","italic"],"type":"string"},"weight":{"maximum":900,"minimum":100,"multipleOf":100,"type":"integer"}},"required":["slot","family"],"type":"object"},"maxItems":8,"type":"array"},"formatVersion":{"const":2},"forms":{"items":{"additionalProperties":false,"properties":{"consent":{"additionalProperties":false,"properties":{"label":{"maxLength":180,"minLength":1,"type":"string"},"privacyPath":{"maxLength":256,"minLength":1,"pattern":"^(?!.*(?:^|\\/)\\.{1,2}(?:\\/|$))(?!.*\\/\\/)(?!.*:)\\/[^?#%\\\\\\u0000-\\u001f\\u007f]*$","type":"string"}},"required":["label","privacyPath"],"type":"object"},"fields":{"items":{"additionalProperties":false,"allOf":[{"if":{"properties":{"kind":{"enum":["select","radio-group"]}},"required":["kind"]},"then":{"required":["options"]}},{"if":{"properties":{"kind":{"not":{"enum":["select","radio-group"]}}},"required":["kind"]},"then":{"not":{"required":["options"]}}}],"properties":{"autoComplete":{"maxLength":64,"type":"string"},"hint":{"maxLength":240,"type":"string"},"kind":{"enum":["text","email","tel","url","number","textarea","select","checkbox","radio-group","date","time"]},"label":{"maxLength":80,"minLength":1,"type":"string"},"max":{"oneOf":[{"type":"number"},{"maxLength":20,"type":"string"}]},"maxLength":{"maximum":5000,"minimum":1,"type":"integer"},"min":{"oneOf":[{"type":"number"},{"maxLength":20,"type":"string"}]},"minLength":{"maximum":5000,"minimum":1,"type":"integer"},"name":{"pattern":"^[a-z][a-z0-9_]{1,39}$","type":"string"},"options":{"items":{"additionalProperties":false,"properties":{"label":{"maxLength":60,"minLength":1,"type":"string"},"value":{"maxLength":60,"minLength":1,"type":"string"}},"required":["value","label"],"type":"object"},"maxItems":12,"minItems":1,"type":"array"},"placeholder":{"maxLength":160,"type":"string"},"purpose":{"enum":["name","email","phone","company","role","message","service","budget","date","time","partySize","rating","notes","address","city","postalCode","country","url","quantity","preference"]},"required":{"type":"boolean"},"rows":{"maximum":20,"minimum":1,"type":"integer"},"step":{"exclusiveMinimum":0,"type":"number"}},"required":["name","kind","label","purpose"],"type":"object"},"maxItems":12,"minItems":1,"type":"array"},"formId":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"formKind":{"enum":["contact","lead","newsletter","booking","review"]},"heading":{"maxLength":120,"minLength":1,"type":"string"},"subheading":{"maxLength":240,"type":"string"},"submitLabel":{"maxLength":80,"minLength":1,"type":"string"},"successMessage":{"maxLength":240,"minLength":1,"type":"string"}},"required":["formId","formKind","heading","submitLabel","successMessage","consent","fields"],"type":"object"},"maxItems":8,"minItems":1,"type":"array"},"id":{"pattern":"^[a-z0-9][a-z0-9._-]{0,63}$","type":"string"},"journeys":{"items":{"const":"presentation-retail-journey.v2"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true},"kind":{"const":"thresho.website.source"},"locales":{"additionalProperties":false,"properties":{"default":{"pattern":"^[a-z]{2,3}(-[A-Z]{2})?$","type":"string"},"supported":{"items":{"pattern":"^[a-z]{2,3}(-[A-Z]{2})?$","type":"string"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true}},"required":["default","supported"],"type":"object"},"media":{"items":{"additionalProperties":false,"properties":{"backend":{"enum":["r2","stream"],"type":"string"},"hero":{"type":"boolean"},"kind":{"enum":["image","video"],"type":"string"},"poster":{"pattern":"^[a-z][a-z0-9-]{0,63}$","type":"string"},"slot":{"pattern":"^[a-z][a-z0-9-]{0,63}$","type":"string"}},"required":["slot","kind","backend"],"type":"object"},"maxItems":32,"type":"array"},"name":{"maxLength":160,"minLength":1,"type":"string"},"routes":{"items":{"additionalProperties":false,"allOf":[{"if":{"properties":{"role":{"enum":["cart","checkout","confirmation","account"]}},"required":["role"]},"then":{"not":{"required":["seo"]}}},{"if":{"properties":{"role":{"const":"notFound"}},"required":["role"]},"then":{"not":{"anyOf":[{"required":["seo"]},{"required":["capability"]}]},"properties":{"path":{"const":"/404"}}}},{"if":{"properties":{"role":{"const":"product"}},"required":["role"]},"then":{"properties":{"path":{"pattern":"^(?:/[A-Za-z0-9._~-]+)*/:[A-Za-z][A-Za-z0-9_]*$"}}}}],"anyOf":[{"properties":{"path":{"not":{"anyOf":[{"pattern":"^(?:/(?:__[dD][rR][aA][fF][tT]|__[pP][oO][rR][tT][aA][lL]-[pP][rR][eE][vV][iI][eE][wW]|__[pP][uU][bB][lL][iI][sS][hH][eE][dD]-[sS][nN][aA][pP][sS][hH][oO][tT]|__[sS][iI][tT][eE]-[bB][uU][iI][lL][dD]-[pP][rR][eE][vV][iI][eE][wW]|__[tT][hH][rR][eE][sS][hH][oO]|__[vV][aA][rR][iI][aA][nN][tT]-[pP][rR][eE][vV][iI][eE][wW]|[aA][cC][cC][oO][uU][nN][tT]|[aA][pP][iI]|[aA][uU][tT][hH]|[cC][aA][rR][tT]|[cC][hH][eE][cC][kK][oO][uU][tT]|[cC][lL][aA][sS][sS][eE][sS]|[cC][oO][nN][fF][iI][rR][mM][aA][tT][iI][oO][nN]|[eE][mM][aA][iI][lL]|[eE][vV][eE][nN][tT][sS]|[fF][eE][eE][dD]\\.[xX][mM][lL]|[iI][nN][tT][eE][rR][nN][aA][lL]|[lL][oO][gG][iI][nN]|[lL][oO][gG][oO][uU][tT]|[nN][eE][wW][sS][lL][eE][tT][tT][eE][rR]|[oO][gG]-[iI][mM][aA][gG][eE]|[oO][rR][dD][eE][rR]|[pP][aA][yY]|[pP][oO][rR][tT][aA][lL]|[pP][rR][eE][vV][iI][eE][wW]|[rR][eE][vV][iI][eE][wW]|[rR][oO][bB][oO][tT][sS]\\.[tT][xX][tT]|[sS][iI][tT][eE][mM][aA][pP]\\.[xX][mM][lL]|[sS][tT][oO][cC][kK]-[aA][lL][eE][rR][tT][sS])(?:/|$))"},{"pattern":"^/:"}]}}}},{"properties":{"path":{"pattern":"^/cart/?$"},"role":{"const":"cart"}},"required":["role"]},{"properties":{"path":{"pattern":"^/checkout/?$"},"role":{"const":"checkout"}},"required":["role"]},{"properties":{"path":{"pattern":"^/confirmation/?$"},"role":{"const":"confirmation"}},"required":["role"]}],"properties":{"capability":{"enum":["commerce.discovery","commerce.productPurchase","commerce.cart"]},"entry":{"pattern":"^(?!/)(?!.*[\\\\\\u0000-\\u001f\\u007f])(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/]+(?:/[^/]+)*\\.tsx$","type":"string"},"path":{"anyOf":[{"const":"/"},{"not":{"pattern":"/$"}}],"maxLength":256,"not":{"anyOf":[{"pattern":"^/[Ss][Ii][Tt][Ee][Mm][Aa][Pp]-[^/]+\\.[Xx][Mm][Ll]/?$"},{"pattern":"^/[Bb][Oo][Oo][Kk]/[Cc][Oo][Nn][Ff][Ii][Rr][Mm][Ee][Dd]/?$"},{"pattern":"^/[Jj][Oo][Ii][Nn]/[Cc][Oo][Nn][Ff][Ii][Rr][Mm][Ee][Dd]/?$"},{"pattern":"^/__thresho/"},{"pattern":"^/\\.well-known/"},{"pattern":"^/feeds/"},{"pattern":"^/robots\\.txt$"},{"pattern":"^/sitemap\\.xml$"},{"pattern":"^/feed\\.xml$"},{"pattern":"^/manifest\\.json$"},{"pattern":"^/sw\\.js$"},{"pattern":"^/favicon\\.ico$"},{"pattern":"^/agents\\.md$"},{"pattern":"^/llms\\.txt$"},{"pattern":"^/health$"},{"pattern":"^/ready$"}]},"pattern":"^(?!.*(?:^|/)\\.{1,2}(?:/|$))/(?:[A-Za-z0-9._~-]+/)*[A-Za-z0-9._~-]*(?::[A-Za-z][A-Za-z0-9_]*)?$","type":"string"},"role":{"enum":["home","content","catalog","product","cart","checkout","confirmation","account","notFound"]},"seo":{"additionalProperties":false,"description":"Required on every route whose role is absent, home, content, catalog or product. Not allowed on cart, checkout, confirmation, account or notFound. title and description name content fields: 10 to 60 and 50 to 160 characters are recommended.","properties":{"description":{"pattern":"^[a-z][a-z0-9_.-]{0,127}$","type":"string"},"noindex":{"type":"boolean"},"ogImage":{"pattern":"^[a-z][a-z0-9_.-]{0,127}$","type":"string"},"title":{"pattern":"^[a-z][a-z0-9_.-]{0,127}$","type":"string"}},"type":"object"}},"required":["path","entry"],"type":"object"},"minItems":1,"type":"array"},"styles":{"items":{"pattern":"^(?!/)(?!.*[\\\\\\u0000-\\u001f\\u007f])(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/]+(?:/[^/]+)*\\.css$","type":"string"},"maxItems":64,"type":"array","uniqueItems":true}},"required":["kind","formatVersion","id","name","journeys","routes","content"],"type":"object"}
@@ -0,0 +1 @@
1
+ {"$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{"files":{"additionalProperties":{"description":"maxLength is a character guard; the compiler also enforces the UTF-8 byte limit.","maxLength":65536,"type":"string","x-thresho-maximumUtf8Bytes":65536},"propertyNames":{"pattern":"^(?!/)(?!.*[\\\\\\u0000-\\u001f\\u007f])(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/]+(?:/[^/]+)*\\.(?:tsx|css)$"},"type":"object"},"manifest":{"additionalProperties":false,"properties":{"content":{"additionalProperties":{"oneOf":[{"description":"Maximum length is measured in Unicode code points.","maxLength":10000,"type":"string","x-thresho-maximumCharacters":10000},{"additionalProperties":{"maxLength":10000,"type":"string","x-thresho-maximumCharacters":10000},"maxProperties":8,"minProperties":1,"propertyNames":{"pattern":"^[a-z]{2,3}(-[A-Z]{2})?$"},"type":"object"}]},"propertyNames":{"pattern":"^[a-z][a-z0-9_.-]{0,63}$"},"type":"object"},"extension":{"additionalProperties":false,"description":"The declared extension surface. The compiler also checks that every named content key, image slot, token declaration, nodeId, route and block exists in this package, and refuses a protected surface.","minProperties":1,"properties":{"anchors":{"items":{"additionalProperties":false,"properties":{"nodeId":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,79}$","type":"string"},"properties":{"items":{"enum":["data-design-columns","data-design-columns-tablet","data-design-columns-mobile","data-design-gap","data-design-image-ratio","data-design-typography","data-design-color","data-design-visibility","data-design-repeat","data-design-facet-search"]},"maxItems":16,"minItems":1,"type":"array","uniqueItems":true},"route":{"maxLength":256,"minLength":1,"type":"string"}},"required":["route","nodeId","properties"],"type":"object"},"maxItems":256,"minItems":1,"type":"array"},"contentKeys":{"items":{"pattern":"^[a-z][a-z0-9_.-]{0,63}$","type":"string"},"maxItems":512,"minItems":1,"type":"array","uniqueItems":true},"imageSlots":{"items":{"pattern":"^[a-z][a-z0-9-]{0,63}$","type":"string"},"maxItems":32,"minItems":1,"type":"array","uniqueItems":true},"regions":{"items":{"additionalProperties":false,"properties":{"allowedBlocks":{"items":{"enum":["Content.Text","Catalog.Root","Catalog.Products","Catalog.ResultCount","Catalog.Filters","Catalog.PriceRange","Catalog.SelectedFilters","Catalog.Sort","Catalog.Categories","Catalog.FilterPanel","Catalog.ClearFilters","Catalog.Search","Catalog.Pickup","Catalog.LoadMore","Catalog.Status","Product.Link","Product.Image","Product.Options","Product.Name","Product.Description","Product.CompareAtPrice","Product.Rating","Product.Badge","Product.Pickup","Product.Availability","Product.GalleryImage","Product.GalleryThumbnails","Product.GalleryPrevious","Product.GalleryNext","Product.Specifications","Product.SKU","Presentation.Image","Presentation.Video","Presentation.Icon","Form.Contact","Form.Lead","Form.Newsletter","Form.Booking","Form.Review"]},"maxItems":32,"minItems":1,"type":"array","uniqueItems":true},"id":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"maximumBlocks":{"maximum":16,"minimum":0,"type":"integer"},"minimumBlocks":{"maximum":16,"minimum":0,"type":"integer"},"nodeId":{"pattern":"^[A-Za-z][A-Za-z0-9_-]{0,79}$","type":"string"},"position":{"enum":["before","after","inside-start","inside-end"]},"route":{"maxLength":256,"minLength":1,"type":"string"}},"required":["id","route","nodeId","position","allowedBlocks"],"type":"object"},"maxItems":64,"minItems":1,"type":"array"},"routeKits":{"items":{"additionalProperties":false,"properties":{"id":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"label":{"maxLength":80,"minLength":1,"type":"string"},"pathPattern":{"maxLength":256,"minLength":1,"type":"string"},"template":{"maxLength":256,"minLength":1,"type":"string"}},"required":["id","label","template","pathPattern"],"type":"object"},"maxItems":16,"minItems":1,"type":"array"},"tokens":{"items":{"additionalProperties":false,"allOf":[{"if":{"properties":{"token":{"enum":["--presentation-color-accent","--presentation-color-surface"]}},"required":["token"]},"then":{"not":{"anyOf":[{"required":["minimum"]},{"required":["maximum"]}]}}},{"if":{"properties":{"token":{"const":"--presentation-columns"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":12,"minimum":1,"type":"integer"},"minimum":{"maximum":12,"minimum":1,"type":"integer"}}}},{"if":{"properties":{"token":{"const":"--presentation-type-scale"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":2,"minimum":0.75,"type":"number"},"minimum":{"maximum":2,"minimum":0.75,"type":"number"}}}},{"if":{"properties":{"token":{"const":"--presentation-gap"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":96,"minimum":0,"type":"number"},"minimum":{"maximum":96,"minimum":0,"type":"number"}}}},{"if":{"properties":{"token":{"const":"--presentation-radius"}},"required":["token"]},"then":{"not":{"required":["allowedValues"]},"properties":{"maximum":{"maximum":32,"minimum":0,"type":"number"},"minimum":{"maximum":32,"minimum":0,"type":"number"}}}}],"properties":{"allowedValues":{"items":{"enum":["var(--presentation-palette-accent)","var(--presentation-palette-ink)","var(--presentation-palette-muted)","var(--presentation-palette-line)","var(--presentation-palette-surface)"]},"minItems":1,"type":"array","uniqueItems":true},"maximum":{"type":"number"},"minimum":{"type":"number"},"token":{"enum":["--presentation-color-accent","--presentation-color-surface","--presentation-type-scale","--presentation-gap","--presentation-radius","--presentation-columns"]}},"required":["token"],"type":"object"},"maxItems":16,"minItems":1,"type":"array","uniqueItems":true}},"type":"object"},"fonts":{"items":{"additionalProperties":false,"properties":{"display":{"enum":["auto","block","swap","fallback","optional"],"type":"string"},"family":{"enum":["manrope","playfair-display"],"type":"string"},"preload":{"type":"boolean"},"slot":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"style":{"enum":["normal","italic"],"type":"string"},"weight":{"maximum":900,"minimum":100,"multipleOf":100,"type":"integer"}},"required":["slot","family"],"type":"object"},"maxItems":8,"type":"array"},"formatVersion":{"const":2},"forms":{"items":{"additionalProperties":false,"properties":{"consent":{"additionalProperties":false,"properties":{"label":{"maxLength":180,"minLength":1,"type":"string"},"privacyPath":{"maxLength":256,"minLength":1,"pattern":"^(?!.*(?:^|\\/)\\.{1,2}(?:\\/|$))(?!.*\\/\\/)(?!.*:)\\/[^?#%\\\\\\u0000-\\u001f\\u007f]*$","type":"string"}},"required":["label","privacyPath"],"type":"object"},"fields":{"items":{"additionalProperties":false,"allOf":[{"if":{"properties":{"kind":{"enum":["select","radio-group"]}},"required":["kind"]},"then":{"required":["options"]}},{"if":{"properties":{"kind":{"not":{"enum":["select","radio-group"]}}},"required":["kind"]},"then":{"not":{"required":["options"]}}}],"properties":{"autoComplete":{"maxLength":64,"type":"string"},"hint":{"maxLength":240,"type":"string"},"kind":{"enum":["text","email","tel","url","number","textarea","select","checkbox","radio-group","date","time"]},"label":{"maxLength":80,"minLength":1,"type":"string"},"max":{"oneOf":[{"type":"number"},{"maxLength":20,"type":"string"}]},"maxLength":{"maximum":5000,"minimum":1,"type":"integer"},"min":{"oneOf":[{"type":"number"},{"maxLength":20,"type":"string"}]},"minLength":{"maximum":5000,"minimum":1,"type":"integer"},"name":{"pattern":"^[a-z][a-z0-9_]{1,39}$","type":"string"},"options":{"items":{"additionalProperties":false,"properties":{"label":{"maxLength":60,"minLength":1,"type":"string"},"value":{"maxLength":60,"minLength":1,"type":"string"}},"required":["value","label"],"type":"object"},"maxItems":12,"minItems":1,"type":"array"},"placeholder":{"maxLength":160,"type":"string"},"purpose":{"enum":["name","email","phone","company","role","message","service","budget","date","time","partySize","rating","notes","address","city","postalCode","country","url","quantity","preference"]},"required":{"type":"boolean"},"rows":{"maximum":20,"minimum":1,"type":"integer"},"step":{"exclusiveMinimum":0,"type":"number"}},"required":["name","kind","label","purpose"],"type":"object"},"maxItems":12,"minItems":1,"type":"array"},"formId":{"pattern":"^[a-z][a-z0-9-]{0,31}$","type":"string"},"formKind":{"enum":["contact","lead","newsletter","booking","review"]},"heading":{"maxLength":120,"minLength":1,"type":"string"},"subheading":{"maxLength":240,"type":"string"},"submitLabel":{"maxLength":80,"minLength":1,"type":"string"},"successMessage":{"maxLength":240,"minLength":1,"type":"string"}},"required":["formId","formKind","heading","submitLabel","successMessage","consent","fields"],"type":"object"},"maxItems":8,"minItems":1,"type":"array"},"id":{"pattern":"^[a-z0-9][a-z0-9._-]{0,63}$","type":"string"},"journeys":{"items":{"const":"presentation-retail-journey.v2"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true},"kind":{"const":"thresho.website.source"},"locales":{"additionalProperties":false,"properties":{"default":{"pattern":"^[a-z]{2,3}(-[A-Z]{2})?$","type":"string"},"supported":{"items":{"pattern":"^[a-z]{2,3}(-[A-Z]{2})?$","type":"string"},"maxItems":8,"minItems":1,"type":"array","uniqueItems":true}},"required":["default","supported"],"type":"object"},"media":{"items":{"additionalProperties":false,"properties":{"backend":{"enum":["r2","stream"],"type":"string"},"hero":{"type":"boolean"},"kind":{"enum":["image","video"],"type":"string"},"poster":{"pattern":"^[a-z][a-z0-9-]{0,63}$","type":"string"},"slot":{"pattern":"^[a-z][a-z0-9-]{0,63}$","type":"string"}},"required":["slot","kind","backend"],"type":"object"},"maxItems":32,"type":"array"},"name":{"maxLength":160,"minLength":1,"type":"string"},"routes":{"items":{"additionalProperties":false,"allOf":[{"if":{"properties":{"role":{"enum":["cart","checkout","confirmation","account"]}},"required":["role"]},"then":{"not":{"required":["seo"]}}},{"if":{"properties":{"role":{"const":"notFound"}},"required":["role"]},"then":{"not":{"anyOf":[{"required":["seo"]},{"required":["capability"]}]},"properties":{"path":{"const":"/404"}}}},{"if":{"properties":{"role":{"const":"product"}},"required":["role"]},"then":{"properties":{"path":{"pattern":"^(?:/[A-Za-z0-9._~-]+)*/:[A-Za-z][A-Za-z0-9_]*$"}}}}],"anyOf":[{"properties":{"path":{"not":{"anyOf":[{"pattern":"^(?:/(?:__[dD][rR][aA][fF][tT]|__[pP][oO][rR][tT][aA][lL]-[pP][rR][eE][vV][iI][eE][wW]|__[pP][uU][bB][lL][iI][sS][hH][eE][dD]-[sS][nN][aA][pP][sS][hH][oO][tT]|__[sS][iI][tT][eE]-[bB][uU][iI][lL][dD]-[pP][rR][eE][vV][iI][eE][wW]|__[tT][hH][rR][eE][sS][hH][oO]|__[vV][aA][rR][iI][aA][nN][tT]-[pP][rR][eE][vV][iI][eE][wW]|[aA][cC][cC][oO][uU][nN][tT]|[aA][pP][iI]|[aA][uU][tT][hH]|[cC][aA][rR][tT]|[cC][hH][eE][cC][kK][oO][uU][tT]|[cC][lL][aA][sS][sS][eE][sS]|[cC][oO][nN][fF][iI][rR][mM][aA][tT][iI][oO][nN]|[eE][mM][aA][iI][lL]|[eE][vV][eE][nN][tT][sS]|[fF][eE][eE][dD]\\.[xX][mM][lL]|[iI][nN][tT][eE][rR][nN][aA][lL]|[lL][oO][gG][iI][nN]|[lL][oO][gG][oO][uU][tT]|[nN][eE][wW][sS][lL][eE][tT][tT][eE][rR]|[oO][gG]-[iI][mM][aA][gG][eE]|[oO][rR][dD][eE][rR]|[pP][aA][yY]|[pP][oO][rR][tT][aA][lL]|[pP][rR][eE][vV][iI][eE][wW]|[rR][eE][vV][iI][eE][wW]|[rR][oO][bB][oO][tT][sS]\\.[tT][xX][tT]|[sS][iI][tT][eE][mM][aA][pP]\\.[xX][mM][lL]|[sS][tT][oO][cC][kK]-[aA][lL][eE][rR][tT][sS])(?:/|$))"},{"pattern":"^/:"}]}}}},{"properties":{"path":{"pattern":"^/cart/?$"},"role":{"const":"cart"}},"required":["role"]},{"properties":{"path":{"pattern":"^/checkout/?$"},"role":{"const":"checkout"}},"required":["role"]},{"properties":{"path":{"pattern":"^/confirmation/?$"},"role":{"const":"confirmation"}},"required":["role"]}],"properties":{"capability":{"enum":["commerce.discovery","commerce.productPurchase","commerce.cart"]},"entry":{"pattern":"^(?!/)(?!.*[\\\\\\u0000-\\u001f\\u007f])(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/]+(?:/[^/]+)*\\.tsx$","type":"string"},"path":{"anyOf":[{"const":"/"},{"not":{"pattern":"/$"}}],"maxLength":256,"not":{"anyOf":[{"pattern":"^/[Ss][Ii][Tt][Ee][Mm][Aa][Pp]-[^/]+\\.[Xx][Mm][Ll]/?$"},{"pattern":"^/[Bb][Oo][Oo][Kk]/[Cc][Oo][Nn][Ff][Ii][Rr][Mm][Ee][Dd]/?$"},{"pattern":"^/[Jj][Oo][Ii][Nn]/[Cc][Oo][Nn][Ff][Ii][Rr][Mm][Ee][Dd]/?$"},{"pattern":"^/__thresho/"},{"pattern":"^/\\.well-known/"},{"pattern":"^/feeds/"},{"pattern":"^/robots\\.txt$"},{"pattern":"^/sitemap\\.xml$"},{"pattern":"^/feed\\.xml$"},{"pattern":"^/manifest\\.json$"},{"pattern":"^/sw\\.js$"},{"pattern":"^/favicon\\.ico$"},{"pattern":"^/agents\\.md$"},{"pattern":"^/llms\\.txt$"},{"pattern":"^/health$"},{"pattern":"^/ready$"}]},"pattern":"^(?!.*(?:^|/)\\.{1,2}(?:/|$))/(?:[A-Za-z0-9._~-]+/)*[A-Za-z0-9._~-]*(?::[A-Za-z][A-Za-z0-9_]*)?$","type":"string"},"role":{"enum":["home","content","catalog","product","cart","checkout","confirmation","account","notFound"]},"seo":{"additionalProperties":false,"description":"Required on every route whose role is absent, home, content, catalog or product. Not allowed on cart, checkout, confirmation, account or notFound. title and description name content fields: 10 to 60 and 50 to 160 characters are recommended.","properties":{"description":{"pattern":"^[a-z][a-z0-9_.-]{0,127}$","type":"string"},"noindex":{"type":"boolean"},"ogImage":{"pattern":"^[a-z][a-z0-9_.-]{0,127}$","type":"string"},"title":{"pattern":"^[a-z][a-z0-9_.-]{0,127}$","type":"string"}},"type":"object"}},"required":["path","entry"],"type":"object"},"minItems":1,"type":"array"},"styles":{"items":{"pattern":"^(?!/)(?!.*[\\\\\\u0000-\\u001f\\u007f])(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/]+(?:/[^/]+)*\\.css$","type":"string"},"maxItems":64,"type":"array","uniqueItems":true}},"required":["kind","formatVersion","id","name","journeys","routes","content"],"type":"object"}},"required":["manifest","files"],"type":"object","x-thresho-constraints":{"expandedSource":{"enforcement":"compiler","maximumUtf8Bytes":524288},"sourceFilePath":{"forbidden":["absolute paths","empty, dot, or dot-dot segments","backslashes","ASCII control characters"]}}}
package/tsconfig.json ADDED
@@ -0,0 +1 @@
1
+ {"compilerOptions":{"jsx":"react-jsx","jsxImportSource":"@thresho/site-sdk","module":"preserve","moduleResolution":"bundler","noEmit":true,"strict":true,"types":[]}}
@@ -0,0 +1 @@
1
+ {"compilerOnly":["source syntax, literal values, imports, spreads and executable constructs","route capability, ancestry, checkout composition and expanded child emptiness","children attributes and unknown hyphenated JSX attributes","cross-field manifest predicates, uniqueness, numeric ranges and string lengths","TypeScript structural excess-property checks do not validate unknown runtime data"],"components":{"Cart.Adjustment":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Cart.Checkout":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Cart.LineQuantity":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Cart.LineRemove":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Cart.Lines":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Cart.Summary":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Cart.Total":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Cart","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Catalog.Categories":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.ClearFilters":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":true,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.FilterPanel":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Filters":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":true,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"data-design-facet-search":{"kind":"boolean","required":false,"values":[true,false,"true","false"]},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.LoadMore":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Pickup":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":true,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.PriceRange":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":true,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Products":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"item":{"kind":"component","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.ResultCount":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Root":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Search":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":true,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.SelectedFilters":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":true,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Sort":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Catalog.Status":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Catalog","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Checkout.Confirmation":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Contact":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Coordinator":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Fulfillment":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Payment":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Root":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Status":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Submit":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Checkout.Summary":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Checkout","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Content.Text":{"acceptsChildren":true,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"ignoresChildren":true,"namespace":"Content","props":{"field":{"kind":"string","required":true},"nodeId":{"kind":"string","required":false}},"protected":false},"Form.Booking":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Form","props":{"className":{"kind":"string","required":false},"form":{"kind":"string","required":true},"nodeId":{"kind":"string","required":false}},"protected":false},"Form.Contact":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Form","props":{"className":{"kind":"string","required":false},"form":{"kind":"string","required":true},"nodeId":{"kind":"string","required":false}},"protected":false},"Form.Lead":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Form","props":{"className":{"kind":"string","required":false},"form":{"kind":"string","required":true},"nodeId":{"kind":"string","required":false}},"protected":false},"Form.Newsletter":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Form","props":{"className":{"kind":"string","required":false},"form":{"kind":"string","required":true},"nodeId":{"kind":"string","required":false}},"protected":false},"Form.Review":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Form","props":{"className":{"kind":"string","required":false},"form":{"kind":"string","required":true},"nodeId":{"kind":"string","required":false}},"protected":false},"Presentation.Icon":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Presentation","props":{"className":{"kind":"string","required":false},"name":{"kind":"string","required":true,"values":["menu","search","heart","user","bag","chevron-down","arrow-left","arrow-right","x","plus","minus","star"]},"nodeId":{"kind":"string","required":false}},"protected":false},"Presentation.Image":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Presentation","props":{"alt":{"kind":"string","required":true},"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false},"slot":{"kind":"string","required":true}},"protected":false},"Presentation.Video":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Presentation","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false},"slot":{"kind":"string","required":true}},"protected":false},"Product.Availability":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Badge":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.CompareAtPrice":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Description":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.GalleryImage":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.GalleryNext":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.GalleryPrevious":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.GalleryThumbnails":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Image":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Link":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Name":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Options":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Pickup":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":true,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Price":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Product.PurchaseTerms":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Product.QuickAdd":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":true},"Product.Rating":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.SKU":{"acceptsChildren":false,"advertisedChildren":false,"captureLabel":false,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false},"Product.Specifications":{"acceptsChildren":true,"advertisedChildren":true,"captureLabel":true,"filterPanel":false,"namespace":"Product","props":{"className":{"kind":"string","required":false},"label":{"kind":"string","required":false},"nodeId":{"kind":"string","required":false}},"protected":false}},"designProps":{"data-design-color":{"allowedValues":["surface","ink","muted","accent","line"],"kind":"colorToken"},"data-design-columns":{"kind":"integer","maximum":12,"minimum":1},"data-design-columns-mobile":{"kind":"integer","maximum":12,"minimum":1},"data-design-columns-tablet":{"kind":"integer","maximum":12,"minimum":1},"data-design-facet-search":{"kind":"boolean"},"data-design-gap":{"kind":"number","maximum":96,"minimum":0},"data-design-image-ratio":{"allowedValues":["1/1","4/5","3/2","16/9"],"kind":"enum"},"data-design-repeat":{"kind":"boolean"},"data-design-typography":{"allowedValues":["display","title","heading","body","caption"],"kind":"textToken"},"data-design-visibility":{"allowedValues":["visible","hidden"],"kind":"visibility"}},"html":["div","section","main","header","nav","aside","footer","article","h1","h2","h3","h4","h5","h6","p","span","strong","small","em","ul","ol","li","a","button","label"],"icons":["menu","search","heart","user","bag","chevron-down","arrow-left","arrow-right","x","plus","minus","star"],"manifestBounds":{"contentFields":10000,"expandedSourceBytes":524288,"issues":100,"nodeCount":2048,"nodeDepth":32,"packageBytes":3145728,"packageNodeCount":16384,"sourceFileBytes":65536,"stylesheets":64},"nesting":{"cartLines":"Cart.Lines","checkout":{"coordinator":"Checkout.Coordinator","excludedDesignProperties":["data-design-facet-search"],"forbiddenAttributes":["href","style","dangerouslySetInnerHTML","aria-hidden"],"inertHtml":["div","section","main","aside","header","footer","p","h1","h2","h3","h4","h5","h6","span","strong","em","ul","ol","li"],"roles":{"Checkout.Confirmation":{"maximum":1,"minimum":1},"Checkout.Contact":{"maximum":1,"minimum":1},"Checkout.Fulfillment":{"maximum":1,"minimum":1},"Checkout.Payment":{"maximum":1,"minimum":1},"Checkout.Status":{"maximum":1,"minimum":1},"Checkout.Submit":{"maximum":1,"minimum":1},"Checkout.Summary":{"maximum":4,"minimum":1}},"root":"Checkout.Root","treatmentTokens":["checkout-root","checkout-coordinator","checkout-contact","checkout-fulfillment","checkout-summary","checkout-payment","checkout-submit","checkout-status","checkout-confirmation","checkout-stack","checkout-grid","checkout-section","checkout-panel","checkout-content","checkout-heading","checkout-actions","checkout-label","checkout-value","checkout-error","checkout-disclosure"]},"compilerOnly":["Only named SDK imports and relative component imports are accepted; SDK default imports, namespace imports and import-type declarations are refused.","Attribute spreads, event handlers, function calls and executable source are refused by the compiler.","Catalog controls require a discovery route; Product controls on discovery routes must be inside Catalog.Products.","Cart line controls require Cart.Lines; filter-panel children and product-card repetition follow the registry rules.","Checkout composition requires one root, one coordinator and the registered role counts; only approved inert layout and treatment are accepted.","Content fields, form and media references, exact numeric bounds, empty expanded children and route requirements are checked by the compiler.","TypeScript permits unknown hyphenated JSX attributes and some structurally compatible objects; the compiler still refuses unsupported attributes and source forms.","A JSX children attribute is refused even when TypeScript accepts it; use authored child syntax."],"enforcement":"compiler","filterPanel":"Catalog.FilterPanel","forbiddenInProducts":["Catalog.FilterPanel","Cart.*","Checkout.*"],"lineControls":["Cart.LineQuantity","Cart.LineRemove"],"namespaceCapabilities":{"Cart":["commerce.discovery","commerce.productPurchase","commerce.cart"],"Catalog":["commerce.discovery"],"Checkout":["commerce.discovery","commerce.productPurchase","commerce.cart"],"Product":["commerce.productPurchase","commerce.discovery"]},"productRepeater":"Catalog.Products"},"ordinaryAttributes":["className","id","role","aria-*","data-design-*","href","field","item","nodeId","slot","alt","name","form"],"ordinaryProps":["className","id","role","aria-*","data-design-*","href","field","item","nodeId"],"refusedHtml":{"button":"native buttons are not accepted; use a registered capability action"}}