🏗️ Added icons and details to metadata

This commit is contained in:
2023-12-18 23:31:43 -05:00
parent b1d8951842
commit 4d1d29a361
4 changed files with 62 additions and 72 deletions

View File

@@ -53,8 +53,9 @@ export const Library = (): ReactElement => {
const ComicInfoXML = (value) => { const ComicInfoXML = (value) => {
return value.data ? ( return value.data ? (
<dl className="flex flex-col text-md p-4 mx-4 my-3 rounded-lg bg-amber-400 w-max"> <dl className="flex flex-col text-md p-3 mx-4 my-3 rounded-lg bg-yellow-500 w-max">
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400"> {/* Series Name */}
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
<span className="pr-1 pt-1"> <span className="pr-1 pt-1">
<i className="icon-[solar--bookmark-square-minimalistic-bold-duotone] w-5 h-5"></i> <i className="icon-[solar--bookmark-square-minimalistic-bold-duotone] w-5 h-5"></i>
</span> </span>
@@ -62,26 +63,27 @@ export const Library = (): ReactElement => {
{ellipsize(value.data.series[0], 45)} {ellipsize(value.data.series[0], 45)}
</span> </span>
</span> </span>
<div className="field is-grouped is-grouped-multiline"> <div className="flex flex-row mt-2 gap-2">
<div className="control"> {/* Pages */}
<span className="tags has-addons is-size-7 mt-2"> <span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
<span className="tag">Pages</span> <span className="pr-1 pt-1">
<span className="tag is-info is-light has-text-weight-bold"> <i className="icon-[solar--notebook-minimalistic-bold-duotone] w-5 h-5"></i>
{value.data.pagecount[0]}
</span>
</span> </span>
</div> <span className="text-md text-slate-900 dark:text-slate-900">
Pages: {value.data.pagecount[0]}
<div className="control"> </span>
<span className="tags has-addons is-size-7 mt-2"> </span>
<span className="tag">Issue</span> {/* Issue number */}
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
<span className="pr-1 pt-1">
<i className="icon-[solar--hashtag-outline] w-3.5 h-3.5"></i>
</span>
<span className="text-slate-900 dark:text-slate-900">
{!isNil(value.data.number) && ( {!isNil(value.data.number) && (
<span className="tag has-text-weight-bold is-success is-light"> <span>{parseInt(value.data.number[0], 10)}</span>
{parseInt(value.data.number[0], 10)}
</span>
)} )}
</span> </span>
</div> </span>
</div> </div>
</dl> </dl>
) : null; ) : null;
@@ -112,7 +114,7 @@ export const Library = (): ReactElement => {
!isEmpty(info.getValue()) ? ( !isEmpty(info.getValue()) ? (
<ComicInfoXML data={info.getValue()} /> <ComicInfoXML data={info.getValue()} />
) : ( ) : (
<span className="text-sm p-4">No ComicInfo.xml</span> <div className="text-sm mx-4 my-3">No comicinfo.xml</div>
), ),
}, },
], ],
@@ -126,9 +128,7 @@ export const Library = (): ReactElement => {
cell: (info) => { cell: (info) => {
return !isNil(info.getValue()) ? ( return !isNil(info.getValue()) ? (
<h6>{info.getValue().publisher.name}</h6> <h6>{info.getValue().publisher.name}</h6>
) : ( ) : null;
"Chimin"
);
}, },
}, },
{ {

View File

@@ -141,7 +141,7 @@ const renderCard = (props: ICardProps): ReactElement => {
return ( return (
<> <>
{/* thumbnail */} {/* thumbnail */}
<div className="rounded-lg overflow-hidden w-fit h-fit"> <div className="rounded-lg shadow-lg overflow-hidden w-fit h-fit">
<img src={props.imageUrl} /> <img src={props.imageUrl} />
</div> </div>
</> </>

View File

@@ -36,13 +36,17 @@ export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => {
<p className="text-lg">{issueName}</p> <p className="text-lg">{issueName}</p>
</dt> </dt>
<dd className="text-sm"> <dd className="text-sm">
Is a part of <span>{inferredMetadata.issue.name}</span> is a part of{" "}
<span className="underline">
{inferredMetadata.issue.name}
<i className="icon-[solar--arrow-right-up-outline] w-4 h-4" />
</span>
</dd> </dd>
{/* Issue number */} {/* Issue number */}
{inferredMetadata.issue.number && ( {inferredMetadata.issue.number && (
<dd className="my-2"> <dd className="my-2">
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400"> <span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
<span className="pr-1 pt-1"> <span className="pr-1 pt-1">
<i className="icon-[solar--hashtag-outline] w-3.5 h-3.5"></i> <i className="icon-[solar--hashtag-outline] w-3.5 h-3.5"></i>
</span> </span>
@@ -54,7 +58,7 @@ export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => {
)} )}
<dd className="flex flex-row gap-2 w-max"> <dd className="flex flex-row gap-2 w-max">
{/* File extension */} {/* File extension */}
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400"> <span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
<span className="pr-1 pt-1"> <span className="pr-1 pt-1">
<i className="icon-[solar--zip-file-bold-duotone] w-5 h-5"></i> <i className="icon-[solar--zip-file-bold-duotone] w-5 h-5"></i>
</span> </span>
@@ -65,7 +69,7 @@ export const MetadataPanel = (props: IMetadatPanelProps): ReactElement => {
</span> </span>
{/* size */} {/* size */}
<span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2.5 rounded-md dark:text-slate-900 dark:bg-slate-400"> <span className="inline-flex items-center bg-slate-50 text-slate-800 text-xs font-medium px-2 rounded-md dark:text-slate-900 dark:bg-slate-400">
<span className="pr-1 pt-1"> <span className="pr-1 pt-1">
<i className="icon-[solar--mirror-right-bold-duotone] w-5 h-5"></i> <i className="icon-[solar--mirror-right-bold-duotone] w-5 h-5"></i>
</span> </span>

View File

@@ -78,54 +78,40 @@ export const T2Table = (tableOptions): ReactElement => {
</div> </div>
{/* pagination controls */} {/* pagination controls */}
<nav className="pagination columns"> <nav className="pagination columns">
<div className="mr-4 has-text-weight-semibold has-text-left"> Page {pageIndex} of {Math.ceil(totalPages / pageSize)}
<p className="is-size-5"> <p>{totalPages} comics in all</p>
Page {pageIndex} of {Math.ceil(totalPages / pageSize)} {/* Prev/Next buttons */}
</p> <div className="inline-flex flex-row mt-4 mb-4">
<p>{totalPages} comics in all</p> <button
</div> onClick={() => goToPreviousPage()}
<div className="field has-addons"> disabled={pageIndex === 1}
<div className="control"> className="bg-slate-500 rounded-l border-slate-600 border-r pt-2 px-2"
<button >
className="button" <i className="icon-[solar--arrow-left-linear] h-6 w-6"></i>
onClick={() => goToPreviousPage()} </button>
disabled={pageIndex === 1} <button
> className="bg-slate-500 rounded-r pt-2 px-2"
<i className="fas fa-chevron-left"></i> onClick={() => goToNextPage()}
</button> disabled={pageIndex > Math.floor(totalPages / pageSize)}
</div> >
<div className="control"> <i className="icon-[solar--arrow-right-linear] h-6 w-6"></i>
<button </button>
className="button"
onClick={() => goToNextPage()}
disabled={pageIndex > Math.floor(totalPages / pageSize)}
>
<i className="fas fa-chevron-right"></i>
</button>
</div>
<div className="field has-addons ml-5">
<p className="control">
<button className="button">
<span className="icon is-small">
<i className="fa-solid fa-list"></i>
</span>
</button>
</p>
<p className="control">
<button className="button">
<Link to="/library-grid">
<span className="icon is-small">
<i className="fa-solid fa-image"></i>
</span>
</Link>
</button>
</p>
</div>
</div> </div>
<button className="button">
<span className="icon is-small">
<i className="fa-solid fa-list"></i>
</span>
</button>
<button className="button">
<Link to="/library-grid">
<span className="icon is-small">
<i className="fa-solid fa-image"></i>
</span>
</Link>
</button>
</nav> </nav>
</div> </div>
<table className="table-auto"> <table className="table-auto border-collapse overflow-auto">
<thead className="sticky top-0 bg-slate-200 dark:bg-slate-500"> <thead className="sticky top-0 bg-slate-200 dark:bg-slate-500">
{table.getHeaderGroups().map((headerGroup, idx) => ( {table.getHeaderGroups().map((headerGroup, idx) => (
<tr key={headerGroup.id}> <tr key={headerGroup.id}>