@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.
@@ -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
- interface SitePlanIssue {
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 };