// Sample data + tiny inline icon components (Lucide-style strokes).
// ──────────────── Icons ────────────────
const Icon = ({ d, fill, size = 18, sw = 1.75, children, style }) => (
);
const I = {
home: (p) => ,
calendar: (p) => ,
doc: (p) => ,
book: (p) => ,
shield: (p) => ,
user: (p) => ,
laptop: (p) => ,
dollar: (p) => ,
bell: (p) => ,
search: (p) => ,
help: (p) => ,
check: (p) => ,
arrow: (p) => ,
arrowL: (p) => ,
plus: (p) => ,
more: (p) => ,
zoom: (p) => ,
pen: (p) => ,
github: (p) => ,
slack: (p) => ,
fig: (p) => ,
notion: (p) => ,
sun: (p) => ,
moon: (p) => ,
paint: (p) => ,
layout: (p) => ,
download: (p) => ,
clock: (p) => ,
play: (p) => ,
package: (p) => ,
lock: (p) => ,
sparkle: (p) => ,
wave: (p) => ,
family: (p) => ,
heart: (p) => ,
tooth: (p) => ,
eye: (p) => ,
shield2: (p) => ,
mail: (p) => ,
edit: (p) => ,
upload: (p) => ,
external: (p) => ,
flag: (p) => ,
gift: (p) => ,
building: (p) => ,
briefcase: (p) => ,
globe: (p) => ,
monitor: (p) => ,
phone: (p) => ,
headset: (p) => ,
keyboard: (p) => ,
star: (p) => ,
trophy: (p) => ,
refresh: (p) => ,
trash: (p) => ,
x: (p) => ,
copy: (p) => ,
};
// avatar palette
const AVATAR_COLORS = [
"#0ea5e9", "#a855f7", "#f97316", "#10b981",
"#ef4444", "#6366f1", "#06b6d4", "#eab308",
"#ec4899", "#14b8a6"
];
const avatarBg = (name) => {
let h = 0; for (const c of name) h = (h * 31 + c.charCodeAt(0)) & 0xfff;
return AVATAR_COLORS[h % AVATAR_COLORS.length];
};
const initials = (name) => name.split(" ").map(p => p[0]).slice(0, 2).join("").toUpperCase();
const Avatar = ({ name, size = "md" }) => (
{initials(name)}
);
// ──────────────── Personas ────────────────
const PERSONAS = {
eng: {
role: "Software Engineer",
team: "Platform · Voice Infrastructure",
manager: "Aarav Mehta",
managerRole: "Engineering Manager, Platform",
location: "Los Angeles, CA · Hybrid",
startDate: "May 11, 2026",
tools: ["GitHub", "Slack", "Linear", "Datadog", "AWS Console"],
badge: "ENG-2641",
},
design: {
role: "Product Designer",
team: "Design · Agent Experience",
manager: "Priya Iyer",
managerRole: "Design Director",
location: "Los Angeles, CA · Hybrid",
startDate: "May 11, 2026",
tools: ["Figma", "FigJam", "Notion", "Linear", "Slack"],
badge: "DES-118",
},
sales: {
role: "Account Executive",
team: "Sales · Mid-Market",
manager: "Marcus Reed",
managerRole: "VP, Mid-Market Sales",
location: "Los Angeles, CA · Hybrid",
startDate: "May 11, 2026",
tools: ["Salesforce", "Outreach", "Gong", "Slack", "LinkedIn Sales Nav"],
badge: "AE-204",
},
};
const NEW_HIRE = { name: "Riley Park", first: "Riley" };
// ──────────────── Onboarding plan (timeline) ────────────────
// Each task knows which "phase" it belongs to: day1 / week1 / month1
const TASKS = (persona) => {
const eng = persona === "eng";
const des = persona === "design";
const sal = persona === "sales";
return [
// Day 1
{ id: "t1", phase: "day1", title: "Welcome video from CEO", kind: "media", time: "8:30 AM", duration: "5 min", icon: "play", required: true },
{ id: "t2", phase: "day1", title: "Sign offer letter & NDA", kind: "doc", time: "9:00 AM", duration: "10 min", icon: "pen", required: true, count: "2 docs" },
{ id: "t3", phase: "day1", title: "I-9 employment verification", kind: "doc", time: "9:30 AM", duration: "8 min", icon: "doc", required: true },
{ id: "t4", phase: "day1", title: "Setup Convoso SSO + 2FA", kind: "task", time: "10:00 AM", duration: "5 min", icon: "lock", required: true },
{ id: "t5", phase: "day1", title: "1:1 with " + (eng ? "Aarav (Eng Manager)" : des ? "Priya (Design Director)" : "Marcus (Sales VP)"), kind: "meeting", time: "11:00 AM", duration: "30 min", icon: "zoom", required: true },
{ id: "t6", phase: "day1", title: "Team welcome lunch", kind: "meeting", time: "12:30 PM", duration: "1 hr", icon: "gift", required: false },
{ id: "t7", phase: "day1", title: eng ? "Clone repo + run convoso-core locally" : des ? "Set up Figma + clone design library" : "Salesforce account & Outreach access", kind: "task", time: "2:00 PM", duration: "1 hr", icon: eng ? "github" : des ? "fig" : "briefcase", required: true },
// Week 1
{ id: "t8", phase: "week1", title: "Complete W-4 tax withholding", kind: "doc", duration: "10 min", icon: "doc", required: true },
{ id: "t9", phase: "week1", title: "Direct deposit setup", kind: "doc", duration: "5 min", icon: "dollar", required: true },
{ id: "t10", phase: "week1", title: "Enroll in benefits & insurance", kind: "task", duration: "20 min", icon: "shield", required: true, deadline: "30 days" },
{ id: "t11", phase: "week1", title: "Code of Conduct training", kind: "training", duration: "25 min", icon: "book", required: true },
{ id: "t12", phase: "week1", title: "Security & data privacy training", kind: "training", duration: "30 min", icon: "shield2", required: true },
{ id: "t13", phase: "week1", title: eng ? "Onboarding deep-dive: voice infra" : des ? "Design system intro · with Priya" : "Convoso platform demo training", kind: "training", duration: "1 hr", icon: "play", required: false },
{ id: "t14", phase: "week1", title: "Coffee chat with team buddy · " + (eng ? "Sam Liu" : des ? "Devon Cole" : "Maya Cruz"), kind: "meeting", duration: "30 min", icon: "wave", required: false },
// Month 1
{ id: "t15", phase: "month1", title: "30-day check-in with manager", kind: "meeting", duration: "45 min", icon: "calendar", required: true },
{ id: "t16", phase: "month1", title: "HIPAA & call recording compliance", kind: "training", duration: "40 min", icon: "shield2", required: true },
{ id: "t17", phase: "month1", title: eng ? "Ship first PR" : des ? "Present first design crit" : "First closed-won deal", kind: "task", duration: "self-paced", icon: "trophy", required: false },
{ id: "t18", phase: "month1", title: "Choose 401(k) contribution", kind: "doc", duration: "10 min", icon: "dollar", required: false },
{ id: "t19", phase: "month1", title: "Quarterly all-hands attendance", kind: "meeting", duration: "1 hr", icon: "calendar", required: false },
];
};
// Track which tasks are "done" by phase (matches the onboardingProgress tweak).
const COMPLETED_BY_PROGRESS = {
day1: new Set(["t1", "t2"]),
week1: new Set(["t1","t2","t3","t4","t5","t6","t7","t8"]),
done: new Set(["t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19"]),
};
// ──────────────── Meetings (calendar) ────────────────
const MEETINGS = [
{ day: "Mon", date: "May 11", items: [
{ time: "9:00 AM", end: "9:30", title: "Welcome breakfast", with: "People Ops", loc: "DTLA HQ · 4F", status: "accepted" },
{ time: "11:00 AM", end: "11:30", title: "1:1 with Aarav Mehta", with: "Aarav Mehta", loc: "Zoom", status: "accepted", primary: true },
{ time: "1:00 PM", end: "1:45", title: "IT Setup · Laptop & SSO", with: "Marcus IT", loc: "DTLA HQ · IT Bar", status: "accepted" },
{ time: "3:30 PM", end: "4:30", title: "Eng team standup", with: "Platform team", loc: "Zoom", status: "tentative" },
]},
{ day: "Tue", date: "May 12", items: [
{ time: "10:00 AM", end: "11:00", title: "Codebase walkthrough", with: "Sam Liu (buddy)", loc: "Zoom", status: "accepted" },
{ time: "2:00 PM", end: "2:30", title: "Benefits Q&A · Optional", with: "Lila Park (HR)", loc: "Zoom", status: "tentative" },
]},
{ day: "Wed", date: "May 13", items: [
{ time: "9:30 AM", end: "10:00", title: "Daily standup", with: "Platform team", loc: "Zoom", status: "accepted", recurring: true },
{ time: "12:30 PM", end: "1:30", title: "Lunch & Learn · Convoso AI", with: "Whole company", loc: "DTLA HQ · Cafe", status: "tentative" },
]},
{ day: "Thu", date: "May 14", items: [
{ time: "10:00 AM", end: "11:00", title: "Engineering all-hands", with: "Engineering", loc: "Zoom", status: "accepted" },
{ time: "3:00 PM", end: "3:30", title: "1:1 buddy check-in", with: "Sam Liu", loc: "Zoom", status: "accepted" },
]},
{ day: "Fri", date: "May 15", items: [
{ time: "9:00 AM", end: "9:30", title: "Sprint planning", with: "Platform team", loc: "Zoom", status: "tentative" },
{ time: "4:30 PM", end: "5:30", title: "Friday social", with: "Whole company", loc: "DTLA HQ · Lounge", status: "tentative" },
]},
];
// ──────────────── Documents ────────────────
const DOCS = [
{ id: "d1", title: "Offer Letter", category: "Employment", pages: 4, status: "signed", signedOn: "May 9", priority: "high" },
{ id: "d2", title: "Mutual NDA", category: "Legal", pages: 2, status: "signed", signedOn: "May 9", priority: "high" },
{ id: "d3", title: "Employee Handbook Acknowledgement", category: "Policy", pages: 1, status: "pending", due: "May 11", priority: "high" },
{ id: "d4", title: "Form I-9 · Employment Eligibility", category: "Government", pages: 3, status: "pending", due: "May 11", priority: "high" },
{ id: "d5", title: "Form W-4 · Federal Tax Withholding", category: "Government", pages: 2, status: "pending", due: "May 15", priority: "med" },
{ id: "d6", title: "California State Tax DE-4", category: "Government", pages: 2, status: "pending", due: "May 15", priority: "med" },
{ id: "d7", title: "Direct Deposit Authorization", category: "Payroll", pages: 1, status: "pending", due: "May 15", priority: "med" },
{ id: "d8", title: "IP Assignment Agreement", category: "Legal", pages: 5, status: "pending", due: "May 18", priority: "med" },
{ id: "d9", title: "Code of Conduct Acknowledgement", category: "Policy", pages: 1, status: "pending", due: "May 22", priority: "low" },
{ id: "d10", title: "401(k) Election Form", category: "Benefits", pages: 2, status: "pending", due: "Jun 11", priority: "low" },
{ id: "d11", title: "Emergency Contact Form", category: "Personal", pages: 1, status: "pending", due: "May 22", priority: "low" },
];
// ──────────────── Training ────────────────
const TRAININGS = [
{ id: "tr1", title: "Welcome to Convoso", category: "Culture", duration: "12 min", lessons: 3, progress: 100, instructor: "Nathan Stearns, CEO", required: true, color: "#84cc16" },
{ id: "tr2", title: "Code of Conduct", category: "Compliance", duration: "25 min", lessons: 6, progress: 60, instructor: "Lila Park, People Ops", required: true, color: "#0ea5e9" },
{ id: "tr3", title: "Security & Data Privacy", category: "Compliance", duration: "30 min", lessons: 8, progress: 25, instructor: "Diana Ortega, CISO", required: true, color: "#ef4444" },
{ id: "tr4", title: "HIPAA & Call Recording Compliance", category: "Compliance", duration: "40 min", lessons: 10, progress: 0, instructor: "Diana Ortega, CISO", required: true, color: "#a855f7" },
{ id: "tr5", title: "Convoso Platform 101", category: "Product", duration: "1 hr 5 min", lessons: 14, progress: 0, instructor: "Maya Cruz, Product", required: true, color: "#f97316" },
{ id: "tr6", title: "Voice Infrastructure Deep-dive", category: "Engineering", duration: "1 hr 30 min", lessons: 11, progress: 0, instructor: "Aarav Mehta", required: false, color: "#14b8a6" },
{ id: "tr7", title: "Working Async at Convoso", category: "Culture", duration: "18 min", lessons: 4, progress: 0, instructor: "Priya Iyer", required: false, color: "#eab308" },
{ id: "tr8", title: "Inclusive Workplace", category: "Compliance", duration: "45 min", lessons: 9, progress: 0, instructor: "Lila Park, People Ops", required: true, color: "#ec4899" },
];
// ──────────────── Insurance plans ────────────────
const PLANS = [
{
id: "blue-pref", name: "Blue PPO Preferred", carrier: "Anthem Blue Cross",
type: "PPO", network: "Nationwide",
premium: 184, employer: 612, deductible: 500, oop: 4500,
copay: 25, specialist: 45,
perks: ["No referrals", "Best network coverage", "Anywhere in network"],
badge: "Most chosen",
},
{
id: "blue-core", name: "Blue HMO Core", carrier: "Anthem Blue Cross",
type: "HMO", network: "California",
premium: 92, employer: 488, deductible: 250, oop: 3000,
copay: 15, specialist: 25,
perks: ["Lowest copays", "Designated PCP required", "California-only network"],
},
{
id: "kp-hdhp", name: "Kaiser HDHP + HSA", carrier: "Kaiser Permanente",
type: "HDHP", network: "Kaiser-only",
premium: 64, employer: 412, deductible: 1750, oop: 5000,
copay: 0, specialist: 0,
perks: ["HSA-eligible (Convoso adds $1,200/yr)", "Lowest premium", "Tax-free spending"],
badge: "Best for healthy",
},
];
const DENTAL_PLANS = [
{ id: "delta-ppo", name: "Delta Dental PPO", premium: 18, employer: 42, perks: ["100% preventive", "$2,000 annual max", "Includes ortho"] },
{ id: "delta-basic", name: "Delta Dental Basic", premium: 8, employer: 24, perks: ["Cleanings + x-rays", "$1,000 annual max"] },
{ id: "decline-d", name: "Decline dental", premium: 0, employer: 0, perks: ["Decline coverage"] },
];
const VISION_PLANS = [
{ id: "vsp", name: "VSP Vision Plus", premium: 6, employer: 14, perks: ["1 exam / yr", "$200 frame allowance", "Contacts covered"] },
{ id: "vsp-basic", name: "VSP Vision Basic", premium: 3, employer: 8, perks: ["1 exam / yr", "$120 frame allowance"] },
{ id: "decline-v", name: "Decline vision", premium: 0, employer: 0, perks: ["Decline coverage"] },
];
// ──────────────── Equipment ────────────────
const EQUIPMENT = [
{ id: "e1", name: "MacBook Pro 14\" M4", spec: "32 GB · 1 TB · Space Black", status: "shipped", eta: "Arrives May 10", icon: "laptop" },
{ id: "e2", name: "Studio Display 27\"", spec: "Standard glass · Tilt stand", status: "shipped", eta: "Arrives May 10", icon: "monitor" },
{ id: "e3", name: "Logitech MX Keys", spec: "Graphite · Bluetooth", status: "shipped", eta: "Arrives May 10", icon: "keyboard" },
{ id: "e4", name: "Sony WH-1000XM5", spec: "Black · Noise-canceling", status: "processing", eta: "Ships May 12", icon: "headset" },
{ id: "e5", name: "iPhone 15 Pro", spec: "Optional · 256 GB", status: "available", eta: "Add to order", icon: "phone" },
];
// ──────────────── Profile sample ────────────────
const PROFILE = {
legalName: "Riley Alex Park",
preferred: "Riley",
pronouns: "they / them",
email: "riley.park@convoso.com",
personalEmail: "rileypark@gmail.com",
phone: "+1 (213) 555-0142",
dob: "1996-08-14",
ssnLast4: "•••-••-4982",
address: "1217 Hope St, Apt 8B, Los Angeles, CA 90015",
emergency: { name: "Jordan Park", relation: "Sibling", phone: "+1 (310) 555-0190" },
ethnicity: "Prefer not to say",
veteran: "No",
shirtSize: "M",
};
// expose to globals
Object.assign(window, {
Icon, I, Avatar, avatarBg, initials,
PERSONAS, NEW_HIRE,
TASKS, COMPLETED_BY_PROGRESS,
MEETINGS, DOCS, TRAININGS,
PLANS, DENTAL_PLANS, VISION_PLANS,
EQUIPMENT, PROFILE,
});