Skip to content

Unify design system: receipt theme refactor#17

Open
Aarekaz wants to merge 6 commits intomainfrom
receipt-theme-refactor
Open

Unify design system: receipt theme refactor#17
Aarekaz wants to merge 6 commits intomainfrom
receipt-theme-refactor

Conversation

@Aarekaz
Copy link
Owner

@Aarekaz Aarekaz commented Mar 16, 2026

Summary

  • Eliminate dual design systems — removed the competing Pro SaaS classes from globals.css and unified everything under the receipt theme's CSS custom properties
  • Migrate 313 hardcoded colors across 20+ component files to semantic tokens (bg-card, text-foreground, bg-primary, etc.) — making the app fully themeable and dark-mode ready
  • Unify font system — Inter for UI text, Space Mono for monospace/numbers, both properly wired through CSS variables and Tailwind's font-sans/font-mono
  • Extract shared modules from ProBillSplitter.tsx (2121→1932 lines): GridCell, SplitSimpleIcon, use-bill-calculations hook, design-tokens
  • Remove 192 lines of dead CSS from globals.css (1170→978 lines)
  • Fix accessibility gapsmotion-reduce:animate-none on animated elements, ARIA labels on share graph bars, dropdown-menu semantic tokens

Test plan

  • npm run build passes clean
  • All 139 tests pass (npm test)
  • Zero hardcoded slate-/indigo- colors remain in components
  • Visual QA: ledger view, breakdown view, receipt scanner, mobile views
  • Verify keyboard shortcuts still work (Tab, Enter, Escape, Cmd+Z, arrow keys)
  • Verify receipt scanning flow end-to-end

Aarekaz added 4 commits March 16, 2026 00:59
- Update CSS variables to use Inter (UI) and Space Mono (mono/numbers)
- Replace all font-inter → font-sans, font-space-mono → font-mono
- Remove .pro-* classes from globals.css (competing design system)
- Replace pro-* class usage in components with semantic equivalents
- Fix scrollbar colors to use CSS variables instead of hardcoded hex
Replace 313 instances of hardcoded slate-*/indigo-* Tailwind colors
across 20+ component files with CSS variable-based semantic tokens:
- bg-slate-* → bg-muted, bg-card, bg-background
- text-slate-* → text-foreground, text-muted-foreground
- border-slate-* → border-border
- bg/text-indigo-* → bg/text-primary
- ring-indigo-* → ring-ring
- red/green-* → destructive/success tokens

Also fixes:
- dropdown-menu.tsx hardcoded colors → semantic tokens
- ReceiptScanner image viewer controls → foreground tokens
- motion-reduce:animate-none added to EmptyStates and MobileFirstUI
- ARIA label added to ProBillBreakdownView share graph bars
- Extract PERSON_COLORS, SPLIT_METHOD_OPTIONS, formatCurrency to lib/design-tokens.ts
- Extract SplitSimpleIcon to components/SplitSimpleIcon.tsx
- Extract GridCell to components/GridCell.tsx
- Extract bill calculations to hooks/use-bill-calculations.ts
- Update all imports (MobileSpreadsheetView, MobileCardView)
- ProBillSplitter: 2121 → 1932 lines
Remove unused utility classes: .drag-handle, .receipt-line-dashed,
.receipt-input, .float-panel, .glass-header, .floating-dock,
.dock-divider, .ledger-expand-btn

globals.css: 1170 → 978 lines (-192 lines of dead CSS)
@vercel
Copy link
Contributor

vercel bot commented Mar 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
split-simple Ready Ready Preview, Comment Mar 16, 2026 7:56pm

Request Review

@github-actions
Copy link

Coverage after merging receipt-theme-refactor into main will be

17.36%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
jest.setup.node.ts0%0%0%0%1, 1, 10–16, 2–9
app
   layout.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9
   page.tsx0%0%0%0%1, 1, 10–12, 2–9
