Add 4 UX improvements to spelling/flashcards panel
- Assign → button on each list row opens a popup to pick a kid directly without scrolling up to the assignment dropdowns - Hide/Unhide button on built-in lists (stored in localStorage) keeps UNGROUPED clean; Show hidden toggle reveals them dimmed when needed - Mastery progress bar on each kid showing X/Y words mastered for their current assigned list (server now returns listProgress in /api/overview) - Filter-lists / filter-decks search input for fast lookup by name Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
5c2b5baec2
commit
774979f2e4
4 files changed
+152
-21
No files matched your search
@@ -220,6 +220,7 @@ button.danger { background: var(--bad); }
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.item-row .grow { flex: 1; min-width: 120px; }
|
||||
.muted-label { font-size: 0.82rem; color: var(--muted); white-space: nowrap; }
|
||||
.item-row select { padding: 0.4rem; border-radius: 8px; border: 2px solid #d8d2c0; font-family: inherit; }
|
||||
.item-row button {
|
||||
font-size: 0.9rem; font-family: inherit; border: none; border-radius: 8px;
|
||||
@@ -338,6 +339,37 @@ table.results tr:nth-child(even) td { background: #faf7ee; }
|
||||
.admin-main h2 { margin: 1.5rem 0 0.5rem; font-size: 1.15rem; }
|
||||
.panel { text-align: left; }
|
||||
|
||||
/* ---------- filter bar ---------- */
|
||||
.filter-bar { display: flex; gap: 0.5rem; align-items: center; margin-bottom: 0.5rem; }
|
||||
.filter-bar input[type="search"] {
|
||||
flex: 1; font-family: inherit; font-size: 0.95rem;
|
||||
padding: 0.4rem 0.7rem; border: 2px solid #d8d2c0; border-radius: 10px;
|
||||
}
|
||||
|
||||
/* ---------- mastery progress ---------- */
|
||||
.mastery-stat { font-size: 0.85rem; color: var(--muted); display: flex; align-items: center; gap: 0.4rem; white-space: nowrap; }
|
||||
.mastery-bar { display: inline-block; width: 70px; height: 7px; background: #e8e2d0; border-radius: 4px; overflow: hidden; flex-shrink: 0; }
|
||||
.mastery-fill { display: block; height: 100%; background: var(--accent); border-radius: 4px; transition: width 0.3s; }
|
||||
|
||||
/* ---------- assign popup ---------- */
|
||||
#assign-popup {
|
||||
position: absolute; z-index: 200;
|
||||
background: var(--card); border: 2px solid #d8d2c0; border-radius: 12px;
|
||||
padding: 0.6rem; box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
min-width: 160px;
|
||||
}
|
||||
.assign-popup-label { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--muted); margin: 0 0 0.4rem; }
|
||||
#assign-popup-students { display: flex; flex-direction: column; gap: 0.3rem; }
|
||||
.assign-popup-student {
|
||||
font-size: 0.95rem; font-family: inherit; font-weight: 600;
|
||||
background: #f5f1e8; color: var(--ink); border: none;
|
||||
border-radius: 8px; padding: 0.45rem 0.8rem; cursor: pointer; text-align: left;
|
||||
}
|
||||
.assign-popup-student:hover { background: var(--accent); color: #fff; }
|
||||
|
||||
/* ---------- hidden list items ---------- */
|
||||
.list-hidden-item { opacity: 0.45; }
|
||||
|
||||
/* ---------- toggle button rows (new/bulk import) ---------- */
|
||||
.toggle-btns { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 0.75rem; }
|
||||
.toggle-btns button.active { background: var(--accent) !important; color: #fff !important; }
|
||||
|
||||
Reference in new issue
Block a user