@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.
- package/LICENSE +21 -21
- package/README.md +154 -154
- package/bin/morya-ui-mcp.js +2 -2
- package/data/catalog.json +243 -233
- package/data/example-coverage.json +2 -2
- package/data/golden-pages/dashboard-page.vue +161 -161
- package/data/golden-pages/detail-page.vue +147 -147
- package/data/golden-pages/empty-state.vue +56 -56
- package/data/golden-pages/form-in-dialog.vue +166 -166
- package/data/golden-pages/form-page.vue +107 -107
- package/data/golden-pages/landing-page.vue +382 -382
- package/data/golden-pages/list-page-dense.vue +168 -168
- package/data/golden-pages/list-page-rail.vue +272 -272
- package/data/golden-pages/list-page.vue +222 -222
- package/data/golden-pages/login-page.vue +244 -244
- package/data/golden-pages/result-page.vue +84 -84
- package/data/golden-pages/settings-page.vue +163 -163
- package/data/golden-pages/wizard-form.vue +167 -167
- package/dist/__tests__/tools.test.js +2 -2
- package/dist/decisions.js +8 -8
- package/dist/page-snippets.js +673 -673
- package/dist/patterns.d.ts +1 -1
- package/dist/patterns.js +2 -2
- package/dist/reference-brief.js +2 -2
- package/dist/style-shells.js +153 -153
- package/dist/tools.js +193 -193
- package/package.json +1 -1
package/dist/patterns.d.ts
CHANGED
|
@@ -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 服务宿主,勿臆造
|
|
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
|
|
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 服务宿主,勿臆造
|
|
805
|
+
'MMessage 组件当前主要为 message 服务宿主,勿臆造 type / 子节点 Alert API',
|
|
806
806
|
],
|
|
807
807
|
},
|
|
808
808
|
doc: 'design-kit/.agents/skills/morya-ui-pages/references/feedback.md',
|
package/dist/reference-brief.js
CHANGED
|
@@ -89,8 +89,8 @@ const BLOCK_TO_SNIPPET = {
|
|
|
89
89
|
},
|
|
90
90
|
kpi: {
|
|
91
91
|
snippetId: 'dashboard-kpi-grid',
|
|
92
|
-
notesZh: 'MPageStat 带 trend / trendDirection /
|
|
93
|
-
notesEn: 'MPageStat with trend / trendDirection /
|
|
92
|
+
notesZh: 'MPageStat 带 trend / trendDirection / trendType',
|
|
93
|
+
notesEn: 'MPageStat with trend / trendDirection / trendType',
|
|
94
94
|
},
|
|
95
95
|
chart: {
|
|
96
96
|
snippetId: 'dashboard-chart-card',
|
package/dist/style-shells.js
CHANGED
|
@@ -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
|
];
|