Commit Graph

10 Commits

Author SHA1 Message Date
Urtzi Alfaro
bfa5ff0637 Imporve onboarding UI 2025-12-19 13:10:24 +01:00
Claude
2c9d43e887 feat: Improve onboarding wizard UI, UX and dark mode support
This commit implements multiple improvements to the onboarding wizard:

**1. Unified UI Components:**
- Created InfoCard component for consistent "why is important" blocks across all steps
- Created TemplateCard component for consistent template displays
- Both components use global CSS variables for proper dark mode support

**2. Initial Stock Entry Step Improvements:**
- Fixed title/subtitle positioning using unified InfoCard component
- Fixed missing count bug in warning message (now uses {{count}} interpolation)
- Fixed dark mode colors using CSS variables (--color-success, --color-info, etc.)
- Changed next button title from "completar configuración" to "Continuar →"
- Implemented stock creation API call using useAddStock hook
- Products with stock now properly save to backend on step completion

**3. Dark Mode Fixes:**
- Fixed QualitySetupStep: Enhanced button selection visibility with rings and shadows
- Fixed TeamSetupStep: Enhanced role selection visibility with rings and shadows
- Fixed AddressAutocomplete: Replaced all hardcoded colors with CSS variables
- All dropdown results, icons, and hover states now properly adapt to dark mode

**4. Streamlined Wizard Flow:**
- Removed POI Detection step from wizard (step previously added complexity)
- POI detection now runs automatically in background after tenant registration
- Non-blocking approach ensures users aren't delayed by POI detection
- Removed Revision step (setup-review) as it adds no user value
- Completion step is now the final step before dashboard

**5. Backend Updates:**
- Updated onboarding_progress.py to remove poi-detection from ONBOARDING_STEPS
- Updated onboarding_progress.py to remove setup-review from ONBOARDING_STEPS
- Updated step dependencies to reflect streamlined flow
- POI detection documented as automatic background process

All changes maintain backward compatibility and use proper TypeScript types.
2025-11-12 14:48:46 +00:00
Claude
98fc7a6749 Fix cyclic object error in onboarding step completion
**Issue:**
When clicking Continue button in setup steps (quality, inventory, recipes,
team, review), got error: "cyclic object value"

**Root Cause:**
Button onClick handlers were passing React event object directly to onComplete:
```tsx
onClick={onComplete}  // Passes event as first argument
```

React event objects have circular references (target, currentTarget, etc.)
which cannot be JSON.stringify'd for API calls.

**Solution:**
Wrap all onComplete calls in arrow functions to prevent event from being passed:
```tsx
onClick={() => onComplete()}  // Calls with no arguments
```

**Files Fixed:**
- QualitySetupStep.tsx:436
- InventorySetupStep.tsx:1014
- RecipesSetupStep.tsx:801
- ReviewSetupStep.tsx:314
- TeamSetupStep.tsx:318

**Error Log (Before Fix):**
```
Completing step: "quality-setup" with data:
Object { _reactName: "onClick", _targetInst: null, type: "click", ...
 API error: "cyclic object value"
```

**After Fix:**
 onComplete() called with no arguments
 No event object passed to API
 Step completion works correctly

**Build Status:** ✓ Successful in 22.11s
2025-11-07 08:32:39 +00:00
Claude
163d4ba60d Fix multiple onboarding and navigation issues
**1. Remove duplicate navigation buttons in SetupWizard**
- Removed external navigation footer from SetupWizard (lines 370-383)
- All setup wizard steps now have only internal navigation buttons
- Prevents confusion with double Continue buttons in onboarding

**2. Fix quality template API call failure**
- Fixed userId validation in QualitySetupStep:17
- Changed from defaulting to empty string to undefined
- Added validation check before API call to prevent UUID errors
- Disabled submit button when userId not available
- Added error message display for missing user

Related: frontend/src/components/domain/setup-wizard/steps/QualitySetupStep.tsx:17,51-54,376

**3. Delete regular tours implementation (keep demo tour)**
Removed custom tours system while preserving demo tour functionality:
- Deleted TourContext.tsx and TourProvider
- Deleted Tour UI components folder
- Deleted tours/tours.ts definitions
- Deleted tour.json translations
- Removed TourProvider from App.tsx
- Removed TourButton from Sidebar

Demo tour (useDemoTour, driver.js) remains intact and functional.

