@suluk/builder - v0.1.11
    Preparing search index...

    Type Alias ParamSpec

    ParamSpec:
        | {
            type: "enum";
            options: string[];
            default?: string;
            required?: boolean;
        }
        | { type: "text"; default?: string; required?: boolean }
        | { type: "number"; default?: number; required?: boolean }
        | { type: "boolean"; default?: boolean; required?: boolean }
        | {
            type: "list";
            options: string[];
            controls: ListControl[];
            default?: string[];
        }

    @suluk/builder — the tiered contract-narrowing DSL (components → blocks → sections → pages), bound to the Suluk cycle. The mechanism is ported from ~/apps/multivendorbuilder's DSL and rebuilt with the Suluk discipline (typed, tested, projected from live entities instead of hand-authored). The load-bearing idea is the contract: a document's params is EXACTLY and ONLY what the tier above may set — the narrowing is the safety surface, the same discipline as Suluk's per-viewer doc projection.

    The Suluk twist: a SECTION is a full-stack vertical slice (data → contract → docs → state → ui) and a PAGE composes sections — so buildApp emits the backend (routes + v4) AND the frontend (components + page TSX) from one spec. Each slice can also be packaged as a shadcn REGISTRY ITEM (toShadcnRegistry) bundling its frontend + backend files into one installable unit. CANDIDATE tooling — NOT official OAS.

    Type Declaration

    • { type: "enum"; options: string[]; default?: string; required?: boolean }
    • { type: "text"; default?: string; required?: boolean }
    • { type: "number"; default?: number; required?: boolean }
    • { type: "boolean"; default?: boolean; required?: boolean }
    • { type: "list"; options: string[]; controls: ListControl[]; default?: string[] }
      • type: "list"
      • options: string[]

        Catalog keys the consumer may pick from.

      • controls: ListControl[]

        Which manipulations the consumer is allowed (the narrowing on a list).

      • Optionaldefault?: string[]

        Default ordered selection.