interface forms { use text.{text-component}; enum image-type { url, path, } record form-image { %type: image-type, data: string, } record simple-form-button { text: text-component, image: option, } record simple-form { title: text-component, content: text-component, buttons: list, } record modal-form { title: text-component, content: text-component, button1: text-component, button2: text-component, } variant custom-form-element { label(text-component), toggle(tuple), slider(tuple), // text, min, max, step, default step-slider(tuple, u32>), // text, steps, default dropdown(tuple, u32>), // text, options, default input(tuple), // text, placeholder, default } record custom-form { title: text-component, elements: list, } variant form { simple(simple-form), modal(modal-form), custom(custom-form), } }