Sub-issue of #83762 .
Migration plan: Guccio163 comment .
Batch
Files
src/components/ButtonWithDropdownMenu/index.tsx ×3 ⚠️ SKIP (Migrate ComposedButton to ButtonWithDropdownMenu #93789 )
src/components/PDFView/PDFPasswordForm.tsx
src/components/Search/FilterDropdowns/DropdownButton.tsx ×2
src/components/Search/SearchPageHeader/SearchActionsBarCreateButton.tsx
src/components/Search/SearchPageHeader/SearchAdvancedFiltersButton.tsx
src/components/ValidateCodeActionModal/ValidateCodeForm/BaseValidateCodeForm.tsx ×2
src/pages/inbox/report/actionContents/ReimbursementQueuedContent.tsx ×2
src/pages/iou/MoneyRequestAmountForm.tsx
src/pages/iou/request/step/IOURequestStepDistanceManual.tsx
src/pages/media/AttachmentModalScreen/AttachmentModalBaseContent/index.tsx
src/pages/workspace/accounting/PolicyAccountingPage.tsx ×2
Migration rules
Mechanical swap per prop-change rules :
Import: @components/Button → @components/ButtonComposed
text / icon / related props → <Button.Text> / <Button.Icon> children
success / danger → variant="success" / variant="danger"
small / medium / large → size={CONST.BUTTON_SIZE.SMALL | MEDIUM | LARGE}
link → <LinkButton> from @components/ButtonComposed/composed/LinkButton
Forwarded size props: update DROPDOWN_BUTTON_SIZE → BUTTON_SIZE where applicable
// before
< Button success large text = "Add members" icon = { Plus } iconRight = { ArrowRight } onPress = { onAdd } />
// after
< Button variant = "success" size = { CONST . BUTTON_SIZE . LARGE } onPress = { onAdd} >
< Button . Icon src = { Plus } />
< Button . Text > Add members < / B u t t o n .T e x t >
< Button . Icon src = { ArrowRight } />
< / B u t t o n >
Out of scope
Renaming wrapper public APIs (ButtonWithDropdownMenu success/buttonSize → variant/size) — tracked separately
Keep each wrapper's public API as-is; map to composed Button internally only
Acceptance criteria
Dependencies
Blocked by: #93789
Blocked by batch 1: deprecation guard must exist before merge
Issue Owner Current Issue Owner: @mikolajpochec
Sub-issue of #83762.
Migration plan: Guccio163 comment.
Batch
ButtonWithDropdownMenu(migrated in Migrate ComposedButton to ButtonWithDropdownMenu #93789).Files
src/components/ButtonWithDropdownMenu/index.tsx×3src/components/PDFView/PDFPasswordForm.tsxsrc/components/Search/FilterDropdowns/DropdownButton.tsx×2src/components/Search/SearchPageHeader/SearchActionsBarCreateButton.tsxsrc/components/Search/SearchPageHeader/SearchAdvancedFiltersButton.tsxsrc/components/ValidateCodeActionModal/ValidateCodeForm/BaseValidateCodeForm.tsx×2src/pages/inbox/report/actionContents/ReimbursementQueuedContent.tsx×2src/pages/iou/MoneyRequestAmountForm.tsxsrc/pages/iou/request/step/IOURequestStepDistanceManual.tsxsrc/pages/media/AttachmentModalScreen/AttachmentModalBaseContent/index.tsxsrc/pages/workspace/accounting/PolicyAccountingPage.tsx×2Migration rules
Mechanical swap per prop-change rules:
@components/Button→@components/ButtonComposedtext/icon/ related props →<Button.Text>/<Button.Icon>childrensuccess/danger→variant="success"/variant="danger"small/medium/large→size={CONST.BUTTON_SIZE.SMALL | MEDIUM | LARGE}link→<LinkButton>from@components/ButtonComposed/composed/LinkButtonDROPDOWN_BUTTON_SIZE→BUTTON_SIZEwhere applicableOut of scope
ButtonWithDropdownMenusuccess/buttonSize→variant/size) — tracked separatelyAcceptance criteria
@components/Buttonimport), except explicit SKIP entriesDependencies
Issue Owner
Current Issue Owner: @mikolajpochec