Skip to content

Utilities & Helpers

File: src/lib/utils.ts (12.6KB)

cn(...inputs) // clsx + tailwind-merge for className composition
getInitials(name) // "John Doe" → "JD"
generateId() // Random ID string
timeAgo(timestamp) // "2 hours ago"
timeAgoShort(timestamp) // "2h"
timeAgoDate(timestamp) // Formatted date string
formatDate(date) // Formatted date
formatRelativeTime(date) // Human-readable time difference
formatWorkHours(hours) // Work schedule string
extractMentions(text) // Parse @mentions from text
setMentionsToNotification(text) // Convert mentions for notifications
getLengthComments(activities) // Count comments in activity array
sortTasks(tasks, sortBy) // Sort by priority/date/assignees
checkPasswordStrength(password) // 0-100 strength score
checkUsernameExists(username) // Validate against Firestore
getTransformStyle(scale, position) // Generate CSS transform

Location: src/lib/utils/guards/

// Returns boolean - checks user.registrationApproved === true
// Used in CustomGuard to gate app access during private beta
import { checkRegistrationApproved } from '$lib/utils/guards/check-registration-approved';
// Returns boolean - checks user.onboardingCompleted === true
// Enforces onboarding completion before app access
import { checkOnboardingCompleted } from '$lib/utils/guards/check-onboarding-completed';

Both guards use firekitDoc() with server-side reads for latest data.

File: src/lib/hooks/is-mobile.svelte.ts

import { IsMobile } from '$lib/hooks/is-mobile.svelte';
// Uses MediaQuery with 768px breakpoint
const isMobile = new IsMobile();
// isMobile.matches → boolean

Location: src/lib/data/

FileContentCount
countries.tsCountry objects with flag emojis, codes, default languages249+
languages.tsLanguages with native names, English names, flag emojis100+
timezones.tsTimezones with offset, abbreviation, UTC city mappings150+
pricing.tsPlan pricing (Free/Standard/Elite)3 plans
billing.tsBilling/subscription data types-
service-categories.tsService marketplace category taxonomy-
navbar-categories.tsNavigation category definitions-
countries-card.tsCard-formatted country data-

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 groups
const 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)
];