@animus-ui/system 0.1.11 → 0.1.12

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.
Files changed (85) hide show
  1. package/README.md +124 -51
  2. package/dist/Animus.d.ts +1 -1
  3. package/dist/Animus.d.ts.map +1 -1
  4. package/dist/AnimusExtended.d.ts +1 -1
  5. package/dist/AnimusExtended.d.ts.map +1 -1
  6. package/dist/SystemBuilder.d.ts +184 -155
  7. package/dist/SystemBuilder.d.ts.map +1 -1
  8. package/dist/appearance/index.d.ts +0 -68
  9. package/dist/appearance/index.d.ts.map +1 -1
  10. package/dist/appearance/index.js +0 -91
  11. package/dist/assert-root-slot-C3Lp9MNJ.js +10 -0
  12. package/dist/asset.d.ts +4 -13
  13. package/dist/asset.d.ts.map +1 -1
  14. package/dist/bootstrap/createAppearanceBootstrap.d.ts +0 -57
  15. package/dist/bootstrap/createAppearanceBootstrap.d.ts.map +1 -1
  16. package/dist/bootstrap/index.d.ts.map +1 -1
  17. package/dist/bootstrap/index.js +4 -58
  18. package/dist/class-resolver.d.ts +2 -4
  19. package/dist/class-resolver.d.ts.map +1 -1
  20. package/dist/class-resolver.js +1 -1
  21. package/dist/compose.d.ts +2 -16
  22. package/dist/compose.d.ts.map +1 -1
  23. package/dist/compose.js +3 -17
  24. package/dist/composeWithContext.d.ts +4 -15
  25. package/dist/composeWithContext.d.ts.map +1 -1
  26. package/dist/composeWithContext.js +5 -16
  27. package/dist/conditions.d.ts +24 -141
  28. package/dist/conditions.d.ts.map +1 -1
  29. package/dist/{createClassResolver-BWyEQ5KZ.js → createClassResolver-EpwTL9Sa.js} +12 -113
  30. package/dist/{createComposedFamily-k5tTujGI.js → createComposedFamily-C4NovMcd.js} +11 -49
  31. package/dist/groups/index.js +1 -1
  32. package/dist/index.d.ts +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +318 -409
  35. package/dist/keyframes.d.ts +2 -23
  36. package/dist/keyframes.d.ts.map +1 -1
  37. package/dist/runtime/assert-root-slot.d.ts +2 -13
  38. package/dist/runtime/assert-root-slot.d.ts.map +1 -1
  39. package/dist/runtime/createClassResolver.d.ts +0 -8
  40. package/dist/runtime/createClassResolver.d.ts.map +1 -1
  41. package/dist/runtime/createComposedFamily.d.ts +2 -7
  42. package/dist/runtime/createComposedFamily.d.ts.map +1 -1
  43. package/dist/runtime/index.d.ts +0 -16
  44. package/dist/runtime/index.d.ts.map +1 -1
  45. package/dist/runtime/is-dev.d.ts +2 -42
  46. package/dist/runtime/is-dev.d.ts.map +1 -1
  47. package/dist/runtime/resolveClasses.d.ts +8 -33
  48. package/dist/runtime/resolveClasses.d.ts.map +1 -1
  49. package/dist/runtime/witness.d.ts +0 -8
  50. package/dist/runtime/witness.d.ts.map +1 -1
  51. package/dist/runtime-entry.d.ts +1 -6
  52. package/dist/runtime-entry.d.ts.map +1 -1
  53. package/dist/runtime-entry.js +2 -2
  54. package/dist/selectors.d.ts +6 -45
  55. package/dist/selectors.d.ts.map +1 -1
  56. package/dist/{size-CcVEGaen.js → size-C6jqxiQy.js} +7 -34
  57. package/dist/theme/createTheme.d.ts +26 -95
  58. package/dist/theme/createTheme.d.ts.map +1 -1
  59. package/dist/theme/flattenScale.d.ts +4 -10
  60. package/dist/theme/flattenScale.d.ts.map +1 -1
  61. package/dist/theme/resolveReferences.d.ts +7 -35
  62. package/dist/theme/resolveReferences.d.ts.map +1 -1
  63. package/dist/theme/serializeTokens.d.ts +0 -3
  64. package/dist/theme/serializeTokens.d.ts.map +1 -1
  65. package/dist/theme/types.d.ts +4 -26
  66. package/dist/theme/types.d.ts.map +1 -1
  67. package/dist/theme/utils.d.ts +1 -18
  68. package/dist/theme/utils.d.ts.map +1 -1
  69. package/dist/transforms/border.d.ts +1 -4
  70. package/dist/transforms/border.d.ts.map +1 -1
  71. package/dist/transforms/createTransform.d.ts +6 -31
  72. package/dist/transforms/createTransform.d.ts.map +1 -1
  73. package/dist/transforms/grid.d.ts +2 -12
  74. package/dist/transforms/grid.d.ts.map +1 -1
  75. package/dist/transforms/size.d.ts +2 -8
  76. package/dist/transforms/size.d.ts.map +1 -1
  77. package/dist/types/component.d.ts +9 -105
  78. package/dist/types/component.d.ts.map +1 -1
  79. package/dist/types/config.d.ts +12 -141
  80. package/dist/types/config.d.ts.map +1 -1
  81. package/dist/types/theme.d.ts +8 -165
  82. package/dist/types/theme.d.ts.map +1 -1
  83. package/dist/utils/deepMerge.d.ts.map +1 -1
  84. package/package.json +4 -4
  85. package/dist/assert-root-slot-B73sDJ1Q.js +0 -21
