SummaryCard
The last card in setup: the whole studio at a glance, what's still missing, the owner's agreement to the terms, the privacy policy and the data processing agreement, and Create my studio. Only the owner's tap commits — Okami shows this card, it never creates the studio itself.
Playground
Summary
- Studio
- Atelier Mila · Nail studio · Obchodná 12, Bratislava
- Services
- 3 services, from €25
- Team
- Mila, Katka
- Hours
- Mon–Fri 9:00–18:00, Sat 10:00–14:00
That's everything. Create it when you're ready.
import { SummaryCard } from "@/components/shared/summary-card";
<SummaryCard
draft={draft}
onCreate={() => commitSetup({ agreed: true })}
legalLinks={legalLinks}
/>Something still missing
A part not filled in reads “Not yet”, and the card lists what's still needed, in words. The button stays pressable and is described by that list: pressed early, it moves focus to the list instead of committing.
Summary
- Studio
- Atelier Mila · Nail studio · Obchodná 12, Bratislava
- Services
- 3 services, from €25
- Team
- Not yet
- Hours
- Not yet
Still needed:
- Who takes clients
- Opening hours
import { SummaryCard } from "@/components/shared/summary-card";
<SummaryCard draft={draft} onCreate={create} legalLinks={legalLinks} />The agreement
Above the button, a Checkbox: the owner agrees to the terms, the privacy policy and the data processing agreement, each a link that opens in a new tab so setup stays put. Pressed without it, the button moves focus to the box, which turns red and says to tick it. The server refuses too, and keeps who agreed to which version of each document, in which language and when, with the studio. Try it in the playground: press Create my studio before ticking.
API reference
| Prop | Type | Default | Description |
|---|---|---|---|
| draft | SetupDraft | — | The whole draft; what's missing is worked out from it. |
| onCreate | () => void | — | The owner's tap on Create my studio. Run the commit here. |
| legalLinks | { terms: string; privacy: string; dpa: string } | — | Where the agreement's three documents are read: the marketing host's /terms, /privacy and /dpa. |
| creating | boolean | false | The commit is under way: the button shows a spinner and ignores presses. |
| labels | Partial<SummaryCardLabels> | English | Every word, including each missing part's name and the crafts. |
| locale | string | "en" | For prices and day names. |
| hideTitle | boolean | false | The heading is read, not shown — in the conversation, where Okami's line introduces the card. |
Guidelines
- The one primary action of setup. Nothing else on the screen is leaf while it shows.
- Validate again on the server when it's pressed: the card reflects the draft, it doesn't guard it.