svelte-reactions
v2.5.4
Published
Easy to use emoji reactions for your app.
Maintainers
Readme
🚀 Install
Using npm
npm i svelte-reactionsOr using yarn
yarn add svelte-reactions🤔 Usage
Using js
<script>
import 'svelte-reactions/global.css';
import { Trigger } from 'svelte-reactions';
const reactions = [
{
id: '1',
reaction: '👍',
quantity: 100,
clicked: false
}
];
</script>
<Trigger bind:reactions />Using ts
<script lang="ts">
import 'svelte-reactions/global.css';
import { Trigger, type ReactionType } from 'svelte-reactions';
const reactions: ReactionType = [
{
id: '1',
reaction: '👍',
quantity: 100,
clicked: false
}
];
</script>
<Trigger bind:reactions />For more expamples go to the REPL
🎨 Theming
We expose some CSS Variables to make more easy customize the colors of the component:
| Variable | Description | | :------- | ----------: | | --srTriggerBg | Define the background color of default Trigger component | | --srTriggerColor | Define the text color of default Trigger component | | --srTriggerHoverBg | Define the background hover color of default Trigger component | | --srTriggerContainerBoxShadow | Define the style box shadow of the reactions container | | --srTriggerContainerBg | Define the background color of the reactions container | | --srReactionClickedBg | Define the background color of reaction block when this is already clicked | | --srReactionNotClickedBg | Define the background color of reaction block when this is not already clicked | | --srReactionHoverBg | Define the background hover color of reaction block | | --srReactionClickedHoverBg | Define the background hover color of reaction block when this is already clicked | | --srEmojiColor | Define the text color of reaction | | --srEmojiClickedColor | Define the text color of reaction when this is already clicked | | --srLabelBorderColor | Define the border color of default label component | | --srLabelClickedBorderColor | Define the border color of default label component when reaction is already clicked | | --srLabelBg | Define the background color of default label component | | --srLabelClickedBg | Define the background color of default label component when reaction is already clicked | | --srLabelColor | Define the text color of default label component | | --srLabelClickedColor | Define the text color of default label component when reaction is already clicked | | --srLabelHoverBg | Define the background hover color of default label component | | --srLabelClickedHoverBg | Define the background hover color of default label component when reaction is already clicked |
Then you can use this variables to customize the component, for example:
<!-- CustomReactionComponent.svelte -->
<script>
import { Trigger } from 'svelte-reaction';
export let reactions;
export let showLabels = true;
export let position = 'bottom-left'
</script>
<Trigger {reactions} {showLabels} {position} />
<style global>
:root {
--srTriggerBg: red;
--srTriggerHoverBg: blue;
--srTriggerColor: white;
}
</style>If you need to be more strict, always you can overwrite the next classes to get the better result:
| Class name | Description | | :------- | ----------: | | .trigger-container | Default class for default trigger and labels container | | .trigger | Default class for default trigger element | | .reactions-container| Default class for the reactions contanier (floating component) | | .reaction | Default class for the reaction element | | .emoji | Default class for the emoji element | | .labels-container | Deault class for the labels container | | .label | Default class for the label element | | .label-component | Default class for the label element, when the reaction is defined as SvelteComponent insted of String |
Remember alway use global styles for overwriting CSS variables and classes
📂 API
ReactionType attributes
| Property | Type | Description |
| :------- | :--: | ----------: |
| id | string | Identifier of a reaction, useful for bind data with your database. |
| reaction | string | SvelteComponent | You can use any string for a reaction, however we recomend you to use a string with 1 value of lenght, when you use an SvelteComponent as reaction, components like svg or img or any other, we recomend you to use this sizes: width between 20px and 35px same as height. |
| labelReaction | string | SvelteComponent | undefined | Same as reaction property, this define the reaction representation on summary labels (by default this value is equal to provided reaction value |
| quantity | number | Define the quantity of reactions, for example 50 likes in some post. |
| clicked | boolean | Define if the current user clicked some reaction. |
Placment type
This type is used on the <Trigger /> component props, for example:
<Trigger position='bottom-left' />valid values:
'bottom-left' | 'top-left' | 'bottom-right' | 'top-right'
Trigger properties
| Property | Type | Description |
| :------- | :--: | ----------: |
| reactions | ReactionType[] | Define the set of reactions. |
| showLabels | boolean | Define if the component generate summary of reactionis. |
| position | Placement | Define the placement of the reactions containers. |
| on:reaction | CustomEvent | Throw an event when some reaction is clicked |
