{"_id":"@aivue/emotion-ui","_rev":"5-1724c02a9e1ffc851a0a4aca1bfa8edd","name":"@aivue/emotion-ui","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@aivue/emotion-ui","version":"1.0.0","keywords":["vue","ai","emotion","sentiment","ux","adaptive-ui","emotion-detection","sentiment-analysis","voice-analysis","facial-recognition","user-experience","ui","components"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/emotion-ui@1.0.0","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai#readme","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"eae6c73a962dff7a849389254d2da4a32cdd6c09","tarball":"https://registry.npmjs.org/@aivue/emotion-ui/-/emotion-ui-1.0.0.tgz","fileCount":25,"integrity":"sha512-YlFcVXv5ZqVqOAAtlZCXAW8YmHwQ8d0SNPjmmCbegmz6cxEbTQoQZrRVmas5yRuc+tch7Gk0fk7jJjxrLz3QYQ==","signatures":[{"sig":"MEYCIQDkHFA3ZPjcSQZ9n1oK1UXAR1LC9Xvu7ypcRAP0S8fjIQIhAJhscYP8KJqo8yd0nR4Xw4dk702/pOfhlge2Qw2I4CfE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124432},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./style.css":"./dist/emotion-ui.css","./components/*":{"import":"./dist/components/*","require":"./dist/components/*"}},"gitHead":"6707349145ca865849403aeeb8b7241ca5fc5713","scripts":{"dev":"vite --watch","lint":"eslint \"src/**/*.{ts,vue}\"","test":"vitest run","build":"npm run clean && vite build && npm run postbuild","clean":"rm -rf dist","postbuild":"cp -r src/components dist/components && cp -r src/composables dist/composables && cp -r src/utils dist/utils && cp README.md dist/ && cp CHANGELOG.md dist/ 2>/dev/null || true","test:watch":"vitest"},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/emotion-ui"},"_npmVersion":"10.9.2","description":"Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","eslint":"^8.56.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.16.0","vite-plugin-dts":"^3.7.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^2.6.0 || ^3.0.0","@aivue/core":"^1.3.2"},"_npmOperationalInternal":{"tmp":"tmp/emotion-ui_1.0.0_1764897837000_0.7310075055107317","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aivue/emotion-ui","version":"1.0.1","keywords":["vue","ai","emotion","sentiment","ux","adaptive-ui","emotion-detection","sentiment-analysis","voice-analysis","facial-recognition","user-experience","ui","components"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/emotion-ui@1.0.1","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai#readme","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"112ff5ad8bd6aa5e7d28bdbf343b7728d21bf298","tarball":"https://registry.npmjs.org/@aivue/emotion-ui/-/emotion-ui-1.0.1.tgz","fileCount":25,"integrity":"sha512-2er1MUGPlm2fVUoro/9uGNItwT7E0ZYi3eUmqCzvEZovYB9KQhxme98ebe2Rwr3o5vv11O2yr4Qtbi3no5D98g==","signatures":[{"sig":"MEUCIAXIg/TW8exT6oP40XOgP3+53Y8elw/HlX64ykcQsLH0AiEA0ekFMigqUWvHd/3tommmZBOAafuIGVdZ8axI2KFKlqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124486},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./style.css":"./dist/emotion-ui.css","./components/*":{"import":"./dist/components/*","require":"./dist/components/*"},"./dist/emotion-ui.css":"./dist/emotion-ui.css"},"gitHead":"6707349145ca865849403aeeb8b7241ca5fc5713","scripts":{"dev":"vite --watch","lint":"eslint \"src/**/*.{ts,vue}\"","test":"vitest run","build":"npm run clean && vite build && npm run postbuild","clean":"rm -rf dist","postbuild":"cp -r src/components dist/components && cp -r src/composables dist/composables && cp -r src/utils dist/utils && cp README.md dist/ && cp CHANGELOG.md dist/ 2>/dev/null || true","test:watch":"vitest"},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/emotion-ui"},"_npmVersion":"10.9.2","description":"Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","eslint":"^8.56.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.16.0","vite-plugin-dts":"^3.7.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^2.6.0 || ^3.0.0","@aivue/core":"^1.3.2"},"_npmOperationalInternal":{"tmp":"tmp/emotion-ui_1.0.1_1764899876659_0.1293266457601261","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aivue/emotion-ui","version":"1.0.2","keywords":["vue","ai","emotion","sentiment","ux","adaptive-ui","emotion-detection","sentiment-analysis","voice-analysis","facial-recognition","user-experience","ui","components"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/emotion-ui@1.0.2","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai#readme","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"ccd8bcacca589c3feb5574b2753bf0d1951c082a","tarball":"https://registry.npmjs.org/@aivue/emotion-ui/-/emotion-ui-1.0.2.tgz","fileCount":25,"integrity":"sha512-njBv/YHWrVwefvqPadI1bZY87Ijgbc2+yk2drz1b0H+gcVHADDGrcwbeQU0h3/3z1CYZQNBBWIpZSJM+d1+KiA==","signatures":[{"sig":"MEUCIEUT2B3qmjI19NENabK4MRPiZrvMmLv1vut3HzGaIoNqAiEA0xuCzaQM3zKjHsms6G7674jfpbcgBeoaMRMrsCkVWfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125862},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./style.css":"./dist/emotion-ui.css","./components/*":{"import":"./dist/components/*","require":"./dist/components/*"},"./dist/emotion-ui.css":"./dist/emotion-ui.css"},"gitHead":"c3a2b65fec27d25b9f1287eadf3f18abfc6e225e","scripts":{"dev":"vite --watch","lint":"eslint \"src/**/*.{ts,vue}\"","test":"vitest run","build":"npm run clean && vite build && npm run postbuild","clean":"rm -rf dist","postbuild":"cp -r src/components dist/components && cp -r src/composables dist/composables && cp -r src/utils dist/utils && cp README.md dist/ && cp CHANGELOG.md dist/ 2>/dev/null || true","test:watch":"vitest"},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/emotion-ui"},"_npmVersion":"10.9.2","description":"Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","eslint":"^8.56.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.16.0","vite-plugin-dts":"^3.7.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^2.6.0 || ^3.0.0","@aivue/core":"^1.3.2"},"_npmOperationalInternal":{"tmp":"tmp/emotion-ui_1.0.2_1764907555379_0.9076910396528894","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aivue/emotion-ui","version":"1.0.3","keywords":["vue","ai","emotion","sentiment","ux","adaptive-ui","emotion-detection","sentiment-analysis","voice-analysis","facial-recognition","user-experience","ui","components"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/emotion-ui@1.0.3","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai#readme","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"c9f6880cd414915c5661a78b3be034da0860d8d6","tarball":"https://registry.npmjs.org/@aivue/emotion-ui/-/emotion-ui-1.0.3.tgz","fileCount":25,"integrity":"sha512-Q3V1PER3D/u9lC9ZbcJIstIPlvUO5ap6VJwNuY0P268NgMZ5wdjVf+IdX8upPqhApqSEhDdVtjCgvoOHKldbYQ==","signatures":[{"sig":"MEUCIC9y17CLwKkoVuskfZ7IvPpRlLxxM5uhkaa+zg3MN6cFAiEAjEsxkKdkEcsrajWRNibWoYlUAy5PCMrW5wHoHh+zsqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127325},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.mjs","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./style.css":"./dist/emotion-ui.css","./components/*":{"import":"./dist/components/*","require":"./dist/components/*"},"./dist/emotion-ui.css":"./dist/emotion-ui.css"},"gitHead":"2567f0769c449fe4333ccc807a82444957dc0cd3","scripts":{"dev":"vite --watch","lint":"eslint \"src/**/*.{ts,vue}\"","test":"vitest run","build":"npm run clean && vite build && npm run postbuild","clean":"rm -rf dist","postbuild":"cp -r src/components dist/components && cp -r src/composables dist/composables && cp -r src/utils dist/utils && cp README.md dist/ && cp CHANGELOG.md dist/ 2>/dev/null || true","test:watch":"vitest"},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/emotion-ui"},"_npmVersion":"10.9.2","description":"Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns","directories":{},"_nodeVersion":"22.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vue":"^3.5.0","tsup":"^8.0.0","eslint":"^8.56.0","vitest":"^1.0.0","typescript":"^5.3.0","@types/node":"^20.16.0","vite-plugin-dts":"^3.7.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^2.6.0 || ^3.0.0","@aivue/core":"^1.3.2"},"_npmOperationalInternal":{"tmp":"tmp/emotion-ui_1.0.3_1765265256061_0.03262408504905645","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@aivue/emotion-ui","version":"1.0.4","description":"Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./style.css":"./dist/emotion-ui.css","./dist/emotion-ui.css":"./dist/emotion-ui.css","./components/*":{"import":"./dist/components/*","require":"./dist/components/*"}},"scripts":{"build":"npm run clean && vite build && npm run postbuild","dev":"vite --watch","lint":"eslint \"src/**/*.{ts,vue}\"","clean":"rm -rf dist","test":"vitest run","test:watch":"vitest","postbuild":"cp -r src/components dist/components && cp -r src/composables dist/composables && cp -r src/utils dist/utils && cp README.md dist/ && cp CHANGELOG.md dist/ 2>/dev/null || true"},"keywords":["vue","ai","emotion","sentiment","ux","adaptive-ui","emotion-detection","sentiment-analysis","voice-analysis","facial-recognition","user-experience","ui","components"],"author":{"name":"reachbrt"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/reachbrt/vueai.git","directory":"packages/emotion-ui"},"homepage":"https://github.com/reachbrt/vueai#readme","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"publishConfig":{"access":"public"},"peerDependencies":{"@aivue/core":"^1.3.2","vue":"^2.6.0 || ^3.0.0"},"devDependencies":{"@types/node":"^20.16.0","@vitejs/plugin-vue":"^5.0.0","eslint":"^8.56.0","tsup":"^8.0.0","typescript":"^5.3.0","vite-plugin-dts":"^3.7.0","vitest":"^1.0.0","vue":"^3.5.0"},"_id":"@aivue/emotion-ui@1.0.4","gitHead":"c54d7def7f2bad63a3e63881dd7ac15ba3e957a4","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-+hhiUH5D1ra5dcUpxriiMy4q5FTxgFZna9T+r30h0SQ2QvEo5DKUcwYKRlDGUEkgl2Ha+VsPRfhzrIKvxYpX5A==","shasum":"85a568c6239b98bb2dfdeb15181d4b04ac15fe7a","tarball":"https://registry.npmjs.org/@aivue/emotion-ui/-/emotion-ui-1.0.4.tgz","fileCount":25,"unpackedSize":127325,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEh1j9YT5vrV/4tkXbpa7nTAUvXbHiCrhLoPRn0hItr4AiEAm4zrnlxCNtKPb0wJX+cRITzxH5v5CsKZpKD/8EoOV8M="}]},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"directories":{},"maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/emotion-ui_1.0.4_1768404874647_0.6613535958336179"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-05T01:23:56.913Z","modified":"2026-01-14T15:34:34.894Z","1.0.0":"2025-12-05T01:23:57.160Z","1.0.1":"2025-12-05T01:57:56.798Z","1.0.2":"2025-12-05T04:05:55.506Z","1.0.3":"2025-12-09T07:27:36.203Z","1.0.4":"2026-01-14T15:34:34.781Z"},"bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"author":{"name":"reachbrt"},"license":"MIT","homepage":"https://github.com/reachbrt/vueai#readme","keywords":["vue","ai","emotion","sentiment","ux","adaptive-ui","emotion-detection","sentiment-analysis","voice-analysis","facial-recognition","user-experience","ui","components"],"repository":{"type":"git","url":"git+https://github.com/reachbrt/vueai.git","directory":"packages/emotion-ui"},"description":"Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"readme":"# @aivue/emotion-ui\n\n[![npm version](https://img.shields.io/npm/v/@aivue/emotion-ui.svg)](https://www.npmjs.com/package/@aivue/emotion-ui)\n[![npm downloads](https://img.shields.io/badge/downloads-274%2Fmonth-CB3837?style=flat-square&logo=npm)](https://www.npmjs.com/package/@aivue/emotion-ui)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Netlify Status](https://img.shields.io/netlify/5cb37fa7-9ee1-4af6-9ff4-d34ff0322ded?style=flat-square&logo=netlify)](https://aivue.netlify.app/)\n\n> Emotion-aware UI components for Vue 3 that adapt based on user sentiment detected from text, voice, and interaction patterns\n\n## ✨ Features\n\n### 🎭 Multi-Modal Emotion Detection\n- **Text Sentiment Analysis** - Detect positive, negative, neutral, frustrated, excited, or confused emotions from text input\n- **Voice Tone Analysis** - Analyze pitch, speed, and energy from voice input\n- **Typing Pattern Analysis** - Track typing speed, corrections, and pauses to detect frustration\n- **Click/Interaction Patterns** - Identify rage clicks, hesitation, and user confidence\n- **Facial Expression Detection** - Optional webcam-based emotion detection (with user permission)\n\n### 🎨 Adaptive UI Components\n- **EmotionAwareInput** - Input fields that change validation messages and styling based on user mood\n- **EmotionAwareButton** - Buttons that adjust appearance and text based on emotional context\n- **EmotionAwareNotification** - Notifications with empathetic messages adapted to user state\n- **Smart Validation** - Context-aware error messages that are gentler when users are frustrated\n- **Dynamic Placeholders** - Encouraging placeholders that adapt to emotional state\n\n### 🧠 Real-Time Emotion State Management\n- **Global Emotion Store** - Centralized emotion state management via composable\n- **Emotion History Tracking** - Track emotional journey over time\n- **Emotion Events** - Trigger interventions based on emotional state changes\n- **Confidence Scores** - Know how certain the emotion detection is\n- **Privacy-First** - All processing happens locally, no data sent to servers\n\n### 🚨 Smart Intervention System\n- **Frustration Detection** - Automatically detect when users are struggling\n- **Contextual Help** - Offer assistance when confusion is detected\n- **Positive Reinforcement** - Celebrate successes and positive moments\n- **Adaptive Error Messages** - Gentler, more helpful messages when users are frustrated\n- **UI Simplification** - Reduce complexity when stress is detected\n\n### 📊 Analytics & Insights\n- **Emotion Journey Visualization** - See how emotions change over time\n- **Friction Point Identification** - Identify where users get frustrated\n- **Confidence Tracking** - Monitor emotion detection accuracy\n- **Privacy-Compliant** - All analytics processed locally\n\n## 📦 Installation\n\n```bash\nnpm install @aivue/emotion-ui @aivue/core\n```\n\n## 🚀 Quick Start\n\n### 1. Import and Use Components\n\n```vue\n<template>\n  <div>\n    <EmotionAwareInput\n      v-model=\"username\"\n      label=\"Username\"\n      placeholder=\"Enter your username\"\n      :validation-message=\"usernameError\"\n      validation-state=\"error\"\n      help-text=\"Username must be at least 3 characters\"\n    />\n\n    <EmotionAwareButton\n      text=\"Submit\"\n      variant=\"primary\"\n      encouraging-text=\"You've got this! Submit\"\n      calming-text=\"Take your time, then submit\"\n      @click=\"handleSubmit\"\n    />\n\n    <EmotionAwareNotification\n      v-if=\"showNotification\"\n      title=\"Form submitted successfully!\"\n      type=\"success\"\n      @close=\"showNotification = false\"\n    />\n  </div>\n</template>\n\n<script setup>\nimport { ref } from 'vue';\nimport { \n  EmotionAwareInput, \n  EmotionAwareButton, \n  EmotionAwareNotification \n} from '@aivue/emotion-ui';\nimport '@aivue/emotion-ui/style.css';\n\nconst username = ref('');\nconst usernameError = ref('');\nconst showNotification = ref(false);\n\nconst handleSubmit = () => {\n  if (username.value.length < 3) {\n    usernameError.value = 'Username is too short';\n  } else {\n    showNotification.value = true;\n  }\n};\n</script>\n```\n\n### 2. Use Emotion Store\n\n```vue\n<script setup>\nimport { useEmotionStore } from '@aivue/emotion-ui';\n\nconst emotionStore = useEmotionStore();\n\n// Access current emotion\nconsole.log(emotionStore.currentEmotion.value);\n\n// Listen for emotion events\nemotionStore.onEmotionEvent((event) => {\n  if (event.type === 'frustration') {\n    console.log('User is frustrated!', event);\n    // Show help dialog, simplify UI, etc.\n  }\n});\n\n// Get emotion history\nconst recentEmotions = emotionStore.getEmotionHistory(5); // Last 5 minutes\n\n// Get dominant emotion\nconst dominant = emotionStore.getDominantEmotion(10); // Last 10 minutes\n</script>\n```\n\n### 3. Manual Emotion Detection\n\n```javascript\nimport { \n  analyzeSentiment,\n  analyzeVoiceTone,\n  TypingAnalyzer,\n  ClickAnalyzer\n} from '@aivue/emotion-ui';\n\n// Analyze text sentiment\nconst sentiment = analyzeSentiment('This is frustrating!');\nconsole.log(sentiment); // { emotion: 'frustrated', confidence: 0.8, ... }\n\n// Analyze voice (requires MediaStream)\nconst voiceResult = await analyzeVoiceTone(audioStream);\nconsole.log(voiceResult); // { pitch: 0.7, speed: 0.6, emotion: 'stressed', ... }\n\n// Track typing patterns\nconst typingAnalyzer = new TypingAnalyzer();\ntypingAnalyzer.start();\n// ... user types ...\nconst pattern = typingAnalyzer.getPattern();\nconsole.log(pattern); // { speed: 45, corrections: 5, emotion: 'frustrated', ... }\n```\n\n## 📚 Components\n\n### EmotionAwareInput\n\nInput field that adapts to user emotional state.\n\n**Props:**\n- `modelValue` - Input value (v-model)\n- `label` - Input label\n- `type` - Input type (default: 'text')\n- `placeholder` - Placeholder text (adapts to emotion)\n- `validationMessage` - Validation message (adapts to emotion)\n- `validationState` - 'success' | 'error' | 'warning'\n- `helpText` - Help text (shown when frustrated/confused)\n- `showEmotionIndicator` - Show emotion emoji (default: true)\n- `adaptToEmotion` - Enable emotion adaptation (default: true)\n- `analyzeTyping` - Analyze typing patterns (default: true)\n\n**Events:**\n- `update:modelValue` - Emitted when value changes\n- `emotion-detected` - Emitted when emotion is detected from text\n\n**Example:**\n```vue\n<EmotionAwareInput\n  v-model=\"email\"\n  label=\"Email Address\"\n  type=\"email\"\n  placeholder=\"your@email.com\"\n  validation-message=\"Please enter a valid email\"\n  validation-state=\"error\"\n  help-text=\"We'll never share your email\"\n  :show-emotion-indicator=\"true\"\n/>\n```\n\n### EmotionAwareButton\n\nButton that adapts text and styling based on emotional context.\n\n**Props:**\n- `text` - Button text (default: 'Submit')\n- `variant` - 'primary' | 'secondary' | 'success' | 'danger'\n- `disabled` - Disable button\n- `loading` - Show loading state\n- `showEmotionIcon` - Show emotion icon (default: false)\n- `adaptToEmotion` - Enable emotion adaptation (default: true)\n- `encouragingText` - Text to show when user is positive\n- `calmingText` - Text to show when user is frustrated\n\n**Events:**\n- `click` - Emitted when button is clicked\n\n### EmotionAwareNotification\n\nNotification that adapts tone based on user emotion.\n\n**Props:**\n- `title` - Notification title\n- `message` - Notification message\n- `type` - 'info' | 'success' | 'warning' | 'error'\n- `duration` - Auto-close duration in ms (default: 5000)\n- `adaptToEmotion` - Enable emotion adaptation (default: true)\n\n**Events:**\n- `close` - Emitted when notification is closed\n\n## 🎯 Emotion Store API\n\n### Methods\n\n- `updateFromText(sentiment)` - Update emotion from text sentiment\n- `updateFromVoice(voice)` - Update emotion from voice analysis\n- `updateFromTyping(pattern)` - Update emotion from typing pattern\n- `updateFromClicks(pattern)` - Update emotion from click pattern\n- `updateFromFacial(expression)` - Update emotion from facial expression\n- `onEmotionEvent(callback)` - Register callback for emotion events\n- `getEmotionHistory(minutes)` - Get emotion history for time period\n- `getDominantEmotion(minutes)` - Get dominant emotion over time\n- `clearHistory()` - Clear emotion history\n- `reset()` - Reset to neutral state\n\n## 🔒 Privacy\n\nAll emotion detection happens **locally in the browser**. No data is sent to external servers.\n\n## 📦 Related Packages\n\nExplore the complete @aivue ecosystem:\n\n### 🧠 [@aivue/core](https://www.npmjs.com/package/@aivue/core)\nCore AI functionality for Vue.js components\n\n### 💬 [@aivue/chatbot](https://www.npmjs.com/package/@aivue/chatbot)\nAI-powered chat components for Vue.js\n\n### ✨ [@aivue/autosuggest](https://www.npmjs.com/package/@aivue/autosuggest)\nAI-powered suggestion components for Vue.js\n\n### 📝 [@aivue/smartform](https://www.npmjs.com/package/@aivue/smartform)\nAI-powered form validation for Vue.js\n\n### 📄 [@aivue/doc-intelligence](https://www.npmjs.com/package/@aivue/doc-intelligence)\nDocument processing and OCR with AI\n\n### 🧠 [@aivue/predictive-input](https://www.npmjs.com/package/@aivue/predictive-input)\nAI-powered predictive text input\n\n### 🔔 [@aivue/smart-notify](https://www.npmjs.com/package/@aivue/smart-notify)\nIntelligent notification system\n\n### 🎤 [@aivue/voice-actions](https://www.npmjs.com/package/@aivue/voice-actions)\nVoice command integration\n\n### 📋 [@aivue/smart-datatable](https://www.npmjs.com/package/@aivue/smart-datatable)\nAdvanced data table components\n\n### 🖼️ [@aivue/image-caption](https://www.npmjs.com/package/@aivue/image-caption)\nAI-powered image captioning with OpenAI Vision models\n\n### 📊 [@aivue/analytics](https://www.npmjs.com/package/@aivue/analytics)\nAI-powered analytics and insights\n\n## 📄 License\n\nMIT © [reachbrt](https://github.com/reachbrt)\n\n## 🔗 Links\n\n- [Documentation](https://github.com/reachbrt/vueai#readme)\n- [Demo](https://aivue.netlify.app/)\n- [NPM Package](https://www.npmjs.com/package/@aivue/emotion-ui)\n- [GitHub](https://github.com/reachbrt/vueai)\n- [Issues](https://github.com/reachbrt/vueai/issues)\n","readmeFilename":"README.md"}