## Overview

Integrates the content of any site (as an inline frame) or generates a button for calling up a defined URL. Here the URL can be created dynamically depending on attribute values.

The widget extends the standard Inline Frame widget by enabling dynamic URL construction using page attributes. Instead of a static URL, users define URL patterns with attribute placeholders (using angle bracket syntax `<attributeName>`), which are substituted with actual values at runtime. This allows context-aware embedding of external content based on the data of the current page.

The widget supports two display modes:
- **Inline Frame Mode** (default): Embeds external content directly within the page
- **Button Mode**: Shows a button that opens the URL in a new browser tab

## Use Cases

- **External Documentation Integration**: Display context-specific documentation based on page attributes (e.g., `https://docs.company.com/<productId>/manual.html`)
- **External API Visualization**: Embed dashboards or reports from external systems using page data as parameters
- **Third-Party Tool Integration**: Integrate with external tools like Jira by constructing URLs from page attributes (e.g., `https://jira.company.com/browse/<ticketId>`)
- **Dynamic Map Embedding**: Show location-based content using address or coordinate attributes
- **External Form Integration**: Link to external forms with pre-filled data from page attributes

## Design Considerations

### When to Use Dynamic Inline Frame vs Inline Frame

- Use **Inline Frame** (`cf.platform.iframe`) for static URLs that don't change based on page content
- Use **Dynamic Inline Frame** when the URL should incorporate values from page attributes

### URL Pattern Syntax

- Attribute references use angle brackets: `<attributeName>`
- Multiple attributes can be combined in a single URL pattern
- Attribute values are automatically URL-encoded when part of a larger pattern
- Special case: When the entire pattern is a single attribute (e.g., `<url>`), no encoding is applied to allow storing complete URLs

### Button Mode

Use button mode when:
- External sites block iframe embedding (X-Frame-Options)
- Users prefer opening content in a separate tab
- The iframe display is not desired for UX reasons

### Validation Requirements

- The URL pattern must contain at least one attribute reference
- All referenced attributes must exist in the page type
- Referenced attributes must have non-empty values at runtime

## Related Patterns

- **Inline Frame** (`cf.platform.iframe`): For static URL embedding without dynamic content
- **Single Attribute** (`cf.platform.singleAttribute`): For displaying attribute values directly rather than embedding external content
