diff --git a/migration-roadmap/README.md b/migration-roadmap/README.md
new file mode 100644
index 0000000000..79f134db49
--- /dev/null
+++ b/migration-roadmap/README.md
@@ -0,0 +1,181 @@
+# Spectrum 2 migration roadmap
+
+This directory contains comprehensive migration documentation for 2nd generation Spectrum Web Components based on the implementation of Spectrum 2 components that were previously migrated in [Spectrum CSS](https://github.com/adobe/spectrum-css/tree/spectrum-two). It helps engineers understand what needs to be implemented, updated, or aligned between the two systems to guide development of 2nd generation web components.
+
+## Purpose
+
+### Why we do this analysis
+
+The migration roadmap facilitates development of 2nd generation, full-fidelity Spectrum 2 web components by providing:
+
+- **Feature gap analysis**: Identifies new features and capabilities needed to match Spectrum 2 design specifications
+- **Implementation comparison**: Maps CSS selectors to existing SWC properties and notes markup differences between systems
+- **Deprecation tracking**: Documents features or variants being removed in Spectrum 2
+- **Planning guidance**: High-level overview of changes to assist with estimating migration effort
+
+### The bigger picture
+
+When engineers begin 2nd generation Spectrum 2 implementation work, this documentation provides:
+
+- **Clear starting point**: Entry point for development work that identifies specific areas needing adjustment
+- **Gap analysis**: Differences that would prevent Spectrum 2 CSS from working in SWC
+- **Reference materials**: Links to CSS and React implementations, and previous migration work
+
+## What we analyze
+
+### Component specifications
+
+We extract and document:
+
+- **CSS selectors**: All selectors from `metadata.json` in the spectrum-css `spectrum-two` branch
+- **Passthroughs**: CSS passthrough custom properties
+- **Modifiers**: CSS modifier custom properties (note that `--mod` properties will be deprecated in the 2nd-gen implementation)
+- **SWC attributes**: Properties with `@property` decorators (which use getter/setter patterns) in TypeScript
+- **SWC slots**: Slot patterns from render methods
+- **Nested components**: Child components used within the component
+
+### DOM structure comparison
+
+We analyze markup from three sources:
+
+1. **Spectrum Web Components**: Current HTML structure from web component `render()` method
+2. **Legacy CSS**: HTML structure from spectrum-css `main` branch template files
+3. **Spectrum 2 CSS**: HTML structure from spectrum-css `spectrum-two` branch template files
+
+This three-way comparison reveals:
+
+- DOM changes specific to Spectrum 2 features (Legacy → Spectrum 2)
+- Structural differences between CSS and SWC implementations
+- Additional work needed for SWC render methods beyond new features
+
+### CSS to SWC mapping
+
+We create mapping tables that connect:
+
+- **CSS selectors** to **SWC attributes or slots**
+- **Variants** (CSS selectors with `--` notation) typically map to component attributes
+- **Base elements** (selectors with single `-`) typically map to slots
+- **Status tracking** for implementation gaps
+
+### Implementation gaps
+
+The analysis surfaces:
+
+- **Missing from SWC**: CSS features without web component equivalents
+- **Missing from CSS**: Web component features without CSS support
+- **New for Spectrum 2**: Features that need to be added for 2nd generation
+- **Deprecated**: Features being removed in Spectrum 2
+
+## Documentation structure
+
+Each component follows this format:
+
+```markdown
+# [Component name] migration roadmap
+
+## Component specifications
+
+**Note**: CSS selectors and attributes/slots are often grouped by elements, states, variants, or other logical categories to improve readability.
+
+### CSS
+
+- CSS selectors (collapsible)
+- Passthroughs (collapsible)
+- Modifiers (deprecated) (collapsible)
+
+### SWC
+
+- Attributes (collapsible)
+- Slots (collapsible)
+
+## Comparison
+
+### DOM structure changes
+
+- Spectrum Web Components (collapsible)
+- Legacy CSS main branch (collapsible)
+- Spectrum 2 CSS spectrum-two branch (collapsible)
+- Diff: Legacy → Spectrum 2, based on changes made to template in CSS migration work (collapsible, if changes exist)
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ------------ | ----------------- | ------------------------------------------------------- |
+| ... | ... | Implemented/Missing from WC/Missing from CSS/Deprecated |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+### CSS Spectrum 2 changes
+
+**Note**: Some of this information may be summarized in the component's changelog in the spectrum-two branch.
+
+## Resources
+
+- [CSS migration]()
+- [Spectrum 2 preview]()
+- [React]()
+```
+
+## How to generate documentation
+
+### Prerequisites
+
+Set up a Cursor workspace with both repositories:
+
+- `spectrum-css` (primarily `spectrum-two` branch, with comparisons to `main`)
+- `spectrum-web-components` (`main` branch)
+
+### Using the cursor prompt
+
+**Model recommendation**: This type of detailed migration analysis is better handled by slower but more advanced thinking models like Claude or GPT-5, which can provide more thorough analysis and better understand complex component relationships.
+
+1. **Load the prompt**: Reference `migration-roadmap/cursor_prompt.md`
+2. **Specify component**: Replace `[COMPONENT_NAME]` with the target component
+3. **Branch verification**: Ensure correct branches are checked out:
+ - `spectrum-css`: `spectrum-two` for specifications, both `main` and `spectrum-two` for comparisons
+ - `spectrum-web-components`: `main` branch
+4. **Generate documentation**: Follow the structured prompt to create component markdown files
+
+### Quality assurance
+
+**Human review is required** for all generated documentation:
+
+- **Verify data accuracy**: Check extracted information against source repositories/branches
+- **Validate mappings**: Ensure CSS selector to SWC feature mappings are correct
+- **Review summaries**: Confirm summaries provide clear, actionable guidance
+- **Check DOM structures**: Verify HTML snippets match actual template/render method output
+- **Audit diffs**: Ensure branch comparisons are accurate and meaningful
+
+### Common issues to watch for
+
+- **Branch confusion**: AI may analyze wrong branches or mix up repositories
+- **Incomplete mappings**: AI may incorrectly mark implemented states or variants as missing in mapping tables
+- **Verbose summaries**: Trim AI-generated text to focus on actionable changes and human readability
+- **DOM accuracy**: Verify render method HTML matches documented structure
+- **Missing components**: Note when components don't exist in one system or the other
+
+## Contributing
+
+### Modifying the cursor prompt
+
+The cursor prompt template (`cursor_prompt.md`) can be modified to improve AI performance. Consider updates for:
+
+- Better mapping accuracy
+- Clearer summary generation
+- Additional analysis sections
+- Improved error handling
+
+### Adding new components
+
+1. Use the cursor prompt with the target component name
+2. Generate the markdown file in `migration-roadmap/[component-name].md`
+3. Review and validate all sections for accuracy
+4. Submit a PR to the `2nd-gen-component-analysis` branch
+
+## Resources
+
+- [Cursor prompt template](cursor_prompt.md)
+- [Spectrum CSS repository](https://github.com/adobe/spectrum-css)
+- [Spectrum Web Components repository](https://github.com/adobe/spectrum-web-components)
diff --git a/migration-roadmap/alert-banner.md b/migration-roadmap/alert-banner.md
new file mode 100644
index 0000000000..f78e1b34de
--- /dev/null
+++ b/migration-roadmap/alert-banner.md
@@ -0,0 +1,282 @@
+# Alert Banner migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-AlertBanner`
+- `.spectrum-AlertBanner--info`
+- `.spectrum-AlertBanner--negative`
+- `.spectrum-AlertBanner-body`
+- `.spectrum-AlertBanner-content`
+- `.spectrum-AlertBanner-icon`
+- `.spectrum-AlertBanner-text`
+- `.spectrum-AlertBanner.is-open`
+- `.spectrum-AlertBanner:has(.spectrum-CloseButton) .spectrum-AlertBanner-body`
+- `.spectrum-AlertBanner:lang(ja)`
+- `.spectrum-AlertBanner:lang(ko)`
+- `.spectrum-AlertBanner:lang(zh)`
+
+
+
+
+Passthroughs
+
+- `--mod-closebutton-align-self`
+- `--mod-closebutton-margin-inline`
+- `--mod-closebutton-margin-top`
+- `--mod-icon-size`
+
+
+
+
+Modifiers
+
+- `--mod-alert-banner-background`
+- `--mod-alert-banner-block-edge-to-button`
+- `--mod-alert-banner-bottom-to-text`
+- `--mod-alert-banner-close-button-to-content`
+- `--mod-alert-banner-close-button-to-inline-end`
+- `--mod-alert-banner-font-color`
+- `--mod-alert-banner-font-family`
+- `--mod-alert-banner-font-size`
+- `--mod-alert-banner-icon-size`
+- `--mod-alert-banner-icon-to-text`
+- `--mod-alert-banner-informative-background`
+- `--mod-alert-banner-inline-end-to-content`
+- `--mod-alert-banner-inline-size`
+- `--mod-alert-banner-inline-start-to-content`
+- `--mod-alert-banner-line-height`
+- `--mod-alert-banner-max-inline-size`
+- `--mod-alert-banner-min-height`
+- `--mod-alert-banner-negative-background`
+- `--mod-alert-banner-neutral-background`
+- `--mod-alert-banner-text-margin-block-end`
+- `--mod-alert-banner-text-margin-block-start`
+- `--mod-alert-banner-text-to-button-horizontal`
+- `--mod-alert-banner-text-to-button-vertical`
+- `--mod-alert-banner-top-to-close-button`
+- `--mod-alert-banner-top-to-icon`
+- `--mod-alert-banner-top-to-text`
+
+
+
+### SWC
+
+
+Attributes
+
+- `open` (Boolean) - Controls the display of the alert banner
+- `dismissible` (Boolean) - Whether to include an icon-only close button to dismiss the alert banner
+- `variant` (String) - The variant applies specific styling when set to `negative` or `info`; `variant` attribute is removed when it's passed an invalid variant. Valid values: `neutral`, `info`, `negative`
+
+
+
+
+Slots
+
+- Default slot - The alert banner text context
+- `action` - Slot for the button element that surfaces the contextual action a user can take
+
+
+
+## Comparison
+
+### DOM structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+ #shadow-root
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+No significant structural changes.
+
+
+
+### CSS => SWC mapping
+
+#### Non-color selectors
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------------------------------------------------------------------------ | ------------------------- | ---------------------------- |
+| `.spectrum-Badge--sizeS` | `size="s"` | Implemented |
+| `.spectrum-Badge--sizeL` | `size="l"` | Implemented |
+| `.spectrum-Badge--sizeXL` | `size="xl"` | Implemented |
+| `.spectrum-Badge--fixed-inline-start` | `fixed="inline-start"` | Implemented |
+| `.spectrum-Badge--fixed-inline-end` | `fixed="inline-end"` | Implemented |
+| `.spectrum-Badge--fixed-block-start` | `fixed="block-start"` | Implemented |
+| `.spectrum-Badge--fixed-block-end` | `fixed="block-end"` | Implemented |
+| `.spectrum-Badge` | Base component | Implemented |
+| `.spectrum-Badge-icon` | `icon` slot | Implemented |
+| `.spectrum-Badge-label` | Default slot | Implemented |
+| `.spectrum-Badge-label:lang(ja), .spectrum-Badge-label:lang(ko), .spectrum-Badge-label:lang(zh)` | Language-specific styling | Implemented |
+| `.spectrum-Badge--style-outline` | `style="outline"` | Missing from WC (new for S2) |
+| `.spectrum-Badge--style-subtle` | `style="subtle"` | Missing from WC (new for S2) |
+
+#### Color/variant selectors
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------ | ----------------------- | ---------------------------- |
+| `.spectrum-Badge--accent` | `variant="accent"` | Implemented |
+| `.spectrum-Badge--blue` | `variant="blue"` | Implemented |
+| `.spectrum-Badge--celery` | `variant="celery"` | Implemented |
+| `.spectrum-Badge--chartreuse` | `variant="chartreuse"` | Implemented |
+| `.spectrum-Badge--cyan` | `variant="cyan"` | Implemented |
+| `.spectrum-Badge--fuchsia` | `variant="fuchsia"` | Implemented |
+| `.spectrum-Badge--gray` | `variant="gray"` | Implemented |
+| `.spectrum-Badge--green` | `variant="green"` | Implemented |
+| `.spectrum-Badge--indigo` | `variant="indigo"` | Implemented |
+| `.spectrum-Badge--informative` | `variant="informative"` | Implemented |
+| `.spectrum-Badge--magenta` | `variant="magenta"` | Implemented |
+| `.spectrum-Badge--negative` | `variant="negative"` | Implemented |
+| `.spectrum-Badge--neutral` | `variant="neutral"` | Implemented |
+| `.spectrum-Badge--notice` | `variant="notice"` | Implemented |
+| `.spectrum-Badge--orange` | `variant="orange"` | Implemented |
+| `.spectrum-Badge--positive` | `variant="positive"` | Implemented |
+| `.spectrum-Badge--purple` | `variant="purple"` | Implemented |
+| `.spectrum-Badge--red` | `variant="red"` | Implemented |
+| `.spectrum-Badge--seafoam` | `variant="seafoam"` | Implemented |
+| `.spectrum-Badge--yellow` | `variant="yellow"` | Implemented |
+| `.spectrum-Badge--brown` | `variant="brown"` | Missing from WC (new for S2) |
+| `.spectrum-Badge--cinnamon` | `variant="cinnamon"` | Missing from WC (new for S2) |
+| `.spectrum-Badge--pink` | `variant="pink"` | Missing from WC (new for S2) |
+| `.spectrum-Badge--silver` | `variant="silver"` | Missing from WC (new for S2) |
+| `.spectrum-Badge--turquoise` | `variant="turquoise"` | Missing from WC (new for S2) |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+**Missing from WC:**
+
+- **New color variants**: `brown`, `cinnamon`, `pink`, `silver`, `turquoise`
+- **Style variants**: `outline` and `subtle` styles
+
+**Note**: Fixed positioning exists in both SWC and Spectrum 2 CSS but is not in the design spec. Consider whether to keep this for 2nd gen.
+
+### CSS Spectrum 2 changes
+
+**No significant structural changes.**
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3740)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-badge--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/badge--docs)
diff --git a/migration-roadmap/breadcrumbs.md b/migration-roadmap/breadcrumbs.md
new file mode 100644
index 0000000000..5fd94f1446
--- /dev/null
+++ b/migration-roadmap/breadcrumbs.md
@@ -0,0 +1,254 @@
+# Breadcrumbs migration roadmap
+
+
+CSS selectors
+
+- `.spectrum-Breadcrumbs`
+- `.spectrum-Breadcrumbs--multiline`
+- `.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type`
+- `.spectrum-Breadcrumbs--multiline .spectrum-Breadcrumbs-item:last-of-type > .spectrum-Breadcrumbs-itemLink`
+- `.spectrum-Breadcrumbs--sizeL`
+- `.spectrum-Breadcrumbs-item`
+- `.spectrum-Breadcrumbs-item > .spectrum-ActionButton`
+- `.spectrum-Breadcrumbs-item > .spectrum-ActionButton:disabled`
+- `.spectrum-Breadcrumbs-item.is-dragged .spectrum-Breadcrumbs-itemLink:before`
+- `.spectrum-Breadcrumbs-item:first-of-type > .spectrum-ActionButton`
+- `.spectrum-Breadcrumbs-item:first-of-type > .spectrum-Breadcrumbs-itemLink`
+- `.spectrum-Breadcrumbs-item:last-of-type`
+- `.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemLink`
+- `.spectrum-Breadcrumbs-item:last-of-type .spectrum-Breadcrumbs-itemSeparator`
+- `.spectrum-Breadcrumbs-itemLink`
+- `.spectrum-Breadcrumbs-itemLink + .spectrum-Breadcrumbs-itemSeparator`
+- `.spectrum-Breadcrumbs-itemLink.is-disabled`
+- `.spectrum-Breadcrumbs-itemLink:focus-visible:before`
+- `.spectrum-Breadcrumbs-itemLink[aria-disabled="true"]`
+- `.spectrum-Breadcrumbs-itemLink[href]`
+- `.spectrum-Breadcrumbs-itemLink[href]:active`
+- `.spectrum-Breadcrumbs-itemLink[href]:focus-visible`
+- `.spectrum-Breadcrumbs-itemLink[href]:hover`
+- `.spectrum-Breadcrumbs-itemLink[tabindex="0"]`
+- `.spectrum-Breadcrumbs-itemLink[tabindex="0"]:active`
+- `.spectrum-Breadcrumbs-itemLink[tabindex="0"]:focus-visible`
+- `.spectrum-Breadcrumbs-itemLink[tabindex="0"]:hover`
+- `.spectrum-Breadcrumbs-itemSeparator`
+- `.spectrum-Breadcrumbs-itemSeparator:dir(rtl)`
+
+
+
+
+Passthroughs
+
+No passthroughs found for this component.
+
+
+
+
+Attributes
+
+- `max-visible-items` (Number) - Override the maximum number of visible items (default: 4)
+- `label` (String) - Accessible name for the Breadcrumbs component
+- `menu-label` (String) - Change the default label of the action menu (default: "More items")
+- `compact` (Boolean) - Compact option is useful for reducing the height of the breadcrumbs
+- `value` (String) - Value for individual breadcrumb items
+- `href` (String) - URL for individual breadcrumb items
+- `disabled` (Boolean) - Disabled state for individual breadcrumb items
+
+
+
+
+Slots
+
+- `icon` - Change the default icon of the action menu
+- `root` - Breadcrumb item to always display
+- Default slot - Breadcrumb items (`sp-breadcrumb-item` elements)
+
+
+
+
+Modifiers
+
+- `--mod-breadcrumbs-action-button-color`
+- `--mod-breadcrumbs-action-button-color-disabled`
+- `--mod-breadcrumbs-action-button-spacing-block`
+- `--mod-breadcrumbs-action-button-spacing-inline`
+- `--mod-breadcrumbs-block-size`
+- `--mod-breadcrumbs-focus-indicator-color`
+- `--mod-breadcrumbs-focus-indicator-gap`
+- `--mod-breadcrumbs-focus-indicator-thickness`
+- `--mod-breadcrumbs-font-family`
+- `--mod-breadcrumbs-font-family-current`
+- `--mod-breadcrumbs-font-size`
+- `--mod-breadcrumbs-font-size-current`
+- `--mod-breadcrumbs-font-style`
+- `--mod-breadcrumbs-font-weight`
+- `--mod-breadcrumbs-font-weight-current`
+- `--mod-breadcrumbs-icon-spacing-block`
+- `--mod-breadcrumbs-inline-end`
+- `--mod-breadcrumbs-inline-start`
+- `--mod-breadcrumbs-inline-start-to-truncated-menu`
+- `--mod-breadcrumbs-item-dragged-background`
+- `--mod-breadcrumbs-item-link-border-radius`
+- `--mod-breadcrumbs-line-height`
+- `--mod-breadcrumbs-separator-color`
+- `--mod-breadcrumbs-separator-spacing-inline`
+- `--mod-breadcrumbs-text-color`
+- `--mod-breadcrumbs-text-color-current`
+- `--mod-breadcrumbs-text-color-disabled`
+- `--mod-breadcrumbs-text-decoration-gap`
+- `--mod-breadcrumbs-text-decoration-thickness`
+- `--mod-breadcrumbs-text-spacing-block-end`
+- `--mod-breadcrumbs-text-spacing-block-start`
+- `--mod-breadcrumbs-title-spacing-block-end`
+- `--mod-breadcrumbs-title-spacing-block-start`
+- `--mod-heading-margin-end`
+- `--mod-heading-margin-start`
+
+
+
+## Visual Comparison
+
+**Legacy Component:**
+
+
+
+**Spectrum 2 Component:**
+
+
+
+## DOM Structure Changes
+
+**Legacy (main branch):**
+
+```html
+
+```
+
+**Spectrum 2 (spectrum-two branch):**
+
+```html
+
+```
+
+## Comparison
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------------------------------ | ------------------------------ | ---------------- |
+| `.spectrum-Breadcrumbs` | Root element | Implemented |
+| `.spectrum-Breadcrumbs--multiline` | `compact` attribute (inverted) | Missing from WC |
+| `.spectrum-Breadcrumbs--sizeL` | Size variant | Missing from WC |
+| `.spectrum-Breadcrumbs-item` | Individual breadcrumb items | Implemented |
+| `.spectrum-Breadcrumbs-itemLink` | Link element | Implemented |
+| `.spectrum-Breadcrumbs-itemSeparator` | Separator element | Implemented |
+| `.spectrum-Breadcrumbs-item > .spectrum-ActionButton` | Action button for folder icons | Implemented |
+| `.spectrum-Breadcrumbs-item.is-dragged` | Dragged state | Missing from WC |
+| `.spectrum-Breadcrumbs-itemLink[href]` | `href` attribute | Implemented |
+| `.spectrum-Breadcrumbs-itemLink[aria-disabled="true"]` | `disabled` attribute | Implemented |
+| `.spectrum-Breadcrumbs-itemLink[tabindex="0"]` | Interactive state | Implemented |
+| - | `max-visible-items` attribute | Missing from CSS |
+| - | `label` attribute | Missing from CSS |
+| - | `menu-label` attribute | Missing from CSS |
+| - | `compact` attribute | Missing from CSS |
+| - | `icon` slot | Missing from CSS |
+| - | `root` slot | Missing from CSS |
+
+## Key Structural Changes
+
+**Element Hierarchy Changes:**
+
+- No significant hierarchy changes between main and spectrum-two branches
+- Maintained consistent nav > ul > li structure
+
+**Class Name Changes:**
+
+- No major class name changes
+- Consistent naming convention maintained
+
+**Attribute Changes:**
+
+- Added `max-visible-items` for controlling overflow behavior
+- Added `label` for accessibility labeling
+- Added `menu-label` for overflow menu customization
+- Added `compact` for height reduction
+
+**Slot/Content Changes:**
+
+- Added `icon` slot for customizing overflow menu icon
+- Added `root` slot for persistent root breadcrumb
+- Individual items use `sp-breadcrumb-item` elements
+
+**Migration Impact:**
+
+- Web component provides intelligent overflow management not present in CSS-only version
+- Better accessibility with automatic aria-label management
+- More sophisticated truncation and menu behavior
+
+### Implementation Gaps
+
+**CSS Features Missing from Web Component:**
+
+- `--multiline` variant support - web component should support multiline display mode
+- `--sizeL` variant support - web component should support size variants
+- `is-dragged` state support - web component should support drag and drop functionality
+
+**Web Component Features Missing from CSS:**
+
+- `max-visible-items` attribute - CSS should provide styling for overflow management
+- `label` attribute - CSS should provide styling for aria-label
+- `menu-label` attribute - CSS should provide styling for overflow menu
+- `compact` attribute - CSS should provide compact styling variant
+- `icon` slot - CSS should provide styling for custom overflow menu icons
+- `root` slot - CSS should provide styling for persistent root items
+
+**Features Being Deprecated/Removed:**
+
+- None identified - component maintains backward compatibility
+
+### Action Items for Web Component Maintainers
+
+**Required Additions:**
+
+- Multiline variant support for breadcrumbs that wrap to multiple lines
+- Size variant support (large size option)
+- Drag and drop functionality for breadcrumb items
+- CSS custom properties for overflow management styling
+
+**Required Removals:**
+
+- None identified
+
+**Breaking Changes:**
+
+- None identified - component provides enhanced functionality while maintaining compatibility
+- Migration guidance: Enhanced overflow management and accessibility features are automatically available in web component version
diff --git a/migration-roadmap/button.md b/migration-roadmap/button.md
new file mode 100644
index 0000000000..c50f006d13
--- /dev/null
+++ b/migration-roadmap/button.md
@@ -0,0 +1,276 @@
+# Button migration roadmap
+
+
+CSS selectors
+
+- `.spectrum-Button`
+- `.spectrum-Button .spectrum-Button-label`
+- `.spectrum-Button .spectrum-Icon`
+- `.spectrum-Button .spectrum-Icon + .spectrum-Button-label`
+- `.spectrum-Button .spectrum-ProgressCircle`
+- `.spectrum-Button--noWrap .spectrum-Button-label`
+- `.spectrum-Button--sizeL`
+- `.spectrum-Button--sizeS`
+- `.spectrum-Button--sizeS.spectrum-Button--iconOnly`
+- `.spectrum-Button--sizeXL`
+- `.spectrum-Button-label`
+- `.spectrum-Button-label:empty`
+- `.spectrum-Button.is-disabled`
+- `.spectrum-Button.is-focused`
+- `.spectrum-Button.is-focused:after`
+- `.spectrum-Button.is-pending`
+- `.spectrum-Button.is-pending .spectrum-Button-label`
+- `.spectrum-Button.is-pending .spectrum-Icon`
+- `.spectrum-Button.is-pending .spectrum-ProgressCircle`
+- `.spectrum-Button.spectrum-Button--accent`
+- `.spectrum-Button.spectrum-Button--accent .spectrum-Button-label`
+- `.spectrum-Button.spectrum-Button--iconOnly`
+- `.spectrum-Button.spectrum-Button--iconOnly .spectrum-Icon`
+- `.spectrum-Button.spectrum-Button--negative`
+- `.spectrum-Button.spectrum-Button--outline`
+- `.spectrum-Button.spectrum-Button--primary`
+- `.spectrum-Button.spectrum-Button--primary.spectrum-Button--outline`
+- `.spectrum-Button.spectrum-Button--secondary`
+- `.spectrum-Button.spectrum-Button--secondary.spectrum-Button--outline`
+- `.spectrum-Button.spectrum-Button--staticBlack`
+- `.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--outline`
+- `.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary`
+- `.spectrum-Button.spectrum-Button--staticBlack.spectrum-Button--secondary.spectrum-Button--outline`
+- `.spectrum-Button.spectrum-Button--staticWhite`
+- `.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--outline`
+- `.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary`
+- `.spectrum-Button.spectrum-Button--staticWhite.spectrum-Button--secondary.spectrum-Button--outline`
+- `.spectrum-Button::-moz-focus-inner`
+- `.spectrum-Button:active`
+- `.spectrum-Button:after`
+- `.spectrum-Button:disabled`
+- `.spectrum-Button:focus`
+- `.spectrum-Button:focus-visible`
+- `.spectrum-Button:focus-visible:after`
+- `.spectrum-Button:hover`
+- `.spectrum-Button:not(.spectrum-Button--primary, .spectrum-Button--negative, .spectrum-Button--secondary, .spectrum-Button--staticBlack, .spectrum-Button--staticWhite)`
+- `.spectrum-Button:not(.spectrum-Button--primary, .spectrum-Button--negative, .spectrum-Button--secondary, .spectrum-Button--staticBlack, .spectrum-Button--staticWhite) .spectrum-Button-label`
+- `.spectrum-Button[pending]`
+- `.spectrum-Button[pending] .spectrum-Button-label`
+- `.spectrum-Button[pending] .spectrum-Icon`
+- `.spectrum-Button[pending] .spectrum-ProgressCircle`
+- `a.spectrum-Button`
+
+
+
+
+Passthroughs
+
+- `--mod-progress-circle-position`
+- `--mod-progress-circle-thickness`
+- `--mod-progress-circle-track-border-color`
+- `--mod-progress-circle-track-border-color-over-background`
+
+
+
+
+Attributes
+
+- `variant` (String) - The visual variant to apply to this button (`accent`, `primary`, `secondary`, `negative`, `white`, `black`)
+- `static-color` (String) - The static color variant to use for this button (`black`, `white`)
+- `treatment` (String) - The visual treatment to apply to this button (`fill`, `outline`)
+- `pending` (Boolean) - Use this property to set the button into a pending state
+- `pending-label` (String) - Label for pending state (default: "Pending")
+- `no-wrap` (Boolean) - Disables text wrapping within the button component's label
+- `size` (String) - Button size (`s`, `m`, `l`, `xl`)
+- `quiet` (Boolean, deprecated) - Style this button to be less obvious (use `treatment="outline"` instead)
+
+
+
+
+Slots
+
+- Default slot - Text label of the Button
+- `icon` - The icon to use for Button
+
+
+
+
+Modifiers
+
+- `--mod-button-animation-duration`
+- `--mod-button-background-color-default`
+- `--mod-button-background-color-disabled`
+- `--mod-button-background-color-down`
+- `--mod-button-background-color-focus`
+- `--mod-button-background-color-hover`
+- `--mod-button-border-color-default`
+- `--mod-button-border-color-disabled`
+- `--mod-button-border-color-down`
+- `--mod-button-border-color-focus`
+- `--mod-button-border-color-hover`
+- `--mod-button-border-radius`
+- `--mod-button-border-width`
+- `--mod-button-bottom-to-text`
+- `--mod-button-content-color-default`
+- `--mod-button-content-color-disabled`
+- `--mod-button-content-color-down`
+- `--mod-button-content-color-focus`
+- `--mod-button-content-color-hover`
+- `--mod-button-edge-to-text`
+- `--mod-button-edge-to-visual`
+- `--mod-button-edge-to-visual-only`
+- `--mod-button-focus-ring-border-radius`
+- `--mod-button-focus-ring-color`
+- `--mod-button-focus-ring-gap`
+- `--mod-button-focus-ring-thickness`
+- `--mod-button-font-family`
+- `--mod-button-font-size`
+- `--mod-button-font-weight`
+- `--mod-button-height`
+- `--mod-button-icon-margin-block-start`
+- `--mod-button-line-height`
+- `--mod-button-margin-block`
+- `--mod-button-margin-left`
+- `--mod-button-margin-right`
+- `--mod-button-max-inline-size`
+- `--mod-button-min-width`
+- `--mod-button-padding-label-to-icon`
+- `--mod-button-text-align`
+- `--mod-button-text-align-with-icon`
+- `--mod-button-top-to-icon`
+- `--mod-button-top-to-text`
+
+
+
+## Visual Comparison
+
+**Legacy Component:**
+
+
+
+**Spectrum 2 Component:**
+
+
+
+## DOM Structure Changes
+
+**Legacy (main branch):**
+
+```html
+
+```
+
+**Spectrum 2 (spectrum-two branch):**
+
+```html
+
+```
+
+## Comparison
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------- | ----------------------------- | ---------------- |
+| `.spectrum-Button` | Root element | Implemented |
+| `.spectrum-Button--accent` | `variant="accent"` | Implemented |
+| `.spectrum-Button--primary` | `variant="primary"` | Implemented |
+| `.spectrum-Button--secondary` | `variant="secondary"` | Implemented |
+| `.spectrum-Button--negative` | `variant="negative"` | Implemented |
+| `.spectrum-Button--outline` | `treatment="outline"` | Implemented |
+| `.spectrum-Button--sizeS` | `size="s"` | Implemented |
+| `.spectrum-Button--sizeL` | `size="l"` | Implemented |
+| `.spectrum-Button--sizeXL` | `size="xl"` | Implemented |
+| `.spectrum-Button--staticBlack` | `static-color="black"` | Implemented |
+| `.spectrum-Button--staticWhite` | `static-color="white"` | Implemented |
+| `.spectrum-Button--noWrap` | `no-wrap` attribute | Implemented |
+| `.spectrum-Button--iconOnly` | `hideLabel` (internal) | Implemented |
+| `.spectrum-Button-label` | Default slot | Implemented |
+| `.spectrum-Icon` | `icon` slot | Implemented |
+| `.spectrum-ProgressCircle` | `pending` state | Implemented |
+| `.spectrum-Button.is-pending` | `pending` attribute | Implemented |
+| `.spectrum-Button.is-disabled` | `disabled` attribute | Implemented |
+| `.spectrum-Button.is-focused` | Focus state | Implemented |
+| `.spectrum-Button[pending]` | `pending` attribute | Implemented |
+| `a.spectrum-Button` | Link variant | Missing from WC |
+| - | `pending-label` attribute | Missing from CSS |
+| - | `quiet` property (deprecated) | Missing from CSS |
+
+## Key Structural Changes
+
+**Element Hierarchy Changes:**
+
+- No significant hierarchy changes between main and spectrum-two branches
+- Maintained consistent structure across versions
+
+**Class Name Changes:**
+
+- No major class name changes
+- Static color classes maintained (staticBlack, staticWhite)
+
+**Attribute Changes:**
+
+- Added `pending` and `pending-label` attributes for loading states
+- Added `no-wrap` attribute for text overflow control
+- Added `static-color` attribute to replace variant-based static colors
+- Added `treatment` attribute to replace `quiet` property
+
+**Slot/Content Changes:**
+
+- Added dedicated `icon` slot for icon placement
+- Default slot remains for button label
+
+**Migration Impact:**
+
+- Static color variants (`white`, `black`) are being deprecated in favor of `static-color` attribute
+- `quiet` property is deprecated in favor of `treatment="outline"`
+- Better semantic structure with icon slot
+
+### Implementation Gaps
+
+**CSS Features Missing from Web Component:**
+
+- Link variant support (`a.spectrum-Button`) - web component should support href attribute
+
+**Web Component Features Missing from CSS:**
+
+- `pending-label` attribute support in CSS
+- `quiet` property (deprecated) - should be removed
+
+**Features Being Deprecated/Removed:**
+
+- `quiet` property - replaced by `treatment="outline"`
+- Static color variants (`white`, `black`) - replaced by `static-color` attribute
+- `cta` variant - replaced by `accent` variant
+- `overBackground` variant - replaced by `static-color="white"` with `treatment="outline"`
+
+### Action Items for Web Component Maintainers
+
+**Required Additions:**
+
+- Link variant support - implement href attribute handling for anchor button functionality
+
+**Required Removals:**
+
+- Complete deprecation warnings for `quiet`, static color variants, and deprecated variant values
+- Remove deprecated properties in next major version
+
+**Breaking Changes:**
+
+- Migration from deprecated variants requires updating component usage
+- Link button functionality needs implementation for href support
+- Migration guidance: Replace `quiet` with `treatment="outline"`, replace static color variants with `static-color` attribute
diff --git a/migration-roadmap/checkbox.md b/migration-roadmap/checkbox.md
new file mode 100644
index 0000000000..2c8bf21803
--- /dev/null
+++ b/migration-roadmap/checkbox.md
@@ -0,0 +1,286 @@
+# Checkbox migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-Checkbox`
+- `.spectrum-Checkbox .spectrum-Checkbox-box`
+- `.spectrum-Checkbox .spectrum-Checkbox-box:after`
+- `.spectrum-Checkbox .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-checkmark`
+- `.spectrum-Checkbox .spectrum-Checkbox-input`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:checked:disabled ~ .spectrum-Checkbox-label`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:checked:hover:disabled + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:disabled`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:disabled + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:disabled ~ .spectrum-Checkbox-label`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:after`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-label`
+- `.spectrum-Checkbox .spectrum-Checkbox-input:hover:disabled + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox .spectrum-Checkbox-label`
+- `.spectrum-Checkbox .spectrum-Checkbox-partialCheckmark`
+- `.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox--emphasized.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox--emphasized.is-indeterminate:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox--emphasized.is-indeterminate:not(.is-invalid) .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox--emphasized:not(.is-invalid) .spectrum-Checkbox-input:focus-visible:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box`
+- `.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-checkmark`
+- `.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark`
+- `.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-checkmark`
+- `.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box .spectrum-Checkbox-partialCheckmark`
+- `.spectrum-Checkbox.is-indeterminate .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.is-invalid`
+- `.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:checked:not(:disabled) + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.is-invalid.is-indeterminate .spectrum-Checkbox-input:focus-visible + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.is-invalid.is-indeterminate:hover .spectrum-Checkbox-input:checked:not(:disabled) + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox.spectrum-Checkbox--emphasized`
+- `.spectrum-Checkbox.spectrum-Checkbox--sizeL`
+- `.spectrum-Checkbox.spectrum-Checkbox--sizeS`
+- `.spectrum-Checkbox.spectrum-Checkbox--sizeXL`
+- `.spectrum-Checkbox:active .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox:active .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox:active .spectrum-Checkbox-label`
+- `.spectrum-Checkbox:hover .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox:hover .spectrum-Checkbox-input:checked + .spectrum-Checkbox-box:before`
+- `.spectrum-Checkbox:hover .spectrum-Checkbox-label`
+- `.spectrum-Checkbox:lang(ja)`
+- `.spectrum-Checkbox:lang(ko)`
+- `.spectrum-Checkbox:lang(zh)`
+- `.spectrum-Checkbox:not(.is-readOnly) .spectrum-Checkbox-input:active:not(:disabled) + .spectrum-Checkbox-box`
+- `.spectrum-Checkbox:not(.is-readOnly):active .spectrum-Checkbox-input:not(:disabled) + .spectrum-Checkbox-box`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers
+
+- `--mod-checkbox-animation-duration`
+- `--mod-checkbox-border-width`
+- `--mod-checkbox-bottom-to-text`
+- `--mod-checkbox-checkmark-color`
+- `--mod-checkbox-content-color-default`
+- `--mod-checkbox-content-color-disabled`
+- `--mod-checkbox-content-color-down`
+- `--mod-checkbox-content-color-focus`
+- `--mod-checkbox-content-color-hover`
+- `--mod-checkbox-control-color-default`
+- `--mod-checkbox-control-color-disabled`
+- `--mod-checkbox-control-color-down`
+- `--mod-checkbox-control-color-focus`
+- `--mod-checkbox-control-color-hover`
+- `--mod-checkbox-control-corner-radius`
+- `--mod-checkbox-control-selected-color-default`
+- `--mod-checkbox-control-selected-color-down`
+- `--mod-checkbox-control-selected-color-hover`
+- `--mod-checkbox-control-size`
+- `--mod-checkbox-focus-indicator-color`
+- `--mod-checkbox-focus-indicator-gap`
+- `--mod-checkbox-focus-indicator-thickness`
+- `--mod-checkbox-font-size`
+- `--mod-checkbox-height`
+- `--mod-checkbox-line-height`
+- `--mod-checkbox-line-height-cjk`
+- `--mod-checkbox-margin-block`
+- `--mod-checkbox-selected-border-width`
+- `--mod-checkbox-text-to-control`
+- `--mod-checkbox-top-to-text`
+- `--mod-focus-indicator-thickness`
+
+
+
+### SWC
+
+
+Attributes
+
+- `disabled` - Boolean attribute to disable the checkbox
+- `indeterminate` - Boolean attribute for indeterminate state
+- `invalid` - Boolean attribute for invalid state styling
+- `emphasized` - Boolean attribute for emphasized styling
+- `checked` - Boolean attribute for checked state (inherited from CheckboxMixin)
+- `name` - String attribute for form submission (inherited from CheckboxMixin)
+- `readonly` - Boolean attribute for read-only state (inherited from CheckboxMixin)
+- `size` - String attribute with values: `s`, `m`, `l`, `xl` (from SizedMixin)
+- `tabindex` - Number attribute for tab order management
+- `autofocus` - Boolean HTML attribute for auto-focusing (handled in connectedCallback)
+
+
+
+
+Slots
+
+- Default slot - Content to display as the label for the Checkbox
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+
+
+
+
+
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+
+
+
+Spectrum 2 (CSS spectrum-two branch):
+
+```html
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+**No differences found between main and spectrum-two branches.**
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ---------------- |
+| `.spectrum-Checkbox` | `:host` | Implemented |
+| `.spectrum-Checkbox--emphasized` | `emphasized` attribute | Implemented |
+| `.spectrum-Checkbox--sizeS` | `size="s"` attribute | Implemented |
+| `.spectrum-Checkbox--sizeL` | `size="l"` attribute | Implemented |
+| `.spectrum-Checkbox--sizeXL` | `size="xl"` attribute | Implemented |
+| `.spectrum-Checkbox.is-indeterminate` | `indeterminate` attribute | Implemented |
+| `.spectrum-Checkbox.is-invalid` | `invalid` attribute | Implemented |
+| `.spectrum-Checkbox-input` | Internal checkbox input element, `#input` | Implemented |
+| `.spectrum-Checkbox-input:checked` | `checked` attribute | Implemented |
+| `.spectrum-Checkbox-input:disabled` | `disabled` attribute | Implemented |
+| `.spectrum-Checkbox-box` | Internal checkbox box element, `#box` | Implemented |
+| `.spectrum-Checkbox-checkmark` | Checkmark icon element, `#checkmark` | Implemented |
+| `.spectrum-Checkbox-partialCheckmark` | Indeterminate dash icon element, `#partialCheckmark` | Implemented |
+| `.spectrum-Checkbox-label` | Default slot content | Implemented |
+| `.spectrum-Checkbox:lang(ja)`, `.spectrum-Checkbox:lang(ko)`, `.spectrum-Checkbox:lang(zh)` | Language-specific styling | Implemented |
+| `.spectrum-Checkbox.is-readOnly` | `readonly` attribute | Implemented |
+| | `name` attribute | Missing from CSS |
+| | `tabindex` attribute | Missing from CSS |
+| | `autofocus` attribute | Missing from CSS |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+**New for S2:**
+The checkbox component in Spectrum 2 has the new down state (active) perspective shift applied.
+
+Note: There is some discussion ongoing about the invalid styles for checkbox. Currently, CSS supports individual red borders on the checkbox component, however, these styles are not present in the Figma specs for checkbox. The only invalid styling supported by design is the negative help text found in the field group component. When migrating, we'll need to consider clarifying the invalid styling with the design team for individual checkboxes.
+
+**Features Missing from CSS:**
+
+- `name` attribute for form submission has no corresponding CSS selector
+- `tabindex` attribute for accessibility has no CSS representation
+- `autofocus` attribute functionality implemented in JavaScript but has no CSS counterpart
+
+### CSS Spectrum 2 changes
+
+No structural differences found between the legacy (CSS main) and Spectrum 2 (CSS spectrum-two) branches. The template structure and class naming remain consistent across both branches.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3531)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-checkbox--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/checkbox--docs)
diff --git a/migration-roadmap/color-field.md b/migration-roadmap/color-field.md
new file mode 100644
index 0000000000..5ad6c3473b
--- /dev/null
+++ b/migration-roadmap/color-field.md
@@ -0,0 +1,142 @@
+# Color field migration roadmap
+
+There is no CSS implementation for this component; it only exists in SWC.
+
+## Component specifications
+
+### SWC
+
+
+Attributes
+
+**Color Field specific attributes:**
+
+- `view-color` - Whether to show the color preview
+
+**Inherited from TextfieldBase:**
+
+- `allowed-keys` - A regular expression outlining the keys that will be allowed to update the value
+- `autocomplete` - What form of assistance should be provided when attempting to supply a value
+- `focused` - Whether the color field is focused
+- `grows` - Whether a form control with multiline attribute will change size vertically
+- `invalid` - Whether the color field is invalid
+- `label` - A string applied via aria-label to the form control when a user visible label is not provided
+- `maxlength` - Defines the maximum string length that the user can enter
+- `minlength` - Defines the minimum string length that the user can enter
+- `multiline` - Whether the form control should accept a value longer than one line
+- `name` - Name of the form control
+- `pattern` - Pattern the value must match to be valid
+- `placeholder` - Text that appears in the form control when it has no value set
+- `quiet` - Whether to display the form control with no visible background
+- `readonly` - Whether a user can interact with the value of the form control
+- `required` - Whether the form control will be found to be invalid when it holds no value
+- `rows` - The specific number of rows the form control should provide in the user interface
+- `type` - The type of the form control (defaults to 'text')
+- `valid` - Whether the value held by the form control is valid
+- `value` - The value held by the form control
+
+**Inherited from SizedMixin:**
+
+- `size` - Size of the color field (s, m, l, xl)
+
+**Inherited from Focusable:**
+
+- `autofocus` - When this control is rendered, focus it automatically
+- `disabled` - Disable this control. It will not receive focus or events
+- `tabIndex` - The tab index to apply to this control
+
+
+
+
+Slots
+
+- `help-text` - Help text for the color field (inherited from TextfieldBase)
+- `negative-help-text` - Negative help text when invalid (inherited from TextfieldBase)
+
+
+
+### React implementation
+
+
+Props
+
+- `label` - The label for the color field
+- `autoFocus` - Whether the element should receive focus on render
+- `channel` - The color channel that this field edits, if not provided, the color is edited as a hex value (`hue` | `saturation` | `brightness` | `lightness` | `red` | `green` | `blue` | `alpha`)
+- `colorSpace` - The color space that the color field operates in if a channel prop is provided, if no channel is provided, the color field always displays the color as an RGB hex value (`rgb` | `hsl` | `hsb`)
+- `defaultValue` - The default value
+- `description` - A description for the field, provides a hint such as specific requirements for what to choose
+- `errorMessage` - An error message for the field
+- `excludeFromTabOrder` - Whether to exclude the element from the sequential tab order
+- `form` - The `
+
+## DOM structure
+
+### SWC DOM structure
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## Summary of changes
+
+### Inherited from TextfieldBase
+
+The ColorField component extends TextfieldBase, which means it will inherit all the changes and improvements made to the Textfield component in Spectrum 2 CSS, for example:
+
+- **Quiet variant**: removed in Spectrum 2
+- **Label position**: CSS supports side label as well as the default top label
+
+## Resources
+
+- [Spectrum React ColorField documentation](https://react-spectrum.adobe.com/s2/index.html?path=/docs/colorfield--docs)
diff --git a/migration-roadmap/cursor_prompt.md b/migration-roadmap/cursor_prompt.md
new file mode 100644
index 0000000000..2597f15fd0
--- /dev/null
+++ b/migration-roadmap/cursor_prompt.md
@@ -0,0 +1,242 @@
+# Spectrum Migration Documentation Prompt
+
+For the **[COMPONENT_NAME]** component(s), create comprehensive migration documentation in individual markdown files within the `migration-roadmap/` directory of the spectrum-web-components repository, following this exact structure:
+
+**IMPORTANT**: All files must be created on the original spectrum-web-components branch where the session started.
+
+## File Organization
+
+- **One markdown file per component**
+- Use the component/package name from the spectrum-web-components repository:
+- File path format: `migration-roadmap/[COMPONENT_NAME].md`
+- Example: `migration-roadmap/alert-banner.md`, `migration-roadmap/dialog.md`
+
+## Component Documentation Structure
+
+- Create a Level 1 heading (`#`) with the format: `# [Component name] migration roadmap`
+- Example: `# Alert Banner migration roadmap`
+
+### 1. Component Specifications
+
+Create a Level 2 Heading: `## Component specifications`
+
+Within this heading, we'll have a Level 3 heading for CSS (`### CSS`) and one for Spectrum web components (`### SWC`).
+
+#### 1.1 CSS Section
+
+Check out the `spectrum-two` branch of the spectrum-css repository and locate the component's `metadata.json` file in the `components/[component-name]/` directory.
+
+**Required git command**: `git checkout spectrum-two` (verify branch before proceeding)
+
+Create collapsible sections using `` and `` under `### CSS` for each category:
+
+**CSS Selectors Section:**
+
+- Title: "CSS selectors"
+- Extract all selectors from metadata.json
+
+**Passthroughs Section:**
+
+- Title: "Passthroughs"
+- Extract all passthroughs from metadata.json
+
+**Modifiers Section:**
+
+- Title: "Modifiers"
+- Extract all modifiers from metadata.json
+
+If any of these sections are empty in metadata.json, write for that section only, "None found for this component."
+
+#### 1.2 SWC Section
+
+Check out the `main` branch of the spectrum-web-components repository, analyze the component and create additional collapsible sections under `### SWC`:
+
+**Required source**: `packages/[component-name]/src/[component-name].ts` (analyze the `render()` method)
+
+**Attributes Section:**
+
+- Title: "Attributes"
+- Look for `@property` decorators in TypeScript
+- For string properties with enumerated values, extract each value as a separate attribute entry
+
+**Slots Section:**
+
+- Title: "Slots"
+- Look for `` patterns in render method
+
+If any of these sections are empty, write for that section only, "None found for this component."
+
+### 2. Comparison
+
+Create a Level 2 Heading: `## Comparison`
+
+#### 2.1 DOM Structure Changes
+
+**Critical Instruction**: Analyze files from THREE different sources. Always confirm the branch and repository being used.
+
+**2.1.1 Web Component DOM Structure Analysis**:
+
+- **Source**: spectrum-web-components `main` branch, `/packages/[component-name]/src/[component-name].ts` (`main` branch)
+- Analyze the component's `render()` method or template structure
+- Extract the actual HTML markup that the web component generates
+- Document the current DOM structure, including attributes
+
+**2.1.2 CSS DOM Structure Analysis**:
+
+**Branch switching requirements**: You will need to analyze the same component across two different branches of the spectrum-css repository. Use these git commands to switch between branches:
+
+```bash
+# For legacy analysis
+git checkout main
+
+# For Spectrum 2 analysis
+git checkout spectrum-two
+```
+
+- **Legacy Source**: spectrum-css `main` branch, `/components/[component-name]/stories/template.js`
+- **Spectrum 2 Source**: spectrum-css `spectrum-two` branch, `/components/[component-name]/stories/template.js`
+- **IMPORTANT**: Check both the import statements AND the template logic, as components may be removed from imports between sources
+- **Line-by-line comparison required**: Don't assume templates are identical - carefully check imports, component usage, and structure
+- Document class application differences
+- **Verification steps**: After each git checkout, confirm you're viewing the correct branch's files. After documenting each DOM structure, verify the accuracy by re-reading the actual template files to ensure the HTML matches exactly what's in the source code for that branch.
+- **Final accuracy check**: Before completing the documentation, re-read each template file one more time to verify the DOM structures are 100% accurate. Any discrepancies between documented HTML and actual template code will require correction.
+
+**Output Format**:
+
+Create a three-way HTML comparison using markdown code blocks. Use collapsible sections using `` and `` under `### DOM Structure changes` for each category:
+
+````markdown
+
+Spectrum Web Components:
+
+```html
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+
+
+
+Spectrum 2 (CSS spectrum-two branch):
+
+```html
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+```diff
+--- a/components/[component-name]/stories/template.js (main branch)
++++ b/components/[component-name]/stories/template.js (spectrum-two branch)
+@@ -1,3 +1,3 @@
+-// removed line
++// added line
+ // unchanged line
+```
+
+**Note**: Only include this diff section if there are actual differences between the main and spectrum-two branches. If the templates are identical, omit this section entirely.
+
+
+````
+
+#### 2.2 CSS => SWC mapping
+
+Create a markdown table with these exact column headers:
+
+- Column 1: "CSS selector"
+- Column 2: "Attribute or slot"
+- Column 3: "Status"
+
+**Status Values (use exactly as written):**
+
+- "Implemented" - CSS selector has corresponding web component feature
+- "Missing from WC" - CSS exists but no web component equivalent
+- "Missing from CSS" - Web component feature exists but no CSS support
+- "Deprecated" - Being removed in Spectrum 2
+
+**Mapping Logic:**
+
+- **Variants to Attributes**: CSS selectors with variants (noted after double dash `--`) likely map to component attributes
+- **Base Elements to Slots**: Selectors with base class + single dash `-` (e.g., `.spectrum-button-label`) likely map to slots
+- **Language Selectors**: Group all selectors containing :lang together on a single row, comma-separated, as they serve the same internationalization purpose and are typically implemented as a block
+
+**Language Selector Formatting example:**
+
+```markdown
+.spectrum-Search:lang(ja), .spectrum-Search:lang(ko), .spectrum-Search:lang(zh) | Language-specific styling | Implemented
+```
+
+**Table Organization Order:**
+
+1. Mapped pairs (CSS selector ↔ Attribute/Slot) with appropriate status
+2. Unmapped selectors (empty "Attribute or slot" column, "Missing from WC" status)
+3. Unmapped attributes/slots (empty "CSS selector" column, "Missing from CSS" status)
+
+### 3. Summary of changes
+
+Create a Level 2 Heading: `## Summary of changes`
+
+After the comparison table, create a new section that provide a focused summary of changes that will impact SWC engineers:
+
+#### CSS => SWC implementation gaps
+
+Summarize changes in **CSS => SWC mapping** section above. Note any statuses that are missing, and whether they are missing from WC or CSS.
+
+Entries with status indicating that they appear in WC but not CSS might be an indication of implementation differences, but could also be an indication of a deprecated feature.
+
+Entries with status indicating that they appear in CSS but not WC are often an indication of new features that may need to be added when migrating WC to 2nd gen.
+
+#### CSS Spectrum 2 changes
+
+Analyze the differences between CSS `main` and CSS `spectrum-two` branches surfaced in the DOM structure comparison and document them in this section:
+
+- **Required**: Compare the HTML structures from main vs spectrum-two templates line by line
+- **Document**: Any elements that are added, removed, or modified between branches
+- **Include**: Changes in element attributes, class names, or structural differences
+- **Note**: Even subtle differences like conditional elements or missing components must be documented
+- **Focus on changes in Spectrum CSS**, not changes between spectrum web components and CSS.
+
+Be sure to note:
+
+- Elements present in main but missing in spectrum-two
+- Elements present in spectrum-two but missing in main
+- Changes in element attributes or class names
+- Structural changes (different nesting, wrapper elements)
+- Conditional elements that differ between branches
+- Import differences that affect rendered output
+
+### 4. Resources section
+
+Create a Level 2 Heading: `## Resources`
+
+Under this heading, add a placeholder section for resources with a bulleted list that can be filled in:
+
+```markdown
+- [CSS migration]()
+- [Spectrum 2 preview]()
+- [React]()
+```
+
+## Output format notes
+
+- Create individual markdown files in the migration-roadmap/ directory
+- Use component names from spectrum-web-components repository for filenames
+- Use proper markdown formatting with Level 1 heading for component name
+- Ensure all elements are properly closed
+- Use consistent table formatting
+- Maintain hierarchical heading structure
+- Always verify git branch before analyzing any file
+- Perform line-by-line comparisons - don't assume files are similar
+- Ask clarifying questions for uncertain mappings instead of guessing
+- Use exact file paths specified in this prompt
diff --git a/migration-roadmap/divider.md b/migration-roadmap/divider.md
new file mode 100644
index 0000000000..3cff247bf5
--- /dev/null
+++ b/migration-roadmap/divider.md
@@ -0,0 +1,148 @@
+# Divider migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-Divider`
+- `.spectrum-Divider--sizeL`
+- `.spectrum-Divider--sizeS`
+- `.spectrum-Divider--staticBlack`
+- `.spectrum-Divider--staticBlack.spectrum-Divider--sizeL`
+- `.spectrum-Divider--staticWhite`
+- `.spectrum-Divider--staticWhite.spectrum-Divider--sizeL`
+- `.spectrum-Divider--vertical`
+- `.spectrum-Divider:not(.spectrum-Divider.spectrum-Divider--vertical)`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers
+
+- `--mod-divider-background-color`
+- `--mod-divider-block-minimum-size`
+- `--mod-divider-inline-minimum-size`
+- `--mod-divider-thickness`
+- `--mod-divider-vertical-align`
+- `--mod-divider-vertical-height`
+- `--mod-divider-vertical-margin`
+
+
+
+### SWC
+
+
+Attributes
+
+- `size` (s, m, l)
+- `vertical` (boolean)
+- `static-color` (white, black)
+
+
+
+
+Slots
+
+None found for this component.
+
+
+
+## Comparison
+
+### DOM structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+ #shadow-root
+
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+
+
+
+Spectrum 2 (CSS spectrum-two branch):
+
+```html
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+```diff
+
+```
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| --------------------------------------------------------------------- | ----------------------------------- | ----------- |
+| `.spectrum-Divider--sizeS` | `size="s"` | Implemented |
+| `.spectrum-Divider--sizeL` | `size="l"` | Implemented |
+| `.spectrum-Divider--vertical` | `vertical` | Implemented |
+| `.spectrum-Divider--staticBlack` | `static-color="black"` | Implemented |
+| `.spectrum-Divider--staticWhite` | `static-color="white"` | Implemented |
+| `.spectrum-Divider` | Base component | Implemented |
+| `.spectrum-Divider:not(.spectrum-Divider.spectrum-Divider--vertical)` | Default horizontal orientation | Implemented |
+| `.spectrum-Divider--staticBlack.spectrum-Divider--sizeL` | `static-color="black"` + `size="l"` | Implemented |
+| `.spectrum-Divider--staticWhite.spectrum-Divider--sizeL` | `static-color="white"` + `size="l"` | Implemented |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+**No missing features.** All CSS selectors have corresponding web component attributes:
+
+- **Size variants**: `--sizeS` → `size="s"`, `--sizeL` → `size="l"` (medium is default)
+- **Orientation**: `--vertical` → `vertical` boolean attribute
+- **Static colors**: `--staticBlack` → `static-color="black"`, `--staticWhite` → `static-color="white"`
+
+### CSS Spectrum 2 changes
+
+The main difference between the legacy (CSS main) and Spectrum 2 (CSS spectrum-two) branches is the removal of minimum dimension styling. Horizontal divider's minimum width and vertical divider's minimum height are now controlled by tokens.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3557)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-divider--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/divider--docs)
diff --git a/migration-roadmap/dropzone.md b/migration-roadmap/dropzone.md
new file mode 100644
index 0000000000..4dae7732b9
--- /dev/null
+++ b/migration-roadmap/dropzone.md
@@ -0,0 +1,273 @@
+# Dropzone migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-DropZone`
+- `.spectrum-DropZone .spectrum-IllustratedMessage`
+
+**Subcomponents:**
+
+- `.spectrum-DropZone-actions`
+- `.spectrum-DropZone.is-filled.is-dragged .spectrum-DropZone-actions`
+- `.spectrum-DropZone-button`
+- `.spectrum-DropZone-button .spectrum-Button-label`
+- `.spectrum-DropZone-content`
+- `.spectrum-DropZone.is-filled.is-dragged .spectrum-DropZone-content`
+- `.spectrum-DropZone-stroke`
+- `.spectrum-DropZone-strokePath`
+- `.spectrum-DropZone.is-dragged .spectrum-DropZone-strokePath`
+- `.spectrum-DropZone:has(.spectrum-DropZone-stroke)`
+
+**Interactive states:**
+
+- `.spectrum-DropZone-button:focus`
+- `.spectrum-DropZone-button:hover`
+- `.spectrum-DropZone:focus-visible`
+
+**Variants:**
+
+- `.spectrum-DropZone.is-dragged`
+- `.spectrum-DropZone.is-filled`
+- `.spectrum-DropZone.is-filled.is-dragged`
+
+
+
+
+Passthroughs
+
+- `--mod-button-border-radius`
+- `--mod-illustrated-message-description-font-size`
+- `--mod-illustrated-message-description-position`
+- `--mod-illustrated-message-description-to-action`
+- `--mod-illustrated-message-description-z-index`
+- `--mod-illustrated-message-display`
+- `--mod-illustrated-message-illustration-color`
+- `--mod-illustrated-message-vertical-maximum-width`
+
+
+
+
+Modifiers
+
+- `--mod-drop-zone-background-color`
+- `--mod-drop-zone-background-color-opacity`
+- `--mod-drop-zone-background-color-opacity-filled`
+- `--mod-drop-zone-body-font-size`
+- `--mod-drop-zone-body-to-action`
+- `--mod-drop-zone-border-color`
+- `--mod-drop-zone-border-color-hover`
+- `--mod-drop-zone-border-dash-gap`
+- `--mod-drop-zone-border-dash-length`
+- `--mod-drop-zone-border-style`
+- `--mod-drop-zone-border-style-dragged`
+- `--mod-drop-zone-border-width`
+- `--mod-drop-zone-content-background-color`
+- `--mod-drop-zone-content-bottom-to-text`
+- `--mod-drop-zone-content-font-family`
+- `--mod-drop-zone-content-font-size`
+- `--mod-drop-zone-content-font-weight`
+- `--mod-drop-zone-content-height`
+- `--mod-drop-zone-content-max-width`
+- `--mod-drop-zone-content-maximum-width`
+- `--mod-drop-zone-content-top-to-text`
+- `--mod-drop-zone-corner-radius`
+- `--mod-drop-zone-edge-to-text`
+- `--mod-drop-zone-illustration-color-hover`
+- `--mod-drop-zone-inline-size`
+- `--mod-drop-zone-padding`
+- `--mod-drop-zone-title-line-height`
+
+
+
+### SWC
+
+
+Attributes
+
+- `dropEffect` (String) - Controls the feedback during drag and drop: 'copy', 'move', 'link', or 'none'
+- `isDragged` (Boolean) - Indicates that files are currently being dragged over the dropzone
+- `isFilled` (Boolean) - Set to indicate that the component is in a filled state
+
+
+
+
+Slots
+
+- Default slot - drop zone content (i.e. ``, links, instructive copy)
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+### Key Changes in HTML Structure
+
+1. **Enhanced visual border**: Added SVG stroke element (`.spectrum-DropZone-stroke`) with customizable dashed border styling that provides better visual feedback during drag operations.
+
+2. **Restructured content organization**: Moved the illustrated message inside the `.spectrum-DropZone-content` container and separated actions into dedicated `.spectrum-DropZone-actions` container for better structural hierarchy.
+
+3. **Button component upgrade**: Switched from `ActionButton` to `Button` component for improved consistency with other Spectrum components.
+
+4. **Improved content flow**: The content container now properly wraps both the illustrated message and actions, creating a more logical content structure.
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------- | ---------------------------------------- | ---------------------------- |
+| `.spectrum-DropZone` | `:host` | Implemented |
+| `.spectrum-DropZone.is-dragged` | `isDragged` attribute | Implemented |
+| `.spectrum-DropZone.is-filled` | `isFilled` attribute | Implemented |
+| `.spectrum-DropZone-content` | default slot; `` | Implemented |
+| `.spectrum-DropZone-button` | default slot; `` | Implemented |
+| `.spectrum-DropZone-actions` | Actions container | Missing from WC (new for S2) |
+| `.spectrum-DropZone-stroke` | SVG stroke border | Missing from WC (new for S2) |
+| `.spectrum-DropZone-strokePath` | SVG path element | Missing from WC (new for S2) |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+- **Content structure**: The web component will require updating the internal structure including `.spectrum-DropZone-content`, `.spectrum-DropZone-actions`, and associated button elements. The `.spectrum-DropZone-content` and `.spectrum-DropZone-actions` classes are styled based on the Figma design specs. The SWC implementation provides only a simple slot-based container. We should consider if this approach is the approach we prefer moving into Spectrum 2 since the single-slot approach leaves the option open for lots of potentially unnecessary customization by the consumer (i.e. consumers could freely compose a drop zone with other components that does not follow the design expectations and standards).
+
+- **Visual border system**: Missing the SVG-based stroke system (`.spectrum-DropZone-stroke` and `.spectrum-DropZone-strokePath`) provides enhanced visual feedback with customizable dashed borders. The svg borders were implemented in place of the CSS-only dashed border style to ensure the dashes have the corner rounding as laid out in the design spec.
+
+- **Built-in UI elements**: The web component doesn't include built-in illustrated message and button components, requiring developers to manually compose these elements in the slot.
+
+- **State-specific styling**: While drag and fill states are tracked separately, the web component currently doesn't handle the combination state of dragged and filled. Some missing features include include a button when the drop zone is filled, taking advantage of the custom SVG border options when dragged and filled, and `` needs to support the background illustration for the filled state.
+
+Also worth consideration is the concept of "filled" vs. "replace." The design file refers to the "filled" state as the "replace" variant, so we should consider an API refactor if we want to align with design intentions more.
+
+### CSS Spectrum 2 changes
+
+- **Enhanced border system**: Introduced SVG-based stroke system replacing simple CSS borders, providing better visual feedback and customization options for drag states.
+
+- **Improved content organization**: Repurposed `.spectrum-DropZone-content` wrapper and separated actions into `.spectrum-DropZone-actions` container for better organization.
+
+- **Component upgrades**: Switched from an action button to a button for better visual hierarchy and consistency. Additionally, the `.spectrum-Dropzone-content` element was set by default to `display: none` in Spectrum 1, but didn't wrap the corresponding illustrated message content. For Spectrum 2, the purpose of `.spectrum-Dropzone-content` has been updated to more accurately wrap the component's visual content and be displayed by default.
+
+- **Enhanced state styling**: Added more sophisticated styling for filled and dragged state combinations, including background image support for filled states.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3429)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-drop-zone--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/dropzone--docs)
diff --git a/migration-roadmap/field-group.md b/migration-roadmap/field-group.md
new file mode 100644
index 0000000000..8a1214cc74
--- /dev/null
+++ b/migration-roadmap/field-group.md
@@ -0,0 +1,233 @@
+# Field Group migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-FieldGroup`
+- `.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout`
+- `.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-FieldGroup-item:not(:last-child)`
+- `.spectrum-FieldGroup--horizontal .spectrum-FieldGroupInputLayout .spectrum-HelpText`
+- `.spectrum-FieldGroup--sidelabel`
+- `.spectrum-FieldGroup--toplabel`
+- `.spectrum-FieldGroup--vertical .spectrum-FieldGroupInputLayout`
+- `.spectrum-FieldGroupInputLayout`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers
+
+None found for this component.
+
+
+
+### SWC
+
+
+Attributes
+
+- `horizontal` - Boolean attribute for horizontal layout orientation
+- `invalid` - Boolean attribute for invalid state to show negative help text
+
+
+
+
+Slots
+
+- Default slot - The form controls that make up the group
+- `help-text` - Default or non-negative help text to associate to your form element
+- `negative-help-text` - Negative help text to associate to your form element when `invalid`
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+
+
+
+
+ Help text content
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+### Key Changes in HTML Structure
+
+1. **Size class addition**: Added t-shirt sizing classes to the root element for explicit size control.
+
+2. **Modernized SVG attributes**: Updated SVG with modern attributes including `xmlns`, updated dimensions (96x96), new viewBox (0 0 160 160), and `preserveAspectRatio` for better rendering.
+
+3. **Content wrapper**: Added `.spectrum-IllustratedMessage-content` container to group text content and actions separate from the illustration.
+
+4. **Typography simplification**: Removed Spectrum typography classes (`spectrum-Heading`, `spectrum-Body`) from heading and description elements, using semantic HTML with component-specific classes instead.
+
+5. **Actions container**: Introduced `.spectrum-IllustratedMessage-actions` container with button group support for interactive elements.
+
+6. **Horizontal orientation**: Added `.spectrum-IllustratedMessage--horizontal` modifier class that introduces the new horizontal layout variant.
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------------------- | ---------------------------- | ---------------------------- |
+| `.spectrum-IllustratedMessage` | `:host` | Implemented |
+| `.spectrum-IllustratedMessage--sizeS` | `size="s"` | Missing from WC (new for S2) |
+| `.spectrum-IllustratedMessage--sizeL` | `size="l"` | Missing from WC (new for S2) |
+| `.spectrum-IllustratedMessage--horizontal` | Layout variant | Missing from WC (new for S2) |
+| `.spectrum-IllustratedMessage-illustration` | Default slot | Implemented |
+| `.spectrum-IllustratedMessage-heading` | `heading` attribute/slot | Implemented |
+| `.spectrum-IllustratedMessage-description` | `description` attribute/slot | Implemented |
+| `.spectrum-IllustratedMessage-content` | Content container | Missing from WC (new for S2) |
+| `.spectrum-IllustratedMessage-actions` | Actions container | Missing from WC (new for S2) |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+- **Size variants**: The web component lacks support for `.spectrum-IllustratedMessage--sizeS` and `.spectrum-IllustratedMessage--sizeL` which provide different sizing options for various use cases. Sizes were introduced in Spectrum 2 designs.
+
+- **Horizontal layout**: Missing support for `.spectrum-IllustratedMessage--horizontal` which enables horizontal layout with illustration and content side-by-side. This was new for Spectrum 2.
+
+- **Content structure**: The web component lacks `.spectrum-IllustratedMessage-content` wrapper and `.spectrum-IllustratedMessage-actions` container, limiting complex layout capabilities. This wrapper sets the correct justification styles for the new button group in Spectrum 2.
+
+- **Built-in actions**: No built-in support yet for button group, which were introduced in S2.
+
+### CSS Spectrum 2 changes
+
+- **Unified illustration design**: Upgraded the SVG illustration to something that better represents modern Spectrum design language.
+
+- **Enhanced content structure**: Added `.spectrum-IllustratedMessage-content` wrapper to group text content separate from illustration, improving layout flexibility.
+
+- **Actions integration**: Introduced `.spectrum-IllustratedMessage-actions` container with built-in button group support for common interactive scenarios. This element is optional.
+
+- **Size system enhancement**: Expanded size variants.
+
+- **Improved SVG handling**: Enhanced SVG illustration with better accessibility attributes and rendering optimization.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3246)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-illustrated-message--docs&args=isHorizontal:!true)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/illustratedmessage--docs)
diff --git a/migration-roadmap/infield-button.md b/migration-roadmap/infield-button.md
new file mode 100644
index 0000000000..c917f97785
--- /dev/null
+++ b/migration-roadmap/infield-button.md
@@ -0,0 +1,298 @@
+# In-field button migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-InfieldButton`
+- `.spectrum-InfieldButton--quiet`
+- `.spectrum-InfieldButton--quiet:disabled`
+- `.spectrum-InfieldButton--quiet:not(:disabled):active`
+- `.spectrum-InfieldButton--quiet:not(:disabled):focus-visible`
+- `.spectrum-InfieldButton--quiet:not(:disabled):hover`
+- `.spectrum-InfieldButton-fill`
+- `.spectrum-InfieldButton-icon`
+- `.spectrum-InfieldButton-inline`
+- `.spectrum-InfieldButton-inline .spectrum-InfieldButton`
+- `.spectrum-InfieldButton-inline > .spectrum-InfieldButton.spectrum-InfieldButton--sizeS`
+- `.spectrum-InfieldButton.spectrum-InfieldButton--quiet`
+- `.spectrum-InfieldButton.spectrum-InfieldButton--quiet:disabled`
+- `.spectrum-InfieldButton.spectrum-InfieldButton--sizeL`
+- `.spectrum-InfieldButton.spectrum-InfieldButton--sizeS`
+- `.spectrum-InfieldButton.spectrum-InfieldButton--sizeXL`
+- `.spectrum-InfieldButton:active`
+- `.spectrum-InfieldButton:disabled`
+- `.spectrum-InfieldButton:focus-visible`
+- `.spectrum-InfieldButton:hover`
+- `.spectrum-InfieldButton:not(:disabled):active`
+- `.spectrum-InfieldButton:not(:disabled):focus-visible`
+- `.spectrum-InfieldButton:not(:disabled):hover`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers
+
+- `--mod-infield-button-background-color`
+- `--mod-infield-button-background-color-disabled`
+- `--mod-infield-button-background-color-down`
+- `--mod-infield-button-background-color-down-disabled`
+- `--mod-infield-button-background-color-down-quiet`
+- `--mod-infield-button-background-color-hover`
+- `--mod-infield-button-background-color-hover-disabled`
+- `--mod-infield-button-background-color-hover-quiet`
+- `--mod-infield-button-background-color-quiet`
+- `--mod-infield-button-background-color-quiet-disabled`
+- `--mod-infield-button-border-radius`
+- `--mod-infield-button-edge-to-fill`
+- `--mod-infield-button-field-edge-to-icon`
+- `--mod-infield-button-fill-justify-content`
+- `--mod-infield-button-fill-padding`
+- `--mod-infield-button-height`
+- `--mod-infield-button-icon-color`
+- `--mod-infield-button-icon-color-disabled`
+- `--mod-infield-button-icon-color-down`
+- `--mod-infield-button-icon-color-down-disabled`
+- `--mod-infield-button-icon-color-hover`
+- `--mod-infield-button-icon-color-hover-disabled`
+- `--mod-infield-button-side-edge-to-fill`
+- `--mod-infield-button-width`
+
+
+
+### SWC
+
+
+Attributes
+
+- `active` (Boolean) - Whether the infield button is in an active state
+- `block` (String) - Vertical stack position: 'start' or 'end'
+- `disabled` (Boolean) - Disable this control. It will not receive focus or events
+- `download` (String) - Causes the browser to treat the linked URL as a download
+- `href` (String) - The URL that the hyperlink points to
+- `inline` (String) - Horizontal group position: 'start' or 'end'
+- `label` (String) - An accessible label that describes the component. It will be applied to aria-label, but not visually rendered
+- `quiet` (Boolean) - Whether the button is in quiet variant
+- `referrerpolicy` (String) - How much of the referrer to send when following the link
+- `rel` (String) - The relationship of the linked URL as space-separated link types
+- `tabIndex` (Number) - The tab index to apply to this control
+- `target` (String) - Where to display the linked URL, as the name for a browsing context
+- `type` (String) - The default behavior of the button: 'button', 'submit', or 'reset'
+
+
+
+
+Slots
+
+- Default slot - Text content for the button
+- Icon slot - Icon content for the button
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+
+
+
+Spectrum 2 (CSS spectrum-two branch):
+
+```html
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+### HTML Output Diff
+
+**Single Button Changes:**
+
+```diff
+
+```
+
+**Stacked → Inline Layout Changes:**
+
+```diff
++
+
+
++
+```
+
+### Key Changes in HTML Structure
+
+1. **Layout paradigm shift**: Replaced `isStacked` vertical stacking with `isInline` horizontal grouping
+2. **Position styles removed**: The `inline` and `block` position properties from SWC are no longer supported in CSS-only implementations
+3. **Enhanced iconography**:
+ - Single button: Uses size-specific icon names (e.g., `Add100` instead of `Add`)
+ - Inline buttons: Switched from chevron icons to more intuitive action icons (`Dash`/`Add`)
+4. **Simplified state management**: Removed `isInvalid` and `isFocused` states while preserving `isHovered`/`isActive`
+5. **Improved accessibility**: Added `role="presentation"` for single buttons and proper `aria-label` differentiation for inline buttons
+6. **Container structure**: Inline variant wraps buttons in `spectrum-InfieldButton-inline` container
+7. **Consistent corner radius**: Position-specific border radius variants have been removed in favor of a consistent corner radius approach
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ---------------------------------- | ---------------------- | ---------------------------- |
+| `.spectrum-InfieldButton` | `:host` | Implemented |
+| `.spectrum-InfieldButton--quiet` | `quiet` attribute | Implemented |
+| `.spectrum-InfieldButton-fill` | Fill container | Implemented |
+| `.spectrum-InfieldButton-icon` | Icon slot | Implemented |
+| `.spectrum-InfieldButton-inline` | Inline group container | Missing from WC (new for S2) |
+| `.spectrum-InfieldButton--sizeL` | `size="l"` | Implemented |
+| `.spectrum-InfieldButton--sizeS` | `size="s"` | Implemented |
+| `.spectrum-InfieldButton--sizeXL` | `size="xl"` | Implemented |
+| `.spectrum-InfieldButton:disabled` | `disabled` attribute | Implemented |
+| `.spectrum-InfieldButton:active` | `active` attribute | Implemented |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+- **Inline group functionality**: The web component lacks support for `.spectrum-InfieldButton-inline` which enables horizontal button grouping, commonly used for increment/decrement controls in number inputs and similar interfaces.
+- **Required wrapper div**: Spectrum 2 introduces a mandatory `
` wrapper element for inline button layouts. This structural change is essential for proper CSS styling and must be implemented during migration to ensure the component renders correctly in Spectrum 2.
+
+### CSS Spectrum 2 changes
+
+- **Reduced API complexity**: Eliminated numerous parameters (`position`, `isInvalid`, `isFocused`, `isStacked`, `onSubtract`, `onAdd`) to create a more focused and maintainable component API.
+- **Layout paradigm shift**: Replaced the `isStacked` vertical stacking approach with `isInline` horizontal grouping, better aligning with common use cases for infield buttons.
+- **Position styles removed**: The `inline` and `block` position properties from SWC are no longer supported in CSS-only implementations due to the consistent corner radius approach.
+- **Enhanced iconography**: Switched from chevron-based icons to more intuitive action icons (Dash/Add), providing clearer visual cues for increment/decrement operations.
+- **Streamlined state management**: Removed `isInvalid`/`isFocused` states while preserving essential interaction feedback (`isHovered`/`isActive`).
+- **Flexible template structure**: Inline variant automatically creates paired buttons for common operations, while single variant provides direct click handling for custom actions.
+- **Focus state inheritance**: Infield buttons no longer manage their own focus states, instead inheriting focus styling from their parent components (like textfields or pickers). This creates a more cohesive user experience where the entire input field appears focused rather than individual button elements.
+
+#### Removed modifiers
+
+Due to deprecation of the position variants in the infield button, several spacing and border radius modifiers have been removed:
+
+- `--mod-infield-button-inner-edge-to-fill`
+- `--mod-infield-button-stacked-border-radius-reset`
+- `--mod-infield-button-stacked-bottom-border-block-end-width`
+- `--mod-infield-button-stacked-bottom-border-radius-end-end`
+- `--mod-infield-button-stacked-bottom-border-radius-end-start`
+- `--mod-infield-button-stacked-fill-padding-inline`
+- `--mod-infield-button-stacked-fill-padding-inner`
+
+#### New tokens
+
+These new tokens support the inline variant and stepper (number field) use cases:
+
+- `--spectrum-in-field-button-side-edge-to-fill-small`
+- `--spectrum-in-field-button-side-edge-to-fill-medium`
+- `--spectrum-in-field-button-side-edge-to-fill-large`
+- `--spectrum-in-field-button-side-edge-to-fill-extra-large`
+- `--spectrum-field-edge-to-icon-75`
+- `--spectrum-field-edge-to-icon-100`
+- `--spectrum-field-edge-to-icon-200`
+- `--spectrum-field-edge-to-icon-300`
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3642)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-in-field-button--docs)
diff --git a/migration-roadmap/infield-progress-circle.md b/migration-roadmap/infield-progress-circle.md
new file mode 100644
index 0000000000..723c301028
--- /dev/null
+++ b/migration-roadmap/infield-progress-circle.md
@@ -0,0 +1,85 @@
+# In-field progress circle migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-InfieldProgressCircle`
+- `.spectrum-InfieldProgressCircle .spectrum-ProgressCircle-fill`
+- `.spectrum-InfieldProgressCircle--sizeL`
+- `.spectrum-InfieldProgressCircle--sizeS`
+- `.spectrum-InfieldProgressCircle--sizeXL`
+
+
+
+
+Passthroughs
+
+- `--mod-progress-circle-size`
+- `--mod-progress-circle-thickness`
+
+
+
+
+Modifiers
+
+None found for this component.
+
+
+
+### SWC
+
+
+Attributes
+
+- `indeterminate` (Boolean) - Whether the progress circle is in indeterminate state
+- `label` (String) - Accessible label for the progress circle
+- `progress` (Number) - Progress value (0-100)
+- `size` (String) - Size of the progress circle: 's', 'm', 'l', 'xl'
+- `static-color` (String) - Static color variant
+
+
+
+
+Slots
+
+- Default slot - Content inside the progress circle
+
+
+
+### CSS => SWC mapping
+
+Since the infield progress circle doesn't exist as a separate web component, this mapping shows how it **could** work with the existing `sp-progress-circle` component:
+
+| CSS selector | ProgressCircle attribute | Status |
+| --------------------------------------------------------------- | ------------------------------ | ---------------------------- |
+| `.spectrum-InfieldProgressCircle` | `:host` (with infield classes) | Would need implementation |
+| `.spectrum-InfieldProgressCircle .spectrum-ProgressCircle-fill` | Progress fill element | Available via ProgressCircle |
+| `.spectrum-InfieldProgressCircle--sizeL` | `size="l"` | Available via ProgressCircle |
+| `.spectrum-InfieldProgressCircle--sizeS` | `size="s"` | Available via ProgressCircle |
+| `.spectrum-InfieldProgressCircle--sizeXL` | `size="xl"` | Available via ProgressCircle |
+| N/A | `indeterminate` | Available via ProgressCircle |
+| N/A | `label` | Available via ProgressCircle |
+| N/A | `progress` | Available via ProgressCircle |
+| N/A | `static-color` | Available via ProgressCircle |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+- **Missing infield variant**: The infield progress circle doesn't exist as a separate web component. Implementation would likely involve extending the existing `sp-progress-circle` component with infield-specific styling classes, similar to how it's done in CSS.
+- **Infield-specific styling**: The `.spectrum-InfieldProgressCircle` base class and its size variants would need to be implemented as additional CSS classes that can be applied to the base progress circle component.
+
+### CSS Spectrum 2 changes
+
+- **New component introduction**: The infield progress circle is entirely new in the spectrum-two branch, designed specifically for inline loading states within form fields and input components.
+- **Modular architecture**: Built as a wrapper around the base ProgressCircle component with infield-specific styling classes, promoting code reuse and consistency.
+- **Comprehensive sizing**: Introduced S, M, L, and XL size variants to match the sizing scale used throughout the Spectrum design system.
+- **Static color variants**: Added support for static color variants to ensure visibility in various background contexts and high-contrast scenarios.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3430)
diff --git a/migration-roadmap/meter.md b/migration-roadmap/meter.md
new file mode 100644
index 0000000000..d841a89b82
--- /dev/null
+++ b/migration-roadmap/meter.md
@@ -0,0 +1,226 @@
+# Meter migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-Meter`
+
+**Subcomponents:**
+
+- `.spectrum-Meter .spectrum-ProgressBar-helptext`
+
+**Variants:**
+
+- `.spectrum-Meter.is-negative`
+- `.spectrum-Meter.is-notice`
+- `.spectrum-Meter.is-positive`
+- `.spectrum-Meter--staticWhite` (The `.spectrum-Meter--staticWhite` class is not present in the Meter CSS, as it makes use of `spectrum-ProgressBar--staticWhite`)
+- `.spectrum-Meter--staticBlack` (The `.spectrum-Meter--staticBlack` class is not present in the Meter CSS, as it makes use of `spectrum-ProgressBar--staticBlack`)
+
+**Sizes:**
+
+- `.spectrum-Meter.spectrum-Meter--sizeL`
+- `.spectrum-Meter.spectrum-Meter--sizeS`
+- `.spectrum-Meter.spectrum-Meter--sizeXL`
+
+
+
+
+Passthroughs
+
+- `--mod-progressbar-fill-color`
+- `--mod-progressbar-max-size`
+- `--mod-progressbar-min-size`
+- `--mod-progressbar-thickness`
+
+
+
+
+Modifiers
+
+- `--mod-meter-help-text-to-progress-bar`
+- `--mod-meter-max-width`
+- `--mod-meter-min-width`
+
+
+
+### SWC
+
+
+Attributes
+
+- `progress` (Number) - Progress value
+- `variant` (String) - Meter variant: 'positive', 'notice', or 'negative'
+- `label` (String) - Label text
+- `sideLabel` (Boolean) - Whether to display label on the side
+- `staticColor` (String) - Static color: 'white'
+
+**Inherited from SizedMixin:**
+
+- `size` - Size of the number field (s, m, l, xl)
+
+
+
+
+Slots
+
+- Default slot - Text labeling the Meter
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+ [label]
+
+[progress]
+
+```
+
+### Key Changes in HTML Structure
+
+1. **Size class adjustment**: Changed default size class from `spectrum-Meter--sizeL` to `spectrum-Meter--sizeM`. In S2, size options were expanded (although SWC already supported S/M/L/XL). In Spectrum 1, the meter component extended the default medium-sized progress bar with `.spectrum-ProgressBar--sizeM`, as well as set the default meter size to `.spectrum-Meter--sizeL`. In Spectrum 2, you'll notice the `.spectrum-ProgressBar--sizeM` modifier is removed since that t-shirt size is not needed for default progress bars and/or meters.
+
+2. **Help text integration**: Added optional `.spectrum-ProgressBar-helptext` container with `.spectrum-HelpText-text` wrapper for displaying contextual help information below the meter.
+
+
+
+### CSS => SWC mapping
+
+**Note:** The meter extends progress bar, so the progress bar selectors listed below are inherited in the CSS meter.
+
+| CSS selector | Attribute or slot | Status |
+| ---------------------------------- | ------------------------------------- | ---------------------------- |
+| `.spectrum-Meter` | `:host` | Implemented |
+| `.spectrum-Meter--sizeS` | `size="s"` | Implemented |
+| `.spectrum-Meter--sizeL` | `size="l"` | Implemented |
+| `.spectrum-Meter--sizeXL` | `size="xl"` | Implemented |
+| `.spectrum-Meter.is-positive` | `variant="positive"` | Implemented |
+| `.spectrum-Meter.is-negative` | `variant="negative"` | Implemented |
+| `.spectrum-Meter.is-notice` | `variant="notice"` | Implemented |
+| `.spectrum-Meter--staticWhite` | `staticColor="white"` | Implemented |
+| `.spectrum-ProgressBar-label` | `label` attribute; default slot | Implemented |
+| `.spectrum-ProgressBar-percentage` | `` | Implemented |
+| `.spectrum-ProgressBar-track` | `.track` container | Implemented |
+| `.spectrum-ProgressBar-fill` | `fill` element | Implemented |
+| `.spectrum-ProgressBar--sideLabel` | `side-label` attribute | Implemented |
+| `.spectrum-Meter--staticBlack` | `staticColor="black"` | Missing from WC (new for S2) |
+| `.spectrum-ProgressBar-helptext` | Help text | Missing from WC (new for S2) |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+- **Help text support**: The web component lacks support for conditional help text, which would display help text below the meter.
+
+- **Static black**: The web component lacks support for the new static black styles for the meter.
+
+### CSS Spectrum 2 changes
+
+The CSS Spectrum 2 meter DOM includes the addition of optional help text, but otherwise remains the same. The meter component essentially extends the progress bar with semantic color variants (positive, negative, notice) and uses the same underlying structure and styling.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3968)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-meter--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/meter--docs)
diff --git a/migration-roadmap/number-field.md b/migration-roadmap/number-field.md
new file mode 100644
index 0000000000..eb25f83a63
--- /dev/null
+++ b/migration-roadmap/number-field.md
@@ -0,0 +1,494 @@
+# Number field migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+**Base component:**
+
+- `.spectrum-NumberField`
+- `.spectrum-NumberField:before`
+- `.spectrum-NumberField:lang(ja), .spectrum-NumberField:lang(ko), .spectrum-NumberField:lang(zh)`
+
+**Variants:**
+
+- `.spectrum-NumberField.spectrum-NumberField--hiddenStepper`
+- `.spectrum-NumberField.spectrum-NumberField--hiddenStepper .spectrum-NumberField-textfield`
+- `.spectrum-NumberField.spectrum-NumberField--hiddenStepper .spectrum-NumberField-textfield .spectrum-NumberField-input`
+- `.spectrum-NumberField.spectrum-NumberField--hiddenStepper .spectrum-NumberField-textfield.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon`
+- `.spectrum-NumberField.spectrum-NumberField--hiddenStepper .spectrum-NumberField-textfield:not(:has(.spectrum-Textfield-validationIcon)) .spectrum-NumberField-input`
+- `.spectrum-NumberField.spectrum-NumberField--sideLabel`
+- `.spectrum-NumberField.spectrum-NumberField--sideLabel .spectrum-NumberField-fieldLabel`
+- `.spectrum-NumberField.spectrum-NumberField--sideLabel .spectrum-NumberField-helpText`
+- `.spectrum-NumberField.spectrum-NumberField--sideLabel .spectrum-NumberField-inputs`
+- `.spectrum-NumberField.spectrum-NumberField--sizeL`
+- `.spectrum-NumberField.spectrum-NumberField--sizeS`
+- `.spectrum-NumberField.spectrum-NumberField--sizeXL`
+
+**Child elements:**
+
+- `.spectrum-NumberField-buttons`
+- `.spectrum-NumberField-fieldLabel`
+- `.spectrum-NumberField-helpText`
+- `.spectrum-NumberField-inputs`
+- `.spectrum-NumberField-inputs .spectrum-Textfield .spectrum-Textfield-input`
+- `.spectrum-NumberField-inputs .spectrum-Textfield.is-invalid .spectrum-NumberField-input`
+
+**Input element:**
+
+- `.spectrum-NumberField-input`
+- `.spectrum-NumberField-textfield`
+
+**States:**
+
+- `.spectrum-NumberField-textfield.spectrum-Textfield.is-invalid .spectrum-Textfield-validationIcon`
+- `.spectrum-NumberField.is-disabled`
+- `.spectrum-NumberField.is-focused.is-hover:not(.is-disabled)`
+- `.spectrum-NumberField.is-focused.is-hover:not(.is-disabled, .is-readOnly)`
+- `.spectrum-NumberField.is-focused:not(.is-disabled)`
+- `.spectrum-NumberField.is-focused:not(.is-disabled):hover`
+- `.spectrum-NumberField.is-focused:not(.is-disabled, .is-readOnly)`
+- `.spectrum-NumberField.is-focused:not(.is-disabled, .is-readOnly):hover`
+- `.spectrum-NumberField.is-hover:not(.is-disabled)`
+- `.spectrum-NumberField.is-hover:not(.is-disabled):focus`
+- `.spectrum-NumberField.is-hover:not(.is-disabled):focus-visible`
+- `.spectrum-NumberField.is-hover:not(.is-disabled):focus-within`
+- `.spectrum-NumberField.is-hover:not(.is-disabled, .is-readOnly)`
+- `.spectrum-NumberField.is-hover:not(.is-disabled, .is-readOnly):focus`
+- `.spectrum-NumberField.is-hover:not(.is-disabled, .is-readOnly):focus-visible`
+- `.spectrum-NumberField.is-hover:not(.is-disabled, .is-readOnly):focus-within`
+- `.spectrum-NumberField.is-invalid`
+- `.spectrum-NumberField.is-keyboardFocused.is-hover:not(.is-disabled)`
+- `.spectrum-NumberField.is-keyboardFocused.is-hover:not(.is-disabled, .is-readOnly)`
+- `.spectrum-NumberField.is-keyboardFocused:not(.is-disabled)`
+- `.spectrum-NumberField.is-keyboardFocused:not(.is-disabled):hover`
+- `.spectrum-NumberField.is-keyboardFocused:not(.is-disabled, .is-readOnly)`
+- `.spectrum-NumberField.is-keyboardFocused:not(.is-disabled, .is-readOnly) .spectrum-NumberField-inputs`
+- `.spectrum-NumberField.is-keyboardFocused:not(.is-disabled, .is-readOnly):hover`
+- `.spectrum-NumberField.is-readOnly`
+
+**Interactive states:**
+
+- `.spectrum-NumberField:focus-visible .spectrum-NumberField-inputs`
+- `.spectrum-NumberField:not(.is-disabled):focus`
+- `.spectrum-NumberField:not(.is-disabled):focus-visible`
+- `.spectrum-NumberField:not(.is-disabled):focus-visible:hover`
+- `.spectrum-NumberField:not(.is-disabled):focus-within`
+- `.spectrum-NumberField:not(.is-disabled):focus-within:hover`
+- `.spectrum-NumberField:not(.is-disabled):focus:hover`
+- `.spectrum-NumberField:not(.is-disabled):hover`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):focus`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):focus-visible`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):focus-visible:hover`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):focus-within`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):focus-within:hover`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):focus:hover`
+- `.spectrum-NumberField:not(.is-disabled, .is-readOnly):hover`
+
+
+
+
+Passthroughs
+
+- `--mod-textfield-background-color`
+- `--mod-textfield-background-color-disabled`
+- `--mod-textfield-font-family`
+- `--mod-textfield-font-size`
+- `--mod-textfield-font-style`
+- `--mod-textfield-font-weight`
+- `--mod-textfield-height`
+- `--mod-textfield-icon-spacing-block-invalid`
+- `--mod-textfield-spacing-block-end`
+- `--mod-textfield-spacing-block-start`
+- `--mod-textfield-text-color-default`
+- `--mod-textfield-text-color-disabled`
+- `--mod-textfield-text-color-focus`
+- `--mod-textfield-width`
+
+
+
+
+Modifiers (deprecated)
+
+- `--mod-numberfield-background-color`
+- `--mod-numberfield-background-color-disabled`
+- `--mod-numberfield-block-size`
+- `--mod-numberfield-border-color`
+- `--mod-numberfield-border-color-disabled`
+- `--mod-numberfield-border-color-focus`
+- `--mod-numberfield-border-color-focus-hover`
+- `--mod-numberfield-border-color-focus-hover-invalid`
+- `--mod-numberfield-border-color-focus-invalid`
+- `--mod-numberfield-border-color-hover`
+- `--mod-numberfield-border-color-hover-invalid`
+- `--mod-numberfield-border-color-invalid`
+- `--mod-numberfield-border-color-invalid-default`
+- `--mod-numberfield-border-color-invalid-focus`
+- `--mod-numberfield-border-color-invalid-focus-hover`
+- `--mod-numberfield-border-color-invalid-hover`
+- `--mod-numberfield-border-color-invalid-keyboard-focus`
+- `--mod-numberfield-border-color-keyboard-focus`
+- `--mod-numberfield-border-color-keyboard-focus-invalid`
+- `--mod-numberfield-border-radius`
+- `--mod-numberfield-border-width`
+- `--mod-numberfield-button-inline-offset`
+- `--mod-numberfield-focus-indicator-color`
+- `--mod-numberfield-focus-indicator-gap`
+- `--mod-numberfield-focus-indicator-width`
+- `--mod-numberfield-font-family`
+- `--mod-numberfield-font-size`
+- `--mod-numberfield-font-style`
+- `--mod-numberfield-font-weight`
+- `--mod-numberfield-hidden-stepper-min-inline-size`
+- `--mod-numberfield-inline-size`
+- `--mod-numberfield-label-to-field`
+- `--mod-numberfield-line-height`
+- `--mod-numberfield-min-inline-size`
+- `--mod-numberfield-spacing-block-end-edge-to-text`
+- `--mod-numberfield-spacing-block-start-edge-to-text`
+- `--mod-numberfield-spacing-field-to-helptext`
+- `--mod-numberfield-text-color`
+- `--mod-numberfield-text-color-disabled`
+- `--mod-numberfield-text-color-focus`
+- `--mod-numberfield-text-color-focus-hover`
+- `--mod-numberfield-text-color-hover`
+- `--mod-numberfield-text-color-keyboard-focus`
+
+
+
+### SWC
+
+
+Attributes
+
+**Number Field specific attributes:**
+
+- `format-options` (Object) - Intl.NumberFormatOptions for customizing number formatting
+- `hide-stepper` (Boolean) - Whether the stepper UI is hidden or not
+- `indeterminate` (Boolean) - Indeterminate state
+- `keyboard-focused` (Boolean) - Keyboard focus state
+- `max` (Number) - Maximum value
+- `min` (Number) - Minimum value
+- `step` (Number) - Step increment value
+- `step-modifier` (Number) - Step modifier for shift key behavior
+- `value` (Number) - Current value (overrides TextfieldBase)
+
+**Inherited from TextfieldBase:**
+
+- `allowed-keys` - A regular expression outlining the keys that will be allowed to update the value
+- `autocomplete` - What form of assistance should be provided when attempting to supply a value
+- `focused` - Whether the number field is focused (overridden by NumberField)
+- `grows` - Whether a form control with multiline attribute will change size vertically
+- `invalid` - Whether the number field is invalid
+- `label` - A string applied via aria-label to the form control when a user visible label is not provided
+- `maxlength` - Defines the maximum string length that the user can enter
+- `minlength` - Defines the minimum string length that the user can enter
+- `multiline` - Whether the form control should accept a value longer than one line (forced to false)
+- `name` - Name of the form control
+- `pattern` - Pattern the value must match to be valid
+- `placeholder` - Text that appears in the form control when it has no value set
+- `quiet` - Whether to display the form control with no visible background
+- `readonly` - Whether a user can interact with the value of the form control
+- `required` - Whether the form control will be found to be invalid when it holds no value
+- `rows` - The specific number of rows the form control should provide in the user interface
+- `type` - The type of the form control (defaults to 'text')
+- `valid` - Whether the value held by the form control is valid
+
+**Inherited from SizedMixin:**
+
+- `size` - Size of the number field (s, m, l, xl)
+
+**Inherited from Focusable:**
+
+- `autofocus` - When this control is rendered, focus it automatically
+- `disabled` - Disable this control. It will not receive focus or events
+- `tabIndex` - The tab index to apply to this control
+
+
+
+
+Slots
+
+- `help-text` - Default or non-negative help text to associate to your form element
+- `negative-help-text` - Negative help text to associate to your form element when `invalid`
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+**Key changes in spectrum-two**:
+
+- Base class changes from `.spectrum-Stepper` to `.spectrum-NumberField`
+- Addition of field label with `.spectrum-NumberField-fieldLabel` class
+- New wrapper div with `.spectrum-NumberField-inputs` class around textfield and buttons
+- Removal of `--top` and `--bottom` modifier classes from infield buttons
+
+```diff
+--- a/components/stepper/stories/template.js (main branch)
++++ b/components/stepper/stories/template.js (spectrum-two branch)
+@@ -1,1 +1,3 @@
+-
` | Missing from WC (markup updated for S2) |
+| `.spectrum-NumberField--sideLabel` | `label-position` | Missing from WC (SWC has different side label implementation) |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+The following features are missing from the web component implementation:
+
+- **Side label positioning**: As also seen in textfield, CSS supports `--sideLabel` modifier but there's no corresponding attribute in the web component
+- **Quiet variant removal**: Also seen in textfield, the quiet variant no longer exists in full-fidelity Spectrum 2 implementations.
+
+Note: There are some differences in markup between SWC and Spectrum 2 CSS that will likely require some additional adjustment during SWC migration.
+
+### CSS Spectrum 2 changes
+
+The migration from legacy CSS (main branch) to Spectrum 2 (spectrum-two branch) represents a significant architectural change:
+
+**Component rename**: The component's classnames were renamed from `.spectrum-Stepper` to `.spectrum-NumberField` in order to be more consistent with SWC.
+
+- The `.hide-stepper` class was converted to `.spectrum-NumberField--hiddenStepper`
+
+**Structural changes and feature additions**:
+
+- Markup for `spectrum-two` CSS embeds field label and help text components
+- Introduced `spectrum-NumberField-inputs` container wrapper
+- Added side label positioning with `--sideLabel` modifier
+- The embedded infield buttons used in the Number field have changed. Rather than being stacked vertically and sitting directly on the edge of the input field, infield buttons now sit side by side, with spacing around them on all sides.
+- The `spectrum-two` CSS for Number field now has styles for read-only
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3681)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-number-field--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/numberfield--docs)
diff --git a/migration-roadmap/opacity-checkerboard.md b/migration-roadmap/opacity-checkerboard.md
new file mode 100644
index 0000000000..761e1af8e3
--- /dev/null
+++ b/migration-roadmap/opacity-checkerboard.md
@@ -0,0 +1,135 @@
+# Opacity Checkerboard migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+**Root class**: `.spectrum-OpacityCheckerboard`
+
+**Variants**:
+
+- `.spectrum-OpacityCheckerboard--sizeS`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers *deprecated*
+
+- `--mod-opacity-checkerboard-dark`
+- `--mod-opacity-checkerboard-light`
+- `--mod-opacity-checkerboard-position`
+- `--mod-opacity-checkerboard-size`
+
+
+
+### SWC
+
+
+Attributes
+
+None found for this component. This is a utility component used by other components.
+
+
+
+
+Slots
+
+None found for this component. This is a utility component used by other components.
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components
+
+```html
+
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+No significant structural changes.
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| -------------------------------------- | ----------------- | ---------------------- |
+| `.spectrum-OpacityCheckerboard` | Utility class | Implemented as utility |
+| `.spectrum-OpacityCheckerboard--sizeS` | Size variant | Implemented as utility |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+**CSS features missing from Web Component:**
+None found for this component. The opacity checkerboard is implemented as a utility class in the Web Components.
+
+**Web Component features missing from CSS:**
+None found for this component.
+
+### CSS Spectrum 2 changes
+
+No significant structural changes between CSS main and spectrum-two branches. The templates are identical, indicating that the opacity checkerboard component structure remains consistent across Spectrum 2 migration.
+
+## Notes
+
+The opacity checkerboard is a utility component that provides a checkerboard pattern background to highlight transparency in other components. It's not a standalone component but rather a utility class that's used by components like thumbnail, swatch, and others to provide visual indication of transparency.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3394)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-opacity-checkerboard--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/colorslider--docs) (not a standalone component, but styles are used by the color slider)
diff --git a/migration-roadmap/picker-button.md b/migration-roadmap/picker-button.md
new file mode 100644
index 0000000000..7996283f41
--- /dev/null
+++ b/migration-roadmap/picker-button.md
@@ -0,0 +1,247 @@
+# Picker button migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-PickerButton`
+- `.spectrum-PickerButton--quiet`
+- `.spectrum-PickerButton--quiet:disabled`
+- `.spectrum-PickerButton--quiet:not(:disabled):active`
+- `.spectrum-PickerButton--quiet:not(:disabled):focus-visible`
+- `.spectrum-PickerButton--quiet:not(:disabled):hover`
+- `.spectrum-PickerButton--workflowicon .spectrum-PickerButton-fill`
+- `.spectrum-PickerButton-fill`
+- `.spectrum-PickerButton-icon`
+- `.spectrum-PickerButton.is-open`
+- `.spectrum-PickerButton.spectrum-PickerButton--quiet`
+- `.spectrum-PickerButton.spectrum-PickerButton--quiet:disabled`
+- `.spectrum-PickerButton.spectrum-PickerButton--sizeL`
+- `.spectrum-PickerButton.spectrum-PickerButton--sizeS`
+- `.spectrum-PickerButton.spectrum-PickerButton--sizeXL`
+- `.spectrum-PickerButton:active`
+- `.spectrum-PickerButton:disabled`
+- `.spectrum-PickerButton:focus-visible`
+- `.spectrum-PickerButton:hover`
+- `.spectrum-PickerButton:not(:disabled):active`
+- `.spectrum-PickerButton:not(:disabled):focus-visible`
+- `.spectrum-PickerButton:not(:disabled):hover`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers
+
+- `--mod-picker-button-background-animation-duration`
+- `--mod-picker-button-background-color`
+- `--mod-picker-button-background-color-disabled`
+- `--mod-picker-button-background-color-down`
+- `--mod-picker-button-background-color-down-disabled`
+- `--mod-picker-button-background-color-down-quiet`
+- `--mod-picker-button-background-color-hover`
+- `--mod-picker-button-background-color-hover-disabled`
+- `--mod-picker-button-background-color-hover-quiet`
+- `--mod-picker-button-background-color-quiet`
+- `--mod-picker-button-background-color-quiet-disabled`
+- `--mod-picker-button-border-radius`
+- `--mod-picker-button-fill-padding`
+- `--mod-picker-button-height`
+- `--mod-picker-button-icon-color`
+- `--mod-picker-button-icon-color-disabled`
+- `--mod-picker-button-icon-color-down`
+- `--mod-picker-button-icon-color-down-disabled`
+- `--mod-picker-button-icon-color-hover`
+- `--mod-picker-button-icon-color-hover-disabled`
+- `--mod-picker-button-padding`
+- `--mod-picker-button-width`
+
+
+
+### SWC
+
+
+Attributes
+
+- `active` (Boolean) - Whether the picker button is in an active state
+- `disabled` (Boolean) - Disable this control. It will not receive focus or events
+- `download` (String) - Causes the browser to treat the linked URL as a download
+- `href` (String) - The URL that the hyperlink points to
+- `label` (String) - An accessible label that describes the component. It will be applied to aria-label, but not visually rendered
+- `open` (Boolean) - Whether the picker button is in an open state (for dropdown menus)
+- `position` (String) - Position of the button: 'left' or 'right'
+- `quiet` (Boolean) - Whether the picker button is in quiet variant
+- `referrerpolicy` (String) - How much of the referrer to send when following the link
+- `rel` (String) - The relationship of the linked URL as space-separated link types
+- `rounded` (Boolean) - Whether the picker button has rounded corners (express system)
+- `size` (String) - Size of the picker button: 's', 'm', 'l', 'xl'
+- `tabIndex` (Number) - The tab index to apply to this control
+- `target` (String) - Where to display the linked URL, as the name for a browsing context
+- `type` (String) - The default behavior of the button: 'button', 'submit', or 'reset'
+
+
+
+
+Slots
+
+- `label` - Text label for the picker button
+- `icon` - Icon for the picker button
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+
+
+
+
+
+
+
+
+
+```
+
+
+
+
+Legacy (CSS main branch):
+
+```html
+
+```
+
+
+
+
+Spectrum 2 (CSS spectrum-two branch):
+
+```html
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+### HTML Output Diff
+
+**Legacy (CSS main) → Spectrum 2 (CSS spectrum-two):**
+
+```diff
+
+```
+
+### Key Changes in HTML Structure
+
+1. **Label removal**: The `` element is completely removed
+2. **Class simplification**:
+ - Removed: `--textuiicon`, `--uiicononly`, `--icononly`, `--right`/`--left` positioning classes
+ - Added: `--workflowicon` for workflow icons only
+3. **Button attributes**: Added explicit `type="button"` attribute
+4. **Icon classes**: Enhanced with `spectrum-Icon spectrum-UIIcon-*` classes for better specificity
+5. **State management**: Simplified from `is-focused` to `is-active`/`is-hover` pattern
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ------------------------------------------------------------------ | ----------------------------- | ----------- |
+| `.spectrum-PickerButton` | `:host` | Implemented |
+| `.spectrum-PickerButton--workflowicon .spectrum-PickerButton-fill` | Workflow icon via `icon` slot | Implemented |
+| `.spectrum-PickerButton--quiet` | `quiet` attribute | Implemented |
+| `.spectrum-PickerButton-fill` | Fill container | Implemented |
+| `.spectrum-PickerButton-icon` | Icon slot | Implemented |
+| `.spectrum-PickerButton.is-open` | `open` attribute | Implemented |
+| `.spectrum-PickerButton--sizeL` | `size="l"` | Implemented |
+| `.spectrum-PickerButton--sizeS` | `size="s"` | Implemented |
+| `.spectrum-PickerButton--sizeXL` | `size="xl"` | Implemented |
+| `.spectrum-PickerButton:disabled` | `disabled` attribute | Implemented |
+| `.spectrum-PickerButton:active` | `active` attribute | Implemented |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+No implementation gaps found. All CSS functionality is properly mapped to web component attributes and slots.
+
+### CSS Spectrum 2 changes
+
+- **Streamlined API**: Removed complex parameters (`label`, `position`, `isFocused`, `isRounded`) to focus on core functionality and reduce API surface area.
+- **Relationship to infield button**: This component follows the same design patterns as the infield button component in Spectrum 2, both being designed for inline use within form fields. While they were kept as separate components in the CSS implementation, there was discussion about combining them, and this might be worth considering during the web component migration to reduce duplication and maintain consistency.
+- **Icon-focused design**: Shifted from label-based to icon-only design with separate `workflowIconName`/`uiIconName` parameters for better icon management and consistency.
+- **Simplified state handling**: Consolidated state management by removing `isFocused`/`isRounded` while maintaining essential interaction states (`isActive`/`isHovered`/`isDisabled`).
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/4114)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/picker--docs)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-picker-button--docs)
diff --git a/migration-roadmap/progress-bar.md b/migration-roadmap/progress-bar.md
new file mode 100644
index 0000000000..ca6bdf2022
--- /dev/null
+++ b/migration-roadmap/progress-bar.md
@@ -0,0 +1,210 @@
+# Progress bar migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+- `.spectrum-ProgressBar`
+
+**Subcomponents:**
+
+- `.spectrum-ProgressBar .spectrum-ProgressBar-fill`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-label`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-percentage`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-track`
+- `.spectrum-ProgressBar-track`
+
+**Variants:**
+
+- `.spectrum-ProgressBar--indeterminate`
+- `.spectrum-ProgressBar--sideLabel`
+- `.spectrum-ProgressBar--staticWhite`
+
+**Internationalization:**
+
+- `.spectrum-ProgressBar--indeterminate .spectrum-ProgressBar-fill:dir(rtl)`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ja)`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(ko)`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-label:lang(zh)`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ja)`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(ko)`
+- `.spectrum-ProgressBar .spectrum-ProgressBar-percentage:lang(zh)`
+
+**Sizes:**
+
+- `.spectrum-ProgressBar--sizeL`
+- `.spectrum-ProgressBar--sizeS`
+- `.spectrum-ProgressBar--sizeXL`
+
+**For extension use only by meter component:**
+
+Progress bar itself does not support static black styles, but because meter extends the progress bar in Spectrum CSS, these selectors were necessary to support meter's static black design requirements.
+
+- `.spectrum-ProgressBar--staticBlack .spectrum-ProgressBar-fill`
+- `.spectrum-ProgressBar--staticBlack .spectrum-ProgressBar-label`
+- `.spectrum-ProgressBar--staticBlack .spectrum-ProgressBar-percentage`
+- `.spectrum-ProgressBar--staticBlack .spectrum-ProgressBar-track`
+
+
+
+
+Passthroughs
+
+None found for this component.
+
+
+
+
+Modifiers
+
+- `--mod-progressbar-animation-duration-indeterminate`
+- `--mod-progressbar-animation-ease-in-out-indeterminate`
+- `--mod-progressbar-fill-color`
+- `--mod-progressbar-fill-color-black`
+- `--mod-progressbar-fill-color-white`
+- `--mod-progressbar-fill-size-indeterminate`
+- `--mod-progressbar-font-size`
+- `--mod-progressbar-inline-size`
+- `--mod-progressbar-label-and-value-black`
+- `--mod-progressbar-label-and-value-white`
+- `--mod-progressbar-line-height`
+- `--mod-progressbar-line-height-cjk`
+- `--mod-progressbar-max-size`
+- `--mod-progressbar-min-size`
+- `--mod-progressbar-spacing-label-to-progressbar`
+- `--mod-progressbar-spacing-label-to-text`
+- `--mod-progressbar-spacing-top-to-text`
+- `--mod-progressbar-text-color`
+- `--mod-progressbar-thickness`
+- `--mod-progressbar-track-color`
+- `--mod-spacing-progressbar-label-to-text`
+
+
+
+### SWC
+
+
+Attributes
+
+- `indeterminate` (Boolean) - Whether the progress bar is in indeterminate state
+- `label` (String) - Label text for the progress bar
+- `overBackground` (Boolean) - @deprecated; Use `staticColor` instead
+- `sideLabel` (Boolean) - Whether to display label on the side
+- `progress` (Number) - Progress value
+- `staticColor` (String) - Static color: 'white'
+
+
+
+
+Slots
+
+- Default slot - Text labeling the progress bar
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+
+ [label]
+
+[progress]
+
+```
+
+
+
+
+Diff: Legacy (CSS main) → Spectrum 2 (CSS spectrum-two)
+
+**No differences found between main and spectrum-two branches.**
+
+
+
+### CSS => SWC mapping
+
+| CSS selector | Attribute or slot | Status |
+| ---------------------------------------------------------------------------------------------------- | ---------------------------------------- | ---------------- |
+| `.spectrum-Radio` | `:host` | Implemented |
+| `.spectrum-Radio--emphasized` | `emphasized` attribute | Implemented |
+| `.spectrum-Radio--sizeS` | `size="s"` attribute | Implemented |
+| `.spectrum-Radio--sizeL` | `size="l"` attribute | Implemented |
+| `.spectrum-Radio--sizeXL` | `size="xl"` attribute | Implemented |
+| `.spectrum-Radio-input` | Internal radio input element, `#input` | Implemented |
+| `.spectrum-Radio-input:checked` | `checked` attribute | Implemented |
+| `.spectrum-Radio-input:disabled` | `disabled` attribute | Implemented |
+| `.spectrum-Radio-button` | Internal radio button element, `#button` | Implemented |
+| `.spectrum-Radio-label` | Default slot content | Implemented |
+| `.spectrum-Radio-label:lang(ja)`, `.spectrum-Radio-label:lang(ko)`, `.spectrum-Radio-label:lang(zh)` | Language-specific styling | Implemented |
+| `.spectrum-Radio.is-readOnly` | `readonly` attribute | Implemented |
+| | `invalid` attribute | Missing from CSS |
+| | `autofocus` attribute | Missing from CSS |
+
+## Summary of changes
+
+### CSS => SWC implementation gaps
+
+**New for S2:**
+The radio component in Spectrum 2 has the new down state (active) perspective shift applied.
+
+### CSS Spectrum 2 changes
+
+No structural differences found between the legacy (CSS main) and Spectrum 2 (CSS spectrum-two) branches. The template structure and class naming remain consistent across both branches.
+
+## Resources
+
+- [CSS migration](https://github.com/adobe/spectrum-css/pull/3555)
+- [Spectrum 2 preview](https://spectrumcss.z13.web.core.windows.net/pr-2352/index.html?path=/docs/components-radio--docs)
+- [React](https://react-spectrum.adobe.com/s2/index.html?path=/docs/radiogroup--docs)
diff --git a/migration-roadmap/search.md b/migration-roadmap/search.md
new file mode 100644
index 0000000000..5e920467f6
--- /dev/null
+++ b/migration-roadmap/search.md
@@ -0,0 +1,505 @@
+# Search migration roadmap
+
+## Component specifications
+
+### CSS
+
+
+CSS selectors
+
+**Base component:**
+
+- `.spectrum-Search`
+- `.spectrum-Search:lang(ja)`
+- `.spectrum-Search:lang(ko)`
+- `.spectrum-Search:lang(zh)`
+
+**Variants:**
+
+- `.spectrum-Search--sizeL`
+- `.spectrum-Search--sizeS`
+- `.spectrum-Search--sizeXL`
+
+**Child elements:**
+
+- `.spectrum-Search .spectrum-HelpText`
+- `.spectrum-Search .spectrum-Search-textfield`
+- `.spectrum-Search .spectrum-Search-textfield .spectrum-Search-input`
+- `.spectrum-Search .spectrum-Search-clearButton .spectrum-ClearButton-fill`
+- `.spectrum-Search-clearButton`
+- `.spectrum-Search-clearButton .spectrum-ClearButton-fill`
+- `.spectrum-Search-icon`
+- `.spectrum-Search-textfield`
+
+**Input element:**
+
+- `.spectrum-Search-input`
+- `.spectrum-Search-input::-webkit-search-cancel-button`
+- `.spectrum-Search-input::-webkit-search-decoration`
+
+**States:**
+
+- `.spectrum-Search.is-collapsed`
+- `.spectrum-Search.is-disabled .spectrum-Search-clearButton`
+- `.spectrum-Search.is-expanded`
+- `.spectrum-Search-textfield.is-disabled .spectrum-Search-icon`
+- `.spectrum-Search-textfield.is-disabled:hover .spectrum-Search-icon`
+- `.spectrum-Search-textfield.is-focused .spectrum-Search-icon`
+- `.spectrum-Search-textfield.is-focused:hover .spectrum-Search-icon`
+- `.spectrum-Search-textfield.is-keyboardFocused .spectrum-Search-icon`
+- `.spectrum-Search-textfield:hover .spectrum-Search-icon`
+
+
+
+
+Passthroughs
+
+- `--mod-textfield-background-color`
+- `--mod-textfield-background-color-disabled`
+- `--mod-textfield-border-color`
+- `--mod-textfield-border-color-disabled`
+- `--mod-textfield-border-color-focus`
+- `--mod-textfield-border-color-focus-hover`
+- `--mod-textfield-border-color-hover`
+- `--mod-textfield-border-color-keyboard-focus`
+- `--mod-textfield-border-width`
+- `--mod-textfield-corner-radius`
+- `--mod-textfield-focus-indicator-color`
+- `--mod-textfield-focus-indicator-gap`
+- `--mod-textfield-focus-indicator-width`
+- `--mod-textfield-font-family`
+- `--mod-textfield-font-weight`
+- `--mod-textfield-placeholder-font-size`
+- `--mod-textfield-text-color-default`
+- `--mod-textfield-text-color-disabled`
+- `--mod-textfield-text-color-focus`
+- `--mod-textfield-text-color-focus-hover`
+- `--mod-textfield-text-color-hover`
+- `--mod-textfield-text-color-keyboard-focus`
+
+
+
+
+Modifiers (Deprecated)
+
+- `--mod-search-background-color`
+- `--mod-search-background-color-disabled`
+- `--mod-search-block-size`
+- `--mod-search-border-color-default`
+- `--mod-search-border-color-disabled`
+- `--mod-search-border-color-focus`
+- `--mod-search-border-color-focus-hover`
+- `--mod-search-border-color-hover`
+- `--mod-search-border-color-key-focus`
+- `--mod-search-border-radius`
+- `--mod-search-border-width`
+- `--mod-search-bottom-to-text`
+- `--mod-search-button-inline-size`
+- `--mod-search-collapsed-animation-duration`
+- `--mod-search-color-default`
+- `--mod-search-color-disabled`
+- `--mod-search-color-focus`
+- `--mod-search-color-focus-hover`
+- `--mod-search-color-hover`
+- `--mod-search-color-key-focus`
+- `--mod-search-edge-to-visual`
+- `--mod-search-focus-indicator-color`
+- `--mod-search-focus-indicator-gap`
+- `--mod-search-focus-indicator-thickness`
+- `--mod-search-font-family`
+- `--mod-search-font-style`
+- `--mod-search-font-weight`
+- `--mod-search-icon-size`
+- `--mod-search-inline-size`
+- `--mod-search-line-height`
+- `--mod-search-min-inline-size`
+- `--mod-search-text-to-icon`
+- `--mod-search-to-help-text`
+- `--mod-search-top-to-icon`
+- `--mod-search-top-to-text`
+
+
+
+### SWC
+
+
+Attributes
+
+**Search specific attributes:**
+
+- `action` (string) - Form action URL
+- `holdValueOnEscape` (boolean) - Whether the typed value should be held when Escape key is pressed
+- `label` (string) - defaults to "Search" (overrides Textfield)
+- `method` (string) - Form method: "get" | "post" | "dialog"
+- `placeholder` (string) - defaults to "Search" (overrides Textfield)
+
+**Inherited from Textfield (extends TextfieldBase):**
+
+- `allowed-keys` - A regular expression outlining the keys that will be allowed to update the value
+- `autocomplete` - What form of assistance should be provided when attempting to supply a value
+- `focused` - Whether the search field is focused
+- `grows` - Whether a form control with multiline attribute will change size vertically
+- `invalid` - Whether the search field is invalid
+- `maxlength` - Defines the maximum string length that the user can enter
+- `minlength` - Defines the minimum string length that the user can enter
+- `multiline` - Whether the form control should accept a value longer than one line (forced to false)
+- `name` - Name of the form control
+- `pattern` - Pattern the value must match to be valid
+- `quiet` - Whether to display the form control with no visible background
+- `readonly` - Whether a user can interact with the value of the form control
+- `required` - Whether the form control will be found to be invalid when it holds no value
+- `rows` - The specific number of rows the form control should provide in the user interface
+- `type` - The type of the form control (set to 'search' automatically)
+- `valid` - Whether the value held by the form control is valid
+- `value` - The value held by the form control
+
+**Inherited from SizedMixin:**
+
+- `size` - Size of the search field (s, m, l, xl)
+
+**Inherited from Focusable:**
+
+- `autofocus` - When this control is rendered, focus it automatically
+- `disabled` - Disable this control. It will not receive focus or events
+- `tabIndex` - The tab index to apply to this control
+
+
+
+
+Slots
+
+- `help-text` - default or non-negative help text to associate to your form element
+- `negative-help-text` - negative help text to associate to your form element when `invalid`
+
+
+
+## Comparison
+
+### DOM Structure changes
+
+
+Spectrum Web Components:
+
+```html
+
+