@@ -7,23 +7,18 @@ import { NamedTransform } from './transforms/createTransform';
7
7
  import { type BuiltInConditionAlias, type BuiltInSelectorAlias, Prop, ThemedCSSProps } from './types/config';
8
8
  import { AbstractProps } from './types/props';
9
9
  export type GlobalStyleMap = Record<string, Record<string, any>>;
10
- /** One `src` descriptor of a font-face resource. */
11
10
  export interface FontFaceSrc {
12
11
  /**
13
- * A literal string is emitted byte-exact as authored — asset resolution
14
- * and rewriting belong to the host bundler's CSS asset pipeline, not to
15
- * extraction. An `AssetRef` (from `asset(specifier)`) rides through
16
- * evaluation and emission as its placeholder string; the host plugin
17
- * substitutes the bundler-resolved URL after extraction.
12
+ * A literal string is emitted byte-exact; an `AssetRef` emits its
13
+ * placeholder string, which the host plugin substitutes after extraction.
18
14
  */
19
15
  url: string | AssetRef;
20
16
  /** Format hint (`woff2`, `woff`, …), rendered as `format('…')`. */
21
17
  format?: string;
22
18
  }
23
19
  /**
24
- * A typed `@font-face` descriptor (global-styles-system). `family` may use a
25
- * font-scale token reference (`{fonts.body}`); other descriptors take CSS
26
- * literals only.
20
+ * `family` may use a font-scale token reference (`{fonts.body}`); the other
21
+ * descriptors take CSS literals only.
27
22
  */
