## Implementation Plan: Add Loading/In-Progress Animations to Post Action Buttons ### Overview Connect the three layers (CSS, templates, JS) that are currently missing for post action buttons. The existing `btn-spinner` + `is-loading` pattern is the intended design — we will extend it to the unmodified buttons. ### Step 1 – CSS **File:** `devplacepy/static/css/base.css` (or the file containing `.btn.is-loading` and `.btn-spinner`) Add selectors for all missing button classes so that `.is-loading` triggers `pointer-events: none` and shows the spinner child. ```css /* Existing pattern: .btn.is-loading .btn-spinner ... */ /* Add these new rules: */ .post-action-btn.is-loading, .comment-vote-btn.is-loading, .comment-action-btn.is-loading, .vote-star.is-loading, .comment-form-submit.is-loading { pointer-events: none; opacity: 0.7; /* optional: visual readonly cue */ } ``` (If the CSS for `.btn.is-loading` already sets `pointer-events: none; position: relative;` you may not need to repeat – just ensure the spinner is visible. Verify that `.btn-spinner` is positioned correctly inside these buttons; if not, add a generic rule `.is-loading > .btn-spinner { display: inline-block; }`.) ### Step 2 – Templates Insert `` before the text label in every button listed in the investigation report. The following templates need modification (paths relative to `devplacepy/templates/`): | Template file | Button class / selector | Spinner insertion point | |---------------|------------------------|--------------------------| | `votes/_star_vote.html` | `.vote-star` | Inside `