{ e.currentTarget.style.display = "none"; }}
+ />
),
};
diff --git a/src/pages.jsx b/src/pages.jsx
index 9bcdcf5..f0eee94 100644
--- a/src/pages.jsx
+++ b/src/pages.jsx
@@ -35,9 +35,36 @@ const PageHero = ({ eyebrow, title, sub, children }) => (
// ─── SERVICES PAGE ────────────────────────────────────────────────────────────
+const DASHBOARD_API = 'https://aura.auraajenticai.cloud';
+
const ServicesPage = ({ lang }) => {
const D = PORTFOLIO_DATA;
const [active, setActive] = React.useState(null);
+ const [svcLinks, setSvcLinks] = React.useState({});
+
+ // Fetch demo/repo overrides from Dashboard (stale-while-revalidate)
+ React.useEffect(() => {
+ const CACHE_KEY = 'aura_svc_links';
+ const CACHE_TTL = 10 * 60 * 1000;
+ try {
+ const cached = sessionStorage.getItem(CACHE_KEY);
+ if (cached) {
+ const { data, ts } = JSON.parse(cached);
+ if (Date.now() - ts < CACHE_TTL) { setSvcLinks(data); return; }
+ }
+ } catch {}
+ fetch(`${DASHBOARD_API}/api/public/services`, { signal: AbortSignal.timeout(3000) })
+ .then(r => r.ok ? r.json() : null)
+ .then(data => {
+ if (Array.isArray(data)) {
+ const map = {};
+ data.forEach(s => { if (s.id) map[s.id] = { demo: s.demo, repo: s.repo }; });
+ setSvcLinks(map);
+ sessionStorage.setItem(CACHE_KEY, JSON.stringify({ data: map, ts: Date.now() }));
+ }
+ })
+ .catch(() => {});
+ }, []);
return (