@@ -74,8 +70,13 @@ export function OAuthPage() {
{cfg.scopeDescriptions.map((scope, i) => (
- {/* Disabled because the authorization is required (STOCK behavior). */}
-
+ {/* Disabled because the authorization is required. */}
+
{scope.description}
{scope.filter ? Applies to {scope.filter}. : null}
diff --git a/hub/ui/src/pages/spawn.tsx b/hub/ui/src/pages/spawn.tsx
index edc97384..0fb22b32 100644
--- a/hub/ui/src/pages/spawn.tsx
+++ b/hub/ui/src/pages/spawn.tsx
@@ -2,18 +2,19 @@ import { useEffect, useRef, useState } from "react"
import {
Alert,
- AlertDescription,
- AlertTitle,
Button,
Card,
CardContent,
- CardDescription,
CardHeader,
CardTitle,
- P,
+ H1,
+ Lead,
+ Muted,
+ Separator,
} from "@e-infra/design-system"
-import { LoaderCircle, Play, TriangleAlert } from "lucide-react"
+import { Atom, LoaderCircle, Play, RefreshCw, TriangleAlert } from "lucide-react"
+import { DetailsLog, FAILED_LEAD, HeroHeading, LogEntry, PageHero, StatusIcon, SupportNote } from "../components/Hero"
import { AuthedLayout } from "../components/Layouts"
import { HubApi } from "../lib/api"
import { DEV_FALLBACK_BASE_URL, getAppConfig } from "../lib/config"
@@ -36,12 +37,15 @@ export function SpawnPage() {
optionsForm: "",
})
- const [status, setStatus] = useState<"starting" | "failed">("starting")
+ // A hub-rendered spawn error means the spawn already failed — show the failed
+ // state instead of auto-retrying (which would silently loop).
+ const hasHubError = Boolean(cfg.errorHtmlMessage || cfg.errorMessage)
+ const [status, setStatus] = useState<"starting" | "failed">(hasHubError ? "failed" : "starting")
const [error, setError] = useState(null)
const started = useRef(false)
useEffect(() => {
- if (cfg.optionsForm) return
+ if (cfg.optionsForm || hasHubError) return
// React StrictMode double-invokes effects — guard against spawning twice.
if (started.current) return
started.current = true
@@ -55,7 +59,7 @@ export function SpawnPage() {
setStatus("failed")
setError(e.message)
})
- }, [cfg])
+ }, [cfg, hasHubError])
const errorHtml = cfg.errorHtmlMessage
const errorText = cfg.errorMessage
@@ -105,6 +109,8 @@ export function SpawnPage() {
)
}
+ const failed = status === "failed"
+
return (
-
-
- Starting your server
- You'll be redirected to the progress page in a moment
-
-
- {status === "starting" ? (
- <>
-
- Requesting your server…
- >
+
+
+
+
+ {failed ? "Failed to start your server" : "Starting your server"}
+ {failed ? (
+ {FAILED_LEAD}
) : (
- <>
-
-
-
- Spawn failed
-
- {error}
-
- window.location.reload()}>
- Try again
-
- >
+ You will be redirected to the progress page in a moment.
)}
-
-
+
+
+ {failed ? (
+ <>
+ window.location.reload()}>
+
+ Try again
+
+
+
+
+ {errorHtml ? (
+
+ ) : (errorText ?? error) ? (
+ {errorText ?? error}
+ ) : (
+ No failure details available.
+ )}
+
+ >
+ ) : (
+
+ )}
+
)
}
diff --git a/hub/ui/src/pages/spawn_pending.tsx b/hub/ui/src/pages/spawn_pending.tsx
index 60d5b5f7..db161a6a 100644
--- a/hub/ui/src/pages/spawn_pending.tsx
+++ b/hub/ui/src/pages/spawn_pending.tsx
@@ -1,17 +1,18 @@
import { useEffect, useMemo, useState } from "react"
-import {
- Alert,
- Button,
- Card,
- CardContent,
- CardDescription,
- CardHeader,
- CardTitle,
- Progress,
-} from "@e-infra/design-system"
-import { LoaderCircle, RotateCw, Square, TriangleAlert } from "lucide-react"
+import { Alert, Button, H1, H2, Lead, Muted, Progress, Separator } from "@e-infra/design-system"
+import { Atom, RefreshCw, Square, TriangleAlert } from "lucide-react"
+import {
+ DetailsLog,
+ FAILED_LEAD,
+ HeroHeading,
+ LogEntry,
+ PageHero,
+ StatusIcon,
+ SupportNote,
+ WaitHint,
+} from "../components/Hero"
import { AuthedLayout } from "../components/Layouts"
import { HubApi } from "../lib/api"
import { DEV_FALLBACK_BASE_URL, getAppConfig } from "../lib/config"
@@ -33,6 +34,7 @@ export function SpawnPendingPage() {
const [retrying, setRetrying] = useState(false)
const [retryError, setRetryError] = useState(null)
+ // Stream gone but server not ready — fall back to polling for the outcome.
useEffect(() => {
if (status === "ready" || status === "failed") return
if (!streamEnded) return
@@ -48,7 +50,7 @@ export function SpawnPendingPage() {
window.location.href = `${cfg.baseUrl}home`
}
} catch {
- // transient
+ /* transient API errors — keep polling */
}
}
void poll()
@@ -83,6 +85,9 @@ export function SpawnPendingPage() {
}
}
+ const failed = status === "failed"
+ const showProgress = !failed && !streamEnded
+
return (
-
-
-
- {status === "failed" ? (
-
- ) : (
-
- )}
- {status === "failed" ? "Server failed to start" : "Your server is starting up"}
-
-
- {status === "failed"
- ? "The server could not be started. Try starting it again."
- : "You will be redirected automatically when it is ready"}
-
-
-
- {status !== "failed" ? (
- <>
- {streamEnded ? null : }
-
- {streamEnded ? "Waiting for server to become ready…" : (currentMessage ?? "Contacting the spawner…")}
-
- {cancelError ? {cancelError} : null}
- void cancelStartup()}>
-
- {cancelling ? "Cancelling startup…" : "Cancel startup"}
-
- >
- ) : null}
- {status === "failed" ? (
-
-
-
- The server failed to start.{currentMessage ? ` ${currentMessage}` : ""}
- {retryError ? ` ${retryError}` : ""}
-
-
- ) : null}
-
- Event log
-
- {log.length === 0 ? (
- No events yet.
- ) : (
- log.map((entry, i) =>
- entry.html ? (
-
- ) : (
-
- {entry.text}
-
- )
- )
- )}
-
-
- {status === "failed" ? (
- void retry()}>
-
- {retrying ? "Retrying…" : "Retry starting server"}
-
- ) : null}
-
-
+
+
+
+
+ {failed ? "Failed to start your server" : "Starting your server…"}
+ {failed ? (
+ {FAILED_LEAD}
+ ) : (
+ You will be redirected automatically when it's ready for you.
+ )}
+
+
+ {failed ? (
+ void retry()}>
+
+ {retrying ? "Trying again…" : "Try again"}
+
+ ) : null}
+
+ {failed ? : null}
+
+ {showProgress ? (
+
+
{Math.round(progress)}%
+
+
{currentMessage ?? "Contacting the spawner…"}
+
+ ) : null}
+
+ {!failed && streamEnded ? Waiting for server to become ready… : null}
+
+ {!failed ? This may take a few minutes : null}
+
+ {retryError ? {retryError} : null}
+ {cancelError ? {cancelError} : null}
+
+
+
+
+ {log.length === 0 ? (
+ No events yet.
+ ) : (
+ log.map((entry, i) => (
+
+ {entry.text}
+
+ ))
+ )}
+
+
+ {!failed ? (
+ void cancelStartup()}>
+
+ {cancelling ? "Cancelling startup…" : "Cancel startup"}
+
+ ) : null}
+
)
}
diff --git a/hub/ui/src/pages/stop_pending.tsx b/hub/ui/src/pages/stop_pending.tsx
index df24bfb8..35cc91dc 100644
--- a/hub/ui/src/pages/stop_pending.tsx
+++ b/hub/ui/src/pages/stop_pending.tsx
@@ -1,8 +1,9 @@
import { useEffect, useMemo, useState } from "react"
-import { Button, Card, CardContent, CardDescription, CardHeader, CardTitle } from "@e-infra/design-system"
-import { LoaderCircle, RefreshCw } from "lucide-react"
+import { Button, H1, Muted } from "@e-infra/design-system"
+import { Atom, RefreshCw } from "lucide-react"
+import { HeroHeading, PageHero, StatusIcon, WaitHint } from "../components/Hero"
import { AuthedLayout } from "../components/Layouts"
import { HubApi } from "../lib/api"
import { getAppConfig } from "../lib/config"
@@ -39,24 +40,23 @@ export function StopPendingPage() {
logoutUrl={cfg.logoutUrl}
announcement={cfg.announcement}
>
-
-
-
-
- Your server is stopping
-
- You can start it again once it has finished stopping
-
-
- This usually takes a few seconds…
- {elapsed >= 30 ? (
- window.location.reload()}>
-
- Refresh
-
- ) : null}
-
-
+
+
+
+
+ Stopping your server…
+ You can start it again once it has finished stopping.
+
+
+ This usually takes a few seconds
+
+ {elapsed >= 30 ? (
+ window.location.reload()}>
+
+ Refresh
+
+ ) : null}
+
)
}
diff --git a/hub/ui/src/pages/token.tsx b/hub/ui/src/pages/token.tsx
index d98bc3cf..7fc56332 100644
--- a/hub/ui/src/pages/token.tsx
+++ b/hub/ui/src/pages/token.tsx
@@ -3,6 +3,15 @@ import { useCallback, useEffect, useMemo, useState } from "react"
import {
Alert,
AlertDescription,
+ AlertDialog,
+ AlertDialogAction,
+ AlertDialogCancel,
+ AlertDialogContent,
+ AlertDialogDescription,
+ AlertDialogFooter,
+ AlertDialogHeader,
+ AlertDialogTitle,
+ AlertDialogTrigger,
AlertTitle,
Button,
Card,
@@ -29,7 +38,8 @@ import {
import { Check, Copy, KeyRound, Trash2 } from "lucide-react"
import { toast } from "sonner"
-import { AuthedLayout } from "../components/Layouts"
+import { IconCardHeader } from "../components/IconCard"
+import { AuthedLayout, PageBody } from "../components/Layouts"
import { HubApi, type HubTokenModel } from "../lib/api"
import { getAppConfig } from "../lib/config"
import { formatTime } from "../lib/format"
@@ -64,6 +74,38 @@ function parseExpiryOptions(html: string): ExpiryOption[] {
}))
}
+/** Revoke is irreversible (scripts using the token lose access) — always confirm first. */
+function RevokeButton({ revoke }: { revoke: () => void }) {
+ return (
+
+
+
+
+ Revoke
+
+
+
+
+ Revoke this token?
+
+ Applications and scripts using this token will lose access immediately and cannot be restored. Revoking a
+ token for a running server requires restarting that server.
+
+
+
+ Cancel
+
+ Revoke
+
+
+
+
+ )
+}
+
export function TokenPage() {
const cfg = getAppConfig({
tokenExpiresInOptionsHtml: "",
@@ -152,15 +194,13 @@ export function TokenPage() {
current="token"
announcement={cfg.announcement}
>
-
+
-
-
-
- New API token
-
- Create a token for scripts and command-line access
-
+
Note
@@ -228,7 +268,6 @@ export function TokenPage() {
API tokens
- {/* mirroring the stock token.html copy */}
Tokens with access to the JupyterHub API. Revoking a token for a running server requires restarting that
server.
@@ -269,10 +308,7 @@ export function TokenPage() {
{t.created ? formatTime(t.created) : "N/A"}
{formatTime(t.expires_at)}
- revokeToken(t.id)}>
-
- Revoke
-
+ revokeToken(t.id)} />
))}
@@ -302,10 +338,7 @@ export function TokenPage() {
{formatTime(t.last_activity)}
{formatTime(t.created)}
- revokeToken(t.id)}>
-
- Revoke
-
+ revokeToken(t.id)} />
))}
@@ -354,10 +387,7 @@ export function TokenPage() {
{formatTime(c.lastActivity)}
{formatTime(c.created)}
- revokeToken(c.tokenId)}>
-
- Revoke
-
+ revokeToken(c.tokenId)} />
))}
@@ -367,7 +397,7 @@ export function TokenPage() {
) : null}
-
+
)
}
diff --git a/hub/ui/stop_pending.html b/hub/ui/stop_pending.html
index 4dacba7a..215f5568 100644
--- a/hub/ui/stop_pending.html
+++ b/hub/ui/stop_pending.html
@@ -15,7 +15,7 @@
userName: {{ user.name | tojson }},
xsrf: {{ xsrf_token | default("") | tojson }},
logoutUrl: {{ logout_url | default("") | tojson }},
- adminAccess: {{ admin_access | default(false) | tojson }},
+ adminAccess: {{ admin_access | default(user.admin) | default(false) | tojson }},
announcement: {{ announcement | default(none) | tojson }}
};
diff --git a/hub/ui/token.html b/hub/ui/token.html
index 4e4e3bd0..ac9b2046 100644
--- a/hub/ui/token.html
+++ b/hub/ui/token.html
@@ -15,7 +15,7 @@
userName: {{ user.name | tojson }},
xsrf: {{ xsrf_token | default("") | tojson }},
logoutUrl: {{ logout_url | default("") | tojson }},
- adminAccess: {{ admin_access | default(false) | tojson }},
+ adminAccess: {{ admin_access | default(user.admin) | default(false) | tojson }},
announcement: {{ announcement | default(none) | tojson }},
tokenExpiresInOptionsHtml: {{ token_expires_in_options_html | default("") | tojson }},
{% if oauth_clients %}
diff --git a/landing/package.json b/landing/package.json
index b0fa07c0..225922a9 100644
--- a/landing/package.json
+++ b/landing/package.json
@@ -13,7 +13,7 @@
"format:check": "prettier --check \"src/**/*.{ts,tsx,css}\""
},
"dependencies": {
- "@e-infra/design-system": "^0.1.8",
+ "@e-infra/design-system": "^0.1.9",
"lucide-react": "^1.16.0",
"react": "^19.2.5",
"react-dom": "^19.2.5",
diff --git a/landing/pnpm-lock.yaml b/landing/pnpm-lock.yaml
index d42d848f..febc8bd2 100644
--- a/landing/pnpm-lock.yaml
+++ b/landing/pnpm-lock.yaml
@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@e-infra/design-system':
- specifier: ^0.1.8
- version: 0.1.8(dfa7b7415f8a7e73ea2511c9a9dbf28f)
+ specifier: ^0.1.9
+ version: 0.1.9(f539269b6a986af84314b3585c43750f)
lucide-react:
specifier: ^1.16.0
version: 1.25.0(react@19.2.7)
@@ -67,6 +67,10 @@ packages:
resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==}
engines: {node: '>=6.9.0'}
+ '@babel/code-frame@7.29.7':
+ resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/compat-data@7.29.3':
resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==}
engines: {node: '>=6.9.0'}
@@ -109,6 +113,10 @@ packages:
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-validator-identifier@7.29.7':
+ resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-validator-option@7.27.1':
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
engines: {node: '>=6.9.0'}
@@ -149,10 +157,9 @@ packages:
'@date-fns/tz@1.5.0':
resolution: {integrity: sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==}
- '@e-infra/design-system@0.1.8':
- resolution: {integrity: sha512-FRElLtavr5h5LKUXGIpIYf57paGX3N44N392CKqEsMqDiILoqSGjFZ7eEPZS6d0rtuzP5TBFZyG4uaBbv1LTnw==}
+ '@e-infra/design-system@0.1.9':
+ resolution: {integrity: sha512-0k95WQvr5Tqf9ETm8gAcjilOqLnYQLobooj00kWiTRmupkW5rtt5JvAAe8geiIsyeVHqE2hh8IIz/6D0BfzilQ==}
peerDependencies:
- '@hookform/resolvers': ^5.0.0
'@radix-ui/react-accordion': ^1.0.0
'@radix-ui/react-alert-dialog': ^1.0.0
'@radix-ui/react-aspect-ratio': ^1.0.0
@@ -162,7 +169,6 @@ packages:
'@radix-ui/react-context-menu': ^2.0.0
'@radix-ui/react-dialog': ^1.0.0
'@radix-ui/react-dropdown-menu': ^2.0.0
- '@radix-ui/react-hover-card': ^1.0.0
'@radix-ui/react-label': ^2.0.0
'@radix-ui/react-menubar': ^1.0.0
'@radix-ui/react-navigation-menu': ^1.0.0
@@ -182,10 +188,7 @@ packages:
class-variance-authority: ^0.7.0
clsx: ^2.0.0
cmdk: ^1.1.1
- date-fns: ^4.0.0
embla-carousel-react: ^8.0.0
- input-otp: ^1.0.0
- next-themes: ^0.3.0 || ^0.4.0
react: ^18.0.0 || ^19.0.0
react-day-picker: ^9.13.0
react-dom: ^18.0.0 || ^19.0.0
@@ -195,8 +198,6 @@ packages:
sonner: ^1.0.0 || ^2.0.0
tailwind-merge: ^2.0.0 || ^3.0.0
tailwindcss: ^4.0.0
- vaul: ^1.1.2
- zod: ^3.0.0 || ^4.0.0
'@emnapi/runtime@1.10.0':
resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
@@ -372,11 +373,6 @@ packages:
'@floating-ui/utils@0.2.11':
resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==}
- '@hookform/resolvers@5.4.0':
- resolution: {integrity: sha512-EIsqr/t/qbinPIhGjMdtvutIN1Kk4uwbROE9/UQ93CAVGR7GkA7Y92+fX80OzXi/OB67jVFYwKGO1WzkxmkFZw==}
- peerDependencies:
- react-hook-form: ^7.55.0
-
'@ianvs/prettier-plugin-sort-imports@4.7.1':
resolution: {integrity: sha512-jmTNYGlg95tlsoG3JLCcuC4BrFELJtLirLAkQW/71lXSyOhVt/Xj7xWbbGcuVbNq1gwWgSyMrPjJc9Z30hynVw==}
peerDependencies:
@@ -793,19 +789,6 @@ packages:
'@types/react-dom':
optional: true
- '@radix-ui/react-hover-card@1.1.15':
- resolution: {integrity: sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==}
- peerDependencies:
- '@types/react': '*'
- '@types/react-dom': '*'
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
- peerDependenciesMeta:
- '@types/react':
- optional: true
- '@types/react-dom':
- optional: true
-
'@radix-ui/react-id@1.1.1':
resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
@@ -1520,14 +1503,17 @@ packages:
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
- '@types/hast@3.0.4':
- resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
+ '@types/estree@1.0.9':
+ resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==}
+
+ '@types/hast@3.0.5':
+ resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==}
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
- '@types/mdx@2.0.13':
- resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
+ '@types/mdx@2.0.14':
+ resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==}
'@types/ms@2.1.0':
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
@@ -1549,8 +1535,8 @@ packages:
'@types/use-sync-external-store@0.0.6':
resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
- '@ungap/structured-clone@1.3.1':
- resolution: {integrity: sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==}
+ '@ungap/structured-clone@1.3.3':
+ resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==}
'@vitejs/plugin-react@4.7.0':
resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
@@ -1563,8 +1549,8 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn@8.16.0:
- resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==}
+ acorn@8.18.0:
+ resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -1896,8 +1882,8 @@ packages:
hast-util-whitespace@3.0.0:
resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
- highlight.js@11.11.1:
- resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==}
+ highlight.js@11.11.2:
+ resolution: {integrity: sha512-oaXMACAU0kzOMXBjWpNcX+vlwSBCIAiZ9BHa7gA15NOTtT2L/l8OSZDuqS2XppOhZBPJ7hm4o8ep2kyuip2uEQ==}
engines: {node: '>=12.0.0'}
immer@10.2.0:
@@ -1909,12 +1895,6 @@ packages:
inline-style-parser@0.2.7:
resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
- input-otp@1.4.2:
- resolution: {integrity: sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==}
- peerDependencies:
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
-
internmap@2.0.3:
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
engines: {node: '>=12'}
@@ -1950,8 +1930,8 @@ packages:
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
- js-yaml@3.14.2:
- resolution: {integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==}
+ js-yaml@3.15.1:
+ resolution: {integrity: sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==}
hasBin: true
jsesc@3.1.0:
@@ -2056,6 +2036,11 @@ packages:
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ lucide-react@1.31.0:
+ resolution: {integrity: sha512-G8u2eEtoHUnUa9f8lbvqDhCiORMnYLdUEo06EEG9MQvHQrInKcX3Pa2TH39MM5qyzRcWETxB0+aOwAPI1g1kEg==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
@@ -2243,12 +2228,6 @@ packages:
peerDependencies:
react: '>=16'
- next-themes@0.4.6:
- resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==}
- peerDependencies:
- react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
- react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc
-
node-releases@2.0.46:
resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==}
engines: {node: '>=18'}
@@ -2334,8 +2313,8 @@ packages:
engines: {node: '>=14'}
hasBin: true
- property-information@7.1.0:
- resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
+ property-information@7.2.0:
+ resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==}
react-day-picker@9.14.0:
resolution: {integrity: sha512-tBaoDWjPwe0M5pGrum4H0SR6Lyk+BO9oHnp9JbKpGKW2mlraNPgP9BMfsg5pWpwrssARmeqk7YBl2oXutZTaHA==}
@@ -2567,6 +2546,9 @@ packages:
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ tw-animate-css@1.4.0:
+ resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==}
+
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
@@ -2630,12 +2612,6 @@ packages:
peerDependencies:
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- vaul@1.1.2:
- resolution: {integrity: sha512-ZFkClGpWyI2WUQjdLJ/BaGuV6AVQiJ3uELGk3OYtP+B6yCO7Cmn9vPFXVJkRaGkOJu3m8bQMgtyzNHixULceQA==}
- peerDependencies:
- react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
- react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
-
vfile-matter@5.0.1:
resolution: {integrity: sha512-o6roP82AiX0XfkyTHyRCMXgHfltUNlXSEqCIS80f+mbAyiQBE2fxtDVMtseyytGx75sihiJFo/zR6r/4LTs2Cw==}
@@ -2706,9 +2682,6 @@ packages:
engines: {node: '>= 14.6'}
hasBin: true
- zod@4.4.3:
- resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==}
-
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -2720,6 +2693,12 @@ snapshots:
js-tokens: 4.0.0
picocolors: 1.1.1
+ '@babel/code-frame@7.29.7':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.29.7
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
'@babel/compat-data@7.29.3': {}
'@babel/core@7.29.0':
@@ -2782,6 +2761,8 @@ snapshots:
'@babel/helper-validator-identifier@7.28.5': {}
+ '@babel/helper-validator-identifier@7.29.7': {}
+
'@babel/helper-validator-option@7.27.1': {}
'@babel/helpers@7.29.2':
@@ -2828,9 +2809,8 @@ snapshots:
'@date-fns/tz@1.5.0': {}
- '@e-infra/design-system@0.1.8(dfa7b7415f8a7e73ea2511c9a9dbf28f)':
+ '@e-infra/design-system@0.1.9(f539269b6a986af84314b3585c43750f)':
dependencies:
- '@hookform/resolvers': 5.4.0(react-hook-form@7.76.1(react@19.2.7))
'@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-aspect-ratio': 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
@@ -2840,7 +2820,6 @@ snapshots:
'@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-label': 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
'@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
@@ -2860,13 +2839,10 @@ snapshots:
class-variance-authority: 0.7.1
clsx: 2.1.1
cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- date-fns: 4.3.0
embla-carousel-react: 8.6.0(react@19.2.7)
gray-matter: 4.0.3
- input-otp: 1.4.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- lucide-react: 1.25.0(react@19.2.7)
+ lucide-react: 1.31.0(react@19.2.7)
next-mdx-remote: 6.0.0(@types/react@19.2.15)(react@19.2.7)
- next-themes: 0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react: 19.2.7
react-day-picker: 9.14.0(react@19.2.7)
react-dom: 19.2.7(react@19.2.7)
@@ -2879,8 +2855,7 @@ snapshots:
sonner: 2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
tailwind-merge: 3.6.0
tailwindcss: 4.3.3
- vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- zod: 4.4.3
+ tw-animate-css: 1.4.0
transitivePeerDependencies:
- '@types/react'
- supports-color
@@ -2985,11 +2960,6 @@ snapshots:
'@floating-ui/utils@0.2.11': {}
- '@hookform/resolvers@5.4.0(react-hook-form@7.76.1(react@19.2.7))':
- dependencies:
- '@standard-schema/utils': 0.3.0
- react-hook-form: 7.76.1(react@19.2.7)
-
'@ianvs/prettier-plugin-sort-imports@4.7.1(prettier@3.8.3)':
dependencies:
'@babel/generator': 7.29.1
@@ -3118,11 +3088,11 @@ snapshots:
'@mdx-js/mdx@3.1.1':
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
- '@types/mdx': 2.0.13
- acorn: 8.16.0
+ '@types/hast': 3.0.5
+ '@types/mdx': 2.0.14
+ acorn: 8.18.0
collapse-white-space: 2.1.0
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
@@ -3131,7 +3101,7 @@ snapshots:
hast-util-to-jsx-runtime: 2.3.6
markdown-extensions: 2.0.0
recma-build-jsx: 1.0.0
- recma-jsx: 1.0.1(acorn@8.16.0)
+ recma-jsx: 1.0.1(acorn@8.18.0)
recma-stringify: 1.0.0
rehype-recma: 1.0.0
remark-mdx: 3.1.1
@@ -3148,7 +3118,7 @@ snapshots:
'@mdx-js/react@3.1.1(@types/react@19.2.15)(react@19.2.7)':
dependencies:
- '@types/mdx': 2.0.13
+ '@types/mdx': 2.0.14
'@types/react': 19.2.15
react: 19.2.7
@@ -3367,23 +3337,6 @@ snapshots:
'@types/react': 19.2.15
'@types/react-dom': 19.2.3(@types/react@19.2.15)
- '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)':
- dependencies:
- '@radix-ui/primitive': 1.1.3
- '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.15)(react@19.2.7)
- '@radix-ui/react-context': 1.1.2(@types/react@19.2.15)(react@19.2.7)
- '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.15)(react@19.2.7)
- react: 19.2.7
- react-dom: 19.2.7(react@19.2.7)
- optionalDependencies:
- '@types/react': 19.2.15
- '@types/react-dom': 19.2.3(@types/react@19.2.15)
-
'@radix-ui/react-id@1.1.1(@types/react@19.2.15)(react@19.2.7)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.15)(react@19.2.7)
@@ -4041,11 +3994,13 @@ snapshots:
'@types/estree-jsx@1.0.5':
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/estree@1.0.8': {}
- '@types/hast@3.0.4':
+ '@types/estree@1.0.9': {}
+
+ '@types/hast@3.0.5':
dependencies:
'@types/unist': 3.0.3
@@ -4053,7 +4008,7 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
- '@types/mdx@2.0.13': {}
+ '@types/mdx@2.0.14': {}
'@types/ms@2.1.0': {}
@@ -4071,7 +4026,7 @@ snapshots:
'@types/use-sync-external-store@0.0.6': {}
- '@ungap/structured-clone@1.3.1': {}
+ '@ungap/structured-clone@1.3.3': {}
'@vitejs/plugin-react@4.7.0(vite@6.4.2(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.0))':
dependencies:
@@ -4085,11 +4040,11 @@ snapshots:
transitivePeerDependencies:
- supports-color
- acorn-jsx@5.3.2(acorn@8.16.0):
+ acorn-jsx@5.3.2(acorn@8.18.0):
dependencies:
- acorn: 8.16.0
+ acorn: 8.18.0
- acorn@8.16.0: {}
+ acorn@8.18.0: {}
argparse@1.0.10:
dependencies:
@@ -4296,7 +4251,7 @@ snapshots:
esast-util-from-js@2.0.1:
dependencies:
'@types/estree-jsx': 1.0.5
- acorn: 8.16.0
+ acorn: 8.18.0
esast-util-from-estree: 2.0.0
vfile-message: 4.0.3
@@ -4337,7 +4292,7 @@ snapshots:
estree-util-attach-comments@3.0.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
estree-util-build-jsx@3.0.1:
dependencies:
@@ -4350,7 +4305,7 @@ snapshots:
estree-util-scope@1.0.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
devlop: 1.1.0
estree-util-to-js@2.0.0:
@@ -4366,7 +4321,7 @@ snapshots:
estree-walker@3.0.3:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
eventemitter3@5.0.4: {}
@@ -4397,24 +4352,24 @@ snapshots:
gray-matter@4.0.3:
dependencies:
- js-yaml: 3.14.2
+ js-yaml: 3.15.1
kind-of: 6.0.3
section-matter: 1.0.0
strip-bom-string: 1.0.0
hast-util-heading-rank@3.0.0:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
hast-util-is-element@3.0.0:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
hast-util-to-estree@3.1.3:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
comma-separated-tokens: 2.0.3
devlop: 1.1.0
estree-util-attach-comments: 3.0.0
@@ -4423,7 +4378,7 @@ snapshots:
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.1.0
+ property-information: 7.2.0
space-separated-tokens: 2.0.2
style-to-js: 1.1.21
unist-util-position: 5.0.0
@@ -4433,8 +4388,8 @@ snapshots:
hast-util-to-jsx-runtime@2.3.6:
dependencies:
- '@types/estree': 1.0.8
- '@types/hast': 3.0.4
+ '@types/estree': 1.0.9
+ '@types/hast': 3.0.5
'@types/unist': 3.0.3
comma-separated-tokens: 2.0.3
devlop: 1.1.0
@@ -4443,7 +4398,7 @@ snapshots:
mdast-util-mdx-expression: 2.0.1
mdast-util-mdx-jsx: 3.2.0
mdast-util-mdxjs-esm: 2.0.1
- property-information: 7.1.0
+ property-information: 7.2.0
space-separated-tokens: 2.0.2
style-to-js: 1.1.21
unist-util-position: 5.0.0
@@ -4453,20 +4408,20 @@ snapshots:
hast-util-to-string@3.0.1:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
hast-util-to-text@4.0.2:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/unist': 3.0.3
hast-util-is-element: 3.0.0
unist-util-find-after: 5.0.0
hast-util-whitespace@3.0.0:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
- highlight.js@11.11.1: {}
+ highlight.js@11.11.2: {}
immer@10.2.0: {}
@@ -4474,11 +4429,6 @@ snapshots:
inline-style-parser@0.2.7: {}
- input-otp@1.4.2(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
- dependencies:
- react: 19.2.7
- react-dom: 19.2.7(react@19.2.7)
-
internmap@2.0.3: {}
is-alphabetical@2.0.1: {}
@@ -4502,7 +4452,7 @@ snapshots:
js-tokens@4.0.0: {}
- js-yaml@3.14.2:
+ js-yaml@3.15.1:
dependencies:
argparse: 1.0.10
esprima: 4.0.1
@@ -4566,9 +4516,9 @@ snapshots:
lowlight@3.3.0:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
devlop: 1.1.0
- highlight.js: 11.11.1
+ highlight.js: 11.11.2
lru-cache@5.1.1:
dependencies:
@@ -4578,6 +4528,10 @@ snapshots:
dependencies:
react: 19.2.7
+ lucide-react@1.31.0(react@19.2.7):
+ dependencies:
+ react: 19.2.7
+
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -4670,7 +4624,7 @@ snapshots:
mdast-util-mdx-expression@2.0.1:
dependencies:
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.3
@@ -4681,7 +4635,7 @@ snapshots:
mdast-util-mdx-jsx@3.2.0:
dependencies:
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/mdast': 4.0.4
'@types/unist': 3.0.3
ccount: 2.0.1
@@ -4708,7 +4662,7 @@ snapshots:
mdast-util-mdxjs-esm@2.0.1:
dependencies:
'@types/estree-jsx': 1.0.5
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.3
@@ -4723,9 +4677,9 @@ snapshots:
mdast-util-to-hast@13.2.1:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.3.1
+ '@ungap/structured-clone': 1.3.3
devlop: 1.1.0
micromark-util-sanitize-uri: 2.0.1
trim-lines: 3.0.1
@@ -4832,7 +4786,7 @@ snapshots:
micromark-extension-mdx-expression@3.0.1:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
devlop: 1.1.0
micromark-factory-mdx-expression: 2.0.3
micromark-factory-space: 2.0.1
@@ -4843,7 +4797,7 @@ snapshots:
micromark-extension-mdx-jsx@3.0.2:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
devlop: 1.1.0
estree-util-is-identifier-name: 3.0.0
micromark-factory-mdx-expression: 2.0.3
@@ -4860,7 +4814,7 @@ snapshots:
micromark-extension-mdxjs-esm@3.0.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
devlop: 1.1.0
micromark-core-commonmark: 2.0.3
micromark-util-character: 2.1.1
@@ -4872,8 +4826,8 @@ snapshots:
micromark-extension-mdxjs@3.0.0:
dependencies:
- acorn: 8.16.0
- acorn-jsx: 5.3.2(acorn@8.16.0)
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
micromark-extension-mdx-expression: 3.0.1
micromark-extension-mdx-jsx: 3.0.2
micromark-extension-mdx-md: 2.0.0
@@ -4896,7 +4850,7 @@ snapshots:
micromark-factory-mdx-expression@2.0.3:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
devlop: 1.1.0
micromark-factory-space: 2.0.1
micromark-util-character: 2.1.1
@@ -4960,7 +4914,7 @@ snapshots:
micromark-util-events-to-acorn@2.0.3:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
'@types/unist': 3.0.3
devlop: 1.1.0
estree-util-visit: 2.0.0
@@ -5028,7 +4982,7 @@ snapshots:
next-mdx-remote@6.0.0(@types/react@19.2.15)(react@19.2.7):
dependencies:
- '@babel/code-frame': 7.29.0
+ '@babel/code-frame': 7.29.7
'@mdx-js/mdx': 3.1.1
'@mdx-js/react': 3.1.1(@types/react@19.2.15)(react@19.2.7)
react: 19.2.7
@@ -5040,11 +4994,6 @@ snapshots:
- '@types/react'
- supports-color
- next-themes@0.4.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
- dependencies:
- react: 19.2.7
- react-dom: 19.2.7(react@19.2.7)
-
node-releases@2.0.46: {}
nth-check@2.1.1:
@@ -5081,7 +5030,7 @@ snapshots:
prettier@3.8.3: {}
- property-information@7.1.0: {}
+ property-information@7.2.0: {}
react-day-picker@9.14.0(react@19.2.7):
dependencies:
@@ -5169,14 +5118,14 @@ snapshots:
recma-build-jsx@1.0.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
estree-util-build-jsx: 3.0.1
vfile: 6.0.3
- recma-jsx@1.0.1(acorn@8.16.0):
+ recma-jsx@1.0.1(acorn@8.18.0):
dependencies:
- acorn: 8.16.0
- acorn-jsx: 5.3.2(acorn@8.16.0)
+ acorn: 8.18.0
+ acorn-jsx: 5.3.2(acorn@8.18.0)
estree-util-to-js: 2.0.0
recma-parse: 1.0.0
recma-stringify: 1.0.0
@@ -5184,14 +5133,14 @@ snapshots:
recma-parse@1.0.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
esast-util-from-js: 2.0.1
unified: 11.0.5
vfile: 6.0.3
recma-stringify@1.0.0:
dependencies:
- '@types/estree': 1.0.8
+ '@types/estree': 1.0.9
estree-util-to-js: 2.0.0
unified: 11.0.5
vfile: 6.0.3
@@ -5204,7 +5153,7 @@ snapshots:
rehype-highlight@7.0.2:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
hast-util-to-text: 4.0.2
lowlight: 3.3.0
unist-util-visit: 5.1.0
@@ -5212,15 +5161,15 @@ snapshots:
rehype-recma@1.0.0:
dependencies:
- '@types/estree': 1.0.8
- '@types/hast': 3.0.4
+ '@types/estree': 1.0.9
+ '@types/hast': 3.0.5
hast-util-to-estree: 3.1.3
transitivePeerDependencies:
- supports-color
rehype-slug@6.0.0:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
github-slugger: 2.0.0
hast-util-heading-rank: 3.0.0
hast-util-to-string: 3.0.1
@@ -5255,7 +5204,7 @@ snapshots:
remark-rehype@11.1.2:
dependencies:
- '@types/hast': 3.0.4
+ '@types/hast': 3.0.5
'@types/mdast': 4.0.4
mdast-util-to-hast: 13.2.1
unified: 11.0.5
@@ -5405,6 +5354,8 @@ snapshots:
tslib@2.8.1: {}
+ tw-animate-css@1.4.0: {}
+
typescript@5.9.3: {}
unified@11.0.5:
@@ -5480,15 +5431,6 @@ snapshots:
dependencies:
react: 19.2.7
- vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
- dependencies:
- '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.15))(@types/react@19.2.15)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
- react: 19.2.7
- react-dom: 19.2.7(react@19.2.7)
- transitivePeerDependencies:
- - '@types/react'
- - '@types/react-dom'
-
vfile-matter@5.0.1:
dependencies:
vfile: 6.0.3
@@ -5546,6 +5488,4 @@ snapshots:
yaml@2.9.0: {}
- zod@4.4.3: {}
-
zwitch@2.0.4: {}