npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@atshare/selector

v1.0.0

Published

Universal open social share selector for AT Protocol and ActivityPub networks

Downloads

21

Readme

@Share

npm version bundle size zero dependencies License: MIT

One button to reach them all.

A share button that lets people pick their network — and remembers their choice across every site.


Install

<script src="https://atshare.social/selector.js"></script>
<atshare-selector></atshare-selector>

That's it. Two lines. The selector reads the user's social.atshare.preference record from their PDS to pre-select their preferred destination.


The Problem

Every "Share to Bluesky" button on the web hardcodes bsky.app as the destination. If your audience is on Blacksky, deck.blue, or any other AT Protocol client, the button doesn't work for them. Same problem on the Fediverse — "Share to Mastodon" assumes a single instance.

atShare fixes this.


How It Works

  1. Embed — Add <atshare-selector> to your page
  2. Click — Your audience clicks the share button
  3. Pick — They choose their network from the selector
  4. Remember — Their preference is saved to their own PDS
  5. Everywhere — The next site running atShare already knows their choice

Features

Every network, one button. Bluesky, Blacksky, Mastodon, LinkedIn, and more — your audience picks their destination from a single, clean selector.

Preferences that follow. When someone authenticates, their preferred network is stored on their own PDS — not your site. Protocol-native and portable.

One script tag. Done. A single web component with zero dependencies. Themeable to match your site. Works everywhere HTML works.

Open source. Community-built. atShare composes existing open infrastructure — Microcosm for identity resolution, AT Protocol for preference storage. No tracking, no vendor lock-in, no accounts on our end. Built in the open, for the open web.


Theming

atShare uses CSS custom properties for theming. Override them to match your site:

atshare-selector {
  --atshare-accent: #64DFDF;        /* primary accent color */
  --atshare-accent-text: #1A1A2E;   /* text rendered on accent backgrounds */
  --atshare-bg: #ffffff;            /* popover/component background */
  --atshare-color: #0f172a;         /* primary text color */
  --atshare-border: #e2e8f0;        /* border color */
  --atshare-radius: 10px;           /* border radius */
  --atshare-muted: #6b7280;         /* secondary/muted text */
}

Dark mode example:

atshare-selector {
  --atshare-bg: #1e293b;
  --atshare-bg-hover: #334155;
  --atshare-color: #f8fafc;
  --atshare-border: #334155;
  --atshare-muted: #94a3b8;
}

Configuration

<!-- Basic -->
<atshare-selector></atshare-selector>

<!-- Custom label -->
<atshare-selector label="Share this"></atshare-selector>

<!-- Specify content to share -->
<atshare-selector
  url="https://example.com/my-post"
  text="Check out this post">
</atshare-selector>

| Attribute | Description | Default | |-----------|-------------|---------| | label | Button text (default state) | "Share" | | url | URL to share | Current page URL | | text | Pre-filled share text | Page title |


Adding a Network

The destination list lives in destinations.json. Want to add your AT Protocol client, Fediverse instance type, or traditional network? Open a PR.

{
  "id": "your-network",
  "name": "Your Network",
  "type": "atproto",
  "intentUrl": "https://your-app.example/intent/compose?text={text}",
  "icon": "your-network-icon",
  "color": "#HEXCOLOR"
}

The ecosystem decides what atShare supports, not us. See CONTRIBUTING.md for details.


Infrastructure

atShare runs on Microcosm for identity resolution — community-maintained AT Protocol infrastructure, not Bluesky's AppView. That's a deliberate choice. We're building for the protocol, not for one company's platform.

| Dependency | Purpose | |------------|---------| | Microcosm Slingshot | Handle → DID → PDS resolution | | User's PDS | Preference record storage (social.atshare.preference) | | AT Protocol OAuth | Authentication for preference read/write |


The PDS Preference Record

The social.atshare.preference Lexicon stores a user's preferred share destination on their own PDS:

{
  "$type": "social.atshare.preference",
  "primaryNetwork": "blacksky",
  "networks": [
    { "type": "atproto", "appView": "https://blacksky.app" },
    { "type": "activitypub", "instance": "https://mastodon.social" }
  ]
}

This is the innovation. The preference lives on the user's server, not yours. It follows them across every site running atShare.


Contributing

atShare is open source and community-built. Contributions welcome:

  • Add a network — PR to destinations.json (easiest contribution path)
  • Report bugsOpen an issue
  • Request featuresOpen an issue
  • Improve docs — PRs welcome
  • Spread the word — Share atShare with your community

See CONTRIBUTING.md for full guidelines.


License

MIT — Free to use, modify, and distribute. The only requirement is including the license notice.