{"_id":"@composy/announcement-vue","name":"@composy/announcement-vue","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@composy/announcement-vue","version":"0.0.1","description":"Vue components for @composy/announcement-core","keywords":["announcement","vue","vue3","vue2","component"],"author":{"name":"LDesign Team"},"license":"MIT","type":"module","sideEffects":["*.vue","*.tsx","*.jsx","dist/*","es/**/style/**","esm/**/style/**"],"exports":{".":{"types":"./es/index.d.ts","import":"./es/index.js","require":"./lib/index.cjs","default":"./es/index.js"},"./composables/*":{"types":"./es/composables/*.d.ts","import":"./es/composables/*.js","require":"./lib/composables/*.cjs","default":"./es/composables/*.js"},"./plugins/*":{"types":"./es/plugins/*.d.ts","import":"./es/plugins/*.js","require":"./lib/plugins/*.cjs","default":"./es/plugins/*.js"},"./index.css":"./dist/index.css","./index.min.css":"./dist/index.min.css","./style/index.css":"./lib/style/index.css","./style/index.less":"./es/style/index.less","./package.json":"./package.json"},"main":"./lib/index.cjs","module":"./es/index.js","types":"./es/index.d.ts","unpkg":"./dist/index.min.js","jsdelivr":"./dist/index.min.js","scripts":{"build":"ldesign-builder build","dev":"ldesign-builder build --watch","lint":"eslint . --cache","lint:check":"eslint . --cache --max-warnings 0","lint:fix":"eslint . --cache --fix","test":"ltesting run:unit","test:coverage":"ltesting run:unit --coverage","test:watch":"ltesting run:unit --watch","test:run":"ltesting run:unit","test:changed":"ltesting run:unit --changed","test:failed":"ltesting run:unit --failed","test:ui":"ltesting dashboard"},"dependencies":{"@composy/announcement-core":"^0.0.1","vue-demi":"^0.14.10"},"peerDependencies":{"vue":"^2.7.0 || ^3.5.32"},"devDependencies":{"@antfu/eslint-config":"9.1.0","@composy/builder":"^0.0.1","@composy/testing":"^0.0.1","@vue/test-utils":"^2.4.11","eslint":"10.7.0","fast-check":"^4.9.0","jsdom":"29.1.1","typescript":"5.9.3","vite":"^8.1.4","vue":"3.5.39","vue-tsc":"^3.3.7"},"publishConfig":{"registry":"http://npm.longrise.cn:6286/"},"style":"./dist/style.css","typings":"./es/index.d.ts","browser":"./dist/index.js","_id":"@composy/announcement-vue@0.0.1","_nodeVersion":"23.11.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-NdelAKFFGcvDBnHM1H4k+wVGbWwwH1PsOejJr+IUXnz7tzWR96oRv8HMZfAhfL5/GjJ1KEvum/xua/zLkUwKtw==","shasum":"d4ab23891dd37b75a2d76354300914fe7d79d904","tarball":"https://registry.npmjs.org/@composy/announcement-vue/-/announcement-vue-0.0.1.tgz","fileCount":73,"unpackedSize":351477,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHHkFBJEp5x8rWjYNeMxEinUIDoHaD3lpsSSZgPqRPM6AiAKZSlANy3VROdoRifSNLYoxZlAaXMh6TvSIOxdJHITFQ=="}]},"_npmUser":{"name":"swimly","email":"979741120@qq.com"},"directories":{},"maintainers":[{"name":"swimly","email":"979741120@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/announcement-vue_0.0.1_1786948965273_0.6968687266182227"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-17T06:42:45.117Z","0.0.1":"2026-08-17T06:42:45.398Z","modified":"2026-08-17T06:42:45.659Z"},"maintainers":[{"name":"swimly","email":"979741120@qq.com"}],"description":"Vue components for @composy/announcement-core","keywords":["announcement","vue","vue3","vue2","component"],"author":{"name":"LDesign Team"},"license":"MIT","readme":"# @composy/announcement-vue\n\nVue adapter components and composables for `@composy/announcement-core`.\n\n## Features\n\n- `AnnouncementBoard`, `AnnouncementMarquee` and `AnnouncementModal` Vue components\n- `useAnnouncementBoard()`, `useAnnouncementMarquee()` and `useAnnouncementModal()` composables\n- `AnnouncementPlugin` for global component registration\n- Runtime `theme` and `themeTokens` updates without unnecessary instance recreation\n- Uses the core `ldesign-announcement-*` class naming and `--ldesign-announcement-*` CSS variables\n- Build output matches the LDesign library convention: `dist`, `es`, `esm`, `lib`\n\n## Install\n\n```bash\npnpm add @composy/announcement-core @composy/announcement-vue vue\n```\n\n## Component Usage\n\n```vue\n<template>\n  <AnnouncementBoard\n    :announcements=\"announcements\"\n    show-summary\n    theme=\"system\"\n    @read=\"handleRead\"\n    @page-change=\"handlePageChange\"\n  />\n\n  <AnnouncementMarquee\n    :announcements=\"announcements\"\n    separator=\" | \"\n    @click=\"openAnnouncement\"\n  />\n\n  <AnnouncementModal\n    v-if=\"activeAnnouncement\"\n    v-model=\"modalVisible\"\n    :announcement=\"activeAnnouncement\"\n    :theme-tokens=\"themeTokens\"\n  />\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport {\n  AnnouncementBoard,\n  AnnouncementMarquee,\n  AnnouncementModal,\n  type Announcement,\n  type ThemeTokenOverrides,\n} from '@composy/announcement-vue';\n\nconst announcements = ref<Announcement[]>([]);\nconst modalVisible = ref(false);\nconst activeAnnouncement = ref<Announcement | null>(null);\n\nconst themeTokens: ThemeTokenOverrides = {\n  light: {\n    colorPrimary: 'var(--color-primary-default)',\n    spacingLg: 'var(--size-spacing-xl)',\n  },\n};\n\nfunction handleRead(announcement: Announcement) {\n  console.log('read', announcement.id);\n}\n\nfunction handlePageChange(page: number) {\n  console.log('page', page);\n}\n\nfunction openAnnouncement(announcement: Announcement) {\n  activeAnnouncement.value = announcement;\n  modalVisible.value = true;\n}\n</script>\n```\n\n## Composables\n\n```ts\nimport { useAnnouncementBoard } from '@composy/announcement-vue';\n\nconst {\n  create,\n  setAnnouncements,\n  setTheme,\n  setThemeTokens,\n  markAllAsRead,\n  unreadCount,\n} = useAnnouncementBoard();\n\ncreate(container, {\n  announcements,\n  showSummary: true,\n});\n\nsetTheme('dark');\nsetThemeTokens({ colorPrimary: 'var(--color-primary-default)' });\nmarkAllAsRead();\n```\n\n## Plugin\n\n```ts\nimport { createApp } from 'vue';\nimport { AnnouncementPlugin } from '@composy/announcement-vue';\n\ncreateApp(App).use(AnnouncementPlugin);\n```\n\n## Dependencies\n\n- `@composy/announcement-core`\n- `vue-demi`\n- peer `vue`: `^2.7.0 || ^3.5.32`\n\n## Build Output\n\n`ldesign-builder build` generates:\n\n- `dist/`: UMD bundle and CSS\n- `es/`: ESM entry, CSS helper and declarations\n- `esm/`: ESM mirror\n- `lib/`: CommonJS entry and declarations\n\n## Commands\n\n```bash\npnpm --filter @composy/announcement-vue build\n```\n\nFor explicit Vue type checking, use `vue-tsc` 3.x with TypeScript 5.9:\n\n```bash\nvue-tsc -p tsconfig.json --noEmit\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-3191b2de21cd61c3d7b905ec3d6092ff"}