Add shared row highlighting to executive meeting scheduler

Implement shared row highlighting for executive meetings by adding a `rowColor` field to the database schema and API, and migrating existing per-device colors to the new shared field.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 77cfe984-2c65-4152-bb7a-0df28274fe66
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 273accfc-a301-41b9-bd20-c121cb4e79c7
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/c3c252e4-c83d-40ca-9fff-99a3ea60701e/77cfe984-2c65-4152-bb7a-0df28274fe66/g7BgHDL
Replit-Helium-Checkpoint-Created: true
This commit is contained in:
riyadhafraa
2026-05-01 15:24:59 +00:00
parent 6c6f9c1848
commit ab5ec2e2e2
8 changed files with 615 additions and 112 deletions
+9
View File
@@ -45,6 +45,15 @@ export const executiveMeetingsTable = pgTable(
mergeStartColumn: varchar("merge_start_column", { length: 32 }),
mergeEndColumn: varchar("merge_end_column", { length: 32 }),
mergeText: text("merge_text"),
// Optional row-highlight colour for the daily schedule grid. NULL =
// "default" (no tint). Allowed non-null values come from the
// ROW_COLOR_OPTIONS palette in the frontend (red, amber, green,
// blue, violet, gray) and are validated app-side. Stored on the
// meeting row itself (not per-user) so the colour is shared across
// every viewer in real time, since it carries an editorial
// signal about the meeting (urgent / VIP / etc.) rather than a
// personal viewing preference.
rowColor: varchar("row_color", { length: 16 }),
createdBy: integer("created_by").references(() => usersTable.id, {
onDelete: "set null",
}),