feat(builder): redesign marketplace builder experience and navigation

Renamed the experience consistently to Marketplace Builder everywhere
visible (page title/subtitle, breadcrumbs, sidebar, dashboard quick
action/shortcut copy) - internal ProjectEditor class/selector names
kept as-is to avoid regressions. builder.title/subtitle no longer say
'bootstrap-config editing surface' to end users.

New business-oriented IA (builder-groups.model.ts): 12 existing
ProjectEditorSectionIds regrouped into 8 groups (Marketplace, Branding
and Design, Homepage, Content, Languages, Marketplace Features,
Navigation and Search, Preview) - every existing section mapped to
exactly one group, none dropped, no group points at a page that
doesn't exist.

New Builder landing page at /edit (was a redirect straight into the
General form): readiness percent, recommended next step, one overview
card per group (purpose + real complete/in-progress/not-started/unknown
status, icon+text never color-alone), a Marketplace Readiness
checklist, quick links. All derived from real facade/schema signals
(required-field fill state, modifiedSections, staticPages, catalog
counts via BackofficeDataService) or explicitly marked unknown
(the "preview reviewed" check has no tracking - shown as unknown,
never guessed).

Section pages (/edit/:section) now share one consistent header:
breadcrumb (Builder > Group > Section), draft/published + modified
badges, and a contextual help panel (what is this / where visible /
what happens if you skip it) sourced per group. Sidebar nav rewritten
as grouped, icon-led sections with per-section and per-group status
indicators; layout converted from a top pill-tab bar to a responsive
sidebar (desktop 280px, tablet 72px icon rail, mobile drawer with
Escape-to-close), matching the Sprint 1 admin shell pattern. Section
form components themselves untouched.

Routes: 'edit' is now its own landing route instead of redirecting to
'edit/general'; /builder and /project-editor redirect to 'edit'.
Sprint 1/2 destinations that pointed at edit/general now point at the
new edit landing page.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
sdarbinyan
2026-07-18 09:43:03 +04:00
parent 419cb9a32c
commit 821a1c6ba8
19 changed files with 1699 additions and 152 deletions

View File

@@ -683,6 +683,83 @@ export interface Translations {
linkLabelDesc: string;
linkUrlDesc: string;
linkVisibleDesc: string;
appName: string;
breadcrumbRoot: string;
statusComplete: string;
statusInProgress: string;
statusNotStarted: string;
statusUnknown: string;
draftBadge: string;
publishedBadge: string;
modifiedBadge: string;
helpToggleShow: string;
helpToggleHide: string;
helpWhatIsThis: string;
helpWhySkip: string;
helpWhereVisible: string;
helpWhatIfSkip: string;
helpWhenReturn: string;
openSidebar: string;
closeSidebar: string;
overviewTitle: string;
overviewSubtitle: string;
overviewReadinessLabel: string;
overviewReadinessHint: string;
overviewNextStepLabel: string;
overviewNextStepFallback: string;
overviewQuickLinksTitle: string;
overviewSectionsTitle: string;
overviewOpenSection: string;
overviewReadinessTitle: string;
readinessLogoUploaded: string;
readinessHomepageConfigured: string;
readinessThemeConfigured: string;
readinessLanguagesConfigured: string;
readinessContentPagesAdded: string;
readinessPreviewReviewed: string;
readinessPublished: string;
readinessCategoriesExist: string;
readinessProductsExist: string;
groupMarketplaceLabel: string;
groupMarketplaceDescription: string;
groupMarketplacePurpose: string;
groupMarketplaceWhere: string;
groupMarketplaceSkip: string;
groupBrandingLabel: string;
groupBrandingDescription: string;
groupBrandingPurpose: string;
groupBrandingWhere: string;
groupBrandingSkip: string;
groupHomepageLabel: string;
groupHomepageDescription: string;
groupHomepagePurpose: string;
groupHomepageWhere: string;
groupHomepageSkip: string;
groupContentLabel: string;
groupContentDescription: string;
groupContentPurpose: string;
groupContentWhere: string;
groupContentSkip: string;
groupLanguagesLabel: string;
groupLanguagesDescription: string;
groupLanguagesPurpose: string;
groupLanguagesWhere: string;
groupLanguagesSkip: string;
groupFeaturesLabel: string;
groupFeaturesDescription: string;
groupFeaturesPurpose: string;
groupFeaturesWhere: string;
groupFeaturesSkip: string;
groupNavigationLabel: string;
groupNavigationDescription: string;
groupNavigationPurpose: string;
groupNavigationWhere: string;
groupNavigationSkip: string;
groupPreviewLabel: string;
groupPreviewDescription: string;
groupPreviewPurpose: string;
groupPreviewWhere: string;
groupPreviewSkip: string;
};
dashboard: {
title: string;