// Atlubni Docs — Core API pages (Geocoding, Routing, Matching, Places, Bulk)

const PageGeocoding = ({ lang, t, openTryIt }) => (
  <div className="prose">
    <p>{lang === "ar" ? "الترميز الجغرافي يحوّل النصّ إلى إحداثيّات والعكس. يُغطّي العربية والإنكليزية والترجمات الشائعة." : "Geocoding converts text into coordinates and back. Covers Arabic, English, and common transliterations."}</p>

    <Endpoint t={{...t, lang}} method="GET" path="/v1/geocode/search" anchor="search"
      title={lang === "ar" ? "ترميز أمامي" : "Forward"}
      desc={lang === "ar" ? "حوّل عنوانًا أو اسمًا إلى نقاط مرشّحة مع درجة ثقة." : "Turn an address or name into ranked candidates with confidence."}
      params={[
        { name: "q", required: true, type: "string", desc: lang === "ar" ? "الاستعلام النصّي." : "Free-text query." },
        { name: "country", type: "string", desc: lang === "ar" ? "تصفية: iq · sy · jo." : "Filter: iq · sy · jo." },
        { name: "lang", type: "string", desc: lang === "ar" ? "لغة الإرجاع: ar أو en. الافتراضي: تلقائي." : "Return language: ar or en. Default auto." },
        { name: "limit", type: "number", desc: lang === "ar" ? "حد النتائج، 1–25." : "Max results, 1–25." },
      ]}
      request={`curl https://api.atlubni.io/v1/geocode/search \\\n  -H "Authorization: Bearer $ATLUBNI_KEY" \\\n  --data-urlencode "q=Al-Rasheed Street, Baghdad"`}
      response={`{\n  "results": [\n    {\n      "place_id": "iq_bg_rashid_01",\n      "name_ar": "شارع الرشيد",\n      "name_en": "Al-Rasheed Street",\n      "lat": 33.3399,\n      "lon": 44.4078,\n      "confidence": 0.94,\n      "country": "iq"\n    }\n  ]\n}`}
      onTryIt={() => openTryIt("geocode-search")}
    />

    <Endpoint t={{...t, lang}} method="GET" path="/v1/geocode/reverse" anchor="reverse"
      title={lang === "ar" ? "ترميز عكسي" : "Reverse"}
      desc={lang === "ar" ? "حوّل lat/lon إلى أقرب عنوان معروف." : "Turn lat/lon into the nearest known address."}
      params={[
        { name: "lat", required: true, type: "number", desc: "−90..90" },
        { name: "lon", required: true, type: "number", desc: "−180..180" },
        { name: "lang", type: "string", desc: lang === "ar" ? "ar أو en." : "ar or en." },
      ]}
      request={`curl "https://api.atlubni.io/v1/geocode/reverse?lat=33.3152&lon=44.3661" \\\n  -H "Authorization: Bearer $ATLUBNI_KEY"`}
      response={`{\n  "address": {\n    "name_ar": "الكرّادة",\n    "name_en": "Karrada",\n    "city": "Baghdad",\n    "country": "iq"\n  }\n}`}
      onTryIt={() => openTryIt("geocode-reverse")}
    />

    <Endpoint t={{...t, lang}} method="POST" path="/v1/geocode/batch" anchor="batch"
      title={lang === "ar" ? "بالجملة" : "Batch"}
      desc={lang === "ar" ? "حتى 1000 استعلام في طلب واحد." : "Up to 1,000 queries per request."}
      params={[
        { name: "queries", required: true, type: "array<object>", desc: lang === "ar" ? "كل عنصر يقبل q أو {lat, lon}." : "Each item accepts q or {lat, lon}." },
      ]}
    />

    <Callout type="note" title={lang === "ar" ? "ملاحظة" : "Note"}>
      {lang === "ar" ? "حقل confidence يتراوح بين 0 و1. أقل من 0.6 يعني نتيجة محتملة وليست مؤكّدة." : "The confidence field is 0–1. Below 0.6 indicates a probable, not certain, match."}
    </Callout>
  </div>
);

