csm-sdm-panels-in-demorun.md01_define/output/spec.mdThe demo app is the platform's showcase source-of-truth for how each persona's dashboard looks, but it has drifted from web. Web's CSM dashboard opens with a "My portfolio" panel (account list with a "My accounts / All accounts" scope toggle) and web's SDM dashboard opens with a "My area" panel (in-scope demand + in-scope experts with a "My area / All supply" toggle). Neither panel exists in demo, so demo's CSM and SDM dashboards are missing their top-of-page section and their section order no longer matches web. This parity gap undermines the demo's credibility as a faithful product walkthrough — which directly supports Q2 2026 Objective 1 (product-market fit with vendor partners: maintaining active engagement) under the Refine the Bridge initiative, where a coherent, trustworthy demo is how CSM/SDM value is shown to partners.
Build demo equivalents of the CSM "My portfolio" and SDM "My area" panels, mock-data driven, at the top of the respective demo dashboards — mirroring web's structure and scope-toggle behaviour so that section order and content line up across both apps.
02_build/output/notes.mdfeat: csm-sdm-panels-in-demo — add My portfolio + My area panels to demo dashboardsapps/demo/lib/mock/csm.ts: added MY_CSM (exported the logged-in CSM), a
PortfolioStatus union, and a portfolioAccounts mock array (account / region /
status / project + owning csm for scope filtering). MY_CSM was previously a
local const in the page; it now lives with the mock data and is imported.apps/demo/lib/mock/sdm.ts: added areaLeads and areaExperts to the sdmData
namespace, each row carrying inArea so the scope toggle can client-side filter
the SDM's own regions/platforms vs all supply.apps/demo/components/dashboard/csm/portfolio-panel.tsx (new): presentational
"My portfolio" panel — account/region/status/project table with a
"My accounts / All accounts" scope toggle, mirroring web's portfolio-panel.tsx
but on the demo @/components/ui/* barrel and TableSection.apps/demo/components/dashboard/sdm/area-panel.tsx (new): presentational
"My area" panel — in-scope demand + in-scope experts with a
"My area / All supply" scope toggle, mirroring web's area-panel.tsx.apps/demo/app/(demo)/dashboards/csm/page.tsx: renders PortfolioPanel as the
first section (before the action strip), owns portfolioScope state and filters
the accounts client-side.apps/demo/app/(demo)/dashboards/sdm/page.tsx: converted to a stateful client
component; renders AreaPanel first, owns areaScope state and filters leads/
experts client-side.portfolioAccounts mock.MY_CSM).areaLeads/areaExperts mock.inArea).Typography/@/components/ui/* primitives, shared tokens, and per-persona mock data (no hardcoded strings, no cross-persona mock).activation-status-table does the same).csm on portfolio
accounts, inArea on area rows) — the page filters on them before passing the slice.03_release/output/investor-update.mdWho it's for: Vendor partners viewing CSM and SDM demos What shipped: The demo's CSM and SDM dashboards now open with the same "My portfolio" and "My area" panels as the live product. Why it matters: Faithful persona demos build partner trust under Refine the Bridge, supporting Q2 Objective 1 — establish product-market fit with vendor partners.
Dig deeper: https://github.com/sustentus/sustentus/pull/706
03_release/output/release.mdapps/docs/technical/demo-environment documents the live demo tenant, not the standalone apps/demo panels.@/components/ui/* barrel, shared design tokens (no raw palette literals), Typography everywhere (no raw text tags), sentence case, per-persona mock data, TableSection reused. No findings.ACC-১) caught during build and corrected to ACC-1 before commit. — resolved on branch.csm, inArea); the page filters on them before passing the slice. — accepted (structural typing, no leak).PortfolioPanel + portfolioAccounts.MY_CSM.AreaPanel + areaLeads/areaExperts.inArea.@/components/ui/* primitives, shared tokens, per-persona mock — verified in review + CI (Quality Project green).