144 Commits
Author SHA1 Message Date
Alireza HassaniandCursor 6be867ea7a Add a Statistics page for storefront visits and instruction 1:1/3:2 crops.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 11:10:52 +03:30
Alireza HassaniandCursor d9bdfbbb12 Show four blog cards per row and let editors crop thumbnails as 1:1 or 3:2.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-01 10:15:08 +03:30
Alireza HassaniandCursor c962fe524b Add Arvan/Cloudflare DNS choice on domain edit and restyle empty add boxes.
Domain save can upsert tenant records on either provider, overflow menus stay opaque, and empty-state add controls use a dashed outline.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 18:46:48 +03:30
Alireza HassaniandCursor 0d62a4ca79 Add parked-domain aliases, Websites AI prompts, and frosted overflow menus.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 18:09:09 +03:30
Alireza HassaniandCursor e9400c2281 Add business dashboard dark mode from Super Admin theme setting.
Login and in-app surfaces follow tenant themeMode, matching customer dark tokens, with themed switches and tighter card/table chrome.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-31 13:40:40 +03:30
Alireza HassaniandCursor 65012717d0 Fix activity chart bar tooltips clipping and positioning.
Anchor tooltips above each bar with high z-index and allow overflow so hover labels stay visible.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 23:59:47 +03:30
Alireza HassaniandCursor e324ae5763 Refine category select tree gutters and tighten activity charts.
Restore RTL tree lines in category dropdowns, require product category on add, and improve chart bar density with Y-axis tooltips.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 23:52:33 +03:30
Alireza HassaniandCursor b5c2a31262 Fix TypeScript narrowing in product AI fill handler.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 22:32:47 +03:30
Alireza HassaniandCursor a412cb82fc Improve dashboard charts, category tree selects, and product AI name fill.
Fix RTL chart ordering with Y-axis and hover values; aggregate website views; refine category picker tree borders and spacing; add one-click FA→EN name translation on add product.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-28 20:39:43 +03:30
Alireza HassaniandCursor 7b2ed7c7b0 Tighten AI prompts modal actions and drop Templates home card.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 15:47:27 +03:30
Alireza HassaniandCursor 0aab7b5529 Add Super Admin AI prompt templates and business assignment UI.
Templates library plus per-business prompt list with edit, copy public link, and remove.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 15:28:41 +03:30
Alireza HassaniandCursor b50e4fd812 Add step date picker and show full renewal dates.
Replace native date inputs with year→month→day glass picker and display exact next renewal dates in the businesses list.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 10:58:47 +03:30
Alireza HassaniandCursor 58408fed07 Fix create-business owner grid and edit renewal date.
Use title/first/last as 3-4-5, repair formFull spans, and fall back renewal to created date.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 10:33:26 +03:30
Alireza HassaniandCursor e2fb08cccd Show contract renewal in businesses and align SSL/view charts.
Add annual renewal column with color-coded days left, owner title and renewal fields on create, SSL expiry display, and updated view chart kinds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 10:13:06 +03:30
Alireza HassaniandCursor a52f963f52 Fix per-tenant dashboard SSL map to use SNI and readable certs.
Nginx must key the cert map on $ssl_server_name during handshake, and www-data needs ssl-cert group access to Let's Encrypt files when certificates are loaded via variables.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 08:49:43 +03:30
Alireza HassaniandCursor b7bce38131 Issue dashboard SSL per tenant instead of full cert sync.
Per-row Issue SSL now runs ssl-issue-tenant.sh for business/customer hosts only, with nginx cert map support, so one broken tenant cannot block others.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 01:20:03 +03:30
Alireza HassaniandCursor 202ac7d4bd Add view traffic charts to business home and super-admin.
Wire product, website, portfolio, and blog 30-day view charts to the analytics API and expose the new chart types in super-admin business settings.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 01:12:45 +03:30
Alireza HassaniandCursor 468bb87fcf Improve business profile branding uploads and super-admin link menus.
Show separate light/dark logo and favicon croppers in a compact grid, support favicon saves, and keep super-admin overflow dashboard links in English.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:51:12 +03:30
Alireza HassaniandCursor 5e799eddf9 Localize order modals, add dual logos, and improve admin order tools.
Farsi business order/variation UI, light/dark logo upload on business profile, payment order steps, variation editing, super-admin site links, and checkout/auth fixes.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:21:48 +03:30
Alireza HassaniandCursor dc570c1e7f Share customer session cookies with the storefront and polish business settings.
Keep JWT login mirrored on the tenant cookie domain, improve e-payment settings UX, and add a storefront link from the customer sidebar.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-25 16:40:52 +03:30
Alireza HassaniandCursor c289de5d2e Add portfolio website link field and card open-link control.
Stay on the current list page after move-to-top; only toast success.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 16:46:13 +03:30
Alireza HassaniandCursor 85524544ca Use moveToTop so portfolio chevron pins the item to list start.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 15:16:46 +03:30
Alireza HassaniandCursor be9e7da424 Fix portfolio move-to-top and put category beside the date.
Bump sort_order above the page leader instead of swapping, and align category left with date right on one meta row.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 15:12:45 +03:30
Alireza HassaniandCursor 1e9f6481b0 Fix portfolio list sorting UX and add name/category filters.
Newest portfolios show first with corrected move-up, category no longer mixes into the date, and website link generation can filter by tags.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-23 15:01:53 +03:30
Alireza HassaniandCursor 2477936bce Restore opaque frosted glass on nested category/link modals.
The lighter glass fill made the parent form show through when ساخت لینک opened over another dialog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 20:50:44 +03:30
Alireza HassaniandCursor 77080a7a4b Improve website settings and special-item pick UX.
Tighten sitemap/settings controls, debounce product search to 10 results, keep catalog-only specials visible after add, and use frosted glass on link/category modals.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 20:38:58 +03:30
Alireza HassaniandCursor a39aef0c8c Fix sitemap sync sending JWT by enabling auth on the API request.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 19:33:16 +03:30
Alireza HassaniandCursor 5926f772e2 Add website sitemap config sync to business dashboard settings.
Lets business owners import static pages and URL templates from the live storefront manifest before API sitemap generation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 15:15:32 +03:30
Alireza HassaniandCursor d5aca8bea7 Add business workshop management UI with Jalali scheduling and shared dashboard polish.
Includes workshop list/edit/details, registrations modal, category tree, shared EmptyState/RichTextEditor/toasts, and fixes for the Jalali date picker and thumbnail field layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-22 12:22:27 +03:30
Alireza HassaniandCursor 89269dff04 Fix business tenant binding and update password on cross-site signup.
Resolve the active business from the host domain so multi-business staff no longer load another tenant’s CMS data, and replace the Meshkee password when linking an existing account to a new site.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 12:07:17 +03:30
Alireza HassaniandCursor 193c63bfd2 Add Website settings for special-products source.
Businesses can choose product vs store item sourcing, with store as the default when the store module is enabled, and rename the FA special-products section.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-21 11:57:49 +03:30
Alireza HassaniandCursor a7950f1f13 Add bilingual user names and optional DNS updates in super-admin.
Edit user now has FA/EN first and last names, and domain save only upserts Arvan records when Update DNS is checked.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 11:50:57 +03:30
Alireza HassaniandCursor 353508a091 Fix customer header outside-click handler for DOM event typing.
Use Event instead of React MouseEvent so document listeners typecheck in production builds.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:48:45 +03:30
Alireza HassaniandCursor f8a9a28346 Add shared empty states, customer product filters, and SSO handoff across dashboards.
Standardize list empty UI, searchable country fields, customer-products filter row, password/login polish, and one-time business dashboard handoff from the customer app.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 19:46:57 +03:30
Alireza HassaniandCursor 832ac32a09 Add store-product Excel bulk edit and polish the business dashboard.
Export/import price and stock from Store Products, keep card order after saves, localize variations, and drop unused website nav items.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 01:02:43 +03:30
Alireza HassaniandCursor 7b51dda82a Hide website slider/special sections from business hub
Remove website homepage management cards for sliders, special categories, and special brands.
Also move the special section slug chip after the Farsi title.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 11:33:35 +03:30
Alireza HassaniandCursor 5f4b0b4f92 Fix store item variant defaults and listing sorting
Auto-select first option in variation modals and sort store items by availability, then update time.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 11:26:20 +03:30
Alireza HassaniandCursor b861ab3dc1 Refresh static image slots from the website catalog.
The dashboard can import and drop slots from the live site instead of creating them by hand.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 09:55:03 +03:30
Alireza HassaniandCursor 36180cda2b Give dashboards a themed orb background and a solid current-nav state.
Login pages share the same wash as the app shell; customer light mode matches business while dark mode stays gray.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 09:00:08 +03:30
Alireza HassaniandCursor e0e68de30f Add a reusable website link generator and polish static image cards.
Editors can pick product, store, blog, portfolio, or video category links, and image cards expose compact info/link actions without dumping URLs in the footer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 00:30:01 +03:30
Alireza HassaniandCursor b9024ad77a Add a static images manager and polish dashboard layout and fonts.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 23:56:17 +03:30
Alireza HassaniandCursor e79211e3cd Move e-payment to Settings and add ZarinPal credentials.
Gateway config now lives on the general Settings page, with Mellat fields in a 3-column layout and ZarinPal available at checkout.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-16 01:45:41 +03:30
Alireza HassaniandCursor 9a59bc8f65 Rename store items to store products and add an empty-state CTA.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-15 14:56:08 +03:30
Alireza HassaniandCursor 8e8929050e Show Arvan DNS errors when adding a domain in super-admin.
Add-domain now reports dnsError from the API and documents that tenant records are written in Arvan automatically.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-14 11:16:36 +03:30
Alireza HassaniandCursor c16ec3787b Fix dashboard production builds and default list pages to 24 items.
Unblock business/customer deploys and match the 24-per-page list rule in Super Admin.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 15:19:46 +03:30
Alireza HassaniandCursor cc94b929e0 Add e-payment UI, checkout payment result, and legacy migrate domain lookup.
Wire Mellat settings in business dashboard, customer bank return page with payment details, and super-admin migrate modal domain confirmation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-13 09:51:22 +03:30
Alireza HassaniandCursor a11f9643bb Polish public invoice mobile typography and justified copy.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 21:39:42 +03:30
Alireza HassaniandCursor 9e5a03548f Fix dashboard nginx Open Graph bot routing for invoice URLs.
Quote regex braces and proxy via rewrite so api.meshkee.com resolves without a runtime DNS resolver.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:21:12 +03:30
Alireza HassaniandCursor c3408a498a Route social crawlers on invoice URLs to Open Graph HTML.
Bots hitting /invoices/:id on manage get API OG markup; browsers still load the SPA.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:15:52 +03:30
Alireza HassaniandCursor 2be3b3376d Polish public invoice layout: account grid, duration, and copy-to-clipboard.
Also preserve item description line breaks and use local ported invoice links in DEV.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 16:03:33 +03:30