28
23
  export interface FontFace {
29
24
  family: string;
@@ -55,21 +50,14 @@ export type CreateKeyframesFactory<PropReg extends Record<string, Prop> = Record
55
50
  type IncludableSystem = {
56
51
  toConfig(): SerializedConfig;
57
52
  /**
58
- * Present on every system built by this version (attached non-enumerably
59
- * next to `toConfig` — see `build()`). Optional in the type so systems
60
- * built by an older @animus-ui/system remain structurally acceptable
61
- * during the deprecation window; `extend()` fails loud at runtime when it
62
- * is absent (design D7 — no `SerializedConfig` reconstruction).
53
+ * Optional only so systems built by an older @animus-ui/system stay
54
+ * structurally acceptable; `extend()` throws when it is absent.
63
55
  */
64
56
  getRegistrySnapshot?(): RegistrySnapshot;
65
57
  };
66
58
  /**
67
- * The frozen registry state captured at `build()` (design D7). `toConfig()`
68
- * serializes from it and `extend()` merges from it, so post-build mutation of
69
- * the public `propRegistry`/`groupRegistry` fields affects neither. Containers
70
- * and per-entry objects are frozen shallow copies. Transforms are immutable,
71
- * cached forwarding wrappers so later mutation of function metadata cannot
72
- * alter serialization while anonymous transform behavior is retained.
59
+ * Frozen at `build()`: `toConfig()` serializes and `extend()` merges from
60
+ * it, so post-build mutation of the public registries reaches neither.
73
61
  */
74
62
  export interface RegistrySnapshot {
75
63
  props: Record<string, Prop>;
@@ -78,174 +66,223 @@ export interface RegistrySnapshot {
78
66
  conditions: ConditionAliasMap;
79
67
  }
80
68
  /**
81
- * A library bundle groups one export for both builders: the system half is
82
- * consumed by `createSystem().extend()`, the theme half by
83
- * `createTheme().extend()`; each builder takes its half and ignores the rest.
84
- * `tokens` is the pre-D9 name for the theme half — both spellings are
85
- * accepted (design D9; removal horizon is DEF-8).
69
+ * The shape `registerKeyframes` accepts. The brand is structural: a
70
+ * hand-rolled object carrying it is admitted; provenance is not checked.
86
71
  */
87
- export interface LibraryBundle {
72
+ export interface RegisterableKeyframes {
73
+ readonly __brand: 'Keyframes';
74
+ readonly __frames: object;
75
+ }
76
+ export interface RegisterableGlobalStyles {
77
+ readonly __brand: 'GlobalStyleBlock';
78
+ readonly styles: object;
79
+ }
80
+ export type KeyframesFrameData = Record<string, {
81
+ readonly name: string;
82
+ readonly frames: KeyframeFrameMap;
83
+ }>;
84
+ export interface VocabularyKeyframesEntry {
85
+ readonly name: string;
86
+ readonly frames: KeyframesFrameData;
87
+ }
88
+ export interface VocabularyGlobalStyleEntry {
89
+ readonly name: string;
90
+ readonly styles: GlobalStyleMap;
91
+ readonly fontFaces?: readonly FontFace[];
92
+ }
93
+ export interface VocabularyCollisionEntry {
94
+ /** Stable machine code — the record, not the console, is the witness
95
+ * channel (the loader's evaluation host shims `console` to a no-op). */
96
+ readonly code: 'animus.vocabulary.collision';
97
+ readonly name: string;
98
+ readonly winner: string;
99
+ readonly loser: string;
100
+ }
101
+ /**
102
+ * Names a sealed source's registered vocabulary that `from()` / `includes:`
103
+ * did not deliver — those verbs merge no registries; `.extend()` does.
104
+ */
105
+ export interface VocabularyLegacyVerbEntry {
106
+ readonly code: 'animus.vocabulary.legacy-verb';
107
+ readonly verb: 'from' | 'includes';
108
+ /** Positional label (`includes source #1`) — a source has no knowable
109
+ * export name at this seam. */
110
+ readonly source: string;
111
+ readonly names: readonly string[];
112
+ }
113
+ /**
114
+ * The registration record a sealed system carries, in declaration order.
115
+ * The loader reads registered collections exclusively from here.
116
+ */
117
+ export interface VocabularyRecord {
118
+ readonly version: 1;
119
+ readonly keyframes: readonly VocabularyKeyframesEntry[];
120
+ readonly globalStyles: readonly VocabularyGlobalStyleEntry[];
121
+ readonly collisions: readonly VocabularyCollisionEntry[];
122
+ readonly legacyVerbs: readonly VocabularyLegacyVerbEntry[];
123
+ }
124
+ /** ONE name-space across both kinds: a global-style block and a keyframes
125
+ * collection cannot share a registered name. */
126
+ type VocabularyEntryState = {
127
+ kind: 'keyframes';
128
+ name: string;
129
+ frames: KeyframesFrameData;
130
+ origin: string;
131
+ } | {
132
+ kind: 'globalStyles';
133
+ name: string;
134
+ styles: GlobalStyleMap;
135
+ fontFaces?: readonly FontFace[];
136
+ origin: string;
137
+ };
138
+ declare const VOCABULARY_COLLISION_BRAND: unique symbol;
139
+ /**
140
+ * Impossible-to-satisfy marker so a colliding registration site reports the
141
+ * offending vocabulary name instead of a bare structural mismatch.
142
+ */
143
+ export interface VocabularyNameCollision<Name extends string> {
144
+ readonly [VOCABULARY_COLLISION_BRAND]: `Vocabulary name "${Name}" is already registered on this system`;
145
+ }
146
+ declare const VOCABULARY_INDEX_SIGNATURE: unique symbol;
147
+ /**
148
+ * Rejects index-signature maps: they bypass the collision mapping
149
+ * (`Extract<string, Vocab>` is `never`) and widen the axis to `string`.
150
+ */
151
+ export interface VocabularyIndexSignatureRejected {
152
+ readonly [VOCABULARY_INDEX_SIGNATURE]: 'vocabulary registration requires literal keys — an index-signature map cannot prove its names';
153
+ }
154
+ type LiteralKeyMap<M> = string extends keyof M ? VocabularyIndexSignatureRejected : unknown;
155
+ declare const VOCABULARY_BRAND: unique symbol;
156
+ /**
157
+ * What `seal()` returns. The registered names ride as phantom type state so
158
+ * `.extend()` can make a collision a compile error in a consumer's chain.
159
+ */
160
+ export type SealedSystemInstance<PropReg extends Record<string, Prop>, GroupReg extends Record<string, (keyof PropReg)[]>, Conds extends string = never, Sels extends string = never, Vocab extends string = never> = SystemInstance<PropReg, GroupReg, Conds, Sels> & {
161
+ getVocabularyRecord(): VocabularyRecord;
162
+ readonly [VOCABULARY_BRAND]?: Vocab;
163
+ };
164
+ export type VocabularyOf<S> = S extends {
165
+ readonly [VOCABULARY_BRAND]?: infer V;
166
+ } ? Extract<V, string> : never;
167
+ /**
168
+ * The `build()` return. Registration is linear — chain the returned bundle;
169
+ * one `seal()` per bundle, and later registering or re-sealing throws.
170
+ */
171
+ export interface SystemBundle<PropReg extends Record<string, Prop>, GroupReg extends Record<string, (keyof PropReg)[]>, Conds extends string = never, Sels extends string = never, Vocab extends string = never> {
172
+ system: SystemInstance<PropReg, GroupReg, Conds, Sels>;
173
+ createGlobalStyles: GlobalStylesFactory<PropReg>;
174
+ createKeyframes: CreateKeyframesFactory<PropReg>;
175
+ /**
176
+ * The registration key must equal the collection's module-scope export
177
+ * name — references resolve by export name. Registration is linear.
178
+ */
179
+ registerKeyframes<M extends Record<string, RegisterableKeyframes>>(map: M & LiteralKeyMap<M> & {
180
+ [K in Extract<keyof M, Vocab>]: VocabularyNameCollision<K & string>;
181
+ }): SystemBundle<PropReg, GroupReg, Conds, Sels, Vocab | (keyof M & string)>;
182
+ /**
183
+ * Keys equal the block's module-scope export name. Blocks and keyframes
184
+ * collections share ONE vocabulary name-space.
185
+ */
186
+ registerGlobalStyles<M extends Record<string, RegisterableGlobalStyles>>(map: M & LiteralKeyMap<M> & {
187
+ [K in Extract<keyof M, Vocab>]: VocabularyNameCollision<K & string>;
188
+ }): SystemBundle<PropReg, GroupReg, Conds, Sels, Vocab | (keyof M & string)>;
189
+ seal(): SealedSystemInstance<PropReg, GroupReg, Conds, Sels, Vocab>;
190
+ }
191
+ /**
192
+ * Publishable bundle type whose vocabulary axis is read off the sealed
193
+ * system; a hand-written `LibraryBundle<'…'>` axis is unchecked.
194
+ */
195
+ export type LibraryBundleFor<S> = LibraryBundle<VocabularyOf<S>>;
196
+ /**
197
+ * One export for both builders: `createSystem().extend()` takes the system
198
+ * half, `createTheme().extend()` the theme half (`tokens` is accepted too).
199
+ */
200
+ export interface LibraryBundle<Vocab extends string = never> {
88
201
  system: IncludableSystem;
89
202
  theme?: unknown;
90
203
  tokens?: unknown;
204
+ /** Phantom vocabulary axis — never present at runtime. */
205
+ readonly __vocabulary?: Vocab;
91
206
  }
92
207
  /**
93
- * The one runtime discriminator for a library bundle: `system.toConfig`
94
- * being callable. A built system instance also has a `.system()` CHAIN
95
- * METHOD, so presence of a `system` key alone cannot discriminate the two
96
- * shapes. Both builders' `from()` use this guard; the QuickJS capture
97
- * script in the Rust system-loader mirrors it by necessity (it cannot
98
- * import TS) and points back here.
208
+ * A built system also carries a `.system()` chain method, so only
209
+ * `system.toConfig` being callable discriminates a bundle from an instance.
210
+ * The QuickJS capture script in the Rust system-loader reimplements the same
211
+ * discriminator — it cannot import this file, so change both together.
99
212
  */
100
213
  export declare function isLibraryBundle(value: unknown): value is LibraryBundle;
101
214
  export interface CreateSystemConfig {
102
215
  /**
103
- * @deprecated Use `createSystem().extend(source)` — the single extension
104
- * verb on both builders, which actually merges the source's registries.
105
- * The alias keeps its frozen pre-existing semantics (discovery membership
106
- * via the same source list, NO registry merge, no type-surface admission)
107
- * for at least one minor release after `extend()` ships.
216
+ * @deprecated Use `createSystem().extend(source)`, which merges the
217
+ * source's registries. `includes` adds discovery membership only.
108
218
  */
109
219
  includes?: readonly IncludableSystem[];
110
220
  }
111
221
  declare const STAGE_BRAND: unique symbol;
112
222
  /**
113
- * Builder type-state for the inherit-first rule: `extend()` (and the
114
- * deprecated `from()`) is only callable while the builder is in the
115
- * `'inherit'` stage; every extension call (`addGroup`, `addProps`,
116
- * `addSelectors`, `addConditions`) advances to `'extend'`, making "inherit
117
- * first, then extend" a compile error rather than a lint. Phantom — never
118
- * present at runtime.
223
+ * Phantom type-state: `extend()` / `from()` are callable only in
224
+ * `'inherit'`, and every `add*` call advances the builder to `'extend'`.
119
225
  */
120
226
  export type SystemBuilderStage = 'inherit' | 'extend';
121
- export declare class SystemBuilder<PropReg extends Record<string, Prop> = {}, GroupReg extends Record<string, (keyof PropReg)[]> = {}, Conds extends string = never, Sels extends string = never, Stage extends SystemBuilderStage = 'inherit'> {
227
+ export declare class SystemBuilder<PropReg extends Record<string, Prop> = {}, GroupReg extends Record<string, (keyof PropReg)[]> = {}, Conds extends string = never, Sels extends string = never, Stage extends SystemBuilderStage = 'inherit', Vocab extends string = never> {
122
228
  #private;
123
229
  readonly [STAGE_BRAND]?: Stage;
124
- constructor(propRegistry?: PropReg, groupRegistry?: GroupReg, selectorRegistry?: SelectorAliasMap, includesRegistry?: readonly IncludableSystem[], conditionRegistry?: ConditionAliasMap, extendProvenance?: ReadonlyMap<string, number>, extendCount?: number);
230
+ constructor(propRegistry?: PropReg, groupRegistry?: GroupReg, selectorRegistry?: SelectorAliasMap, includesRegistry?: readonly IncludableSystem[], conditionRegistry?: ConditionAliasMap, extendProvenance?: ReadonlyMap<string, number>, extendCount?: number, vocabularyRegistry?: readonly VocabularyEntryState[], vocabularyCollisions?: readonly VocabularyCollisionEntry[], legacyVerbWitnesses?: readonly VocabularyLegacyVerbEntry[]);
125
231
  /**
126
- * Declare inheritance from a consumed library: the source's TYPE surface is
127
- * admitted (prop/component types for compose/extend interop) and the source
128
- * joins extraction discovery membership. NO registry merge — consumer
129
- * configuration remains the singular authority, so props, groups,
130
- * selectors, and conditions the source registered do not enter this
131
- * builder's runtime registries. Chainable and repeatable, but only before
132
- * extension calls ("inherit first, then extend" — enforced by the phantom
133
- * builder stage). Accepts a built system instance or a library bundle
134
- * (`{ system, tokens }`), taking the system half and ignoring the rest.
135
- *
136
- * @deprecated Use `extend(source)` — the single extension verb on both
137
- * builders, whose type admission is backed by a real registry merge.
138
- * `from()` keeps these frozen semantics (type admission + discovery
139
- * membership, no merge) for at least one minor release.
232
+ * @deprecated Use `extend(source)`, which merges the source's registries.
233
+ * `from()` admits types and discovery membership only — no merge.
140
234
  */
141
- from<SrcProps extends Record<string, Prop>, SrcGroups extends Record<string, (keyof SrcProps)[]>, SrcConds extends string = never, SrcSels extends string = never>(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit'>, source: SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels> | {
235
+ from<SrcProps extends Record<string, Prop>, SrcGroups extends Record<string, (keyof SrcProps)[]>, SrcConds extends string = never, SrcSels extends string = never>(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit', Vocab>, source: SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels> | {
142
236
  system: SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels>;
143
237
  theme?: unknown;
144
238
  tokens?: unknown;
145
- }): SystemBuilder<PropReg & SrcProps, GroupReg & SrcGroups, Conds | SrcConds, Sels | SrcSels, 'inherit'>;
239
+ }): SystemBuilder<PropReg & SrcProps, GroupReg & SrcGroups, Conds | SrcConds, Sels | SrcSels, 'inherit', Vocab>;
146
240
  /**
147
- * A value annotated as the exported {@link LibraryBundle} interface has
148
- * already erased its system half's generics (`system: IncludableSystem`),
149
- * so there is no type surface to admit — discovery and runtime semantics
150
- * are identical, and the builder's own type state passes through unchanged.
151
- *
152
- * @deprecated Use `extend(source)` — the single extension verb on both
153
- * builders, whose type admission is backed by a real registry merge.
154
- * `from()` keeps these frozen semantics (type admission + discovery
155
- * membership, no merge) for at least one minor release.
241
+ * @deprecated Use `extend(source)`. A `LibraryBundle` annotation has
242
+ * already erased the system half's generics — no type surface to admit.
156
243
  */
157
- from(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit'>, source: LibraryBundle): SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit'>;
244
+ from(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit', Vocab>, source: LibraryBundle<string>): SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit', Vocab>;
158
245
  /**
159
- * Extend this system from a consumed library: the source's prop, group,
160
- * selector, and condition registries MERGE into the builder (design D1), so
161
- * the built system's type surface, `toConfig()` output, and extraction
162
- * reachability describe the same configuration. Identical definitions
163
- * coalesce; divergent definitions fail loud naming the entry and both
164
- * origins (design D3), including a post-extend attempt to redefine an
165
- * inherited prop. Local calls may add new entries and may replace inherited
166
- * group membership, selectors, or conditions; prop definitions never rebind
167
- * silently. Chainable and repeatable, but only before extension calls ("inherit first, then
168
- * extend" — enforced by the phantom builder stage). Accepts a built system
169
- * instance or a library bundle (`{ system, theme }`), taking the system
170
- * half and ignoring the rest. The merge consumes the source's registry
171
- * snapshot captured at its `build()` (design D7), never a serialized
172
- * round-trip.
246
+ * Merges the source's prop, group, selector, and condition registries;
247
+ * identical entries coalesce, divergent ones throw naming both origins.
173
248
  */
174
- extend<SrcProps extends Record<string, Prop>, SrcGroups extends Record<string, (keyof SrcProps)[]>, SrcConds extends string = never, SrcSels extends string = never>(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit'>, source: SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels> | {
175
- system: SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels>;
249
+ extend<SrcProps extends Record<string, Prop>, SrcGroups extends Record<string, (keyof SrcProps)[]>, SrcConds extends string = never, SrcSels extends string = never, SrcVocab extends string = never>(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit', Vocab>, source: (SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels> & {
250
+ readonly [VOCABULARY_BRAND]?: SrcVocab;
251
+ }) | {
252
+ system: SystemInstance<SrcProps, SrcGroups, SrcConds, SrcSels> & {
253
+ readonly [VOCABULARY_BRAND]?: SrcVocab;
254
+ };
176
255
  theme?: unknown;
177
256
  tokens?: unknown;
178
- }): SystemBuilder<PropReg & SrcProps, GroupReg & SrcGroups, Conds | SrcConds, Sels | SrcSels, 'inherit'>;
257
+ }): SystemBuilder<PropReg & SrcProps, GroupReg & SrcGroups, Conds | SrcConds, Sels | SrcSels, 'inherit', Vocab | SrcVocab>;
179
258
  /**
180
- * A value annotated as the exported {@link LibraryBundle} interface has
181
- * already erased its system half's generics (`system: IncludableSystem`),
182
- * so no source types are admitted — the runtime merge is identical, and
183
- * the builder's own type state passes through unchanged.
259
+ * A `LibraryBundle` annotation has erased the system half's generics: the
260
+ * runtime merge is identical, but no source types are admitted.
184
261
  */
185
- extend(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit'>, source: LibraryBundle): SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit'>;
262
+ extend<SrcVocab extends string = never>(this: SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit', Vocab>, source: LibraryBundle<SrcVocab>): SystemBuilder<PropReg, GroupReg, Conds, Sels, 'inherit', Vocab | SrcVocab>;
186
263
  /**
187
- * Register custom selector aliases (`_hoverChild`, …) → `&`-relative selector
188
- * strings. Overriding a built-in SELECTOR alias is legal; a name owned by the
189
- * CONDITION registry (built-in or registered earlier in this chain) maps to
190
- * the branded `ReservedByConditionRegistry` instead of its selector string —
191
- * the compile-time complement of the cross-registry throw below. The clash is
192
- * checked in VALUE position so `S` stays a naked inference site; subtracting
193
- * the reserved names from the KEY position is impossible — `Exclude` is a
194
- * silent no-op against a template-literal pattern. `NarrowedAliases` keeps a
195
- * widened `Conds` from swallowing the whole `_` namespace.
196
- *
197
- * It wraps the ACCUMULATION too: a widened registration contributes nothing
198
- * to `Sels` rather than widening it, so the pattern can never reach the
199
- * published `RegistryBrand` — see `addConditions` for the full argument.
264
+ * Registers `_` aliases → `&`-relative selectors. The cross-registry clash
265
+ * is checked in VALUE position: `Exclude` on a `_${string}` key is a no-op.
200
266
  */
201
267
  addSelectors<S extends Record<`_${string}`, string>>(selectors: S & {
202
268
  [K in keyof S]: K extends BuiltInConditionAlias | NarrowedAliases<Conds> ? ReservedByConditionRegistry<K & string> : S[K];
203
- }): SystemBuilder<PropReg, GroupReg, Conds, Sels | NarrowedAliases<Extract<keyof S, string>>, 'extend'>;
269
+ }): SystemBuilder<PropReg, GroupReg, Conds, Sels | NarrowedAliases<Extract<keyof S, string>>, 'extend', Vocab>;
204
270
  /**
205
- * Register condition aliases (`_motionReduce`, `_cardSm`, …) → at-rule
206
- * condition strings (`@media …` / `@container …` / `@supports …`).
207
- * Recognized as block keys in style objects; user aliases override built-ins
208
- * of the same name (design D3). Keys are constrained to `_`-prefixed aliases
209
- * and values to `@`-prefixed at-rule strings — a value that does not begin
210
- * with an at-rule name is a compile-time type error (design D9; the runtime
211
- * `inferConditionKind` throw is defense-in-depth). The registered keys are
212
- * accumulated into the phantom `Conds` union and surfaced on `build()`.
213
- *
214
- * A key owned by the SELECTOR registry (built-in or registered earlier in
215
- * this chain) maps to the branded `ReservedBySelectorRegistry` — see
216
- * `addSelectors` for why the clash is checked in value position. Overriding a
217
- * built-in CONDITION alias stays legal (design D3); only the OPPOSITE
218
- * registry is subtracted.
219
- *
220
- * `NarrowedAliases` wraps the ACCUMULATION, not just the gate: a widened
221
- * registration (`Record<`_${string}`, …>`) contributes nothing to `Conds`.
222
- * Accumulating the pattern instead would carry it out through `build()`'s
223
- * `RegistryBrand`, and a consumer publishing `ConditionsOf` into the
224
- * augmentable `Conditions` interface would then have every `_` key type as
225
- * registered — `UnknownConditionAlias` would never fire again, anywhere in
226
- * that project. The gate keeps its own `NarrowedAliases` regardless:
227
- * `extend()`-sourced unions can still arrive widened from a system built
228
- * before this narrowing.
271
+ * Registers `_` aliases → at-rule strings; user aliases override built-ins
272
+ * of the same name. A selector-owned key maps to the branded rejection.
229
273
  */
230
274
  addConditions<C extends Record<`_${string}`, AtRuleValue>>(conditions: C & {
231
275
  [K in keyof C]: K extends BuiltInSelectorAlias | NarrowedAliases<Sels> ? ReservedBySelectorRegistry<K & string> : C[K];
232
- }): SystemBuilder<PropReg, GroupReg, Conds | NarrowedAliases<Extract<keyof C, string>>, Sels, 'extend'>;
233
- addGroup<Name extends string, Conf extends Record<string, Prop>>(name: Name extends keyof PropReg ? never : Name, config: Conf): SystemBuilder<PropReg & Conf, GroupReg & Record<Name, (keyof Conf)[]>, Conds, Sels, 'extend'>;
234
- addProps<Conf extends Record<string, Prop> & Partial<Record<Extract<keyof GroupReg, string>, never>>>(config: Conf): SystemBuilder<PropReg & Conf, GroupReg, Conds, Sels, 'extend'>;
235
- build(): {
236
- system: SystemInstance<PropReg, GroupReg, Conds, Sels>;
237
- createGlobalStyles: GlobalStylesFactory<PropReg>;
238
- createKeyframes: CreateKeyframesFactory<PropReg>;
239
- };
276
+ }): SystemBuilder<PropReg, GroupReg, Conds | NarrowedAliases<Extract<keyof C, string>>, Sels, 'extend', Vocab>;
277
+ addGroup<Name extends string, Conf extends Record<string, Prop>>(name: Name extends keyof PropReg ? never : Name, config: Conf): SystemBuilder<PropReg & Conf, GroupReg & Record<Name, (keyof Conf)[]>, Conds, Sels, 'extend', Vocab>;
278
+ addProps<Conf extends Record<string, Prop> & Partial<Record<Extract<keyof GroupReg, string>, never>>>(config: Conf): SystemBuilder<PropReg & Conf, GroupReg, Conds, Sels, 'extend', Vocab>;
279
+ build(): SystemBundle<PropReg, GroupReg, Conds, Sels, Vocab>;
240
280
  }
241
281
  export type SystemInstance<PropReg extends Record<string, Prop>, GroupReg extends Record<string, (keyof PropReg)[]>, Conds extends string = never, Sels extends string = never> = Animus<PropReg, GroupReg> & {
242
282
  toConfig(): SerializedConfig;
243
283
  /**
244
- * Frozen registry state captured at `build()` (design D7) — what
245
- * `extend()` merges from. Always present on instances built by this
246
- * version; optional in the type so systems built by an older
247
- * @animus-ui/system stay structurally acceptable to `from()` during the
248
- * deprecation window.
284
+ * Frozen registry state captured at `build()` — what `extend()` merges
285
+ * from. Optional only for systems built by an older @animus-ui/system.
249
286
  */
250
287
  getRegistrySnapshot?(): RegistrySnapshot;
251
288
  } & RegistryBrand<Conds, Sels>;
@@ -254,20 +291,12 @@ export interface SerializedConfig {
254
291
  groupRegistry: string;
255
292
  transforms: Record<string, NamedTransform>;
256
293
  /**
257
- * `{ transformName: sourceText }` for every registered transform that
258
- * carries a captured `transformSource`. This is the ONLY channel by which
259
- * transforms shipped inside a package (rather than declared via a
260
- * `createTransform()` call the extractor can parse out of a project file)
261
- * reach the build-time evaluator.
294
+ * `{ transformName: sourceText }` — the only channel by which transforms
295
+ * shipped inside a package reach the build-time evaluator.
262
296
  */
263
297
  transformSources: string;
264
298
  selectorAliases: string;
265
- /**
266
- * Condition alias map JSON (inc 03 — NEW field): `alias → { value, order,
267
- * kind }`. `"{}"` when the system registers no conditions (built-ins are
268
- * empty this increment). Distinct from `selectorAliases`, which stays
269
- * byte-for-byte unchanged.
270
- */
299
+ /** Condition alias map JSON: `alias → { value, order, kind }`. */
271
300
  conditionAliases: string;
272
301
  }
273
302
  export declare function createSystem(config?: CreateSystemConfig): SystemBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"SystemBuilder.d.ts","sourceRoot":"","sources":["../src/SystemBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SystemBuilder.d.ts","sourceRoot":"","sources":["../src/SystemBuilder.ts"],"names":[],"mappings":"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"}
@@ -1,75 +1,7 @@
1
- /**
2
- * Appearance record write path — the CLIENT half of the contract the generated
3
- * bootstrap reads (openspec: color-mode-bootstrap, "Appearance record
4
- * contract").
5
- *
6
- * This module is runtime application code: it ships in client bundles and owns
7
- * only the record WRITE path. It deliberately imports nothing from
8
- * `@animus-ui/system/bootstrap` — that subpath is build tooling, reaches
9
- * `node:crypto`, and must never enter an application bundle — so the two
10
- * modules re-state the key and shape they agree on, and the round-trip tests
11
- * pin the agreement (a record written here is restored by the generated
12
- * snippet).
13
- *
14
- * Record: `animus:appearance` → `{"v":1,"mode":…,"theme":…}`.
15
- *
16
- * Two axes share one record. A writer that changes ONE axis reads, modifies
17
- * and writes back, so fields it does not own (`theme`, plus anything a future
18
- * version adds) survive untouched.
19
- */
20
- /**
21
- * Mode value meaning "follow the OS". It is never a declared mode and never
22
- * reaches `data-color-mode` — the OS is followed by the attribute's ABSENCE,
23
- * which the generated bootstrap restores when it reads this value.
24
- */
25
1
  export declare const SYSTEM_MODE = "system";
