Both app.brands.jsx and app.managebrand.jsx now call /free-access/:shop
after a negative subscription check, mirroring the fix already applied
in app._index.jsx. Affects both loader (UI lock) and action (import guard).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Loader now calls GET /free-access/:shop on the backend instead of
comparing against a hardcoded shop domain. This lets the admin panel
control which shops get free access without frontend deploys.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- app.dashboard.jsx (new): live import progress dashboard modelled on
Race-Nation — job selector, progress bar, 6-stat grid, stage board,
current product banner, activity log, errors list, completion summary,
3s polling, cancel button
- app.jsx: add nav links for Dashboard, Settings, Brands, Manage Brands, Help
- app._index.jsx: dark gradient hero header, subscription status bar,
navcard grid, billing modal preserved
- app.settings.jsx: dark header, Turn14 connect card with live status,
visual pricing type toggle (MAP vs percentage)
- app.brands.jsx: dark header, visual brand grid with checkbox state,
sticky save toolbar
- app.managebrand.jsx: dark header, live import status bar with Dashboard
link, collapsible brand rows, filter toggle pills, modern product cards
with attribute badges
- app.help.jsx: dark header, animated FAQ accordion, styled contact card
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>