Changes in UI of Landing Page subscription and add skeleton

This commit is contained in:
Kartik Sharma 2025-09-18 12:07:46 +05:30
parent 1c0e8655c4
commit fd36298543
2 changed files with 58 additions and 9 deletions

View File

@ -0,0 +1,44 @@
import React from "react";
const SubscriptionPlanSkeleton = () => {
return (
<div className="col-xl-4 col-lg-6 col-md-6">
<div className="card h-100 shadow-sm border-0 p-3 text-center">
{/* Header */}
<div className="mb-3">
<div className="bg-light rounded-circle mx-auto mb-3" style={{ width: "50px", height: "50px" }}></div>
<div className="bg-light rounded w-75 mx-auto mb-2" style={{ height: "20px" }}></div>
<div className="bg-light rounded w-50 mx-auto" style={{ height: "16px" }}></div>
</div>
{/* Price */}
<div className="mb-3">
<div className="bg-light rounded w-50 mx-auto" style={{ height: "24px" }}></div>
</div>
{/* Storage & Trial */}
<div className="d-flex justify-content-center gap-4 mb-5">
<div className="bg-light rounded" style={{ width: "100px", height: "16px" }}></div>
<div className="bg-light rounded" style={{ width: "100px", height: "16px" }}></div>
</div>
{/* Features */}
<h6 className="fw-bold text-uppercase border-top pt-3 mb-3 text-center">
Features
</h6>
<ul className="list-unstyled text-start mb-4 ms-7">
{[1, 2, 3].map((i) => (
<li key={i} className="mb-3">
<div className="bg-light rounded" style={{ width: "70%", height: "16px" }}></div>
</li>
))}
</ul>
{/* Button */}
<div className="bg-light rounded w-100" style={{ height: "40px" }}></div>
</div>
</div>
);
};
export default SubscriptionPlanSkeleton;

View File

@ -1,6 +1,7 @@
import React, { useState, useEffect } from "react"; import React, { useState, useEffect } from "react";
import axios from "axios"; import axios from "axios";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import PlanCardSkeleton from "./PlanCardSkeleton";
const SubscriptionPlans = () => { const SubscriptionPlans = () => {
const [plans, setPlans] = useState([]); const [plans, setPlans] = useState([]);
@ -27,10 +28,10 @@ const SubscriptionPlans = () => {
const frequencyLabel = (freq) => { const frequencyLabel = (freq) => {
switch (freq) { switch (freq) {
case 0: return "1mo"; case 0: return "1 mo";
case 1: return "3mo"; case 1: return "3 mo";
case 2: return "6mo"; case 2: return "6 mo";
case 3: return "1yr"; case 3: return "1 yr";
default: return "mo"; default: return "mo";
} }
}; };
@ -54,15 +55,20 @@ const SubscriptionPlans = () => {
</div> </div>
{/* Cards */} {/* Cards */}
<div className="row g-4"> <div className="row g-4 mt-10">
{loading ? ( {loading ? (
<div className="text-center">Loading...</div> // Show 3 skeletons
<>
<PlanCardSkeleton />
<PlanCardSkeleton />
<PlanCardSkeleton />
</>
) : plans.length === 0 ? ( ) : plans.length === 0 ? (
<div className="text-center">No plans found</div> <div className="text-center">No plans found</div>
) : ( ) : (
plans.map((plan) => ( plans.map((plan) => (
<div key={plan.id} className="col-xl-4 col-lg-6 col-md-6"> <div key={plan.id} className="col-xl-4 col-lg-6 col-md-6">
<div className="card h-100 shadow-lg border-0 p-3 text-center"> <div className="card h-100 shadow-lg border-0 p-3 text-center p-10">
{/* Header */} {/* Header */}
<div className="mb-3"> <div className="mb-3">
<i className="bx bxs-package text-primary fs-1 mb-2"></i> <i className="bx bxs-package text-primary fs-1 mb-2"></i>
@ -90,7 +96,6 @@ const SubscriptionPlans = () => {
</div> </div>
</div> </div>
{/* Features */} {/* Features */}
<h6 className="fw-bold text-uppercase border-top pt-3 mb-3 text-center"> <h6 className="fw-bold text-uppercase border-top pt-3 mb-3 text-center">
Features Features
@ -120,7 +125,7 @@ const SubscriptionPlans = () => {
to="/auth/reqest/demo" to="/auth/reqest/demo"
className="btn btn-outline-primary w-100 fw-bold" className="btn btn-outline-primary w-100 fw-bold"
> >
Enquiry Request a Demo
</Link> </Link>
</div> </div>
</div> </div>