What is Infa
Infa Chrome Extension
How to use and install our Chrome Extension
Community
Browse community design systems
Release Notes
Featuring the latest changes to keep you up-to-date
Research Program
Participate in shaping the future of Infa
SOC 2 Type II Compliance Badge
Enterprise Ready
SOC 2 Type II certified for enterprise-level security and compliance
EventsLearnPricing
Sign up for free

Feedback

Share your feedback

Close
Anonymous submissions are auto-posted to #feedback channel. You can also share directly in Slack.

Need help?

Reach out to contact@infa.ai or see docs

Navigation
Search...
⌘ K
Focus sentinel
Close

Search Documentation

PressESCto close
Focus sentinel
Infa Documentation
  • General Information
    • Boards
    • Components
      • Main Components Vs Component Views
      • Component Tagging
      • Component Anatomy
    • Labels
    • Teams
    • Authentication
    • Permissions
      • Inviting People to Teams
      • Inviting People to Boards
    • Billing & Subscription
      • Managing Subscription
      • Promo Code Activation
    • Data Import, Export & Sync
      • Local vs. Cloud Boards
  • App Blocks
    • Building App Blocks
  • Chrome Extension
    • Deep Links
    • Using Labels
    • Updating the Extension
  • Integrations
    • MCP Server
    • Claude Code Plugin
    • External API
    • Progressive Web App
    • Figma Plugin
    • Coda Pack
    • Overview
    • Managing Runs
    • Board Agents
    • Overview
    • Infa Capture
    • Installation
    • Authentication
    • Connect a Board
    • Run Modes
    • Hooks & Agents
    • File Sync
    • CLI Reference
Switch to Light theme
Switch to Dark theme
TermsPrivacyChat with Us
  1. Docs
  2. General Information
  3. Components

Component Anatomy

Visually break down UI components into labeled, typed parts with interactive bounding boxes — designed for both human understanding and AI consumption.

This feature is available on all Infa plans (Free, Pro, and Enterprise).

We at Infa designed Component Anatomy to give you a structured, visual breakdown of any UI component — each part labeled, typed, and mapped to a bounding box on a screenshot. It's built for both human understanding and AI consumption, enabling:

  • Visual documentation — See exactly which parts make up a component
  • Typed props — Every part has a React-like type (string, number, boolean, ReactNode, enum)
  • AI portability — The JSON structure can be passed between AI agents across sessions
  • Interactive exploration — Hover to highlight parts, click to expand details

Component Anatomy lives inside Infa Papers as an interactive block. You can insert it via the slash menu (/ComponentAnatomyBlock) in any board paper.

Copy link
AnatomyItem JSON Structure

Copy link
Schema

FieldTypeRequiredDescription
labelstringYesThe prop or element name (e.g., "Currency Text", "Submit Label")
descriptionstringYesHuman-readable description of what this part does
typestringYesReact-like prop type (see Type Values below)
defaultstringNoDefault value for the prop
requiredbooleanNoWhether this prop is required
bbox[x, y, w, h]YesBounding box coordinates in pixels relative to the screenshot
childrenAnatomyItem[]NoNested child elements — supports recursive hierarchy

Copy link
Type Values

TypeDescriptionExample
stringText content — labels, descriptions, titlesCurrency label, button text
numberNumeric values — amounts, counts, indicesBalance amount, badge count
booleanToggle states — on/off, enabled/disabledisActive, isDisabled, isOpen
ReactNodeReact elements — containers, wrappers, slotsCard container, header section
enum:value1,value2,value3Enumerated values — variants, sizes, kindsenum:primary,secondary,ghost

Copy link
Example

[
{
"label": "Balance Card Container",
"description": "Main anchor element containing balance information",
"type": "ReactNode",
"required": true,
"bbox": [0, 0, 256, 208],
"children": [
{
"label": "Top Container",
"description": "Container for card's top section with currency details",
"type": "ReactNode",
"bbox": [16, 16, 224, 48]
},
{
"label": "Icon Avatar",
"description": "Avatar section displaying currency icon",
"type": "ReactNode",
"bbox": [16, 16, 48, 48]
},
{
"label": "Currency Text",
"description": "Primary currency label (USD)",
"type": "string",
"required": true,
"bbox": [72, 28, 37, 24]
},
{
"label": "Balance Value",
"description": "Numeric balance display showing current amount",
"type": "number",
"default": "0.00",
"required": true,
"bbox": [16, 165, 224, 28]
}
]
}
]

Copy link
Creating Component Anatomy

Copy link
Option A (Recommended): Infa AI Agent in Chrome Extension

