3a0b1a3746d0907fd8cbbc36352994738188ff08
/search routes to CatalogContainerComponent + CatalogSearchResultsComponent (app.routes.ts:45-47) - confirmed the live search surface (pages/search/* is unrouted dead code per KNOWN-ISSUES.md item 13, not touched here). - search-results.component: hand-rolled `.skeleton-card` shimmer (hardcoded hex gradient colors, duplicate keyframes) replaced with the shared app-skeleton primitive the dead pages/search copy already used, but the live component never got. Bare `<div class="empty-state"><h3>/<p></div>` replaced with app-empty-state + app-icon, matching CatalogEmptyStateComponent's established pattern elsewhere in the same feature. - Added distinct empty-state messaging: a too-short query (<3 chars, mirrors the existing minSearchLength/isQueryTooShort convention from the dead pages/search/search.component.ts) now shows "Enter at least N characters" instead of being indistinguishable from a genuine no-results-for-X state, which now shows the query and a retry hint (search.noResults/noResultsFor/ noResultsHint/minLength i18n keys already existed, just unused on this path). - catalog-container.component.html: icon-only close/remove buttons (filter drawer, sort sheet, grid sheet, saved-search chip) rendered a literal "x" text character with no app-icon - now use app-icon name="x". Debounce (220ms, search.facade.ts), URL query-param sync, keyboard arrow-key suggestion navigation (role=combobox/aria-activedescendant), and filter/sort discoverability were all verified already correct on this path, no changes needed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Marketplace Frontend
Angular marketplace frontend for the client demonstration. The app uses standalone components, signals, runtime branding/configuration, and a production build optimized for the current marketplace experience.
Features
- Responsive marketplace storefront
- Category browsing and product detail pages
- Search and shopping cart flows
- Telegram login integration
- Payment handoff through the existing backend contract
- Runtime branding and configuration loading
- PWA manifest and service worker configuration
Development
Install dependencies:
npm install
Start the local development server:
npm start
Build for production:
npm run build
The production build is written to dist/dexarmarket/.
Project Structure
src/
├── app/
│ ├── components/ # Shared storefront components
│ ├── core/ # Runtime, config, guards, providers, interceptors
│ ├── dynamic-renderer/ # Page, section, and widget rendering pipeline
│ ├── facades/ # Runtime, website, builder, and backoffice facades
│ ├── pages/ # Storefront, info, legal, cart, search, and item pages
│ ├── services/ # API, cart, auth, SEO, Telegram, and language services
│ └── widgets/ # Dynamic renderer widgets
├── assets/mock/ # Local mock configuration and catalog data
├── environments/ # Development and production environment settings
└── styles/ # Shared global styles and themes
Useful Checks
npm run build
npm run arch:check
Notes
- Authentication and payment integrations are intentionally left on their existing contracts.
- Renderer and runtime architecture should remain stable during demo preparation.
- Client-facing content should avoid placeholder names, mock labels, and temporary routes.
Description
Languages
TypeScript
71.4%
HTML
15.3%
SCSS
11.9%
Shell
1.3%
JavaScript
0.1%