44 lines
4.3 KiB
JavaScript
44 lines
4.3 KiB
JavaScript
import { e as createComponent, g as addAttribute, r as renderTemplate, k as renderHead, l as renderScript, h as createAstro } from '../chunks/astro/server_CtsYB3PN.mjs';
|
|
import 'piccolore';
|
|
import 'clsx';
|
|
/* empty css */
|
|
export { renderers } from '../renderers.mjs';
|
|
|
|
const $$Astro = createAstro();
|
|
const $$Index = createComponent(async ($$result, $$props, $$slots) => {
|
|
const Astro2 = $$result.createAstro($$Astro, $$props, $$slots);
|
|
Astro2.self = $$Index;
|
|
const DIRECTUS = process.env.DIRECTUS_URL || "http://i5yq3bxu3de6kkk7jd2e0nk7.46.224.49.66.sslip.io";
|
|
const TOKEN = process.env.DIRECTUS_TOKEN || "hd-astro-ro-7c1f9a2e";
|
|
const SNIPCART = process.env.PUBLIC_SNIPCART_KEY || "";
|
|
async function dapi(path) {
|
|
const r = await fetch(`${DIRECTUS}${path}`, { headers: { Authorization: `Bearer ${TOKEN}` } });
|
|
if (!r.ok) return null;
|
|
return (await r.json()).data;
|
|
}
|
|
const pageArr = await dapi("/items/pages?filter[slug][_eq]=home&limit=1");
|
|
const page = pageArr && pageArr[0] || { id: 1, kicker: "", headline: "Inhalt nicht geladen", lead: "", intro_heading: "", intro_body: "" };
|
|
const products = await dapi("/items/products?limit=20&sort=sort&fields=id,slug,name,priceCents,category,badge") || [];
|
|
const eur = (c) => (c / 100).toLocaleString("de-DE", { minimumFractionDigits: 2 }) + " €";
|
|
const de = (fields) => `collection:pages;item:${page.id};fields:${fields};mode:popover`;
|
|
return renderTemplate`<html lang="de"${addAttribute(DIRECTUS, "data-directus-url")}> <head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>${page.headline} · Astro + Directus + Snipcart</title>${SNIPCART && renderTemplate`<link rel="preconnect" href="https://app.snipcart.com">`}${SNIPCART && renderTemplate`<link rel="stylesheet" href="https://cdn.snipcart.com/themes/v3.7.1/default/snipcart.css">`}${renderHead()}</head> <body> <header class="wrap"><div class="topbar"> <span class="brandmark">${page.kicker || "Demo-Shop"}</span> ${SNIPCART && renderTemplate`<span class="snipcart-checkout cart-sum">Warenkorb (<span class="snipcart-items-count">0</span>)</span>`} </div></header> <section class="sec wrap"> <div class="kicker"${addAttribute(de("kicker"), "data-directus")}>${page.kicker}</div> <h1${addAttribute(de("headline"), "data-directus")}>${page.headline}</h1> <p class="lead"${addAttribute(de("lead"), "data-directus")}>${page.lead}</p> </section> <section class="sec wrap"> <div class="intro"> <h2${addAttribute(de("intro_heading"), "data-directus")}>${page.intro_heading}</h2> <p class="lead"${addAttribute(de("intro_body"), "data-directus")}>${page.intro_body}</p> </div> </section> <section class="sec wrap"> <h2>Produkte (${products.length})</h2> <div class="grid"> ${products.map((p) => renderTemplate`<div class="card"> <div class="ph"></div> <div class="bd"> <h3>${p.name}</h3> <span class="price">${eur(p.priceCents)}</span> <button class="buy snipcart-add-item"${addAttribute(String(p.id), "data-item-id")}${addAttribute(p.name, "data-item-name")}${addAttribute((p.priceCents / 100).toFixed(2), "data-item-price")} data-item-url="/"${addAttribute(p.category || "", "data-item-description")}>
|
|
In den Warenkorb
|
|
</button> </div> </div>`)} </div> <div class="note"> <strong>Demo-Stack:</strong> Diese Seite ist ein <em>Astro-SSR-Frontend</em>. Texte oben kommen aus
|
|
<em>Directus</em> (self-host) — im Directus-Studio unter „Visual Editor" erscheinen Edit-Buttons direkt auf
|
|
den Texten. Der Warenkorb ist <em>Snipcart</em> für ≤~30 Artikel. ${SNIPCART ? "" : "Snipcart-Key fehlt noch → Buttons sind sichtbar, Checkout aktiv erst mit Key."} </div> </section> ${SNIPCART && renderTemplate`<div hidden id="snipcart"${addAttribute(SNIPCART, "data-api-key")} data-config-modal-style="side"></div>
|
|
${renderScript($$result, "/tmp/astro-directus/src/pages/index.astro?astro&type=script&index=0&lang.ts")}`} ${renderScript($$result, "/tmp/astro-directus/src/pages/index.astro?astro&type=script&index=1&lang.ts")} </body> </html>`;
|
|
}, "/tmp/astro-directus/src/pages/index.astro", void 0);
|
|
const $$file = "/tmp/astro-directus/src/pages/index.astro";
|
|
const $$url = "";
|
|
|
|
const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
__proto__: null,
|
|
default: $$Index,
|
|
file: $$file,
|
|
url: $$url
|
|
}, Symbol.toStringTag, { value: 'Module' }));
|
|
|
|
const page = () => _page;
|
|
|
|
export { page };
|