{"title":"JSON schema for Blockstudio extends","$schema":"http://json-schema.org/draft-04/schema#","type":"object","properties":{"$schema":{"type":"string"},"name":{"type":["string","array"],"description":"The name of the block to extend."},"blockstudio":{"type":["object","boolean"],"description":"Blockstudio specific settings.","properties":{"extend":{"type":"object","description":"The extend block definition.","properties":{"priority":{"type":"number","description":"In what spot the extension should be rendered in the sidebar."}}},"attributes":{"type":"array","description":"Custom attributes that will be applied to the block.","items":{"type":"object","required":["type"],"properties":{"id":{"type":"string","description":"A unique identifier for the field, which will be used get the value inside block templates. Must be unique within the current context."},"key":{"type":"string","description":"Another identifier that can be used to uniquely identify fields across different contexts. (inside repeaters etc.)"},"type":{"type":"string","anyOf":[{"enum":["attributes","block","checkbox","classes","code","color","date","datetime","files","gradient","group","html-tag","icon","link","message","number","radio","range","select","tabs","text","textarea","toggle","repeater","richtext","unit","wysiwyg"]},{"pattern":"^custom/.+$","description":"Custom field reference in format 'custom/{name}'."}]},"label":{"type":"string","description":"The label for the field."},"description":{"type":"string","description":"The description for the field. Will be displayed underneath the field."},"help":{"type":"string","description":"The help text for the field. Will be displayed in a tooltip next to the label."},"hidden":{"type":"boolean","description":"Whether to hide the field UI in the editor. This is handy when using the variations API."},"storage":{"type":"object","description":"Configure where the field value should be stored.","properties":{"type":{"type":["string","array"],"description":"Storage location(s). Can be a single type or array of types.","enum":["block","postMeta","option"]},"postMetaKey":{"type":"string","description":"Custom meta key for post meta storage. Defaults to {block_name}_{field_id}."},"optionKey":{"type":"string","description":"Custom option key for options storage. Defaults to {block_name}_{field_id}."}}},"switch":{"type":"boolean","description":"Display a toggle that can disable the field. Shows an eye icon in the field label. Defaults to false.","default":false},"idStructure":{"type":"string","description":"ID pattern for expanded custom fields. Use {id} as placeholder for the original field ID.","default":"{id}","example":"hero_{id}"},"overrides":{"type":"object","description":"Per-field property overrides for custom fields. Keys are original field IDs from the field definition.","additionalProperties":{"type":"object"}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}}},"anyOf":[{"example":"attributes","description":"Renders data attribute inputs.","properties":{"type":{"const":"attributes"},"default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"link":{"type":"boolean","description":"Enables link selection from dropdown."},"media":{"type":"boolean","description":"Enables media selection from dropdown."}}},{"description":"References another Blockstudio block, expanding its fields inline. In templates, the value returns the rendered block output.","properties":{"type":{"const":"block"},"block":{"type":"string","description":"The name of the block to reference (e.g., \"mytheme/card\")."},"returnFormat":{"type":"string","description":"How the value should be returned in templates.","enum":["rendered","data","both"],"default":"rendered"}}},{"example":"option-multiple","description":"Renders a set of checkbox inputs.","properties":{"type":{"const":"checkbox"},"default":{"type":["array","string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","string","number"],"description":"Fallback value that that will display when field value is empty."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}}},{"example":"single","description":"Renders a field to select CSS classes.","properties":{"type":{"const":"classes"},"default":{"type":["string"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["string"],"description":"Fallback value that that will display when field value is empty."},"tailwind":{"type":"boolean","description":"Whether to enable Tailwind classes for this input field."}}},{"example":"single","description":"Renders a code editor.","properties":{"type":{"const":"code"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"autoCompletion":{"type":"boolean","description":"Whether to enable autocompletion or not."},"foldGutter":{"type":"boolean","description":"Whether to show the fold gutter or not."},"height":{"type":"string","description":"The height of the editor."},"language":{"type":"string","description":"The language to use for syntax highlighting.","enum":["css","html","javascript","json","scss","twig"]},"lineNumbers":{"type":"boolean","description":"Whether to display line numbers or not."},"maxHeight":{"type":"string","description":"The maximum height of the editor."},"minHeight":{"type":"string","description":"The minimum height of the editor."},"popout":{"type":"boolean","description":"Whether to show a button that opens the editor in a popup window."}}},{"example":"option","description":"Renders a color palette and color picker.","properties":{"type":{"const":"color"},"options":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"slug":{"type":"string"}},"description":"Options to choose from."}},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["function","custom"]},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"}}},"clearable":{"type":"boolean","description":"Whether the palette should have a clearing button or not."},"disableCustomColors":{"type":"boolean","description":"Whether to allow custom color or not."}}},{"example":"single","description":"Renders a date picker.","properties":{"type":{"const":"date"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"startOfWeek":{"type":"number","description":"The day that the week should start on. 0 for Sunday, 1 for Monday, etc."}}},{"example":"single","description":"Renders a date and time picker.","properties":{"type":{"const":"datetime"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"is12Hour":{"type":"boolean","description":"Whether we use a 12-hour clock. With a 12-hour clock, an AM/PM widget is displayed and the time format is assumed to be MM-DD-YYYY (as opposed to the default format DD-MM-YYYY)."}}},{"example":"files","description":"Renders a button to the media library. Picked items can be reordered inline.","properties":{"type":{"const":"files"},"default":{"type":["array","object","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","object","number"],"description":"Fallback value that that will display when field value is empty."},"addToGallery":{"type":"boolean","description":"If true, the gallery media modal opens directly in the media library where the user can add additional images. If false the gallery media modal opens in the edit mode where the user can edit existing images, by reordering them, remove them, or change their attributes. Only applies if gallery === true."},"allowedTypes":{"type":["array","string"],"description":"Array with the types of the media to upload/select from the media library. Each type is a string that can contain the general mime type e.g: 'image', 'audio', 'text', or the complete mime type e.g: 'audio/mpeg', 'image/gif'. If allowedTypes is unset all mime types should be allowed."},"gallery":{"type":"boolean","description":"If true, the component will initiate all the states required to represent a gallery. By default, the media modal opens in the gallery edit frame, but that can be changed using the addToGalleryflag."},"max":{"type":"number","description":"Maximum amount of files that can be added."},"min":{"type":"number","description":"Minimum amount of files that can be added."},"multiple":{"type":"boolean","description":"Whether to allow multiple selections or not."},"size":{"type":"boolean","description":"Adds a media size dropdown to the field."},"textMediaButton":{"type":"string","description":"Media button text."},"title":{"type":"string","description":"Title displayed in the media modal."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["object","id","url"],"default":"object"},"returnSize":{"type":"string","description":"The media size to return when using the URL return format."}}},{"example":"option","description":"Renders a gradient palette and gradient picker","properties":{"type":{"const":"gradient"},"options":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"slug":{"type":"string"}},"description":"Options to choose from."}},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["function","custom"]},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"}}},"clearable":{"type":"boolean","description":"Whether the palette should have a clearing button or not."},"disableCustomGradients":{"type":"boolean","description":"Whether to allow custom color or not."}}},{"description":"Renders multiple fields in an (optionally) collapsible container.","properties":{"type":{"const":"group"},"title":{"type":"string","description":"Title text. It shows even when the component is closed."},"opened":{"type":"boolean","description":"When set to true, the component will remain open regardless of the initialOpen prop and the"},"initialOpen":{"type":"boolean","description":"Whether or not the panel will start open."},"scrollAfterOpen":{"type":"boolean","description":"Scrolls the content into view when visible."},"class":{"type":"string","description":"Custom CSS class that will be applied to the group."},"style":{"type":"object","description":"Custom CSS styles that will be applied to the group."},"attributes":{"type":"array","description":"Accepts all other field types besides another tabs.","items":{"type":"object","required":["type"],"properties":{"id":{"type":"string","description":"A unique identifier for the field, which will be used get the value inside block templates. Must be unique within the current context."},"key":{"type":"string","description":"Another identifier that can be used to uniquely identify fields across different contexts. (inside repeaters etc.)"},"type":{"type":"string","anyOf":[{"enum":["attributes","block","checkbox","classes","code","color","date","datetime","files","gradient","html-tag","icon","link","message","number","radio","range","select","tabs","text","textarea","toggle","repeater","richtext","unit","wysiwyg"]},{"pattern":"^custom/.+$","description":"Custom field reference in format 'custom/{name}'."}]},"label":{"type":"string","description":"The label for the field."},"description":{"type":"string","description":"The description for the field. Will be displayed underneath the field."},"help":{"type":"string","description":"The help text for the field. Will be displayed in a tooltip next to the label."},"hidden":{"type":"boolean","description":"Whether to hide the field UI in the editor. This is handy when using the variations API."},"storage":{"type":"object","description":"Configure where the field value should be stored.","properties":{"type":{"type":["string","array"],"description":"Storage location(s). Can be a single type or array of types.","enum":["block","postMeta","option"]},"postMetaKey":{"type":"string","description":"Custom meta key for post meta storage. Defaults to {block_name}_{field_id}."},"optionKey":{"type":"string","description":"Custom option key for options storage. Defaults to {block_name}_{field_id}."}}},"switch":{"type":"boolean","description":"Display a toggle that can disable the field. Shows an eye icon in the field label. Defaults to false.","default":false},"idStructure":{"type":"string","description":"ID pattern for expanded custom fields. Use {id} as placeholder for the original field ID.","default":"{id}","example":"hero_{id}"},"overrides":{"type":"object","description":"Per-field property overrides for custom fields. Keys are original field IDs from the field definition.","additionalProperties":{"type":"object"}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}}},"anyOf":[{"example":"attributes","description":"Renders data attribute inputs.","properties":{"type":{"const":"attributes"},"default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"link":{"type":"boolean","description":"Enables link selection from dropdown."},"media":{"type":"boolean","description":"Enables media selection from dropdown."}}},{"description":"References another Blockstudio block, expanding its fields inline. In templates, the value returns the rendered block output.","properties":{"type":{"const":"block"},"block":{"type":"string","description":"The name of the block to reference (e.g., \"mytheme/card\")."},"returnFormat":{"type":"string","description":"How the value should be returned in templates.","enum":["rendered","data","both"],"default":"rendered"}}},{"example":"option-multiple","description":"Renders a set of checkbox inputs.","properties":{"type":{"const":"checkbox"},"default":{"type":["array","string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","string","number"],"description":"Fallback value that that will display when field value is empty."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}}},{"example":"single","description":"Renders a field to select CSS classes.","properties":{"type":{"const":"classes"},"default":{"type":["string"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["string"],"description":"Fallback value that that will display when field value is empty."},"tailwind":{"type":"boolean","description":"Whether to enable Tailwind classes for this input field."}}},{"example":"single","description":"Renders a code editor.","properties":{"type":{"const":"code"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"autoCompletion":{"type":"boolean","description":"Whether to enable autocompletion or not."},"foldGutter":{"type":"boolean","description":"Whether to show the fold gutter or not."},"height":{"type":"string","description":"The height of the editor."},"language":{"type":"string","description":"The language to use for syntax highlighting.","enum":["css","html","javascript","json","scss","twig"]},"lineNumbers":{"type":"boolean","description":"Whether to display line numbers or not."},"maxHeight":{"type":"string","description":"The maximum height of the editor."},"minHeight":{"type":"string","description":"The minimum height of the editor."},"popout":{"type":"boolean","description":"Whether to show a button that opens the editor in a popup window."}}},{"example":"option","description":"Renders a color palette and color picker.","properties":{"type":{"const":"color"},"options":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"slug":{"type":"string"}},"description":"Options to choose from."}},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["function","custom"]},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"}}},"clearable":{"type":"boolean","description":"Whether the palette should have a clearing button or not."},"disableCustomColors":{"type":"boolean","description":"Whether to allow custom color or not."}}},{"example":"single","description":"Renders a date picker.","properties":{"type":{"const":"date"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"startOfWeek":{"type":"number","description":"The day that the week should start on. 0 for Sunday, 1 for Monday, etc."}}},{"example":"single","description":"Renders a date and time picker.","properties":{"type":{"const":"datetime"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"is12Hour":{"type":"boolean","description":"Whether we use a 12-hour clock. With a 12-hour clock, an AM/PM widget is displayed and the time format is assumed to be MM-DD-YYYY (as opposed to the default format DD-MM-YYYY)."}}},{"example":"files","description":"Renders a button to the media library. Picked items can be reordered inline.","properties":{"type":{"const":"files"},"default":{"type":["array","object","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","object","number"],"description":"Fallback value that that will display when field value is empty."},"addToGallery":{"type":"boolean","description":"If true, the gallery media modal opens directly in the media library where the user can add additional images. If false the gallery media modal opens in the edit mode where the user can edit existing images, by reordering them, remove them, or change their attributes. Only applies if gallery === true."},"allowedTypes":{"type":["array","string"],"description":"Array with the types of the media to upload/select from the media library. Each type is a string that can contain the general mime type e.g: 'image', 'audio', 'text', or the complete mime type e.g: 'audio/mpeg', 'image/gif'. If allowedTypes is unset all mime types should be allowed."},"gallery":{"type":"boolean","description":"If true, the component will initiate all the states required to represent a gallery. By default, the media modal opens in the gallery edit frame, but that can be changed using the addToGalleryflag."},"max":{"type":"number","description":"Maximum amount of files that can be added."},"min":{"type":"number","description":"Minimum amount of files that can be added."},"multiple":{"type":"boolean","description":"Whether to allow multiple selections or not."},"size":{"type":"boolean","description":"Adds a media size dropdown to the field."},"textMediaButton":{"type":"string","description":"Media button text."},"title":{"type":"string","description":"Title displayed in the media modal."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["object","id","url"],"default":"object"},"returnSize":{"type":"string","description":"The media size to return when using the URL return format."}}},{"example":"option","description":"Renders a gradient palette and gradient picker","properties":{"type":{"const":"gradient"},"options":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"slug":{"type":"string"}},"description":"Options to choose from."}},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["function","custom"]},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"}}},"clearable":{"type":"boolean","description":"Whether the palette should have a clearing button or not."},"disableCustomGradients":{"type":"boolean","description":"Whether to allow custom color or not."}}},{"description":"Renders an HTML tag selector. Useful for choosing heading levels or semantic elements.","properties":{"type":{"const":"html-tag"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"tags":{"type":["string","array"],"description":"Which tags to include. Use a preset string or an array of tag names.","enum":["heading","text","structural","all"]},"exclude":{"type":"array","items":{"type":"string"},"description":"Tags to exclude from the preset. Only applies when using a preset string for tags."}}},{"example":"icon","description":"Renders an SVG icon from an icon set.","properties":{"default":{"type":"object","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"object","description":"Fallback value that that will display when field value is empty."},"type":{"const":"icon"},"sets":{"type":["array","string"],"description":"Which icon set to include. Leave empty to include all."},"subSets":{"type":["array","string"],"description":"Which sub icon set to include. Leave empty to include all."},"returnFormat":{"type":"string","description":"The format to return the icon in.","enum":["object","element"]}}},{"example":"link","description":"Renders a link control to choose internal or external links.","properties":{"type":{"const":"link"},"default":{"type":"object","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"object","description":"Fallback value that that will display when field value is empty."},"hasRichPreviews":{"type":"boolean","description":"Whether rich previews should be shown when adding an URL."},"noDirectEntry":{"type":"boolean","description":"Whether to allow turning a URL-like search query directly into a link."},"noURLSuggestion":{"type":"boolean","description":"Whether to add a fallback suggestion which treats the search query as a URL."},"opensInNewTab":{"type":"boolean","description":"Adds a toggle control to the link modal."},"showSuggestions":{"type":"boolean","description":"Whether to present suggestions when typing the URL."},"textButton":{"type":"string","description":"Custom text that should be displayed inside the link button."},"withCreateSuggestion":{"type":"boolean","description":"Whether to allow creation of link value from suggestion."}}},{"description":"Renders a message with custom content.","properties":{"type":{"const":"message"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"value":{"type":"string","description":"The message to display. Block and attribute data is available in bracket syntax, e.g.: `{block.title}` or `{attributes.text}`"}}},{"example":"single","description":"Renders a number input.","properties":{"type":{"const":"number"},"default":{"type":"number","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"number","description":"Fallback value that that will display when field value is empty."},"dragDirection":{"type":"string","description":"Determines the drag axis to increment/decrement the value.","enum":["n","e","s","w"]},"dragThreshold":{"type":"number","description":"If isDragEnabled is true, this controls the amount of px to have been dragged before the value changes."},"hideHTMLArrows":{"type":"boolean","description":"If true, the default input HTML arrows will be hidden."},"isShiftStepEnabled":{"type":"boolean","description":"If true, enables mouse drag gesture to increment/decrement the number value. Holding SHIFT while dragging will increase the value by the shiftStep."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"required":{"type":"boolean","description":"If true enforces a valid number within the control’s min/max range. If false allows an empty string as a valid value."},"shiftStep":{"type":"number","description":"Amount to increment by when the SHIFT key is held down. This shift value is a multiplier to the step value. For example, if the step value is 5, and shiftStep is 10, each jump would increment/decrement by 50."},"step":{"type":"number","description":"Amount by which the value is changed when incrementing/decrementing. It is also a factor in validation as value must be a multiple of step (offset by min, if specified) to be valid. Accepts the special string value any that voids the validation constraint and causes stepping actions to increment/decrement by 1."}}},{"example":"option","description":"Renders a set of radio inputs.","properties":{"type":{"const":"radio"},"default":{"type":["string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["string","number"],"description":"Fallback value that that will display when field value is empty."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}}},{"example":"single","description":"Renders a range input to set a numerical value between two points.","properties":{"type":{"const":"range"},"default":{"type":"number","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"number","description":"Fallback value that that will display when field value is empty."},"allowReset":{"type":"boolean","description":"If this property is true, a button to reset the slider is rendered."},"initialPosition":{"type":"number","description":"The slider starting position, used when no value is passed. The initialPosition will be clamped between the provided min and max prop values."},"isShiftStepEnabled":{"type":"boolean","description":"If true, enables mouse drag gesture to increment/decrement the number value. Holding SHIFT while dragging will increase the value by the shiftStep."},"marks":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"number"}}},"description":"Renders a visual representation of step ticks. Custom mark indicators can be provided by an Array."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"railColor":{"type":"string","description":"CSS color string to customize the rail element’s background."},"resetFallbackValue":{"type":"number","description":"The value to revert to if the Reset button is clicked (enabled by allowReset)"},"separatorType":{"type":"string","description":"Define if separator line under/above control row should be disabled or full width. By default it is placed below excluding underline the control icon.","enum":["none","fullWidth","topFullWidth"]},"shiftStep":{"type":"number","description":"Amount to increment by when the SHIFT key is held down. This shift value is a multiplier to the step value. For example, if the step value is 5, and shiftStep is 10, each jump would increment/decrement by 50."},"showTooltip":{"type":"boolean","description":"Forcing the Tooltip UI to show or hide. This is overridden to false when step is set to the special string value any."},"step":{"type":"number","description":"Amount by which the value is changed when incrementing/decrementing. It is also a factor in validation as value must be a multiple of step (offset by min, if specified) to be valid. Accepts the special string value any that voids the validation constraint and causes stepping actions to increment/decrement by 1."},"trackColor":{"type":"string","description":"CSS color string to customize the track element’s background."},"withInputField":{"type":"boolean","description":"Determines if the input number field will render next to the RangeControl. This is overridden to false when step is set to the special string value any."}}},{"example":["option","option-multiple"],"description":"Renders a select input with support for single or multiple selections.","properties":{"type":{"const":"select"},"default":{"type":["array","string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","string","number"],"description":"Fallback value that that will display when field value is empty."},"multiple":{"type":"boolean","description":"If true, multiple options can be selected. \"stylisedUi\" will be automatically enabled."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"fetch":{"type":"boolean","description":"If true, search value will be used to search through data. Only works with \"query\" type."},"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}},"stylisedUi":{"type":"boolean","description":"Renders a stylised version of a select with the ability to search through items."},"allowNull":{"type":["boolean","string"],"description":"Allows the user to select an empty choice. If true, the label will be empty, otherwise the option will render the specified string."},"allowReset":{"type":"boolean","description":"If this property is true, a button to reset the select is rendered."}}},{"description":"Renders a tabbed interface for grouping fields.","properties":{"type":{"const":"tabs"},"tabs":{"type":"array","description":"The tabs to display.","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"The title of the tab."},"attributes":{"type":"array","description":"Custom attributes that will be applied to the block.","items":{"$ref":"#/definitions/Attribute"}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}},"blockEditor":{"type":"object","description":"Block specific options for rendering inside the Block Editor.","properties":{"disableLoading":{"type":"boolean","description":"Whether the block should should load inside the Block Editor or show a placeholder."}}},"editor":{"type":"object","description":"Block specific options for the editor.","properties":{"assets":{"type":"array","description":"List of WordPress script or style handles that should be added to the preview.","items":{"type":"string"}}}},"interactivity":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"enqueue":{"type":"boolean","description":"Enqueue the Interactivity API."}}}],"description":"Enable the WordPress Interactivity API for this block."},"icon":{"type":"string","description":"Custom SVG icon to be displayed inside the editor."},"innerBlocks":{"type":"string","description":"HTML content that will be rendered as the inner blocks."},"component":{"type":"boolean","description":"Whether this block is a component. Components go through the full Blockstudio pipeline but do not appear in the editor inserter. They can only be rendered via block tags or bs_render_block()."},"override":{"type":"boolean","description":"Whether this block should overwrite another block."},"refreshOn":{"type":"array","description":"When the block should refresh. This is useful when the block relies on external data like custom fields.","items":{"type":"string"}},"transforms":{"type":"object","description":"Custom block transforms.","properties":{"from":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["block","enter","prefix"]},"blocks":{"type":"array","items":{"type":"string"}},"regExp":{"type":"string"},"prefix":{"type":"string"}},"required":["type"],"additionalProperties":false}}},"required":["from"],"additionalProperties":false}}}}}},{"example":"single","description":"Renders a single line text input.","properties":{"type":{"const":"text"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."}}},{"example":"single","description":"Renders a textarea input.","properties":{"type":{"const":"textarea"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"rows":{"type":"number","description":"The number of rows the textarea should contain."}}},{"example":"toggle","description":"Renders a true/false toggle.","properties":{"type":{"const":"toggle"},"default":{"type":"boolean","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"boolean","description":"Fallback value that that will display when field value is empty."}}},{"description":"Renders a set of fields that can be repeated.","properties":{"type":{"const":"repeater"},"min":{"type":"number","description":"Minimum amount of rows."},"max":{"type":"number","description":"Maximum amount of rows."},"textButton":{"type":"string","description":"Text for the add button."},"textMinimized":{"type":["string","object"],"description":"Text that will be displayed when rows are minimized.","properties":{"id":{"type":"string","description":"ID of the attribute which should be used as the text."},"key":{"type":"string","description":"Sub-property to read when the field value is an object (e.g. \"title\" for link fields)."},"fallback":{"type":"string","description":"Fallback text if the attribute is not set."},"prefix":{"type":"string","description":"Prefix for the text."},"suffix":{"type":"string","description":"Suffix for the text."}}},"textRemove":{"type":["string","boolean"],"description":"Text to display in alert when removing repeater row."},"attributes":{"type":"array","description":"Accepts all other field types besides another tabs.","items":{"$ref":"#/definitions/Attribute"}}}},{"example":"single","description":"Attribute field for RichText fields.","properties":{"type":{"const":"richtext"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."}}},{"example":"single","description":"Renders a number input with a unit dropdown.","properties":{"type":{"const":"unit"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"disableUnits":{"type":"boolean","description":"If true, the unit select field is hidden."},"isPressEnterToChange":{"type":"boolean","description":"If true, the ENTER key press is required in order to trigger an onChange. If enabled, a change is also triggered when tabbing away."},"isResetValueOnUnitChange":{"type":"boolean","description":"If true, and the selected unit provides a default value, this value is set when changing units."},"isUnitSelectTabbable":{"type":"boolean","description":"Determines if the unit select field is tabbable."},"units":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"default":{"type":"number"},"label":{"type":"string"},"value":{"type":"string"}}}}}},{"example":"single","description":"Renders a WYSIWYG editor.","properties":{"type":{"const":"wysiwyg"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"toolbar":{"type":"object","description":"The toolbar configuration for the editor.","properties":{"tags":{"type":"object","description":"Which HTML tags are allowed.","properties":{"headings":{"type":"array","description":"Which HTML headings levels are allowed."}}},"formats":{"type":"object","description":"Which text formats are allowed.","properties":{"bold":{"type":"boolean","description":"Whether bold text format is allowed."},"italic":{"type":"boolean","description":"Whether italic text format is allowed."},"orderedList":{"type":"boolean","description":"Whether ordered list text format is allowed."},"strikethrough":{"type":"boolean","description":"Whether strikethrough text format is allowed."},"underline":{"type":"boolean","description":"Whether underline text format is allowed."},"unorderedList":{"type":"boolean","description":"Whether unordered list text format is allowed."},"textAlign":{"type":"object","description":"Which text alignment formats are allowed.","properties":{"alignments":{"type":"array","description":"Which text alignments are allowed.","items":{"type":"string","enum":["left","center","right","justify"]}}}}}}}}}},{"properties":{"type":{"pattern":"^custom/.+$","description":"References a reusable custom field definition."}},"required":["type"]}]}}}},{"description":"Renders an HTML tag selector. Useful for choosing heading levels or semantic elements.","properties":{"type":{"const":"html-tag"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"tags":{"type":["string","array"],"description":"Which tags to include. Use a preset string or an array of tag names.","enum":["heading","text","structural","all"]},"exclude":{"type":"array","items":{"type":"string"},"description":"Tags to exclude from the preset. Only applies when using a preset string for tags."}}},{"example":"icon","description":"Renders an SVG icon from an icon set.","properties":{"default":{"type":"object","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"object","description":"Fallback value that that will display when field value is empty."},"type":{"const":"icon"},"sets":{"type":["array","string"],"description":"Which icon set to include. Leave empty to include all."},"subSets":{"type":["array","string"],"description":"Which sub icon set to include. Leave empty to include all."},"returnFormat":{"type":"string","description":"The format to return the icon in.","enum":["object","element"]}}},{"example":"link","description":"Renders a link control to choose internal or external links.","properties":{"type":{"const":"link"},"default":{"type":"object","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"object","description":"Fallback value that that will display when field value is empty."},"hasRichPreviews":{"type":"boolean","description":"Whether rich previews should be shown when adding an URL."},"noDirectEntry":{"type":"boolean","description":"Whether to allow turning a URL-like search query directly into a link."},"noURLSuggestion":{"type":"boolean","description":"Whether to add a fallback suggestion which treats the search query as a URL."},"opensInNewTab":{"type":"boolean","description":"Adds a toggle control to the link modal."},"showSuggestions":{"type":"boolean","description":"Whether to present suggestions when typing the URL."},"textButton":{"type":"string","description":"Custom text that should be displayed inside the link button."},"withCreateSuggestion":{"type":"boolean","description":"Whether to allow creation of link value from suggestion."}}},{"description":"Renders a message with custom content.","properties":{"type":{"const":"message"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"value":{"type":"string","description":"The message to display. Block and attribute data is available in bracket syntax, e.g.: `{block.title}` or `{attributes.text}`"}}},{"example":"single","description":"Renders a number input.","properties":{"type":{"const":"number"},"default":{"type":"number","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"number","description":"Fallback value that that will display when field value is empty."},"dragDirection":{"type":"string","description":"Determines the drag axis to increment/decrement the value.","enum":["n","e","s","w"]},"dragThreshold":{"type":"number","description":"If isDragEnabled is true, this controls the amount of px to have been dragged before the value changes."},"hideHTMLArrows":{"type":"boolean","description":"If true, the default input HTML arrows will be hidden."},"isShiftStepEnabled":{"type":"boolean","description":"If true, enables mouse drag gesture to increment/decrement the number value. Holding SHIFT while dragging will increase the value by the shiftStep."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"required":{"type":"boolean","description":"If true enforces a valid number within the control’s min/max range. If false allows an empty string as a valid value."},"shiftStep":{"type":"number","description":"Amount to increment by when the SHIFT key is held down. This shift value is a multiplier to the step value. For example, if the step value is 5, and shiftStep is 10, each jump would increment/decrement by 50."},"step":{"type":"number","description":"Amount by which the value is changed when incrementing/decrementing. It is also a factor in validation as value must be a multiple of step (offset by min, if specified) to be valid. Accepts the special string value any that voids the validation constraint and causes stepping actions to increment/decrement by 1."}}},{"example":"option","description":"Renders a set of radio inputs.","properties":{"type":{"const":"radio"},"default":{"type":["string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["string","number"],"description":"Fallback value that that will display when field value is empty."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}}},{"example":"single","description":"Renders a range input to set a numerical value between two points.","properties":{"type":{"const":"range"},"default":{"type":"number","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"number","description":"Fallback value that that will display when field value is empty."},"allowReset":{"type":"boolean","description":"If this property is true, a button to reset the slider is rendered."},"initialPosition":{"type":"number","description":"The slider starting position, used when no value is passed. The initialPosition will be clamped between the provided min and max prop values."},"isShiftStepEnabled":{"type":"boolean","description":"If true, enables mouse drag gesture to increment/decrement the number value. Holding SHIFT while dragging will increase the value by the shiftStep."},"marks":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"number"}}},"description":"Renders a visual representation of step ticks. Custom mark indicators can be provided by an Array."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"railColor":{"type":"string","description":"CSS color string to customize the rail element’s background."},"resetFallbackValue":{"type":"number","description":"The value to revert to if the Reset button is clicked (enabled by allowReset)"},"separatorType":{"type":"string","description":"Define if separator line under/above control row should be disabled or full width. By default it is placed below excluding underline the control icon.","enum":["none","fullWidth","topFullWidth"]},"shiftStep":{"type":"number","description":"Amount to increment by when the SHIFT key is held down. This shift value is a multiplier to the step value. For example, if the step value is 5, and shiftStep is 10, each jump would increment/decrement by 50."},"showTooltip":{"type":"boolean","description":"Forcing the Tooltip UI to show or hide. This is overridden to false when step is set to the special string value any."},"step":{"type":"number","description":"Amount by which the value is changed when incrementing/decrementing. It is also a factor in validation as value must be a multiple of step (offset by min, if specified) to be valid. Accepts the special string value any that voids the validation constraint and causes stepping actions to increment/decrement by 1."},"trackColor":{"type":"string","description":"CSS color string to customize the track element’s background."},"withInputField":{"type":"boolean","description":"Determines if the input number field will render next to the RangeControl. This is overridden to false when step is set to the special string value any."}}},{"example":["option","option-multiple"],"description":"Renders a select input with support for single or multiple selections.","properties":{"type":{"const":"select"},"default":{"type":["array","string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","string","number"],"description":"Fallback value that that will display when field value is empty."},"multiple":{"type":"boolean","description":"If true, multiple options can be selected. \"stylisedUi\" will be automatically enabled."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"fetch":{"type":"boolean","description":"If true, search value will be used to search through data. Only works with \"query\" type."},"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}},"stylisedUi":{"type":"boolean","description":"Renders a stylised version of a select with the ability to search through items."},"allowNull":{"type":["boolean","string"],"description":"Allows the user to select an empty choice. If true, the label will be empty, otherwise the option will render the specified string."},"allowReset":{"type":"boolean","description":"If this property is true, a button to reset the select is rendered."}}},{"description":"Renders a tabbed interface for grouping fields.","properties":{"type":{"const":"tabs"},"tabs":{"type":"array","description":"The tabs to display.","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"The title of the tab."},"attributes":{"type":"array","description":"Custom attributes that will be applied to the block.","items":{"$ref":"#/definitions/Attribute"}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}},"blockEditor":{"type":"object","description":"Block specific options for rendering inside the Block Editor.","properties":{"disableLoading":{"type":"boolean","description":"Whether the block should should load inside the Block Editor or show a placeholder."}}},"editor":{"type":"object","description":"Block specific options for the editor.","properties":{"assets":{"type":"array","description":"List of WordPress script or style handles that should be added to the preview.","items":{"type":"string"}}}},"interactivity":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"enqueue":{"type":"boolean","description":"Enqueue the Interactivity API."}}}],"description":"Enable the WordPress Interactivity API for this block."},"icon":{"type":"string","description":"Custom SVG icon to be displayed inside the editor."},"innerBlocks":{"type":"string","description":"HTML content that will be rendered as the inner blocks."},"component":{"type":"boolean","description":"Whether this block is a component. Components go through the full Blockstudio pipeline but do not appear in the editor inserter. They can only be rendered via block tags or bs_render_block()."},"override":{"type":"boolean","description":"Whether this block should overwrite another block."},"refreshOn":{"type":"array","description":"When the block should refresh. This is useful when the block relies on external data like custom fields.","items":{"type":"string"}},"transforms":{"type":"object","description":"Custom block transforms.","properties":{"from":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["block","enter","prefix"]},"blocks":{"type":"array","items":{"type":"string"}},"regExp":{"type":"string"},"prefix":{"type":"string"}},"required":["type"],"additionalProperties":false}}},"required":["from"],"additionalProperties":false}}}}}},{"example":"single","description":"Renders a single line text input.","properties":{"type":{"const":"text"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."}}},{"example":"single","description":"Renders a textarea input.","properties":{"type":{"const":"textarea"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"rows":{"type":"number","description":"The number of rows the textarea should contain."}}},{"example":"toggle","description":"Renders a true/false toggle.","properties":{"type":{"const":"toggle"},"default":{"type":"boolean","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"boolean","description":"Fallback value that that will display when field value is empty."}}},{"description":"Renders a set of fields that can be repeated.","properties":{"type":{"const":"repeater"},"min":{"type":"number","description":"Minimum amount of rows."},"max":{"type":"number","description":"Maximum amount of rows."},"textButton":{"type":"string","description":"Text for the add button."},"textMinimized":{"type":["string","object"],"description":"Text that will be displayed when rows are minimized.","properties":{"id":{"type":"string","description":"ID of the attribute which should be used as the text."},"key":{"type":"string","description":"Sub-property to read when the field value is an object (e.g. \"title\" for link fields)."},"fallback":{"type":"string","description":"Fallback text if the attribute is not set."},"prefix":{"type":"string","description":"Prefix for the text."},"suffix":{"type":"string","description":"Suffix for the text."}}},"textRemove":{"type":["string","boolean"],"description":"Text to display in alert when removing repeater row."},"attributes":{"type":"array","description":"Accepts all other field types besides another tabs.","items":{"$ref":"#/definitions/Attribute"}}}},{"example":"single","description":"Attribute field for RichText fields.","properties":{"type":{"const":"richtext"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."}}},{"example":"single","description":"Renders a number input with a unit dropdown.","properties":{"type":{"const":"unit"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"disableUnits":{"type":"boolean","description":"If true, the unit select field is hidden."},"isPressEnterToChange":{"type":"boolean","description":"If true, the ENTER key press is required in order to trigger an onChange. If enabled, a change is also triggered when tabbing away."},"isResetValueOnUnitChange":{"type":"boolean","description":"If true, and the selected unit provides a default value, this value is set when changing units."},"isUnitSelectTabbable":{"type":"boolean","description":"Determines if the unit select field is tabbable."},"units":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"default":{"type":"number"},"label":{"type":"string"},"value":{"type":"string"}}}}}},{"example":"single","description":"Renders a WYSIWYG editor.","properties":{"type":{"const":"wysiwyg"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"toolbar":{"type":"object","description":"The toolbar configuration for the editor.","properties":{"tags":{"type":"object","description":"Which HTML tags are allowed.","properties":{"headings":{"type":"array","description":"Which HTML headings levels are allowed."}}},"formats":{"type":"object","description":"Which text formats are allowed.","properties":{"bold":{"type":"boolean","description":"Whether bold text format is allowed."},"italic":{"type":"boolean","description":"Whether italic text format is allowed."},"orderedList":{"type":"boolean","description":"Whether ordered list text format is allowed."},"strikethrough":{"type":"boolean","description":"Whether strikethrough text format is allowed."},"underline":{"type":"boolean","description":"Whether underline text format is allowed."},"unorderedList":{"type":"boolean","description":"Whether unordered list text format is allowed."},"textAlign":{"type":"object","description":"Which text alignment formats are allowed.","properties":{"alignments":{"type":"array","description":"Which text alignments are allowed.","items":{"type":"string","enum":["left","center","right","justify"]}}}}}}}}}},{"properties":{"type":{"pattern":"^custom/.+$","description":"References a reusable custom field definition."}},"required":["type"]}]}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}},"blockEditor":{"type":"object","description":"Block specific options for rendering inside the Block Editor.","properties":{"disableLoading":{"type":"boolean","description":"Whether the block should should load inside the Block Editor or show a placeholder."}}},"editor":{"type":"object","description":"Block specific options for the editor.","properties":{"assets":{"type":"array","description":"List of WordPress script or style handles that should be added to the preview.","items":{"type":"string"}}}},"interactivity":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"enqueue":{"type":"boolean","description":"Enqueue the Interactivity API."}}}],"description":"Enable the WordPress Interactivity API for this block."},"icon":{"type":"string","description":"Custom SVG icon to be displayed inside the editor."},"innerBlocks":{"type":"string","description":"HTML content that will be rendered as the inner blocks."},"component":{"type":"boolean","description":"Whether this block is a component. Components go through the full Blockstudio pipeline but do not appear in the editor inserter. They can only be rendered via block tags or bs_render_block()."},"override":{"type":"boolean","description":"Whether this block should overwrite another block."},"refreshOn":{"type":"array","description":"When the block should refresh. This is useful when the block relies on external data like custom fields.","items":{"type":"string"}},"transforms":{"type":"object","description":"Custom block transforms.","properties":{"from":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["block","enter","prefix"]},"blocks":{"type":"array","items":{"type":"string"}},"regExp":{"type":"string"},"prefix":{"type":"string"}},"required":["type"],"additionalProperties":false}}},"required":["from"],"additionalProperties":false}},"additionalProperties":false}},"definitions":{"Attribute":{"type":"object","required":["type"],"properties":{"id":{"type":"string","description":"A unique identifier for the field, which will be used get the value inside block templates. Must be unique within the current context."},"key":{"type":"string","description":"Another identifier that can be used to uniquely identify fields across different contexts. (inside repeaters etc.)"},"type":{"type":"string","anyOf":[{"enum":["attributes","block","checkbox","classes","code","color","date","datetime","files","gradient","html-tag","icon","link","message","number","radio","range","select","tabs","text","textarea","toggle","repeater","richtext","unit","wysiwyg"]},{"pattern":"^custom/.+$","description":"Custom field reference in format 'custom/{name}'."}]},"label":{"type":"string","description":"The label for the field."},"description":{"type":"string","description":"The description for the field. Will be displayed underneath the field."},"help":{"type":"string","description":"The help text for the field. Will be displayed in a tooltip next to the label."},"hidden":{"type":"boolean","description":"Whether to hide the field UI in the editor. This is handy when using the variations API."},"storage":{"type":"object","description":"Configure where the field value should be stored.","properties":{"type":{"type":["string","array"],"description":"Storage location(s). Can be a single type or array of types.","enum":["block","postMeta","option"]},"postMetaKey":{"type":"string","description":"Custom meta key for post meta storage. Defaults to {block_name}_{field_id}."},"optionKey":{"type":"string","description":"Custom option key for options storage. Defaults to {block_name}_{field_id}."}}},"switch":{"type":"boolean","description":"Display a toggle that can disable the field. Shows an eye icon in the field label. Defaults to false.","default":false},"idStructure":{"type":"string","description":"ID pattern for expanded custom fields. Use {id} as placeholder for the original field ID.","default":"{id}","example":"hero_{id}"},"overrides":{"type":"object","description":"Per-field property overrides for custom fields. Keys are original field IDs from the field definition.","additionalProperties":{"type":"object"}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}}},"anyOf":[{"example":"attributes","description":"Renders data attribute inputs.","properties":{"type":{"const":"attributes"},"default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"link":{"type":"boolean","description":"Enables link selection from dropdown."},"media":{"type":"boolean","description":"Enables media selection from dropdown."}}},{"description":"References another Blockstudio block, expanding its fields inline. In templates, the value returns the rendered block output.","properties":{"type":{"const":"block"},"block":{"type":"string","description":"The name of the block to reference (e.g., \"mytheme/card\")."},"returnFormat":{"type":"string","description":"How the value should be returned in templates.","enum":["rendered","data","both"],"default":"rendered"}}},{"example":"option-multiple","description":"Renders a set of checkbox inputs.","properties":{"type":{"const":"checkbox"},"default":{"type":["array","string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","string","number"],"description":"Fallback value that that will display when field value is empty."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}}},{"example":"single","description":"Renders a field to select CSS classes.","properties":{"type":{"const":"classes"},"default":{"type":["string"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["string"],"description":"Fallback value that that will display when field value is empty."},"tailwind":{"type":"boolean","description":"Whether to enable Tailwind classes for this input field."}}},{"example":"single","description":"Renders a code editor.","properties":{"type":{"const":"code"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"autoCompletion":{"type":"boolean","description":"Whether to enable autocompletion or not."},"foldGutter":{"type":"boolean","description":"Whether to show the fold gutter or not."},"height":{"type":"string","description":"The height of the editor."},"language":{"type":"string","description":"The language to use for syntax highlighting.","enum":["css","html","javascript","json","scss","twig"]},"lineNumbers":{"type":"boolean","description":"Whether to display line numbers or not."},"maxHeight":{"type":"string","description":"The maximum height of the editor."},"minHeight":{"type":"string","description":"The minimum height of the editor."},"popout":{"type":"boolean","description":"Whether to show a button that opens the editor in a popup window."}}},{"example":"option","description":"Renders a color palette and color picker.","properties":{"type":{"const":"color"},"options":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"slug":{"type":"string"}},"description":"Options to choose from."}},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["function","custom"]},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"}}},"clearable":{"type":"boolean","description":"Whether the palette should have a clearing button or not."},"disableCustomColors":{"type":"boolean","description":"Whether to allow custom color or not."}}},{"example":"single","description":"Renders a date picker.","properties":{"type":{"const":"date"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"startOfWeek":{"type":"number","description":"The day that the week should start on. 0 for Sunday, 1 for Monday, etc."}}},{"example":"single","description":"Renders a date and time picker.","properties":{"type":{"const":"datetime"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"is12Hour":{"type":"boolean","description":"Whether we use a 12-hour clock. With a 12-hour clock, an AM/PM widget is displayed and the time format is assumed to be MM-DD-YYYY (as opposed to the default format DD-MM-YYYY)."}}},{"example":"files","description":"Renders a button to the media library. Picked items can be reordered inline.","properties":{"type":{"const":"files"},"default":{"type":["array","object","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","object","number"],"description":"Fallback value that that will display when field value is empty."},"addToGallery":{"type":"boolean","description":"If true, the gallery media modal opens directly in the media library where the user can add additional images. If false the gallery media modal opens in the edit mode where the user can edit existing images, by reordering them, remove them, or change their attributes. Only applies if gallery === true."},"allowedTypes":{"type":["array","string"],"description":"Array with the types of the media to upload/select from the media library. Each type is a string that can contain the general mime type e.g: 'image', 'audio', 'text', or the complete mime type e.g: 'audio/mpeg', 'image/gif'. If allowedTypes is unset all mime types should be allowed."},"gallery":{"type":"boolean","description":"If true, the component will initiate all the states required to represent a gallery. By default, the media modal opens in the gallery edit frame, but that can be changed using the addToGalleryflag."},"max":{"type":"number","description":"Maximum amount of files that can be added."},"min":{"type":"number","description":"Minimum amount of files that can be added."},"multiple":{"type":"boolean","description":"Whether to allow multiple selections or not."},"size":{"type":"boolean","description":"Adds a media size dropdown to the field."},"textMediaButton":{"type":"string","description":"Media button text."},"title":{"type":"string","description":"Title displayed in the media modal."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["object","id","url"],"default":"object"},"returnSize":{"type":"string","description":"The media size to return when using the URL return format."}}},{"example":"option","description":"Renders a gradient palette and gradient picker","properties":{"type":{"const":"gradient"},"options":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"name":{"type":"string"},"value":{"type":"string"},"slug":{"type":"string"}},"description":"Options to choose from."}},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["function","custom"]},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"}}},"clearable":{"type":"boolean","description":"Whether the palette should have a clearing button or not."},"disableCustomGradients":{"type":"boolean","description":"Whether to allow custom color or not."}}},{"description":"Renders an HTML tag selector. Useful for choosing heading levels or semantic elements.","properties":{"type":{"const":"html-tag"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"tags":{"type":["string","array"],"description":"Which tags to include. Use a preset string or an array of tag names.","enum":["heading","text","structural","all"]},"exclude":{"type":"array","items":{"type":"string"},"description":"Tags to exclude from the preset. Only applies when using a preset string for tags."}}},{"example":"icon","description":"Renders an SVG icon from an icon set.","properties":{"default":{"type":"object","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"object","description":"Fallback value that that will display when field value is empty."},"type":{"const":"icon"},"sets":{"type":["array","string"],"description":"Which icon set to include. Leave empty to include all."},"subSets":{"type":["array","string"],"description":"Which sub icon set to include. Leave empty to include all."},"returnFormat":{"type":"string","description":"The format to return the icon in.","enum":["object","element"]}}},{"example":"link","description":"Renders a link control to choose internal or external links.","properties":{"type":{"const":"link"},"default":{"type":"object","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"object","description":"Fallback value that that will display when field value is empty."},"hasRichPreviews":{"type":"boolean","description":"Whether rich previews should be shown when adding an URL."},"noDirectEntry":{"type":"boolean","description":"Whether to allow turning a URL-like search query directly into a link."},"noURLSuggestion":{"type":"boolean","description":"Whether to add a fallback suggestion which treats the search query as a URL."},"opensInNewTab":{"type":"boolean","description":"Adds a toggle control to the link modal."},"showSuggestions":{"type":"boolean","description":"Whether to present suggestions when typing the URL."},"textButton":{"type":"string","description":"Custom text that should be displayed inside the link button."},"withCreateSuggestion":{"type":"boolean","description":"Whether to allow creation of link value from suggestion."}}},{"description":"Renders a message with custom content.","properties":{"type":{"const":"message"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"value":{"type":"string","description":"The message to display. Block and attribute data is available in bracket syntax, e.g.: `{block.title}` or `{attributes.text}`"}}},{"example":"single","description":"Renders a number input.","properties":{"type":{"const":"number"},"default":{"type":"number","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"number","description":"Fallback value that that will display when field value is empty."},"dragDirection":{"type":"string","description":"Determines the drag axis to increment/decrement the value.","enum":["n","e","s","w"]},"dragThreshold":{"type":"number","description":"If isDragEnabled is true, this controls the amount of px to have been dragged before the value changes."},"hideHTMLArrows":{"type":"boolean","description":"If true, the default input HTML arrows will be hidden."},"isShiftStepEnabled":{"type":"boolean","description":"If true, enables mouse drag gesture to increment/decrement the number value. Holding SHIFT while dragging will increase the value by the shiftStep."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"required":{"type":"boolean","description":"If true enforces a valid number within the control’s min/max range. If false allows an empty string as a valid value."},"shiftStep":{"type":"number","description":"Amount to increment by when the SHIFT key is held down. This shift value is a multiplier to the step value. For example, if the step value is 5, and shiftStep is 10, each jump would increment/decrement by 50."},"step":{"type":"number","description":"Amount by which the value is changed when incrementing/decrementing. It is also a factor in validation as value must be a multiple of step (offset by min, if specified) to be valid. Accepts the special string value any that voids the validation constraint and causes stepping actions to increment/decrement by 1."}}},{"example":"option","description":"Renders a set of radio inputs.","properties":{"type":{"const":"radio"},"default":{"type":["string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["string","number"],"description":"Fallback value that that will display when field value is empty."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}}}},{"example":"single","description":"Renders a range input to set a numerical value between two points.","properties":{"type":{"const":"range"},"default":{"type":"number","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"number","description":"Fallback value that that will display when field value is empty."},"allowReset":{"type":"boolean","description":"If this property is true, a button to reset the slider is rendered."},"initialPosition":{"type":"number","description":"The slider starting position, used when no value is passed. The initialPosition will be clamped between the provided min and max prop values."},"isShiftStepEnabled":{"type":"boolean","description":"If true, enables mouse drag gesture to increment/decrement the number value. Holding SHIFT while dragging will increase the value by the shiftStep."},"marks":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"number"}}},"description":"Renders a visual representation of step ticks. Custom mark indicators can be provided by an Array."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"railColor":{"type":"string","description":"CSS color string to customize the rail element’s background."},"resetFallbackValue":{"type":"number","description":"The value to revert to if the Reset button is clicked (enabled by allowReset)"},"separatorType":{"type":"string","description":"Define if separator line under/above control row should be disabled or full width. By default it is placed below excluding underline the control icon.","enum":["none","fullWidth","topFullWidth"]},"shiftStep":{"type":"number","description":"Amount to increment by when the SHIFT key is held down. This shift value is a multiplier to the step value. For example, if the step value is 5, and shiftStep is 10, each jump would increment/decrement by 50."},"showTooltip":{"type":"boolean","description":"Forcing the Tooltip UI to show or hide. This is overridden to false when step is set to the special string value any."},"step":{"type":"number","description":"Amount by which the value is changed when incrementing/decrementing. It is also a factor in validation as value must be a multiple of step (offset by min, if specified) to be valid. Accepts the special string value any that voids the validation constraint and causes stepping actions to increment/decrement by 1."},"trackColor":{"type":"string","description":"CSS color string to customize the track element’s background."},"withInputField":{"type":"boolean","description":"Determines if the input number field will render next to the RangeControl. This is overridden to false when step is set to the special string value any."}}},{"example":["option","option-multiple"],"description":"Renders a select input with support for single or multiple selections.","properties":{"type":{"const":"select"},"default":{"type":["array","string","number"],"description":"Default value that should be applied when first adding the block."},"fallback":{"type":["array","string","number"],"description":"Fallback value that that will display when field value is empty."},"multiple":{"type":"boolean","description":"If true, multiple options can be selected. \"stylisedUi\" will be automatically enabled."},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":["string","number"]},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}}},"required":["value"]},"description":"Options to choose from."},"returnFormat":{"type":"string","description":"Specifies the return format value.","enum":["value","label","both"],"default":"value"},"populate":{"type":"object","properties":{"fetch":{"type":"boolean","description":"If true, search value will be used to search through data. Only works with \"query\" type."},"function":{"type":"string","description":"The function that should be executed."},"type":{"type":"string","enum":["query","function","custom","fetch"]},"query":{"type":"string","enum":["posts","users","terms"],"description":"Type of query that should be used to fetch data."},"arguments":{"type":["object","array"],"description":"Query or fetch arguments.","properties":{"urlSearch":{"type":"string","description":"Search URL when using the \"fetch\" type."}}},"custom":{"type":"string","description":"Custom data ID."},"position":{"type":"string","description":"How the data should be positioned in regards to the default options.","enum":["before","after"],"default":"after"},"returnFormat":{"type":"object","description":"Format of the returning data when using objects.","properties":{"value":{"type":"string"},"label":{"type":"string"}}}}},"stylisedUi":{"type":"boolean","description":"Renders a stylised version of a select with the ability to search through items."},"allowNull":{"type":["boolean","string"],"description":"Allows the user to select an empty choice. If true, the label will be empty, otherwise the option will render the specified string."},"allowReset":{"type":"boolean","description":"If this property is true, a button to reset the select is rendered."}}},{"description":"Renders a tabbed interface for grouping fields.","properties":{"type":{"const":"tabs"},"tabs":{"type":"array","description":"The tabs to display.","items":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"The title of the tab."},"attributes":{"type":"array","description":"Custom attributes that will be applied to the block.","items":{"$ref":"#/definitions/Attribute"}},"conditions":{"type":"array","description":"Conditional logic detailing when the field should be displayed in the editor.","items":{"type":"array","items":{"type":"object","required":["operator"],"properties":{"id":{"type":"string","description":"ID of the field whose value will be used for the conditionally render it."},"operator":{"type":"string","description":"How the values should be compared.","enum":["==","!=","includes","!includes","empty","!empty","<",">","<=",">="]},"type":{"type":"string","description":"Condition type."},"value":{"type":["string","number","boolean"],"description":"Value that will be compared."}}}}},"blockEditor":{"type":"object","description":"Block specific options for rendering inside the Block Editor.","properties":{"disableLoading":{"type":"boolean","description":"Whether the block should should load inside the Block Editor or show a placeholder."}}},"editor":{"type":"object","description":"Block specific options for the editor.","properties":{"assets":{"type":"array","description":"List of WordPress script or style handles that should be added to the preview.","items":{"type":"string"}}}},"interactivity":{"oneOf":[{"type":"boolean"},{"type":"object","properties":{"enqueue":{"type":"boolean","description":"Enqueue the Interactivity API."}}}],"description":"Enable the WordPress Interactivity API for this block."},"icon":{"type":"string","description":"Custom SVG icon to be displayed inside the editor."},"innerBlocks":{"type":"string","description":"HTML content that will be rendered as the inner blocks."},"component":{"type":"boolean","description":"Whether this block is a component. Components go through the full Blockstudio pipeline but do not appear in the editor inserter. They can only be rendered via block tags or bs_render_block()."},"override":{"type":"boolean","description":"Whether this block should overwrite another block."},"refreshOn":{"type":"array","description":"When the block should refresh. This is useful when the block relies on external data like custom fields.","items":{"type":"string"}},"transforms":{"type":"object","description":"Custom block transforms.","properties":{"from":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["block","enter","prefix"]},"blocks":{"type":"array","items":{"type":"string"}},"regExp":{"type":"string"},"prefix":{"type":"string"}},"required":["type"],"additionalProperties":false}}},"required":["from"],"additionalProperties":false}}}}}},{"example":"single","description":"Renders a single line text input.","properties":{"type":{"const":"text"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."}}},{"example":"single","description":"Renders a textarea input.","properties":{"type":{"const":"textarea"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"max":{"type":"number","description":"The maximum value length."},"min":{"type":"number","description":"Minimum value length."},"rows":{"type":"number","description":"The number of rows the textarea should contain."}}},{"example":"toggle","description":"Renders a true/false toggle.","properties":{"type":{"const":"toggle"},"default":{"type":"boolean","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"boolean","description":"Fallback value that that will display when field value is empty."}}},{"example":"single","description":"Attribute field for RichText fields.","properties":{"type":{"const":"richtext"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."}}},{"example":"single","description":"Renders a number input with a unit dropdown.","properties":{"type":{"const":"unit"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"disableUnits":{"type":"boolean","description":"If true, the unit select field is hidden."},"isPressEnterToChange":{"type":"boolean","description":"If true, the ENTER key press is required in order to trigger an onChange. If enabled, a change is also triggered when tabbing away."},"isResetValueOnUnitChange":{"type":"boolean","description":"If true, and the selected unit provides a default value, this value is set when changing units."},"isUnitSelectTabbable":{"type":"boolean","description":"Determines if the unit select field is tabbable."},"units":{"type":"array","default":{"type":"array","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"array","description":"Fallback value that that will display when field value is empty."},"items":{"type":"object","properties":{"default":{"type":"number"},"label":{"type":"string"},"value":{"type":"string"}}}}}},{"example":"single","description":"Renders a WYSIWYG editor.","properties":{"type":{"const":"wysiwyg"},"default":{"type":"string","description":"Default value that should be applied when first adding the block."},"fallback":{"type":"string","description":"Fallback value that that will display when field value is empty."},"toolbar":{"type":"object","description":"The toolbar configuration for the editor.","properties":{"tags":{"type":"object","description":"Which HTML tags are allowed.","properties":{"headings":{"type":"array","description":"Which HTML headings levels are allowed."}}},"formats":{"type":"object","description":"Which text formats are allowed.","properties":{"bold":{"type":"boolean","description":"Whether bold text format is allowed."},"italic":{"type":"boolean","description":"Whether italic text format is allowed."},"orderedList":{"type":"boolean","description":"Whether ordered list text format is allowed."},"strikethrough":{"type":"boolean","description":"Whether strikethrough text format is allowed."},"underline":{"type":"boolean","description":"Whether underline text format is allowed."},"unorderedList":{"type":"boolean","description":"Whether unordered list text format is allowed."},"textAlign":{"type":"object","description":"Which text alignment formats are allowed.","properties":{"alignments":{"type":"array","description":"Which text alignments are allowed.","items":{"type":"string","enum":["left","center","right","justify"]}}}}}}}}}},{"properties":{"type":{"pattern":"^custom/.+$","description":"References a reusable custom field definition."}},"required":["type"]}]},"Block":{"type":"object","properties":{"name":{"type":"string"},"innerBlocks":{"type":"array","items":{"$ref":"#/definitions/Block"}},"attributes":{"type":"object","additionalProperties":true}},"required":["name"]}}}