rcnn/web/src/ui/Panel.module.css
munsel 42197bfbc9 add coaster naming, challenge detail panel, and fix GeoJSON id bug
- Coaster editor: name input in top bar, saved/loaded with coaster data
- CoasterListPanel: show coaster name prominently alongside creator username
- ChallengesListPanel: drill-in detail view with center map, plan coaster,
  and accept challenge buttons; coaster count shown in list and detail
- AllCoastersPanel: coaster count visible in challenge entries
- Backend: add coaster_count to ChallengeMapSerializer and ChallengeDetailSerializer
- Fix: ChallengeLayer and ChallengesListPanel were reading f.properties.id
  (always undefined) instead of f.id — GeoFeatureModelSerializer puts the pk
  at the GeoJSON Feature level, not in properties
- Types: remove id from ChallengeMapProperties to reflect actual data shape

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-23 01:43:10 +02:00

59 lines
998 B
CSS

.panel {
position: fixed;
top: 52px; /* below global header */
right: 0;
bottom: 0;
width: 380px;
background: rgba(15, 15, 20, 0.92);
backdrop-filter: blur(12px);
color: #fff;
z-index: 20;
transform: translateX(100%);
transition: transform 0.25s ease;
display: flex;
flex-direction: column;
overflow: hidden;
border-left: 1px solid rgba(255, 255, 255, 0.1);
}
.panel.open {
transform: translateX(0);
}
.header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px 20px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
flex-shrink: 0;
}
.title {
margin: 0;
font-size: 18px;
font-weight: 600;
}
.closeBtn {
background: none;
border: none;
color: rgba(255, 255, 255, 0.6);
font-size: 18px;
cursor: pointer;
padding: 4px 8px;
border-radius: 4px;
line-height: 1;
}
.closeBtn:hover {
color: #fff;
background: rgba(255, 255, 255, 0.1);
}
.body {
flex: 1;
overflow-y: auto;
padding: 20px;
}