niuma-ui 2.0.1 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.en.md +1 -118
  3. package/README.md +60 -62
  4. package/README.zh-CN.md +130 -0
  5. package/dist/components/_shared/src/reka.d.ts +1 -1
  6. package/dist/components/_shared/src/reka.js +2 -2
  7. package/dist/components/avatar/src/RsAvatar.impl.js +1 -1
  8. package/dist/components/badge/index.d.ts +1 -0
  9. package/dist/components/badge/src/RsBadge.css +61 -8
  10. package/dist/components/badge/src/RsBadge.d.ts +19 -3
  11. package/dist/components/badge/src/RsBadge.impl.js +46 -3
  12. package/dist/components/badge/src/RsBadge.js +1 -1
  13. package/dist/components/badge/src/badge-utils.d.ts +11 -0
  14. package/dist/components/badge/src/badge-utils.js +32 -0
  15. package/dist/components/button/src/RsButton.css +87 -71
  16. package/dist/components/button/src/RsButton.d.ts +7 -3
  17. package/dist/components/button/src/RsButton.impl.js +43 -31
  18. package/dist/components/button/src/RsButton.js +1 -1
  19. package/dist/components/button/src/button-utils.d.ts +17 -0
  20. package/dist/components/button/src/button-utils.js +14 -1
  21. package/dist/components/card/src/RsCard.impl.js +1 -1
  22. package/dist/components/cascader/src/RsCascader.d.ts +1 -1
  23. package/dist/components/config-provider/src/RsConfigProvider.css +1 -1
  24. package/dist/components/config-provider/src/RsConfigProvider.d.ts +2 -3
  25. package/dist/components/config-provider/src/RsConfigProvider.impl.js +20 -11
  26. package/dist/components/config-provider/src/RsConfigProvider.js +1 -1
  27. package/dist/components/context-menu/src/RsContextMenuItems.impl.js +1 -1
  28. package/dist/components/date-picker/src/RsDatePicker.impl.js +1 -1
  29. package/dist/components/dialog/src/RsConfirmDialog.impl.js +1 -1
  30. package/dist/components/dialog/src/RsDialog.impl.js +1 -1
  31. package/dist/components/divider/index.d.ts +1 -0
  32. package/dist/components/divider/src/RsDivider.css +37 -22
  33. package/dist/components/divider/src/RsDivider.d.ts +4 -2
  34. package/dist/components/divider/src/RsDivider.impl.js +26 -12
  35. package/dist/components/divider/src/RsDivider.js +1 -1
  36. package/dist/components/divider/src/divider-utils.d.ts +4 -0
  37. package/dist/components/drawer/src/RsDrawer.impl.js +1 -1
  38. package/dist/components/dropdown/src/RsDropdown.impl.js +1 -1
  39. package/dist/components/dynamic-tags/src/RsDynamicTags.css +23 -23
  40. package/dist/components/dynamic-tags/src/RsDynamicTags.d.ts +1 -1
  41. package/dist/components/dynamic-tags/src/RsDynamicTags.js +1 -1
  42. package/dist/components/form/src/form-rules.js +2 -2
  43. package/dist/components/icon/src/RsIcon.css +9 -4
  44. package/dist/components/icon/src/RsIcon.d.ts +4 -3
  45. package/dist/components/icon/src/RsIcon.impl.js +9 -32
  46. package/dist/components/icon/src/RsIcon.js +1 -1
  47. package/dist/components/icon/src/icon-utils.d.ts +17 -0
  48. package/dist/components/icon/src/icon-utils.js +39 -0
  49. package/dist/components/input/src/input-rules.js +3 -3
  50. package/dist/components/link/index.d.ts +1 -0
  51. package/dist/components/link/src/RsLink.css +58 -17
  52. package/dist/components/link/src/RsLink.d.ts +12 -4
  53. package/dist/components/link/src/RsLink.impl.js +26 -25
  54. package/dist/components/link/src/RsLink.js +2 -1
  55. package/dist/components/link/src/link-utils.d.ts +9 -0
  56. package/dist/components/link/src/link-utils.js +15 -0
  57. package/dist/components/loading/src/RsLoading.d.ts +2 -2
  58. package/dist/components/menu/src/RsMenuItems.impl.js +1 -1
  59. package/dist/components/radio/src/RsRadio.impl.js +1 -1
  60. package/dist/components/radio/src/RsRadioItem.impl.js +1 -1
  61. package/dist/components/select/src/RsSelect.impl.js +1 -1
  62. package/dist/components/switch/src/RsSwitch.impl.js +1 -1
  63. package/dist/components/tabs/src/RsTabs.impl.js +1 -1
  64. package/dist/components/tag/index.d.ts +1 -1
  65. package/dist/components/tag/src/RsTag.css +42 -38
  66. package/dist/components/tag/src/RsTag.d.ts +3 -2
  67. package/dist/components/tag/src/RsTag.impl.js +18 -9
  68. package/dist/components/tag/src/RsTag.js +1 -1
  69. package/dist/components/tag/src/tag-utils.d.ts +8 -0
  70. package/dist/components/terminal/src/RsTerminal.d.ts +1 -1
  71. package/dist/components/time-picker/src/RsTimePicker.impl.js +1 -1
  72. package/dist/components/tooltip/src/RsTooltip.impl.js +1 -1
  73. package/dist/composables/createRsDialog.js +3 -3
  74. package/dist/composables/useRsConfig.js +2 -2
  75. package/dist/composables/useRsI18n.d.ts +1 -1
  76. package/dist/composables/useRsI18n.js +3 -3
  77. package/dist/index.d.ts +5 -1
  78. package/dist/index.js +3 -0
  79. package/dist/locale/interpolate.js +15 -3
  80. package/dist/locale/messages.d.ts +2 -0
  81. package/dist/locale/messages.js +3 -1
  82. package/dist/locale/registry-public.d.ts +1 -0
  83. package/dist/locale/resolve-host.d.ts +7 -0
  84. package/dist/locale/resolve-host.js +46 -0
  85. package/dist/locale/types.d.ts +2 -0
  86. package/dist/locale/types.js +2 -0
  87. package/package.json +10 -8
