diff --git a/src/pages/sdk/ui/functions/OcAccountMenu.mdx b/src/pages/sdk/ui/functions/OcAccountMenu.mdx index 07cd665..0539bbc 100644 --- a/src/pages/sdk/ui/functions/OcAccountMenu.mdx +++ b/src/pages/sdk/ui/functions/OcAccountMenu.mdx @@ -15,7 +15,7 @@ export const metadata = { function OcAccountMenu(props: OcAccountMenuProps): any; ``` -Defined in: [account-menu.tsx:533](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L533) +Defined in: [account-menu.tsx:562](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L562) Connected variant — pulls the session from `useOcSession()`. This is what every consumer site with `` mounted should diff --git a/src/pages/sdk/ui/functions/OcAccountMenuView.mdx b/src/pages/sdk/ui/functions/OcAccountMenuView.mdx index a57324f..c7c82b6 100644 --- a/src/pages/sdk/ui/functions/OcAccountMenuView.mdx +++ b/src/pages/sdk/ui/functions/OcAccountMenuView.mdx @@ -15,7 +15,7 @@ export const metadata = { function OcAccountMenuView(__namedParameters: OcAccountMenuViewProps): any; ``` -Defined in: [account-menu.tsx:571](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L571) +Defined in: [account-menu.tsx:607](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L607) Presentational variant — takes a session as an explicit prop. Use this when your site runs its own auth context (e.g. ochk.io's diff --git a/src/pages/sdk/ui/interfaces/OcAccountMenuBuildInfo.mdx b/src/pages/sdk/ui/interfaces/OcAccountMenuBuildInfo.mdx index 65fb7a1..74e5e92 100644 --- a/src/pages/sdk/ui/interfaces/OcAccountMenuBuildInfo.mdx +++ b/src/pages/sdk/ui/interfaces/OcAccountMenuBuildInfo.mdx @@ -11,12 +11,12 @@ export const metadata = { # Interface: OcAccountMenuBuildInfo -Defined in: [account-menu.tsx:59](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L59) +Defined in: [account-menu.tsx:61](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L61) ## Properties | Property | Type | Description | Defined in | | ------ | ------ | ------ | ------ | -| <a id="property-repo"></a> `repo?` | `string` | GitHub `owner/repo` slug — combined with `sha` to produce the `https://github.com//commit/` link. | [account-menu.tsx:71](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L71) | -| <a id="property-sha"></a> `sha?` | `string` | 7+ character commit SHA. Render as `'dev'` (or omit) for local dev to suppress the GitHub link. | [account-menu.tsx:66](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L66) | -| <a id="property-version"></a> `version` | `string` | Display version string, e.g. `'0.5.0'` (rendered as `v0.5.0`). | [account-menu.tsx:61](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L61) | +| <a id="property-repo"></a> `repo?` | `string` | GitHub `owner/repo` slug — combined with `sha` to produce the `https://github.com//commit/` link. | [account-menu.tsx:73](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L73) | +| <a id="property-sha"></a> `sha?` | `string` | 7+ character commit SHA. Render as `'dev'` (or omit) for local dev to suppress the GitHub link. | [account-menu.tsx:68](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L68) | +| <a id="property-version"></a> `version` | `string` | Display version string, e.g. `'0.5.0'` (rendered as `v0.5.0`). | [account-menu.tsx:63](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L63) | diff --git a/src/pages/sdk/ui/interfaces/OcAccountMenuItem.mdx b/src/pages/sdk/ui/interfaces/OcAccountMenuItem.mdx index 6a83a8f..7f35891 100644 --- a/src/pages/sdk/ui/interfaces/OcAccountMenuItem.mdx +++ b/src/pages/sdk/ui/interfaces/OcAccountMenuItem.mdx @@ -11,7 +11,7 @@ export const metadata = { # Interface: OcAccountMenuItem -Defined in: [account-menu.tsx:47](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L47) +Defined in: [account-menu.tsx:49](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L49) `` — the canonical top-right account affordance for every family site. Replaces the older inline-styled `OcAccountChip` @@ -45,6 +45,6 @@ its tree (already standard in every consumer's `_app.tsx`). | Property | Type | Description | Defined in | | ------ | ------ | ------ | ------ | -| <a id="property-external"></a> `external?` | `boolean` | When `true`, opens in a new tab and renders a ↗ glyph after the label. Use for cross-domain links (e.g. `https://ochk.io/dashboard`). | [account-menu.tsx:56](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L56) | -| <a id="property-href"></a> `href` | `string` | Same-origin path or absolute URL. | [account-menu.tsx:49](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L49) | -| <a id="property-label"></a> `label` | `string` | Visible label. | [account-menu.tsx:51](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L51) | +| <a id="property-external"></a> `external?` | `boolean` | When `true`, opens in a new tab and renders a ↗ glyph after the label. Use for cross-domain links (e.g. `https://ochk.io/dashboard`). | [account-menu.tsx:58](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L58) | +| <a id="property-href"></a> `href` | `string` | Same-origin path or absolute URL. | [account-menu.tsx:51](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L51) | +| <a id="property-label"></a> `label` | `string` | Visible label. | [account-menu.tsx:53](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L53) | diff --git a/src/pages/sdk/ui/interfaces/OcAccountMenuProps.mdx b/src/pages/sdk/ui/interfaces/OcAccountMenuProps.mdx index 4508da2..75e20de 100644 --- a/src/pages/sdk/ui/interfaces/OcAccountMenuProps.mdx +++ b/src/pages/sdk/ui/interfaces/OcAccountMenuProps.mdx @@ -11,7 +11,7 @@ export const metadata = { # Interface: OcAccountMenuProps -Defined in: [account-menu.tsx:109](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L109) +Defined in: [account-menu.tsx:138](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L138) ## Extended by @@ -21,16 +21,16 @@ Defined in: [account-menu.tsx:109](https://github.com/orangecheck/oc-packages/bl | Property | Type | Description | Defined in | | ------ | ------ | ------ | ------ | -| <a id="property-build"></a> `build?` | [`OcAccountMenuBuildInfo`](OcAccountMenuBuildInfo.mdx) | Optional BuildFooter info. When present, renders a tiny mono footer at the bottom of the popover with `site · vX.Y.Z · sha` — the SHA links to the matching GitHub commit when `repo` is also provided. Drive this from your `next.config.ts` via `NEXT_PUBLIC_APP_VERSION` / `NEXT_PUBLIC_BUILD_SHA` env vars. | [account-menu.tsx:175](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L175) | -| <a id="property-classname"></a> `className?` | `string` | className overrides for layout-level customisation. | [account-menu.tsx:183](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L183) | -| <a id="property-current"></a> `current` | [`EcosystemSlug`](../type-aliases/EcosystemSlug.mdx) | Which family property this site IS. Used to label the section header (`§ signed in · vault.ochk.io`) and to suppress the family-dashboard menu item when the user is already on `home`. | [account-menu.tsx:115](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L115) | -| <a id="property-menuitems"></a> `menuItems?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Site-specific menu items, rendered between the section header and the family-dashboard / sign-out rows. Keep this short — 2–6 entries is the sweet spot. Pass `[]` (or omit) for sites with no per-site routes worth surfacing. | [account-menu.tsx:144](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L144) | -| <a id="property-popoverclassname"></a> `popoverClassName?` | `string` | - | [account-menu.tsx:185](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L185) | -| <a id="property-primarynavlinks"></a> `primaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Centered primary nav links (typically dashboard · docs · spec). Rendered inside the popover at viewport widths below `sm` (640px) — these are the same links the `` row shows inline at sm+, but at ultra-small widths the inline row hides and this popover section takes its place. The result: one dropdown surface owns navigation on phones, no separate hamburger drawer required. | [account-menu.tsx:154](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L154) | -| <a id="property-secondarynavlinks"></a> `secondaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Tertiary nav links (about / contact / status / privacy / etc.). Always visible inside the popover. Folds the legacy mobile-only hamburger drawer's contents into the same dropdown as everything else, so there's exactly one nav surface to learn. | [account-menu.tsx:161](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L161) | -| <a id="property-showfamilydashboard"></a> `showFamilyDashboard?` | `boolean` | When `true` (default), shows a `family dashboard ↗` link to `https://ochk.io/dashboard`. Set `false` for `home` (already there) or for sites that don't want it. | [account-menu.tsx:167](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L167) | -| <a id="property-signinlabel"></a> `signInLabel?` | `string` | Label for the anonymous "sign in" affordance. Default `'sign in'`. | [account-menu.tsx:124](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L124) | -| <a id="property-signinurl"></a> `signInUrl?` | `string` | Where the anonymous "sign in" affordance points. Default `'/signin'` — works with every site's in-place `` page. Pass `'https://ochk.io/signin'` if you want to bounce to the auth host instead. | [account-menu.tsx:122](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L122) | -| <a id="property-signoutredirect"></a> `signOutRedirect?` | `string` | Where the browser lands after the user signs out. Default `'/'` — the current site's own home. On sign-out the menu fires `signOut()` (whose logout round-trip is `keepalive`, so it survives the navigation) and *immediately* hard-navigates here. Navigating in the same tick is deliberate: it forecloses the race where an auth-gated page observes the session flip to `anonymous` and runs its own redirect-to-sign-in first. Sign-out means "leave", not "go sign in again" — so the family default is the site's home, never a sign-in page or the auth host. | [account-menu.tsx:137](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L137) | -| <a id="property-sitestate"></a> `siteState?` | [`SiteState`](../type-aliases/SiteState.mdx) | Optional lifecycle chip rendered inside the BuildFooter line (between site and version). Mirrors the chip on the logo so both surfaces agree. | [account-menu.tsx:181](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L181) | -| <a id="property-triggerclassname"></a> `triggerClassName?` | `string` | - | [account-menu.tsx:184](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L184) | +| <a id="property-build"></a> `build?` | [`OcAccountMenuBuildInfo`](OcAccountMenuBuildInfo.mdx) | Optional BuildFooter info. When present, renders a tiny mono footer at the bottom of the popover with `site · vX.Y.Z · sha` — the SHA links to the matching GitHub commit when `repo` is also provided. Drive this from your `next.config.ts` via `NEXT_PUBLIC_APP_VERSION` / `NEXT_PUBLIC_BUILD_SHA` env vars. | [account-menu.tsx:204](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L204) | +| <a id="property-classname"></a> `className?` | `string` | className overrides for layout-level customisation. | [account-menu.tsx:212](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L212) | +| <a id="property-current"></a> `current` | [`EcosystemSlug`](../type-aliases/EcosystemSlug.mdx) | Which family property this site IS. Used to label the section header (`§ signed in · vault.ochk.io`) and to suppress the family-dashboard menu item when the user is already on `home`. | [account-menu.tsx:144](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L144) | +| <a id="property-menuitems"></a> `menuItems?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Site-specific menu items, rendered between the section header and the family-dashboard / sign-out rows. Keep this short — 2–6 entries is the sweet spot. Pass `[]` (or omit) for sites with no per-site routes worth surfacing. | [account-menu.tsx:173](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L173) | +| <a id="property-popoverclassname"></a> `popoverClassName?` | `string` | - | [account-menu.tsx:214](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L214) | +| <a id="property-primarynavlinks"></a> `primaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Centered primary nav links (typically dashboard · docs · spec). Rendered inside the popover at viewport widths below `sm` (640px) — these are the same links the `` row shows inline at sm+, but at ultra-small widths the inline row hides and this popover section takes its place. The result: one dropdown surface owns navigation on phones, no separate hamburger drawer required. | [account-menu.tsx:183](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L183) | +| <a id="property-secondarynavlinks"></a> `secondaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Tertiary nav links (about / contact / status / privacy / etc.). Always visible inside the popover. Folds the legacy mobile-only hamburger drawer's contents into the same dropdown as everything else, so there's exactly one nav surface to learn. | [account-menu.tsx:190](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L190) | +| <a id="property-showfamilydashboard"></a> `showFamilyDashboard?` | `boolean` | When `true` (default), shows a `family dashboard ↗` link to `https://ochk.io/dashboard`. Set `false` for `home` (already there) or for sites that don't want it. | [account-menu.tsx:196](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L196) | +| <a id="property-signinlabel"></a> `signInLabel?` | `string` | Label for the anonymous "sign in" affordance. Default `'sign in'`. | [account-menu.tsx:153](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L153) | +| <a id="property-signinurl"></a> `signInUrl?` | `string` | Where the anonymous "sign in" affordance points. Default `'/signin'` — works with every site's in-place `` page. Pass `'https://ochk.io/signin'` if you want to bounce to the auth host instead. | [account-menu.tsx:151](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L151) | +| <a id="property-signoutredirect"></a> `signOutRedirect?` | `string` | Where the browser lands after the user signs out. Default `'/'` — the current site's own home. On sign-out the menu fires `signOut()` (whose logout round-trip is `keepalive`, so it survives the navigation) and *immediately* hard-navigates here. Navigating in the same tick is deliberate: it forecloses the race where an auth-gated page observes the session flip to `anonymous` and runs its own redirect-to-sign-in first. Sign-out means "leave", not "go sign in again" — so the family default is the site's home, never a sign-in page or the auth host. | [account-menu.tsx:166](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L166) | +| <a id="property-sitestate"></a> `siteState?` | [`SiteState`](../type-aliases/SiteState.mdx) | Optional lifecycle chip rendered inside the BuildFooter line (between site and version). Mirrors the chip on the logo so both surfaces agree. | [account-menu.tsx:210](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L210) | +| <a id="property-triggerclassname"></a> `triggerClassName?` | `string` | - | [account-menu.tsx:213](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L213) | diff --git a/src/pages/sdk/ui/interfaces/OcAccountMenuSession.mdx b/src/pages/sdk/ui/interfaces/OcAccountMenuSession.mdx index 5fad89c..6809e40 100644 --- a/src/pages/sdk/ui/interfaces/OcAccountMenuSession.mdx +++ b/src/pages/sdk/ui/interfaces/OcAccountMenuSession.mdx @@ -11,7 +11,7 @@ export const metadata = { # Interface: OcAccountMenuSession -Defined in: [account-menu.tsx:81](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L81) +Defined in: [account-menu.tsx:83](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L83) Minimal session shape `` needs. Compatible with `useOcSession()`'s return value but explicit so consumers running @@ -23,8 +23,11 @@ types. | Property | Type | Description | Defined in | | ------ | ------ | ------ | ------ | -| <a id="property-account"></a> `account` | \| \{ `didOc`: `string`; `displayIdentity`: `DisplayIdentity`; `displayName`: `string` \| `null`; `nostrNpub?`: `string` \| `null`; \} \| `null` | - | [account-menu.tsx:83](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L83) | -| <a id="property-refresh"></a> `refresh` | () => `void` \| `Promise`\<`void`\> | - | [account-menu.tsx:99](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L99) | -| <a id="property-setdisplayidentity"></a> `setDisplayIdentity` | (`kind`: `DisplayIdentityKind`) => `Promise`\<`void`\> | Promote a linked identity to be the badge label across every `.ochk.io` site. The connected `` wires this to `useOcSession().setDisplayIdentity`; a site running its own auth context passes its own equivalent. | [account-menu.tsx:106](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L106) | -| <a id="property-signout"></a> `signOut` | () => `void` \| `Promise`\<`void`\> | - | [account-menu.tsx:98](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L98) | -| <a id="property-status"></a> `status` | `"loading"` \| `"authenticated"` \| `"anonymous"` \| `"error"` | - | [account-menu.tsx:82](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L82) | +| <a id="property-account"></a> `account` | \| \{ `didOc`: `string`; `displayIdentity`: `DisplayIdentity`; `displayName`: `string` \| `null`; `nostrNpub?`: `string` \| `null`; \} \| `null` | - | [account-menu.tsx:85](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L85) | +| <a id="property-addaccounturl"></a> `addAccountUrl?` | (`returnTo?`: `string`) => `string` | Multi-account · URL for the "add another account" entry point. Defaults to `/signin?add=1` when omitted, which works for every `.ochk.io` family site (in-place sign-in supports the query param by default). | [account-menu.tsx:135](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L135) | +| <a id="property-refresh"></a> `refresh` | () => `void` \| `Promise`\<`void`\> | - | [account-menu.tsx:106](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L106) | +| <a id="property-roster"></a> `roster?` | `OcAccountSummary`[] | Multi-account roster · other accounts in this browser the user can switch to without re-authenticating. Optional: when omitted (or empty), the `§ accounts` section in `` is suppressed and the menu renders as single-account. Sites that own their auth context (e.g. oc-www's local `useAuth`) can leave this unset until they add multi-account support. | [account-menu.tsx:122](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L122) | +| <a id="property-setdisplayidentity"></a> `setDisplayIdentity` | (`kind`: `DisplayIdentityKind`) => `Promise`\<`void`\> | Promote a linked identity to be the badge label across every `.ochk.io` site. The connected `` wires this to `useOcSession().setDisplayIdentity`; a site running its own auth context passes its own equivalent. | [account-menu.tsx:113](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L113) | +| <a id="property-signout"></a> `signOut` | (`opts?`: \{ `scope?`: `any`; \}) => `void` \| `Promise`\<`void`\> | Sign out. Accepts an optional `{ scope }` so the multi-account "leave this account" affordance can route through the same hook. Defaults to `'all'` for back-compat. | [account-menu.tsx:105](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L105) | +| <a id="property-status"></a> `status` | `"loading"` \| `"authenticated"` \| `"anonymous"` \| `"error"` | - | [account-menu.tsx:84](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L84) | +| <a id="property-switchaccount"></a> `switchAccount?` | (`didOc`: `string`) => `Promise`\<`void`\> | Multi-account · flip the active session to the given did_oc. Required when `roster` is non-empty (otherwise the picker rows have nowhere to call). | [account-menu.tsx:128](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L128) | diff --git a/src/pages/sdk/ui/interfaces/OcAccountMenuViewProps.mdx b/src/pages/sdk/ui/interfaces/OcAccountMenuViewProps.mdx index 7042827..f3032c7 100644 --- a/src/pages/sdk/ui/interfaces/OcAccountMenuViewProps.mdx +++ b/src/pages/sdk/ui/interfaces/OcAccountMenuViewProps.mdx @@ -11,7 +11,7 @@ export const metadata = { # Interface: OcAccountMenuViewProps -Defined in: [account-menu.tsx:556](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L556) +Defined in: [account-menu.tsx:592](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L592) ## Extends @@ -21,17 +21,17 @@ Defined in: [account-menu.tsx:556](https://github.com/orangecheck/oc-packages/bl | Property | Type | Description | Inherited from | Defined in | | ------ | ------ | ------ | ------ | ------ | -| <a id="property-build"></a> `build?` | [`OcAccountMenuBuildInfo`](OcAccountMenuBuildInfo.mdx) | Optional BuildFooter info. When present, renders a tiny mono footer at the bottom of the popover with `site · vX.Y.Z · sha` — the SHA links to the matching GitHub commit when `repo` is also provided. Drive this from your `next.config.ts` via `NEXT_PUBLIC_APP_VERSION` / `NEXT_PUBLIC_BUILD_SHA` env vars. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`build`](OcAccountMenuProps.mdx#property-build) | [account-menu.tsx:175](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L175) | -| <a id="property-classname"></a> `className?` | `string` | className overrides for layout-level customisation. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`className`](OcAccountMenuProps.mdx#property-classname) | [account-menu.tsx:183](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L183) | -| <a id="property-current"></a> `current` | [`EcosystemSlug`](../type-aliases/EcosystemSlug.mdx) | Which family property this site IS. Used to label the section header (`§ signed in · vault.ochk.io`) and to suppress the family-dashboard menu item when the user is already on `home`. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`current`](OcAccountMenuProps.mdx#property-current) | [account-menu.tsx:115](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L115) | -| <a id="property-menuitems"></a> `menuItems?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Site-specific menu items, rendered between the section header and the family-dashboard / sign-out rows. Keep this short — 2–6 entries is the sweet spot. Pass `[]` (or omit) for sites with no per-site routes worth surfacing. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`menuItems`](OcAccountMenuProps.mdx#property-menuitems) | [account-menu.tsx:144](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L144) | -| <a id="property-popoverclassname"></a> `popoverClassName?` | `string` | - | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`popoverClassName`](OcAccountMenuProps.mdx#property-popoverclassname) | [account-menu.tsx:185](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L185) | -| <a id="property-primarynavlinks"></a> `primaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Centered primary nav links (typically dashboard · docs · spec). Rendered inside the popover at viewport widths below `sm` (640px) — these are the same links the `` row shows inline at sm+, but at ultra-small widths the inline row hides and this popover section takes its place. The result: one dropdown surface owns navigation on phones, no separate hamburger drawer required. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`primaryNavLinks`](OcAccountMenuProps.mdx#property-primarynavlinks) | [account-menu.tsx:154](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L154) | -| <a id="property-secondarynavlinks"></a> `secondaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Tertiary nav links (about / contact / status / privacy / etc.). Always visible inside the popover. Folds the legacy mobile-only hamburger drawer's contents into the same dropdown as everything else, so there's exactly one nav surface to learn. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`secondaryNavLinks`](OcAccountMenuProps.mdx#property-secondarynavlinks) | [account-menu.tsx:161](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L161) | -| <a id="property-session"></a> `session` | [`OcAccountMenuSession`](OcAccountMenuSession.mdx) | The session to render. When using `` directly (rather than the connected ``), pass an adapter over your local auth context. | - | [account-menu.tsx:562](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L562) | -| <a id="property-showfamilydashboard"></a> `showFamilyDashboard?` | `boolean` | When `true` (default), shows a `family dashboard ↗` link to `https://ochk.io/dashboard`. Set `false` for `home` (already there) or for sites that don't want it. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`showFamilyDashboard`](OcAccountMenuProps.mdx#property-showfamilydashboard) | [account-menu.tsx:167](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L167) | -| <a id="property-signinlabel"></a> `signInLabel?` | `string` | Label for the anonymous "sign in" affordance. Default `'sign in'`. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`signInLabel`](OcAccountMenuProps.mdx#property-signinlabel) | [account-menu.tsx:124](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L124) | -| <a id="property-signinurl"></a> `signInUrl?` | `string` | Where the anonymous "sign in" affordance points. Default `'/signin'` — works with every site's in-place `` page. Pass `'https://ochk.io/signin'` if you want to bounce to the auth host instead. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`signInUrl`](OcAccountMenuProps.mdx#property-signinurl) | [account-menu.tsx:122](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L122) | -| <a id="property-signoutredirect"></a> `signOutRedirect?` | `string` | Where the browser lands after the user signs out. Default `'/'` — the current site's own home. On sign-out the menu fires `signOut()` (whose logout round-trip is `keepalive`, so it survives the navigation) and *immediately* hard-navigates here. Navigating in the same tick is deliberate: it forecloses the race where an auth-gated page observes the session flip to `anonymous` and runs its own redirect-to-sign-in first. Sign-out means "leave", not "go sign in again" — so the family default is the site's home, never a sign-in page or the auth host. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`signOutRedirect`](OcAccountMenuProps.mdx#property-signoutredirect) | [account-menu.tsx:137](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L137) | -| <a id="property-sitestate"></a> `siteState?` | [`SiteState`](../type-aliases/SiteState.mdx) | Optional lifecycle chip rendered inside the BuildFooter line (between site and version). Mirrors the chip on the logo so both surfaces agree. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`siteState`](OcAccountMenuProps.mdx#property-sitestate) | [account-menu.tsx:181](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L181) | -| <a id="property-triggerclassname"></a> `triggerClassName?` | `string` | - | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`triggerClassName`](OcAccountMenuProps.mdx#property-triggerclassname) | [account-menu.tsx:184](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L184) | +| <a id="property-build"></a> `build?` | [`OcAccountMenuBuildInfo`](OcAccountMenuBuildInfo.mdx) | Optional BuildFooter info. When present, renders a tiny mono footer at the bottom of the popover with `site · vX.Y.Z · sha` — the SHA links to the matching GitHub commit when `repo` is also provided. Drive this from your `next.config.ts` via `NEXT_PUBLIC_APP_VERSION` / `NEXT_PUBLIC_BUILD_SHA` env vars. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`build`](OcAccountMenuProps.mdx#property-build) | [account-menu.tsx:204](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L204) | +| <a id="property-classname"></a> `className?` | `string` | className overrides for layout-level customisation. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`className`](OcAccountMenuProps.mdx#property-classname) | [account-menu.tsx:212](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L212) | +| <a id="property-current"></a> `current` | [`EcosystemSlug`](../type-aliases/EcosystemSlug.mdx) | Which family property this site IS. Used to label the section header (`§ signed in · vault.ochk.io`) and to suppress the family-dashboard menu item when the user is already on `home`. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`current`](OcAccountMenuProps.mdx#property-current) | [account-menu.tsx:144](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L144) | +| <a id="property-menuitems"></a> `menuItems?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Site-specific menu items, rendered between the section header and the family-dashboard / sign-out rows. Keep this short — 2–6 entries is the sweet spot. Pass `[]` (or omit) for sites with no per-site routes worth surfacing. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`menuItems`](OcAccountMenuProps.mdx#property-menuitems) | [account-menu.tsx:173](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L173) | +| <a id="property-popoverclassname"></a> `popoverClassName?` | `string` | - | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`popoverClassName`](OcAccountMenuProps.mdx#property-popoverclassname) | [account-menu.tsx:214](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L214) | +| <a id="property-primarynavlinks"></a> `primaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Centered primary nav links (typically dashboard · docs · spec). Rendered inside the popover at viewport widths below `sm` (640px) — these are the same links the `` row shows inline at sm+, but at ultra-small widths the inline row hides and this popover section takes its place. The result: one dropdown surface owns navigation on phones, no separate hamburger drawer required. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`primaryNavLinks`](OcAccountMenuProps.mdx#property-primarynavlinks) | [account-menu.tsx:183](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L183) | +| <a id="property-secondarynavlinks"></a> `secondaryNavLinks?` | readonly [`OcAccountMenuItem`](OcAccountMenuItem.mdx)[] | Tertiary nav links (about / contact / status / privacy / etc.). Always visible inside the popover. Folds the legacy mobile-only hamburger drawer's contents into the same dropdown as everything else, so there's exactly one nav surface to learn. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`secondaryNavLinks`](OcAccountMenuProps.mdx#property-secondarynavlinks) | [account-menu.tsx:190](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L190) | +| <a id="property-session"></a> `session` | [`OcAccountMenuSession`](OcAccountMenuSession.mdx) | The session to render. When using `` directly (rather than the connected ``), pass an adapter over your local auth context. | - | [account-menu.tsx:598](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L598) | +| <a id="property-showfamilydashboard"></a> `showFamilyDashboard?` | `boolean` | When `true` (default), shows a `family dashboard ↗` link to `https://ochk.io/dashboard`. Set `false` for `home` (already there) or for sites that don't want it. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`showFamilyDashboard`](OcAccountMenuProps.mdx#property-showfamilydashboard) | [account-menu.tsx:196](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L196) | +| <a id="property-signinlabel"></a> `signInLabel?` | `string` | Label for the anonymous "sign in" affordance. Default `'sign in'`. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`signInLabel`](OcAccountMenuProps.mdx#property-signinlabel) | [account-menu.tsx:153](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L153) | +| <a id="property-signinurl"></a> `signInUrl?` | `string` | Where the anonymous "sign in" affordance points. Default `'/signin'` — works with every site's in-place `` page. Pass `'https://ochk.io/signin'` if you want to bounce to the auth host instead. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`signInUrl`](OcAccountMenuProps.mdx#property-signinurl) | [account-menu.tsx:151](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L151) | +| <a id="property-signoutredirect"></a> `signOutRedirect?` | `string` | Where the browser lands after the user signs out. Default `'/'` — the current site's own home. On sign-out the menu fires `signOut()` (whose logout round-trip is `keepalive`, so it survives the navigation) and *immediately* hard-navigates here. Navigating in the same tick is deliberate: it forecloses the race where an auth-gated page observes the session flip to `anonymous` and runs its own redirect-to-sign-in first. Sign-out means "leave", not "go sign in again" — so the family default is the site's home, never a sign-in page or the auth host. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`signOutRedirect`](OcAccountMenuProps.mdx#property-signoutredirect) | [account-menu.tsx:166](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L166) | +| <a id="property-sitestate"></a> `siteState?` | [`SiteState`](../type-aliases/SiteState.mdx) | Optional lifecycle chip rendered inside the BuildFooter line (between site and version). Mirrors the chip on the logo so both surfaces agree. | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`siteState`](OcAccountMenuProps.mdx#property-sitestate) | [account-menu.tsx:210](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L210) | +| <a id="property-triggerclassname"></a> `triggerClassName?` | `string` | - | [`OcAccountMenuProps`](OcAccountMenuProps.mdx).[`triggerClassName`](OcAccountMenuProps.mdx#property-triggerclassname) | [account-menu.tsx:213](https://github.com/orangecheck/oc-packages/blob/main/ui/src/account-menu.tsx#L213) |