26
2
  export interface AppearanceStorageOptions {
27
- /**
28
- * Overrides the record key. MUST match the `storageKey` the bootstrap
29
- * artifact was generated with, or the snippet restores from a key this
30
- * module never writes. Defaults to `animus:appearance`.
31
- */
32
3
  storageKey?: string;
33
4
  }
34
- /**
35
- * Persists the mode axis, preserving every field this call does not own
36
- * (`v`, `theme`, and any additional keys already in the record).
37
- *
38
- * Pass {@link SYSTEM_MODE} to persist "follow the OS" — the generated
39
- * bootstrap restores it as attribute absence. Applying the mode to the
40
- * document (setting or removing `data-color-mode`) stays the caller's job:
41
- * this module is storage-only and never touches the DOM.
42
- *
43
- * REFUSAL RULE: when the stored record carries a version this code does not
44
- * understand, NOTHING is written. Downgrading it to a v1 shape would drop
45
- * whatever fields the newer writer keeps there, and this axis is not worth
46
- * that. A caller that has already updated the attribute keeps the user's
47
- * choice for the session — only its persistence is skipped.
48
- *
49
- * Storage failures are likewise swallowed: persistence is a convenience, and
50
- * the attribute write that accompanies it has already taken effect.
51
- */
52
5
  export declare function persistColorMode(mode: string, options?: AppearanceStorageOptions): void;
