Openstatus www.openstatus.dev

chore: lazy sunday improvements (#1531)

* chore: include theme

* fix: skip check if inactive

* chore: add sidebar configuration

* chore: increase page size

* fix: regions

* fix: missing robots txt file

authored by

Maximilian Kaske and committed by
GitHub
846403ea bc7a5e20

+168 -23
+31 -4
apps/dashboard/src/app/(dashboard)/status-pages/[id]/sidebar.tsx
··· 89 89 label: "Configuration", 90 90 items: [ 91 91 { 92 + label: "Legacy", 93 + value: <TableCellBoolean value={statusPage.legacyPage} />, 94 + }, 95 + { 92 96 label: "Protected", 93 97 value: <TableCellBoolean value={statusPage.passwordProtected} />, 94 98 }, 95 - { 96 - label: "Show values", 97 - value: <TableCellBoolean value={statusPage.showMonitorValues} />, 98 - }, 99 + ...(statusPage.legacyPage 100 + ? [ 101 + { 102 + label: "Show values", 103 + value: ( 104 + <TableCellBoolean value={statusPage.showMonitorValues} /> 105 + ), 106 + }, 107 + ] 108 + : [ 109 + { 110 + label: "Theme", 111 + value: statusPage.configuration?.theme ?? "-", 112 + }, 113 + { 114 + label: "Bar Value", 115 + value: statusPage.configuration?.type ?? "-", 116 + }, 117 + { 118 + label: "Card Value", 119 + value: statusPage.configuration?.value ?? "-", 120 + }, 121 + { 122 + label: "Show Uptime", 123 + value: statusPage.configuration?.uptime ? "Yes" : "No", 124 + }, 125 + ]), 99 126 ], 100 127 }, 101 128 {
-2
apps/dashboard/src/components/forms/monitor/form-general.tsx
··· 196 196 }); 197 197 } 198 198 199 - console.log(form.getValues("skipCheck")); 200 - 201 199 return ( 202 200 <Form {...form}> 203 201 <form onSubmit={form.handleSubmit(submitAction)} {...props}>
+1 -1
apps/dashboard/src/components/ui/data-table/data-table.tsx
··· 66 66 defaultSorting = [], 67 67 defaultColumnVisibility = {}, 68 68 defaultColumnFilters = [], 69 - defaultPagination = { pageIndex: 0, pageSize: 10 }, 69 + defaultPagination = { pageIndex: 0, pageSize: 20 }, 70 70 autoResetPageIndex = true, 71 71 columnFilters, 72 72 setColumnFilters,
+7
apps/docs/public/robots.txt
··· 1 + # Allow all crawlers 2 + User-agent: * 3 + Allow: / 4 + 5 + # Sitemap location 6 + Sitemap: https://docs.openstatus.dev/sitemap-index.xml 7 +
+1
apps/web/package.json
··· 34 34 "@openstatus/notification-webhook": "workspace:*", 35 35 "@openstatus/react": "workspace:*", 36 36 "@openstatus/regions": "workspace:*", 37 + "@openstatus/theme-store": "workspace:*", 37 38 "@openstatus/tinybird": "workspace:*", 38 39 "@openstatus/tracker": "workspace:*", 39 40 "@openstatus/ui": "workspace:*",
+2 -2
apps/web/src/app/(pages)/(content)/play/checker/_components/global-monitoring.tsx
··· 10 10 CardIcon, 11 11 CardTitle, 12 12 } from "@/components/marketing/card"; 13 - import { regionDict } from "@openstatus/regions"; 13 + import { AVAILABLE_REGIONS } from "@openstatus/regions"; 14 14 15 - const TOTAL_REGIONS = Object.keys(regionDict).length; 15 + const TOTAL_REGIONS = AVAILABLE_REGIONS.length; 16 16 17 17 const features: { 18 18 icon: ValidIcon;
+10 -3
apps/web/src/app/(pages)/(content)/play/checker/_components/informations.tsx
··· 1 1 import { Shell } from "@/components/dashboard/shell"; 2 - import { regionDict } from "@openstatus/regions"; 2 + import { 3 + AVAILABLE_REGIONS, 4 + type Region, 5 + regionDict, 6 + } from "@openstatus/regions"; 3 7 import { Separator } from "@openstatus/ui"; 4 8 5 - const TOTAL_REGIONS = Object.keys(regionDict).length; 9 + const TOTAL_REGIONS = AVAILABLE_REGIONS.length; 6 10 const TOTAL_PROVIDERS = Object.keys(regionDict).reduce((acc, region) => { 7 - return acc.add(regionDict[region as keyof typeof regionDict].provider); 11 + if (AVAILABLE_REGIONS.includes(region as Region)) { 12 + return acc.add(regionDict[region as keyof typeof regionDict].provider); 13 + } 14 + return acc; 8 15 }, new Set<"fly" | "koyeb" | "railway" | "private">()); 9 16 10 17 export function Informations() {
+2
apps/web/src/components/icons.tsx
··· 43 43 Network, 44 44 Newspaper, 45 45 Package, 46 + Palette, 46 47 PanelTop, 47 48 Pencil, 48 49 Play, ··· 93 94 hammer: Hammer, 94 95 search: Search, 95 96 "search-check": SearchCheck, 97 + palette: Palette, 96 98 fingerprint: Fingerprint, 97 99 pencil: Pencil, 98 100 "message-circle": MessageCircle,
+99 -1
apps/web/src/components/marketing/feature/index.tsx
··· 11 11 import { Tracker } from "@/components/tracker/tracker"; 12 12 import type { Region } from "@openstatus/db/src/schema/constants"; 13 13 import { monitorRegions } from "@openstatus/db/src/schema/constants"; 14 - import { Button, InputWithAddons } from "@openstatus/ui"; 14 + import { THEMES } from "@openstatus/theme-store"; 15 + import { 16 + Button, 17 + InputWithAddons, 18 + Tooltip, 19 + TooltipContent, 20 + TooltipProvider, 21 + TooltipTrigger, 22 + } from "@openstatus/ui"; 15 23 import { Skeleton } from "@openstatus/ui/src/components/skeleton"; 16 24 import { allUnrelateds } from "content-collections"; 17 25 import Link from "next/link"; ··· 269 277 {...maintenanceData} 270 278 /> 271 279 </div> 280 + } 281 + col={2} 282 + position={props.position || "left"} 283 + /> 284 + ); 285 + } 286 + 287 + export function FeatureStatusPageThemes( 288 + props: Partial<Pick<InteractiveFeatureProps, "position">>, 289 + ) { 290 + return ( 291 + <InteractiveFeature 292 + icon="palette" 293 + iconText="Make it yours" 294 + title="Themes." 295 + subTitle="Customize your status page with the built-in themes. Or just build your own." 296 + component={ 297 + <div className="space-y-3"> 298 + <style> 299 + {Object.values(THEMES) 300 + .map((theme) => { 301 + const lightVars = Object.entries(theme.light) 302 + .map(([key, value]) => `${key}: ${value};`) 303 + .join(" "); 304 + const darkVars = Object.entries(theme.dark) 305 + .map(([key, value]) => `${key}: ${value};`) 306 + .join(" "); 307 + 308 + return ` 309 + .theme-${theme.id} { 310 + ${lightVars} 311 + } 312 + .dark .theme-${theme.id} { 313 + ${darkVars} 314 + } 315 + `; 316 + }) 317 + .join("\n")} 318 + </style> 319 + <ul className="flex flex-col gap-2"> 320 + {Object.values(THEMES).map((theme) => ( 321 + <li 322 + key={theme.id} 323 + className={`theme-${theme.id} flex flex-row justify-between gap-1 font-mono text-sm`} 324 + > 325 + <div>{theme.name}</div> 326 + <div className="flex gap-2"> 327 + {Object.entries({ 328 + "--primary": "Primary", 329 + "--success": "Success", 330 + "--destructive": "Destructive", 331 + "--warning": "Degraded", 332 + "--info": "Maintenance", 333 + }).map(([color, label]) => ( 334 + <TooltipProvider key={color}> 335 + <Tooltip delayDuration={100}> 336 + <TooltipTrigger> 337 + <div 338 + className="size-4 rounded border border-border" 339 + style={{ backgroundColor: `var(${color})` }} 340 + /> 341 + </TooltipTrigger> 342 + <TooltipContent>{label}</TooltipContent> 343 + </Tooltip> 344 + </TooltipProvider> 345 + ))} 346 + </div> 347 + </li> 348 + ))} 349 + </ul> 350 + <div className="space-y-1 text-muted-foreground text-xs"> 351 + <p>More themes coming soon...</p> 352 + <p> 353 + Feel free to contribute to the theme store.{" "} 354 + <Link 355 + className="text-foreground underline" 356 + href="https://github.com/openstatusHQ/openstatus/tree/main/packages/theme-store#readme" 357 + > 358 + README.md 359 + </Link> 360 + </p> 361 + </div> 362 + </div> 363 + } 364 + action={ 365 + <Button variant="outline" className="w-max rounded-full" asChild> 366 + <Link href="https://themes.openstatus.dev" target="_blank"> 367 + Theme Explorer 368 + </Link> 369 + </Button> 272 370 } 273 371 col={2} 274 372 position={props.position || "left"}
+2
apps/web/src/config/landings.tsx
··· 17 17 FeatureRaycastIntegration, 18 18 FeatureRegions, 19 19 FeatureResponseDetails, 20 + FeatureStatusPageThemes, 20 21 FeatureStatusPageTracker, 21 22 FeatureStatusPageTrackerToggle, 22 23 FeatureStatusUpdates, ··· 62 63 blocks: [ 63 64 <FeatureCustomDomain key="feature-custom-domain" />, 64 65 <FeatureStatusPageTrackerToggle key="feature-status-page-tracker" />, 66 + <FeatureStatusPageThemes key="feature-status-page-themes" />, 65 67 <FeatureSubscriptions key="feature-subscriptions" />, 66 68 <FeatureStatusUpdates key="feature-status-updates" />, 67 69 <FeaturePasswordProtection key="feature-password-protection" />,
+1 -1
packages/api/src/router/monitor.ts
··· 1289 1289 } 1290 1290 1291 1291 // NOTE: we are checking the endpoint before saving 1292 - if (!input.skipCheck) { 1292 + if (!input.skipCheck && input.active) { 1293 1293 if (input.jobType === "http") { 1294 1294 await testHttp({ 1295 1295 url: input.url,
+12 -9
pnpm-lock.yaml
··· 190 190 version: 1.2.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 191 191 '@sentry/nextjs': 192 192 specifier: 10.22.0 193 - version: 10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1) 193 + version: 10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1) 194 194 '@stripe/stripe-js': 195 195 specifier: 2.1.6 196 196 version: 2.1.6 ··· 205 205 version: 11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2) 206 206 '@trpc/next': 207 207 specifier: 11.4.4 208 - version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 208 + version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 209 209 '@trpc/react-query': 210 210 specifier: 11.4.4 211 211 version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) ··· 665 665 version: 1.2.7(@types/react-dom@19.2.2(@types/react@19.2.2))(@types/react@19.2.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 666 666 '@sentry/nextjs': 667 667 specifier: 10.22.0 668 - version: 10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1) 668 + version: 10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1) 669 669 '@stripe/stripe-js': 670 670 specifier: 2.1.6 671 671 version: 2.1.6 ··· 680 680 version: 11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2) 681 681 '@trpc/next': 682 682 specifier: 11.4.4 683 - version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 683 + version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 684 684 '@trpc/react-query': 685 685 specifier: 11.4.4 686 686 version: 11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) ··· 874 874 '@openstatus/regions': 875 875 specifier: workspace:* 876 876 version: link:../../packages/regions 877 + '@openstatus/theme-store': 878 + specifier: workspace:* 879 + version: link:../../packages/theme-store 877 880 '@openstatus/tinybird': 878 881 specifier: workspace:* 879 882 version: link:../../packages/tinybird ··· 16381 16384 16382 16385 '@sentry/core@9.46.0': {} 16383 16386 16384 - '@sentry/nextjs@10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1)': 16387 + '@sentry/nextjs@10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1(esbuild@0.21.5))': 16385 16388 dependencies: 16386 16389 '@opentelemetry/api': 1.9.0 16387 16390 '@opentelemetry/semantic-conventions': 1.37.0 ··· 16393 16396 '@sentry/opentelemetry': 10.22.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) 16394 16397 '@sentry/react': 10.22.0(react@19.2.0) 16395 16398 '@sentry/vercel-edge': 10.22.0 16396 - '@sentry/webpack-plugin': 4.5.0(encoding@0.1.13)(webpack@5.97.1) 16399 + '@sentry/webpack-plugin': 4.5.0(encoding@0.1.13)(webpack@5.97.1(esbuild@0.21.5)) 16397 16400 next: 15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 16398 16401 resolve: 1.22.8 16399 16402 rollup: 4.45.1 ··· 16407 16410 - supports-color 16408 16411 - webpack 16409 16412 16410 - '@sentry/nextjs@10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1(esbuild@0.21.5))': 16413 + '@sentry/nextjs@10.22.0(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0)(webpack@5.97.1)': 16411 16414 dependencies: 16412 16415 '@opentelemetry/api': 1.9.0 16413 16416 '@opentelemetry/semantic-conventions': 1.37.0 ··· 16419 16422 '@sentry/opentelemetry': 10.22.0(@opentelemetry/api@1.9.0)(@opentelemetry/context-async-hooks@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/core@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@2.2.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.37.0) 16420 16423 '@sentry/react': 10.22.0(react@19.2.0) 16421 16424 '@sentry/vercel-edge': 10.22.0 16422 - '@sentry/webpack-plugin': 4.5.0(encoding@0.1.13)(webpack@5.97.1(esbuild@0.21.5)) 16425 + '@sentry/webpack-plugin': 4.5.0(encoding@0.1.13)(webpack@5.97.1) 16423 16426 next: 15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) 16424 16427 resolve: 1.22.8 16425 16428 rollup: 4.45.1 ··· 17188 17191 '@tanstack/react-query': 5.80.7(react@19.2.0) 17189 17192 '@trpc/react-query': 11.4.4(@tanstack/react-query@5.80.7(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2) 17190 17193 17191 - '@trpc/next@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2)': 17194 + '@trpc/next@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/react-query@11.4.4(@tanstack/react-query@5.81.5(react@19.2.0))(@trpc/client@11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2))(@trpc/server@11.4.4(typescript@5.7.2))(next@15.5.3(@opentelemetry/api@1.9.0)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.7.2)': 17192 17195 dependencies: 17193 17196 '@trpc/client': 11.4.4(@trpc/server@11.4.4(typescript@5.7.2))(typescript@5.7.2) 17194 17197 '@trpc/server': 11.4.4(typescript@5.7.2)