Standardize loading states across all components

Replaced custom loading spinners with standardized LoadingState component from AsyncComponent.tsx. This ensures consistent UX for all data-loading operations.

Changes:
- web/src/components/staking/StakingDashboard.tsx: LoadingState for staking data
- web/src/components/governance/GovernanceOverview.tsx: LoadingState for governance data
- web/src/components/governance/ProposalsList.tsx: LoadingState for proposals
- web/src/components/dex/PoolBrowser.tsx: LoadingState for liquidity pools
- web/src/components/delegation/DelegationManager.tsx: LoadingState for delegation data
- web/src/components/forum/ForumOverview.tsx: LoadingState for forum threads
- web/src/components/treasury/TreasuryOverview.tsx: LoadingState for treasury data

All components now show:
- Kurdistan green animated spinner (Loader2)
- Contextual loading messages
- Consistent padding and centering
- Professional appearance

Button loading states (auth, wallet modals) left as-is since they appropriately disable during actions.
This commit is contained in:
Claude
2025-11-16 22:03:46 +00:00
parent 385039e228
commit 4f2c96bb56
7 changed files with 17 additions and 36 deletions
@@ -21,6 +21,7 @@ import {
parseAmount,
type StakingInfo
} from '@pezkuwi/lib/staking';
import { LoadingState } from '@pezkuwi/components/AsyncComponent';
export const StakingDashboard: React.FC = () => {
const { t } = useTranslation();
@@ -421,11 +422,7 @@ export const StakingDashboard: React.FC = () => {
};
if (isLoadingData) {
return (
<div className="flex items-center justify-center h-64">
<div className="text-gray-400">Loading staking data...</div>
</div>
);
return <LoadingState message="Loading staking data..." />;
}
return (