d5603c229e27443cf71e50461cdb84a15e6b9f35
- faq-{ru,en,hy}.component.html: convert each FAQ entry from an always-
expanded <div>/<h3> block into a native <details class="faq-item">/
<summary> disclosure, reusing the global expander-chevron pattern
already defined in styles.scss (no bespoke accordion component built);
answer body wrapped in .faq-answer for spacing
- faq.component.scss: restyle .faq-item for the details/summary shape
(summary uses tokenized font-size/weight, focus-visible ring, [open]
state gets a stronger shadow instead of the old always-on hover-lift);
hardcoded `all 0.3s ease` replaced with --transition-normal on the
specific properties that change; added a reduced-motion override
- shared-legal.scss: hardcoded `transition: all 0.3s ease` (4 call sites:
info-card, features-list feature, contact-item/contact-link,
contact-email) normalized to --transition-normal on transform/
box-shadow/background; paragraphs and lists get max-width: 70ch so
long-form legal/info text keeps a readable line length within the
wider 900px .legal-container
- static-page.component.scss (CMS-driven static-page renderer): spacing
converted to --space-* tokens; prose now capped at 70ch; added actual
content styling (headings, lists, links, images, blockquote, table)
for arbitrary CMS-authored HTML rendered via [innerHTML], since the
previous rules only styled h2/h3 margins and left every other tag
unstyled; line-height moved to --line-height-relaxed token
Build verified green via `npm run build`.
Out of scope / skipped:
- info/contacts has no contact form (plain link list) - no app-input/
app-form-field polish applicable
- no breadcrumbs/anchor nav exist on any page in scope - nothing to
align focus-visible on
- legal-page/info scss files (about, delivery, guarantee, company-
details, payment-terms, privacy-policy, public-offer, return-policy)
already used design tokens with no hex literals and had no accordion/
form elements - left untouched
- shared-legal.scss's border-left accent on .legal-section/.info-box/
.highlight and the fadeIn entrance animation durations left as-is;
pre-existing sitewide pattern, not a new introduction, changing it is
a redesign call outside this pass's scope
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%