UNPKG

@pagedotapp/page-reaction-picker

Version:

PageReactionPicker - A reusable React component

205 lines (204 loc) 5.7 kB
{ "name": "PageReactionPicker", "package": "@pagedotapp/page-reaction-picker", "description": "An emoji reaction picker component with desktop dropdown and mobile bottom sheet support.", "tags": ["emoji", "reactions", "picker", "social", "interactive", "page-ui"], "attributes": [ { "name": "onSelect", "type": "(emoji: string, emojiData: EmojiClickData) => void", "default": null, "description": "Callback when an emoji is selected", "required": true }, { "name": "trigger", "type": "ReactNode | ((isOpen: boolean) => ReactNode)", "default": null, "description": "Custom trigger element or render function", "required": false }, { "name": "triggerIcon", "type": "string", "default": "'emoji-smile'", "description": "Bootstrap icon name for the trigger button", "required": false }, { "name": "triggerIconSize", "type": "number", "default": 20, "description": "Size of the trigger icon in pixels", "required": false }, { "name": "showPlusSign", "type": "boolean", "default": false, "description": "Show plus sign on the trigger button", "required": false }, { "name": "tooltipText", "type": "string", "default": "'Add reaction'", "description": "Tooltip text for the trigger button", "required": false }, { "name": "theme", "type": "'light' | 'dark' | 'auto'", "default": "'auto'", "description": "Theme for the emoji picker", "required": false }, { "name": "emojiStyle", "type": "EmojiStyle", "default": "EmojiStyle.APPLE", "description": "Visual style of emojis (Apple, Google, Facebook, etc.)", "required": false }, { "name": "showPreview", "type": "boolean", "default": true, "description": "Show preview of hovered emoji", "required": false }, { "name": "autoFocusSearch", "type": "boolean", "default": true, "description": "Auto-focus the search input when opened", "required": false }, { "name": "width", "type": "number | string", "default": 350, "description": "Width of the emoji picker", "required": false }, { "name": "height", "type": "number | string", "default": 450, "description": "Height of the emoji picker", "required": false }, { "name": "disabled", "type": "boolean", "default": false, "description": "Disable the reaction picker", "required": false }, { "name": "forceMobile", "type": "boolean", "default": false, "description": "Force mobile mode with bottom sheet", "required": false } ], "usage": "Import and use to add emoji reaction functionality to posts, comments, or messages.", "example": "import { PageReactionPicker } from '@pagedotapp/page-reaction-picker';\n\nfunction Example() {\n const handleEmojiSelect = (emoji, data) => {\n console.log('Selected emoji:', emoji);\n };\n\n return (\n <PageReactionPicker\n onSelect={handleEmojiSelect}\n tooltipText=\"React to this post\"\n theme=\"auto\"\n />\n );\n}", "goodPractices": [ "Use for adding reactions to social content", "Provide clear tooltip text for accessibility", "Consider mobile UX with bottom sheet option", "Keep emoji picker size reasonable for viewport" ], "badPractices": [ "Don't use multiple pickers too close together", "Avoid opening picker programmatically without user action", "Don't override native emoji rendering unnecessarily", "Avoid disabling search in large emoji sets" ], "notes": "Uses emoji-picker-react library with lazy loading. Automatically switches between dropdown (desktop) and bottom sheet (mobile) based on screen size.", "editorProps": { "triggerIcon": { "component": "IconPicker", "title": "Trigger Icon", "description": "* Custom trigger icon (default: emoji-smile)" }, "triggerIconSize": { "component": "NumberInput", "title": "Trigger Icon Size", "description": "* Size of the trigger icon" }, "showPlusSign": { "component": "Toggle", "title": "Show Plus Sign", "description": "* Show plus sign on trigger button", "default": true }, "tooltipText": { "component": "TextInput", "title": "Tooltip Text", "description": "* Tooltip text for the trigger button" }, "hideTooltip": { "component": "Toggle", "title": "Hide Tooltip", "description": "* Hide tooltip", "default": false }, "theme": { "component": "Select", "title": "Theme", "description": "* Theme for the emoji picker", "options": ["light", "dark", "auto"] }, "emojiStyle": { "component": "TextInput", "title": "Emoji Style", "description": "* Emoji style" }, "searchPlaceholder": { "component": "TextInput", "title": "Search Placeholder", "description": "* Search placeholder text" }, "showPreview": { "component": "Toggle", "title": "Show Preview", "description": "* Show preview of hovered emoji", "default": true }, "autoFocusSearch": { "component": "Toggle", "title": "Auto Focus Search", "description": "* Auto focus search input", "default": false }, "skinTonesDisabled": { "component": "Toggle", "title": "Skin Tones Disabled", "description": "* Disable skin tone selection", "default": false }, "categories": { "component": "TextInput", "title": "Categories", "description": "* Categories to display" }, "customEmojis": { "component": "Array", "title": "Custom Emojis", "description": "* Custom emojis to add" }, "names": { "component": "Array", "title": "Names", "required": true }, "imgUrl": { "component": "UrlInput", "title": "Img Url", "required": true } } }