## Overview

The Start Wizard Widget is a widget to start a wizard. It provides an entry point to launch Forms Wizards from within pages, type layouts, or rich strings. It renders as an interactive button that, when clicked, opens a configured multi-step wizard interface for guided data entry, page creation, or business process workflows.

The widget bridges page context with wizard execution, passing information about the embedding entity, workspace, and optionally selected data from connected tables to the wizard.

## Use Cases

- **Guided Page Creation**: Replace standard page creation dialogs with multi-step wizards that include validation, conditional logic, and structured data entry
- **Batch Operations from Tables**: Launch wizards to process selected rows from a connected table widget, enabling bulk updates or data enrichment
- **Contextual Actions**: Embed within specific page types to create related entities with pre-filled context from the parent page
- **External Data Collection**: Enable external users to submit structured data through wizard interfaces with optional CAPTCHA protection
- **Multi-Step Business Processes**: Implement complex workflows spanning multiple forms with conditional branching based on user input
- **Conditional Form Availability**: Use scripts to show/hide or enable/disable the button based on permissions, page state, or business rules

## Design Considerations

### Data Source Options

The widget supports three mutually exclusive approaches for providing data to the wizard:

1. **Search**: Execute a saved search to provide pages to the wizard
2. **Connected Table**: Reference a table widget on the same page, optionally using selected rows
3. **Explicit Selection**: Manually specify pages to pass to the wizard

Choose the approach based on whether data should be dynamic (search), user-selected (connected table), or predetermined (explicit selection).

### Post-Completion Behavior

The widget can refresh either the embedding page or a specific connected table after wizard completion. This ensures users see updated data reflecting changes made during the wizard flow.

### Conditional Button Behavior

Low-Code scripts can dynamically control button visibility, enabled state, and tooltip text based on page attributes, user permissions, or business rules. This enables sophisticated conditional logic without creating multiple widget configurations.

## Related Patterns

- **Forms Wizard (Page Type)**: `cf.cplace.formsWizard.wizard` - Defines the wizard structure, steps, and logic that this widget launches
- **Connected Table Widgets**: Can provide selected data to the wizard and be refreshed after completion
- **Low-Code Button Widget**: For simpler action buttons that execute scripts directly rather than launching wizards
