@vectoriox/iox-ui 5.55.0 → 5.56.1

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.
@@ -1,4 +1,4 @@
1
- import { DesignChoices, AnimateId } from '@vectoriox/iox-ui/design-core';
1
+ import { DesignChoices, AnimateId, DesignTokenLike } from '@vectoriox/iox-ui/design-core';
2
2
 
3
3
  declare const SPEC_SITE_PLAN_SHAPE: {
4
4
  readonly plan: {
@@ -2884,6 +2884,8 @@ declare enum BuildStep {
2884
2884
  Preflight = "preflight",
2885
2885
  ContentTypes = "content-types",
2886
2886
  SampleImages = "sample-images",
2887
+ /** I2: the curated stock photos the plan's empty picture slots take, copied into the studio (never hot-linked). */
2888
+ StockPhotos = "stock-photos",
2887
2889
  Items = "items",
2888
2890
  DataSources = "data-sources",
2889
2891
  Pages = "pages",
@@ -2903,6 +2905,8 @@ declare enum CreatedKind {
2903
2905
  /** Fields the build added to a content type it found (types are shared by every organization of a studio). */
2904
2906
  ContentTypeFields = "content-type-fields",
2905
2907
  SampleImage = "sample-image",
2908
+ /** A stock photo copied into the studio's storage (`media/stock/…`), with its assets row. */
2909
+ StockPhoto = "stock-photo",
2906
2910
  Item = "item",
2907
2911
  DataSource = "data-source",
2908
2912
  Page = "page",
@@ -2964,7 +2968,9 @@ declare enum BuildNoticeCode {
2964
2968
  /** Storage is not configured: sample items get the empty image box, and the run says so. */
2965
2969
  NoStorage = "no-storage",
2966
2970
  /** A content type the build reuses is not public in this studio: the site will not show its items. */
2967
- ContentTypeNotPublic = "content-type-not-public"
2971
+ ContentTypeNotPublic = "content-type-not-public",
2972
+ /** The stock library could not be read: the picture slots keep the empty box, and the run says so. */
2973
+ StockUnavailable = "stock-unavailable"
2968
2974
  }
2969
2975
  interface BuildNotice {
2970
2976
  code: string;
@@ -3034,6 +3040,7 @@ declare const buildKeys: {
3034
3040
  readonly contentTypeFields: (name: string) => string;
3035
3041
  readonly item: (contentType: string, n: number) => string;
3036
3042
  readonly sampleImage: (n: number) => string;
3043
+ readonly stockPhoto: (libraryKey: string) => string;
3037
3044
  readonly dataSource: (alias: string) => string;
3038
3045
  readonly page: (key: string) => string;
3039
3046
  readonly global: (nodeId: string) => string;
@@ -3473,5 +3480,217 @@ declare function wordPattern(word: string): RegExp;
3473
3480
  /** The words to avoid and the facts never given, in every written text of the plan. */
3474
3481
  declare function planWordIssues(plan: SitePlan, ctx: PlanWordContext): PlanWordIssue[];
3475
3482
 
3476
- export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiGenerationStage, AiKeyMode, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CREDITS_PER_USD, CardBindTarget, ComposeError, ComposeIssueCode, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, FACT_KEYS, FINAL_GENERATION_STAGES, GlobalSlot, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PLAN_EDITS_ANSWER_SHAPE, PLAN_EDITS_SCHEMA_NAME, PLAN_EDIT_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanWordIssueCode, PreflightRefusalCode, RelativeOp, SAMPLE_IMAGE_REF, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_PATTERNS, SITE_PLAN_SCHEMA_NAME, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_TEMPLATES, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SitePlanWireKey, SiteTemplateError, SiteTemplateId, StepState, addBarItem, altSourceScopes, applyPlanEdits, assertStyleSlots, assertValidSitePlan, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypeFromWire, contentTypeJsonSchema, costUsd, createSerializedNode, creditsOfUsd, dataSourceJsonSchema, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, failedBuildStep, fieldJsonSchema, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, pageJsonSchema, parseSampleImageRef, pathAt, patternById, patternNeedsBinding, patternNodes, patternOptionalParts, patternScopes, patternSlots, patternTakesBinding, phoneMenuPages, planEditsFromWire, planEditsJsonSchema, planFromTemplate, planNavShape, planWordIssues, releasedLayoutDefaults, removeBarItem, requiredShapeKeys, routeParams, sampleImageRef, sectionEntrances, sectionFromWire, sectionJsonSchema, sectionPatternIds, setStyleProps, shapeKeys, siteNavPages, sitePlanFromWire, sitePlanJsonSchema, sitePlanToWire, staggerDelay, validatePlanEdits, validateSitePlan, walkSerialized, wordPattern, writtenTexts };
3477
- export type { AddBarItemResult, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, DynamicKeysAsList, EntranceAction, EntranceInteraction, EntranceSpec, FactKey, JsonSchema, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, PageData, PageDataLine, PagePlan, PageSectionPlan, PathIssue, PatternNode, PlainObject, PlanChange, PlanEdit, PlanEditIssue, PlanEditResult, PlanEditsAnswer, PlanWordContext, PlanWordIssue, PreflightRefusal, RelativeDataSourcePlan, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, SiteBuildRun, SiteBusiness, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSchemaPin, SitePlanSource, SitePlanValidation, SiteTemplate, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord, WrittenText };
3483
+ /**
3484
+ * THE Publishable gate (AI plan §3e, M1-7): ONE pure function over a snapshot of a site — its pages, globals, the
3485
+ * connectors' health, the look's token rows, what a build left to fill — run by the Publish dialog, the builder's
3486
+ * Needs attention and the server on publish (iox-cms refuses with the same findings). Works on any site, generated
3487
+ * or hand-built. Severity is decision D8: an unfilled fact, a policy placeholder or an action that points at nothing
3488
+ * BLOCKS; samples, copy placeholders and stock photos ASK ("Publish anyway"); the rest WARN. Design advice
3489
+ * (harness-core `lintDesign`) is not one of the eight — the caller adds it, and it never blocks.
3490
+ */
3491
+ declare enum SiteCheckId {
3492
+ Navigation = "navigation",
3493
+ Forms = "forms",
3494
+ Consent = "consent",
3495
+ Seo = "seo",
3496
+ Facts = "facts",
3497
+ Accessibility = "accessibility",
3498
+ Tokens = "tokens",
3499
+ Actions = "actions"
3500
+ }
3501
+ /** The eight, in §3e's order. */
3502
+ declare const SITE_CHECKS: ReadonlyArray<SiteCheckId>;
3503
+ declare enum CheckSeverity {
3504
+ Block = "block",
3505
+ Ask = "ask",
3506
+ Warn = "warn"
3507
+ }
3508
+ declare enum SiteFindingCode {
3509
+ NoHeader = "no-header",
3510
+ NoPhoneMenu = "no-phone-menu",
3511
+ FormWithoutId = "form-without-id",
3512
+ EmailNeedsMailer = "email-needs-mailer",
3513
+ TrackerWithoutBanner = "tracker-without-banner",
3514
+ NoTitle = "no-title",
3515
+ NoDescription = "no-description",
3516
+ UnfilledFact = "unfilled-fact",
3517
+ CopyPlaceholder = "copy-placeholder",
3518
+ SampleItems = "sample-items",
3519
+ StockPhoto = "stock-photo",
3520
+ NoPrivacyPage = "no-privacy-page",
3521
+ PrivacyPagePlaceholder = "privacy-page-placeholder",
3522
+ LowContrast = "low-contrast",
3523
+ HeadingOrder = "heading-order",
3524
+ ImageWithoutAlt = "image-without-alt",
3525
+ LiteralColour = "literal-colour",
3526
+ DeadLink = "dead-link",
3527
+ DeadDialogTarget = "dead-dialog-target",
3528
+ ActionNeedsConnector = "action-needs-connector"
3529
+ }
3530
+ /** Each finding's severity — one table (D8), never decided at a call site. */
3531
+ declare const FINDING_SEVERITY: Readonly<Record<SiteFindingCode, CheckSeverity>>;
3532
+ interface SiteFinding {
3533
+ check: SiteCheckId;
3534
+ severity: CheckSeverity;
3535
+ code: SiteFindingCode;
3536
+ /** In plain words, for the screen. */
3537
+ message: string;
3538
+ pageId?: string;
3539
+ nodeId?: string;
3540
+ /** The global slot (`header` / `footer`) when it is in a global. */
3541
+ owner?: string;
3542
+ }
3543
+ interface SiteCheck {
3544
+ id: SiteCheckId;
3545
+ passed: boolean;
3546
+ findings: SiteFinding[];
3547
+ }
3548
+ interface SiteAudit {
3549
+ checks: SiteCheck[];
3550
+ blocking: number;
3551
+ asking: number;
3552
+ }
3553
+ /** A page as the gate reads it. */
3554
+ interface AuditPage {
3555
+ id: string;
3556
+ name: string;
3557
+ route: string;
3558
+ layout: ReadonlyArray<SerializedNode>;
3559
+ seo?: unknown;
3560
+ }
3561
+ /** A placeholder a build left, and whether the node still shows it (the caller compares the node's text). */
3562
+ interface AuditPlaceholder extends ComposedPlaceholder {
3563
+ pageId?: string;
3564
+ filled: boolean;
3565
+ }
3566
+ interface SiteAuditSnapshot {
3567
+ pages: ReadonlyArray<AuditPage>;
3568
+ globals: ReadonlyArray<SerializedNode>;
3569
+ /** Connector type → usable (configured or provided, and healthy). */
3570
+ connectors: Readonly<Record<string, boolean>>;
3571
+ /** Connector types that set a tracker (a consent category) and are configured. */
3572
+ trackers?: ReadonlyArray<string>;
3573
+ /** The look's token rows and the mode(s) the site wears. */
3574
+ design?: {
3575
+ rows: ReadonlyArray<DesignTokenLike>;
3576
+ modes: ReadonlyArray<'light' | 'dark'>;
3577
+ } | null;
3578
+ placeholders?: ReadonlyArray<AuditPlaceholder>;
3579
+ /** Sample items still in the site (`isSample`). */
3580
+ samples?: ReadonlyArray<{
3581
+ contentType: string;
3582
+ id: string;
3583
+ label?: string;
3584
+ }>;
3585
+ /** Stock photos a build placed that are still on the page. */
3586
+ stock?: ReadonlyArray<{
3587
+ nodeId: string;
3588
+ pageId?: string;
3589
+ owner?: string;
3590
+ }>;
3591
+ }
3592
+ interface SiteAuditOptions {
3593
+ /** Audit as if only this page were being published (its own page checks + every site-wide one). */
3594
+ pageId?: string;
3595
+ }
3596
+ /** A route pattern (`/work/:slug`) matches a concrete path (`/work/blue-bowl`). */
3597
+ declare function routeMatches(pattern: string, path: string): boolean;
3598
+ /** Run the eight checks. `pageId` narrows the page checks to the page being published; site-wide ones always run. */
3599
+ declare function auditSite(snapshot: SiteAuditSnapshot, options?: SiteAuditOptions): SiteAudit;
3600
+ /** What a publish request must acknowledge: every ASK finding's code (a BLOCK cannot be acknowledged). */
3601
+ declare function requiredAcknowledgements(audit: SiteAudit): SiteFindingCode[];
3602
+ /** The publish verdict: blocked (never acknowledgeable), needs these acknowledgements, or free to go. */
3603
+ declare function publishVerdict(audit: SiteAudit, acknowledged?: ReadonlyArray<string>): {
3604
+ ok: boolean;
3605
+ blocked: boolean;
3606
+ missing: SiteFindingCode[];
3607
+ };
3608
+
3609
+ /**
3610
+ * Stock photos in a built site (AI plan §3g / §3m, I2): a FREE picture from the platform's curated library, copied
3611
+ * into the studio's own storage (never hot-linked), placed only in an EMPTY picture slot of a section that may show
3612
+ * one — never the owner's work (a collection, a detail page, a gallery: what the nine portfolio types sell is theirs),
3613
+ * never a person (testimonials, the team), never anywhere when the business type says `stock: false`. Its alt text is
3614
+ * the provider's description of what it shows (never a claim), and the credit line its licence requires is placed in
3615
+ * the footer. Pure: the build step does the copying.
3616
+ */
3617
+ /** Where a stock photo comes from (the library's provider). */
3618
+ declare enum StockProviderId {
3619
+ Magnific = "magnific"
3620
+ }
3621
+ /** What a picture's licence asks of the site that shows it. */
3622
+ interface StockCredit {
3623
+ provider: `${StockProviderId}`;
3624
+ /** The provider's id of the picture. */
3625
+ resourceId: string;
3626
+ /** The provider's page for it. */
3627
+ sourceUrl: string;
3628
+ /** The provider's own title — what the picture shows. */
3629
+ title: string;
3630
+ author: string;
3631
+ /** `freemium` — the free licence (premium pictures never enter the library). */
3632
+ licence: string;
3633
+ licenceUrl: string;
3634
+ /** The words the licence requires, and where they link. */
3635
+ line: string;
3636
+ lineUrl: string;
3637
+ }
3638
+ /** One picture of the platform library (`iox-stock/<type>/`), as its manifest lists it. */
3639
+ interface StockPhoto {
3640
+ /** The library key (`spa/12345.jpg`) — the copy's file name is derived from it. */
3641
+ key: string;
3642
+ /** Where the build downloads it from (the platform bucket). */
3643
+ url: string;
3644
+ /** What it shows, in the provider's words — the alt text. Never a claim. */
3645
+ alt: string;
3646
+ width?: number;
3647
+ height?: number;
3648
+ credit: StockCredit;
3649
+ }
3650
+ /** The section families a stock photo may stand in for a picture in. */
3651
+ declare const STOCK_FAMILIES: ReadonlySet<string>;
3652
+ interface StockSlot {
3653
+ /** The Image node the photo goes into. */
3654
+ nodeId: string;
3655
+ /** The page key it lives on. */
3656
+ owner: string;
3657
+ pattern: string;
3658
+ }
3659
+ /** The empty picture slots of a composed site a stock photo may fill, in page and section order. */
3660
+ declare function stockSlots(plan: SitePlan, composed: Pick<ComposedSite, 'pages' | 'placeholders'>): StockSlot[];
3661
+ interface StockPlacement extends StockSlot {
3662
+ photo: StockPhoto;
3663
+ }
3664
+ /** Which photo goes where: the library's photos in order, one per slot, never twice; none when the type says no stock. */
3665
+ declare function planStockPhotos(slots: ReadonlyArray<StockSlot>, photos: ReadonlyArray<StockPhoto>, stockAllowed: boolean): StockPlacement[];
3666
+ /** A placed photo's copy in the studio's storage: the key the build writes it under. */
3667
+ declare function stockCopyKey(photo: Pick<StockPhoto, 'key'>): string;
3668
+ /** Put the studio's copy of each photo into its slot (src + the provider's alt). Returns the nodes changed. */
3669
+ declare function applyStockPhotos(trees: ReadonlyArray<SerializedNode>, placed: ReadonlyArray<{
3670
+ nodeId: string;
3671
+ url: string;
3672
+ alt: string;
3673
+ }>): number;
3674
+ /** The credit lines a set of photos needs — one per distinct line (a free Magnific photo: "Designed by Magnific"). */
3675
+ declare function stockCreditLines(photos: ReadonlyArray<Pick<StockPhoto, 'credit'>>): Array<{
3676
+ line: string;
3677
+ url: string;
3678
+ }>;
3679
+ /** The footer node id of a credit line (stable — a build that runs twice finds it). */
3680
+ declare const stockCreditNodeId: (index: number) => string;
3681
+ /**
3682
+ * The credit line, as the builder would create a Link (a plain node the owner may move or restyle): the licence's words,
3683
+ * linking where it asks, opening in a new tab. Placed at the end of the footer — the place the licence names for a site.
3684
+ */
3685
+ declare function stockCreditNode(index: number, credit: {
3686
+ line: string;
3687
+ url: string;
3688
+ }): SerializedNode;
3689
+ /** Append the credit lines to the footer root (once each). Returns how many it added. */
3690
+ declare function addStockCredits(footer: SerializedNode, credits: ReadonlyArray<{
3691
+ line: string;
3692
+ url: string;
3693
+ }>): number;
3694
+
3695
+ export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_TYPICAL_TOKENS, AiCallStatus, AiCapability, AiGenerationStage, AiKeyMode, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CREDITS_PER_USD, CardBindTarget, CheckSeverity, ComposeError, ComposeIssueCode, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, FACT_KEYS, FINAL_GENERATION_STAGES, FINDING_SEVERITY, GlobalSlot, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PLAN_EDITS_ANSWER_SHAPE, PLAN_EDITS_SCHEMA_NAME, PLAN_EDIT_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanWordIssueCode, PreflightRefusalCode, RelativeOp, SAMPLE_IMAGE_REF, SITE_CHECKS, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_PATTERNS, SITE_PLAN_SCHEMA_NAME, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_PATTERNS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_TEMPLATES, STOCK_FAMILIES, STUDIO_TEMPLATE, SiteBuildKind, SiteBuildStatus, SiteCheckId, SiteFindingCode, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SitePlanWireKey, SiteTemplateError, SiteTemplateId, StepState, StockProviderId, addBarItem, addStockCredits, altSourceScopes, applyPlanEdits, applyStockPhotos, assertStyleSlots, assertValidSitePlan, auditSite, barIconForRoute, blocksPublish, buildKeys, buildStepFacts, builtHomePageId, composeNavHeader, composeSection, composeSite, contentTypeFromWire, contentTypeJsonSchema, costUsd, createSerializedNode, creditsOfUsd, dataSourceJsonSchema, describePlanData, describeShapeKey, entranceAction, entranceInteraction, estimateStepCredits, failedBuildStep, fieldJsonSchema, findNavRoot, isActiveBuild, isNonEmptyString, isPlainObject, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, pageJsonSchema, parseSampleImageRef, pathAt, patternById, patternNeedsBinding, patternNodes, patternOptionalParts, patternScopes, patternSlots, patternTakesBinding, phoneMenuPages, planEditsFromWire, planEditsJsonSchema, planFromTemplate, planNavShape, planStockPhotos, planWordIssues, publishVerdict, releasedLayoutDefaults, removeBarItem, requiredAcknowledgements, requiredShapeKeys, routeMatches, routeParams, sampleImageRef, sectionEntrances, sectionFromWire, sectionJsonSchema, sectionPatternIds, setStyleProps, shapeKeys, siteNavPages, sitePlanFromWire, sitePlanJsonSchema, sitePlanToWire, staggerDelay, stockCopyKey, stockCreditLines, stockCreditNode, stockCreditNodeId, stockSlots, validatePlanEdits, validateSitePlan, walkSerialized, wordPattern, writtenTexts };
3696
+ export type { AddBarItemResult, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, AuditPage, AuditPlaceholder, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, DynamicKeysAsList, EntranceAction, EntranceInteraction, EntranceSpec, FactKey, JsonSchema, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, PageData, PageDataLine, PagePlan, PageSectionPlan, PathIssue, PatternNode, PlainObject, PlanChange, PlanEdit, PlanEditIssue, PlanEditResult, PlanEditsAnswer, PlanWordContext, PlanWordIssue, PreflightRefusal, RelativeDataSourcePlan, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, SiteAudit, SiteAuditOptions, SiteAuditSnapshot, SiteBuildRun, SiteBusiness, SiteCheck, SiteFinding, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSchemaPin, SitePlanSource, SitePlanValidation, SiteTemplate, StockCredit, StockPhoto, StockPlacement, StockSlot, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord, WrittenText };
@@ -2954,5 +2954,23 @@ declare const GENERATION_LIMITS: {
2954
2954
  readonly sentenceChars: 500;
2955
2955
  };
2956
2956
 
2957
- export { ANIMATE_ADVICE_STEPS, AnalysisIssueCode, AnalysisLocale, AvoidCheck, BUSINESS_TYPES, BUSINESS_TYPE_IDS, BookingNeed, COPY_LENGTH_ORDER, CopyLength, GENERATION_LIMITS, HARNESS_SOURCE, LITTLE_MOVEMENT_AVOID, LITTLE_MOVEMENT_CAP, LintKind, MAX_ANALYSIS_MOODS, MAX_PIXEL_SAMPLES, MAX_READ_PICTURES, NEEDS, NEED_IDS, NeedSource, PALETTE_SIZE, PALETTE_THRESHOLDS, PictureRole, PlanChangeOutcome, PresetFit, RANK_WEIGHTS, READING_SHAPE, READ_ANIMATE, READ_WEIGHTS, RankReason, ReaderState, ReadingIssueCode, SITE_ANALYSIS_SCHEMA_NAME, SITE_READING_SCHEMA_NAME, SPEC_ANALYSIS_SHAPE, SPEC_BUSINESS_TYPES, SPEC_HARNESS_EXAMPLES, SPEC_HARNESS_SOURCE, SPEC_NEEDS, SPEC_STRUCTURES, SPEC_USER_AVOIDS, STRUCTURES, SiteReadRefusal, StyleReadGround, StyleReadHeadings, StyleReadMotion, StyleReadSourceKind, USER_AVOID_IDS, VoiceFormality, VoicePerson, addressesIn, analysisPromptContext, businessTypeById, calmerChoice, decodeSiteReading, inferNeeds, isLookRule, lintDesign, lookMatches, mapStyleRead, matchBusinessType, matchBusinessTypes, measurePalette, mergeStyleReads, motionAdvice, motionFor, normalizeAddress, oklchHue, paletteBrand, paletteGround, paletteSamples, pictureStyleRead, pixelSamples, presetHasSerifHeadings, presetLook, presetReason, rankStylePresets, rankWithReferences, readPalette, referenceSeed, seedPassesPreset, siteAnalysisJsonSchema, siteReadingJsonSchema, structureFor, userAvoidRule, validateSiteAnalysis, validateSiteReading, withoutAddress };
2958
- export type { AiGenerationView, AnalysisContext, AnalysisIssue, AnalysisValidation, AvoidRule, BusinessType, BusinessTypeMatch, CheckRule, ColourSample, FactRead, GenerationFileView, GenerationReadersView, GenerationStartRequest, GoodFit, LintFinding, LintSite, LookCondition, LookDesign, LookRule, MeasuredPicture, MotionBasis, MotionInput, MotionStart, NeedDef, NeedId, PaletteColour, PaletteReading, PictureStyle, PlanRevisionView, PromptContext, PromptContextOptions, PromptSection, RankInput, RankedPreset, ReadingIssue, ReferenceSeed, SiteAnalysis, SiteNeed, SiteReaderView, SiteReading, StructureChoice, StructureId, StyleHints, StyleRead, UserAvoidId };
2957
+ /**
2958
+ * The look a business STARTS from (AI plan §3d "Build with these", §3o, MO-D3) — ONE rule for the wizard's Design step
2959
+ * (a Look pick) and the server's "Build with these": the preset at its defaults, Scrolling · How animated · Between
2960
+ * pages started from the kind of business (and the references), the owner's own Motion choices kept, and — given
2961
+ * references — the best-ranked style with the reference colour as its seed when that colour passes AA in every mode
2962
+ * the style offers (`referenceSeed`). Pure.
2963
+ */
2964
+ /** A preset for this business: its choices, Motion from the business (`motionFor`), what the owner already set kept. */
2965
+ declare function presetDesign(presetId: string, input: MotionInput | string | null, kept?: Partial<Pick<DesignChoices, 'scroll' | 'animate' | 'between' | 'motion'>>, read?: StyleRead | null): DesignChoices | null;
2966
+ interface StartingDesign {
2967
+ presetId: string;
2968
+ design: DesignChoices;
2969
+ /** The reference colour was used as the seed (it passed AA in every mode the style offers). */
2970
+ referenceColour: boolean;
2971
+ }
2972
+ /** The look a business starts from: its best-ranked style (with the references' boost), at its defaults. */
2973
+ declare function startingDesign(input: (RankInput & MotionInput) | string | null, read?: StyleRead | null): StartingDesign | null;
2974
+
2975
+ export { ANIMATE_ADVICE_STEPS, AnalysisIssueCode, AnalysisLocale, AvoidCheck, BUSINESS_TYPES, BUSINESS_TYPE_IDS, BookingNeed, COPY_LENGTH_ORDER, CopyLength, GENERATION_LIMITS, HARNESS_SOURCE, LITTLE_MOVEMENT_AVOID, LITTLE_MOVEMENT_CAP, LintKind, MAX_ANALYSIS_MOODS, MAX_PIXEL_SAMPLES, MAX_READ_PICTURES, NEEDS, NEED_IDS, NeedSource, PALETTE_SIZE, PALETTE_THRESHOLDS, PictureRole, PlanChangeOutcome, PresetFit, RANK_WEIGHTS, READING_SHAPE, READ_ANIMATE, READ_WEIGHTS, RankReason, ReaderState, ReadingIssueCode, SITE_ANALYSIS_SCHEMA_NAME, SITE_READING_SCHEMA_NAME, SPEC_ANALYSIS_SHAPE, SPEC_BUSINESS_TYPES, SPEC_HARNESS_EXAMPLES, SPEC_HARNESS_SOURCE, SPEC_NEEDS, SPEC_STRUCTURES, SPEC_USER_AVOIDS, STRUCTURES, SiteReadRefusal, StyleReadGround, StyleReadHeadings, StyleReadMotion, StyleReadSourceKind, USER_AVOID_IDS, VoiceFormality, VoicePerson, addressesIn, analysisPromptContext, businessTypeById, calmerChoice, decodeSiteReading, inferNeeds, isLookRule, lintDesign, lookMatches, mapStyleRead, matchBusinessType, matchBusinessTypes, measurePalette, mergeStyleReads, motionAdvice, motionFor, normalizeAddress, oklchHue, paletteBrand, paletteGround, paletteSamples, pictureStyleRead, pixelSamples, presetDesign, presetHasSerifHeadings, presetLook, presetReason, rankStylePresets, rankWithReferences, readPalette, referenceSeed, seedPassesPreset, siteAnalysisJsonSchema, siteReadingJsonSchema, startingDesign, structureFor, userAvoidRule, validateSiteAnalysis, validateSiteReading, withoutAddress };
2976
+ export type { AiGenerationView, AnalysisContext, AnalysisIssue, AnalysisValidation, AvoidRule, BusinessType, BusinessTypeMatch, CheckRule, ColourSample, FactRead, GenerationFileView, GenerationReadersView, GenerationStartRequest, GoodFit, LintFinding, LintSite, LookCondition, LookDesign, LookRule, MeasuredPicture, MotionBasis, MotionInput, MotionStart, NeedDef, NeedId, PaletteColour, PaletteReading, PictureStyle, PlanRevisionView, PromptContext, PromptContextOptions, PromptSection, RankInput, RankedPreset, ReadingIssue, ReferenceSeed, SiteAnalysis, SiteNeed, SiteReaderView, SiteReading, StartingDesign, StructureChoice, StructureId, StyleHints, StyleRead, UserAvoidId };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vectoriox/iox-ui",
3
- "version": "5.55.0",
3
+ "version": "5.56.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=20.0.0",
6
6
  "@angular/core": ">=20.0.0",