Commit Graph

18 Commits

Author SHA1 Message Date
sdarbinyan
2e931bbdc4 perf(app): remove confirmed-dead global CSS classes
RC PERF-01 asset audit (images/fonts/SVG/CSS), follow-up to 61a5714/4bf0666.

Removed from src/styles.scss - zero references (literal and hyphen-safe)
in any .html/.ts across the repo, and no dynamic class-string construction
found for the utility classes:
- .btn-primary / .btn-secondary (+ :hover) - unused button variants
- .catalog-product-card - unused selector in a shared comma group with
  .product-card/.item-card, which stay
- .item-badges-overlay, .item-simple-desc - unused component helpers
- .text-center, .mt-1..4, .mb-1..4, .p-1..4 - fully unused spacing utilities

styles-*.css: 9.60 kB -> 8.41 kB raw (2.22 kB -> 1.99 kB transfer), -12%.

No other category needed a code change:
- Images: <img> tags already have loading="lazy"/decoding="async" on
  storefront grids/galleries (product-card, catalog, category-grid,
  cart, item-detail) from prior polish passes; CLS is already handled
  via CSS aspect-ratio on those containers rather than width/height
  attrs, so none were added. Payment-logo <img>s already have explicit
  width/height. Flagged, not fixed: a handful of single-image admin/
  editor previews (page-editor, brand-overview, asset-details-drawer)
  lack loading="lazy" - low traffic, negligible impact, left alone to
  avoid unnecessary diff.
- Fonts: index.html preconnects to fonts.gstatic.com/googleapis.com and
  loads DM Sans 400/500/600/700 via Google Fonts CSS2 (display=swap
  already in the URL). All 4 loaded weights are used in app CSS - no
  dead weight to drop. Flagged, not fixed: 800/900 are used in several
  component styles but never loaded, so the browser faux-bolds those -
  a pre-existing rendering quirk, out of scope (changing loaded weights
  risks visible text changes).
- SVG: icon-registry.ts centralizes all icons via @lucide/angular (no
  inline SVG path duplication). Checked SVGs under public/ for editor
  cruft (metadata/inkscape/sodipodi comments) - found none, already
  clean. Flagged, not fixed: mastercard-logo.min.svg, dexar-logo*.svg,
  dexar-favicon.svg, novo-logo.svg, novo-favicon.svg appear unreferenced
  in src/public manifests - left in place since deletion is out of this
  task's scope and they may be used by backend-driven tenant branding.

Verified: npx tsc --noEmit clean, npm run build green (initial bundle
unchanged at 1.12 MB, this pass only touched global CSS).
2026-07-24 08:26:31 +04:00
sdarbinyan
4bf0666fd1 perf(app): lazy-load i18n translation packs, drop dead items-carousel component
RC PERF-01 bundle audit follow-up on 61a5714.

- i18n: ru/en/hy translation packs (346 KB raw combined) were all
  statically imported in TranslateService and shipped in the initial
  bundle regardless of the visitor's language. Now only 'ru' (platform
  default) is bundled eagerly; 'en'/'hy' are dynamic import()s. The
  language route guard (languageGuard) awaits preloadLanguage() before
  activating the route, so translations are always fully loaded before
  any component renders - no flash of untranslated/fallback content.
- widget-host.service.ts: import UnknownWidgetComponent directly instead
  of via the widgets/ui barrel (index.ts re-exports 6 widgets).
- Deleted src/app/components/items-carousel/* - confirmed dead (zero
  references anywhere, verified via knip and grep), the only consumer
  of primeng/primeicons in the app. Removed the now-unused
  `@import 'primeicons/primeicons.css'` from styles.scss (no primeicons
  CSS classes used elsewhere). primeng/primeicons remain listed in
  package.json/package-lock.json - npm CLI in this environment is
  blocked by an unrelated, pre-existing broken `barry-cache` devDependency
  (ETARGET on `npm install`/`npm uninstall`), so the lockfile could not be
  safely regenerated. Flagged, not fixed.

Routes audit (app.routes.ts): all storefront/builder/backoffice feature
routes already use loadComponent/loadChildren; nothing eagerly imported.
No route changes needed.

Lucide icons (icon-registry.ts): already named/tree-shakeable imports
from @lucide/angular, not a full-library import. No change needed.

Before/after (npm run build, production):
- Initial bundle raw: 1.47 MB -> 1.12 MB (-350 KB / -24%)
- Initial bundle transfer (est.): 263.59 kB -> 221.51 kB (-42 kB / -16%)
- Budget overage: 769.22 kB over -> 416.84 kB over (still exceeds the
  700 KB budget; project-editor-page-component (320 kB),
  catalog-container-component (126 kB), product-details-container
  (88 kB), cart-component (61 kB) lazy chunks unchanged - no safe
  mechanical split identified within scope, see PERF-01 report for
  detail).

Verified: npx tsc --noEmit clean, npm run build green (warning only,
no errors).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-24 08:19:13 +04:00
sdarbinyan
68d679759d style(design-system): introduce typography scale + extend radius/space tokens
- Add --font-size-xs..4xl, --font-weight-*, --line-height-* tokens to
  src/styles.scss (no typography scale previously existed)
- Add --radius-xs (4px) and --radius-full (999px) to all three theme
  files (dexar/lavero/novo) to cover chip/badge and pill shapes already
  in wide use (41x 999px, 9x 4px across the app) but previously
  hand-written per component
- Apply the new tokens to global base elements (body/h1-h6/p/small),
  the .btn/.mt-*/.mb-*/.p-* utility classes, and the shared
  .item-badge/.item-tag/.item-simple-desc classes
