├── .editorconfig ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ └── config.yml ├── SECURITY.md └── workflows │ ├── monorepo-split.yml │ ├── npm-build.yml │ ├── phpstan.yml │ ├── pint.yml │ ├── tests.yml │ └── update-docs.yml ├── .gitignore ├── .prettierignore ├── .prettierrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── composer.json ├── composer.lock ├── monorepo-builder.php ├── package.json ├── packages ├── admin │ ├── composer.json │ ├── config │ │ ├── admin.php │ │ ├── auth.php │ │ ├── components │ │ │ ├── account.php │ │ │ ├── brand.php │ │ │ ├── category.php │ │ │ ├── collection.php │ │ │ ├── customer.php │ │ │ ├── dashboard.php │ │ │ ├── discount.php │ │ │ ├── order.php │ │ │ ├── product.php │ │ │ ├── review.php │ │ │ └── setting.php │ │ ├── features.php │ │ ├── routes.php │ │ └── settings.php │ ├── docs │ │ ├── content │ │ │ ├── acl.md │ │ │ ├── attributes.md │ │ │ ├── blade-starter-kit.md │ │ │ ├── brands.md │ │ │ ├── categories.md │ │ │ ├── collections.md │ │ │ ├── configuration.md │ │ │ ├── contributing.md │ │ │ ├── currencies.md │ │ │ ├── customers.md │ │ │ ├── dashboard.md │ │ │ ├── discounts.md │ │ │ ├── documentation.md │ │ │ ├── extending │ │ │ │ ├── control-panel.md │ │ │ │ ├── documentation.md │ │ │ │ ├── modals.md │ │ │ │ ├── navigation.md │ │ │ │ ├── overview.md │ │ │ │ └── slideover.md │ │ │ ├── inertia-starter-kit.md │ │ │ ├── initialization.md │ │ │ ├── installation.md │ │ │ ├── introduction.md │ │ │ ├── legal.md │ │ │ ├── livewire-starter-kit.md │ │ │ ├── locations.md │ │ │ ├── media.md │ │ │ ├── orders.md │ │ │ ├── pricing.md │ │ │ ├── product-variants.md │ │ │ ├── products.md │ │ │ ├── requirements.md │ │ │ ├── reviews.md │ │ │ ├── setup-store.md │ │ │ ├── starter-kits.md │ │ │ ├── two-factor.md │ │ │ └── zones.md │ │ └── screenshots │ │ │ ├── account-dropdown.png │ │ │ ├── add-admin.png │ │ │ ├── add-permission.png │ │ │ ├── add-role.png │ │ │ ├── attribute-form.png │ │ │ ├── attributes.png │ │ │ ├── blade-starterkit.png │ │ │ ├── brand-create.png │ │ │ ├── brand-empty-state.png │ │ │ ├── brand-lists.png │ │ │ ├── brands.png │ │ │ ├── cart-step-address.png │ │ │ ├── cart-step-payment.png │ │ │ ├── cart-step-shipping.png │ │ │ ├── cart.png │ │ │ ├── categories.png │ │ │ ├── category-create.png │ │ │ ├── collection-create.png │ │ │ ├── collection-preview.png │ │ │ ├── collection-rules.png │ │ │ ├── collections.png │ │ │ ├── create-customer.png │ │ │ ├── custom-permissions.png │ │ │ ├── customer-address.png │ │ │ ├── customer-create.png │ │ │ ├── customer-informations.png │ │ │ ├── customer-notification.png │ │ │ ├── customers-empty-state.png │ │ │ ├── customers.png │ │ │ ├── dashboard.png │ │ │ ├── discount-create.png │ │ │ ├── discounts-empty-state.png │ │ │ ├── inertia-starterkit.png │ │ │ ├── initialization-step-1.png │ │ │ ├── initialization-step-2.png │ │ │ ├── initialization-step-3.png │ │ │ ├── legal-screenshot.png │ │ │ ├── legal.png │ │ │ ├── livewire-starterkit.png │ │ │ ├── location-create.png │ │ │ ├── location-update.png │ │ │ ├── login.png │ │ │ ├── order-detail.png │ │ │ ├── order-place.png │ │ │ ├── orders-list.png │ │ │ ├── orders-with-zone.png │ │ │ ├── orders.png │ │ │ ├── payment-methods.png │ │ │ ├── permission-create.png │ │ │ ├── permissions-browse.png │ │ │ ├── permissions.png │ │ │ ├── product-attributes.png │ │ │ ├── product-inventory.png │ │ │ ├── product-pricing.png │ │ │ ├── product-seo.png │ │ │ ├── product-shipping.png │ │ │ ├── product-show-inventory.png │ │ │ ├── product-variant.png │ │ │ ├── products.png │ │ │ ├── profile.png │ │ │ ├── related-product.png │ │ │ ├── reviews-empty-state.png │ │ │ ├── setting-general.png │ │ │ ├── setting-location-create.png │ │ │ ├── setting-location-default.png │ │ │ ├── setting-locations.png │ │ │ ├── settings-staff.png │ │ │ ├── settings.png │ │ │ ├── single-product-screen.png │ │ │ ├── starter-kits.png │ │ │ ├── starterkit-account.png │ │ │ ├── starterkit-addresses.png │ │ │ ├── starterkit-auth.png │ │ │ ├── starterkit-cart.png │ │ │ ├── starterkit-checkout-addresses.png │ │ │ ├── starterkit-checkout-payment.png │ │ │ ├── starterkit-checkout-shipping-method.png │ │ │ ├── starterkit-collections.png │ │ │ ├── starterkit-enable-zone.png │ │ │ ├── starterkit-orders.png │ │ │ ├── starterkit-product-view.png │ │ │ ├── starterkit-products.png │ │ │ ├── starterkit-zones.png │ │ │ ├── store-currency.png │ │ │ ├── store-product-detail.png │ │ │ ├── two-factor-authentication.png │ │ │ ├── two-factor-code.png │ │ │ ├── two-factor-disable.png │ │ │ ├── two-factor-section.png │ │ │ └── update-role.png │ ├── public │ │ ├── images │ │ │ ├── favicons │ │ │ │ ├── android-chrome-192x192.png │ │ │ │ ├── android-chrome-512x512.png │ │ │ │ ├── apple-touch-icon.png │ │ │ │ ├── browserconfig.xml │ │ │ │ ├── favicon-16x16.png │ │ │ │ ├── favicon-32x32.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── mstile-150x150.png │ │ │ │ ├── safari-pinned-tab.svg │ │ │ │ └── site.webmanifest │ │ │ ├── flags │ │ │ │ ├── ac.svg │ │ │ │ ├── ad.svg │ │ │ │ ├── ae.svg │ │ │ │ ├── af.svg │ │ │ │ ├── ag.svg │ │ │ │ ├── ai.svg │ │ │ │ ├── al.svg │ │ │ │ ├── am.svg │ │ │ │ ├── ao.svg │ │ │ │ ├── aq.svg │ │ │ │ ├── ar.svg │ │ │ │ ├── as.svg │ │ │ │ ├── at.svg │ │ │ │ ├── au.svg │ │ │ │ ├── aw.svg │ │ │ │ ├── ax.svg │ │ │ │ ├── az.svg │ │ │ │ ├── ba.svg │ │ │ │ ├── bb.svg │ │ │ │ ├── bd.svg │ │ │ │ ├── be.svg │ │ │ │ ├── bf.svg │ │ │ │ ├── bg.svg │ │ │ │ ├── bh.svg │ │ │ │ ├── bi.svg │ │ │ │ ├── bj.svg │ │ │ │ ├── bl.svg │ │ │ │ ├── bm.svg │ │ │ │ ├── bn.svg │ │ │ │ ├── bo.svg │ │ │ │ ├── bq.svg │ │ │ │ ├── br.svg │ │ │ │ ├── bs.svg │ │ │ │ ├── bt.svg │ │ │ │ ├── bv.svg │ │ │ │ ├── bw.svg │ │ │ │ ├── by.svg │ │ │ │ ├── bz.svg │ │ │ │ ├── ca.svg │ │ │ │ ├── cc.svg │ │ │ │ ├── cd.svg │ │ │ │ ├── cf.svg │ │ │ │ ├── cg.svg │ │ │ │ ├── ch.svg │ │ │ │ ├── ci.svg │ │ │ │ ├── ck.svg │ │ │ │ ├── cl.svg │ │ │ │ ├── cm.svg │ │ │ │ ├── cn.svg │ │ │ │ ├── co.svg │ │ │ │ ├── cr.svg │ │ │ │ ├── cu.svg │ │ │ │ ├── cv.svg │ │ │ │ ├── cw.svg │ │ │ │ ├── cx.svg │ │ │ │ ├── cy.svg │ │ │ │ ├── cz.svg │ │ │ │ ├── de.svg │ │ │ │ ├── dj.svg │ │ │ │ ├── dk.svg │ │ │ │ ├── dm.svg │ │ │ │ ├── do.svg │ │ │ │ ├── dz.svg │ │ │ │ ├── ec.svg │ │ │ │ ├── ee.svg │ │ │ │ ├── eg.svg │ │ │ │ ├── eh.svg │ │ │ │ ├── er.svg │ │ │ │ ├── es.svg │ │ │ │ ├── et.svg │ │ │ │ ├── fi.svg │ │ │ │ ├── fj.svg │ │ │ │ ├── fk.svg │ │ │ │ ├── fm.svg │ │ │ │ ├── fo.svg │ │ │ │ ├── fr.svg │ │ │ │ ├── ga.svg │ │ │ │ ├── gb.svg │ │ │ │ ├── gd.svg │ │ │ │ ├── ge.svg │ │ │ │ ├── gf.svg │ │ │ │ ├── gg.svg │ │ │ │ ├── gh.svg │ │ │ │ ├── gi.svg │ │ │ │ ├── gl.svg │ │ │ │ ├── gm.svg │ │ │ │ ├── gn.svg │ │ │ │ ├── gp.svg │ │ │ │ ├── gq.svg │ │ │ │ ├── gr.svg │ │ │ │ ├── gs.svg │ │ │ │ ├── gt.svg │ │ │ │ ├── gu.svg │ │ │ │ ├── gw.svg │ │ │ │ ├── gy.svg │ │ │ │ ├── hk.svg │ │ │ │ ├── hm.svg │ │ │ │ ├── hn.svg │ │ │ │ ├── hr.svg │ │ │ │ ├── ht.svg │ │ │ │ ├── hu.svg │ │ │ │ ├── id.svg │ │ │ │ ├── ie.svg │ │ │ │ ├── il.svg │ │ │ │ ├── im.svg │ │ │ │ ├── in.svg │ │ │ │ ├── io.svg │ │ │ │ ├── iq.svg │ │ │ │ ├── ir.svg │ │ │ │ ├── is.svg │ │ │ │ ├── it.svg │ │ │ │ ├── je.svg │ │ │ │ ├── jm.svg │ │ │ │ ├── jo.svg │ │ │ │ ├── jp.svg │ │ │ │ ├── ke.svg │ │ │ │ ├── kg.svg │ │ │ │ ├── kh.svg │ │ │ │ ├── ki.svg │ │ │ │ ├── km.svg │ │ │ │ ├── kn.svg │ │ │ │ ├── kp.svg │ │ │ │ ├── kr.svg │ │ │ │ ├── kw.svg │ │ │ │ ├── ky.svg │ │ │ │ ├── kz.svg │ │ │ │ ├── la.svg │ │ │ │ ├── lb.svg │ │ │ │ ├── lc.svg │ │ │ │ ├── li.svg │ │ │ │ ├── lk.svg │ │ │ │ ├── lr.svg │ │ │ │ ├── ls.svg │ │ │ │ ├── lt.svg │ │ │ │ ├── lu.svg │ │ │ │ ├── lv.svg │ │ │ │ ├── ly.svg │ │ │ │ ├── ma.svg │ │ │ │ ├── mc.svg │ │ │ │ ├── md.svg │ │ │ │ ├── me.svg │ │ │ │ ├── mf.svg │ │ │ │ ├── mg.svg │ │ │ │ ├── mh.svg │ │ │ │ ├── mk.svg │ │ │ │ ├── ml.svg │ │ │ │ ├── mm.svg │ │ │ │ ├── mn.svg │ │ │ │ ├── mo.svg │ │ │ │ ├── mp.svg │ │ │ │ ├── mq.svg │ │ │ │ ├── mr.svg │ │ │ │ ├── ms.svg │ │ │ │ ├── mt.svg │ │ │ │ ├── mu.svg │ │ │ │ ├── mv.svg │ │ │ │ ├── mw.svg │ │ │ │ ├── mx.svg │ │ │ │ ├── my.svg │ │ │ │ ├── mz.svg │ │ │ │ ├── na.svg │ │ │ │ ├── nc.svg │ │ │ │ ├── ne.svg │ │ │ │ ├── nf.svg │ │ │ │ ├── ng.svg │ │ │ │ ├── ni.svg │ │ │ │ ├── nl.svg │ │ │ │ ├── no.svg │ │ │ │ ├── np.svg │ │ │ │ ├── nr.svg │ │ │ │ ├── nu.svg │ │ │ │ ├── nz.svg │ │ │ │ ├── om.svg │ │ │ │ ├── pa.svg │ │ │ │ ├── pe.svg │ │ │ │ ├── pf.svg │ │ │ │ ├── pg.svg │ │ │ │ ├── ph.svg │ │ │ │ ├── pk.svg │ │ │ │ ├── pl.svg │ │ │ │ ├── pm.svg │ │ │ │ ├── pn.svg │ │ │ │ ├── pr.svg │ │ │ │ ├── ps.svg │ │ │ │ ├── pt.svg │ │ │ │ ├── pw.svg │ │ │ │ ├── py.svg │ │ │ │ ├── qa.svg │ │ │ │ ├── re.svg │ │ │ │ ├── ro.svg │ │ │ │ ├── rs.svg │ │ │ │ ├── ru.svg │ │ │ │ ├── rw.svg │ │ │ │ ├── sa.svg │ │ │ │ ├── sb.svg │ │ │ │ ├── sc.svg │ │ │ │ ├── sd.svg │ │ │ │ ├── se.svg │ │ │ │ ├── sg.svg │ │ │ │ ├── sh.svg │ │ │ │ ├── si.svg │ │ │ │ ├── sj.svg │ │ │ │ ├── sk.svg │ │ │ │ ├── sl.svg │ │ │ │ ├── sm.svg │ │ │ │ ├── sn.svg │ │ │ │ ├── so.svg │ │ │ │ ├── sr.svg │ │ │ │ ├── ss.svg │ │ │ │ ├── st.svg │ │ │ │ ├── sv.svg │ │ │ │ ├── sx.svg │ │ │ │ ├── sy.svg │ │ │ │ ├── sz.svg │ │ │ │ ├── tc.svg │ │ │ │ ├── td.svg │ │ │ │ ├── tf.svg │ │ │ │ ├── tg.svg │ │ │ │ ├── th.svg │ │ │ │ ├── tj.svg │ │ │ │ ├── tk.svg │ │ │ │ ├── tl.svg │ │ │ │ ├── tm.svg │ │ │ │ ├── tn.svg │ │ │ │ ├── to.svg │ │ │ │ ├── tr.svg │ │ │ │ ├── tt.svg │ │ │ │ ├── tv.svg │ │ │ │ ├── tw.svg │ │ │ │ ├── tz.svg │ │ │ │ ├── ua.svg │ │ │ │ ├── ug.svg │ │ │ │ ├── um.svg │ │ │ │ ├── us.svg │ │ │ │ ├── uy.svg │ │ │ │ ├── uz.svg │ │ │ │ ├── va.svg │ │ │ │ ├── vc.svg │ │ │ │ ├── ve.svg │ │ │ │ ├── vg.svg │ │ │ │ ├── vi.svg │ │ │ │ ├── vn.svg │ │ │ │ ├── vu.svg │ │ │ │ ├── wf.svg │ │ │ │ ├── ws.svg │ │ │ │ ├── xk.svg │ │ │ │ ├── ye.svg │ │ │ │ ├── yt.svg │ │ │ │ ├── za.svg │ │ │ │ ├── zm.svg │ │ │ │ └── zw.svg │ │ │ ├── placeholder.jpg │ │ │ ├── shopper-icon.svg │ │ │ ├── shopper-logo-white.svg │ │ │ └── shopper-logo.svg │ │ ├── shopper.css │ │ ├── shopper.css.map │ │ ├── shopper.js │ │ └── shopper.js.map │ ├── resources │ │ ├── css │ │ │ ├── base.css │ │ │ ├── components │ │ │ │ ├── _treeselect.css │ │ │ │ ├── filament.css │ │ │ │ ├── shiki.css │ │ │ │ ├── sidebar.css │ │ │ │ └── treeselect.css │ │ │ ├── shopper.css │ │ │ └── theme.css │ │ ├── js │ │ │ ├── components │ │ │ │ ├── code-preview.js │ │ │ │ ├── internationalNumber.js │ │ │ │ ├── modal.js │ │ │ │ ├── panel.js │ │ │ │ ├── select-tree.js │ │ │ │ └── sortable.js │ │ │ └── index.js │ │ ├── lang │ │ │ ├── en │ │ │ │ ├── forms.php │ │ │ │ ├── layout.php │ │ │ │ ├── modals.php │ │ │ │ ├── notifications.php │ │ │ │ ├── pages │ │ │ │ │ ├── attributes.php │ │ │ │ │ ├── auth.php │ │ │ │ │ ├── brands.php │ │ │ │ │ ├── categories.php │ │ │ │ │ ├── collections.php │ │ │ │ │ ├── customers.php │ │ │ │ │ ├── dashboard.php │ │ │ │ │ ├── discounts.php │ │ │ │ │ ├── onboarding.php │ │ │ │ │ ├── orders.php │ │ │ │ │ ├── products.php │ │ │ │ │ ├── reviews.php │ │ │ │ │ └── settings │ │ │ │ │ │ ├── carriers.php │ │ │ │ │ │ ├── channels.php │ │ │ │ │ │ ├── global.php │ │ │ │ │ │ ├── menu.php │ │ │ │ │ │ ├── payments.php │ │ │ │ │ │ ├── staff.php │ │ │ │ │ │ └── zones.php │ │ │ │ └── words.php │ │ │ └── fr │ │ │ │ ├── forms.php │ │ │ │ ├── layout.php │ │ │ │ ├── modals.php │ │ │ │ ├── notifications.php │ │ │ │ ├── pages │ │ │ │ ├── attributes.php │ │ │ │ ├── auth.php │ │ │ │ ├── brands.php │ │ │ │ ├── categories.php │ │ │ │ ├── collections.php │ │ │ │ ├── customers.php │ │ │ │ ├── dashboard.php │ │ │ │ ├── discounts.php │ │ │ │ ├── onboarding.php │ │ │ │ ├── orders.php │ │ │ │ ├── products.php │ │ │ │ ├── reviews.php │ │ │ │ └── settings │ │ │ │ │ ├── carriers.php │ │ │ │ │ ├── channels.php │ │ │ │ │ ├── global.php │ │ │ │ │ ├── menu.php │ │ │ │ │ ├── payments.php │ │ │ │ │ ├── staff.php │ │ │ │ │ └── zones.php │ │ │ │ └── words.php │ │ └── views │ │ │ ├── auth │ │ │ └── two-factor-login.blade.php │ │ │ ├── components │ │ │ ├── adminbar │ │ │ │ ├── bar.blade.php │ │ │ │ ├── index.blade.php │ │ │ │ └── tab.blade.php │ │ │ ├── alert.blade.php │ │ │ ├── attribute-card.blade.php │ │ │ ├── auth-card.blade.php │ │ │ ├── badge.blade.php │ │ │ ├── brand.blade.php │ │ │ ├── breadcrumb │ │ │ │ ├── index.blade.php │ │ │ │ └── link.blade.php │ │ │ ├── buttons │ │ │ │ ├── danger.blade.php │ │ │ │ ├── default.blade.php │ │ │ │ └── primary.blade.php │ │ │ ├── card-with-gray-heading.blade.php │ │ │ ├── card.blade.php │ │ │ ├── code-preview.blade.php │ │ │ ├── container.blade.php │ │ │ ├── description-list │ │ │ │ ├── index.blade.php │ │ │ │ └── item.blade.php │ │ │ ├── dropdown-button.blade.php │ │ │ ├── dropdown-link.blade.php │ │ │ ├── dropdown.blade.php │ │ │ ├── empty-card.blade.php │ │ │ ├── empty-state.blade.php │ │ │ ├── escape.blade.php │ │ │ ├── favicons.blade.php │ │ │ ├── filament │ │ │ │ ├── attribute-color-badge.blade.php │ │ │ │ ├── forms │ │ │ │ │ ├── currency-mask.blade.php │ │ │ │ │ └── quantity.blade.php │ │ │ │ ├── section.blade.php │ │ │ │ └── warning.blade.php │ │ │ ├── form-slider-over.blade.php │ │ │ ├── forms │ │ │ │ ├── checkbox.blade.php │ │ │ │ ├── group.blade.php │ │ │ │ ├── input.blade.php │ │ │ │ ├── label-product.blade.php │ │ │ │ ├── radio.blade.php │ │ │ │ ├── search.blade.php │ │ │ │ ├── select.blade.php │ │ │ │ └── textarea.blade.php │ │ │ ├── heading.blade.php │ │ │ ├── icons │ │ │ │ ├── contrast.blade.php │ │ │ │ ├── facebook.blade.php │ │ │ │ ├── ga.blade.php │ │ │ │ ├── gtag.blade.php │ │ │ │ ├── instagram.blade.php │ │ │ │ ├── notchpay.blade.php │ │ │ │ ├── pixel.blade.php │ │ │ │ └── twitter.blade.php │ │ │ ├── label.blade.php │ │ │ ├── layouts │ │ │ │ ├── app.blade.php │ │ │ │ ├── app │ │ │ │ │ ├── header.blade.php │ │ │ │ │ └── sidebar │ │ │ │ │ │ ├── content.blade.php │ │ │ │ │ │ ├── index.blade.php │ │ │ │ │ │ ├── mobile.blade.php │ │ │ │ │ │ └── secondary.blade.php │ │ │ │ ├── base.blade.php │ │ │ │ ├── footer.blade.php │ │ │ │ └── setting.blade.php │ │ │ ├── learn-more.blade.php │ │ │ ├── link.blade.php │ │ │ ├── loader.blade.php │ │ │ ├── menu │ │ │ │ ├── nav-setting.blade.php │ │ │ │ └── setting.blade.php │ │ │ ├── modal.blade.php │ │ │ ├── section-heading.blade.php │ │ │ ├── separator.blade.php │ │ │ ├── shortcut.blade.php │ │ │ ├── skeleton │ │ │ │ ├── index.blade.php │ │ │ │ └── products │ │ │ │ │ └── section.blade.php │ │ │ ├── stock-badge.blade.php │ │ │ ├── tables │ │ │ │ ├── table-cell.blade.php │ │ │ │ ├── table-head.blade.php │ │ │ │ └── table-row.blade.php │ │ │ ├── theme-switcher │ │ │ │ ├── button.blade.php │ │ │ │ └── index.blade.php │ │ │ └── validation-errors.blade.php │ │ │ ├── filament │ │ │ ├── form │ │ │ │ ├── icon-picker.blade.php │ │ │ │ ├── select-tree.blade.php │ │ │ │ └── text-input-select.blade.php │ │ │ ├── icon-picker-item.blade.php │ │ │ ├── section.blade.php │ │ │ ├── slideover-wizard.blade.php │ │ │ ├── tables │ │ │ │ └── icon-column.blade.php │ │ │ └── wizard-column.blade.php │ │ │ ├── includes │ │ │ ├── _additional-scripts.blade.php │ │ │ └── _additional-styles.blade.php │ │ │ ├── livewire │ │ │ ├── components │ │ │ │ ├── account │ │ │ │ │ ├── devices.blade.php │ │ │ │ │ ├── dropdown.blade.php │ │ │ │ │ ├── password.blade.php │ │ │ │ │ ├── profile.blade.php │ │ │ │ │ └── two-factor.blade.php │ │ │ │ ├── collections │ │ │ │ │ └── products.blade.php │ │ │ │ ├── customers │ │ │ │ │ ├── addresses.blade.php │ │ │ │ │ ├── orders.blade.php │ │ │ │ │ └── profile.blade.php │ │ │ │ ├── initialization │ │ │ │ │ ├── steps.blade.php │ │ │ │ │ ├── store-address.blade.php │ │ │ │ │ ├── store-information.blade.php │ │ │ │ │ └── store-social-link.blade.php │ │ │ │ ├── modal.blade.php │ │ │ │ ├── products │ │ │ │ │ ├── attributes │ │ │ │ │ │ ├── multiple-choice.blade.php │ │ │ │ │ │ ├── single-choice.blade.php │ │ │ │ │ │ └── text.blade.php │ │ │ │ │ ├── forms │ │ │ │ │ │ ├── attributes.blade.php │ │ │ │ │ │ ├── edit.blade.php │ │ │ │ │ │ ├── files.blade.php │ │ │ │ │ │ ├── inventory.blade.php │ │ │ │ │ │ ├── media.blade.php │ │ │ │ │ │ ├── related.blade.php │ │ │ │ │ │ ├── seo.blade.php │ │ │ │ │ │ ├── shipping.blade.php │ │ │ │ │ │ └── variants.blade.php │ │ │ │ │ ├── pricing.blade.php │ │ │ │ │ ├── type-configuration.blade.php │ │ │ │ │ └── variant-stock.blade.php │ │ │ │ ├── search.blade.php │ │ │ │ ├── settings │ │ │ │ │ ├── legal │ │ │ │ │ │ ├── _form.blade.php │ │ │ │ │ │ └── index.blade.php │ │ │ │ │ ├── locations │ │ │ │ │ │ └── _form.blade.php │ │ │ │ │ ├── team │ │ │ │ │ │ ├── permissions.blade.php │ │ │ │ │ │ └── users-role.blade.php │ │ │ │ │ └── zones │ │ │ │ │ │ ├── detail.blade.php │ │ │ │ │ │ └── shipping-options.blade.php │ │ │ │ └── slide-over-panel.blade.php │ │ │ ├── modals │ │ │ │ ├── archive-order.blade.php │ │ │ │ ├── confirm-password.blade.php │ │ │ │ ├── create-permission.blade.php │ │ │ │ ├── create-role.blade.php │ │ │ │ ├── logout-others-browser.blade.php │ │ │ │ ├── payment-method-form.blade.php │ │ │ │ ├── products-lists.blade.php │ │ │ │ └── related-products-list.blade.php │ │ │ ├── pages │ │ │ │ ├── account.blade.php │ │ │ │ ├── attributes │ │ │ │ │ └── browse.blade.php │ │ │ │ ├── auth │ │ │ │ │ ├── forgot-password.blade.php │ │ │ │ │ ├── login.blade.php │ │ │ │ │ └── reset-password.blade.php │ │ │ │ ├── brand │ │ │ │ │ └── index.blade.php │ │ │ │ ├── category │ │ │ │ │ └── index.blade.php │ │ │ │ ├── collections │ │ │ │ │ ├── browse.blade.php │ │ │ │ │ └── edit.blade.php │ │ │ │ ├── customers │ │ │ │ │ ├── create.blade.php │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── show.blade.php │ │ │ │ ├── dashboard.blade.php │ │ │ │ ├── discounts │ │ │ │ │ └── index.blade.php │ │ │ │ ├── initialization.blade.php │ │ │ │ ├── orders │ │ │ │ │ ├── detail.blade.php │ │ │ │ │ └── index.blade.php │ │ │ │ ├── products │ │ │ │ │ ├── edit.blade.php │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── variant.blade.php │ │ │ │ ├── reviews │ │ │ │ │ └── index.blade.php │ │ │ │ └── settings │ │ │ │ │ ├── general.blade.php │ │ │ │ │ ├── index.blade.php │ │ │ │ │ ├── legal.blade.php │ │ │ │ │ ├── locations │ │ │ │ │ ├── create.blade.php │ │ │ │ │ ├── edit.blade.php │ │ │ │ │ └── index.blade.php │ │ │ │ │ ├── payment.blade.php │ │ │ │ │ ├── team │ │ │ │ │ ├── index.blade.php │ │ │ │ │ └── role.blade.php │ │ │ │ │ └── zones.blade.php │ │ │ ├── slide-overs │ │ │ │ ├── add-collection-form.blade.php │ │ │ │ ├── add-pricing.blade.php │ │ │ │ ├── add-product-form.blade.php │ │ │ │ ├── add-variant.blade.php │ │ │ │ ├── attribute-form.blade.php │ │ │ │ ├── attribute-values.blade.php │ │ │ │ ├── brand-form.blade.php │ │ │ │ ├── category-form.blade.php │ │ │ │ ├── choose-product-attributes.blade.php │ │ │ │ ├── collection-rules.blade.php │ │ │ │ ├── create-team-member.blade.php │ │ │ │ ├── discount-form.blade.php │ │ │ │ ├── form.blade.php │ │ │ │ ├── generate-variants.blade.php │ │ │ │ ├── re-order-categories.blade.php │ │ │ │ ├── review-detail.blade.php │ │ │ │ └── update-variant.blade.php │ │ │ └── tables │ │ │ │ └── cells │ │ │ │ ├── administrators │ │ │ │ └── name.blade.php │ │ │ │ ├── brands │ │ │ │ └── site.blade.php │ │ │ │ ├── categories │ │ │ │ └── name.blade.php │ │ │ │ ├── customers │ │ │ │ ├── email.blade.php │ │ │ │ └── name.blade.php │ │ │ │ ├── discounts │ │ │ │ ├── amount.blade.php │ │ │ │ └── date.blade.php │ │ │ │ ├── orders │ │ │ │ ├── customer.blade.php │ │ │ │ ├── number.blade.php │ │ │ │ ├── purchased.blade.php │ │ │ │ └── status.blade.php │ │ │ │ ├── products │ │ │ │ ├── attribute-value.blade.php │ │ │ │ └── stock.blade.php │ │ │ │ └── reviews │ │ │ │ ├── product.blade.php │ │ │ │ └── rating.blade.php │ │ │ ├── mails │ │ │ ├── email.blade.php │ │ │ └── html │ │ │ │ ├── button.blade.php │ │ │ │ ├── footer.blade.php │ │ │ │ ├── header.blade.php │ │ │ │ ├── layout.blade.php │ │ │ │ ├── message.blade.php │ │ │ │ └── subcopy.blade.php │ │ │ └── placeholders │ │ │ └── detail-zone.blade.php │ ├── routes │ │ ├── admin │ │ │ ├── collection.php │ │ │ ├── customer.php │ │ │ ├── order.php │ │ │ ├── product.php │ │ │ └── setting.php │ │ ├── auth.php │ │ ├── cpanel.php │ │ └── web.php │ ├── src │ │ ├── Actions │ │ │ ├── Auth │ │ │ │ ├── AttemptToAuthenticate.php │ │ │ │ ├── ConfirmPassword.php │ │ │ │ ├── DisableTwoFactorAuthentication.php │ │ │ │ ├── EnableTwoFactorAuthentication.php │ │ │ │ ├── GenerateNewRecoveryCodes.php │ │ │ │ ├── RecoveryCode.php │ │ │ │ └── RedirectIfTwoFactorAuthenticatable.php │ │ │ └── Store │ │ │ │ ├── InitialQuantityInventory.php │ │ │ │ ├── Product │ │ │ │ ├── AttachedAttributesToProductAction.php │ │ │ │ ├── CreateNewVariant.php │ │ │ │ ├── CreateProductAction.php │ │ │ │ ├── DetachAttributesToProductAction.php │ │ │ │ ├── SavePricingAction.php │ │ │ │ ├── SaveProductVariantsAction.php │ │ │ │ └── UpdateProductAction.php │ │ │ │ └── SaveAndDispatchDiscountAction.php │ │ ├── Components │ │ │ ├── Form │ │ │ │ ├── AddressField.php │ │ │ │ ├── CountrySelect.php │ │ │ │ ├── CurrenciesField.php │ │ │ │ ├── CustomAttributeKeyInput.php │ │ │ │ ├── GenderField.php │ │ │ │ ├── IconPicker.php │ │ │ │ ├── Quantity.php │ │ │ │ ├── SeoField.php │ │ │ │ ├── ShippingField.php │ │ │ │ └── TextInputSelect.php │ │ │ ├── Section.php │ │ │ ├── Separator.php │ │ │ ├── SlideOverWizard.php │ │ │ ├── Tables │ │ │ │ └── IconColumn.php │ │ │ ├── Warning.php │ │ │ ├── Wizard │ │ │ │ └── StepColumn.php │ │ │ └── WizardColumn.php │ │ ├── Console │ │ │ ├── ComponentPublishCommand.php │ │ │ ├── InstallCommand.php │ │ │ ├── MakePageCommand.php │ │ │ ├── MakeShopperPageCommand.php │ │ │ ├── PublishCommand.php │ │ │ ├── SymlinkCommand.php │ │ │ └── UserCommand.php │ │ ├── Contracts │ │ │ ├── FailedTwoFactorLoginResponse.php │ │ │ ├── HasForm.php │ │ │ ├── LoginResponse.php │ │ │ ├── ModalContract.php │ │ │ ├── PanelContract.php │ │ │ ├── SlideOverForm.php │ │ │ ├── TwoFactorAuthenticationProvider.php │ │ │ ├── TwoFactorDisabledResponse.php │ │ │ ├── TwoFactorEnabledResponse.php │ │ │ └── TwoFactorLoginResponse.php │ │ ├── Enum │ │ │ └── FeatureState.php │ │ ├── Events │ │ │ ├── CatalogSidebar.php │ │ │ ├── CustomerSidebar.php │ │ │ ├── DashboardSidebar.php │ │ │ ├── LoadShopper.php │ │ │ ├── SalesSidebar.php │ │ │ └── TwoFactor │ │ │ │ ├── TwoFactorAuthenticationDisabled.php │ │ │ │ ├── TwoFactorAuthenticationEnabled.php │ │ │ │ └── TwoFactorAuthenticationEvent.php │ │ ├── Exceptions │ │ │ ├── AuthenticationException.php │ │ │ └── InvalidEmailException.php │ │ ├── Facades │ │ │ └── Shopper.php │ │ ├── Feature.php │ │ ├── Helpers │ │ │ └── MapProductOptions.php │ │ ├── Http │ │ │ ├── Controllers │ │ │ │ ├── AssetController.php │ │ │ │ └── Auth │ │ │ │ │ └── TwoFactorAuthenticatedController.php │ │ │ ├── Middleware │ │ │ │ ├── Authenticate.php │ │ │ │ ├── Dashboard.php │ │ │ │ ├── DispatchShopper.php │ │ │ │ ├── HasConfiguration.php │ │ │ │ └── RedirectIfAuthenticated.php │ │ │ ├── Requests │ │ │ │ └── TwoFactorLoginRequest.php │ │ │ └── Responses │ │ │ │ ├── FailedTwoFactorLoginResponse.php │ │ │ │ ├── LoginResponse.php │ │ │ │ ├── TwoFactorDisabledResponse.php │ │ │ │ ├── TwoFactorEnabledResponse.php │ │ │ │ └── TwoFactorLoginResponse.php │ │ ├── Jobs │ │ │ ├── AttachedDiscountToCustomers.php │ │ │ └── AttachedDiscountToProducts.php │ │ ├── Livewire │ │ │ ├── Components │ │ │ │ ├── Account │ │ │ │ │ ├── Devices.php │ │ │ │ │ ├── Dropdown.php │ │ │ │ │ ├── Password.php │ │ │ │ │ ├── Profile.php │ │ │ │ │ └── TwoFactor.php │ │ │ │ ├── Collection │ │ │ │ │ └── CollectionProducts.php │ │ │ │ ├── Customers │ │ │ │ │ ├── Addresses.php │ │ │ │ │ ├── Orders.php │ │ │ │ │ └── Profile.php │ │ │ │ ├── Initialization │ │ │ │ │ ├── InitializationWizard.php │ │ │ │ │ └── Steps │ │ │ │ │ │ ├── StoreAddress.php │ │ │ │ │ │ ├── StoreInformation.php │ │ │ │ │ │ └── StoreSocialLink.php │ │ │ │ ├── Modal.php │ │ │ │ ├── ModalComponent.php │ │ │ │ ├── Products │ │ │ │ │ ├── Attributes │ │ │ │ │ │ ├── Actions.php │ │ │ │ │ │ ├── MultipleChoice.php │ │ │ │ │ │ ├── SingleChoice.php │ │ │ │ │ │ └── Text.php │ │ │ │ │ ├── Form │ │ │ │ │ │ ├── Attributes.php │ │ │ │ │ │ ├── Edit.php │ │ │ │ │ │ ├── Files.php │ │ │ │ │ │ ├── Inventory.php │ │ │ │ │ │ ├── Media.php │ │ │ │ │ │ ├── RelatedProducts.php │ │ │ │ │ │ ├── Seo.php │ │ │ │ │ │ ├── Shipping.php │ │ │ │ │ │ └── Variants.php │ │ │ │ │ ├── Pricing.php │ │ │ │ │ ├── ProductTypeConfiguration.php │ │ │ │ │ └── VariantStock.php │ │ │ │ ├── Search.php │ │ │ │ ├── Settings │ │ │ │ │ ├── Legal │ │ │ │ │ │ ├── PolicyForm.php │ │ │ │ │ │ ├── Privacy.php │ │ │ │ │ │ ├── Refund.php │ │ │ │ │ │ ├── Shipping.php │ │ │ │ │ │ └── Terms.php │ │ │ │ │ ├── Locations │ │ │ │ │ │ └── InventoryForm.php │ │ │ │ │ ├── Team │ │ │ │ │ │ ├── Permissions.php │ │ │ │ │ │ └── UsersRole.php │ │ │ │ │ └── Zones │ │ │ │ │ │ ├── Detail.php │ │ │ │ │ │ └── ZoneShippingOptions.php │ │ │ │ ├── SlideOverComponent.php │ │ │ │ └── SlideOverPanel.php │ │ │ ├── Modals │ │ │ │ ├── ArchiveOrder.php │ │ │ │ ├── CollectionProductsList.php │ │ │ │ ├── ConfirmPassword.php │ │ │ │ ├── CreatePermission.php │ │ │ │ ├── CreateRole.php │ │ │ │ ├── LogoutOthersBrowser.php │ │ │ │ ├── PaymentMethodForm.php │ │ │ │ └── RelatedProductsList.php │ │ │ ├── Pages │ │ │ │ ├── AbstractPageComponent.php │ │ │ │ ├── Account.php │ │ │ │ ├── Attribute │ │ │ │ │ └── Browse.php │ │ │ │ ├── Auth │ │ │ │ │ ├── ForgotPassword.php │ │ │ │ │ ├── Login.php │ │ │ │ │ └── ResetPassword.php │ │ │ │ ├── Brand │ │ │ │ │ └── Index.php │ │ │ │ ├── Category │ │ │ │ │ └── Index.php │ │ │ │ ├── Collection │ │ │ │ │ ├── Edit.php │ │ │ │ │ └── Index.php │ │ │ │ ├── Customers │ │ │ │ │ ├── Create.php │ │ │ │ │ ├── Index.php │ │ │ │ │ └── Show.php │ │ │ │ ├── Dashboard.php │ │ │ │ ├── Discount │ │ │ │ │ └── Index.php │ │ │ │ ├── Initialization.php │ │ │ │ ├── Order │ │ │ │ │ ├── Detail.php │ │ │ │ │ └── Index.php │ │ │ │ ├── Product │ │ │ │ │ ├── Edit.php │ │ │ │ │ ├── Index.php │ │ │ │ │ └── Variant.php │ │ │ │ ├── Reviews │ │ │ │ │ └── Index.php │ │ │ │ └── Settings │ │ │ │ │ ├── General.php │ │ │ │ │ ├── Index.php │ │ │ │ │ ├── LegalPage.php │ │ │ │ │ ├── Locations │ │ │ │ │ ├── Create.php │ │ │ │ │ ├── Edit.php │ │ │ │ │ └── Index.php │ │ │ │ │ ├── Payment.php │ │ │ │ │ ├── Team │ │ │ │ │ ├── Index.php │ │ │ │ │ └── RolePermission.php │ │ │ │ │ └── Zones.php │ │ │ └── SlideOvers │ │ │ │ ├── AddCollectionForm.php │ │ │ │ ├── AddProduct.php │ │ │ │ ├── AddVariant.php │ │ │ │ ├── AttributeForm.php │ │ │ │ ├── AttributeValues.php │ │ │ │ ├── BrandForm.php │ │ │ │ ├── CategoryForm.php │ │ │ │ ├── ChooseProductAttributes.php │ │ │ │ ├── CollectionRules.php │ │ │ │ ├── CreateTeamMember.php │ │ │ │ ├── DiscountForm.php │ │ │ │ ├── GenerateVariants.php │ │ │ │ ├── ManagePricing.php │ │ │ │ ├── ReOrderCategories.php │ │ │ │ ├── ReviewDetail.php │ │ │ │ ├── ShippingOptionForm.php │ │ │ │ ├── UpdateVariant.php │ │ │ │ └── ZoneForm.php │ │ ├── Notifications │ │ │ ├── AdminSendCredentials.php │ │ │ └── CustomerSendCredentials.php │ │ ├── Providers │ │ │ ├── FeatureServiceProvider.php │ │ │ ├── SidebarServiceProvider.php │ │ │ └── TwoFactorAuthenticationProvider.php │ │ ├── ShopperPanel.php │ │ ├── ShopperServiceProvider.php │ │ ├── Sidebar │ │ │ ├── AbstractAdminSidebar.php │ │ │ ├── AdminSidebar.php │ │ │ ├── SidebarBuilder.php │ │ │ └── SidebarCreator.php │ │ ├── Traits │ │ │ ├── CanBeCacheable.php │ │ │ ├── ConfirmsPasswords.php │ │ │ ├── HasAuthenticated.php │ │ │ ├── InteractsWithSlideOverForm.php │ │ │ ├── LoadComponents.php │ │ │ ├── SaveSettings.php │ │ │ └── TwoFactorAuthenticatable.php │ │ └── helpers.php │ ├── stubs │ │ ├── page-component.stub │ │ └── view.stub │ └── tailwind.config.preset.js ├── core │ ├── composer.json │ ├── config │ │ ├── core.php │ │ ├── media.php │ │ ├── models.php │ │ └── orders.php │ ├── database │ │ ├── data │ │ │ ├── countries.php │ │ │ └── currencies.php │ │ ├── factories │ │ │ ├── AddressFactory.php │ │ │ ├── AttributeFactory.php │ │ │ ├── AttributeProductFactory.php │ │ │ ├── AttributeValueFactory.php │ │ │ ├── BrandFactory.php │ │ │ ├── CarrierFactory.php │ │ │ ├── CarrierOptionFactory.php │ │ │ ├── CategoryFactory.php │ │ │ ├── ChannelFactory.php │ │ │ ├── CollectionFactory.php │ │ │ ├── CollectionRuleFactory.php │ │ │ ├── CountryFactory.php │ │ │ ├── CurrencyFactory.php │ │ │ ├── DiscountDetailFactory.php │ │ │ ├── DiscountFactory.php │ │ │ ├── GeolocationFactory.php │ │ │ ├── InventoryFactory.php │ │ │ ├── InventoryHistoryFactory.php │ │ │ ├── OrderAddressFactory.php │ │ │ ├── OrderFactory.php │ │ │ ├── OrderItemFactory.php │ │ │ ├── OrderRefundFactory.php │ │ │ ├── OrderShippingFactory.php │ │ │ ├── PaymentMethodFactory.php │ │ │ ├── PriceFactory.php │ │ │ ├── ProductFactory.php │ │ │ ├── ProductVariantFactory.php │ │ │ ├── ReviewFactory.php │ │ │ ├── SettingFactory.php │ │ │ ├── UserFactory.php │ │ │ └── ZoneFactory.php │ │ ├── migrations │ │ │ ├── 2019_05_03_000001_create_customer_columns.php │ │ │ ├── 2019_11_18_220125_create_permission_tables.php │ │ │ ├── 2020_00_00_000001_create_countries_table.php │ │ │ ├── 2020_00_00_000001_create_currencies_table.php │ │ │ ├── 2020_00_00_000001_create_settings_table.php │ │ │ ├── 2020_00_01_000000_create_user_addresses_table.php.php │ │ │ ├── 2020_00_02_000001_add_two_factor_columns_to_users_table.php │ │ │ ├── 2020_00_02_000001_create_channels_table.php │ │ │ ├── 2020_00_02_000002_create_inventories_table.php │ │ │ ├── 2020_00_02_000003_create_categories_table.php │ │ │ ├── 2020_00_02_000004_create_brands_table.php │ │ │ ├── 2020_00_02_000005_create_collections_table.php │ │ │ ├── 2020_00_02_000006_create_products_table.php │ │ │ ├── 2020_00_02_000007_create_attributes_table.php │ │ │ ├── 2020_00_02_000007_create_carriers_table.php │ │ │ ├── 2020_00_02_000008_create_payment_methods_table.php │ │ │ ├── 2020_00_02_000009_create_discounts_table.php │ │ │ ├── 2020_00_02_000010_create_reviews_table.php │ │ │ ├── 2020_00_03_000001_create_orders_table.php │ │ │ ├── 2020_00_03_000002_create_order_shippings_table.php │ │ │ ├── 2020_00_03_000002_create_users_geolocation_history_table.php │ │ │ ├── 2020_00_03_000003_create_order_items_table.php │ │ │ ├── 2020_00_03_000004_create_order_refunds_table.php │ │ │ ├── 2021_01_18_174504_create_legals_table.php │ │ │ ├── 2021_02_10_153239_create_product_has_relations_table.php │ │ │ ├── 2023_07_25_044432_add_icon_column.php │ │ │ ├── 2023_07_28_095404_create_attribute_product_table.php │ │ │ ├── 2023_09_21_063717_rename_requires_shipping_columns_on_products_table.php │ │ │ ├── 2024_03_28_084412_add_metadata-fields_table.php │ │ │ ├── 2024_04_23_104020_create_zones_table.php │ │ │ ├── 2024_06_10_071333_create_carrier_options_table.php │ │ │ ├── 2024_07_06_161600_create_order_addresses_table.php │ │ │ ├── 2024_07_06_174243_add_columns_to_orders_table.php │ │ │ ├── 2024_12_06_191438_add_zone_id_column_to_discounts_table.php │ │ │ ├── 2024_12_07_142851_create_product_variants_table.php │ │ │ ├── 2024_12_09_012530_create_prices_table.php │ │ │ ├── 2024_12_09_012533_add_is_enable_column_channels_table.php │ │ │ ├── 2024_12_28_164020_create_variant_attribute_value_table.php │ │ │ └── 2025_02_15_103103_add_is_enabled_column_to_currencies_table.php │ │ └── seeders │ │ │ ├── Auth │ │ │ ├── PermissionRoleTableSeeder.php │ │ │ ├── PermissionsTableSeeder.php │ │ │ └── RolesTableSeeder.php │ │ │ ├── AuthTableSeeder.php │ │ │ ├── CarrierSeeder.php │ │ │ ├── ChannelSeeder.php │ │ │ ├── CountriesTableSeeder.php │ │ │ ├── CurrenciesTableSeeder.php │ │ │ ├── LegalsPageTableSeeder.php │ │ │ ├── PaymentMethodSeeder.php │ │ │ └── ShopperSeeder.php │ ├── resources │ │ └── lang │ │ │ ├── en │ │ │ ├── enum │ │ │ │ ├── address.php │ │ │ │ ├── collection.php │ │ │ │ ├── discount.php │ │ │ │ └── product.php │ │ │ ├── forms.php │ │ │ └── status.php │ │ │ └── fr │ │ │ ├── enum │ │ │ ├── address.php │ │ │ ├── collection.php │ │ │ ├── discount.php │ │ │ └── product.php │ │ │ ├── forms.php │ │ │ └── status.php │ └── src │ │ ├── Console │ │ ├── InstallCommand.php │ │ └── Thanks.php │ │ ├── Contracts │ │ ├── HasReviews.php │ │ └── RepositoryContract.php │ │ ├── CoreServiceProvider.php │ │ ├── Enum │ │ ├── AddressType.php │ │ ├── CollectionType.php │ │ ├── Dimension │ │ │ ├── Length.php │ │ │ ├── Volume.php │ │ │ └── Weight.php │ │ ├── DiscountApplyTo.php │ │ ├── DiscountEligibility.php │ │ ├── DiscountRequirement.php │ │ ├── DiscountType.php │ │ ├── FieldType.php │ │ ├── GenderType.php │ │ ├── Operator.php │ │ ├── OrderRefundStatus.php │ │ ├── OrderStatus.php │ │ ├── PaymentStatus.php │ │ ├── ProductType.php │ │ └── Rule.php │ │ ├── Events │ │ ├── Orders │ │ │ ├── AddNote.php │ │ │ ├── Cancel.php │ │ │ ├── Completed.php │ │ │ ├── Created.php │ │ │ ├── Deleted.php │ │ │ ├── Paid.php │ │ │ └── Registered.php │ │ └── Products │ │ │ ├── Created.php │ │ │ ├── Deleted.php │ │ │ └── Updated.php │ │ ├── Exceptions │ │ ├── ModelRepositoryException.php │ │ ├── ShopperException.php │ │ └── UndefinedEnumCaseError.php │ │ ├── Helpers │ │ ├── Migration.php │ │ └── Price.php │ │ ├── Macros │ │ └── Arr.php │ │ ├── Models │ │ ├── Address.php │ │ ├── Attribute.php │ │ ├── AttributeProduct.php │ │ ├── AttributeValue.php │ │ ├── Brand.php │ │ ├── Carrier.php │ │ ├── CarrierOption.php │ │ ├── Category.php │ │ ├── Channel.php │ │ ├── Collection.php │ │ ├── CollectionRule.php │ │ ├── Country.php │ │ ├── Currency.php │ │ ├── Discount.php │ │ ├── DiscountDetail.php │ │ ├── Geolocation.php │ │ ├── Inventory.php │ │ ├── InventoryHistory.php │ │ ├── Legal.php │ │ ├── Order.php │ │ ├── OrderAddress.php │ │ ├── OrderItem.php │ │ ├── OrderRefund.php │ │ ├── OrderShipping.php │ │ ├── PaymentMethod.php │ │ ├── Permission.php │ │ ├── Price.php │ │ ├── Product.php │ │ ├── ProductVariant.php │ │ ├── Review.php │ │ ├── Role.php │ │ ├── Setting.php │ │ ├── Traits │ │ │ ├── HasDimensions.php │ │ │ ├── HasDiscounts.php │ │ │ ├── HasMedia.php │ │ │ ├── HasPrices.php │ │ │ ├── HasProfilePhoto.php │ │ │ ├── HasStock.php │ │ │ └── InteractsWithReviews.php │ │ ├── User.php │ │ └── Zone.php │ │ ├── Observers │ │ ├── AddressObserver.php │ │ ├── CategoryObserver.php │ │ ├── ChannelObserver.php │ │ ├── InventoryObserver.php │ │ ├── OrderObserver.php │ │ ├── ProductObserver.php │ │ └── ProductVariantObserver.php │ │ ├── Repositories │ │ ├── BrandRepository.php │ │ ├── CategoryRepository.php │ │ ├── ChannelRepository.php │ │ ├── CollectionRepository.php │ │ ├── ProductRepository.php │ │ ├── Repository.php │ │ ├── UserRepository.php │ │ └── VariantRepository.php │ │ ├── Traits │ │ ├── ArrayableEnum.php │ │ ├── HasEnumStaticMethods.php │ │ ├── HasRegisterConfigAndMigrationFiles.php │ │ ├── HasSlug.php │ │ └── HasZones.php │ │ └── helpers.php └── sidebar │ ├── README.md │ ├── composer.json │ ├── config │ └── sidebar.php │ ├── resources │ └── views │ │ ├── append.blade.php │ │ ├── badge.blade.php │ │ ├── group.blade.php │ │ ├── item.blade.php │ │ └── menu.blade.php │ └── src │ ├── Contracts │ ├── Builder │ │ ├── Append.php │ │ ├── Authorizable.php │ │ ├── Badge.php │ │ ├── Group.php │ │ ├── Item.php │ │ ├── Itemable.php │ │ └── Menu.php │ ├── Routeable.php │ ├── ShouldCache.php │ ├── Sidebar.php │ └── SidebarExtender.php │ ├── Domain │ ├── DefaultAppend.php │ ├── DefaultBadge.php │ ├── DefaultGroup.php │ ├── DefaultItem.php │ ├── DefaultMenu.php │ └── Events │ │ ├── FlushesSidebarCache.php │ │ └── ShouldFlushCache.php │ ├── Exceptions │ ├── CacheTagsNotSupported.php │ ├── LogicException.php │ ├── SidebarFlusherNotSupported.php │ └── SidebarResolverNotSupported.php │ ├── Infrastructure │ ├── CacheKey.php │ ├── ContainerResolver.php │ ├── NullSidebarFlusher.php │ ├── SidebarFlusher.php │ ├── SidebarFlusherFactory.php │ ├── SidebarResolver.php │ ├── SidebarResolverFactory.php │ ├── StaticCacheResolver.php │ ├── StaticSidebarFlusher.php │ ├── SupportsCacheTags.php │ ├── UserBasedCacheResolver.php │ └── UserBasedSidebarFlusher.php │ ├── Middleware │ └── ResolveSidebars.php │ ├── Presentation │ ├── AbstractRenderer.php │ ├── ActiveStateChecker.php │ ├── SidebarRenderer.php │ └── View │ │ ├── AppendRenderer.php │ │ ├── BadgeRenderer.php │ │ ├── GroupRenderer.php │ │ ├── ItemRenderer.php │ │ └── SidebarRenderer.php │ ├── SidebarManager.php │ ├── SidebarServiceProvider.php │ └── Traits │ ├── AuthorizableTrait.php │ ├── CacheableTrait.php │ ├── CallableTrait.php │ ├── ItemableTrait.php │ └── RouteableTrait.php ├── phpstan-baseline.neon ├── phpstan.neon ├── phpunit.xml.dist ├── pint.json ├── pnpm-lock.yaml ├── rector.php ├── scripts └── build.js ├── tailwind.config.js ├── testbench.yaml └── tests ├── Pest.php ├── database └── migrations │ └── create_media_table.php └── src ├── Admin ├── Actions │ └── Store │ │ └── SaveAndDispatchDiscountActionTest.php ├── Auth │ ├── LoginTest.php │ └── LogoutTest.php ├── Features │ ├── Brand │ │ └── BrandTest.php │ ├── Category │ │ └── CategoryTest.php │ ├── Collection │ │ ├── CollectionProductsListTest.php │ │ └── CollectionTest.php │ ├── Discount │ │ └── DiscountTest.php │ ├── Product │ │ ├── Forms │ │ │ └── AttributesTest.php │ │ └── ProductTest.php │ └── TestCase.php └── Initialization │ └── IntializeTest.php ├── Sidebar ├── Domain │ ├── DefaultAppendTest.php │ ├── DefaultBadgeTest.php │ ├── DefaultGroupTest.php │ ├── DefaultItemTest.php │ └── DefaultMenuTest.php ├── SidebarTest.php ├── Stubs │ ├── AppendStub.php │ ├── AuthorizableStub.php │ ├── BadgeStub.php │ ├── GroupStub.php │ ├── ItemStub.php │ ├── ItemableStub.php │ ├── MenuStub.php │ ├── RouteableStub.php │ └── SidebarExtenderStub.php └── Traits │ ├── AuthorizableTraitTest.php │ ├── ItemableTraitTest.php │ └── RouteableTraitTest.php └── TestCase.php /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 4 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*{.yml,.yaml,.css,.js,.json}] 15 | indent_size = 2 16 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | github: [mckenziearts, shopperlabs] 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Bug Report 4 | url: https://github.com/shopperlabs/shopper/issues/new 5 | about: Submit a bug or an issue 6 | - name: Feature request 7 | url: https://github.com/shopperlabs/shopper/discussions/new 8 | about: For ideas or feature requests 9 | - name: Support questions & other 10 | url: https://github.com/shopperlabs/shopper/discussions/new 11 | about: If you have a question or need help using the framework 12 | - name: Discord 13 | url: https://laravelshopper.dev/discord 14 | about: For quick help, ask questions in the appropriate channel 15 | -------------------------------------------------------------------------------- /.github/SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | **PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY.** 4 | 5 | ## Reporting a Vulnerability 6 | 7 | If you discover a security vulnerability within Shopper Framework, please send an email to Arthur Monney at monneylobe@gmail.com. All security vulnerabilities will be promptly addressed. 8 | -------------------------------------------------------------------------------- /.github/workflows/pint.yml: -------------------------------------------------------------------------------- 1 | name: pint 2 | 3 | on: 4 | push: 5 | branches: 6 | - '*.x' 7 | pull_request: 8 | 9 | jobs: 10 | pint: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Checkout code 15 | uses: actions/checkout@v3 16 | with: 17 | ref: ${{ github.head_ref }} 18 | - name: Set up PHP 19 | uses: shivammathur/setup-php@v2 20 | with: 21 | php-version: 8.3 22 | - name: Install dependencies 23 | run: composer install --no-interaction 24 | - name: Run Laravel Pint 25 | run: composer pint 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | /.vscode 3 | /node_modules 4 | /node_modules.nosync 5 | yarn-error.log 6 | /**/vendor 7 | /vendor.nosync 8 | composer.phar 9 | phpunit.xml 10 | .phpunit.result.cache 11 | .php-cs-fixer.cache 12 | build 13 | Thumbs.db 14 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | /**/vendor 4 | /**/public 5 | .git 6 | **/.git 7 | package-lock.json 8 | composer.lock 9 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "semi": false, 4 | "singleQuote": true, 5 | "tabWidth": 2, 6 | "tailwindConfig": "./tailwind.config.js", 7 | "trailingComma": "all", 8 | "plugins": [ 9 | "prettier-plugin-blade", 10 | "prettier-plugin-tailwindcss" 11 | ], 12 | "overrides": [ 13 | { 14 | "files": [ 15 | "*.blade.php" 16 | ], 17 | "options": { 18 | "parser": "blade", 19 | "tabWidth": 4 20 | } 21 | } 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/CODE_OF_CONDUCT.md -------------------------------------------------------------------------------- /packages/admin/docs/content/blade-starter-kit.md: -------------------------------------------------------------------------------- 1 | # Blade Starter kit 2 | 3 | Blade Starter kits 4 | 5 | Soon... 6 | -------------------------------------------------------------------------------- /packages/admin/docs/content/extending/documentation.md: -------------------------------------------------------------------------------- 1 | - ##### Admin Panel 2 | - [Overview](/docs/{{version}}/control-panel) 3 | - [Navigation](/docs/{{version}}/navigation) 4 | - ##### Components 5 | - [SlideOver](/docs/{{version}}/slideover) 6 | - [Modals](/docs/{{version}}/modals) 7 | -------------------------------------------------------------------------------- /packages/admin/docs/content/extending/modals.md: -------------------------------------------------------------------------------- 1 | # Modals 2 | 3 | Coming Soon... 4 | -------------------------------------------------------------------------------- /packages/admin/docs/content/extending/slideover.md: -------------------------------------------------------------------------------- 1 | # Slideover 2 | 3 | The forms allow us to quickly create input fields for our information to be stored in the database. 4 | 5 | Coming Soon... 6 | -------------------------------------------------------------------------------- /packages/admin/docs/content/inertia-starter-kit.md: -------------------------------------------------------------------------------- 1 | # InertiaJS Starter Kit 2 | 3 | Inertia Starter kits 4 | 5 | Soon... 6 | -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/account-dropdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/account-dropdown.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/add-admin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/add-admin.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/add-permission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/add-permission.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/add-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/add-role.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/attribute-form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/attribute-form.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/attributes.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/blade-starterkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/blade-starterkit.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/brand-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/brand-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/brand-empty-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/brand-empty-state.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/brand-lists.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/brand-lists.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/brands.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/brands.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/cart-step-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/cart-step-address.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/cart-step-payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/cart-step-payment.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/cart-step-shipping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/cart-step-shipping.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/cart.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/categories.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/categories.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/category-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/category-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/collection-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/collection-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/collection-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/collection-preview.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/collection-rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/collection-rules.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/collections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/collections.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/create-customer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/create-customer.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/custom-permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/custom-permissions.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/customer-address.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/customer-address.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/customer-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/customer-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/customer-informations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/customer-informations.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/customer-notification.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/customer-notification.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/customers-empty-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/customers-empty-state.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/customers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/customers.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/dashboard.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/discount-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/discount-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/discounts-empty-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/discounts-empty-state.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/inertia-starterkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/inertia-starterkit.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/initialization-step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/initialization-step-1.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/initialization-step-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/initialization-step-2.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/initialization-step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/initialization-step-3.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/legal-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/legal-screenshot.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/legal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/legal.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/livewire-starterkit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/livewire-starterkit.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/location-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/location-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/location-update.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/location-update.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/login.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/order-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/order-detail.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/order-place.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/order-place.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/orders-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/orders-list.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/orders-with-zone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/orders-with-zone.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/orders.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/payment-methods.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/payment-methods.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/permission-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/permission-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/permissions-browse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/permissions-browse.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/permissions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/permissions.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-attributes.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-inventory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-inventory.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-pricing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-pricing.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-seo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-seo.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-shipping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-shipping.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-show-inventory.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-show-inventory.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/product-variant.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/product-variant.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/products.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/products.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/profile.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/related-product.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/related-product.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/reviews-empty-state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/reviews-empty-state.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/setting-general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/setting-general.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/setting-location-create.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/setting-location-create.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/setting-location-default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/setting-location-default.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/setting-locations.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/setting-locations.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/settings-staff.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/settings-staff.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/settings.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/single-product-screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/single-product-screen.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starter-kits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starter-kits.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-account.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-addresses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-addresses.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-auth.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-cart.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-checkout-addresses.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-checkout-addresses.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-checkout-payment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-checkout-payment.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-checkout-shipping-method.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-checkout-shipping-method.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-collections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-collections.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-enable-zone.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-enable-zone.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-orders.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-orders.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-product-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-product-view.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-products.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-products.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/starterkit-zones.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/starterkit-zones.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/store-currency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/store-currency.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/store-product-detail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/store-product-detail.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/two-factor-authentication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/two-factor-authentication.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/two-factor-code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/two-factor-code.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/two-factor-disable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/two-factor-disable.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/two-factor-section.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/two-factor-section.png -------------------------------------------------------------------------------- /packages/admin/docs/screenshots/update-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/docs/screenshots/update-role.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/android-chrome-192x192.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/android-chrome-512x512.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/browserconfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | #ffffff 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/favicon-16x16.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/favicon-32x32.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/favicon.ico -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/favicons/mstile-150x150.png -------------------------------------------------------------------------------- /packages/admin/public/images/favicons/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "short_name": "", 4 | "icons": [ 5 | { 6 | "src": "/android-chrome-192x192.png", 7 | "sizes": "192x192", 8 | "type": "image/png" 9 | }, 10 | { 11 | "src": "/android-chrome-512x512.png", 12 | "sizes": "512x512", 13 | "type": "image/png" 14 | } 15 | ], 16 | "theme_color": "#ffffff", 17 | "background_color": "#ffffff", 18 | "display": "standalone" 19 | } 20 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ae.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/am.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/at.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ax.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/az.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/be.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bs.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/cg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/cl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/co.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/cr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/de.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/dj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/fo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/fr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gb.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/gy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/id.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ie.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/is.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/it.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/jm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/jp.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/kw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/la.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/lt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ly.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ma.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mk.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mq.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/no.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/pe.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/pm.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ps.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/pw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/qa.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/re.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/se.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sh.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sj.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/so.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/sy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/td.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/th.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/tn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/to.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/tr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/tz.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/vc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/vn.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/wf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/public/images/flags/yt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/public/images/placeholder.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shopperlabs/shopper/fb4438a238c9bcc5005b438b941b3e81ad14239c/packages/admin/public/images/placeholder.jpg -------------------------------------------------------------------------------- /packages/admin/resources/css/components/shiki.css: -------------------------------------------------------------------------------- 1 | .shiki { 2 | @apply !bg-gray-50 p-4; 3 | } 4 | 5 | html.dark .shiki, 6 | html.dark .shiki span { 7 | color: var(--shiki-dark) !important; 8 | background-color: var(--shiki-dark-bg) !important; 9 | } 10 | -------------------------------------------------------------------------------- /packages/admin/resources/css/shopper.css: -------------------------------------------------------------------------------- 1 | @import 'tailwindcss/base'; 2 | @import 'tailwindcss/components'; 3 | @import 'tailwindcss/utilities'; 4 | 5 | @import './base.css'; 6 | @import './components/sidebar.css'; 7 | @import './components/filament.css'; 8 | @import './components/treeselect.css'; 9 | @import './components/shiki.css'; 10 | 11 | @layer base { 12 | html { 13 | -webkit-tap-highlight-color: transparent; 14 | } 15 | 16 | :root.dark { 17 | color-scheme: dark; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/admin/resources/css/theme.css: -------------------------------------------------------------------------------- 1 | @import './base.css'; 2 | @import './components/sidebar.css'; 3 | @import './components/filament.css'; 4 | @import './components/treeselect.css'; 5 | @import './components/shiki.css'; 6 | 7 | @layer base { 8 | html { 9 | -webkit-tap-highlight-color: transparent; 10 | } 11 | 12 | :root.dark { 13 | color-scheme: dark; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/admin/resources/js/components/code-preview.js: -------------------------------------------------------------------------------- 1 | import { codeToHtml } from 'shiki' 2 | 3 | const CodePreview = ({ code, lang, themes }) => { 4 | return { 5 | code, 6 | lang, 7 | themes, 8 | previewCode: null, 9 | 10 | async init() { 11 | this.previewCode = await codeToHtml(this.code, { 12 | lang, 13 | themes: this.themes, 14 | }) 15 | 16 | this.$el.innerHTML = this.previewCode 17 | }, 18 | 19 | destroy() { 20 | this.previewCode = null 21 | }, 22 | } 23 | } 24 | 25 | export default CodePreview 26 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/en/pages/brands.php: -------------------------------------------------------------------------------- 1 | 'Brands', 8 | 'single' => 'brand', 9 | 'title' => 'Organize your products into brands', 10 | 'content' => 'Create brands and organize your products to make it easier for users to find products.', 11 | 'empty_brand' => 'No brand', 12 | 13 | ]; 14 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/en/pages/categories.php: -------------------------------------------------------------------------------- 1 | 'Categories', 8 | 'single' => 'category', 9 | 'title' => 'Organize your products into categories', 10 | 'content' => 'Create and manage all your store categories to help your customers easily find products.', 11 | 'empty_parent' => 'No parent category', 12 | 'parent' => 'in :parent', 13 | 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/en/pages/reviews.php: -------------------------------------------------------------------------------- 1 | 'Reviews', 8 | 'single' => 'review', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/en/pages/settings/carriers.php: -------------------------------------------------------------------------------- 1 | 'Delivery methods', 8 | 'single' => 'Delivery method', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/en/pages/settings/channels.php: -------------------------------------------------------------------------------- 1 | 'Sales channels', 8 | 'single' => 'Sales channel', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/en/pages/settings/payments.php: -------------------------------------------------------------------------------- 1 | 'Payment Methods', 8 | 'no_method' => 'No payment methods found', 9 | 'add_payment' => 'Add payment method', 10 | 'update_title' => 'Update payment method', 11 | 'help_text' => 'Displays to customers when they’re choosing a payment method', 12 | 'instruction' => 'Displays to customers after they place an order with this payment method', 13 | 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/fr/pages/brands.php: -------------------------------------------------------------------------------- 1 | 'Marques', 8 | 'single' => 'marque', 9 | 'title' => 'Organisez vos produits via des marques', 10 | 'content' => 'Créez des marques et organisez vos produits pour faciliter la recherche de produits par les utilisateurs.', 11 | 'empty_brand' => 'Aucune marque', 12 | 13 | ]; 14 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/fr/pages/categories.php: -------------------------------------------------------------------------------- 1 | 'Catégories', 8 | 'single' => 'catégorie', 9 | 'title' => 'Organisez vos produits en catégories', 10 | 'content' => 'Créez et gérez toutes vos catégories de magasins pour aider vos clients à trouver facilement des produits.', 11 | 'empty_parent' => 'Pas de catégorie parente', 12 | 'parent' => 'dans :parent', 13 | 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/fr/pages/reviews.php: -------------------------------------------------------------------------------- 1 | 'Avis', 8 | 'single' => 'avis', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/fr/pages/settings/carriers.php: -------------------------------------------------------------------------------- 1 | 'Moyens de livraison', 8 | 9 | ]; 10 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/fr/pages/settings/channels.php: -------------------------------------------------------------------------------- 1 | 'Canaux de ventes', 8 | 'single' => 'Canal de vente', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/admin/resources/lang/fr/pages/settings/payments.php: -------------------------------------------------------------------------------- 1 | 'Moyens de paiement', 8 | 'no_method' => 'Aucune méthode de paiement trouvée', 9 | 'add_payment' => 'Ajouter un moyen de paiement', 10 | 'update_title' => 'Modifier le moyen de paiement', 11 | 'help_text' => "S'affiche pour les clients lorsqu'ils choisissent un mode de paiement", 12 | 'instruction' => "S'affiche pour les clients après qu'ils ont passé une commande avec ce mode de paiement.", 13 | 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/badge.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'style' => null, 3 | 'value', 4 | ]) 5 | 6 | @php 7 | $style = match ($style ?? 'gray') { 8 | 'primary' => 'bg-primary-100 text-primary-800', 9 | 'warning' => 'bg-warning-100 text-warning-800', 10 | 'danger' => 'bg-danger-100 text-danger-800', 11 | 'success' => 'bg-success-100 text-success-800', 12 | default => 'bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-white', 13 | }; 14 | @endphp 15 | 16 | 17 | {{ $value }} 18 | 19 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/brand.blade.php: -------------------------------------------------------------------------------- 1 | @if (filled($brand = config('shopper.admin.brand'))) 2 | {{ config('app.name') }} 3 | @else 4 | Laravel Shopper 9 | @endif 10 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/breadcrumb/link.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'link', 3 | 'title', 4 | ]) 5 | 6 | twMerge(['class' => 'inline-flex items-center py-1.5 px-2 text-gray-500 rounded-md hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-800']) }} 9 | > 10 | {{ $title }} 11 | 12 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/buttons/danger.blade.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/card-with-gray-heading.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'heading', 3 | ]) 4 | 5 | twMerge(['class' => 'bg-white p-2']) }}> 6 |
7 | {{ $heading }} 8 |
9 |
10 | {{ $slot }} 11 |
12 |
13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/card.blade.php: -------------------------------------------------------------------------------- 1 |
twMerge(['class' => 'bg-white dark:bg-gray-900 rounded-xl ring-1 ring-gray-200 dark:ring-white/10']) }} 3 | > 4 | {{ $slot }} 5 |
6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/code-preview.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'code', 3 | 'lang', 4 | 'themes', 5 | ]) 6 | 7 |
twMerge(['class' => 'mt-2 text-sm rounded-lg overflow-hidden']) }} 9 | x-data="codePreview({ 10 | code: @js(json_encode($code)), 11 | lang: @js($lang), 12 | themes: @js($themes), 13 | })" 14 | >
15 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/container.blade.php: -------------------------------------------------------------------------------- 1 |
twMerge(['class' => 'px-4 lg:px-6']) }}> 2 | {{ $slot }} 3 |
4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/description-list/index.blade.php: -------------------------------------------------------------------------------- 1 |
twMerge(['class' => 'divide-y divide-gray-200 dark:divide-white/10']) }} 3 | role="list" 4 | > 5 | {{ $slot }} 6 |
7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/dropdown-button.blade.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/dropdown-link.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'group flex items-center px-4 py-2 text-sm leading-5 text-gray-700 hover:text-gray-900 hover:bg-gray-50 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white transition duration-150 ease-in-out']) }} 3 | > 4 | {{ $slot }} 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/escape.blade.php: -------------------------------------------------------------------------------- 1 | 2 | esc 3 | 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/filament/attribute-color-badge.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'key', 3 | 'value' => null, 4 | ]) 5 | 6 | 9 | 14 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/filament/warning.blade.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/forms/checkbox.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'focus:ring-primary-500 size-4 text-primary-600 border-gray-300 rounded dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-offset-gray-800']) !!} 4 | /> 5 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/forms/input.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'block w-full rounded-lg border-0 py-1.5 px-3 text-gray-900 ring-1 ring-gray-300 placeholder:text-gray-400 dark:bg-gray-700 dark:text-white dark:ring-white/10 dark:placeholder-gray-400 focus:ring-2 focus:ring-primary-600 dark:bg-gray-800 dark:focus:ring-primary-500 sm:text-sm sm:leading-6']) }} 3 | /> 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/forms/radio.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'focus:ring-primary-500 size-4 text-primary-600 border-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:focus:ring-offset-gray-800']) !!} 4 | /> 5 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/forms/textarea.blade.php: -------------------------------------------------------------------------------- 1 | @props(['value' => null]) 2 | 3 | 9 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/heading.blade.php: -------------------------------------------------------------------------------- 1 |
twMerge(['class' => 'space-y-3 sm:flex sm:items-center sm:justify-between sm:space-x-4 sm:space-y-0']) }} 3 | > 4 | @if($title instanceof \Illuminate\View\ComponentSlot) 5 | {{ $title }} 6 | @else 7 |

10 | {{ $title }} 11 |

12 | @endif 13 | 14 | @isset($action) 15 | {{ $action }} 16 | @endisset 17 |
18 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/icons/contrast.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/icons/facebook.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/icons/pixel.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/icons/twitter.blade.php: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/label.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'value', 3 | 'isRequired' => false, 4 | ]) 5 | 6 | 12 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/layouts/app/sidebar/index.blade.php: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/layouts/app/sidebar/secondary.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {!! $sidebar !!} 3 |
4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/layouts/footer.blade.php: -------------------------------------------------------------------------------- 1 |

2 | Copyright © {{ date('Y') }} — Shopper Labs. 3 |

4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/link.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/loader.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'size-5 animate-spin']) }} 3 | fill="none" 4 | viewBox="0 0 24 24" 5 | aria-hidden="true" 6 | > 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/section-heading.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'title', 3 | 'description' => null, 4 | ]) 5 | 6 |
7 | 8 | {{ $title }} 9 | 10 | @if ($description) 11 | 12 | {{ $description }} 13 | 14 | @endif 15 |
16 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/separator.blade.php: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/skeleton/index.blade.php: -------------------------------------------------------------------------------- 1 |
twMerge(['class' => 'animate-pulse ring-1 ring-gray-200/50 rounded-lg bg-gray-100 dark:bg-gray-800 dark:ring-white/20']) }} 3 | aria-hidden="true" 4 | >
5 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/skeleton/products/section.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | 5 |
6 | 7 |
8 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/stock-badge.blade.php: -------------------------------------------------------------------------------- 1 | @props([ 2 | 'stock', 3 | ]) 4 | 5 | $stock < 10, 9 | 'bg-success-100 text-success-800' => $stock >= 10, 10 | ]) 11 | > 12 | {{ $stock }} 13 | 14 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/tables/table-cell.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'px-6 py-3 text-sm leading-5 text-gray-500 dark:text-gray-400']) }}> 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/tables/table-head.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'px-6 py-3 text-left text-xs leading-4 whitespace-nowrap font-medium text-gray-500 uppercase tracking-wider dark:text-gray-400']) }} 4 | > 5 | {{ $slot }} 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/tables/table-row.blade.php: -------------------------------------------------------------------------------- 1 | twMerge(['class' => 'border-b border-gray-200 bg-gray-50 dark:border-white/10 dark:bg-white/5']) }} 3 | > 4 | {{ $slot }} 5 | 6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/components/theme-switcher/index.blade.php: -------------------------------------------------------------------------------- 1 |
12 | 13 | 14 | 15 | 16 | 17 |
18 | -------------------------------------------------------------------------------- /packages/admin/resources/views/filament/form/icon-picker.blade.php: -------------------------------------------------------------------------------- 1 |
twMerge(['class' => 'filament-icon-picker'])->twMerge($getColumnsConfig()) }}> 2 | @include('filament-forms::components.select') 3 |
4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/filament/tables/icon-column.blade.php: -------------------------------------------------------------------------------- 1 |
2 | @if ($icon = $getState()) 3 |
6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/includes/_additional-scripts.blade.php: -------------------------------------------------------------------------------- 1 | @if (! empty(config('shopper.admin.resources.scripts'))) 2 | 3 | @foreach (config('shopper.admin.resources.scripts') as $js) 4 | @if (\Illuminate\Support\Str::of($js)->startsWith(['http://', 'https://'])) 5 | 6 | @else 7 | 8 | @endif 9 | @endforeach 10 | @endif 11 | 12 | @stack('scripts') 13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/includes/_additional-styles.blade.php: -------------------------------------------------------------------------------- 1 | @if (! empty(config('shopper.admin.resources.stylesheets'))) 2 | 3 | @foreach (config('shopper.admin.resources.stylesheets') as $css) 4 | @if (\Illuminate\Support\Str::of($css)->startsWith(['http://', 'https://'])) 5 | 6 | @else 7 | 8 | @endif 9 | @endforeach 10 | @endif 11 | 12 | @stack('styles') 13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/account/password.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->form }} 3 | 4 |
5 |
6 | 7 | 8 | {{ __('shopper::forms.actions.update') }} 9 | 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/account/profile.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->form }} 3 | 4 |
5 |
6 | 7 | 8 | {{ __('shopper::forms.actions.save') }} 9 | 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/products/forms/attributes.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | {{ __('shopper::pages/attributes.menu') }} 5 | 6 | 7 | {{ __('shopper::pages/attributes.description') }} 8 | 9 |
10 | 11 |
12 | {{ $this->table }} 13 |
14 |
15 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/products/forms/variants.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 | {{ __('shopper::pages/products.variants.title') }} 5 | 6 | 7 | {{ __('shopper::pages/products.variants.description') }} 8 | 9 |
10 | 11 |
12 | {{ $this->table }} 13 |
14 |
15 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/products/pricing.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->table }} 3 |
4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/settings/legal/_form.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->form }} 3 | 4 |
5 | 6 | 7 | {{ __('shopper::forms.actions.save') }} 8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/settings/legal/index.blade.php: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/settings/locations/_form.blade.php: -------------------------------------------------------------------------------- 1 |
2 | {{ $this->form }} 3 | 4 |
5 |
6 | 7 | 8 | {{ __('shopper::forms.actions.save') }} 9 | 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/components/settings/team/users-role.blade.php: -------------------------------------------------------------------------------- 1 | 2 |
3 |

