Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
cb82e35
refactor(dashboard): misc group on the kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
87e3164
refactor(dashboard): / on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
08ecb05
refactor(dashboard): /forbidden on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
e85284b
test(dashboard): token-health guard reads the kit status utilities (K…
diegosouzapw Oct 21, 2026
1812f59
refactor(dashboard): /login on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
9c0a6e9
refactor(dashboard): /forgot-password on the CI UI Kit (KEA-7886, lot…
diegosouzapw Oct 21, 2026
9f6eccf
refactor(dashboard): /callback on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
50057d6
refactor(dashboard): /connect/codex/[token] on the CI UI Kit (KEA-788…
diegosouzapw Oct 21, 2026
c34dc89
refactor(dashboard): /status on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
432d375
refactor(dashboard): /maintenance on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
c9a6fab
refactor(dashboard): /offline on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
da35482
refactor(dashboard): /terms and /privacy on the CI UI Kit (KEA-7886, …
diegosouzapw Oct 21, 2026
bf852db
refactor(dashboard): /miniapp on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
f53ea5d
refactor(dashboard): /landing shell lockup on the CI UI Kit (KEA-7886…
diegosouzapw Oct 21, 2026
8016c29
refactor(dashboard): /docs on the CI UI Kit (KEA-7886, lote 10)
diegosouzapw Oct 21, 2026
3707189
fix(dashboard): landing lockup wordmark takes white ink on the dark s…
diegosouzapw Oct 21, 2026
f4e6b43
Merge remote-tracking branch 'origin/feat/new-uikit' into feat/new-ui…
diegosouzapw Oct 21, 2026
2a36562
fix(dashboard): lote 10 — axe contrast on legal links, login footer a…
diegosouzapw Oct 21, 2026
28bf0b4
Merge remote-tracking branch 'origin/feat/new-uikit' into feat/new-ui…
diegosouzapw Oct 21, 2026
1e3a300
fix(dashboard): lote 10 — TokenHealthBadge popover keeps focus, non-d…
diegosouzapw Oct 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions config/quality/eslint-suppressions.json
Original file line number Diff line number Diff line change
Expand Up @@ -1614,11 +1614,6 @@
"count": 5
}
},
"src/shared/components/DegradationBadge.tsx": {
"@typescript-eslint/no-unused-vars": {
"count": 1
}
},
"src/shared/components/KiroAuthModal.tsx": {
"@typescript-eslint/no-unused-vars": {
"count": 1
Expand Down
48 changes: 23 additions & 25 deletions src/app/callback/page.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
"use client";

import Card from "@/shared/components/Card";
import Icon from "@/shared/components/Icon";

import { useTranslations } from "next-intl";
import { useEffect, useState } from "react";

Expand All @@ -16,9 +19,7 @@ import { useEffect, useState } from "react";
*/
export default function CallbackPage() {
const [status, setStatus] = useState<"processing" | "success" | "done" | "manual">("processing");
const [currentUrl] = useState(() =>
typeof window === "undefined" ? "" : window.location.href
);
const [currentUrl] = useState(() => (typeof window === "undefined" ? "" : window.location.href));
const t = useTranslations("auth");

useEffect(() => {
Expand Down Expand Up @@ -86,10 +87,7 @@ export default function CallbackPage() {
if (window.opener) {
for (const origin of trustedTargetOrigins) {
try {
window.opener.postMessage(
{ type: "oauth_callback", data: callbackData },
origin
);
window.opener.postMessage({ type: "oauth_callback", data: callbackData }, origin);
sent = true;
} catch (e) {
console.log("postMessage failed:", e);
Expand Down Expand Up @@ -141,28 +139,28 @@ export default function CallbackPage() {
}, []);

return (
<div className="min-h-screen flex items-center justify-center">
<div className="text-center p-8 max-w-md">
<main className="min-h-screen flex items-center justify-center p-6">
<Card padding="lg" className="w-full max-w-md text-center">
{status === "processing" && (
<>
<div className="size-16 mx-auto mb-4 rounded-full bg-primary/10 flex items-center justify-center">
<span className="material-symbols-outlined text-3xl text-primary animate-spin">
progress_activity
</span>
<div className="size-16 mx-auto mb-4 rounded-full bg-bg-subtle flex items-center justify-center">
<Icon
name="progress_activity"
size={30}
className="text-text-muted animate-spin motion-reduce:animate-none"
/>
</div>
<h1 className="text-xl font-semibold mb-2">{t("processing")}</h1>
<h1 className="ci-heading text-xl mb-2">{t("processing")}</h1>
<p className="text-text-muted">{t("pleaseWait")}</p>
</>
)}

{(status === "success" || status === "done") && (
<>
<div className="size-16 mx-auto mb-4 rounded-full bg-green-100 dark:bg-green-900/30 flex items-center justify-center">
<span className="material-symbols-outlined text-3xl text-green-600">
check_circle
</span>
<div className="size-16 mx-auto mb-4 rounded-full bg-success-bg flex items-center justify-center">
<Icon name="check_circle" size={30} className="text-success" />
</div>
<h1 className="text-xl font-semibold mb-2">{t("authSuccess")}</h1>
<h1 className="ci-heading text-xl mb-2">{t("authSuccess")}</h1>
<p className="text-text-muted">
{status === "success" ? t("windowWillClose") : t("closeTabNow")}
</p>
Expand All @@ -171,17 +169,17 @@ export default function CallbackPage() {

{status === "manual" && (
<>
<div className="size-16 mx-auto mb-4 rounded-full bg-yellow-100 dark:bg-yellow-900/30 flex items-center justify-center">
<span className="material-symbols-outlined text-3xl text-yellow-600">info</span>
<div className="size-16 mx-auto mb-4 rounded-full bg-warning-bg flex items-center justify-center">
<Icon name="info" size={30} className="text-warning" />
</div>
<h1 className="text-xl font-semibold mb-2">{t("copyUrl")}</h1>
<h1 className="ci-heading text-xl mb-2">{t("copyUrl")}</h1>
<p className="text-text-muted mb-4">{t("copyUrlManual")}</p>
<div className="bg-surface border border-border rounded-lg p-3 text-left">
<div className="bg-bg-subtle border border-border rounded-lg p-3 text-left">
<code className="text-xs break-all">{currentUrl}</code>
</div>
</>
)}
</div>
</div>
</Card>
</main>
);
}
27 changes: 15 additions & 12 deletions src/app/connect/codex/[token]/CodexConnectClient.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
"use client";

import Icon from "@/shared/components/Icon";

import { useCallback, useEffect, useRef, useState } from "react";
import { useTranslations } from "next-intl";
import Button from "@/shared/components/Button";
import Card from "@/shared/components/Card";
import { useCopyToClipboard } from "@/shared/hooks/useCopyToClipboard";
import {
runCodexDeviceFlow,
Expand Down Expand Up @@ -104,13 +107,13 @@ export default function CodexConnectClient({ token }: { token: string }) {
}, [token, t]);

return (
<div className="min-h-screen flex items-center justify-center bg-bg-base px-4 py-10">
<div className="w-full max-w-md rounded-2xl border border-border bg-bg-subtle p-8 shadow-sm">
<main className="min-h-screen flex items-center justify-center bg-bg px-4 py-10">
<Card padding="lg" className="w-full max-w-md">
<div className="mb-6 text-center">
<div className="mb-3 inline-flex h-14 w-14 items-center justify-center rounded-full bg-primary/10 text-primary">
<span className="material-symbols-outlined text-[28px]">key</span>
<div className="mb-3 inline-flex h-14 w-14 items-center justify-center rounded-full bg-bg-subtle text-text-muted">
<Icon name="key" size={28} />
</div>
<h1 className="text-lg font-semibold text-text-main">{t("connectOpenAiCodexTitle")}</h1>
<h1 className="ci-heading text-lg">{t("connectOpenAiCodexTitle")}</h1>
<p className="mt-1 text-sm text-text-muted">{t("codexConnectDescription")}</p>
</div>

Expand All @@ -135,7 +138,7 @@ export default function CodexConnectClient({ token }: { token: string }) {
<div className="space-y-4">
<p className="text-sm text-text-muted">{t("codexVerificationInstructions")}</p>

<div className="rounded-lg border border-border bg-bg-base p-3">
<div className="rounded-lg border border-border bg-bg-subtle p-3">
<p className="mb-1 text-xs text-text-muted">{t("yourCode")}</p>
<div className="flex items-center justify-between gap-2">
<code className="text-lg font-semibold tracking-widest text-text-main">
Expand Down Expand Up @@ -179,8 +182,8 @@ export default function CodexConnectClient({ token }: { token: string }) {

{status === "success" && (
<div className="text-center">
<div className="mb-3 inline-flex h-12 w-12 items-center justify-center rounded-full bg-green-500/10 text-green-500">
<span className="material-symbols-outlined text-[26px]">check_circle</span>
<div className="mb-3 inline-flex h-12 w-12 items-center justify-center rounded-full bg-success-bg text-success">
<Icon name="check_circle" size={26} />
</div>
<p className="font-medium text-text-main">{t("codexConnected")}</p>
<p className="mt-1 text-sm text-text-muted">{t("codexConnectionRegistered")}</p>
Expand All @@ -189,16 +192,16 @@ export default function CodexConnectClient({ token }: { token: string }) {

{status === "error" && (
<div className="text-center">
<div className="mb-3 inline-flex h-12 w-12 items-center justify-center rounded-full bg-red-500/10 text-red-500">
<span className="material-symbols-outlined text-[26px]">error</span>
<div className="mb-3 inline-flex h-12 w-12 items-center justify-center rounded-full bg-error-bg text-error">
<Icon name="error" size={26} />
</div>
<p className="mb-4 text-sm text-text-muted">{error}</p>
<Button variant="secondary" icon="refresh" onClick={start} className="w-full">
{t("tryAgain")}
</Button>
</div>
)}
</div>
</div>
</Card>
</main>
);
}
2 changes: 1 addition & 1 deletion src/app/docs/api-explorer/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ export default function ApiExplorerPage() {
const t = useTranslations("docs");
return (
<div>
<h1 className="text-3xl font-bold text-text-main mb-2">{t("apiExplorerTitle")}</h1>
<h1 className="ci-heading text-3xl mb-2">{t("apiExplorerTitle")}</h1>
<p className="text-text-muted mb-8">{t("apiExplorerDescription")}</p>
<ApiExplorerClient />
</div>
Expand Down
Loading