@vectoriox/iox-ui 5.83.0 → 5.84.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 +630 -20
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs +39 -1
- package/fesm2022/vectoriox-iox-ui-harness-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui.mjs +23 -11
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/generation-core/index.d.ts +401 -8
- package/harness-core/index.d.ts +81 -3
- package/index.d.ts +8 -4
- package/package.json +1 -1
- package/src/generation-core/ai-run.ts +10 -2
- package/src/generation-core/art-direction.ts +122 -0
- package/src/generation-core/audit-site.ts +14 -0
- package/src/generation-core/pictures.ts +464 -0
- package/src/generation-core/plan-wire.ts +2 -0
- package/src/generation-core/public-api.ts +2 -0
- package/src/generation-core/site-build-run.ts +3 -0
- package/src/generation-core/site-plan.model.ts +4 -0
- package/src/generation-core/site-spec.generated.ts +118 -1
- package/src/generation-core/stock-photos.ts +40 -10
- package/src/generation-core/validate-site-plan.ts +14 -0
- package/src/harness-core/business-types.ts +3 -1
- package/src/harness-core/generation-view.ts +50 -1
- package/src/harness-core/harness-spec.generated.ts +30 -0
- package/styles/iox-forms.css +11 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FrameSequence } from '@vectoriox/iox-ui/media-core';
|
|
2
|
-
import {
|
|
2
|
+
import { DesignChoices, AnimateId, DesignTokenLike } from '@vectoriox/iox-ui/design-core';
|
|
3
3
|
import { SeoRawDoc } from '@vectoriox/iox-ui/seo-core';
|
|
4
4
|
import { ContentFieldLike } from '@vectoriox/iox-ui/composite-core';
|
|
5
5
|
|
|
@@ -15,10 +15,19 @@ declare const SPEC_SITE_PLAN_SHAPE: {
|
|
|
15
15
|
readonly pages: "page[]";
|
|
16
16
|
readonly globals: "globals";
|
|
17
17
|
readonly "film?": "film — the owner's film as pictures (SC6b), set by the build and placed by placeFilm; never a model's";
|
|
18
|
+
readonly "artDirection?": "artDirection — what every picture made for the site shares (M7): set by the generation from the business type and the look (generation-core artDirectionFor); never a model's";
|
|
18
19
|
};
|
|
19
20
|
readonly film: {
|
|
20
21
|
readonly sequence: "object — a media-core FrameSequence: where the numbered pictures live, how many, their size";
|
|
21
22
|
};
|
|
23
|
+
readonly artDirection: {
|
|
24
|
+
readonly world: "string — a site.pictureWorlds id";
|
|
25
|
+
readonly medium: "string — the picture's medium and lens";
|
|
26
|
+
readonly light: "string — its light";
|
|
27
|
+
readonly grade: "string — its colour grade";
|
|
28
|
+
readonly texture: "string — its texture";
|
|
29
|
+
readonly negative: "string[] — what no picture of the site may show (site.pictureNever, then the world's own)";
|
|
30
|
+
};
|
|
22
31
|
readonly sourceTemplate: {
|
|
23
32
|
readonly kind: "'template'";
|
|
24
33
|
readonly templateId: "string";
|
|
@@ -4735,6 +4744,81 @@ declare const SPEC_SITE_LIBRARY: readonly [{
|
|
|
4735
4744
|
readonly family: "footer";
|
|
4736
4745
|
readonly composed: true;
|
|
4737
4746
|
}];
|
|
4747
|
+
declare const SPEC_SITE_PICTURE_WORLDS: {
|
|
4748
|
+
readonly documentary: {
|
|
4749
|
+
readonly label: "Documentary";
|
|
4750
|
+
readonly medium: "an unposed documentary photograph, 35mm lens, natural eye-level framing";
|
|
4751
|
+
readonly light: "available natural light, soft and directional";
|
|
4752
|
+
readonly grade: "true-to-life colour with gentle contrast";
|
|
4753
|
+
readonly texture: "fine natural grain and real, lived-in surfaces";
|
|
4754
|
+
readonly negative: readonly ["staged poses", "a studio backdrop"];
|
|
4755
|
+
readonly dark: "low-key";
|
|
4756
|
+
};
|
|
4757
|
+
readonly "high-key": {
|
|
4758
|
+
readonly label: "High-key";
|
|
4759
|
+
readonly medium: "a bright editorial photograph, 50mm lens, a clean composition with generous air";
|
|
4760
|
+
readonly light: "soft, even daylight from a large window; few, pale shadows";
|
|
4761
|
+
readonly grade: "a light, airy palette with lifted whites and low contrast";
|
|
4762
|
+
readonly texture: "smooth surfaces and crisp, gentle detail";
|
|
4763
|
+
readonly negative: readonly ["harsh shadows", "dark corners"];
|
|
4764
|
+
readonly dark: "low-key";
|
|
4765
|
+
};
|
|
4766
|
+
readonly "low-key": {
|
|
4767
|
+
readonly label: "Low-key";
|
|
4768
|
+
readonly medium: "a moody photograph, 50mm lens at a wide aperture, shallow depth of field";
|
|
4769
|
+
readonly light: "one warm, low light source; most of the frame falls into deep shadow";
|
|
4770
|
+
readonly grade: "rich blacks with warm, glowing highlights";
|
|
4771
|
+
readonly texture: "a soft haze in the air and a gentle film grain";
|
|
4772
|
+
readonly negative: readonly ["flat lighting", "a bright background"];
|
|
4773
|
+
readonly dark: "low-key";
|
|
4774
|
+
};
|
|
4775
|
+
readonly "hard-light": {
|
|
4776
|
+
readonly label: "Hard light";
|
|
4777
|
+
readonly medium: "a graphic photograph, 35mm lens, bold and simple shapes";
|
|
4778
|
+
readonly light: "hard, direct sunlight with crisp, long cast shadows";
|
|
4779
|
+
readonly grade: "saturated colour and punchy contrast";
|
|
4780
|
+
readonly texture: "sharp edges and clean planes";
|
|
4781
|
+
readonly negative: readonly ["haze", "muddy colour"];
|
|
4782
|
+
readonly dark: "low-key";
|
|
4783
|
+
};
|
|
4784
|
+
readonly macro: {
|
|
4785
|
+
readonly label: "Macro";
|
|
4786
|
+
readonly medium: "a close-up macro photograph, 100mm macro lens, a very shallow plane of focus";
|
|
4787
|
+
readonly light: "soft side light raking across the surface";
|
|
4788
|
+
readonly grade: "natural colour with rich mid-tones";
|
|
4789
|
+
readonly texture: "tactile surface detail — grain, fibre, glaze, crumb";
|
|
4790
|
+
readonly negative: readonly ["a wide view", "clutter in focus"];
|
|
4791
|
+
readonly dark: "low-key";
|
|
4792
|
+
};
|
|
4793
|
+
readonly architectural: {
|
|
4794
|
+
readonly label: "Architectural";
|
|
4795
|
+
readonly medium: "an architectural photograph, 24mm tilt-shift lens, straight verticals and a calm composition";
|
|
4796
|
+
readonly light: "calm, diffuse daylight";
|
|
4797
|
+
readonly grade: "neutral, precise colour with balanced contrast";
|
|
4798
|
+
readonly texture: "clean lines and crisp materials — stone, wood, glass, plaster";
|
|
4799
|
+
readonly negative: readonly ["converging verticals", "wide-angle distortion"];
|
|
4800
|
+
readonly dark: "nocturne";
|
|
4801
|
+
};
|
|
4802
|
+
readonly nocturne: {
|
|
4803
|
+
readonly label: "Nocturne";
|
|
4804
|
+
readonly medium: "a night photograph, 35mm lens";
|
|
4805
|
+
readonly light: "practical lights only — lamps, candles, a warm window — against the dark";
|
|
4806
|
+
readonly grade: "deep blue-black shadows with warm pools of light";
|
|
4807
|
+
readonly texture: "soft bokeh and a light haze";
|
|
4808
|
+
readonly negative: readonly ["daylight", "flash"];
|
|
4809
|
+
readonly dark: "nocturne";
|
|
4810
|
+
};
|
|
4811
|
+
readonly drawing: {
|
|
4812
|
+
readonly label: "Drawing";
|
|
4813
|
+
readonly medium: "a hand-made illustration, ink and watercolour wash on paper";
|
|
4814
|
+
readonly light: "flat and even, never photographic";
|
|
4815
|
+
readonly grade: "a limited palette of two or three colours";
|
|
4816
|
+
readonly texture: "visible paper grain and brush strokes";
|
|
4817
|
+
readonly negative: readonly ["photographic realism", "a 3D rendering"];
|
|
4818
|
+
readonly dark: "drawing";
|
|
4819
|
+
};
|
|
4820
|
+
};
|
|
4821
|
+
declare const SPEC_SITE_PICTURE_NEVER: readonly ["text, letters or numbers", "logos, brand names or signage", "a watermark", "a recognisable face", "borders or frames", "distorted hands or objects"];
|
|
4738
4822
|
|
|
4739
4823
|
/** What an untouched node of one registered type saves as (`NODE_BASELINES`, generated from the live
|
|
4740
4824
|
* iox-builder configs) — the builder serializer's flat `props` / `styleProps`, the trait names it has a
|
|
@@ -4779,6 +4863,68 @@ declare const BASELINE_ROLES: Readonly<Record<string, Readonly<Record<string, Ba
|
|
|
4779
4863
|
* trait saves when nobody sets it — what a composed node of that type starts from. */
|
|
4780
4864
|
declare function releasedLayoutDefaults(type: string): Record<string, unknown>;
|
|
4781
4865
|
|
|
4866
|
+
/**
|
|
4867
|
+
* A site's ART DIRECTION (premium-components M7, premium sites PS4): what every picture made for the site shares, so its
|
|
4868
|
+
* pictures read as one photographer's and never as a stock pool. A closed WORLD (the contract's `site.pictureWorlds`)
|
|
4869
|
+
* gives the five parts — medium, light, grade, texture and a negative list — and ONE preamble built from them is carried
|
|
4870
|
+
* VERBATIM at the head of every picture prompt of the site (`artDirectionPreamble`).
|
|
4871
|
+
*
|
|
4872
|
+
* Decided here, not by a model: the world is the business type's (harness-core `BusinessType.world`), a dark look moves it
|
|
4873
|
+
* to the world's `dark`, and the brand's hue joins the grade. Zero tokens, the same site always gets the same direction,
|
|
4874
|
+
* and the quality lever — each world's wording — is written once in the contract, as the proof sites' briefs were.
|
|
4875
|
+
*/
|
|
4876
|
+
declare enum PictureWorld {
|
|
4877
|
+
Documentary = "documentary",
|
|
4878
|
+
HighKey = "high-key",
|
|
4879
|
+
LowKey = "low-key",
|
|
4880
|
+
HardLight = "hard-light",
|
|
4881
|
+
Macro = "macro",
|
|
4882
|
+
Architectural = "architectural",
|
|
4883
|
+
Nocturne = "nocturne",
|
|
4884
|
+
Drawing = "drawing"
|
|
4885
|
+
}
|
|
4886
|
+
declare const PICTURE_WORLD_IDS: ReadonlyArray<PictureWorld>;
|
|
4887
|
+
/** One world as the contract writes it. */
|
|
4888
|
+
interface PictureWorldSpec {
|
|
4889
|
+
readonly label: string;
|
|
4890
|
+
readonly medium: string;
|
|
4891
|
+
readonly light: string;
|
|
4892
|
+
readonly grade: string;
|
|
4893
|
+
readonly texture: string;
|
|
4894
|
+
readonly negative: ReadonlyArray<string>;
|
|
4895
|
+
/** Where a dark look's pictures go. */
|
|
4896
|
+
readonly dark: string;
|
|
4897
|
+
}
|
|
4898
|
+
declare const PICTURE_WORLDS: Readonly<Record<PictureWorld, PictureWorldSpec>>;
|
|
4899
|
+
/** What no picture of any site shows — every world adds its own after these. */
|
|
4900
|
+
declare const PICTURE_NEVER: ReadonlyArray<string>;
|
|
4901
|
+
/** The art direction a plan carries (`plan.artDirection`): the world and its five parts as this site wears them. */
|
|
4902
|
+
interface ArtDirection {
|
|
4903
|
+
readonly world: `${PictureWorld}`;
|
|
4904
|
+
readonly medium: string;
|
|
4905
|
+
readonly light: string;
|
|
4906
|
+
readonly grade: string;
|
|
4907
|
+
readonly texture: string;
|
|
4908
|
+
readonly negative: ReadonlyArray<string>;
|
|
4909
|
+
}
|
|
4910
|
+
/** The five parts every art direction must carry, in the order the preamble says them. */
|
|
4911
|
+
declare const ART_DIRECTION_PARTS: readonly ["medium", "light", "grade", "texture", "negative"];
|
|
4912
|
+
declare function isPictureWorld(value: unknown): value is PictureWorld;
|
|
4913
|
+
/** The word for a brand colour's hue (`#9A4F2B` → "terracotta orange"), or null for a grey, a near-black or a bad value. */
|
|
4914
|
+
declare function brandHueWord(seed: string | null | undefined): string | null;
|
|
4915
|
+
/**
|
|
4916
|
+
* The site's art direction: the business type's world (moved to its `dark` world when the look is dark), its five parts,
|
|
4917
|
+
* the brand's hue in the grade, PICTURE_NEVER before the world's own negatives. An unknown world is documentary.
|
|
4918
|
+
*/
|
|
4919
|
+
declare function artDirectionFor(world: string | null | undefined, design: Pick<DesignChoices, 'mode' | 'seed'>): ArtDirection;
|
|
4920
|
+
/** The ONE preamble a site's every picture prompt opens with — the same words, in the same order, every time. */
|
|
4921
|
+
declare function artDirectionPreamble(direction: ArtDirection): string;
|
|
4922
|
+
/** What is wrong with a value as an art direction — a path and a message each (`validateSitePlan` reports them). */
|
|
4923
|
+
declare function artDirectionIssues(value: unknown): Array<{
|
|
4924
|
+
path: string;
|
|
4925
|
+
message: string;
|
|
4926
|
+
}>;
|
|
4927
|
+
|
|
4782
4928
|
/**
|
|
4783
4929
|
* The Site Plan (contract `site.planShape`, `SPEC_SITE_PLAN_SHAPE`: every key typed and explained, and the
|
|
4784
4930
|
* validator reads its key lists from it) — the ONE document the website wizard writes
|
|
@@ -4996,6 +5142,9 @@ interface SitePlan {
|
|
|
4996
5142
|
readonly globals: Readonly<Record<`${GlobalSlot}`, string>>;
|
|
4997
5143
|
/** SC6b: the owner's film as pictures, set by the build and placed by `placeFilm` — never a model's. */
|
|
4998
5144
|
readonly film?: PlanFilm;
|
|
5145
|
+
/** M7: what every picture made for the site shares (a world and its five parts) — set by the generation from the
|
|
5146
|
+
* business type and the look (`artDirectionFor`), never a model's. */
|
|
5147
|
+
readonly artDirection?: ArtDirection;
|
|
4999
5148
|
}
|
|
5000
5149
|
/** SC6b: the owner's film — the numbered pictures the wizard's browser made of their video (media-core). */
|
|
5001
5150
|
interface PlanFilm {
|
|
@@ -5633,7 +5782,9 @@ declare enum SitePlanIssueCode {
|
|
|
5633
5782
|
SceneBudget = "scene-budget",
|
|
5634
5783
|
/** SC6b: the owner's film — pictures that cannot play, too few to play smoothly, or a film's pattern on a plan with
|
|
5635
5784
|
* no film (or twice). Set by the build, never by a model. */
|
|
5636
|
-
Film = "film"
|
|
5785
|
+
Film = "film",
|
|
5786
|
+
/** M7: the art direction is not a picture world with its five parts. Set by the generation, never by a model. */
|
|
5787
|
+
ArtDirection = "art-direction"
|
|
5637
5788
|
}
|
|
5638
5789
|
type SitePlanIssue = PathIssue<SitePlanIssueCode>;
|
|
5639
5790
|
interface SitePlanValidation {
|
|
@@ -6173,7 +6324,10 @@ declare enum BuildNoticeCode {
|
|
|
6173
6324
|
StockUnavailable = "stock-unavailable",
|
|
6174
6325
|
/** The stock library was read but holds no photo for this kind of business (never built, or reviewed down to
|
|
6175
6326
|
* none): the picture slots keep the empty box, and the run says so (I2.1 — never silently). */
|
|
6176
|
-
StockMissing = "stock-missing"
|
|
6327
|
+
StockMissing = "stock-missing",
|
|
6328
|
+
/** M7: a picture made for the site was refused by its review twice (or its second try did not fit the cost shown):
|
|
6329
|
+
* stock or the empty box stands in, and the run says so. */
|
|
6330
|
+
PictureFallback = "picture-fallback"
|
|
6177
6331
|
}
|
|
6178
6332
|
interface BuildNotice {
|
|
6179
6333
|
code: string;
|
|
@@ -6425,6 +6579,8 @@ declare enum AiStep {
|
|
|
6425
6579
|
PlanSite = "plan",
|
|
6426
6580
|
ChangePlan = "planEdit",
|
|
6427
6581
|
MakePictures = "image",
|
|
6582
|
+
/** M7: a small vision model looks at each made picture against its slot (one structured answer). */
|
|
6583
|
+
CheckPictures = "imageReview",
|
|
6428
6584
|
NameStructures = "scanNaming"
|
|
6429
6585
|
}
|
|
6430
6586
|
declare const AI_STEPS: ReadonlyArray<AiStep>;
|
|
@@ -6940,6 +7096,10 @@ declare enum SiteFindingCode {
|
|
|
6940
7096
|
CopyPlaceholder = "copy-placeholder",
|
|
6941
7097
|
SampleItems = "sample-items",
|
|
6942
7098
|
StockPhoto = "stock-photo",
|
|
7099
|
+
/** M7: a picture made with AI for the site still stands where one of the studio's own could. */
|
|
7100
|
+
MadePicture = "made-picture",
|
|
7101
|
+
/** M7: a picture the build could not make (its review said no twice) and nothing stood in for: an empty box. */
|
|
7102
|
+
PictureMissing = "picture-missing",
|
|
6943
7103
|
NoPrivacyPage = "no-privacy-page",
|
|
6944
7104
|
PrivacyPagePlaceholder = "privacy-page-placeholder",
|
|
6945
7105
|
LowContrast = "low-contrast",
|
|
@@ -7011,6 +7171,18 @@ interface SiteAuditSnapshot {
|
|
|
7011
7171
|
pageId?: string;
|
|
7012
7172
|
owner?: string;
|
|
7013
7173
|
}>;
|
|
7174
|
+
/** M7: pictures made with AI that are still on the page. */
|
|
7175
|
+
made?: ReadonlyArray<{
|
|
7176
|
+
nodeId: string;
|
|
7177
|
+
pageId?: string;
|
|
7178
|
+
owner?: string;
|
|
7179
|
+
}>;
|
|
7180
|
+
/** M7: picture slots the build could not make a picture for, still empty. */
|
|
7181
|
+
missing?: ReadonlyArray<{
|
|
7182
|
+
nodeId: string;
|
|
7183
|
+
pageId?: string;
|
|
7184
|
+
owner?: string;
|
|
7185
|
+
}>;
|
|
7014
7186
|
}
|
|
7015
7187
|
interface SiteAuditOptions {
|
|
7016
7188
|
/** Audit as if only this page were being published (its own page checks + every site-wide one). */
|
|
@@ -7273,13 +7445,24 @@ type StockPlacement<T extends StockTarget = StockTarget> = T & {
|
|
|
7273
7445
|
interface StockPlanOptions {
|
|
7274
7446
|
/** The business type's imagery line (harness-core `BusinessType.imagery`) — its words count for every slot. */
|
|
7275
7447
|
imagery?: string;
|
|
7276
|
-
|
|
7448
|
+
/**
|
|
7449
|
+
* M7 (premium sites PS4): the SITE the photos are chosen for (its organization). Among the photos that answer a slot
|
|
7450
|
+
* nearly as well as the best (`STOCK_SEED_MARGIN`), the seed decides — so two sites of the same kind of business stop
|
|
7451
|
+
* opening on the same hero, and the same site always gets the same photos. No seed: the library's order decides.
|
|
7452
|
+
*/
|
|
7453
|
+
seed?: string;
|
|
7454
|
+
/** M7: library keys other sites of this studio already show — chosen only when no photo they do not show fits. */
|
|
7455
|
+
avoid?: ReadonlyArray<string>;
|
|
7456
|
+
}
|
|
7457
|
+
/** How far below the best score a photo may be and still be the seed's choice (one word of the plan's, about). */
|
|
7458
|
+
declare const STOCK_SEED_MARGIN = 2;
|
|
7277
7459
|
/**
|
|
7278
7460
|
* Which photo goes where (I2.1). Slots choose in intent order (the hero first, list items last; page order within),
|
|
7279
7461
|
* each taking the best-scoring photo that FITS its shape (`stockFits`) and is not already on its page (or among its
|
|
7280
7462
|
* type's samples) — a photo no slot has taken yet always before one another page shows. Ties go to the library's
|
|
7281
|
-
* order
|
|
7282
|
-
*
|
|
7463
|
+
* order — or, with a `seed` (M7), the site's own pick among those nearly as good, and another site's photos (`avoid`) only
|
|
7464
|
+
* when nothing fresh fits. A slot nothing fits keeps its empty box (a sample its abstract picture). None at all when the
|
|
7465
|
+
* type says no stock, and never a photo the review rejected or flagged. Returned in the slots' order.
|
|
7283
7466
|
*/
|
|
7284
7467
|
declare function planStockPhotos<T extends StockTarget>(slots: ReadonlyArray<T>, photos: ReadonlyArray<StockPhoto>, stockAllowed: boolean, opts?: StockPlanOptions): Array<StockPlacement<T>>;
|
|
7285
7468
|
/** A placed photo's copy in the studio's storage: the key the build writes it under. */
|
|
@@ -7360,5 +7543,215 @@ declare function filmOfPlan(plan: Pick<SitePlan, 'film'>): {
|
|
|
7360
7543
|
heightVh: number;
|
|
7361
7544
|
} | null;
|
|
7362
7545
|
|
|
7363
|
-
|
|
7364
|
-
|
|
7546
|
+
/**
|
|
7547
|
+
* Pictures MADE for a site (premium-components M7, AI plan I3, premium sites PS4) — pure and deterministic: which picture
|
|
7548
|
+
* slots of a composed site get a made picture, the prompt each is asked with (the site's ONE art direction first,
|
|
7549
|
+
* verbatim, then what the slot is about, its frame and — where words sit over it — the part of the frame left calm for
|
|
7550
|
+
* them), what the whole set costs before anything is asked, how a vision model's look at each picture is judged, and how
|
|
7551
|
+
* dark the scrim under the words must be for the picture actually made. iox-cms makes, reviews and stores the pictures;
|
|
7552
|
+
* the wizard shows the count and the cost from the same functions.
|
|
7553
|
+
*
|
|
7554
|
+
* The order of who fills a slot never changes: the OWNER's photos first (`planOwnPhotos`), then — only when the owner
|
|
7555
|
+
* opted in — a made picture where one may stand, then stock where the business type allows it, else the empty box.
|
|
7556
|
+
*/
|
|
7557
|
+
/** Why a slot never gets a made picture — said to the owner, never silently skipped. */
|
|
7558
|
+
declare enum PictureRefusal {
|
|
7559
|
+
/** The business sells its own work (a photographer, a maker): a made picture would pass as it. */
|
|
7560
|
+
OwnWork = "own-work",
|
|
7561
|
+
/** A product, a dish, a piece the business offers: a made one would show a thing it does not sell. */
|
|
7562
|
+
Product = "product",
|
|
7563
|
+
/** Where to find the business: a made picture would fake a real place. */
|
|
7564
|
+
RealPlace = "real-place",
|
|
7565
|
+
/** More slots than one site makes pictures for (`MAX_SITE_PICTURES`): the rest keep stock or the empty box. */
|
|
7566
|
+
Limit = "limit"
|
|
7567
|
+
}
|
|
7568
|
+
/** The section families whose picture is a real place (the contact / visit section). */
|
|
7569
|
+
declare const PICTURE_REAL_PLACE_FAMILIES: ReadonlySet<string>;
|
|
7570
|
+
/** The most pictures one site is made — a ceiling on what one build may spend on pictures. */
|
|
7571
|
+
declare const MAX_SITE_PICTURES = 12;
|
|
7572
|
+
/** Which edge of the frame the words sit at. */
|
|
7573
|
+
declare enum WordsEdge {
|
|
7574
|
+
Top = "top",
|
|
7575
|
+
Bottom = "bottom"
|
|
7576
|
+
}
|
|
7577
|
+
/** The part of the frame words sit over — left calm in the picture, measured once it is made. */
|
|
7578
|
+
interface WordsArea {
|
|
7579
|
+
edge: `${WordsEdge}`;
|
|
7580
|
+
/** The share of the frame's height (0–1). */
|
|
7581
|
+
share: number;
|
|
7582
|
+
}
|
|
7583
|
+
/** A scrim with no height of its own (it wraps its words) covers about this much of the frame. */
|
|
7584
|
+
declare const WORDS_AREA_DEFAULT_SHARE = 0.45;
|
|
7585
|
+
/** The frames an image model is asked for (`image_config.aspect_ratio`), as width / height. */
|
|
7586
|
+
declare const PICTURE_ASPECTS: Readonly<Record<string, number>>;
|
|
7587
|
+
/** A slot that fills its box (a Scene's picture, a full-bleed band) is made wide: a phone crops its middle. */
|
|
7588
|
+
declare const FILL_ASPECT = "16:9";
|
|
7589
|
+
/** One picture a site may be made: the slot it fills and everything its prompt and review read. */
|
|
7590
|
+
interface PictureSlot {
|
|
7591
|
+
/** Stable across runs: `page:<owner>:<nodeId>` (a section's picture) or `item:<type>:<index>:<field>`. */
|
|
7592
|
+
key: string;
|
|
7593
|
+
target: StockTarget;
|
|
7594
|
+
intent: `${StockIntent}`;
|
|
7595
|
+
/** The frame asked of the model (`PICTURE_ASPECTS`). */
|
|
7596
|
+
ratio: string;
|
|
7597
|
+
/** The section family it is in (`hero`, `story`…) — empty for an item. */
|
|
7598
|
+
family: string;
|
|
7599
|
+
/** What the section says, in the plan's own words (its slots) — what the picture is about. */
|
|
7600
|
+
text: string;
|
|
7601
|
+
/** Where the words sit over it, when they do. */
|
|
7602
|
+
wordsArea?: WordsArea;
|
|
7603
|
+
/** The node holding those words (a `media-scrim` box) — its scrim is chosen for the picture made. */
|
|
7604
|
+
scrimNodeId?: string;
|
|
7605
|
+
}
|
|
7606
|
+
/** What a site's pictures will be. */
|
|
7607
|
+
interface PicturePlan {
|
|
7608
|
+
/** The owner's photos and where each goes — always first. */
|
|
7609
|
+
own: OwnPhotoPlacement[];
|
|
7610
|
+
/** The slots a picture is made for, the hero first. */
|
|
7611
|
+
make: PictureSlot[];
|
|
7612
|
+
/** The slots no picture is made for, and why (stock or the empty box fills them). */
|
|
7613
|
+
refused: Array<{
|
|
7614
|
+
key: string;
|
|
7615
|
+
reason: PictureRefusal;
|
|
7616
|
+
}>;
|
|
7617
|
+
}
|
|
7618
|
+
interface PicturePlanOptions {
|
|
7619
|
+
/** The owner's own photos (urls), in order. */
|
|
7620
|
+
ownPhotos?: ReadonlyArray<string>;
|
|
7621
|
+
/** The business type's rule (harness-core `BusinessType.stock`): where stock may not stand in for the work, no made
|
|
7622
|
+
* picture may either. */
|
|
7623
|
+
stockAllowed: boolean;
|
|
7624
|
+
max?: number;
|
|
7625
|
+
}
|
|
7626
|
+
/** The ONE list of picture slots a build fills — its composed sections' empty pictures, then its sample items'. */
|
|
7627
|
+
declare function pictureTargets(plan: SitePlan, composed: Pick<ComposedSite, 'pages' | 'placeholders' | 'items'>): StockTarget[];
|
|
7628
|
+
/** A slot's stable key. */
|
|
7629
|
+
declare function pictureSlotKey(target: StockTarget): string;
|
|
7630
|
+
/** The nearest frame a model is asked for (by the ratio of ratios); a slot with no shape fills its box. */
|
|
7631
|
+
declare function pictureAspect(aspect: number | undefined): string;
|
|
7632
|
+
/**
|
|
7633
|
+
* The words over a picture: a picture laid ABSOLUTE in its box whose sibling wears `media-scrim` (a Scene's stage, a
|
|
7634
|
+
* full-bleed band) carries the words that box holds. The area is the scrim's: its height when it says one, else
|
|
7635
|
+
* `WORDS_AREA_DEFAULT_SHARE`, at the edge it is pinned to.
|
|
7636
|
+
*/
|
|
7637
|
+
declare function wordsOverPicture(node: SerializedNode, parent: SerializedNode | undefined): {
|
|
7638
|
+
area: WordsArea;
|
|
7639
|
+
scrimNodeId: string;
|
|
7640
|
+
} | null;
|
|
7641
|
+
/** Why `target` never gets a made picture, or null. */
|
|
7642
|
+
declare function pictureRefusalOf(target: StockTarget, stockAllowed: boolean): PictureRefusal | null;
|
|
7643
|
+
/**
|
|
7644
|
+
* Which slots get a made picture: the owner's photos take theirs first (the same `planOwnPhotos` the build places them
|
|
7645
|
+
* with), then each slot left — the hero first, page order within — gets one unless it is refused (the work, a product,
|
|
7646
|
+
* a real place) or the site already has `max`. Pure: the wizard's count, the generation's run and the build agree.
|
|
7647
|
+
*/
|
|
7648
|
+
declare function planPictures(plan: SitePlan, composed: Pick<ComposedSite, 'pages' | 'placeholders' | 'items'>, opts: PicturePlanOptions): PicturePlan;
|
|
7649
|
+
/** The empty part a slot's words sit over, said to the model: where, how much, and what it must look like. */
|
|
7650
|
+
declare function emptyAreaPhrase(area: WordsArea): string;
|
|
7651
|
+
/** The frame, said plainly. */
|
|
7652
|
+
declare function frameWords(ratio: string): string;
|
|
7653
|
+
interface PicturePromptContext {
|
|
7654
|
+
/** The kind of business, in words a prompt can carry ("a café or bakery") — never its name (it would be drawn). */
|
|
7655
|
+
business: string;
|
|
7656
|
+
}
|
|
7657
|
+
/**
|
|
7658
|
+
* The prompt a picture is asked with: the site's preamble VERBATIM, what the slot is about (its intent, then the
|
|
7659
|
+
* section's own words), its frame, the empty part the words need — and nothing else. The same slot of the same plan
|
|
7660
|
+
* is always asked the same words.
|
|
7661
|
+
*/
|
|
7662
|
+
declare function picturePrompt(slot: PictureSlot, direction: ArtDirection, context: PicturePromptContext): string;
|
|
7663
|
+
/** One picture in this many may be made a second time (a review said no) — paid for in the estimate shown. */
|
|
7664
|
+
declare const PICTURE_REROLL_EVERY = 6;
|
|
7665
|
+
/** How many second tries a set of `count` pictures has, shown and paid for up front. */
|
|
7666
|
+
declare function pictureRerolls(count: number): number;
|
|
7667
|
+
interface PicturesEstimate {
|
|
7668
|
+
count: number;
|
|
7669
|
+
/** Second tries included in the total. */
|
|
7670
|
+
rerolls: number;
|
|
7671
|
+
/** One picture, in credits. */
|
|
7672
|
+
picture: number;
|
|
7673
|
+
/** One review of a picture, in credits. */
|
|
7674
|
+
review: number;
|
|
7675
|
+
/** What the owner is shown and the most the run may spend: every picture and its review, plus the second tries. */
|
|
7676
|
+
total: number;
|
|
7677
|
+
}
|
|
7678
|
+
/**
|
|
7679
|
+
* The cost shown before the owner says yes (I-D4): each picture and its review at the vetted list's prices, plus one
|
|
7680
|
+
* second try (a picture and its review) for every `PICTURE_REROLL_EVERY` pictures. The run never spends past `total` —
|
|
7681
|
+
* a second try that would cross it is not made — so the shown cost is a ceiling met exactly when every try is used.
|
|
7682
|
+
*/
|
|
7683
|
+
declare function estimatePictures(count: number, prices: {
|
|
7684
|
+
image: AiTokenPrice;
|
|
7685
|
+
review: AiTokenPrice;
|
|
7686
|
+
}): PicturesEstimate;
|
|
7687
|
+
/** The structured answer's name (`output.name`). */
|
|
7688
|
+
declare const PICTURE_REVIEW_FORMAT = "picture_review";
|
|
7689
|
+
/** What a vision model says of one picture against its slot. */
|
|
7690
|
+
interface PictureReview {
|
|
7691
|
+
subject: boolean;
|
|
7692
|
+
calmArea: boolean;
|
|
7693
|
+
clean: boolean;
|
|
7694
|
+
anatomy: boolean;
|
|
7695
|
+
alt: string;
|
|
7696
|
+
note: string;
|
|
7697
|
+
}
|
|
7698
|
+
/** The review's shape, each key in the words the model reads (every key required: no optional parameter). */
|
|
7699
|
+
declare const PICTURE_REVIEW_SHAPE: Readonly<Record<keyof PictureReview, string>>;
|
|
7700
|
+
/** The review's strict format: 6 properties, all required, closed — well inside every structured-output limit. */
|
|
7701
|
+
declare function pictureReviewJsonSchema(): JsonSchema;
|
|
7702
|
+
/** What is wrong with an answer as a review — the gate the call service holds it to. */
|
|
7703
|
+
declare function pictureReviewIssues(value: unknown): Array<{
|
|
7704
|
+
code: string;
|
|
7705
|
+
path: string;
|
|
7706
|
+
message: string;
|
|
7707
|
+
}>;
|
|
7708
|
+
/** A picture is used when it shows the subject, is clean and whole — and, where words sit over it, leaves them room. */
|
|
7709
|
+
declare function pictureReviewPasses(review: PictureReview, slot: Pick<PictureSlot, 'wordsArea'>): boolean;
|
|
7710
|
+
/** How strong the scrim under a picture's words is, weakest first. `Soft` is the element style's own gradient. */
|
|
7711
|
+
declare enum ScrimLevel {
|
|
7712
|
+
Soft = "soft",
|
|
7713
|
+
Firm = "firm",
|
|
7714
|
+
Full = "full"
|
|
7715
|
+
}
|
|
7716
|
+
declare const SCRIM_LEVELS: ReadonlyArray<ScrimLevel>;
|
|
7717
|
+
/** What each level writes on the scrim node (`backgroundColor`, token references only) — `null`: the style's own. */
|
|
7718
|
+
declare const SCRIM_BACKGROUND: Readonly<Record<ScrimLevel, string | null>>;
|
|
7719
|
+
/** The least share of the scrim's own strength under the first line of words, at each level (the gradient's ramp). */
|
|
7720
|
+
declare const SCRIM_COVER: Readonly<Record<ScrimLevel, number>>;
|
|
7721
|
+
/** WCAG AA for body text — the words over a picture include a lead and a button label, never only a headline. */
|
|
7722
|
+
declare const PICTURE_TEXT_CONTRAST = 4.5;
|
|
7723
|
+
/** The light of a picture's words area: its darkest and lightest few percent (relative luminance, 0–1), and its mean. */
|
|
7724
|
+
interface AreaLuminance {
|
|
7725
|
+
low: number;
|
|
7726
|
+
high: number;
|
|
7727
|
+
mean: number;
|
|
7728
|
+
}
|
|
7729
|
+
/**
|
|
7730
|
+
* The light of the part of a picture its words sit over (RGBA bytes, row by row) — read across the whole width (a laptop)
|
|
7731
|
+
* and in the middle third (a phone's crop of a wide picture); the darker low and the lighter high of the two.
|
|
7732
|
+
*/
|
|
7733
|
+
declare function areaLuminance(rgba: ArrayLike<number>, width: number, height: number, area: WordsArea): AreaLuminance;
|
|
7734
|
+
interface ScrimChoice {
|
|
7735
|
+
level: ScrimLevel;
|
|
7736
|
+
/** The worst contrast the words have over the picture at that level. */
|
|
7737
|
+
contrast: number;
|
|
7738
|
+
}
|
|
7739
|
+
/**
|
|
7740
|
+
* The weakest scrim under which the words reach AA over the picture made: the scrim's own colour (`--iox-media-scrim`,
|
|
7741
|
+
* as the look writes it) at its least strength under the words, over the area's darkest and lightest, against the ink
|
|
7742
|
+
* (`--iox-media-scrim-ink`). `Full` when nothing weaker does — the contract already holds a full scrim over white to AA.
|
|
7743
|
+
*/
|
|
7744
|
+
declare function chooseScrim(area: AreaLuminance, colours: {
|
|
7745
|
+
scrim: string;
|
|
7746
|
+
ink: string;
|
|
7747
|
+
}, minContrast?: number): ScrimChoice;
|
|
7748
|
+
/** Set each chosen scrim on its node (`Soft` leaves the element style's own). Returns the nodes changed. */
|
|
7749
|
+
declare function applyPictureScrims(trees: ReadonlyArray<SerializedNode>, chosen: ReadonlyArray<{
|
|
7750
|
+
nodeId: string;
|
|
7751
|
+
level: `${ScrimLevel}`;
|
|
7752
|
+
}>): number;
|
|
7753
|
+
/** The relative luminance of a CSS colour (for a review sheet or a log), or null. */
|
|
7754
|
+
declare function luminanceOf(colour: string): number | null;
|
|
7755
|
+
|
|
7756
|
+
export { ACTIVE_BUILD_STATUSES, AI_REFUSAL_NEXT, AI_REFUSAL_STATUS, AI_STEPS, AI_STEP_LABELS, AI_STEP_NEEDS, AI_STEP_PART_TOKENS, AI_STEP_TYPICAL_TOKENS, ART_DIRECTION_PARTS, AiCallStatus, AiCapability, AiFeature, AiGenerationStage, AiKeyMode, AiLimit, AiNextKind, AiProviderId, AiRefusalCode, AiStep, BAR_ITEMS_MAX, BAR_ITEMS_MIN, BASELINE_ROLES, BUILD_STEPS, BaselineRole, BindScope, BuildNoticeCode, BuildStep, CONTENT_ROLE_MEANINGS, CREDITS_PER_USD, CardBindTarget, CheckSeverity, ComposeError, ComposeIssueCode, ContentFieldControl, ContentFieldType, ContentRole, ContentTypeAction, CreatedKind, DANGLING_LINK_CODES, DEFAULT_PHONE_MENU_BREAKPOINT, DEFAULT_SITE_LOCALE, ENTRANCE_EASING, ENTRANCE_ORIGIN_LOOK, ENTRANCE_TRIGGER, EntrancePart, EntranceSide, FACT_KEYS, FIELD_TYPE_OF_CONTROL, FILL_ASPECT, FILM_PATTERN, FINAL_GENERATION_STAGES, FINDING_SEVERITY, FilmUnplaced, GRAMMAR_TOO_LARGE_MESSAGE, GlobalSlot, HEBREW_PREFIXES, JSON_SCHEMA_BANNED_KEYWORDS, JsonSchemaShapeError, KeptReason, MAX_SITE_PICTURES, NAV_PART_LABELS, NAV_SHAPE_COPY, NEUTRAL_STYLE_PROPS, NODE_BASELINES, NO_TOKENS, NavPagesSource, NavRole, NavShape, NavShapeError, PAGE_ARCHETYPES, PICTURE_ASPECTS, PICTURE_NEVER, PICTURE_REAL_PLACE_FAMILIES, PICTURE_REROLL_EVERY, PICTURE_REVIEW_FORMAT, PICTURE_REVIEW_SHAPE, PICTURE_TEXT_CONTRAST, PICTURE_WORLDS, PICTURE_WORLD_IDS, PLAN_EDITS_ANSWER_SHAPES, PLAN_EDITS_PART_SCHEMA_NAMES, PLAN_EDIT_OP_PART, PLAN_EDIT_SHAPE, PLAN_EDIT_WIRE_KEYS, PLAN_PARTS, PLAN_PART_KEYS, PLAN_WIRE_DERIVED, PLAN_WIRE_PART_SCHEMA_NAMES, PLAN_WIRE_SHAPE, PRICING_PATTERN, PUBLISH_BLOCKING_PLACEHOLDERS, PageDataKind, PathIssueCollector, PatternDirective, PatternGlobalPosition, PatternOpens, PatternPlaceholder, PatternRecipe, PhoneMenuBreakpoint, PictureRefusal, PictureWorld, PlaceholderKind, PlanChangeAction, PlanChangeKind, PlanDataSourceMode, PlanDataSourceType, PlanEditIssueCode, PlanEditOp, PlanEditsOutcome, PlanPart, PlanWireEntry, PlanWireShapeError, PlanWordIssueCode, PreflightRefusalCode, PublishRefusalCode, REQUIRED_CONTENT_ROLES, RelativeOp, SAMPLE_IMAGE_REF, SCENE_LEVEL, SCENE_OTHER_PAGES, SCRIM_BACKGROUND, SCRIM_COVER, SCRIM_LEVELS, SHOWCASE_FILM, SITE_CHECKS, SITE_FACT_LABELS, SITE_HEADER_PATTERN, SITE_LIBRARY, SITE_LOCALES, SITE_NEED_IDS, SITE_PATTERNS, SITE_PLAN_VERSION, SITE_TEMPLATES, SPEC_SITE_ARCHETYPES, SPEC_SITE_COPY_LENGTHS, SPEC_SITE_DENSITY_COPY, SPEC_SITE_FACTS, SPEC_SITE_LIBRARY, SPEC_SITE_LOCALES, SPEC_SITE_NEED_IDS, SPEC_SITE_PATTERNS, SPEC_SITE_PICTURE_NEVER, SPEC_SITE_PICTURE_WORLDS, SPEC_SITE_PLAN_SHAPE, SPEC_SITE_REQUIRED_ROLES, SPEC_SITE_ROLES, SPEC_SITE_TEMPLATES, STOCK_FAMILIES, STOCK_FAMILY_INTENTS, STOCK_INTENT_ORDER, STOCK_INTENT_SUBJECTS, STOCK_ITEM_ASPECT, STOCK_MIN_KEPT, STOCK_PROVIDER_TERMS, STOCK_SEED_MARGIN, STOCK_SUBJECT_WORDS, STRICT_SCHEMA_BUDGET, STRICT_SCHEMA_LIMITS, STUDIO_TEMPLATE, ScrimLevel, SiteBuildKind, SiteBuildStatus, SiteCheckId, SiteFindingCode, SiteLocale, SitePlanError, SitePlanIssueCode, SitePlanSourceKind, SiteTemplateError, SiteTemplateId, StepState, StockIntent, StockOrientation, StockProviderId, StockReviewFlag, StockReviewVerdict, StockSlotKind, StockSubject, WORDS_AREA_DEFAULT_SHARE, WordsEdge, addBarItem, addStockCredits, aiStepParts, applyOwnPhotoGalleries, applyPictureScrims, applyPlanEdits, applyStockItemPhotos, applyStockPhotos, archetypeIssues, areaLuminance, artDirectionFor, artDirectionIssues, artDirectionPreamble, aspectRatioOf, assertStyleSlots, assertValidSitePlan, auditSite, barIconForRoute, blocksPublish, brandHueWord, buildKeys, buildStepFacts, builtHomePageId, chooseScrim, composeNavHeader, composeSection, composeSite, contentTypePreviewFields, contentTypeToWire, copyLengthOf, costUsd, createSerializedNode, creditsOfUsd, dataSourceToWire, derivedDataSources, describePlanData, describeShapeKey, emptyAreaPhrase, entranceAction, entranceInteraction, estimatePictures, estimateStepCredits, expandPlanWire, expandWireContentType, expandWireDataSource, expandWireEdit, expandWireField, expandWirePage, expandWireSection, failedBuildStep, fieldToWire, filmOfPlan, filmPlacement, findNavRoot, frameWords, isActiveBuild, isNonEmptyString, isPictureWorld, isPlainObject, isRtlLocale, jsonAnyOf, jsonBoolean, jsonClosedObject, jsonInteger, jsonListOf, jsonOneOf, jsonSchemaKeywords, jsonSchemaObjects, jsonShapedObject, jsonText, luminanceOf, modelCanDo, moveBarItem, navPages, navShapeBreakpoint, navShapeOf, nextSourceOf, nodeBindPaths, orientationOfRatio, pageToWire, parsePatternPath, parseSampleImageRef, pathAt, patternById, patternHasForm, patternLinkSlots, patternListGap, patternManifest, patternNeedsBinding, patternNodes, patternOptionalParts, patternRoleNeeds, patternScopes, patternSlotBudgets, patternSlots, patternTakesBinding, phoneMenuPages, pictureAspect, picturePrompt, pictureRefusalOf, pictureRerolls, pictureReviewIssues, pictureReviewJsonSchema, pictureReviewPasses, pictureSlotKey, pictureTargets, placeFilm, planEditOps, planEditToWire, planEditWireGaps, planEditWireKeys, planEditWireOps, planEditWireShape, planEditsFromWire, planEditsJsonSchema, planEditsToWire, planEntrances, planFromTemplate, planNavShape, planOwnPhotos, planPartOfPath, planPartToWire, planPictures, planStockPhotos, planToWire, planWireGaps, planWirePartJsonSchema, planWirePartShape, planWordIssues, publishRefusal, publishVerdict, recipeListBinds, releasedLayoutDefaults, removeBarItem, requiredAcknowledgements, requiredShapeKeys, roleField, routeMatches, routeParams, sampleImageRef, scoreStockPhoto, sectionEntrances, sectionPatternIds, sectionToWire, setStyleProps, shapeKeys, showcaseGlobals, showcasePages, showcasePlans, showcaseScenes, siteNavPages, slotBudget, stockCopyKey, stockCreditLine, stockCreditLines, stockCreditNode, stockCreditNodeId, stockFits, stockGroupOf, stockItemSlots, stockKept, stockPhotoRatio, stockPhotoSubject, stockPhotoUsable, stockPhotoWords, stockSlots, stockWord, stockWords, strictSchemaComplexity, strictSchemaRefusal, typicalStepTokens, validatePlanEdits, validateSitePlan, walkSerialized, wireContentTypeJsonSchema, wireDataSourceJsonSchema, wireFieldJsonSchema, wirePageJsonSchema, wireSectionJsonSchema, withDerivedSources, wordPattern, wordsOverPicture, writtenTexts };
|
|
7757
|
+
export type { AddBarItemResult, AiEntitlementsView, AiMeter, AiModelEntry, AiRefusal, AiTokenCounts, AiTokenPrice, AreaLuminance, ArtDirection, AuditPage, AuditPlaceholder, BarItemsEditResult, BuildNotice, BuildStepError, BuildStepFacts, BuildStepRecord, CmsDataSourcePlan, ComposeContext, ComposeIssue, ComposedDataSource, ComposedItem, ComposedNavHeader, ComposedPage, ComposedPlaceholder, ComposedRoute, ComposedSection, ComposedSite, ContentFieldPlan, ContentRoles, ContentSeedPlan, ContentTypePlan, CreateNodeOptions, CreatedRecord, DataSourcePlan, DynamicKeysAsList, EntranceAction, EntranceActionOptions, EntranceInteraction, EntranceMark, EntranceSpec, EntranceStamp, FactKey, FilmPlacement, FilmTarget, JsonSchema, NavHeaderInput, NavHeaderOptions, NavPage, NavShapeOptions, NavShapeResult, NodeBaseline, OwnPhotoPlacement, PageArchetype, PageArchetypeId, PageArchetypeSlot, PageData, PageDataLine, PagePlan, PageSectionPlan, PageSeoPlan, PathIssue, PatternManifestEntry, PatternManifestOptions, PatternNode, PatternPath, PatternRoleNeed, PatternTrack, PicturePlan, PicturePlanOptions, PicturePromptContext, PictureReview, PictureSlot, PictureWorldSpec, PicturesEstimate, PlacedFilm, PlainObject, PlanChange, PlanEdit, PlanEditIssue, PlanEditResult, PlanEditsAnswer, PlanEntrancesInput, PlanFilm, PlanWireContext, PlanWireParts, PlanWordContext, PlanWordIssue, PreflightRefusal, PublishRefusal, RecipeListBinds, RelativeDataSourcePlan, ScrimChoice, SectionEntrances, SectionInput, SectionOptions, SerializedBinding, SerializedNode, SerializedResponsive, ShapeEntry, ShapeIssueCodes, ShowcaseInput, SiteAudit, SiteAuditOptions, SiteAuditSnapshot, SiteBuildRun, SiteBusiness, SiteCheck, SiteFinding, SiteNeedId, SitePageRef, SitePattern, SitePlan, SitePlanIssue, SitePlanSource, SitePlanValidation, SiteTemplate, StockCredit, StockItemSlot, StockLink, StockNeed, StockPhoto, StockPhotoTraits, StockPlacement, StockPlanOptions, StockProviderTerms, StockReview, StockSlot, StockTarget, StrictSchemaComplexity, StrictSchemaRefusal, TemplatePlanInput, UndoKept, UndoPreview, UndoRecord, WireOptions, WordsArea, WrittenText };
|