feat: rebrand AgendaPro -> AgendaMax + calendar fixes + current-week demo seed

- Rebrand all user-facing text to AgendaMax
- Fix sidebar scrolling: card container no longer overflows html (flex h-full min-h-0)
- Fix calendar toolbar hover: active buttons keep readable contrast
- Sticky calendar toolbar (month/week/day always visible on scroll)
- Seed guarantees 2-4 appointments per day for current week (Mon-Sat)
This commit is contained in:
AgendaPro Dev
2026-07-27 10:11:16 -06:00
parent 4227db0c8b
commit d796538fd9
57 changed files with 2477 additions and 322 deletions
+10 -3
View File
@@ -6,6 +6,13 @@ import type { EmployeeStats } from "../../shared/types.ts";
export const employeesRouter = Router();
// commission_pct is sensitive (drives payouts) — only owner/admin may read it.
const EMP_PUBLIC_COLS =
"id, business_id, name, email, phone, color, role, active, rating, hire_date, created_at, specialties, working_hours, efficiency_score";
function empCols(req: AuthedRequest): string {
return req.user!.role === "owner" || req.user!.role === "admin" ? `${EMP_PUBLIC_COLS}, commission_pct` : EMP_PUBLIC_COLS;
}
function attachServices(emp: any) {
const ids = db
.prepare(`SELECT service_id FROM employee_services WHERE employee_id = ?`)
@@ -45,13 +52,13 @@ function computeStats(employeeId: number, businessId: number): EmployeeStats {
appointments_completed: completed.c,
revenue_total: completed.s,
avg_rating: Math.round((rating.r ?? 5) * 10) / 10,
utilization_pct: utilization,
share_pct: utilization,
};
}
employeesRouter.get("/", (req: AuthedRequest, res) => {
const rows = db
.prepare(`SELECT * FROM employees WHERE business_id = ? ORDER BY active DESC, name`)
.prepare(`SELECT ${empCols(req)} FROM employees WHERE business_id = ? ORDER BY active DESC, name`)
.all(req.user!.business_id) as any[];
const out = rows.map((r) => {
attachServices(r);
@@ -62,7 +69,7 @@ employeesRouter.get("/", (req: AuthedRequest, res) => {
});
employeesRouter.get("/:id", (req: AuthedRequest, res) => {
const emp = db.prepare(`SELECT * FROM employees WHERE id = ? AND business_id = ?`).get(
const emp = db.prepare(`SELECT ${empCols(req)} FROM employees WHERE id = ? AND business_id = ?`).get(
Number(req.params.id),
req.user!.business_id
) as any;