{"version":3,"file":"EmployeeHeader.M3WZb11F.mjs","names":["p","React.useState","React.useMemo","_Fragment","React.useCallback","React.useState","React.useMemo","_Fragment"],"sources":["https:/framerusercontent.com/modules/ncM4mdxhyI59LUE2bJfk/ax4uIfdO6tw5hyazfmxb/EmployeeAuth.js","https:/framerusercontent.com/modules/o81SSIPwpoFaA5Rl5Phf/CJZMGdXV8xoxtmaL4ZZv/EmployeeHeader.js"],"sourcesContent":["// EmployeeAuth.tsx — employee-side auth + profile + role (PKCE + code exchange)\nimport{jsx as _jsx,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createClient}from\"@supabase/supabase-js\";import{addPropertyControls,ControlType}from\"framer\";/* ---------------- Constants ---------------- */const STORAGE_KEY=\"__BANG_AUTH__\";const AUTH_EVENT_KEY=\"bang-auth-changed\";// Lock down /employee/jobs* to this single owner account\nconst JOBS_OWNER_ID=\"70584f44-c887-49e7-9cfe-2ec433e42f62\";const JOBS_OWNER_EMAIL=\"bangautoglass@gmail.com\";let supabaseClient=null;// Mirror the env handling we use in TopBar\nconst SUPABASE_URL=typeof process!==\"undefined\"?process.env.NEXT_PUBLIC_SUPABASE_URL:undefined;const SUPABASE_ANON_KEY=typeof process!==\"undefined\"?process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY:undefined;/* ---------------- Shared auth helpers (mirroring TopBar) ---------------- */function getSupabaseBrowserClient(opts){if(typeof window===\"undefined\")return null;if(supabaseClient)return supabaseClient;const url=opts?.supabaseUrl||SUPABASE_URL;const anonKey=opts?.anonKey||SUPABASE_ANON_KEY;if(!url||!anonKey){console.warn(\"[EmployeeAuth] Supabase URL or anon key missing. \"+\"Set NEXT_PUBLIC_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_ANON_KEY \"+\"or pass supabaseUrl / anonKey into <EmployeeAuth />.\");return null;}supabaseClient=createClient(url,anonKey,{auth:{persistSession:true,autoRefreshToken:true,// Match TopBar: PKCE flow, we handle ?code= via exchangeCodeForSession.\nflowType:\"pkce\",detectSessionInUrl:false}});return supabaseClient;}/**\n * Treat any persisted Supabase session with an access token as potentially valid,\n * and let Supabase's own refresh logic decide if it is still good.\n * This avoids prematurely kicking the user to login while a refresh could succeed.\n */function isValidSession(s){return!!s?.access_token;}function readSessionAny(){if(typeof window===\"undefined\")return;// 1) In-memory cache\ntry{const mem=window.__BANG_AUTH__;if(isValidSession(mem))return mem;}catch{}// 2) Our own storage key (local + session)\ntry{const ls=localStorage.getItem(STORAGE_KEY);if(ls){const p=JSON.parse(ls);if(isValidSession(p))return p;}}catch{}try{const ss=sessionStorage.getItem(STORAGE_KEY);if(ss){const p=JSON.parse(ss);if(isValidSession(p))return p;}}catch{}// 3) Supabase auth token as a fallback\ntry{for(let i=0;i<localStorage.length;i++){const key=localStorage.key(i)||\"\";if(/^sb-.*-auth-token$/.test(key)){const raw=localStorage.getItem(key);if(!raw)continue;const parsed=JSON.parse(raw);const sess=parsed?.currentSession||parsed?.session||parsed;if(sess&&sess.access_token){const candidate={access_token:sess.access_token,refresh_token:sess.refresh_token,user:sess.user,expires_at:sess.expires_at};if(isValidSession(candidate)){return candidate;}}}}}catch{}return undefined;}function persistSessionFromSupabase(session){if(typeof window===\"undefined\")return;const persisted={access_token:session.access_token,refresh_token:session.refresh_token??undefined,user:session.user,expires_at:session.expires_at??undefined};try{window.__BANG_AUTH__=persisted;}catch{}try{const json=JSON.stringify(persisted);localStorage.setItem(STORAGE_KEY,json);sessionStorage.setItem(STORAGE_KEY,json);}catch{}try{window.dispatchEvent(new CustomEvent(AUTH_EVENT_KEY,{detail:{isAuthenticated:true,user:session.user}}));}catch{}}function clearSession(){if(typeof window===\"undefined\")return;try{window.__BANG_AUTH__=undefined;}catch{}try{localStorage.removeItem(STORAGE_KEY);}catch{}try{sessionStorage.removeItem(STORAGE_KEY);}catch{}// Also clear Supabase auth tokens\ntry{const toRemove=[];for(let i=0;i<localStorage.length;i++){const key=localStorage.key(i)||\"\";if(/^sb-.*-auth-token$/.test(key)){toRemove.push(key);}}toRemove.forEach(k=>localStorage.removeItem(k));}catch{}try{window.dispatchEvent(new CustomEvent(AUTH_EVENT_KEY,{detail:{isAuthenticated:false,user:null}}));}catch{}}function deriveDisplayName(profile,user){// Prefer profile.full_name\nif(profile?.full_name&&profile.full_name.trim()){return profile.full_name.trim();}// Fallback to auth metadata\nif(!user)return null;const meta=user.user_metadata||user.raw_user_meta_data||user.metadata||{};const first=meta.first_name||meta.given_name||meta.name||user.first_name;if(typeof first===\"string\"&&first.trim()){return first.trim();}if(typeof user.email===\"string\"&&user.email.includes(\"@\")){return user.email.split(\"@\")[0];}return null;}/* ---------------- Role helpers ---------------- */function getRawRole(profileRole,user){if(profileRole&&profileRole.trim())return profileRole;// Fallback to auth metadata if profile.role is missing\nif(!user)return undefined;const meta=user.user_metadata||user.raw_user_meta_data||user.metadata||{};const metaRole=meta.role||meta.employee_role||meta.user_role||meta.app_role;if(typeof metaRole===\"string\"&&metaRole.trim()){return metaRole;}return undefined;}function mapDbRoleToEmployeeRole(rawRole){const r=(rawRole??\"\").toString().trim().toLowerCase();// Admin variants\nif(r===\"admin\"||r===\"administrator\"||r===\"owner\"){return\"admin\";}// Sales variants\nif(r===\"sales representative\"||r===\"sales_rep\"||r===\"sales-representative\"||r===\"sales rep\"||r===\"sales\"||r===\"sr\"){return\"sales_rep\";}// Technician variants\nif(r===\"technician\"||r===\"tech\"){return\"technician\";}// Any other enum (Customer, etc.) gets least-privileged view\nreturn\"technician\";}/* ---------------- Main component ---------------- */export default function EmployeeAuth({children,supabaseUrl,anonKey}){const initialPersisted=typeof window===\"undefined\"?undefined:readSessionAny();const[supabase,setSupabase]=React.useState(()=>typeof window===\"undefined\"?null:getSupabaseBrowserClient({supabaseUrl,anonKey}));const[isAuthed,setIsAuthed]=React.useState(!!initialPersisted?.access_token&&isValidSession(initialPersisted));const[user,setUser]=React.useState(initialPersisted?.user??null);const[profile,setProfile]=React.useState(null);const[sessionHydrated,setSessionHydrated]=React.useState(false);const[profileHydrated,setProfileHydrated]=React.useState(false);// Hydrate session + sync with Supabase auth events\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;const updateFromSession=()=>{const sess=readSessionAny();const authed=!!sess?.access_token&&isValidSession(sess);setIsAuthed(authed);setUser(sess?.user??null);setSessionHydrated(true);};const handler=()=>updateFromSession();window.addEventListener(AUTH_EVENT_KEY,handler);window.addEventListener(\"storage\",handler);const client=getSupabaseBrowserClient({supabaseUrl,anonKey});setSupabase(client);if(!client){updateFromSession();return()=>{window.removeEventListener(AUTH_EVENT_KEY,handler);window.removeEventListener(\"storage\",handler);};}const syncFromSupabase=async()=>{try{const{data,error}=await client.auth.getSession();if(error){console.warn(\"[EmployeeAuth] getSession error\",error);}const session=data?.session;if(session){persistSessionFromSupabase(session);}else{clearSession();}updateFromSession();}catch(err){console.warn(\"[EmployeeAuth] getSession threw\",err);}};const handleOAuthCallbackIfNeeded=async()=>{try{const currentUrl=window.location.href;const url=new URL(currentUrl);const hasCode=url.searchParams.get(\"code\");const hasError=url.searchParams.get(\"error\")||url.searchParams.get(\"error_description\");if(!hasCode&&!hasError)return;const{data,error}=await client.auth.exchangeCodeForSession(currentUrl);if(error){console.warn(\"[EmployeeAuth] exchangeCodeForSession error\",error);}if(data?.session){persistSessionFromSupabase(data.session);}// Strip OAuth query params but keep others + hash\nconst paramsToStrip=[\"code\",\"state\",\"scope\",\"authuser\",\"prompt\",\"hd\",\"error\",\"error_description\"];let changed=false;for(const key of paramsToStrip){if(url.searchParams.has(key)){url.searchParams.delete(key);changed=true;}}if(changed){const newSearch=url.searchParams.toString();const newUrl=url.pathname+(newSearch?`?${newSearch}`:\"\")+(url.hash||\"\");window.history.replaceState({},\"\",newUrl);}}catch(err){console.warn(\"[EmployeeAuth] exchangeCodeForSession threw\",err);}};const initAuth=async()=>{await handleOAuthCallbackIfNeeded();updateFromSession();await syncFromSupabase();};void initAuth();const{data:{subscription}}=client.auth.onAuthStateChange((_event,session)=>{if(session){persistSessionFromSupabase(session);}else{clearSession();}updateFromSession();});return()=>{window.removeEventListener(AUTH_EVENT_KEY,handler);window.removeEventListener(\"storage\",handler);subscription?.unsubscribe();};},[supabaseUrl,anonKey]);// Load public.profiles row when we have a user\nReact.useEffect(()=>{if(typeof window===\"undefined\")return;if(!supabase)return;if(!isAuthed||!user?.id){setProfile(null);setProfileHydrated(true);return;}let cancelled=false;setProfileHydrated(false);const loadProfile=async()=>{try{const{data,error}=await supabase.from(\"profiles\").select(\"id, email, full_name, role\").eq(\"id\",user.id).single();if(cancelled)return;if(error||!data){setProfile(null);}else{setProfile({id:data.id,email:data.email??null,full_name:data.full_name??null,role:data.role??null});}}catch(err){if(!cancelled){setProfile(null);}}finally{if(!cancelled)setProfileHydrated(true);}};loadProfile();return()=>{cancelled=true;};},[supabase,isAuthed,user?.id]);const employeeRole=React.useMemo(()=>{const raw=getRawRole(profile?.role,user);return mapDbRoleToEmployeeRole(raw);},[profile?.role,user]);const displayName=React.useMemo(()=>deriveDisplayName(profile,user),[profile,user]);const isReady=sessionHydrated&&(!isAuthed||profileHydrated);/* ---------- Redirect logic for unauth / customer / jobs routes (bangautoglass.com only) ---------- */React.useEffect(()=>{if(typeof window===\"undefined\")return;if(!isReady)return;const host=window.location.hostname||\"\";// Only run redirects when actually on bangautoglass.com (or its subdomains)\nif(!host.endsWith(\"bangautoglass.com\"))return;const pathname=window.location.pathname||\"\";// Not logged in → send to employee login\nif(!isAuthed){if(!pathname.startsWith(\"/employee/login\")){window.location.href=\"https://bangautoglass.com/employee/login\";}return;}// Logged in but role is \"Customer\" → send to customer portal\nconst rawRole=(profile?.role??\"\").trim().toLowerCase();if(rawRole===\"customer\"){if(!pathname.startsWith(\"/customer/my-account\")){window.location.href=\"https://bangautoglass.com/customer/my-account\";}return;}// Extra gate: /employee/jobs and anything under it is only for the single owner account\nconst isJobsRoute=pathname===\"/employee/jobs\"||pathname.startsWith(\"/employee/jobs/\");if(isJobsRoute){const profileId=profile?.id??\"\";const userId=user?.id??\"\";const profileEmail=(profile?.email||\"\").toString().toLowerCase();const userEmail=(user?.email||\"\").toString().toLowerCase();const isJobsOwner=profileId===JOBS_OWNER_ID||userId===JOBS_OWNER_ID||profileEmail===JOBS_OWNER_EMAIL.toLowerCase()||userEmail===JOBS_OWNER_EMAIL.toLowerCase();if(!isJobsOwner){// Redirect other employees away from the jobs area\nwindow.location.href=\"https://bangautoglass.com/employee\";}}},[isReady,isAuthed,profile?.role,profile?.id,profile?.email,user?.id,user?.email]);/* ---------------------------------------------------------------------------------------- */const signOut=React.useCallback(async()=>{const client=supabase||getSupabaseBrowserClient({supabaseUrl,anonKey});try{await client?.auth.signOut();}catch{// ignore errors\n}clearSession();setIsAuthed(false);setUser(null);setProfile(null);},[supabase,supabaseUrl,anonKey]);const authState={isReady,isAuthed,user,profile,employeeRole,displayName,supabase,signOut};return /*#__PURE__*/_jsx(_Fragment,{children:children(authState)});}/* ---------- Framer property controls ---------- */addPropertyControls(EmployeeAuth,{supabaseUrl:{type:ControlType.String,title:\"Supabase URL\",defaultValue:\"\",placeholder:\"https://xyzcompany.supabase.co\"},anonKey:{type:ControlType.String,title:\"Anon Key\",defaultValue:\"\",placeholder:\"supabase anon key\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"EmployeeRole\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"EmployeeAuth\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmployeeAuthProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmployeeAuthState\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmployeeProfileRow\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./EmployeeAuth.map","// EmployeeHeader.tsx — visual toolbar for employee workspace\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import ThemeProvider,{gradients,theme,breakpoints}from\"https://framerusercontent.com/modules/CYXvMRR9Z48cuk2c8HVV/erVSAe0pXGxiCmdN5mMy/Theme.js\";import EmployeeAuth from\"https://framerusercontent.com/modules/ncM4mdxhyI59LUE2bJfk/ax4uIfdO6tw5hyazfmxb/EmployeeAuth.js\";// Role-gated navigation groups\nconst NAV_SECTIONS=[{id:\"technician\",label:\"Technician\",roles:[\"technician\"],items:[{label:\"My Jobs\",href:\"/employee/technician/my-jobs\"},{label:\"Scheduler\",href:\"/employee/technician/scheduler\"}]},{id:\"sales\",label:\"Sales\",roles:[\"sales_rep\"],items:[{label:\"Submit Sale\",href:\"/employee/sales-representative/submit-sale\"},{label:\"All Sales\",href:\"/employee/sales-representative/all-jobs\"}]},{id:\"jobs\",label:\"Jobs\",roles:[\"admin\"],items:[{label:\"All Jobs\",href:\"/employee/jobs/all-jobs\"},{label:\"Create Work Order\",href:\"/employee/jobs/create-work-order\"},{label:\"Scheduler\",href:\"/employee/jobs/scheduler\"}]},{id:\"admin\",label:\"Admin\",roles:[\"admin\"],items:[{label:\"Customers\",href:\"/employee/admin/customers\"},{label:\"Backlinks\",href:\"/employee/admin/backlinks\"},{label:\"Bangtime\",href:\"/employee/admin/bangtime\"},{label:\"Bang Blaster\",href:\"/employee/admin/bang-blaster\"},{label:\"Employee Data\",href:\"/employee/admin/employee-data\"},{label:\"Reports\",href:\"/employee/admin/reports\"},{label:\"Billing\",href:\"/employee/admin/billing\"}]},{id:\"account\",label:\"Account\",roles:[\"admin\",\"sales_rep\",\"technician\"],items:[{label:\"My Account\",href:\"/employee/my-account\"},{label:\"Settings\",href:\"/employee/settings\"},{label:\"Logout\",href:\"#\"}]}];/* ---------- Role normalization helper (case-insensitive) ---------- */function normalizeRole(role){const r=(role??\"\").toString().trim().toLowerCase();if(r===\"admin\")return\"admin\";if(r===\"sales_rep\"||r===\"sales-rep\"||r===\"sales representative\"||r===\"sales\"){return\"sales_rep\";}if(r===\"technician\")return\"technician\";// Fallback to least-privileged view\nreturn\"technician\";}/* ---------- Visual-only header (no auth logic) ---------- */function EmployeeHeaderInner({activePath,includeThemeStyles,employeeName,employeeRole,onLogoutClick,showNav}){const[currentPath,setCurrentPath]=React.useState(activePath??\"\");React.useEffect(()=>{if(activePath){setCurrentPath(activePath);return;}if(typeof window!==\"undefined\"){setCurrentPath(window.location.pathname);}},[activePath]);const headerStyles=React.useMemo(()=>`\n/* ===== Shared utility ===== */\n.employee-header-sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0,0,0,0);\n  white-space: nowrap;\n  border: 0;\n}\n\n/* ===== Root container ===== */\n.employee-header-root {\n  --eh-bg:#ffffff;\n  --eh-text:#111827;\n  --eh-muted:#6B7280;\n  --eh-border:#E5E7EB;\n  --eh-border-strong:#D1D5DB;\n  --eh-surface:#F9FAFB;\n  --eh-surface-strong:#F3F4F6;\n  --eh-shadow-soft:0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);\n  position: sticky;\n  top: 0;\n  z-index: 40;\n  background: var(--eh-bg);\n  color: var(--eh-text);\n  box-shadow: var(--eh-shadow-soft);\n}\n\n/* Outer layout uses .u-outer / .u-frame from Theme.tsx */\n.employee-header-inner {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  padding: 0px 0;\n}\n\n/* ===== Top bar ===== */\n.employee-header-top {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  min-height: ${theme.sizes.headerH};\n}\n\n/* ===== Left cluster: logo + title ===== */\n.employee-header-left {\n  display: flex;\n  align-items: center;\n  gap: 14px;\n}\n\n/* Brand logo – uses image instead of BA circle */\n.employee-header-logo {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 34px;\n  height: 34px;\n  border-radius: 999px;\n  overflow: hidden;\n  background: #020617;\n}\n\n.employee-header-logo-img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n}\n\n/* Title */\n.employee-header-title {\n  display: flex;\n  flex-direction: column;\n}\n\n.employee-header-title-main {\n  font-family: ${theme.fonts.display};\n  font-size: 16px;\n  font-weight: 600;\n  letter-spacing: .02em;\n  color: var(--eh-text);\n}\n\n/* ===== Center cluster: search + CTA ===== */\n.employee-header-center {\n  flex: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: 10px;\n  margin: 0 12px;\n}\n\n/* ===== Right cluster: account avatar ===== */\n.employee-header-right {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n}\n\n/* ===== Bottom navigation (desktop + tablet) ===== */\n.employee-header-nav {\n  display: none;\n  align-items: center;\n  gap: 12px;\n  width: 100%;\n  flex-wrap: wrap;\n  justify-content: center;\n}\n\n/* Flat nav links */\n.employee-header-nav-item-link {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  padding: 6px 10px;\n  border-radius: 999px;\n  font-size: 13px;\n  text-decoration: none;\n  color: var(--eh-text);\n  background: transparent;\n  border: 1px solid transparent;\n  transition: background .14s ease-out, border-color .14s ease-out, color .14s ease-out;\n}\n\n.employee-header-nav-item-link:hover {\n  background: var(--eh-surface);\n  border-color: var(--eh-border);\n}\n\n.employee-header-nav-item-link--active {\n  background: ${gradients.cta};\n  color: #022c22;\n  border-color: transparent;\n}\n\n/* ===== Search (top center) ===== */\n.employee-header-search {\n  display: none;\n  align-items: center;\n  gap: 6px;\n  padding: 6px 12px;\n  border-radius: 999px;\n  background: #ffffff;\n  border: 1px solid var(--eh-border);\n  width: 100%;\n  max-width: 600px;\n  height: 44px;\n  box-shadow: none; /* removed shadow */\n  flex: 1;\n}\n\n.employee-header-search-icon {\n  display: inline-flex;\n  width: 16px;\n  height: 16px;\n  color: #9CA3AF;\n}\n\n.employee-header-search-icon-svg {\n  width: 100%;\n  height: 100%;\n  stroke: currentColor;\n  stroke-width: 1.8;\n  fill: none;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n}\n\n.employee-header-search-input {\n  border: none;\n  background: transparent;\n  font-size: 13px;\n  color: var(--eh-text);\n  width: 100%;\n  outline: none;\n}\n\n.employee-header-search-input::placeholder {\n  color: #9CA3AF;\n}\n\n/* Primary CTA */\n.employee-header-cta {\n  display: none;\n  align-items: center;\n  justify-content: center;\n  padding: 8px 18px;\n  border-radius: 999px;\n  border: none;\n  cursor: pointer;\n  font-size: 13px;\n  font-weight: 500;\n  color: #ffffff;\n  background: ${gradients.cta};\n  box-shadow: none;\n  height: 44px;\n  transition: transform .08s ease-out, box-shadow .12s ease-out;\n}\n\n.employee-header-cta:hover {\n  transform: translateY(-1px);\n  box-shadow: none;\n}\n\n/* Avatar */\n.employee-header-avatar {\n  display: inline-flex;\n  align-items: center;\n  gap: 6px;\n  padding: 0;\n  border-radius: 0;\n  background: transparent;\n  border: none;\n  position: relative;\n  cursor: pointer;\n}\n\n.employee-header-avatar-initials {\n  width: 28px;\n  height: 28px;\n  border-radius: 999px;\n  background: #EFF6FF;\n  border: 1px solid #DBEAFE;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 12px;\n  font-weight: 600;\n  color: #111827;\n}\n\n.employee-header-avatar-name {\n  font-size: 12px;\n  color: var(--eh-text);\n}\n\n/* Account dropdown attached to avatar */\n.employee-header-account-dropdown {\n  position: absolute;\n  top: 100%; /* no gap so hover can move into dropdown */\n  right: 0;\n  min-width: 200px;\n  background: #ffffff;\n  color: var(--eh-text);\n  border-radius: 14px;\n  box-shadow: 0 18px 45px rgba(15,23,42,.16);\n  border: 1px solid var(--eh-border);\n  padding: 8px;\n  opacity: 0;\n  pointer-events: none;\n  transform: translateY(4px);\n  transition: opacity .14s ease-out, transform .14s ease-out;\n  z-index: 60;\n  display: flex;\n  flex-direction: column;\n  align-items: stretch;\n}\n\n/* Force account items into a single vertical column */\n.employee-header-account-dropdown .employee-header-nav-item-link {\n  display: flex;\n  justify-content: flex-start;\n  width: 100%;\n  margin-bottom: 2px;\n}\n\n.employee-header-account-dropdown .employee-header-nav-item-link:last-of-type {\n  margin-bottom: 0;\n}\n\n.employee-header-avatar:hover .employee-header-account-dropdown,\n.employee-header-avatar:focus-within .employee-header-account-dropdown {\n  opacity: 1;\n  pointer-events: auto;\n  transform: translateY(0);\n}\n\n/* Hamburger styles kept (not used) */\n.employee-header-menu-button {\n  display: none;\n}\n\n/* ===== Tablet and up ===== */\n@media (min-width: ${breakpoints.tablet.min}) {\n  .employee-header-inner {\n    gap: 4px;\n  }\n\n  .employee-header-top {\n    gap: 24px;\n  }\n\n  .employee-header-nav {\n    display: flex;\n    border-top: 1px solid var(--eh-border);\n    padding: 12px 0;\n  }\n\n  .employee-header-center {\n    max-width: 100%;\n  }\n\n  .employee-header-search {\n    display: flex;\n  }\n\n  .employee-header-right {\n    gap: 10px;\n  }\n\n  .employee-header-cta {\n    display: inline-flex;\n  }\n}\n\n/* ===== Desktop tweaks ===== */\n@media (min-width: ${breakpoints.desktopMin}) {\n  .employee-header-top {\n    gap: 32px;\n  }\n\n  .employee-header-title-main {\n    font-size: 17px;\n  }\n}\n\n/* ===== Mobile layout ===== */\n@media (max-width: ${breakpoints.mobileMax}) {\n  .employee-header-top {\n    flex-wrap: wrap;\n    align-items: flex-start;\n    row-gap: 8px;\n  }\n\n  .employee-header-left {\n    flex: 1 1 auto;\n  }\n\n  .employee-header-right {\n    order: 2;\n  }\n\n  .employee-header-center {\n    order: 3;\n    width: 100%;\n    margin: 8px 0 0;\n  }\n\n  .employee-header-search {\n    display: flex;\n    max-width: 100%;\n  }\n\n  .employee-header-cta {\n    display: none; /* hide CTA on small screens for simplicity */\n  }\n\n  .employee-header-nav {\n    display: flex;\n    border-top: 1px solid var(--eh-border);\n    padding: 8px 0;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .employee-header-nav::-webkit-scrollbar {\n    display: none;\n  }\n\n  .employee-header-nav-item-link {\n    white-space: nowrap;\n  }\n\n  .employee-header-top {\n    gap: 12px;\n  }\n\n  .employee-header-title-main {\n    font-size: 14px;\n  }\n}\n`,[]);const getInitials=name=>{if(!name)return\"BA\";const parts=name.trim().split(\" \");if(parts.length===1)return parts[0].charAt(0).toUpperCase();return(parts[0].charAt(0)+parts[parts.length-1].charAt(0)).toUpperCase();};const isActiveHref=href=>{if(!currentPath)return false;if(currentPath===href)return true;if(currentPath.startsWith(href+\"/\"))return true;return false;};const normalizedRole=React.useMemo(()=>normalizeRole(employeeRole),[employeeRole]);// ---------- Role-based sections ----------\nconst navSectionsForRole=React.useMemo(()=>{if(!showNav)return[];const allowedByRole={admin:[\"admin\",\"jobs\",\"account\"],sales_rep:[\"sales\",\"account\"],technician:[\"technician\",\"account\"]};const allowedIds=allowedByRole[normalizedRole]??[\"technician\",\"account\"];return NAV_SECTIONS.filter(section=>allowedIds.includes(section.id));},[normalizedRole,showNav]);// Flattened nav items for bottom row (exclude Account section)\nconst navItemsForRole=React.useMemo(()=>{if(!showNav)return[];return navSectionsForRole.filter(section=>section.id!==\"account\").flatMap(section=>section.items);},[navSectionsForRole,showNav]);// Account items (My Account / Settings / Logout) for avatar dropdown\nconst accountItems=React.useMemo(()=>{const accountSection=navSectionsForRole.find(section=>section.id===\"account\");return accountSection?accountSection.items:[];},[navSectionsForRole]);const ctaLabel=normalizedRole===\"admin\"?\"Create Work Order\":\"Submit Sale\";const ctaHref=normalizedRole===\"admin\"?\"https://bangautoglass.com/employee/create-work-order\":\"https://bangautoglass.com/employee/submit-sale\";const handleCtaClick=()=>{if(typeof window===\"undefined\")return;window.location.href=ctaHref;};const displayName=employeeName??\"Employee\";return /*#__PURE__*/_jsxs(_Fragment,{children:[includeThemeStyles!==false&&/*#__PURE__*/_jsx(ThemeProvider,{}),/*#__PURE__*/_jsx(\"style\",{children:headerStyles}),/*#__PURE__*/_jsx(\"header\",{className:\"employee-header-root\",children:/*#__PURE__*/_jsx(\"div\",{className:\"u-outer\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"u-frame employee-header-inner\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"employee-header-top\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"employee-header-left\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"employee-header-logo\",children:/*#__PURE__*/_jsx(\"img\",{src:\"https://framerusercontent.com/images/cQp5LtDWTgcGPnP47JUALta3tkI.png?width=128&height=128\",alt:\"Bang AutoGlass logo\",className:\"employee-header-logo-img\"})}),/*#__PURE__*/_jsx(\"div\",{className:\"employee-header-title\",children:/*#__PURE__*/_jsx(\"div\",{className:\"employee-header-title-main\",children:\"Bang AutoGlass\"})})]}),/*#__PURE__*/_jsxs(\"div\",{className:\"employee-header-center\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"employee-header-search\",role:\"search\",children:[/*#__PURE__*/_jsx(\"span\",{className:\"employee-header-sr-only\",children:\"Search\"}),/*#__PURE__*/_jsx(\"span\",{className:\"employee-header-search-icon\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsxs(\"svg\",{className:\"employee-header-search-icon-svg\",viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",focusable:\"false\",children:[/*#__PURE__*/_jsx(\"circle\",{cx:\"11\",cy:\"11\",r:\"6\"}),/*#__PURE__*/_jsx(\"line\",{x1:\"16\",y1:\"16\",x2:\"21\",y2:\"21\"})]})}),/*#__PURE__*/_jsx(\"input\",{id:\"employee-header-search-input\",className:\"employee-header-search-input\",placeholder:\"Search jobs, customers…\"})]}),showNav&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"employee-header-cta\",onClick:handleCtaClick,children:ctaLabel})]}),/*#__PURE__*/_jsx(\"div\",{className:\"employee-header-right\",children:/*#__PURE__*/_jsxs(\"div\",{className:\"employee-header-avatar\",tabIndex:0,\"aria-haspopup\":\"true\",\"aria-label\":\"Account menu\",children:[/*#__PURE__*/_jsx(\"div\",{className:\"employee-header-avatar-initials\",children:getInitials(displayName)}),/*#__PURE__*/_jsx(\"span\",{className:\"employee-header-avatar-name\",children:displayName}),showNav&&accountItems.length>0&&/*#__PURE__*/_jsx(\"div\",{className:\"employee-header-account-dropdown\",children:accountItems.map(item=>/*#__PURE__*/_jsx(\"a\",{href:item.href,className:\"employee-header-nav-item-link\",onClick:e=>{if(item.label===\"Logout\"&&onLogoutClick){e.preventDefault();onLogoutClick();}},children:item.label},item.label+item.href))})]})})]}),navItemsForRole.length>0&&/*#__PURE__*/_jsx(\"nav\",{className:\"employee-header-nav\",\"aria-label\":\"Employee navigation\",children:navItemsForRole.map(item=>/*#__PURE__*/_jsx(\"a\",{href:item.href,className:\"employee-header-nav-item-link\"+(isActiveHref(item.href)?\" employee-header-nav-item-link--active\":\"\"),children:item.label},item.label+item.href))})]})})})]});}/* ---------- Public wrapper: wires in EmployeeAuth ---------- */export default function EmployeeHeader({activePath,includeThemeStyles=true,supabaseUrl,supabaseAnonKey}){return /*#__PURE__*/_jsx(EmployeeAuth,{supabaseUrl:supabaseUrl,anonKey:supabaseAnonKey,children:({isReady,isAuthed,employeeRole,displayName,signOut})=>/*#__PURE__*/_jsx(EmployeeHeaderInner,{activePath:activePath,includeThemeStyles:includeThemeStyles,employeeName:displayName,employeeRole:employeeRole,onLogoutClick:isAuthed?signOut:undefined,showNav:isAuthed})});}/* ---------- Framer property controls ---------- */addPropertyControls(EmployeeHeader,{supabaseUrl:{type:ControlType.String,title:\"Supabase URL\",defaultValue:\"\",placeholder:\"https://xyzcompany.supabase.co\"},supabaseAnonKey:{type:ControlType.String,title:\"Anon Key\",defaultValue:\"\",placeholder:\"supabase anon key\"},activePath:{type:ControlType.String,title:\"Active Path (optional)\",defaultValue:\"\",placeholder:\"/employee/admin/customers\"},includeThemeStyles:{type:ControlType.Boolean,title:\"Include Theme\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"EmployeeHeader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"EmployeeHeaderProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}