- /
-
- Web Components /
- Component reference
Component reference
Attributes, render modes, and CSS variables for each OP web component
Last modified 2026-05-01
The following web components are hosted by the
octothorp.esserver, and are not core features of OP. Different OP Servers and apps may decide to host different components, or none at all.
Shared attributes
Most query components (<octo-thorpe>, <octo-backlinks>) accept the same set of filter attributes.
The server attribute
OP is a distributed protocol — there's more than one server. The server attribute tells a component which OP server to query. By default it uses the origin of the URL the component was loaded from, so a component served from https://myserver.example.com/components/octo-thorpe.js will query https://myserver.example.com. Override it explicitly if you need to point at a different server:
<octo-thorpe o="your-tag" server="https://your-op-server.example.com" autoload></octo-thorpe>
| Attribute | Description | Default |
|---|---|---|
server |
OP server to query | Origin of the script's URL |
o |
Object filter — terms or URLs, comma-separated | |
s |
Subject filter — domains, comma-separated | |
noto |
Exclude these objects | |
nots |
Exclude these subjects | |
match |
Match mode: exact, fuzzy, fuzzy-o, fuzzy-s, very-fuzzy |
|
limit |
Max results | 10 |
offset |
Result offset for pagination | 0 |
when |
Date filter: recent, after-DATE, before-DATE, between-DATE-and-DATE |
|
autoload |
Fetch on mount (boolean attribute) | false |
render |
Display mode: list, cards, compact, count |
compact |
Render modes
| Mode | Output |
|---|---|
list |
Bulleted list with title, description, and date |
cards |
Image grid |
compact |
Closed term opening to a list of links, like the classic tags.js |
count |
Just the number — for inline use |
CSS custom properties
All query components share the same CSS variables, set on the element or a parent:
octo-thorpe {
--octo-font: system-ui, sans-serif;
--octo-primary: #3c7efb;
--octo-background: #ffffff;
--octo-text: #333333;
--octo-border: #e0e0e0;
--octo-error: #d32f2f;
--octo-spacing: 1rem;
--octo-radius: 4px;
}
<octo-thorpe>
Shows pages tagged with a given octothorpe term.
API: GET /get/pages/thorped
<script type="module" src="https://octothorp.es/components/octo-thorpe.js"></script>
<octo-thorpe o="your-tag" autoload></octo-thorpe>
<octo-thorpe o="one-tag,another,athird" render="cards" autoload></octo-thorpe>
Accepts all shared attributes.
Upgrading from
tags.js? The element name and text-content syntax (<octo-thorpe>term</octo-thorpe>) still work with the new component. Switching is a one-line script change. Theoattribute is available if you want render modes, filtering, or multiple terms.tags.jscontinues to work for sites that haven't migrated.
<octo-backlinks>
Shows pages that link to a given URL. Defaults to the current page if o is omitted.
API: GET /get/pages/linked
<script type="module" src="https://octothorp.es/components/octo-backlinks.js"></script>
<octo-backlinks autoload></octo-backlinks>
Accepts all shared attributes, plus:
| Attribute | Description | Default |
|---|---|---|
emptyMessage |
Text shown when no results | "No links found to this page" |
<octo-multipass>
Accepts a MultiPass JSON object and displays results with metadata.
<script type="module" src="https://octothorp.es/components/octo-multipass.js"></script>
<octo-multipass multipass='{"what":"pages","by":"thorped","o":"your-tag"}' autoload></octo-multipass>
| Attribute | Description |
|---|---|
multipass |
MultiPass JSON string or object |
autoload |
Fetch on mount |
render |
list, cards, compact, or count |
<octo-multipass-loader>
File drop zone for MultiPass objects. Accepts GIF or JSON drops and renders results.
<script type="module" src="https://octothorp.es/components/octo-multipass-loader.js"></script>
<octo-multipass-loader></octo-multipass-loader>
Pre-load a GIF — skip the drop zone and render results from a MultiPass GIF directly:
<octo-multipass-loader gif="https://yoursite.com/my-multipass.gif" render="list"></octo-multipass-loader>
Render into an external element — useful if you want the loader and results in separate parts of the page:
<octo-multipass-loader target="#results"></octo-multipass-loader>
<div id="results"></div>
| Attribute | Description | Default |
|---|---|---|
render |
Display mode for results: list, cards, compact |
list |
placeholder |
Upload prompt text | "Drop MultiPass JSON or GIF here" |
gif |
URL to a MultiPass GIF — skips the drop zone and loads directly | |
target |
CSS selector for an external element to render results into |
<octo-badge>
Renders a clickable 88×31 badge that triggers indexing of the current page on mount.
<script type="module" src="https://octothorp.es/components/octo-badge.js"></script>
<octo-badge></octo-badge>
| Attribute | Description | Default |
|---|---|---|
server |
OP server URL | https://octothorp.es |
uri |
Page URL to index | Current page URL |
as |
Harmonizer ID or URL | "default" |