4 | {{ __('shopper::words.users') }} 5 |

6 |

7 | {{ __('shopper::pages/settings/staff.with_role_name', ['name' => $role->display_name]) }} 8 |

9 |
10 |
11 | {{ $this->table }} 12 |
13 |
14 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/add-collection-form.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $this->form }} 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/add-pricing.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $this->form }} 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/attribute-form.blade.php: -------------------------------------------------------------------------------- 1 | 8 | {{ $this->form }} 9 | 10 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/brand-form.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $this->form }} 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/category-form.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $this->form }} 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/collection-rules.blade.php: -------------------------------------------------------------------------------- 1 | 6 | {{ $this->form }} 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/create-team-member.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $this->form }} 3 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/discount-form.blade.php: -------------------------------------------------------------------------------- 1 | 6 | {{ $this->form }} 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/form.blade.php: -------------------------------------------------------------------------------- 1 | 6 | {{ $this->form }} 7 | 8 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/slide-overs/update-variant.blade.php: -------------------------------------------------------------------------------- 1 | 5 | {{ $this->form }} 6 | 7 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/brands/site.blade.php: -------------------------------------------------------------------------------- 1 | @if ($state) 2 | 7 | {{ $state }} 8 | 10 | @else 11 | 12 | @endif 13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/categories/name.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $category->name }} 3 | @if ($category->parent) 4 | 5 | {{ __('shopper::pages/categories.parent', ['parent' => $category->parent->name]) }} 6 | 7 | @endif 8 | 9 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/customers/email.blade.php: -------------------------------------------------------------------------------- 1 |
2 | @if ($getRecord()->email_verified_at) 3 |
11 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/discounts/amount.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $discount = $getRecord(); 3 | @endphp 4 | 5 |
6 | @if ($discount->type === \Shopper\Core\Enum\DiscountType::Percentage) 7 | {{ $discount->value . '%' }} 8 | @else 9 | {{ shopper_money_format(amount: $discount->value, currency: $discount->zone?->currency_code) }} 10 | @endif 11 |
12 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/orders/customer.blade.php: -------------------------------------------------------------------------------- 1 |
2 | Avatar {{ $order->customer->full_name }} 7 |

{{ $order->customer->full_name }}

8 |
9 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/orders/number.blade.php: -------------------------------------------------------------------------------- 1 | @can('read_orders') 2 | 6 | {{ $row->number }} 7 | 8 | @else 9 | {{ $row->number }} 10 | @endcan 11 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/orders/status.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $order->status->translateValue() }} 3 | 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/products/stock.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $product = $getRecord(); 3 | @endphp 4 | 5 |
6 | @if ($product->variants_count > 0) 7 | 8 | {{ __('in stock for :count variant(s)', ['count' => $product->variants_count]) }} 9 | @else 10 | 11 | {{ __('in stock') }} 12 | @endif 13 |
14 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/reviews/product.blade.php: -------------------------------------------------------------------------------- 1 | @php 2 | $product = $getRecord()->reviewrateable; 3 | @endphp 4 | 5 |
6 |

{{ __('shopper::pages/products.single') }} :

7 | 8 | 9 | {{ $product->name }} 10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /packages/admin/resources/views/livewire/tables/cells/reviews/rating.blade.php: -------------------------------------------------------------------------------- 1 |
2 | @foreach ([1, 2, 3, 4, 5] as $star) 3 | {{-- format-ignore-start --}} 4 | $getState() >= $star, 8 | 'text-gray-300' => $getState() < $star, 9 | ]) 10 | aria-hidden="true" 11 | /> 12 | {{-- format-ignore-end --}} 13 | @endforeach 14 |
15 | -------------------------------------------------------------------------------- /packages/admin/resources/views/mails/html/button.blade.php: -------------------------------------------------------------------------------- 1 | {{ $slot }} 2 | -------------------------------------------------------------------------------- /packages/admin/resources/views/mails/html/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | {{ $slot }} 3 | 4 | -------------------------------------------------------------------------------- /packages/admin/resources/views/mails/html/header.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ $slot }} 5 | 6 | 7 | 8 | 9 | 10 | Shopper Logo 11 |

12 | {{ $description }} 13 |

14 | 15 | 16 | -------------------------------------------------------------------------------- /packages/admin/resources/views/mails/html/subcopy.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/admin/routes/admin/collection.php: -------------------------------------------------------------------------------- 1 | name('index'); 8 | Route::get('/{collection}/edit', config('shopper.components.collection.pages.collection-edit'))->name('edit'); 9 | -------------------------------------------------------------------------------- /packages/admin/routes/admin/customer.php: -------------------------------------------------------------------------------- 1 | name('index'); 8 | Route::get('/create', config('shopper.components.customer.pages.customer-create'))->name('create'); 9 | Route::get('/{user}/show', config('shopper.components.customer.pages.customer-show'))->name('show'); 10 | -------------------------------------------------------------------------------- /packages/admin/routes/admin/order.php: -------------------------------------------------------------------------------- 1 | name('index'); 8 | Route::get('/{order}/detail', config('shopper.components.order.pages.order-detail'))->name('detail'); 9 | -------------------------------------------------------------------------------- /packages/admin/src/Actions/Auth/ConfirmPassword.php: -------------------------------------------------------------------------------- 1 | validate([ 14 | 'email' => $user->email, 15 | 'password' => $password, 16 | ]); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/admin/src/Actions/Auth/DisableTwoFactorAuthentication.php: -------------------------------------------------------------------------------- 1 | forceFill([ 12 | 'two_factor_secret' => null, 13 | 'two_factor_recovery_codes' => null, 14 | ])->save(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/admin/src/Actions/Auth/GenerateNewRecoveryCodes.php: -------------------------------------------------------------------------------- 1 | forceFill([ 14 | 'two_factor_recovery_codes' => encrypt(json_encode( 15 | Collection::times(8, fn () => RecoveryCode::generate())->all() 16 | )), 17 | ])->save(); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/admin/src/Actions/Auth/RecoveryCode.php: -------------------------------------------------------------------------------- 1 | Components\ColorPicker::make($key) 17 | ->default('#1E3A8A'), 18 | default => Components\TextInput::make($key) 19 | }; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/admin/src/Components/Form/GenderField.php: -------------------------------------------------------------------------------- 1 | label(__('shopper::forms.label.gender')) 17 | ->options(GenderType::class) 18 | ->default(GenderType::Male()) 19 | ->native(false); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/admin/src/Components/Section.php: -------------------------------------------------------------------------------- 1 | auth()->check()) { 15 | return redirect()->route('shopper.dashboard'); 16 | } 17 | 18 | return $next($request); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/admin/src/Http/Responses/LoginResponse.php: -------------------------------------------------------------------------------- 1 | intended(route('shopper.dashboard')); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /packages/admin/src/Http/Responses/TwoFactorDisabledResponse.php: -------------------------------------------------------------------------------- 1 | wantsJson() 15 | ? new JsonResponse('', 200) 16 | : back()->with('status', 'two-factor-authentication-disabled'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/admin/src/Http/Responses/TwoFactorEnabledResponse.php: -------------------------------------------------------------------------------- 1 | wantsJson() 15 | ? new JsonResponse('', 200) 16 | : back()->with('status', 'two-factor-authentication-enabled'); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/admin/src/Http/Responses/TwoFactorLoginResponse.php: -------------------------------------------------------------------------------- 1 | wantsJson() 15 | ? new JsonResponse('', 204) 16 | : redirect()->intended(route('shopper.dashboard')); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /packages/admin/src/Livewire/Components/Customers/Profile.php: -------------------------------------------------------------------------------- 1 | title(__('shopper::pages/auth.account.meta_title')); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/admin/src/Livewire/Pages/Dashboard.php: -------------------------------------------------------------------------------- 1 | title(__('shopper::pages/dashboard.menu')); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/admin/src/Livewire/Pages/Initialization.php: -------------------------------------------------------------------------------- 1 | title(__('shopper::pages/onboarding.title')); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/admin/src/Livewire/Pages/Settings/Index.php: -------------------------------------------------------------------------------- 1 | title(__('shopper::pages/settings/global.menu')); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/admin/src/Sidebar/AdminSidebar.php: -------------------------------------------------------------------------------- 1 | menu)); 17 | } 18 | 19 | public function getMenu(): Menu 20 | { 21 | return $this->menu; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/admin/src/Sidebar/SidebarBuilder.php: -------------------------------------------------------------------------------- 1 | menu->add($menu); 16 | } 17 | 18 | public function getMenu(): Menu 19 | { 20 | return $this->menu; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/admin/src/Sidebar/SidebarCreator.php: -------------------------------------------------------------------------------- 1 | sidebar = $this->renderer->render($this->sidebar); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/admin/src/Traits/HasAuthenticated.php: -------------------------------------------------------------------------------- 1 | auth()->user(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /packages/admin/stubs/page-component.stub: -------------------------------------------------------------------------------- 1 | 2 | {{-- [quote] --}} 3 | 4 | -------------------------------------------------------------------------------- /packages/core/config/orders.php: -------------------------------------------------------------------------------- 1 | [ 15 | 'start_sequence_from' => 1, 16 | 'prefix' => 'SH_', 17 | 'pad_length' => 1, 18 | 'pad_string' => '0', 19 | ], 20 | 21 | ]; 22 | -------------------------------------------------------------------------------- /packages/core/database/factories/AttributeProductFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class AttributeProductFactory extends Factory 14 | { 15 | protected $model = AttributeProduct::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/CarrierFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class CarrierFactory extends Factory 14 | { 15 | protected $model = Carrier::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/CarrierOptionFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class CarrierOptionFactory extends Factory 14 | { 15 | protected $model = CarrierOption::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/CurrencyFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class CurrencyFactory extends Factory 14 | { 15 | protected $model = Currency::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/DiscountDetailFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class DiscountDetailFactory extends Factory 14 | { 15 | protected $model = DiscountDetail::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/GeolocationFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class GeolocationFactory extends Factory 14 | { 15 | protected $model = Geolocation::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/InventoryHistoryFactory.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | public function definition(): array 20 | { 21 | return []; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/core/database/factories/OrderAddressFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class OrderAddressFactory extends Factory 14 | { 15 | protected $model = OrderAddress::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/OrderItemFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class OrderItemFactory extends Factory 14 | { 15 | protected $model = OrderItem::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return [ 25 | 26 | ]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /packages/core/database/factories/OrderRefundFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class OrderRefundFactory extends Factory 14 | { 15 | protected $model = OrderRefund::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/OrderShippingFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class OrderShippingFactory extends Factory 14 | { 15 | protected $model = OrderShipping::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/PaymentMethodFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class PaymentMethodFactory extends Factory 14 | { 15 | protected $model = PaymentMethod::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/ReviewFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class ReviewFactory extends Factory 14 | { 15 | protected $model = Review::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/factories/SettingFactory.php: -------------------------------------------------------------------------------- 1 | 18 | */ 19 | public function definition(): array 20 | { 21 | return []; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/core/database/factories/ZoneFactory.php: -------------------------------------------------------------------------------- 1 | 12 | */ 13 | class ZoneFactory extends Factory 14 | { 15 | protected $model = Zone::class; 16 | 17 | /** 18 | * Define the model's default state. 19 | * 20 | * @return array 21 | */ 22 | public function definition(): array 23 | { 24 | return []; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/database/migrations/2023_09_21_063717_rename_requires_shipping_columns_on_products_table.php: -------------------------------------------------------------------------------- 1 | getTableName('products'), function (Blueprint $table): void { 14 | $table->renameColumn(from: 'requires_shipping', to: 'require_shipping'); 15 | }); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /packages/core/database/migrations/2024_12_06_191438_add_zone_id_column_to_discounts_table.php: -------------------------------------------------------------------------------- 1 | getTableName('discounts'), function (Blueprint $table): void { 14 | $this->addForeignKey($table, 'zone_id', $this->getTableName('zones')); 15 | }); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /packages/core/database/migrations/2024_12_09_012533_add_is_enable_column_channels_table.php: -------------------------------------------------------------------------------- 1 | getTableName('channels'), function (Blueprint $table): void { 14 | $table->boolean('is_enabled')->default(false)->after('is_default'); 15 | }); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /packages/core/database/seeders/CarrierSeeder.php: -------------------------------------------------------------------------------- 1 | create([ 15 | 'name' => 'Manual', 16 | 'slug' => 'manual', 17 | 'is_enabled' => true, 18 | ]); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/core/database/seeders/ChannelSeeder.php: -------------------------------------------------------------------------------- 1 | create([ 15 | 'name' => $name = 'Web Store', 16 | 'slug' => $name, 17 | 'url' => config('app.url'), 18 | 'is_default' => true, 19 | 'is_enabled' => true, 20 | ]); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/core/database/seeders/PaymentMethodSeeder.php: -------------------------------------------------------------------------------- 1 | create([ 15 | 'title' => 'Cash', 16 | 'slug' => 'cash', 17 | 'is_enabled' => true, 18 | ]); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/core/resources/lang/en/enum/address.php: -------------------------------------------------------------------------------- 1 | 'Shipping Address', 8 | 'billing' => 'Billing Address', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/core/resources/lang/en/enum/product.php: -------------------------------------------------------------------------------- 1 | 'Virtual', 8 | 'virtual_description' => 'A digital product that can be downloaded by customers.', 9 | 'external' => 'External', 10 | 'external_description' => 'A product sourced from another supplier.', 11 | 'standard_product' => 'Standard', 12 | 'standard_product_description' => 'This product has no variations in size, color, or similar.', 13 | 'variant_product' => 'Variant', 14 | 'variant_product_description' => 'This product allow variations based on product attributes.', 15 | 16 | ]; 17 | -------------------------------------------------------------------------------- /packages/core/resources/lang/en/forms.php: -------------------------------------------------------------------------------- 1 | 'Text field :type', 8 | 'rich_text' => 'Rich text', 9 | 'select' => 'Select', 10 | 'checkbox' => 'Checkbox', 11 | 'color_picker' => 'Color picker', 12 | 'datepicker' => 'Date picker', 13 | 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/core/resources/lang/fr/enum/address.php: -------------------------------------------------------------------------------- 1 | 'Adresse de livraison', 8 | 'billing' => 'Adresse de facturation', 9 | 10 | ]; 11 | -------------------------------------------------------------------------------- /packages/core/resources/lang/fr/forms.php: -------------------------------------------------------------------------------- 1 | 'Champ de texte :type', 8 | 'rich_text' => 'Éditeur de texte', 9 | 'select' => 'Select', 10 | 'checkbox' => 'Checkbox', 11 | 'color_picker' => 'Choix de couleurs', 12 | 'datepicker' => 'Sélectionneur de Date', 13 | 14 | ]; 15 | -------------------------------------------------------------------------------- /packages/core/src/Enum/Dimension/Volume.php: -------------------------------------------------------------------------------- 1 | back() 23 | ->withInput() 24 | ->with('danger', $this->message); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/core/src/Exceptions/UndefinedEnumCaseError.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | public function discounts(): MorphToMany 16 | { 17 | return $this->morphedByMany(DiscountDetail::class, 'discountable') 18 | ->orderBy('created_at', 'desc'); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/core/src/Models/Traits/HasPrices.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | public function prices(): MorphMany 16 | { 17 | return $this->morphMany(Price::class, 'priceable'); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/core/src/Observers/OrderObserver.php: -------------------------------------------------------------------------------- 1 | media()->delete(); 14 | $product->prices()->delete(); 15 | $product->clearStock(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/core/src/Observers/ProductVariantObserver.php: -------------------------------------------------------------------------------- 1 | media()->delete(); 14 | $variant->prices()->delete(); 15 | $variant->clearStock(); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/core/src/Repositories/BrandRepository.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | public function zones(): MorphToMany 16 | { 17 | return $this->morphToMany(Zone::class, 'zonable', shopper_table('zone_has_relations')); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/sidebar/config/sidebar.php: -------------------------------------------------------------------------------- 1 | [ 20 | 'method' => null, 21 | 'duration' => 1440, 22 | ], 23 | 24 | ]; 25 | -------------------------------------------------------------------------------- /packages/sidebar/resources/views/append.blade.php: -------------------------------------------------------------------------------- 1 | getClass()])> 2 | @if($append->iconSvg()) 3 | {!! $append->getIcon() !!} 4 | @else 5 | @svg($append->getIcon(), $append->getIconClass()) 6 | @endif 7 | 8 | -------------------------------------------------------------------------------- /packages/sidebar/resources/views/badge.blade.php: -------------------------------------------------------------------------------- 1 | getClass()])> 2 | {{ $badge->getValue() }} 3 | 4 | -------------------------------------------------------------------------------- /packages/sidebar/resources/views/group.blade.php: -------------------------------------------------------------------------------- 1 |
  • getClass()])> 2 | @if($group->shouldShowHeading()) 3 |
    getHeadingClass()])>{{ $group->getName() }}
    4 | @endif 5 | 6 |
      getGroupItemsClass()])> 7 | @foreach($items as $item) 8 | {!! $item !!} 9 | @endforeach 10 |
    11 |
  • 12 | -------------------------------------------------------------------------------- /packages/sidebar/resources/views/menu.blade.php: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/sidebar/src/Contracts/Builder/Authorizable.php: -------------------------------------------------------------------------------- 1 | container->call([$this->manager, 'flush']); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/sidebar/src/Domain/Events/ShouldFlushCache.php: -------------------------------------------------------------------------------- 1 | cache->forget(CacheKey::get($name)); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/sidebar/src/Infrastructure/SupportsCacheTags.php: -------------------------------------------------------------------------------- 1 | getStore(), 'tags')) { 15 | throw new CacheTagsNotSupported('Cache tags are necessary to use this kind of caching. Consider using a different caching method'); 16 | } 17 | 18 | return true; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/sidebar/src/Infrastructure/UserBasedSidebarFlusher.php: -------------------------------------------------------------------------------- 1 | isSatisfiedBy($this->cache)) { 16 | $this->cache->tags(CacheKey::get($name))->flush(); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /packages/sidebar/src/Middleware/ResolveSidebars.php: -------------------------------------------------------------------------------- 1 | sidebarManager->resolve(); 18 | 19 | return $next($request); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /packages/sidebar/src/Presentation/AbstractRenderer.php: -------------------------------------------------------------------------------- 1 | authorized; 14 | } 15 | 16 | public function setAuthorized(bool $authorized = true): self 17 | { 18 | $this->authorized = $authorized; 19 | 20 | return $this; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- 1 | includes: 2 | - phpstan-baseline.neon 3 | 4 | parameters: 5 | level: 7 6 | paths: 7 | - packages 8 | excludePaths: 9 | - packages/admin/src/Livewire/Pages/Auth 10 | - packages/admin/src/Events/ 11 | - packages/core/src/Traits/ 12 | - packages/core/src/Models/Traits/ 13 | # ignoreErrors: 14 | 15 | reportUnmatchedIgnoredErrors: false 16 | -------------------------------------------------------------------------------- /rector.php: -------------------------------------------------------------------------------- 1 | withPaths([ 9 | __DIR__ . '/packages', 10 | __DIR__ . '/tests', 11 | ]) 12 | ->withTypeCoverageLevel(0) 13 | ->withDeadCodeLevel(0) 14 | ->withCodeQualityLevel(0); 15 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | import shopperPreset from './packages/admin/tailwind.config.preset' 2 | import filamentPreset from './vendor/filament/support/tailwind.config.preset' 3 | 4 | /** @type {import('tailwindcss').Config} */ 5 | export default { 6 | presets: [filamentPreset, shopperPreset], 7 | content: [ 8 | './packages/**/*.blade.php', 9 | './vendor/filament/**/*.blade.php', 10 | './vendor/jaocero/radio-deck/resources/views/**/*.blade.php', 11 | ], 12 | } 13 | -------------------------------------------------------------------------------- /testbench.yaml: -------------------------------------------------------------------------------- 1 | migrations: 2 | - tests/database/migrations 3 | 4 | workbench: 5 | install: true 6 | -------------------------------------------------------------------------------- /tests/Pest.php: -------------------------------------------------------------------------------- 1 | project()->github('shopperlabs/shopper'); 6 | -------------------------------------------------------------------------------- /tests/src/Admin/Auth/LogoutTest.php: -------------------------------------------------------------------------------- 1 | actingAs(User::factory()->create()) 16 | ->post($prefix . '/logout') 17 | ->assertRedirect($prefix . '/login'); 18 | 19 | $this->assertGuest(); 20 | }); 21 | -------------------------------------------------------------------------------- /tests/src/Admin/Features/TestCase.php: -------------------------------------------------------------------------------- 1 | prefix = Shopper::prefix(); 17 | 18 | $this->asAdmin(); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tests/src/Sidebar/Stubs/AppendStub.php: -------------------------------------------------------------------------------- 1 | items = new Collection; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /tests/src/Sidebar/Stubs/MenuStub.php: -------------------------------------------------------------------------------- 1 | setAuthorized(); 10 | expect($routeable->isAuthorized())->toBeTrue(); 11 | 12 | $routeable->setAuthorized(false); 13 | expect($routeable->isAuthorized())->toBeFalse(); 14 | 15 | })->group('Traits'); 16 | --------------------------------------------------------------------------------