Fraser commited on
Commit
9c2da23
·
1 Parent(s): 9774b79
src/lib/components/Piclets/PicletDetail.svelte CHANGED
@@ -131,7 +131,7 @@
131
  </div>
132
  </div>
133
 
134
- <!-- Level and XP Progress -->
135
  <div class="level-xp-section">
136
  <div class="level-info">
137
  <span class="level-label">Level {updatedInstance.level}</span>
@@ -142,15 +142,36 @@
142
  {/if}
143
  </div>
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  {#if updatedInstance.level < 100}
146
- <div class="xp-progress-bar">
147
- <div class="xp-progress-fill" style="width: {xpTowardsNext.percentage}%"></div>
 
 
 
 
 
 
 
 
 
 
 
 
148
  </div>
149
  {/if}
150
-
151
- <div class="hp-info">
152
- <span class="hp-label">HP: {updatedInstance.currentHp}/{updatedInstance.maxHp}</span>
153
- </div>
154
  </div>
155
 
156
  <!-- Tab Bar -->
@@ -526,7 +547,7 @@
526
  gap: 4px;
527
  }
528
 
529
- /* Level and XP Section */
530
  .level-xp-section {
531
  background: white;
532
  margin: 0 16px 16px;
@@ -539,7 +560,7 @@
539
  display: flex;
540
  justify-content: space-between;
541
  align-items: center;
542
- margin-bottom: 12px;
543
  }
544
 
545
  .level-label {
@@ -554,35 +575,78 @@
554
  color: #8e8e93;
555
  }
556
 
557
- .xp-progress-bar {
558
- width: 100%;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
559
  height: 8px;
560
- background: #e5e5ea;
561
  border-radius: 4px;
562
  overflow: hidden;
563
- margin-bottom: 12px;
 
564
  }
565
 
566
- .xp-progress-fill {
567
  height: 100%;
568
- background: linear-gradient(90deg, #2196f3 0%, #21cbf3 100%);
 
 
 
 
 
 
569
  border-radius: 4px;
570
- transition: width 0.8s ease;
 
 
571
  }
572
 
573
- .hp-info {
574
- display: flex;
575
- justify-content: center;
 
576
  }
577
 
578
- .hp-label {
579
- font-size: 14px;
580
  font-weight: 600;
581
- color: #495057;
582
- background: rgba(76, 175, 80, 0.1);
583
- border: 1px solid #4caf50;
584
- border-radius: 16px;
585
- padding: 4px 12px;
 
 
 
 
 
 
 
 
 
 
 
586
  }
587
 
588
  @media (min-width: 768px) {
 
131
  </div>
132
  </div>
133
 
134
+ <!-- Level and Status Progress -->
135
  <div class="level-xp-section">
136
  <div class="level-info">
137
  <span class="level-label">Level {updatedInstance.level}</span>
 
142
  {/if}
143
  </div>
144
 
145
+ <!-- HP Section -->
146
+ <div class="stat-row">
147
+ <div class="stat-label">HP</div>
148
+ <div class="hp-bar">
149
+ <div
150
+ class="hp-fill"
151
+ style="width: {(updatedInstance.currentHp / updatedInstance.maxHp) * 100}%; background-color: {getHpColor(updatedInstance.currentHp, updatedInstance.maxHp)}"
152
+ ></div>
153
+ </div>
154
+ <div class="stat-value">{updatedInstance.currentHp}/{updatedInstance.maxHp}</div>
155
+ </div>
156
+
157
+ <!-- XP Section -->
158
  {#if updatedInstance.level < 100}
159
+ <div class="stat-row">
160
+ <div class="stat-label">XP</div>
161
+ <div class="xp-bar">
162
+ <div
163
+ class="xp-fill"
164
+ style="width: {xpTowardsNext.percentage}%"
165
+ ></div>
166
+ </div>
167
+ <div class="stat-value">{xpTowardsNext.current}/{xpTowardsNext.needed}</div>
168
+ </div>
169
+ {:else}
170
+ <div class="stat-row">
171
+ <div class="stat-label">XP</div>
172
+ <div class="max-level-indicator">MAX LEVEL</div>
173
  </div>
174
  {/if}
 
 
 
 
175
  </div>
176
 
177
  <!-- Tab Bar -->
 
547
  gap: 4px;
548
  }
549
 
550
+ /* Level and Status Section */
551
  .level-xp-section {
552
  background: white;
553
  margin: 0 16px 16px;
 
560
  display: flex;
561
  justify-content: space-between;
562
  align-items: center;
563
+ margin-bottom: 16px;
564
  }
565
 
566
  .level-label {
 
575
  color: #8e8e93;
576
  }
577
 
578
+ /* Stat Rows (HP and XP bars) */
579
+ .stat-row {
580
+ display: flex;
581
+ align-items: center;
582
+ gap: 8px;
583
+ margin-bottom: 8px;
584
+ }
585
+
586
+ .stat-row:last-child {
587
+ margin-bottom: 0;
588
+ }
589
+
590
+ .stat-label {
591
+ font-size: 12px;
592
+ font-weight: 600;
593
+ color: #666;
594
+ text-transform: uppercase;
595
+ letter-spacing: 0.3px;
596
+ width: 24px;
597
+ flex-shrink: 0;
598
+ }
599
+
600
+ /* HP Bar */
601
+ .hp-bar {
602
  height: 8px;
603
+ background: #e0e0e0;
604
  border-radius: 4px;
605
  overflow: hidden;
606
+ flex: 1;
607
+ min-width: 80px;
608
  }
609
 
610
+ .hp-fill {
611
  height: 100%;
612
+ transition: width 0.5s ease, background-color 0.3s ease;
613
+ }
614
+
615
+ /* XP Bar */
616
+ .xp-bar {
617
+ height: 8px;
618
+ background: #e0e0e0;
619
  border-radius: 4px;
620
+ overflow: hidden;
621
+ flex: 1;
622
+ min-width: 80px;
623
  }
624
 
625
+ .xp-fill {
626
+ height: 100%;
627
+ background: #2196f3;
628
+ transition: width 1.2s ease-out;
629
  }
630
 
631
+ .stat-value {
632
+ font-size: 12px;
633
  font-weight: 600;
634
+ color: #666;
635
+ min-width: 60px;
636
+ text-align: right;
637
+ flex-shrink: 0;
638
+ }
639
+
640
+ .max-level-indicator {
641
+ font-size: 12px;
642
+ font-weight: 600;
643
+ color: #ff6f00;
644
+ background: rgba(255, 111, 0, 0.1);
645
+ border: 1px solid #ff6f00;
646
+ border-radius: 4px;
647
+ padding: 2px 8px;
648
+ flex: 1;
649
+ text-align: center;
650
  }
651
 
652
  @media (min-width: 768px) {