{#snippet trigger({ open, toggle })}
@@ -69,11 +81,22 @@
data-tour="company-switcher"
title={label}
>
-
+ {#if staffTenantActing || canRevert}
+
+ {:else}
+
+ {/if}
{switching ? i18n.t("switcher.switching") : label}
{/snippet}
+ {#if canRevert}
+ void selectCompany(homeId)}>
+
+ {revertLabel}
+
+
+ {/if}
{i18n.t("companySwitcher.companies")}
{#each list as company (company.id)}
@@ -93,7 +116,7 @@
{:else}
diff --git a/apps/web/src/lib/i18n/messages/de.ts b/apps/web/src/lib/i18n/messages/de.ts
index 2cedb2a..6cad7b5 100644
--- a/apps/web/src/lib/i18n/messages/de.ts
+++ b/apps/web/src/lib/i18n/messages/de.ts
@@ -5501,6 +5501,8 @@ export const de: MessageDict = {
"companySwitcher.select": "Unternehmen auswählen",
"companySwitcher.switchAria": "Unternehmen wechseln: {label}",
"companySwitcher.companies": "Unternehmen",
+ "companySwitcher.returnTo": "Zurück zu {name}",
+ "companySwitcher.returnHome": "Zurück zum Heimatunternehmen",
"storeReconnect.primaryLabel": "Shop erneut verbinden",
"storeReconnect.titlePlural": "Shops nach Migration erneut verbinden",
"storeReconnect.titleChannel": "{channel} nach Migration erneut verbinden",
diff --git a/apps/web/src/lib/i18n/messages/en.ts b/apps/web/src/lib/i18n/messages/en.ts
index f88c73e..d1dfa80 100644
--- a/apps/web/src/lib/i18n/messages/en.ts
+++ b/apps/web/src/lib/i18n/messages/en.ts
@@ -5536,6 +5536,8 @@ export const en: MessageDict = {
"companySwitcher.select": "Select company",
"companySwitcher.switchAria": "Switch company: {label}",
"companySwitcher.companies": "Companies",
+ "companySwitcher.returnTo": "Return to {name}",
+ "companySwitcher.returnHome": "Return to home company",
"storeReconnect.primaryLabel": "Reconnect store",
"storeReconnect.titlePlural": "Reconnect stores after migration",
"storeReconnect.titleChannel": "Reconnect {channel} after migration",
diff --git a/apps/web/src/lib/i18n/messages/es.ts b/apps/web/src/lib/i18n/messages/es.ts
index 09b73dd..ee806d7 100644
--- a/apps/web/src/lib/i18n/messages/es.ts
+++ b/apps/web/src/lib/i18n/messages/es.ts
@@ -5501,6 +5501,8 @@ export const es: MessageDict = {
"companySwitcher.select": "Seleccionar empresa",
"companySwitcher.switchAria": "Cambiar de empresa: {label}",
"companySwitcher.companies": "Empresas",
+ "companySwitcher.returnTo": "Volver a {name}",
+ "companySwitcher.returnHome": "Volver a la empresa de origen",
"storeReconnect.primaryLabel": "Reconectar tienda",
"storeReconnect.titlePlural": "Reconectar tiendas tras la migración",
"storeReconnect.titleChannel": "Reconectar {channel} tras la migración",
diff --git a/apps/web/src/lib/i18n/messages/fr.ts b/apps/web/src/lib/i18n/messages/fr.ts
index 76e2e8b..9e777d2 100644
--- a/apps/web/src/lib/i18n/messages/fr.ts
+++ b/apps/web/src/lib/i18n/messages/fr.ts
@@ -5501,6 +5501,8 @@ export const fr: MessageDict = {
"companySwitcher.select": "Sélectionner une entreprise",
"companySwitcher.switchAria": "Changer d’entreprise : {label}",
"companySwitcher.companies": "Entreprises",
+ "companySwitcher.returnTo": "Revenir à {name}",
+ "companySwitcher.returnHome": "Revenir à l’entreprise d’origine",
"storeReconnect.primaryLabel": "Reconnecter la boutique",
"storeReconnect.titlePlural": "Reconnecter les boutiques après la migration",
"storeReconnect.titleChannel": "Reconnecter {channel} après la migration",
diff --git a/apps/web/src/lib/i18n/messages/it.ts b/apps/web/src/lib/i18n/messages/it.ts
index 04903d1..7ff7b50 100644
--- a/apps/web/src/lib/i18n/messages/it.ts
+++ b/apps/web/src/lib/i18n/messages/it.ts
@@ -5501,6 +5501,8 @@ export const it: MessageDict = {
"companySwitcher.select": "Seleziona azienda",
"companySwitcher.switchAria": "Cambia azienda: {label}",
"companySwitcher.companies": "Aziende",
+ "companySwitcher.returnTo": "Torna a {name}",
+ "companySwitcher.returnHome": "Torna all’azienda di origine",
"storeReconnect.primaryLabel": "Riconnetti negozio",
"storeReconnect.titlePlural": "Riconnetti i negozi dopo la migrazione",
"storeReconnect.titleChannel": "Riconnetti {channel} dopo la migrazione",
diff --git a/apps/web/src/lib/i18n/messages/ja.ts b/apps/web/src/lib/i18n/messages/ja.ts
index 779e3c3..dac949c 100644
--- a/apps/web/src/lib/i18n/messages/ja.ts
+++ b/apps/web/src/lib/i18n/messages/ja.ts
@@ -5501,6 +5501,8 @@ export const ja: MessageDict = {
"companySwitcher.select": "会社を選択",
"companySwitcher.switchAria": "会社を切替: {label}",
"companySwitcher.companies": "会社",
+ "companySwitcher.returnTo": "{name} に戻る",
+ "companySwitcher.returnHome": "ホーム会社に戻る",
"storeReconnect.primaryLabel": "ストアを再接続",
"storeReconnect.titlePlural": "移行後にストアを再接続",
"storeReconnect.titleChannel": "移行後に {channel} を再接続",
diff --git a/apps/web/src/lib/i18n/messages/nl.ts b/apps/web/src/lib/i18n/messages/nl.ts
index 2e6bbd4..5430448 100644
--- a/apps/web/src/lib/i18n/messages/nl.ts
+++ b/apps/web/src/lib/i18n/messages/nl.ts
@@ -5501,6 +5501,8 @@ export const nl: MessageDict = {
"companySwitcher.select": "Bedrijf selecteren",
"companySwitcher.switchAria": "Bedrijf wisselen: {label}",
"companySwitcher.companies": "Bedrijven",
+ "companySwitcher.returnTo": "Terug naar {name}",
+ "companySwitcher.returnHome": "Terug naar thuisbedrijf",
"storeReconnect.primaryLabel": "Winkel opnieuw verbinden",
"storeReconnect.titlePlural": "Winkels opnieuw verbinden na migratie",
"storeReconnect.titleChannel": "{channel} opnieuw verbinden na migratie",
diff --git a/apps/web/src/lib/i18n/messages/pl.ts b/apps/web/src/lib/i18n/messages/pl.ts
index 69c65bd..56e8638 100644
--- a/apps/web/src/lib/i18n/messages/pl.ts
+++ b/apps/web/src/lib/i18n/messages/pl.ts
@@ -5501,6 +5501,8 @@ export const pl: MessageDict = {
"companySwitcher.select": "Wybierz firmę",
"companySwitcher.switchAria": "Przełącz firmę: {label}",
"companySwitcher.companies": "Firmy",
+ "companySwitcher.returnTo": "Wróć do {name}",
+ "companySwitcher.returnHome": "Wróć do firmy domowej",
"storeReconnect.primaryLabel": "Połącz sklep ponownie",
"storeReconnect.titlePlural": "Połącz sklepy ponownie po migracji",
"storeReconnect.titleChannel": "Połącz {channel} ponownie po migracji",
diff --git a/apps/web/src/lib/i18n/messages/pt.ts b/apps/web/src/lib/i18n/messages/pt.ts
index 7a7c46a..54bc694 100644
--- a/apps/web/src/lib/i18n/messages/pt.ts
+++ b/apps/web/src/lib/i18n/messages/pt.ts
@@ -5501,6 +5501,8 @@ export const pt: MessageDict = {
"companySwitcher.select": "Selecionar empresa",
"companySwitcher.switchAria": "Mudar de empresa: {label}",
"companySwitcher.companies": "Empresas",
+ "companySwitcher.returnTo": "Voltar para {name}",
+ "companySwitcher.returnHome": "Voltar para a empresa de origem",
"storeReconnect.primaryLabel": "Reconectar loja",
"storeReconnect.titlePlural": "Reconectar lojas após a migração",
"storeReconnect.titleChannel": "Reconectar {channel} após a migração",
diff --git a/apps/web/src/lib/types.ts b/apps/web/src/lib/types.ts
index a04203c..553747e 100644
--- a/apps/web/src/lib/types.ts
+++ b/apps/web/src/lib/types.ts
@@ -93,10 +93,17 @@ export type MeResponse = {
company?: Company | null;
companies?: Company[];
active_company_id?: string;
- membership?: { role: string; status: string } | null;
+ membership?: { role: string; status: string; staff_override?: boolean } | null;
credits?: CreditBalance | null;
staff_access?: StaffAccess | null;
staff_capabilities?: string[];
+ /** Platform staff_role=admin only: company switcher lists all tenants (no membership required). */
+ staff_tenant_switch?: boolean;
+ /** True while admin is acting in a company without membership. */
+ staff_tenant_acting?: boolean;
+ /** Membership company to restore via company switcher revert. */
+ staff_home_company_id?: string;
+ staff_home_company?: Company | null;
/** Non-prod only: show header user-switch for platform admin/demo or while impersonating. */
dev_user_switch?: boolean;
impersonating?: boolean;
diff --git a/apps/web/src/routes/+layout.svelte b/apps/web/src/routes/+layout.svelte
index 0394754..1330c6e 100644
--- a/apps/web/src/routes/+layout.svelte
+++ b/apps/web/src/routes/+layout.svelte
@@ -1,6 +1,5 @@
-
+
+
{#if !isMarketingPage}
Descrybe
{/if}
@@ -431,6 +431,9 @@
companies={me.companies ?? (me.company ? [me.company] : [])}
activeCompanyId={me.active_company_id ?? me.company?.id ?? ""}
activeCompanyName={me.company?.name ?? ""}
+ homeCompanyId={me.staff_home_company_id ?? ""}
+ homeCompanyName={me.staff_home_company?.name ?? ""}
+ staffTenantActing={Boolean(me.staff_tenant_acting)}
/>
{/if}
diff --git a/apps/web/static/favicon.ico b/apps/web/static/favicon.ico
index 89b4a7a..ca516c1 100644
Binary files a/apps/web/static/favicon.ico and b/apps/web/static/favicon.ico differ
diff --git a/apps/web/static/favicon.svg b/apps/web/static/favicon.svg
index cc5dc66..6f13d5b 100644
--- a/apps/web/static/favicon.svg
+++ b/apps/web/static/favicon.svg
@@ -1 +1,4 @@
-
\ No newline at end of file
+