Utilities & Helpers
Core Utilities
Section titled “Core Utilities”File: src/lib/utils.ts (12.6KB)
Class Utilities
Section titled “Class Utilities”cn(...inputs) // clsx + tailwind-merge for className compositionString Utilities
Section titled “String Utilities”getInitials(name) // "John Doe" → "JD"generateId() // Random ID stringDate/Time Utilities
Section titled “Date/Time Utilities”timeAgo(timestamp) // "2 hours ago"timeAgoShort(timestamp) // "2h"timeAgoDate(timestamp) // Formatted date stringformatDate(date) // Formatted dateformatRelativeTime(date) // Human-readable time differenceformatWorkHours(hours) // Work schedule stringChat/Mention Utilities
Section titled “Chat/Mention Utilities”extractMentions(text) // Parse @mentions from textsetMentionsToNotification(text) // Convert mentions for notificationsgetLengthComments(activities) // Count comments in activity arrayTask Utilities
Section titled “Task Utilities”sortTasks(tasks, sortBy) // Sort by priority/date/assigneesSecurity Utilities
Section titled “Security Utilities”checkPasswordStrength(password) // 0-100 strength scorecheckUsernameExists(username) // Validate against FirestoreCSS Utilities
Section titled “CSS Utilities”getTransformStyle(scale, position) // Generate CSS transformRoute Guards
Section titled “Route Guards”Location: src/lib/utils/guards/
checkRegistrationApproved
Section titled “checkRegistrationApproved”// Returns boolean - checks user.registrationApproved === true// Used in CustomGuard to gate app access during private betaimport { checkRegistrationApproved } from '$lib/utils/guards/check-registration-approved';checkOnboardingCompleted
Section titled “checkOnboardingCompleted”// Returns boolean - checks user.onboardingCompleted === true// Enforces onboarding completion before app accessimport { checkOnboardingCompleted } from '$lib/utils/guards/check-onboarding-completed';Both guards use firekitDoc() with server-side reads for latest data.
Mobile Detection Hook
Section titled “Mobile Detection Hook”File: src/lib/hooks/is-mobile.svelte.ts
import { IsMobile } from '$lib/hooks/is-mobile.svelte';
// Uses MediaQuery with 768px breakpointconst isMobile = new IsMobile();// isMobile.matches → booleanReference Data
Section titled “Reference Data”Location: src/lib/data/
| File | Content | Count |
|---|---|---|
countries.ts | Country objects with flag emojis, codes, default languages | 249+ |
languages.ts | Languages with native names, English names, flag emojis | 100+ |
timezones.ts | Timezones with offset, abbreviation, UTC city mappings | 150+ |
pricing.ts | Plan pricing (Free/Standard/Elite) | 3 plans |
billing.ts | Billing/subscription data types | - |
service-categories.ts | Service marketplace category taxonomy | - |
navbar-categories.ts | Navigation category definitions | - |
countries-card.ts | Card-formatted country data | - |
App Configuration
Section titled “App Configuration”File: src/lib/config.ts
const siteConfig = { title: 'Mindhyv', description: 'Change the Way You Work', logo: '/logo.svg', logoDark: '/logo-white.svg', favicon: '/favicon.png',};
// Navigation groupsconst navMain = [ // Dashboard, Profile, Sites (/hubs), Chat (/connect), // Tasks (/hyvflow), Docs, Refer and Earn];
const userNav = [ // Upgrade to Elite, Account, Billing];
const hubNav = [ // Dashboard, Builder, Business Tools, Media, // Settings (Brand, Domain, Payments, Theme)];