app/admin
   layout.tsx0%0%0%0%1, 1, 10–16, 2–9
   page.tsx0%0%0%0%1, 1, 10, 100, 1000–1009, 101, 1010–1019, 102, 1020–1029, 103, 1030–1039, 104, 1040–1049, 105, 1050–1059, 106, 1060–1069, 107, 1070–1079, 108, 1080–1089, 109, 1090–1099, 11, 110, 1100–1109, 111, 1110–1119, 112, 1120–1129, 113, 1130–1139, 114, 1140–1149, 115, 1150–1159, 116, 1160, 117–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–309, 31, 310–319, 32, 320–329, 33, 330–339, 34, 340–349, 35, 350–359, 36, 360–369, 37, 370–379, 38, 380–389, 39, 390–399, 4, 40, 400–409, 41, 410–419, 42, 420–429, 43, 430–439, 44, 440–449, 45, 450–459, 46, 460–469, 47, 470–479, 48, 480–489, 49, 490–499, 5, 50, 500–509, 51, 510–519, 52, 520–529, 53, 530–539, 54, 540–549, 55, 550–559, 56, 560–569, 57, 570–579, 58, 580–589, 59, 590–599, 6, 60, 600–609, 61, 610–619, 62, 620–629, 63, 630–639, 64, 640–649, 65, 650–659, 66, 660–669, 67, 670–679, 68, 680–689, 69, 690–699, 7, 70, 700–709, 71, 710–719, 72, 720–729, 73, 730–739, 74, 740–749, 75, 750–759, 76, 760–769, 77, 770–779, 78, 780–789, 79, 790–799, 8, 80, 800–809, 81, 810–819, 82, 820–829, 83, 830–839, 84, 840–849, 85, 850–859, 86, 860–869, 87, 870–879, 88, 880–889, 89, 890–899, 9, 90, 900–909, 91, 910–919, 92, 920–929, 93, 930–939, 94, 940–949, 95, 950–959, 96, 960–969, 97, 970–979, 98, 980–989, 99, 990–999
app/og-image
   page.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–93
components
   AddPersonForm.tsx87.86%84.62%100%88.11%100, 35, 44–52, 74–81, 98–99
   AnimatedNumber.tsx77.39%94.12%50%75%31–36, 62–80
   BillLookup.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240, 25–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   BillStatusIndicator.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–115, 12–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   EmptyStates.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–303, 31–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   ErrorBoundary.tsx98.71%85.71%100%100%49–50
   GridCell.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90
   ItemContextMenu.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19,

1 similar comment
@github-actions
Copy link

Coverage after merging receipt-theme-refactor into main will be

17.36%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
jest.setup.node.ts0%0%0%0%1, 1, 10–16, 2–9
app
   layout.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9
   page.tsx0%0%0%0%1, 1, 10–12, 2–9
app/admin
   layout.tsx0%0%0%0%1, 1, 10–16, 2–9
   page.tsx0%0%0%0%1, 1, 10, 100, 1000–1009, 101, 1010–1019, 102, 1020–1029, 103, 1030–1039, 104, 1040–1049, 105, 1050–1059, 106, 1060–1069, 107, 1070–1079, 108, 1080–1089, 109, 1090–1099, 11, 110, 1100–1109, 111, 1110–1119, 112, 1120–1129, 113, 1130–1139, 114, 1140–1149, 115, 1150–1159, 116, 1160, 117–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–309, 31, 310–319, 32, 320–329, 33, 330–339, 34, 340–349, 35, 350–359, 36, 360–369, 37, 370–379, 38, 380–389, 39, 390–399, 4, 40, 400–409, 41, 410–419, 42, 420–429, 43, 430–439, 44, 440–449, 45, 450–459, 46, 460–469, 47, 470–479, 48, 480–489, 49, 490–499, 5, 50, 500–509, 51, 510–519, 52, 520–529, 53, 530–539, 54, 540–549, 55, 550–559, 56, 560–569, 57, 570–579, 58, 580–589, 59, 590–599, 6, 60, 600–609, 61, 610–619, 62, 620–629, 63, 630–639, 64, 640–649, 65, 650–659, 66, 660–669, 67, 670–679, 68, 680–689, 69, 690–699, 7, 70, 700–709, 71, 710–719, 72, 720–729, 73, 730–739, 74, 740–749, 75, 750–759, 76, 760–769, 77, 770–779, 78, 780–789, 79, 790–799, 8, 80, 800–809, 81, 810–819, 82, 820–829, 83, 830–839, 84, 840–849, 85, 850–859, 86, 860–869, 87, 870–879, 88, 880–889, 89, 890–899, 9, 90, 900–909, 91, 910–919, 92, 920–929, 93, 930–939, 94, 940–949, 95, 950–959, 96, 960–969, 97, 970–979, 98, 980–989, 99, 990–999
app/og-image
   page.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–93
