Skip to content

Button Standardization — Project Status

Tracks progress migrating buttons from local shadcn Button to the canary Button from @arda-cards/design-system. See the button audit for the full inventory and the button migration guide for the per-file checklist.

Phase 1 established the design system components, frontend infrastructure, and migrated the first 24 buttons as a proof-of-concept across auth pages and the items page.

Assignee: Sebrand Warren (@nail60)

PR #74 — merged 2026-05-07, published as stable v5.2.1.

  • New atoms: Toggle, ToggleGroup, ButtonGroup, SplitButton
  • Button enhancements: tooltip, tooltipSide, tooltipDelay, loading as boolean | string, loadingPosition, cursor-pointer, icon-lg fixed to 40px
  • IconButton deprecated — use Button size="icon" + tooltip
  • Exports: DropdownMenu primitives and TooltipProvider from canary barrel
  • Tokens: --primary fixed to #FC5A29 (hex, not oklch), hover ramp recalculated, --secondary-light added
  • ColorPicker: displayLabel mode with searchable dropdown, trigger height aligned to h-9
  • Stories: Streamlined to Showcase + Playground pattern with MDX docs

PR #733 — merged 2026-05-12.

SectionFileButtonsNotes
Sign Insrc/app/signin/page.tsx2Primary + loading prop
Sign Upsrc/app/signup/page.tsx1Primary + loading prop
Reset Passwordsrc/app/reset-password/page.tsx1Primary + loading prop
Reset Password (new)src/app/reset-password/new/client.tsx1Primary + loading prop
Reset Password (email sent)src/app/reset-password/email-sent/page.tsx1Primary + loading prop
Items Gridsrc/app/items/page.tsx5SplitButton, ButtonGroup, outline toolbar, Ctrl+Alt+N shortcut
Item Detail Panelsrc/components/items/ItemDetailsPanel.tsx13Ghost toolbar, loading props, icon buttons, card nav

These are done — no need to repeat for Phase 2:

  • globals.css: Imports @arda-cards/design-system/styles/tokens.css after Tailwind, adds hover/active Tailwind color mappings, pins --primary to #FC5A29
  • layout.tsx: DesignSystemTooltipProvider wraps the app at root
  • package.json: @arda-cards/design-system at stable ^5.2.1
  • __mocks__/@arda-cards/design-system/canary.ts: Jest mock for canary components — update this when importing new canary components
  • E2E page object: detailsCloseButton uses aria-label locator (not SVG class matching)
  • Keyboard shortcut focus guard: skips inputs/textareas and checks AltGraph to avoid European keyboard collisions
  • Button mock disabled prop: correctly interacts with loading
  • E2E flaky test fix: stabilized panel-close in items grid interactions
  • Nightly E2E workflow: removed duplicate workflow_dispatch key

Assignee: Jennifer Warren (@danmerb)

49 buttons across 25 files. Most are low complexity (1–2 straightforward replacements). The scan views are the largest effort.

SectionFileButtonsComplexity
Scan (Desktop)components/scan/DesktopScanView.tsx8High — large file
Scan (Mobile)components/scan/MobileScanView.tsx8High — large file
Company Settingsapp/company-settings/page.tsx6Medium
Manage Cards Panelcomponents/items/ManageCardsPanel.tsx5Medium
Mobile Device Checkapp/mobile-device-check/page.tsx3Low
Unsaved Changes Modalcomponents/common/UnsavedChangesModal.tsx3Low
Delete Confirmation Modalcomponents/common/DeleteConfirmationModal.tsx2Low
Add Cards Modalcomponents/items/AddCardsModal.tsx2Low
Kanban History Modalcomponents/items/KanbanHistoryModal.tsx2Low
Order Queueapp/order-queue/page.tsx2Low
Card Actionscomponents/scan/CardActions.tsx2Low
Account Sectioncomponents/settings/AccountSection.tsx2Low
Email Panelcomponents/EmailPanel.tsx2Low
Item Form Panelcomponents/items/ItemFormPanel.tsx1Low
Cards Preview Modalcomponents/items/CardsPreviewModalIndividual.tsx1Low
Order Queue Toastcomponents/ui/order-queue-toast.tsx1Low
Receivingapp/receiving/page.tsx1Low
Scan Modalcomponents/scan/ScanModal.tsx1Low
Initial Scan Modalcomponents/scan/InitialScanModal.tsx1Low
Card Preview Modalcomponents/scan/CardPreviewModal.tsx1Low
Kanban Card Detailapp/kanban/cards/[cardId]/page.tsx1Low
Settings Pageapp/settings/page.tsx1Low
Appearance Sectioncomponents/settings/AppearanceSection.tsx1Low
Change Passwordcomponents/settings/ChangePasswordSection.tsx1Low
Display Sectioncomponents/settings/DisplaySection.tsx1Low
Notifications Sectioncomponents/settings/NotificationsSection.tsx1Low
Note Modalcomponents/common/NoteModal.tsx1Low
Tutorials Sectioncomponents/homepage/TutorialsSection.tsx1Low
Account Profileapp/account-profile/page.tsx1Low
Terms Modalcomponents/ui/terms-modal.tsx1Low
App Sidebar Togglecomponents/app-sidebar.tsx1Low
Truncated Linkcomponents/common/TruncatedLink.tsx1Low

Dashboard is skipped (not live).

  1. Follow the button migration guide — it has a per-file checklist, variant mapping table, and props reference
  2. Work one file at a time, verify in the browser before moving on
  3. The design system is already at stable v5.2.1 on main — no local linking needed unless you are also changing design system components
  4. When adding new canary imports (e.g., DropdownMenu), update the Jest mock at __mocks__/@arda-cards/design-system/canary.ts — see the reference doc for mock patterns
  5. Commit after each logical group (e.g., all modals, all settings pages, all scan views)
  6. Suggested order: start with the low-complexity modals and settings to build familiarity, then tackle scan views and company settings last

Copyright: (c) Arda Systems 2025-2026, All rights reserved