- Extend --space-* scale with --space-2xl (48px) and --space-3xl (64px)
  for section-level gaps
2026-07-20 03:19:09 +04:00
sdarbinyan
f563d47e8a fix(icons): standardize dropdown/select/pagination/expander chevrons
app-select (the shared select used across every admin form) rendered
the browser's native dropdown indicator - inconsistent across
Chrome/Firefox/Safari and outside the icon system entirely. Hid it
(appearance: none) and added a consistent chevronDown via app-icon.

app-pagination used literal HTML entities (&laquo; / &raquo;) for
prev/next instead of icons. Replaced with chevronLeft/chevronRight.

Every native <details>/<summary> expander (7 call sites across admin
product form, page editor, and the builder's widget advanced-settings
panel) relied on the browser's default disclosure triangle, which
again varies per browser and shares no visual relationship with the
rest of the icon system. Added one global CSS rule (details > summary)
that hides the native marker and draws the same Lucide chevron path
used everywhere else, animated on open/close - covers all 7 without
touching each template.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 02:59:22 +04:00
sdarbinyan
043192accf fix(icons): migrate Marketplace Builder to Lucide
Replace every PrimeIcons pi-* usage across the builder: overview page
(back link, next-step arrow, section cards, readiness checklist,
quick links), sidebar nav (group/section status dots), main layout
(back/home/menu/help icons), brand + homepage overview panels
(checklist ok/pending dots, contrast warning), footer/homepage/widgets
section editors (drag handles, move up/down, duplicate, remove), and
the HTML editor toolbar (list/link/image/table/divider/code/embed).

Notable correctness fix: PrimeIcons reused pi-bars for both the
hamburger menu toggle AND every drag handle - two different meanings
sharing one icon (exactly the kind of icon collision the audit calls
out). Added a dedicated 'grip' icon (GripVertical) for drag handles so
menu and drag-to-reorder are visually distinct.

Added a global .spin utility (icon-registry has no built-in spinner
animation) for the one loading-spinner icon in the builder overview
checklist.

All icon-bearing fields (BuilderGroup.icon, BlockCatalogEntry.icon,
WIDGET_ICONS, STATUS_ICON, HtmlEditorToolbarCommand.icon, etc.) are
now typed AppIconName instead of string.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 02:31:06 +04:00
sdarbinyan
173ceb8081 feat(seo): tenant-driven meta tags, sitemap/robots, reduced-motion, docs
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
Completes the rest of Sprint 28 on top of the earlier admin-scoped
a11y/skeleton pass (576f260):

- SeoService.resetToDefaults() now reads real bootstrap.seo.default /
  branding instead of hardcoded placeholder text + a broken
  /og-image.jpg reference; auto-reapplies via an effect() whenever
  bootstrap (re)loads, same pattern as UiRuntimeFacade.
- New public/sitemap.xml (static baseline, documented per-tenant-dynamic
  limitation) + public/robots.txt Sitemap directive and admin/editor
  Disallow rules.
- Global prefers-reduced-motion override in styles.scss covering every
  existing hover-transform/fade-in/shimmer animation in one place.
- New adminProducts/adminUsers/adminMonitoring/adminAnalytics
  empty-state i18n keys (en/ru/hy) for this sprint's skeleton/empty-state
  consistency fixes.
- docs/KNOWN-ISSUES.md: logged a newly-found, much larger pre-existing
  gap (~178 missing adminXxx.* i18n keys across the whole admin
  backoffice) - deferred to Sprint 29's translation validation, not
  fixed here.
- docs/BACKEND.md: new item 17 (sitemap generation gap).
- docs/ADMIN.md, docs/SPRINT-PLAN.md: rewritten Sprint 28 sections to
  describe the full, combined scope (both commits) instead of the
  earlier admin-only framing.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 00:19:41 +04:00
sdarbinyan
8d652c8259 feat(platform): sprint 11.5 standardization
Some checks failed
Architecture Governance / architecture (push) Has been cancelled
2026-07-09 02:29:12 +04:00
sdarbinyan
c901ec1e49 refactor: finalize bootstrap-driven layout and widget runtime 2026-07-05 04:17:31 +04:00
sdarbinyan
0089790d41 feat ui foundation layer for page container sections and grid 2026-07-05 02:50:53 +04:00
sdarbinyan
4fb918f5e4 cleaned up 2026-06-21 23:42:39 +04:00
sdarbinyan
421346d957 Merge remote-tracking branch 'origin' into back-office-integration 2026-02-28 16:13:14 +04:00
sdarbinyan
10b4974719 optimising and making it better 2026-02-26 21:54:21 +04:00
sdarbinyan
369af40f20 bo integration 2026-02-20 10:44:03 +04:00
sdarbinyan
9154660a01 mobile is finished 2026-02-14 02:59:26 +04:00
sdarbinyan
4238d59fc6 style changes 2026-02-14 02:34:11 +04:00
sdarbinyan
751ad48489 home page 2026-02-14 01:28:08 +04:00
sdarbinyan
88ac37ebc4 changed header and hero img 2026-02-14 00:45:17 +04:00
sdarbinyan
bd80896886 very first commit 2026-01-18 18:57:06 +04:00