mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
fix: restyle app cards to match original RemnaWave UI and debug icons
- Redesign app selector from small pills to card buttons with name left
and large SVG icon right matching original RemnaWave subscription page
- Remove broken getAppIcon fallback (📦) for unknown apps
- Add svgIconKey field to app types for app-level logo from svgLibrary
- Use app.svgIconKey for admin apps page icons
- Increase subscription page tile opacity to 50% for readability
- Add temporary debug log to diagnose missing svgIconKey on apps
This commit is contained in:
@@ -370,6 +370,25 @@ export default function Connection() {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// DEBUG: log app data to check svgIconKey presence
|
||||||
|
if (isRemnawave && appConfig?.platforms) {
|
||||||
|
const firstPlatformKey = Object.keys(appConfig.platforms)[0];
|
||||||
|
if (firstPlatformKey) {
|
||||||
|
const pd = appConfig.platforms[firstPlatformKey];
|
||||||
|
if (pd && !Array.isArray(pd) && 'apps' in pd) {
|
||||||
|
console.log(
|
||||||
|
'[DEBUG] RemnaWave apps:',
|
||||||
|
pd.apps.map((a: RemnawaveAppClient) => ({
|
||||||
|
name: a.name,
|
||||||
|
svgIconKey: a.svgIconKey,
|
||||||
|
keys: Object.keys(a),
|
||||||
|
})),
|
||||||
|
);
|
||||||
|
console.log('[DEBUG] svgLibrary keys:', Object.keys(appConfig.svgLibrary || {}));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Loading
|
// Loading
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return (
|
return (
|
||||||
@@ -477,9 +496,9 @@ export default function Connection() {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* App chips row */}
|
{/* App cards row */}
|
||||||
{currentPlatformApps.length > 0 && (
|
{currentPlatformApps.length > 0 && (
|
||||||
<div className="-mx-1 flex flex-wrap gap-2 px-1">
|
<div className="flex flex-wrap gap-2">
|
||||||
{currentPlatformApps.map((app, idx) => {
|
{currentPlatformApps.map((app, idx) => {
|
||||||
const isSelected = currentApp?.name === app.name;
|
const isSelected = currentApp?.name === app.name;
|
||||||
const appIconSvg = getSvgHtml(app.svgIconKey);
|
const appIconSvg = getSvgHtml(app.svgIconKey);
|
||||||
@@ -487,24 +506,20 @@ export default function Connection() {
|
|||||||
<button
|
<button
|
||||||
key={app.name + idx}
|
key={app.name + idx}
|
||||||
onClick={() => setSelectedRemnawaveApp(app)}
|
onClick={() => setSelectedRemnawaveApp(app)}
|
||||||
className={`inline-flex items-center gap-1.5 rounded-full px-3.5 py-1.5 text-sm font-medium transition-all active:scale-95 ${
|
className={`relative flex items-center gap-2 overflow-hidden rounded-xl px-3 py-2.5 text-sm font-medium transition-all active:scale-[0.97] ${
|
||||||
isSelected
|
isSelected
|
||||||
? 'bg-accent-500/15 text-accent-400 ring-1 ring-accent-500/40'
|
? 'bg-accent-500/15 text-accent-400 ring-1 ring-accent-500/40'
|
||||||
: 'bg-dark-800/60 text-dark-300 hover:bg-dark-800'
|
: 'bg-dark-800/60 text-dark-300 hover:bg-dark-800'
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
{app.featured && <span className="h-2 w-2 rounded-full bg-amber-400" />}
|
{app.featured && <span className="h-2 w-2 shrink-0 rounded-full bg-amber-400" />}
|
||||||
{appIconSvg ? (
|
<span className="relative z-10">{app.name}</span>
|
||||||
|
{appIconSvg && (
|
||||||
<div
|
<div
|
||||||
className="h-4 w-4 [&>svg]:h-full [&>svg]:w-full"
|
className="h-8 w-8 shrink-0 opacity-40 [&>svg]:h-full [&>svg]:w-full"
|
||||||
dangerouslySetInnerHTML={{ __html: appIconSvg }}
|
dangerouslySetInnerHTML={{ __html: appIconSvg }}
|
||||||
/>
|
/>
|
||||||
) : (
|
|
||||||
<span className="h-4 w-4 [&>svg]:h-full [&>svg]:w-full">
|
|
||||||
{getAppIcon(app.name)}
|
|
||||||
</span>
|
|
||||||
)}
|
)}
|
||||||
{app.name}
|
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
Reference in New Issue
Block a user