diff --git a/src/app/dashboard/dashboard.css b/src/app/dashboard/dashboard.css index d625e32..82eee53 100644 --- a/src/app/dashboard/dashboard.css +++ b/src/app/dashboard/dashboard.css @@ -1265,6 +1265,20 @@ .dash-root .nl-photo-chip { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600; padding: 5px 10px; border-radius: 99px; background: color-mix(in srgb, var(--green) 15%, transparent); color: var(--green); } .dash-root .ds-select.is-placeholder { color: var(--faint, var(--muted)); } + /* Canvasser search (Door Knock source) */ + .dash-root .nl-canvasser { position: relative; } + .dash-root .nl-canvasser-menu { position: absolute; top: calc(100% + 4px); left: 0; right: 0; z-index: 30; max-height: 220px; overflow-y: auto; border: 1px solid var(--border-2); border-radius: 12px; background: var(--panel); box-shadow: 0 12px 32px rgba(0,0,0,0.28); padding: 5px; } + .dash-root .nl-canvasser-opt { display: flex; align-items: center; gap: 9px; width: 100%; padding: 7px 9px; border: none; border-radius: 9px; background: transparent; color: var(--text); font-family: inherit; font-size: 13px; text-align: left; cursor: pointer; transition: 0.12s; } + .dash-root .nl-canvasser-opt:hover { background: var(--panel-2); } + .dash-root .nl-canvasser-name { font-weight: 700; } + .dash-root .nl-canvasser-email { color: var(--muted); font-size: 12px; } + .dash-root .nl-canvasser-opt .nl-canvasser-email { margin-left: auto; } + .dash-root .nl-canvasser-empty { padding: 10px; color: var(--muted); font-size: 12.5px; text-align: center; } + .dash-root .nl-canvasser-chip { display: flex; align-items: center; gap: 9px; padding: 7px 10px; border: 1px solid var(--border-2); border-radius: 12px; background: var(--panel-2); } + .dash-root .nl-canvasser-chip .nl-canvasser-email { margin-left: 2px; } + .dash-root .nl-canvasser-clear { margin-left: auto; display: grid; place-items: center; width: 26px; height: 26px; border: none; border-radius: 8px; background: transparent; color: var(--muted); cursor: pointer; transition: 0.12s; } + .dash-root .nl-canvasser-clear:hover { background: color-mix(in srgb, var(--red) 15%, transparent); color: var(--red); } + /* ========================================================== */ /* Lead Verification — stat tiles + filters + table */ /* ========================================================== */ diff --git a/src/components/dashboard/leads-data.ts b/src/components/dashboard/leads-data.ts index f11c57e..a4a5a82 100644 --- a/src/components/dashboard/leads-data.ts +++ b/src/components/dashboard/leads-data.ts @@ -202,17 +202,17 @@ export const PRIORITY_META: Record void }) { const repOptions = [{ id: "", initials: "—", name: "Unassigned" }, ...REPS]; + const stepIdx = FULL_STEPS.findIndex((s) => s.value === section); + const isFirstStep = stepIdx <= 0; + const isLastStep = stepIdx === FULL_STEPS.length - 1; + const goNext = () => { if (!isLastStep) setSection(FULL_STEPS[stepIdx + 1].value); }; + const goBack = () => { if (!isFirstStep) setSection(FULL_STEPS[stepIdx - 1].value); }; + return ( void }) { subtitle="Full lead profile with insurance and assignment details." icon="plus" footer={ - <> - Cancel - Create Lead - + mode === "full" ? ( + <> + Cancel + {!isFirstStep && Back} + {isLastStep + ? Create Lead + : Next} + + ) : ( + <> + Cancel + Create Lead + + ) } >
@@ -384,12 +408,17 @@ function NewLead({ open, onClose }: { open: boolean; onClose: () => void }) { setPhone(0, "number", e.target.value)} placeholder="(555) 000-0000" /> -
- +