@vectoriox/iox-ui 5.46.0 → 5.47.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/fesm2022/vectoriox-iox-ui-generation-core.mjs +224 -78
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs +4109 -0
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs.map +1 -0
- package/generation-core/index.d.ts +145 -17
- package/harness-core/index.d.ts +2479 -0
- package/harness-core/package.json +3 -0
- package/package.json +5 -1
- package/src/generation-core/public-api.ts +1 -0
- package/src/generation-core/shape-check.ts +92 -0
- package/src/generation-core/site-spec.generated.ts +131 -2
- package/src/generation-core/validate-site-plan.ts +9 -62
- package/src/harness-core/business-types.ts +141 -0
- package/src/harness-core/harness-spec.generated.ts +3528 -0
- package/src/harness-core/lint.ts +94 -0
- package/src/harness-core/look.ts +32 -0
- package/src/harness-core/motion.ts +67 -0
- package/src/harness-core/needs.ts +42 -0
- package/src/harness-core/prompt-context.ts +91 -0
- package/src/harness-core/public-api.ts +18 -0
- package/src/harness-core/rank.ts +226 -0
- package/src/harness-core/site-analysis.ts +180 -0
|
@@ -23,7 +23,7 @@ declare const SPEC_SITE_PLAN_SHAPE: {
|
|
|
23
23
|
readonly business: {
|
|
24
24
|
readonly name: "string — the brand: the header, the hero, the copyright line";
|
|
25
25
|
readonly "tagline?": "string — the hero lead and the footer line";
|
|
26
|
-
readonly "facts?": "{ [fact]: string } — facts (email, phone, city): only the customer's own words; a blank fact is a publish-blocking placeholder, never invented";
|
|
26
|
+
readonly "facts?": "{ [fact]: string } — facts (email, phone, city, address, hours): only the customer's own words; a blank fact is a publish-blocking placeholder, never invented";
|
|
27
27
|
};
|
|
28
28
|
readonly design: {
|
|
29
29
|
readonly flavorId: "string — a v2 flavor pack id";
|
|
@@ -102,6 +102,8 @@ declare const SPEC_SITE_FACTS: {
|
|
|
102
102
|
readonly email: "Email address";
|
|
103
103
|
readonly phone: "Phone number";
|
|
104
104
|
readonly city: "City or area";
|
|
105
|
+
readonly address: "Street address";
|
|
106
|
+
readonly hours: "Opening hours";
|
|
105
107
|
};
|
|
106
108
|
declare const SPEC_SITE_PATTERNS: {
|
|
107
109
|
readonly "nav.inline-cta": {
|
|
@@ -1759,6 +1761,100 @@ declare const SPEC_SITE_TEMPLATES: {
|
|
|
1759
1761
|
};
|
|
1760
1762
|
};
|
|
1761
1763
|
};
|
|
1764
|
+
declare const SPEC_SITE_LIBRARY: readonly [{
|
|
1765
|
+
readonly id: "nav.inline-cta";
|
|
1766
|
+
readonly family: "nav";
|
|
1767
|
+
}, {
|
|
1768
|
+
readonly id: "nav.centered-logo";
|
|
1769
|
+
readonly family: "nav";
|
|
1770
|
+
}, {
|
|
1771
|
+
readonly id: "nav.overlay-menu";
|
|
1772
|
+
readonly family: "nav";
|
|
1773
|
+
}, {
|
|
1774
|
+
readonly id: "hero.split";
|
|
1775
|
+
readonly family: "hero";
|
|
1776
|
+
}, {
|
|
1777
|
+
readonly id: "hero.centered";
|
|
1778
|
+
readonly family: "hero";
|
|
1779
|
+
}, {
|
|
1780
|
+
readonly id: "hero.full-bleed-media";
|
|
1781
|
+
readonly family: "hero";
|
|
1782
|
+
}, {
|
|
1783
|
+
readonly id: "hero.stacked-editorial";
|
|
1784
|
+
readonly family: "hero";
|
|
1785
|
+
}, {
|
|
1786
|
+
readonly id: "proof.logo-strip";
|
|
1787
|
+
readonly family: "proof";
|
|
1788
|
+
}, {
|
|
1789
|
+
readonly id: "proof.stat-row";
|
|
1790
|
+
readonly family: "proof";
|
|
1791
|
+
}, {
|
|
1792
|
+
readonly id: "proof.testimonial-single";
|
|
1793
|
+
readonly family: "proof";
|
|
1794
|
+
}, {
|
|
1795
|
+
readonly id: "proof.testimonial-carousel";
|
|
1796
|
+
readonly family: "proof";
|
|
1797
|
+
}, {
|
|
1798
|
+
readonly id: "feature.triad";
|
|
1799
|
+
readonly family: "feature";
|
|
1800
|
+
}, {
|
|
1801
|
+
readonly id: "feature.alternating-rows";
|
|
1802
|
+
readonly family: "feature";
|
|
1803
|
+
}, {
|
|
1804
|
+
readonly id: "feature.icon-list";
|
|
1805
|
+
readonly family: "feature";
|
|
1806
|
+
}, {
|
|
1807
|
+
readonly id: "feature.tabbed";
|
|
1808
|
+
readonly family: "feature";
|
|
1809
|
+
}, {
|
|
1810
|
+
readonly id: "collection.card-grid";
|
|
1811
|
+
readonly family: "collection";
|
|
1812
|
+
}, {
|
|
1813
|
+
readonly id: "collection.masonry-gallery";
|
|
1814
|
+
readonly family: "collection";
|
|
1815
|
+
}, {
|
|
1816
|
+
readonly id: "collection.slider";
|
|
1817
|
+
readonly family: "collection";
|
|
1818
|
+
}, {
|
|
1819
|
+
readonly id: "collection.list-detail";
|
|
1820
|
+
readonly family: "collection";
|
|
1821
|
+
}, {
|
|
1822
|
+
readonly id: "story.long-form";
|
|
1823
|
+
readonly family: "story";
|
|
1824
|
+
}, {
|
|
1825
|
+
readonly id: "story.timeline";
|
|
1826
|
+
readonly family: "story";
|
|
1827
|
+
}, {
|
|
1828
|
+
readonly id: "story.quote-break";
|
|
1829
|
+
readonly family: "story";
|
|
1830
|
+
}, {
|
|
1831
|
+
readonly id: "cta.banner";
|
|
1832
|
+
readonly family: "cta";
|
|
1833
|
+
}, {
|
|
1834
|
+
readonly id: "cta.split-form";
|
|
1835
|
+
readonly family: "cta";
|
|
1836
|
+
}, {
|
|
1837
|
+
readonly id: "contact.split-map";
|
|
1838
|
+
readonly family: "contact";
|
|
1839
|
+
}, {
|
|
1840
|
+
readonly id: "contact.simple";
|
|
1841
|
+
readonly family: "contact";
|
|
1842
|
+
}, {
|
|
1843
|
+
readonly id: "faq.accordion";
|
|
1844
|
+
readonly family: "faq";
|
|
1845
|
+
}, {
|
|
1846
|
+
readonly id: "pricing.tiers";
|
|
1847
|
+
readonly family: "pricing";
|
|
1848
|
+
}, {
|
|
1849
|
+
readonly id: "footer.three-column";
|
|
1850
|
+
readonly family: "footer";
|
|
1851
|
+
}, {
|
|
1852
|
+
readonly id: "footer.mega";
|
|
1853
|
+
readonly family: "footer";
|
|
1854
|
+
}, {
|
|
1855
|
+
readonly id: "footer.minimal";
|
|
1856
|
+
readonly family: "footer";
|
|
1857
|
+
}];
|
|
1762
1858
|
|
|
1763
1859
|
/** What an untouched node of one registered type saves as (`NODE_BASELINES`, generated from the live
|
|
1764
1860
|
* iox-builder configs) — the builder serializer's flat `props` / `styleProps`, the trait names it has a
|
|
@@ -2190,6 +2286,51 @@ declare function setStyleProps(node: SerializedNode, values: Readonly<Record<str
|
|
|
2190
2286
|
/** Every node of a tree, depth first. */
|
|
2191
2287
|
declare function walkSerialized(nodes: ReadonlyArray<SerializedNode>, visit: (node: SerializedNode, ancestors: SerializedNode[]) => void, ancestors?: SerializedNode[]): void;
|
|
2192
2288
|
|
|
2289
|
+
/**
|
|
2290
|
+
* The ONE way a framework-free gate refuses a document "with a path, never repairs" (W1's site-plan gate, the
|
|
2291
|
+
* harness's analysis gate): a documented shape table (key → type text; `key?` optional, `[name]` the object's
|
|
2292
|
+
* own field names) whose key lists the gate READS — so the shape a model is told about is the shape refused —
|
|
2293
|
+
* and a collector that records each refusal at its dotted path. Generic over each gate's issue-code enum.
|
|
2294
|
+
*/
|
|
2295
|
+
type ShapeEntry = Readonly<Record<string, string>>;
|
|
2296
|
+
type PlainObject = Record<string, unknown>;
|
|
2297
|
+
/** Every fixed key an object of the shape may carry. */
|
|
2298
|
+
declare function shapeKeys(entry: ShapeEntry): string[];
|
|
2299
|
+
/** The keys an object of the shape must carry. */
|
|
2300
|
+
declare function requiredShapeKeys(entry: ShapeEntry): string[];
|
|
2301
|
+
declare const isPlainObject: (v: unknown) => v is PlainObject;
|
|
2302
|
+
declare const isNonEmptyString: (v: unknown) => v is string;
|
|
2303
|
+
/** `path.key`, or `key` at the root. */
|
|
2304
|
+
declare const pathAt: (path: string, key: string) => string;
|
|
2305
|
+
interface PathIssue<C extends string> {
|
|
2306
|
+
code: C;
|
|
2307
|
+
/** Where, as a dotted path into the document (`pages[2].sections[0].binding`). */
|
|
2308
|
+
path: string;
|
|
2309
|
+
message: string;
|
|
2310
|
+
}
|
|
2311
|
+
/** The three refusals every shape gate shares, named in that gate's own code enum. */
|
|
2312
|
+
interface ShapeIssueCodes<C extends string> {
|
|
2313
|
+
/** A value of the wrong type, or a required value missing. */
|
|
2314
|
+
shape: C;
|
|
2315
|
+
/** A key the shape does not have. */
|
|
2316
|
+
unknownKey: C;
|
|
2317
|
+
/** A name used twice where it must be unique. */
|
|
2318
|
+
duplicate: C;
|
|
2319
|
+
}
|
|
2320
|
+
declare class PathIssueCollector<C extends string> {
|
|
2321
|
+
private readonly subject;
|
|
2322
|
+
private readonly codes;
|
|
2323
|
+
readonly issues: PathIssue<C>[];
|
|
2324
|
+
/** `subject` names the document in a refusal ("… is not part of the plan shape"). */
|
|
2325
|
+
constructor(subject: string, codes: ShapeIssueCodes<C>);
|
|
2326
|
+
add(code: C, path: string, message: string): void;
|
|
2327
|
+
keys(obj: PlainObject, allowed: ReadonlyArray<string>, path: string): void;
|
|
2328
|
+
string(obj: PlainObject, key: string, path: string, required?: boolean): string | null;
|
|
2329
|
+
boolean(obj: PlainObject, key: string, path: string): void;
|
|
2330
|
+
array(obj: PlainObject, key: string, path: string): unknown[];
|
|
2331
|
+
unique(values: Array<string | null>, path: (i: number) => string, what: string): void;
|
|
2332
|
+
}
|
|
2333
|
+
|
|
2193
2334
|
/**
|
|
2194
2335
|
* The Site Plan validator — the gate in front of the composer. The wizard's plan and (later) the AI's
|
|
2195
2336
|
* plan go through the SAME checks: an unknown pattern, a slot the pattern does not declare, a source
|
|
@@ -2225,12 +2366,7 @@ declare enum SitePlanIssueCode {
|
|
|
2225
2366
|
* its alt text. */
|
|
2226
2367
|
MissingPreviewField = "missing-preview-field"
|
|
2227
2368
|
}
|
|
2228
|
-
|
|
2229
|
-
code: SitePlanIssueCode;
|
|
2230
|
-
/** Where, as a dotted path into the plan (`pages[2].sections[0].binding`). */
|
|
2231
|
-
path: string;
|
|
2232
|
-
message: string;
|
|
2233
|
-
}
|
|
2369
|
+
type SitePlanIssue = PathIssue<SitePlanIssueCode>;
|
|
2234
2370
|
interface SitePlanValidation {
|
|
2235
2371
|
valid: boolean;
|
|
2236
2372
|
issues: SitePlanIssue[];
|
|
@@ -2239,14 +2375,6 @@ declare class SitePlanError extends Error {
|
|
|
2239
2375
|
readonly issues: ReadonlyArray<SitePlanIssue>;
|
|
2240
2376
|
constructor(issues: ReadonlyArray<SitePlanIssue>);
|
|
2241
2377
|
}
|
|
2242
|
-
/** The documented plan shape (contract `site.planShape`): key → type; a key ending in `?` is optional and
|
|
2243
|
-
* a `[name]` key stands for the object's own field names. The key lists below are READ from it, so a
|
|
2244
|
-
* key the plan documents is a key the gate validates — and an undocumented one is refused. */
|
|
2245
|
-
type ShapeEntry = Readonly<Record<string, string>>;
|
|
2246
|
-
/** Every fixed key an object of the shape may carry. */
|
|
2247
|
-
declare function shapeKeys(entry: ShapeEntry): string[];
|
|
2248
|
-
/** The keys an object of the shape must carry. */
|
|
2249
|
-
declare function requiredShapeKeys(entry: ShapeEntry): string[];
|
|
2250
2378
|
/** The `:param` names of a route, in order. */
|
|
2251
2379
|
declare function routeParams(route: string): string[];
|
|
2252
2380
|
/** The plan's `$siblings.next` source of `routeSource` — what a pattern's `next.*` reads. */
|
|
@@ -2581,5 +2709,5 @@ declare function removeBarItem(globals: ReadonlyArray<SerializedNode>, itemId: s
|
|
|
2581
2709
|
/** The bar's Items list drag-to-reorder (board 2): item `from` moves to `to`. Input not mutated. */
|
|
2582
2710
|
declare function moveBarItem(globals: ReadonlyArray<SerializedNode>, from: number, to: number): BarItemsEditResult;
|
|
2583
2711
|
|
|
2584
|
-
export { BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BaselineRole, BindScope, CardBindTarget, ComposeError, ComposeIssueCode, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, FACT_KEYS, GlobalSlot, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NavPagesSource, NavRole, NavShape, NavShapeError, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanDataSourceMode, PlanDataSourceType, RelativeOp, SAMPLE_IMAGE_REF, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_FACTS, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_TEMPLATES, STUDIO_TEMPLATE, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, addBarItem, altSourceScopes, assertStyleSlots, assertValidSitePlan, barIconForRoute, blocksPublish, composeNavHeader, composeSection, composeSite, createSerializedNode, findNavRoot, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, parseSampleImageRef, patternById, patternNeedsBinding, patternNodes, patternOptionalParts, patternScopes, patternSlots, patternTakesBinding, phoneMenuPages, planFromTemplate, planNavShape, releasedLayoutDefaults, removeBarItem, requiredShapeKeys, routeParams, sampleImageRef, setStyleProps, shapeKeys, siteNavPages, validateSitePlan, walkSerialized };
|
|
2585
|
-
export type { AddBarItemResult, BarItemsEditResult, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, DataSourcePlan, FactKey, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, PagePlan, PageSectionPlan, PatternNode, RelativeDataSourcePlan, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, SiteBusiness, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSource, SitePlanValidation, SiteTemplate, TemplatePlanInput };
|
|
2712
|
+
export { BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BaselineRole, BindScope, CardBindTarget, ComposeError, ComposeIssueCode, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, FACT_KEYS, GlobalSlot, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NavPagesSource, NavRole, NavShape, NavShapeError, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanDataSourceMode, PlanDataSourceType, RelativeOp, SAMPLE_IMAGE_REF, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_TEMPLATES, STUDIO_TEMPLATE, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, addBarItem, altSourceScopes, assertStyleSlots, assertValidSitePlan, barIconForRoute, blocksPublish, composeNavHeader, composeSection, composeSite, createSerializedNode, findNavRoot, isNonEmptyString, isPlainObject, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, parseSampleImageRef, pathAt, patternById, patternNeedsBinding, patternNodes, patternOptionalParts, patternScopes, patternSlots, patternTakesBinding, phoneMenuPages, planFromTemplate, planNavShape, releasedLayoutDefaults, removeBarItem, requiredShapeKeys, routeParams, sampleImageRef, setStyleProps, shapeKeys, siteNavPages, validateSitePlan, walkSerialized };
|
|
2713
|
+
export type { AddBarItemResult, BarItemsEditResult, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, DataSourcePlan, FactKey, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, PagePlan, PageSectionPlan, PathIssue, PatternNode, PlainObject, RelativeDataSourcePlan, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, SiteBusiness, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSource, SitePlanValidation, SiteTemplate, TemplatePlanInput };
|