Lib Directory
Location: src/lib/
Purpose: Utility libraries, helper functions, and shared code.
Structure
lib/
├── acessControl/ # Access control utilities
│ └── canAccessFeature.ts # Feature access checking
│
├── data/ # Static data and constants
│ ├── california-counties.ts # California county list
│ ├── jurisdictionType.ts # Jurisdiction types
│ ├── permissions/ # Permission definitions
│ │ ├── campaign-sub-groups.ts
│ │ ├── primary-groups.ts
│ │ └── standard-permissions.ts
│ ├── us-states.ts # US states list
│ └── usTimeZones.ts # US time zones
│
├── supabase/ # Supabase client setup
│ ├── check-env-vars.ts # Environment variable validation
│ ├── client.ts # Browser Supabase client
│ ├── server.ts # Server Supabase client
│ ├── specialServer.ts # Service role client
│ └── updateSession.ts # Session update logic
│
├── cn.ts # Class name utility (clsx + tailwind-merge)
├── date-utils.ts # Date manipulation utilities
├── extractIdsFromPath.ts # Extract IDs from URL paths
├── formatNumber.ts # Number formatting
├── getFilterPetColumns.ts # Petition table column definitions
├── getPetitionContextData.ts # Petition context data helpers
├── getRedirectUrl.ts # Redirect URL utilities
├── petition-utils.ts # Petition-specific utilities
├── server-utils.ts # Server-side utilities
├── use-forwarded-ref.tsx # Forward ref utility
├── utils.ts # General utility functions
└── validateDateInput.ts # Date input validation
Key Libraries
supabase/: Supabase client configuration for different environments (browser, server, service role)data/: Static reference data used throughout the applicationacessControl/: Permission checking utilities- Utilities: Helper functions for common operations (dates, formatting, validation)