feat(fusion_clock): open shifts + self-assign + bulk apply [B4-B5]

Model: fclk_create_open_shifts/claim_open_shift/release_shift (days-before
cutoff + role eligibility)/bulk_apply. Planner: Open Shift… panel, open-shifts
strip with delete, Apply-to-dept; load includes open shifts. Portal: claim
open shifts + release own upcoming shifts with feedback banners. Tests for
claim/role-gate/release/bulk.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsinghpal
2026-06-04 21:12:10 -04:00
parent 68aaa132ee
commit 2ad94070c7
9 changed files with 514 additions and 1 deletions

View File

@@ -103,6 +103,53 @@
font-style: italic;
}
/* ---- Claim / release feedback + open shifts ---- */
.fpl-flash {
margin: 0 16px 12px;
padding: 10px 14px;
border-radius: 8px;
font-size: 13px;
}
.fpl-flash-err {
background: rgba(239, 68, 68, 0.10);
border: 1px solid rgba(239, 68, 68, 0.30);
color: #ef4444;
}
.fpl-flash-ok {
background: rgba(16, 185, 129, 0.10);
border: 1px solid rgba(16, 185, 129, 0.25);
color: var(--fclk-green);
}
.fpl-open-item {
align-items: center;
justify-content: space-between;
}
.fpl-claim-form,
.fpl-release-form {
display: inline-block;
margin: 0;
}
.fpl-release-btn {
display: block;
margin-top: 4px;
background: transparent;
border: 1px solid rgba(239, 68, 68, 0.35);
color: #ef4444;
font-size: 11px;
border-radius: 6px;
padding: 2px 8px;
cursor: pointer;
}
.fpl-release-btn:hover {
background: rgba(239, 68, 68, 0.10);
}
/* ---- Bottom padding so nav doesn't cover last shift ---- */
.fclk-container {
padding-bottom: 80px;