Skip to content

cognoco/User-Management

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,538 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

User Management System Documentation

Overview

This document serves as the main reference for the User Management System. It provides links to relevant documentation and current implementation status.

Core Documentation

Essential References

Feature Documentation

Policies

Implementation Status

Fully Implemented (Phase 1-2)

  • Core Authentication
    • Email/Password Authentication
    • OAuth Integration
    • Password Reset
    • Email Verification
    • Session Management
  • User Profile
    • Basic Profile Management
    • Avatar Upload
    • Profile Settings
    • Privacy Controls
  • Basic Security
    • Password Hashing
    • Input Validation
    • CSRF Protection
    • Session Handling

Partially Implemented (Phase 3-5)

  • Subscription System
    • UI Components
    • Plan Structure
    • Payment Processing
    • Subscription Management
  • Advanced Security
    • 2FA Framework
    • Rate Limiting
    • Audit Logging
    • Security Headers
  • Team/Organization
    • Basic Organization Structure
    • Team Management
    • Role Hierarchy
    • Permission Management

Planned Features (Phase 6+)

  • Advanced Features
    • Multi-device Session Management
    • Advanced Activity Logging
    • Data Export/Import
    • Bulk Operations
  • Enterprise Features
    • SSO Integration
    • Custom Authentication Providers
    • Advanced Audit Trails
    • Compliance Reports
  • Integration Features
    • API Key Management
    • Webhook System
    • Integration Marketplace
    • Custom Extensions

Architecture

IMPORTANT: All development must follow the Architecture Guidelines and Architecture Rules to ensure the module remains modular and pluggable.

Key Components

  • UserManagementProvider - Core provider component
  • Authentication Store - State management for auth
  • API Layer - RESTful endpoints
  • Database Layer - Supabase integration
    • Database providers are created via a factory (src/adapters/database/factory). Switch between supabase, prisma, or mock by changing the provider name in your configuration. Connection details can be supplied through environment variables or the user-management.config.ts file.

Integration Points

  • Authentication Flow
  • Profile Management
  • Subscription System
  • Organization Management

Development Guidelines

Setup

See Technical Setup for detailed instructions.

Testing

See Testing Guide for testing procedures and guidelines.

Deployment

See Deployment Guide for production deployment instructions.

Contributing

  1. Follow Architecture Guidelines and Architecture Rules
  2. Follow file structure guidelines
  3. Maintain test coverage
  4. Update documentation
  5. Submit pull requests

User Management

This project provides the User Management system used to manage authentication and related features. For a more detailed technical guide see docs/Product documentation/SETUP.md.

IT IS MODULAR, PLUG IN INTO ANY APP system! Keep it in mind while working on any task or folder structure!

Setup

  1. Clone the repository
    git clone <repository-url>
    cd User-Mgmt
  2. Install dependencies
    npm install
  3. Configure environment variables Copy the example file and fill in your credentials.
    cp .env.example .env.local
    Required variables include:
    • NEXT_PUBLIC_SUPABASE_URL
    • NEXT_PUBLIC_SUPABASE_ANON_KEY
    • NEXT_PUBLIC_API_URL
    • NEXT_PUBLIC_APP_URL

See the technical setup guide for more details.

Scripts

  • Lint: run ESLint to check the code style.
    npm run lint
  • Test: run the test suite with Vitest.
    npm test
    