components
   AddPersonForm.tsx87.86%84.62%100%88.11%100, 35, 44–52, 74–81, 98–99
   AnimatedNumber.tsx77.39%94.12%50%75%31–36, 62–80
   BillLookup.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240, 25–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   BillStatusIndicator.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–115, 12–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   EmptyStates.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–303, 31–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   ErrorBoundary.tsx98.71%85.71%100%100%49–50
   GridCell.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90
   ItemContextMenu.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19,

1. Replace built-in ease-out with custom cubic-bezier curves
2. Fix prefers-reduced-motion: keep opacity crossfades instead of
   killing all animation (polish-dont-remove-all)
3. Simplify ledger-row hover to bg-color only (props-transform-opacity)
4. Asymmetric btn-press timing: 80ms press, 200ms release
5. Limit animate-bounce to 3 iterations instead of infinite
6. Reduce CelebrationOverlay timeout 1200ms→300ms, AddPersonForm 500→250ms
7. Remove --duration-slow (0.4s) and --duration-slower (0.6s)
8. Add will-change:transform to rAF-animated number components
9. Fix mobile button scale 0.95→0.97 (transform-scale-097)
10. Remove mislabeled --ease-smooth variable
@github-actions
Copy link

Coverage after merging receipt-theme-refactor into main will be

17.28%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
jest.setup.node.ts0%0%0%0%1, 1, 10–16, 2–9
app
   layout.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9
   page.tsx0%0%0%0%1, 1, 10–12, 2–9
app/admin
   layout.tsx0%0%0%0%1, 1, 10–16, 2–9
   page.tsx0%0%0%0%1, 1, 10, 100, 1000–1009, 101, 1010–1019, 102, 1020–1029, 103, 1030–1039, 104, 1040–1049, 105, 1050–1059, 106, 1060–1069, 107, 1070–1079, 108, 1080–1089, 109, 1090–1099, 11, 110, 1100–1109, 111, 1110–1119, 112, 1120–1129, 113, 1130–1139, 114, 1140–1149, 115, 1150–1159, 116, 1160, 117–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–309, 31, 310–319, 32, 320–329, 33, 330–339, 34, 340–349, 35, 350–359, 36, 360–369, 37, 370–379, 38, 380–389, 39, 390–399, 4, 40, 400–409, 41, 410–419, 42, 420–429, 43, 430–439, 44, 440–449, 45, 450–459, 46, 460–469, 47, 470–479, 48, 480–489, 49, 490–499, 5, 50, 500–509, 51, 510–519, 52, 520–529, 53, 530–539, 54, 540–549, 55, 550–559, 56, 560–569, 57, 570–579, 58, 580–589, 59, 590–599, 6, 60, 600–609, 61, 610–619, 62, 620–629, 63, 630–639, 64, 640–649, 65, 650–659, 66, 660–669, 67, 670–679, 68, 680–689, 69, 690–699, 7, 70, 700–709, 71, 710–719, 72, 720–729, 73, 730–739, 74, 740–749, 75, 750–759, 76, 760–769, 77, 770–779, 78, 780–789, 79, 790–799, 8, 80, 800–809, 81, 810–819, 82, 820–829, 83, 830–839, 84, 840–849, 85, 850–859, 86, 860–869, 87, 870–879, 88, 880–889, 89, 890–899, 9, 90, 900–909, 91, 910–919, 92, 920–929, 93, 930–939, 94, 940–949, 95, 950–959, 96, 960–969, 97, 970–979, 98, 980–989, 99, 990–999
app/og-image
   page.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–93
components
   AddPersonForm.tsx87.86%84.62%100%88.11%100, 35, 44–52, 74–81, 98–99
   AnimatedNumber.tsx77.59%94.12%50%75.26%31–36, 62–80
   BillLookup.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240, 25–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   BillStatusIndicator.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–115, 12–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   EmptyStates.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–303, 31–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   ErrorBoundary.tsx98.71%85.71%100%100%49–50
   GridCell.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90
   ItemContextMenu.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19,

1 similar comment
@github-actions
Copy link

Coverage after merging receipt-theme-refactor into main will be

17.28%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
jest.setup.node.ts0%0%0%0%1, 1, 10–16, 2–9
app
   layout.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9
   page.tsx0%0%0%0%1, 1, 10–12, 2–9
