Skip to content

Commit 5209a32

Browse files
authored
Tools Page Table mobile Adjustments (#1584)
1 parent a69e6b0 commit 5209a32

File tree

1 file changed

+63
-4
lines changed

1 file changed

+63
-4
lines changed

pages/tools/components/ToolingTable.tsx

Lines changed: 63 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,11 @@ const ToolingTable = ({
116116
<Headline2>{toTitleCase(group, '-')}</Headline2>
117117
</div>
118118
)}
119-
<div className='overflow-x-auto'>
120-
<table className='min-w-full bg-white dark:bg-slate-800 border border-gray-200'>
119+
<div className='overflow-x-hidden'>
120+
{/* Desktop Table */}
121+
<table className='hidden lg:table min-w-full bg-white dark:bg-slate-800 border border-gray-200'>
121122
<thead>
122-
<tr className='flex w-full min-w-[976px]'>
123+
<tr className='flex w-full min-w-[860px]'>
123124
<TableSortableColumnHeader
124125
sortBy='name'
125126
transform={transform}
@@ -269,6 +270,65 @@ const ToolingTable = ({
269270
})}
270271
</tbody>
271272
</table>
273+
274+
{/* Mobile Table */}
275+
<table className='lg:hidden min-w-full bg-white dark:bg-slate-800 border border-gray-200'>
276+
<tbody>
277+
{toolsByGroup[group].map((tool: JSONSchemaTool, index) => {
278+
const bowtieData = getBowtieData(tool);
279+
if (bowtieData) {
280+
tool.bowtie = bowtieData;
281+
}
282+
return (
283+
<tr
284+
key={index}
285+
className='border-b border-gray-200 hover:bg-gray-100 dark:hover:bg-slate-700 cursor-pointer'
286+
onClick={() => openModal(tool)}
287+
>
288+
<td className='p-2 relative'>
289+
{bowtieData && (
290+
<div className='absolute top-0 right-0 m-2 text-sm text-gray-600 dark:text-gray-300 flex items-center'>
291+
<span>Bowtie:</span>
292+
<a
293+
href={`https://bowtie.report/#/implementations/${bowtieData.id}`}
294+
target='blank'
295+
onClick={(event) => event.stopPropagation()}
296+
title='See at Bowtie'
297+
className='ml-1'
298+
>
299+
<OutLinkIcon className='fill-none stroke-current w-5 h-5 stroke-2' />
300+
</a>
301+
</div>
302+
)}
303+
304+
<div className='flex justify-between items-center'>
305+
<div className='font-medium'>
306+
{tool.name}
307+
{tool.status === 'obsolete' && (
308+
<Tag intent='error'>{tool.status}</Tag>
309+
)}
310+
</div>
311+
</div>
312+
<div className='text-sm text-gray-600 dark:text-gray-300 mt-1'>
313+
Languages: {tool.languages?.join(', ')}
314+
</div>
315+
<div className='text-sm text-gray-600 dark:text-gray-300 mt-1'>
316+
Supported Dialects:
317+
</div>
318+
<div className='flex flex-wrap gap-1 mt-1'>
319+
{tool.supportedDialects?.draft?.map((draft) => (
320+
<Badge key={draft}>{draft}</Badge>
321+
))}
322+
</div>
323+
<div className='text-sm text-gray-600 dark:text-gray-300 mt-1'>
324+
License: {tool.license}
325+
</div>
326+
</td>
327+
</tr>
328+
);
329+
})}
330+
</tbody>
331+
</table>
272332
</div>
273333
</section>
274334
))}
@@ -278,7 +338,6 @@ const ToolingTable = ({
278338
</>
279339
);
280340
};
281-
282341
const TableColumnHeader = ({
283342
children,
284343
attributes: propAttributes,

0 commit comments

Comments
 (0)