The fastest way to create anatomy is through the Infa AI agent in the Chrome extension. The agent has full understanding of DOM bounding boxes and can tag elements automatically.

  1. Open the Infa Chrome Extension on the page containing your component
  2. Select the element or component you want to analyze
  3. Ask the AI agent: "Create anatomy of the selected element"
  4. The agent analyzes the DOM structure, identifies sub-elements, determines types, and generates the anatomy JSON with accurate bounding boxes
  5. The anatomy block is automatically inserted into your paper
info icon
Pro tip

You can also ask the AI agent to update an existing paper directly: "Update the Button paper to show the anatomy block for this component". This combines screenshot capture, anatomy generation, and paper insertion in one step.

Copy link
Option B: Copy-Paste Prompt for Any AI Agent

If you prefer using a different AI agent (ChatGPT, Claude, Cursor, etc.), use this prompt template:

I have a component screenshot. Please analyze it and generate a JSON anatomy
structure following this exact schema:

interface AnatomyItem {
    label: string;           // The prop name or element label
    description: string;     // Human-readable description
    type: string;            // React-like: 'string' | 'number' | 'boolean' | 'ReactNode' | 'enum:value1,value2'
    default?: string;        // Default value (if applicable)
    required?: boolean;      // Whether this prop is required
    bbox: [number, number, number, number];  // [x, y, width, height] in pixels
    children?: AnatomyItem[];  // Nested child elements
}

For each visual part of the component:
1. Identify and label it (use the actual prop name if known)
2. Determine its React prop type:
   - 'string' for text content
   - 'number' for numeric values
   - 'boolean' for toggle/flag states
   - 'ReactNode' for containers, wrappers, slots
   - 'enum:value1,value2' for enumerated options
3. Estimate bounding box coordinates [x, y, width, height] in pixels
4. Determine if it's required
5. Add a default value if applicable
6. Nest children inside parent elements using the children array

Return ONLY the JSON array, no explanation.

Then:

  1. Paste the prompt along with your component screenshot into any AI agent
  2. Copy the returned JSON array
  3. In your Infa Paper, type /ComponentAnatomyBlock to insert the block
  4. Paste the screenshot URL into the screenshotUrl field
  5. Paste the JSON into the anatomyData field

Copy link
How-To: Insert Anatomy Block in a Paper

Copy link
Step 1: Open your board paper

Navigate to your board and open (or create) a paper.

Copy link
Step 2: Type /ComponentAnatomy to open the slash menu

The slash menu filters to show the ComponentAnatomyBlock option.

Copy link
Step 3: Select ComponentAnatomyBlock

Press Enter or click the item. The block is inserted into your paper with empty fields.

Copy link
Step 4: Add screenshot URL and anatomy data

Fill in the two required fields:

  • Screenshot URL — Direct URL to the component screenshot image
  • Anatomy Data — The JSON array of AnatomyItem objects

Copy link
Step 5: Interact with the anatomy

  • Hover over the screenshot to see bounding box highlights on each element
  • Click the expand button (or click the screenshot) to open the full modal view
  • In expanded mode, browse the sidebar tree to see all parts with their types and descriptions
  • Click "Copy anatomy for AI" to export the JSON for use in other AI sessions

Copy link
AI-to-AI Handoff

We built the anatomy JSON as a portable contract that travels across different AI sessions and tools:

  1. Vision AI generates it from a screenshot (Chrome extension or prompt)
  2. You refine it in the anatomy block UI (adjust labels, types, descriptions)
  3. Code generation AI reads it to scaffold the React component with typed props
  4. Documentation AI reads it to generate usage docs and prop tables
  5. Testing AI reads it to generate test cases covering each prop
  6. Audit AI reads it to compare implementation vs. specification

The "Copy anatomy for AI" button in the expanded view formats the data as clean JSON, ready to paste into any AI agent's context window.

Copy link
Future: Connection to Component Model

warning icon
Planned enhancement

This will be implemented in a separate plan.

Currently, anatomy data lives only inside the Paper MDX content. In the future at Infa, anatomy JSON will be stored directly on the component record in the database, making it:

  • Queryable — AI agents can retrieve anatomy for any component without parsing papers
  • Reusable — The same anatomy data is available across all papers and sessions
  • Versionable — Track how component structure evolves over time
  • Connected — Link anatomy parts to actual component views and design tokens

Copy link
Related Topics

  • Main Components vs Component Views — Understand how components are structured in Infa
  • Component Tagging Strategies — Learn approaches for tagging components in your product

Content Feedback

Feedback on selected content

Close
Anonymous submissions are auto-posted to #feedback channel. You can also share directly in Slack.

Need help?

Reach out to contact@infa.ai or see docs

Previouscomponent-tagging
Nextlabels