Section Load Error

Stands in for one dashboard section whose data could not be fetched. It exists because an empty result and a failed one used to be the same value: a failed getProgressSeries returned [] and rendered as a confident "за 0 співбесід" directly above a list of two graded interviews.

Default

Scoped to a section, never the page — the dashboard fetches run in Promise.all, so one failing leaves the others with real data. Retry calls router.refresh(), which re-runs the server render without discarding the sections that did load. Shown at 704px, the width the dashboard content column actually gives a section.

PropTypeDefaultDescription
titlestring—What failed, stated as a failure to load — never as an absence of data.
bodystring—Reassurance that nothing was lost, plus what to do. From dashboardCopy.loadError.
retryLabelstring—Label for the retry button, which calls router.refresh() — re-runs the server render without discarding the sections that did load.

Service unavailable

Same component with contactLabel + contactHref: used when the whole account backend (Supabase) is unreachable, not one fetch. Rendered by dashboard/layout.tsx in place of every /dashboard/** page, and only there — no banner or modal anywhere else, since the interview itself needs no account. Shown at 704px.

PropTypeDefaultDescription
contactLabelstring—Optional. With contactHref, renders a link (target=_blank, rel=noopener noreferrer) under the retry button.
contactHrefstring—Optional. LINKEDIN_URL from author-promo.ts — the single percent-encoded source.

Not an empty state

Side by side with EmptyState, because confusing the two is the whole bug. EmptyState is action-framed for first run: dashed border reading as a slot awaiting content, a ghost preview, a CTA onward. A failure has none of those properties — nothing is waiting, and the user did nothing to cause it.

Пройди першу співбесіду

Твій профіль навичок з'явиться тут одразу після першої оціненої співбесіди.

Почати співбесіду
Sergiy Klymkovych

VoiceMock was built by one designer

I'm Sergiy, a product designer. I built this trainer myself — research, design system, code. On LinkedIn I show how products like this come together, and what it changes in a designer's work.

Product Designer · AI Design Engineer · Designer for Startups

See it on LinkedIn