{
 "$comment": "Generated by scripts/build_www_capabilities.py from cure-api's mcp_schema.design_capabilities(). Do not edit by hand.",
 "generated": "2026-09-17",
 "components": {
  "text_field": {
   "category": "input",
   "component": "UInput",
   "supports": {
    "fieldTypes": [
     "text",
     "email",
     "url",
     "phone",
     "number"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ],
    "variants": [
     "outline",
     "soft",
     "subtle",
     "ghost",
     "none"
    ]
   }
  },
  "textarea": {
   "category": "input",
   "component": "UTextarea",
   "supports": {
    "fieldTypes": [
     "text"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ],
    "variants": [
     "outline",
     "soft",
     "subtle",
     "ghost",
     "none"
    ],
    "autoresize": true
   }
  },
  "select": {
   "category": "input",
   "component": "USelect",
   "supports": {
    "fieldTypes": [
     "select",
     "enum",
     "reference"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ],
    "variants": [
     "outline",
     "soft",
     "subtle",
     "ghost",
     "none"
    ]
   }
  },
  "combobox": {
   "category": "input",
   "component": "USelect",
   "supports": {
    "fieldTypes": [
     "select",
     "enum",
     "reference"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ],
    "searchable": true,
    "creatable": true
   },
   "note": "USelect in searchable mode; Cure has no separate combobox component."
  },
  "date_picker": {
   "category": "input",
   "component": "UInputDate",
   "supports": {
    "fieldTypes": [
     "date",
     "datetime"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ]
   }
  },
  "user_picker": {
   "category": "input",
   "component": "USelect",
   "supports": {
    "fieldTypes": [
     "reference"
    ],
    "searchable": true
   },
   "note": "No dedicated user picker. Bind a USelect to a reference field that points at a user record."
  },
  "group_picker": {
   "category": "input",
   "component": "USelect",
   "supports": {
    "fieldTypes": [
     "reference"
    ],
    "searchable": true
   },
   "note": "No dedicated group picker. Bind a USelect to a reference field that points at a group record."
  },
  "record_header": {
   "category": "layout",
   "component": "Heading",
   "supports": {
    "levels": [
     1,
     2,
     3,
     4,
     5,
     6
    ]
   },
   "note": "Compose with a TextLabel kicker and a badge row; there is no single record-header component."
  },
  "status_badge": {
   "category": "display",
   "component": "UBadge",
   "supports": {
    "fieldTypes": [
     "select",
     "enum",
     "text",
     "boolean"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ],
    "variants": [
     "solid",
     "outline",
     "soft",
     "subtle"
    ],
    "colors": [
     "primary",
     "secondary",
     "success",
     "info",
     "warning",
     "error",
     "neutral"
    ]
   }
  },
  "priority_badge": {
   "category": "display",
   "component": "UBadge",
   "supports": {
    "fieldTypes": [
     "select",
     "enum",
     "text"
    ],
    "sizes": [
     "xs",
     "sm",
     "md",
     "lg",
     "xl"
    ],
    "variants": [
     "solid",
     "outline",
     "soft",
     "subtle"
    ],
    "colors": [
     "primary",
     "secondary",
     "success",
     "info",
     "warning",
     "error",
     "neutral"
    ]
   }
  },
  "panel": {
   "category": "layout",
   "component": "CurePanel",
   "supports": {
    "variants": [
     "plain",
     "blueprint"
    ],
    "collapsible": true
   }
  },
  "tabs": {
   "category": "layout",
   "component": "CureTabs",
   "supports": {
    "childComponent": "CureTabItem"
   }
  },
  "accordion": {
   "category": "layout",
   "component": null,
   "fallback": "CurePanel with props.collapsible = true, one per section."
  },
  "activity_timeline": {
   "category": "recordSet",
   "component": null,
   "fallback": "Scriptable CureSvg bound to the history rows (see scriptable-components.md), or a child CureTable."
  },
  "related_records": {
   "category": "recordSet",
   "component": "CureTable",
   "supports": {
    "modes": [
     "table",
     "cards"
    ],
    "qualifier": true
   }
  },
  "attachments": {
   "category": "fileManagement",
   "component": "UFileUpload",
   "supports": {
    "browser": "CureFileBrowser"
   }
  },
  "comments": {
   "category": "recordSet",
   "component": null,
   "fallback": "Scriptable CureSvg bound to comment rows, or a child CureTable over a comment record."
  },
  "data_table": {
   "category": "recordSet",
   "component": "CureTable",
   "supports": {
    "modes": [
     "table",
     "cards"
    ],
    "qualifier": true,
    "columnFormats": [
     "plain",
     "badge",
     "datetime",
     "number"
    ]
   }
  },
  "metric": {
   "category": "display",
   "component": "CureStatCard",
   "supports": {
    "group": "CureStatSection"
   }
  },
  "chart": {
   "category": "visualization",
   "component": "CureCharts",
   "supports": {
    "alternatives": [
     "CureMetrix",
     "CureCirclePacking"
    ]
   }
  },
  "svg": {
   "category": "recordSet",
   "component": "CureSvg",
   "supports": {
    "scriptable": true,
    "bindings": true,
    "methods": true
   }
  }
 },
 "placeable_via_add_component": [
  "Container",
  "CureButtonGroup",
  "CureCalendar",
  "CureCharts",
  "CureCirclePacking",
  "CureDateTimeInput",
  "CureEditor",
  "CureFileBrowser",
  "CureGantt",
  "CureImage",
  "CureKanban",
  "CureMap",
  "CureMarkdown",
  "CureMetrix",
  "CureMorphNumber",
  "CureNavigation",
  "CurePanelForms",
  "CureProgressTable",
  "CureResourceScheduler",
  "CureStatCard",
  "CureStatSection",
  "CureStatusFlow",
  "CureStatusTimeline",
  "CureSvg",
  "CureText",
  "CureToolbar",
  "Divider",
  "Heading",
  "TextLabel",
  "UAlert",
  "UAvatar",
  "UBadge",
  "UButton",
  "UCalendar",
  "UCheckbox",
  "UCheckboxGroup",
  "UChip",
  "UColorPicker",
  "UDropdownMenu",
  "UEditor",
  "UFieldGroup",
  "UFileUpload",
  "UInput",
  "UInputDate",
  "UInputNumber",
  "UInputTags",
  "UInputTime",
  "UKbd",
  "UPinInput",
  "UProgress",
  "URadioGroup",
  "USelect",
  "USkeleton",
  "USlider",
  "USwitch",
  "UTextarea",
  "UTreeSelect"
 ],
 "accepts_children": [
  "CurePanel",
  "CureTabItem",
  "Container",
  "CureToolbar",
  "CureButtonGroup",
  "CurePanelForms",
  "CureKanban"
 ],
 "intents": {
  "record_status": {
   "component": "UBadge",
   "props": {
    "variant": "soft"
   },
   "from_field": "status",
   "description": "Coloured status pill bound to the record's status/enum field."
  },
  "record_priority": {
   "component": "UBadge",
   "props": {
    "variant": "outline"
   },
   "from_field": "priority",
   "description": "Priority tag bound to the record's priority field."
  },
  "record_title": {
   "component": "Heading",
   "props": {
    "level": 1
   },
   "description": "The record's primary heading (name/title/code field)."
  },
  "record_kicker": {
   "component": "TextLabel",
   "props": {
    "className": "kicker"
   },
   "description": "Small uppercase context label above the title."
  },
  "long_description": {
   "component": "UTextarea",
   "props": {
    "autoresize": true
   },
   "description": "Multi-line free text."
  },
  "short_text": {
   "component": "UInput",
   "props": {},
   "description": "Single-line free text."
  },
  "single_select": {
   "component": "USelect",
   "props": {},
   "description": "One value from a fixed or referenced set."
  },
  "date": {
   "component": "UInputDate",
   "props": {},
   "description": "A single calendar date."
  },
  "user_identity": {
   "component": "USelect",
   "props": {
    "searchable": true
   },
   "description": "Pick a user. Bind to a reference field; no dedicated user picker."
  },
  "group_identity": {
   "component": "USelect",
   "props": {
    "searchable": true
   },
   "description": "Pick a group. Bind to a reference field; no dedicated group picker."
  },
  "related_records": {
   "component": "CureTable",
   "props": {
    "displayMode": "table"
   },
   "description": "Child rows scoped to the open record (set a qualifier)."
  },
  "attachments": {
   "component": "UFileUpload",
   "props": {},
   "description": "File attachments for the record."
  },
  "activity_history": {
   "component": "CureSvg",
   "props": {},
   "description": "Vertical event timeline. No native component; render with a scriptable CureSvg bound to the history rows."
  },
  "comments": {
   "component": "CureSvg",
   "props": {},
   "description": "Threaded comments. No native component; render with a scriptable CureSvg or a child CureTable."
  },
  "metric": {
   "component": "CureStatCard",
   "props": {},
   "description": "A single KPI value with a label."
  },
  "metric_group": {
   "component": "CureStatSection",
   "props": {},
   "description": "A row of KPI cards."
  },
  "chart": {
   "component": "CureCharts",
   "props": {},
   "description": "A data chart."
  },
  "map": {
   "component": "CureMap",
   "props": {},
   "description": "A map with pins from lat/lon fields."
  },
  "custom_visual": {
   "component": "CureSvg",
   "props": {},
   "description": "Anything bespoke - a scriptable CureSvg with svg + javascript + bindings."
  }
 },
 "resolution_order": [
  "explicit_component",
  "intent_default",
  "field_type_default"
 ],
 "layout": {
  "grid": {
   "columns": 12
  },
  "regions": {
   "header": {
    "span": 12,
    "order": 0,
    "role": "full"
   },
   "main": {
    "span": 8,
    "order": 1,
    "role": "main"
   },
   "sidebar": {
    "span": 4,
    "order": 2,
    "role": "sidebar"
   },
   "activity": {
    "span": 12,
    "order": 3,
    "role": "full"
   },
   "footer": {
    "span": 12,
    "order": 4,
    "role": "full"
   }
  },
  "responsive": {
   "grid_columns": 12,
   "breakpoints": {
    "mobile": "< 640px",
    "tablet": "640px - 1024px",
    "desktop": "> 1024px"
   },
   "roles": {
    "main": {
     "desktop": 8,
     "tablet": 7,
     "mobile": 12
    },
    "sidebar": {
     "desktop": 4,
     "tablet": 5,
     "mobile": 12
    },
    "full": {
     "desktop": 12,
     "tablet": 12,
     "mobile": 12
    },
    "half": {
     "desktop": 6,
     "tablet": 6,
     "mobile": 12
    },
    "third": {
     "desktop": 4,
     "tablet": 6,
     "mobile": 12
    },
    "quarter": {
     "desktop": 3,
     "tablet": 6,
     "mobile": 12
    }
   },
   "fallback_rule": "No role and no explicit responsive block: reuse the node's desktop colSpan at tablet; collapse to 12 at mobile."
  }
 },
 "tokens": {
  "colors": {
   "background": "#f8fafc",
   "surface": "#ffffff",
   "surfaceMuted": "#f1f5f9",
   "primary": "#2563eb",
   "secondary": "#64748b",
   "accent": "#b4552d",
   "accent100": "#f6e6dd",
   "accent700": "#8f3f1f",
   "text": "#0f172a",
   "textMuted": "#64748b",
   "border": "#e2e8f0",
   "danger": "#dc2626",
   "warning": "#d97706",
   "success": "#16a34a"
  },
  "typography": {
   "heading": "system-ui, -apple-system, sans-serif",
   "body": "system-ui, -apple-system, sans-serif",
   "label": "system-ui, -apple-system, sans-serif",
   "muted": "system-ui, -apple-system, sans-serif"
  },
  "spacing": {
   "compact": "8px",
   "normal": "16px",
   "comfortable": "24px"
  },
  "radius": {
   "none": "0px",
   "small": "4px",
   "medium": "8px",
   "large": "16px"
  },
  "shadow": {
   "none": "none",
   "small": "0 1px 2px rgba(15, 23, 42, 0.06)",
   "medium": "0 4px 12px rgba(15, 23, 42, 0.10)"
  }
 },
 "events": {
  "click": {
   "template": "button.click",
   "components": [
    "UButton"
   ],
   "config_key": "eventName"
  },
  "change": {
   "template": "field.change",
   "components": [
    "*"
   ],
   "config_key": "fieldId"
  },
  "event": {
   "template": "window.event",
   "components": [
    "CureSvg",
    "UButton"
   ],
   "config_key": "eventName"
  }
 },
 "field_component_compatibility": {
  "text_field": [
   "text",
   "email",
   "url",
   "phone",
   "number"
  ],
  "textarea": [
   "text"
  ],
  "select": [
   "select",
   "enum",
   "reference"
  ],
  "combobox": [
   "select",
   "enum",
   "reference"
  ],
  "date_picker": [
   "date",
   "datetime"
  ],
  "user_picker": [
   "reference"
  ],
  "group_picker": [
   "reference"
  ],
  "status_badge": [
   "select",
   "enum",
   "text",
   "boolean"
  ],
  "priority_badge": [
   "select",
   "enum",
   "text"
  ]
 },
 "patch_operations": [
  "set_span",
  "set_responsive",
  "move",
  "set_variant",
  "set_prop",
  "set_component_type",
  "add_component",
  "remove_component",
  "set_token"
 ],
 "notes": "Cure compiles a semantic DesignSpec to view metadata deterministically; it runs no second LLM layer. Images and POCs are interpreted by the calling agent, never by Cure. See cure://design/components for the design-name view and cure://schema/components for the raw node contract."
}
