niuma-ui 1.3.1 → 1.3.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.
package/CHANGELOG.md CHANGED
@@ -6,6 +6,18 @@
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.3.3] - 2026-09-09
10
+
11
+ ### 修复
12
+
13
+ - `RsLog` 开启 `wrap` 时不再把每一行拉成整栏高度,避免日志区上半空白、正文挤在底部。Playground `/log` 增加撑满栏折行示例;`/#/visual/rs-log` + `pnpm test:visual` 用几何断言锁行高(jsdom 测不到)。
14
+
15
+ ## [1.3.2] - 2026-09-09
16
+
17
+ ### 修复
18
+
19
+ - `rs-dayjs`:插件改从 `dayjs/esm` 引入。宿主 `optimizeDeps.exclude` `@niuma/ui` 时,Vite 不再把 CJS UMD 插件当成缺少 `default` 的 ESM。
20
+
9
21
  ## [1.3.1] - 2026-09-09
10
22
 
11
23
  ### 修复
@@ -1,5 +1,5 @@
1
1
 
2
- .rs-log[data-v-292b0834] {
2
+ .rs-log[data-v-af05229f] {
3
3
  display: flex;
4
4
  flex-direction: column;
5
5
  min-height: 0;
@@ -13,7 +13,7 @@
13
13
  line-height: 1.45;
14
14
  height: var(--rs-log-box-height, 280px);
15
15
  }
16
- .rs-log__chrome[data-v-292b0834] {
16
+ .rs-log__chrome[data-v-af05229f] {
17
17
  display: flex;
18
18
  flex-wrap: wrap;
19
19
  gap: 0.45rem;
@@ -22,15 +22,15 @@
22
22
  border-bottom: 1px solid var(--rs-log-border, var(--rs-border));
23
23
  background: color-mix(in srgb, var(--rs-log-bg, var(--rs-surface)) 88%, var(--rs-surface-hover));
24
24
  }
25
- .rs-log__search[data-v-292b0834] {
25
+ .rs-log__search[data-v-af05229f] {
26
26
  min-width: 10rem;
27
27
  flex: 1 1 12rem;
28
28
  }
29
- .rs-log__copy[data-v-292b0834] {
29
+ .rs-log__copy[data-v-af05229f] {
30
30
  flex-shrink: 0;
31
31
  margin-inline-start: auto;
32
32
  }
33
- .rs-log__filters[data-v-292b0834] {
33
+ .rs-log__filters[data-v-af05229f] {
34
34
  display: flex;
35
35
  flex-wrap: wrap;
36
36
  gap: 0.3rem;
@@ -39,7 +39,7 @@
39
39
  border: 0;
40
40
  min-inline-size: 0;
41
41
  }
42
- .rs-log__chip[data-v-292b0834] {
42
+ .rs-log__chip[data-v-af05229f] {
43
43
  margin: 0;
44
44
  padding: 0.1rem 0.4rem;
45
45
  border: 1px solid var(--rs-log-border, var(--rs-border));
@@ -50,54 +50,63 @@
50
50
  font-size: var(--rs-font-size-xs);
51
51
  cursor: pointer;
52
52
  }
53
- .rs-log__chip--on[data-v-292b0834] {
53
+ .rs-log__chip--on[data-v-af05229f] {
54
54
  color: var(--rs-log-fg, var(--rs-text));
55
55
  border-color: color-mix(in srgb, var(--rs-primary) 45%, var(--rs-log-border, var(--rs-border)));
56
56
  background: color-mix(in srgb, var(--rs-primary) 14%, transparent);
57
57
  }
58
- .rs-log__viewport[data-v-292b0834] {
58
+ .rs-log__viewport[data-v-af05229f] {
59
59
  display: flex;
60
60
  flex-direction: column;
61
61
  flex: 1;
62
62
  min-height: 0;
63
63
  outline: none;
64
64
  }
65
- .rs-log__viewport[data-v-292b0834]:focus-visible {
65
+ .rs-log__viewport[data-v-af05229f]:focus-visible {
66
66
  box-shadow: inset 0 0 0 var(--rs-focus-ring-width, 2px) var(--rs-focus-border);
67
67
  }
68
- .rs-log__list[data-v-292b0834],
69
- .rs-log__plain[data-v-292b0834] {
68
+ .rs-log__list[data-v-af05229f],
69
+ .rs-log__plain[data-v-af05229f] {
70
70
  flex: 1;
71
71
  min-height: 0;
72
72
  border: 0;
73
73
  background: transparent;
74
74
  }
75
- .rs-log__plain[data-v-292b0834] {
75
+ .rs-log__plain[data-v-af05229f] {
76
76
  overflow: auto;
77
77
  }
78
- .rs-log__row[data-v-292b0834] {
78
+ .rs-log__row[data-v-af05229f] {
79
79
  display: flex;
80
80
  align-items: flex-start;
81
81
  gap: 0.55rem;
82
82
  box-sizing: border-box;
83
- min-height: 100%;
84
83
  padding: 0 0.7rem;
85
84
  white-space: nowrap;
86
85
  color: var(--rs-log-row-fg, var(--rs-log-fg));
87
86
  }
88
- .rs-log--wrap .rs-log__row[data-v-292b0834] {
87
+ .rs-log:not(.rs-log--wrap) .rs-log__list .rs-log__row[data-v-af05229f] {
88
+ min-height: 100%;
89
+ }
90
+ .rs-log--wrap .rs-log__plain[data-v-af05229f] {
91
+ display: block;
92
+ }
93
+ .rs-log--wrap .rs-log__row[data-v-af05229f] {
94
+ height: auto;
95
+ max-height: none;
96
+ min-height: 0;
89
97
  white-space: pre-wrap;
90
98
  overflow-wrap: anywhere;
99
+ word-break: break-word;
91
100
  padding-block: 0.25rem;
92
101
  }
93
- .rs-log--zebra .rs-log__row--odd[data-v-292b0834] {
102
+ .rs-log--zebra .rs-log__row--odd[data-v-af05229f] {
94
103
  background: var(--rs-log-stripe, transparent);
95
104
  }
96
- .rs-log__row--active[data-v-292b0834] {
105
+ .rs-log__row--active[data-v-af05229f] {
97
106
  background: color-mix(in srgb, var(--rs-primary) 12%, var(--rs-log-bg, transparent));
98
107
  box-shadow: inset 2px 0 0 var(--rs-primary);
99
108
  }
100
- .rs-log__marker[data-v-292b0834] {
109
+ .rs-log__marker[data-v-af05229f] {
101
110
  flex-shrink: 0;
102
111
  width: 0.2rem;
103
112
  align-self: stretch;
@@ -106,41 +115,43 @@
106
115
  border-radius: 99px;
107
116
  background: currentColor;
108
117
  }
109
- .rs-log__no[data-v-292b0834],
110
- .rs-log__time[data-v-292b0834] {
118
+ .rs-log__no[data-v-af05229f],
119
+ .rs-log__time[data-v-af05229f] {
111
120
  flex-shrink: 0;
112
121
  color: var(--rs-log-muted, var(--rs-text-muted));
113
122
  font-variant-numeric: tabular-nums;
114
123
  unicode-bidi: isolate;
115
124
  }
116
- .rs-log__level[data-v-292b0834] {
125
+ .rs-log__level[data-v-af05229f] {
117
126
  flex-shrink: 0;
118
127
  min-width: 3.6rem;
119
128
  font-weight: var(--rs-font-weight-semibold);
120
129
  letter-spacing: 0.02em;
121
130
  unicode-bidi: isolate;
122
131
  }
123
- .rs-log__text[data-v-292b0834] {
132
+ .rs-log__text[data-v-af05229f] {
124
133
  min-width: 0;
125
134
  flex: 1;
126
135
  font-weight: inherit;
127
136
  unicode-bidi: plaintext;
128
137
  user-select: text;
129
138
  }
130
- .rs-log--wrap .rs-log__text[data-v-292b0834] {
131
- overflow: hidden;
139
+ .rs-log--wrap .rs-log__text[data-v-af05229f] {
140
+ overflow: visible;
141
+ height: auto;
142
+ min-height: 0;
132
143
  }
133
- .rs-log:not(.rs-log--wrap) .rs-log__text[data-v-292b0834] {
144
+ .rs-log:not(.rs-log--wrap) .rs-log__text[data-v-af05229f] {
134
145
  overflow: hidden;
135
146
  text-overflow: ellipsis;
136
147
  }
137
- .rs-log__hit[data-v-292b0834] {
148
+ .rs-log__hit[data-v-af05229f] {
138
149
  padding: 0 0.1em;
139
150
  background: var(--rs-log-hit-bg);
140
151
  color: var(--rs-log-hit-fg);
141
152
  font: inherit;
142
153
  }
143
- .rs-log__sr-only[data-v-292b0834] {
154
+ .rs-log__sr-only[data-v-af05229f] {
144
155
  position: absolute;
145
156
  width: 1px;
146
157
  height: 1px;
@@ -151,47 +162,47 @@
151
162
  white-space: nowrap;
152
163
  border: 0;
153
164
  }
154
- .rs-log__row--plain[data-v-292b0834] {
165
+ .rs-log__row--plain[data-v-af05229f] {
155
166
  --rs-log-row-fg: var(--rs-log-fg);
156
167
  font-weight: var(--rs-font-weight-regular);
157
168
  }
158
- .rs-log__row--trace[data-v-292b0834] {
169
+ .rs-log__row--trace[data-v-af05229f] {
159
170
  --rs-log-row-fg: var(--rs-log-trace);
160
171
  font-weight: var(--rs-font-weight-regular);
161
172
  }
162
- .rs-log__row--debug[data-v-292b0834] {
173
+ .rs-log__row--debug[data-v-af05229f] {
163
174
  --rs-log-row-fg: var(--rs-log-debug);
164
175
  font-weight: var(--rs-font-weight-regular);
165
176
  }
166
- .rs-log__row--info[data-v-292b0834],
167
- .rs-log__row--notice[data-v-292b0834] {
177
+ .rs-log__row--info[data-v-af05229f],
178
+ .rs-log__row--notice[data-v-af05229f] {
168
179
  --rs-log-row-fg: var(--rs-log-info);
169
180
  font-weight: var(--rs-font-weight-medium);
170
181
  }
171
- .rs-log__row--notice[data-v-292b0834] {
182
+ .rs-log__row--notice[data-v-af05229f] {
172
183
  --rs-log-row-fg: var(--rs-log-notice);
173
184
  }
174
- .rs-log__row--success[data-v-292b0834] {
185
+ .rs-log__row--success[data-v-af05229f] {
175
186
  --rs-log-row-fg: var(--rs-log-success);
176
187
  font-weight: var(--rs-font-weight-medium);
177
188
  }
178
- .rs-log__row--warn[data-v-292b0834] {
189
+ .rs-log__row--warn[data-v-af05229f] {
179
190
  --rs-log-row-fg: var(--rs-log-warn);
180
191
  font-weight: var(--rs-font-weight-semibold);
181
192
  }
182
- .rs-log__row--error[data-v-292b0834] {
193
+ .rs-log__row--error[data-v-af05229f] {
183
194
  --rs-log-row-fg: var(--rs-log-error);
184
195
  font-weight: var(--rs-font-weight-bold);
185
196
  }
186
- .rs-log__row--fatal[data-v-292b0834] {
197
+ .rs-log__row--fatal[data-v-af05229f] {
187
198
  --rs-log-row-fg: var(--rs-log-fatal);
188
199
  font-weight: var(--rs-font-weight-bold);
189
200
  }
190
201
  @media (forced-colors: active) {
191
- .rs-log__marker[data-v-292b0834] {
202
+ .rs-log__marker[data-v-af05229f] {
192
203
  background: ButtonText;
193
204
  }
194
- .rs-log__row--active[data-v-292b0834] {
205
+ .rs-log__row--active[data-v-af05229f] {
195
206
  outline: 2px solid Highlight;
196
207
  outline-offset: -2px;
197
208
  }
@@ -3,6 +3,6 @@ import _plugin_vue_export_helper_default from "../_virtual/_plugin-vue_export-he
3
3
  import RsLog_vue_vue_type_script_setup_true_lang_default from "./RsLog.impl.js";
4
4
 
5
5
  //#region src/components/RsLog.vue
6
- var RsLog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsLog_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-292b0834"]]);
6
+ var RsLog_default = /*#__PURE__*/ _plugin_vue_export_helper_default(RsLog_vue_vue_type_script_setup_true_lang_default, [["__scopeId", "data-v-af05229f"]]);
7
7
  //#endregion
8
8
  export { RsLog_default as default };
@@ -1,5 +1,5 @@
1
1
  import dayjs from "dayjs";
2
- import customParseFormat from "dayjs/plugin/customParseFormat";
2
+ import customParseFormat from "dayjs/esm/plugin/customParseFormat";
3
3
  //#region src/lib/rs-dayjs.ts
4
4
  dayjs.extend(customParseFormat);
5
5
  /** 日期 v-model / 展示格式 */
@@ -19,6 +19,14 @@ export type NiumaUiBinding = {
19
19
  * serve 改写具名导入到源码并 alias styles;build 只补 Tailwind @source。
20
20
  */
21
21
  export declare function niumaUiHost(options?: NiumaUiHostOptions): Plugin[];
22
+ /**
23
+ * DayjsServeAliases 把 CJS 插件指到 ESM 构建。
24
+ * 发布桶 / 源码被 exclude 后,Vite 否则会按 ESM 加载 UMD,报没有 default。
25
+ */
26
+ export declare function dayjsServeAliases(root: string): {
27
+ find: RegExp;
28
+ replacement: string;
29
+ }[];
22
30
  /**
23
31
  * ToSourceRel 把目录收成 Tailwind @source 可用的相对路径。
24
32
  */
@@ -30,7 +30,40 @@ export function niumaUiHost(options = {}) {
30
30
  return [niumaUiHostAlias(ctx), niumaUiHostRewrite(ctx), niumaUiHostTailwindSource(ctx)];
31
31
  }
32
32
  /**
33
- * NiumaUiHostAlias 仅在 serve 且存在 src 时把 styles.css 指到源码,并排除整桶预构建。
33
+ * DayjsServeAliases 把 CJS 插件指到 ESM 构建。
34
+ * 发布桶 / 源码被 exclude 后,Vite 否则会按 ESM 加载 UMD,报没有 default。
35
+ */
36
+ export function dayjsServeAliases(root) {
37
+ let req;
38
+ try {
39
+ req = createRequire(join(root, 'package.json'));
40
+ }
41
+ catch {
42
+ return [];
43
+ }
44
+ const aliases = [];
45
+ try {
46
+ aliases.push({
47
+ find: /^dayjs\/plugin\/customParseFormat(?:\.js)?$/,
48
+ replacement: req.resolve('dayjs/esm/plugin/customParseFormat'),
49
+ });
50
+ }
51
+ catch {
52
+ // dayjs 未装在包旁时跳过
53
+ }
54
+ try {
55
+ aliases.push({
56
+ find: /^dayjs$/,
57
+ replacement: req.resolve('dayjs/esm'),
58
+ });
59
+ }
60
+ catch {
61
+ // dayjs 未装在包旁时跳过
62
+ }
63
+ return aliases;
64
+ }
65
+ /**
66
+ * NiumaUiHostAlias 仅在 serve 时补 dayjs ESM 别名;有 src 时再改 styles 并排除整桶预构建。
34
67
  */
35
68
  function niumaUiHostAlias(ctx) {
36
69
  return {
@@ -38,15 +71,20 @@ function niumaUiHostAlias(ctx) {
38
71
  apply: 'serve',
39
72
  enforce: 'pre',
40
73
  config() {
41
- if (!ctx.hasSrc)
42
- return {};
74
+ const dayjsAlias = dayjsServeAliases(ctx.root);
75
+ if (!ctx.hasSrc) {
76
+ return dayjsAlias.length > 0 ? { resolve: { alias: dayjsAlias } } : {};
77
+ }
43
78
  const styles = join(ctx.root, 'src/styles.css');
44
- const alias = existsSync(styles)
45
- ? [
46
- { find: '@niuma/ui/styles.css', replacement: styles },
47
- { find: 'niuma-ui/styles.css', replacement: styles },
48
- ]
49
- : [];
79
+ const alias = [
80
+ ...(existsSync(styles)
81
+ ? [
82
+ { find: '@niuma/ui/styles.css', replacement: styles },
83
+ { find: 'niuma-ui/styles.css', replacement: styles },
84
+ ]
85
+ : []),
86
+ ...dayjsAlias,
87
+ ];
50
88
  return {
51
89
  resolve: alias.length > 0 ? { alias } : {},
52
90
  // 不要把 reka-ui / @lucide/vue / vue-sonner 写进 include:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "niuma-ui",
3
- "version": "1.3.1",
3
+ "version": "1.3.3",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "description": "Vue 3 工作台设计系统(Rs* 组件、--rs-* token;含可选编辑器 / 终端)",