{
	"package": "@isudev/gutenberg",
	"version": "0.1.0",
	"generatedFrom": "src/<category>/<Name>/README.md",
	"modules": [
		{
			"name": "BreakpointSwitcher",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/BreakpointSwitcher",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/BreakpointSwitcher/README.md",
			"summary": "Switches which breakpoint a responsive setting is being edited for, as an always-visible row of icons or a compact dropdown.",
			"props": [
				{
					"name": "value",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Currently selected breakpoint id."
				},
				{
					"name": "onChange",
					"type": "( id: string ) => void",
					"default": null,
					"required": true,
					"description": "Called with the newly selected breakpoint id."
				},
				{
					"name": "variant",
					"type": "'inline' | 'dropdown'",
					"default": "'inline'",
					"required": false,
					"description": "Always-visible row, or a button that opens a menu."
				},
				{
					"name": "breakpoints",
					"type": "Breakpoint[]",
					"default": "DEFAULT_BREAKPOINTS",
					"required": false,
					"description": "The breakpoint set to offer."
				},
				{
					"name": "hasValue",
					"type": "Record<string, boolean>",
					"default": "{}",
					"required": false,
					"description": "Which breakpoints carry an override, keyed by id. Drives the indicator."
				},
				{
					"name": "label",
					"type": "string",
					"default": "'Breakpoint'",
					"required": false,
					"description": "Accessible name for the group or dropdown toggle."
				},
				{
					"name": "hideLabelFromVision",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Show the label to screen readers only. Inline variant only."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class name on the root element."
				}
			]
		},
		{
			"name": "ColorPopup",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/ColorPopup",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/ColorPopup/README.md",
			"summary": "A color swatch button that opens a popover with `ColorPalette`, and reports back the full color object (`{ color, name, slug }`), not just the hex string `ColorPalette` gives you.",
			"props": [
				{
					"name": "label",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Text next to the color swatch on the toggle button."
				},
				{
					"name": "value",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Currently selected color or slug. Empty string for no selection."
				},
				{
					"name": "onChange",
					"type": "( color: ColorPopupColor ) => void",
					"default": null,
					"required": true,
					"description": "Called with the full resolved color object, never a bare string."
				},
				{
					"name": "colors",
					"type": "Array<{ color: string; name: string; slug: string }>",
					"default": "[]",
					"required": false,
					"description": "Palette offered in the popup."
				},
				{
					"name": "enableAlpha",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Adds an opacity slider to the popup."
				},
				{
					"name": "alpha",
					"type": "number",
					"default": "1",
					"required": false,
					"description": "Current alpha, 0–1. Only meaningful when `enableAlpha` is set."
				},
				{
					"name": "popupLabel",
					"type": "string",
					"default": "'Select Color'",
					"required": false,
					"description": "Heading shown inside the popup, above the palette."
				},
				{
					"name": "clearable",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Shows a button that resets the value to empty."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class name on the toggle button."
				}
			]
		},
		{
			"name": "Icon",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/Icon",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/Icon/README.md",
			"summary": "Renders one named icon from an injected collection. Empty and unknown names render nothing. The folder also exports collection resolution and the explicit `wp_localize_script` adapter shared by `IconPicker` and `IconSelect`.",
			"props": [
				{
					"name": "defaultIcons",
					"type": "readonly IconDefinition[]",
					"default": "[]",
					"required": false,
					"description": "Base registry, commonly returned by `getLocalizedIcons()`."
				},
				{
					"name": "icons",
					"type": "readonly IconChoice[]",
					"default": "undefined",
					"required": false,
					"description": "Complete ordered override. Strings select names from `defaultIcons`; definitions replace the defaults."
				},
				{
					"name": "name",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Selected icon name. Empty and unknown names render nothing."
				},
				{
					"name": "size",
					"type": "number",
					"default": "24",
					"required": false,
					"description": "Rendered width and height in pixels."
				},
				{
					"name": "label",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Accessible label. Omit for a decorative icon."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on the icon wrapper."
				},
				{
					"name": "style",
					"type": "CSSProperties",
					"default": "undefined",
					"required": false,
					"description": "Inline styles on the icon wrapper."
				}
			]
		},
		{
			"name": "IconPicker",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/IconPicker",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/IconPicker/README.md",
			"summary": "Displays an accessible grid of named icons with optional search and clearing. It is the always-visible selection surface used by `IconSelect`.",
			"props": [
				{
					"name": "defaultIcons",
					"type": "readonly IconDefinition[]",
					"default": "[]",
					"required": false,
					"description": "Base registry, commonly returned by `getLocalizedIcons()`."
				},
				{
					"name": "icons",
					"type": "readonly IconChoice[]",
					"default": "undefined",
					"required": false,
					"description": "Complete ordered override or name subset of `defaultIcons`."
				},
				{
					"name": "value",
					"type": "string",
					"default": "''",
					"required": false,
					"description": "Selected icon name. Empty string means no selection."
				},
				{
					"name": "onChange",
					"type": "( name: string ) => void",
					"default": null,
					"required": true,
					"description": "Receives the selected name or `''` when cleared."
				},
				{
					"name": "label",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Optional picker heading and grid accessible label."
				},
				{
					"name": "searchable",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows the search field."
				},
				{
					"name": "searchLabel",
					"type": "string",
					"default": "'Search icons'",
					"required": false,
					"description": "Accessible search field label."
				},
				{
					"name": "searchPlaceholder",
					"type": "string",
					"default": "'Search icons'",
					"required": false,
					"description": "Search input placeholder."
				},
				{
					"name": "noResultsMessage",
					"type": "string",
					"default": "'No icons found.'",
					"required": false,
					"description": "Status shown for an empty collection or search result."
				},
				{
					"name": "columns",
					"type": "number",
					"default": "6",
					"required": false,
					"description": "Number of grid columns; values below one become one."
				},
				{
					"name": "iconSize",
					"type": "number",
					"default": "24",
					"required": false,
					"description": "Icon size inside each 40px selection button."
				},
				{
					"name": "clearable",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows the clear-selection action."
				},
				{
					"name": "clearLabel",
					"type": "string",
					"default": "'Clear icon'",
					"required": false,
					"description": "Clear action label."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on the picker control."
				},
				{
					"name": "style",
					"type": "CSSProperties",
					"default": "undefined",
					"required": false,
					"description": "Inline styles merged onto the picker content wrapper."
				}
			]
		},
		{
			"name": "IconSelect",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/IconSelect",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/IconSelect/README.md",
			"summary": "Shows the current icon and label in a compact WordPress button. Clicking it opens `IconPicker` in a popover; with no selected value, no icon preview is rendered.",
			"props": [
				{
					"name": "defaultIcons",
					"type": "readonly IconDefinition[]",
					"default": "[]",
					"required": false,
					"description": "Base registry, commonly returned by `getLocalizedIcons()`."
				},
				{
					"name": "icons",
					"type": "readonly IconChoice[]",
					"default": "undefined",
					"required": false,
					"description": "Complete ordered override or name subset of `defaultIcons`."
				},
				{
					"name": "value",
					"type": "string",
					"default": "''",
					"required": false,
					"description": "Selected icon name. Empty string means no selection."
				},
				{
					"name": "onChange",
					"type": "( name: string ) => void",
					"default": null,
					"required": true,
					"description": "Receives the selected name or `''` when cleared."
				},
				{
					"name": "label",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Visible context label and accessible name of the select button."
				},
				{
					"name": "placeholder",
					"type": "string",
					"default": "'Select icon'",
					"required": false,
					"description": "Text shown while no icon is selected."
				},
				{
					"name": "pickerLabel",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Optional heading above the picker grid."
				},
				{
					"name": "searchable",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows search inside the picker."
				},
				{
					"name": "searchLabel",
					"type": "string",
					"default": "'Search icons'",
					"required": false,
					"description": "Accessible search field label."
				},
				{
					"name": "searchPlaceholder",
					"type": "string",
					"default": "'Search icons'",
					"required": false,
					"description": "Search input placeholder."
				},
				{
					"name": "noResultsMessage",
					"type": "string",
					"default": "'No icons found.'",
					"required": false,
					"description": "Empty-result status."
				},
				{
					"name": "columns",
					"type": "number",
					"default": "6",
					"required": false,
					"description": "Number of picker grid columns."
				},
				{
					"name": "iconSize",
					"type": "number",
					"default": "24",
					"required": false,
					"description": "Preview and grid icon size in pixels."
				},
				{
					"name": "clearable",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows the clear-selection action."
				},
				{
					"name": "clearLabel",
					"type": "string",
					"default": "'Clear icon'",
					"required": false,
					"description": "Clear action label."
				},
				{
					"name": "closeOnSelect",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Closes after selecting or clearing an icon."
				},
				{
					"name": "popoverPlacement",
					"type": "PopoverPlacement",
					"default": "'bottom-start'",
					"required": false,
					"description": "Popover placement relative to the select button."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on the select button."
				},
				{
					"name": "pickerClassName",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on the nested picker."
				},
				{
					"name": "style",
					"type": "CSSProperties",
					"default": "undefined",
					"required": false,
					"description": "Inline styles on the select button."
				}
			]
		},
		{
			"name": "MediaFocalPointControl",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/MediaFocalPointControl",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/MediaFocalPointControl/README.md",
			"summary": "A standalone wrapper around WordPress' `FocalPointPicker` for a serializable image or video value. It can be imported without any media modal, toolbar or inspector controls.",
			"props": [
				{
					"name": "media",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Image or video displayed by the picker."
				},
				{
					"name": "value",
					"type": "MediaFocalPoint",
					"default": "{ x: 0.5, y: 0.5 }",
					"required": false,
					"description": "Controlled normalized focal point."
				},
				{
					"name": "onChange",
					"type": "( value: MediaFocalPoint | undefined ) => void",
					"default": null,
					"required": true,
					"description": "Receives changes and reset as `undefined`."
				},
				{
					"name": "label",
					"type": "string",
					"default": "'Focal point'",
					"required": false,
					"description": "Visible picker label."
				},
				{
					"name": "help",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Help text below the picker."
				},
				{
					"name": "hideLabelFromVision",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Visually hides the accessible label."
				},
				{
					"name": "autoPlay",
					"type": "boolean",
					"default": "WordPress default",
					"required": false,
					"description": "Controls video autoplay in the picker."
				},
				{
					"name": "showReset",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows reset while a custom value exists."
				},
				{
					"name": "resetLabel",
					"type": "string",
					"default": "'Reset focal point'",
					"required": false,
					"description": "Reset button label."
				},
				{
					"name": "emptyFallback",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered without a supported media URL."
				}
			]
		},
		{
			"name": "MediaPreview",
			"kind": "component",
			"category": "components",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/components/MediaPreview",
			"categoryImport": "@isudev/gutenberg/components",
			"readme": "src/components/MediaPreview/README.md",
			"summary": "Renders a serializable `MediaValue` as an image or video. It is props-only, performs no REST requests, and maps an optional focal point to safe CSS `object-position` values.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Serializable media URL, type and metadata."
				},
				{
					"name": "focalPoint",
					"type": "MediaFocalPoint",
					"default": "undefined",
					"required": false,
					"description": "Normalized coordinates mapped to `object-position`."
				},
				{
					"name": "aspectRatio",
					"type": "CSSProperties['aspectRatio']",
					"default": "undefined",
					"required": false,
					"description": "CSS aspect ratio of the media."
				},
				{
					"name": "objectFit",
					"type": "CSSProperties['objectFit']",
					"default": "'cover'",
					"required": false,
					"description": "CSS object-fit mode."
				},
				{
					"name": "width",
					"type": "CSSProperties['width']",
					"default": "'100%'",
					"required": false,
					"description": "CSS width of the media."
				},
				{
					"name": "height",
					"type": "CSSProperties['height']",
					"default": "undefined",
					"required": false,
					"description": "CSS height of the media."
				},
				{
					"name": "style",
					"type": "CSSProperties",
					"default": "undefined",
					"required": false,
					"description": "Additional media-element styles."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Additional media-element class name."
				},
				{
					"name": "imageProps",
					"type": "ImgHTMLAttributes",
					"default": "undefined",
					"required": false,
					"description": "Image-only props except controlled `src` and `alt`."
				},
				{
					"name": "videoProps",
					"type": "VideoHTMLAttributes",
					"default": "undefined",
					"required": false,
					"description": "Video-only props except controlled `src`."
				},
				{
					"name": "emptyFallback",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered without a URL."
				},
				{
					"name": "unsupportedFallback",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered for non-image/video types."
				}
			]
		},
		{
			"name": "BlockLinkControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/BlockLinkControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/BlockLinkControl/README.md",
			"summary": "Injects an add/edit action and an optional unlink action into Gutenberg's `BlockControls`. The add/edit action opens the same `LinkPickerControl` used by the lower-level and editable-text link APIs.",
			"props": [
				{
					"name": "value",
					"type": "LinkValue",
					"default": "{}",
					"required": false,
					"description": "Current destination and link settings."
				},
				{
					"name": "onChange",
					"type": "( value: LinkValue ) => void",
					"default": null,
					"required": true,
					"description": "Updates the block's link attribute with a normalized value."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "onChange( {} )",
					"required": false,
					"description": "Custom unlink behavior. The picker closes after it runs."
				},
				{
					"name": "group",
					"type": "BlockControlsGroup",
					"default": "'default'",
					"required": false,
					"description": "Gutenberg toolbar group: `default`, `block`, `inline`, `other` or `parent`."
				},
				{
					"name": "disabled",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Disables the add/edit and unlink actions."
				},
				{
					"name": "showUnlinkButton",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Shows a separate unlink action while a link exists."
				},
				{
					"name": "addLabel",
					"type": "string",
					"default": "'Add link'",
					"required": false,
					"description": "Accessible label used while no link exists."
				},
				{
					"name": "editLabel",
					"type": "string",
					"default": "'Edit link'",
					"required": false,
					"description": "Accessible label used while a link exists."
				},
				{
					"name": "unlinkLabel",
					"type": "string",
					"default": "'Unlink'",
					"required": false,
					"description": "Accessible label for the unlink action."
				},
				{
					"name": "linkIcon",
					"type": "IconType",
					"default": "WordPress `link` icon",
					"required": false,
					"description": "Icon used while no link exists."
				},
				{
					"name": "editIcon",
					"type": "IconType",
					"default": "Link-with-pencil icon",
					"required": false,
					"description": "Icon used while a link exists."
				},
				{
					"name": "unlinkIcon",
					"type": "IconType",
					"default": "WordPress `linkOff` icon",
					"required": false,
					"description": "Icon for the unlink action."
				},
				{
					"name": "toolbarGroupClassName",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class name on the generated `ToolbarGroup`."
				},
				{
					"name": "pickerProps",
					"type": "BlockLinkControlPickerProps",
					"default": "undefined",
					"required": false,
					"description": "Additional picker and popover options except controlled link props. The native text field is enabled by default."
				}
			]
		},
		{
			"name": "LinkPickerControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/LinkPickerControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/LinkPickerControl/README.md",
			"summary": "Adds WordPress' native link picker to any consumer-rendered element. It owns popover state and link normalization, while a render prop keeps the trigger and the block's markup under the consumer's control.",
			"props": [
				{
					"name": "value",
					"type": "LinkValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable link value."
				},
				{
					"name": "onChange",
					"type": "( value: LinkValue ) => void",
					"default": null,
					"required": true,
					"description": "Receives normalized URL, title, entity data, settings and `rel`."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "onChange( {} )",
					"required": false,
					"description": "Custom unlink behavior. The picker closes afterward."
				},
				{
					"name": "children",
					"type": "( args: LinkPickerRenderArgs ) => ReactNode",
					"default": null,
					"required": true,
					"description": "Renders any trigger UI and receives its anchor ref and actions."
				},
				{
					"name": "isOpen",
					"type": "boolean",
					"default": "undefined",
					"required": false,
					"description": "Controls popover visibility externally."
				},
				{
					"name": "defaultOpen",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Initial visibility when uncontrolled."
				},
				{
					"name": "onOpenChange",
					"type": "( isOpen: boolean ) => void",
					"default": "undefined",
					"required": false,
					"description": "Observes open/close requests in either mode."
				},
				{
					"name": "settings",
					"type": "LinkSetting[]",
					"default": "New-tab and nofollow",
					"required": false,
					"description": "Settings shown in WordPress' link settings drawer."
				},
				{
					"name": "suggestionsQuery",
					"type": "LinkSuggestionsQuery",
					"default": "undefined",
					"required": false,
					"description": "Restricts suggestions, e.g. to one post type or taxonomy."
				},
				{
					"name": "showSuggestions",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Enables search suggestions."
				},
				{
					"name": "showInitialSuggestions",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows suggestions before typing, matching WordPress' native picker."
				},
				{
					"name": "forceIsEditingLink",
					"type": "boolean",
					"default": "true` for an empty link",
					"required": false,
					"description": "Forces the URL search/editor instead of the saved-link preview."
				},
				{
					"name": "noDirectEntry",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Prevents arbitrary URL entry."
				},
				{
					"name": "noURLSuggestion",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Hides the fallback that treats typed text as a URL."
				},
				{
					"name": "hasTextControl",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Shows WordPress' title input in the picker."
				},
				{
					"name": "handleEntities",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Locks an entity link until it is explicitly unlinked."
				},
				{
					"name": "hasRichPreviews",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Enables WordPress' rich preview for selected entities."
				},
				{
					"name": "searchInputPlaceholder",
					"type": "string",
					"default": "WordPress default",
					"required": false,
					"description": "Picker search-input placeholder."
				},
				{
					"name": "popoverPlacement",
					"type": "PopoverPlacement",
					"default": "'bottom-start'",
					"required": false,
					"description": "Placement relative to the anchored element."
				},
				{
					"name": "popoverOffset",
					"type": "number",
					"default": "8",
					"required": false,
					"description": "Gap from the anchor in pixels."
				},
				{
					"name": "popoverNoArrow",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Hides the popover arrow."
				},
				{
					"name": "popoverClassName",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on the popover."
				},
				{
					"name": "popoverFocusOnMount",
					"type": "'firstElement' | boolean",
					"default": "'firstElement'",
					"required": false,
					"description": "Controls focus when the popover opens."
				},
				{
					"name": "popoverAnimate",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Animates the popover when enabled; native inline links disable it."
				},
				{
					"name": "popoverShift",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shifts the popover to keep it inside the viewport."
				},
				{
					"name": "popoverConstrainTabbing",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Keeps tab navigation inside the open popover."
				},
				{
					"name": "popoverHeader",
					"type": "ReactNode",
					"default": "undefined",
					"required": false,
					"description": "Content above WordPress' picker."
				},
				{
					"name": "popoverFooter",
					"type": "ReactNode",
					"default": "undefined",
					"required": false,
					"description": "Content below WordPress' picker."
				}
			]
		},
		{
			"name": "LinkText",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/LinkText",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/LinkText/README.md",
			"summary": "Provides editable `RichText` rendered as an anchor and a native-style link action in the inline block toolbar. It is the ready-made path for CTA labels, inline links and lists of editable links.",
			"props": [
				{
					"name": "text",
					"type": "string",
					"default": "''",
					"required": false,
					"description": "Current RichText content."
				},
				{
					"name": "onTextChange",
					"type": "( text: string ) => void",
					"default": null,
					"required": true,
					"description": "Updates the text attribute."
				},
				{
					"name": "link",
					"type": "LinkValue",
					"default": "{}",
					"required": false,
					"description": "Current destination and link settings."
				},
				{
					"name": "onLinkChange",
					"type": "( link: LinkValue ) => void",
					"default": null,
					"required": true,
					"description": "Updates the normalized link attribute."
				},
				{
					"name": "onLinkRemove",
					"type": "() => void",
					"default": "onLinkChange( {} )",
					"required": false,
					"description": "Custom unlink behavior."
				},
				{
					"name": "placeholder",
					"type": "string",
					"default": "'Link text…'",
					"required": false,
					"description": "Placeholder for empty text."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on the editor anchor."
				},
				{
					"name": "ariaLabel",
					"type": "string",
					"default": "Text or `'Link text'",
					"required": false,
					"description": "Accessible name for the editable anchor."
				},
				{
					"name": "allowedFormats",
					"type": "string[]",
					"default": "[]",
					"required": false,
					"description": "RichText formats permitted inside the link."
				},
				{
					"name": "disableLineBreaks",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Prevents multiline link labels."
				},
				{
					"name": "showIncompleteWarning",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Shows an editor-only warning if text or a safe URL is missing."
				},
				{
					"name": "incompleteWarningText",
					"type": "string",
					"default": "'Link text or URL is missing'",
					"required": false,
					"description": "Warning tooltip and accessible label."
				},
				{
					"name": "warningSuffix",
					"type": "ReactNode",
					"default": "undefined",
					"required": false,
					"description": "Extra content beside the warning icon."
				},
				{
					"name": "pickerProps",
					"type": "LinkTextPickerProps",
					"default": "undefined",
					"required": false,
					"description": "Additional picker and popover options except its controlled link props."
				},
				{
					"name": "richTextProps",
					"type": "Record<string, unknown>",
					"default": "undefined",
					"required": false,
					"description": "Additional RichText props; LinkText's controlled props take precedence."
				},
				{
					"name": "showToolbarButton",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Adds the native-style link action to `BlockControls`."
				},
				{
					"name": "toolbarLabel",
					"type": "string",
					"default": "'Link'",
					"required": false,
					"description": "Accessible title for the toolbar action."
				},
				{
					"name": "toolbarIcon",
					"type": "IconType",
					"default": "WordPress `link` icon",
					"required": false,
					"description": "Toolbar icon used while no link exists."
				},
				{
					"name": "toolbarEditIcon",
					"type": "IconType",
					"default": "Link-with-pencil icon",
					"required": false,
					"description": "Toolbar icon used while a link exists."
				}
			]
		},
		{
			"name": "MediaCanvasControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/MediaCanvasControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/MediaCanvasControl/README.md",
			"summary": "Renders a media placeholder before selection and an image/video preview with compact replace/remove actions afterward. Each action can be disabled independently.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable media."
				},
				{
					"name": "onChange",
					"type": "MediaChangeHandler",
					"default": null,
					"required": true,
					"description": "Receives normalized media selections."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "onChange( {} )",
					"required": false,
					"description": "Custom clearing behavior."
				},
				{
					"name": "actions",
					"type": "MediaActionsConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls select, replace and remove."
				},
				{
					"name": "sources",
					"type": "MediaSourcesConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls library, upload, URL, featured image and drop zone."
				},
				{
					"name": "placeholder",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Renders the native-style empty canvas surface."
				},
				{
					"name": "selectLabel",
					"type": "string",
					"default": "'Select media'",
					"required": false,
					"description": "Initial selection label."
				},
				{
					"name": "replaceLabel",
					"type": "string",
					"default": "'Replace media'",
					"required": false,
					"description": "Existing-media action label."
				},
				{
					"name": "removeLabel",
					"type": "string",
					"default": "'Remove media'",
					"required": false,
					"description": "Clear action label."
				},
				{
					"name": "placeholderLabel",
					"type": "string",
					"default": "'Image'",
					"required": false,
					"description": "Placeholder heading."
				},
				{
					"name": "placeholderInstructions",
					"type": "string",
					"default": "selection guidance",
					"required": false,
					"description": "Placeholder help text."
				},
				{
					"name": "pickerProps",
					"type": "MediaCanvasPickerProps",
					"default": "undefined",
					"required": false,
					"description": "Native picker options except controlled props."
				},
				{
					"name": "previewProps",
					"type": "Omit<MediaPreviewProps, 'value'>",
					"default": "undefined",
					"required": false,
					"description": "Media preview configuration."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Canvas/placeholder class name."
				},
				{
					"name": "style",
					"type": "CSSProperties",
					"default": "undefined",
					"required": false,
					"description": "Canvas wrapper style after selection."
				}
			]
		},
		{
			"name": "MediaControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/MediaControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/MediaControl/README.md",
			"summary": "The complete single-media editor composed from `MediaCanvasControl`, `MediaToolbarControl` and `MediaSidebarControl`. Every location can be disabled, and each location independently controls its select, replace and remove actions.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable media."
				},
				{
					"name": "onChange",
					"type": "MediaChangeHandler",
					"default": null,
					"required": true,
					"description": "Receives normalized selections."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "onChange( {} )",
					"required": false,
					"description": "Shared custom remove behavior."
				},
				{
					"name": "focalPoint",
					"type": "MediaFocalPoint",
					"default": "undefined",
					"required": false,
					"description": "Focal point passed to the sidebar."
				},
				{
					"name": "onFocalPointChange",
					"type": "( value: MediaFocalPoint | undefined ) => void",
					"default": "undefined",
					"required": false,
					"description": "Enables focal-point editing."
				},
				{
					"name": "allowedTypes",
					"type": "string[]",
					"default": "['image']",
					"required": false,
					"description": "Default allowed types for every location."
				},
				{
					"name": "imageSize",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Default image rendition for every location."
				},
				{
					"name": "disabled",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Disables actions in every location."
				},
				{
					"name": "sources",
					"type": "MediaSourcesConfig",
					"default": "all enabled",
					"required": false,
					"description": "Default media-source visibility for every location."
				},
				{
					"name": "resetFocalPointOnChange",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Resets focal point after replace/remove."
				},
				{
					"name": "canvas",
					"type": "false | MediaControlCanvasOptions",
					"default": "{}",
					"required": false,
					"description": "Configures or disables inline editing."
				},
				{
					"name": "toolbar",
					"type": "false | MediaControlToolbarOptions",
					"default": "{}",
					"required": false,
					"description": "Configures or disables toolbar editing."
				},
				{
					"name": "sidebar",
					"type": "false | MediaControlSidebarOptions",
					"default": "{}",
					"required": false,
					"description": "Configures or disables inspector editing."
				}
			]
		},
		{
			"name": "MediaPickerControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/MediaPickerControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/MediaPickerControl/README.md",
			"summary": "Connects any consumer-rendered trigger to WordPress' native media modal. A render prop exposes `open`, selection state and the current select/replace action, while selections are normalized to a small serializable `MediaValue`.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable media value."
				},
				{
					"name": "onChange",
					"type": "MediaChangeHandler",
					"default": null,
					"required": true,
					"description": "Receives normalized and native media values."
				},
				{
					"name": "children",
					"type": "( args: MediaPickerRenderArgs ) => ReactElement | null",
					"default": null,
					"required": true,
					"description": "Renders the modal trigger."
				},
				{
					"name": "allowedTypes",
					"type": "string[]",
					"default": "['image']",
					"required": false,
					"description": "Allowed WordPress media or MIME types."
				},
				{
					"name": "imageSize",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Preferred image rendition with full-size fallback."
				},
				{
					"name": "disabled",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Makes the exposed `open` function a no-op."
				},
				{
					"name": "title",
					"type": "string",
					"default": "WordPress default",
					"required": false,
					"description": "Native media modal title."
				},
				{
					"name": "modalClass",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Class name added to the native modal."
				},
				{
					"name": "onClose",
					"type": "() => void",
					"default": "undefined",
					"required": false,
					"description": "Called whenever the media modal closes."
				},
				{
					"name": "fallback",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered when the user cannot upload media."
				}
			]
		},
		{
			"name": "MediaSidebarControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/MediaSidebarControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/MediaSidebarControl/README.md",
			"summary": "Adds a media panel to `InspectorControls` with independently configurable actions and one of three preview modes: static media, interactive focal point, or no preview.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable media."
				},
				{
					"name": "onChange",
					"type": "MediaChangeHandler",
					"default": null,
					"required": true,
					"description": "Receives normalized selections."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "onChange( {} )",
					"required": false,
					"description": "Custom clearing behavior."
				},
				{
					"name": "actions",
					"type": "MediaActionsConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls select, replace and remove."
				},
				{
					"name": "sources",
					"type": "MediaSourcesConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls library, upload, URL, featured image and drop zone."
				},
				{
					"name": "preview",
					"type": "false | 'media' | 'focal-point'",
					"default": "'media'",
					"required": false,
					"description": "Selects or disables sidebar preview UI."
				},
				{
					"name": "focalPoint",
					"type": "MediaFocalPoint",
					"default": "undefined",
					"required": false,
					"description": "Controlled focal point."
				},
				{
					"name": "onFocalPointChange",
					"type": "( value: MediaFocalPoint | undefined ) => void",
					"default": "undefined",
					"required": false,
					"description": "Enables focal-point editing and receives changes."
				},
				{
					"name": "title",
					"type": "string",
					"default": "'Media settings'",
					"required": false,
					"description": "Inspector panel title."
				},
				{
					"name": "initialOpen",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Initial panel expansion state."
				},
				{
					"name": "selectLabel",
					"type": "string",
					"default": "'Select media'",
					"required": false,
					"description": "Initial action label."
				},
				{
					"name": "replaceLabel",
					"type": "string",
					"default": "'Replace media'",
					"required": false,
					"description": "Existing-media action label."
				},
				{
					"name": "removeLabel",
					"type": "string",
					"default": "'Remove media'",
					"required": false,
					"description": "Clear action label."
				},
				{
					"name": "pickerProps",
					"type": "MediaSidebarPickerProps",
					"default": "undefined",
					"required": false,
					"description": "Native picker options except controlled props."
				},
				{
					"name": "previewProps",
					"type": "Omit<MediaPreviewProps, 'value'>",
					"default": "undefined",
					"required": false,
					"description": "Static preview options."
				},
				{
					"name": "focalPointProps",
					"type": "Omit<MediaFocalPointControlProps, controlled props>",
					"default": "undefined",
					"required": false,
					"description": "Focal-point display options."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Additional `PanelBody` class name."
				}
			]
		},
		{
			"name": "MediaSourceControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/MediaSourceControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/MediaSourceControl/README.md",
			"summary": "Provides the native image-block source workflow as either inline placeholder buttons or a replacement dropdown: media library, upload, direct URL, current post featured image and drag-and-drop. Every source is independently configurable.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable media value."
				},
				{
					"name": "onChange",
					"type": "MediaChangeHandler",
					"default": null,
					"required": true,
					"description": "Receives normalized attachment, URL and featured-image selections."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "undefined",
					"required": false,
					"description": "Enables the reset item while a value exists."
				},
				{
					"name": "sources",
					"type": "MediaSourcesConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls library, upload, URL, featured image and drop zone."
				},
				{
					"name": "variant",
					"type": "'buttons' | 'dropdown'",
					"default": "'dropdown'",
					"required": false,
					"description": "Selects inline placeholder buttons or the replacement menu."
				},
				{
					"name": "allowedTypes",
					"type": "string[]",
					"default": "['image']",
					"required": false,
					"description": "Allowed WordPress media types or MIME types."
				},
				{
					"name": "accept",
					"type": "string",
					"default": "inferred",
					"required": false,
					"description": "Native file-input accept value; overrides inference from `allowedTypes`."
				},
				{
					"name": "imageSize",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Preferred WordPress image rendition."
				},
				{
					"name": "disabled",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Disables every source interaction."
				},
				{
					"name": "featuredMedia",
					"type": "MediaValue | null",
					"default": "auto-resolved",
					"required": false,
					"description": "Overrides the current post featured image; `null` marks it unavailable."
				},
				{
					"name": "onFilesUpload",
					"type": "( files: File[] | FileList ) => void",
					"default": "undefined",
					"required": false,
					"description": "Runs before direct files enter WordPress' uploader."
				},
				{
					"name": "onError",
					"type": "( message: string ) => void",
					"default": "undefined",
					"required": false,
					"description": "Receives upload errors."
				},
				{
					"name": "title",
					"type": "string",
					"default": "WordPress default",
					"required": false,
					"description": "Native media modal title."
				},
				{
					"name": "modalClass",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Class added to the native media modal."
				},
				{
					"name": "onClose",
					"type": "() => void",
					"default": "undefined",
					"required": false,
					"description": "Runs whenever the media modal closes."
				},
				{
					"name": "fallback",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Replaces permission-gated library/upload actions."
				},
				{
					"name": "labels",
					"type": "Partial<MediaSourceLabels>",
					"default": "translated defaults",
					"required": false,
					"description": "Overrides source, toggle, reset and URL-form labels."
				},
				{
					"name": "children",
					"type": "( args: MediaSourceToggleArgs ) => ReactElement | null",
					"default": "default button",
					"required": false,
					"description": "Custom dropdown toggle; ignored by `variant=\"buttons\"`."
				}
			]
		},
		{
			"name": "MediaToolbarControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/MediaToolbarControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/MediaToolbarControl/README.md",
			"summary": "Adds state-aware select/replace and remove actions to Gutenberg's block toolbar without rendering any block content or inspector UI.",
			"props": [
				{
					"name": "value",
					"type": "MediaValue",
					"default": "{}",
					"required": false,
					"description": "Current serializable media."
				},
				{
					"name": "onChange",
					"type": "MediaChangeHandler",
					"default": null,
					"required": true,
					"description": "Receives normalized media selections."
				},
				{
					"name": "onRemove",
					"type": "() => void",
					"default": "onChange( {} )",
					"required": false,
					"description": "Custom clearing behavior."
				},
				{
					"name": "actions",
					"type": "MediaActionsConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls select, replace and remove."
				},
				{
					"name": "sources",
					"type": "MediaSourcesConfig",
					"default": "all enabled",
					"required": false,
					"description": "Independently controls library, upload, URL, featured image and drop zone."
				},
				{
					"name": "group",
					"type": "BlockControlsGroup",
					"default": "'other'",
					"required": false,
					"description": "Toolbar group receiving the actions."
				},
				{
					"name": "selectLabel",
					"type": "string",
					"default": "'Select media'",
					"required": false,
					"description": "Accessible initial action label."
				},
				{
					"name": "replaceLabel",
					"type": "string",
					"default": "'Replace media'",
					"required": false,
					"description": "Accessible existing-media label."
				},
				{
					"name": "removeLabel",
					"type": "string",
					"default": "'Remove media'",
					"required": false,
					"description": "Accessible clear label."
				},
				{
					"name": "toolbarGroupClassName",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class on `ToolbarGroup`."
				},
				{
					"name": "pickerProps",
					"type": "MediaToolbarPickerProps",
					"default": "undefined",
					"required": false,
					"description": "Native picker options except controlled props."
				}
			]
		},
		{
			"name": "ResponsiveControl",
			"kind": "control",
			"category": "controls",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/controls/ResponsiveControl",
			"categoryImport": "@isudev/gutenberg/controls",
			"readme": "src/controls/ResponsiveControl/README.md",
			"summary": "Makes any control responsive: renders a label and a breakpoint switcher, then hands the resolved per-breakpoint value to a render prop.",
			"props": [
				{
					"name": "attrName",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Base attribute name, e.g. `'columnGap'`."
				},
				{
					"name": "attributes",
					"type": "Record<string, unknown>",
					"default": null,
					"required": true,
					"description": "The block's attributes."
				},
				{
					"name": "setAttributes",
					"type": "( next: Record<string, unknown> ) => void",
					"default": null,
					"required": true,
					"description": "The block's `setAttributes`."
				},
				{
					"name": "children",
					"type": "( args: ResponsiveControlRenderArgs ) => ReactNode",
					"default": null,
					"required": true,
					"description": "Renders the control with resolved values."
				},
				{
					"name": "label",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Visible label shown beside the switcher."
				},
				{
					"name": "variant",
					"type": "'inline' | 'dropdown'",
					"default": "'inline'",
					"required": false,
					"description": "Switcher layout."
				},
				{
					"name": "breakpoints",
					"type": "Breakpoint[]",
					"default": "DEFAULT_BREAKPOINTS",
					"required": false,
					"description": "The breakpoint set to offer."
				},
				{
					"name": "syncToEditor",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Push breakpoint changes to the editor's device preview."
				},
				{
					"name": "syncFromEditor",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Follow the editor's device preview."
				},
				{
					"name": "showReset",
					"type": "boolean",
					"default": "true",
					"required": false,
					"description": "Show a reset button when the active breakpoint has an override."
				},
				{
					"name": "className",
					"type": "string",
					"default": "undefined",
					"required": false,
					"description": "Extra class name on the root element."
				}
			]
		},
		{
			"name": "RadioField",
			"kind": "field",
			"category": "fields",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/fields/RadioField",
			"categoryImport": "@isudev/gutenberg/fields",
			"readme": "src/fields/RadioField/README.md",
			"summary": "A radio-button field that composes an options source and a value binding independently — pick a static list or a dynamic source for the choices, and separately bind the value to post meta, a taxonomy, or a custom store.",
			"props": [
				{
					"name": "options",
					"type": "FieldOption[]",
					"default": null,
					"required": false,
					"description": "Static list of choices; takes precedence over `optionsSource`."
				},
				{
					"name": "optionsSource",
					"type": "OptionsSource",
					"default": null,
					"required": false,
					"description": "Dynamic source for the choices — `terms`, `posts`, `users`, `postTypes`, or `manual`."
				},
				{
					"name": "valueBinding",
					"type": "ValueBinding",
					"default": null,
					"required": false,
					"description": "Where the value is read from and written to — `meta`, `taxonomy`, or `custom`."
				},
				{
					"name": "value",
					"type": "unknown",
					"default": null,
					"required": false,
					"description": "Controlled value; when present the field is controlled and `valueBinding` is ignored."
				},
				{
					"name": "onChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Controlled change handler; its presence alone also makes the field controlled."
				},
				{
					"name": "onValueChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Called after the resolved `onChange` runs, regardless of binding mode."
				},
				{
					"name": "loadingComponent",
					"type": "ReactNode",
					"default": null,
					"required": false,
					"description": "Rendered instead of the control while options or the value are resolving."
				},
				{
					"name": "errorComponent",
					"type": "ReactNode",
					"default": null,
					"required": false,
					"description": "Rendered instead of the control when resolving fails."
				}
			]
		},
		{
			"name": "SelectField",
			"kind": "field",
			"category": "fields",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/fields/SelectField",
			"categoryImport": "@isudev/gutenberg/fields",
			"readme": "src/fields/SelectField/README.md",
			"summary": "A select field that composes an options source and a value binding independently — pick a static list or a dynamic source for the choices, and separately bind the value to post meta, a taxonomy, or a custom store.",
			"props": [
				{
					"name": "options",
					"type": "FieldOption[]",
					"default": null,
					"required": false,
					"description": "Static list of choices; takes precedence over `optionsSource`."
				},
				{
					"name": "optionsSource",
					"type": "OptionsSource",
					"default": null,
					"required": false,
					"description": "Dynamic source for the choices — `terms`, `posts`, `users`, `postTypes`, or `manual`."
				},
				{
					"name": "valueBinding",
					"type": "ValueBinding",
					"default": null,
					"required": false,
					"description": "Where the value is read from and written to — `meta`, `taxonomy`, or `custom`."
				},
				{
					"name": "value",
					"type": "unknown",
					"default": null,
					"required": false,
					"description": "Controlled value; when present the field is controlled and `valueBinding` is ignored."
				},
				{
					"name": "onChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Controlled change handler; its presence alone also makes the field controlled."
				},
				{
					"name": "onValueChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Called after the resolved `onChange` runs, regardless of binding mode."
				},
				{
					"name": "loadingComponent",
					"type": "ReactNode",
					"default": null,
					"required": false,
					"description": "Rendered instead of the control while options or the value are resolving."
				},
				{
					"name": "errorComponent",
					"type": "ReactNode",
					"default": null,
					"required": false,
					"description": "Rendered instead of the control when resolving fails."
				}
			]
		},
		{
			"name": "MetaRadioControl",
			"kind": "control",
			"category": "meta",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/meta/MetaRadioControl",
			"categoryImport": "@isudev/gutenberg/meta",
			"readme": "src/meta/MetaRadioControl/README.md",
			"summary": "A radio group bound to a single post meta value — pass the meta key, get a working `RadioControl` that reads and writes it, with the options coming from wherever you like.",
			"props": [
				{
					"name": "metaKey",
					"type": "string",
					"default": null,
					"required": true,
					"description": "The post meta key to read from and write to."
				},
				{
					"name": "postType",
					"type": "string",
					"default": "current post type",
					"required": false,
					"description": "Overrides which post type the meta belongs to; otherwise the post type currently open in the editor is used."
				},
				{
					"name": "options",
					"type": "FieldOption[]",
					"default": null,
					"required": false,
					"description": "Static options; takes precedence over `optionsSource` when both are given."
				},
				{
					"name": "optionsSource",
					"type": "OptionsSource",
					"default": null,
					"required": false,
					"description": "Dynamic options source (`terms`, `posts`, `users`, `postTypes`, `manual`)."
				},
				{
					"name": "value",
					"type": "unknown",
					"default": null,
					"required": false,
					"description": "Controlled value; when set, the meta binding is ignored entirely — you likely want `RadioField` instead."
				},
				{
					"name": "onChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Controlled change handler; its presence alone marks the field as controlled, same caveat as `value`."
				},
				{
					"name": "onValueChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Runs after the meta value has been written (or after a controlled `onChange`) — a hook for side effects, not a substitute for the binding."
				},
				{
					"name": "loadingComponent",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered while the meta value or its options are still resolving."
				},
				{
					"name": "errorComponent",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered if resolving the value or options fails."
				}
			]
		},
		{
			"name": "MetaSelectControl",
			"kind": "control",
			"category": "meta",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/meta/MetaSelectControl",
			"categoryImport": "@isudev/gutenberg/meta",
			"readme": "src/meta/MetaSelectControl/README.md",
			"summary": "A dropdown bound to a single post meta value — pass the meta key, get a working `SelectControl` that reads and writes it, with the options coming from wherever you like.",
			"props": [
				{
					"name": "metaKey",
					"type": "string",
					"default": null,
					"required": true,
					"description": "The post meta key to read from and write to."
				},
				{
					"name": "postType",
					"type": "string",
					"default": "current post type",
					"required": false,
					"description": "Overrides which post type the meta belongs to; otherwise the post type currently open in the editor is used."
				},
				{
					"name": "options",
					"type": "FieldOption[]",
					"default": null,
					"required": false,
					"description": "Static options; takes precedence over `optionsSource` when both are given."
				},
				{
					"name": "optionsSource",
					"type": "OptionsSource",
					"default": null,
					"required": false,
					"description": "Dynamic options source (`terms`, `posts`, `users`, `postTypes`, `manual`)."
				},
				{
					"name": "value",
					"type": "unknown",
					"default": null,
					"required": false,
					"description": "Controlled value; when set, the meta binding is ignored entirely — you likely want `SelectField` instead."
				},
				{
					"name": "onChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Controlled change handler; its presence alone marks the field as controlled, same caveat as `value`."
				},
				{
					"name": "onValueChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Runs after the meta value has been written (or after a controlled `onChange`) — a hook for side effects, not a substitute for the binding."
				},
				{
					"name": "loadingComponent",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered while the meta value or its options are still resolving."
				},
				{
					"name": "errorComponent",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered if resolving the value or options fails."
				}
			]
		},
		{
			"name": "TaxonomySelectControl",
			"kind": "control",
			"category": "taxonomy",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/taxonomy/TaxonomySelectControl",
			"categoryImport": "@isudev/gutenberg/taxonomy",
			"readme": "src/taxonomy/TaxonomySelectControl/README.md",
			"summary": "A dropdown whose options are a taxonomy's terms and whose value is that same taxonomy's terms on the current post — pass the taxonomy name, get a working single-term picker.",
			"props": [
				{
					"name": "taxonomy",
					"type": "string",
					"default": null,
					"required": true,
					"description": "The taxonomy whose terms are both the options and the stored value."
				},
				{
					"name": "restBase",
					"type": "string",
					"default": "resolved from `taxonomy`, falling back to the slug",
					"required": false,
					"description": "The REST base used to read/write the post's terms. Pass it whenever the taxonomy's REST base isn't identical to its slug (`category` → `categories`, `post_tag` → `tags`): until `getTaxonomy()` resolves, the binding uses the slug and touches the wrong entity property."
				},
				{
					"name": "options",
					"type": "FieldOption[]",
					"default": null,
					"required": false,
					"description": "Static options that replace the fetched taxonomy terms entirely."
				},
				{
					"name": "value",
					"type": "unknown",
					"default": null,
					"required": false,
					"description": "Controlled value; when set, the taxonomy binding is ignored entirely — you likely want `SelectField` instead."
				},
				{
					"name": "onChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Controlled change handler; its presence alone marks the field as controlled, same caveat as `value`."
				},
				{
					"name": "onValueChange",
					"type": "( value: unknown ) => void",
					"default": null,
					"required": false,
					"description": "Runs after the post's terms have been written (or after a controlled `onChange`) — a hook for side effects, not a substitute for the binding."
				},
				{
					"name": "loadingComponent",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered while the term list or the post's terms are still resolving."
				},
				{
					"name": "errorComponent",
					"type": "ReactNode",
					"default": "null",
					"required": false,
					"description": "Rendered if fetching the terms fails."
				}
			]
		},
		{
			"name": "useBreakpoint",
			"kind": "hook",
			"category": "hooks",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/hooks/useBreakpoint",
			"categoryImport": "@isudev/gutenberg/hooks",
			"readme": "src/hooks/useBreakpoint/README.md",
			"summary": "Owns which breakpoint a responsive setting is currently being edited for, with optional two-way sync to the editor's device preview.",
			"props": [
				{
					"name": "initial",
					"type": "string",
					"default": "base breakpoint id",
					"required": false,
					"description": "Breakpoint selected on first render."
				},
				{
					"name": "breakpoints",
					"type": "Breakpoint[]",
					"default": "DEFAULT_BREAKPOINTS",
					"required": false,
					"description": "The breakpoint set."
				},
				{
					"name": "syncToEditor",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Push the selection to the editor's device preview."
				},
				{
					"name": "syncFromEditor",
					"type": "boolean",
					"default": "false",
					"required": false,
					"description": "Follow the editor's device preview."
				}
			]
		},
		{
			"name": "useCurrentPostId",
			"kind": "hook",
			"category": "hooks",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/hooks/useCurrentPostId",
			"categoryImport": "@isudev/gutenberg/hooks",
			"readme": "src/hooks/useCurrentPostId/README.md",
			"summary": "Returns the ID of the post currently open in the editor.",
			"props": []
		},
		{
			"name": "useCurrentPostType",
			"kind": "hook",
			"category": "hooks",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/hooks/useCurrentPostType",
			"categoryImport": "@isudev/gutenberg/hooks",
			"readme": "src/hooks/useCurrentPostType/README.md",
			"summary": "Returns the post type of the post currently open in the editor.",
			"props": []
		},
		{
			"name": "useDebouncedValue",
			"kind": "hook",
			"category": "hooks",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/hooks/useDebouncedValue",
			"categoryImport": "@isudev/gutenberg/hooks",
			"readme": "src/hooks/useDebouncedValue/README.md",
			"summary": "Returns a debounced copy of a value that only updates after a delay of no further changes.",
			"props": [
				{
					"name": "value",
					"type": "T",
					"default": null,
					"required": true,
					"description": "The value to debounce."
				},
				{
					"name": "delay",
					"type": "number",
					"default": "300",
					"required": false,
					"description": "Milliseconds to wait after the last change before updating."
				}
			]
		},
		{
			"name": "usePrevious",
			"kind": "hook",
			"category": "hooks",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/hooks/usePrevious",
			"categoryImport": "@isudev/gutenberg/hooks",
			"readme": "src/hooks/usePrevious/README.md",
			"summary": "Returns the value a component held on its previous committed render.",
			"props": [
				{
					"name": "value",
					"type": "T",
					"default": null,
					"required": true,
					"description": "The value to track across renders."
				}
			]
		},
		{
			"name": "useResponsiveAttribute",
			"kind": "hook",
			"category": "hooks",
			"status": "stable",
			"since": "0.1.0",
			"import": "@isudev/gutenberg/hooks/useResponsiveAttribute",
			"categoryImport": "@isudev/gutenberg/hooks",
			"readme": "src/hooks/useResponsiveAttribute/README.md",
			"summary": "Reads and writes one logical setting across a breakpoint set, resolving the cascade so a control always has the right own value, inherited value and override state for whichever breakpoint is active.",
			"props": [
				{
					"name": "attrName",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Base attribute name, e.g. `'columnGap'`."
				},
				{
					"name": "breakpoint",
					"type": "string",
					"default": null,
					"required": true,
					"description": "Currently selected breakpoint id."
				},
				{
					"name": "attributes",
					"type": "Record<string, unknown>",
					"default": null,
					"required": true,
					"description": "The block's attributes."
				},
				{
					"name": "setAttributes",
					"type": "( next: Record<string, unknown> ) => void",
					"default": null,
					"required": true,
					"description": "The block's `setAttributes`."
				},
				{
					"name": "breakpoints",
					"type": "Breakpoint[]",
					"default": "DEFAULT_BREAKPOINTS",
					"required": false,
					"description": "The breakpoint set."
				}
			]
		}
	]
}
