Skip to content

[No QA] refactor: OptionRowLHN — final wiring, OptionRowLHNCore deletion, ArchivedOptionRowLHN #89958

@mountiny

Description

@mountiny

Part of

#89946 — OptionRowLHN compound component decomposition

Step

12 of 12 — depends on all previous steps (#89947 through #89957).

What

Final assembly PR:

  1. Rewrite OptionRowLHN.tsx to ≤30 LOC of JSX wiring only — composes OptionRow.ProviderOptionRow.OfflineWrapperOptionRow.Container → leaf subcomponents
  2. Delete OptionRowLHNCore (if it exists as a separate file by this point) — all logic lives in leaves or the provider
  3. Add ArchivedOptionRowLHN.tsx — sibling variant with no badges (ErrorBadge, InfoBadge, OnboardingBadge), no ProductTrainingTooltip layer, and no indicators (DraftIndicator, PinIndicator); uses the same OptionRow.Provider
  4. Update LHNOptionsList.tsx consumer to pick OptionRowLHN vs ArchivedOptionRowLHN based on optionItem.private_isArchived
  5. Rename leaf files to drop the OptionRow prefix on any that weren't renamed in their individual steps (e.g. OptionRowPressable.tsxPressable.tsx)
  6. Update the barrel / index export so external consumers import from LHNOptionsList unchanged

Why

Closes the decomposition by producing the ≤30 LOC main component and the explicit archived variant, fulfilling all design decisions agreed with the team.

Acceptance criteria

  • OptionRowLHN.tsx is ≤30 LOC of JSX, zero inline logic
  • ArchivedOptionRowLHN composes only the subset of leaves appropriate for archived rows
  • LHNOptionsList picks the correct variant based on private_isArchived
  • All leaf files follow the no-OptionRow-prefix naming convention
  • No visible behavior or style changes
Issue OwnerCurrent Issue Owner: @DylanDylann

Metadata

Metadata

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions