@morya-ui/mcp 0.4.2 → 0.4.4

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.
@@ -128,7 +128,7 @@ export declare const designRules: {
128
128
  };
129
129
  readonly inlineMessage: {
130
130
  readonly api: "field errorMessage | token-styled role=alert";
131
- readonly when: readonly ["登录/表单区常驻错误:优先字段 errorMessage", "表单级总结:使用 --m-* 样式的 role=alert 条(见 login-page 黄金样例)", "MMessage 组件当前主要为 message 服务宿主,勿臆造 severity 子节点 API"];
131
+ readonly when: readonly ["登录/表单区常驻错误:优先字段 errorMessage", "表单级总结:使用 --m-* 样式的 role=alert 条(见 login-page 黄金样例)", "MMessage 组件当前主要为 message 服务宿主,勿臆造 type / 子节点 Alert API"];
132
132
  };
133
133
  readonly doc: "design-kit/.agents/skills/morya-ui-pages/references/feedback.md";
134
134
  };
package/dist/patterns.js CHANGED
@@ -78,7 +78,7 @@ export const pagePatterns = [
78
78
  '新增、保存等主操作使用 primary MButton',
79
79
  '查询等次要操作使用默认或 variant="outlined" MButton',
80
80
  '删除使用 danger MButton,并配合 MConfirmDialog',
81
- '业务状态优先使用 MStatus(圆点+文案)或 MTag(分类标签),不使用 Button severity 表达状态',
81
+ '业务状态优先使用 MStatus(圆点+文案)或 MTag(分类标签),不使用 Button color 表达状态',
82
82
  '间距、颜色、圆角优先使用 --m-* 设计令牌,不直接硬编码色板',
83
83
  ],
84
84
  interactionRules: [
@@ -802,7 +802,7 @@ export const designRules = {
802
802
  when: [
803
803
  '登录/表单区常驻错误:优先字段 errorMessage',
804
804
  '表单级总结:使用 --m-* 样式的 role=alert 条(见 login-page 黄金样例)',
805
- 'MMessage 组件当前主要为 message 服务宿主,勿臆造 severity 子节点 API',
805
+ 'MMessage 组件当前主要为 message 服务宿主,勿臆造 type / 子节点 Alert API',
806
806
  ],
807
807
  },
808
808
  doc: 'design-kit/.agents/skills/morya-ui-pages/references/feedback.md',
@@ -89,8 +89,8 @@ const BLOCK_TO_SNIPPET = {
89
89
  },
90
90
  kpi: {
91
91
  snippetId: 'dashboard-kpi-grid',
92
- notesZh: 'MPageStat 带 trend / trendDirection / trendSeverity',
93
- notesEn: 'MPageStat with trend / trendDirection / trendSeverity',
92
+ notesZh: 'MPageStat 带 trend / trendDirection / trendType',
93
+ notesEn: 'MPageStat with trend / trendDirection / trendType',
94
94
  },
95
95
  chart: {
96
96
  snippetId: 'dashboard-chart-card',
@@ -14,14 +14,14 @@ export const styleShells = [
14
14
  whenEn: 'List / form / dashboard / settings Operate surfaces',
15
15
  htmlHintZh: '结构用 MLayout + MPage*;本壳几乎不需要自定义 CSS',
16
16
  htmlHintEn: 'Compose with MLayout + MPage*; little custom CSS needed',
17
- css: `/* Ops: prefer component spacing; optional page tweaks only */
18
- .ops-page :is(.m-page-content) {
19
- /* density via MPageContent density prop — do not invent a second scale */
20
- }
21
- .ops-page :is(td, th).is-numeric,
22
- .ops-page .cell-numeric {
23
- font-variant-numeric: tabular-nums;
24
- text-align: end;
17
+ css: `/* Ops: prefer component spacing; optional page tweaks only */
18
+ .ops-page :is(.m-page-content) {
19
+ /* density via MPageContent density prop — do not invent a second scale */
20
+ }
21
+ .ops-page :is(td, th).is-numeric,
22
+ .ops-page .cell-numeric {
23
+ font-variant-numeric: tabular-nums;
24
+ text-align: end;
25
25
  }`,
26
26
  },
27
27
  {
@@ -35,69 +35,69 @@ export const styleShells = [
35
35
  whenEn: 'Login / register / password recovery',
36
36
  htmlHintZh: '对齐 auth-split-shell 片段;文案用产品名,不要「示例」',
37
37
  htmlHintEn: 'Align with auth-split-shell snippet; use product copy, not placeholders',
38
- css: `.login-shell {
39
- display: grid;
40
- grid-template-columns: minmax(16rem, 0.95fr) minmax(20rem, 1.05fr);
41
- min-height: 100vh;
42
- background: var(--m-color-surface);
43
- }
44
- .login-brand {
45
- display: flex;
46
- flex-direction: column;
47
- justify-content: flex-end;
48
- gap: var(--m-space-4);
49
- padding: clamp(2rem, 6vw, 4.5rem);
50
- background: color-mix(in srgb, var(--m-color-primary) 12%, var(--m-color-surface));
51
- border-right: 1px solid var(--m-color-border);
52
- }
53
- .login-brand__mark {
54
- margin: 0;
55
- font-size: var(--m-font-size-sm);
56
- letter-spacing: 0.08em;
57
- text-transform: uppercase;
58
- color: var(--m-color-text-muted);
59
- }
60
- .login-brand__title {
61
- margin: 0;
62
- font-size: clamp(1.75rem, 3vw, 2.25rem);
63
- line-height: 1.2;
64
- color: var(--m-color-text);
65
- font-weight: 600;
66
- }
67
- .login-brand__lead {
68
- margin: 0;
69
- max-width: 28rem;
70
- color: var(--m-color-text-muted);
71
- font-size: var(--m-font-size-md);
72
- }
73
- .login-main {
74
- display: flex;
75
- align-items: center;
76
- justify-content: center;
77
- padding: var(--m-space-6);
78
- }
79
- .login-panel {
80
- width: min(100%, 22rem);
81
- display: flex;
82
- flex-direction: column;
83
- gap: var(--m-space-4);
84
- }
85
- .login-panel__header h2 {
86
- margin: 0 0 var(--m-space-2);
87
- font-size: var(--m-font-size-xl);
88
- }
89
- .login-panel__header p,
90
- .login-alert {
91
- margin: 0;
92
- color: var(--m-color-text-muted);
93
- font-size: var(--m-font-size-sm);
94
- }
95
- .login-alert {
96
- color: var(--m-color-danger);
97
- }
98
- @media (max-width: 720px) {
99
- .login-shell { grid-template-columns: 1fr; }
100
- .login-brand { border-right: none; border-bottom: 1px solid var(--m-color-border); }
38
+ css: `.login-shell {
39
+ display: grid;
40
+ grid-template-columns: minmax(16rem, 0.95fr) minmax(20rem, 1.05fr);
41
+ min-height: 100vh;
42
+ background: var(--m-color-surface);
43
+ }
44
+ .login-brand {
45
+ display: flex;
46
+ flex-direction: column;
47
+ justify-content: flex-end;
48
+ gap: var(--m-space-4);
49
+ padding: clamp(2rem, 6vw, 4.5rem);
50
+ background: color-mix(in srgb, var(--m-color-primary) 12%, var(--m-color-surface));
51
+ border-right: 1px solid var(--m-color-border);
52
+ }
53
+ .login-brand__mark {
54
+ margin: 0;
55
+ font-size: var(--m-font-size-sm);
56
+ letter-spacing: 0.08em;
57
+ text-transform: uppercase;
58
+ color: var(--m-color-text-muted);
59
+ }
60
+ .login-brand__title {
61
+ margin: 0;
62
+ font-size: clamp(1.75rem, 3vw, 2.25rem);
63
+ line-height: 1.2;
64
+ color: var(--m-color-text);
65
+ font-weight: 600;
66
+ }
67
+ .login-brand__lead {
68
+ margin: 0;
69
+ max-width: 28rem;
70
+ color: var(--m-color-text-muted);
71
+ font-size: var(--m-font-size-md);
72
+ }
73
+ .login-main {
74
+ display: flex;
75
+ align-items: center;
76
+ justify-content: center;
77
+ padding: var(--m-space-6);
78
+ }
79
+ .login-panel {
80
+ width: min(100%, 22rem);
81
+ display: flex;
82
+ flex-direction: column;
83
+ gap: var(--m-space-4);
84
+ }
85
+ .login-panel__header h2 {
86
+ margin: 0 0 var(--m-space-2);
87
+ font-size: var(--m-font-size-xl);
88
+ }
89
+ .login-panel__header p,
90
+ .login-alert {
91
+ margin: 0;
92
+ color: var(--m-color-text-muted);
93
+ font-size: var(--m-font-size-sm);
94
+ }
95
+ .login-alert {
96
+ color: var(--m-color-danger);
97
+ }
98
+ @media (max-width: 720px) {
99
+ .login-shell { grid-template-columns: 1fr; }
100
+ .login-brand { border-right: none; border-bottom: 1px solid var(--m-color-border); }
101
101
  }`,
102
102
  },
103
103
  {
@@ -111,34 +111,34 @@ export const styleShells = [
111
111
  whenEn: 'Auth without a strong brand image, or mobile-first',
112
112
  htmlHintZh: '单列居中;表单错误用 errorMessage 或 role=alert',
113
113
  htmlHintEn: 'Single centered column; form errors via errorMessage or role=alert',
114
- css: `.auth-center {
115
- min-height: 100vh;
116
- display: flex;
117
- align-items: center;
118
- justify-content: center;
119
- padding: var(--m-space-6);
120
- background: var(--m-color-surface);
121
- }
122
- .auth-center__card {
123
- width: min(100%, 22rem);
124
- padding: var(--m-space-6);
125
- border: 1px solid var(--m-color-border);
126
- border-radius: var(--m-radius-md);
127
- background: var(--m-color-surface);
128
- display: flex;
129
- flex-direction: column;
130
- gap: var(--m-space-4);
131
- }
132
- .auth-center__mark {
133
- margin: 0;
134
- font-size: var(--m-font-size-sm);
135
- color: var(--m-color-text-muted);
136
- letter-spacing: 0.06em;
137
- }
138
- .auth-center__title {
139
- margin: 0;
140
- font-size: var(--m-font-size-xl);
141
- color: var(--m-color-text);
114
+ css: `.auth-center {
115
+ min-height: 100vh;
116
+ display: flex;
117
+ align-items: center;
118
+ justify-content: center;
119
+ padding: var(--m-space-6);
120
+ background: var(--m-color-surface);
121
+ }
122
+ .auth-center__card {
123
+ width: min(100%, 22rem);
124
+ padding: var(--m-space-6);
125
+ border: 1px solid var(--m-color-border);
126
+ border-radius: var(--m-radius-md);
127
+ background: var(--m-color-surface);
128
+ display: flex;
129
+ flex-direction: column;
130
+ gap: var(--m-space-4);
131
+ }
132
+ .auth-center__mark {
133
+ margin: 0;
134
+ font-size: var(--m-font-size-sm);
135
+ color: var(--m-color-text-muted);
136
+ letter-spacing: 0.06em;
137
+ }
138
+ .auth-center__title {
139
+ margin: 0;
140
+ font-size: var(--m-font-size-xl);
141
+ color: var(--m-color-text);
142
142
  }`,
143
143
  },
144
144
  {
@@ -152,13 +152,13 @@ export const styleShells = [
152
152
  whenEn: 'First use / no filter matches / cleared resources',
153
153
  htmlHintZh: '优先用 empty-block 片段;框可选',
154
154
  htmlHintEn: 'Prefer empty-block snippet; frame is optional',
155
- css: `.empty-state-shell {
156
- border: 1px dashed var(--m-color-border);
157
- border-radius: var(--m-radius-md);
158
- background: var(--m-color-surface);
159
- padding: var(--m-space-6);
160
- display: flex;
161
- justify-content: center;
155
+ css: `.empty-state-shell {
156
+ border: 1px dashed var(--m-color-border);
157
+ border-radius: var(--m-radius-md);
158
+ background: var(--m-color-surface);
159
+ padding: var(--m-space-6);
160
+ display: flex;
161
+ justify-content: center;
162
162
  }`,
163
163
  },
164
164
  {
@@ -172,13 +172,13 @@ export const styleShells = [
172
172
  whenEn: 'Submit success/failure / 403 / 404 / 500',
173
173
  htmlHintZh: '用 result-block;不要用 MEmpty 冒充结果页',
174
174
  htmlHintEn: 'Use result-block; do not fake results with MEmpty',
175
- css: `.result-shell {
176
- min-height: 60vh;
177
- display: flex;
178
- align-items: center;
179
- justify-content: center;
180
- padding: var(--m-space-6);
181
- background: var(--m-color-surface);
175
+ css: `.result-shell {
176
+ min-height: 60vh;
177
+ display: flex;
178
+ align-items: center;
179
+ justify-content: center;
180
+ padding: var(--m-space-6);
181
+ background: var(--m-color-surface);
182
182
  }`,
183
183
  },
184
184
  {
@@ -192,46 +192,46 @@ export const styleShells = [
192
192
  whenEn: 'Landing / pricing lead-in / product intro',
193
193
  htmlHintZh: '控件仍用 MButton/MTag;禁止未要求的 aurora / 毛玻璃',
194
194
  htmlHintEn: 'Controls stay MButton/MTag; no unsolicited aurora/glass',
195
- css: `.landing-hero {
196
- display: flex;
197
- flex-direction: column;
198
- gap: var(--m-space-4);
199
- padding: clamp(2rem, 5vw, 4rem) var(--m-space-6);
200
- background: var(--m-color-surface);
201
- border-bottom: 1px solid var(--m-color-border);
202
- }
203
- .landing-hero__brand {
204
- margin: 0;
205
- font-size: var(--m-font-size-sm);
206
- letter-spacing: 0.08em;
207
- text-transform: uppercase;
208
- color: var(--m-color-primary);
209
- }
210
- .landing-hero__title {
211
- margin: 0;
212
- max-width: 18ch;
213
- font-size: clamp(2rem, 4vw, 3rem);
214
- line-height: 1.15;
215
- color: var(--m-color-text);
216
- }
217
- .landing-hero__lead {
218
- margin: 0;
219
- max-width: 36rem;
220
- color: var(--m-color-text-muted);
221
- font-size: var(--m-font-size-md);
222
- }
223
- .landing-hero__actions {
224
- display: flex;
225
- flex-wrap: wrap;
226
- gap: var(--m-space-3);
227
- }
228
- .landing-hero__visual {
229
- margin-top: var(--m-space-5);
230
- min-height: 12rem;
231
- padding: var(--m-space-5);
232
- border: 1px solid var(--m-color-border);
233
- border-radius: var(--m-radius-md);
234
- background: color-mix(in srgb, var(--m-color-primary) 8%, var(--m-color-surface));
195
+ css: `.landing-hero {
196
+ display: flex;
197
+ flex-direction: column;
198
+ gap: var(--m-space-4);
199
+ padding: clamp(2rem, 5vw, 4rem) var(--m-space-6);
200
+ background: var(--m-color-surface);
201
+ border-bottom: 1px solid var(--m-color-border);
202
+ }
203
+ .landing-hero__brand {
204
+ margin: 0;
205
+ font-size: var(--m-font-size-sm);
206
+ letter-spacing: 0.08em;
207
+ text-transform: uppercase;
208
+ color: var(--m-color-primary);
209
+ }
210
+ .landing-hero__title {
211
+ margin: 0;
212
+ max-width: 18ch;
213
+ font-size: clamp(2rem, 4vw, 3rem);
214
+ line-height: 1.15;
215
+ color: var(--m-color-text);
216
+ }
217
+ .landing-hero__lead {
218
+ margin: 0;
219
+ max-width: 36rem;
220
+ color: var(--m-color-text-muted);
221
+ font-size: var(--m-font-size-md);
222
+ }
223
+ .landing-hero__actions {
224
+ display: flex;
225
+ flex-wrap: wrap;
226
+ gap: var(--m-space-3);
227
+ }
228
+ .landing-hero__visual {
229
+ margin-top: var(--m-space-5);
230
+ min-height: 12rem;
231
+ padding: var(--m-space-5);
232
+ border: 1px solid var(--m-color-border);
233
+ border-radius: var(--m-radius-md);
234
+ background: color-mix(in srgb, var(--m-color-primary) 8%, var(--m-color-surface));
235
235
  }`,
236
236
  },
237
237
  ];