{"_id":"@elowen/elowen-ui","_rev":"2-bb279ebfa828f6031697e60195c25179","name":"@elowen/elowen-ui","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@elowen/elowen-ui","version":"0.1.0","keywords":["vue","vue3","component-library","ui","typescript","vite","vitepress"],"author":{"name":"elowen"},"license":"MIT","_id":"@elowen/elowen-ui@0.1.0","maintainers":[{"name":"elowen","email":"3916048194@qq.com"}],"homepage":"https://github.com/yuanran32/ElowenUI","bugs":{"url":"https://github.com/yuanran32/ElowenUI/issues"},"dist":{"shasum":"6da355e344bc9c022eb89eab89ebaef7400af28b","tarball":"https://registry.npmjs.org/@elowen/elowen-ui/-/elowen-ui-0.1.0.tgz","fileCount":55,"integrity":"sha512-pWxLA4qZJfFj+9o6mhdCeyUoC5UhtSTp5p4J2ji88ztW62jSiVRlUhJQhnm9NHg0lOO43tKqF+Msf/RbiHV3rA==","signatures":[{"sig":"MEYCIQCAvvUWc8Xp5WYfhQNSIdGMA2XdsOd4A4GdXN6ciXv9OAIhALKZIDVywSqMl9ZzgbusMpc9uSMaFISDbQzwR4SVgC1p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":183453},"main":"./dist/index.js","type":"module","types":"./dist/types/elowen-ui/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0","pnpm":">=10.0.0"},"exports":{".":{"types":"./dist/types/elowen-ui/index.d.ts","import":"./dist/index.js"},"./style.css":"./dist/style.css","./components":{"types":"./dist/types/components/index.d.ts","import":"./dist/index.js"}},"gitHead":"efc2a15bf4f84902f71e3cb3f11222402766b5ac","scripts":{"dev":"pnpm -C play dev","test":"vitest run","build":"vite build","docs:dev":"vitepress dev docs","typecheck":"vue-tsc --noEmit -p tsconfig.json","docs:build":"vitepress build docs","test:watch":"vitest","docs:preview":"vitepress preview docs","prepublishOnly":"pnpm typecheck && pnpm test && pnpm build"},"_npmUser":{"name":"elowen","email":"3916048194@qq.com"},"repository":{"url":"git+https://github.com/yuanran32/ElowenUI.git","type":"git"},"_npmVersion":"11.6.2","description":"A lightweight Vue 3 component library with docs, playground demos, typed APIs and build output.","directories":{},"sideEffects":["**/*.css"],"_nodeVersion":"24.11.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vue":"^3.5.13","vite":"^5.4.19","jsdom":"^26.1.0","vitest":"^2.1.9","vue-tsc":"^2.2.4","vitepress":"^1.6.4","typescript":"^5.6.3","@types/node":"^22.15.17","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^5.2.4"},"peerDependencies":{"vue":"^3.5.0"},"_npmOperationalInternal":{"tmp":"tmp/elowen-ui_0.1.0_1777271587481_0.9366851246851049","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@elowen/elowen-ui","version":"0.2.0","type":"module","description":"A lightweight Vue 3 component library with docs, playground demos, typed APIs and build output.","author":{"name":"elowen"},"license":"MIT","keywords":["vue","vue3","component-library","ui","typescript","vite","vitepress"],"homepage":"https://github.com/yuanran32/ElowenUI","repository":{"type":"git","url":"git+https://github.com/yuanran32/ElowenUI.git"},"bugs":{"url":"https://github.com/yuanran32/ElowenUI/issues"},"engines":{"node":">=18.0.0","pnpm":">=10.0.0"},"sideEffects":["**/*.css"],"main":"./dist/index.js","module":"./dist/index.js","types":"./dist/types/elowen-ui/index.d.ts","exports":{".":{"types":"./dist/types/elowen-ui/index.d.ts","import":"./dist/index.js"},"./style.css":"./dist/style.css","./components":{"types":"./dist/types/components/index.d.ts","import":"./dist/components/index.js"},"./components/alert":{"types":"./dist/types/components/alert/index.d.ts","import":"./dist/components/alert/index.js"},"./components/button":{"types":"./dist/types/components/button/index.d.ts","import":"./dist/components/button/index.js"},"./components/card":{"types":"./dist/types/components/card/index.d.ts","import":"./dist/components/card/index.js"},"./components/dialog":{"types":"./dist/types/components/dialog/index.d.ts","import":"./dist/components/dialog/index.js"},"./components/divider":{"types":"./dist/types/components/divider/index.d.ts","import":"./dist/components/divider/index.js"},"./components/form":{"types":"./dist/types/components/form/index.d.ts","import":"./dist/components/form/index.js"},"./components/input":{"types":"./dist/types/components/input/index.d.ts","import":"./dist/components/input/index.js"},"./components/pro-table":{"types":"./dist/types/components/pro-table/index.d.ts","import":"./dist/components/pro-table/index.js"},"./components/schema-form":{"types":"./dist/types/components/schema-form/index.d.ts","import":"./dist/components/schema-form/index.js"},"./components/select":{"types":"./dist/types/components/select/index.d.ts","import":"./dist/components/select/index.js"},"./components/table":{"types":"./dist/types/components/table/index.d.ts","import":"./dist/components/table/index.js"},"./components/tag":{"types":"./dist/types/components/tag/index.d.ts","import":"./dist/components/tag/index.js"}},"publishConfig":{"access":"public"},"peerDependencies":{"vue":"^3.5.0"},"devDependencies":{"@changesets/cli":"^2.31.0","@types/node":"^22.15.17","@vitejs/plugin-vue":"^5.2.4","@vitest/coverage-v8":"^2.1.9","@vue/test-utils":"^2.4.6","jsdom":"^26.1.0","typescript":"^5.6.3","vite":"^5.4.19","vite-plugin-dts":"^4.5.4","vitepress":"^1.6.4","vitest":"^2.1.9","vue":"^3.5.13","vue-tsc":"^2.2.4"},"scripts":{"dev":"pnpm -C play dev","build":"vite build","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs","test":"vitest run","test:coverage":"vitest run --coverage","test:watch":"vitest","typecheck":"vue-tsc --noEmit -p tsconfig.json","changeset":"changeset","version-packages":"changeset version","release":"changeset publish"},"_id":"@elowen/elowen-ui@0.2.0","_integrity":"sha512-SIawS83y77PXRKja9xT8MJI67ivf3OSacMKyP+r0/GiDifLR1pMbNi9JLX3Eqr+uOWD0qTm6C7tXbsRV+2VSog==","_resolved":"C:\\Users\\39160\\AppData\\Local\\Temp\\56c267aa816a87aef0a025acaa29c2cd\\elowen-elowen-ui-0.2.0.tgz","_from":"file:elowen-elowen-ui-0.2.0.tgz","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-SIawS83y77PXRKja9xT8MJI67ivf3OSacMKyP+r0/GiDifLR1pMbNi9JLX3Eqr+uOWD0qTm6C7tXbsRV+2VSog==","shasum":"578a9eb2a5c0c21e561bb0c5767be970be606c37","tarball":"https://registry.npmjs.org/@elowen/elowen-ui/-/elowen-ui-0.2.0.tgz","fileCount":81,"unpackedSize":328934,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC8sXf61i4Dnm93XtiiDaLMCjzk6cnAltysrhnwj4HoCgIhAMadgy6X9BgFxr9HM4eQ7+3w1PbPa0P+ggryYjyEqieC"}]},"_npmUser":{"name":"elowen","email":"3916048194@qq.com"},"directories":{},"maintainers":[{"name":"elowen","email":"3916048194@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elowen-ui_0.2.0_1778316993074_0.6583359101009545"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-27T06:33:07.400Z","modified":"2026-05-09T08:56:33.355Z","0.1.0":"2026-04-27T06:33:07.625Z","0.2.0":"2026-05-09T08:56:33.237Z"},"bugs":{"url":"https://github.com/yuanran32/ElowenUI/issues"},"author":{"name":"elowen"},"license":"MIT","homepage":"https://github.com/yuanran32/ElowenUI","keywords":["vue","vue3","component-library","ui","typescript","vite","vitepress"],"repository":{"type":"git","url":"git+https://github.com/yuanran32/ElowenUI.git"},"description":"A lightweight Vue 3 component library with docs, playground demos, typed APIs and build output.","maintainers":[{"name":"elowen","email":"3916048194@qq.com"}],"readme":"# ElowenUI\n\nElowenUI 是一个基于 Vue 3、TypeScript 和 Vite 构建的轻量中后台业务组件库。项目不以复刻大型通用 UI 库为目标，而是在基础组件之上提供 `SchemaForm`、`ProTable`、运行时主题 token 和类型友好的组件 API，用于降低后台系统中表单、查询、表格、弹窗等重复开发成本。\n\n## 特性\n\n- 基于 `Vue 3 + TypeScript + Vite`\n- 使用 `VitePress` 构建文档站\n- 提供 `play/` 本地 Playground\n- 提供 `SchemaForm` 配置化表单，支持输入框、文本域、选择器、自定义插槽、字段校验、联动显隐和动态禁用\n- 提供 `ProTable` 业务表格，封装搜索表单、远程请求、分页、页容量切换、服务端排序、刷新、重置、错误重试和请求状态管理\n- 提供运行时主题 API，支持主色、圆角和明暗模式切换\n- 支持整库安装和具名导出\n- 提供单元测试、覆盖率报告和类型检查\n- 接入 `GitHub Actions` 持续集成\n- 接入 `Changesets` 做版本管理和发包流程\n- 组件目录按 `view + types + composables` 方式组织\n\n## 项目定位\n\n`Element Plus` 这类组件库提供的是通用基础组件；ElowenUI 更强调中后台业务抽象：\n\n- 基础组件负责稳定交互和统一视觉。\n- `SchemaForm` 负责把表单从模板驱动变成配置驱动，并提供统一校验、字段状态和自定义字段扩展点。\n- `ProTable` 负责收敛列表页的搜索、请求、分页、排序、loading、empty、error 和重试流程。\n- 主题 token 负责让业务系统可以运行时切换品牌风格。\n\n## 当前组件\n\n| 分类 | 组件 |\n| --- | --- |\n| 基础输入 | `Button`、`Input`、`Select` |\n| 表单抽象 | `Form`、`SchemaForm` |\n| 数据展示 | `Table`、`ProTable`、`Tag` |\n| 反馈与浮层 | `Alert`、`Dialog` |\n| 布局容器 | `Card`、`Divider` |\n\n## 安装依赖\n\n```bash\npnpm install\n```\n\n## 安装组件库\n\n```bash\nnpm install @elowen/elowen-ui\n```\n\n或：\n\n```bash\npnpm add @elowen/elowen-ui\n```\n\n## 本地开发\n\n启动 Playground：\n\n```bash\npnpm dev\n```\n\n启动文档站：\n\n```bash\npnpm docs:dev\n```\n\n## 构建与检查\n\n类型检查：\n\n```bash\npnpm typecheck\n```\n\n运行测试：\n\n```bash\npnpm test\n```\n\n运行覆盖率测试：\n\n```bash\npnpm test:coverage\n```\n\n构建组件库：\n\n```bash\npnpm build\n```\n\n构建文档站：\n\n```bash\npnpm docs:build\n```\n\n## 使用方式\n\n整库安装：\n\n```ts\nimport { createApp } from 'vue'\nimport App from './App.vue'\nimport ElowenUI from '@elowen/elowen-ui'\n\ncreateApp(App).use(ElowenUI).mount('#app')\n```\n\n按需导入：\n\n```ts\nimport '@elowen/elowen-ui/style.css'\nimport {\n  MyButton,\n  MyInput,\n  MySelect,\n  MySchemaForm,\n  MyProTable,\n} from '@elowen/elowen-ui/components'\n```\n\n按组件子路径导入：\n\n```ts\nimport '@elowen/elowen-ui/style.css'\nimport { MyButton } from '@elowen/elowen-ui/components/button'\nimport { MySchemaForm } from '@elowen/elowen-ui/components/schema-form'\nimport { MyProTable } from '@elowen/elowen-ui/components/pro-table'\n```\n\n业务组件类型也会随包导出：\n\n```ts\nimport type {\n  SchemaFormField,\n  ProTableRequestParams,\n  TableColumn,\n} from '@elowen/elowen-ui'\n```\n\n## 工程流程\n\n### CI\n\n仓库内置了 `GitHub Actions` 持续集成，位于 `.github/workflows/ci.yml`。在推送到 `main/master` 或提交 PR 时会自动执行：\n\n```bash\npnpm install --frozen-lockfile\npnpm typecheck\npnpm test:coverage\npnpm build\npnpm docs:build\n```\n\n这保证了类型、测试、构建和文档构建链路都能被自动验证。\n\n### 覆盖率\n\n项目使用 `Vitest + @vitest/coverage-v8` 输出覆盖率报告，配置位于 `vitest.config.ts`。当前覆盖率会输出：\n\n- 终端摘要\n- `coverage/` HTML 报告\n- `lcov` 报告\n\n### 版本管理与发包\n\n项目使用 `Changesets` 管理版本变更和发布流程。\n\n新增一个会影响包版本的改动时，执行：\n\n```bash\npnpm changeset\n```\n\n生成的 changeset 文件会放在 `.changeset/` 目录。仓库中的 release workflow 位于 `.github/workflows/release.yml`，推送到 `main/master` 后会：\n\n- 检查是否存在待发布的 changeset\n- 自动创建版本 PR\n- 合并版本 PR 后调用 `pnpm release` 发包\n\n如果要让 GitHub Actions 真正发布 npm 包，需要在仓库的 `Settings -> Secrets and variables -> Actions` 中配置：\n\n- `NPM_TOKEN`\n\n## 项目结构\n\n```txt\npackages/\n  components/   # 组件源码、测试、类型定义、组合式逻辑\n  elowen-ui/    # 组件库入口与 installer\n  theme/        # 主题变量与基础样式\n  utils/        # 通用工具\ndocs/           # VitePress 文档站\nplay/           # 本地 Playground\ndist/           # 构建产物\n.changeset/     # Changesets 版本变更记录\n.github/        # CI / Release 工作流\n```\n\n## 发布前检查\n\n正式发包前建议至少确认：\n\n```bash\npnpm typecheck\npnpm test:coverage\npnpm build\npnpm docs:build\npnpm exec changeset status\n```\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}