website refactor
This commit is contained in:
29
apps/website/lib/contracts/display-objects/DisplayObject.ts
Normal file
29
apps/website/lib/contracts/display-objects/DisplayObject.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
/**
|
||||
* DisplayObject contract
|
||||
*
|
||||
* Deterministic, reusable, UI-only formatting/mapping logic.
|
||||
*
|
||||
* Based on DISPLAY_OBJECTS.md:
|
||||
* - Class-based
|
||||
* - Immutable
|
||||
* - Deterministic
|
||||
* - Side-effect free
|
||||
* - No Intl.* or toLocale*
|
||||
* - No business rules
|
||||
*/
|
||||
|
||||
export interface DisplayObject {
|
||||
/**
|
||||
* Format or map the display object
|
||||
*
|
||||
* @returns Primitive values only (strings, numbers, booleans)
|
||||
*/
|
||||
format(): unknown;
|
||||
|
||||
/**
|
||||
* Optional: Get multiple display variants
|
||||
*
|
||||
* Allows a single DisplayObject to expose multiple presentation formats
|
||||
*/
|
||||
variants?(): Record<string, unknown>;
|
||||
}
|
||||
Reference in New Issue
Block a user