package/CHANGELOG.md CHANGED
@@ -6,6 +6,44 @@
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.0.3] - 2026-09-21
10
+
11
+ ### 新增
12
+
13
+ - 文档站接入 vue-i18n(`site/locales`)。顶栏切语言同步 `RsConfigProvider.locale` 与 vue-i18n,并记住上次选择。只用于 site,不进组件库依赖。
14
+ - `RsBadge`:补 `name` 与公开类型 `RsBadgeVariant`。只写 `variant` + 默认插槽时仍是原来的状态芯片。可选 `count` / `max` / `dot` / `showZero`:有插槽时为角标,无插槽时只渲染数字或点。文档站按 site README 补全 events / methods / tokens / FAQ。
15
+
16
+ ### 变更
17
+
18
+ - 文档站演示与壳层不再用 `isEn` 二分。文案按 locale 表选取(`useSiteDemo` / `pickSitePair`),缺语言回退 en-US → zh-CN;顶栏语言按 `SITE_LOCALES` 轮换。主题仍走 `resolvedTheme` / `data-rs-theme` / token。
19
+ - `RsTag`:补 `name`;关闭钮改用 `RsButton`(仍是 `.rs-tag__close`,props / `close` 语义与原来相同)。文档站按 site README 补全 events / methods / tokens(中英)。
20
+ - `RsDivider`:补 `name` 与公开类型 `RsDividerOrientation`。仍是 `div[role=separator]`,`orientation` / `dashed` / 默认插槽语义不变。文档站按 site README 补全 events / methods / tokens / FAQ(中英)。
21
+ - 文档站基础组 Avatar / Card / Container / Scrollbar:按 site README 补全中英演示、events / methods / tokens / FAQ。Scrollbar 演示可点 `scrollTop` / `getViewport`。
22
+ - `RsIcon`:补 `name`;尺寸档位与 `RS_COMPONENT_SIZE_ICON_PX` 对齐(lg 现为 18);抽 `icon-utils`;`spin` 尊重减少动态。文档站 Icon 用法与 Button 对齐(中英)。
23
+ - 文档站基础组:Button 补 `iconSize` / 原生 `click` / 事件演示;Badge–Scrollbar 按源码补全 props、事件、插槽、方法(中英)。
24
+ - `RsLink`:去掉 Reka `Primitive`,改为原生 `<a>`;补 `name`、`tone`、`icon`;样式改 scoped,并尊重减少动态。默认 `inline`(有图标才 `inline-flex`)。文档站按 site README 补 events / methods / tokens、跟正文与可感知 click。公开类型 `RsLinkTone` / `RsLinkUnderline`;helper 保持内部。不设 size / theme prop。
25
+
26
+ ### 修复
27
+
28
+ - `RsButton`:补 `name`,loading 时拦住点击;内置 tip 用自研定位,不再提 Reka。图标在按钮内为装饰,可访问名称只走 `aria-label`。
29
+ - `RsButton` 内置 tip 回到 `calc(var(--rs-z-modal) + 2)`,与 `RsTooltip` / Dialog 内浮层同一档,避免在对话框里被盖住。
30
+ - `RsButton` 幽灵:未传 `bordered` 时不再被 Vue 收成 false(与 text 撞车);hover 改为 `--rs-surface-hover` 实底,语义色再叠 14% 色相。
31
+
32
+ ## [2.0.2] - 2026-09-21
33
+
34
+ ### 变更
35
+
36
+ - 未设 `locale` 时按本机语言选择(`navigator.languages`):`zh*` → `zh-CN`,`en*` → `en-US`,已登记语言按前缀匹配。无法识别或 SSR 回退 `zh-CN`。显式传 `locale` 的应用不受影响。
37
+
38
+ ### 新增
39
+
40
+ - `t()` ICU 子集复数:`{count, plural, one {#} other {#}}`,`Intl.PluralRules`。
41
+ - `rsLocaleMessageKeys`:社区语言包 key 清单。说明见 `docs/locales.md`。
42
+ - `RsConfigProvider` 把解析后的 `dir` / `locale` 传给 Reka,Select 等浮层跟书写方向。
43
+ - 公开导出 `resolveDirMode`、`resolveHostLocale`。
44
+ - 文档站 / npm README 默认英文;中文见 `README.zh-CN.md`。
45
+ - RTL 像素回归:`/#/visual/rs-rtl`。
46
+
9
47
  ## [2.0.1] - 2026-09-21
10
48
 
11
49
  ### 变更
package/README.en.md CHANGED
@@ -1,120 +1,3 @@
1
1
  # niuma-ui
2
2
 
