shareon-pulsanti-condivisio.../README.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

198 lines
6.3 KiB
Markdown
Raw Permalink Normal View History

# Shareon
2020-03-25 16:32:25 +01:00
<img src="./assets/logo.svg" align="right" alt="Shareon logo — the Postal Horn emoji" width="96" height="96">
2020-03-25 16:32:25 +01:00
> Lightweight, stylish, and ethical share buttons
2020-03-25 16:32:25 +01:00
2023-07-15 00:26:00 +02:00
- **Small.** Dependency-free. CSS+JS bundle is only 6 KB minified and brotlied.
- **Stylish.** Uses official vector logos and colours with no visual mess.
2020-06-26 17:32:02 +02:00
- **Ethical.** Embeds no tracking code. JS is required only for the setup.
2020-03-25 16:32:25 +01:00
2023-07-15 00:38:24 +02:00
<a href="https://shareon.js.org/"><img src="./assets/demo@2x.png" height="126" width="333" alt="Shareon demo screenshot"></a>
2020-03-26 00:38:54 +01:00
See the live demo at [shareon.js.org](https://shareon.js.org)
2020-03-26 00:38:54 +01:00
## Install
Simply load the needed files from the CDN:
2020-03-26 00:38:54 +01:00
```html
2020-07-30 11:58:57 +02:00
<link
href="https://cdn.jsdelivr.net/npm/shareon@2/dist/shareon.min.css"
2020-07-30 11:58:57 +02:00
rel="stylesheet"
/>
<script
src="https://cdn.jsdelivr.net/npm/shareon@2/dist/shareon.iife.js"
defer
init
2020-07-30 11:58:57 +02:00
></script>
2020-03-26 00:38:54 +01:00
```
- `defer` makes sure Shareon is loaded after HTML is parsed
- `init` will automatically initialize Shareon buttons
2020-03-26 00:38:54 +01:00
### Do not auto-initialize
2020-03-26 00:38:54 +01:00
Remove the `init` attribute and initialize Shareon when you need it:
```html
<script
src="https://cdn.jsdelivr.net/npm/shareon@2/dist/shareon.iife.js"
defer
></script>
2020-07-26 14:40:37 +02:00
<script>
// do something
Shareon.init();
</script>
```
2020-07-26 14:40:37 +02:00
### Use ESM build
2020-07-26 14:40:37 +02:00
There is also a ESM build for the browsers, which doesn't support
auto-initialization:
2020-07-26 14:40:37 +02:00
```html
<script type="module">
import { init } from "https://cdn.jsdelivr.net/npm/shareon@2/dist/shareon.es.js";
// do something
init();
</script>
2020-07-26 14:40:37 +02:00
```
### Bundle with Node
2020-07-26 14:40:37 +02:00
You can also install Shareon using your favourite package manager and include it
in your source files:
2020-07-26 14:40:37 +02:00
```sh
pnpm add shareon # or `npm install`, or `yarn add`
```
```js
import { init } from "shareon";
import "shareon/css"; // most bundlers will transpile this CSS
init();
2020-07-26 14:40:37 +02:00
```
CommonJS imports are also supported:
2020-07-26 14:40:37 +02:00
```js
const Shareon = require("shareon");
require("shareon/css"); // most bundlers will transpile this CSS
2020-07-26 14:40:37 +02:00
Shareon.init();
2020-03-26 00:38:54 +01:00
```
2020-03-26 00:44:31 +01:00
## Usage
Create a container with class `shareon` and populate it with elements, class
2023-03-20 19:21:42 +01:00
names of which match the names of the social networks (or `copy-url`, for the
2023-12-07 16:54:28 +01:00
'Copy URL' button, or `print` for the 'Print' button):
2020-03-25 16:32:25 +01:00
2020-03-26 00:25:17 +01:00
```html
<div class="shareon">
<a class="facebook"></a>
2024-02-04 15:23:05 +01:00
<a class="fediverse"></a>
<a class="linkedin"></a>
<a class="mastodon"></a>
2020-09-28 13:48:10 +02:00
<!-- FB App ID is required for the Messenger button to function -->
<a class="messenger" data-fb-app-id="0123456789012345"></a>
2020-03-26 22:45:42 +01:00
<a class="odnoklassniki"></a>
2020-03-26 00:44:31 +01:00
<a class="pinterest"></a>
<a class="pocket"></a>
<a class="reddit"></a>
2023-07-14 23:06:31 +02:00
<a class="teams"></a>
<a class="telegram"></a>
2023-07-31 23:07:00 +02:00
<a class="tumblr"></a>
<a class="twitter"></a>
<a class="viber"></a>
<a class="vkontakte"></a>
<a class="whatsapp"></a>
2023-03-20 19:21:42 +01:00
<a class="copy-url"></a>
2023-12-07 00:07:24 +01:00
<a class="email"></a>
2023-12-07 16:54:28 +01:00
<a class="print"></a>
2020-03-26 00:44:31 +01:00
</div>
```
Shareon will populate these `<a>` elements with correct `href` attributes.
### Use with `<button>`s
You can use `<button>` (or any other element) instead of `<a>`s. In this case,
Shareon will create an `onclick`-listener for each button. **I do not recommend
doing this**, as this is not so good for semantics.
### Share metadata
2020-03-26 01:43:16 +01:00
By default, the URL and the title of the active page will be shared. You can
customize it with `data-` attributes. These can be applied on a specific button
or on the whole `.shareon` container:
2020-03-26 00:44:31 +01:00
```html
<div class="shareon" data-url="https://custom.url/for-this-page">
2020-03-26 00:44:31 +01:00
<a class="facebook" data-title="Custom Facebook title"></a>
<a class="twitter" data-title="Custom Twitter title"></a>
</div>
```
Apart from the URL and title, some networks support extra parameters:
- you **MUST** add `data-fb-app-id` to the FB Messenger button to make sharing
even possible
2024-02-04 15:43:54 +01:00
- add `data-s2f-instance` to the Fediverse button to set your Share₂Fedi
instance
- add `data-media` to an Odnoklassniki, Pinterest, or VK button to customize
the pinned picture
2023-07-31 23:07:00 +02:00
- add `data-text` to a Mastodon, Telegram, Tumblr, Viber, or WhatsApp button to add
custom message text
2023-07-31 23:07:00 +02:00
- add `data-via` to a Mastodon, Tumblr, or Twitter button to mention a user
- add `data-hashtags` to a Facebook, Tumblr, or Twitter button to include hashtags in the shared post.
- should be a comma-separated string, for example `stuff,tech,buttons`
- Twitter & Tumblr support multiple hashtags
- Facebook only supports a single hashtag; only the first one will be used
2020-03-26 00:44:31 +01:00
Here are all custom parameters:
2020-03-26 00:44:31 +01:00
```html
<div class="shareon" data-url="https://custom.url/for-this-page">
<a class="facebook" data-title="Custom Facebook title" data-hashtags="awesome"></a>
2024-02-04 15:43:54 +01:00
<a class="fediverse" data-s2f-instance="s2f.mydomain.example"></a>
2020-09-28 13:48:10 +02:00
<a class="messenger" data-fb-app-id="0123456789012345"></a>
<a class="pinterest" data-media="https://custom.picture/for-pinterest">Pin</a>
2020-03-26 00:25:17 +01:00
<a class="telegram" data-text="Check this out!"></a>
2023-07-31 23:07:00 +02:00
<a class="tumblr" data-hashtags="nice,buttons" data-text="These are some nice buttons" data-via="myblog"></a>
<a class="twitter" data-via="MyNickname" data-hashtags="shareon,awesome,brilliant"></a>
2020-09-28 14:01:29 +02:00
<a class="mastodon" data-via="@MyNickname@myserver.social"></a>
<a class="whatsapp" data-url="https://custom.url/for-whatsapp">Send</a>
2020-03-25 16:32:25 +01:00
</div>
```
## Other versions
- [**WordPress plugin**](https://wordpress.org/plugins/shareon/) by [Gareth](https://github.com/gareth-gillman)
## Licence
2021-01-16 22:15:19 +01:00
Copyright © 20202022 [Nikita Karamov](https://www.kytta.dev/)
Licenced under the [MIT License](https://spdx.org/licenses/MIT.html).
Shareon was heavily inspired by [Likely](https://ilyabirman.net/likely/),
and has a somewhat backwards-compatible API (excluding themes and sizes).
Likely is licenced under the MIT License.
Shareon's logo is the
[Postal Horn emoji](https://github.com/googlefonts/noto-emoji/blob/43f47be9404018cd9d8f73a227363a8f20acdab5/svg/emoji_u1f4ef.svg)
from [Noto Emoji](https://github.com/googlefonts/noto-emoji).
Noto Emoji is licenced under the
[Apache License v2.0](https://github.com/googlefonts/noto-emoji/blob/43f47be9404018cd9d8f73a227363a8f20acdab5/LICENSE).
Share icons are being sourced from [Simple Icons](https://github.com/simple-icons/simple-icons/).
Simple Icons is released under [CC0](https://spdx.org/licenses/CC0-1.0.html),
but the icons themselves may be subject to copyright of the respective owners.
---
2021-01-16 23:50:16 +01:00
2023-01-23 06:06:31 +01:00
This project is hosted on GitHub: <https://github.com/kytta/shareon>