@vectoriox/iox-ui 5.42.0 → 5.44.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/data-core/index.d.ts +360 -0
- package/data-core/package.json +3 -0
- package/design-core/index.d.ts +215 -3
- package/fesm2022/vectoriox-iox-ui-data-core.mjs +491 -0
- package/fesm2022/vectoriox-iox-ui-data-core.mjs.map +1 -0
- package/fesm2022/vectoriox-iox-ui-design-core.mjs +276 -3
- package/fesm2022/vectoriox-iox-ui-design-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs +7 -1
- package/fesm2022/vectoriox-iox-ui-generation-core.mjs.map +1 -1
- package/fesm2022/vectoriox-iox-ui.mjs +179 -526
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/generation-core/index.d.ts +3 -0
- package/index.d.ts +112 -381
- package/package.json +5 -1
- package/src/data-core/data-source-resolver.ts +378 -0
- package/src/data-core/public-api.ts +12 -0
- package/src/data-core/relative-sources.ts +282 -0
- package/src/design-core/design-apply.ts +56 -3
- package/src/design-core/design-settings.ts +32 -3
- package/src/design-core/design-token.model.ts +23 -0
- package/src/design-core/flavor-spec.generated.ts +202 -0
- package/src/design-core/flavor-tokens.ts +2 -1
- package/src/generation-core/site-spec.generated.ts +4 -1
- package/src/generation-core/validate-site-plan.ts +3 -0
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared data-source resolving pattern — the SINGLE source of truth for how an IoxDataSource
|
|
3
|
+
* becomes a backend fetch, consumed by BOTH the page builder (iox-cms-client bindings panel) and
|
|
4
|
+
* the SSR client engine (iox-client-engine DataSourceResolverService). There must be no second
|
|
5
|
+
* copy of this decision logic; only the transport differs between the two:
|
|
6
|
+
*
|
|
7
|
+
* builder → authenticated org-scoped controllers (admin session):
|
|
8
|
+
* single by id → GET admin.../resources/:type/:id (ContentService.getContentById)
|
|
9
|
+
* collection → GET admin.../resources/:type (ContentService.getContent)
|
|
10
|
+
* engine → @Public() controllers (no auth, isPublished filter applied server-side):
|
|
11
|
+
* single by id → GET api/:type/:id (UserResourcesController)
|
|
12
|
+
* collection → GET api/:type?filters (UserResourcesController)
|
|
13
|
+
*
|
|
14
|
+
* The DECISION (by-id vs collection, which id, which filters, how to pick the single result) is
|
|
15
|
+
* identical for both — that's what this module owns. Each app maps the returned {@link DataSourcePlan}
|
|
16
|
+
* onto its own transport. A single item is ALWAYS fetched by its id as a path segment — never a
|
|
17
|
+
* `?_id=` query — to match the builder's getContentById.
|
|
18
|
+
*/
|
|
19
|
+
type DataSourceMode = 'single' | 'list';
|
|
20
|
+
type DataSourceDomain = 'cms' | 'shop';
|
|
21
|
+
interface DataSourceRouteFilter {
|
|
22
|
+
field?: string;
|
|
23
|
+
routeParam?: string;
|
|
24
|
+
defaultId?: string;
|
|
25
|
+
}
|
|
26
|
+
interface DataSourceQueryFilter {
|
|
27
|
+
field?: string;
|
|
28
|
+
/** URL query param the value is read from. OMIT for a CONSTANT filter — then `defaultValue`
|
|
29
|
+
* alone is the value, so `isReviewShow=true` filters identically in preview and on the site. */
|
|
30
|
+
queryParam?: string;
|
|
31
|
+
/** Value used when the query param is absent — i.e. always, for a constant filter, and in the
|
|
32
|
+
* builder preview, where there are no live query params. NOT preview-only: it is the runtime
|
|
33
|
+
* fallback too. An empty default with no query-param value means the filter is DROPPED. */
|
|
34
|
+
defaultValue?: string;
|
|
35
|
+
}
|
|
36
|
+
/** The order a query source returns its rows in (CC2, board 4 "Sort" — the data source popover). */
|
|
37
|
+
declare enum DataSourceSortDir {
|
|
38
|
+
Asc = "asc",
|
|
39
|
+
Desc = "desc"
|
|
40
|
+
}
|
|
41
|
+
interface DataSourceSort {
|
|
42
|
+
/** A field of the content type (a dot path into a nested object is allowed). */
|
|
43
|
+
field?: string;
|
|
44
|
+
dir?: DataSourceSortDir | `${DataSourceSortDir}`;
|
|
45
|
+
}
|
|
46
|
+
/** The query parameter carrying the order: `sort=order` ascending, `sort=-order` descending. A CONTROL like
|
|
47
|
+
* `limit`, not a field filter — the public controllers split it out (iox-cms `query-controls.ts`). */
|
|
48
|
+
declare const SORT_PARAM = "sort";
|
|
49
|
+
/** `sort`'s wire value, or null when the source sets no (valid) order. */
|
|
50
|
+
declare function sortParamValue(sort: DataSourceSort | null | undefined): string | null;
|
|
51
|
+
interface DataSourceRequestSpec {
|
|
52
|
+
contentType?: string;
|
|
53
|
+
limit?: number;
|
|
54
|
+
/** A query source's order (CC2). Absent = the backend's natural order, as before. */
|
|
55
|
+
sort?: DataSourceSort;
|
|
56
|
+
filterByRouteParam?: DataSourceRouteFilter;
|
|
57
|
+
filterByQueryParams?: DataSourceQueryFilter[];
|
|
58
|
+
}
|
|
59
|
+
/** Structural (duck-typed) view of an IoxDataSource — kept free of the editor model so both libs
|
|
60
|
+
* can depend on it without pulling in iox-builder. */
|
|
61
|
+
interface DataSourceSpec {
|
|
62
|
+
alias?: string;
|
|
63
|
+
type?: string;
|
|
64
|
+
mode?: DataSourceMode;
|
|
65
|
+
request?: {
|
|
66
|
+
cms?: DataSourceRequestSpec;
|
|
67
|
+
shop?: DataSourceRequestSpec;
|
|
68
|
+
endpoint?: string;
|
|
69
|
+
data?: any;
|
|
70
|
+
/** `derived` alias: a VIEW into another variable — resolve `from` then getByPath(value, path)
|
|
71
|
+
* (e.g. galleryImages = product.gallery). See repeater-binding-ux-plan.md. */
|
|
72
|
+
derived?: {
|
|
73
|
+
from: string;
|
|
74
|
+
path: string;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
type DataSourcePlan = {
|
|
79
|
+
kind: 'by-id';
|
|
80
|
+
domain: DataSourceDomain;
|
|
81
|
+
resource: string;
|
|
82
|
+
id: string;
|
|
83
|
+
mode: DataSourceMode;
|
|
84
|
+
} | {
|
|
85
|
+
kind: 'collection';
|
|
86
|
+
domain: DataSourceDomain;
|
|
87
|
+
resource: string;
|
|
88
|
+
filter: Record<string, any>;
|
|
89
|
+
limit?: number;
|
|
90
|
+
sort?: string;
|
|
91
|
+
mode: DataSourceMode;
|
|
92
|
+
} | {
|
|
93
|
+
kind: 'external';
|
|
94
|
+
endpoint: string;
|
|
95
|
+
mode: DataSourceMode;
|
|
96
|
+
} | {
|
|
97
|
+
kind: 'static';
|
|
98
|
+
data: any;
|
|
99
|
+
mode: DataSourceMode;
|
|
100
|
+
} | {
|
|
101
|
+
kind: 'derived';
|
|
102
|
+
from: string;
|
|
103
|
+
path: string;
|
|
104
|
+
mode: DataSourceMode;
|
|
105
|
+
} | {
|
|
106
|
+
kind: 'none';
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Match a page route template against an actual path and extract named params.
|
|
110
|
+
* matchRouteParams('/project/:projectId', 'project/68abc') → { projectId: '68abc' }
|
|
111
|
+
* Both sides are normalised (leading slash stripped) and split on '/'; values are URL-decoded.
|
|
112
|
+
*/
|
|
113
|
+
declare function matchRouteParams(template: string | undefined, actual: string | undefined): Record<string, string>;
|
|
114
|
+
/**
|
|
115
|
+
* Build the query filter for a data-source request from its filterByRouteParam / filterByQueryParams
|
|
116
|
+
* config. `field` is filtered by the route-param value (falling back to `defaultId`); query filters
|
|
117
|
+
* map each `field` to a query-param value (falling back to `defaultValue`), and a filter with NO
|
|
118
|
+
* `queryParam` is a constant on `defaultValue`. Empty values are omitted so the source isn't
|
|
119
|
+
* accidentally filtered to nothing.
|
|
120
|
+
*/
|
|
121
|
+
declare function buildDataSourceFilter(req: DataSourceRequestSpec | undefined, routeParams?: Record<string, any>, queryParams?: Record<string, any>): Record<string, any>;
|
|
122
|
+
/**
|
|
123
|
+
* Mirrors the builder's getContentById decision. When a SINGLE source is filtered by the item id
|
|
124
|
+
* (`_id`) via a route param, the item is fetched by PATH (`.../:type/:id`), not a `?_id=` query.
|
|
125
|
+
* Returns that id (route-param value, else `defaultId`), or `null` when the source isn't a
|
|
126
|
+
* single-by-id fetch — in which case the caller uses the collection endpoint + filters. The
|
|
127
|
+
* path-based form only applies to the id field; a single source filtered by any other field still
|
|
128
|
+
* goes through the collection endpoint.
|
|
129
|
+
*/
|
|
130
|
+
declare function resolveSingleItemId(req: DataSourceRequestSpec | undefined, routeParams?: Record<string, any>): string | null;
|
|
131
|
+
/**
|
|
132
|
+
* Resolve an IoxDataSource into a transport-agnostic {@link DataSourcePlan}. This is the shared
|
|
133
|
+
* decision both the builder and the SSR engine run; each then executes the plan with its own
|
|
134
|
+
* HTTP layer. Single sources with a route-param id resolve to a `by-id` (path) fetch — exactly like
|
|
135
|
+
* the builder's getContentById.
|
|
136
|
+
*/
|
|
137
|
+
declare function planDataSource(ds: DataSourceSpec | undefined, routeParams?: Record<string, any>, queryParams?: Record<string, any>): DataSourcePlan;
|
|
138
|
+
/**
|
|
139
|
+
* The aliases on a page that are VARIABLES — runtime-written resources, not fetched data.
|
|
140
|
+
*
|
|
141
|
+
* Shared so the builder and the SSR engine agree on which aliases start empty and are filled by
|
|
142
|
+
* interactions. See element-context-state-plan.md.
|
|
143
|
+
*/
|
|
144
|
+
declare function variableAliases(dataSources: readonly {
|
|
145
|
+
alias?: string;
|
|
146
|
+
type?: string;
|
|
147
|
+
}[] | undefined): Set<string>;
|
|
148
|
+
/** The source alias whose items a variable holds, if it declares one (for field suggestions). */
|
|
149
|
+
declare function variableItemsFrom(dataSources: readonly {
|
|
150
|
+
alias?: string;
|
|
151
|
+
type?: string;
|
|
152
|
+
request?: any;
|
|
153
|
+
}[] | undefined, alias: string): string | undefined;
|
|
154
|
+
/**
|
|
155
|
+
* Normalise a collection response into the shape a source expects: unwraps `{items}`/`{data}`
|
|
156
|
+
* envelopes, then returns the first item for a `single` source or the whole array for a `list`.
|
|
157
|
+
* A `by-id` response is already the item, so callers pass it through unchanged.
|
|
158
|
+
*/
|
|
159
|
+
declare function normalizeCollectionResult(mode: DataSourceMode, data: any): any;
|
|
160
|
+
/** Navigate a dot/bracket path into an object, e.g. `gallery`, `details.images`, `variants[0].skus`.
|
|
161
|
+
* Returns undefined if any segment is missing. Kept minimal + self-contained so it is shareable by
|
|
162
|
+
* both the builder and the SSR engine (the two have divergent local `resolvePath` copies). */
|
|
163
|
+
declare function getByPath(obj: any, path: string): any;
|
|
164
|
+
/**
|
|
165
|
+
* The array a Repeater (or a repeating Slider) iterates over — the SHARED decision so the builder
|
|
166
|
+
* canvas and the SSR engine agree (see data-source-resolving.md).
|
|
167
|
+
* - No `sourcePath`: the resolved source IS the list. An array passes through; a lone object degrades
|
|
168
|
+
* to a single-row list (back-compat with the old `fetchItems`); null/undefined → `[]`.
|
|
169
|
+
* - With `sourcePath`: the source resolved to a SINGLE resource (e.g. a product); dive into the
|
|
170
|
+
* nested array property (e.g. `gallery`). Non-array / missing → `[]`.
|
|
171
|
+
*/
|
|
172
|
+
/**
|
|
173
|
+
* Fill in `derived` aliases in an already-resolved map. Given the data sources and a map of resolved
|
|
174
|
+
* NON-derived values (by alias), compute each `type:'derived'` alias as `getByPath(parent, path)` in
|
|
175
|
+
* dependency order (chains resolved by iterating until stable). Mutates + returns the map. Used by the
|
|
176
|
+
* SSR engine after it resolves the root sources; the builder resolves derived lazily per alias.
|
|
177
|
+
*/
|
|
178
|
+
declare function resolveDerivedInto(dataSources: DataSourceSpec[], resolved: Record<string, any>): Record<string, any>;
|
|
179
|
+
declare function resolveRepeaterItems(resolved: any, sourcePath?: string | null): any[];
|
|
180
|
+
/** Aliases referenced anywhere in a node tree: a repeater/slider `source` (a `bindings` entry with
|
|
181
|
+
* `prop === 'source'`, or `props.source` for the slider) plus every binding's `source`. */
|
|
182
|
+
declare function collectReferencedAliases(nodes: any[], acc?: Set<string>): Set<string>;
|
|
183
|
+
/** The subset of `all` whose `alias` is referenced by `nodes` (shallow — direct references only). */
|
|
184
|
+
declare function referencedDataSources(nodes: any[], all: any[]): any[];
|
|
185
|
+
/** Like `referencedDataSources`, but also pulls in a referenced source's DEPENDENCIES (transitively),
|
|
186
|
+
* none of which the layout names directly:
|
|
187
|
+
* - a `derived` alias needs its `request.derived.from` parent;
|
|
188
|
+
* - a `relative` (route-context) alias needs its `request.relative.subjectFrom` (the current item)
|
|
189
|
+
* and `request.relative.from` (the collection it navigates).
|
|
190
|
+
* Use this when RESOLVING (the engine) so derived views and siblings/related don't resolve to nothing. */
|
|
191
|
+
declare function referencedDataSourcesDeep(nodes: any[], all: any[]): any[];
|
|
192
|
+
/** Base URLs for the PUBLIC content controllers. Both must end with `/`. The builder and the SSR
|
|
193
|
+
* engine pass their own host (they proxy `/api` differently) but MUST target the public
|
|
194
|
+
* (`@Public()`) controllers, never the authed admin ones — data resolving is storefront data. */
|
|
195
|
+
interface DataSourceEndpoints {
|
|
196
|
+
/** cms resources, e.g. `${HOST}` (engine, HOST ends `/api/`) or `${HOST}api/` (builder). */
|
|
197
|
+
cmsBase: string;
|
|
198
|
+
/** shop resources, e.g. `${HOST}shop/` (engine) or `${HOST}api/shop/` (builder). */
|
|
199
|
+
shopBase: string;
|
|
200
|
+
}
|
|
201
|
+
interface DataSourceRequest {
|
|
202
|
+
url: string;
|
|
203
|
+
params: Record<string, any>;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Turn a resolved {@link DataSourcePlan} into the concrete public HTTP request (url + params) — the
|
|
207
|
+
* SINGLE place that decides the URL shape, shared by the builder binding preview and the SSR engine
|
|
208
|
+
* so both hit the SAME public endpoints (no admin, no duplication). Returns `null` for `static` /
|
|
209
|
+
* `none` plans (no HTTP call). A single item is a PATH segment (`/:resource/:id`), never `?_id=`.
|
|
210
|
+
*/
|
|
211
|
+
declare function dataSourcePlanToRequest(plan: DataSourcePlan, endpoints: DataSourceEndpoints): DataSourceRequest | null;
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Shared RELATIVE (route-context) data resolving — the SINGLE source of truth for how a detail page
|
|
215
|
+
* derives values FROM its current route item, consumed by BOTH the page builder (iox-cms-client) and
|
|
216
|
+
* the SSR client engine (iox-client-engine). Companion to `data-source-resolver.ts`.
|
|
217
|
+
*
|
|
218
|
+
* These are the pure, transport-agnostic pieces behind the Route binding scope
|
|
219
|
+
* (`$route` / `$current` / `$siblings` / `$related`). Resolution is a DEPENDENT SECOND PASS: the
|
|
220
|
+
* consumer resolves `$current` first (the existing single by-id fetch via `planDataSource`), then
|
|
221
|
+
* calls these to derive the relative values — there is NO new `DataSourcePlan` kind (`$related` still
|
|
222
|
+
* feeds a normal `collection` plan built from {@link buildRelatedFilter}). See
|
|
223
|
+
* `architecture/builder/relative-data-sources-plan.md`.
|
|
224
|
+
*
|
|
225
|
+
* There must be no second copy of this decision logic; only the transport (which HTTP layer fetches
|
|
226
|
+
* the ordered collection / related list) differs between the two consumers.
|
|
227
|
+
*/
|
|
228
|
+
/** Aliases in the Route scope are platform-owned and start with this prefix; a USER alias may never
|
|
229
|
+
* start with it, which keeps the Route scope structurally collision-proof with Local/Global. Used to
|
|
230
|
+
* validate new/renamed aliases and to render the reserved (read-only) item state in the bind picker. */
|
|
231
|
+
declare const RESERVED_ALIAS_PREFIX = "$";
|
|
232
|
+
/** True for a platform-owned Route-scope alias (`$route`, `$current`, `$siblings`, `$related`, …). */
|
|
233
|
+
declare function isReservedAlias(alias: string | null | undefined): boolean;
|
|
234
|
+
/** The `$siblings` value: the current item's neighbours within an ordered set. */
|
|
235
|
+
interface SiblingsResult<T = any> {
|
|
236
|
+
/** The item before the current one (`null` at the start, unless `wrap`). */
|
|
237
|
+
prev: T | null;
|
|
238
|
+
/** The item after the current one (`null` at the end, unless `wrap`). */
|
|
239
|
+
next: T | null;
|
|
240
|
+
/** Zero-based position of the current item in the ordered set; `-1` when not found. */
|
|
241
|
+
index: number;
|
|
242
|
+
/** Total items in the set. */
|
|
243
|
+
count: number;
|
|
244
|
+
/** `true` when the current item is the first in the set. */
|
|
245
|
+
isFirst: boolean;
|
|
246
|
+
/** `true` when the current item is the last in the set. */
|
|
247
|
+
isLast: boolean;
|
|
248
|
+
}
|
|
249
|
+
interface ResolveSiblingsOptions {
|
|
250
|
+
/** Field identifying the current item within the list. Default `_id`. */
|
|
251
|
+
idField?: string;
|
|
252
|
+
/** Dot/bracket path to sort by BEFORE locating neighbours (e.g. `order`, `date`). Omit to use the
|
|
253
|
+
* list's existing order. The same item neighbours differently per ordering, so this is the one
|
|
254
|
+
* choice `$siblings` requires. */
|
|
255
|
+
sortBy?: string;
|
|
256
|
+
/** Sort direction when `sortBy` is set. Default `asc`. */
|
|
257
|
+
sortDir?: 'asc' | 'desc';
|
|
258
|
+
/** Wrap around the ends (`last.next` → first, `first.prev` → last). Only applies when `count > 1`.
|
|
259
|
+
* Default `false`. */
|
|
260
|
+
wrap?: boolean;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Locate the current item within an ordered set and return its neighbours + position. Pure: the input
|
|
264
|
+
* list is never mutated (sorting works on a shallow copy). `currentId` is compared to each item's
|
|
265
|
+
* `idField` via string equality (route-param values are strings). When the current id isn't found,
|
|
266
|
+
* `index` is `-1` and `prev`/`next` are `null` (but `count` still reflects the set size).
|
|
267
|
+
*/
|
|
268
|
+
declare function resolveSiblings<T = any>(items: T[] | null | undefined, currentId: string | number | null | undefined, options?: ResolveSiblingsOptions): SiblingsResult<T>;
|
|
269
|
+
interface BuildRelatedFilterOptions {
|
|
270
|
+
/** Field(s) on the current item whose value(s) the related items must match (e.g. `category`,
|
|
271
|
+
* or `['category', 'brand']`). Each contributes an equality filter on that field. */
|
|
272
|
+
matchFields: string | string[];
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Build the collection filter for `$related` from the resolved current item: an equality match on
|
|
276
|
+
* each `matchField`'s value (e.g. same `category`). Feeds a normal `collection` plan — no new plan
|
|
277
|
+
* kind. Fields whose value is not a scalar (or is empty) are omitted, matching
|
|
278
|
+
* `buildDataSourceFilter`'s "don't over-filter" rule. Exclude-self is applied to the RESULT via
|
|
279
|
+
* {@link excludeSelf} (the public query controllers are equality-only, so it can't be a `$ne` param).
|
|
280
|
+
*/
|
|
281
|
+
declare function buildRelatedFilter(current: any, options: BuildRelatedFilterOptions): Record<string, any>;
|
|
282
|
+
/**
|
|
283
|
+
* Drop the current item from a list by `idField` (default `_id`). Used to exclude self from a
|
|
284
|
+
* `$related` result after fetch. A nullish/empty `currentId` leaves the list unchanged.
|
|
285
|
+
*/
|
|
286
|
+
declare function excludeSelf<T = any>(items: T[] | null | undefined, currentId: string | number | null | undefined, idField?: string): T[];
|
|
287
|
+
/** The resolved Route-scope context bound values read from (`$route.projectId`, `$current.title`,
|
|
288
|
+
* `$siblings.next`, `$related`). Assembled by each consumer during its dependent second pass. */
|
|
289
|
+
interface RouteContext {
|
|
290
|
+
/** Route path params for the current URL (from `matchRouteParams`). */
|
|
291
|
+
$route: Record<string, string>;
|
|
292
|
+
/** The resolved current item (the page's single by-id source). */
|
|
293
|
+
$current: any;
|
|
294
|
+
/** Neighbours of the current item within a chosen ordered set. */
|
|
295
|
+
$siblings?: SiblingsResult;
|
|
296
|
+
/** Items related to the current one (same-attribute), excluding self. */
|
|
297
|
+
$related?: any[];
|
|
298
|
+
}
|
|
299
|
+
type RelativeSourceKind = 'route' | 'current' | 'siblings' | 'related';
|
|
300
|
+
interface RelativeSourceSpec {
|
|
301
|
+
kind: RelativeSourceKind;
|
|
302
|
+
/** The source alias this derives from: for `current` the subject single-source; for
|
|
303
|
+
* `siblings`/`related` the COLLECTION alias to locate within / search. Unused for `route`. */
|
|
304
|
+
from?: string;
|
|
305
|
+
/** `siblings`/`related`: the SUBJECT source alias (the current item) whose id / field values drive
|
|
306
|
+
* the computation. Defaults to `from` when omitted. May reference `$current`. */
|
|
307
|
+
subjectFrom?: string;
|
|
308
|
+
/** Field identifying an item. Default `_id`. */
|
|
309
|
+
idField?: string;
|
|
310
|
+
/** `siblings`: sort the set before locating neighbours. */
|
|
311
|
+
sortBy?: string;
|
|
312
|
+
sortDir?: 'asc' | 'desc';
|
|
313
|
+
wrap?: boolean;
|
|
314
|
+
/** `siblings`: resolve to a SINGLE neighbour ITEM (`next`/`prev`) instead of the whole
|
|
315
|
+
* `{prev,next,index,count,…}` object — so a source can be named e.g. `nextProject` and bound
|
|
316
|
+
* directly (`nextProject.route`). Omit for the whole-object shape. */
|
|
317
|
+
pick?: 'next' | 'prev';
|
|
318
|
+
/** `related`: field(s) on the subject the results must match. */
|
|
319
|
+
matchFields?: string | string[];
|
|
320
|
+
/** `related`: drop the subject from its own results. Default `true`. */
|
|
321
|
+
excludeSelf?: boolean;
|
|
322
|
+
}
|
|
323
|
+
/** Duck-typed view of a data source carrying an optional relative descriptor (avoids a hard dep on
|
|
324
|
+
* the full editor model / a circular type import). */
|
|
325
|
+
interface RelativeCapableSource {
|
|
326
|
+
alias?: string;
|
|
327
|
+
type?: string;
|
|
328
|
+
request?: {
|
|
329
|
+
relative?: RelativeSourceSpec;
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/** The already-resolved inputs a single relative source computes from. Assembled by each consumer:
|
|
333
|
+
* the batch pass reads them from the resolved map; the builder resolves them async per alias. */
|
|
334
|
+
interface RelativeInputs {
|
|
335
|
+
/** The subject item (the current resource) — for `current`/`siblings`/`related`. */
|
|
336
|
+
subject?: any;
|
|
337
|
+
/** The collection to locate within / search — for `siblings`/`related`. */
|
|
338
|
+
collection?: any;
|
|
339
|
+
/** Route path params — for `route`. */
|
|
340
|
+
routeParams?: Record<string, any>;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Compute ONE relative source's value from its already-resolved {@link RelativeInputs} — the SHARED
|
|
344
|
+
* kind→computation decision, so the batch pass ({@link resolveRelativeInto}) and the builder's async
|
|
345
|
+
* per-alias resolver produce identical results with no forked switch. `route` → the route params;
|
|
346
|
+
* `current` → the subject; `siblings` → {@link resolveSiblings} over the collection; `related` → the
|
|
347
|
+
* collection filtered by {@link buildRelatedFilter}'s predicate (+ {@link excludeSelf}).
|
|
348
|
+
*/
|
|
349
|
+
declare function computeRelative(spec: RelativeSourceSpec, inputs: RelativeInputs): any;
|
|
350
|
+
/**
|
|
351
|
+
* Compute every `type:'relative'` source into `resolved` (keyed by alias), IN PLACE. Pure w.r.t. HTTP
|
|
352
|
+
* — it only reads already-resolved roots + the route params, so both consumers run it identically as
|
|
353
|
+
* a second pass. Delegates each source to {@link computeRelative}. `current`'s subject is `from`;
|
|
354
|
+
* `siblings`/`related` take `collection` = `from` and `subject` = `subjectFrom ?? from`. Mutates and
|
|
355
|
+
* returns `resolved`.
|
|
356
|
+
*/
|
|
357
|
+
declare function resolveRelativeInto(dataSources: RelativeCapableSource[], resolved: Record<string, any>, routeParams?: Record<string, any>): Record<string, any>;
|
|
358
|
+
|
|
359
|
+
export { DataSourceSortDir, RESERVED_ALIAS_PREFIX, SORT_PARAM, buildDataSourceFilter, buildRelatedFilter, collectReferencedAliases, computeRelative, dataSourcePlanToRequest, excludeSelf, getByPath, isReservedAlias, matchRouteParams, normalizeCollectionResult, planDataSource, referencedDataSources, referencedDataSourcesDeep, resolveDerivedInto, resolveRelativeInto, resolveRepeaterItems, resolveSiblings, resolveSingleItemId, sortParamValue, variableAliases, variableItemsFrom };
|
|
360
|
+
export type { BuildRelatedFilterOptions, DataSourceDomain, DataSourceEndpoints, DataSourceMode, DataSourcePlan, DataSourceQueryFilter, DataSourceRequest, DataSourceRequestSpec, DataSourceRouteFilter, DataSourceSort, DataSourceSpec, RelativeInputs, RelativeSourceKind, RelativeSourceSpec, ResolveSiblingsOptions, RouteContext, SiblingsResult };
|
package/design-core/index.d.ts
CHANGED
|
@@ -1173,6 +1173,170 @@ declare const SPEC_AXES: {
|
|
|
1173
1173
|
};
|
|
1174
1174
|
};
|
|
1175
1175
|
};
|
|
1176
|
+
readonly scrolls: {
|
|
1177
|
+
readonly normal: {
|
|
1178
|
+
readonly label: "Normal";
|
|
1179
|
+
readonly he: "רגילה";
|
|
1180
|
+
readonly hint: "The browser's own scrolling.";
|
|
1181
|
+
readonly lenis: null;
|
|
1182
|
+
};
|
|
1183
|
+
readonly smooth: {
|
|
1184
|
+
readonly label: "Smooth";
|
|
1185
|
+
readonly he: "חלקה";
|
|
1186
|
+
readonly hint: "A short glide after each wheel turn — what every IOX site does today.";
|
|
1187
|
+
readonly lenis: {
|
|
1188
|
+
readonly duration: 1.2;
|
|
1189
|
+
readonly easing: "expo-out";
|
|
1190
|
+
readonly wheelMultiplier: 1;
|
|
1191
|
+
readonly syncTouch: false;
|
|
1192
|
+
};
|
|
1193
|
+
};
|
|
1194
|
+
readonly extra: {
|
|
1195
|
+
readonly label: "Extra smooth";
|
|
1196
|
+
readonly he: "חלקה מאוד";
|
|
1197
|
+
readonly hint: "A longer, softer glide; each wheel turn moves a little less.";
|
|
1198
|
+
readonly lenis: {
|
|
1199
|
+
readonly duration: 1.8;
|
|
1200
|
+
readonly easing: "expo-out";
|
|
1201
|
+
readonly wheelMultiplier: 0.9;
|
|
1202
|
+
readonly syncTouch: false;
|
|
1203
|
+
};
|
|
1204
|
+
};
|
|
1205
|
+
};
|
|
1206
|
+
readonly animations: {
|
|
1207
|
+
readonly still: {
|
|
1208
|
+
readonly label: "Still";
|
|
1209
|
+
readonly he: "ללא";
|
|
1210
|
+
readonly hint: "Nothing moves in as you scroll. Buttons and cards still respond to the pointer (Speed).";
|
|
1211
|
+
readonly parts: {};
|
|
1212
|
+
};
|
|
1213
|
+
readonly subtle: {
|
|
1214
|
+
readonly label: "Subtle";
|
|
1215
|
+
readonly he: "עדינה";
|
|
1216
|
+
readonly hint: "Each section's content fades in once, together.";
|
|
1217
|
+
readonly parts: {
|
|
1218
|
+
readonly content: {
|
|
1219
|
+
readonly type: "fadeIn";
|
|
1220
|
+
readonly duration: 500;
|
|
1221
|
+
};
|
|
1222
|
+
};
|
|
1223
|
+
};
|
|
1224
|
+
readonly standard: {
|
|
1225
|
+
readonly label: "Standard";
|
|
1226
|
+
readonly he: "רגילה";
|
|
1227
|
+
readonly hint: "Headings rise in; cards, prices and steps follow one after another.";
|
|
1228
|
+
readonly parts: {
|
|
1229
|
+
readonly heading: {
|
|
1230
|
+
readonly type: "moveUp";
|
|
1231
|
+
readonly distance: 16;
|
|
1232
|
+
readonly duration: 500;
|
|
1233
|
+
};
|
|
1234
|
+
readonly items: {
|
|
1235
|
+
readonly type: "moveUp";
|
|
1236
|
+
readonly distance: 16;
|
|
1237
|
+
readonly duration: 450;
|
|
1238
|
+
readonly stagger: 80;
|
|
1239
|
+
readonly cap: 6;
|
|
1240
|
+
};
|
|
1241
|
+
readonly media: {
|
|
1242
|
+
readonly type: "fadeIn";
|
|
1243
|
+
readonly duration: 600;
|
|
1244
|
+
};
|
|
1245
|
+
};
|
|
1246
|
+
};
|
|
1247
|
+
readonly lively: {
|
|
1248
|
+
readonly label: "Lively";
|
|
1249
|
+
readonly he: "תוססת";
|
|
1250
|
+
readonly hint: "Bigger, longer entrances; side-by-side rows slide in from their side; the hero's words fade in.";
|
|
1251
|
+
readonly parts: {
|
|
1252
|
+
readonly heroText: {
|
|
1253
|
+
readonly type: "fadeIn";
|
|
1254
|
+
readonly duration: 400;
|
|
1255
|
+
};
|
|
1256
|
+
readonly heading: {
|
|
1257
|
+
readonly type: "moveUp";
|
|
1258
|
+
readonly distance: 24;
|
|
1259
|
+
readonly duration: 600;
|
|
1260
|
+
};
|
|
1261
|
+
readonly items: {
|
|
1262
|
+
readonly type: "moveUp";
|
|
1263
|
+
readonly distance: 24;
|
|
1264
|
+
readonly duration: 600;
|
|
1265
|
+
readonly stagger: 100;
|
|
1266
|
+
readonly cap: 8;
|
|
1267
|
+
};
|
|
1268
|
+
readonly media: {
|
|
1269
|
+
readonly type: "fadeIn";
|
|
1270
|
+
readonly duration: 700;
|
|
1271
|
+
};
|
|
1272
|
+
readonly rowMedia: {
|
|
1273
|
+
readonly type: "moveLeft";
|
|
1274
|
+
readonly mirror: "moveRight";
|
|
1275
|
+
readonly distance: 24;
|
|
1276
|
+
readonly duration: 600;
|
|
1277
|
+
};
|
|
1278
|
+
};
|
|
1279
|
+
};
|
|
1280
|
+
};
|
|
1281
|
+
readonly animationFamilies: {
|
|
1282
|
+
readonly nav: readonly [];
|
|
1283
|
+
readonly footer: readonly [];
|
|
1284
|
+
readonly hero: readonly ["heroText"];
|
|
1285
|
+
readonly header: readonly ["heading"];
|
|
1286
|
+
readonly detail: readonly ["heading", "media"];
|
|
1287
|
+
readonly proof: readonly ["content", "heading", "items"];
|
|
1288
|
+
readonly feature: readonly ["content", "heading", "items", "media", "rowMedia"];
|
|
1289
|
+
readonly collection: readonly ["content", "heading", "items"];
|
|
1290
|
+
readonly story: readonly ["content", "heading", "media"];
|
|
1291
|
+
readonly cta: readonly ["content", "heading"];
|
|
1292
|
+
readonly contact: readonly ["content", "heading"];
|
|
1293
|
+
readonly faq: readonly ["content", "heading"];
|
|
1294
|
+
readonly pricing: readonly ["content", "heading", "items"];
|
|
1295
|
+
};
|
|
1296
|
+
readonly betweens: {
|
|
1297
|
+
readonly none: {
|
|
1298
|
+
readonly label: "None";
|
|
1299
|
+
readonly he: "ללא";
|
|
1300
|
+
readonly hint: "The next page simply appears.";
|
|
1301
|
+
readonly transition: "none";
|
|
1302
|
+
};
|
|
1303
|
+
readonly fade: {
|
|
1304
|
+
readonly label: "Fade";
|
|
1305
|
+
readonly he: "דהייה";
|
|
1306
|
+
readonly hint: "The page fades into the next.";
|
|
1307
|
+
readonly transition: "fade";
|
|
1308
|
+
readonly feel: "snappy";
|
|
1309
|
+
};
|
|
1310
|
+
readonly slide: {
|
|
1311
|
+
readonly label: "Slide";
|
|
1312
|
+
readonly he: "החלקה";
|
|
1313
|
+
readonly hint: "The next page pushes this one aside (from the left on a Hebrew site). On phones: Fade.";
|
|
1314
|
+
readonly transition: "move-left";
|
|
1315
|
+
readonly rtl: "move-right";
|
|
1316
|
+
readonly feel: "smooth";
|
|
1317
|
+
readonly phone: "fade";
|
|
1318
|
+
};
|
|
1319
|
+
readonly cinematic: {
|
|
1320
|
+
readonly label: "Cinematic";
|
|
1321
|
+
readonly he: "קולנועית";
|
|
1322
|
+
readonly hint: "This page sinks back while the next rises over it. On phones: Fade.";
|
|
1323
|
+
readonly transition: "parallax-up";
|
|
1324
|
+
readonly feel: "cinematic";
|
|
1325
|
+
readonly phone: "fade";
|
|
1326
|
+
};
|
|
1327
|
+
};
|
|
1328
|
+
readonly motionChoices: {
|
|
1329
|
+
readonly pre: {
|
|
1330
|
+
readonly scroll: "smooth";
|
|
1331
|
+
readonly animate: "still";
|
|
1332
|
+
readonly between: "cinematic";
|
|
1333
|
+
};
|
|
1334
|
+
readonly reduced: {
|
|
1335
|
+
readonly scroll: "normal";
|
|
1336
|
+
readonly animate: "still";
|
|
1337
|
+
readonly between: "none";
|
|
1338
|
+
};
|
|
1339
|
+
};
|
|
1176
1340
|
};
|
|
1177
1341
|
declare const SPEC_SPRINGS: {
|
|
1178
1342
|
readonly lively: {
|
|
@@ -11992,6 +12156,25 @@ type TintId = keyof typeof SPEC_AXES.tints;
|
|
|
11992
12156
|
declare const TINT_IDS: ReadonlyArray<TintId>;
|
|
11993
12157
|
/** What a studio that stored its look BEFORE the tint existed wears: exactly the look's own palette. */
|
|
11994
12158
|
declare const PRE_TINT_DEFAULT: TintId;
|
|
12159
|
+
/** How the site scrolls (AI plan rev 3.1 §3p): Normal (the browser's own) · Smooth · Extra smooth. */
|
|
12160
|
+
type ScrollId = keyof typeof SPEC_AXES.scrolls;
|
|
12161
|
+
/** How much the sections move in as they scroll into view: Still · Subtle · Standard · Lively. */
|
|
12162
|
+
type AnimateId = keyof typeof SPEC_AXES.animations;
|
|
12163
|
+
/** What plays between pages: None · Fade · Slide · Cinematic. */
|
|
12164
|
+
type BetweenId = keyof typeof SPEC_AXES.betweens;
|
|
12165
|
+
declare const SCROLL_IDS: ReadonlyArray<ScrollId>;
|
|
12166
|
+
declare const ANIMATE_IDS: ReadonlyArray<AnimateId>;
|
|
12167
|
+
declare const BETWEEN_IDS: ReadonlyArray<BetweenId>;
|
|
12168
|
+
/** The look's motion — the three choices the runtime and the composer read from `settings.design`. */
|
|
12169
|
+
interface DesignMotion {
|
|
12170
|
+
scroll: ScrollId;
|
|
12171
|
+
animate: AnimateId;
|
|
12172
|
+
between: BetweenId;
|
|
12173
|
+
}
|
|
12174
|
+
/** What a look stored BEFORE rev 3.1 wears: exactly what every live site did (Smooth · Still · Cinematic). */
|
|
12175
|
+
declare const PRE_MOTION: Readonly<DesignMotion>;
|
|
12176
|
+
/** What a visitor who asks for reduced motion always gets, whatever the look chose. */
|
|
12177
|
+
declare const REDUCED_DESIGN_MOTION: Readonly<DesignMotion>;
|
|
11995
12178
|
type SchemeId = keyof typeof SPEC_SCHEMES;
|
|
11996
12179
|
type FontRoleToken = (typeof SPEC_FONT_ROLES)[number]['token'];
|
|
11997
12180
|
/** Everything a studio chose about its look — the `settings.design` row, typed. */
|
|
@@ -12008,6 +12191,10 @@ interface DesignChoices {
|
|
|
12008
12191
|
* `neutral` — the palette it was applied with. */
|
|
12009
12192
|
tint?: TintId;
|
|
12010
12193
|
fonts?: Partial<Record<FontRoleToken, string>>;
|
|
12194
|
+
/** Absent = `PRE_MOTION` (a row stored before rev 3.1 reads what its site already did). */
|
|
12195
|
+
scroll?: ScrollId;
|
|
12196
|
+
animate?: AnimateId;
|
|
12197
|
+
between?: BetweenId;
|
|
12011
12198
|
}
|
|
12012
12199
|
interface FlavorSpecToken {
|
|
12013
12200
|
readonly name: string;
|
|
@@ -13293,6 +13480,9 @@ declare enum DesignConfigKey {
|
|
|
13293
13480
|
Mode = "mode",
|
|
13294
13481
|
Tint = "tint",
|
|
13295
13482
|
Fonts = "fonts",
|
|
13483
|
+
Scroll = "scroll",
|
|
13484
|
+
Animate = "animate",
|
|
13485
|
+
Between = "between",
|
|
13296
13486
|
Revert = "revert"
|
|
13297
13487
|
}
|
|
13298
13488
|
/** A stored design, resolved: `choices` is ALWAYS complete and valid (pack defaults fill the gaps). */
|
|
@@ -13316,12 +13506,15 @@ declare function isRetiredFlavorId(id: string | null | undefined): boolean;
|
|
|
13316
13506
|
* the pack's own default (an unknown pair → the pack's first, a bad seed → the pack's seed).
|
|
13317
13507
|
*/
|
|
13318
13508
|
declare function resolveDesignChoices(partial: Partial<DesignChoices> | null | undefined): DesignChoices;
|
|
13509
|
+
/** The look's motion, completed: an absent or unknown choice reads `PRE_MOTION` — what the site already does. */
|
|
13510
|
+
declare function resolveDesignMotion(partial: Readonly<Partial<Record<keyof DesignMotion, unknown>>> | null | undefined): DesignMotion;
|
|
13319
13511
|
/** The pack's own defaults for `flavorId` — what picking a card means before anything is tuned. */
|
|
13320
13512
|
declare function packDesignChoices(flavorId: string): DesignChoices;
|
|
13321
13513
|
/**
|
|
13322
13514
|
* What picking a pack card means, given the design the studio wears: the applied pack → the applied
|
|
13323
13515
|
* choices; another pack → that pack's defaults, CARRYING the author's chosen fonts (§5b — a font the
|
|
13324
|
-
* author chose survives a pack switch unless the author changes it)
|
|
13516
|
+
* author chose survives a pack switch unless the author changes it) and the site's motion (rev 3.1 MO-D3 —
|
|
13517
|
+
* how it scrolls and changes page is not a pack's, so a Look pick never resets it). Both picker homes call this.
|
|
13325
13518
|
*/
|
|
13326
13519
|
declare function choicesForPack(flavorId: string, applied: DesignChoices | null | undefined): DesignChoices;
|
|
13327
13520
|
/**
|
|
@@ -13332,6 +13525,8 @@ declare function choicesForPack(flavorId: string, applied: DesignChoices | null
|
|
|
13332
13525
|
declare function readDesignConfig(config: ReadonlyArray<DesignConfigEntry> | null | undefined, hasRow?: boolean): StoredDesign;
|
|
13333
13526
|
/** The colour mode a stored config compiles in — what the public page read hands the engine. */
|
|
13334
13527
|
declare function designModeOf(config: ReadonlyArray<DesignConfigEntry> | null | undefined): DesignMode;
|
|
13528
|
+
/** The look's motion of a stored config — what the public page read hands the engine (`designMotion`). */
|
|
13529
|
+
declare function designMotionOf(config: ReadonlyArray<DesignConfigEntry> | null | undefined): DesignMotion;
|
|
13335
13530
|
/** Resolved choices (+ the revert snapshot) → the config array a settings row stores. */
|
|
13336
13531
|
declare function designConfigEntries(choices: DesignChoices, flavorVersion: string | number, revert?: FlavorRevertSnapshot | null): DesignConfigEntry[];
|
|
13337
13532
|
/** Two choice sets describe the same look (fonts compared by role). */
|
|
@@ -13375,6 +13570,23 @@ declare function planDesignApply(existing: ReadonlyArray<StoredDesignTokenRow>,
|
|
|
13375
13570
|
* `null` when the design holds no snapshot.
|
|
13376
13571
|
*/
|
|
13377
13572
|
declare function planDesignRevert(current: ReadonlyArray<StoredDesignTokenRow>, design: StoredDesign): FlavorRevertPlan | null;
|
|
13573
|
+
/** The revert snapshot an Apply stores in `settings.design` (board F7): design-core's snapshot plus the design
|
|
13574
|
+
* row's previous config VERBATIM, so a revert restores every choice (pair, axes, mode, fonts), not only the
|
|
13575
|
+
* flavor id and seed. */
|
|
13576
|
+
interface DesignRevertSnapshot extends FlavorRevertSnapshot {
|
|
13577
|
+
fromConfig?: DesignConfigEntry[];
|
|
13578
|
+
}
|
|
13579
|
+
/**
|
|
13580
|
+
* What an Apply of `plan` stores as its revert snapshot — the ONE rule the builder's Apply and the
|
|
13581
|
+
* server-side site build (W2) share: the whole pre-apply token set, what the apply writes into each row,
|
|
13582
|
+
* and where a revert goes back to — never a null flavor (a studio with no design row wore its design's
|
|
13583
|
+
* defaults, so that is what it returns to). An apply that writes nothing keeps the previous snapshot:
|
|
13584
|
+
* clobbering a useful one with "nothing changed" would be a lie.
|
|
13585
|
+
*/
|
|
13586
|
+
declare function designApplySnapshot(previous: StoredDesign, previousConfig: ReadonlyArray<DesignConfigEntry> | null | undefined, existing: ReadonlyArray<StoredDesignTokenRow>, plan: FlavorSeedPlan, appliedAt: number): DesignRevertSnapshot | null;
|
|
13587
|
+
/** The config a revert puts back: the snapshot's verbatim config, else (a snapshot older than `fromConfig`)
|
|
13588
|
+
* the identity it recorded. */
|
|
13589
|
+
declare function designRevertConfig(snapshot: DesignRevertSnapshot): DesignConfigEntry[];
|
|
13378
13590
|
/** The rows a design is missing by name — the builder-load top-up (never touches an existing row). */
|
|
13379
13591
|
declare function missingDesignRows(existing: ReadonlyArray<{
|
|
13380
13592
|
name: string;
|
|
@@ -13439,5 +13651,5 @@ interface FontFamilyRemoval {
|
|
|
13439
13651
|
*/
|
|
13440
13652
|
declare function planFontFamilyRemoval(existing: ReadonlyArray<StoredDesignTokenRow>, previous: StoredDesign, family: string): FontFamilyRemoval;
|
|
13441
13653
|
|
|
13442
|
-
export { ACCENT_TOKEN_NAMES, AdoptOutcome, AdoptSkipReason, BAR_RESERVE_BREAKPOINTS, BAR_RESERVE_CLASS, BOTTOM_BAR_STYLE, BUTTON_VARIANT_TO_STYLE, CANVAS_LINK_ATTRIBUTE, CARD_LINK_CLASS, COLOR_SCHEMES, COLOR_SCHEME_TRAIT, COLOR_SCHEME_TYPES, ColorScheme, ColourCheckId, DEFAULT_FLAVOR_ID, DESIGN_TOKEN_GROUPS, DESIGN_TOKEN_TIERS, DESIGN_TOKEN_TYPES, DesignConfigKey, ELEMENT_STYLES, ELEMENT_STYLE_MARKER_CLASS, ELEMENT_STYLE_STATES, EMPTY_IMAGE_ATTRIBUTE, EMPTY_IMAGE_SRC, ElementStyleState, FLAVOR_SPEC_VERSION, FONT_CATALOG, FONT_FAMILY_TOKENS, FONT_FILE_ACCEPT, FONT_FILE_EXTENSIONS, FONT_FILE_FORMATS, FONT_STYLES, FONT_WEIGHTS, FontUploadError, GOOGLE_FONTS_CSS_ORIGIN, GOOGLE_FONTS_FILE_ORIGIN, HELD_CONTRAST, INHERITED_TEXT, LinkType, MAX_FONT_FILE_BYTES, NEW_NODE_STYLE_DEFAULTS, OwnedTraitLink, PALETTE_PRESETS, PRE_DS2_FLAVOR_DEFAULTS, PRE_TINT_DEFAULT, REDUCED_MOTION_OVERRIDES, REDUCED_TRANSPARENCY_OVERRIDES, REVERT_WINDOW_MS, SCHEME_INK, SPEC_A11Y, SPEC_AXES, SPEC_BUTTON_VARIANT_TO_STYLE, SPEC_CONTRAST, SPEC_CONTRAST_AUDIT, SPEC_DEFAULT_ELEMENT_STYLE, SPEC_ELEMENT_STYLES, SPEC_FIELD_CLASS_BASELINE, SPEC_FLAVORS, SPEC_FLAVOR_PACKS, SPEC_FONTS, SPEC_FONT_ROLES, SPEC_INK_SCOPES, SPEC_LEGACY_ALIASES, SPEC_PALETTE_PRESETS, SPEC_SCHEMES, SPEC_SCHEME_INK, SPEC_SPRINGS, SPEC_TIERS, SPEC_TIER_IDS, SPEC_TOKEN_TYPES, SUPERSEDED_STYLE_VALUES, SWISS_FLAVOR, TINT_FULL_CHROMA, TINT_IDS, TINT_LEVELS, TINT_OWN_HUE_CHROMA, TINT_TURN_CHROMA, USER_TOKEN_SOURCE, WCAG_AA_TEXT, WCAG_AA_UI, adoptElementStyles, adoptionStyleFor, apcaLc, applyElementStyle, applyHeadingLevelRule, atLightness, atLightnessMaxChroma, auditDesignContrast, barReserveClass, buildFlavorTokens, buildFontFaceCss, buttonBlockHref, catalogFontId, checkFontWeight, choicesForPack, colorSchemeClass, colorSchemeOf, colourTabChecks, compareFontWeights, compileSchemeCss, compileTokenCss, compileTokenCssBlocks, compositeOver, cssString, defaultDesignChoices, defaultElementStyleFor, deriveAccentTokens, deriveBrandTokens, designBaseline, designConfigEntries, designModeOf, designTokenRepairs, designTokenRows, elementStyleById, elementStyleClass, elementStylesFor, emptyImageLabelSrc, emptyImagePlaceholder, emptyImageSrc, ensureAlpha, ensureContrast, flavorColours, flavorPackById, flavorSeedWrites, flavorSourceStamp, fontFamilyKey, fontFileName, fontFileStem, fontFormatOf, fontPreloads, fontRoleReferences, fontStackWithout, fontWeightCovers, fontWeightRange, fontWeightValue, fontsForTokens, formatFontFamilies, formatFontFamily, formatFontWeight, googleFontHref, groupFontFamilies, hasElementStyleMarker, headingHref, inSrgbGamut, isDesignTokenGroup, isDesignTokenTier, isDesignTokenType, isFontWeightRange, isRetiredFlavorId, legacyDesignTokenRows, legacyFlavorTokens, legacyRuleTokenReferences, matchFontWeight, missingDesignRows, missingFontRoles, nodeDesignClasses, normalizeFontStyle, normalizeFontWeight, normalizeFontWeightValue, oklabToRgb, ownedTraitStatus, ownedTraitsOf, packDesignChoices, paintColours, parseCssColour, parseFontFamilies, parseFontWeight, parseHexColor, planDesignApply, planDesignRevert, planFlavorRevert, planFlavorSeed, planFontFamilyRemoval, planSwissMigration, preTintAccentGrounds, previewElementStyleAdoption, previewFontWeight, quantizeRgb, readDesignConfig, readOwnedTrait, relativeLuminance, releaseElementStyle, resolveDesignChoices, resolveSchemeTokenValues, resolveTokenReferences, resolveTokenValues, revertAvailable, rgbToOklab, ringColour, roleClass, sameDesignChoices, setColorScheme, specTokenNames, splitTopLevel, springToLinear, stackNamesFamily, styleKeyToKebab, switchElementStyle, syncNodeDesignClasses, toHexColor, tokenReferences, tokensToDarkVarMap, tokensToVarMap, unknownTokenReferences, untouchedSeedRow, userFontStack, validateFlavorPack, wcagContrastRatio, withSchemeInk, writeOwnedTrait };
|
|
13443
|
-
export type { AccentBackgrounds, AccentGround, AccentTokenName, AdoptContext, AdoptReport, AdoptableNode, AdoptedNode, ApplyElementStyleResult, ButtonBlockLinkProps, ColourCheck, ColourFlavor, ContrastFinding, DensityId, DesignApplyOptions, DesignChoices, DesignClassSource, DesignConfigEntry, DesignMode, DesignTokenGroup, DesignTokenLike, DesignTokenRow, DesignTokenTier, DesignTokenType, ElementStyle, ElementStyleTarget, ElementStyleTraitLike, FlavorColours, FlavorPack, FlavorPackV2, FlavorPalette, FlavorRevertPlan, FlavorRevertSnapshot, FlavorRevertWrite, FlavorSeedOptions, FlavorSeedPlan, FlavorSpecToken, FlavorTintConfig, FlavorTokenDef, FontDescriptor, FontFamilyGroup, FontFamilyRemoval, FontFamilyToken, FontFormat, FontPair, FontRoleToken, FontStyle, FontWeight, FontWeightRange, FontsForTokensOptions, KeptEdit, LinearSpring, MissingFontRole, MotionId, NodeLinkProps, OkLab, OwnedTrait, OwnedTraitStatus, PalettePreset, ResolvedMode, Rgb, Rgba, SchemeId, SeedBaseline, SeedExpectation, ShapeId, SkippedNode, StoredDesign, StoredDesignTokenRow, SupersededStyleValue, SwissMigration, SwitchElementStyleResult, TintId, TintLevel, TokenCssBlocks, TokenCssOptions };
|
|
13654
|
+
export { ACCENT_TOKEN_NAMES, ANIMATE_IDS, AdoptOutcome, AdoptSkipReason, BAR_RESERVE_BREAKPOINTS, BAR_RESERVE_CLASS, BETWEEN_IDS, BOTTOM_BAR_STYLE, BUTTON_VARIANT_TO_STYLE, CANVAS_LINK_ATTRIBUTE, CARD_LINK_CLASS, COLOR_SCHEMES, COLOR_SCHEME_TRAIT, COLOR_SCHEME_TYPES, ColorScheme, ColourCheckId, DEFAULT_FLAVOR_ID, DESIGN_TOKEN_GROUPS, DESIGN_TOKEN_TIERS, DESIGN_TOKEN_TYPES, DesignConfigKey, ELEMENT_STYLES, ELEMENT_STYLE_MARKER_CLASS, ELEMENT_STYLE_STATES, EMPTY_IMAGE_ATTRIBUTE, EMPTY_IMAGE_SRC, ElementStyleState, FLAVOR_SPEC_VERSION, FONT_CATALOG, FONT_FAMILY_TOKENS, FONT_FILE_ACCEPT, FONT_FILE_EXTENSIONS, FONT_FILE_FORMATS, FONT_STYLES, FONT_WEIGHTS, FontUploadError, GOOGLE_FONTS_CSS_ORIGIN, GOOGLE_FONTS_FILE_ORIGIN, HELD_CONTRAST, INHERITED_TEXT, LinkType, MAX_FONT_FILE_BYTES, NEW_NODE_STYLE_DEFAULTS, OwnedTraitLink, PALETTE_PRESETS, PRE_DS2_FLAVOR_DEFAULTS, PRE_MOTION, PRE_TINT_DEFAULT, REDUCED_DESIGN_MOTION, REDUCED_MOTION_OVERRIDES, REDUCED_TRANSPARENCY_OVERRIDES, REVERT_WINDOW_MS, SCHEME_INK, SCROLL_IDS, SPEC_A11Y, SPEC_AXES, SPEC_BUTTON_VARIANT_TO_STYLE, SPEC_CONTRAST, SPEC_CONTRAST_AUDIT, SPEC_DEFAULT_ELEMENT_STYLE, SPEC_ELEMENT_STYLES, SPEC_FIELD_CLASS_BASELINE, SPEC_FLAVORS, SPEC_FLAVOR_PACKS, SPEC_FONTS, SPEC_FONT_ROLES, SPEC_INK_SCOPES, SPEC_LEGACY_ALIASES, SPEC_PALETTE_PRESETS, SPEC_SCHEMES, SPEC_SCHEME_INK, SPEC_SPRINGS, SPEC_TIERS, SPEC_TIER_IDS, SPEC_TOKEN_TYPES, SUPERSEDED_STYLE_VALUES, SWISS_FLAVOR, TINT_FULL_CHROMA, TINT_IDS, TINT_LEVELS, TINT_OWN_HUE_CHROMA, TINT_TURN_CHROMA, USER_TOKEN_SOURCE, WCAG_AA_TEXT, WCAG_AA_UI, adoptElementStyles, adoptionStyleFor, apcaLc, applyElementStyle, applyHeadingLevelRule, atLightness, atLightnessMaxChroma, auditDesignContrast, barReserveClass, buildFlavorTokens, buildFontFaceCss, buttonBlockHref, catalogFontId, checkFontWeight, choicesForPack, colorSchemeClass, colorSchemeOf, colourTabChecks, compareFontWeights, compileSchemeCss, compileTokenCss, compileTokenCssBlocks, compositeOver, cssString, defaultDesignChoices, defaultElementStyleFor, deriveAccentTokens, deriveBrandTokens, designApplySnapshot, designBaseline, designConfigEntries, designModeOf, designMotionOf, designRevertConfig, designTokenRepairs, designTokenRows, elementStyleById, elementStyleClass, elementStylesFor, emptyImageLabelSrc, emptyImagePlaceholder, emptyImageSrc, ensureAlpha, ensureContrast, flavorColours, flavorPackById, flavorSeedWrites, flavorSourceStamp, fontFamilyKey, fontFileName, fontFileStem, fontFormatOf, fontPreloads, fontRoleReferences, fontStackWithout, fontWeightCovers, fontWeightRange, fontWeightValue, fontsForTokens, formatFontFamilies, formatFontFamily, formatFontWeight, googleFontHref, groupFontFamilies, hasElementStyleMarker, headingHref, inSrgbGamut, isDesignTokenGroup, isDesignTokenTier, isDesignTokenType, isFontWeightRange, isRetiredFlavorId, legacyDesignTokenRows, legacyFlavorTokens, legacyRuleTokenReferences, matchFontWeight, missingDesignRows, missingFontRoles, nodeDesignClasses, normalizeFontStyle, normalizeFontWeight, normalizeFontWeightValue, oklabToRgb, ownedTraitStatus, ownedTraitsOf, packDesignChoices, paintColours, parseCssColour, parseFontFamilies, parseFontWeight, parseHexColor, planDesignApply, planDesignRevert, planFlavorRevert, planFlavorSeed, planFontFamilyRemoval, planSwissMigration, preTintAccentGrounds, previewElementStyleAdoption, previewFontWeight, quantizeRgb, readDesignConfig, readOwnedTrait, relativeLuminance, releaseElementStyle, resolveDesignChoices, resolveDesignMotion, resolveSchemeTokenValues, resolveTokenReferences, resolveTokenValues, revertAvailable, rgbToOklab, ringColour, roleClass, sameDesignChoices, setColorScheme, specTokenNames, splitTopLevel, springToLinear, stackNamesFamily, styleKeyToKebab, switchElementStyle, syncNodeDesignClasses, toHexColor, tokenReferences, tokensToDarkVarMap, tokensToVarMap, unknownTokenReferences, untouchedSeedRow, userFontStack, validateFlavorPack, wcagContrastRatio, withSchemeInk, writeOwnedTrait };
|
|
13655
|
+
export type { AccentBackgrounds, AccentGround, AccentTokenName, AdoptContext, AdoptReport, AdoptableNode, AdoptedNode, AnimateId, ApplyElementStyleResult, BetweenId, ButtonBlockLinkProps, ColourCheck, ColourFlavor, ContrastFinding, DensityId, DesignApplyOptions, DesignChoices, DesignClassSource, DesignConfigEntry, DesignMode, DesignMotion, DesignRevertSnapshot, DesignTokenGroup, DesignTokenLike, DesignTokenRow, DesignTokenTier, DesignTokenType, ElementStyle, ElementStyleTarget, ElementStyleTraitLike, FlavorColours, FlavorPack, FlavorPackV2, FlavorPalette, FlavorRevertPlan, FlavorRevertSnapshot, FlavorRevertWrite, FlavorSeedOptions, FlavorSeedPlan, FlavorSpecToken, FlavorTintConfig, FlavorTokenDef, FontDescriptor, FontFamilyGroup, FontFamilyRemoval, FontFamilyToken, FontFormat, FontPair, FontRoleToken, FontStyle, FontWeight, FontWeightRange, FontsForTokensOptions, KeptEdit, LinearSpring, MissingFontRole, MotionId, NodeLinkProps, OkLab, OwnedTrait, OwnedTraitStatus, PalettePreset, ResolvedMode, Rgb, Rgba, SchemeId, ScrollId, SeedBaseline, SeedExpectation, ShapeId, SkippedNode, StoredDesign, StoredDesignTokenRow, SupersededStyleValue, SwissMigration, SwitchElementStyleResult, TintId, TintLevel, TokenCssBlocks, TokenCssOptions };
|