3
- [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)
4
- [![npm](https://img.shields.io/npm/v/niuma-ui.svg)](https://www.npmjs.com/package/niuma-ui)
5
- [![Vue 3](https://img.shields.io/badge/Vue-3.5+-42b883.svg)](https://vuejs.org/)
6
- [![Node](https://img.shields.io/badge/Node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
7
-
8
- English | [简体中文](./README.md)
9
-
10
- Vue 3 **workbench** design system: consistent `Rs*` components, `--rs-*` tokens, and optional editor / terminal wrappers.
11
-
12
- Built for ops consoles, database workbenches, and internal admin UIs. Marketing sites can use named imports. `npm install` pulls Monaco, CodeMirror, and xterm; named imports control the bundle.
13
-
14
- **Status:** [Apache License 2.0](./LICENSE) since v1.0.0. Compiled ESM on npm since v1.2.0. Current line is **2.0.0**. The `1.x` branch keeps the 1.3 line.
15
-
16
- ## Features
17
-
18
- - **Design tokens** — light / dark / system via `data-rs-theme` and CSS variables; hosts override a brand layer
19
- - **Rs\* components** — Button, Form, Dialog, Table, Tree, Tabs, Anchor, and more
20
- - **Tooling** — Monaco, CodeMirror, xterm (import only on routes that need them)
21
- - **Accessibility** — [Reka UI](https://reka-ui.com/) underneath; apps depend only on `niuma-ui`
22
- - **Vite** — `import { RsButton } from 'niuma-ui'` is enough to bundle; `niumaUiHost` is local `pnpm dev` HMR only
23
-
24
- ## Requirements
25
-
26
- | Item | Version |
27
- |------|---------|
28
- | Node.js | ≥ 20 |
29
- | Package manager | npm / pnpm / yarn (this repo develops with pnpm ≥ 9) |
30
- | Vue | ^3.5 (`peerDependency`) |
31
- | Bundler | Vite 5+ recommended; `RsMonacoEditor` needs Vite `?worker` |
32
- | Styles | `import 'niuma-ui/styles.css'` (standalone CSS, no Tailwind) |
33
-
34
- ## Install
35
-
36
- ```bash
37
- pnpm add niuma-ui
38
- # or: npm install niuma-ui / yarn add niuma-ui
39
- ```
40
-
41
- Prefer a range such as `^2.0.0`. Pin **2.0.0** for a bit-for-bit install. Use `niuma-ui@1` for the 1.x line.
42
-
43
- Local `link`, Vite plugins, and bundle size: **[Consumer guide](./docs/consumers.en.md)** ([中文](./docs/consumers.md)).
44
-
45
- ## Quick start
46
-
47
- ```ts
48
- // main.ts
49
- import { createApp } from 'vue'
50
- import 'niuma-ui/styles.css'
51
- import App from './App.vue'
52
-
53
- createApp(App).mount('#app')
54
- ```
55
-
56
- ```vue
57
- <!-- App.vue -->
58
- <script setup lang="ts">
59
- import { RsConfigProvider, RsButton } from 'niuma-ui'
60
- </script>
61
-
62
- <template>
63
- <RsConfigProvider theme="light" locale="en-US">
64
- <RsButton variant="primary">Hello</RsButton>
65
- </RsConfigProvider>
66
- </template>
67
- ```
68
-
69
- Shipped locales: `zh-CN` | `en-US`.
70
-
71
- ## Usage
72
-
73
- 1. Named-import from the package root only. **Do not** depend on `reka-ui`. Do not `import *`.
74
- 2. Import `niuma-ui/styles.css` once, then your brand CSS.
75
- 3. Wrap the app with `RsConfigProvider` (theme, locale, default control size).
76
- 4. Light sites re-export used symbols from their own `ui.ts`. Do not alias the package to this repo’s `src/index.ts`.
77
-
78
- Component APIs live on the docs site. The architecture contract is for maintainers: [components.en.md](./docs/components.en.md) ([中文](./docs/components.md)).
79
-
80
- ## Docs
81
-
82
- - **Component site:** [https://blair-shang.github.io/niuma-ui/](https://blair-shang.github.io/niuma-ui/) (source: `site/`)
83
- - Local docs: `pnpm dev:site` → http://127.0.0.1:5181
84
- - `playground/` is internal smoke / visual regression only (`pnpm dev` → :5180). It is not usage documentation.
85
-
86
- | Doc | Audience |
87
- |-----|----------|
88
- | [docs/consumers.en.md](./docs/consumers.en.md) | People installing the library ([中文](./docs/consumers.md)) |
89
- | [docs/components.en.md](./docs/components.en.md) | People changing this repository ([中文](./docs/components.md)) |
90
- | [CONTRIBUTING.en.md](./CONTRIBUTING.en.md) | PRs, tests, releases ([中文](./CONTRIBUTING.md)) |
91
- | [CHANGELOG.md](./CHANGELOG.md) | Release notes |
92
- | [SECURITY.md](./SECURITY.md) | Private vulnerability reports |
93
-
94
- ## Local development
95
-
96
- ```bash
97
- pnpm install
98
- pnpm dev:site # docs site
99
- pnpm test
100
- pnpm build # library → dist/
101
- ```
102
-
103
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full contributor flow.
104
-
105
- ## Versioning
106
-
107
- [Semantic Versioning](https://semver.org/): compatible fixes are PATCH, compatible features MINOR, breaking API or token renames MAJOR.
108
-
109
- Stable publishes set npm dist-tag **`latest`**; prereleases use **`next`**. There is no Git tag named `latest`. Release steps live only in [CONTRIBUTING.md](./CONTRIBUTING.md).
110
-
111
- ## License and credits
112
-
113
- [Apache License 2.0](./LICENSE). Attribution: [NOTICE](./NOTICE).
114
-
115
- Primitives: [Reka UI](https://reka-ui.com/). Icons: [Lucide](https://lucide.dev/). Editors: [Monaco](https://microsoft.github.io/monaco-editor/), [CodeMirror](https://codemirror.net/). Terminal: [xterm.js](https://xtermjs.org/).
116
-
117
- - Docs: https://blair-shang.github.io/niuma-ui/
118
- - npm: https://www.npmjs.com/package/niuma-ui
119
- - Source: https://github.com/Blair-Shang/niuma-ui
120
- - Issues: https://github.com/Blair-Shang/niuma-ui/issues
3
+ The English README is [README.md](./README.md). 中文:[README.zh-CN.md](./README.zh-CN.md).
package/README.md CHANGED
@@ -5,44 +5,45 @@
5
5
  [![Vue 3](https://img.shields.io/badge/Vue-3.5+-42b883.svg)](https://vuejs.org/)
6
6
  [![Node](https://img.shields.io/badge/Node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
7
7
 
8
- [English](./README.en.md) | 简体中文
8
+ English | [简体中文](./README.zh-CN.md)
9
9
 
10
- Vue 3 **工作台**设计系统:一致的 `Rs*` 组件与 `--rs-*` Token,以及按需使用的编辑器 / 终端封装。
10
+ Vue 3 **workbench** design system: consistent `Rs*` components, `--rs-*` tokens, and optional editor / terminal wrappers.
11
11
 
12
- 适用于运维控制台、数据库工作台、内部后台。营销站也可以用具名导入。`npm install` 会带上 Monaco、CodeMirror、xterm,体积靠具名导入摇树。
12
+ Built for ops consoles, database workbenches, and internal admin UIs. Marketing sites can use named imports. `npm install` pulls Monaco, CodeMirror, and xterm; named imports control the bundle.
13
13
 
14
- **状态:** [Apache License 2.0](./LICENSE),自 v1.0.0 开源。自 v1.2.0 起 npm 发布编译 ESM。当前主线 **2.0.0**。1.x 见分支 `1.x`。
14
+ **Status:** [Apache License 2.0](./LICENSE) since v1.0.0. Compiled ESM on npm since v1.2.0. Current line is **2.0.0**. The `1.x` branch keeps the 1.3 line.
15
15
 
16
- ## 特性
16
+ ## Features
17
17
 
18
- - **Design Token**:明暗主题走 `data-rs-theme`(`light` / `dark` / `system`)与 CSS 变量,宿主用品牌层覆盖
19
- - **Rs\* 组件**:Button、Form、Dialog、Table、Tree、Tabs、Anchor 等
20
- - **专业工具**:Monaco、CodeMirror、xterm(只在用到的路由引入)
21
- - **无障碍**:底层 [Reka UI](https://reka-ui.com/),应用只依赖 `niuma-ui`
22
- - **Vite**:`import { RsButton } from 'niuma-ui'` 即可打包;`niumaUiHost` 仅本机 `pnpm dev` 联调源码
18
+ - **Design tokens** — light / dark / system via `data-rs-theme` and CSS variables; hosts override a brand layer
19
+ - **Rs\* components** — Button, Form, Dialog, Table, Tree, Tabs, Anchor, and more
20
+ - **Tooling** — Monaco, CodeMirror, xterm (import only on routes that need them)
21
+ - **Accessibility** — [Reka UI](https://reka-ui.com/) underneath; apps depend only on `niuma-ui`
22
+ - **i18n** — omitted `locale` follows the host language (`zh*` → `zh-CN`, `en*` → `en-US`); unknown tags fall back to `zh-CN`. Extra languages: `registerRsLocale` ([guide](./docs/locales.en.md))
23
+ - **Vite** — `import { RsButton } from 'niuma-ui'` is enough to bundle; `niumaUiHost` is local `pnpm dev` HMR only
23
24
 
24
- ## 要求
25
+ ## Requirements
25
26
 
26
- | 项 | 版本 |
27
- |----|------|
27
+ | Item | Version |
28
+ |------|---------|
28
29
  | Node.js | ≥ 20 |
29
- | 包管理器 | npm / pnpm / yarn(本仓库开发用 pnpm ≥ 9) |
30
- | Vue | ^3.5(peerDependency) |
31
- | 打包器 | 推荐 Vite 5+;`RsMonacoEditor` 需要 Vite 处理 `?worker` |
32
- | 样式 | `import 'niuma-ui/styles.css'`(独立 CSS,不含 Tailwind) |
30
+ | Package manager | npm / pnpm / yarn (this repo develops with pnpm ≥ 9) |
31
+ | Vue | ^3.5 (`peerDependency`) |
32
+ | Bundler | Vite 5+ recommended; `RsMonacoEditor` needs Vite `?worker` |
33
+ | Styles | `import 'niuma-ui/styles.css'` (standalone CSS, no Tailwind) |
33
34
 
34
- ## 安装
35
+ ## Install
35
36
 
36
37
  ```bash
37
38
  pnpm add niuma-ui
38
- # 或 npm install niuma-ui / yarn add niuma-ui
39
+ # or: npm install niuma-ui / yarn add niuma-ui
39
40
  ```
40
41
 
41
- 建议锁定兼容范围,例如 `^2.0.0`。精确复现请钉死 **2.0.0**。1.x 请用 `niuma-ui@1`。
42
+ Prefer a range such as `^2.0.0`. Pin **2.0.0** for a bit-for-bit install. Use `niuma-ui@1` for the 1.x line.
42
43
 
43
- 本地改源码、Vite 插件、包体积见 **[消费方指南](./docs/consumers.md)**([English](./docs/consumers.en.md))。
44
+ Local `link`, Vite plugins, and bundle size: **[Consumer guide](./docs/consumers.en.md)** ([中文](./docs/consumers.md)).
44
45
 
45
- ## 快速开始
46
+ ## Quick start
46
47
 
47
48
  ```ts
48
49
  // main.ts
@@ -60,67 +61,64 @@ import { RsConfigProvider, RsButton } from 'niuma-ui'
60
61
  </script>
61
62
 
62
63
  <template>
63
- <RsConfigProvider theme="light" locale="zh-CN">
64
+ <RsConfigProvider theme="light" locale="en-US">
64
65
  <RsButton variant="primary">Hello</RsButton>
65
66
  </RsConfigProvider>
66
67
  </template>
67
68
  ```
68
69
 
69
- `locale` 现支持 `zh-CN` | `en-US`。
70
+ Omit `locale` to follow the host language. Chinese systems stay on `zh-CN`. Community packs: [locales.en.md](./docs/locales.en.md).
70
71
 
71
- ## 使用约定
72
+ ## Usage
72
73
 
73
- 1. 只从包根具名导入:`import { RsButton } from 'niuma-ui'`。**不要**直接依赖 `reka-ui`,不要 `import *`。
74
- 2. 样式只引一次 `niuma-ui/styles.css`,再加载你的品牌 CSS。
75
- 3. 根节点包 `RsConfigProvider`(主题、语言、默认控件尺寸)。
76
- 4. 轻量站点在自己的 `ui.ts` 里再导出用到的符号。不要把包名别名到本仓库的 `src/index.ts`。
74
+ 1. Named-import from the package root only. **Do not** depend on `reka-ui`. Do not `import *`.
75
+ 2. Import `niuma-ui/styles.css` once, then your brand CSS.
76
+ 3. Wrap the app with `RsConfigProvider` (theme, locale, default control size).
77
+ 4. Light sites re-export used symbols from their own `ui.ts`. Do not alias the package to this repo’s `src/index.ts`.
77
78
 
78
- 组件 API 以文档站为准。仓库里的架构契约给维护者:[组件规范](./docs/components.md)([English](./docs/components.en.md))。
79
+ Component APIs live on the docs site. The architecture contract is for maintainers: [components.en.md](./docs/components.en.md) ([中文](./docs/components.md)).
79
80
 
80
- ## 文档
81
+ ## Docs
81
82
 
82
- - **组件文档(官网)**:[https://blair-shang.github.io/niuma-ui/](https://blair-shang.github.io/niuma-ui/)(源码 `site/`)
83
- - 本地文档站:`pnpm dev:site` → http://127.0.0.1:5181
84
- - `playground/` 仅内部冒烟与像素回归(`pnpm dev` → :5180),不提供对外用法
83
+ - **Component site:** [https://blair-shang.github.io/niuma-ui/](https://blair-shang.github.io/niuma-ui/) (source: `site/`)
84
+ - Local docs: `pnpm dev:site` → http://127.0.0.1:5181
85
+ - **How to write demos and APIs:** [site/README.en.md](./site/README.en.md) ([中文](./site/README.md)) — catalog must list props / events / slots / methods; demos are bilingual and events must be visible
86
+ - `playground/` is internal smoke / visual regression only (`pnpm dev` → :5180). It is not usage documentation.
85
87
 
86
- | 文档 | 给谁看 |
87
- |------|--------|
88
- | [docs/consumers.md](./docs/consumers.md) | 把库装进产品的人([English](./docs/consumers.en.md)) |
89
- | [docs/components.md](./docs/components.md) | 改本仓库的人([English](./docs/components.en.md)) |
90
- | [CONTRIBUTING.md](./CONTRIBUTING.md) | PR、测试、发版([English](./CONTRIBUTING.en.md)) |
91
- | [CHANGELOG.md](./CHANGELOG.md) | 版本记录 |
92
- | [SECURITY.md](./SECURITY.md) | 漏洞私下报告 |
88
+ | Doc | Audience |
89
+ |-----|----------|
90
+ | [docs/consumers.en.md](./docs/consumers.en.md) | People installing the library ([中文](./docs/consumers.md)) |
91
+ | [docs/locales.en.md](./docs/locales.en.md) | Registering extra languages ([中文](./docs/locales.md)) |
92
+ | [site/README.en.md](./site/README.en.md) | How to write site demos and API tables ([中文](./site/README.md)) |
93
+ | [docs/components.en.md](./docs/components.en.md) | People changing this repository ([中文](./docs/components.md)) |
94
+ | [CONTRIBUTING.en.md](./CONTRIBUTING.en.md) | PRs, tests, releases ([中文](./CONTRIBUTING.md)) |
95
+ | [CHANGELOG.md](./CHANGELOG.md) | Release notes |
96
+ | [SECURITY.md](./SECURITY.md) | Private vulnerability reports |
93
97
 
94
- ## 本地开发
98
+ ## Local development
95
99
 
96
100
  ```bash
97
101
  pnpm install
98
- pnpm dev:site # 文档站
99
- pnpm test # Vitest
100
- pnpm build # 库 → dist/
102
+ pnpm dev:site # docs site
103
+ pnpm test
104
+ pnpm build # library → dist/
101
105
  ```
102
106
 
103
- 贡献步骤见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
107
+ See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full contributor flow.
104
108
 
105
- ## 版本
109
+ ## Versioning
106
110
 
107
- 遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/):
111
+ [Semantic Versioning](https://semver.org/): compatible fixes are PATCH, compatible features MINOR, breaking API or token renames MAJOR.
108
112
 
109
- | 变更 | 版本 |
110
- |------|------|
111
- | 兼容的缺陷 / 文档 | PATCH |
112
- | 兼容的新组件 / 能力 | MINOR |
113
- | 破坏性 API 或 Token 更名 | MAJOR |
113
+ Stable publishes set npm dist-tag **`latest`**; prereleases use **`next`**. There is no Git tag named `latest`. Release steps live only in [CONTRIBUTING.md](./CONTRIBUTING.md).
114
114
 
115
- 正式版更新 npm dist-tag **`latest`**,预发布走 **`next`**。没有名为 `latest` 的 Git 标签。发版流程只在 [CONTRIBUTING.md](./CONTRIBUTING.md),不在本页。
115
+ ## License and credits
116
116
 
117
- ## 许可与致谢
117
+ [Apache License 2.0](./LICENSE). Attribution: [NOTICE](./NOTICE).
118
118
 
119
- [Apache License 2.0](./LICENSE)。版权与第三方声明见 [NOTICE](./NOTICE)。
119
+ Primitives: [Reka UI](https://reka-ui.com/). Icons: [Lucide](https://lucide.dev/). Editors: [Monaco](https://microsoft.github.io/monaco-editor/), [CodeMirror](https://codemirror.net/). Terminal: [xterm.js](https://xtermjs.org/).
120
120
 
121
- 交互原语:[Reka UI](https://reka-ui.com/)。图标:[Lucide](https://lucide.dev/)。编辑器:[Monaco](https://microsoft.github.io/monaco-editor/)、[CodeMirror](https://codemirror.net/)。终端:[xterm.js](https://xtermjs.org/)。
122
-
123
- - 文档站:https://blair-shang.github.io/niuma-ui/
124
- - npm:https://www.npmjs.com/package/niuma-ui
125
- - 源码:https://github.com/Blair-Shang/niuma-ui
126
- - Issues:https://github.com/Blair-Shang/niuma-ui/issues
121
+ - Docs: https://blair-shang.github.io/niuma-ui/
122
+ - npm: https://www.npmjs.com/package/niuma-ui
123
+ - Source: https://github.com/Blair-Shang/niuma-ui
124
+ - Issues: https://github.com/Blair-Shang/niuma-ui/issues
@@ -0,0 +1,130 @@
1
+ # niuma-ui
2
+
3
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](./LICENSE)
4
+ [![npm](https://img.shields.io/npm/v/niuma-ui.svg)](https://www.npmjs.com/package/niuma-ui)
5
+ [![Vue 3](https://img.shields.io/badge/Vue-3.5+-42b883.svg)](https://vuejs.org/)
6
+ [![Node](https://img.shields.io/badge/Node-%3E%3D20-brightgreen.svg)](https://nodejs.org/)
7
+
8
+ [English](./README.md) | 简体中文
9
+
10
+ Vue 3 **工作台**设计系统:一致的 `Rs*` 组件与 `--rs-*` Token,以及按需使用的编辑器 / 终端封装。
11
+
12
+ 适用于运维控制台、数据库工作台、内部后台。营销站也可以用具名导入。`npm install` 会带上 Monaco、CodeMirror、xterm,体积靠具名导入摇树。
13
+
14
+ **状态:** [Apache License 2.0](./LICENSE),自 v1.0.0 开源。自 v1.2.0 起 npm 发布编译 ESM。当前主线 **2.0.0**。1.x 见分支 `1.x`。
15
+
16
+ ## 特性
17
+
18
+ - **Design Token**:明暗主题走 `data-rs-theme`(`light` / `dark` / `system`)与 CSS 变量,宿主用品牌层覆盖
19
+ - **Rs\* 组件**:Button、Form、Dialog、Table、Tree、Tabs、Anchor 等
20
+ - **专业工具**:Monaco、CodeMirror、xterm(只在用到的路由引入)
21
+ - **无障碍**:底层 [Reka UI](https://reka-ui.com/),应用只依赖 `niuma-ui`
22
+ - **国际化**:未设 `locale` 时跟本机语言(中文系统就是 `zh-CN`);认不出回退中文。第三方语言用 `registerRsLocale`,见 [docs/locales.md](./docs/locales.md)
23
+ - **Vite**:`import { RsButton } from 'niuma-ui'` 即可打包;`niumaUiHost` 仅本机 `pnpm dev` 联调源码
24
+
25
+ ## 要求
26
+
27
+ | 项 | 版本 |
28
+ |----|------|
29
+ | Node.js | ≥ 20 |
30
+ | 包管理器 | npm / pnpm / yarn(本仓库开发用 pnpm ≥ 9) |
31
+ | Vue | ^3.5(peerDependency) |
32
+ | 打包器 | 推荐 Vite 5+;`RsMonacoEditor` 需要 Vite 处理 `?worker` |
33
+ | 样式 | `import 'niuma-ui/styles.css'`(独立 CSS,不含 Tailwind) |
34
+
35
+ ## 安装
36
+
37
+ ```bash
38
+ pnpm add niuma-ui
39
+ # 或 npm install niuma-ui / yarn add niuma-ui
40
+ ```
41
+
42
+ 建议锁定兼容范围,例如 `^2.0.0`。精确复现请钉死 **2.0.0**。1.x 请用 `niuma-ui@1`。
43
+
44
+ 本地改源码、Vite 插件、包体积见 **[消费方指南](./docs/consumers.md)**([English](./docs/consumers.en.md))。
45
+
46
+ ## 快速开始
47
+
48
+ ```ts
49
+ // main.ts
50
+ import { createApp } from 'vue'
51
+ import 'niuma-ui/styles.css'
52
+ import App from './App.vue'
53
+
54
+ createApp(App).mount('#app')
55
+ ```
56
+
57
+ ```vue
58
+ <!-- App.vue -->
59
+ <script setup lang="ts">
60
+ import { RsConfigProvider, RsButton } from 'niuma-ui'
61
+ </script>
62
+
63
+ <template>
64
+ <RsConfigProvider theme="light" locale="zh-CN">
65
+ <RsButton variant="primary">你好</RsButton>
66
+ </RsConfigProvider>
67
+ </template>
68
+ ```
69
+
70
+ 未设 `locale` 时跟本机语言:中文环境仍是中文。更多语言见 [社区语言包](./docs/locales.md)。
71
+
72
+ ## 使用约定
73
+
74
+ 1. 只从包根具名导入:`import { RsButton } from 'niuma-ui'`。**不要**直接依赖 `reka-ui`,不要 `import *`。
75
+ 2. 样式只引一次 `niuma-ui/styles.css`,再加载你的品牌 CSS。
76
+ 3. 根节点包 `RsConfigProvider`(主题、语言、默认控件尺寸)。
77
+ 4. 轻量站点在自己的 `ui.ts` 里再导出用到的符号。不要把包名别名到本仓库的 `src/index.ts`。
78
+
79
+ 组件 API 以文档站为准。仓库里的架构契约给维护者:[组件规范](./docs/components.md)([English](./docs/components.en.md))。
80
+
81
+ ## 文档
82
+
83
+ - **组件文档(官网)**:[https://blair-shang.github.io/niuma-ui/](https://blair-shang.github.io/niuma-ui/)(源码 `site/`)
84
+ - 本地文档站:`pnpm dev:site` → http://127.0.0.1:5181
85
+ - **演示与 API 写法**:[site/README.md](./site/README.md)([English](./site/README.en.md))— catalog 必须写清 props / events / slots / methods,演示要中英对照且事件可感知
86
+ - `playground/` 仅内部冒烟与像素回归(`pnpm dev` → :5180),不提供对外用法
87
+
88
+ | 文档 | 给谁看 |
89
+ |------|--------|
90
+ | [docs/consumers.md](./docs/consumers.md) | 把库装进产品的人([English](./docs/consumers.en.md)) |
91
+ | [docs/locales.md](./docs/locales.md) | 登记第三方语言([English](./docs/locales.en.md)) |
92
+ | [site/README.md](./site/README.md) | 文档站演示与 API 表怎么写([English](./site/README.en.md)) |
93
+ | [docs/components.md](./docs/components.md) | 改本仓库的人([English](./docs/components.en.md)) |
94
+ | [CONTRIBUTING.md](./CONTRIBUTING.md) | PR、测试、发版([English](./CONTRIBUTING.en.md)) |
95
+ | [CHANGELOG.md](./CHANGELOG.md) | 版本记录 |
96
+ | [SECURITY.md](./SECURITY.md) | 漏洞私下报告 |
97
+
98
+ ## 本地开发
99
+
100
+ ```bash
101
+ pnpm install
102
+ pnpm dev:site # 文档站
103
+ pnpm test # Vitest
104
+ pnpm build # 库 → dist/
105
+ ```
106
+
107
+ 贡献步骤见 [CONTRIBUTING.md](./CONTRIBUTING.md)。
108
+
109
+ ## 版本
110
+
111
+ 遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/):
112
+
113
+ | 变更 | 版本 |
114
+ |------|------|
115
+ | 兼容的缺陷 / 文档 | PATCH |
116
+ | 兼容的新组件 / 能力 | MINOR |
117
+ | 破坏性 API 或 Token 更名 | MAJOR |
118
+
119
+ 正式版更新 npm dist-tag **`latest`**,预发布走 **`next`**。没有名为 `latest` 的 Git 标签。发版流程只在 [CONTRIBUTING.md](./CONTRIBUTING.md),不在本页。
120
+
121
+ ## 许可与致谢
122
+
123
+ [Apache License 2.0](./LICENSE)。版权与第三方声明见 [NOTICE](./NOTICE)。
124
+
125
+ 交互原语:[Reka UI](https://reka-ui.com/)。图标:[Lucide](https://lucide.dev/)。编辑器:[Monaco](https://microsoft.github.io/monaco-editor/)、[CodeMirror](https://codemirror.net/)。终端:[xterm.js](https://xtermjs.org/)。
126
+
127
+ - 文档站:https://blair-shang.github.io/niuma-ui/
128
+ - npm:https://www.npmjs.com/package/niuma-ui
129
+ - 源码:https://github.com/Blair-Shang/niuma-ui
130
+ - Issues:https://github.com/Blair-Shang/niuma-ui/issues
@@ -1,2 +1,2 @@
1
- export { AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, Primitive, AvatarFallback, AvatarImage, AvatarRoot, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, SwitchRoot, SwitchThumb, PaginationEllipsis, PaginationFirst, PaginationLast, PaginationList, PaginationListItem, PaginationNext, PaginationPrev, PaginationRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SelectContent, SelectItem, SelectItemIndicator, SelectItemText, SelectPortal, SelectRoot, SelectTrigger, SelectValue, SelectViewport, StepperDescription, StepperIndicator, StepperItem, StepperRoot, StepperSeparator, StepperTitle, StepperTrigger, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, TreeItem, TreeRoot, TreeVirtualizer, useForwardExpose, useFilter, } from 'reka-ui';
1
+ export { AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AlertDialogTrigger, Primitive, AvatarFallback, AvatarImage, AvatarRoot, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ConfigProvider, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, SwitchRoot, SwitchThumb, PaginationEllipsis, PaginationFirst, PaginationLast, PaginationList, PaginationListItem, PaginationNext, PaginationPrev, PaginationRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SelectContent, SelectItem, SelectItemIndicator, SelectItemText, SelectPortal, SelectRoot, SelectTrigger, SelectValue, SelectViewport, StepperDescription, StepperIndicator, StepperItem, StepperRoot, StepperSeparator, StepperTitle, StepperTrigger, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, TreeItem, TreeRoot, TreeVirtualizer, useForwardExpose, useFilter, } from 'reka-ui';
2
2
  export type { AcceptableValue, PrimitiveProps, TooltipRootEmits, TooltipRootProps } from 'reka-ui';
@@ -1,2 +1,2 @@
1
- import { AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AvatarFallback, AvatarImage, AvatarRoot, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, Primitive, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SwitchRoot, SwitchThumb, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, useFilter } from "reka-ui";
2
- export { AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AvatarFallback, AvatarImage, AvatarRoot, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, Primitive, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SwitchRoot, SwitchThumb, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, useFilter };
1
+ import { AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AvatarFallback, AvatarImage, AvatarRoot, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ConfigProvider, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, Primitive, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SwitchRoot, SwitchThumb, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, useFilter } from "reka-ui";
2
+ export { AlertDialogContent, AlertDialogDescription, AlertDialogOverlay, AlertDialogPortal, AlertDialogRoot, AlertDialogTitle, AvatarFallback, AvatarImage, AvatarRoot, CollapsibleContent, CollapsibleRoot, CollapsibleTrigger, ComboboxAnchor, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxItemIndicator, ComboboxLabel, ComboboxPortal, ComboboxRoot, ComboboxTrigger, ComboboxViewport, ComboboxVirtualizer, ConfigProvider, ContextMenuContent, ContextMenuItem, ContextMenuPortal, ContextMenuRoot, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuRoot, DropdownMenuTrigger, PopoverContent, PopoverPortal, PopoverRoot, PopoverTrigger, Primitive, RadioGroupIndicator, RadioGroupItem, RadioGroupRoot, ScrollAreaCorner, ScrollAreaRoot, ScrollAreaScrollbar, ScrollAreaThumb, ScrollAreaViewport, SwitchRoot, SwitchThumb, TabsContent, TabsList, TabsRoot, TabsTrigger, TooltipContent, TooltipPortal, TooltipProvider, TooltipRoot, TooltipTrigger, useFilter };
@@ -1,5 +1,5 @@
1
- import RsIcon_default from "../../icon/src/RsIcon.js";
2
1
  import { AvatarFallback, AvatarImage, AvatarRoot } from "../../_shared/src/reka.js";
2
+ import RsIcon_default from "../../icon/src/RsIcon.js";
3
3
  import { getAvatarInitials } from "./avatar-utils.js";
4
4
  import { computed, createBlock, createCommentVNode, createElementBlock, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx } from "vue";
5
5
  //#region src/components/avatar/src/RsAvatar.vue?vue&type=script&setup=true&lang.ts
@@ -1 +1,2 @@
1
1
  export { default as RsBadge } from './src/RsBadge.js';
2
+ export type { RsBadgeVariant } from './src/badge-utils';
@@ -1,41 +1,94 @@
1
1
 
2
- .rs-badge[data-v-90af0872] {
2
+ .rs-badge[data-v-f91a65a7] {
3
+ --rs-badge-padding-y: 0.125rem;
4
+ --rs-badge-padding-x: 0.625rem;
5
+ --rs-badge-dot-size: var(--rs-space-sm);
6
+ --rs-badge-count-min: 1.125rem;
7
+ --rs-badge-ring: var(--rs-surface);
3
8
  display: inline-flex;
4
9
  align-items: center;
5
- padding: 0.125rem 0.625rem;
10
+ justify-content: center;
11
+ box-sizing: border-box;
12
+ padding: var(--rs-badge-padding-y) var(--rs-badge-padding-x);
6
13
  border-radius: var(--rs-radius-full);
7
14
  font-size: var(--rs-font-size-xs);
8
15
  font-weight: var(--rs-font-weight-medium);
9
16
  line-height: var(--rs-line-height-tight);
10
17
  letter-spacing: 0.02em;
18
+ white-space: nowrap;
19
+ vertical-align: middle;
11
20
  }
12
- .rs-badge--default[data-v-90af0872] {
21
+ .rs-badge-wrap[data-v-f91a65a7] {
22
+ position: relative;
23
+ display: inline-flex;
24
+ vertical-align: middle;
25
+ }
26
+ .rs-badge-wrap .rs-badge--mark[data-v-f91a65a7] {
27
+ position: absolute;
28
+ inset-block-start: 0;
29
+ inset-inline-end: 0;
30
+ z-index: 1;
31
+ transform: translate(50%, -50%);
32
+ box-shadow: 0 0 0 2px var(--rs-badge-ring);
33
+ }
34
+ :dir(rtl) .rs-badge-wrap .rs-badge--mark[data-v-f91a65a7] {
35
+ transform: translate(-50%, -50%);
36
+ }
37
+ .rs-badge--mark[data-v-f91a65a7]:not(.rs-badge--dot) {
38
+ min-width: var(--rs-badge-count-min);
39
+ min-height: var(--rs-badge-count-min);
40
+ padding: 0 0.375rem;
41
+ letter-spacing: 0;
42
+ line-height: 1;
43
+ }
44
+ .rs-badge--dot[data-v-f91a65a7] {
45
+ width: var(--rs-badge-dot-size);
46
+ height: var(--rs-badge-dot-size);
47
+ min-width: var(--rs-badge-dot-size);
48
+ padding: 0;
49
+ border-radius: var(--rs-radius-full);
50
+ }
51
+ .rs-badge--default[data-v-f91a65a7] {
13
52
  background: var(--rs-surface-hover);
14
53
  color: var(--rs-text);
15
54
  border: 1px solid var(--rs-border);
16
55
  }
17
- .rs-badge--primary[data-v-90af0872] {
56
+ .rs-badge--primary[data-v-f91a65a7] {
18
57
  background: var(--rs-primary-container);
19
58
  color: var(--rs-on-primary-container);
20
59
  border: 1px solid color-mix(in srgb, var(--rs-primary) 40%, transparent);
21
60
  }
22
- .rs-badge--success[data-v-90af0872] {
61
+ .rs-badge--success[data-v-f91a65a7] {
23
62
  background: var(--rs-success-container);
24
63
  color: var(--rs-on-success-container);
25
64
  border: 1px solid color-mix(in srgb, var(--rs-success) 40%, transparent);
26
65
  }
27
- .rs-badge--warning[data-v-90af0872] {
66
+ .rs-badge--warning[data-v-f91a65a7] {
28
67
  background: var(--rs-warning-container);
29
68
  color: var(--rs-on-warning-container);
30
69
  border: 1px solid color-mix(in srgb, var(--rs-warning) 40%, transparent);
31
70
  }
32
- .rs-badge--danger[data-v-90af0872] {
71
+ .rs-badge--danger[data-v-f91a65a7] {
33
72
  background: var(--rs-danger-container);
34
73
  color: var(--rs-on-danger-container);
35
74
  border: 1px solid color-mix(in srgb, var(--rs-danger) 40%, transparent);
36
75
  }
37
- .rs-badge--info[data-v-90af0872] {
76
+ .rs-badge--info[data-v-f91a65a7] {
38
77
  background: var(--rs-info-container);
39
78
  color: var(--rs-on-info-container);
40
79
  border: 1px solid color-mix(in srgb, var(--rs-info) 40%, transparent);
41
80
  }
81
+ .rs-badge--dot.rs-badge--default[data-v-f91a65a7],
82
+ .rs-badge--dot.rs-badge--primary[data-v-f91a65a7],
83
+ .rs-badge--dot.rs-badge--success[data-v-f91a65a7],
84
+ .rs-badge--dot.rs-badge--warning[data-v-f91a65a7],
85
+ .rs-badge--dot.rs-badge--danger[data-v-f91a65a7],
86
+ .rs-badge--dot.rs-badge--info[data-v-f91a65a7] {
87
+ color: transparent;
88
+ }
89
+ @media (forced-colors: active) {
90
+ .rs-badge[data-v-f91a65a7] {
91
+ border: 1px solid CanvasText;
92
+ forced-color-adjust: none;
93
+ }
94
+ }