Removing redundant components
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -1,16 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function DeleteButton({
|
||||
selectedItems
|
||||
}) {
|
||||
return (
|
||||
<div className={`${selectedItems.length < 1 && 'hidden'}`}>
|
||||
<div className="flex items-center">
|
||||
<div className="hidden xl:block text-sm italic mr-2 whitespace-nowrap"><span>{selectedItems.length}</span> items selected</div>
|
||||
<button className="btn bg-white border-slate-200 hover:border-slate-300 text-rose-500 hover:text-rose-600">Delete</button>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default DeleteButton;
|
||||
@@ -1,24 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function SearchForm({
|
||||
placeholder
|
||||
}) {
|
||||
return (
|
||||
<form className="relative">
|
||||
<label htmlFor="action-search" className="sr-only">Search</label>
|
||||
<input id="action-search" className="form-input pl-9 focus:border-slate-300" type="search" placeholder={placeholder} />
|
||||
<button className="absolute inset-0 right-auto group" type="submit" aria-label="Search">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 group-hover:text-slate-500 ml-3 mr-2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z" />
|
||||
<path d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z" />
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
);
|
||||
}
|
||||
|
||||
SearchForm.defaultProps = {
|
||||
placeholder: 'Search…'
|
||||
}
|
||||
|
||||
export default SearchForm;
|
||||
@@ -1,103 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function ApplicationsCard01(props) {
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<img className="w-full" src={props.image} width="286" height="160" alt={props.title} />
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">{props.title}</h3>
|
||||
<div className="text-sm">{props.content}</div>
|
||||
</header>
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mb-4">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className={`w-4 h-4 fill-current ${Math.round(props.rating) > 0 ? 'text-amber-500' : 'text-slate-300'}`} viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className={`w-4 h-4 fill-current ${Math.round(props.rating) > 1 ? 'text-amber-500' : 'text-slate-300'}`} viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className={`w-4 h-4 fill-current ${Math.round(props.rating) > 2 ? 'text-amber-500' : 'text-slate-300'}`} viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className={`w-4 h-4 fill-current ${Math.round(props.rating) > 3 ? 'text-amber-500' : 'text-slate-300'}`} viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className={`w-4 h-4 fill-current ${Math.round(props.rating) > 4 ? 'text-amber-500' : 'text-slate-300'}`} viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium bg-amber-100 text-amber-600 rounded-full text-center px-2.5 py-0.5">{props.rating}</div>
|
||||
</div>
|
||||
{/* Features list */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
{ props.feat01 && (
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15.686 5.695L10.291.3c-.4-.4-.999-.4-1.399 0s-.4.999 0 1.399l.6.599-6.794 3.697-1-1c-.4-.399-.999-.399-1.398 0-.4.4-.4 1 0 1.4l1.498 1.498 2.398 2.398L.6 13.988 2 15.387l3.696-3.697 3.997 3.996c.5.5 1.199.2 1.398 0 .4-.4.4-.999 0-1.398l-.999-1 3.697-6.694.6.6c.599.6 1.199.2 1.398 0 .3-.4.3-1.1-.1-1.499zM8.493 11.79L4.196 7.494l6.695-3.697 1.298 1.299-3.696 6.694z" />
|
||||
</svg>
|
||||
<div>{props.feat01}</div>
|
||||
</li>
|
||||
)}
|
||||
{props.feat02 && (
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 15V5l-5-5H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1zM3 2h6v4h4v8H3V2z" />
|
||||
</svg>
|
||||
<div>{props.feat02}</div>
|
||||
</li>
|
||||
)}
|
||||
{props.feat03 && (
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 01-1 1H4v2l-4-3 4-3v2h9V7zM3 9H1V3a1 1 0 011-1h10V0l4 3-4 3V4H3v5z" />
|
||||
</svg>
|
||||
<div>{props.feat03}</div>
|
||||
</li>
|
||||
)}
|
||||
{props.feat04 && (
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm0 6c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm-7-5c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0z" />
|
||||
</svg>
|
||||
<div>{props.feat04}</div>
|
||||
</li>
|
||||
)}
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<Link className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" to={props.link}>Install</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ApplicationsCard01;
|
||||
@@ -1,35 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function ApplicationsCard02(props) {
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<img className="w-full" src={props.image} width="286" height="160" alt={props.name} />
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">{props.title}</h3>
|
||||
<div className="text-sm">{props.content}</div>
|
||||
</header>
|
||||
{/* Price */}
|
||||
<div className="flex items-center space-x-2 mb-4">
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2.5 py-0.5">{props.deal}</div>
|
||||
<div className="inline-flex text-sm font-medium text-slate-500 line-through">{props.price}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<Link className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" to={props.link}>Buy Now</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ApplicationsCard02;
|
||||
@@ -1,66 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function ApplicationsCard03(props) {
|
||||
|
||||
const handleIcon = (id) => {
|
||||
switch (id) {
|
||||
case 0:
|
||||
return (
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path className="text-indigo-300" d="M13 15l11-7L11.504.136a1 1 0 00-1.019.007L0 7l13 8z" />
|
||||
<path className="text-indigo-600" d="M13 15L0 7v9c0 .355.189.685.496.864L13 24v-9z" />
|
||||
<path className="text-indigo-500" d="M13 15.047V24l10.573-7.181A.999.999 0 0024 16V8l-11 7.047z" />
|
||||
</svg>
|
||||
);
|
||||
case 1:
|
||||
return (
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<circle className="text-sky-200" cx="15" cy="15" r="9" fillRule="nonzero" />
|
||||
<circle className="text-sky-400" cx="9" cy="9" r="9" />
|
||||
</svg>
|
||||
);
|
||||
case 2:
|
||||
return (
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path className="text-emerald-400" d="M23.864 4.45L19.553.139l-2.337 4.663 1.98 1.98zM4.802 6.784l1.979-1.979L4.45.136.139 4.447z" />
|
||||
<path className="text-emerald-200" d="M4 15.385V8.619L0 6.614v10.769z" />
|
||||
<path className="text-emerald-500" d="M8.414 6L6 8.414v7.172L8.414 18h7.172L18 15.586V8.414L15.586 6z" />
|
||||
<path className="text-emerald-200" d="M8.615 4h6.766l2.005-4H6.617z" />
|
||||
<path className="text-emerald-400" d="M6.784 19.198l-1.98-1.98L.136 19.55l4.311 4.311z" />
|
||||
<path className="text-emerald-200" d="M20 8.615v6.766l4 2.005V6.617z" />
|
||||
<path className="text-emerald-400" d="M19.198 17.216l-1.979 1.979 2.331 4.669 4.311-4.311z" />
|
||||
<path className="text-emerald-200" d="M15.385 20H8.619l-2.005 4h10.769z" />
|
||||
</svg>
|
||||
);
|
||||
case 3:
|
||||
return (
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path className="text-rose-100" d="M12 10l12 7-12 7-12-7z" />
|
||||
<path className="text-rose-300" d="M12 5l12 7-12 7-12-7z" />
|
||||
<path className="text-rose-500" d="M12 0l12 7-12 7L0 7z" />
|
||||
</svg>
|
||||
);
|
||||
default:
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full text-center p-5">
|
||||
<div className="grow mb-1">
|
||||
<div className="inline-flex justify-center items-center w-12 h-12 bg-slate-100 rounded-full mb-2">
|
||||
{handleIcon(props.id)}
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">{props.title}</h3>
|
||||
</div>
|
||||
<div>
|
||||
<Link className="text-sm font-medium text-indigo-500 hover:text-indigo-600" to={props.link}>Explore -></Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ApplicationsCard03;
|
||||
@@ -1,99 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function CampaignsCard(props) {
|
||||
|
||||
const typeColor = (type) => {
|
||||
switch (type) {
|
||||
case 'One-Time':
|
||||
return 'bg-emerald-100 text-emerald-600';
|
||||
case 'At Risk':
|
||||
return 'bg-amber-100 text-amber-600';
|
||||
case 'Off-Track':
|
||||
return 'bg-rose-100 text-rose-600';
|
||||
default:
|
||||
return 'bg-slate-100 text-slate-500';
|
||||
}
|
||||
};
|
||||
|
||||
const categoryIcon = (category) => {
|
||||
switch (category) {
|
||||
case '1':
|
||||
return (
|
||||
<div className="w-10 h-10 rounded-full flex items-center justify-center shrink-0 bg-rose-500">
|
||||
<svg className="w-9 h-9 fill-current text-rose-50" viewBox="0 0 36 36">
|
||||
<path d="M25 24H11a1 1 0 01-1-1v-5h2v4h12v-4h2v5a1 1 0 01-1 1zM14 13h8v2h-8z" />
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
case '2':
|
||||
return (
|
||||
<div className="w-10 h-10 rounded-full flex items-center justify-center shrink-0 bg-emerald-500">
|
||||
<svg className="w-9 h-9 fill-current text-emerald-50" viewBox="0 0 36 36">
|
||||
<path d="M15 13v-3l-5 4 5 4v-3h8a1 1 0 000-2h-8zM21 21h-8a1 1 0 000 2h8v3l5-4-5-4v3z" />
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
case '3':
|
||||
return (
|
||||
<div className="w-10 h-10 rounded-full flex items-center justify-center shrink-0 bg-sky-500">
|
||||
<svg className="w-9 h-9 fill-current text-sky-50" viewBox="0 0 36 36">
|
||||
<path d="M23 11v2.085c-2.841.401-4.41 2.462-5.8 4.315-1.449 1.932-2.7 3.6-5.2 3.6h-1v2h1c3.5 0 5.253-2.338 6.8-4.4 1.449-1.932 2.7-3.6 5.2-3.6h3l-4-4zM15.406 16.455c.066-.087.125-.162.194-.254.314-.419.656-.872 1.033-1.33C15.475 13.802 14.038 13 12 13h-1v2h1c1.471 0 2.505.586 3.406 1.455zM24 21c-1.471 0-2.505-.586-3.406-1.455-.066.087-.125.162-.194.254-.316.422-.656.873-1.028 1.328.959.878 2.108 1.573 3.628 1.788V25l4-4h-3z" />
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
case '4':
|
||||
return (
|
||||
<div className="w-10 h-10 rounded-full flex items-center justify-center shrink-0 bg-indigo-500">
|
||||
<svg className="w-9 h-9 fill-current text-indigo-50" viewBox="0 0 36 36">
|
||||
<path d="M18 10c-4.4 0-8 3.1-8 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L18.9 22H18c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
</div>
|
||||
);
|
||||
default:
|
||||
return (<div></div>);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<header>
|
||||
<div className="flex items-center justify-between">
|
||||
{categoryIcon(props.category)}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
{
|
||||
props.members.map(member => {
|
||||
return (
|
||||
<Link key={member.name} className="block" to={member.link}>
|
||||
<img className="rounded-full border-2 border-white box-content" src={member.image} width="28" height="28" alt={member.name} />
|
||||
</Link>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div className="grow mt-2">
|
||||
<Link className="inline-flex text-slate-800 hover:text-slate-900 mb-1" to={props.link}>
|
||||
<h2 className="text-xl leading-snug font-semibold">{props.title}</h2>
|
||||
</Link>
|
||||
<div className="text-sm">{props.content}</div>
|
||||
</div>
|
||||
<footer className="mt-5">
|
||||
<div className="text-sm font-medium text-slate-500 mb-2">{props.dates.from} <span className="text-slate-400">-></span> {props.dates.to}</div>
|
||||
<div className="flex justify-between items-center">
|
||||
<div>
|
||||
<div className={`text-xs inline-flex font-medium rounded-full text-center px-2.5 py-1 ${typeColor(props.type)}`}>{props.type}</div>
|
||||
</div>
|
||||
<div>
|
||||
<Link className="text-sm font-medium text-indigo-500 hover:text-indigo-600" to={props.link}>View -></Link>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default CampaignsCard;
|
||||
@@ -1,113 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function FeedLeftContent() {
|
||||
return (
|
||||
<div className="w-full md:w-60 mb-8 md:mb-0">
|
||||
<div className="md:sticky md:top-16 md:h-[calc(100vh-64px)] md:overflow-x-hidden md:overflow-y-auto no-scrollbar">
|
||||
<div className="md:py-8">
|
||||
|
||||
{/* Title */}
|
||||
<header className="mb-6">
|
||||
<h1 className="text-2xl md:text-3xl text-slate-800 font-bold">Feed ✨</h1>
|
||||
</header>
|
||||
|
||||
{/* Search form */}
|
||||
<div className="xl:hidden mb-6">
|
||||
<form className="relative">
|
||||
<label htmlFor="feed-search-mobile" className="sr-only">
|
||||
Search
|
||||
</label>
|
||||
<input id="feed-search-mobile" className="form-input w-full pl-9 focus:border-slate-300" type="search" placeholder="Search…" />
|
||||
<button className="absolute inset-0 right-auto group" type="submit" aria-label="Search">
|
||||
<svg
|
||||
className="w-4 h-4 shrink-0 fill-current text-slate-400 group-hover:text-slate-500 ml-3 mr-2"
|
||||
viewBox="0 0 16 16"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z" />
|
||||
<path d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z" />
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{/* Links */}
|
||||
<div className="flex flex-nowrap overflow-x-scroll no-scrollbar md:block md:overflow-auto px-4 md:space-y-3 -mx-4">
|
||||
{/* Group 1 */}
|
||||
<div>
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3 md:sr-only">Menu</div>
|
||||
<ul className="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap bg-white" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-indigo-500 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M10 16h4c.6 0 1-.4 1-.998V6.016c0-.3-.1-.6-.4-.8L8.6.226c-.4-.3-.9-.3-1.3 0l-6 4.992c-.2.2-.3.5-.3.799v8.986C1 15.6 1.4 16 2 16h4c.6 0 1-.4 1-.998v-2.996h2v2.996c0 .599.4.998 1 .998Zm-4-5.99c-.6 0-1 .399-1 .998v2.995H3V6.515L8 2.32l5 4.194v7.488h-2v-2.995c0-.6-.4-.999-1-.999H6Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-indigo-500">Home</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585h-.002a2.5 2.5 0 0 1-2 4.547 6.91 6.91 0 0 1-6.9 1.165 4.436 4.436 0 0 0 1.343-1.682c.365.087.738.132 1.113.135a4.906 4.906 0 0 0 2.924-.971 2.5 2.5 0 0 1 3.522-3.194Zm-4.015-7.397a7.023 7.023 0 0 1 4.47 5.396 4.5 4.5 0 0 0-1.7-.334c-.15.002-.299.012-.447.03a5.027 5.027 0 0 0-2.723-3.078 2.5 2.5 0 1 1 .4-2.014ZM4.663 10.5a2.5 2.5 0 1 1-3.859-.584 6.888 6.888 0 0 1-.11-1.166c0-2.095.94-4.08 2.56-5.407.093.727.364 1.419.788 2.016A4.97 4.97 0 0 0 2.694 8.75c.003.173.015.345.037.516A2.49 2.49 0 0 1 4.663 10.5Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Explore</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M5 9h11v2H5V9zM0 9h3v2H0V9zm5 4h6v2H5v-2zm-5 0h3v2H0v-2zm5-8h7v2H5V5zM0 5h3v2H0V5zm5-4h11v2H5V1zM0 1h3v2H0V1z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Notifications</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M10.59 7.658 8 5.5 5.41 7.658A.25.25 0 0 1 5 7.466V0h6v7.466a.25.25 0 0 1-.41.192Z" />
|
||||
<path d="M14 16H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h2v2H2v12h12V2h-2V0h2a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Bookmarks</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M12.311 9.527c-1.161-.393-1.85-.825-2.143-1.175A3.991 3.991 0 0012 5V4c0-2.206-1.794-4-4-4S4 1.794 4 4v1c0 1.406.732 2.639 1.832 3.352-.292.35-.981.782-2.142 1.175A3.942 3.942 0 001 13.26V16h14v-2.74c0-1.69-1.081-3.19-2.689-3.733zM6 4c0-1.103.897-2 2-2s2 .897 2 2v1c0 1.103-.897 2-2 2s-2-.897-2-2V4zm7 10H3v-.74c0-.831.534-1.569 1.33-1.838 1.845-.624 3-1.436 3.452-2.422h.436c.452.986 1.607 1.798 3.453 2.422A1.943 1.943 0 0113 13.26V14z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Profile</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Group 2 */}
|
||||
<div>
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3">My Groups</div>
|
||||
<ul className="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0ZM7.3 14.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0ZM.3 9.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Productivity</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0ZM7.3 14.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0ZM.3 9.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Self Development</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default FeedLeftContent;
|
||||
@@ -1,384 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import EditMenu from '../../components/DropdownEditMenu';
|
||||
|
||||
import UserImage02 from '../../images/user-40-02.jpg';
|
||||
import UserImage03 from '../../images/user-40-03.jpg';
|
||||
import UserImage04 from '../../images/user-40-04.jpg';
|
||||
import UserImage06 from '../../images/user-40-06.jpg';
|
||||
import UserImage08 from '../../images/user-40-08.jpg';
|
||||
import CommenterImage04 from '../../images/user-32-04.jpg';
|
||||
import CommenterImage05 from '../../images/user-32-05.jpg';
|
||||
import FeedImage01 from '../../images/feed-image-01.jpg';
|
||||
import FeedImage02 from '../../images/feed-image-02.jpg';
|
||||
|
||||
function FeedPosts() {
|
||||
return (
|
||||
<>
|
||||
{/* Post 1 */}
|
||||
<div className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
{/* Header */}
|
||||
<header className="flex justify-between items-start space-x-3 mb-3">
|
||||
{/* User */}
|
||||
<div className="flex items-start space-x-3">
|
||||
<img className="rounded-full shrink-0" src={UserImage03} width="40" height="40" alt="User 03" />
|
||||
<div>
|
||||
<div className="leading-tight">
|
||||
<a className="text-sm font-semibold text-slate-800" href="#0">
|
||||
Dominik Lamakani
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">Yesterday at 10:48 AM</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Menu button */}
|
||||
<EditMenu align="right" className="relative inline-flex shrink-0">
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 1
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 2
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-rose-500 hover:text-rose-600 flex py-1 px-3" to="#0">
|
||||
Remove
|
||||
</Link>
|
||||
</li>
|
||||
</EditMenu>
|
||||
</header>
|
||||
{/* Body */}
|
||||
<div className="text-sm text-slate-800 space-y-2 mb-5">
|
||||
<p>👋</p>
|
||||
<p>
|
||||
It's more likely that people reading your blog will opt in with their email addresses if you give them something highly relevant in
|
||||
return. Ditch that too-general lead magnet and create "content upgrades" for your highest-traffic articles.
|
||||
</p>
|
||||
<p>Thread 👇</p>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<footer className="flex items-center space-x-4">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4</div>
|
||||
</button>
|
||||
{/* Share button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 0 1-1 1H4v2l-4-3 4-3v2h9V7ZM3 9H1V3a1 1 0 0 1 1-1h10V0l4 3-4 3V4H3v5Z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">44</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">7</div>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
{/* Post 2 */}
|
||||
<div className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
{/* Header */}
|
||||
<header className="flex justify-between items-start space-x-3 mb-3">
|
||||
{/* User */}
|
||||
<div className="flex items-start space-x-3">
|
||||
<img className="rounded-full shrink-0" src={UserImage06} width="40" height="40" alt="User 06" />
|
||||
<div>
|
||||
<div className="leading-tight">
|
||||
<a className="text-sm font-semibold text-slate-800" href="#0">
|
||||
Mark Karimani
|
||||
</a>
|
||||
</div>
|
||||
<div className="inline-flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-yellow-500 mr-1" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.953 4.29a.5.5 0 0 0-.454-.29H6.14L6.984.62A.5.5 0 0 0 6.12.174l-6 7A.5.5 0 0 0 .499 8h5.359l-.844 3.38a.5.5 0 0 0 .864.445l6-7a.5.5 0 0 0 .075-.534Z" />
|
||||
</svg>
|
||||
<div className="text-xs text-slate-500">Sponsored</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Menu button */}
|
||||
<EditMenu align="right" className="relative inline-flex shrink-0">
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 1
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 2
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-rose-500 hover:text-rose-600 flex py-1 px-3" to="#0">
|
||||
Remove
|
||||
</Link>
|
||||
</li>
|
||||
</EditMenu>
|
||||
</header>
|
||||
{/* Body */}
|
||||
<div className="text-sm text-slate-800 space-y-2 mb-5">
|
||||
<p>Designing an Earth-positive future, together 🌿</p>
|
||||
<div className="relative !my-4">
|
||||
<img className="block w-full" src={FeedImage01} width="590" height="332" alt="Feed 01" />
|
||||
<div className="absolute left-0 right-0 bottom-0 p-4 bg-black bg-opacity-25 backdrop-blur-md">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="text-xs font-medium text-slate-300">togethernature.com</div>
|
||||
<a className="text-xs font-medium text-indigo-400 hover:text-indigo-300" href="#0">
|
||||
Learn More ->
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<footer className="flex items-center space-x-4">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4</div>
|
||||
</button>
|
||||
{/* Share button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 0 1-1 1H4v2l-4-3 4-3v2h9V7ZM3 9H1V3a1 1 0 0 1 1-1h10V0l4 3-4 3V4H3v5Z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">44</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">7</div>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
{/* Post 3 */}
|
||||
<div className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
{/* Header */}
|
||||
<header className="flex justify-between items-start space-x-3 mb-3">
|
||||
{/* User */}
|
||||
<div className="flex items-start space-x-3">
|
||||
<img className="rounded-full shrink-0" src={UserImage04} width="40" height="40" alt="User 04" />
|
||||
<div>
|
||||
<div className="leading-tight">
|
||||
<a className="text-sm font-semibold text-slate-800" href="#0">
|
||||
Erica Spriggs
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">Yesterday at 2:34 PM</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Menu button */}
|
||||
<EditMenu align="right" className="relative inline-flex shrink-0">
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 1
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 2
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-rose-500 hover:text-rose-600 flex py-1 px-3" to="#0">
|
||||
Remove
|
||||
</Link>
|
||||
</li>
|
||||
</EditMenu>
|
||||
</header>
|
||||
{/* Body */}
|
||||
<div className="text-sm text-slate-800 space-y-2 mb-5">
|
||||
<p>Any book recommendations for a first-time entrepreneur? 📚</p>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<footer className="flex items-center space-x-4">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">122</div>
|
||||
</button>
|
||||
{/* Share button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 0 1-1 1H4v2l-4-3 4-3v2h9V7ZM3 9H1V3a1 1 0 0 1 1-1h10V0l4 3-4 3V4H3v5Z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">7</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">298</div>
|
||||
</button>
|
||||
</footer>
|
||||
{/* Comments */}
|
||||
<div className="mt-5 pt-3 border-t border-slate-200">
|
||||
<ul className="space-y-2 mb-3">
|
||||
{/* Comment */}
|
||||
<li className="p-3 bg-slate-50 rounded">
|
||||
<div className="flex items-start space-x-3">
|
||||
<img className="rounded-full shrink-0" src={CommenterImage04} width="32" height="32" alt="User 04" />
|
||||
<div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-semibold text-slate-800" href="#0">
|
||||
Sophie Wenner
|
||||
</a>{' '}
|
||||
· 44min
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
@EricaSpriggs
|
||||
</a>{' '}
|
||||
Reading through and really enjoying "Zero to Sold" by Arvid.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{/* Comment */}
|
||||
<li className="p-3 bg-slate-50 rounded">
|
||||
<div className="flex items-start space-x-3">
|
||||
<img className="rounded-full shrink-0" src={CommenterImage05} width="32" height="32" alt="User 05" />
|
||||
<div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-semibold text-slate-800" href="#0">
|
||||
Kyla Scanlon
|
||||
</a>{' '}
|
||||
· 1h
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
Depends on the company you're running, but if I had to choose just one book, it'd be The Personal MBA by Josh Kaufman.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{/* Comments footer */}
|
||||
<div className="flex justify-between space-x-2">
|
||||
<div className="text-sm text-slate-500">
|
||||
<span className="font-medium text-slate-600">2</span> of <span className="font-medium text-slate-600">67</span> comments
|
||||
</div>
|
||||
<button className="text-sm font-medium text-indigo-500 hover:text-indigo-600">View More Comments</button>
|
||||
</div>
|
||||
{/* Comment form */}
|
||||
<div className="flex items-center space-x-3 mt-3">
|
||||
<img className="rounded-full shrink-0" src={UserImage02} width="32" height="32" alt="User 02" />
|
||||
<div className="grow">
|
||||
<label htmlFor="comment-form" className="sr-only">
|
||||
Write a comment…
|
||||
</label>
|
||||
<input
|
||||
id="comment-form"
|
||||
className="form-input w-full bg-slate-100 border-transparent focus:bg-white focus:border-slate-300 placeholder-slate-500"
|
||||
type="text"
|
||||
placeholder="Write a comment…"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Post 4 */}
|
||||
<div className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
{/* Header */}
|
||||
<header className="flex justify-between items-start space-x-3 mb-3">
|
||||
{/* User */}
|
||||
<div className="flex items-start space-x-3">
|
||||
<img className="rounded-full shrink-0" src={UserImage08} width="40" height="40" alt="User 08" />
|
||||
<div>
|
||||
<div className="leading-tight">
|
||||
<a className="text-sm font-semibold text-slate-800" href="#0">
|
||||
Margaret Sullivan
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">Yesterday at 4:56 PM</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Menu button */}
|
||||
<EditMenu align="right" className="relative inline-flex shrink-0">
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 1
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">
|
||||
Option 2
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-rose-500 hover:text-rose-600 flex py-1 px-3" to="#0">
|
||||
Remove
|
||||
</Link>
|
||||
</li>
|
||||
</EditMenu>
|
||||
</header>
|
||||
{/* Body */}
|
||||
<div className="text-sm text-slate-800 space-y-2 mb-5">
|
||||
<p>Kyla Network - Make new connections, join communities, and access exclusive experiences. 🧑🤝🧑</p>
|
||||
<div className="relative flex items-center justify-center !my-4">
|
||||
<img className="block w-full" src={FeedImage02} width="590" height="332" alt="Feed 01" />
|
||||
<button className="absolute group">
|
||||
<svg className="w-16 h-16" width="64" height="64" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle className="fill-white opacity-80 group-hover:opacity-100 transition" cx="32" cy="32" r="32" />
|
||||
<path
|
||||
className="fill-indigo-500"
|
||||
d="M40 33a.999.999 0 0 0-.427-.82l-10-7A1 1 0 0 0 28 26v14.002a.999.999 0 0 0 1.573.819l10-7A.995.995 0 0 0 40 33V33c0 .002 0 .002 0 0Z"
|
||||
/>
|
||||
</svg>
|
||||
</button>
|
||||
<div className="absolute left-4 bottom-4 right-4">
|
||||
<div className="flex items-center space-x-1">
|
||||
<div className="text-xs font-medium text-slate-300 px-2 py-1 bg-black bg-opacity-25">0:48</div>
|
||||
<div className="text-xs font-medium text-slate-300 px-2 py-1 bg-black bg-opacity-25">1M Views</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<footer className="flex items-center space-x-4">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-indigo-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-indigo-500">2.2K</div>
|
||||
</button>
|
||||
{/* Share button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 0 1-1 1H4v2l-4-3 4-3v2h9V7ZM3 9H1V3a1 1 0 0 1 1-1h10V0l4 3-4 3V4H3v5Z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4.3K</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">92</div>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default FeedPosts;
|
||||
@@ -1,240 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import GroupAvatar01 from '../../images/group-avatar-01.png';
|
||||
import GroupAvatar02 from '../../images/group-avatar-02.png';
|
||||
import GroupAvatar03 from '../../images/group-avatar-03.png';
|
||||
import GroupAvatar04 from '../../images/group-avatar-04.png';
|
||||
import UserImage01 from '../../images/user-32-01.jpg';
|
||||
import UserImage02 from '../../images/user-32-02.jpg';
|
||||
import UserImage04 from '../../images/user-32-04.jpg';
|
||||
import UserImage05 from '../../images/user-32-05.jpg';
|
||||
|
||||
function FeedRightContent() {
|
||||
return (
|
||||
<div className="w-full hidden xl:block xl:w-72">
|
||||
<div className="lg:sticky lg:top-16 lg:h-[calc(100vh-64px)] lg:overflow-x-hidden lg:overflow-y-auto no-scrollbar">
|
||||
<div className="md:py-8">
|
||||
|
||||
{/* Search form */}
|
||||
<div className="mb-6">
|
||||
<form className="relative">
|
||||
<label htmlFor="feed-search-desktop" className="sr-only">
|
||||
Search
|
||||
</label>
|
||||
<input id="feed-search-desktop" className="form-input w-full pl-9 focus:border-slate-300" type="search" placeholder="Search…" />
|
||||
<button className="absolute inset-0 right-auto group" type="submit" aria-label="Search">
|
||||
<svg
|
||||
className="w-4 h-4 shrink-0 fill-current text-slate-400 group-hover:text-slate-500 ml-3 mr-2"
|
||||
viewBox="0 0 16 16"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z" />
|
||||
<path d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z" />
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{/* Blocks */}
|
||||
<div className="space-y-4">
|
||||
|
||||
{/* Block 1 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">Top Communities</div>
|
||||
<ul className="space-y-3">
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={GroupAvatar01} width="32" height="32" alt="Group 01" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Introductions</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Join
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={GroupAvatar02} width="32" height="32" alt="Group 02" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">HackerNews</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Join
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={GroupAvatar03} width="32" height="32" alt="Group 03" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">ReactJs</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-4 fill-current shrink-0" viewBox="0 0 16 16">
|
||||
<path d="m2.457 8.516.969-.99 2.516 2.481 5.324-5.304.985.989-6.309 6.284z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={GroupAvatar04} width="32" height="32" alt="Group 04" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">JustChatting</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Join
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">View All</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Block 2 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">Who to follow</div>
|
||||
<ul className="space-y-3">
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage02} width="32" height="32" alt="User 02" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Elly Boutin</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Follow
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage04} width="32" height="32" alt="User 04" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Rich Harris</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Follow
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage05} width="32" height="32" alt="User 05" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Mary Porzio</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Follow
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="grow flex items-center">
|
||||
<div className="relative mr-3">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage01} width="32" height="32" alt="User 01" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Brian Lovin</span>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-xs inline-flex font-medium bg-indigo-100 text-indigo-600 rounded-full text-center px-2.5 py-1">
|
||||
Follow
|
||||
</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">View All</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Block 3 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">Trends for you</div>
|
||||
<ul className="space-y-3">
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Tracking your website traffic on launch day 📈
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">248 comments</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Freemium model questions
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">47 comments</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Slack and Community
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">24 comments</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Who owns user onboarding in your company?
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">17 comments</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Questions from a very confused Web3 startup founder 🤔
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">9 comments</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">View All</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default FeedRightContent;
|
||||
@@ -1,427 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import UserAvatar from '../../images/user-avatar-32.png';
|
||||
import UserImage01 from '../../images/user-32-01.jpg';
|
||||
import UserImage02 from '../../images/user-32-02.jpg';
|
||||
import UserImage03 from '../../images/user-32-03.jpg';
|
||||
import UserImage04 from '../../images/user-32-04.jpg';
|
||||
import UserImage05 from '../../images/user-32-05.jpg';
|
||||
import UserImage06 from '../../images/user-32-06.jpg';
|
||||
import UserImage07 from '../../images/user-32-07.jpg';
|
||||
|
||||
function ForumEntries() {
|
||||
return (
|
||||
<>
|
||||
{/* Post 1 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserAvatar} width="32" height="32" alt="User avatar" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">Share Your Startup - December 2021 - Upvote This For Maximum Visibility!</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
<div className="flex items-center">
|
||||
<svg className="w-4 h-4 mr-2 fill-current" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M15.686 5.708 10.291.313c-.4-.4-.999-.4-1.399 0s-.4 1 0 1.399l.6.6-6.794 3.696-1-1C1.299 4.61.7 4.61.3 5.009c-.4.4-.4 1 0 1.4l1.498 1.498 2.398 2.398L.6 14.001 2 15.4l3.696-3.697L9.692 15.7c.5.5 1.199.2 1.398 0 .4-.4.4-1 0-1.4l-.999-.998 3.697-6.695.6.6c.599.6 1.199.2 1.398 0 .3-.4.3-1.1-.1-1.499Zm-7.193 6.095L4.196 7.507l6.695-3.697 1.298 1.299-3.696 6.694Z" />
|
||||
</svg>
|
||||
ekuplu89
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">7d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">688 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-indigo-400 rounded-sm flex flex-col justify-center items-center outline outline-2 outline-indigo-100">
|
||||
<svg className="inline-flex fill-indigo-500 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>499</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 2 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage02} width="32" height="32" alt="User 02" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">Failed for the past 12 years as a tech entrepreneur. My key takeaways.</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
ekuplu89
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">4h</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">14 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-indigo-400 rounded-sm flex flex-col justify-center items-center outline outline-2 outline-indigo-100">
|
||||
<svg className="inline-flex fill-indigo-500 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>217</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 3 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage01} width="32" height="32" alt="User 01" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">Besides Product Hunt, where else should I promote my new project? 🤔</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
katemerlu
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">2h</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">17 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>44</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 4 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage03} width="32" height="32" alt="User 03" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">
|
||||
I built and sold 2 small SaaS products and quit my job in the last two years — AMA.
|
||||
</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
markusj
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">2d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">298 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>217</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 5 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage04} width="32" height="32" alt="User 04" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">
|
||||
Had a full-time job, bootstrapped a side project to 7 digit ARR, now building another side project—AMA
|
||||
</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
davidp1
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">2d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">312 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>399</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Promoted post */}
|
||||
<article className="bg-amber-50 shadow-md rounded border border-amber-300 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<svg className="w-8 h-8 rounded-full" width="32" height="32" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#3B82F6" d="M0 0h32v32H0z" />
|
||||
<path
|
||||
d="M16.561 22c3.061 0 5.327-2.088 5.939-4.642h-3.449c-.367.69-1.04 1.5-2.449 1.5-1.612 0-2.694-1.216-2.694-2.858 0-1.622 1.082-2.94 2.694-2.858 1.408 0 2.082.81 2.449 1.581h3.429c-.572-2.757-3-4.723-6-4.723-3.388 0-5.98 2.676-5.98 5.98 0 3.344 2.633 6.02 6.061 6.02Z"
|
||||
fill="#EFF6FF"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
</svg>
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">
|
||||
💸 Trade crypto, fiat, and stablecoins with Crypto.io. Low fees and incredible performance!
|
||||
</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
crypto.io
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500 italic">Promoted</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 6 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage05} width="32" height="32" alt="User 05" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">Which are the main channels you use to drive traffic to your website? 📈</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
sophiestar
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">3d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">66 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>31</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 7 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage06} width="32" height="32" alt="User 06" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">
|
||||
How to build a following on Twitter as a founder - A guide to growing your audience 🚀
|
||||
</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
molliehacks
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">3d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">32 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-indigo-400 rounded-sm flex flex-col justify-center items-center outline outline-2 outline-indigo-100">
|
||||
<svg className="inline-flex fill-indigo-500 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>24</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 8 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage04} width="32" height="32" alt="User 04" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">What's the best way to get started building web 3 social products?</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
davidp1
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">4d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">27 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>22</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Post 9 */}
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
<div className="flex flex-start space-x-4">
|
||||
{/* Avatar */}
|
||||
<div className="shrink-0 mt-1.5">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage07} width="32" height="32" alt="User 07" />
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div className="grow">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-2">
|
||||
<Link to="/community/forum-post">How important is customer feedback for the improvement of a product?</Link>
|
||||
</h2>
|
||||
{/* Footer */}
|
||||
<footer className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
elenmisk
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">5d</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">61 Comments</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>34</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default ForumEntries;
|
||||
@@ -1,431 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import UserAvatar from '../../images/user-40-02.jpg';
|
||||
import UserImage01 from '../../images/user-28-01.jpg';
|
||||
import UserImage02 from '../../images/user-28-02.jpg';
|
||||
import UserImage05 from '../../images/user-28-05.jpg';
|
||||
import UserImage09 from '../../images/user-28-09.jpg';
|
||||
import UserImage10 from '../../images/user-28-10.jpg';
|
||||
|
||||
function ForumEntry() {
|
||||
return (
|
||||
<article className="bg-white shadow-md rounded border border-slate-200 p-5">
|
||||
{/* Breadcrumbs */}
|
||||
<div className="mb-2">
|
||||
<ul className="inline-flex flex-wrap text-sm font-medium">
|
||||
<li className="flex items-center">
|
||||
<Link className="text-slate-500 hover:text-indigo-500" to="/community/forum">
|
||||
Home
|
||||
</Link>
|
||||
<svg className="h-4 w-4 fill-current text-slate-400 mx-2" viewBox="0 0 16 16">
|
||||
<path d="M6.6 13.4L5.2 12l4-4-4-4 1.4-1.4L12 8z" />
|
||||
</svg>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<a className="text-slate-500 hover:text-indigo-500" href="#0">
|
||||
Discussion
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Header */}
|
||||
<header className="pb-4">
|
||||
{/* Title */}
|
||||
<div className="flex items-start space-x-3 mb-3">
|
||||
<h2 className="text-2xl text-slate-800 font-bold">Besides Product Hunt, where else should I promote my new project? 🤔</h2>
|
||||
{/* Upvote button */}
|
||||
<div className="shrink-0">
|
||||
<button className="text-xs font-semibold text-center h-12 w-12 border border-slate-200 hover:border-slate-300 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>44</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{/* Meta */}
|
||||
<div className="flex flex-wrap text-sm">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
katemerlu
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">2h</span>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<span className="text-slate-500">17 Comments</span>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{/* Content */}
|
||||
<div className="space-y-4 mb-6">
|
||||
<p>Looking for new ideas to get users, receive feedback, and increase exposure! Besides PH, where else do you showcase your product?</p>
|
||||
<p>Please advise 🙌</p>
|
||||
</div>
|
||||
{/* Comment form */}
|
||||
<div>
|
||||
<div className="flex items-start space-x-3 mb-3">
|
||||
<img className="rounded-full shrink-0" src={UserAvatar} width="40" height="40" alt="User 02" />
|
||||
<div className="grow">
|
||||
<label htmlFor="comment" className="sr-only">
|
||||
Write a comment…
|
||||
</label>
|
||||
<textarea
|
||||
id="comment"
|
||||
className="form-textarea w-full focus:border-slate-300"
|
||||
rows="4"
|
||||
placeholder="Write a comment…"
|
||||
defaultValue={''}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="text-right">
|
||||
<button type="submit" className="btn-sm bg-indigo-500 hover:bg-indigo-600 text-white whitespace-nowrap">
|
||||
Reply ->
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{/* Comments */}
|
||||
<div className="mt-4">
|
||||
<h3 className="font-semibold text-slate-800 mb-4">Comments</h3>
|
||||
<ul className="space-y-5">
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center hover:text-indigo-500">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>44</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>
|
||||
We've also had the same question to be honest. And for Appy.com launch we decided to go with Twitter as a primary medium and then
|
||||
Product Hunt as the other one. And I have to say that it led to some great results as Twitter allows you to be super active and
|
||||
engage in many conversations.
|
||||
</p>
|
||||
<p>Also, users are there and everything is super active. So that will be my advice - invest time in Twitter</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage02} width="24" height="24" alt="User 02" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
ekuplu89
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Nested comments */}
|
||||
<ul className="space-y-5">
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center hover:text-indigo-500">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>2</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>
|
||||
That's great advice,{' '}
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
@ekuplu89
|
||||
</a>{' '}
|
||||
👏
|
||||
</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage05} width="24" height="24" alt="User 05" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
ellielong
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center">
|
||||
<svg className="inline-flex fill-indigo-500 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>27</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>
|
||||
If you are a SaaS product and are looking for early adopters, AppSumo seems to be a great place to list on. Most of the users
|
||||
there seem to be early-adopters. Life-time deals seem to be the norm there.
|
||||
</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage01} width="24" height="24" alt="User 01" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
markcuttik
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center hover:text-indigo-500">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>24</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>
|
||||
Thank you very much for all the people who are posting other alt=""ernatives! I will launch my free product design course in
|
||||
February and I will make a notion template with all this information! :)
|
||||
</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage09} width="24" height="24" alt="User 09" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
davidp1
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Nested comments */}
|
||||
<ul className="space-y-5">
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center hover:text-indigo-500">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>2</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>That sounds like an excellent idea. I'd love to take a look when you're ready!</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage05} width="24" height="24" alt="User 05" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
ellielong
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Nested comments */}
|
||||
<ul className="space-y-5">
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center hover:text-indigo-500">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>1</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>Expect it! 👊</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage09} width="24" height="24" alt="User 09" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
davidp1
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
{/* Comment */}
|
||||
<li className="relative pl-9 space-y-5">
|
||||
{/* Comment wrapper */}
|
||||
<div className="flex items-start">
|
||||
{/* Comment upvote */}
|
||||
<div className="absolute top-0 left-0">
|
||||
<button className="text-xs font-semibold text-left w-6 rounded-sm flex flex-col justify-center items-center hover:text-indigo-500">
|
||||
<svg className="inline-flex fill-slate-400 mt-1.5 mb-1.5" width="12" height="6" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m0 6 6-6 6 6z" />
|
||||
</svg>
|
||||
<div>19</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Comment content */}
|
||||
<div>
|
||||
{/* Comment text */}
|
||||
<div className="grow text-sm text-slate-800 space-y-2 mb-2">
|
||||
<p>Social Media (channels based on your target audience), and Slack channels</p>
|
||||
</div>
|
||||
{/* Comment footer */}
|
||||
<div className="flex flex-wrap text-xs">
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="block mr-2" href="#0">
|
||||
<img className="rounded-full" src={UserImage10} width="24" height="24" alt="User 10" />
|
||||
</a>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
patrick2
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Reply
|
||||
</a>
|
||||
</div>
|
||||
<div className="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-slate-400 after:px-2">
|
||||
<a className="font-medium text-slate-500 hover:text-slate-600" href="#0">
|
||||
Share
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{/* View more link */}
|
||||
<div className="text-center mt-5">
|
||||
<button className="text-sm font-medium text-indigo-500 hover:text-indigo-600">View More Comments</button>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
);
|
||||
}
|
||||
|
||||
export default ForumEntry;
|
||||
@@ -1,97 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function ForumLeftContent() {
|
||||
return (
|
||||
<div className="w-full md:w-60 mb-8 md:mb-0">
|
||||
<div className="md:sticky md:top-16 md:h-[calc(100vh-64px)] md:overflow-x-hidden md:overflow-y-auto no-scrollbar">
|
||||
<div className="md:py-8">
|
||||
<div className="flex justify-between items-center md:block">
|
||||
{/* Title */}
|
||||
<header className="mb-6">
|
||||
<h1 className="text-2xl md:text-3xl text-slate-800 font-bold">Forum ✨</h1>
|
||||
</header>
|
||||
|
||||
{/* Button */}
|
||||
<div className="xl:hidden mb-6">
|
||||
<button className="btn md:w-full bg-indigo-500 hover:bg-indigo-600 text-white">Create Post</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Links */}
|
||||
<div className="flex flex-nowrap overflow-x-scroll no-scrollbar md:block md:overflow-auto px-4 md:space-y-3 -mx-4">
|
||||
{/* Group 1 */}
|
||||
<div>
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3 md:sr-only">Menu</div>
|
||||
<ul className="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap bg-white" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-indigo-500 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M10 16h4c.6 0 1-.4 1-.998V6.016c0-.3-.1-.6-.4-.8L8.6.226c-.4-.3-.9-.3-1.3 0l-6 4.992c-.2.2-.3.5-.3.799v8.986C1 15.6 1.4 16 2 16h4c.6 0 1-.4 1-.998v-2.996h2v2.996c0 .599.4.998 1 .998Zm-4-5.99c-.6 0-1 .399-1 .998v2.995H3V6.515L8 2.32l5 4.194v7.488h-2v-2.995c0-.6-.4-.999-1-.999H6Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-indigo-500">Home</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0 0 11.5 1 4.377 4.377 0 0 0 8 2.707 4.383 4.383 0 0 0 4.5 1a4.5 4.5 0 0 0-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 0 0 0-6.364Zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 0 1 4.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 0 1 1.785 4.251h-.003Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Reading List</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M5 9h11v2H5V9zM0 9h3v2H0V9zm5 4h6v2H5v-2zm-5 0h3v2H0v-2zm5-8h7v2H5V5zM0 5h3v2H0V5zm5-4h11v2H5V1zM0 1h3v2H0V1z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Listings</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M1 12a1 1 0 0 1-.707-1.704l4.496-4.493a1 1 0 0 1 1.413 0l3.29 3.287 4.79-4.785a1 1 0 1 1 1.413 1.412l-5.496 5.491a1 1 0 0 1-1.413 0L5.496 7.92l-3.79 3.787A1 1 0 0 1 .999 12Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Podcasts</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Group 2 */}
|
||||
<div>
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3">My Groups</div>
|
||||
<ul className="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-3" viewBox="0 0 12 12">
|
||||
<path d="M6 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0 2A6 6 0 1 1 6 0a6 6 0 0 1 0 12Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Startups</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-rose-500 mr-3" viewBox="0 0 12 12">
|
||||
<path d="M6 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0 2A6 6 0 1 1 6 0a6 6 0 0 1 0 12Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Javascript</span>
|
||||
</a>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<a className="flex items-center px-2.5 py-2 rounded whitespace-nowrap" href="#0">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-amber-500 mr-3" viewBox="0 0 12 12">
|
||||
<path d="M6 10a4 4 0 1 0 0-8 4 4 0 0 0 0 8Zm0 2A6 6 0 1 1 6 0a6 6 0 0 1 0 12Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium text-slate-600">Productivity</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ForumLeftContent;
|
||||
@@ -1,121 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage from '../../images/user-40-04.jpg';
|
||||
|
||||
function ForumPostRightContent() {
|
||||
return (
|
||||
<div className="w-full hidden xl:block xl:w-72">
|
||||
<div className="lg:sticky lg:top-16 lg:h-[calc(100vh-64px)] lg:overflow-x-hidden lg:overflow-y-auto no-scrollbar">
|
||||
<div className="md:py-8">
|
||||
{/* Button */}
|
||||
<div className="mb-6">
|
||||
<button className="btn w-full bg-indigo-500 hover:bg-indigo-600 text-white">Create Post</button>
|
||||
</div>
|
||||
|
||||
{/* Blocks */}
|
||||
<div className="space-y-4">
|
||||
|
||||
{/* Block 1 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">About the Author</div>
|
||||
<div className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 shrink-0 mr-3">
|
||||
<img className="rounded-full" src={UserImage} width="40" height="40" alt="User 04" />
|
||||
</div>
|
||||
<div>
|
||||
<div className="font-semibold text-slate-800">Kate Merlu</div>
|
||||
<div className="text-sm text-slate-500 italic">Building SquareApp 🚀</div>
|
||||
</div>
|
||||
</div>
|
||||
<ul className="text-sm space-y-2">
|
||||
<li>🤟 <span className="font-medium">1798</span> Karma</li>
|
||||
<li>🔥 <span className="font-medium">39</span> Posts</li>
|
||||
<li>✍️ <span className="font-medium">299</span> Comments</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">Follow</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Block 2 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">Popular Stories</div>
|
||||
<ul className="space-y-3">
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
I built and sold 2 small SaaS products and quit my job in the last two years — AMA
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
markusj
|
||||
</a>{' '}
|
||||
· 2d · 312 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Besides Product Hunt, where else should I promote my new project? 🤔
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
katemerlu
|
||||
</a>{' '}
|
||||
· 2h · 7 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Which are the main channels you use to drive traffic to your website? 📈
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
sophiestar
|
||||
</a>{' '}
|
||||
· 3d · 66 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Failed for the past 12 years as a tech entrepreneur. My key takeaways.
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
ekuplu89
|
||||
</a>{' '}
|
||||
· 4h · 14 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
How to build a following on Twitter as a founder - A guide to growing your audience 🚀
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
molliehacks
|
||||
</a>{' '}
|
||||
· 3d · 32 comments
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">View All</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ForumPostRightContent;
|
||||
@@ -1,286 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/avatar-01.jpg';
|
||||
import UserImage02 from '../../images/avatar-02.jpg';
|
||||
import UserImage03 from '../../images/avatar-03.jpg';
|
||||
import UserImage04 from '../../images/avatar-04.jpg';
|
||||
import UserImage05 from '../../images/avatar-05.jpg';
|
||||
import UserImage06 from '../../images/avatar-06.jpg';
|
||||
|
||||
function ForumRightContent() {
|
||||
return (
|
||||
<div className="w-full hidden xl:block xl:w-72">
|
||||
<div className="lg:sticky lg:top-16 lg:h-[calc(100vh-64px)] lg:overflow-x-hidden lg:overflow-y-auto no-scrollbar">
|
||||
<div className="md:py-8">
|
||||
{/* Button */}
|
||||
<div className="mb-6">
|
||||
<button className="btn w-full bg-indigo-500 hover:bg-indigo-600 text-white">Create Post</button>
|
||||
</div>
|
||||
|
||||
{/* Blocks */}
|
||||
<div className="space-y-4">
|
||||
|
||||
{/* Block 1 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">Forum Meetups</div>
|
||||
<ul>
|
||||
{/* Event 1 */}
|
||||
<li className="relative pb-4 last-of-type:pb-0">
|
||||
<div className="pl-6">
|
||||
<div className="text-xs font-medium uppercase text-indigo-600 mb-0.5">Mon 27 Dec</div>
|
||||
<div className="text-sm mb-2">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Silicon Valley Bootstrapper Breakfast Online for 2021
|
||||
</a>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage02}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 02"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage03}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 03"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+22</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Timeline element */}
|
||||
<div aria-hidden="true">
|
||||
<div className="absolute top-1 -bottom-1 left-0.5 ml-px w-0.5 bg-slate-200" />
|
||||
<div className="absolute top-1 left-0 ml- w-2 h-2 rounded-full bg-slate-400" />
|
||||
</div>
|
||||
</li>
|
||||
{/* Event 2 */}
|
||||
<li className="relative pb-4 last-of-type:pb-0">
|
||||
<div className="pl-6">
|
||||
<div className="text-xs font-medium uppercase text-indigo-600 mb-0.5">Mon 27 Dec</div>
|
||||
<div className="text-sm mb-2">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
New York & New Jersey Virtual Retreat
|
||||
</a>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage01}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 01"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage05}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 05"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+132</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Timeline element */}
|
||||
<div aria-hidden="true">
|
||||
<div className="absolute top-1 -bottom-1 left-0.5 ml-px w-0.5 bg-slate-200" />
|
||||
<div className="absolute top-1 left-0 ml- w-2 h-2 rounded-full bg-slate-400" />
|
||||
</div>
|
||||
</li>
|
||||
{/* Event 3 */}
|
||||
<li className="relative pb-4 last-of-type:pb-0">
|
||||
<div className="pl-6">
|
||||
<div className="text-xs font-medium uppercase text-indigo-600 mb-0.5">Mon 29 Dec</div>
|
||||
<div className="text-sm mb-2">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
The World of AI and Machine Learning - Open Chat
|
||||
</a>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage06}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 06"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage03}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 03"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage01}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 01"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+12</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Timeline element */}
|
||||
<div aria-hidden="true">
|
||||
<div className="absolute top-1 -bottom-1 left-0.5 ml-px w-0.5 bg-slate-200" />
|
||||
<div className="absolute top-1 left-0 ml- w-2 h-2 rounded-full bg-slate-400" />
|
||||
</div>
|
||||
</li>
|
||||
{/* Event 4 */}
|
||||
<li className="relative pb-4 last-of-type:pb-0">
|
||||
<div className="pl-6">
|
||||
<div className="text-xs font-medium uppercase text-indigo-600 mb-0.5">Mon 29 Dec</div>
|
||||
<div className="text-sm mb-2">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
NYC Code & Coffee 2.0 @ Freehold Brooklyn
|
||||
</a>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage03}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 03"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage05}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 05"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+17</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Timeline element */}
|
||||
<div aria-hidden="true">
|
||||
<div className="absolute top-1 -bottom-1 left-0.5 ml-px w-0.5 bg-slate-200" />
|
||||
<div className="absolute top-1 left-0 ml- w-2 h-2 rounded-full bg-slate-400" />
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">View All</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Block 2 */}
|
||||
<div className="bg-slate-50 p-4 rounded border border-slate-200">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-4">Popular Stories</div>
|
||||
<ul className="space-y-3">
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
I built and sold 2 small SaaS products and quit my job in the last two years — AMA
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
markusj
|
||||
</a>{' '}
|
||||
· 2d · 312 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Besides Product Hunt, where else should I promote my new project? 🤔
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
katemerlu
|
||||
</a>{' '}
|
||||
· 2h · 7 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Which are the main channels you use to drive traffic to your website? 📈
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
sophiestar
|
||||
</a>{' '}
|
||||
· 3d · 66 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
Failed for the past 12 years as a tech entrepreneur. My key takeaways.
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
ekuplu89
|
||||
</a>{' '}
|
||||
· 4h · 14 comments
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="text-sm mb-1">
|
||||
<a className="font-medium text-slate-800" href="#0">
|
||||
How to build a following on Twitter as a founder - A guide to growing your audience 🚀
|
||||
</a>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
molliehacks
|
||||
</a>{' '}
|
||||
· 3d · 32 comments
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div className="mt-4">
|
||||
<button className="btn-sm w-full bg-white border-slate-200 hover:border-slate-300 text-indigo-500 shadow-none">View All</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ForumRightContent;
|
||||
@@ -1,582 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import MeetupsThumb01 from '../../images/meetups-thumb-01.jpg';
|
||||
import MeetupsThumb02 from '../../images/meetups-thumb-02.jpg';
|
||||
import MeetupsThumb03 from '../../images/meetups-thumb-03.jpg';
|
||||
import MeetupsThumb04 from '../../images/meetups-thumb-04.jpg';
|
||||
import MeetupsThumb05 from '../../images/meetups-thumb-05.jpg';
|
||||
import MeetupsThumb06 from '../../images/meetups-thumb-06.jpg';
|
||||
import MeetupsThumb07 from '../../images/meetups-thumb-07.jpg';
|
||||
import MeetupsThumb08 from '../../images/meetups-thumb-08.jpg';
|
||||
import UserImage01 from '../../images/avatar-01.jpg';
|
||||
import UserImage02 from '../../images/avatar-02.jpg';
|
||||
import UserImage03 from '../../images/avatar-03.jpg';
|
||||
import UserImage04 from '../../images/avatar-04.jpg';
|
||||
import UserImage05 from '../../images/avatar-05.jpg';
|
||||
import UserImage06 from '../../images/avatar-06.jpg';
|
||||
|
||||
function MeetupsPosts() {
|
||||
return (
|
||||
<div className="grid xl:grid-cols-2 gap-6">
|
||||
|
||||
{/* Item 1 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb01}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 01"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Mon 27 Dec, 2021</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">Silicon Valley Bootstrapper Breakfast Online for 2021</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage01}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 01"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage05}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 05"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+22</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 2 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb02}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 02"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Mon 27 Dec, 2021</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">New York & New Jersey Virtual Retreat 2021</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage02}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 02"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage03}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 03"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+132</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 3 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb03}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 03"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Wed 29 Dec, 2021</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">The World of AI and Machine Learning — Open Chat</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage06}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 06"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage03}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 03"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage01}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 01"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+12</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 4 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb04}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 04"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Wed 29 Dec, 2021</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">NYC Code & Coffee 2.0 @ Freehold Brooklyn</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage05}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 05"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage02}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 02"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+17</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 5 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb05}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 05"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Mon 3 Jan, 2022</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">Acme Inc. London Meetup: Women in Tech Night</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage02}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 02"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage01}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 01"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+117</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 6 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb06}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 06"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Thu 6 Jan, 2022</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">Founder Worldwide - First Meetup of 2022!</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage03}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 03"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage05}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 05"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+64</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 7 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb07}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 07"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Thu 6 Jan, 2022</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">NYC Blockchain Network - Monthly 3rd Thursday Meetup</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage02}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 02"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage04}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 04"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+112</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{/* Item 8 */}
|
||||
<article className="flex bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<Link className="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" to="/community/meetups-post">
|
||||
<img
|
||||
className="absolute object-cover object-center w-full h-full"
|
||||
src={MeetupsThumb08}
|
||||
width="220"
|
||||
height="236"
|
||||
alt="Meetup 08"
|
||||
/>
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</Link>
|
||||
{/* Content */}
|
||||
<div className="grow p-5 flex flex-col">
|
||||
<div className="grow">
|
||||
<div className="text-sm font-semibold text-indigo-500 uppercase mb-2">Fri 7 Jan, 2022</div>
|
||||
<Link className="inline-flex mb-2" to="/community/meetups-post">
|
||||
<h3 className="text-lg font-bold text-slate-800">Build a Personal Brand and Boost Your Career in AI!</h3>
|
||||
</Link>
|
||||
<div className="text-sm">
|
||||
Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex justify-between mt-3">
|
||||
{/* Tag */}
|
||||
<div className="text-xs inline-flex items-center font-medium bg-slate-100 text-slate-600 rounded-full text-center px-2.5 py-1">
|
||||
<svg className="w-4 h-3 fill-slate-400 mr-2" viewBox="0 0 16 12">
|
||||
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||
</svg>
|
||||
<span>Online Event</span>
|
||||
</div>
|
||||
{/* Avatars */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage01}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 01"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage05}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 05"
|
||||
/>
|
||||
<img
|
||||
className="rounded-full border-2 border-white box-content"
|
||||
src={UserImage06}
|
||||
width="28"
|
||||
height="28"
|
||||
alt="User 06"
|
||||
/>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-400 italic">+32</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default MeetupsPosts;
|
||||
@@ -1,343 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import ProfileBg from '../../images/profile-bg.jpg';
|
||||
import UserAvatar from '../../images/user-128-01.jpg';
|
||||
import Icon02 from '../../images/icon-02.svg';
|
||||
import Icon03 from '../../images/icon-03.svg';
|
||||
import UserImage01 from '../../images/avatar-01.jpg';
|
||||
import UserImage02 from '../../images/avatar-02.jpg';
|
||||
import UserImage03 from '../../images/avatar-03.jpg';
|
||||
import UserImage04 from '../../images/avatar-04.jpg';
|
||||
import UserImage05 from '../../images/avatar-05.jpg';
|
||||
import UserImage06 from '../../images/avatar-06.jpg';
|
||||
|
||||
function ProfileBody({
|
||||
profileSidebarOpen,
|
||||
setProfileSidebarOpen
|
||||
}) {
|
||||
return (
|
||||
<div className={`grow flex flex-col md:translate-x-0 transform transition-transform duration-300 ease-in-out ${profileSidebarOpen ? 'translate-x-1/3' : 'translate-x-0'}`}>
|
||||
|
||||
{/* Profile background */}
|
||||
<div className="relative h-56 bg-slate-200">
|
||||
<img className="object-cover h-full w-full" src={ProfileBg} width="979" height="220" alt="Profile background" />
|
||||
{/* Close button */}
|
||||
<button
|
||||
className="md:hidden absolute top-4 left-4 sm:left-6 text-white opacity-80 hover:opacity-100"
|
||||
onClick={() => setProfileSidebarOpen(!profileSidebarOpen)}
|
||||
aria-controls="profile-sidebar"
|
||||
aria-expanded={profileSidebarOpen}
|
||||
>
|
||||
<span className="sr-only">Close sidebar</span>
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.7 18.7l1.4-1.4L7.8 13H20v-2H7.8l4.3-4.3-1.4-1.4L4 12z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{/* Content */}
|
||||
<div className="relative px-4 sm:px-6 pb-8">
|
||||
|
||||
{/* Pre-header */}
|
||||
<div className="-mt-16 mb-6 sm:mb-3">
|
||||
|
||||
<div className="flex flex-col items-center sm:flex-row sm:justify-between sm:items-end">
|
||||
|
||||
{/* Avatar */}
|
||||
<div className="inline-flex -ml-1 -mt-1 mb-4 sm:mb-0">
|
||||
<img className="rounded-full border-4 border-white" src={UserAvatar} width="128" height="128" alt="Avatar" />
|
||||
</div>
|
||||
|
||||
{/* Actions */}
|
||||
<div className="flex space-x-2 sm:mb-2">
|
||||
<button className="p-1.5 shrink-0 rounded border border-slate-200 hover:border-slate-300 shadow-sm">
|
||||
<svg className="w-4 h-1 fill-current text-slate-400" viewBox="0 0 16 4">
|
||||
<circle cx="8" cy="2" r="2" />
|
||||
<circle cx="2" cy="2" r="2" />
|
||||
<circle cx="14" cy="2" r="2" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="p-1.5 shrink-0 rounded border border-slate-200 hover:border-slate-300 shadow-sm">
|
||||
<svg className="w-4 h-4 fill-current text-indigo-500" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7Zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8Z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="btn-sm bg-indigo-500 hover:bg-indigo-600 text-white">
|
||||
<svg className="fill-current shrink-0" width="11" height="8" viewBox="0 0 11 8">
|
||||
<path d="m.457 4.516.969-.99 2.516 2.481L9.266.702l.985.99-6.309 6.284z" />
|
||||
</svg>
|
||||
<span className="ml-2">Following</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* Header */}
|
||||
<header className="text-center sm:text-left mb-6">
|
||||
{/* Name */}
|
||||
<div className="inline-flex items-start mb-2">
|
||||
<h1 className="text-2xl text-slate-800 font-bold">Carolyn McNeail</h1>
|
||||
<svg className="w-4 h-4 fill-current shrink-0 text-amber-500 ml-2" viewBox="0 0 16 16">
|
||||
<path d="M13 6a.75.75 0 0 1-.75-.75 1.5 1.5 0 0 0-1.5-1.5.75.75 0 1 1 0-1.5 1.5 1.5 0 0 0 1.5-1.5.75.75 0 1 1 1.5 0 1.5 1.5 0 0 0 1.5 1.5.75.75 0 1 1 0 1.5 1.5 1.5 0 0 0-1.5 1.5A.75.75 0 0 1 13 6ZM6 16a1 1 0 0 1-1-1 4 4 0 0 0-4-4 1 1 0 0 1 0-2 4 4 0 0 0 4-4 1 1 0 1 1 2 0 4 4 0 0 0 4 4 1 1 0 0 1 0 2 4 4 0 0 0-4 4 1 1 0 0 1-1 1Z" />
|
||||
</svg>
|
||||
</div>
|
||||
{/* Bio */}
|
||||
<div className="text-sm mb-3">Fitness Fanatic, Design Enthusiast, Mentor, Meetup Organizer & PHP Lover.</div>
|
||||
{/* Meta */}
|
||||
<div className="flex flex-wrap justify-center sm:justify-start space-x-4">
|
||||
<div className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current shrink-0 text-slate-400" viewBox="0 0 16 16">
|
||||
<path d="M8 8.992a2 2 0 1 1-.002-3.998A2 2 0 0 1 8 8.992Zm-.7 6.694c-.1-.1-4.2-3.696-4.2-3.796C1.7 10.69 1 8.892 1 6.994 1 3.097 4.1 0 8 0s7 3.097 7 6.994c0 1.898-.7 3.697-2.1 4.996-.1.1-4.1 3.696-4.2 3.796-.4.3-1 .3-1.4-.1Zm-2.7-4.995L8 13.688l3.4-2.997c1-1 1.6-2.198 1.6-3.597 0-2.798-2.2-4.996-5-4.996S3 4.196 3 6.994c0 1.399.6 2.698 1.6 3.697 0-.1 0-.1 0 0Z" />
|
||||
</svg>
|
||||
<span className="text-sm font-medium whitespace-nowrap text-slate-500 ml-2">Milan, IT</span>
|
||||
</div>
|
||||
<div className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current shrink-0 text-slate-400" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0ZM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12Zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2Z" />
|
||||
</svg>
|
||||
<a className="text-sm font-medium whitespace-nowrap text-indigo-500 hover:text-indigo-600 ml-2" href="#0">carolinmcneail.com</a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{/* Tabs */}
|
||||
<div className="relative mb-6">
|
||||
<div className="absolute bottom-0 w-full h-px bg-slate-200" aria-hidden="true"></div>
|
||||
<ul className="relative text-sm font-medium flex flex-nowrap -mx-4 sm:-mx-6 lg:-mx-8 overflow-x-scroll no-scrollbar">
|
||||
<li className="mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="block pb-3 text-indigo-500 whitespace-nowrap border-b-2 border-indigo-500" href="#0">General</a>
|
||||
</li>
|
||||
<li className="mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="block pb-3 text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Connections</a>
|
||||
</li>
|
||||
<li className="mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="block pb-3 text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Contributions</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{/* Profile content */}
|
||||
<div className="flex flex-col xl:flex-row xl:space-x-16">
|
||||
|
||||
{/* Main content */}
|
||||
<div className="space-y-5 mb-8 xl:mb-0">
|
||||
|
||||
{/* About Me */}
|
||||
<div>
|
||||
<h2 className="text-slate-800 font-semibold mb-2">About Me</h2>
|
||||
<div className="text-sm space-y-2">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p>
|
||||
<p>Consectetur adipiscing elit, sed do eiusmod tempor magna aliqua.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Departments */}
|
||||
<div>
|
||||
<h2 className="text-slate-800 font-semibold mb-2">Departments</h2>
|
||||
{/* Cards */}
|
||||
<div className="grid xl:grid-cols-2 gap-4">
|
||||
|
||||
{/* Card */}
|
||||
<div className="bg-white p-4 border border-slate-200 rounded-sm shadow-sm">
|
||||
{/* Card header */}
|
||||
<div className="grow flex items-center truncate mb-2">
|
||||
<div className="w-8 h-8 shrink-0 flex items-center justify-center bg-slate-700 rounded-full mr-2">
|
||||
<img className="ml-1" src={Icon03} width="14" height="14" alt="Icon 03" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Acme Marketing</span>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card content */}
|
||||
<div className="text-sm mb-3">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore.</div>
|
||||
{/* Card footer */}
|
||||
<div className="flex justify-between items-center">
|
||||
{/* Avatars group */}
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage02} width="24" height="24" alt="Avatar" />
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage03} width="24" height="24" alt="Avatar" />
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage04} width="24" height="24" alt="Avatar" />
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage05} width="24" height="24" alt="Avatar" />
|
||||
</div>
|
||||
{/* Link */}
|
||||
<div>
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">View -></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card */}
|
||||
<div className="bg-white p-4 border border-slate-200 rounded-sm shadow-sm">
|
||||
{/* Card header */}
|
||||
<div className="grow flex items-center truncate mb-2">
|
||||
<div className="w-8 h-8 shrink-0 flex items-center justify-center bg-slate-700 rounded-full mr-2">
|
||||
<img className="ml-1" src={Icon02} width="14" height="14" alt="Icon 02" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Acme Product</span>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card content */}
|
||||
<div className="text-sm mb-3">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore.</div>
|
||||
{/* Card footer */}
|
||||
<div className="flex justify-between items-center">
|
||||
{/* Avatars group */}
|
||||
<div className="flex -space-x-3 -ml-0.5">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage06} width="24" height="24" alt="Avatar" />
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage03} width="24" height="24" alt="Avatar" />
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="24" height="24" alt="Avatar" />
|
||||
</div>
|
||||
{/* Link */}
|
||||
<div>
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">View -></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* Work History */}
|
||||
<div>
|
||||
<h2 className="text-slate-800 font-semibold mb-2">Work History</h2>
|
||||
<div className="bg-white p-4 border border-slate-200 rounded-sm shadow-sm">
|
||||
<ul className="space-y-3">
|
||||
|
||||
{/* Item */}
|
||||
<li className="sm:flex sm:items-center sm:justify-between">
|
||||
<div className="sm:grow flex items-center text-sm">
|
||||
{/* Icon */}
|
||||
<div className="w-8 h-8 rounded-full shrink-0 bg-amber-500 my-2 mr-3">
|
||||
<svg className="w-8 h-8 fill-current text-amber-50" viewBox="0 0 32 32">
|
||||
<path d="M21 14a.75.75 0 0 1-.75-.75 1.5 1.5 0 0 0-1.5-1.5.75.75 0 1 1 0-1.5 1.5 1.5 0 0 0 1.5-1.5.75.75 0 1 1 1.5 0 1.5 1.5 0 0 0 1.5 1.5.75.75 0 1 1 0 1.5 1.5 1.5 0 0 0-1.5 1.5.75.75 0 0 1-.75.75Zm-7 10a1 1 0 0 1-1-1 4 4 0 0 0-4-4 1 1 0 0 1 0-2 4 4 0 0 0 4-4 1 1 0 0 1 2 0 4 4 0 0 0 4 4 1 1 0 0 1 0 2 4 4 0 0 0-4 4 1 1 0 0 1-1 1Z" />
|
||||
</svg>
|
||||
</div>
|
||||
{/* Position */}
|
||||
<div>
|
||||
<div className="font-medium text-slate-800">Senior Product Designer</div>
|
||||
<div className="flex flex-nowrap items-center space-x-2 whitespace-nowrap">
|
||||
<div>Remote</div>
|
||||
<div className="text-slate-400">·</div>
|
||||
<div>April, 2020 - Today</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Tags */}
|
||||
<div className="sm:ml-2 mt-2 sm:mt-0">
|
||||
<ul className="flex flex-wrap sm:justify-end -m-1">
|
||||
<li className="m-1">
|
||||
<button className="inline-flex items-center justify-center text-xs font-medium leading-5 rounded-full px-2.5 py-0.5 border border-slate-200 hover:border-slate-300 shadow-sm bg-white text-slate-500 duration-150 ease-in-out">Marketing</button>
|
||||
</li>
|
||||
<li className="m-1">
|
||||
<button className="inline-flex items-center justify-center text-xs font-medium leading-5 rounded-full px-2.5 py-0.5 border border-slate-200 hover:border-slate-300 shadow-sm bg-white text-slate-500 duration-150 ease-in-out">+4</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
{/* Item */}
|
||||
<li className="sm:flex sm:items-center sm:justify-between">
|
||||
<div className="sm:grow flex items-center text-sm">
|
||||
{/* Icon */}
|
||||
<div className="w-8 h-8 rounded-full shrink-0 bg-indigo-500 my-2 mr-3">
|
||||
<svg className="w-8 h-8 fill-current text-indigo-50" viewBox="0 0 32 32">
|
||||
<path d="M8.994 20.006a1 1 0 0 1-.707-1.707l4.5-4.5a1 1 0 0 1 1.414 0l3.293 3.293 4.793-4.793a1 1 0 1 1 1.414 1.414l-5.5 5.5a1 1 0 0 1-1.414 0l-3.293-3.293L9.7 19.713a1 1 0 0 1-.707.293Z" />
|
||||
</svg>
|
||||
</div>
|
||||
{/* Position */}
|
||||
<div>
|
||||
<div className="font-medium text-slate-800">Product Designer</div>
|
||||
<div className="flex flex-nowrap items-center space-x-2 whitespace-nowrap">
|
||||
<div>Milan, IT</div>
|
||||
<div className="text-slate-400">·</div>
|
||||
<div>April, 2018 - April 2020</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Tags */}
|
||||
<div className="sm:ml-2 mt-2 sm:mt-0">
|
||||
<ul className="flex flex-wrap sm:justify-end -m-1">
|
||||
<li className="m-1">
|
||||
<button className="inline-flex items-center justify-center text-xs font-medium leading-5 rounded-full px-2.5 py-0.5 border border-slate-200 hover:border-slate-300 shadow-sm bg-white text-slate-500 duration-150 ease-in-out">Marketing</button>
|
||||
</li>
|
||||
<li className="m-1">
|
||||
<button className="inline-flex items-center justify-center text-xs font-medium leading-5 rounded-full px-2.5 py-0.5 border border-slate-200 hover:border-slate-300 shadow-sm bg-white text-slate-500 duration-150 ease-in-out">+4</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
{/* Item */}
|
||||
<li className="sm:flex sm:items-center sm:justify-between">
|
||||
<div className="sm:grow flex items-center text-sm">
|
||||
{/* Icon */}
|
||||
<div className="w-8 h-8 rounded-full shrink-0 bg-indigo-500 my-2 mr-3">
|
||||
<svg className="w-8 h-8 fill-current text-indigo-50" viewBox="0 0 32 32">
|
||||
<path d="M8.994 20.006a1 1 0 0 1-.707-1.707l4.5-4.5a1 1 0 0 1 1.414 0l3.293 3.293 4.793-4.793a1 1 0 1 1 1.414 1.414l-5.5 5.5a1 1 0 0 1-1.414 0l-3.293-3.293L9.7 19.713a1 1 0 0 1-.707.293Z" />
|
||||
</svg>
|
||||
</div>
|
||||
{/* Position */}
|
||||
<div>
|
||||
<div className="font-medium text-slate-800">Product Designer</div>
|
||||
<div className="flex flex-nowrap items-center space-x-2 whitespace-nowrap">
|
||||
<div>Milan, IT</div>
|
||||
<div className="text-slate-400">·</div>
|
||||
<div>April, 2018 - April 2020</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Tags */}
|
||||
<div className="sm:ml-2 mt-2 sm:mt-0">
|
||||
<ul className="flex flex-wrap sm:justify-end -m-1">
|
||||
<li className="m-1">
|
||||
<button className="inline-flex items-center justify-center text-xs font-medium leading-5 rounded-full px-2.5 py-0.5 border border-slate-200 hover:border-slate-300 shadow-sm bg-white text-slate-500 duration-150 ease-in-out">Marketing</button>
|
||||
</li>
|
||||
<li className="m-1">
|
||||
<button className="inline-flex items-center justify-center text-xs font-medium leading-5 rounded-full px-2.5 py-0.5 border border-slate-200 hover:border-slate-300 shadow-sm bg-white text-slate-500 duration-150 ease-in-out">+4</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* Sidebar */}
|
||||
<aside className="xl:min-w-56 xl:w-56 space-y-3">
|
||||
<div className="text-sm">
|
||||
<h3 className="font-medium text-slate-800">Title</h3>
|
||||
<div>Senior Product Designer</div>
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
<h3 className="font-medium text-slate-800">Location</h3>
|
||||
<div>Milan, IT - Remote</div>
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
<h3 className="font-medium text-slate-800">Email</h3>
|
||||
<div>carolinmcneail@acme.com</div>
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
<h3 className="font-medium text-slate-800">Birthdate</h3>
|
||||
<div>4 April, 1987</div>
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
<h3 className="font-medium text-slate-800">Joined Acme</h3>
|
||||
<div>7 April, 2017</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ProfileBody;
|
||||
@@ -1,161 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import ProfileImage from '../../images/user-avatar-32.png';
|
||||
import UserImage01 from '../../images/user-32-01.jpg';
|
||||
import UserImage02 from '../../images/user-32-02.jpg';
|
||||
import UserImage03 from '../../images/user-32-03.jpg';
|
||||
import UserImage04 from '../../images/user-32-04.jpg';
|
||||
import UserImage05 from '../../images/user-32-05.jpg';
|
||||
import UserImage06 from '../../images/user-32-06.jpg';
|
||||
import UserImage08 from '../../images/user-32-08.jpg';
|
||||
|
||||
function ProfileSidebar({
|
||||
profileSidebarOpen,
|
||||
setProfileSidebarOpen
|
||||
}) {
|
||||
return (
|
||||
<div
|
||||
id="profile-sidebar"
|
||||
className={`absolute z-20 top-0 bottom-0 w-full md:w-auto md:static md:top-auto md:bottom-auto -mr-px md:translate-x-0 transform transition-transform duration-200 ease-in-out ${profileSidebarOpen ? 'translate-x-0' : '-translate-x-full'}`}
|
||||
>
|
||||
<div className="sticky top-16 bg-white overflow-x-hidden overflow-y-auto no-scrollbar shrink-0 border-r border-slate-200 md:w-72 xl:w-80 h-[calc(100vh-64px)]">
|
||||
|
||||
{/* Profile group */}
|
||||
<div>
|
||||
{/* Group header */}
|
||||
<div className="sticky top-0 z-10">
|
||||
<div className="flex items-center bg-white border-b border-slate-200 px-5 h-16">
|
||||
<div className="w-full flex items-center justify-between">
|
||||
{/* Profile image */}
|
||||
<div className="relative">
|
||||
<div className="grow flex items-center truncate">
|
||||
<img className="w-8 h-8 rounded-full mr-2" src={ProfileImage} width="32" height="32" alt="Group 01" />
|
||||
<div className="truncate">
|
||||
<span className="font-semibold text-slate-800">Acme Inc.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Add button */}
|
||||
<button className="p-1.5 shrink-0 rounded border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current text-indigo-500" viewBox="0 0 16 16">
|
||||
<path d="M15 7H9V1c0-.6-.4-1-1-1S7 .4 7 1v6H1c-.6 0-1 .4-1 1s.4 1 1 1h6v6c0 .6.4 1 1 1s1-.4 1-1V9h6c.6 0 1-.4 1-1s-.4-1-1-1Z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Group body */}
|
||||
<div className="px-5 py-4">
|
||||
{/* Search form */}
|
||||
<form className="relative">
|
||||
<label htmlFor="profile-search" className="sr-only">Search</label>
|
||||
<input id="profile-search" className="form-input w-full pl-9 focus:border-slate-300" type="search" placeholder="Search…" />
|
||||
<button className="absolute inset-0 right-auto group" type="submit" aria-label="Search">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 group-hover:text-slate-500 ml-3 mr-2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z" />
|
||||
<path d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z" />
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
{/* Team members */}
|
||||
<div className="mt-4">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3">Team members</div>
|
||||
<ul className="mb-6">
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded bg-indigo-100" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage08} width="32" height="32" alt="User 08" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Carolyn McNeail</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center truncate">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage06} width="32" height="32" alt="User 06" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Mary Roszczewski</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center truncate">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage03} width="32" height="32" alt="User 03" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Jerzy Wierzy</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center truncate">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage02} width="32" height="32" alt="User 02" />
|
||||
<div className="absolute top-0 right-0 w-2.5 h-2.5 bg-emerald-500 border-2 border-white rounded-full"></div>
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Tisha Yanchev</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center truncate">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage05} width="32" height="32" alt="User 05" />
|
||||
<div className="absolute top-0 right-0 w-2.5 h-2.5 bg-emerald-500 border-2 border-white rounded-full"></div>
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Simona Lürwer</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center truncate">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage04} width="32" height="32" alt="User 04" />
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Adrian Przetocki</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="w-full p-2 rounded" onClick={() => setProfileSidebarOpen(false)}>
|
||||
<div className="flex items-center truncate">
|
||||
<div className="relative mr-2">
|
||||
<img className="w-8 h-8 rounded-full" src={UserImage01} width="32" height="32" alt="User 01" />
|
||||
<div className="absolute top-0 right-0 w-2.5 h-2.5 bg-emerald-500 border-2 border-white rounded-full"></div>
|
||||
</div>
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-medium text-slate-800">Brian Halligan</span>
|
||||
</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ProfileSidebar;
|
||||
@@ -1,65 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import EditMenu from '../../components/DropdownEditMenu';
|
||||
|
||||
function UsersTabsCard(props) {
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Card top */}
|
||||
<div className="grow p-5">
|
||||
{/* Menu button */}
|
||||
<div className="relative">
|
||||
<EditMenu align="right" className="absolute top-0 right-0 inline-flex">
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">Option 1</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">Option 2</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-rose-500 hover:text-rose-600 flex py-1 px-3" to="#0">Remove</Link>
|
||||
</li>
|
||||
</EditMenu>
|
||||
</div>
|
||||
{/* Image + name */}
|
||||
<header>
|
||||
<div className="flex justify-center mb-2">
|
||||
<Link className="relative inline-flex items-start" to={props.link}>
|
||||
<div className="absolute top-0 right-0 -mr-2 bg-white rounded-full shadow" aria-hidden="true">
|
||||
<svg className="w-8 h-8 fill-current text-amber-500" viewBox="0 0 32 32">
|
||||
<path d="M21 14.077a.75.75 0 01-.75-.75 1.5 1.5 0 00-1.5-1.5.75.75 0 110-1.5 1.5 1.5 0 001.5-1.5.75.75 0 111.5 0 1.5 1.5 0 001.5 1.5.75.75 0 010 1.5 1.5 1.5 0 00-1.5 1.5.75.75 0 01-.75.75zM14 24.077a1 1 0 01-1-1 4 4 0 00-4-4 1 1 0 110-2 4 4 0 004-4 1 1 0 012 0 4 4 0 004 4 1 1 0 010 2 4 4 0 00-4 4 1 1 0 01-1 1z" />
|
||||
</svg>
|
||||
</div>
|
||||
<img className="rounded-full" src={props.image} width="64" height="64" alt={props.name} />
|
||||
</Link>
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<Link className="inline-flex text-slate-800 hover:text-slate-900" to={props.link}>
|
||||
<h2 className="text-xl leading-snug justify-center font-semibold">{props.name}</h2>
|
||||
</Link>
|
||||
</div>
|
||||
<div className="flex justify-center items-center"><span className="text-sm font-medium text-slate-400 -mt-0.5 mr-1">-></span> <span>{props.location}</span></div>
|
||||
</header>
|
||||
{/* Bio */}
|
||||
<div className="text-center mt-2">
|
||||
<div className="text-sm">{props.content}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div className="border-t border-slate-200">
|
||||
<Link className="block text-center text-sm text-indigo-500 hover:text-indigo-600 font-medium px-3 py-4" to="/messages">
|
||||
<div className="flex items-center justify-center">
|
||||
<svg className="w-4 h-4 fill-current shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<span>Send Message</span>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default UsersTabsCard;
|
||||
@@ -1,75 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import EditMenu from '../../components/DropdownEditMenu';
|
||||
|
||||
function UsersTilesCard(props) {
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Card top */}
|
||||
<div className="grow p-5">
|
||||
<div className="flex justify-between items-start">
|
||||
{/* Image + name */}
|
||||
<header>
|
||||
<div className="flex mb-2">
|
||||
<Link className="relative inline-flex items-start mr-5" to={props.link}>
|
||||
<div className="absolute top-0 right-0 -mr-2 bg-white rounded-full shadow" aria-hidden="true">
|
||||
<svg className="w-8 h-8 fill-current text-amber-500" viewBox="0 0 32 32">
|
||||
<path d="M21 14.077a.75.75 0 01-.75-.75 1.5 1.5 0 00-1.5-1.5.75.75 0 110-1.5 1.5 1.5 0 001.5-1.5.75.75 0 111.5 0 1.5 1.5 0 001.5 1.5.75.75 0 010 1.5 1.5 1.5 0 00-1.5 1.5.75.75 0 01-.75.75zM14 24.077a1 1 0 01-1-1 4 4 0 00-4-4 1 1 0 110-2 4 4 0 004-4 1 1 0 012 0 4 4 0 004 4 1 1 0 010 2 4 4 0 00-4 4 1 1 0 01-1 1z" />
|
||||
</svg>
|
||||
</div>
|
||||
<img className="rounded-full" src={props.image} width="64" height="64" alt={props.name} />
|
||||
</Link>
|
||||
<div className="mt-1 pr-1">
|
||||
<Link className="inline-flex text-slate-800 hover:text-slate-900" to={props.link}>
|
||||
<h2 className="text-xl leading-snug justify-center font-semibold">{props.name}</h2>
|
||||
</Link>
|
||||
<div className="flex items-center"><span className="text-sm font-medium text-slate-400 -mt-0.5 mr-1">-></span> <span>{props.location}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{/* Menu button */}
|
||||
<EditMenu align="right" className="relative inline-flex shrink-0">
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">Option 1</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-slate-600 hover:text-slate-800 flex py-1 px-3" to="#0">Option 2</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link className="font-medium text-sm text-rose-500 hover:text-rose-600 flex py-1 px-3" to="#0">Remove</Link>
|
||||
</li>
|
||||
</EditMenu>
|
||||
</div>
|
||||
{/* Bio */}
|
||||
<div className="mt-2">
|
||||
<div className="text-sm">{props.content}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div className="border-t border-slate-200">
|
||||
<div className="flex divide-x divide-slate-200r">
|
||||
<Link className="block flex-1 text-center text-sm text-indigo-500 hover:text-indigo-600 font-medium px-3 py-4" to="/messages">
|
||||
<div className="flex items-center justify-center">
|
||||
<svg className="w-4 h-4 fill-current shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<span>Send Email</span>
|
||||
</div>
|
||||
</Link>
|
||||
<Link className="block flex-1 text-center text-sm text-slate-600 hover:text-slate-800 font-medium px-3 py-4 group" to="/settings">
|
||||
<div className="flex items-center justify-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 group-hover:text-slate-500 shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M11.7.3c-.4-.4-1-.4-1.4 0l-10 10c-.2.2-.3.4-.3.7v4c0 .6.4 1 1 1h4c.3 0 .5-.1.7-.3l10-10c.4-.4.4-1 0-1.4l-4-4zM4.6 14H2v-2.6l6-6L10.6 8l-6 6zM12 6.6L9.4 4 11 2.4 13.6 5 12 6.6z" />
|
||||
</svg>
|
||||
<span>Edit Profile</span>
|
||||
</div>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default UsersTilesCard;
|
||||
@@ -1,255 +0,0 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import Customer from './CustomersTableItem';
|
||||
|
||||
import Image01 from '../../images/user-40-01.jpg';
|
||||
import Image02 from '../../images/user-40-02.jpg';
|
||||
import Image03 from '../../images/user-40-03.jpg';
|
||||
import Image04 from '../../images/user-40-04.jpg';
|
||||
import Image05 from '../../images/user-40-05.jpg';
|
||||
import Image06 from '../../images/user-40-06.jpg';
|
||||
import Image07 from '../../images/user-40-07.jpg';
|
||||
import Image08 from '../../images/user-40-08.jpg';
|
||||
import Image09 from '../../images/user-40-09.jpg';
|
||||
import Image10 from '../../images/user-40-10.jpg';
|
||||
|
||||
function CustomersTable({
|
||||
selectedItems
|
||||
}) {
|
||||
|
||||
const customers = [
|
||||
{
|
||||
id: '0',
|
||||
image: Image01,
|
||||
name: 'Patricia Semklo',
|
||||
email: 'patricia.semklo@app.com',
|
||||
location: '🇬🇧 London, UK',
|
||||
orders: '24',
|
||||
lastOrder: '#123567',
|
||||
spent: '$2,890.66',
|
||||
refunds: '-',
|
||||
fav: true
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
image: Image02,
|
||||
name: 'Dominik Lamakani',
|
||||
email: 'dominik.lamakani@gmail.com',
|
||||
location: '🇩🇪 Dortmund, DE',
|
||||
orders: '77',
|
||||
lastOrder: '#779912',
|
||||
spent: '$14,767.04',
|
||||
refunds: '4',
|
||||
fav: false
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
image: Image03,
|
||||
name: 'Ivan Mesaros',
|
||||
email: 'imivanmes@gmail.com',
|
||||
location: '🇫🇷 Paris, FR',
|
||||
orders: '44',
|
||||
lastOrder: '#889924',
|
||||
spent: '$4,996.00',
|
||||
refunds: '1',
|
||||
fav: true
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
image: Image04,
|
||||
name: 'Maria Martinez',
|
||||
email: 'martinezhome@gmail.com',
|
||||
location: '🇮🇹 Bologna, IT',
|
||||
orders: '29',
|
||||
lastOrder: '#897726',
|
||||
spent: '$3,220.66',
|
||||
refunds: '2',
|
||||
fav: false
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
image: Image05,
|
||||
name: 'Vicky Jung',
|
||||
email: 'itsvicky@contact.com',
|
||||
location: '🇬🇧 London, UK',
|
||||
orders: '22',
|
||||
lastOrder: '#123567',
|
||||
spent: '$2,890.66',
|
||||
refunds: '-',
|
||||
fav: true
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
image: Image06,
|
||||
name: 'Tisho Yanchev',
|
||||
email: 'tisho.y@kurlytech.com',
|
||||
location: '🇬🇧 London, UK',
|
||||
orders: '14',
|
||||
lastOrder: '#896644',
|
||||
spent: '$1,649.99',
|
||||
refunds: '1',
|
||||
fav: true
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
image: Image07,
|
||||
name: 'James Cameron',
|
||||
email: 'james.ceo@james.tech',
|
||||
location: '🇫🇷 Marseille, FR',
|
||||
orders: '34',
|
||||
lastOrder: '#136988',
|
||||
spent: '$3,569.87',
|
||||
refunds: '2',
|
||||
fav: true
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
image: Image08,
|
||||
name: 'Haruki Masuno',
|
||||
email: 'haruki@supermail.jp',
|
||||
location: '🇯🇵 Tokio, JP',
|
||||
orders: '112',
|
||||
lastOrder: '#442206',
|
||||
spent: '$19,246.07',
|
||||
refunds: '6',
|
||||
fav: false
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
image: Image09,
|
||||
name: 'Joe Huang',
|
||||
email: 'joehuang@hotmail.com',
|
||||
location: '🇨🇳 Shanghai, CN',
|
||||
orders: '64',
|
||||
lastOrder: '#764321',
|
||||
spent: '$12,276.92',
|
||||
refunds: '-',
|
||||
fav: true
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
image: Image10,
|
||||
name: 'Carolyn McNeail',
|
||||
email: 'carolynlove@gmail.com',
|
||||
location: '🇮🇹 Milan, IT',
|
||||
orders: '19',
|
||||
lastOrder: '#908764',
|
||||
spent: '$1,289.97',
|
||||
refunds: '2',
|
||||
fav: false
|
||||
}
|
||||
];
|
||||
|
||||
const [selectAll, setSelectAll] = useState(false);
|
||||
const [isCheck, setIsCheck] = useState([]);
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
setList(customers);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const handleSelectAll = () => {
|
||||
setSelectAll(!selectAll);
|
||||
setIsCheck(list.map(li => li.id));
|
||||
if (selectAll) {
|
||||
setIsCheck([]);
|
||||
}
|
||||
};
|
||||
|
||||
const handleClick = e => {
|
||||
const { id, checked } = e.target;
|
||||
setSelectAll(false);
|
||||
setIsCheck([...isCheck, id]);
|
||||
if (!checked) {
|
||||
setIsCheck(isCheck.filter(item => item !== id));
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
selectedItems(isCheck);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [isCheck]);
|
||||
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 relative">
|
||||
<header className="px-5 py-4">
|
||||
<h2 className="font-semibold text-slate-800">All Customers <span className="text-slate-400 font-medium">248</span></h2>
|
||||
</header>
|
||||
<div>
|
||||
|
||||
{/* Table */}
|
||||
<div className="overflow-x-auto">
|
||||
<table className="table-auto w-full">
|
||||
{/* Table header */}
|
||||
<thead className="text-xs font-semibold uppercase text-slate-500 bg-slate-50 border-t border-b border-slate-200">
|
||||
<tr>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select all</span>
|
||||
<input className="form-checkbox" type="checkbox" checked={selectAll} onChange={handleSelectAll} />
|
||||
</label>
|
||||
</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<span className="sr-only">Favourite</span>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Order</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Email</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Location</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold">Orders</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Last order</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Total spent</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold">Refunds</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<span className="sr-only">Menu</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/* Table body */}
|
||||
<tbody className="text-sm divide-y divide-slate-200">
|
||||
{
|
||||
list.map(customer => {
|
||||
return (
|
||||
<Customer
|
||||
key={customer.id}
|
||||
id={customer.id}
|
||||
image={customer.image}
|
||||
name={customer.name}
|
||||
email={customer.email}
|
||||
location={customer.location}
|
||||
orders={customer.orders}
|
||||
lastOrder={customer.lastOrder}
|
||||
spent={customer.spent}
|
||||
refunds={customer.refunds}
|
||||
fav={customer.fav}
|
||||
handleClick={handleClick}
|
||||
isChecked={isCheck.includes(customer.id)}
|
||||
/>
|
||||
)
|
||||
})
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default CustomersTable;
|
||||
@@ -1,64 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function CustomersTableItem(props) {
|
||||
return (
|
||||
<tr>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select</span>
|
||||
<input id={props.id} className="form-checkbox" type="checkbox" onChange={props.handleClick} checked={props.isChecked} />
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center relative">
|
||||
<button>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current ${props.fav ? 'text-amber-500' : 'text-slate-300'}`} viewBox="0 0 16 16">
|
||||
<path d="M8 0L6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934h-6L8 0z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="flex items-center">
|
||||
<div className="w-10 h-10 shrink-0 mr-2 sm:mr-3">
|
||||
<img className="rounded-full" src={props.image} width="40" height="40" alt={props.name} />
|
||||
</div>
|
||||
<div className="font-medium text-slate-800">{props.name}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">{props.email}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">{props.location}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-center">{props.orders}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left font-medium text-sky-500">{props.lastOrder}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left font-medium text-emerald-500">{props.spent}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-center">{props.refunds}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
{/* Menu button */}
|
||||
<button className="text-slate-400 hover:text-slate-500 rounded-full">
|
||||
<span className="sr-only">Menu</span>
|
||||
<svg className="w-8 h-8 fill-current" viewBox="0 0 32 32">
|
||||
<circle cx="16" cy="16" r="2" />
|
||||
<circle cx="10" cy="16" r="2" />
|
||||
<circle cx="22" cy="16" r="2" />
|
||||
</svg>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
|
||||
export default CustomersTableItem;
|
||||
@@ -1,206 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import Related01 from '../../images/related-product-01.jpg';
|
||||
import Related02 from '../../images/related-product-02.jpg';
|
||||
import Related03 from '../../images/related-product-03.jpg';
|
||||
|
||||
function CartItems() {
|
||||
return (
|
||||
<>
|
||||
<ul>
|
||||
{/* Cart item */}
|
||||
<li className="sm:flex items-center py-6 border-b border-slate-200">
|
||||
<a className="block mb-4 sm:mb-0 mr-5 md:w-32 xl:w-auto shrink-0" href="#0">
|
||||
<img className="rounded-sm" src={Related01} width="200" height="142" alt="Product 01" />
|
||||
</a>
|
||||
<div className="grow">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg font-semibold text-slate-800 mb-1">The Complete Front-End Development Course!</h3>
|
||||
</a>
|
||||
<div className="text-sm mb-2">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut.</div>
|
||||
{/* Product meta */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap items-center space-x-2 mr-2">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.2</div>
|
||||
</div>
|
||||
<div className="text-slate-400">·</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-sm underline hover:no-underline">Remove</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{/* Cart item */}
|
||||
<li className="sm:flex items-center py-6 border-b border-slate-200">
|
||||
<a className="block mb-4 sm:mb-0 mr-5 md:w-32 xl:w-auto shrink-0" href="#0">
|
||||
<img className="rounded-sm" src={Related02} width="200" height="142" alt="Product 02" />
|
||||
</a>
|
||||
<div className="grow">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg font-semibold text-slate-800 mb-1">Web Development Ultimate Course 2021</h3>
|
||||
</a>
|
||||
<div className="text-sm mb-2">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut.</div>
|
||||
{/* Product meta */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap items-center space-x-2 mr-2">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.2</div>
|
||||
</div>
|
||||
<div className="text-slate-400">·</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-sm underline hover:no-underline">Remove</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{/* Cart item */}
|
||||
<li className="sm:flex items-center py-6 border-b border-slate-200">
|
||||
<a className="block mb-4 sm:mb-0 mr-5 md:w-32 xl:w-auto shrink-0" href="#0">
|
||||
<img className="rounded-sm" src={Related03} width="200" height="142" alt="Product 03" />
|
||||
</a>
|
||||
<div className="grow">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg font-semibold text-slate-800 mb-1">Full-Stack JavaScript Course!</h3>
|
||||
</a>
|
||||
<div className="text-sm mb-2">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut.</div>
|
||||
{/* Product meta */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap items-center space-x-2 mr-2">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.2</div>
|
||||
</div>
|
||||
<div className="text-slate-400">·</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
<button className="text-sm underline hover:no-underline">Remove</button>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div className="mt-6">
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0"><- Back To Shopping</a>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
export default CartItems;
|
||||
@@ -1,390 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import AppImage01 from '../../images/applications-image-01.jpg';
|
||||
import AppImage02 from '../../images/applications-image-02.jpg';
|
||||
import AppImage03 from '../../images/applications-image-03.jpg';
|
||||
import AppImage04 from '../../images/applications-image-04.jpg';
|
||||
|
||||
function ShopCards01() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<img className="w-full" src={AppImage01} width="286" height="160" alt="Application 01" />
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-3">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">HTML, CSS, JavaScript - Build 6 Creative Projects</h3>
|
||||
</header>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center mb-4">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.2</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Features list */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15.686 5.695L10.291.3c-.4-.4-.999-.4-1.399 0s-.4.999 0 1.399l.6.599-6.794 3.697-1-1c-.4-.399-.999-.399-1.398 0-.4.4-.4 1 0 1.4l1.498 1.498 2.398 2.398L.6 13.988 2 15.387l3.696-3.697 3.997 3.996c.5.5 1.199.2 1.398 0 .4-.4.4-.999 0-1.398l-.999-1 3.697-6.694.6.6c.599.6 1.199.2 1.398 0 .3-.4.3-1.1-.1-1.499zM8.493 11.79L4.196 7.494l6.695-3.697 1.298 1.299-3.696 6.694z" />
|
||||
</svg>
|
||||
<div>23 hours on-demand video</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 15V5l-5-5H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1zM3 2h6v4h4v8H3V2z" />
|
||||
</svg>
|
||||
<div>37 articles</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 01-1 1H4v2l-4-3 4-3v2h9V7zM3 9H1V3a1 1 0 011-1h10V0l4 3-4 3V4H3v5z" />
|
||||
</svg>
|
||||
<div>Access on mobile and TV</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm0 6c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm-7-5c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0z" />
|
||||
</svg>
|
||||
<div>8K+ active installations</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<img className="w-full" src={AppImage02} width="286" height="160" alt="Application 02" />
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-3">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">HTML, CSS, JavaScript - Build 6 Creative Projects</h3>
|
||||
</header>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center mb-4">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">3.9</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$49.00</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Features list */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15.686 5.695L10.291.3c-.4-.4-.999-.4-1.399 0s-.4.999 0 1.399l.6.599-6.794 3.697-1-1c-.4-.399-.999-.399-1.398 0-.4.4-.4 1 0 1.4l1.498 1.498 2.398 2.398L.6 13.988 2 15.387l3.696-3.697 3.997 3.996c.5.5 1.199.2 1.398 0 .4-.4.4-.999 0-1.398l-.999-1 3.697-6.694.6.6c.599.6 1.199.2 1.398 0 .3-.4.3-1.1-.1-1.499zM8.493 11.79L4.196 7.494l6.695-3.697 1.298 1.299-3.696 6.694z" />
|
||||
</svg>
|
||||
<div>23 hours on-demand video</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 15V5l-5-5H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1zM3 2h6v4h4v8H3V2z" />
|
||||
</svg>
|
||||
<div>37 articles</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 01-1 1H4v2l-4-3 4-3v2h9V7zM3 9H1V3a1 1 0 011-1h10V0l4 3-4 3V4H3v5z" />
|
||||
</svg>
|
||||
<div>Access on mobile and TV</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm0 6c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm-7-5c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0z" />
|
||||
</svg>
|
||||
<div>8K+ active installations</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<img className="w-full" src={AppImage03} width="286" height="160" alt="Application 03" />
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-3">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">HTML, CSS, JavaScript - Build 6 Creative Projects</h3>
|
||||
</header>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center mb-4">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.6</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$129.00</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Features list */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15.686 5.695L10.291.3c-.4-.4-.999-.4-1.399 0s-.4.999 0 1.399l.6.599-6.794 3.697-1-1c-.4-.399-.999-.399-1.398 0-.4.4-.4 1 0 1.4l1.498 1.498 2.398 2.398L.6 13.988 2 15.387l3.696-3.697 3.997 3.996c.5.5 1.199.2 1.398 0 .4-.4.4-.999 0-1.398l-.999-1 3.697-6.694.6.6c.599.6 1.199.2 1.398 0 .3-.4.3-1.1-.1-1.499zM8.493 11.79L4.196 7.494l6.695-3.697 1.298 1.299-3.696 6.694z" />
|
||||
</svg>
|
||||
<div>23 hours on-demand video</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 15V5l-5-5H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1zM3 2h6v4h4v8H3V2z" />
|
||||
</svg>
|
||||
<div>37 articles</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 01-1 1H4v2l-4-3 4-3v2h9V7zM3 9H1V3a1 1 0 011-1h10V0l4 3-4 3V4H3v5z" />
|
||||
</svg>
|
||||
<div>Access on mobile and TV</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm0 6c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm-7-5c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0z" />
|
||||
</svg>
|
||||
<div>8K+ active installations</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<img className="w-full" src={AppImage04} width="286" height="160" alt="Application 04" />
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-3">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">HTML, CSS, JavaScript - Build 6 Creative Projects</h3>
|
||||
</header>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center mb-4">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$129.00</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Features list */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15.686 5.695L10.291.3c-.4-.4-.999-.4-1.399 0s-.4.999 0 1.399l.6.599-6.794 3.697-1-1c-.4-.399-.999-.399-1.398 0-.4.4-.4 1 0 1.4l1.498 1.498 2.398 2.398L.6 13.988 2 15.387l3.696-3.697 3.997 3.996c.5.5 1.199.2 1.398 0 .4-.4.4-.999 0-1.398l-.999-1 3.697-6.694.6.6c.599.6 1.199.2 1.398 0 .3-.4.3-1.1-.1-1.499zM8.493 11.79L4.196 7.494l6.695-3.697 1.298 1.299-3.696 6.694z" />
|
||||
</svg>
|
||||
<div>23 hours on-demand video</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 15V5l-5-5H2c-.6 0-1 .4-1 1v14c0 .6.4 1 1 1h12c.6 0 1-.4 1-1zM3 2h6v4h4v8H3V2z" />
|
||||
</svg>
|
||||
<div>37 articles</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M13 7h2v6a1 1 0 01-1 1H4v2l-4-3 4-3v2h9V7zM3 9H1V3a1 1 0 011-1h10V0l4 3-4 3V4H3v5z" />
|
||||
</svg>
|
||||
<div>Access on mobile and TV</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M7.3 8.7c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm0 6c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0zm-7-5c-.4-.4-.4-1 0-1.4l7-7c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-7 7c-.4.4-1 .4-1.4 0z" />
|
||||
</svg>
|
||||
<div>8K+ active installations</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards01;
|
||||
@@ -1,191 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import AppImage05 from '../../images/applications-image-05.jpg';
|
||||
import AppImage06 from '../../images/applications-image-06.jpg';
|
||||
import AppImage07 from '../../images/applications-image-07.jpg';
|
||||
import AppImage08 from '../../images/applications-image-08.jpg';
|
||||
|
||||
function ShopCards02() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage05} width="286" height="160" alt="Application 05" />
|
||||
{/* Popular label */}
|
||||
<div className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="inline-flex items-center text-xs font-medium text-slate-100 bg-slate-900 bg-opacity-60 rounded-full text-center px-2 py-0.5">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-amber-500 mr-1" viewBox="0 0 12 12">
|
||||
<path d="M11.953 4.29a.5.5 0 00-.454-.292H6.14L6.984.62A.5.5 0 006.12.173l-6 7a.5.5 0 00.379.825h5.359l-.844 3.38a.5.5 0 00.864.445l6-7a.5.5 0 00.075-.534z" />
|
||||
</svg>
|
||||
<span>Popular</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
<div className="text-sm">Master Digital Marketing Strategy, Social Media Marketing, Analytics & More!</div>
|
||||
</header>
|
||||
{/* Rating and Price */}
|
||||
<div className="flex flex-wrap items-center justify-between mb-5">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
{/* Rate */}
|
||||
<div className="text-sm font-medium whitespace-nowrap">
|
||||
<span>4.7</span> <span className="text-slate-400">(478)</span>
|
||||
</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage06} width="286" height="160" alt="Application 06" />
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
<div className="text-sm">Master Digital Marketing Strategy, Social Media Marketing, Analytics & More!</div>
|
||||
</header>
|
||||
{/* Rating and Price */}
|
||||
<div className="flex flex-wrap items-center justify-between mb-5">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
{/* Rate */}
|
||||
<div className="text-sm font-medium whitespace-nowrap">
|
||||
<span>4.7</span> <span className="text-slate-400">(478)</span>
|
||||
</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage07} width="286" height="160" alt="Application 07" />
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
<div className="text-sm">Master Digital Marketing Strategy, Social Media Marketing, Analytics & More!</div>
|
||||
</header>
|
||||
{/* Rating and Price */}
|
||||
<div className="flex flex-wrap items-center justify-between mb-5">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
{/* Rate */}
|
||||
<div className="text-sm font-medium whitespace-nowrap">
|
||||
<span>4.7</span> <span className="text-slate-400">(478)</span>
|
||||
</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="inline-flex text-sm font-medium bg-rose-100 text-rose-600 rounded-full text-center px-2 py-0.5">$39.00</div>
|
||||
<div className="inline-flex text-sm font-medium text-slate-500 line-through">$199.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage08} width="286" height="160" alt="Application 08" />
|
||||
</div> {/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
<div className="text-sm">Master Digital Marketing Strategy, Social Media Marketing, Analytics & More!</div>
|
||||
</header>
|
||||
{/* Rating and Price */}
|
||||
<div className="flex flex-wrap items-center justify-between mb-5">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
{/* Rate */}
|
||||
<div className="text-sm font-medium whitespace-nowrap">
|
||||
<span>4.7</span> <span className="text-slate-400">(478)</span>
|
||||
</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div className="flex items-center space-x-2">
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$89.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Now</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards02;
|
||||
@@ -1,206 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import AppImage09 from '../../images/applications-image-09.jpg';
|
||||
import AppImage10 from '../../images/applications-image-10.jpg';
|
||||
import AppImage11 from '../../images/applications-image-11.jpg';
|
||||
import AppImage12 from '../../images/applications-image-12.jpg';
|
||||
|
||||
function ShopCards03() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage09} width="286" height="160" alt="Application 09" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Health and Happiness Workshop</h3>
|
||||
</header>
|
||||
{/* List */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V3a1 1 0 00-1-1zm-1 12H2V6h12v8z" />
|
||||
</svg>
|
||||
<div className="text-rose-500">Fri 7 Aug 2021 23:00 CEST</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M8 6c2.9 0 6-.9 6-3s-3.1-3-6-3-6 .9-6 3 3.1 3 6 3zM2 6.5V8c0 2.1 3.1 3 6 3s6-.9 6-3V6.5C12.6 7.4 10.5 8 8 8s-4.6-.6-6-1.5zM2 11.5V13c0 2.1 3.1 3 6 3s6-.9 6-3v-1.5c-1.4 1-3.5 1.5-6 1.5s-4.6-.6-6-1.5z" />
|
||||
</svg>
|
||||
<div>Starts at $16.24 / person</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Tickets</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage10} width="286" height="160" alt="Application 10" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Health and Happiness Workshop</h3>
|
||||
</header>
|
||||
{/* List */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V3a1 1 0 00-1-1zm-1 12H2V6h12v8z" />
|
||||
</svg>
|
||||
<div className="text-rose-500">Fri 7 Aug 2021 23:00 CEST</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M8 6c2.9 0 6-.9 6-3s-3.1-3-6-3-6 .9-6 3 3.1 3 6 3zM2 6.5V8c0 2.1 3.1 3 6 3s6-.9 6-3V6.5C12.6 7.4 10.5 8 8 8s-4.6-.6-6-1.5zM2 11.5V13c0 2.1 3.1 3 6 3s6-.9 6-3v-1.5c-1.4 1-3.5 1.5-6 1.5s-4.6-.6-6-1.5z" />
|
||||
</svg>
|
||||
<div>Starts at $16.24 / person</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Tickets</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage11} width="286" height="160" alt="Application 11" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Health and Happiness Workshop</h3>
|
||||
</header>
|
||||
{/* List */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V3a1 1 0 00-1-1zm-1 12H2V6h12v8z" />
|
||||
</svg>
|
||||
<div className="text-rose-500">Fri 7 Aug 2021 23:00 CEST</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M8 6c2.9 0 6-.9 6-3s-3.1-3-6-3-6 .9-6 3 3.1 3 6 3zM2 6.5V8c0 2.1 3.1 3 6 3s6-.9 6-3V6.5C12.6 7.4 10.5 8 8 8s-4.6-.6-6-1.5zM2 11.5V13c0 2.1 3.1 3 6 3s6-.9 6-3v-1.5c-1.4 1-3.5 1.5-6 1.5s-4.6-.6-6-1.5z" />
|
||||
</svg>
|
||||
<div>Starts at $16.24 / person</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Tickets</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage12} width="286" height="160" alt="Application 12" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-2">
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Health and Happiness Workshop</h3>
|
||||
</header>
|
||||
{/* List */}
|
||||
<ul className="text-sm space-y-2 mb-5">
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V3a1 1 0 00-1-1zm-1 12H2V6h12v8z" />
|
||||
</svg>
|
||||
<div className="text-rose-500">Fri 7 Aug 2021 23:00 CEST</div>
|
||||
</li>
|
||||
<li className="flex items-center">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-3" viewBox="0 0 16 16">
|
||||
<path d="M8 6c2.9 0 6-.9 6-3s-3.1-3-6-3-6 .9-6 3 3.1 3 6 3zM2 6.5V8c0 2.1 3.1 3 6 3s6-.9 6-3V6.5C12.6 7.4 10.5 8 8 8s-4.6-.6-6-1.5zM2 11.5V13c0 2.1 3.1 3 6 3s6-.9 6-3v-1.5c-1.4 1-3.5 1.5-6 1.5s-4.6-.6-6-1.5z" />
|
||||
</svg>
|
||||
<div>Starts at $16.24 / person</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Buy Tickets</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards03;
|
||||
@@ -1,202 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import AppImage13 from '../../images/applications-image-13.jpg';
|
||||
import AppImage14 from '../../images/applications-image-14.jpg';
|
||||
import AppImage15 from '../../images/applications-image-15.jpg';
|
||||
import AppImage16 from '../../images/applications-image-16.jpg';
|
||||
|
||||
function ShopCards04() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage13} width="286" height="160" alt="Application 13" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-4">
|
||||
<a className="text-xs text-emerald-500 hover:text-emerald-600 font-semibold uppercase tracking-widest mb-1" href="#0">Funding</a>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">SwiftNight Home Plus</h3>
|
||||
<div className="text-sm">Lorem ipsum is placeholder text commonly used.</div>
|
||||
</header>
|
||||
{/* Info */}
|
||||
<div className="mb-5">
|
||||
<div className="flex justify-between text-sm space-x-2 mb-2">
|
||||
<div><span className="font-semibold text-slate-800">$789,784</span> <span className="italic">raised</span></div>
|
||||
<div>64%</div>
|
||||
</div>
|
||||
{/* Bar */}
|
||||
<div className="relative w-full h-2 rounded-full bg-slate-200 mb-2">
|
||||
<div className="absolute left-0 top-0 bottom-0 bg-emerald-500 rounded-full" style={{width: '55%'}}></div>
|
||||
</div>
|
||||
<div className="font-medium text-xs">30 Days Left</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Back It</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage14} width="286" height="160" alt="Application 14" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-4">
|
||||
<a className="text-xs text-emerald-500 hover:text-emerald-600 font-semibold uppercase tracking-widest mb-1" href="#0">Funding</a>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">SwiftNight Home Plus</h3>
|
||||
<div className="text-sm">Lorem ipsum is placeholder text commonly used.</div>
|
||||
</header>
|
||||
{/* Info */}
|
||||
<div className="mb-5">
|
||||
<div className="flex justify-between text-sm space-x-2 mb-2">
|
||||
<div><span className="font-semibold text-slate-800">$789,784</span> <span className="italic">raised</span></div>
|
||||
<div>64%</div>
|
||||
</div>
|
||||
{/* Bar */}
|
||||
<div className="relative w-full h-2 rounded-full bg-slate-200 mb-2">
|
||||
<div className="absolute left-0 top-0 bottom-0 bg-emerald-500 rounded-full" style={{width: '55%'}}></div>
|
||||
</div>
|
||||
<div className="font-medium text-xs">30 Days Left</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Back It</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage15} width="286" height="160" alt="Application 15" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-4">
|
||||
<a className="text-xs text-emerald-500 hover:text-emerald-600 font-semibold uppercase tracking-widest mb-1" href="#0">Funding</a>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">SwiftNight Home Plus</h3>
|
||||
<div className="text-sm">Lorem ipsum is placeholder text commonly used.</div>
|
||||
</header>
|
||||
{/* Info */}
|
||||
<div className="mb-5">
|
||||
<div className="flex justify-between text-sm space-x-2 mb-2">
|
||||
<div><span className="font-semibold text-slate-800">$789,784</span> <span className="italic">raised</span></div>
|
||||
<div>64%</div>
|
||||
</div>
|
||||
{/* Bar */}
|
||||
<div className="relative w-full h-2 rounded-full bg-slate-200 mb-2">
|
||||
<div className="absolute left-0 top-0 bottom-0 bg-emerald-500 rounded-full" style={{width: '55%'}}></div>
|
||||
</div>
|
||||
<div className="font-medium text-xs">30 Days Left</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Back It</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage16} width="286" height="160" alt="Application 16" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
{/* Header */}
|
||||
<header className="mb-4">
|
||||
<a className="text-xs text-emerald-500 hover:text-emerald-600 font-semibold uppercase tracking-widest mb-1" href="#0">Funding</a>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">SwiftNight Home Plus</h3>
|
||||
<div className="text-sm">Lorem ipsum is placeholder text commonly used.</div>
|
||||
</header>
|
||||
{/* Info */}
|
||||
<div className="mb-5">
|
||||
<div className="flex justify-between text-sm space-x-2 mb-2">
|
||||
<div><span className="font-semibold text-slate-800">$789,784</span> <span className="italic">raised</span></div>
|
||||
<div>64%</div>
|
||||
</div>
|
||||
{/* Bar */}
|
||||
<div className="relative w-full h-2 rounded-full bg-slate-200 mb-2">
|
||||
<div className="absolute left-0 top-0 bottom-0 bg-emerald-500 rounded-full" style={{width: '55%'}}></div>
|
||||
</div>
|
||||
<div className="font-medium text-xs">30 Days Left</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<div>
|
||||
<a className="btn-sm w-full bg-indigo-500 hover:bg-indigo-600 text-white" href="#0">Back It</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards04;
|
||||
@@ -1,85 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function ShopCards05() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full text-center p-5">
|
||||
<div className="grow mb-1">
|
||||
<div className="inline-flex justify-center items-center w-12 h-12 bg-slate-100 rounded-full mb-2">
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path className="text-indigo-300" d="M13 15l11-7L11.504.136a1 1 0 00-1.019.007L0 7l13 8z" />
|
||||
<path className="text-indigo-600" d="M13 15L0 7v9c0 .355.189.685.496.864L13 24v-9z" />
|
||||
<path className="text-indigo-500" d="M13 15.047V24l10.573-7.181A.999.999 0 0024 16V8l-11 7.047z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Merchandise</h3>
|
||||
</div>
|
||||
<div>
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full text-center p-5">
|
||||
<div className="grow mb-1">
|
||||
<div className="inline-flex justify-center items-center w-12 h-12 bg-slate-100 rounded-full mb-2">
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<circle className="text-sky-200" cx="15" cy="15" r="9" fillRule="nonzero" />
|
||||
<circle className="text-sky-400" cx="9" cy="9" r="9" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Audiobooks</h3>
|
||||
</div>
|
||||
<div>
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full text-center p-5">
|
||||
<div className="grow mb-1">
|
||||
<div className="inline-flex justify-center items-center w-12 h-12 bg-slate-100 rounded-full mb-2">
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path className="text-emerald-500" d="M3 .998h6a2 2 0 012 2v6a2 2 0 01-2 2H3a2 2 0 01-2-2v-6a2 2 0 012-2z" />
|
||||
<path className="text-emerald-400" d="M23.428 4.616L19.381.57a1.957 1.957 0 00-2.762 0l-4.047 4.046c-.76.765-.76 2 0 2.764l4.047 4.047c.764.76 1.998.76 2.762 0l4.047-4.046c.761-.764.761-2 0-2.765z" />
|
||||
<path className="text-emerald-500" d="M15 12.998h6a2 2 0 012 2v6a2 2 0 01-2 2h-6a2 2 0 01-2-2v-6a2 2 0 012-2z" />
|
||||
<path className="text-emerald-200" d="M3 12.998h6a2 2 0 012 2v6a2 2 0 01-2 2H3a2 2 0 01-2-2v-6a2 2 0 012-2z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Design & Tech</h3>
|
||||
</div>
|
||||
<div>
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200">
|
||||
<div className="flex flex-col h-full text-center p-5">
|
||||
<div className="grow mb-1">
|
||||
<div className="inline-flex justify-center items-center w-12 h-12 bg-slate-100 rounded-full mb-2">
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path className="text-rose-100" d="M12 10l12 7-12 7-12-7z" />
|
||||
<path className="text-rose-300" d="M12 5l12 7-12 7-12-7z" />
|
||||
<path className="text-rose-500" d="M12 0l12 7-12 7L0 7z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Apps & Software</h3>
|
||||
</div>
|
||||
<div>
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards05;
|
||||
@@ -1,66 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import AppImage17 from '../../images/applications-image-17.jpg';
|
||||
import AppImage18 from '../../images/applications-image-18.jpg';
|
||||
import AppImage19 from '../../images/applications-image-19.jpg';
|
||||
import AppImage20 from '../../images/applications-image-20.jpg';
|
||||
|
||||
function ShopCards06() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="relative col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<img className="absolute w-full h-full object-cover" src={AppImage17} width="286" height="160" alt="Application 17" />
|
||||
{/* Gradient */}
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-slate-800 to-transparent" aria-hidden="true"></div>
|
||||
{/* Content */}
|
||||
<div className="relative h-full p-5 flex flex-col justify-end">
|
||||
<h3 className="text-lg text-white font-semibold mt-16 mb-0.5">Merchandise</h3>
|
||||
<a className="text-sm font-medium text-indigo-400 hover:text-indigo-300" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="relative col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<img className="absolute w-full h-full object-cover" src={AppImage18} width="286" height="160" alt="Application 18" />
|
||||
{/* Gradient */}
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-slate-800 to-transparent" aria-hidden="true"></div>
|
||||
{/* Content */}
|
||||
<div className="relative h-full p-5 flex flex-col justify-end">
|
||||
<h3 className="text-lg text-white font-semibold mt-16 mb-0.5">Audiobooks</h3>
|
||||
<a className="text-sm font-medium text-indigo-400 hover:text-indigo-300" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="relative col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<img className="absolute w-full h-full object-cover" src={AppImage19} width="286" height="160" alt="Application 19" />
|
||||
{/* Gradient */}
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-slate-800 to-transparent" aria-hidden="true"></div>
|
||||
{/* Content */}
|
||||
<div className="relative h-full p-5 flex flex-col justify-end">
|
||||
<h3 className="text-lg text-white font-semibold mt-16 mb-0.5">Design & Tech</h3>
|
||||
<a className="text-sm font-medium text-indigo-400 hover:text-indigo-300" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="relative col-span-full sm:col-span-6 xl:col-span-3 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
{/* Image */}
|
||||
<img className="absolute w-full h-full object-cover" src={AppImage20} width="286" height="160" alt="Application 20" />
|
||||
{/* Gradient */}
|
||||
<div className="absolute inset-0 bg-gradient-to-t from-slate-800 to-transparent" aria-hidden="true"></div>
|
||||
{/* Content */}
|
||||
<div className="relative h-full p-5 flex flex-col justify-end">
|
||||
<h3 className="text-lg text-white font-semibold mt-16 mb-0.5">Apps & Software</h3>
|
||||
<a className="text-sm font-medium text-indigo-400 hover:text-indigo-300" href="#0">Explore -></a>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards06;
|
||||
@@ -1,972 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import AppImage21 from '../../images/applications-image-21.jpg';
|
||||
import AppImage22 from '../../images/applications-image-22.jpg';
|
||||
import AppImage23 from '../../images/applications-image-23.jpg';
|
||||
import AppImage24 from '../../images/applications-image-24.jpg';
|
||||
import AppImage25 from '../../images/applications-image-25.jpg';
|
||||
import AppImage26 from '../../images/applications-image-26.jpg';
|
||||
import AppImage27 from '../../images/applications-image-27.jpg';
|
||||
import AppImage28 from '../../images/applications-image-28.jpg';
|
||||
import AppImage29 from '../../images/applications-image-29.jpg';
|
||||
import AppImage30 from '../../images/applications-image-30.jpg';
|
||||
import AppImage31 from '../../images/applications-image-31.jpg';
|
||||
import AppImage32 from '../../images/applications-image-32.jpg';
|
||||
|
||||
function ShopCards07() {
|
||||
return (
|
||||
<React.Fragment>
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage21} width="301" height="226" alt="Application 21" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
{/* Special Offer label */}
|
||||
<div className="absolute bottom-0 right-0 mb-4 mr-4">
|
||||
<div className="inline-flex items-center text-xs font-medium text-slate-100 bg-slate-900 bg-opacity-60 rounded-full text-center px-2 py-0.5">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-amber-500 mr-1" viewBox="0 0 12 12">
|
||||
<path d="M11.953 4.29a.5.5 0 00-.454-.292H6.14L6.984.62A.5.5 0 006.12.173l-6 7a.5.5 0 00.379.825h5.359l-.844 3.38a.5.5 0 00.864.445l6-7a.5.5 0 00.075-.534z" />
|
||||
</svg>
|
||||
<span>Special Offer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-rose-100 text-rose-600 rounded-full text-center px-2 py-0.5">$39.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage22} width="301" height="226" alt="Application 22" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage23} width="301" height="226" alt="Application 23" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
{/* Special Offer label */}
|
||||
<div className="absolute bottom-0 right-0 mb-4 mr-4">
|
||||
<div className="inline-flex items-center text-xs font-medium text-slate-100 bg-slate-900 bg-opacity-60 rounded-full text-center px-2 py-0.5">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-amber-500 mr-1" viewBox="0 0 12 12">
|
||||
<path d="M11.953 4.29a.5.5 0 00-.454-.292H6.14L6.984.62A.5.5 0 006.12.173l-6 7a.5.5 0 00.379.825h5.359l-.844 3.38a.5.5 0 00.864.445l6-7a.5.5 0 00.075-.534z" />
|
||||
</svg>
|
||||
<span>Special Offer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-rose-100 text-rose-600 rounded-full text-center px-2 py-0.5">$39.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage24} width="301" height="226" alt="Application 24" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 5 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage25} width="301" height="226" alt="Application 25" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 6 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage26} width="301" height="226" alt="Application 26" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
{/* Special Offer label */}
|
||||
<div className="absolute bottom-0 right-0 mb-4 mr-4">
|
||||
<div className="inline-flex items-center text-xs font-medium text-slate-100 bg-slate-900 bg-opacity-60 rounded-full text-center px-2 py-0.5">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-amber-500 mr-1" viewBox="0 0 12 12">
|
||||
<path d="M11.953 4.29a.5.5 0 00-.454-.292H6.14L6.984.62A.5.5 0 006.12.173l-6 7a.5.5 0 00.379.825h5.359l-.844 3.38a.5.5 0 00.864.445l6-7a.5.5 0 00.075-.534z" />
|
||||
</svg>
|
||||
<span>Special Offer</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-rose-100 text-rose-600 rounded-full text-center px-2 py-0.5">$39.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 7 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage27} width="301" height="226" alt="Application 27" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 8 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage28} width="301" height="226" alt="Application 28" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 9 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage29} width="301" height="226" alt="Application 29" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* CTA */}
|
||||
<div className="col-span-full md:order-1 xl:order-none">
|
||||
<div className="h-full p-6 bg-slate-800 rounded-sm text-center xl:text-left xl:flex xl:justify-between xl:items-center">
|
||||
<div className="mb-4 xl:mb-0 xl:mr-4">
|
||||
<div className="text-xl text-slate-50 font-semibold mb-1">Excepteur sint occaecat <span className="text-indigo-500">cupidatat</span> 🎁</div>
|
||||
<div className="m-auto text-sm text-slate-400">Excepteur sint occaecat cupidatat non proidentsunt in culpa qui officia deserunt mollit!</div>
|
||||
</div>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white shrink-0">Reedem Now!</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 10 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage30} width="301" height="226" alt="Application 30" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 11 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage31} width="301" height="226" alt="Application 31" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-rose-100 text-rose-600 rounded-full text-center px-2 py-0.5">$39.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Card 12 */}
|
||||
<div className="col-span-full md:col-span-6 xl:col-span-4 bg-white shadow-lg rounded-sm border border-slate-200 overflow-hidden">
|
||||
<div className="flex flex-col h-full">
|
||||
{/* Image */}
|
||||
<div className="relative">
|
||||
<img className="w-full" src={AppImage32} width="301" height="226" alt="Application 32" />
|
||||
{/* Like button */}
|
||||
<button className="absolute top-0 right-0 mt-4 mr-4">
|
||||
<div className="text-slate-100 bg-slate-900 bg-opacity-60 rounded-full">
|
||||
<span className="sr-only">Like</span>
|
||||
<svg className="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
{/* Card Content */}
|
||||
<div className="grow flex flex-col p-5">
|
||||
{/* Card body */}
|
||||
<div className="grow">
|
||||
<header className="mb-2">
|
||||
<a href="#0">
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Form Builder CP</h3>
|
||||
</a>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet adipiscing elit, sed do eiusmod.</div>
|
||||
</header>
|
||||
</div>
|
||||
{/* Rating and price */}
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Rating */}
|
||||
<div className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<button>
|
||||
<span className="sr-only">1 star</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">2 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">3 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">4 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button>
|
||||
<span className="sr-only">5 stars</span>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Rate */}
|
||||
<div className="inline-flex text-sm font-medium text-amber-600">4.7</div>
|
||||
</div>
|
||||
{/* Price */}
|
||||
<div>
|
||||
<div className="inline-flex text-sm font-medium bg-emerald-100 text-emerald-600 rounded-full text-center px-2 py-0.5">$69.00</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</React.Fragment>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopCards07;
|
||||
@@ -1,181 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function ShopSidebar() {
|
||||
return (
|
||||
<div>
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-5 min-w-60">
|
||||
<div className="grid md:grid-cols-2 xl:grid-cols-1 gap-6">
|
||||
{/* Group 1 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Discover</div>
|
||||
<ul className="text-sm font-medium space-y-2">
|
||||
<li>
|
||||
<a className="text-indigo-500" href="#0">View All</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="text-slate-600 hover:text-slate-700" href="#0">Apps / Software</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="text-slate-600 hover:text-slate-700" href="#0">Design / Tech Products</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="text-slate-600 hover:text-slate-700" href="#0">Books & Writing</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="text-slate-600 hover:text-slate-700" href="#0">Education</a>
|
||||
</li>
|
||||
<li>
|
||||
<a className="text-slate-600 hover:text-slate-700" href="#0">Drawing / Painting</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Price Range */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Price Range</div>
|
||||
<label className="sr-only">Price</label>
|
||||
<select className="form-select w-full">
|
||||
<option>Less than $20</option>
|
||||
<option>$20 - $40</option>
|
||||
<option>$40 - $80</option>
|
||||
<option>More than $80</option>
|
||||
</select>
|
||||
</div>
|
||||
{/* Group 3 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Multi Select</div>
|
||||
<ul className="space-y-2">
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Apps / Software</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Education</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Books & Writing</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Drawing / Painting</span>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Group 4 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Sort By Rating</div>
|
||||
<ul className="space-y-2">
|
||||
<li>
|
||||
{/* Rating button */}
|
||||
<button className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="inline-flex text-sm text-slate-500 italic"><span className="sr-only">4 Stars</span> And up</div>
|
||||
</button>
|
||||
</li>
|
||||
<li>
|
||||
{/* Rating button */}
|
||||
<button className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="inline-flex text-sm text-slate-500 italic"><span className="sr-only">3 Stars</span> And up</div>
|
||||
</button>
|
||||
</li>
|
||||
<li>
|
||||
{/* Rating button */}
|
||||
<button className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="inline-flex text-sm text-slate-500 italic"><span className="sr-only">2 Stars</span> And up</div>
|
||||
</button>
|
||||
</li>
|
||||
<li>
|
||||
{/* Rating button */}
|
||||
<button className="flex items-center space-x-2 mr-2">
|
||||
{/* Stars */}
|
||||
<div className="flex space-x-1">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<svg className="w-4 h-4 fill-current text-slate-300" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</div>
|
||||
<div className="inline-flex text-sm text-slate-500 italic"><span className="sr-only">1 Stars</span> And up</div>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default ShopSidebar;
|
||||
@@ -1,141 +0,0 @@
|
||||
import React, { useEffect, useRef } from 'react';
|
||||
|
||||
import Image from '../../images/transactions-image-04.svg';
|
||||
|
||||
function TransactionPanel({
|
||||
transactionPanelOpen,
|
||||
setTransactionPanelOpen
|
||||
}) {
|
||||
|
||||
const closeBtn = useRef(null);
|
||||
const panelContent = useRef(null);
|
||||
|
||||
// close on click outside
|
||||
useEffect(() => {
|
||||
const clickHandler = ({ target }) => {
|
||||
if (!transactionPanelOpen || panelContent.current.contains(target) || closeBtn.current.contains(target)) return;
|
||||
setTransactionPanelOpen(false);
|
||||
};
|
||||
document.addEventListener('click', clickHandler);
|
||||
return () => document.removeEventListener('click', clickHandler);
|
||||
});
|
||||
|
||||
// close if the esc key is pressed
|
||||
useEffect(() => {
|
||||
const keyHandler = ({ keyCode }) => {
|
||||
if (!transactionPanelOpen || keyCode !== 27) return;
|
||||
setTransactionPanelOpen(false);
|
||||
};
|
||||
document.addEventListener('keydown', keyHandler);
|
||||
return () => document.removeEventListener('keydown', keyHandler);
|
||||
});
|
||||
|
||||
return (
|
||||
<div
|
||||
ref={panelContent}
|
||||
className={`absolute inset-0 sm:left-auto z-20 transform shadow-xl transition-transform duration-200 ease-in-out ${
|
||||
transactionPanelOpen ? 'translate-x-' : 'translate-x-full'
|
||||
}`}>
|
||||
<div className="sticky top-16 bg-slate-50 overflow-x-hidden overflow-y-auto no-scrollbar shrink-0 border-l border-slate-200 w-full sm:w-[390px] h-[calc(100vh-64px)]">
|
||||
<button
|
||||
ref={closeBtn}
|
||||
onClick={() => setTransactionPanelOpen(false)}
|
||||
className="absolute top-0 right-0 mt-6 mr-6 group p-2"
|
||||
>
|
||||
<svg className="w-4 h-4 fill-slate-400 group-hover:fill-slate-600 pointer-events-none" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m7.95 6.536 4.242-4.243a1 1 0 1 1 1.415 1.414L9.364 7.95l4.243 4.242a1 1 0 1 1-1.415 1.415L7.95 9.364l-4.243 4.243a1 1 0 0 1-1.414-1.415L6.536 7.95 2.293 3.707a1 1 0 0 1 1.414-1.414L7.95 6.536Z" />
|
||||
</svg>
|
||||
</button>
|
||||
<div className="py-8 px-4 lg:px-8">
|
||||
<div className="max-w-sm mx-auto lg:max-w-none">
|
||||
<div className="text-slate-800 font-semibold text-center mb-1">Bank Transfer</div>
|
||||
<div className="text-sm text-center italic">22/01/2022, 8:56 PM</div>
|
||||
{/* Details */}
|
||||
<div className="drop-shadow-lg mt-12">
|
||||
{/* Top */}
|
||||
<div className="bg-white rounded-t-xl px-5 pb-2.5 text-center">
|
||||
<div className="mb-3 text-center">
|
||||
<img className="inline-flex w-12 h-12 rounded-full -mt-6" src={Image} width="48" height="48" alt="Transaction 04" />
|
||||
</div>
|
||||
<div className="text-2xl font-semibold text-emerald-500 mb-1">+$2,179.36</div>
|
||||
<div className="text-sm font-medium text-slate-800 mb-3">Acme LTD UK</div>
|
||||
<div className="text-xs inline-flex font-medium bg-slate-100 text-slate-500 rounded-full text-center px-2.5 py-1">Pending</div>
|
||||
</div>
|
||||
{/* Divider */}
|
||||
<div className="flex justify-between items-center" aria-hidden="true">
|
||||
<svg className="w-5 h-5 fill-white" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 20c5.523 0 10-4.477 10-10S5.523 0 0 0h20v20H0Z" />
|
||||
</svg>
|
||||
<div className="grow w-full h-5 bg-white flex flex-col justify-center">
|
||||
<div className="h-px w-full border-t border-dashed border-slate-200" />
|
||||
</div>
|
||||
<svg className="w-5 h-5 fill-white rotate-180" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 20c5.523 0 10-4.477 10-10S5.523 0 0 0h20v20H0Z" />
|
||||
</svg>
|
||||
</div>
|
||||
{/* Bottom */}
|
||||
<div className="bg-white rounded-b-xl p-5 pt-2.5 text-sm space-y-3">
|
||||
<div className="flex justify-between space-x-1">
|
||||
<span className="italic">IBAN:</span>
|
||||
<span className="font-medium text-slate-700 text-right">IT17 2207 1010 0504 0006 88</span>
|
||||
</div>
|
||||
<div className="flex justify-between space-x-1">
|
||||
<span className="italic">BIC:</span>
|
||||
<span className="font-medium text-slate-700 text-right">BARIT22</span>
|
||||
</div>
|
||||
<div className="flex justify-between space-x-1">
|
||||
<span className="italic">Reference:</span>
|
||||
<span className="font-medium text-slate-700 text-right">Freelance Work</span>
|
||||
</div>
|
||||
<div className="flex justify-between space-x-1">
|
||||
<span className="italic">Emitter:</span>
|
||||
<span className="font-medium text-slate-700 text-right">Acme LTD UK</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Receipts */}
|
||||
<div className="mt-6">
|
||||
<div className="text-sm font-semibold text-slate-800 mb-2">Receipts</div>
|
||||
<form className="rounded bg-slate-100 border border-dashed border-slate-300 text-center px-5 py-8">
|
||||
<svg className="inline-flex w-4 h-4 fill-slate-400 mb-3" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8 4c-.3 0-.5.1-.7.3L1.6 10 3 11.4l4-4V16h2V7.4l4 4 1.4-1.4-5.7-5.7C8.5 4.1 8.3 4 8 4ZM1 2h14V0H1v2Z" />
|
||||
</svg>
|
||||
<label htmlFor="upload" className="block text-sm text-slate-500 italic">We accept PNG, JPEG, and PDF files.</label>
|
||||
<input className="sr-only" id="upload" type="file" />
|
||||
</form>
|
||||
</div>
|
||||
{/* Notes */}
|
||||
<div className="mt-6">
|
||||
<div className="text-sm font-semibold text-slate-800 mb-2">Notes</div>
|
||||
<form>
|
||||
<label className="sr-only" htmlFor="notes">Write a note</label>
|
||||
<textarea id="notes" className="form-textarea w-full focus:border-slate-300" rows="4" placeholder="Write a note…" defaultValue={""} />
|
||||
</form>
|
||||
</div>
|
||||
{/* Download / Report */}
|
||||
<div className="flex items-center space-x-3 mt-6">
|
||||
<div className="w-1/2">
|
||||
<button className="btn w-full border-slate-200 hover:border-slate-300 text-slate-600">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 rotate-180" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M8 4c-.3 0-.5.1-.7.3L1.6 10 3 11.4l4-4V16h2V7.4l4 4 1.4-1.4-5.7-5.7C8.5 4.1 8.3 4 8 4ZM1 2h14V0H1v2Z" />
|
||||
</svg>
|
||||
<span className="ml-2">Download</span>
|
||||
</button>
|
||||
</div>
|
||||
<div className="w-1/2">
|
||||
<button className="btn w-full border-slate-200 hover:border-slate-300 text-rose-500">
|
||||
<svg className="w-4 h-4 fill-current shrink-0" viewBox="0 0 16 16">
|
||||
<path d="M7.001 3h2v4h-2V3Zm1 7a1 1 0 1 1 0-2 1 1 0 0 1 0 2ZM15 16a1 1 0 0 1-.6-.2L10.667 13H1a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v14a1 1 0 0 1-1 1ZM2 11h9a1 1 0 0 1 .6.2L14 13V2H2v9Z" />
|
||||
</svg>
|
||||
<span className="ml-2">Report</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default TransactionPanel;
|
||||
@@ -1,188 +0,0 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import TransactionItem from './TransactionsTableItem';
|
||||
|
||||
import Image01 from '../../images/transactions-image-01.svg';
|
||||
import Image02 from '../../images/transactions-image-02.svg';
|
||||
import Image03 from '../../images/user-36-05.jpg';
|
||||
import Image04 from '../../images/transactions-image-03.svg';
|
||||
import Image05 from '../../images/transactions-image-04.svg';
|
||||
import Image06 from '../../images/transactions-image-05.svg';
|
||||
import Image07 from '../../images/transactions-image-06.svg';
|
||||
import Image08 from '../../images/transactions-image-07.svg';
|
||||
import Image09 from '../../images/transactions-image-08.svg';
|
||||
|
||||
function TransactionsTable({
|
||||
selectedItems
|
||||
}) {
|
||||
|
||||
const transactions = [
|
||||
{
|
||||
id: '0',
|
||||
image: Image01,
|
||||
name: 'Form Builder CP',
|
||||
date: '22/01/2022',
|
||||
status: 'Pending',
|
||||
amount: '-$1,299.22',
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
image: Image02,
|
||||
name: 'Imperial Hotel ****',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$1,029.77',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
image: Image03,
|
||||
name: 'Aprilynne Pills',
|
||||
date: '22/01/2022',
|
||||
status: 'Pending',
|
||||
amount: '+$499.99',
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
image: Image04,
|
||||
name: 'Google Limited UK',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$1,029.77',
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
image: Image05,
|
||||
name: 'Acme LTD UK',
|
||||
date: '22/01/2022',
|
||||
status: 'Pending',
|
||||
amount: '+$2,179.36',
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
image: Image04,
|
||||
name: 'Google Limited UK',
|
||||
date: '22/01/2022',
|
||||
status: 'Canceled',
|
||||
amount: '-$1,029.77',
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
image: Image06,
|
||||
name: 'Uber',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$272.88',
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
image: Image07,
|
||||
name: 'PublicOne Inc.',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$199.87',
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
image: Image08,
|
||||
name: 'Github Inc.',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$42.87',
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
image: Image09,
|
||||
name: 'Form Builder PRO',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$112.44',
|
||||
},
|
||||
];
|
||||
|
||||
const [selectAll, setSelectAll] = useState(false);
|
||||
const [isCheck, setIsCheck] = useState([]);
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
setList(transactions);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const handleSelectAll = () => {
|
||||
setSelectAll(!selectAll);
|
||||
setIsCheck(list.map(li => li.id));
|
||||
if (selectAll) {
|
||||
setIsCheck([]);
|
||||
}
|
||||
};
|
||||
|
||||
const handleClick = e => {
|
||||
const { id, checked } = e.target;
|
||||
setSelectAll(false);
|
||||
setIsCheck([...isCheck, id]);
|
||||
if (!checked) {
|
||||
setIsCheck(isCheck.filter(item => item !== id));
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
selectedItems(isCheck);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [isCheck]);
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
<div>
|
||||
{/* Table */}
|
||||
<div className="overflow-x-auto">
|
||||
<table className="table-auto w-full">
|
||||
{/* Table header */}
|
||||
<thead className="text-xs font-semibold uppercase text-slate-500 border-t border-b border-slate-200">
|
||||
<tr>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select all</span>
|
||||
<input className="form-checkbox" type="checkbox" checked={selectAll} onChange={handleSelectAll} />
|
||||
</label>
|
||||
</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Counterparty</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Payment Date</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Status</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-right">Amount</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/* Table body */}
|
||||
<tbody className="text-sm divide-y divide-slate-200 border-b border-slate-200">
|
||||
{list.map((transaction) => {
|
||||
return (
|
||||
<TransactionItem
|
||||
key={transaction.id}
|
||||
id={transaction.id}
|
||||
image={transaction.image}
|
||||
name={transaction.name}
|
||||
date={transaction.date}
|
||||
status={transaction.status}
|
||||
amount={transaction.amount}
|
||||
handleClick={handleClick}
|
||||
isChecked={isCheck.includes(transaction.id)}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default TransactionsTable;
|
||||
@@ -1,190 +0,0 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import TransactionItem from './TransactionsTableItem02';
|
||||
|
||||
import Image01 from '../../images/transactions-image-01.svg';
|
||||
import Image02 from '../../images/transactions-image-02.svg';
|
||||
import Image03 from '../../images/user-36-05.jpg';
|
||||
import Image04 from '../../images/transactions-image-03.svg';
|
||||
import Image05 from '../../images/transactions-image-04.svg';
|
||||
import Image06 from '../../images/transactions-image-05.svg';
|
||||
import Image07 from '../../images/transactions-image-06.svg';
|
||||
import Image08 from '../../images/transactions-image-07.svg';
|
||||
import Image09 from '../../images/transactions-image-08.svg';
|
||||
|
||||
function TransactionsTable02({
|
||||
selectedItems,
|
||||
setTransactionPanelOpen
|
||||
}) {
|
||||
|
||||
const transactions = [
|
||||
{
|
||||
id: '0',
|
||||
image: Image01,
|
||||
name: 'Form Builder CP',
|
||||
date: '22/01/2022',
|
||||
status: 'Pending',
|
||||
amount: '-$1,299.22',
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
image: Image02,
|
||||
name: 'Imperial Hotel ****',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$1,029.77',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
image: Image03,
|
||||
name: 'Aprilynne Pills',
|
||||
date: '22/01/2022',
|
||||
status: 'Pending',
|
||||
amount: '+$499.99',
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
image: Image04,
|
||||
name: 'Google Limited UK',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$1,029.77',
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
image: Image05,
|
||||
name: 'Acme LTD UK',
|
||||
date: '22/01/2022',
|
||||
status: 'Pending',
|
||||
amount: '+$2,179.36',
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
image: Image04,
|
||||
name: 'Google Limited UK',
|
||||
date: '22/01/2022',
|
||||
status: 'Canceled',
|
||||
amount: '-$1,029.77',
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
image: Image06,
|
||||
name: 'Uber',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$272.88',
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
image: Image07,
|
||||
name: 'PublicOne Inc.',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$199.87',
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
image: Image08,
|
||||
name: 'Github Inc.',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$42.87',
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
image: Image09,
|
||||
name: 'Form Builder PRO',
|
||||
date: '22/01/2022',
|
||||
status: 'Completed',
|
||||
amount: '-$112.44',
|
||||
},
|
||||
];
|
||||
|
||||
const [selectAll, setSelectAll] = useState(false);
|
||||
const [isCheck, setIsCheck] = useState([]);
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
setList(transactions);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const handleSelectAll = () => {
|
||||
setSelectAll(!selectAll);
|
||||
setIsCheck(list.map(li => li.id));
|
||||
if (selectAll) {
|
||||
setIsCheck([]);
|
||||
}
|
||||
};
|
||||
|
||||
const handleClick = e => {
|
||||
const { id, checked } = e.target;
|
||||
setSelectAll(false);
|
||||
setIsCheck([...isCheck, id]);
|
||||
if (!checked) {
|
||||
setIsCheck(isCheck.filter(item => item !== id));
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
selectedItems(isCheck);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [isCheck]);
|
||||
|
||||
return (
|
||||
<div className="bg-white">
|
||||
<div>
|
||||
{/* Table */}
|
||||
<div className="overflow-x-auto">
|
||||
<table className="table-auto w-full">
|
||||
{/* Table header */}
|
||||
<thead className="text-xs font-semibold uppercase text-slate-500 border-t border-b border-slate-200">
|
||||
<tr>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select all</span>
|
||||
<input className="form-checkbox" type="checkbox" checked={selectAll} onChange={handleSelectAll} />
|
||||
</label>
|
||||
</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Counterparty</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Payment Date</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Status</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-right">Amount</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/* Table body */}
|
||||
<tbody className="text-sm divide-y divide-slate-200 border-b border-slate-200">
|
||||
{list.map((transaction) => {
|
||||
return (
|
||||
<TransactionItem
|
||||
key={transaction.id}
|
||||
id={transaction.id}
|
||||
image={transaction.image}
|
||||
name={transaction.name}
|
||||
date={transaction.date}
|
||||
status={transaction.status}
|
||||
amount={transaction.amount}
|
||||
handleClick={handleClick}
|
||||
isChecked={isCheck.includes(transaction.id)}
|
||||
setTransactionPanelOpen={setTransactionPanelOpen}
|
||||
/>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default TransactionsTable02;
|
||||
@@ -1,58 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function TransactionsTableItem(props) {
|
||||
|
||||
const statusColor = (status) => {
|
||||
switch (status) {
|
||||
case 'Completed':
|
||||
return 'bg-emerald-100 text-emerald-600';
|
||||
case 'Canceled':
|
||||
return 'bg-rose-100 text-rose-500';
|
||||
default:
|
||||
return 'bg-slate-100 text-slate-500';
|
||||
}
|
||||
};
|
||||
|
||||
const amountColor = (amount) => {
|
||||
switch (amount.charAt(0)) {
|
||||
case '+':
|
||||
return 'text-emerald-500';
|
||||
default:
|
||||
return 'text-slate-700';
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<tr>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select</span>
|
||||
<input id={props.id} className="form-checkbox" type="checkbox" onChange={props.handleClick} checked={props.isChecked} />
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap md:w-1/2">
|
||||
<div className="flex items-center">
|
||||
<div className="w-9 h-9 shrink-0 mr-2 sm:mr-3">
|
||||
<img className="rounded-full" src={props.image} width="36" height="36" alt={props.name} />
|
||||
</div>
|
||||
<div className="font-medium text-slate-800">{props.name}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">{props.date}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">
|
||||
<div className={`text-xs inline-flex font-medium rounded-full text-center px-2.5 py-1 ${statusColor(props.status)}`}>{props.status}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className={`text-right font-medium ${amountColor(props.amount)}`}>{props.amount}</div>
|
||||
</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
|
||||
export default TransactionsTableItem;
|
||||
@@ -1,58 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function TransactionsTableItem(props) {
|
||||
|
||||
const statusColor = (status) => {
|
||||
switch (status) {
|
||||
case 'Completed':
|
||||
return 'bg-emerald-100 text-emerald-600';
|
||||
case 'Canceled':
|
||||
return 'bg-rose-100 text-rose-500';
|
||||
default:
|
||||
return 'bg-slate-100 text-slate-500';
|
||||
}
|
||||
};
|
||||
|
||||
const amountColor = (amount) => {
|
||||
switch (amount.charAt(0)) {
|
||||
case '+':
|
||||
return 'text-emerald-500';
|
||||
default:
|
||||
return 'text-slate-700';
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<tr className="cursor-pointer" onClick={(e) => { e.stopPropagation(); props.setTransactionPanelOpen(true); }}>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select</span>
|
||||
<input id={props.id} className="form-checkbox" type="checkbox" onChange={props.handleClick} checked={props.isChecked} onClick={(e) => e.stopPropagation()} />
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap md:w-1/2">
|
||||
<div className="flex items-center">
|
||||
<div className="w-9 h-9 shrink-0 mr-2 sm:mr-3">
|
||||
<img className="rounded-full" src={props.image} width="36" height="36" alt={props.name} />
|
||||
</div>
|
||||
<div className="font-medium text-slate-800">{props.name}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">{props.date}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">
|
||||
<div className={`text-xs inline-flex font-medium rounded-full text-center px-2.5 py-1 ${statusColor(props.status)}`}>{props.status}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className={`text-right font-medium ${amountColor(props.amount)}`}>{props.amount}</div>
|
||||
</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
|
||||
export default TransactionsTableItem;
|
||||
@@ -1,167 +0,0 @@
|
||||
import React from 'react';
|
||||
import Mail from './Mail';
|
||||
|
||||
import mailUser01 from '../../images/user-40-11.jpg';
|
||||
import mailUser02 from '../../images/user-avatar-80.png';
|
||||
import mailImage from '../../images/inbox-image.jpg';
|
||||
|
||||
function InboxBody({
|
||||
inboxSidebarOpen,
|
||||
setInboxSidebarOpen
|
||||
}) {
|
||||
|
||||
const mails = [
|
||||
{
|
||||
id: '0',
|
||||
open: false,
|
||||
image: mailUser01,
|
||||
name: 'Dominik Lamakani',
|
||||
email: 'dominiklama@acme.com',
|
||||
date: 'Sep 3, 3:18 PM',
|
||||
recipients: ['me', 'Carolyn'],
|
||||
excerpt: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore…',
|
||||
message: '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p><p>Consectetur adipiscing elit, sed do eiusmod aliqua? Check below:</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p><p>Cheers,</p><p class="font-medium">Dominik Lamakani</p>',
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
open: false,
|
||||
image: mailUser02,
|
||||
name: 'Acme Inc.',
|
||||
email: 'acmeinc@acme.com',
|
||||
date: 'Sep 3, 3:18 PM',
|
||||
recipients: ['me', 'Dominik'],
|
||||
excerpt: 'Dominik, lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt…',
|
||||
message: '<p>Dominik, lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p><p>Consectetur adipiscing elit, sed do eiusmod aliqua? Check below:</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p><p>Cheers,</p><p class="font-medium">Acme Inc.</p>',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
open: true,
|
||||
image: mailUser01,
|
||||
name: 'Dominik Lamakani',
|
||||
email: 'dominiklama@acme.com',
|
||||
date: 'Sep 4, 3:37 AM',
|
||||
recipients: ['me', 'Carolyn'],
|
||||
excerpt: 'Hey Acme 👋 Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt…',
|
||||
message: `<p>Hey Acme 👋</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis <span class="underline">nostrud exercitation ullamco</span> laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p><p>Consectetur adipiscing elit, sed do eiusmod <a class="font-medium text-indigo-500 hover:text-indigo-600" href="#0">tempor magna</a> aliqua? Check below:</p><p><img src=${mailImage} width="320" height="190" alt="Inbox image" /></p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam.</p><p>Cheers,</p><p class="font-medium">Dominik Lamakani</p>`,
|
||||
},
|
||||
];
|
||||
|
||||
return (
|
||||
<div className={`grow flex flex-col md:translate-x-0 transform transition-transform duration-300 ease-in-out ${inboxSidebarOpen ? 'translate-x-1/3' : 'translate-x-0'}`}>
|
||||
|
||||
{/* Header */}
|
||||
<div className="sticky top-16">
|
||||
<div className="flex items-center justify-between bg-slate-50 border-b border-slate-200 px-4 sm:px-6 md:px-5 h-16">
|
||||
{/* Buttons on the left side */}
|
||||
<div className="flex">
|
||||
{/* Close button */}
|
||||
<button
|
||||
className="md:hidden text-slate-400 hover:text-slate-500 mr-4"
|
||||
onClick={() => setInboxSidebarOpen(!inboxSidebarOpen)}
|
||||
aria-controls="inbox-sidebar"
|
||||
aria-expanded={inboxSidebarOpen}
|
||||
>
|
||||
<span className="sr-only">Close sidebar</span>
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.7 18.7l1.4-1.4L7.8 13H20v-2H7.8l4.3-4.3-1.4-1.4L4 12z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="p-1.5 shrink-0 rounded bg-white border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400" viewBox="0 0 16 16">
|
||||
<path d="M5 7h2v6H5V7zm4 0h2v6H9V7zm3-6v2h4v2h-1v10c0 .6-.4 1-1 1H2c-.6 0-1-.4-1-1V5H0V3h4V1c0-.6.4-1 1-1h6c.6 0 1 .4 1 1zM6 2v1h4V2H6zm7 3H3v9h10V5z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="p-1.5 shrink-0 rounded bg-white border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current text-amber-500" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934 8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="p-1.5 shrink-0 rounded bg-white border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current text-slate-400" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 12c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm1-3H7V4h2v5z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="p-1.5 shrink-0 rounded bg-white border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current text-indigo-500" viewBox="0 0 16 16">
|
||||
<path d="M14.3 2.3L5 11.6 1.7 8.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4l4 4c.2.2.4.3.7.3.3 0 .5-.1.7-.3l10-10c.4-.4.4-1 0-1.4-.4-.4-1-.4-1.4 0z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Buttons on the right side */}
|
||||
<div className="flex items-center">
|
||||
<div className="text-xs mr-1"><span className="font-medium">10</span> <span className="text-slate-500">of</span> <span className="font-medium">467</span></div>
|
||||
<button className="p-1.5 shrink-0 rounded bg-white border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current" viewBox="0 0 16 16">
|
||||
<path d="m10 13.4 1.4-1.4-4-4 4-4L10 2.6 4.6 8z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="p-1.5 shrink-0 rounded bg-white border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current" viewBox="0 0 16 16">
|
||||
<path d="M7 13.4 5.6 12l4-4-4-4L7 2.6 12.4 8z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Body */}
|
||||
<div className="grow px-4 sm:px-6 md:px-5 py-4">
|
||||
|
||||
{/* Mail subject */}
|
||||
<header className="sm:flex sm:items-start sm:justify-between mb-4">
|
||||
<h1 className="text-xl leading-snug text-slate-800 font-bold mb-1 sm:mb-0 ml-2">Chill your mind with this amazing offer 🎉</h1>
|
||||
<button className="text-xs inline-flex font-medium bg-sky-100 text-sky-600 rounded-full text-center px-2.5 py-1 whitespace-nowrap">Exciting news</button>
|
||||
</header>
|
||||
|
||||
{/* Messages box */}
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 px-6 divide-y divide-slate-200">
|
||||
|
||||
{
|
||||
mails.map(mail => {
|
||||
return (
|
||||
<Mail
|
||||
key={mail.id}
|
||||
id={mail.id}
|
||||
open={mail.open}
|
||||
image={mail.image}
|
||||
name={mail.name}
|
||||
email={mail.email}
|
||||
date={mail.date}
|
||||
recipients={mail.recipients}
|
||||
excerpt={mail.excerpt}
|
||||
message={mail.message}
|
||||
/>
|
||||
)
|
||||
})
|
||||
}
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{/* Footer */}
|
||||
<div className="sticky bottom-0">
|
||||
<div className="flex items-center justify-between bg-white border-t border-slate-200 px-4 sm:px-6 md:px-5 h-16">
|
||||
{/* Plus button */}
|
||||
<button className="shrink-0 text-slate-400 hover:text-slate-500 mr-3">
|
||||
<span className="sr-only">Add</span>
|
||||
<svg className="w-6 h-6 fill-current" viewBox="0 0 24 24">
|
||||
<path d="M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12C23.98 5.38 18.62.02 12 0zm6 13h-5v5h-2v-5H6v-2h5V6h2v5h5v2z" />
|
||||
</svg>
|
||||
</button>
|
||||
{/* Message input */}
|
||||
<form className="grow flex">
|
||||
<div className="grow mr-3">
|
||||
<label htmlFor="message-input" className="sr-only">Type a message</label>
|
||||
<input id="message-input" className="form-input w-full bg-slate-100 border-transparent focus:bg-white focus:border-slate-300" type="text" placeholder="Aa" />
|
||||
</div>
|
||||
<button type="submit" className="btn bg-indigo-500 hover:bg-indigo-600 text-white whitespace-nowrap">Send -></button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default InboxBody;
|
||||
@@ -1,155 +0,0 @@
|
||||
import React from 'react';
|
||||
import ChannelMenu from '../messages/ChannelMenu';
|
||||
|
||||
import UserImage01 from '../../images/user-32-01.jpg';
|
||||
import UserImage02 from '../../images/user-32-02.jpg';
|
||||
import UserImage04 from '../../images/user-32-04.jpg';
|
||||
import UserImage05 from '../../images/user-32-05.jpg';
|
||||
import UserImage06 from '../../images/user-32-06.jpg';
|
||||
|
||||
function InboxSidebar({
|
||||
inboxSidebarOpen,
|
||||
setInboxSidebarOpen
|
||||
}) {
|
||||
return (
|
||||
<div
|
||||
id="inbox-sidebar"
|
||||
className={`absolute z-20 top-0 bottom-0 w-full md:w-auto md:static md:top-auto md:bottom-auto -mr-px md:translate-x-0 transform transition-transform duration-200 ease-in-out ${inboxSidebarOpen ? 'translate-x-0' : '-translate-x-full'}`}
|
||||
>
|
||||
<div className="sticky top-16 bg-white overflow-x-hidden overflow-y-auto no-scrollbar shrink-0 border-r border-slate-200 md:w-72 xl:w-80 h-[calc(100vh-64px)]">
|
||||
|
||||
{/* #Marketing group */}
|
||||
<div>
|
||||
{/* Group header */}
|
||||
<div className="sticky top-0 z-10">
|
||||
<div className="flex items-center bg-white border-b border-slate-200 px-5 h-16">
|
||||
<div className="w-full flex items-center justify-between">
|
||||
{/* Channel menu */}
|
||||
<ChannelMenu />
|
||||
{/* Edit button */}
|
||||
<button className="p-1.5 shrink-0 rounded border border-slate-200 hover:border-slate-300 shadow-sm ml-2">
|
||||
<svg className="w-4 h-4 fill-current text-slate-500" viewBox="0 0 16 16">
|
||||
<path d="M11.7.3c-.4-.4-1-.4-1.4 0l-10 10c-.2.2-.3.4-.3.7v4c0 .6.4 1 1 1h4c.3 0 .5-.1.7-.3l10-10c.4-.4.4-1 0-1.4l-4-4zM4.6 14H2v-2.6l6-6L10.6 8l-6 6zM12 6.6L9.4 4 11 2.4 13.6 5 12 6.6z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Group body */}
|
||||
<div className="px-5 py-4">
|
||||
{/* Search form */}
|
||||
<form className="relative">
|
||||
<label htmlFor="inbox-search" className="sr-only">Search</label>
|
||||
<input id="inbox-search" className="form-input w-full pl-9 focus:border-slate-300" type="search" placeholder="Search…" />
|
||||
<button className="absolute inset-0 right-auto group" type="submit" aria-label="Search">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 group-hover:text-slate-500 ml-3 mr-2" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z" />
|
||||
<path d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z" />
|
||||
</svg>
|
||||
</button>
|
||||
</form>
|
||||
{/* Tabs */}
|
||||
<div className="relative mt-4">
|
||||
<div className="absolute bottom-0 w-full h-px bg-slate-200" aria-hidden="true"></div>
|
||||
<ul className="relative text-sm font-medium flex flex-nowrap -mx-4 sm:-mx-6 lg:-mx-8 overflow-x-scroll no-scrollbar">
|
||||
<li className="mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="block pb-3 text-indigo-500 whitespace-nowrap border-b-2 border-indigo-500" href="#0">Primary</a>
|
||||
</li>
|
||||
<li className="mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="block pb-3 text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Social</a>
|
||||
</li>
|
||||
<li className="mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="block pb-3 text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Promotions</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Inbox */}
|
||||
<div className="mt-4">
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3">Inbox (44)</div>
|
||||
<ul className="mb-6">
|
||||
<li className="-mx-2">
|
||||
<button className="flex w-full p-2 rounded bg-indigo-100 text-left" onClick={() => setInboxSidebarOpen(false)}>
|
||||
<img className="w-8 h-8 rounded-full mr-2" src={UserImage01} width="32" height="32" alt="User 01" />
|
||||
<div className="grow truncate">
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-semibold text-slate-800">Dominik Lamakani</span>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 font-medium">4 Aug</div>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-800 truncate mb-0.5">Chill your mind with this amazing offer 🎉</div>
|
||||
<div className="text-xs whitespace-normal">Lorem ipsum dolor sit amet, consecte adipiscing elit aute irure dolor…</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="flex w-full p-2 rounded text-left" onClick={() => setInboxSidebarOpen(false)}>
|
||||
<img className="w-8 h-8 rounded-full mr-2" src={UserImage05} width="32" height="32" alt="User 05" />
|
||||
<div className="grow truncate">
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-semibold text-slate-800">Simona Lürwer</span>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 font-medium">4 Aug</div>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-800 truncate mb-0.5">🙌 Help us improve Mosaic by giving…</div>
|
||||
<div className="text-xs whitespace-normal">Lorem ipsum dolor sit amet, consecte adipiscing elit aute irure dolor…</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="flex w-full p-2 rounded text-left" onClick={() => setInboxSidebarOpen(false)}>
|
||||
<img className="w-8 h-8 rounded-full mr-2" src={UserImage06} width="32" height="32" alt="User 05" />
|
||||
<div className="grow truncate">
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-semibold text-slate-800">Mary Roszczewski</span>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 font-medium">1 Aug</div>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-800 truncate mb-0.5">[Urgent] Changes to links for public…</div>
|
||||
<div className="text-xs whitespace-normal">👋 Lorem ipsum dolor sit amet, consecte adipiscing elit aute irure dolor…</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="flex w-full p-2 rounded text-left" onClick={() => setInboxSidebarOpen(false)}>
|
||||
<img className="w-8 h-8 rounded-full mr-2" src={UserImage04} width="32" height="32" alt="User 05" />
|
||||
<div className="grow truncate">
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-semibold text-slate-800">Adrian Przetocki</span>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 font-medium">1 Aug</div>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-800 truncate mb-0.5">🙌 Help us improve Mosaic by giving…</div>
|
||||
<div className="text-xs whitespace-normal">Lorem ipsum dolor sit amet, consecte adipiscing elit aute irure dolor…</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
<li className="-mx-2">
|
||||
<button className="flex w-full p-2 rounded text-left" onClick={() => setInboxSidebarOpen(false)}>
|
||||
<img className="w-8 h-8 rounded-full mr-2" src={UserImage02} width="32" height="32" alt="User 05" />
|
||||
<div className="grow truncate">
|
||||
<div className="flex items-center justify-between mb-1.5">
|
||||
<div className="truncate">
|
||||
<span className="text-sm font-semibold text-slate-800">Tisha Yanchev</span>
|
||||
</div>
|
||||
<div className="text-xs text-slate-500 font-medium">1 Aug</div>
|
||||
</div>
|
||||
<div className="text-xs font-medium text-slate-800 truncate mb-0.5">Re: Here’s an extra 25% OFF 🎉</div>
|
||||
<div className="text-xs whitespace-normal">Excepteur sint occaecat cupidatat non proident sunt in culpa qui deserunt…</div>
|
||||
</div>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default InboxSidebar;
|
||||
@@ -1,47 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function Mail(props) {
|
||||
|
||||
const [open, setOpen] = useState(props.open);
|
||||
|
||||
return (
|
||||
<div className="py-6">
|
||||
{/* Header */}
|
||||
<header className="flex items-start">
|
||||
{/* Avatar */}
|
||||
<img className="rounded-full shrink-0 mr-3" src={props.image} width="40" height="40" alt={props.name} />
|
||||
{/* Meta */}
|
||||
<div className="grow">
|
||||
<div className="sm:flex items-start justify-between mb-0.5">
|
||||
{/* Message author */}
|
||||
<div className="xl:flex items-center mb-2 sm:mb-0">
|
||||
<button className="text-sm font-semibold text-slate-800 text-left truncate" onClick={() => setOpen(!open)}>{props.name}</button>
|
||||
{open &&
|
||||
<>
|
||||
<div className="text-sm text-slate-400 hidden xl:block mx-1">·</div>
|
||||
<div className="text-xs">{props.email}</div>
|
||||
</>
|
||||
}
|
||||
</div>
|
||||
{/* Date */}
|
||||
<div className="text-xs font-medium text-slate-500 whitespace-nowrap mb-2 sm:mb-0">{props.date}</div>
|
||||
</div>
|
||||
{/* To */}
|
||||
{open &&
|
||||
<div className="text-xs font-medium text-slate-500">To {props.recipients.join(', ')}</div>
|
||||
}
|
||||
{/* Excerpt */}
|
||||
{!open &&
|
||||
<div className="text-sm">{props.excerpt}</div>
|
||||
}
|
||||
</div>
|
||||
</header>
|
||||
{/* Body */}
|
||||
{open &&
|
||||
<div className="text-sm text-slate-800 mt-4 space-y-2" dangerouslySetInnerHTML={{ __html: props.message }}></div>
|
||||
}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Mail;
|
||||
@@ -1,219 +0,0 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import Invoices from './InvoicesTableItem';
|
||||
|
||||
function InvoicesTable({
|
||||
selectedItems
|
||||
}) {
|
||||
|
||||
const invoices = [
|
||||
{
|
||||
id: '0',
|
||||
invoice: '#123567',
|
||||
total: '$129.00',
|
||||
status: 'Overdue',
|
||||
customer: 'Dominik Lamakani',
|
||||
issueddate: '22/07/2021',
|
||||
paiddate: '-',
|
||||
type: 'Subscription',
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
invoice: '#779912',
|
||||
total: '$59.00',
|
||||
status: 'Paid',
|
||||
customer: 'Mark Cameron',
|
||||
issueddate: '19/07/2021',
|
||||
paiddate: '20/07/2021',
|
||||
type: 'Subscription',
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
invoice: '#889924',
|
||||
total: '$89.00',
|
||||
status: 'Paid',
|
||||
customer: 'Sergio Gonnelli',
|
||||
issueddate: '17/07/2021',
|
||||
paiddate: '19/07/2021',
|
||||
type: 'One-time',
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
invoice: '#897726',
|
||||
total: '$129.00',
|
||||
status: 'Due',
|
||||
customer: 'Manuel Garbaya',
|
||||
issueddate: '04/07/2021',
|
||||
paiddate: '-',
|
||||
type: 'Subscription',
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
invoice: '#123567',
|
||||
total: '$129.00',
|
||||
status: 'Due',
|
||||
customer: 'Cool Robot',
|
||||
issueddate: '04/07/2021',
|
||||
paiddate: '-',
|
||||
type: 'Subscription',
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
invoice: '#896644',
|
||||
total: '$129.00',
|
||||
status: 'Paid',
|
||||
customer: 'Mark Cameron',
|
||||
issueddate: '04/07/2021',
|
||||
paiddate: '09/07/2021',
|
||||
type: 'One-time',
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
invoice: '#136988',
|
||||
total: '$69.00',
|
||||
status: 'Paid',
|
||||
customer: 'Glenn Thomas',
|
||||
issueddate: '01/07/2021',
|
||||
paiddate: '01/07/2021',
|
||||
type: 'One-time',
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
invoice: '#442206',
|
||||
total: '$129.00',
|
||||
status: 'Overdue',
|
||||
customer: 'Dominik Lamakani',
|
||||
issueddate: '22/06/2021',
|
||||
paiddate: '-',
|
||||
type: 'Subscription',
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
invoice: '#764321',
|
||||
total: '$89.00',
|
||||
status: 'Paid',
|
||||
customer: 'Brian Halligan',
|
||||
issueddate: '21/06/2021',
|
||||
paiddate: '29/06/2021',
|
||||
type: 'One-time',
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
invoice: '#908764',
|
||||
total: '$129.00',
|
||||
status: 'Due',
|
||||
customer: 'Carolyn McNeail',
|
||||
issueddate: '17/06/2021',
|
||||
paiddate: '-',
|
||||
type: 'Subscription',
|
||||
}
|
||||
];
|
||||
|
||||
const [selectAll, setSelectAll] = useState(false);
|
||||
const [isCheck, setIsCheck] = useState([]);
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
setList(invoices);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const handleSelectAll = () => {
|
||||
setSelectAll(!selectAll);
|
||||
setIsCheck(list.map(li => li.id));
|
||||
if (selectAll) {
|
||||
setIsCheck([]);
|
||||
}
|
||||
};
|
||||
|
||||
const handleClick = e => {
|
||||
const { id, checked } = e.target;
|
||||
setSelectAll(false);
|
||||
setIsCheck([...isCheck, id]);
|
||||
if (!checked) {
|
||||
setIsCheck(isCheck.filter(item => item !== id));
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
selectedItems(isCheck);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [isCheck]);
|
||||
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 relative">
|
||||
<header className="px-5 py-4">
|
||||
<h2 className="font-semibold text-slate-800">Invoices <span className="text-slate-400 font-medium">67</span></h2>
|
||||
</header>
|
||||
<div>
|
||||
|
||||
{/* Table */}
|
||||
<div className="overflow-x-auto">
|
||||
<table className="table-auto w-full">
|
||||
{/* Table header */}
|
||||
<thead className="text-xs font-semibold uppercase text-slate-500 bg-slate-50 border-t border-b border-slate-200">
|
||||
<tr>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select all</span>
|
||||
<input className="form-checkbox" type="checkbox" checked={selectAll} onChange={handleSelectAll} />
|
||||
</label>
|
||||
</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Invoice</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Total</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Status</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Customer</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Issued on</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Paid on</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Type</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Actions</div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/* Table body */}
|
||||
<tbody className="text-sm divide-y divide-slate-200">
|
||||
{
|
||||
list.map(invoice => {
|
||||
return (
|
||||
<Invoices
|
||||
key={invoice.id}
|
||||
id={invoice.id}
|
||||
invoice={invoice.invoice}
|
||||
total={invoice.total}
|
||||
status={invoice.status}
|
||||
customer={invoice.customer}
|
||||
issueddate={invoice.issueddate}
|
||||
paiddate={invoice.paiddate}
|
||||
type={invoice.type}
|
||||
handleClick={handleClick}
|
||||
isChecked={isCheck.includes(invoice.id)}
|
||||
/>
|
||||
)
|
||||
})
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default InvoicesTable;
|
||||
@@ -1,109 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function InvoicesTableItem(props) {
|
||||
|
||||
const totalColor = (status) => {
|
||||
switch (status) {
|
||||
case 'Paid':
|
||||
return 'text-emerald-500';
|
||||
case 'Due':
|
||||
return 'text-amber-500';
|
||||
case 'Overdue':
|
||||
return 'text-rose-500';
|
||||
default:
|
||||
return 'text-slate-500';
|
||||
}
|
||||
};
|
||||
|
||||
const statusColor = (status) => {
|
||||
switch (status) {
|
||||
case 'Paid':
|
||||
return 'bg-emerald-100 text-emerald-600';
|
||||
case 'Due':
|
||||
return 'bg-amber-100 text-amber-600';
|
||||
case 'Overdue':
|
||||
return 'bg-rose-100 text-rose-500';
|
||||
default:
|
||||
return 'bg-slate-100 text-slate-500';
|
||||
}
|
||||
};
|
||||
|
||||
const typeIcon = (type) => {
|
||||
switch (type) {
|
||||
case 'Subscription':
|
||||
return (
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M4.3 4.5c1.9-1.9 5.1-1.9 7 0 .7.7 1.2 1.7 1.4 2.7l2-.3c-.2-1.5-.9-2.8-1.9-3.8C10.1.4 5.7.4 2.9 3.1L.7.9 0 7.3l6.4-.7-2.1-2.1zM15.6 8.7l-6.4.7 2.1 2.1c-1.9 1.9-5.1 1.9-7 0-.7-.7-1.2-1.7-1.4-2.7l-2 .3c.2 1.5.9 2.8 1.9 3.8 1.4 1.4 3.1 2 4.9 2 1.8 0 3.6-.7 4.9-2l2.2 2.2.8-6.4z" />
|
||||
</svg>
|
||||
);
|
||||
default:
|
||||
return (
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M11.4 0L10 1.4l2 2H8.4c-2.8 0-5 2.2-5 5V12l-2-2L0 11.4l3.7 3.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l3.7-3.7L7.4 10l-2 2V8.4c0-1.7 1.3-3 3-3H12l-2 2 1.4 1.4 3.7-3.7c.4-.4.4-1 0-1.4L11.4 0z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<tr>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select</span>
|
||||
<input id={props.id} className="form-checkbox" type="checkbox" onChange={props.handleClick} checked={props.isChecked} />
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-medium text-sky-500">{props.invoice}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className={`font-medium ${totalColor(props.status)}`}>{props.total}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className={`inline-flex font-medium rounded-full text-center px-2.5 py-0.5 ${statusColor(props.status)}`}>{props.status}</div>
|
||||
</td >
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-medium text-slate-800">{props.customer}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div>{props.issueddate}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div>{props.paiddate}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="flex items-center">
|
||||
{typeIcon(props.type)}
|
||||
<div>{props.type}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="space-x-1">
|
||||
<button className="text-slate-400 hover:text-slate-500 rounded-full">
|
||||
<span className="sr-only">Edit</span>
|
||||
<svg className="w-8 h-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M19.7 8.3c-.4-.4-1-.4-1.4 0l-10 10c-.2.2-.3.4-.3.7v4c0 .6.4 1 1 1h4c.3 0 .5-.1.7-.3l10-10c.4-.4.4-1 0-1.4l-4-4zM12.6 22H10v-2.6l6-6 2.6 2.6-6 6zm7.4-7.4L17.4 12l1.6-1.6 2.6 2.6-1.6 1.6z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="text-slate-400 hover:text-slate-500 rounded-full">
|
||||
<span className="sr-only">Download</span>
|
||||
<svg className="w-8 h-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M16 20c.3 0 .5-.1.7-.3l5.7-5.7-1.4-1.4-4 4V8h-2v8.6l-4-4L9.6 14l5.7 5.7c.2.2.4.3.7.3zM9 22h14v2H9z" />
|
||||
</svg>
|
||||
</button>
|
||||
<button className="text-rose-500 hover:text-rose-600 rounded-full">
|
||||
<span className="sr-only">Delete</span>
|
||||
<svg className="w-8 h-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M13 15h2v6h-2zM17 15h2v6h-2z" />
|
||||
<path d="M20 9c0-.6-.4-1-1-1h-6c-.6 0-1 .4-1 1v2H8v2h1v10c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V13h1v-2h-4V9zm-6 1h4v1h-4v-1zm7 3v9H11v-9h10z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
);
|
||||
}
|
||||
|
||||
export default InvoicesTableItem;
|
||||
@@ -1,46 +0,0 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function JobListItem(props) {
|
||||
return (
|
||||
<div
|
||||
className={`shadow-lg rounded-sm border px-5 py-4 ${props.type === 'Featured' ? 'bg-amber-50 border-amber-300' : 'bg-white border-slate-200'}`}
|
||||
>
|
||||
<div className="md:flex justify-between items-center space-y-4 md:space-y-0 space-x-2">
|
||||
{/* Left side */}
|
||||
<div className="flex items-start space-x-3 md:space-x-4">
|
||||
<div className="w-9 h-9 shrink-0 mt-1">
|
||||
<img className="w-9 h-9 rounded-full" src={props.image} width="36" height="36" alt={props.company} />
|
||||
</div>
|
||||
<div>
|
||||
<Link className="inline-flex font-semibold text-slate-800" to={props.link}>
|
||||
{props.role}
|
||||
</Link>
|
||||
<div className="text-sm">{props.details}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center space-x-4 pl-10 md:pl-0">
|
||||
<div className="text-sm text-slate-500 italic whitespace-nowrap">{props.date}</div>
|
||||
{props.type && (
|
||||
<div
|
||||
className={`text-xs inline-flex font-medium rounded-full text-center px-2.5 py-1 ${
|
||||
props.type === 'Featured' ? 'bg-amber-100 text-amber-600' : 'bg-emerald-100 text-emerald-600'
|
||||
}`}
|
||||
>
|
||||
{props.type}
|
||||
</div>
|
||||
)}
|
||||
<button className={`${props.fav ? 'text-amber-500' : 'text-slate-300 hover:text-slate-400'}`}>
|
||||
<span className="sr-only">Bookmark</span>
|
||||
<svg className="w-3 h-4 fill-current" width="12" height="16" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M2 0C.9 0 0 .9 0 2v14l6-3 6 3V2c0-1.1-.9-2-2-2H2Z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default JobListItem;
|
||||
@@ -1,160 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function JobSidebar() {
|
||||
|
||||
const [companySetting, setCompanySetting] = useState(true);
|
||||
const [immigrationSetting, setImmigrationSetting] = useState(false);
|
||||
|
||||
return (
|
||||
<div className="space-y-8">
|
||||
{/* Alert */}
|
||||
<div className="relative bg-indigo-200 rounded-sm p-5 min-w-60">
|
||||
<div className="absolute bottom-0 -mb-3">
|
||||
<svg width="44" height="42" xmlns="http://www.w3.org/2000/svg" xmlnsXlink="http://www.w3.org/1999/xlink">
|
||||
<defs>
|
||||
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="ill-b">
|
||||
<stop stopColor="#A5B4FC" offset="0%" />
|
||||
<stop stopColor="#818CF8" offset="100%" />
|
||||
</linearGradient>
|
||||
<linearGradient x1="50%" y1="24.537%" x2="50%" y2="100%" id="ill-c">
|
||||
<stop stopColor="#4338CA" offset="0%" />
|
||||
<stop stopColor="#6366F1" stopOpacity="0" offset="100%" />
|
||||
</linearGradient>
|
||||
<path id="ill-a" d="m20 0 20 40-20-6.25L0 40z" />
|
||||
</defs>
|
||||
<g transform="scale(-1 1) rotate(-51 -11.267 67.017)" fill="none" fillRule="evenodd">
|
||||
<mask id="ill-d" fill="#fff">
|
||||
<use xlinkHref="#ill-a" />
|
||||
</mask>
|
||||
<use fill="url(#ill-b)" xlinkHref="#ill-a" />
|
||||
<path fill="url(#ill-c)" mask="url(#ill-d)" d="M20.586-7.913h25v47.5h-25z" />
|
||||
</g>
|
||||
</svg>
|
||||
</div>
|
||||
<div className="relative">
|
||||
<div className="text-sm font-medium text-slate-800 mb-2">Remember to keep track of your job research.</div>
|
||||
<div className="text-right">
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">
|
||||
Create Alert ->
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* White box */}
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-5 min-w-60">
|
||||
<div className="grid md:grid-cols-2 xl:grid-cols-1 gap-6">
|
||||
{/* Group 1 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Job Types</div>
|
||||
<ul className="space-y-2">
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" defaultChecked />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Programming</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Design</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Management / Finance</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Customer Support</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Sales / Marketing</span>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Group 2 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Company Culture</div>
|
||||
<div className="flex items-center">
|
||||
<div className="form-switch">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="company-toggle"
|
||||
className="sr-only"
|
||||
checked={companySetting}
|
||||
onChange={() => setCompanySetting(!companySetting)}
|
||||
/>
|
||||
<label className="bg-slate-400" htmlFor="company-toggle">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Company Culture</span>
|
||||
</label>
|
||||
</div>
|
||||
<div className="text-sm text-slate-400 italic ml-2">{companySetting ? 'On' : 'Off'}</div>
|
||||
</div>
|
||||
<div className="text-sm italic mt-3">Only show companies that are creating a positive culture</div>
|
||||
</div>
|
||||
{/* Group 3 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Salary Range</div>
|
||||
<ul className="space-y-2">
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" defaultChecked />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">$20K - $50K</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">$50K - $100K</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">> $100K</span>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label className="flex items-center">
|
||||
<input type="checkbox" className="form-checkbox" />
|
||||
<span className="text-sm text-slate-600 font-medium ml-2">Drawing / Painting</span>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Group 4 */}
|
||||
<div>
|
||||
<div className="text-sm text-slate-800 font-semibold mb-3">Immigration</div>
|
||||
<div className="flex items-center">
|
||||
<div className="form-switch">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="immigration-toggle"
|
||||
className="sr-only"
|
||||
checked={immigrationSetting}
|
||||
onChange={() => setImmigrationSetting(!immigrationSetting)}
|
||||
/>
|
||||
<label className="bg-slate-400" htmlFor="immigration-toggle">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Immigration</span>
|
||||
</label>
|
||||
</div>
|
||||
<div className="text-sm text-slate-400 italic ml-2">{immigrationSetting ? 'On' : 'Off'}</div>
|
||||
</div>
|
||||
<div className="text-sm italic mt-3">Only show companies that can sponsor a visa</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default JobSidebar;
|
||||
@@ -1,257 +0,0 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import Orders from './OrdersTableItem';
|
||||
|
||||
import Image01 from '../../images/icon-01.svg';
|
||||
import Image02 from '../../images/icon-02.svg';
|
||||
import Image03 from '../../images/icon-03.svg';
|
||||
|
||||
function OrdersTable({
|
||||
selectedItems
|
||||
}) {
|
||||
|
||||
const orders = [
|
||||
{
|
||||
id: '0',
|
||||
image: Image01,
|
||||
order: '#123567',
|
||||
date: '22/01/2021',
|
||||
customer: 'Patricia Semklo',
|
||||
total: '$129.00',
|
||||
status: 'Refunded',
|
||||
items: '1',
|
||||
location: '🇨🇳 Shanghai, CN',
|
||||
type: 'Subscription',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '1',
|
||||
image: Image01,
|
||||
order: '#779912',
|
||||
date: '22/01/2021',
|
||||
customer: 'Dominik Lamakani',
|
||||
total: '$89.00',
|
||||
status: 'Approved',
|
||||
items: '2',
|
||||
location: '🇲🇽 Mexico City, MX',
|
||||
type: 'Subscription',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '2',
|
||||
image: Image02,
|
||||
order: '#889924',
|
||||
date: '22/01/2021',
|
||||
customer: 'Ivan Mesaros',
|
||||
total: '$89.00',
|
||||
status: 'Approved',
|
||||
items: '2',
|
||||
location: '🇮🇹 Milan, IT',
|
||||
type: 'One-time',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '3',
|
||||
image: Image01,
|
||||
order: '#897726',
|
||||
date: '22/01/2021',
|
||||
customer: 'Maria Martinez',
|
||||
total: '$59.00',
|
||||
status: 'Pending',
|
||||
items: '1',
|
||||
location: '🇮🇹 Bologna, IT',
|
||||
type: 'One-time',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '4',
|
||||
image: Image03,
|
||||
order: '#123567',
|
||||
date: '22/01/2021',
|
||||
customer: 'Vicky Jung',
|
||||
total: '$39.00',
|
||||
status: 'Refunded',
|
||||
items: '1',
|
||||
location: '🇬🇧 London, UK',
|
||||
type: 'Subscription',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '5',
|
||||
image: Image01,
|
||||
order: '#896644',
|
||||
date: '21/01/2021',
|
||||
customer: 'Tisho Yanchev',
|
||||
total: '$59.00',
|
||||
status: 'Approved',
|
||||
items: '1',
|
||||
location: '🇫🇷 Paris, FR',
|
||||
type: 'One-time',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '6',
|
||||
image: Image03,
|
||||
order: '#136988',
|
||||
date: '21/01/2021',
|
||||
customer: 'James Cameron',
|
||||
total: '$89.00',
|
||||
status: 'Approved',
|
||||
items: '1',
|
||||
location: '🇫🇷 Marseille, FR',
|
||||
type: 'Subscription',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '7',
|
||||
image: Image03,
|
||||
order: '#442206',
|
||||
date: '21/01/2021',
|
||||
customer: 'Haruki Masuno',
|
||||
total: '$129.00',
|
||||
status: 'Approved',
|
||||
items: '2',
|
||||
location: '🇺🇸 New York, USA',
|
||||
type: 'Subscription',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '8',
|
||||
image: Image02,
|
||||
order: '#764321',
|
||||
date: '21/01/2021',
|
||||
customer: 'Joe Huang',
|
||||
total: '$89.00',
|
||||
status: 'Pending',
|
||||
items: '2',
|
||||
location: '🇨🇳 Shanghai, CN',
|
||||
type: 'One-time',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
},
|
||||
{
|
||||
id: '9',
|
||||
image: Image01,
|
||||
order: '#908764',
|
||||
date: '21/01/2021',
|
||||
customer: 'Carolyn McNeail',
|
||||
total: '$59.00',
|
||||
status: 'Refunded',
|
||||
items: '1',
|
||||
location: '🇬🇧 Sheffield, UK',
|
||||
type: 'Subscription',
|
||||
description: 'Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
|
||||
}
|
||||
];
|
||||
|
||||
const [selectAll, setSelectAll] = useState(false);
|
||||
const [isCheck, setIsCheck] = useState([]);
|
||||
const [list, setList] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
setList(orders);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const handleSelectAll = () => {
|
||||
setSelectAll(!selectAll);
|
||||
setIsCheck(list.map(li => li.id));
|
||||
if (selectAll) {
|
||||
setIsCheck([]);
|
||||
}
|
||||
};
|
||||
|
||||
const handleClick = e => {
|
||||
const { id, checked } = e.target;
|
||||
setSelectAll(false);
|
||||
setIsCheck([...isCheck, id]);
|
||||
if (!checked) {
|
||||
setIsCheck(isCheck.filter(item => item !== id));
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
selectedItems(isCheck);
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [isCheck]);
|
||||
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 relative">
|
||||
<header className="px-5 py-4">
|
||||
<h2 className="font-semibold text-slate-800">All Orders <span className="text-slate-400 font-medium">442</span></h2>
|
||||
</header>
|
||||
<div>
|
||||
|
||||
{/* Table */}
|
||||
<div className="overflow-x-auto">
|
||||
<table className="table-auto w-full divide-y divide-slate-200">
|
||||
{/* Table header */}
|
||||
<thead className="text-xs uppercase text-slate-500 bg-slate-50 border-t border-slate-200">
|
||||
<tr>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select all</span>
|
||||
<input className="form-checkbox" type="checkbox" checked={selectAll} onChange={handleSelectAll} />
|
||||
</label>
|
||||
</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Order</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Date</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Customer</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Total</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Status</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold">Items</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Location</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-semibold text-left">Payment type</div>
|
||||
</th>
|
||||
<th className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<span className="sr-only">Menu</span>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/* Table body */}
|
||||
{
|
||||
list.map(order => {
|
||||
return (
|
||||
<Orders
|
||||
key={order.id}
|
||||
id={order.id}
|
||||
image={order.image}
|
||||
order={order.order}
|
||||
date={order.date}
|
||||
customer={order.customer}
|
||||
total={order.total}
|
||||
status={order.status}
|
||||
items={order.items}
|
||||
location={order.location}
|
||||
type={order.type}
|
||||
description={order.description}
|
||||
handleClick={handleClick}
|
||||
isChecked={isCheck.includes(order.id)}
|
||||
/>
|
||||
)
|
||||
})
|
||||
}
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default OrdersTable;
|
||||
@@ -1,114 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function OrdersTableItem(props) {
|
||||
|
||||
const [descriptionOpen, setDescriptionOpen] = useState(false);
|
||||
|
||||
const statusColor = (status) => {
|
||||
switch (status) {
|
||||
case 'Approved':
|
||||
return 'bg-emerald-100 text-emerald-600';
|
||||
case 'Refunded':
|
||||
return 'bg-amber-100 text-amber-600';
|
||||
default:
|
||||
return 'bg-slate-100 text-slate-500';
|
||||
}
|
||||
};
|
||||
|
||||
const typeIcon = (type) => {
|
||||
switch (type) {
|
||||
case 'Subscription':
|
||||
return (
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M4.3 4.5c1.9-1.9 5.1-1.9 7 0 .7.7 1.2 1.7 1.4 2.7l2-.3c-.2-1.5-.9-2.8-1.9-3.8C10.1.4 5.7.4 2.9 3.1L.7.9 0 7.3l6.4-.7-2.1-2.1zM15.6 8.7l-6.4.7 2.1 2.1c-1.9 1.9-5.1 1.9-7 0-.7-.7-1.2-1.7-1.4-2.7l-2 .3c.2 1.5.9 2.8 1.9 3.8 1.4 1.4 3.1 2 4.9 2 1.8 0 3.6-.7 4.9-2l2.2 2.2.8-6.4z" />
|
||||
</svg>
|
||||
);
|
||||
default:
|
||||
return (
|
||||
<svg className="w-4 h-4 fill-current text-slate-400 shrink-0 mr-2" viewBox="0 0 16 16">
|
||||
<path d="M11.4 0L10 1.4l2 2H8.4c-2.8 0-5 2.2-5 5V12l-2-2L0 11.4l3.7 3.7c.2.2.4.3.7.3.3 0 .5-.1.7-.3l3.7-3.7L7.4 10l-2 2V8.4c0-1.7 1.3-3 3-3H12l-2 2 1.4 1.4 3.7-3.7c.4-.4.4-1 0-1.4L11.4 0z" />
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<tbody className="text-sm">
|
||||
{/* Row */}
|
||||
<tr>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<label className="inline-flex">
|
||||
<span className="sr-only">Select</span>
|
||||
<input id={props.id} className="form-checkbox" type="checkbox" onChange={props.handleClick} checked={props.isChecked} />
|
||||
</label>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="flex items-center text-slate-800">
|
||||
<div className="w-10 h-10 shrink-0 flex items-center justify-center bg-slate-100 rounded-full mr-2 sm:mr-3">
|
||||
<img className="ml-1" src={props.image} width="20" height="20" alt={props.order} />
|
||||
</div>
|
||||
<div className="font-medium text-sky-500">{props.order}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div>{props.date}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="font-medium text-slate-800">{props.customer}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left font-medium text-emerald-500">{props.total}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className={`inline-flex font-medium rounded-full text-center px-2.5 py-0.5 ${statusColor(props.status)}`}>{props.status}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-center">{props.items}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="text-left">{props.location}</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div className="flex items-center">
|
||||
{typeIcon(props.type)}
|
||||
<div>{props.type}</div>
|
||||
</div>
|
||||
</td>
|
||||
<td className="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap w-px">
|
||||
<div className="flex items-center">
|
||||
<button
|
||||
className={`text-slate-400 hover:text-slate-500 transform ${descriptionOpen && 'rotate-180'}`}
|
||||
aria-expanded={descriptionOpen}
|
||||
onClick={() => setDescriptionOpen(!descriptionOpen)}
|
||||
aria-controls={`description-${props.id}`}
|
||||
>
|
||||
<span className="sr-only">Menu</span>
|
||||
<svg className="w-8 h-8 fill-current" viewBox="0 0 32 32">
|
||||
<path d="M16 20l-5.4-5.4 1.4-1.4 4 4 4-4 1.4 1.4z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/*
|
||||
Example of content revealing when clicking the button on the right side:
|
||||
Note that you must set a "colSpan" attribute on the <td> element,
|
||||
and it should match the number of columns in your table
|
||||
*/}
|
||||
<tr id={`description-${props.id}`} role="region" className={`${!descriptionOpen && 'hidden'}`}>
|
||||
<td colSpan="10" className="px-2 first:pl-5 last:pr-5 py-3">
|
||||
<div className="flex items-center bg-slate-50 p-3 -mt-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current text-slate-400 mr-2">
|
||||
<path d="M1 16h3c.3 0 .5-.1.7-.3l11-11c.4-.4.4-1 0-1.4l-3-3c-.4-.4-1-.4-1.4 0l-11 11c-.2.2-.3.4-.3.7v3c0 .6.4 1 1 1zm1-3.6l10-10L13.6 4l-10 10H2v-1.6z" />
|
||||
</svg>
|
||||
<div className="italic">{props.description}</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
);
|
||||
}
|
||||
|
||||
export default OrdersTableItem;
|
||||
@@ -1,91 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
import Image from '../../images/user-avatar-80.png';
|
||||
|
||||
function AccountPanel() {
|
||||
|
||||
const [sync, setSync] = useState(false);
|
||||
|
||||
return (
|
||||
<div className="grow">
|
||||
{/* Panel body */}
|
||||
<div className="p-6 space-y-6">
|
||||
<h2 className="text-2xl text-slate-800 font-bold mb-5">My Account</h2>
|
||||
{/* Picture */}
|
||||
<section>
|
||||
<div className="flex items-center">
|
||||
<div className="mr-4">
|
||||
<img className="w-20 h-20 rounded-full" src={Image} width="80" height="80" alt="User upload" />
|
||||
</div>
|
||||
<button className="btn-sm bg-indigo-500 hover:bg-indigo-600 text-white">Change</button>
|
||||
</div>
|
||||
</section>
|
||||
{/* Business Profile */}
|
||||
<section>
|
||||
<h2 className="text-xl leading-snug text-slate-800 font-bold mb-1">Business Profile</h2>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit.</div>
|
||||
<div className="sm:flex sm:items-center space-y-4 sm:space-y-0 sm:space-x-4 mt-5">
|
||||
<div className="sm:w-1/3">
|
||||
<label className="block text-sm font-medium mb-1" htmlFor="name">Business Name</label>
|
||||
<input id="name" className="form-input w-full" type="text" />
|
||||
</div>
|
||||
<div className="sm:w-1/3">
|
||||
<label className="block text-sm font-medium mb-1" htmlFor="business-id">Business ID</label>
|
||||
<input id="business-id" className="form-input w-full" type="text" />
|
||||
</div>
|
||||
<div className="sm:w-1/3">
|
||||
<label className="block text-sm font-medium mb-1" htmlFor="location">Location</label>
|
||||
<input id="location" className="form-input w-full" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{/* Email */}
|
||||
<section>
|
||||
<h2 className="text-xl leading-snug text-slate-800 font-bold mb-1">Email</h2>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non proident sunt in culpa qui officia.</div>
|
||||
<div className="flex flex-wrap mt-5">
|
||||
<div className="mr-2">
|
||||
<label className="sr-only" htmlFor="email">Business email</label>
|
||||
<input id="email" className="form-input" type="email" />
|
||||
</div>
|
||||
<button className="btn border-slate-200 hover:border-slate-300 shadow-sm text-indigo-500">Change</button>
|
||||
</div>
|
||||
</section>
|
||||
{/* Password */}
|
||||
<section>
|
||||
<h2 className="text-xl leading-snug text-slate-800 font-bold mb-1">Password</h2>
|
||||
<div className="text-sm">You can set a permanent password if you don't want to use temporary login codes.</div>
|
||||
<div className="mt-5">
|
||||
<button className="btn border-slate-200 shadow-sm text-indigo-500">Set New Password</button>
|
||||
</div>
|
||||
</section>
|
||||
{/* Smart Sync */}
|
||||
<section>
|
||||
<h2 className="text-xl leading-snug text-slate-800 font-bold mb-1">Smart Sync update for Mac</h2>
|
||||
<div className="text-sm">With this update, online-only files will no longer appear to take up hard drive space.</div>
|
||||
<div className="flex items-center mt-5">
|
||||
<div className="form-switch">
|
||||
<input type="checkbox" id="toggle" className="sr-only" checked={sync} onChange={() => setSync(!sync)} />
|
||||
<label className="bg-slate-400" htmlFor="toggle">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Enable smart sync</span>
|
||||
</label>
|
||||
</div>
|
||||
<div className="text-sm text-slate-400 italic ml-2">{sync ? 'On' : 'Off'}</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
{/* Panel footer */}
|
||||
<footer>
|
||||
<div className="flex flex-col px-6 py-5 border-t border-slate-200">
|
||||
<div className="flex self-end">
|
||||
<button className="btn border-slate-200 hover:border-slate-300 text-slate-600">Cancel</button>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white ml-3">Save Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AccountPanel;
|
||||
@@ -1,374 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function AppsPanel() {
|
||||
return (
|
||||
<div className="grow">
|
||||
|
||||
{/* Panel body */}
|
||||
<div className="p-6">
|
||||
<h2 className="text-2xl text-slate-800 font-bold mb-5">Connected Apps</h2>
|
||||
|
||||
{/* General */}
|
||||
<div className="mb-6">
|
||||
{/* Filters */}
|
||||
<div className="mb-4 border-b border-slate-200">
|
||||
<ul className="text-sm font-medium flex flex-nowrap -mx-4 sm:-mx-6 lg:-mx-8 overflow-x-scroll no-scrollbar">
|
||||
<li className="pb-3 mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="text-indigo-500 whitespace-nowrap" href="#0">View All</a>
|
||||
</li>
|
||||
<li className="pb-3 mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Utility</a>
|
||||
</li>
|
||||
<li className="pb-3 mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Marketing</a>
|
||||
</li>
|
||||
<li className="pb-3 mr-6 last:mr-0 first:pl-4 sm:first:pl-6 lg:first:pl-8 last:pr-4 sm:last:pr-6 lg:last:pr-8">
|
||||
<a className="text-slate-500 hover:text-slate-600 whitespace-nowrap" href="#0">Development</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* Connected Apps cards */}
|
||||
<section className="pb-6 border-b border-slate-200">
|
||||
<div className="grid grid-cols-12 gap-6">
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full xl:col-span-6 2xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 rounded-full shrink-0 bg-gradient-to-tr from-indigo-500 to-indigo-300 mr-3">
|
||||
<svg className="w-10 h-10 fill-current text-white" viewBox="0 0 40 40">
|
||||
<path d="M26.946 18.005a.583.583 0 00-.53-.34h-6.252l.985-3.942a.583.583 0 00-1.008-.52l-7 8.167a.583.583 0 00.442.962h6.252l-.984 3.943a.583.583 0 001.008.52l7-8.167a.583.583 0 00.087-.623z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">MaterialStack</h3>
|
||||
</header>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet eiusmod sed do eiusmod tempor.</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-4">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="flex space-x-3">
|
||||
<div className="flex items-center text-slate-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585a2.5 2.5 0 00-3.522 3.194c-.845.63-1.87.97-2.924.971a4.979 4.979 0 01-1.113-.135 4.436 4.436 0 01-1.343 1.682 6.91 6.91 0 006.9-1.165 2.5 2.5 0 002-4.547h.002zM10.125 2.188a2.5 2.5 0 10-.4 2.014 5.027 5.027 0 012.723 3.078c.148-.018.297-.028.446-.03a4.5 4.5 0 011.7.334 7.023 7.023 0 00-4.469-5.396zM4.663 10.5a2.49 2.49 0 00-1.932-1.234 4.624 4.624 0 01-.037-.516 4.97 4.97 0 011.348-3.391 4.456 4.456 0 01-.788-2.016A6.989 6.989 0 00.694 8.75c.004.391.04.781.11 1.166a2.5 2.5 0 103.86.584z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4K+</div>
|
||||
</div>
|
||||
<div className="flex items-center text-amber-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">4.7</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Connected</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full xl:col-span-6 2xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 rounded-full shrink-0 bg-gradient-to-tr from-emerald-500 to-emerald-300 mr-3">
|
||||
<svg className="w-10 h-10 fill-current text-white" viewBox="0 0 40 40">
|
||||
<path d="M26.946 18.005a.583.583 0 00-.53-.34h-6.252l.985-3.942a.583.583 0 00-1.008-.52l-7 8.167a.583.583 0 00.442.962h6.252l-.984 3.943a.583.583 0 001.008.52l7-8.167a.583.583 0 00.087-.623z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">MaterialStack</h3>
|
||||
</header>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet eiusmod sed do eiusmod tempor.</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-4">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="flex space-x-3">
|
||||
<div className="flex items-center text-slate-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585a2.5 2.5 0 00-3.522 3.194c-.845.63-1.87.97-2.924.971a4.979 4.979 0 01-1.113-.135 4.436 4.436 0 01-1.343 1.682 6.91 6.91 0 006.9-1.165 2.5 2.5 0 002-4.547h.002zM10.125 2.188a2.5 2.5 0 10-.4 2.014 5.027 5.027 0 012.723 3.078c.148-.018.297-.028.446-.03a4.5 4.5 0 011.7.334 7.023 7.023 0 00-4.469-5.396zM4.663 10.5a2.49 2.49 0 00-1.932-1.234 4.624 4.624 0 01-.037-.516 4.97 4.97 0 011.348-3.391 4.456 4.456 0 01-.788-2.016A6.989 6.989 0 00.694 8.75c.004.391.04.781.11 1.166a2.5 2.5 0 103.86.584z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4K+</div>
|
||||
</div>
|
||||
<div className="flex items-center text-amber-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">4.7</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Connected</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full xl:col-span-6 2xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 rounded-full shrink-0 bg-gradient-to-tr from-sky-500 to-sky-300 mr-3">
|
||||
<svg className="w-10 h-10 fill-current text-white" viewBox="0 0 40 40">
|
||||
<path d="M26.946 18.005a.583.583 0 00-.53-.34h-6.252l.985-3.942a.583.583 0 00-1.008-.52l-7 8.167a.583.583 0 00.442.962h6.252l-.984 3.943a.583.583 0 001.008.52l7-8.167a.583.583 0 00.087-.623z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">MaterialStack</h3>
|
||||
</header>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet eiusmod sed do eiusmod tempor.</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-4">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="flex space-x-3">
|
||||
<div className="flex items-center text-slate-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585a2.5 2.5 0 00-3.522 3.194c-.845.63-1.87.97-2.924.971a4.979 4.979 0 01-1.113-.135 4.436 4.436 0 01-1.343 1.682 6.91 6.91 0 006.9-1.165 2.5 2.5 0 002-4.547h.002zM10.125 2.188a2.5 2.5 0 10-.4 2.014 5.027 5.027 0 012.723 3.078c.148-.018.297-.028.446-.03a4.5 4.5 0 011.7.334 7.023 7.023 0 00-4.469-5.396zM4.663 10.5a2.49 2.49 0 00-1.932-1.234 4.624 4.624 0 01-.037-.516 4.97 4.97 0 011.348-3.391 4.456 4.456 0 01-.788-2.016A6.989 6.989 0 00.694 8.75c.004.391.04.781.11 1.166a2.5 2.5 0 103.86.584z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4K+</div>
|
||||
</div>
|
||||
<div className="flex items-center text-amber-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">4.7</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Connected</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 4 */}
|
||||
<div className="col-span-full xl:col-span-6 2xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 rounded-full shrink-0 bg-gradient-to-tr from-rose-500 to-rose-300 mr-3">
|
||||
<svg className="w-10 h-10 fill-current text-white" viewBox="0 0 40 40">
|
||||
<path d="M26.946 18.005a.583.583 0 00-.53-.34h-6.252l.985-3.942a.583.583 0 00-1.008-.52l-7 8.167a.583.583 0 00.442.962h6.252l-.984 3.943a.583.583 0 001.008.52l7-8.167a.583.583 0 00.087-.623z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">MaterialStack</h3>
|
||||
</header>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet eiusmod sed do eiusmod tempor.</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-4">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="flex space-x-3">
|
||||
<div className="flex items-center text-slate-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585a2.5 2.5 0 00-3.522 3.194c-.845.63-1.87.97-2.924.971a4.979 4.979 0 01-1.113-.135 4.436 4.436 0 01-1.343 1.682 6.91 6.91 0 006.9-1.165 2.5 2.5 0 002-4.547h.002zM10.125 2.188a2.5 2.5 0 10-.4 2.014 5.027 5.027 0 012.723 3.078c.148-.018.297-.028.446-.03a4.5 4.5 0 011.7.334 7.023 7.023 0 00-4.469-5.396zM4.663 10.5a2.49 2.49 0 00-1.932-1.234 4.624 4.624 0 01-.037-.516 4.97 4.97 0 011.348-3.391 4.456 4.456 0 01-.788-2.016A6.989 6.989 0 00.694 8.75c.004.391.04.781.11 1.166a2.5 2.5 0 103.86.584z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4K+</div>
|
||||
</div>
|
||||
<div className="flex items-center text-amber-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">4.7</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Connected</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 5 */}
|
||||
<div className="col-span-full xl:col-span-6 2xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 rounded-full shrink-0 bg-gradient-to-tr from-amber-500 to-amber-300 mr-3">
|
||||
<svg className="w-10 h-10 fill-current text-white" viewBox="0 0 40 40">
|
||||
<path d="M26.946 18.005a.583.583 0 00-.53-.34h-6.252l.985-3.942a.583.583 0 00-1.008-.52l-7 8.167a.583.583 0 00.442.962h6.252l-.984 3.943a.583.583 0 001.008.52l7-8.167a.583.583 0 00.087-.623z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">MaterialStack</h3>
|
||||
</header>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet eiusmod sed do eiusmod tempor.</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-4">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="flex space-x-3">
|
||||
<div className="flex items-center text-slate-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585a2.5 2.5 0 00-3.522 3.194c-.845.63-1.87.97-2.924.971a4.979 4.979 0 01-1.113-.135 4.436 4.436 0 01-1.343 1.682 6.91 6.91 0 006.9-1.165 2.5 2.5 0 002-4.547h.002zM10.125 2.188a2.5 2.5 0 10-.4 2.014 5.027 5.027 0 012.723 3.078c.148-.018.297-.028.446-.03a4.5 4.5 0 011.7.334 7.023 7.023 0 00-4.469-5.396zM4.663 10.5a2.49 2.49 0 00-1.932-1.234 4.624 4.624 0 01-.037-.516 4.97 4.97 0 011.348-3.391 4.456 4.456 0 01-.788-2.016A6.989 6.989 0 00.694 8.75c.004.391.04.781.11 1.166a2.5 2.5 0 103.86.584z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4K+</div>
|
||||
</div>
|
||||
<div className="flex items-center text-amber-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">4.7</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Connected</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 6 */}
|
||||
<div className="col-span-full xl:col-span-6 2xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header className="flex items-center mb-4">
|
||||
<div className="w-10 h-10 rounded-full shrink-0 bg-gradient-to-tr from-slate-500 to-slate-300 mr-3">
|
||||
<svg className="w-10 h-10 fill-current text-white" viewBox="0 0 40 40">
|
||||
<path d="M26.946 18.005a.583.583 0 00-.53-.34h-6.252l.985-3.942a.583.583 0 00-1.008-.52l-7 8.167a.583.583 0 00.442.962h6.252l-.984 3.943a.583.583 0 001.008.52l7-8.167a.583.583 0 00.087-.623z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">MaterialStack</h3>
|
||||
</header>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet eiusmod sed do eiusmod tempor.</div>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-4">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="flex space-x-3">
|
||||
<div className="flex items-center text-slate-400">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.14 9.585a2.5 2.5 0 00-3.522 3.194c-.845.63-1.87.97-2.924.971a4.979 4.979 0 01-1.113-.135 4.436 4.436 0 01-1.343 1.682 6.91 6.91 0 006.9-1.165 2.5 2.5 0 002-4.547h.002zM10.125 2.188a2.5 2.5 0 10-.4 2.014 5.027 5.027 0 012.723 3.078c.148-.018.297-.028.446-.03a4.5 4.5 0 011.7.334 7.023 7.023 0 00-4.469-5.396zM4.663 10.5a2.49 2.49 0 00-1.932-1.234 4.624 4.624 0 01-.037-.516 4.97 4.97 0 011.348-3.391 4.456 4.456 0 01-.788-2.016A6.989 6.989 0 00.694 8.75c.004.391.04.781.11 1.166a2.5 2.5 0 103.86.584z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4K+</div>
|
||||
</div>
|
||||
<div className="flex items-center text-amber-500">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M10 5.934L8 0 6 5.934H0l4.89 3.954L2.968 16 8 12.223 13.032 16 11.11 9.888 16 5.934z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">4.7</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm flex items-center">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Connected</span>
|
||||
</button>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Trending Categories cards */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mt-6 mb-5">Trending Categories</h3>
|
||||
<div className="grid grid-cols-12 gap-6">
|
||||
{/* Card 1 */}
|
||||
<div className="col-span-full xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Programming</h3>
|
||||
</header>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-2">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="text-sm text-slate-500 italic">400+ Apps</div>
|
||||
{/* Right side */}
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 2 */}
|
||||
<div className="col-span-full xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Digital Marketing</h3>
|
||||
</header>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-2">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="text-sm text-slate-500 italic">320+ Apps</div>
|
||||
{/* Right side */}
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
{/* Card 3 */}
|
||||
<div className="col-span-full xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
{/* Card content */}
|
||||
<div className="flex flex-col h-full p-5">
|
||||
<div className="grow">
|
||||
<header>
|
||||
<h3 className="text-lg text-slate-800 font-semibold mb-1">Music & Audio</h3>
|
||||
</header>
|
||||
</div>
|
||||
{/* Card footer */}
|
||||
<footer className="mt-2">
|
||||
<div className="flex flex-wrap justify-between items-center">
|
||||
{/* Left side */}
|
||||
<div className="text-sm text-slate-500 italic">270+ Apps</div>
|
||||
{/* Right side */}
|
||||
<a className="text-sm font-medium text-indigo-500 hover:text-indigo-600" href="#0">Explore -></a>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default AppsPanel;
|
||||
@@ -1,147 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function BillingPanel() {
|
||||
return (
|
||||
<div className="grow">
|
||||
|
||||
{/* Panel body */}
|
||||
<div className="p-6 space-y-6">
|
||||
<div>
|
||||
<h2 className="text-2xl text-slate-800 font-bold mb-4">Billing & Invoices</h2>
|
||||
<div className="text-sm">This workspace’s Basic Plan is set to <strong className="font-medium">$34</strong> per month and will renew on <strong className="font-medium">July 9, 2021</strong>.</div>
|
||||
</div>
|
||||
|
||||
{/* Billing Information */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mb-1">Billing Information</h3>
|
||||
<ul>
|
||||
<li className="md:flex md:justify-between md:items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div className="text-sm text-slate-800 font-medium">Payment Method</div>
|
||||
{/* Right */}
|
||||
<div className="text-sm text-slate-800ml-4">
|
||||
<span className="mr-3">Mastercard ending 9282</span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">Edit</a>
|
||||
</div>
|
||||
</li>
|
||||
<li className="md:flex md:justify-between md:items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div className="text-sm text-slate-800 font-medium">Billing Interval</div>
|
||||
{/* Right */}
|
||||
<div className="text-sm text-slate-800ml-4">
|
||||
<span className="mr-3">Annually</span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">Edit</a>
|
||||
</div>
|
||||
</li>
|
||||
<li className="md:flex md:justify-between md:items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div className="text-sm text-slate-800 font-medium">VAT/GST Number</div>
|
||||
{/* Right */}
|
||||
<div className="text-sm text-slate-800ml-4">
|
||||
<span className="mr-3">UK849700927</span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">Edit</a>
|
||||
</div>
|
||||
</li>
|
||||
<li className="md:flex md:justify-between md:items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div className="text-sm text-slate-800 font-medium">Your Address</div>
|
||||
{/* Right */}
|
||||
<div className="text-sm text-slate-800ml-4">
|
||||
<span className="mr-3">34 Savoy Street, London, UK, 24E8X</span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">Edit</a>
|
||||
</div>
|
||||
</li>
|
||||
<li className="md:flex md:justify-between md:items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div className="text-sm text-slate-800 font-medium">Billing Address</div>
|
||||
{/* Right */}
|
||||
<div className="text-sm text-slate-800ml-4">
|
||||
<span className="mr-3">hello@cruip.com</span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">Edit</a>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Invoices */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mb-1">Invoices</h3>
|
||||
{/* Table */}
|
||||
<table className="table-auto w-full">
|
||||
{/* Table header */}
|
||||
<thead className="text-xs uppercase text-slate-400">
|
||||
<tr className="flex flex-wrap md:table-row md:flex-no-wrap">
|
||||
<th className="w-full block md:w-auto md:table-cell py-2">
|
||||
<div className="font-semibold text-left">Year</div>
|
||||
</th>
|
||||
<th className="w-full hidden md:w-auto md:table-cell py-2">
|
||||
<div className="font-semibold text-left">Plan</div>
|
||||
</th>
|
||||
<th className="w-full hidden md:w-auto md:table-cell py-2">
|
||||
<div className="font-semibold text-left">Amount</div>
|
||||
</th>
|
||||
<th className="w-full hidden md:w-auto md:table-cell py-2">
|
||||
<div className="font-semibold text-right"></div>
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
{/* Table body */}
|
||||
<tbody className="text-sm">
|
||||
{/* Row */}
|
||||
<tr className="flex flex-wrap md:table-row md:flex-no-wrap border-b border-slate-200 py-2 md:py-0">
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-left font-medium text-slate-800">2021</div>
|
||||
</td>
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-left">Basic Plan - Annualy</div>
|
||||
</td>
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-left font-medium">$349.00</div>
|
||||
</td>
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-right flex items-center md:justify-end">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">HTML</a>
|
||||
<span className="block w-px h-4 bg-slate-200 mx-2" aria-hidden="true"></span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">PDF</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
{/* Row */}
|
||||
<tr className="flex flex-wrap md:table-row md:flex-no-wrap border-b border-slate-200 py-2 md:py-0">
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-left font-medium text-slate-800">2020</div>
|
||||
</td>
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-left">Basic Plan - Annualy</div>
|
||||
</td>
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-left font-medium">$349.00</div>
|
||||
</td>
|
||||
<td className="w-full block md:w-auto md:table-cell py-0.5 md:py-2">
|
||||
<div className="text-right flex items-center md:justify-end">
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">HTML</a>
|
||||
<span className="block w-px h-4 bg-slate-200 mx-2" aria-hidden="true"></span>
|
||||
<a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">PDF</a>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
{/* Panel footer */}
|
||||
<footer>
|
||||
<div className="flex flex-col px-6 py-5 border-t border-slate-200">
|
||||
<div className="flex self-end">
|
||||
<button className="btn border-slate-200 hover:border-slate-300 text-slate-600">Cancel</button>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white ml-3">Save Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default BillingPanel;
|
||||
@@ -1,78 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function FeedbackPanel() {
|
||||
return (
|
||||
<div className="grow">
|
||||
|
||||
{/* Panel body */}
|
||||
<div className="p-6 space-y-6">
|
||||
<div>
|
||||
<h2 className="text-2xl text-slate-800 font-bold mb-4">Give Feedback</h2>
|
||||
<div className="text-sm">Our product depends on customer feedback to improve the overall experience!</div>
|
||||
</div>
|
||||
|
||||
{/* Rate */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mb-6">How likely would you recommend us to a friend or colleague?</h3>
|
||||
<div className="w-full max-w-xl">
|
||||
<div className="relative">
|
||||
<div className="absolute left-0 top-1/2 -mt-px w-full h-0.5 bg-slate-200" aria-hidden="true"></div>
|
||||
<ul className="relative flex justify-between w-full">
|
||||
<li className="flex">
|
||||
<button className="w-3 h-3 rounded-full bg-white border-2 border-slate-400">
|
||||
<span className="sr-only">1</span>
|
||||
</button>
|
||||
</li>
|
||||
<li className="flex">
|
||||
<button className="w-3 h-3 rounded-full bg-white border-2 border-slate-400">
|
||||
<span className="sr-only">2</span>
|
||||
</button>
|
||||
</li>
|
||||
<li className="flex">
|
||||
<button className="w-3 h-3 rounded-full bg-indigo-500 border-2 border-indigo-500">
|
||||
<span className="sr-only">3</span>
|
||||
</button>
|
||||
</li>
|
||||
<li className="flex">
|
||||
<button className="w-3 h-3 rounded-full bg-white border-2 border-slate-400">
|
||||
<span className="sr-only">4</span>
|
||||
</button>
|
||||
</li>
|
||||
<li className="flex">
|
||||
<button className="w-3 h-3 rounded-full bg-white border-2 border-slate-400">
|
||||
<span className="sr-only">5</span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="w-full flex justify-between text-sm text-slate-500 italic mt-3">
|
||||
<div>Not at all</div>
|
||||
<div>Extremely likely</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Tell us in words */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mb-5">Tell us in words</h3>
|
||||
{/* Form */}
|
||||
<label className="sr-only" htmlFor="feedback">Leave a feedback</label>
|
||||
<textarea id="feedback" className="form-textarea w-full focus:border-slate-300" rows="4" placeholder="I really enjoy…"></textarea>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
{/* Panel footer */}
|
||||
<footer>
|
||||
<div className="flex flex-col px-6 py-5 border-t border-slate-200">
|
||||
<div className="flex self-end">
|
||||
<button className="btn border-slate-200 hover:border-slate-300 text-slate-600">Cancel</button>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white ml-3">Save Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default FeedbackPanel;
|
||||
@@ -1,133 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function NotificationsPanel() {
|
||||
|
||||
const [comments, setComments] = useState(true);
|
||||
const [messages, setMessages] = useState(true);
|
||||
const [mentions, setMentions] = useState(false);
|
||||
|
||||
return (
|
||||
<div className="grow">
|
||||
|
||||
{/* Panel body */}
|
||||
<div className="p-6 space-y-6">
|
||||
<h2 className="text-2xl text-slate-800 font-bold mb-5">My Notifications</h2>
|
||||
|
||||
{/* General */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mb-1">General</h3>
|
||||
<ul>
|
||||
<li className="flex justify-between items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div>
|
||||
<div className="text-slate-800 font-semibold">Comments and replies</div>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit.</div>
|
||||
</div>
|
||||
{/* Right */}
|
||||
<div className="flex items-center ml-4">
|
||||
<div className="text-sm text-slate-400 italic mr-2">{comments ? 'On' : 'Off'}</div>
|
||||
<div className="form-switch">
|
||||
<input type="checkbox" id="comments" className="sr-only" checked={comments} onChange={() => setComments(!comments)} />
|
||||
<label className="bg-slate-400" htmlFor="comments">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Enable smart sync</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li className="flex justify-between items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div>
|
||||
<div className="text-slate-800 font-semibold">Messages</div>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit.</div>
|
||||
</div>
|
||||
{/* Right */}
|
||||
<div className="flex items-center ml-4">
|
||||
<div className="text-sm text-slate-400 italic mr-2">{messages ? 'On' : 'Off'}</div>
|
||||
<div className="form-switch">
|
||||
<input type="checkbox" id="messages" className="sr-only" checked={messages} onChange={() => setMessages(!messages)} />
|
||||
<label className="bg-slate-400" htmlFor="messages">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Enable smart sync</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<li className="flex justify-between items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div>
|
||||
<div className="text-slate-800 font-semibold">Mentions</div>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non in culpa qui officia deserunt mollit.</div>
|
||||
</div>
|
||||
{/* Right */}
|
||||
<div className="flex items-center ml-4">
|
||||
<div className="text-sm text-slate-400 italic mr-2">{mentions ? 'On' : 'Off'}</div>
|
||||
<div className="form-switch">
|
||||
<input type="checkbox" id="mentions" className="sr-only" checked={mentions} onChange={() => setMentions(!mentions)} />
|
||||
<label className="bg-slate-400" htmlFor="mentions">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Enable smart sync</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{/* Shares */}
|
||||
<section>
|
||||
<h3 className="text-xl leading-snug text-slate-800 font-bold mb-1">Shares</h3>
|
||||
<ul>
|
||||
<li className="flex justify-between items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div>
|
||||
<div className="text-slate-800 font-semibold">Shares of my content</div>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit.</div>
|
||||
</div>
|
||||
{/* Right */}
|
||||
<div className="flex items-center ml-4">
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm">Manage</button>
|
||||
</div>
|
||||
</li>
|
||||
<li className="flex justify-between items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div>
|
||||
<div className="text-slate-800 font-semibold">Team invites</div>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non in culpa qui officia deserunt mollit.</div>
|
||||
</div>
|
||||
{/* Right */}
|
||||
<div className="flex items-center ml-4">
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm">Manage</button>
|
||||
</div>
|
||||
</li>
|
||||
<li className="flex justify-between items-center py-3 border-b border-slate-200">
|
||||
{/* Left */}
|
||||
<div>
|
||||
<div className="text-slate-800 font-semibold">Smart connection</div>
|
||||
<div className="text-sm">Excepteur sint occaecat cupidatat non in culpa qui officia deserunt mollit.</div>
|
||||
</div>
|
||||
{/* Right */}
|
||||
<div className="flex items-center ml-4">
|
||||
<div className="text-sm text-slate-400 italic mr-2 hidden md:block">Active</div>
|
||||
<button className="btn-sm border-slate-200 hover:border-slate-300 shadow-sm text-rose-500">Disable</button>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
{/* Panel footer */}
|
||||
<footer>
|
||||
<div className="flex flex-col px-6 py-5 border-t border-slate-200">
|
||||
<div className="flex self-end">
|
||||
<button className="btn border-slate-200 hover:border-slate-300 text-slate-600">Cancel</button>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white ml-3">Save Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default NotificationsPanel;
|
||||
@@ -1,273 +0,0 @@
|
||||
import React, { useState } from 'react';
|
||||
|
||||
function PlansPanel() {
|
||||
|
||||
const [annual, setAnnual] = useState(true);
|
||||
|
||||
return (
|
||||
<div className="grow">
|
||||
|
||||
{/* Panel body */}
|
||||
<div className="p-6 space-y-6">
|
||||
|
||||
{/* Plans */}
|
||||
<section>
|
||||
<div className="mb-8">
|
||||
<h2 className="text-2xl text-slate-800 font-bold mb-4">Plans</h2>
|
||||
<div className="text-sm">This workspace’s Basic Plan is set to <strong className="font-medium">$34</strong> per month and will renew on <strong className="font-medium">July 9, 2021</strong>.</div>
|
||||
</div>
|
||||
|
||||
{/* Pricing */}
|
||||
<div>
|
||||
{/* Toggle switch */}
|
||||
<div className="flex items-center space-x-3 mb-6">
|
||||
<div className="text-sm text-slate-500 font-medium">Monthly</div>
|
||||
<div className="form-switch">
|
||||
<input type="checkbox" id="toggle" className="sr-only" checked={annual} onChange={() => setAnnual(!annual)} />
|
||||
<label className="bg-slate-400" htmlFor="toggle">
|
||||
<span className="bg-white shadow-sm" aria-hidden="true"></span>
|
||||
<span className="sr-only">Pay annually</span>
|
||||
</label>
|
||||
</div>
|
||||
<div className="text-sm text-slate-500 font-medium">Annually <span className="text-emerald-500">(-20%)</span></div>
|
||||
</div>
|
||||
{/* Pricing tabs */}
|
||||
<div className="grid grid-cols-12 gap-6">
|
||||
{/* Tab 1 */}
|
||||
<div className="relative col-span-full xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
<div className="absolute top-0 left-0 right-0 h-0.5 bg-emerald-500" aria-hidden="true"></div>
|
||||
<div className="px-5 pt-5 pb-6 border-b border-slate-200">
|
||||
<header className="flex items-center mb-2">
|
||||
<div className="w-6 h-6 rounded-full shrink-0 bg-gradient-to-tr from-emerald-500 to-emerald-300 mr-3">
|
||||
<svg className="w-6 h-6 fill-current text-white" viewBox="0 0 24 24">
|
||||
<path d="M12 17a.833.833 0 01-.833-.833 3.333 3.333 0 00-3.334-3.334.833.833 0 110-1.666 3.333 3.333 0 003.334-3.334.833.833 0 111.666 0 3.333 3.333 0 003.334 3.334.833.833 0 110 1.666 3.333 3.333 0 00-3.334 3.334c0 .46-.373.833-.833.833z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Basic</h3>
|
||||
</header>
|
||||
<div className="text-sm mb-2">Ideal for individuals that need a custom solution with custom tools.</div>
|
||||
{/* Price */}
|
||||
<div className="text-slate-800 font-bold mb-4">
|
||||
<span className="text-2xl">$</span><span className="text-3xl">{annual? '14': '19'}</span><span className="text-slate-500 font-medium text-sm">/mo</span>
|
||||
</div>
|
||||
{/* CTA */}
|
||||
<button className="btn border-slate-200 hover:border-slate-300 text-slate-600 w-full">Downgrade</button>
|
||||
</div>
|
||||
<div className="px-5 pt-4 pb-5">
|
||||
<div className="text-xs text-slate-800 font-semibold uppercase mb-4">What's included</div>
|
||||
{/* List */}
|
||||
<ul>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{/* Tab 2 */}
|
||||
<div className="relative col-span-full xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
<div className="absolute top-0 left-0 right-0 h-0.5 bg-sky-500" aria-hidden="true"></div>
|
||||
<div className="px-5 pt-5 pb-6 border-b border-slate-200">
|
||||
<header className="flex items-center mb-2">
|
||||
<div className="w-6 h-6 rounded-full shrink-0 bg-gradient-to-tr from-sky-500 to-sky-300 mr-3">
|
||||
<svg className="w-6 h-6 fill-current text-white" viewBox="0 0 24 24">
|
||||
<path d="M12 17a.833.833 0 01-.833-.833 3.333 3.333 0 00-3.334-3.334.833.833 0 110-1.666 3.333 3.333 0 003.334-3.334.833.833 0 111.666 0 3.333 3.333 0 003.334 3.334.833.833 0 110 1.666 3.333 3.333 0 00-3.334 3.334c0 .46-.373.833-.833.833z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Standard</h3>
|
||||
</header>
|
||||
<div className="text-sm mb-2">Ideal for individuals that need a custom solution with custom tools.</div>
|
||||
{/* Price */}
|
||||
<div className="text-slate-800 font-bold mb-4">
|
||||
<span className="text-2xl">$</span><span className="text-3xl">{annual? '34': '39'}</span><span className="text-slate-500 font-medium text-sm">/mo</span>
|
||||
</div>
|
||||
{/* CTA */}
|
||||
<button className="btn border-slate-200 bg-slate-100 text-slate-400 w-full cursor-not-allowed flex items-center" disabled>
|
||||
<svg className="w-3 h-3 shrink-0 fill-current mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<span>Current Plan</span>
|
||||
</button>
|
||||
</div>
|
||||
<div className="px-5 pt-4 pb-5">
|
||||
<div className="text-xs text-slate-800 font-semibold uppercase mb-4">What's included</div>
|
||||
{/* List */}
|
||||
<ul>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
{/* Tab 3 */}
|
||||
<div className="relative col-span-full xl:col-span-4 bg-white shadow-md rounded-sm border border-slate-200">
|
||||
<div className="absolute top-0 left-0 right-0 h-0.5 bg-indigo-500" aria-hidden="true"></div>
|
||||
<div className="px-5 pt-5 pb-6 border-b border-slate-200">
|
||||
<header className="flex items-center mb-2">
|
||||
<div className="w-6 h-6 rounded-full shrink-0 bg-gradient-to-tr from-indigo-500 to-indigo-300 mr-3">
|
||||
<svg className="w-6 h-6 fill-current text-white" viewBox="0 0 24 24">
|
||||
<path d="M12 17a.833.833 0 01-.833-.833 3.333 3.333 0 00-3.334-3.334.833.833 0 110-1.666 3.333 3.333 0 003.334-3.334.833.833 0 111.666 0 3.333 3.333 0 003.334 3.334.833.833 0 110 1.666 3.333 3.333 0 00-3.334 3.334c0 .46-.373.833-.833.833z" />
|
||||
</svg>
|
||||
</div>
|
||||
<h3 className="text-lg text-slate-800 font-semibold">Plus</h3>
|
||||
</header>
|
||||
<div className="text-sm mb-2">Ideal for individuals that need a custom solution with custom tools.</div>
|
||||
{/* Price */}
|
||||
<div className="text-slate-800 font-bold mb-4">
|
||||
<span className="text-2xl">$</span><span className="text-3xl">{annual? '74': '79'}</span><span className="text-slate-500 font-medium text-sm">/mo</span>
|
||||
</div>
|
||||
{/* CTA */}
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white w-full">Upgrade</button>
|
||||
</div>
|
||||
<div className="px-5 pt-4 pb-5">
|
||||
<div className="text-xs text-slate-800 font-semibold uppercase mb-4">What's included</div>
|
||||
{/* List */}
|
||||
<ul>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Lorem ipsum dolor sit amet</div>
|
||||
</li>
|
||||
<li className="flex items-center py-1">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Quis nostrud exercitation</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Contact Sales */}
|
||||
<section>
|
||||
<div className="px-5 py-3 bg-indigo-50 border border-indigo-100 rounded-sm text-center xl:text-left xl:flex xl:flex-wrap xl:justify-between xl:items-center">
|
||||
<div className="text-slate-800 font-semibold mb-2 xl:mb-0">Looking for different configurations?</div>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white">Contact Sales</button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* FAQs */}
|
||||
<section>
|
||||
<div className="my-8">
|
||||
<h2 className="text-2xl text-slate-800 font-bold">FAQs</h2>
|
||||
</div>
|
||||
<ul className="space-y-5">
|
||||
<li>
|
||||
<div className="font-semibold text-slate-800 mb-1">
|
||||
What is the difference between the three versions?
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="font-semibold text-slate-800 mb-1">
|
||||
Is there any difference between Basic and Plus licenses?
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div className="font-semibold text-slate-800 mb-1">
|
||||
Got more questions?
|
||||
</div>
|
||||
<div className="text-sm">
|
||||
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum in voluptate velit esse cillum dolore eu fugiat <a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">contact us</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
{/* Panel footer */}
|
||||
<footer>
|
||||
<div className="flex flex-col px-6 py-5 border-t border-slate-200">
|
||||
<div className="flex self-end">
|
||||
<button className="btn border-slate-200 hover:border-slate-300 text-slate-600">Cancel</button>
|
||||
<button className="btn bg-indigo-500 hover:bg-indigo-600 text-white ml-3">Save Changes</button>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default PlansPanel;
|
||||
@@ -1,75 +0,0 @@
|
||||
import React from 'react';
|
||||
import { NavLink, useLocation } from 'react-router-dom';
|
||||
|
||||
function SettingsSidebar() {
|
||||
|
||||
const location = useLocation();
|
||||
const { pathname } = location;
|
||||
|
||||
return (
|
||||
<div className="flex flex-nowrap overflow-x-scroll no-scrollbar md:block md:overflow-auto px-3 py-6 border-b md:border-b-0 md:border-r border-slate-200 min-w-60 md:space-y-3">
|
||||
{/* Group 1 */}
|
||||
<div>
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3">Business settings</div>
|
||||
<ul className="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<NavLink end to="/settings/account" className={`flex items-center px-2.5 py-2 rounded whitespace-nowrap ${pathname.includes('/settings/account') && 'bg-indigo-50'}`}>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current text-slate-400 mr-2 ${pathname.includes('/settings/account') && 'text-indigo-400'}`} viewBox="0 0 16 16">
|
||||
<path d="M12.311 9.527c-1.161-.393-1.85-.825-2.143-1.175A3.991 3.991 0 0012 5V4c0-2.206-1.794-4-4-4S4 1.794 4 4v1c0 1.406.732 2.639 1.832 3.352-.292.35-.981.782-2.142 1.175A3.942 3.942 0 001 13.26V16h14v-2.74c0-1.69-1.081-3.19-2.689-3.733zM6 4c0-1.103.897-2 2-2s2 .897 2 2v1c0 1.103-.897 2-2 2s-2-.897-2-2V4zm7 10H3v-.74c0-.831.534-1.569 1.33-1.838 1.845-.624 3-1.436 3.452-2.422h.436c.452.986 1.607 1.798 3.453 2.422A1.943 1.943 0 0113 13.26V14z" />
|
||||
</svg>
|
||||
<span className={`text-sm font-medium ${pathname.includes('/settings/account') ? 'text-indigo-500' : 'hover:text-slate-700'}`}>My Account</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<NavLink end to="/settings/notifications" className={`flex items-center px-2.5 py-2 rounded whitespace-nowrap ${pathname.includes('/settings/notifications') && 'bg-indigo-50'}`}>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current text-slate-400 mr-2 ${pathname.includes('/settings/notifications') && 'text-indigo-400'}`} viewBox="0 0 16 16">
|
||||
<path d="M14.3.3c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-8 8c-.2.2-.4.3-.7.3-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l8-8zM15 7c.6 0 1 .4 1 1 0 4.4-3.6 8-8 8s-8-3.6-8-8 3.6-8 8-8c.6 0 1 .4 1 1s-.4 1-1 1C4.7 2 2 4.7 2 8s2.7 6 6 6 6-2.7 6-6c0-.6.4-1 1-1z" />
|
||||
</svg>
|
||||
<span className={`text-sm font-medium ${pathname.includes('/settings/notifications') ? 'text-indigo-500' : 'hover:text-slate-700'}`}>My Notifications</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<NavLink end to="/settings/apps" className={`flex items-center px-2.5 py-2 rounded whitespace-nowrap ${pathname.includes('/settings/apps') && 'bg-indigo-50'}`}>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current text-slate-400 mr-2 ${pathname.includes('/settings/apps') && 'text-indigo-400'}`} viewBox="0 0 16 16">
|
||||
<path d="M3.414 2L9 7.586V16H7V8.414l-5-5V6H0V1a1 1 0 011-1h5v2H3.414zM15 0a1 1 0 011 1v5h-2V3.414l-3.172 3.172-1.414-1.414L12.586 2H10V0h5z" />
|
||||
</svg>
|
||||
<span className={`text-sm font-medium ${pathname.includes('/settings/apps') ? 'text-indigo-500' : 'hover:text-slate-700'}`}>Connected Apps</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<NavLink end to="/settings/plans" className={`flex items-center px-2.5 py-2 rounded whitespace-nowrap ${pathname.includes('/settings/plans') && 'bg-indigo-50'}`}>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current text-slate-400 mr-2 ${pathname.includes('/settings/plans') && 'text-indigo-400'}`} viewBox="0 0 16 16">
|
||||
<path d="M5 9h11v2H5V9zM0 9h3v2H0V9zm5 4h6v2H5v-2zm-5 0h3v2H0v-2zm5-8h7v2H5V5zM0 5h3v2H0V5zm5-4h11v2H5V1zM0 1h3v2H0V1z" />
|
||||
</svg>
|
||||
<span className={`text-sm font-medium ${pathname.includes('/settings/plans') ? 'text-indigo-500' : 'hover:text-slate-700'}`}>Plans</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<NavLink end to="/settings/billing" className={`flex items-center px-2.5 py-2 rounded whitespace-nowrap ${pathname.includes('/settings/billing') && 'bg-indigo-50'}`}>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current text-slate-400 mr-2 ${pathname.includes('/settings/billing') && 'text-indigo-400'}`} viewBox="0 0 16 16">
|
||||
<path d="M15 4c.6 0 1 .4 1 1v10c0 .6-.4 1-1 1H3c-1.7 0-3-1.3-3-3V3c0-1.7 1.3-3 3-3h7c.6 0 1 .4 1 1v3h4zM2 3v1h7V2H3c-.6 0-1 .4-1 1zm12 11V6H2v7c0 .6.4 1 1 1h11zm-3-5h2v2h-2V9z" />
|
||||
</svg>
|
||||
<span className={`text-sm font-medium ${pathname.includes('/settings/billing') ? 'text-indigo-500' : 'hover:text-slate-700'}`}>Billing & Invoices</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{/* Group 2 */}
|
||||
<div>
|
||||
<div className="text-xs font-semibold text-slate-400 uppercase mb-3">Experience</div>
|
||||
<ul className="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
<li className="mr-0.5 md:mr-0 md:mb-0.5">
|
||||
<NavLink end to="/settings/feedback" className={`flex items-center px-2.5 py-2 rounded whitespace-nowrap ${pathname.includes('/settings/feedback') && 'bg-indigo-50'}`}>
|
||||
<svg className={`w-4 h-4 shrink-0 fill-current text-slate-400 mr-2 ${pathname.includes('/settings/feedback') && 'text-indigo-400'}`} viewBox="0 0 16 16">
|
||||
<path d="M7.001 3h2v4h-2V3zm1 7a1 1 0 110-2 1 1 0 010 2zM15 16a1 1 0 01-.6-.2L10.667 13H1a1 1 0 01-1-1V1a1 1 0 011-1h14a1 1 0 011 1v14a1 1 0 01-1 1zM2 11h9a1 1 0 01.6.2L14 13V2H2v9z" />
|
||||
</svg>
|
||||
<span className={`text-sm font-medium ${pathname.includes('/settings/feedback') ? 'text-indigo-500' : 'hover:text-slate-700'}`}>Give Feedback</span>
|
||||
</NavLink>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default SettingsSidebar;
|
||||
@@ -1,57 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-07.jpg';
|
||||
import UserImage02 from '../../images/user-28-11.jpg';
|
||||
|
||||
function Task01() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">Managing teams (book)</h2>
|
||||
{/* Content */}
|
||||
<div>
|
||||
<div className="text-sm">#7764 created by <a className="font-medium text-slate-800 hover:underline" href="#0">markus-james</a></div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 07" />
|
||||
</a>
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage02} width="28" height="28" alt="User 11" />
|
||||
</a>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">7</div>
|
||||
</button>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task01;
|
||||
@@ -1,52 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function Task02() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">User should receive a daily digest email</h2>
|
||||
{/* Content */}
|
||||
<div>
|
||||
<div className="text-sm">Dedicated form for a category of users that will perform actions.</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<button className="p-2 shrink-0 rounded-full bg-white border border-slate-200 hover:border-slate-300 text-indigo-500 transition duration-150">
|
||||
<span className="sr-only">Add</span>
|
||||
<svg className="w-3 h-3 fill-current" viewBox="0 0 12 12">
|
||||
<path d="M11 5H7V1a1 1 0 00-2 0v4H1a1 1 0 000 2h4v4a1 1 0 002 0V7h4a1 1 0 000-2z" />
|
||||
</svg>
|
||||
</button>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Date */}
|
||||
<div className="flex items-center text-amber-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V3a1 1 0 00-1-1zm-1 12H2V6h12v8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">Mar 27</div>
|
||||
</div>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">6</div>
|
||||
</button>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task02;
|
||||
@@ -1,46 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-03.jpg';
|
||||
import UserImage02 from '../../images/user-28-10.jpg';
|
||||
|
||||
function Task03() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">Change license and remove references to products</h2>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 03" />
|
||||
</a>
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage02} width="28" height="28" alt="User 10" />
|
||||
</a>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4</div>
|
||||
</button>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task03;
|
||||
@@ -1,63 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-06.jpg';
|
||||
|
||||
function Task04() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">Managing teams (book)</h2>
|
||||
</div>
|
||||
{/* Meta */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 06" />
|
||||
</a>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* To-do info */}
|
||||
<div className="flex items-center text-slate-400 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M6.974 14c-.3 0-.7-.2-.9-.5l-2.2-3.7-2.1 2.8c-.3.4-1 .5-1.4.2-.4-.3-.5-1-.2-1.4l3-4c.2-.3.5-.4.9-.4.3 0 .6.2.8.5l2 3.3 3.3-8.1c0-.4.4-.7.8-.7s.8.2.9.6l4 8c.2.5 0 1.1-.4 1.3-.5.2-1.1 0-1.3-.4l-3-6-3.2 7.9c-.2.4-.6.6-1 .6z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">1/3</div>
|
||||
</div>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{/* List */}
|
||||
<ul className="mt-3">
|
||||
<li className="flex items-center border-t border-slate-200 py-2">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-400 line-through">Implement new designs</div>
|
||||
</li>
|
||||
<li className="flex items-center border-t border-slate-200 py-2">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Usability testing</div>
|
||||
</li>
|
||||
<li className="flex items-center border-t border-slate-200 py-2">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-slate-400 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm">Design navigation changes</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task04;
|
||||
@@ -1,52 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-05.jpg';
|
||||
import UserImage02 from '../../images/user-28-02.jpg';
|
||||
import TaskImage from '../../images/task-image-01.jpg';
|
||||
|
||||
function Task05() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">Product Update - Q4 2021</h2>
|
||||
{/* Content */}
|
||||
<div>
|
||||
<div className="text-sm">Dedicated form for a category of users that will perform actions.</div>
|
||||
<img className="w-full mt-3" src={TaskImage} width="259" height="142" alt="Task 01" />
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 05" />
|
||||
</a>
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage02} width="28" height="28" alt="User 02" />
|
||||
</a>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Date */}
|
||||
<div className="flex items-center text-amber-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M15 2h-2V0h-2v2H9V0H7v2H5V0H3v2H1a1 1 0 00-1 1v12a1 1 0 001 1h14a1 1 0 001-1V3a1 1 0 00-1-1zm-1 12H2V6h12v8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-amber-600">Mar 27</div>
|
||||
</div>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task05;
|
||||
@@ -1,51 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-12.jpg';
|
||||
import UserImage02 from '../../images/user-28-02.jpg';
|
||||
|
||||
function Task06() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">Design new diagrams</h2>
|
||||
{/* Content */}
|
||||
<div>
|
||||
<div className="text-sm">#7896 created by <a className="font-medium text-slate-800 hover:underline" href="#0">jerzy-wierzy</a></div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 12" />
|
||||
</a>
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage02} width="28" height="28" alt="User 02" />
|
||||
</a>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">7</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task06;
|
||||
@@ -1,57 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-08.jpg';
|
||||
|
||||
function Task07() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<h2 className="font-semibold text-slate-800 mb-1">Manage internal feedback</h2>
|
||||
</div>
|
||||
{/* Meta */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 08" />
|
||||
</a>
|
||||
</div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* To-do info */}
|
||||
<div className="flex items-center text-slate-400 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M6.974 14c-.3 0-.7-.2-.9-.5l-2.2-3.7-2.1 2.8c-.3.4-1 .5-1.4.2-.4-.3-.5-1-.2-1.4l3-4c.2-.3.5-.4.9-.4.3 0 .6.2.8.5l2 3.3 3.3-8.1c0-.4.4-.7.8-.7s.8.2.9.6l4 8c.2.5 0 1.1-.4 1.3-.5.2-1.1 0-1.3-.4l-3-6-3.2 7.9c-.2.4-.6.6-1 .6z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">2/2</div>
|
||||
</div>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
{/* List */}
|
||||
<ul className="mt-3">
|
||||
<li className="flex items-center border-t border-slate-200 py-2">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-400 line-through">Call with incoming clients</div>
|
||||
</li>
|
||||
<li className="flex items-center border-t border-slate-200 py-2">
|
||||
<svg className="w-3 h-3 shrink-0 fill-current text-emerald-500 mr-2" viewBox="0 0 12 12">
|
||||
<path d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-400 line-through">Manage inbound deals</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task07;
|
||||
@@ -1,57 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-12.jpg';
|
||||
import TaskImage from '../../images/task-image-02.jpg';
|
||||
|
||||
function Task08() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<div className="flex items-center mb-2">
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px mr-2">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 12" />
|
||||
</a>
|
||||
</div>
|
||||
<div className="grow">
|
||||
<a className="inline-flex text-slate-800 hover:text-slate-900" href="#0">
|
||||
<h2 className="font-semibold text-slate-800">Adrian Przetocki</h2>
|
||||
</a>
|
||||
<div className="text-xs font-medium text-slate-500">11:51 AM Jan 12</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div>
|
||||
<div className="text-sm">Publishing industries for previewing layouts and visual <a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">#family</a> 🔥</div>
|
||||
<img className="w-full mt-3" src={TaskImage} width="259" height="142" alt="Task 02" />
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div></div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">4</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">16</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task08;
|
||||
@@ -1,61 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
import UserImage01 from '../../images/user-28-12.jpg';
|
||||
|
||||
function Task09() {
|
||||
return (
|
||||
<div className="bg-white shadow-lg rounded-sm border border-slate-200 p-4">
|
||||
{/* Body */}
|
||||
<div className="mb-3">
|
||||
{/* Title */}
|
||||
<div className="flex items-center mb-2">
|
||||
<div className="flex shrink-0 -space-x-3 -ml-px mr-2">
|
||||
<a className="block" href="#0">
|
||||
<img className="rounded-full border-2 border-white box-content" src={UserImage01} width="28" height="28" alt="User 12" />
|
||||
</a>
|
||||
</div>
|
||||
<div className="grow">
|
||||
<a className="inline-flex text-slate-800 hover:text-slate-900" href="#0">
|
||||
<h2 className="font-semibold text-slate-800">Adrian Przetocki</h2>
|
||||
</a>
|
||||
<div className="text-xs font-medium text-slate-500">11:51 AM Jan 12</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Content */}
|
||||
<div>
|
||||
<div className="text-sm">Dedicated form for a category of users that will perform actions? <a className="font-medium text-indigo-500 hover:text-indigo-600" href="#0">#viewall</a></div>
|
||||
</div>
|
||||
</div>
|
||||
{/* Footer */}
|
||||
<div className="flex items-center justify-between">
|
||||
{/* Left side */}
|
||||
<div></div>
|
||||
{/* Right side */}
|
||||
<div className="flex items-center">
|
||||
{/* Like button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M14.682 2.318A4.485 4.485 0 0011.5 1 4.377 4.377 0 008 2.707 4.383 4.383 0 004.5 1a4.5 4.5 0 00-3.182 7.682L8 15l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L8 12.247l-5.285-5A2.5 2.5 0 014.5 3c1.437 0 2.312.681 3.5 2.625C9.187 3.681 10.062 3 11.5 3a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">6</div>
|
||||
</button>
|
||||
{/* Replies button */}
|
||||
<button className="flex items-center text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M8 0C3.6 0 0 3.1 0 7s3.6 7 8 7h.6l5.4 2v-4.4c1.2-1.2 2-2.8 2-4.6 0-3.9-3.6-7-8-7zm4 10.8v2.3L8.9 12H8c-3.3 0-6-2.2-6-5s2.7-5 6-5 6 2.2 6 5c0 2.2-2 3.8-2 3.8z" />
|
||||
</svg>
|
||||
<div className="text-sm text-slate-500">7</div>
|
||||
</button>
|
||||
{/* Attach button */}
|
||||
<button className="text-slate-400 hover:text-indigo-500 ml-3">
|
||||
<svg className="w-4 h-4 shrink-0 fill-current mr-1.5" viewBox="0 0 16 16">
|
||||
<path d="M11 0c1.3 0 2.6.5 3.5 1.5 1 .9 1.5 2.2 1.5 3.5 0 1.3-.5 2.6-1.4 3.5l-1.2 1.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l1.1-1.2c.6-.5.9-1.3.9-2.1s-.3-1.6-.9-2.2C12 1.7 10 1.7 8.9 2.8L7.7 4c-.4.4-1 .4-1.4 0-.4-.4-.4-1 0-1.4l1.2-1.1C8.4.5 9.7 0 11 0zM8.3 12c.4-.4 1-.5 1.4-.1.4.4.4 1 0 1.4l-1.2 1.2C7.6 15.5 6.3 16 5 16c-1.3 0-2.6-.5-3.5-1.5C.5 13.6 0 12.3 0 11c0-1.3.5-2.6 1.5-3.5l1.1-1.2c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4L2.9 8.9c-.6.5-.9 1.3-.9 2.1s.3 1.6.9 2.2c1.1 1.1 3.1 1.1 4.2 0L8.3 12zm1.1-6.8c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-4.2 4.2c-.2.2-.5.3-.7.3-.2 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l4.2-4.2z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Task09;
|
||||
@@ -1,28 +0,0 @@
|
||||
import React from 'react';
|
||||
|
||||
function TasksGroups({
|
||||
children,
|
||||
title
|
||||
}) {
|
||||
return (
|
||||
<div className="col-span-full sm:col-span-6 xl:col-span-3">
|
||||
{/* Column header */}
|
||||
<header>
|
||||
<div className="flex items-center justify-between mb-2">
|
||||
<h2 className="grow font-semibold text-slate-800 truncate">{title}</h2>
|
||||
<button className="shrink-0 text-indigo-500 hover:text-indigo-600 ml-2">
|
||||
<svg className="w-4 h-4 fill-current" viewBox="0 0 16 16">
|
||||
<path d="M15 7H9V1c0-.6-.4-1-1-1S7 .4 7 1v6H1c-.6 0-1 .4-1 1s.4 1 1 1h6v6c0 .6.4 1 1 1s1-.4 1-1V9h6c.6 0 1-.4 1-1s-.4-1-1-1z" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
{/* Cards */}
|
||||
<div className="grid gap-2">
|
||||
{children}
|
||||
</div>
|
||||
</header>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default TasksGroups;
|
||||
Reference in New Issue
Block a user