app/admin
   layout.tsx0%0%0%0%1, 1, 10–16, 2–9
   page.tsx0%0%0%0%1, 1, 10, 100, 1000–1009, 101, 1010–1019, 102, 1020–1029, 103, 1030–1039, 104, 1040–1049, 105, 1050–1059, 106, 1060–1069, 107, 1070–1079, 108, 1080–1089, 109, 1090–1099, 11, 110, 1100–1109, 111, 1110–1119, 112, 1120–1129, 113, 1130–1139, 114, 1140–1149, 115, 1150–1159, 116, 1160, 117–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–309, 31, 310–319, 32, 320–329, 33, 330–339, 34, 340–349, 35, 350–359, 36, 360–369, 37, 370–379, 38, 380–389, 39, 390–399, 4, 40, 400–409, 41, 410–419, 42, 420–429, 43, 430–439, 44, 440–449, 45, 450–459, 46, 460–469, 47, 470–479, 48, 480–489, 49, 490–499, 5, 50, 500–509, 51, 510–519, 52, 520–529, 53, 530–539, 54, 540–549, 55, 550–559, 56, 560–569, 57, 570–579, 58, 580–589, 59, 590–599, 6, 60, 600–609, 61, 610–619, 62, 620–629, 63, 630–639, 64, 640–649, 65, 650–659, 66, 660–669, 67, 670–679, 68, 680–689, 69, 690–699, 7, 70, 700–709, 71, 710–719, 72, 720–729, 73, 730–739, 74, 740–749, 75, 750–759, 76, 760–769, 77, 770–779, 78, 780–789, 79, 790–799, 8, 80, 800–809, 81, 810–819, 82, 820–829, 83, 830–839, 84, 840–849, 85, 850–859, 86, 860–869, 87, 870–879, 88, 880–889, 89, 890–899, 9, 90, 900–909, 91, 910–919, 92, 920–929, 93, 930–939, 94, 940–949, 95, 950–959, 96, 960–969, 97, 970–979, 98, 980–989, 99, 990–999
app/og-image
   page.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–93
components
   AddPersonForm.tsx87.86%84.62%100%88.11%100, 35, 44–52, 74–81, 98–99
   AnimatedNumber.tsx77.59%94.12%50%75.26%31–36, 62–80
   BillLookup.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240, 25–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   BillStatusIndicator.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–115, 12–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   EmptyStates.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–303, 31–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   ErrorBoundary.tsx98.71%85.71%100%100%49–50
   GridCell.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90
   ItemContextMenu.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19,

- Add htmlFor to person editor labels (Display Name, Color Theme)
- Add name/autoComplete to person name input
- Add role="radiogroup" + aria-labelledby to color picker
- Add hidden <h1> for heading hierarchy (was jumping to <h2>)
- Add touch-action: manipulation to app shell
- Fix footer link hover (was same color as rest state)
- Fix active:scale-95 → scale-[0.97] on person assignment cards
- Remove duplicate overflow-auto classes (3 instances)
@github-actions
Copy link

Coverage after merging receipt-theme-refactor into main will be

17.27%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
jest.setup.node.ts0%0%0%0%1, 1, 10–16, 2–9
app
   layout.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9
   page.tsx0%0%0%0%1, 1, 10–12, 2–9
app/admin
   layout.tsx0%0%0%0%1, 1, 10–16, 2–9
   page.tsx0%0%0%0%1, 1, 10, 100, 1000–1009, 101, 1010–1019, 102, 1020–1029, 103, 1030–1039, 104, 1040–1049, 105, 1050–1059, 106, 1060–1069, 107, 1070–1079, 108, 1080–1089, 109, 1090–1099, 11, 110, 1100–1109, 111, 1110–1119, 112, 1120–1129, 113, 1130–1139, 114, 1140–1149, 115, 1150–1159, 116, 1160, 117–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–309, 31, 310–319, 32, 320–329, 33, 330–339, 34, 340–349, 35, 350–359, 36, 360–369, 37, 370–379, 38, 380–389, 39, 390–399, 4, 40, 400–409, 41, 410–419, 42, 420–429, 43, 430–439, 44, 440–449, 45, 450–459, 46, 460–469, 47, 470–479, 48, 480–489, 49, 490–499, 5, 50, 500–509, 51, 510–519, 52, 520–529, 53, 530–539, 54, 540–549, 55, 550–559, 56, 560–569, 57, 570–579, 58, 580–589, 59, 590–599, 6, 60, 600–609, 61, 610–619, 62, 620–629, 63, 630–639, 64, 640–649, 65, 650–659, 66, 660–669, 67, 670–679, 68, 680–689, 69, 690–699, 7, 70, 700–709, 71, 710–719, 72, 720–729, 73, 730–739, 74, 740–749, 75, 750–759, 76, 760–769, 77, 770–779, 78, 780–789, 79, 790–799, 8, 80, 800–809, 81, 810–819, 82, 820–829, 83, 830–839, 84, 840–849, 85, 850–859, 86, 860–869, 87, 870–879, 88, 880–889, 89, 890–899, 9, 90, 900–909, 91, 910–919, 92, 920–929, 93, 930–939, 94, 940–949, 95, 950–959, 96, 960–969, 97, 970–979, 98, 980–989, 99, 990–999