const PageRouting = ({ lang, t, openTryIt }) => (
  <div className="prose">
    <p>{lang === "ar" ? "احسب طرقًا ومسافات بسرعة عبر شبكة طرق محلّيّة محدّثة." : "Compute routes and distances against a locally-maintained, weekly-refreshed road graph."}</p>

    <Endpoint t={{...t, lang}} method="GET" path="/v1/route" anchor="route"
      desc={lang === "ar" ? "طريق نقطة-إلى-نقطة مع خيارات قيادة، مشي، وحركة المرور." : "Point-to-point route with driving, walking, and traffic profiles."}
      params={[
        { name: "from", required: true, type: "string", desc: "lat,lon" },
        { name: "to", required: true, type: "string", desc: "lat,lon" },
        { name: "profile", type: "string", desc: "driving · driving-traffic · walking" },
        { name: "geometries", type: "string", desc: lang === "ar" ? "polyline أو geojson." : "polyline or geojson." },
      ]}
      request={`curl "https://api.atlubni.io/v1/route?from=33.31,44.36&to=33.34,44.41&profile=driving-traffic" \\\n  -H "Authorization: Bearer $ATLUBNI_KEY"`}
      response={`{\n  "distance_m": 5430,\n  "duration_s": 612,\n  "geometry": "polyline:_p~iF~ps|U_ulLnnqC...",\n  "legs": [{ "summary": "شارع فلسطين", "steps": 14 }]\n}`}
      onTryIt={() => openTryIt("route")}
    />

    <Endpoint t={{...t, lang}} method="POST" path="/v1/route/matrix" anchor="matrix"
      title={lang === "ar" ? "مصفوفة المسافات" : "Distance matrix"}
      desc={lang === "ar" ? "مصفوفة كاملة حتّى 50×50 بين أصول ووجهات." : "Full matrix up to 50×50 origins to destinations."}
      params={[
        { name: "origins", required: true, type: "array<[lat,lon]>", desc: lang === "ar" ? "حتى 50 نقطة." : "Up to 50 points." },
        { name: "destinations", required: true, type: "array<[lat,lon]>", desc: lang === "ar" ? "حتى 50 نقطة." : "Up to 50 points." },
      ]}
    />
  </div>
);

const PageMatching = ({ lang, t, openTryIt }) => (
  <div className="prose">
    <p>{lang === "ar" ? "ابحث عن أقرب السائقين، أو محاذِ مسار GPS مع شبكة الطرق." : "Find the nearest drivers, or snap a noisy GPS trace to the road graph."}</p>
    <Endpoint t={{...t, lang}} method="GET" path="/v1/match/nearest" anchor="nearest"
      desc={lang === "ar" ? "أعد قائمة سائقين متاحين مرتّبة بزمن الوصول." : "Return the available drivers ranked by ETA."}
      params={[
        { name: "lat", required: true, type: "number", desc: "−90..90" },
        { name: "lon", required: true, type: "number", desc: "−180..180" },
        { name: "fleet_id", type: "string", desc: lang === "ar" ? "تصفية حسب الأسطول." : "Fleet to scope to." },
        { name: "limit", type: "number", desc: "1–25" },
      ]}
      request={`curl "https://api.atlubni.io/v1/match/nearest?lat=33.31&lon=44.36&limit=5" \\\n  -H "Authorization: Bearer $ATLUBNI_KEY"`}
      response={`{\n  "drivers": [\n    { "id": "drv_4821", "eta_s": 142, "distance_m": 720 },\n    { "id": "drv_2901", "eta_s": 198, "distance_m": 940 }\n  ]\n}`}
      onTryIt={() => openTryIt("nearest")}
    />
    <Endpoint t={{...t, lang}} method="POST" path="/v1/match/snap" anchor="snap"
      title={lang === "ar" ? "محاذاة الطرق" : "Snap-to-road"}
      desc={lang === "ar" ? "ضع نقاط GPS مشوّشة على أقرب قطعة طريق." : "Project noisy GPS points onto the nearest road segment."}
      params={[
        { name: "points", required: true, type: "array<[lat,lon,t]>", desc: lang === "ar" ? "حتى 100 نقطة." : "Up to 100 points." },
      ]}
    />
  </div>
);

