+```
+
+### 4. Error Handling
+Add validation and error states:
+```vue
+
+
+
+
+
+```
+
+### 5. Performance
+Use `v-show` instead of `v-if` for frequently toggled content:
+```vue
+
...
+```
+
+## File References
+
+- **Widget components**: `src/components/graph/widgets/`
+- **Widget composables**: `src/composables/widgets/`
+- **Widget registration**: `src/scripts/widgets.ts`
+- **DOM widget implementation**: `src/scripts/domWidget.ts`
+- **Widget store**: `src/stores/domWidgetStore.ts`
+- **Widget container**: `src/components/graph/DomWidgets.vue`
+- **Widget wrapper**: `src/components/graph/widgets/DomWidget.vue`
+
+## Real Examples from PRs
+
+### Example 1: Text Progress Widget (PR #3824)
+
+**Component** (`src/components/graph/widgets/TextPreviewWidget.vue`):
+```vue
+
+
+
+
+
+```
+
+### Example 2: Multi-Select Widget (PR #2987)
+
+**Component** (`src/components/graph/widgets/MultiSelectWidget.vue`):
+```vue
+
+
+
+
+
+
+
+```
+
+## Migration Checklist
+
+When converting an existing widget:
+
+- [ ] Identify the widget type and its current implementation
+- [ ] Create Vue component with proper v-model binding using PrimeVue components
+- [ ] Create widget constructor composable in `src/composables/widgets/`
+- [ ] Create node-level composable in `src/composables/node/` (only if widget needs dynamic management)
+- [ ] Implement getValue/setValue logic with Vue reactivity
+- [ ] Handle any special widget behavior (events, validation, execution state)
+- [ ] Register widget in ComfyWidgets registry
+- [ ] Test with actual nodes that use the widget type
+- [ ] Add unit tests for both composables
+- [ ] Update documentation if needed
+
+## Key Implementation Patterns
+
+### 1. Vue Component Definition
+- Use Composition API with `