Skip to content

Commit 2ee3e70

Browse files
committed
Merge branch 'main' into error-page
2 parents 6d2932d + 4b5b4f7 commit 2ee3e70

File tree

12 files changed

+206
-147
lines changed

12 files changed

+206
-147
lines changed

.github/workflows/docker-publish.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@ jobs:
1616
- name: Checkout
1717
uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
1818

19+
- name: Set up QEMU
20+
uses: docker/setup-qemu-action@29109295f81e9208d7d86ff1c6c12d2833863392 # v3.6.0
21+
22+
- name: Set up Docker Buildx
23+
uses: docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2 # v3.10.0
24+
1925
- name: Login to GitHub Container Registry
2026
uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3.6.0
2127
with:
@@ -28,6 +34,7 @@ jobs:
2834
with:
2935
context: .
3036
push: true
37+
platforms: linux/amd64,linux/arm64
3138
tags: |
3239
ghcr.io/${{ github.repository }}:latest
3340
ghcr.io/${{ github.repository }}:${{ github.ref_name }}

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@
3131
"@radix-ui/react-toggle-group": "^1.1.11",
3232
"ajv": "^8.17.1",
3333
"ajv-formats": "^3.0.1",
34-
"better-auth": "1.4.0-beta.25",
34+
"better-auth": "1.4.4",
3535
"class-variance-authority": "0.7.1",
3636
"clsx": "2.1.1",
3737
"jose": "^6.1.2",
3838
"json-schema-faker": "^0.5.6",
3939
"lucide-react": "^0.554.0",
4040
"msw": "^2.12.2",
41-
"next": "16.0.5",
41+
"next": "16.0.6",
4242
"next-themes": "^0.4.6",
4343
"nuqs": "^2.8.1",
4444
"react": "19.2.0",
@@ -49,7 +49,7 @@
4949
"devDependencies": {
5050
"@biomejs/biome": "2.3.8",
5151
"@hey-api/client-next": "0.5.1",
52-
"@hey-api/openapi-ts": "0.87.5",
52+
"@hey-api/openapi-ts": "0.88.0",
5353
"@mswjs/http-middleware": "^0.10.2",
5454
"@tailwindcss/postcss": "^4",
5555
"@testing-library/dom": "^10.4.1",

pnpm-lock.yaml

Lines changed: 133 additions & 114 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

public/.gitkeep

Whitespace-only changes.

public/okta-icon.svg

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/app/catalog/[repoName]/[serverName]/[version]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export default async function CatalogDetailPage({
3030
const server = serverResponse?.server ?? {};
3131

3232
return (
33-
<div className="flex flex-col gap-2 pt-5 pb-8 px-4">
33+
<div className="flex flex-col gap-2 pb-8 px-4">
3434
<ServerDetailTitle
3535
publisher={server.repository?.source}
3636
serverName={server.name || "Unknown server"}

src/app/catalog/components/servers-table.tsx

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,17 @@ interface ServersTableProps {
1616
onServerClick?: (server: V0ServerJson) => void;
1717
}
1818

19-
/**
20-
* Server table component that displays MCP servers in a table format
21-
*/
2219
export function ServersTable({ servers, onServerClick }: ServersTableProps) {
2320
return (
2421
<div className="w-full overflow-hidden rounded-md border">
25-
<Table className="table-fixed">
22+
<Table className="min-w-full">
2623
<TableHeader className="bg-muted/50">
2724
<TableRow>
28-
<TableHead className="w-2/12 pl-4">Server</TableHead>
29-
<TableHead className="w-9/12">About</TableHead>
30-
<TableHead className="w-1/12" />
25+
<TableHead className="w-full pl-4 sm:w-1/5">Server</TableHead>
26+
<TableHead className="hidden sm:w-7/10 sm:table-cell">
27+
About
28+
</TableHead>
29+
<TableHead className="w-16 text-right sm:w-1/10" />
3130
</TableRow>
3231
</TableHeader>
3332
<TableBody>
@@ -43,13 +42,27 @@ export function ServersTable({ servers, onServerClick }: ServersTableProps) {
4342
onClick={() => onServerClick?.(server)}
4443
className={onServerClick ? "cursor-pointer" : undefined}
4544
>
46-
<TableCell className="font-medium pl-4">{serverName}</TableCell>
47-
<TableCell className="max-w-0 overflow-hidden text-ellipsis whitespace-nowrap">
45+
<TableCell
46+
className="pl-4 align-middle sm:w-1/5"
47+
title={serverName}
48+
>
49+
<p className="text-base font-medium sm:text-sm">
50+
{serverName}
51+
</p>
52+
</TableCell>
53+
<TableCell
54+
className="hidden pr-4 text-muted-foreground whitespace-normal wrap-break-word sm:table-cell sm:w-7/10"
55+
title={description}
56+
>
4857
{description}
4958
</TableCell>
50-
<TableCell>
59+
<TableCell className="pr-3 text-right align-middle sm:w-1/10">
5160
{url ? (
52-
<CopyUrlButton url={url} className="shadow-sm" />
61+
<CopyUrlButton
62+
url={url}
63+
className="md:h-9 md:w-auto md:rounded-md md:px-3"
64+
labelClassName="hidden md:inline"
65+
/>
5366
) : null}
5467
</TableCell>
5568
</TableRow>

src/app/signin/signin-button.tsx

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
"use client";
2-
import Image from "next/image";
2+
import { Loader2 } from "lucide-react";
3+
import { useState } from "react";
34
import { toast } from "sonner";
5+
import { OktaIcon } from "@/components/brand-icons";
46
import { Button } from "@/components/ui/button";
57
import { authClient } from "@/lib/auth/auth-client";
68

79
export function SignInButton({ providerId }: { providerId: string }) {
8-
const isOktaProvider = providerId === "okta";
10+
const [isLoading, setIsLoading] = useState(false);
11+
const isOktaProvider = providerId === "okta" || providerId === "oidc";
912
const providerName = providerId.charAt(0).toUpperCase() + providerId.slice(1);
1013

1114
const handleOIDCSignIn = async () => {
15+
setIsLoading(true);
1216
try {
1317
const { error } = await authClient.signIn.oauth2({
1418
providerId,
1519
callbackURL: "/catalog",
1620
});
1721

1822
if (error) {
23+
setIsLoading(false);
1924
toast.error("Signin failed", {
2025
description:
2126
error.message ||
@@ -24,6 +29,7 @@ export function SignInButton({ providerId }: { providerId: string }) {
2429
return;
2530
}
2631
} catch (error) {
32+
setIsLoading(false);
2733
const errorMessage =
2834
error instanceof Error ? error.message : "An unexpected error occurred";
2935

@@ -38,17 +44,16 @@ export function SignInButton({ providerId }: { providerId: string }) {
3844
onClick={handleOIDCSignIn}
3945
className="w-full h-9 gap-2"
4046
size="default"
47+
disabled={isLoading}
4148
>
42-
{isOktaProvider && (
43-
<Image
44-
src="/okta-icon.svg"
45-
alt={providerName}
46-
width={16}
47-
height={16}
48-
className="shrink-0"
49-
/>
49+
{isLoading ? (
50+
<Loader2 className="text-muted-foreground size-4 animate-spin" />
51+
) : (
52+
<>
53+
{isOktaProvider && <OktaIcon className="size-4 shrink-0" />}
54+
<span>{providerName}</span>
55+
</>
5056
)}
51-
<span>{providerName}</span>
5257
</Button>
5358
);
5459
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { OktaIcon } from "./okta-icon";
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import type { SVGProps } from "react";
2+
3+
export const OktaIcon = (props: SVGProps<SVGSVGElement>) => (
4+
<svg
5+
xmlns="http://www.w3.org/2000/svg"
6+
fill="none"
7+
viewBox="0 0 16 16"
8+
aria-hidden="true"
9+
{...props}
10+
>
11+
<path
12+
fill="currentColor"
13+
d="m8.803.111-.33 4.053a4.1 4.1 0 0 0-1.058.018l-.187-1.964a.11.11 0 0 1 .107-.116h.334L7.509.116C7.504.053 7.553 0 7.61 0H8.7c.062 0 .11.053.102.116zm-2.749.2C6.036.253 5.974.218 5.916.24L4.893.613c-.057.023-.084.09-.057.143l.831 1.813-.315.115a.104.104 0 0 0-.058.143l.85 1.782c.306-.169.64-.298.991-.378L6.059.311zM3.546 1.44l2.353 3.316c-.298.195-.57.426-.801.693l-1.41-1.387a.107.107 0 0 1 .005-.155l.258-.214L2.55 2.276a.104.104 0 0 1 .009-.156l.831-.698a.103.103 0 0 1 .151.018zM1.57 3.36c-.049-.036-.12-.018-.151.036l-.543.942a.105.105 0 0 0 .045.146l1.806.854-.17.289a.102.102 0 0 0 .05.146l1.796.823c.13-.334.303-.645.516-.925zM.241 5.92c.01-.062.072-.098.13-.084l3.935 1.026a3.9 3.9 0 0 0-.169 1.05l-1.97-.16a.103.103 0 0 1-.093-.125l.058-.33-1.988-.186C.08 7.107.04 7.05.05 6.987l.187-1.071zM.095 8.578c-.063.004-.103.062-.094.124l.191 1.071c.01.063.072.098.13.085l1.93-.502.057.328c.01.063.072.098.13.085l1.903-.525a3.9 3.9 0 0 1-.2-1.04L.09 8.578zm.631 2.818a.105.105 0 0 1 .045-.147l3.673-1.742c.138.329.325.635.547.91l-1.61 1.147a.105.105 0 0 1-.15-.03l-.17-.294-1.641 1.133c-.049.036-.12.018-.151-.035l-.547-.942zm4.452-.765-2.86 2.893a.104.104 0 0 0 .01.156l.835.698c.05.04.116.03.152-.018l1.156-1.627.258.218c.049.04.12.031.156-.022l1.12-1.627a4 4 0 0 1-.822-.67zm-.565 4.645a.104.104 0 0 1-.058-.143l1.695-3.697c.311.16.65.28 1 .346l-.498 1.911a.105.105 0 0 1-.137.071l-.316-.115-.53 1.924c-.017.058-.08.094-.137.071l-1.023-.373zm2.918-3.445-.33 4.053c-.004.063.045.116.103.116h1.09a.102.102 0 0 0 .102-.116l-.16-1.986h.333a.11.11 0 0 0 .107-.116l-.187-1.964a3.7 3.7 0 0 1-1.058.013M11.454.858a.103.103 0 0 0-.058-.142L10.373.342c-.058-.022-.12.014-.138.071l-.53 1.925-.315-.116c-.058-.022-.12.014-.138.071l-.498 1.911c.356.072.69.192 1 .347zm2.232 1.613-2.86 2.893a3.9 3.9 0 0 0-.822-.67l1.12-1.627a.11.11 0 0 1 .156-.023l.258.218 1.156-1.626a.103.103 0 0 1 .151-.018l.837.698c.049.04.049.11.008.155zm1.548 2.276a.102.102 0 0 0 .044-.147l-.547-.942a.11.11 0 0 0-.151-.036l-1.641 1.134-.17-.29c-.03-.053-.101-.07-.15-.03l-1.61 1.146q.333.416.547.911l3.673-1.742zm.578 1.475.187 1.071a.107.107 0 0 1-.094.125l-4.051.378a3.8 3.8 0 0 0-.2-1.04l1.903-.525a.102.102 0 0 1 .13.085l.057.328 1.93-.502c.058-.013.12.022.13.085zm-.182 3.934c.057.013.12-.023.129-.085L15.945 9a.107.107 0 0 0-.093-.124l-1.988-.187.058-.329a.107.107 0 0 0-.094-.124l-1.97-.16a3.9 3.9 0 0 1-.169 1.048l3.936 1.027zM14.58 12.6a.11.11 0 0 1-.151.036l-3.35-2.312q.322-.421.517-.924l1.797.822c.057.027.08.094.048.147l-.168.289 1.805.853a.105.105 0 0 1 .045.147zm-4.479-1.364 2.353 3.315a.103.103 0 0 0 .151.018l.832-.698a.11.11 0 0 0 .009-.155l-1.401-1.418.258-.214a.104.104 0 0 0 .004-.155l-1.41-1.387a3.8 3.8 0 0 1-.8.694zm-.022 4.515c-.058.022-.12-.013-.138-.071l-1.076-3.92c.351-.08.685-.209.992-.378l.85 1.782c.026.058 0 .125-.059.143l-.315.115.831 1.814c.027.057 0 .12-.057.142l-1.023.373z"
14+
/>
15+
</svg>
16+
);

0 commit comments

Comments
 (0)