── .backend-port β”œβ”€β”€ .cursor └── rules β”‚ β”œβ”€β”€ cursor_rules.mdc β”‚ β”œβ”€β”€ dev_workflow.mdc β”‚ β”œβ”€β”€ self_improve.mdc β”‚ └── taskmaster.mdc β”œβ”€β”€ .cursorrules β”œβ”€β”€ .env.example β”œβ”€β”€ .env.production β”œβ”€β”€ .eslintignore β”œβ”€β”€ .eslintrc.json β”œβ”€β”€ .gitignore β”œβ”€β”€ .roo β”œβ”€β”€ rules-architect β”‚ └── architect-rules β”œβ”€β”€ rules-ask β”‚ └── ask-rules β”œβ”€β”€ rules-boomerang β”‚ └── boomerang-rules β”œβ”€β”€ rules-code β”‚ └── code-rules β”œβ”€β”€ rules-debug β”‚ └── debug-rules β”œβ”€β”€ rules-test β”‚ └── test-rules └── rules β”‚ β”œβ”€β”€ dev_workflow.md β”‚ β”œβ”€β”€ roo_rules.md β”‚ β”œβ”€β”€ self_improve.md β”‚ └── taskmaster.md β”œβ”€β”€ .roomodes β”œβ”€β”€ .taskmasterconfig β”œβ”€β”€ .windsurfrules β”œβ”€β”€ OrganizationSSO.test.tsx.bak β”œβ”€β”€ README.md β”œβ”€β”€ anonymize_user_function.sql β”œβ”€β”€ app β”œβ”€β”€ admin β”‚ β”œβ”€β”€ audit-logs β”‚ β”‚ └── page.tsx β”‚ β”œβ”€β”€ dashboard β”‚ β”‚ └── page.tsx β”‚ β”œβ”€β”€ layout.tsx β”‚ β”œβ”€β”€ organizations β”‚ β”‚ └── [orgId] β”‚ β”‚ β”‚ └── settings β”‚ β”‚ β”‚ β”œβ”€β”€ layout.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ page.tsx β”‚ β”‚ β”‚ └── sso β”‚ β”‚ β”‚ └── page.tsx β”‚ β”œβ”€β”€ permissions β”‚ β”‚ └── page.tsx β”‚ └── roles β”‚ β”‚ └── page.tsx β”œβ”€β”€ api β”‚ β”œβ”€β”€ 2fa β”‚ β”‚ β”œβ”€β”€ backup-codes β”‚ β”‚ β”‚ β”œβ”€β”€ route.ts β”‚ β”‚ β”‚ └── verify β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ disable β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ resend-email β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ setup β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── verify β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ address β”‚ β”‚ └── validate β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ admin β”‚ β”‚ β”œβ”€β”€ dashboard β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ export β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── users β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.js β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ api-keys β”‚ β”‚ β”œβ”€β”€ [keyId] β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ audit β”‚ β”‚ └── user-actions β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ account β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ csrf β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ login β”‚ β”‚ β”‚ β”œβ”€β”€ mfa-check β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ logout β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ mfa β”‚ β”‚ β”‚ β”œβ”€β”€ resend-email β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ resend-sms β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── verify β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ oauth β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ callback β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ disconnect β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ link β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ register β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.js β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ reset-password β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ send-verification-email β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── update-password β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ company β”‚ β”‚ β”œβ”€β”€ addresses β”‚ β”‚ β”‚ β”œβ”€β”€ [addressId] β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ documents β”‚ β”‚ β”‚ β”œβ”€β”€ [documentId] β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ domains β”‚ β”‚ β”‚ β”œβ”€β”€ [id] β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ route.ts β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ verify-check β”‚ β”‚ β”‚ β”‚ β”‚ └── tests β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── verify-initiate β”‚ β”‚ β”‚ β”‚ β”‚ └── tests β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ migrations β”‚ β”‚ β”‚ β”œβ”€β”€ 001_enhance_company_schema.sql β”‚ β”‚ β”‚ └── 002_notifications_tables.sql β”‚ β”‚ β”œβ”€β”€ notifications β”‚ β”‚ β”‚ β”œβ”€β”€ preferences β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ [id] β”‚ β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── recipients β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ [id] β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ profile β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ validate β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ registration β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ route.ts β”‚ β”‚ β”‚ └── tax β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── verify-domain β”‚ β”‚ β”‚ β”œβ”€β”€ check β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── initiate β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ connected-accounts β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ csrf β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ gdpr β”‚ β”‚ β”œβ”€β”€ delete β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── export β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ notifications β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ organizations β”‚ β”‚ └── [orgId] β”‚ β”‚ β”‚ └── sso β”‚ β”‚ β”‚ β”œβ”€β”€ [idpType] β”‚ β”‚ β”‚ └── config β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ domains β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ route.ts β”‚ β”‚ β”‚ └── status β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ permissions β”‚ β”‚ └── check β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ preferences β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ profile β”‚ β”‚ β”œβ”€β”€ avatar β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ business β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ export β”‚ β”‚ β”‚ β”œβ”€β”€ download β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ logo β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ notifications β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ privacy β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── verify β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ protected β”‚ β”‚ └── user-profile β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ retention β”‚ β”‚ β”œβ”€β”€ check β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── reactivate β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ route.ts β”‚ β”œβ”€β”€ session β”‚ β”‚ β”œβ”€β”€ [sessionId] β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ enforce-policies β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ settings β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ sso β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ subscription β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ tax-id β”‚ β”‚ └── validate β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ team β”‚ β”‚ β”œβ”€β”€ invites β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ accept β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── members β”‚ β”‚ β”‚ β”œβ”€β”€ [memberId] β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ role β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”œβ”€β”€ upgrade-to-business.test.ts β”‚ └── webhooks β”‚ β”‚ β”œβ”€β”€ [webhookId] β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”œβ”€β”€ deliveries β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”‚ └── route.ts β”‚ β”‚ └── route.ts β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ └── route.test.ts β”‚ β”‚ β”œβ”€β”€ route.ts β”‚ β”‚ └── sso β”‚ β”‚ └── route.ts β”œβ”€β”€ auth β”‚ └── callback β”‚ β”‚ └── page.tsx β”œβ”€β”€ check-email β”‚ └── page.tsx β”œβ”€β”€ company β”‚ β”œβ”€β”€ addresses β”‚ β”‚ └── page.tsx β”‚ └── profile β”‚ β”‚ └── page.tsx β”œβ”€β”€ complete-profile β”‚ └── page.tsx β”œβ”€β”€ dashboard β”‚ └── page.tsx β”œβ”€β”€ globals.css β”œβ”€β”€ layout.tsx β”œβ”€β”€ login β”‚ └── page.tsx β”œβ”€β”€ page.tsx β”œβ”€β”€ profile β”‚ └── page.tsx β”œβ”€β”€ register β”‚ └── page.tsx β”œβ”€β”€ reset-password β”‚ └── page.tsx β”œβ”€β”€ responsive-demo β”‚ └── page.tsx β”œβ”€β”€ settings β”‚ β”œβ”€β”€ account β”‚ β”‚ └── DeleteAccountDialog.tsx β”‚ β”œβ”€β”€ page.tsx β”‚ └── security β”‚ β”‚ └── page.tsx β”œβ”€β”€ teams β”‚ β”œβ”€β”€ invitations β”‚ β”‚ └── page.tsx β”‚ β”œβ”€β”€ manage β”‚ β”‚ └── page.tsx β”‚ └── page.tsx β”œβ”€β”€ update-password β”‚ └── page.tsx └── verify-email β”‚ └── page.tsx β”œβ”€β”€ components.json β”œβ”€β”€ count-latest-errors.js β”œβ”€β”€ cspell.json β”œβ”€β”€ docs β”œβ”€β”€ Data Retention Policy.md β”œβ”€β”€ LICENSE β”œβ”€β”€ Product documentation β”‚ β”œβ”€β”€ API.md β”‚ β”œβ”€β”€ Architecture Guidelines.md β”‚ β”œβ”€β”€ Architecture Rules References.md β”‚ β”œβ”€β”€ Architecture Rules.md β”‚ β”œβ”€β”€ Clean Structure Proposal.md β”‚ β”œβ”€β”€ DATA_RETENTION_POLICY.md β”‚ β”œβ”€β”€ DEPLOYMENT.md β”‚ β”œβ”€β”€ File structure guidelines.md β”‚ β”œβ”€β”€ Ideal Structure.md β”‚ β”œβ”€β”€ Implementation-Checklist.md β”‚ β”œβ”€β”€ Master-List-of-all-features.md β”‚ β”œβ”€β”€ PRD.md β”‚ β”œβ”€β”€ PRIVACY_POLICY.md β”‚ β”œβ”€β”€ SETUP.md β”‚ β”œβ”€β”€ Simple Pluggable Structure.md β”‚ β”œβ”€β”€ auth-roles.md β”‚ β”œβ”€β”€ functionality-features-phase1-2.md β”‚ β”œβ”€β”€ functionality-features-phase3.md β”‚ β”œβ”€β”€ functionality-features-phase4.md β”‚ β”œβ”€β”€ functionality-features-phase5.md β”‚ β”œβ”€β”€ functionality-features-phase6.md β”‚ β”œβ”€β”€ functionality-features-phase7.md β”‚ └── functionality-features-phase8.md β”œβ”€β”€ Project documentation β”‚ β”œβ”€β”€ Flow_VERIFICATION_CHECKLIST.md β”‚ β”œβ”€β”€ For dummies.md β”‚ β”œβ”€β”€ GAP_ANALYSIS.md β”‚ β”œβ”€β”€ IMPLEMENTATION_PLAN.md β”‚ β”œβ”€β”€ Implementation plan phase 8.md β”‚ β”œβ”€β”€ Skeleton_tests that need to be redone.md β”‚ β”œβ”€β”€ USER_TODO.md β”‚ β”œβ”€β”€ moving test.md β”‚ β”œβ”€β”€ new import paths.md β”‚ β”œβ”€β”€ next to do.md β”‚ β”œβ”€β”€ react19-compatibility.md β”‚ └── react19-nextjs15-upgrade.md β”œβ”€β”€ Responsive Design Guide.md β”œβ”€β”€ TestResultLatest.md β”œβ”€β”€ TestResultsPrevious.md β”œβ”€β”€ Testing documentation β”‚ β”œβ”€β”€ E2EAUTH_FIXPLAN.md β”‚ β”œβ”€β”€ MockComponent.example.test.tsx β”‚ β”œβ”€β”€ TESTING ISSUES-E2E.md β”‚ β”œβ”€β”€ TESTING.md β”‚ β”œβ”€β”€ TESTING_ISSUES-UnitTests.md β”‚ └── testing analysis.md └── e2e-failure-tracking.md β”œβ”€β”€ e2e β”œβ”€β”€ accessibility β”‚ └── a11y-features.e2e.test.ts β”œβ”€β”€ activity-log.e2e.test.ts β”œβ”€β”€ admin β”‚ β”œβ”€β”€ admin-session-management.e2e.test.ts β”‚ β”œβ”€β”€ audit-log.e2e.test.ts β”‚ β”œβ”€β”€ business-sso-admin-config.e2e.test.ts β”‚ β”œβ”€β”€ business-sso-status.e2e.test.ts β”‚ β”œβ”€β”€ dashboard.spec.ts β”‚ β”œβ”€β”€ login-debug.e2e.test.ts β”‚ β”œβ”€β”€ role-management.e2e.test.ts β”‚ └── security-policy.e2e.test.ts β”œβ”€β”€ auth β”‚ β”œβ”€β”€ mfa β”‚ β”‚ β”œβ”€β”€ backup-codes.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ mfa-email.spec.ts β”‚ β”‚ β”œβ”€β”€ mfa-management.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ sms-mfa.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ totp-setup.e2e.test.ts β”‚ β”‚ └── totp-verification.e2e.test.ts β”‚ β”œβ”€β”€ personal β”‚ β”‚ β”œβ”€β”€ account-deletion.test.ts β”‚ β”‚ β”œβ”€β”€ check-delete-button.test.ts β”‚ β”‚ β”œβ”€β”€ debug-settings.test.ts β”‚ β”‚ β”œβ”€β”€ email-verification.test.ts β”‚ β”‚ β”œβ”€β”€ login.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ logout.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ password-recovery.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ registration.spec.ts β”‚ β”‚ └── session-management.e2e.test.ts β”‚ └── sso β”‚ β”‚ β”œβ”€β”€ business-sso-user-login.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ personal-sso-login.spec.ts β”‚ β”‚ β”œβ”€β”€ sso-login-oauth.e2e.test.ts β”‚ β”‚ └── sso-signup-oauth.e2e.test.ts β”œβ”€β”€ company-data-export.e2e.test.ts β”œβ”€β”€ connected-accounts.e2e.test.ts β”œβ”€β”€ data-export.e2e.test.ts β”œβ”€β”€ data-retention.e2e.test.ts β”œβ”€β”€ debug β”‚ └── check-ui-elements.test.ts β”œβ”€β”€ domain-verification β”‚ └── domain-verification.spec.ts β”œβ”€β”€ edge-cases β”‚ └── incomplete-profile-handling.spec.ts β”œβ”€β”€ fixtures β”‚ β”œβ”€β”€ Avatar.png β”‚ β”œβ”€β”€ invalid-file.txt β”‚ └── test-avatar.png β”œβ”€β”€ i18n β”‚ └── internationalization.e2e.test.ts β”œβ”€β”€ onboarding β”‚ └── onboarding-flow.e2e.test.ts β”œβ”€β”€ profile β”‚ β”œβ”€β”€ business-profile.e2e.test.ts β”‚ β”œβ”€β”€ company-validation.e2e.test.ts β”‚ β”œβ”€β”€ notification-settings β”‚ β”‚ β”œβ”€β”€ notification-delivery.e2e.test.ts β”‚ β”‚ β”œβ”€β”€ notification-preferences.e2e.test.ts β”‚ β”‚ └── push-notification.e2e.test.ts β”‚ β”œβ”€β”€ update.e2e.test.ts β”‚ β”œβ”€β”€ user-journey.e2e.test.ts β”‚ └── verification.e2e.test.ts β”œβ”€β”€ role-management.spec.ts β”œβ”€β”€ smoke.spec.ts β”œβ”€β”€ subscription-and-licensing β”‚ β”œβ”€β”€ License β”‚ β”‚ β”œβ”€β”€ license-management.test.ts β”‚ β”‚ β”œβ”€β”€ license.test.ts β”‚ β”‚ └── team-seat-licensing.test.ts β”‚ β”œβ”€β”€ Payment β”‚ β”‚ β”œβ”€β”€ payment.test.ts β”‚ β”‚ └── paymentmethods.test.ts β”‚ β”œβ”€β”€ Subscription β”‚ β”‚ β”œβ”€β”€ feature-gating.test.ts β”‚ β”‚ β”œβ”€β”€ subsription.test.ts β”‚ β”‚ └── subsriptionflow.test.ts β”‚ └── payment-checkout-flow.e2e.test.ts β”œβ”€β”€ team-invite-flow.e2e.test.ts β”œβ”€β”€ team-management.e2e.test.ts └── utils β”‚ β”œβ”€β”€ auth-utils.ts β”‚ β”œβ”€β”€ auth.ts β”‚ β”œβ”€β”€ global-setup.ts β”‚ β”œβ”€β”€ i18n-setup.ts β”‚ └── user-setup.ts β”œβ”€β”€ eslint-report.json β”œβ”€β”€ generated └── prisma β”‚ β”œβ”€β”€ client.d.ts β”‚ β”œβ”€β”€ client.js β”‚ β”œβ”€β”€ default.d.ts β”‚ β”œβ”€β”€ default.js β”‚ β”œβ”€β”€ edge-esm.js β”‚ β”œβ”€β”€ edge.d.ts β”‚ β”œβ”€β”€ edge.js β”‚ β”œβ”€β”€ index-browser.d.ts β”‚ β”œβ”€β”€ index-browser.js β”‚ β”œβ”€β”€ index.d.ts β”‚ β”œβ”€β”€ index.js β”‚ β”œβ”€β”€ library.d.ts β”‚ β”œβ”€β”€ library.js β”‚ β”œβ”€β”€ package.json β”‚ β”œβ”€β”€ query_engine-windows.dll.node β”‚ β”œβ”€β”€ react-native.js β”‚ β”œβ”€β”€ runtime β”‚ β”œβ”€β”€ edge-esm.js β”‚ β”œβ”€β”€ edge.js β”‚ β”œβ”€β”€ index-browser.d.ts β”‚ β”œβ”€β”€ index-browser.js β”‚ β”œβ”€β”€ library.d.ts β”‚ β”œβ”€β”€ library.js β”‚ β”œβ”€β”€ react-native.js β”‚ └── wasm.js β”‚ β”œβ”€β”€ schema.prisma β”‚ β”œβ”€β”€ wasm.d.ts β”‚ └── wasm.js β”œβ”€β”€ i18next-test-result.json β”œβ”€β”€ migrate-to-vitest.js β”œβ”€β”€ next-env.d.ts β”œβ”€β”€ next.config.mjs β”œβ”€β”€ next.config.mjs.bak β”œβ”€β”€ package-lock.json β”œβ”€β”€ package-lock.json.bak β”œβ”€β”€ package.json β”œβ”€β”€ package.json.bak β”œβ”€β”€ playwright-report β”œβ”€β”€ data β”‚ └── ad5a0c51a7e14eeee8c015096cf3d25bcab42c77.png └── index.html β”œβ”€β”€ playwright.config.ts β”œβ”€β”€ postcss.config.js β”œβ”€β”€ prisma └── schema.prisma β”œβ”€β”€ public β”œβ”€β”€ assets β”‚ └── avatars β”‚ β”‚ └── placeholder.txt └── sw.js β”œβ”€β”€ scripts β”œβ”€β”€ check-gaps.js β”œβ”€β”€ cleanup-docs.js β”œβ”€β”€ copy-api-routes-2.ps1 β”œβ”€β”€ copy-api-routes-3.ps1 β”œβ”€β”€ copy-api-routes.ps1 β”œβ”€β”€ copy-auth-components.cjs β”œβ”€β”€ create-headless-auth-components.cjs β”œβ”€β”€ e2e_report.ps1 β”œβ”€β”€ example_prd.txt β”œβ”€β”€ find-failing-tests.ps1 β”œβ”€β”€ find-i18nerrors.ps1 β”œβ”€β”€ fix-useauth-imports.cjs β”œβ”€β”€ generate-test-skeletons.js β”œβ”€β”€ get-backend-port.js β”œβ”€β”€ kill-node.js β”œβ”€β”€ map-sso-functionality.mjs β”œβ”€β”€ migrate-audit-components.cjs β”œβ”€β”€ migrate-auth-components.cjs β”œβ”€β”€ migrate-auth-imports-enhanced.cjs β”œβ”€β”€ migrate-auth-imports.cjs β”œβ”€β”€ migrate-auth-imports.js β”œβ”€β”€ migrate-components.cjs β”œβ”€β”€ migrate-imports.js β”œβ”€β”€ prd.txt β”œβ”€β”€ report-obsolete-files.js β”œβ”€β”€ run-tests.js β”œβ”€β”€ runtest.js β”œβ”€β”€ save-last-playwright-output.ps1 β”œβ”€β”€ test-migrate-audit.cjs └── update-test-results.js β”œβ”€β”€ src β”œβ”€β”€ adapters β”‚ β”œβ”€β”€ tests β”‚ β”‚ └── mocks β”‚ β”‚ β”‚ └── supabase.ts β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ factory.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ β”œβ”€β”€ middleware.ts β”‚ β”‚ └── supabase-auth-provider.ts β”‚ β”œβ”€β”€ index.ts β”‚ β”œβ”€β”€ permission β”‚ β”‚ β”œβ”€β”€ factory.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── supabase-permission-provider.ts β”‚ β”œβ”€β”€ team β”‚ β”‚ β”œβ”€β”€ factory.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── supabase-team-provider.ts β”‚ └── user β”‚ β”‚ β”œβ”€β”€ factory.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── supabase-user-provider.ts β”œβ”€β”€ components β”‚ β”œβ”€β”€ account β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”œβ”€β”€ AccountSwitcher.tsx β”‚ β”‚ β”œβ”€β”€ DeleteAccountDialog.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ └── DeleteAccountDialog.test.tsx β”‚ β”œβ”€β”€ admin β”‚ β”‚ β”œβ”€β”€ AdminDashboard.tsx β”‚ β”‚ β”œβ”€β”€ AdminUsers.tsx β”‚ β”‚ β”œβ”€β”€ RetentionDashboard.tsx β”‚ β”‚ β”œβ”€β”€ RoleManagementPanel.tsx β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ AdminDashboard.test.tsx β”‚ β”‚ β”‚ └── RoleManagementPanel.test.tsx β”‚ β”‚ └── audit-logs β”‚ β”‚ β”‚ └── AdminAuditLogs.tsx β”‚ β”œβ”€β”€ audit β”‚ β”‚ └── tests β”‚ β”‚ β”‚ └── AuditLogViewer.test.tsx β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ AccountLockout.tsx β”‚ β”‚ β”œβ”€β”€ Auth.js β”‚ β”‚ β”œβ”€β”€ BackupCodesDisplay.tsx β”‚ β”‚ β”œβ”€β”€ BusinessSSOAuth.tsx β”‚ β”‚ β”œβ”€β”€ BusinessSSOSetup.tsx β”‚ β”‚ β”œβ”€β”€ ChangePasswordForm.tsx β”‚ β”‚ β”œβ”€β”€ DomainBasedOrgMatching.tsx β”‚ β”‚ β”œβ”€β”€ EmailVerification.tsx β”‚ β”‚ β”œβ”€β”€ ForgotPasswordForm.tsx β”‚ β”‚ β”œβ”€β”€ IDPConfiguration.tsx β”‚ β”‚ β”œβ”€β”€ LoginForm.tsx β”‚ β”‚ β”œβ”€β”€ LoginFormReact19.tsx β”‚ β”‚ β”œβ”€β”€ MFAManagementSection.tsx β”‚ β”‚ β”œβ”€β”€ MFAVerificationForm.tsx β”‚ β”‚ β”œβ”€β”€ OAuthButtons.tsx β”‚ β”‚ β”œβ”€β”€ OAuthCallback.tsx β”‚ β”‚ β”œβ”€β”€ OrganizationSSO.tsx β”‚ β”‚ β”œβ”€β”€ PasswordRequirements.tsx β”‚ β”‚ β”œβ”€β”€ PasswordlessLogin.tsx β”‚ β”‚ β”œβ”€β”€ ProtectedRoute.tsx β”‚ β”‚ β”œβ”€β”€ ProviderManagementPanel.tsx β”‚ β”‚ β”œβ”€β”€ RegistrationForm.tsx β”‚ β”‚ β”œβ”€β”€ RememberMeToggle.tsx β”‚ β”‚ β”œβ”€β”€ ResetPasswordForm.tsx β”‚ β”‚ β”œβ”€β”€ SocialLoginCallbacks.tsx β”‚ β”‚ β”œβ”€β”€ TwoFactorSetup.tsx β”‚ β”‚ β”œβ”€β”€ mocks β”‚ β”‚ β”‚ └── LoginForm.tsx β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ BusinessSSOSetup.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DomainBasedOrgMatching.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ IDPConfiguration.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ LoginForm.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MFAManagementSection.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MinimalTextareaForm.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OrganizationSSO.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProtectedRoute.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RegistrationForm.integration.test.tsx β”‚ β”‚ β”‚ └── UpgradeToBusinessFlow.test.tsx β”‚ β”‚ └── withRole.tsx β”‚ β”œβ”€β”€ common β”‚ β”‚ β”œβ”€β”€ DataTable.tsx β”‚ β”‚ β”œβ”€β”€ ErrorBoundary.tsx β”‚ β”‚ β”œβ”€β”€ FeedbackForm.tsx β”‚ β”‚ β”œβ”€β”€ FileManager.tsx β”‚ β”‚ β”œβ”€β”€ FormWithRecovery.tsx β”‚ β”‚ β”œβ”€β”€ NotificationCenter.tsx β”‚ β”‚ β”œβ”€β”€ PaletteThemeSwitcher.tsx β”‚ β”‚ β”œβ”€β”€ RateLimitFeedback.tsx β”‚ β”‚ β”œβ”€β”€ ReportingDashboard.tsx β”‚ β”‚ β”œβ”€β”€ ResponsiveExample.tsx β”‚ β”‚ β”œβ”€β”€ SearchResults.tsx β”‚ β”‚ β”œβ”€β”€ ThemeSettings.tsx β”‚ β”‚ β”œβ”€β”€ ThemeSwitcher.tsx β”‚ β”‚ └── UserPreferences.tsx β”‚ β”œβ”€β”€ dashboard β”‚ β”‚ └── Dashboard.tsx β”‚ β”œβ”€β”€ forms β”‚ β”‚ └── tests β”‚ β”‚ β”‚ └── BusinessFormErrorHandling.test.tsx β”‚ β”œβ”€β”€ gdpr β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”œβ”€β”€ ConsentManagement.tsx β”‚ β”‚ └── DataExport.tsx β”‚ β”œβ”€β”€ layout β”‚ β”‚ β”œβ”€β”€ Features.tsx β”‚ β”‚ β”œβ”€β”€ Footer.tsx β”‚ β”‚ β”œβ”€β”€ Header.tsx β”‚ β”‚ β”œβ”€β”€ Hero.tsx β”‚ β”‚ β”œβ”€β”€ Layout.tsx β”‚ β”‚ └── UserLayout.tsx β”‚ β”œβ”€β”€ onboarding β”‚ β”‚ β”œβ”€β”€ FeatureTour.tsx β”‚ β”‚ β”œβ”€β”€ ProgressTracker.tsx β”‚ β”‚ β”œβ”€β”€ SetupWizard.tsx β”‚ β”‚ └── WelcomeScreen.tsx β”‚ β”œβ”€β”€ payment β”‚ β”‚ β”œβ”€β”€ InvoiceGenerator.tsx β”‚ β”‚ β”œβ”€β”€ PaymentForm.tsx β”‚ β”‚ β”œβ”€β”€ PaymentHistory.tsx β”‚ β”‚ β”œβ”€β”€ PaymentMethodList.tsx β”‚ β”‚ └── SubscriptionManager.tsx β”‚ β”œβ”€β”€ profile β”‚ β”‚ β”œβ”€β”€ ActivityLog.tsx β”‚ β”‚ β”œβ”€β”€ AvatarUpload.tsx β”‚ β”‚ β”œβ”€β”€ CompanyDataExport.tsx β”‚ β”‚ β”œβ”€β”€ CompanyLogoUpload.tsx β”‚ β”‚ β”œβ”€β”€ CorporateProfileSection.tsx β”‚ β”‚ β”œβ”€β”€ DataExport.tsx β”‚ β”‚ β”œβ”€β”€ NotificationPreferences.tsx β”‚ β”‚ β”œβ”€β”€ PrivacySettings.tsx β”‚ β”‚ β”œβ”€β”€ Profile.jsx β”‚ β”‚ β”œβ”€β”€ ProfileEditor.tsx β”‚ β”‚ β”œβ”€β”€ ProfileForm.tsx β”‚ β”‚ β”œβ”€β”€ ProfileTypeConversion.tsx β”‚ β”‚ β”œβ”€β”€ ProfileVerification.tsx β”‚ β”‚ β”œβ”€β”€ SecuritySettings.tsx β”‚ β”‚ β”œβ”€β”€ SessionManagement.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ β”œβ”€β”€ ActivityLog.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ AvatarUpload.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CompanyDataExport.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CompanyLogoUpload.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CorporateProfileSection.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DataExport.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ NotificationPreferences.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PrivacySettings.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Profile.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfileEditor.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfilePrivacySettings.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfileTypeConversion.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfileVerification.test.tsx β”‚ β”‚ β”‚ └── SessionManagement.test.tsx β”‚ β”œβ”€β”€ registration β”‚ β”‚ β”œβ”€β”€ MultiStepRegistration.tsx β”‚ β”‚ └── ProfileCompletion.tsx β”‚ β”œβ”€β”€ search β”‚ β”‚ └── SearchPage.tsx β”‚ β”œβ”€β”€ session β”‚ β”‚ β”œβ”€β”€ SessionPolicyEnforcer.tsx β”‚ β”‚ └── SessionTimeout.tsx β”‚ β”œβ”€β”€ settings β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”œβ”€β”€ DataExport.tsx β”‚ β”‚ β”œβ”€β”€ DataImport.tsx β”‚ β”‚ β”œβ”€β”€ LanguageSelector.tsx β”‚ β”‚ └── SettingsPanel.tsx β”‚ β”œβ”€β”€ shared β”‚ β”‚ β”œβ”€β”€ ConnectedAccounts.tsx β”‚ β”‚ └── NotificationPreferences.tsx β”‚ β”œβ”€β”€ sharing β”‚ β”‚ └── SocialSharingComponent.tsx β”‚ β”œβ”€β”€ subscription β”‚ β”‚ β”œβ”€β”€ SubscriptionBadge.tsx β”‚ β”‚ β”œβ”€β”€ SubscriptionPlans.tsx β”‚ β”‚ └── withSubscription.tsx β”‚ β”œβ”€β”€ team β”‚ β”‚ β”œβ”€β”€ InviteMemberForm.tsx β”‚ β”‚ β”œβ”€β”€ InviteMemberModal.tsx β”‚ β”‚ β”œβ”€β”€ RemoveMemberDialog.tsx β”‚ β”‚ β”œβ”€β”€ TeamInviteDialog.tsx β”‚ β”‚ β”œβ”€β”€ TeamManagement.tsx β”‚ β”‚ β”œβ”€β”€ TeamMembersList.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ β”œβ”€β”€ InviteMemberForm.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RemoveMemberDialog.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ TeamManagement.test.tsx β”‚ β”‚ β”‚ └── TeamMembersList.test.tsx β”‚ β”œβ”€β”€ theme β”‚ β”‚ └── theme-provider.tsx β”‚ └── ui β”‚ β”‚ β”œβ”€β”€ FileTypeIcon.tsx β”‚ β”‚ β”œβ”€β”€ PaletteProvider.tsx β”‚ β”‚ β”œβ”€β”€ accordion.tsx β”‚ β”‚ β”œβ”€β”€ alert-dialog.tsx β”‚ β”‚ β”œβ”€β”€ alert.tsx β”‚ β”‚ β”œβ”€β”€ aspect-ratio.tsx β”‚ β”‚ β”œβ”€β”€ avatar.tsx β”‚ β”‚ β”œβ”€β”€ badge.tsx β”‚ β”‚ β”œβ”€β”€ breadcrumb.tsx β”‚ β”‚ β”œβ”€β”€ button.tsx β”‚ β”‚ β”œβ”€β”€ calendar.tsx β”‚ β”‚ β”œβ”€β”€ card.tsx β”‚ β”‚ β”œβ”€β”€ carousel.tsx β”‚ β”‚ β”œβ”€β”€ chart.tsx β”‚ β”‚ β”œβ”€β”€ checkbox.tsx β”‚ β”‚ β”œβ”€β”€ collapsible.tsx β”‚ β”‚ β”œβ”€β”€ command.tsx β”‚ β”‚ β”œβ”€β”€ context-menu.tsx β”‚ β”‚ β”œβ”€β”€ copy-button.tsx β”‚ β”‚ β”œβ”€β”€ dialog.tsx β”‚ β”‚ β”œβ”€β”€ drawer.tsx β”‚ β”‚ β”œβ”€β”€ dropdown-menu.tsx β”‚ β”‚ β”œβ”€β”€ error-boundary.tsx β”‚ β”‚ β”œβ”€β”€ form-responsive.tsx β”‚ β”‚ β”œβ”€β”€ form-with-recovery.tsx β”‚ β”‚ β”œβ”€β”€ form.tsx β”‚ β”‚ β”œβ”€β”€ hover-card.tsx β”‚ β”‚ β”œβ”€β”€ icons-test-page.tsx β”‚ β”‚ β”œβ”€β”€ input-otp.tsx β”‚ β”‚ β”œβ”€β”€ input.tsx β”‚ β”‚ β”œβ”€β”€ label.tsx β”‚ β”‚ β”œβ”€β”€ menubar.tsx β”‚ β”‚ β”œβ”€β”€ navigation-menu.tsx β”‚ β”‚ β”œβ”€β”€ pagination.tsx β”‚ β”‚ β”œβ”€β”€ popover.tsx β”‚ β”‚ β”œβ”€β”€ progress.tsx β”‚ β”‚ β”œβ”€β”€ radio-group.tsx β”‚ β”‚ β”œβ”€β”€ resizable.tsx β”‚ β”‚ β”œβ”€β”€ scroll-area.tsx β”‚ β”‚ β”œβ”€β”€ select.tsx β”‚ β”‚ β”œβ”€β”€ separator.tsx β”‚ β”‚ β”œβ”€β”€ sheet.tsx β”‚ β”‚ β”œβ”€β”€ skeleton.tsx β”‚ β”‚ β”œβ”€β”€ slider.tsx β”‚ β”‚ β”œβ”€β”€ sonner.tsx β”‚ β”‚ β”œβ”€β”€ spinner.tsx β”‚ β”‚ β”œβ”€β”€ switch.tsx β”‚ β”‚ β”œβ”€β”€ table.tsx β”‚ β”‚ β”œβ”€β”€ tabs.tsx β”‚ β”‚ β”œβ”€β”€ textarea.tsx β”‚ β”‚ β”œβ”€β”€ theme-provider.tsx β”‚ β”‚ β”œβ”€β”€ toast.tsx β”‚ β”‚ β”œβ”€β”€ toaster.tsx β”‚ β”‚ β”œβ”€β”€ toggle-group.tsx β”‚ β”‚ β”œβ”€β”€ toggle.tsx β”‚ β”‚ β”œβ”€β”€ tooltip.tsx β”‚ β”‚ └── use-toast.ts β”œβ”€β”€ core β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ business-policies.test.tsx β”‚ β”‚ β”‚ └── mfa.test.ts β”‚ β”‚ β”œβ”€β”€ events.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── models.ts β”‚ β”œβ”€β”€ config β”‚ β”‚ β”œβ”€β”€ AppInitializer.tsx β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ └── interfaces.ts β”‚ β”œβ”€β”€ initialization β”‚ β”‚ β”œβ”€β”€ app-init.ts β”‚ β”‚ └── config.ts β”‚ β”œβ”€β”€ notification β”‚ β”‚ β”œβ”€β”€ events.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── models.ts β”‚ β”œβ”€β”€ permission β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── permissions.test.ts β”‚ β”‚ β”œβ”€β”€ events.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── models.ts β”‚ β”œβ”€β”€ team β”‚ β”‚ β”œβ”€β”€ events.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── models.ts β”‚ └── user β”‚ β”‚ β”œβ”€β”€ events.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ interfaces.ts β”‚ β”‚ └── models.ts β”œβ”€β”€ hooks β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”œβ”€β”€ useApiKeys.test.ts β”‚ β”‚ β”œβ”€β”€ usePayment.test.ts β”‚ β”‚ β”œβ”€β”€ usePermission.test.tsx β”‚ β”‚ β”œβ”€β”€ useSubscription.test.ts β”‚ β”‚ └── useTeamInvite.test.tsx β”‚ β”œβ”€β”€ use-toast.ts β”‚ β”œβ”€β”€ useAccountSettings.ts β”‚ β”œβ”€β”€ useApiKeys.ts β”‚ β”œβ”€β”€ useAuth.ts β”‚ β”œβ”€β”€ useDebounce.ts β”‚ β”œβ”€β”€ useDebounceEffect.ts β”‚ β”œβ”€β”€ useDeleteAccount.ts β”‚ β”œβ”€β”€ useMFA.ts β”‚ β”œβ”€β”€ useOnboarding.ts β”‚ β”œβ”€β”€ useOrganizationSession.ts β”‚ β”œβ”€β”€ usePasswordReset.ts β”‚ β”œβ”€β”€ usePayment.ts β”‚ β”œβ”€β”€ usePermission.tsx β”‚ β”œβ”€β”€ usePermissions.ts β”‚ β”œβ”€β”€ usePlatformStyles.ts β”‚ β”œβ”€β”€ useProfile.ts β”‚ β”œβ”€β”€ useRegistration.ts β”‚ β”œβ”€β”€ useRoles.ts β”‚ β”œβ”€β”€ useSubscription.ts β”‚ β”œβ”€β”€ useTeamInvitations.ts β”‚ β”œβ”€β”€ useTeamInvite.ts β”‚ β”œβ”€β”€ useTeamMembers.ts β”‚ β”œβ”€β”€ useTeams.ts β”‚ β”œβ”€β”€ useToast.ts β”‚ β”œβ”€β”€ useUserProfile.ts β”‚ └── useWebhooks.ts β”œβ”€β”€ lib β”‚ β”œβ”€β”€ tests β”‚ β”‚ └── config.test.js β”‚ β”œβ”€β”€ accountSwitcherApi.ts β”‚ β”œβ”€β”€ api-keys β”‚ β”‚ β”œβ”€β”€ api-key-auth.ts β”‚ β”‚ └── api-key-utils.ts β”‚ β”œβ”€β”€ api β”‚ β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”‚ └── factory.ts β”‚ β”‚ β”œβ”€β”€ axios.ts β”‚ β”‚ └── router.tsx β”‚ β”œβ”€β”€ audit β”‚ β”‚ └── auditLogger.ts β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ UserManagementClientBoundary.tsx β”‚ β”‚ β”œβ”€β”€ UserManagementProvider.tsx β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ UserManagementProvider.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ mfa β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ email-verification.test.tsx β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ email.test.tsx β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ mfa.test.ts β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ setup.test.tsx β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ sms-verification.test.tsx β”‚ β”‚ β”‚ β”‚ └── verification.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ session β”‚ β”‚ β”‚ β”‚ └── business-policies.test.tsx β”‚ β”‚ β”‚ └── sso β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ business-sso.test.tsx β”‚ β”‚ β”‚ β”‚ └── personal-sso.test.tsx β”‚ β”‚ β”œβ”€β”€ authConfig.ts β”‚ β”‚ β”œβ”€β”€ config.tsx β”‚ β”‚ β”œβ”€β”€ domainMatcher.ts β”‚ β”‚ β”œβ”€β”€ getUser.ts β”‚ β”‚ β”œβ”€β”€ hasPermission.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ session.ts β”‚ β”‚ └── utils.ts β”‚ β”œβ”€β”€ config.ts β”‚ β”œβ”€β”€ constants β”‚ β”‚ β”œβ”€β”€ countries.ts β”‚ β”‚ β”œβ”€β”€ oauthProviders.ts β”‚ β”‚ └── themeConstants.ts β”‚ β”œβ”€β”€ context β”‚ β”‚ └── OrganizationContext.tsx β”‚ β”œβ”€β”€ database β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ database.test.tsx β”‚ β”‚ β”‚ └── supabase.test.tsx β”‚ β”‚ β”œβ”€β”€ factory.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ migrations β”‚ β”‚ β”‚ β”œβ”€β”€ 20240318000000_create_audit_logs.ts β”‚ β”‚ β”‚ └── 20240501000000_create_retention_tables.ts β”‚ β”‚ β”œβ”€β”€ prisma.ts β”‚ β”‚ β”œβ”€β”€ providers β”‚ β”‚ β”‚ └── supabase.ts β”‚ β”‚ β”œβ”€β”€ schemas β”‚ β”‚ β”‚ └── retention.ts β”‚ β”‚ β”œβ”€β”€ supabase.ts β”‚ β”‚ └── types.ts β”‚ β”œβ”€β”€ email β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── sendEmail.test.ts β”‚ β”‚ β”œβ”€β”€ sendEmail.ts β”‚ β”‚ β”œβ”€β”€ sendViaSendGrid.ts β”‚ β”‚ β”œβ”€β”€ teamInvite.ts β”‚ β”‚ └── types.ts β”‚ β”œβ”€β”€ exports β”‚ β”‚ β”œβ”€β”€ company-export.service.ts β”‚ β”‚ β”œβ”€β”€ export.service.ts β”‚ β”‚ └── types.ts β”‚ β”œβ”€β”€ hooks β”‚ β”‚ β”œβ”€β”€ use-toast.tsx β”‚ β”‚ β”œβ”€β”€ useOrganization.ts β”‚ β”‚ └── useProviderManagement.ts β”‚ β”œβ”€β”€ i18n β”‚ β”‚ β”œβ”€β”€ config.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ └── locales β”‚ β”‚ β”‚ β”œβ”€β”€ en.json β”‚ β”‚ β”‚ β”œβ”€β”€ en.ts β”‚ β”‚ β”‚ β”œβ”€β”€ es.json β”‚ β”‚ β”‚ └── fr.json β”‚ β”œβ”€β”€ notifications β”‚ β”‚ └── sendCompanyNotification.ts β”‚ β”œβ”€β”€ payments β”‚ β”‚ └── stripe.ts β”‚ β”œβ”€β”€ profile β”‚ β”‚ └── verificationService.ts β”‚ β”œβ”€β”€ rbac β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── roleService.test.ts β”‚ β”‚ β”œβ”€β”€ roleService.ts β”‚ β”‚ └── roles.ts β”‚ β”œβ”€β”€ security β”‚ β”‚ β”œβ”€β”€ password-validation.ts β”‚ β”‚ └── security-policy.service.ts β”‚ β”œβ”€β”€ services β”‚ β”‚ β”œβ”€β”€ notification-preferences.service.ts β”‚ β”‚ β”œβ”€β”€ notification-queue.service.ts β”‚ β”‚ β”œβ”€β”€ notification.service.ts β”‚ β”‚ β”œβ”€β”€ push-notification.service.ts β”‚ β”‚ └── retention.service.ts β”‚ β”œβ”€β”€ sms β”‚ β”‚ └── sendSms.ts β”‚ β”œβ”€β”€ stores β”‚ β”‚ β”œβ”€β”€ 2fa.store.ts β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ auth.store.direct.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ auth.store.minimal.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ auth.store.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ connected-accounts.store.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ preferences.store.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ subscription.store.test.ts β”‚ β”‚ β”‚ └── user.store.test.ts β”‚ β”‚ β”œβ”€β”€ auth.store.ts β”‚ β”‚ β”œβ”€β”€ companyProfileStore.ts β”‚ β”‚ β”œβ”€β”€ connected-accounts.store.ts β”‚ β”‚ β”œβ”€β”€ oauth.store.ts β”‚ β”‚ β”œβ”€β”€ preferences.store.ts β”‚ β”‚ β”œβ”€β”€ profile.store.ts β”‚ β”‚ β”œβ”€β”€ rbac.store.ts β”‚ β”‚ β”œβ”€β”€ session.store.ts β”‚ β”‚ β”œβ”€β”€ subscription.store.ts β”‚ β”‚ └── user.store.ts β”‚ β”œβ”€β”€ supabase.ts β”‚ β”œβ”€β”€ utils.ts β”‚ β”œβ”€β”€ utils β”‚ β”‚ β”œβ”€β”€ analytics.ts β”‚ β”‚ β”œβ”€β”€ csrf.ts β”‚ β”‚ β”œβ”€β”€ data-export.ts β”‚ β”‚ β”œβ”€β”€ file-upload.ts β”‚ β”‚ β”œβ”€β”€ getUserHomePage.ts β”‚ β”‚ β”œβ”€β”€ index.ts β”‚ β”‚ β”œβ”€β”€ responsive.ts β”‚ β”‚ β”œβ”€β”€ security.ts β”‚ β”‚ └── token.ts β”‚ └── webhooks β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ └── webhook-sender.test.ts β”‚ β”‚ β”œβ”€β”€ triggerWebhook.ts β”‚ β”‚ └── webhook-sender.ts β”œβ”€β”€ middleware β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”œβ”€β”€ audit-log.test.ts β”‚ β”‚ β”œβ”€β”€ auth.test.js β”‚ β”‚ β”œβ”€β”€ csrf.test.ts β”‚ β”‚ β”œβ”€β”€ index.test.ts β”‚ β”‚ β”œβ”€β”€ permissions.test.ts β”‚ β”‚ β”œβ”€β”€ rate-limit.test.ts β”‚ β”‚ └── security-headers.test.ts β”‚ β”œβ”€β”€ audit-log.ts β”‚ β”œβ”€β”€ auth.js β”‚ β”œβ”€β”€ cors.ts β”‚ β”œβ”€β”€ csrf.ts β”‚ β”œβ”€β”€ export-rate-limit.ts β”‚ β”œβ”€β”€ index.ts β”‚ β”œβ”€β”€ permissions.ts β”‚ β”œβ”€β”€ rate-limit.ts β”‚ β”œβ”€β”€ security-headers.ts β”‚ β”œβ”€β”€ with-auth-rate-limit.ts β”‚ └── with-security.ts β”œβ”€β”€ services β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ auth.store.test.ts β”‚ β”‚ β”‚ β”œβ”€β”€ business-sso.test.tsx β”‚ β”‚ β”‚ └── mocks β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ 2fa.store.mock.ts β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ auth.store.mock.ts β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ oauth.store.mock.ts β”‚ β”‚ β”‚ β”‚ └── session.store.mock.ts β”‚ β”‚ β”œβ”€β”€ default-auth.service.ts β”‚ β”‚ └── index.ts β”‚ β”œβ”€β”€ notification β”‚ β”‚ β”œβ”€β”€ default-notification-service.ts β”‚ β”‚ β”œβ”€β”€ default-notification.handler.ts β”‚ β”‚ β”œβ”€β”€ default-notification.service.ts β”‚ β”‚ └── index.ts β”‚ β”œβ”€β”€ permission β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ └── mocks β”‚ β”‚ β”‚ β”‚ └── rbac.store.mock.ts β”‚ β”‚ β”œβ”€β”€ default-permission.service.ts β”‚ β”‚ └── index.ts β”‚ β”œβ”€β”€ team β”‚ β”‚ β”œβ”€β”€ default-team.service.ts β”‚ β”‚ └── index.ts β”‚ └── user β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”œβ”€β”€ mocks β”‚ β”‚ β”‚ β”œβ”€β”€ companyProfileStore.mock.ts β”‚ β”‚ β”‚ β”œβ”€β”€ connected-accounts.store.mock.ts β”‚ β”‚ β”‚ β”œβ”€β”€ preferences.store.mock.ts β”‚ β”‚ β”‚ β”œβ”€β”€ profile.store.mock.ts β”‚ β”‚ β”‚ β”œβ”€β”€ subscription.store.mock.ts β”‚ β”‚ β”‚ └── user.store.mock.ts β”‚ β”‚ └── user.store.test.ts β”‚ β”‚ β”œβ”€β”€ default-user.service.ts β”‚ β”‚ └── index.ts β”œβ”€β”€ stores β”‚ └── auth.store.ts β”œβ”€β”€ tests β”‚ β”œβ”€β”€ i18nTestSetup.ts β”‚ β”œβ”€β”€ integration β”‚ β”‚ β”œβ”€β”€ account-settings-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ account-switching-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ admin-users-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ api-error-messages.test.tsx β”‚ β”‚ β”œβ”€β”€ backup.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ collaboration-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ connected-accounts.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ dashboard-view-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ data-management-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ empty-states.test.tsx β”‚ β”‚ β”œβ”€β”€ error-recovery-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ export-import-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ feedback-submission-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ file-upload-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ form-validation-errors-isolated.test.tsx β”‚ β”‚ β”œβ”€β”€ form-validation-errors.test.tsx β”‚ β”‚ β”œβ”€β”€ minimal.smoke.test.tsx β”‚ β”‚ β”œβ”€β”€ notification-delivery.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ notification-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ notification-preferences.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ oauth-buttons.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ organization-security-policy.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ password-reset-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ search-filter-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ session-management.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ social-sharing-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ sso-mfa-error-handling.integration.test.tsx β”‚ β”‚ β”œβ”€β”€ theme-settings-flow.test.tsx β”‚ β”‚ β”œβ”€β”€ user-auth-flow.test.tsx β”‚ β”‚ └── user-preferences-flow.test.tsx β”‚ β”œβ”€β”€ mocks β”‚ β”‚ β”œβ”€β”€ 2fa.store.mock.ts β”‚ β”‚ β”œβ”€β”€ accountSwitcherApi.mock.ts β”‚ β”‚ β”œβ”€β”€ auth.store.mock.ts β”‚ β”‚ β”œβ”€β”€ browser.ts β”‚ β”‚ β”œβ”€β”€ companyProfileStore.mock.ts β”‚ β”‚ β”œβ”€β”€ connected-accounts.store.mock.ts β”‚ β”‚ β”œβ”€β”€ debug-auth.tsx β”‚ β”‚ β”œβ”€β”€ oauth.store.mock.ts β”‚ β”‚ β”œβ”€β”€ preferences.store.mock.ts β”‚ β”‚ β”œβ”€β”€ profile.store.mock.ts β”‚ β”‚ β”œβ”€β”€ rbac.store.mock.ts β”‚ β”‚ β”œβ”€β”€ redis.tsx β”‚ β”‚ β”œβ”€β”€ session.store.mock.ts β”‚ β”‚ β”œβ”€β”€ subscription.store.mock.ts β”‚ β”‚ β”œβ”€β”€ supabase spies.ts β”‚ β”‚ β”œβ”€β”€ supabase.ts β”‚ β”‚ β”œβ”€β”€ supabase.ts.bak β”‚ β”‚ β”œβ”€β”€ test-mocks.ts β”‚ β”‚ └── user.store.mock.ts β”‚ β”œβ”€β”€ setup.ts β”‚ β”œβ”€β”€ setup.tsx β”‚ β”œβ”€β”€ smoke β”‚ β”‚ β”œβ”€β”€ app.smoke.test.tsx β”‚ β”‚ β”œβ”€β”€ login.smoke.test.tsx β”‚ β”‚ β”œβ”€β”€ profile.smoke.test.tsx β”‚ β”‚ └── registration.smoke.test.tsx β”‚ β”œβ”€β”€ test-utils.tsx β”‚ β”œβ”€β”€ testing-library.d.ts β”‚ β”œβ”€β”€ ui β”‚ β”‚ └── DuplicateUIElements.test.tsx β”‚ β”œβ”€β”€ utils β”‚ β”‚ β”œβ”€β”€ accountSwitcherApi-mock.ts β”‚ β”‚ β”œβ”€β”€ api-testing-utils.ts β”‚ β”‚ β”œβ”€β”€ browser-mock.ts β”‚ β”‚ β”œβ”€β”€ component-testing-utils.ts β”‚ β”‚ β”œβ”€β”€ debug-auth.tsx β”‚ β”‚ β”œβ”€β”€ environment-setup.ts β”‚ β”‚ β”œβ”€β”€ hook-testing-utils.ts β”‚ β”‚ β”œβ”€β”€ integration-testing-utils.ts β”‚ β”‚ β”œβ”€β”€ redis-mock.tsx β”‚ β”‚ β”œβ”€β”€ store-testing-utils.ts β”‚ β”‚ β”œβ”€β”€ supabase-spies.ts β”‚ β”‚ β”œβ”€β”€ test-mocks.ts β”‚ β”‚ β”œβ”€β”€ test-utils.tsx β”‚ β”‚ β”œβ”€β”€ testing-utils.ts β”‚ β”‚ └── zustand-test-helpers.ts β”‚ β”œβ”€β”€ vitest.d.ts β”‚ └── zustand-test-helpers.ts β”œβ”€β”€ types β”‚ β”œβ”€β”€ 2fa.ts β”‚ β”œβ”€β”€ auth.ts β”‚ β”œβ”€β”€ company.ts β”‚ β”œβ”€β”€ connected-accounts.ts β”‚ β”œβ”€β”€ database.ts β”‚ β”œβ”€β”€ errors.ts β”‚ β”œβ”€β”€ feedback.ts β”‚ β”œβ”€β”€ index.ts β”‚ β”œβ”€β”€ jest-types.ts β”‚ β”œβ”€β”€ lru-cache.d.ts β”‚ β”œβ”€β”€ oauth.ts β”‚ β”œβ”€β”€ organizations.ts β”‚ β”œβ”€β”€ platform.ts β”‚ β”œβ”€β”€ profile.ts β”‚ β”œβ”€β”€ rbac.ts β”‚ β”œβ”€β”€ react19.d.ts β”‚ β”œβ”€β”€ subscription.ts β”‚ β”œβ”€β”€ user-type.ts β”‚ └── user.ts β”œβ”€β”€ ui β”‚ β”œβ”€β”€ headless β”‚ β”‚ β”œβ”€β”€ account β”‚ β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ AccountSwitcher.tsx β”‚ β”‚ β”‚ └── DeleteAccountDialog.tsx β”‚ β”‚ β”œβ”€β”€ admin β”‚ β”‚ β”‚ β”œβ”€β”€ AdminDashboard.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ AdminUsers.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RetentionDashboard.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RoleManagementPanel.tsx β”‚ β”‚ β”‚ └── audit-logs β”‚ β”‚ β”‚ β”‚ └── AdminAuditLogs.tsx β”‚ β”‚ β”œβ”€β”€ audit β”‚ β”‚ β”‚ └── AuditLogViewer.tsx β”‚ β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”‚ β”œβ”€β”€ AccountLockout.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Auth.js β”‚ β”‚ β”‚ β”œβ”€β”€ BackupCodesDisplay.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ BusinessSSOAuth.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ BusinessSSOSetup.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ChangePasswordForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DomainBasedOrgMatching.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ EmailVerification.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ForgotPasswordForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ IDPConfiguration.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ LoginForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ LoginFormReact19.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MFAManagementSection.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MFASetup.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MFAVerificationForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OAuthButtons.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OAuthCallback.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OrganizationSSO.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PasswordRequirements.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PasswordResetForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PasswordlessLogin.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProtectedRoute.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProviderManagementPanel.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RegistrationForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RememberMeToggle.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ResetPasswordForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ SocialLoginCallbacks.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ TwoFactorSetup.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€ login-form.test.tsx β”‚ β”‚ β”‚ β”‚ └── registration-form.test.tsx β”‚ β”‚ β”‚ └── withRole.tsx β”‚ β”‚ β”œβ”€β”€ common β”‚ β”‚ β”‚ β”œβ”€β”€ DataTable.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ErrorBoundary.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ FeedbackForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ FileManager.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ FormWithRecovery.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ NotificationCenter.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PaletteThemeSwitcher.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RateLimitFeedback.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ReportingDashboard.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ResponsiveExample.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ SearchResults.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ThemeSettings.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ThemeSwitcher.tsx β”‚ β”‚ β”‚ └── UserPreferences.tsx β”‚ β”‚ β”œβ”€β”€ company β”‚ β”‚ β”‚ β”œβ”€β”€ AddressCard.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ AddressDialog.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CompanyProfileForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DomainManagement.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DomainVerification.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ NotificationPreferences.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OrganizationSessionManager.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ SingleDomainVerification.tsx β”‚ β”‚ β”‚ └── VerificationStatus.tsx β”‚ β”‚ β”œβ”€β”€ dashboard β”‚ β”‚ β”‚ └── Dashboard.tsx β”‚ β”‚ β”œβ”€β”€ gdpr β”‚ β”‚ β”‚ └── ConsentManagement.tsx β”‚ β”‚ β”œβ”€β”€ layout β”‚ β”‚ β”‚ β”œβ”€β”€ Features.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Footer.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Header.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Hero.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Layout.tsx β”‚ β”‚ β”‚ └── UserLayout.tsx β”‚ β”‚ β”œβ”€β”€ payment β”‚ β”‚ β”‚ β”œβ”€β”€ InvoiceGenerator.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PaymentForm.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PaymentHistory.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PaymentMethodList.tsx β”‚ β”‚ β”‚ └── SubscriptionManager.tsx β”‚ β”‚ β”œβ”€β”€ permission β”‚ β”‚ β”‚ β”œβ”€β”€ PermissionEditor.tsx β”‚ β”‚ β”‚ └── RoleManager.tsx β”‚ β”‚ β”œβ”€β”€ profile β”‚ β”‚ β”‚ β”œβ”€β”€ AccountSettings.tsx β”‚ β”‚ β”‚ └── ProfileEditor.tsx β”‚ β”‚ β”œβ”€β”€ registration β”‚ β”‚ β”‚ β”œβ”€β”€ MultiStepRegistration.tsx β”‚ β”‚ β”‚ └── ProfileCompletion.tsx β”‚ β”‚ β”œβ”€β”€ search β”‚ β”‚ β”‚ └── SearchPage.tsx β”‚ β”‚ β”œβ”€β”€ session β”‚ β”‚ β”‚ β”œβ”€β”€ SessionPolicyEnforcer.tsx β”‚ β”‚ β”‚ └── SessionTimeout.tsx β”‚ β”‚ β”œβ”€β”€ settings β”‚ β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DataExport.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DataImport.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ LanguageSelector.tsx β”‚ β”‚ β”‚ └── SettingsPanel.tsx β”‚ β”‚ β”œβ”€β”€ shared β”‚ β”‚ β”‚ β”œβ”€β”€ ConnectedAccounts.tsx β”‚ β”‚ β”‚ └── NotificationPreferences.tsx β”‚ β”‚ β”œβ”€β”€ sharing β”‚ β”‚ β”‚ └── SocialSharingComponent.tsx β”‚ β”‚ β”œβ”€β”€ subscription β”‚ β”‚ β”‚ β”œβ”€β”€ SubscriptionBadge.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ SubscriptionPlans.tsx β”‚ β”‚ β”‚ └── withSubscription.tsx β”‚ β”‚ β”œβ”€β”€ team β”‚ β”‚ β”‚ β”œβ”€β”€ InvitationManager.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ TeamCreator.tsx β”‚ β”‚ β”‚ └── TeamMemberManager.tsx β”‚ β”‚ β”œβ”€β”€ theme β”‚ β”‚ β”‚ └── theme-provider.tsx β”‚ β”‚ └── user β”‚ β”‚ β”‚ └── tests β”‚ β”‚ β”‚ └── profile.test.tsx β”‚ β”œβ”€β”€ primitives β”‚ β”‚ β”œβ”€β”€ FileTypeIcon.tsx β”‚ β”‚ β”œβ”€β”€ PaletteProvider.tsx β”‚ β”‚ β”œβ”€β”€ accordion.tsx β”‚ β”‚ β”œβ”€β”€ alert-dialog.tsx β”‚ β”‚ β”œβ”€β”€ alert.tsx β”‚ β”‚ β”œβ”€β”€ aspect-ratio.tsx β”‚ β”‚ β”œβ”€β”€ avatar.tsx β”‚ β”‚ β”œβ”€β”€ badge.tsx β”‚ β”‚ β”œβ”€β”€ breadcrumb.tsx β”‚ β”‚ β”œβ”€β”€ button.tsx β”‚ β”‚ β”œβ”€β”€ calendar.tsx β”‚ β”‚ β”œβ”€β”€ card.tsx β”‚ β”‚ β”œβ”€β”€ carousel.tsx β”‚ β”‚ β”œβ”€β”€ chart.tsx β”‚ β”‚ β”œβ”€β”€ checkbox.tsx β”‚ β”‚ β”œβ”€β”€ collapsible.tsx β”‚ β”‚ β”œβ”€β”€ command.tsx β”‚ β”‚ β”œβ”€β”€ context-menu.tsx β”‚ β”‚ β”œβ”€β”€ copy-button.tsx β”‚ β”‚ β”œβ”€β”€ dialog.tsx β”‚ β”‚ β”œβ”€β”€ drawer.tsx β”‚ β”‚ β”œβ”€β”€ dropdown-menu.tsx β”‚ β”‚ β”œβ”€β”€ error-boundary.tsx β”‚ β”‚ β”œβ”€β”€ form-responsive.tsx β”‚ β”‚ β”œβ”€β”€ form-with-recovery.tsx β”‚ β”‚ β”œβ”€β”€ form.tsx β”‚ β”‚ β”œβ”€β”€ hover-card.tsx β”‚ β”‚ β”œβ”€β”€ icons-test-page.tsx β”‚ β”‚ β”œβ”€β”€ input-otp.tsx β”‚ β”‚ β”œβ”€β”€ input.tsx β”‚ β”‚ β”œβ”€β”€ label.tsx β”‚ β”‚ β”œβ”€β”€ menubar.tsx β”‚ β”‚ β”œβ”€β”€ navigation-menu.tsx β”‚ β”‚ β”œβ”€β”€ pagination.tsx β”‚ β”‚ β”œβ”€β”€ popover.tsx β”‚ β”‚ β”œβ”€β”€ progress.tsx β”‚ β”‚ β”œβ”€β”€ radio-group.tsx β”‚ β”‚ β”œβ”€β”€ resizable.tsx β”‚ β”‚ β”œβ”€β”€ scroll-area.tsx β”‚ β”‚ β”œβ”€β”€ select.tsx β”‚ β”‚ β”œβ”€β”€ separator.tsx β”‚ β”‚ β”œβ”€β”€ sheet.tsx β”‚ β”‚ β”œβ”€β”€ skeleton.tsx β”‚ β”‚ β”œβ”€β”€ slider.tsx β”‚ β”‚ β”œβ”€β”€ sonner.tsx β”‚ β”‚ β”œβ”€β”€ spinner.tsx β”‚ β”‚ β”œβ”€β”€ switch.tsx β”‚ β”‚ β”œβ”€β”€ table.tsx β”‚ β”‚ β”œβ”€β”€ tabs.tsx β”‚ β”‚ β”œβ”€β”€ textarea.tsx β”‚ β”‚ β”œβ”€β”€ theme-provider.tsx β”‚ β”‚ β”œβ”€β”€ toast.tsx β”‚ β”‚ β”œβ”€β”€ toaster.tsx β”‚ β”‚ β”œβ”€β”€ toggle-group.tsx β”‚ β”‚ β”œβ”€β”€ toggle.tsx β”‚ β”‚ β”œβ”€β”€ tooltip.tsx β”‚ β”‚ └── use-toast.ts β”‚ └── styled β”‚ β”‚ β”œβ”€β”€ account β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”œβ”€β”€ AccountSwitcher.tsx β”‚ β”‚ β”œβ”€β”€ DeleteAccountDialog.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ └── DeleteAccountDialog.test.tsx β”‚ β”‚ β”œβ”€β”€ admin β”‚ β”‚ β”œβ”€β”€ AdminDashboard.tsx β”‚ β”‚ β”œβ”€β”€ AdminUsers.tsx β”‚ β”‚ β”œβ”€β”€ RetentionDashboard.tsx β”‚ β”‚ β”œβ”€β”€ RoleManagementPanel.tsx β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ AdminDashboard.test.tsx β”‚ β”‚ β”‚ └── RoleManagementPanel.test.tsx β”‚ β”‚ └── audit-logs β”‚ β”‚ β”‚ └── AdminAuditLogs.tsx β”‚ β”‚ β”œβ”€β”€ audit β”‚ β”‚ β”œβ”€β”€ AuditLogViewer.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ └── AuditLogViewer.test.tsx β”‚ β”‚ β”œβ”€β”€ auth β”‚ β”‚ β”œβ”€β”€ AccountLockout.tsx β”‚ β”‚ β”œβ”€β”€ Auth.js β”‚ β”‚ β”œβ”€β”€ BackupCodesDisplay.tsx β”‚ β”‚ β”œβ”€β”€ BusinessSSOAuth.tsx β”‚ β”‚ β”œβ”€β”€ BusinessSSOSetup.tsx β”‚ β”‚ β”œβ”€β”€ ChangePasswordForm.tsx β”‚ β”‚ β”œβ”€β”€ DomainBasedOrgMatching.tsx β”‚ β”‚ β”œβ”€β”€ EmailVerification.tsx β”‚ β”‚ β”œβ”€β”€ ForgotPasswordForm.tsx β”‚ β”‚ β”œβ”€β”€ IDPConfiguration.tsx β”‚ β”‚ β”œβ”€β”€ LoginForm.tsx β”‚ β”‚ β”œβ”€β”€ LoginFormReact19.tsx β”‚ β”‚ β”œβ”€β”€ MFAManagementSection.tsx β”‚ β”‚ β”œβ”€β”€ MFASetup.tsx β”‚ β”‚ β”œβ”€β”€ MFAVerificationForm.tsx β”‚ β”‚ β”œβ”€β”€ OAuthButtons.tsx β”‚ β”‚ β”œβ”€β”€ OAuthCallback.tsx β”‚ β”‚ β”œβ”€β”€ OrganizationSSO.tsx β”‚ β”‚ β”œβ”€β”€ PasswordRequirements.tsx β”‚ β”‚ β”œβ”€β”€ PasswordResetForm.tsx β”‚ β”‚ β”œβ”€β”€ PasswordlessLogin.tsx β”‚ β”‚ β”œβ”€β”€ ProtectedRoute.tsx β”‚ β”‚ β”œβ”€β”€ ProviderManagementPanel.tsx β”‚ β”‚ β”œβ”€β”€ RegistrationForm.tsx β”‚ β”‚ β”œβ”€β”€ RememberMeToggle.tsx β”‚ β”‚ β”œβ”€β”€ ResetPasswordForm.tsx β”‚ β”‚ β”œβ”€β”€ SocialLoginCallbacks.tsx β”‚ β”‚ β”œβ”€β”€ TwoFactorSetup.tsx β”‚ β”‚ β”œβ”€β”€ tests β”‚ β”‚ β”‚ β”œβ”€β”€ BusinessSSOSetup.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DomainBasedOrgMatching.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ IDPConfiguration.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ LoginForm.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MFAManagementSection.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ MinimalTextareaForm.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OrganizationSSO.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProtectedRoute.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ RegistrationForm.integration.test.tsx β”‚ β”‚ β”‚ └── UpgradeToBusinessFlow.test.tsx β”‚ β”‚ └── withRole.tsx β”‚ β”‚ β”œβ”€β”€ common β”‚ β”‚ β”œβ”€β”€ DataTable.tsx β”‚ β”‚ β”œβ”€β”€ ErrorBoundary.tsx β”‚ β”‚ β”œβ”€β”€ FeedbackForm.tsx β”‚ β”‚ β”œβ”€β”€ FileManager.tsx β”‚ β”‚ β”œβ”€β”€ FormWithRecovery.tsx β”‚ β”‚ β”œβ”€β”€ NotificationCenter.tsx β”‚ β”‚ β”œβ”€β”€ PaletteThemeSwitcher.tsx β”‚ β”‚ β”œβ”€β”€ RateLimitFeedback.tsx β”‚ β”‚ β”œβ”€β”€ ReportingDashboard.tsx β”‚ β”‚ β”œβ”€β”€ ResponsiveExample.tsx β”‚ β”‚ β”œβ”€β”€ SearchResults.tsx β”‚ β”‚ β”œβ”€β”€ ThemeSettings.tsx β”‚ β”‚ β”œβ”€β”€ ThemeSwitcher.tsx β”‚ β”‚ └── UserPreferences.tsx β”‚ β”‚ β”œβ”€β”€ company β”‚ β”‚ β”œβ”€β”€ AddressCard.tsx β”‚ β”‚ β”œβ”€β”€ AddressDialog.tsx β”‚ β”‚ β”œβ”€β”€ CompanyProfileForm.tsx β”‚ β”‚ β”œβ”€β”€ DomainManagement.tsx β”‚ β”‚ β”œβ”€β”€ DomainVerification.tsx β”‚ β”‚ β”œβ”€β”€ NotificationPreferences.tsx β”‚ β”‚ β”œβ”€β”€ OrganizationSessionManager.tsx β”‚ β”‚ β”œβ”€β”€ SingleDomainVerification.tsx β”‚ β”‚ β”œβ”€β”€ VerificationStatus.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ β”œβ”€β”€ DomainVerification.integration.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ OrganizationSessionManager.test.tsx β”‚ β”‚ β”‚ └── SingleDomainVerification.test.tsx β”‚ β”‚ β”œβ”€β”€ dashboard β”‚ β”‚ └── Dashboard.tsx β”‚ β”‚ β”œβ”€β”€ gdpr β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”œβ”€β”€ ConsentManagement.tsx β”‚ β”‚ └── DataExport.tsx β”‚ β”‚ β”œβ”€β”€ layout β”‚ β”‚ β”œβ”€β”€ Features.tsx β”‚ β”‚ β”œβ”€β”€ Footer.tsx β”‚ β”‚ β”œβ”€β”€ Header.tsx β”‚ β”‚ β”œβ”€β”€ Hero.tsx β”‚ β”‚ β”œβ”€β”€ Layout.tsx β”‚ β”‚ └── UserLayout.tsx β”‚ β”‚ β”œβ”€β”€ onboarding β”‚ β”‚ β”œβ”€β”€ FeatureTour.tsx β”‚ β”‚ β”œβ”€β”€ ProgressTracker.tsx β”‚ β”‚ β”œβ”€β”€ SetupWizard.tsx β”‚ β”‚ └── WelcomeScreen.tsx β”‚ β”‚ β”œβ”€β”€ payment β”‚ β”‚ β”œβ”€β”€ InvoiceGenerator.tsx β”‚ β”‚ β”œβ”€β”€ PaymentForm.tsx β”‚ β”‚ β”œβ”€β”€ PaymentHistory.tsx β”‚ β”‚ β”œβ”€β”€ PaymentMethodList.tsx β”‚ β”‚ └── SubscriptionManager.tsx β”‚ β”‚ β”œβ”€β”€ permission β”‚ β”‚ β”œβ”€β”€ PermissionEditor.tsx β”‚ β”‚ └── RoleManager.tsx β”‚ β”‚ β”œβ”€β”€ profile β”‚ β”‚ β”œβ”€β”€ AccountSettings.tsx β”‚ β”‚ β”œβ”€β”€ ActivityLog.tsx β”‚ β”‚ β”œβ”€β”€ AvatarUpload.tsx β”‚ β”‚ β”œβ”€β”€ CompanyDataExport.tsx β”‚ β”‚ β”œβ”€β”€ CompanyLogoUpload.tsx β”‚ β”‚ β”œβ”€β”€ CorporateProfileSection.tsx β”‚ β”‚ β”œβ”€β”€ DataExport.tsx β”‚ β”‚ β”œβ”€β”€ NotificationPreferences.tsx β”‚ β”‚ β”œβ”€β”€ PrivacySettings.tsx β”‚ β”‚ β”œβ”€β”€ Profile.jsx β”‚ β”‚ β”œβ”€β”€ ProfileEditor.tsx β”‚ β”‚ β”œβ”€β”€ ProfileForm.tsx β”‚ β”‚ β”œβ”€β”€ ProfileTypeConversion.tsx β”‚ β”‚ β”œβ”€β”€ ProfileVerification.tsx β”‚ β”‚ β”œβ”€β”€ SecuritySettings.tsx β”‚ β”‚ β”œβ”€β”€ SessionManagement.tsx β”‚ β”‚ └── tests β”‚ β”‚ β”‚ β”œβ”€β”€ ActivityLog.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ AvatarUpload.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CompanyDataExport.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CompanyLogoUpload.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ CorporateProfileSection.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ DataExport.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ NotificationPreferences.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ PrivacySettings.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ Profile.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfileEditor.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfilePrivacySettings.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfileTypeConversion.test.tsx β”‚ β”‚ β”‚ β”œβ”€β”€ ProfileVerification.test.tsx β”‚ β”‚ β”‚ └── SessionManagement.test.tsx β”‚ β”‚ β”œβ”€β”€ registration β”‚ β”‚ β”œβ”€β”€ MultiStepRegistration.tsx β”‚ β”‚ └── ProfileCompletion.tsx β”‚ β”‚ β”œβ”€β”€ search β”‚ β”‚ └── SearchPage.tsx β”‚ β”‚ β”œβ”€β”€ session β”‚ β”‚ └── SessionTimeout.tsx β”‚ β”‚ β”œβ”€β”€ settings β”‚ β”‚ β”œβ”€β”€ AccountDeletion.tsx β”‚ β”‚ β”œβ”€β”€ DataExport.tsx β”‚ β”‚ β”œβ”€β”€ DataImport.tsx β”‚ β”‚ β”œβ”€β”€ LanguageSelector.tsx β”‚ β”‚ └── SettingsPanel.tsx β”‚ β”‚ β”œβ”€β”€ shared β”‚ β”‚ β”œβ”€β”€ ConnectedAccounts.tsx β”‚ β”‚ └── NotificationPreferences.tsx β”‚ β”‚ β”œβ”€β”€ sharing β”‚ β”‚ └── SocialSharingComponent.tsx β”‚ β”‚ β”œβ”€β”€ team β”‚ β”‚ β”œβ”€β”€ InvitationManager.tsx β”‚ β”‚ β”œβ”€β”€ TeamCreator.tsx β”‚ β”‚ └── TeamMemberManager.tsx β”‚ β”‚ └── theme β”‚ β”‚ └── theme-provider.tsx └── utils β”‚ └── tests β”‚ └── domain-validation.test.ts β”œβ”€β”€ supabase β”œβ”€β”€ .branches β”‚ └── _current_branch β”œβ”€β”€ .temp β”‚ β”œβ”€β”€ cli-latest β”‚ β”œβ”€β”€ gotrue-version β”‚ β”œβ”€β”€ pooler-url β”‚ β”œβ”€β”€ postgres-version β”‚ β”œβ”€β”€ project-ref β”‚ β”œβ”€β”€ rest-version β”‚ └── storage-version β”œβ”€β”€ config.toml β”œβ”€β”€ functions β”‚ └── cleanup-unverified-users β”‚ β”‚ └── index.ts └── migrations β”‚ β”œβ”€β”€ 20240101000000_create_subscription_tables.sql β”‚ β”œβ”€β”€ 20240516000000_initial_public_schema_full.sql β”‚ β”œβ”€β”€ 20240519000000_create_company_domains.sql β”‚ β”œβ”€β”€ 20240519000001_create_company_notifications.sql β”‚ β”œβ”€β”€ 20240520000000_create_adapter_tables.sql β”‚ β”œβ”€β”€ 20240601000000_create_data_exports_tables.sql β”‚ └── 20240610_add_notification_preferences_and_recipients.sql β”œβ”€β”€ tailwind.config.js β”œβ”€β”€ temp β”œβ”€β”€ test-results.json β”œβ”€β”€ test-results β”œβ”€β”€ .last-run.json └── auth-personal-check-delete-fc212--find-delete-account-button-Desktop-Chrome β”‚ └── test-failed-1.png β”œβ”€β”€ tsconfig.json β”œβ”€β”€ tsconfig.test.json β”œβ”€β”€ tsconfig.tsbuildinfo β”œβ”€β”€ update-tests.mjs β”œβ”€β”€ vitest-debug.json β”œβ”€β”€ vitest-report.json β”œβ”€β”€ vitest.config.ts └── vitest.setup.ts

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors