{"_id":"@aivue/analytics","_rev":"4-7c6374d8ff4b7ed60538e7edd5141f4d","name":"@aivue/analytics","dist-tags":{"latest":"1.0.3"},"versions":{"1.0.0":{"name":"@aivue/analytics","version":"1.0.0","keywords":["vue","vue3","ai","analytics","insights","dashboard","monitoring","typescript"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/analytics@1.0.0","maintainers":[{"name":"aivue","email":"Reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai/tree/main/packages/analytics","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"86695ab389e0be3031c101512fe4d593d979d726","tarball":"https://registry.npmjs.org/@aivue/analytics/-/analytics-1.0.0.tgz","fileCount":8,"integrity":"sha512-lcek5J0wsUexZd3TGHzdJ9MRHEG2VovQh3sJbc1PIYLeDwhfVx8EQH1I8plwB1FU5zs6IcPhS2RRziNVz1c16Q==","signatures":[{"sig":"MEQCID9FXaEhjX2KIlxhWVCCHmXoig2U9URrhLYjCMByZz1xAiBaxPM00sf2yGMKQp+ftCZ7U4XkFsHTtkpCOjV2ezseuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74169},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dist/analytics.css":"./dist/analytics.css"},"gitHead":"0ddaba230e0f606cda774ff7bc2569bbc059c956","scripts":{"dev":"vite build --watch","lint":"eslint src --ext .ts,.vue","test":"vitest","build":"vite build && tsc --emitDeclarationOnly","clean":"rm -rf dist","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"aivue","email":"Reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/analytics"},"_npmVersion":"10.9.2","description":"AI-powered analytics and insights for Vue.js applications","directories":{},"_nodeVersion":"22.14.0","dependencies":{"chart.js":"^4.4.0","date-fns":"^3.0.0","@aivue/core":"^1.2.7","vue-chartjs":"^5.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","eslint":"^8.55.0","vitest":"^1.0.0","vue-tsc":"^1.8.0","typescript":"^5.3.0","@types/node":"^20.10.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.0.0_1748707572815_0.8853353327793245","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@aivue/analytics","version":"1.0.1","keywords":["vue","vue3","ai","analytics","insights","dashboard","monitoring","typescript"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/analytics@1.0.1","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai/tree/main/packages/analytics","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"4158c0cb2f57e1ce2733dc73ed22c3f0741faa85","tarball":"https://registry.npmjs.org/@aivue/analytics/-/analytics-1.0.1.tgz","fileCount":8,"integrity":"sha512-Wynctbw9v4pCo8ZdriLCy/yBHYvWV2wABh57RXAdQ+bpjtCK/7tXJR19hxjIxrSDMhVfguDtreei3A9UQHbe/A==","signatures":[{"sig":"MEUCIDdPG8Hg8eJ8ACkUoFP4roqKTF74qLdCHvIBdcUAto9YAiEAyGN0lupS20DsKT387l9m8LGWnjNCBnbkYu0M0tat1sc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74421},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dist/analytics.css":"./dist/analytics.css"},"gitHead":"c3a2b65fec27d25b9f1287eadf3f18abfc6e225e","scripts":{"dev":"vite build --watch","lint":"eslint src --ext .ts,.vue","test":"vitest","build":"vite build && tsc --emitDeclarationOnly","clean":"rm -rf dist","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/analytics"},"_npmVersion":"10.9.2","description":"AI-powered analytics and insights for Vue.js applications","directories":{},"_nodeVersion":"22.14.0","dependencies":{"chart.js":"^4.4.0","date-fns":"^3.0.0","@aivue/core":"^1.2.7","vue-chartjs":"^5.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","eslint":"^8.55.0","vitest":"^1.0.0","vue-tsc":"^1.8.0","typescript":"^5.3.0","@types/node":"^20.10.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.0.1_1764907528275_0.8833446274372745","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@aivue/analytics","version":"1.0.2","keywords":["vue","vue3","ai","analytics","insights","dashboard","monitoring","typescript"],"author":{"name":"reachbrt"},"license":"MIT","_id":"@aivue/analytics@1.0.2","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"homepage":"https://github.com/reachbrt/vueai/tree/main/packages/analytics","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"dist":{"shasum":"9dae9e9e15788d8ffb3eab1cc2b0618130c7371d","tarball":"https://registry.npmjs.org/@aivue/analytics/-/analytics-1.0.2.tgz","fileCount":8,"integrity":"sha512-52LN1Q+PAw7njK+S5yX/hmgYKbSk4/PIcesfOmxvkwK7P2cnoukjxVsa88mp0aM5ehds2EtKKDqrKN1/uCrUxA==","signatures":[{"sig":"MEUCIBTqHfXc+0RYZr2o3refwheemM0D9xEWzNZQf/MOmllYAiEArAJl659tL2aqj1KrJwqITZJK2qdJHXjo3TVVxp2VjRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":74319},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./dist/analytics.css":"./dist/analytics.css"},"gitHead":"2567f0769c449fe4333ccc807a82444957dc0cd3","scripts":{"dev":"vite build --watch","lint":"eslint src --ext .ts,.vue","test":"vitest","build":"vite build && tsc --emitDeclarationOnly","clean":"rm -rf dist","typecheck":"vue-tsc --noEmit"},"_npmUser":{"name":"aivue","email":"reachbrt@gmail.com"},"repository":{"url":"git+https://github.com/reachbrt/vueai.git","type":"git","directory":"packages/analytics"},"_npmVersion":"10.9.2","description":"AI-powered analytics and insights for Vue.js applications","directories":{},"_nodeVersion":"22.14.0","dependencies":{"chart.js":"^4.4.0","date-fns":"^3.0.0","@aivue/core":"^1.2.7","vue-chartjs":"^5.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.0","eslint":"^8.55.0","vitest":"^1.0.0","vue-tsc":"^1.8.0","typescript":"^5.3.0","@types/node":"^20.10.0","@vitejs/plugin-vue":"^5.0.0"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/analytics_1.0.2_1765265274876_0.7195004785857428","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@aivue/analytics","version":"1.0.3","description":"AI-powered analytics and insights for Vue.js applications","author":{"name":"reachbrt"},"license":"MIT","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./dist/analytics.css":"./dist/analytics.css"},"scripts":{"build":"vite build && tsc --emitDeclarationOnly","dev":"vite build --watch","clean":"rm -rf dist","test":"vitest","lint":"eslint src --ext .ts,.vue","typecheck":"vue-tsc --noEmit"},"keywords":["vue","vue3","ai","analytics","insights","dashboard","monitoring","typescript"],"repository":{"type":"git","url":"git+https://github.com/reachbrt/vueai.git","directory":"packages/analytics"},"homepage":"https://github.com/reachbrt/vueai/tree/main/packages/analytics","bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"peerDependencies":{"vue":"^2.6.0 || ^3.0.0"},"dependencies":{"@aivue/core":"^1.2.7","chart.js":"^4.4.0","vue-chartjs":"^5.3.0","date-fns":"^3.0.0"},"devDependencies":{"@types/node":"^20.10.0","@vitejs/plugin-vue":"^5.0.0","typescript":"^5.3.0","vite":"^5.0.0","vue-tsc":"^1.8.0","vitest":"^1.0.0","eslint":"^8.55.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@aivue/analytics@1.0.3","gitHead":"c54d7def7f2bad63a3e63881dd7ac15ba3e957a4","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-jfB5tIeZ2ddFXsxQmtl9+Bo7TLfokSCjkCG3Er3Llidzxmz9ZObyu/Q+gWQOjDf41p34IUEYYMRh0anR5/HJsQ==","shasum":"fa5f1e9b5e6bd96bc495f7c46366d86db1785372","tarball":"https://registry.npmjs.org/@aivue/analytics/-/analytics-1.0.3.tgz","fileCount":8,"unpackedSize":74329,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD4y9udQ7jErldQUQn9bR/IM+80Dnpd9yP7q+ut95yH6wIhAMNEZBzCIkhqKt4+Y+XRkFhfZCt2jDB9ix1b3I1WVRej"}]},"_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/analytics_1.0.3_1768404840168_0.7063337315797904"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-31T16:06:12.716Z","modified":"2026-01-14T15:34:00.446Z","1.0.0":"2025-05-31T16:06:13.013Z","1.0.1":"2025-12-05T04:05:28.467Z","1.0.2":"2025-12-09T07:27:55.024Z","1.0.3":"2026-01-14T15:34:00.311Z"},"bugs":{"url":"https://github.com/reachbrt/vueai/issues"},"author":{"name":"reachbrt"},"license":"MIT","homepage":"https://github.com/reachbrt/vueai/tree/main/packages/analytics","keywords":["vue","vue3","ai","analytics","insights","dashboard","monitoring","typescript"],"repository":{"type":"git","url":"git+https://github.com/reachbrt/vueai.git","directory":"packages/analytics"},"description":"AI-powered analytics and insights for Vue.js applications","maintainers":[{"name":"aivue","email":"reachbrt@gmail.com"}],"readme":"# @aivue/analytics\n\n[![npm version](https://img.shields.io/npm/v/@aivue/analytics.svg?style=flat-square)](https://www.npmjs.com/package/@aivue/analytics)\n[![npm downloads](https://img.shields.io/badge/downloads-97%2Fmonth-CB3837?style=flat-square&logo=npm)](https://www.npmjs.com/package/@aivue/analytics)\n[![Netlify Status](https://api.netlify.com/api/v1/badges/your-badge-id/deploy-status)](https://app.netlify.com/sites/aivue-demo/deploys)\n\nAI-powered analytics and insights for Vue.js applications. Track user interactions, monitor AI usage, analyze conversations, and gain valuable insights with beautiful dashboard components.\n\n## ✨ Features\n\n- 📊 **Real-time Analytics** - Track user interactions and AI usage in real-time\n- 🤖 **AI-Powered Insights** - Generate intelligent insights from your data\n- 💬 **Conversation Analytics** - Analyze chat patterns, sentiment, and topics\n- 📈 **Beautiful Dashboards** - Pre-built Vue components for data visualization\n- 🔍 **Performance Monitoring** - Track response times and error rates\n- 📱 **Responsive Design** - Works perfectly on all screen sizes\n- 🎨 **Customizable** - Flexible theming and configuration options\n- 🔒 **Privacy-First** - Local storage by default, optional server integration\n\n## 🚀 Quick Start\n\n### Installation\n\n```bash\n# npm\nnpm install @aivue/analytics @aivue/core\n\n# yarn\nyarn add @aivue/analytics @aivue/core\n\n# pnpm\npnpm add @aivue/analytics @aivue/core\n```\n\n### Basic Usage\n\n```vue\n<template>\n  <div>\n    <!-- Analytics Dashboard -->\n    <AiAnalyticsDashboard \n      :ai-client=\"aiClient\"\n      :show-conversation-analytics=\"true\"\n    />\n    \n    <!-- Track interactions automatically -->\n    <button v-analytics=\"{ component: 'my-app', action: 'click' }\">\n      Click me\n    </button>\n  </div>\n</template>\n\n<script setup>\nimport { AiAnalyticsDashboard, useAnalytics, vAnalytics } from '@aivue/analytics';\nimport { AIClient } from '@aivue/core';\n\n// Create AI client\nconst aiClient = new AIClient({\n  provider: 'openai',\n  apiKey: import.meta.env.VITE_OPENAI_API_KEY\n});\n\n// Set up analytics\nconst analytics = useAnalytics({\n  config: {\n    enabled: true,\n    trackInteractions: true,\n    trackAIRequests: true\n  },\n  aiClient\n});\n\n// Track custom events\nanalytics.trackInteraction('my-component', 'user-action', { value: 'test' });\n</script>\n```\n\n## 📦 Components\n\n### AiAnalyticsDashboard\n\nA comprehensive analytics dashboard with metrics, charts, and insights.\n\n```vue\n<template>\n  <AiAnalyticsDashboard \n    :ai-client=\"aiClient\"\n    :show-conversation-analytics=\"true\"\n  />\n</template>\n```\n\n**Props:**\n- `aiClient` - AIClient instance for generating insights\n- `showConversationAnalytics` - Show conversation analytics section\n\n### AiUsageChart\n\nInteractive charts for visualizing usage data.\n\n```vue\n<template>\n  <AiUsageChart \n    :data=\"chartData\"\n    type=\"line\"\n    :height=\"300\"\n  />\n</template>\n```\n\n**Props:**\n- `data` - Chart data object\n- `type` - Chart type ('line' | 'bar')\n- `height` - Chart height in pixels\n\n### AiConversationInsights\n\nDetailed conversation analytics and insights.\n\n```vue\n<template>\n  <AiConversationInsights \n    :analytics=\"conversationAnalytics\"\n    :show-summary=\"true\"\n  />\n</template>\n```\n\n**Props:**\n- `analytics` - Conversation analytics data\n- `showSummary` - Show insights summary section\n\n## 🔧 Composables\n\n### useAnalytics\n\nMain composable for analytics functionality.\n\n```typescript\nimport { useAnalytics } from '@aivue/analytics';\n\nconst analytics = useAnalytics({\n  config: {\n    enabled: true,\n    trackInteractions: true,\n    trackAIRequests: true,\n    trackPerformance: true,\n    trackErrors: true,\n    sampleRate: 1.0,\n    storage: 'localStorage',\n    batchSize: 50,\n    flushInterval: 30000\n  },\n  aiClient\n});\n\n// Track events\nanalytics.trackInteraction('component', 'action', data);\nanalytics.trackAIRequest('openai', 'gpt-4', 'prompt', 'req-id');\nanalytics.trackAIResponse('openai', 'gpt-4', 'response', 1500, 'req-id');\nanalytics.trackError(error, context);\nanalytics.trackPerformance('response-time', 1500, 'ms');\n\n// Get metrics\nconst metrics = analytics.metrics.value;\nconst filteredEvents = analytics.getFilteredEvents(filter);\n\n// Export data\nconst jsonData = analytics.exportData('json');\nconst csvData = analytics.exportData('csv');\n\n// Generate AI insights\nconst insights = await analytics.generateInsights();\n```\n\n### useConversationAnalytics\n\nSpecialized composable for conversation analysis.\n\n```typescript\nimport { useConversationAnalytics } from '@aivue/analytics';\n\nconst conversationAnalytics = useConversationAnalytics({\n  aiClient,\n  autoAnalyze: true,\n  batchSize: 10\n});\n\n// Add conversations\nconversationAnalytics.addConversation(conversationData);\n\n// Analyze conversations\nawait conversationAnalytics.analyzeConversation('conv-id');\nawait conversationAnalytics.analyzeAllConversations();\n\n// Filter conversations\nconst topicConversations = conversationAnalytics.getConversationsByTopic('support');\nconst positiveConversations = conversationAnalytics.getConversationsBySentiment('positive');\n\n// Export data\nconst data = conversationAnalytics.exportConversations('json');\n```\n\n## 🎯 Event Tracking\n\n### Automatic Tracking\n\nUse the `v-analytics` directive for automatic interaction tracking:\n\n```vue\n<template>\n  <!-- Track clicks -->\n  <button v-analytics=\"{ component: 'header', action: 'click', value: 'menu' }\">\n    Menu\n  </button>\n  \n  <!-- Track form submissions -->\n  <form v-analytics=\"{ component: 'contact-form', action: 'submit' }\">\n    <!-- form content -->\n  </form>\n  \n  <!-- Track custom events -->\n  <div v-analytics=\"{ component: 'gallery', action: 'scroll' }\">\n    <!-- content -->\n  </div>\n</template>\n```\n\n### Manual Tracking\n\nTrack events programmatically:\n\n```typescript\n// Track user interactions\nanalytics.trackInteraction('search-box', 'search', {\n  query: 'vue analytics',\n  results: 42\n});\n\n// Track AI requests/responses\nanalytics.trackAIRequest('openai', 'gpt-4', 'Hello AI', 'req-123');\nanalytics.trackAIResponse('openai', 'gpt-4', 'Hello human!', 1200, 'req-123');\n\n// Track errors\ntry {\n  // some operation\n} catch (error) {\n  analytics.trackError(error, { component: 'data-processor' });\n}\n\n// Track performance metrics\nanalytics.trackPerformance('page-load-time', 2500, 'ms');\nanalytics.trackPerformance('api-response-time', 800, 'ms');\n```\n\n## 📊 Analytics Types\n\n### Event Types\n\n- **Interaction Events** - User clicks, form submissions, navigation\n- **AI Request Events** - API calls to AI providers\n- **AI Response Events** - AI responses with timing and quality metrics\n- **Error Events** - Application errors and exceptions\n- **Performance Events** - Timing and performance metrics\n\n### Metrics\n\n- **Usage Metrics** - Total interactions, AI requests, active users\n- **Performance Metrics** - Response times, error rates, throughput\n- **Quality Metrics** - AI response quality, user satisfaction\n- **Engagement Metrics** - Session duration, conversation length\n\n### Conversation Analytics\n\n- **Sentiment Analysis** - Positive, neutral, negative sentiment distribution\n- **Topic Analysis** - Popular discussion topics and trends\n- **Quality Analysis** - Response quality ratings and distribution\n- **Engagement Analysis** - Conversation length and user engagement\n\n## ⚙️ Configuration\n\n### Storage Options\n\n```typescript\n// Local storage (default)\nconst analytics = useAnalytics({\n  config: {\n    storage: 'localStorage'\n  }\n});\n\n// Session storage\nconst analytics = useAnalytics({\n  config: {\n    storage: 'sessionStorage'\n  }\n});\n\n// Memory storage (no persistence)\nconst analytics = useAnalytics({\n  config: {\n    storage: 'memory'\n  }\n});\n\n// Custom storage\nconst analytics = useAnalytics({\n  config: {\n    storage: 'custom',\n    customStorage: {\n      save: async (events) => {\n        // Save to your backend\n        await api.saveAnalytics(events);\n      },\n      load: async () => {\n        // Load from your backend\n        return await api.loadAnalytics();\n      },\n      clear: async () => {\n        // Clear from your backend\n        await api.clearAnalytics();\n      }\n    }\n  }\n});\n```\n\n### Sampling and Performance\n\n```typescript\nconst analytics = useAnalytics({\n  config: {\n    sampleRate: 0.1, // Track 10% of events\n    batchSize: 100, // Batch size for storage\n    flushInterval: 60000, // Flush every minute\n    enabled: process.env.NODE_ENV === 'production'\n  }\n});\n```\n\n## 🎨 Styling\n\nThe components come with beautiful default styles, but you can customize them:\n\n```css\n/* Override component styles */\n.analytics-dashboard {\n  --primary-color: #your-color;\n  --background-color: #your-bg;\n  --text-color: #your-text;\n}\n\n/* Custom chart colors */\n.usage-chart {\n  --chart-primary: #3b82f6;\n  --chart-secondary: #10b981;\n}\n```\n\n## 🔗 Integration with Other @aivue Packages\n\nAnalytics automatically integrates with other @aivue packages:\n\n```typescript\nimport { AIClient } from '@aivue/core';\nimport { AiChatWindow } from '@aivue/chatbot';\nimport { analytics } from '@aivue/analytics';\n\n// Wrap AI client for automatic tracking\nconst aiClient = analytics.wrapAIClient(new AIClient({\n  provider: 'openai',\n  apiKey: process.env.OPENAI_API_KEY\n}));\n\n// All AI requests will be automatically tracked\n```\n\n## 📱 Demo\n\nCheck out our [interactive demo](https://aivue-demo.netlify.app/analytics) to see all analytics features in action.\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/emotion-ui](https://www.npmjs.com/package/@aivue/emotion-ui)\nEmotion-aware UI components with sentiment analysis\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## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](https://github.com/reachbrt/vueai/blob/main/CONTRIBUTING.md) for details.\n\n## 📄 License\n\nMIT License - see [LICENSE](https://github.com/reachbrt/vueai/blob/main/LICENSE) for details.\n\n## 🆘 Support\n\n- 📖 [Documentation](https://github.com/reachbrt/vueai/wiki)\n- 💬 [Discussions](https://github.com/reachbrt/vueai/discussions)\n- 🐛 [Issues](https://github.com/reachbrt/vueai/issues)\n- 📧 [Email Support](mailto:support@aivue.dev)\n","readmeFilename":"README.md"}