iPhone Verkaufen

iPhone Verkaufen

Erhalte dein Angebot in 60s

Erhalte dein Angebot in 60s

Dein Angebot beträgt:

Dein Angebot beträgt:

import * as React from "react";
import { addPropertyControls, ControlType } from "framer";

export default function OfferBox(props) {
  const { priceParam, idParam, eligibleParam, currency } = props;

  const [price, setPrice] = React.useState<string | null>(null);
  const [intakeId, setIntakeId] = React.useState<string | null>(null);
  const [eligible, setEligible] = React.useState<string | null>(null);

  React.useEffect(() => {
    const params = new URLSearchParams(window.location.search);
    setPrice(params.get(priceParam));
    setIntakeId(params.get(idParam));
    setEligible(params.get(eligibleParam));
  }, [priceParam, idParam, eligibleParam]);

  // Kein Angebot / falscher Link
  if (!price && eligible !== "false") {
    return (
      <div style={boxStyle}>
        <div style={titleStyle}>Kein Angebot gefunden</div>
        <div style={subStyle}>Bitte gehe über den Ankauf-Prozess, damit wir dein Angebot berechnen können.</div>
      </div>
    );
  }

  // Nicht ankauffähig
  if (eligible === "false") {
    return (
      <div style={boxStyle}>
        <div style={titleStyle}>Leider kein Ankauf möglich</div>
        <div style={subStyle}>Dein Gerät passt aktuell nicht zu unseren Ankaufkriterien.</div>
        {intakeId ? <div style={idStyle}>Referenz: {intakeId}</div> : null}
      </div>
    );
  }

  // Erfolgsfall
  return (
    <div style={boxStyle}>
      <div style={titleStyle}>Dein Angebot</div>
      <div style={priceStyle}>
        {price} {currency}
      </div>
      {intakeId ? <div style={idStyle}>Referenz: {intakeId}</div> : null}
    </div>
  );
}

// Styles (minimal, clean)
const boxStyle: React.CSSProperties = {
  padding: 24,
  borderRadius: 16,
  border: "1px solid rgba(0,0,0,0.08)",
  background: "white",
  width: "100%",
  boxSizing: "border-box",
};

const titleStyle: React.CSSProperties = {
  fontSize: 16,
  opacity: 0.75,
  marginBottom: 8,
  fontWeight: 600,
};

const priceStyle: React.CSSProperties = {
  fontSize: 40,
  fontWeight: 800,
  letterSpacing: "-0.02em",
  marginBottom: 10,
};

const subStyle: React.CSSProperties = {
  fontSize: 14,
  opacity: 0.75,
};

const idStyle: React.CSSProperties = {
  marginTop: 12,
  fontSize: 12,
  opacity: 0.6,
};

// Controls (damit du Param-Namen flexibel setzen kannst)
addPropertyControls(OfferBox, {
  priceParam: { type: ControlType.String, title: "Price Param", defaultValue: "price" },
  idParam: { type: ControlType.String, title: "ID Param", defaultValue: "intake_id" },
  eligibleParam: { type: ControlType.String, title: "Eligible Param", defaultValue: "eligible" },
  currency: { type: ControlType.String, title: "Currency", defaultValue: "€" },
});

Rechtliches

Impressum

Datenschutz