const PagePlaces = ({ lang, t, openTryIt }) => (
  <div className="prose">
    <p>{lang === "ar" ? "ابحث عن مطاعم، صيدليّات، صراف آلي، وغيرها عبر 1.4 مليون مكان مفهرس." : "Search 1.4M indexed places: restaurants, pharmacies, ATMs, and more."}</p>
    <Endpoint t={{...t, lang}} method="GET" path="/v1/places/search" anchor="search"
      desc={lang === "ar" ? "ابحث بالاسم أو الفئة." : "Search by name or category."}
      params={[
        { name: "q", type: "string", desc: lang === "ar" ? "نصّ حرّ." : "Free text." },
        { name: "category", type: "string", desc: lang === "ar" ? "مثل: restaurant, pharmacy." : "e.g. restaurant, pharmacy." },
        { name: "near", type: "string", desc: "lat,lon" },
        { name: "radius_m", type: "number", desc: "1..50000" },
      ]}
      request={`curl "https://api.atlubni.io/v1/places/search?category=pharmacy&near=33.31,44.36&radius_m=2000" \\\n  -H "Authorization: Bearer $ATLUBNI_KEY"`}
      response={`{\n  "places": [\n    {\n      "id": "iq_bg_ph_142",\n      "name_ar": "صيدلية النور",\n      "name_en": "Al-Noor Pharmacy",\n      "category": "pharmacy",\n      "lat": 33.3098,\n      "lon": 44.3624\n    }\n  ]\n}`}
      onTryIt={() => openTryIt("places-search")}
    />
    <Endpoint t={{...t, lang}} method="GET" path="/v1/places/autocomplete" anchor="autocomplete"
      desc={lang === "ar" ? "اقتراحات إكمال تلقائي بزمن < 80ms." : "Autocomplete suggestions in < 80 ms."}
      params={[
        { name: "q", required: true, type: "string", desc: lang === "ar" ? "بادئة جزئية، 2 حرف فأكثر." : "Partial prefix, 2+ chars." },
      ]}
    />
  </div>
);

const PageBulk = ({ lang, t }) => (
  <div className="prose">
    <Callout type="warning" title="BETA">
      {lang === "ar" ? "نقاط Bulk في طور التجربة. الواجهة قد تتغيّر قبل GA." : "Bulk endpoints are in beta. Shape may change before GA."}
    </Callout>
    <p>{lang === "ar" ? "ارفع ملفّات CSV أو Excel أو حدودًا OSM لمعالجة الملايين من الصفوف. النتائج تُسلَّم عبر webhook أو presigned URL." : "Upload CSV, Excel, or OSM bbox to process millions of rows. Results delivered via webhook or presigned URL."}</p>
    <Endpoint t={{...t, lang}} method="POST" path="/v1/bulk/csv" anchor="csv"
      title={lang === "ar" ? "رفع CSV" : "Upload CSV"}
      desc={lang === "ar" ? "ارفع ملفًّا حتّى 5GB. أعمدة: address، lat، lon، أو مزيج." : "Upload up to 5 GB. Columns: address, lat, lon, or mix."}
      params={[
        { name: "file", required: true, type: "file", desc: "multipart/form-data" },
        { name: "operation", required: true, type: "string", desc: "geocode · reverse" },
        { name: "webhook_url", type: "string", desc: lang === "ar" ? "للإشعار عند الانتهاء." : "Called when complete." },
      ]}
    />
  </div>
);

window.PageGeocoding = PageGeocoding;
window.PageRouting = PageRouting;
window.PageMatching = PageMatching;
window.PagePlaces = PagePlaces;
window.PageBulk = PageBulk;
