Fix radio admin StatusCard icons showing as Unicode escapes.
Local Build and Deploy / deploy (push) Successful in 56s

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
SimoandCursor committed 2026-07-15 21:45:57 +02:00
1 parent 7b6c02c07d
commit ea07950374
11 files changed
+34 -34

No files matched your search

+3 -3
View File
@@ -107,19 +107,19 @@ export default async function AdminRadioApiKeysPage() {
<StatusCard <StatusCard
label={t("apiKeysForm.totalKeys")} label={t("apiKeysForm.totalKeys")}
value={total} value={total}
icon="\u{1F511}" icon="🔑"
/> />
<StatusCard <StatusCard
label={t("apiKeysForm.active")} label={t("apiKeysForm.active")}
value={activeCount} value={activeCount}
state={activeCount > 0 ? "ok" : "neutral"} state={activeCount > 0 ? "ok" : "neutral"}
icon="\u{2705}" icon="✅"
/> />
<StatusCard <StatusCard
label={t("apiKeysForm.inactive")} label={t("apiKeysForm.inactive")}
value={inactiveCount} value={inactiveCount}
state={inactiveCount > 0 ? "warn" : "neutral"} state={inactiveCount > 0 ? "warn" : "neutral"}
icon="\u{1F6AB}" icon="🚫"
/> />
</div> </div>
)} )}
+3 -3
View File
@@ -110,19 +110,19 @@ export default async function AdminRadioAutoDjPage() {
<StatusCard <StatusCard
label={t("autoDjForm.tracks")} label={t("autoDjForm.tracks")}
value={tracks.length} value={tracks.length}
icon="\u{1F3B5}" icon="🎵"
/> />
<StatusCard <StatusCard
label={t("autoDjForm.active")} label={t("autoDjForm.active")}
value={activeCount} value={activeCount}
state={activeCount > 0 ? "ok" : "neutral"} state={activeCount > 0 ? "ok" : "neutral"}
icon="\u{25B6}\uFE0F" icon="▶️"
/> />
<StatusCard <StatusCard
label={t("autoDjForm.inactive")} label={t("autoDjForm.inactive")}
value={inactiveCount} value={inactiveCount}
state={inactiveCount > 0 ? "warn" : "neutral"} state={inactiveCount > 0 ? "warn" : "neutral"}
icon="\u{23F8}\uFE0F" icon="⏸️"
/> />
</div> </div>
)} )}
+3 -3
View File
@@ -90,19 +90,19 @@ export default async function AdminRadioBannersPage() {
<StatusCard <StatusCard
label={t("banners.title")} label={t("banners.title")}
value={banners.length} value={banners.length}
icon="\u{1F5BC}\uFE0F" icon="🖼️"
/> />
<StatusCard <StatusCard
label={t("banners.statusActive")} label={t("banners.statusActive")}
value={activeCount} value={activeCount}
state={activeCount > 0 ? "ok" : "neutral"} state={activeCount > 0 ? "ok" : "neutral"}
icon="\u{2705}" icon="✅"
/> />
<StatusCard <StatusCard
label={t("banners.statusHidden")} label={t("banners.statusHidden")}
value={hiddenCount} value={hiddenCount}
state={hiddenCount > 0 ? "warn" : "neutral"} state={hiddenCount > 0 ? "warn" : "neutral"}
icon="\u{1F6AB}" icon="🚫"
/> />
</div> </div>
)} )}
+3 -3
View File
@@ -72,12 +72,12 @@ export default async function AdminRadioEmbedPage() {
hasStream ? t("embedPage.configured") : t("embedPage.missing") hasStream ? t("embedPage.configured") : t("embedPage.missing")
} }
state={hasStream ? "ok" : "danger"} state={hasStream ? "ok" : "danger"}
icon="\u{1F4BB}" icon="💻"
/> />
<StatusCard <StatusCard
label={t("embedPage.radioName")} label={t("embedPage.radioName")}
value={radioName} value={radioName}
icon="\u{1F399}\uFE0F" icon="🎙️"
/> />
<StatusCard <StatusCard
label={t("embedPage.nowPlayingApi")} label={t("embedPage.nowPlayingApi")}
@@ -85,7 +85,7 @@ export default async function AdminRadioEmbedPage() {
nowPlayingApiUrl ? t("embedPage.set") : t("embedPage.notSet") nowPlayingApiUrl ? t("embedPage.set") : t("embedPage.notSet")
} }
state={nowPlayingApiUrl ? "ok" : "neutral"} state={nowPlayingApiUrl ? "ok" : "neutral"}
icon="\u{1F3B5}" icon="🎵"
/> />
</div> </div>
</section> </section>
+4 -4
View File
@@ -109,23 +109,23 @@ export default async function AdminRadioHistoryPage() {
<StatusCard <StatusCard
label={t("historyPage.showsLogged")} label={t("historyPage.showsLogged")}
value={history.length} value={history.length}
icon="\u{1F399}\uFE0F" icon="🎙️"
/> />
<StatusCard <StatusCard
label={t("historyPage.onAirNow")} label={t("historyPage.onAirNow")}
value={liveCount} value={liveCount}
state={liveCount > 0 ? "ok" : "neutral"} state={liveCount > 0 ? "ok" : "neutral"}
icon="\u{1F534}" icon="🔴"
/> />
<StatusCard <StatusCard
label={t("historyPage.uniqueDjs")} label={t("historyPage.uniqueDjs")}
value={uniqueDjs} value={uniqueDjs}
icon="\u{1F9D1}\u200D\u{1F3A4}" icon="🧑‍🎤"
/> />
<StatusCard <StatusCard
label={t("historyPage.peakListeners")} label={t("historyPage.peakListeners")}
value={peakListeners} value={peakListeners}
icon="\u{1F465}" icon="👥"
/> />
</div> </div>
)} )}
+1 -1
View File
@@ -68,7 +68,7 @@ export default async function AdminRadioModerationPage() {
<StatusCard <StatusCard
label={t("shouts")} label={t("shouts")}
value={shouts.length} value={shouts.length}
icon="\u{1F4E3}" icon="📣"
/> />
</div> </div>
+3 -3
View File
@@ -251,21 +251,21 @@ export default async function AdminRadioMonitoringPage() {
!streamConfigured ? "neutral" : streamOnline ? "ok" : "danger" !streamConfigured ? "neutral" : streamOnline ? "ok" : "danger"
} }
hint={streamUrl ? shortUrl(streamUrl) : undefined} hint={streamUrl ? shortUrl(streamUrl) : undefined}
icon="\u{1F4E1}" icon="📡"
/> />
<StatusCard <StatusCard
label={t("monitoring.nowPlaying")} label={t("monitoring.nowPlaying")}
value={nowPlaying ?? "\u2014"} value={nowPlaying ?? "\u2014"}
state={nowPlaying ? "ok" : "neutral"} state={nowPlaying ? "ok" : "neutral"}
hint={!nowPlayingUrl ? t("monitoring.noNowPlayingHint") : undefined} hint={!nowPlayingUrl ? t("monitoring.noNowPlayingHint") : undefined}
icon="\u{1F3B5}" icon="🎵"
/> />
<StatusCard <StatusCard
label={t("monitoring.listeners")} label={t("monitoring.listeners")}
value={listeners ?? "\u2014"} value={listeners ?? "\u2014"}
state={listeners != null ? "ok" : "neutral"} state={listeners != null ? "ok" : "neutral"}
hint={!listenersUrl ? t("monitoring.noListenersHint") : undefined} hint={!listenersUrl ? t("monitoring.noListenersHint") : undefined}
icon="\u{1F3A7}" icon="🎧"
/> />
</div> </div>
</section> </section>
+4 -4
View File
@@ -127,24 +127,24 @@ export default async function AdminRadioPage() {
<StatusCard <StatusCard
label={t("shouts")} label={t("shouts")}
value={shouts.length} value={shouts.length}
icon="\u{1F4E3}" icon="📣"
/> />
<StatusCard <StatusCard
label={t("pendingApplications")} label={t("pendingApplications")}
value={pendingApps} value={pendingApps}
state={pendingApps > 0 ? "warn" : "ok"} state={pendingApps > 0 ? "warn" : "ok"}
icon="\u{1F4DD}" icon="📝"
/> />
<StatusCard <StatusCard
label={t("schedules")} label={t("schedules")}
value={schedules.length} value={schedules.length}
icon="\u{1F5D3}\uFE0F" icon="🗓️"
/> />
<StatusCard <StatusCard
label={t("activeSchedules")} label={t("activeSchedules")}
value={activeSchedules} value={activeSchedules}
state={activeSchedules > 0 ? "ok" : "neutral"} state={activeSchedules > 0 ? "ok" : "neutral"}
icon="\u{1F399}\uFE0F" icon="🎙️"
/> />
</div> </div>
+4 -4
View File
@@ -100,23 +100,23 @@ export default async function AdminRadioPointsPage({
label={t("pointsForm.points")} label={t("pointsForm.points")}
value={enabled ? t("pointsForm.enabled") : t("pointsForm.disabled")} value={enabled ? t("pointsForm.enabled") : t("pointsForm.disabled")}
state={enabled ? "ok" : "danger"} state={enabled ? "ok" : "danger"}
icon="\u{1F3A7}" icon="🎧"
/> />
<StatusCard <StatusCard
label={t("pointsForm.perMinute")} label={t("pointsForm.perMinute")}
value={perMinute} value={perMinute}
hint={t("pointsForm.paidIn", { currency: selectedCurrency })} hint={t("pointsForm.paidIn", { currency: selectedCurrency })}
icon="\u{23F1}\uFE0F" icon="⏱️"
/> />
<StatusCard <StatusCard
label={t("pointsForm.maxPerDay")} label={t("pointsForm.maxPerDay")}
value={maxPerDay === "0" ? t("pointsForm.unlimited") : maxPerDay} value={maxPerDay === "0" ? t("pointsForm.unlimited") : maxPerDay}
icon="\u{1F4C8}" icon="📈"
/> />
<StatusCard <StatusCard
label={t("pointsForm.minListeners")} label={t("pointsForm.minListeners")}
value={minListeners} value={minListeners}
icon="\u{1F465}" icon="👥"
/> />
</div> </div>
</section> </section>
+2 -2
View File
@@ -78,13 +78,13 @@ export default async function AdminRadioRanksPage() {
<StatusCard <StatusCard
label={t("ranks")} label={t("ranks")}
value={ranks.length} value={ranks.length}
icon="\u{1F396}\uFE0F" icon="🎖️"
/> />
<StatusCard <StatusCard
label={t("ranksForm.active")} label={t("ranksForm.active")}
value={activeCount} value={activeCount}
state={activeCount > 0 ? "ok" : "neutral"} state={activeCount > 0 ? "ok" : "neutral"}
icon="\u{2705}" icon="✅"
/> />
</div> </div>
)} )}
+4 -4
View File
@@ -435,24 +435,24 @@ export default async function AdminRadioSettingsPage() {
: t("settingsForm.disabled") : t("settingsForm.disabled")
} }
state={radioEnabled ? "ok" : "danger"} state={radioEnabled ? "ok" : "danger"}
icon="\u{1F4BB}" icon="💻"
/> />
<StatusCard <StatusCard
label={t("settingsForm.totalKeys")} label={t("settingsForm.totalKeys")}
value={totalKeys} value={totalKeys}
icon="\u{1F511}" icon="🔑"
/> />
<StatusCard <StatusCard
label={t("settingsForm.configured")} label={t("settingsForm.configured")}
value={`${configuredKeys}/${CURATED_KEYS.size}`} value={`${configuredKeys}/${CURATED_KEYS.size}`}
hint={t("settingsForm.curatedHint")} hint={t("settingsForm.curatedHint")}
icon="\u{2699}\uFE0F" icon="⚙️"
/> />
<StatusCard <StatusCard
label={t("settingsForm.customKeys")} label={t("settingsForm.customKeys")}
value={extra.length} value={extra.length}
state={extra.length > 0 ? "warn" : "neutral"} state={extra.length > 0 ? "warn" : "neutral"}
icon="\u{2795}" icon="➕"
/> />
</div> </div>
)} )}