app/og-image
   page.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–93
components
   AddPersonForm.tsx87.86%84.62%100%88.11%100, 35, 44–52, 74–81, 98–99
   AnimatedNumber.tsx77.59%94.12%50%75.26%31–36, 62–80
   BillLookup.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240, 25–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   BillStatusIndicator.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–115, 12–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   EmptyStates.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–303, 31–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   ErrorBoundary.tsx98.71%85.71%100%100%49–50
   GridCell.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90
   ItemContextMenu.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19,

1 similar comment
@github-actions
Copy link

Coverage after merging receipt-theme-refactor into main will be

17.27%

Coverage Report
FileStmtsBranchesFuncsLinesUncovered Lines
jest.setup.node.ts0%0%0%0%1, 1, 10–16, 2–9
app
   layout.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9
   page.tsx0%0%0%0%1, 1, 10–12, 2–9
app/admin
   layout.tsx0%0%0%0%1, 1, 10–16, 2–9
   page.tsx0%0%0%0%1, 1, 10, 100, 1000–1009, 101, 1010–1019, 102, 1020–1029, 103, 1030–1039, 104, 1040–1049, 105, 1050–1059, 106, 1060–1069, 107, 1070–1079, 108, 1080–1089, 109, 1090–1099, 11, 110, 1100–1109, 111, 1110–1119, 112, 1120–1129, 113, 1130–1139, 114, 1140–1149, 115, 1150–1159, 116, 1160, 117–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–309, 31, 310–319, 32, 320–329, 33, 330–339, 34, 340–349, 35, 350–359, 36, 360–369, 37, 370–379, 38, 380–389, 39, 390–399, 4, 40, 400–409, 41, 410–419, 42, 420–429, 43, 430–439, 44, 440–449, 45, 450–459, 46, 460–469, 47, 470–479, 48, 480–489, 49, 490–499, 5, 50, 500–509, 51, 510–519, 52, 520–529, 53, 530–539, 54, 540–549, 55, 550–559, 56, 560–569, 57, 570–579, 58, 580–589, 59, 590–599, 6, 60, 600–609, 61, 610–619, 62, 620–629, 63, 630–639, 64, 640–649, 65, 650–659, 66, 660–669, 67, 670–679, 68, 680–689, 69, 690–699, 7, 70, 700–709, 71, 710–719, 72, 720–729, 73, 730–739, 74, 740–749, 75, 750–759, 76, 760–769, 77, 770–779, 78, 780–789, 79, 790–799, 8, 80, 800–809, 81, 810–819, 82, 820–829, 83, 830–839, 84, 840–849, 85, 850–859, 86, 860–869, 87, 870–879, 88, 880–889, 89, 890–899, 9, 90, 900–909, 91, 910–919, 92, 920–929, 93, 930–939, 94, 940–949, 95, 950–959, 96, 960–969, 97, 970–979, 98, 980–989, 99, 990–999
app/og-image
   page.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–93
components
   AddPersonForm.tsx87.86%84.62%100%88.11%100, 35, 44–52, 74–81, 98–99
   AnimatedNumber.tsx77.59%94.12%50%75.26%31–36, 62–80
   BillLookup.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240, 25–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   BillStatusIndicator.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–115, 12–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   EmptyStates.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19, 190–199, 2, 20, 200–209, 21, 210–219, 22, 220–229, 23, 230–239, 24, 240–249, 25, 250–259, 26, 260–269, 27, 270–279, 28, 280–289, 29, 290–299, 3, 30, 300–303, 31–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90–99
   ErrorBoundary.tsx98.71%85.71%100%100%49–50
   GridCell.tsx0%0%0%0%1, 1, 10–19, 2, 20–29, 3, 30–39, 4, 40–49, 5, 50–59, 6, 60–69, 7, 70–79, 8, 80–89, 9, 90
   ItemContextMenu.tsx0%0%0%0%1, 1, 10, 100–109, 11, 110–119, 12, 120–129, 13, 130–139, 14, 140–149, 15, 150–159, 16, 160–169, 17, 170–179, 18, 180–189, 19,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant