User-Panel gebaut

This commit is contained in:
Jason Hirsch
2025-02-16 21:47:35 +01:00
parent 835de6fbf9
commit c17d39df24
280 changed files with 19492 additions and 0 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
if (document.querySelectorAll('[data-bss-baguettebox]').length > 0) {
baguetteBox.run('[data-bss-baguettebox]', { animation: 'slideIn' });
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,19 @@
document.addEventListener("DOMContentLoaded", function() {
// Initializing the swiper plugin for the slider.
// Read more here: http://idangero.us/swiper/api/
var mySwiper = new Swiper('.swiper-container', {
loop: true,
pagination: {
el: '.swiper-pagination' ,
clickable: true
},
paginationClickable: true,
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev'
}
});
});

1
Dashboard/static/js/aos.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,61 @@
(function() {
"use strict"; // Start of use strict
function initParallax() {
if (!('requestAnimationFrame' in window)) return;
if (/Mobile|Android/.test(navigator.userAgent)) return;
var parallaxItems = document.querySelectorAll('[data-bss-parallax]');
if (!parallaxItems.length) return;
var defaultSpeed = 0.5;
var visible = [];
var scheduled;
window.addEventListener('scroll', scroll);
window.addEventListener('resize', scroll);
scroll();
function scroll() {
visible.length = 0;
for (var i = 0; i < parallaxItems.length; i++) {
var rect = parallaxItems[i].getBoundingClientRect();
var speed = parseFloat(parallaxItems[i].getAttribute('data-bss-parallax-speed'), 10) || defaultSpeed;
if (rect.bottom > 0 && rect.top < window.innerHeight) {
visible.push({
speed: speed,
node: parallaxItems[i]
});
}
}
cancelAnimationFrame(scheduled);
if (visible.length) {
scheduled = requestAnimationFrame(update);
}
}
function update() {
for (var i = 0; i < visible.length; i++) {
var node = visible[i].node;
var speed = visible[i].speed;
node.style.transform = 'translate3d(0, ' + (-window.scrollY * speed) + 'px, 0)';
}
}
}
initParallax();
})(); // End of use strict

View File

@@ -0,0 +1,182 @@
if (window.innerWidth < 768) {
[].slice.call(document.querySelectorAll('[data-bss-disabled-mobile]')).forEach(function (elem) {
elem.classList.remove('animated');
elem.removeAttribute('data-bss-hover-animate');
elem.removeAttribute('data-aos');
elem.removeAttribute('data-bss-parallax-bg');
elem.removeAttribute('data-bss-scroll-zoom');
});
}
document.addEventListener('DOMContentLoaded', function() {
if ('AOS' in window) {
AOS.init();
}
(function(){
if (!('requestAnimationFrame' in window)) return;
var backgrounds = [];
var parallaxBackgrounds = document.querySelectorAll('[data-bss-parallax-bg]');
for (var el of parallaxBackgrounds) {
var bg = document.createElement('div');
bg.style.backgroundImage = el.style.backgroundImage;
bg.style.backgroundSize = 'cover';
bg.style.backgroundPosition = 'center';
bg.style.position = 'absolute';
bg.style.height = '200%';
bg.style.width = '100%';
bg.style.top = 0;
bg.style.left = 0;
bg.style.zIndex = -100;
el.appendChild(bg);
backgrounds.push(bg);
el.style.position = 'relative';
el.style.background = 'transparent';
el.style.overflow = 'hidden';
}
if (!backgrounds.length) return;
var visible = [];
var scheduled;
window.addEventListener('scroll', scroll);
window.addEventListener('resize', scroll);
scroll();
function scroll() {
visible.length = 0;
for(var i = 0; i < backgrounds.length; i++){
var rect = backgrounds[i].parentNode.getBoundingClientRect();
if (rect.bottom > 0 && rect.top < window.innerHeight) {
visible.push({
rect: rect,
node: backgrounds[i]
});
}
}
cancelAnimationFrame(scheduled);
if (visible.length) {
scheduled = requestAnimationFrame(update);
}
}
function update(){
for(var i = 0; i < visible.length; i++){
var rect = visible[i].rect;
var node = visible[i].node;
var quot = Math.max(rect.bottom, 0) / (window.innerHeight + rect.height);
node.style.transform = 'translate3d(0, '+(-50*quot)+'%, 0)';
}
}
})();
(function(){
if (!('requestAnimationFrame' in window)) return;
var backgrounds = [];
var backgroundToSpeed = new WeakMap;
var parallaxBackgrounds = document.querySelectorAll('[data-bss-scroll-zoom]');
for (var el of parallaxBackgrounds) {
var bg = document.createElement('div');
bg.style.backgroundImage = el.style.backgroundImage;
bg.style.backgroundSize = 'cover';
bg.style.backgroundPosition = 'center';
bg.style.position = 'absolute';
bg.style.height = '100%';
bg.style.width = '100%';
bg.style.top = 0;
bg.style.left = 0;
bg.style.zIndex = -100;
el.appendChild(bg);
backgrounds.push(bg);
backgroundToSpeed.set(bg, el.getAttribute('data-bss-scroll-zoom-speed') || 1);
el.style.position = 'relative';
el.style.background = 'transparent';
el.style.overflow = 'hidden';
}
if (!backgrounds.length) return;
var visible = [];
var scheduled;
window.addEventListener('scroll', scroll);
window.addEventListener('resize', scroll);
scroll();
function scroll() {
visible.length = 0;
for (var i = 0; i < backgrounds.length; i++) {
var rect = backgrounds[i].parentNode.getBoundingClientRect();
if (rect.bottom > 0 && rect.top < window.innerHeight) {
visible.push({
rect: rect,
node: backgrounds[i],
speed: backgroundToSpeed.get(backgrounds[i])
});
}
}
cancelAnimationFrame(scheduled);
if (visible.length) {
scheduled = requestAnimationFrame(update);
}
}
function update(){
for(var i = 0; i < visible.length; i++){
var rect = visible[i].rect;
var node = visible[i].node;
var speed = visible[i].speed;
var quot = rect.top < 0 ? Math.abs(rect.top) / rect.height : 0;
node.style.transform = 'scale3d('+ (1 + quot * speed) + ', ' + (1 + quot * speed) + ', 1)';
}
}
})();
var products = document.querySelectorAll('[data-bss-dynamic-product]');
for (var product of products) {
var param = product.dataset.bssDynamicProductParam;
product.dataset.reflowProduct = new URL(location.href).searchParams.get(param)
}
}, false);

View File

@@ -0,0 +1,161 @@
{
"locale": "de-DE",
"shopping_cart": "Warenkorb",
"cart": "Warenkorb",
"product": "Produkt",
"products": "Produkte",
"order": "Bestellung",
"price": "Preis",
"quantity": "Menge",
"payment": "Bezahlung",
"name": "Name",
"email": "E-Mail",
"phone": "Telefon",
"delivery": "Lieferung",
"shipping": "Versand",
"address": "Adresse",
"city": "Stadt",
"country": "Land",
"state": "Bundesland",
"postcode": "Postleitzahl",
"shipping_method": "Versandmethode",
"shipping_address": "Lieferadresse",
"pickup_at_store": "Abholung im Geschäft",
"store": "Geschäft",
"working_hours": "Öffnungszeiten",
"billing": "Abrechnung",
"billing_name": "Abrechnungsname",
"billing_address": "Abrechnungsadresse",
"note_to_seller": "Anmerkung",
"total": "Gesamt",
"subtotal": "Zwischensumme",
"price_free": "Kostenlos",
"credit_card": "Kreditkarte",
"pay_on_pickup": "Zahlung bei Abholung",
"out_of_stock": "Nicht vorrätig",
"and": "und",
"date": "Datum",
"status": "Status",
"apply": "Anwenden",
"remove": "Entfernen",
"clear": "Leeren",
"close": "Schließen",
"error": "Fehler",
"required": "Erforderlich",
"cart.checkout": "Zur Kasse",
"cart.back_to_cart": "Zurück zum Warenkorb",
"cart.update": "Warenkorb aktualisieren",
"cart.complete_order": "Bestellung abschließen",
"cart.terms_agree": "Ich stimme den {terms} zu",
"cart.terms_of_service": "Nutzungsbedingungen",
"cart.privacy_policy": "Datenschutzrichtlinie",
"cart.refund_policy": "Rückerstattungsrichtlinie",
"cart.customer_details": "Kundendetails",
"cart.subtotal_only": "Versandkosten und Steuern werden während des Checkouts berechnet.",
"cart.pickup_at_store": "Abholung im {store}",
"cart.order_ready_for_pickup_label": "Bestellung bereit zur Abholung",
"cart.estimated_delivery": "Voraussichtliche Lieferung",
"cart.select_store": "Geschäft auswählen",
"cart.add_billing": "Abrechnungsinformationen hinzufügen",
"cart.deliver_to_address": "An Adresse liefern",
"cart.shipping_not_selected": "Noch nicht ausgewählt",
"cart.select_country": "Land auswählen",
"cart.note_to_seller": "Anmerkung an den Verkäufer",
"cart.note_to_seller_placeholder": "Wenn Sie dem Verkäufer spezielle Anweisungen geben möchten, geben Sie sie hier ein.",
"cart.save_address": "Meine Adresse für zukünftige Einkäufe speichern",
"cart.tax_exemption_add": "Steuerbefreiung anwenden",
"cart.tax_exemption_file": "Steuerbefreiungsdatei",
"cart.tax_exemption_file_prompt": "Dokument oder Foto Ihrer Steuerbefreiung anhängen",
"cart.tax_exemption_number_prompt": "Geben Sie Ihre EU-USt-IdNr. ein",
"cart.tax_exemption_cleared": "Steuerbefreiung ungültig",
"cart.tax_exemption_cleared_details": "Die angegebene Steuerbefreiungsinfo konnte nicht auf die neu ausgewählte Adresse angewendet werden.",
"cart.discount_code_placeholder": "Gutschein- oder Geschenkkartencode eingeben",
"cart.coupon_added": "Gutschein hinzugefügt",
"cart.coupon_removed": "Gutschein entfernt",
"cart.gift_card_added": "Geschenkkarte hinzugefügt",
"cart.gift_card_removed": "Geschenkkarte entfernt",
"cart.gift_card_balance": "Verfügbarer Saldo - {amount}",
"cart.order_summary": "Bestellübersicht",
"cart.show_summary": "Übersicht anzeigen",
"cart.prices_currency_description": "Alle Preise sind in {currency}",
"cart.left_in_stock": "{in_stock, plural, =0 {Keine Artikel mehr auf Lager} other {Nur noch # auf Lager.}}",
"cart.max_product_qty": "Maximal {max_quantity} pro Kunde",
"cart.errors.unavailable": "Warenkorb konnte nicht geladen werden.",
"cart.errors.empty": "Ihr Warenkorb ist leer.",
"cart.errors.cannot_complete": "Checkout konnte nicht abgeschlossen werden.",
"cart.errors.vat_number_invalid": "USt-IdNr. ist ungültig oder kann nicht bei grenzüberschreitenden Transaktionen verwendet werden.",
"cart.errors.vat_number_validation_fail": "USt konnte nicht validiert werden.",
"cart.errors.delivery_unavailable": "Produktlieferung ist nicht verfügbar. Bitte kontaktieren Sie uns.",
"cart.errors.address_not_supported": "Das Geschäft kann Ihre Bestellung nicht an diese Adresse versenden.",
"cart.errors.invalid_discount_code": "Der eingegebene Code ist ungültig.",
"cart.errors.coupon_invalid_code": "Der eingegebene Code ist ungültig.",
"cart.errors.coupon_already_applied": "Es kann nur ein Gutschein angewendet werden.",
"cart.errors.gift_card_already_applied": "Es kann nur eine Geschenkkarte angewendet werden.",
"cart.errors.cannot_apply_gift_card_to_cart_with_giftcard": "Die Geschenkkarte kann nicht auf den Warenkorb angewendet werden. Es wird ein Geschenkkartenprodukt gekauft.",
"cart.errors.coupon_no_matching_products": "Gutschein kann nicht auf eines der Produkte im Warenkorb angewendet werden.",
"cart.errors.coupon_min_amount": "Gutschein erfordert einen Mindestbestellwert von {amount}.",
"cart.errors.coupon_expired": "Gutschein ist abgelaufen.",
"cart.errors.out_of_stock": "Ein oder mehrere Produkte sind nicht auf Lager.",
"cart.errors.unavailable_quantity": "Nur {available} {product} verfügbar im Geschäft. {in_cart, plural, =1 {Es ist} other {Es sind}} {in_cart} in Ihrem Warenkorb.",
"cart.errors.invalid_coupon": "Ungültiger Gutschein im Warenkorb. Bitte entfernen Sie den Gutschein, um den Checkout fortzusetzen.",
"cart.errors.cannot_ship": "Die Produkte können nicht an die angegebene Adresse versendet werden.",
"cart.errors.min_val_not_reached": "Der Mindestproduktwert für eine Bestellung beträgt {min_val}.",
"cart.errors.max_val_exceeded": "Warenwert überschreitet unterstützte Grenzen.",
"cart.errors.product_min_qty_not_reached": "Der Mindestbestellwert für {product} beträgt mindestens {min_qty}. {in_cart, plural, =1 {Es ist} other {Es sind}} {in_cart} in Ihrem Warenkorb.",
"cart.errors.product_max_qty_exceeded": "Pro Kunde können maximal {max_qty} {product} gekauft werden. {in_cart, plural, =0 {} =1 {Es ist bereits 1 in Ihrem Warenkorb.} other {Es sind bereits # in Ihrem Warenkorb.}}",
"product.left_in_stock": "{numberItems} auf Lager",
"product.missing": "Dieses Produkt existiert nicht.",
"product.out_of_stock": "Produkt nicht vorrätig.",
"product.unavailable_quantity": "Nicht genügend Artikel auf Lager.",
"product_list.empty": "Keine Produkte gefunden",
"product_search.button": "Suchen",
"product_search.placeholder": "Produkte suchen",
"add_to_cart.button_text": "In den Warenkorb legen",
"add_to_cart.success": "Produkt wurde zum Warenkorb hinzugefügt.",
"add_to_cart.error": "Produkt konnte nicht zum Warenkorb hinzugefügt werden.",
"add_to_cart.see_cart": "Warenkorb anzeigen",
"add_to_cart.min_quantity_per_order": "Mindestmenge pro Bestellung beträgt {quantity}",
"order_status.order": "Bestellung #{orderId}",
"order_status.status": "Status",
"order_status.created": "Erstellt",
"order_status.order_summary": "Bestellübersicht",
"order_status.product_personalizations": "Personalisierungen",
"order_status.customer_details": "Kundendetails",
"order_status.processed": "bearbeitet",
"order_status.pending": "ausstehend",
"order_status.shipped": "versendet",
"order_status.ready_for_pickup": "bereit zur Abholung",
"order_status.received": "erhalten",
"order_status.refunded": "erstattet",
"order_status.canceled": "storniert",
"order_status.payment_failed": "Zahlung fehlgeschlagen",
"order_status.returned": "zurückgegeben",
"order_status.check_email": "Bitte überprüfen Sie Ihre E-Mail für die Bestellbestätigung.",
"auth.sign_in": "Anmelden",
"auth.sign_out": "Abmelden",
"auth.register": "Registrieren",
"auth.prompt_register": "Sie haben noch kein Konto?",
"user_orders.sign_in_prompt": "Melden Sie sich an, um Ihre Bestellungen anzuzeigen",
"user_orders.empty": "Keine Bestellungen gefunden",
"user_settings.user_settings": "Benutzereinstellungen",
"user_settings.sign_in_prompt": "Melden Sie sich an, um Ihr Profil anzuzeigen",
"user_settings.profile_update_success": "Profil aktualisiert",
"user_settings.profile_update_email_verify_required": "Eine Bestätigungs-E-Mail wurde an {email} gesendet. Bitte folgen Sie dem Link in der E-Mail, um Ihre neue Adresse zu bestätigen.",
"user_settings.profile_update_failed": "Aktualisierung des Profils fehlgeschlagen",
"user_settings.change_photo": "Foto ändern",
"user_settings.change_password": "Passwort ändern",
"user_settings.password_reset_link_email_sent": "Eine Bestätigungs-E-Mail wurde an {email} gesendet. Bitte folgen Sie dem Link in der E-Mail, um Ihr Passwort zu ändern.",
"user_settings.save": "Speichern",
"store_unavailable": "Der Laden ist vorübergehend nicht verfügbar."
}

View File

@@ -0,0 +1,161 @@
{
"locale": "en-US",
"shopping_cart": "Shopping Cart",
"cart": "Cart",
"product": "Product",
"products": "Products",
"order": "Order",
"price": "Price",
"quantity": "Quantity",
"payment": "Payment",
"name": "Name",
"email": "Email",
"phone": "Phone",
"delivery": "Delivery",
"shipping": "Shipping",
"address": "Address",
"city": "City",
"country": "Country",
"state": "State",
"postcode": "Postal Code",
"shipping_method": "Shipping Method",
"shipping_address": "Shipping Address",
"pickup_at_store": "Pickup at Store",
"store": "Store",
"working_hours": "Working Hours",
"billing": "Billing",
"billing_name": "Billing Name",
"billing_address": "Billing Address",
"note_to_seller": "Note",
"total": "Total",
"subtotal": "Subtotal",
"price_free": "Free",
"credit_card": "Credit Card",
"pay_on_pickup": "Pay on Pickup",
"out_of_stock": "Out of Stock",
"and": "and",
"date": "date",
"status": "status",
"apply": "Apply",
"remove": "Remove",
"clear": "Clear",
"close": "Close",
"error": "Error",
"required": "Required",
"cart.checkout": "Checkout",
"cart.back_to_cart": "Back to Cart",
"cart.update": "Update Cart",
"cart.complete_order": "Complete Order",
"cart.terms_agree": "I agree to the {terms}",
"cart.terms_of_service": "Terms & Conditions",
"cart.privacy_policy": "Privacy Policy",
"cart.refund_policy": "Refund Policy",
"cart.customer_details": "Customer Details",
"cart.subtotal_only": "Shipping and taxes are calculated during checkout.",
"cart.pickup_at_store": "Pick up at {store}",
"cart.order_ready_for_pickup_label": "Order Ready for Pickup",
"cart.estimated_delivery": "Estimated Delivery",
"cart.select_store": "Select a Store",
"cart.add_billing": "Add Billing Info",
"cart.deliver_to_address": "Deliver to Address",
"cart.shipping_not_selected": "Not yet selected",
"cart.select_country": "Select Country",
"cart.note_to_seller": "Note to Seller",
"cart.note_to_seller_placeholder": "If you have any specific instructions you want to give to the seller, write them here.",
"cart.save_address": "Save my address for future purchases",
"cart.tax_exemption_add": "Apply a Tax Exemption",
"cart.tax_exemption_file": "Tax Exemption File",
"cart.tax_exemption_file_prompt": "Attach a document or photo of your tax exemption",
"cart.tax_exemption_number_prompt": "Enter your EU VAT number",
"cart.tax_exemption_cleared": "Tax exemption invalidated",
"cart.tax_exemption_cleared_details": "The provided tax exemption info could not be applied to the newly selected address.",
"cart.discount_code_placeholder": "Enter coupon or gift card code",
"cart.coupon_added": "Coupon added",
"cart.coupon_removed": "Coupon removed",
"cart.gift_card_added": "Gift Card added",
"cart.gift_card_removed": "Gift Card removed",
"cart.gift_card_balance": "available balance - {amount}",
"cart.order_summary": "Order Summary",
"cart.show_summary": "Show Summary",
"cart.prices_currency_description": "All prices are in {currency}",
"cart.left_in_stock": "{in_stock, plural, =0 {0 items left in stock} other {Only # left in stock.}}",
"cart.max_product_qty": "Maximum of {max_quantity} per customer",
"cart.errors.unavailable": "Unable to load shopping cart.",
"cart.errors.empty": "Your shopping cart is empty.",
"cart.errors.cannot_complete": "Couldn't complete checkout.",
"cart.errors.vat_number_invalid": "VAT number is invalid or can't be used in cross-border transactions.",
"cart.errors.vat_number_validation_fail": "VAT could't be validated.",
"cart.errors.delivery_unavailable": "Product delivery is not available. Please contact us.",
"cart.errors.address_not_supported": "The store is unable to ship your order to this address.",
"cart.errors.invalid_discount_code": "The code you entered is not valid.",
"cart.errors.coupon_invalid_code": "The code you entered is not valid.",
"cart.errors.coupon_already_applied": "Only one coupon can be applied.",
"cart.errors.gift_card_already_applied": "Only one gift card can be applied.",
"cart.errors.cannot_apply_gift_card_to_cart_with_giftcard": "The gift card cannot be applied to the cart. There is a gift card product being purchased",
"cart.errors.coupon_no_matching_products": "Coupon cannot be applied to any of the products in the cart.",
"cart.errors.coupon_min_amount": "Coupon requires a minimum order amount of {amount}.",
"cart.errors.coupon_expired": "Coupon has expired.",
"cart.errors.out_of_stock": "One or more products are out of stock.",
"cart.errors.unavailable_quantity": "Only {available} {product} available in the store. There {in_cart, plural, =1 {is} other {are}} {in_cart} in your cart.",
"cart.errors.invalid_coupon": "Invalid coupon in cart. Please remove the coupon to continue with checkout.",
"cart.errors.cannot_ship": "The products cannot be shipped to the provided address.",
"cart.errors.min_val_not_reached": "The minimum product value for placing an order is {min_val}.",
"cart.errors.max_val_exceeded": "Cart value exceeds supported limits.",
"cart.errors.product_min_qty_not_reached": "The minimum purchase amount for {product} is at least {min_qty}. There {in_cart, plural, =1 {is} other {are}} {in_cart} in your cart.",
"cart.errors.product_max_qty_exceeded": "A maximum of {max_qty} {product} can be purchased per customer. {in_cart, plural, =0 {} =1 {There is 1 already in your cart.} other {There are # already in your cart.}}",
"product.left_in_stock": "{numberItems} left in stock",
"product.missing": "This product doesn't exist.",
"product.out_of_stock": "Product is out of stock.",
"product.unavailable_quantity": "Not enough items in stock.",
"product_list.empty": "No products found",
"product_search.button": "Search",
"product_search.placeholder": "Search Products",
"add_to_cart.button_text": "Add to Cart",
"add_to_cart.success": "Product added to cart.",
"add_to_cart.error": "Couldn't add product to cart",
"add_to_cart.see_cart": "See Cart",
"add_to_cart.min_quantity_per_order": "Minimum Per Order is {quantity}",
"order_status.order": "Order #{orderId}",
"order_status.status": "Status",
"order_status.created": "Created",
"order_status.order_summary": "Order Summary",
"order_status.product_personalizations": "Personalizations",
"order_status.customer_details": "Customer Details",
"order_status.processed": "processed",
"order_status.pending": "pending",
"order_status.shipped": "shipped",
"order_status.ready_for_pickup": "ready for pickup",
"order_status.received": "received",
"order_status.refunded": "refunded",
"order_status.canceled": "canceled",
"order_status.payment_failed": "payment failed",
"order_status.returned": "returned",
"order_status.check_email": "Please check your email for order confirmation.",
"auth.sign_in": "Sign In",
"auth.sign_out": "Sign Out",
"auth.register": "Register",
"auth.prompt_register": "Don't have an account?",
"user_orders.sign_in_prompt": "Sign in to view your orders",
"user_orders.empty": "No orders found",
"user_settings.user_settings": "User Settings",
"user_settings.sign_in_prompt": "Sign in to view your profile",
"user_settings.profile_update_success": "Profile Updated",
"user_settings.profile_update_email_verify_required": "A verification email was sent to {email}. Please follow the link in the email to confirm your new address.",
"user_settings.profile_update_failed": "Profile Update Failed",
"user_settings.change_photo": "Change Photo",
"user_settings.change_password": "Change Password",
"user_settings.password_reset_link_email_sent": "A verification email was sent to {email}. Please follow the link in the email to change your password.",
"user_settings.save": "Save",
"store_unavailable": "The store is temporarily unavailable."
}

2
Dashboard/static/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long