AdLandYour ad on adland-1

Monetize your building spaces, transparently, onchain.

One RPC call fetches all the onchain data, rendered by very lightweight packages — like the examples below.

Four ways to put it on a page, all live.

Paste it

no styling at all

adland-1
<script src="https://cdn.jsdelivr.net/npm/@adland/embed@0.4.0/dist/adland.js" async></script>

<adland-slot slot-key="adland-1"></adland-slot>

Theme it

30 CSS custom properties — hover it

adland-1
<!-- same script as above -->
<adland-slot
  slot-key="adland-1"
  style="--adland-bleed: 10px;
         --adland-bg: #FFE500;
         --adland-fg: #000;
         --adland-border: #000;
         --adland-border-width: 2px;
         --adland-radius: 0;
         --adland-shadow: 6px 6px 0 #000;
         --adland-shadow-hover: 2px 2px 0 #000;
         --adland-transform-hover: translate(4px, 4px)"
></adland-slot>

Style it with your own classes

render-mode=light — Tailwind reaches the card

adland-1
<!-- same script as above -->
<adland-slot
  slot-key="adland-1"
  render-mode="light"
  class="[&_.adland-card]:flex [&_.adland-card]:gap-3
         [&_.adland-card]:rounded-xl [&_.adland-card]:border
         [&_.adland-media]:size-12 [&_.adland-title]:font-medium"
></adland-slot>

Or build the card

React — the markup is yours

adland-1
npm i @adland/react

import { Ad, AdImage, AdTitle } from "@adland/react";

<Ad slotKey="adland-1">
  <AdImage className="aspect-video w-full" />
  <AdTitle className="font-medium" />
</Ad>

All four are live and read the same slot on Base — one eth_call each, since the name and the creative come back together. They run with consent="denied" so this page does not count as impressions against the ad — leave it off and yours are tracked normally.

Every attribute, every ad type.

The six kinds of ad a slot can hold, the full event payload, and a prompt you can hand to a coding agent.

How to embed it