53
- /**
54
- * One-shot migration of an application's OWN historical mode key into the
55
- * record.
56
- *
57
- * The generated bootstrap only knows the record and the contract's `color-mode`
58
- * key — an app that persisted under its own key before adopting the record
59
- * would silently drop every returning visitor's mode without this. Run it
60
- * post-paint from the app entry: the visit on which it migrates still paints
61
- * in the OS-resolved mode before correcting itself — one accepted flash, once
62
- * — and every later load restores pre-paint through the bootstrap.
63
- *
64
- * It writes only when there is nothing to lose (no record) and something worth
65
- * keeping (a value in `declaredModes`), then DELETES the old key so the
66
- * migration cannot run twice or resurrect a stale value. Deleting is
67
- * legitimate precisely because the key is the application's own; the
68
- * contract's `color-mode` key may belong to another app on this origin and is
69
- * refused, as is the record key itself.
70
- *
71
- * @returns the migrated mode name, so the caller can apply it to the document
72
- * for this one visit, or `null` when nothing was migrated.
73
- */
74
6
  export declare function migrateLegacyModeKey(legacyKey: string, declaredModes: readonly string[], options?: AppearanceStorageOptions): string | null;
75
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appearance/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgBH;;;;GAIG;AACH,eAAO,MAAM,WAAW,WAAW,CAAC;AASpC,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkFD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,wBAAwB,GACjC,IAAI,CAWN;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,GAAG,IAAI,CAmDf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/appearance/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,WAAW,WAAW,CAAC;AAQpC,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkDD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,wBAAwB,GACjC,IAAI,CASN;AAED,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,GAAG,IAAI,CA6Cf"}