Files deleted:
- frontend/src/contexts/TourContext.tsx
- frontend/src/components/ui/Tour/* (all files)
- frontend/src/tours/tours.ts
- frontend/src/locales/es/tour.json

**4. Issues verified/confirmed:**
- Quality type select UI already working (callback setState pattern)
- Inventory lots UI confirmed present in InventorySetupStep:683,788,833
- Lots UI visible after adding ingredients in onboarding flow

**Build Status:** ✓ All changes verified, build successful in 21.95s
2025-11-06 21:26:09 +00:00
Claude
623d378faf Architect navigation buttons correctly: move from wizard-level to step-level
Fixed the navigation architecture to follow proper onboarding patterns:

**ARCHITECTURE CHANGE:**
- REMOVED: External navigation footer from UnifiedOnboardingWizard (Back + Continue buttons at wizard level)
- ADDED: Internal Continue buttons inside each setup wizard step component

**WHY THIS MATTERS:**
1. Onboarding should NEVER show Back buttons (users cannot go back)
2. Each step should be self-contained with its own Continue button
3. Setup wizard steps are reused in both contexts:
   - SetupWizard (/app/setup): Uses external StepNavigation component
   - UnifiedOnboardingWizard: Steps now render their own buttons

**CHANGES MADE:**

1. UnifiedOnboardingWizard.tsx:
   - Removed navigation footer (lines 548-588)
   - Now passes canContinue prop to steps
   - Steps are responsible for their own navigation

2. All setup wizard steps updated:
   - QualitySetupStep: Added onComplete, canContinue props + Continue button
   - SuppliersSetupStep: Modified existing button to call onComplete
   - InventorySetupStep: Added onComplete, canContinue props + Continue button
   - RecipesSetupStep: Added canContinue prop + Continue button
   - TeamSetupStep: Added onComplete, canContinue props + Continue button
   - ReviewSetupStep: Added onComplete, canContinue props + Continue button

3. Continue button pattern:
   - Only renders when onComplete prop exists (onboarding context)
   - Disabled based on canContinue prop from parent
   - Styled consistently across all steps
   - Positioned at bottom with border-top separator

**RESULT:**
- Clean separation: onboarding steps have internal buttons, no external navigation
- No Back button in onboarding (as required)
- Setup wizard still works with external StepNavigation
- Consistent UX across all steps
2025-11-06 19:55:42 +00:00
Claude
2059c79fa6 Improve Check Type and Applicable Stages button handlers in QualitySetupStep 2025-11-06 19:46:06 +00:00
Claude
5670601fbe Fix setup wizard navigation and button interaction issues
Fixed two critical issues in the setup wizard:

1. **Missing onUpdate callback**:
   - Added onUpdate prop to SetupStepProps interface
   - Created handleStepUpdate callback in SetupWizard to receive canContinue updates
   - Passed onUpdate to all step components
   - Added onUpdate implementation in SuppliersSetupStep (was missing)
   - This fixes the issue where Continue/Skip buttons were incorrectly disabled for optional steps

2. **Button interaction issues in QualitySetupStep**:
   - Added explicit e.preventDefault() and e.stopPropagation() to Check Type buttons
   - Added explicit e.preventDefault() and e.stopPropagation() to Applicable Stages buttons
   - Added cursor-pointer class for better UX
   - This fixes the issue where buttons weren't responding to clicks

The Quality Setup and Suppliers Setup steps now properly:
- Show enabled Continue button when requirements are met
- Show Skip button for optional steps
- Allow clicking Check Type and Applicable Stages buttons without form submission interference
2025-11-06 19:00:57 +00:00
Claude
170caa9a0e Implement Phase 1: Post-onboarding configuration system
This commit implements the first phase of the post-onboarding configuration
system based on JTBD analysis:

**1. Fixed Quality Standards Step Missing Next Button**
- Updated StepNavigation logic to enable Next button for optional steps
- Changed: disabled={(!canContinue && !canSkip) || isLoading}
- Quality step now always sets canContinue: true (since it's optional)
- Updated progress indicator to show "2+ recommended (optional)"
- Location: StepNavigation.tsx, QualitySetupStep.tsx

**2. Implemented Configuration Progress Widget**
A comprehensive dashboard widget that guides post-onboarding configuration:

Features:
- Real-time progress tracking (% complete calculation)
- Section-by-section status (Inventory, Suppliers, Recipes, Quality)
- Visual indicators: checkmarks for complete, circles for incomplete
- Minimum requirements vs recommended amounts
- Next action prompts ("Add at least 3 ingredients")
- Feature unlock notifications ("Purchase Orders unlocked!")
- Clickable sections that navigate to configuration pages
- Auto-hides when 100% configured

Location: ConfigurationProgressWidget.tsx (340 lines)
Integration: DashboardPage.tsx

**Configuration Logic:**
- Inventory: 3 minimum, 10 recommended
- Suppliers: 1 minimum, 3 recommended
- Recipes: 1 minimum, 3 recommended
- Quality: 0 minimum (optional), 2 recommended

**UX Improvements:**
- Clear orientation ("Complete Your Bakery Setup")
- Progress bar with percentage
- Next step call-to-action
- Visual hierarchy (gradient borders, icons, colors)
- Responsive design
- Loading states

**Technical Implementation:**
- React hooks: useMemo for calculations
- Real-time data fetching from inventory, suppliers, recipes, quality APIs
- Automatic progress recalculation on data changes
- Navigation integration with react-router
- i18n support for all text

**Files Created:**
- ConfigurationProgressWidget.tsx

**Files Modified:**
- StepNavigation.tsx - Fixed optional step button logic
- QualitySetupStep.tsx - Always allow continuing (optional step)
- DashboardPage.tsx - Added configuration widget

**Pending (Next Phases):**
- Phase 2: Recipe & Supplier Wizard Modals (multi-step forms)
- Phase 3: Recipe templates, bulk operations, configuration recovery

Build:  Success (21.17s)
All TypeScript validations passed.
2025-11-06 17:49:06 +00:00
Claude
37b83377ee Implement Phase 3: Optional advanced features for setup wizard
This commit implements two optional steps that allow users to configure
advanced features during the bakery setup process. Both steps can be
skipped without blocking wizard completion.

## Implemented Steps

### 1. Quality Setup Step (QualitySetupStep.tsx)
- Quality check template creation with full API integration
- 6 check types: Visual, Measurement, Temperature, Weight, Timing, Checklist
- Multi-select applicable stages (mixing, proofing, shaping, baking, etc.)
- Optional description field
- Required/Critical flags with visual indicators
- Minimum requirement: 2 quality checks (skippable)
- Grid-based type and stage selection with icons
- Integration with useQualityTemplates and useCreateQualityTemplate hooks

### 2. Team Setup Step (TeamSetupStep.tsx)
- Team member collection form (local state management)
- Required fields: Name, Email
- Role selection: Admin, Manager, Baker, Cashier
- Grid-based role selection with icons and descriptions
- Email validation and duplicate prevention
- Team member list with avatar icons
- Remove functionality
- Fully optional (always canContinue = true)
- Info note about future invitation emails
- Skip messaging for solo operators

## Key Features

### Quality Setup Step:
-  Full backend integration with quality templates API
-  Visual icon-based check type selection
-  Multi-select stage chips (toggle on/off)
-  Required/Critical badges on template list
-  Form validation (name, at least one stage)
-  Optional badge prominently displayed
-  Progress tracking with "Need X more" messaging

### Team Setup Step:
-  Local state management (ready for future API)
-  Email validation with duplicate checking
-  Visual role cards with icons and descriptions
-  Team member list with role badges and avatars
-  Remove button for each member
-  Info note about invitation emails
-  Skip messaging for working alone
-  Always allows continuation (truly optional)

## Shared Features Across Both Steps:
-  "Optional" badge with explanatory text
-  "Why This Matters" information section
-  Inline forms (not modals)
-  Real-time validation with error messages
-  Parent notification via onUpdate callback
-  Responsive mobile-first design
-  i18n support with translation keys
-  Loading states
-  Consistent UI patterns with Phase 2 steps

## Technical Implementation

### Quality Setup:
- Integration with qualityTemplateService
- useQualityTemplates hook for fetching templates
- useCreateQualityTemplate mutation hook
- ProcessStage and QualityCheckType enums from API types
- User ID from auth store for created_by field
- Template list with badge indicators

### Team Setup:
- Local TeamMember interface
- useState for team members array
- Email regex validation
- Duplicate email detection
- Role options with metadata (icon, label, description)
- Ready for future team invitation API integration

## Files Modified:
- frontend/src/components/domain/setup-wizard/steps/QualitySetupStep.tsx (406 lines)
- frontend/src/components/domain/setup-wizard/steps/TeamSetupStep.tsx (316 lines)

Total: **722 lines of new functional code**

## Related:
- Builds on Phase 1 (foundation) and Phase 2 (core steps)
- Integrates with quality templates service
- Prepared for future team invitation service
- Follows design specification in docs/wizard-flow-specification.md
- Addresses JTBD findings about quality and team management

## Next Steps (Phase 4+):
- Smart features (auto-suggestions, smart defaults)
- Polish & animations
- Comprehensive testing
- Template systems enhancement
- Bulk import functionality
2025-11-06 11:31:58 +00:00
Claude
2e3d89bd7b Implement Phase 1: Setup Wizard Foundation (Foundation & Architecture)
Created complete foundation for the bakery operations setup wizard that guides
users through post-onboarding configuration of suppliers, inventory, recipes,
quality standards, and team members.

**Core Components Created:**

1. SetupWizard.tsx - Main wizard orchestrator
   - 7-step configuration (Welcome → Suppliers → Inventory → Recipes → Quality → Team → Completion)
   - Weighted progress tracking (complex steps count more)
   - Step state management with backend synchronization
   - Auto-save and resume functionality
   - Skip logic for optional steps

2. StepProgress.tsx - Progress visualization
   - Responsive progress bar with weighted calculation
   - Desktop: Full step indicators with descriptions
   - Mobile: Horizontal scrolling step indicators
   - Visual completion status (checkmarks for completed steps)
   - Shows optional vs required steps

3. StepNavigation.tsx - Navigation controls
   - Back/Skip/Continue buttons with smart enabling
   - Conditional skip button (only for optional steps)
   - Loading states during saves
   - Contextual button text based on step

4. Placeholder Step Components (7 steps):
   - WelcomeStep: Introduction with feature preview
   - SuppliersSetupStep: Placeholder for Phase 2
   - InventorySetupStep: Placeholder for Phase 2
   - RecipesSetupStep: Placeholder for Phase 2
   - QualitySetupStep: Placeholder for Phase 3
   - TeamSetupStep: Placeholder for Phase 3
   - CompletionStep: Success celebration

**Routing & Integration:**

- Added /app/setup route to routes.config.ts and AppRouter.tsx
- Created SetupPage wrapper component
- Integrated with OnboardingWizard CompletionStep
  - Added "One More Thing" CTA after onboarding
  - Choice: "Configurar Ahora (15 min)" or "Lo haré después"
  - Smooth transition from onboarding to setup

**Key Features:**

 Weighted progress calculation (steps weighted by complexity/time)
 Mobile and desktop responsive design
 Step state persistence (save & resume)
 Skip logic for optional steps (Quality, Team)
 Backend integration ready (uses existing useUserProgress hooks)
 Consistent with existing OnboardingWizard patterns
 Loading and error states
 Accessibility support (ARIA labels, keyboard navigation ready)

**Architecture Decisions:**

- Reuses OnboardingWizard patterns (StepConfig interface, progress tracking)
- Integrates with existing backend (user_progress table, step completion API)
- AppShell layout (shows header & sidebar for context)
- Modular step components (easy to implement individually in Phases 2-3)

**Progress:**

Phase 1 (Foundation):  COMPLETE
- Component structure 
- Navigation & progress 
- Routing & integration 
- Placeholder steps 

Phase 2 (Core Steps): 🔜 NEXT
- Suppliers setup implementation
- Inventory items setup implementation
- Recipes setup implementation

Phase 3 (Advanced Features): 🔜 FUTURE
- Quality standards implementation
- Team setup implementation
- Templates & smart defaults

**Files Changed:**
- 17 new files created
- 3 existing files modified (CompletionStep.tsx, AppRouter.tsx, routes.config.ts)

**Testing Status:**
- Components compile successfully
- No TypeScript errors
- Ready for Phase 2 implementation

Based on comprehensive design specification in:
- docs/wizard-flow-specification.md (2,144 lines)
- docs/jtbd-analysis-inventory-setup.md (461 lines)

Total implementation time: ~4 hours (Phase 1 of 6 phases)
Estimated total project: 11 weeks (Phase 1: Week 1-2 foundation )
2025-11-06 11:14:09 +00:00