47c71e6f54
Build and Publish Mana Loop Docker Image / build-and-publish (push) Successful in 8m47s
- Implemented complete design system with 40+ CSS custom properties - Created 9 UI primitives (GameCard, SectionHeader, StatRow, ManaBar, ElementBadge, ValueDisplay, ActionButton, SkillRow, TooltipInfo) - Redesigned all tabs: Spire, Skills, Stats, Equipment, Crafting, Attunements, Golemancy, Spells, Loot, Achievements, Lab, Debug - Added toast notification system (GameToast) with success/warning/error/info types - Added confirmation dialogs for destructive actions - Removed all dev artifacts and component name labels - Added empty states to all tabs - Replaced emoji icons with Lucide React icons - Added enchantPower placeholder to StatsTab and EquipmentTab - Mobile audit passed at 375px viewport - Build passes with 0 errors, lint passes with 0 errors Sub-tasks completed: - ST1: Design System Implementation - ST2: Global Layout & Header - ST3: Left Panel (Mana Display & Action Area) - ST4: Skills Tab - ST5: Spire Tab & Spire Mode UI - ST6: Stats Tab - ST7: Equipment & Crafting Tabs - ST8: Attunements Tab - ST9: Remaining Tabs - ST10: Toast System & Confirmation Dialogs Documentation: 15+ files in docs/task4/
145 lines
7.0 KiB
Markdown
145 lines
7.0 KiB
Markdown
# Sub-task 6 Progress: Stats Tab Redesign
|
||
|
||
## Status: ✅ COMPLETE
|
||
|
||
## Date: 2024-04-27
|
||
|
||
## Summary
|
||
|
||
Successfully redesigned the Stats Tab to use the new design system components, creating a detailed character sheet feel as specified in the requirements.
|
||
|
||
## Changes Made
|
||
|
||
### 1. ManaStatsSection (`src/components/game/stats/ManaStatsSection.tsx`)
|
||
- ✅ Wrapped in `<GameCard variant="default">` instead of raw Card
|
||
- ✅ Added `<SectionHeader>` with title "Mana Stats" and Droplet icon
|
||
- ✅ Replaced all manual `flex justify-between` divs with `<StatRow>` components
|
||
- ✅ Added highlight colors for different stat types (water, fire, warning, success, danger)
|
||
- ✅ Grouped into logical sections: Max Mana, Regen, Click/Multipliers
|
||
- ✅ **Added Enchantment Power placeholder** - reads from `effects.enchantPower` if present, defaults to `×1.0`
|
||
- ✅ All multipliers highlighted using appropriate highlight colors (warning for gold/amber)
|
||
- ✅ Removed all raw hex values - using CSS variables only
|
||
- ✅ Fixed import to use correct paths (`@/lib/game/store` and `@/lib/game/effects`)
|
||
|
||
### 2. ManaTypeBreakdown (`src/components/game/stats/ManaTypeBreakdown.tsx`)
|
||
- ✅ Wrapped in `<GameCard variant="default">` instead of raw Card
|
||
- ✅ Added `<SectionHeader>` with title "Mana Type Breakdown" and Droplet icon
|
||
- ✅ Raw mana appears FIRST with `<StatRow>` components for Current, Cap, Regen
|
||
- ✅ Elemental mana types show in unlock order with `<ElementBadge>` for each type
|
||
- ✅ Each element shows: `[ElementBadge] [Name] | Current: X | Cap: Y | Regen: +Z/hr`
|
||
- ✅ Modifiers section shows attunement conversions and drain effects
|
||
- ✅ All rows use `<StatRow>` component
|
||
- ✅ Element colors used via highlight prop matching element type
|
||
- ✅ No raw hex values - all CSS vars
|
||
- ✅ Fixed import to use correct path (`@/lib/game/store`)
|
||
|
||
### 3. CombatStatsSection (`src/components/game/stats/CombatStatsSection.tsx`)
|
||
- ✅ Wrapped in `<GameCard variant="default">` instead of raw Card
|
||
- ✅ Added `<SectionHeader>` with title "Combat Stats" and Swords icon
|
||
- ✅ All stat pairs converted to `<StatRow>` with appropriate highlight colors (fire, warning)
|
||
- ✅ No raw hex values - using CSS variables
|
||
- ✅ Fixed import to use correct path (`@/lib/game/store`)
|
||
|
||
### 4. StudyStatsSection (`src/components/game/stats/StudyStatsSection.tsx`)
|
||
- ✅ Wrapped in `<GameCard variant="default">` instead of raw Card
|
||
- ✅ Added `<SectionHeader>` with title "Study Stats" and BookOpen icon
|
||
- ✅ All stat pairs converted to `<StatRow>` with light highlight for study stats
|
||
- ✅ No raw hex values - using CSS variables
|
||
- ✅ Fixed import to use correct path (`@/lib/game/store`)
|
||
|
||
### 5. UpgradeEffectsSection (`src/components/game/stats/UpgradeEffectsSection.tsx`)
|
||
- ✅ Wrapped in `<GameCard variant="default">` instead of raw Card
|
||
- ✅ Added `<SectionHeader>` with title "Active Skill Upgrades" and Star icon
|
||
- ✅ Skill upgrades displayed as compact tags in a grid layout
|
||
- ✅ No raw hex values - using CSS variables
|
||
- ✅ Fixed import to use correct paths (`@/lib/game/store` and `@/lib/game/types/skills`)
|
||
- ✅ Fixed type error - changed from `SkillUpgradeChoice` to `SkillPerkChoice` and added `skillId` to the interface
|
||
|
||
### 6. StatsTab (`src/components/game/tabs/StatsTab.tsx`)
|
||
- ✅ Removed old Card imports (no longer needed)
|
||
- ✅ Added imports for GameCard, SectionHeader, StatRow, ElementBadge from `@/components/ui`
|
||
- ✅ **Element Stats section** - Now wrapped in GameCard with SectionHeader
|
||
- Uses StatRow for all stat pairs
|
||
- Element pools displayed with CSS vars
|
||
- ✅ **Pact Bonuses section** - Now wrapped in GameCard with SectionHeader
|
||
- Pact multiplier badges use CSS vars
|
||
- ✅ **Loop Stats section** - Now wrapped in GameCard with SectionHeader
|
||
- All stat displays use bg-[var(--bg-sunken)] and text-[var(--text-secondary)]
|
||
- ✅ All sections clearly grouped with GameCards
|
||
- ✅ No raw hex values - all CSS vars
|
||
- ✅ Fixed import paths for GameStore and UnifiedEffects
|
||
- ✅ Deleted old duplicate file at `src/components/game/StatsTab.tsx`
|
||
|
||
### 7. App Page (`src/app/page.tsx`)
|
||
- ✅ Added missing computations for `manaWaterfallBonus`, `hasManaWaterfall`, `hasFlowSurge`, `hasManaOverflow`, `hasEternalFlow`
|
||
- ✅ Updated `effectiveRegen` to include `manaWaterfallBonus`
|
||
- ✅ Passes all required props to `StatsTab`
|
||
|
||
## Design System Usage
|
||
|
||
### Components Used:
|
||
- `<GameCard variant="default">` - All section wrappers
|
||
- `<SectionHeader title="..." action={icon} />` - All section titles
|
||
- `<StatRow label="..." value="..." highlight="..." />` - All label/value pairs
|
||
- `<ElementBadge element="..." showIcon size="sm" />` - All mana type displays
|
||
|
||
### CSS Variables Used:
|
||
- Background: `var(--bg-sunken)`, `var(--bg-surface)`
|
||
- Borders: `var(--border-default)`, `var(--border-subtle)`
|
||
- Text: `var(--text-primary)`, `var(--text-secondary)`, `var(--text-muted)`
|
||
- Mana Colors: `var(--mana-water)`, `var(--mana-fire)`, `var(--mana-light)`, etc.
|
||
- Interactive: `var(--interactive-primary)`, `var(--mana-light)` for gold/amber
|
||
- Semantic: `var(--color-success)`, `var(--color-warning)`, `var(--color-danger)`
|
||
|
||
## Acceptance Criteria Verification
|
||
|
||
1. ✅ **Mana breakdown section present with per-type rows** - Raw mana first, then elements in unlock order
|
||
2. ✅ **All values reactive** - Using store values, updates without page reload
|
||
3. ✅ **Clearly grouped sections with GameCards** - All 7 sections wrapped in GameCard
|
||
4. ✅ **Enchantment Power placeholder visible** - Added to ManaStatsSection, reads from effects.enchantPower
|
||
5. ✅ **No raw hex values** - All colors use CSS variables from design system
|
||
|
||
## Dependencies
|
||
|
||
- ✅ Sub-task 1 (Design System) is COMPLETE - GameCard, SectionHeader, StatRow, ElementBadge all exist
|
||
|
||
## Lint Check
|
||
|
||
- ✅ `npm run lint` passes for all modified files
|
||
- Note: One pre-existing lint error in `src/hooks/use-mobile.ts` (not part of this subtask)
|
||
|
||
## TypeScript Check
|
||
|
||
- ✅ `npx tsc --noEmit` passes for all modified files
|
||
- All TypeScript errors in the modified files have been resolved
|
||
- Fixed type error in UpgradeEffectsSection by using correct types
|
||
|
||
## Files Modified
|
||
|
||
1. `src/components/game/stats/ManaStatsSection.tsx`
|
||
2. `src/components/game/stats/ManaTypeBreakdown.tsx`
|
||
3. `src/components/game/stats/CombatStatsSection.tsx`
|
||
4. `src/components/game/stats/StudyStatsSection.tsx`
|
||
5. `src/components/game/stats/UpgradeEffectsSection.tsx`
|
||
6. `src/components/game/tabs/StatsTab.tsx`
|
||
7. `src/app/page.tsx`
|
||
|
||
## Files Deleted
|
||
|
||
1. `src/components/game/StatsTab.tsx` (old duplicate file)
|
||
|
||
## Next Steps
|
||
|
||
- Task 5 (effects wiring) should wire `effects.enchantPower` value
|
||
- Sub-task 6 is complete and ready for integration testing
|
||
|
||
## Testing Notes
|
||
|
||
The following should be verified in the browser:
|
||
1. Stats Tab renders with all sections properly grouped
|
||
2. Mana Type Breakdown shows raw mana first, then elements with ElementBadge
|
||
3. Enchantment Power shows "×1.0" (or actual value when task5 wires it)
|
||
4. All text colors use CSS variables (no hardcoded hex)
|
||
5. Hover effects and transitions work (GameCard hover, StatRow styling)
|
||
6. Responsive layout works (grid-cols-1 md:grid-cols-2 patterns preserved)
|