/** * Assets */ import * as Icons from "../assets/icons/final"; export declare type IconName = keyof typeof Icons | "empty" | "null"; export interface BaseAsset { category: "asset"; id: string; name: string; } export interface IconAsset extends BaseAsset { type: "icon"; value: IconName; } export interface FontAsset extends BaseAsset { type: "font"; name: string; } export interface ImageAsset extends BaseAsset { type: "image"; value: string; } export declare type Asset = IconAsset | FontAsset | ImageAsset; /** * Tokens */ interface BaseToken { category: "token"; id: string; name: string; } interface BaseTokenInstance { category: "token-instance"; tokenId: string; } export interface ColorToken extends BaseToken { type: "color"; value: { r: number; g: number; b: number; a: number; }; } export interface ColorTokenInstance extends BaseTokenInstance { type: "color"; } export declare type FontWeightType = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900; export interface FontToken extends BaseToken { type: "font"; value: { fontFamilyId: string; fontSize: number; lineHeight: number; fontWeight: FontWeightType; }; } export interface FontStyle { fontFamily: string; fontSize: number; lineHeight: number; fontWeight: FontWeightType; } export interface FontTokenInstance extends BaseTokenInstance { type: "font"; } export interface BorderToken extends BaseToken { type: "border"; value: { borderStyle: "solid"; borderColor: ColorTokenInstance; borderSize: number; }; } export interface BorderTokenInstance extends BaseTokenInstance { type: "border"; } export declare type Token = FontToken | ColorToken | BorderToken; export declare type TokenInstance = FontTokenInstance | ColorTokenInstance | BorderTokenInstance; /** * Styles */ interface SpacingAbsolute { type: "absolute"; value: number; } interface SpacingFill { type: "fill"; } export declare type SpacingData = SpacingAbsolute | SpacingFill; export interface LayoutData { direction: "horizontal" | "vertical"; spacing: SpacingData; } export declare type AlignmentData = "start" | "center" | "end"; export declare type AxisSizeData = "hug" | "fill"; export interface SizeData { mainAxis: AxisSizeData; crossAxis: AxisSizeData; } /** * Primitives */ interface BasePrimitive { className?: string; category: "primitive"; id: string; name: string; } export interface IconPrimitive extends BasePrimitive { type: "icon"; icon: IconValueOrPropDefinitionInstance; } export interface StackPrimitive extends BasePrimitive { type: "stack"; size: SizeData; layout: LayoutData; alignment: AlignmentData; childrenIds: string[]; } export interface SlotPrimitive extends BasePrimitive { type: "slot"; size: SizeData; } export interface TextPrimitive extends BasePrimitive { type: "text"; text: TextValueOrPropDefinitionInstance; size: SizeData; fontStyle: FontTokenInstance; } export interface ImagePrimitive extends BasePrimitive { type: "image"; src: ImageValueOrPropDefinitionInstance; size: SizeData; } export declare type PrimitiveData = IconPrimitive | StackPrimitive | SlotPrimitive | TextPrimitive | ImagePrimitive; /** * Custom Component Definitions */ export interface CustomComponentDefinition { category: "custom-component-definition"; type: "custom-definition"; id: string; name: string; propDefinitions: PropDefinition[]; nodes: NodeMap; rootNodeId: string; } /** * Component Instances */ export declare type InstanceProps = { [propDefinitionId: string]: ValueOrPropDefinitionInstance; }; export declare type InstancePropsOnlyValues = { [propDefinitionId: string]: Value; }; export declare type NodeMap = { [nodeId: string]: NodeType; }; interface BaseInstanceData { className?: string; category: "component"; id: string; name: string; } export interface ButtonInstance extends BaseInstanceData { type: "button"; size: SizeData; layout: LayoutData; alignment: AlignmentData; childrenIds: string[]; } export interface InputInstance extends BaseInstanceData { type: "input"; placeholder: TextValueOrPropDefinitionInstance; size: SizeData; label: TextValueOrPropDefinitionInstance; labelLayout: "horizontal" | "vertical"; } export interface CheckboxInstance extends BaseInstanceData { type: "checkbox"; size: SizeData; label: TextValueOrPropDefinitionInstance; } export interface ToggleInstance extends BaseInstanceData { type: "toggle"; } export interface SelectInstance extends BaseInstanceData { type: "select"; placeholder: TextValueOrPropDefinitionInstance; size: SizeData; } export interface LinkInstance extends BaseInstanceData { type: "link"; href: TextValueOrPropDefinitionInstance; size: SizeData; layout: LayoutData; alignment: AlignmentData; childrenIds: string[]; } export interface CustomComponentInstance extends BaseInstanceData { type: "custom"; componentId: string; instanceProps: InstanceProps; size: SizeData; } export declare type TailwindId = "sign-in-form" | "vertical-navigation" | "form-layout" | "action-panel" | "navbar" | "page-heading"; export interface TempTailwindInstance extends BaseInstanceData { type: "temp-tailwind"; instanceProps: InstanceProps; tailwindId: TailwindId; } export declare type BuiltInInstance = ButtonInstance | InputInstance | CheckboxInstance | LinkInstance | ToggleInstance | SelectInstance; export declare type ComponentInstance = BuiltInInstance | CustomComponentInstance | TempTailwindInstance; /** * Nodes */ export declare type NodeType = PrimitiveData | ComponentInstance; export declare type NodeTypeWithChildren = Extract; export declare type NodeTypeWithoutChildren = Exclude; /** * Pages * * TODO: is this still needed? */ export declare type PageData = {}; /** * Prop Definitions – what prop is this component exposing? * Prop Definition Instance – which prop definition is this referring to? * Prop Value - what value is this prop definition? */ interface BasePropDefinition { category: "prop-definition"; id: string; name: string; } export interface IconPropDefinition extends BasePropDefinition { type: "icon"; defaultValue?: IconValue; } export interface TextPropDefinition extends BasePropDefinition { type: "text"; defaultValue?: TextValue; } export interface EnumPropDefinition extends BasePropDefinition { type: "enum"; enumValues: T[]; defaultValue?: EnumValue; } export interface BooleanPropDefinition extends BasePropDefinition { type: "boolean"; defaultValue?: BooleanValue; } export interface ImagePropDefinition extends BasePropDefinition { type: "image"; defaultValue: ImageValue; } export interface InnerComponentPropDefinition extends BasePropDefinition { type: "inner-component"; propDefinitions: PropDefinition[]; isChildren: boolean; isMultiple: boolean; defaultValue?: InnerComponentValue; } export declare type PropDefinition = IconPropDefinition | TextPropDefinition | EnumPropDefinition | BooleanPropDefinition | ImagePropDefinition | InnerComponentPropDefinition; interface BasePropDefinitionInstance { category: "prop-definition-instance"; id: string; propDefinitionId: string; } export interface IconPropDefinitionInstance extends BasePropDefinitionInstance { type: "icon"; } export interface TextPropDefinitionInstance extends BasePropDefinitionInstance { type: "text"; } export interface EnumPropDefinitionInstance extends BasePropDefinitionInstance { type: "enum"; } export interface BooleanPropDefinitionInstance extends BasePropDefinitionInstance { type: "boolean"; } export interface ImagePropDefinitionInstance extends BasePropDefinitionInstance { type: "image"; } export interface InnerComponentPropDefinitionInstance extends BasePropDefinitionInstance { type: "inner-component"; } export declare type PropDefinitionInstance = IconPropDefinitionInstance | TextPropDefinitionInstance | EnumPropDefinitionInstance | BooleanPropDefinitionInstance | InnerComponentPropDefinitionInstance | ImagePropDefinitionInstance; /** * Values */ interface BaseValue { category: "value"; } export interface IconValue extends BaseValue { type: "icon"; value: string; } export declare type IconValueOrPropDefinitionInstance = IconPropDefinitionInstance | IconValue; export interface TextValue extends BaseValue { type: "text"; value: string; } export declare type TextValueOrPropDefinitionInstance = TextPropDefinitionInstance | TextValue; export interface EnumValue extends BaseValue { type: "enum"; value: T; } export declare type EnumValueOrPropDefinitionInstance = EnumPropDefinitionInstance | EnumValue; export interface BooleanValue extends BaseValue { type: "boolean"; value: boolean; } export declare type BooleanValueOrPropDefinitionInstance = BooleanPropDefinitionInstance | BooleanValue; export interface ImageValue extends BaseValue { type: "image"; value: string; } export declare type ImageValueOrPropDefinitionInstance = ImagePropDefinitionInstance | ImageValue; export interface InnerComponentValue extends BaseValue { type: "inner-component"; value: InstancePropsOnlyValues[]; } export declare type InnerComponentValueOrPropDefinitionInstance = InnerComponentPropDefinitionInstance | InnerComponentValue; export declare type Value = IconValue | TextValue | BooleanValue | EnumValue | InnerComponentValue | ImageValue; export declare type ValueOrPropDefinitionInstance = IconValueOrPropDefinitionInstance | TextValueOrPropDefinitionInstance | BooleanValueOrPropDefinitionInstance | ImageValueOrPropDefinitionInstance | EnumValueOrPropDefinitionInstance | InnerComponentValueOrPropDefinitionInstance; declare type DiscriminateUnion = T extends Record ? T : never; declare type MapDiscriminatedUnion, K extends keyof T> = { [V in T[K]]: DiscriminateUnion; }; export declare type ValueOrPropDefinitionInstanceMap = MapDiscriminatedUnion; export {}; /** * TODO Variants */