@empline/preflight 1.1.9 → 1.1.11
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/dist/checks/card-processing/image-workflow-validation.js +37 -5
- package/dist/checks/card-processing/image-workflow-validation.js.map +1 -1
- package/dist/checks/card-processing/import-workflow-validation.d.ts +23 -0
- package/dist/checks/card-processing/import-workflow-validation.d.ts.map +1 -0
- package/dist/checks/card-processing/import-workflow-validation.js +518 -0
- package/dist/checks/card-processing/import-workflow-validation.js.map +1 -0
- package/dist/checks/turbopack/prisma-computed-property.d.ts +45 -0
- package/dist/checks/turbopack/prisma-computed-property.d.ts.map +1 -0
- package/dist/checks/turbopack/prisma-computed-property.js +319 -0
- package/dist/checks/turbopack/prisma-computed-property.js.map +1 -0
- package/dist/checks/ui/ui-consistency-validation.d.ts +51 -6
- package/dist/checks/ui/ui-consistency-validation.d.ts.map +1 -1
- package/dist/checks/ui/ui-consistency-validation.js +438 -26
- package/dist/checks/ui/ui-consistency-validation.js.map +1 -1
- package/dist/checks/ui/z-index-check.d.ts.map +1 -1
- package/dist/checks/ui/z-index-check.js +12 -3
- package/dist/checks/ui/z-index-check.js.map +1 -1
- package/dist/utils/console-chars.d.ts +2 -0
- package/dist/utils/console-chars.d.ts.map +1 -1
- package/dist/utils/console-chars.js +1 -0
- package/dist/utils/console-chars.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,10 +7,14 @@
|
|
|
7
7
|
* These are patterns that apply to all pages, not just integrations.
|
|
8
8
|
*
|
|
9
9
|
* Checks:
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
* -
|
|
13
|
-
*
|
|
10
|
+
* 1. Pagination consolidation - must use UnifiedPagination, not BottomPagination/DataTablePagination
|
|
11
|
+
* 2. Hardcoded colors - must use design tokens (var(--color-*))
|
|
12
|
+
* 3. Responsive breakpoints - must have tablet breakpoints (sm, md), not just xs→lg jumps
|
|
13
|
+
* 4. Metric component consolidation - must use StatCard/CompactStatCard
|
|
14
|
+
* 5. Accessibility - buttons and interactive elements must have ARIA labels
|
|
15
|
+
* 6. Error handling - fetch calls must have catch, forms must have error states
|
|
16
|
+
* 7. Loading states - async operations must disable buttons and show loading indicators
|
|
17
|
+
* 8. Micro-interactions - save confirmations, button feedback
|
|
14
18
|
*
|
|
15
19
|
* Usage:
|
|
16
20
|
* pnpm preflight:ui-consistency
|
|
@@ -62,13 +66,14 @@ exports.name = "UI Consistency Validation";
|
|
|
62
66
|
exports.description = "Validates general UI/UX patterns for consistency across the application";
|
|
63
67
|
exports.category = "ui";
|
|
64
68
|
exports.blocking = false;
|
|
65
|
-
exports.tags = ["ui", "ux", "consistency", "accessibility", "loading-states"];
|
|
69
|
+
exports.tags = ["ui", "ux", "consistency", "accessibility", "loading-states", "design-tokens", "pagination", "responsive"];
|
|
66
70
|
// Files/patterns to exclude from checks
|
|
67
71
|
const EXCLUDED_FILES = [
|
|
68
72
|
"Button.examples.tsx",
|
|
69
73
|
"DevErrorBoundary.tsx",
|
|
70
74
|
".stories.tsx",
|
|
71
75
|
".test.tsx",
|
|
76
|
+
"ErrorBoundary.tsx",
|
|
72
77
|
];
|
|
73
78
|
// Directories to exclude
|
|
74
79
|
const EXCLUDED_DIRS = [
|
|
@@ -78,6 +83,41 @@ const EXCLUDED_DIRS = [
|
|
|
78
83
|
"**/dev/**",
|
|
79
84
|
"**/__tests__/**",
|
|
80
85
|
];
|
|
86
|
+
// Deprecated pagination components that should be migrated to UnifiedPagination
|
|
87
|
+
const DEPRECATED_PAGINATION_COMPONENTS = [
|
|
88
|
+
"BottomPagination",
|
|
89
|
+
"DataTablePagination",
|
|
90
|
+
];
|
|
91
|
+
// Allowed design token color patterns
|
|
92
|
+
const DESIGN_TOKEN_PATTERNS = [
|
|
93
|
+
/var\(--color-/,
|
|
94
|
+
/var\(--/,
|
|
95
|
+
/text-\w+/, // Tailwind text colors
|
|
96
|
+
/bg-\w+/, // Tailwind bg colors
|
|
97
|
+
/border-\w+/, // Tailwind border colors
|
|
98
|
+
/currentColor/,
|
|
99
|
+
/inherit/,
|
|
100
|
+
/transparent/,
|
|
101
|
+
];
|
|
102
|
+
// Patterns that indicate hardcoded colors (problematic)
|
|
103
|
+
const HARDCODED_COLOR_PATTERNS = [
|
|
104
|
+
/#[0-9a-fA-F]{3,6}\b/, // Hex colors
|
|
105
|
+
/rgb\(\s*\d+/, // RGB colors
|
|
106
|
+
/rgba\(\s*\d+/, // RGBA colors
|
|
107
|
+
/hsl\(\s*\d+/, // HSL colors
|
|
108
|
+
];
|
|
109
|
+
// Exceptions for hardcoded colors (known acceptable uses)
|
|
110
|
+
const HARDCODED_COLOR_EXCEPTIONS = [
|
|
111
|
+
"DevErrorBoundary",
|
|
112
|
+
".stories.",
|
|
113
|
+
"skeleton", // Skeleton loaders often need specific colors
|
|
114
|
+
"gradient", // Gradients may need specific stops
|
|
115
|
+
];
|
|
116
|
+
// Deprecated metric components to consolidate
|
|
117
|
+
const DEPRECATED_METRIC_COMPONENTS = [
|
|
118
|
+
"MetricStatsCard",
|
|
119
|
+
"DashboardMetric",
|
|
120
|
+
];
|
|
81
121
|
class UIConsistencyPreflight {
|
|
82
122
|
verbose;
|
|
83
123
|
constructor(options = {}) {
|
|
@@ -93,17 +133,228 @@ class UIConsistencyPreflight {
|
|
|
93
133
|
return EXCLUDED_FILES.some(excl => fileName.includes(excl));
|
|
94
134
|
}
|
|
95
135
|
/**
|
|
96
|
-
*
|
|
136
|
+
* Check 1: Pagination Component Consolidation
|
|
137
|
+
* Ensures deprecated pagination components are not used
|
|
138
|
+
*/
|
|
139
|
+
validatePaginationConsolidation() {
|
|
140
|
+
const startTime = Date.now();
|
|
141
|
+
const errors = [];
|
|
142
|
+
const warnings = [];
|
|
143
|
+
const patterns = ["app/**/*.tsx", "components/**/*.tsx"];
|
|
144
|
+
const files = [];
|
|
145
|
+
for (const pattern of patterns) {
|
|
146
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
147
|
+
files.push(...matches);
|
|
148
|
+
}
|
|
149
|
+
for (const filePath of files) {
|
|
150
|
+
const content = this.readFile(filePath);
|
|
151
|
+
if (!content)
|
|
152
|
+
continue;
|
|
153
|
+
const fileName = path.basename(filePath);
|
|
154
|
+
if (this.shouldExclude(fileName))
|
|
155
|
+
continue;
|
|
156
|
+
// Skip the actual component definition files
|
|
157
|
+
if (fileName === "BottomPagination.tsx" || fileName === "DataTablePagination.tsx") {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
for (const deprecated of DEPRECATED_PAGINATION_COMPONENTS) {
|
|
161
|
+
// Check for imports
|
|
162
|
+
const importPattern = new RegExp(`import.*${deprecated}|from.*${deprecated}`, "g");
|
|
163
|
+
if (importPattern.test(content)) {
|
|
164
|
+
errors.push(`${filePath}: Uses deprecated ${deprecated}. Migrate to UnifiedPagination with appropriate variant.`);
|
|
165
|
+
}
|
|
166
|
+
// Check for JSX usage
|
|
167
|
+
const jsxPattern = new RegExp(`<${deprecated}`, "g");
|
|
168
|
+
if (jsxPattern.test(content)) {
|
|
169
|
+
errors.push(`${filePath}: Uses deprecated <${deprecated}>. Use <UnifiedPagination variant="simple" wrapped /> instead.`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
name: "Pagination Consolidation",
|
|
175
|
+
passed: errors.length === 0,
|
|
176
|
+
duration: Date.now() - startTime,
|
|
177
|
+
errors,
|
|
178
|
+
warnings,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check 2: Hardcoded Colors
|
|
183
|
+
* Ensures design tokens are used instead of hardcoded color values
|
|
184
|
+
*/
|
|
185
|
+
validateDesignTokens() {
|
|
186
|
+
const startTime = Date.now();
|
|
187
|
+
const errors = [];
|
|
188
|
+
const warnings = [];
|
|
189
|
+
const patterns = ["components/**/*.tsx"];
|
|
190
|
+
const files = [];
|
|
191
|
+
for (const pattern of patterns) {
|
|
192
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
193
|
+
files.push(...matches);
|
|
194
|
+
}
|
|
195
|
+
for (const filePath of files) {
|
|
196
|
+
const content = this.readFile(filePath);
|
|
197
|
+
if (!content)
|
|
198
|
+
continue;
|
|
199
|
+
const fileName = path.basename(filePath);
|
|
200
|
+
if (this.shouldExclude(fileName))
|
|
201
|
+
continue;
|
|
202
|
+
// Check if file has exceptions
|
|
203
|
+
const hasException = HARDCODED_COLOR_EXCEPTIONS.some(exc => filePath.includes(exc));
|
|
204
|
+
if (hasException)
|
|
205
|
+
continue;
|
|
206
|
+
// Check for hardcoded colors in style attributes and className
|
|
207
|
+
for (const pattern of HARDCODED_COLOR_PATTERNS) {
|
|
208
|
+
const matches = content.match(pattern);
|
|
209
|
+
if (matches) {
|
|
210
|
+
// Check if it's in a comment or string that's not a style
|
|
211
|
+
const lines = content.split("\n");
|
|
212
|
+
for (let i = 0; i < lines.length; i++) {
|
|
213
|
+
const line = lines[i];
|
|
214
|
+
if (pattern.test(line)) {
|
|
215
|
+
// Skip comments
|
|
216
|
+
if (line.trim().startsWith("//") || line.trim().startsWith("*"))
|
|
217
|
+
continue;
|
|
218
|
+
// Skip imports
|
|
219
|
+
if (line.includes("import"))
|
|
220
|
+
continue;
|
|
221
|
+
// Check if in style context
|
|
222
|
+
if (line.includes("style=") ||
|
|
223
|
+
line.includes("color:") ||
|
|
224
|
+
line.includes("background") ||
|
|
225
|
+
line.includes("border") ||
|
|
226
|
+
line.includes("fill=") ||
|
|
227
|
+
line.includes("stroke=")) {
|
|
228
|
+
warnings.push(`${fileName}:${i + 1}: Hardcoded color found. Use design tokens (var(--color-*)) instead.`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
name: "Design Tokens",
|
|
237
|
+
passed: true, // Warnings only for now
|
|
238
|
+
duration: Date.now() - startTime,
|
|
239
|
+
errors,
|
|
240
|
+
warnings,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Check 3: Responsive Breakpoints
|
|
245
|
+
* Ensures proper tablet breakpoints exist (not just xs→lg jumps)
|
|
246
|
+
*/
|
|
247
|
+
validateResponsiveBreakpoints() {
|
|
248
|
+
const startTime = Date.now();
|
|
249
|
+
const errors = [];
|
|
250
|
+
const warnings = [];
|
|
251
|
+
const patterns = ["components/**/*.tsx", "app/**/*.tsx"];
|
|
252
|
+
const files = [];
|
|
253
|
+
for (const pattern of patterns) {
|
|
254
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
255
|
+
files.push(...matches);
|
|
256
|
+
}
|
|
257
|
+
for (const filePath of files) {
|
|
258
|
+
const content = this.readFile(filePath);
|
|
259
|
+
if (!content)
|
|
260
|
+
continue;
|
|
261
|
+
const fileName = path.basename(filePath);
|
|
262
|
+
if (this.shouldExclude(fileName))
|
|
263
|
+
continue;
|
|
264
|
+
// Check for xs→lg jumps without sm or md
|
|
265
|
+
// Pattern: xs:something followed by lg:something without sm: or md: in between
|
|
266
|
+
const xsLgJumpPattern = /xs:\S+[^}]*lg:\S+/g;
|
|
267
|
+
const matches = content.match(xsLgJumpPattern) || [];
|
|
268
|
+
for (const match of matches) {
|
|
269
|
+
if (!match.includes("sm:") && !match.includes("md:")) {
|
|
270
|
+
warnings.push(`${fileName}: Consider adding tablet breakpoints (sm:, md:) between xs: and lg: for better responsive design.`);
|
|
271
|
+
break; // One warning per file is enough
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
// Check for Grid components with responsive columns
|
|
275
|
+
if (content.includes("<Grid") && content.includes("xs=") && content.includes("lg=")) {
|
|
276
|
+
if (!content.includes("sm=") && !content.includes("md=")) {
|
|
277
|
+
warnings.push(`${fileName}: Grid has xs and lg columns but missing sm/md. Add tablet breakpoints.`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
name: "Responsive Breakpoints",
|
|
283
|
+
passed: true, // Warnings only
|
|
284
|
+
duration: Date.now() - startTime,
|
|
285
|
+
errors,
|
|
286
|
+
warnings,
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Check 4: Accessibility - ARIA Labels
|
|
291
|
+
* Ensures interactive elements have proper ARIA attributes
|
|
292
|
+
*/
|
|
293
|
+
validateAccessibility() {
|
|
294
|
+
const startTime = Date.now();
|
|
295
|
+
const errors = [];
|
|
296
|
+
const warnings = [];
|
|
297
|
+
const patterns = ["components/**/*.tsx", "app/**/*.tsx"];
|
|
298
|
+
const files = [];
|
|
299
|
+
for (const pattern of patterns) {
|
|
300
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
301
|
+
files.push(...matches);
|
|
302
|
+
}
|
|
303
|
+
for (const filePath of files) {
|
|
304
|
+
const content = this.readFile(filePath);
|
|
305
|
+
if (!content)
|
|
306
|
+
continue;
|
|
307
|
+
const fileName = path.basename(filePath);
|
|
308
|
+
if (this.shouldExclude(fileName))
|
|
309
|
+
continue;
|
|
310
|
+
// Check for icon-only buttons without aria-label
|
|
311
|
+
// Pattern: <Button> or <IconButton> with only icon children
|
|
312
|
+
const iconButtonPattern = /<(?:Button|IconButton)[^>]*>\s*<[A-Z]\w+(?:Icon)?[^>]*\/>\s*<\/(?:Button|IconButton)>/g;
|
|
313
|
+
const iconButtons = content.match(iconButtonPattern) || [];
|
|
314
|
+
for (const btn of iconButtons) {
|
|
315
|
+
if (!btn.includes("aria-label") && !btn.includes("label=")) {
|
|
316
|
+
warnings.push(`${fileName}: Icon-only button found without aria-label. Add aria-label for accessibility.`);
|
|
317
|
+
break;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
// Check for clickable divs without role
|
|
321
|
+
if (content.includes("onClick") && content.includes("<div")) {
|
|
322
|
+
const clickableDivPattern = /<div[^>]*onClick[^>]*>/g;
|
|
323
|
+
const clickableDivs = content.match(clickableDivPattern) || [];
|
|
324
|
+
for (const div of clickableDivs) {
|
|
325
|
+
if (!div.includes("role=") && !div.includes("tabIndex")) {
|
|
326
|
+
warnings.push(`${fileName}: Clickable div found. Consider using <button> or adding role="button" and tabIndex.`);
|
|
327
|
+
break;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
// Check for images without alt text
|
|
332
|
+
const imgPattern = /<img[^>]*>/g;
|
|
333
|
+
const imgs = content.match(imgPattern) || [];
|
|
334
|
+
for (const img of imgs) {
|
|
335
|
+
if (!img.includes("alt=") && !img.includes("alt={")) {
|
|
336
|
+
errors.push(`${fileName}: Image found without alt attribute.`);
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return {
|
|
342
|
+
name: "Accessibility",
|
|
343
|
+
passed: errors.length === 0,
|
|
344
|
+
duration: Date.now() - startTime,
|
|
345
|
+
errors,
|
|
346
|
+
warnings,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Check 5: Error Handling
|
|
351
|
+
* Ensures proper error handling for async operations
|
|
97
352
|
*/
|
|
98
|
-
|
|
353
|
+
validateErrorHandling() {
|
|
99
354
|
const startTime = Date.now();
|
|
100
355
|
const errors = [];
|
|
101
356
|
const warnings = [];
|
|
102
|
-
|
|
103
|
-
const patterns = [
|
|
104
|
-
"app/**/page.tsx",
|
|
105
|
-
"app/**/*Client.tsx",
|
|
106
|
-
];
|
|
357
|
+
const patterns = ["app/**/page.tsx", "app/**/*Client.tsx", "components/**/*.tsx"];
|
|
107
358
|
const files = [];
|
|
108
359
|
for (const pattern of patterns) {
|
|
109
360
|
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
@@ -114,19 +365,16 @@ class UIConsistencyPreflight {
|
|
|
114
365
|
if (!content)
|
|
115
366
|
continue;
|
|
116
367
|
const fileName = path.basename(filePath);
|
|
117
|
-
// Skip excluded files
|
|
118
368
|
if (this.shouldExclude(fileName))
|
|
119
369
|
continue;
|
|
120
|
-
// CHECK
|
|
121
|
-
// Pattern: onClick={async () => { ... fetch ... }}
|
|
370
|
+
// CHECK: Inline async onClick with fetch must be extracted
|
|
122
371
|
const inlineAsyncFetchPattern = /onClick=\{async\s*\([^)]*\)\s*=>\s*\{[^}]*fetch\(/g;
|
|
123
372
|
const inlineAsyncMatches = content.match(inlineAsyncFetchPattern) || [];
|
|
124
373
|
if (inlineAsyncMatches.length > 0) {
|
|
125
374
|
errors.push(`${fileName}: Extract inline async onClick handlers to named functions (found ${inlineAsyncMatches.length})`);
|
|
126
375
|
}
|
|
127
|
-
// CHECK
|
|
376
|
+
// CHECK: Network errors must be handled
|
|
128
377
|
if (content.includes("fetch(")) {
|
|
129
|
-
// Check if there's any form of error handling
|
|
130
378
|
const hasTryCatch = content.includes("try") && content.includes("catch");
|
|
131
379
|
const hasDotCatch = content.includes(".catch(");
|
|
132
380
|
const hasErrorHandling = hasTryCatch || hasDotCatch;
|
|
@@ -134,28 +382,143 @@ class UIConsistencyPreflight {
|
|
|
134
382
|
errors.push(`${fileName}: fetch() calls must have error handling (try/catch or .catch())`);
|
|
135
383
|
}
|
|
136
384
|
}
|
|
137
|
-
// CHECK
|
|
385
|
+
// CHECK: Form submissions should show error state
|
|
386
|
+
if (content.includes("onSubmit") || content.includes("handleSubmit")) {
|
|
387
|
+
if (!content.includes("error") && !content.includes("Error")) {
|
|
388
|
+
warnings.push(`${fileName}: Form found without apparent error state handling.`);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
return {
|
|
393
|
+
name: "Error Handling",
|
|
394
|
+
passed: errors.length === 0,
|
|
395
|
+
duration: Date.now() - startTime,
|
|
396
|
+
errors,
|
|
397
|
+
warnings,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
/**
|
|
401
|
+
* Check 6: Loading States
|
|
402
|
+
* Ensures async operations have proper loading indicators
|
|
403
|
+
*/
|
|
404
|
+
validateLoadingStates() {
|
|
405
|
+
const startTime = Date.now();
|
|
406
|
+
const errors = [];
|
|
407
|
+
const warnings = [];
|
|
408
|
+
const patterns = ["app/**/page.tsx", "app/**/*Client.tsx"];
|
|
409
|
+
const files = [];
|
|
410
|
+
for (const pattern of patterns) {
|
|
411
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
412
|
+
files.push(...matches);
|
|
413
|
+
}
|
|
414
|
+
for (const filePath of files) {
|
|
415
|
+
const content = this.readFile(filePath);
|
|
416
|
+
if (!content)
|
|
417
|
+
continue;
|
|
418
|
+
const fileName = path.basename(filePath);
|
|
419
|
+
if (this.shouldExclude(fileName))
|
|
420
|
+
continue;
|
|
421
|
+
// CHECK: Files with fetch should have loading state
|
|
422
|
+
if (content.includes("fetch(") || content.includes("useMutation") || content.includes("useQuery")) {
|
|
423
|
+
const hasLoadingState = content.includes("isLoading") ||
|
|
424
|
+
content.includes("loading") ||
|
|
425
|
+
content.includes("isPending") ||
|
|
426
|
+
content.includes("Skeleton") ||
|
|
427
|
+
content.includes("Spinner");
|
|
428
|
+
if (!hasLoadingState) {
|
|
429
|
+
warnings.push(`${fileName}: Async operation found without apparent loading state.`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
// CHECK: Buttons that trigger async actions should be disabled during loading
|
|
433
|
+
if (content.includes("isLoading") || content.includes("loading")) {
|
|
434
|
+
const hasDisabledLoading = content.includes("disabled={isLoading") ||
|
|
435
|
+
content.includes("disabled={loading") ||
|
|
436
|
+
content.includes("disabled: isLoading") ||
|
|
437
|
+
content.includes("disabled: loading");
|
|
438
|
+
if (!hasDisabledLoading && content.includes("<Button")) {
|
|
439
|
+
warnings.push(`${fileName}: Loading state exists but buttons may not be disabled during loading.`);
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
return {
|
|
444
|
+
name: "Loading States",
|
|
445
|
+
passed: true, // Warnings only
|
|
446
|
+
duration: Date.now() - startTime,
|
|
447
|
+
errors,
|
|
448
|
+
warnings,
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Check 7: Wizard Reset Functionality
|
|
453
|
+
* Ensures multi-step wizards have reset capability
|
|
454
|
+
*/
|
|
455
|
+
validateWizardReset() {
|
|
456
|
+
const startTime = Date.now();
|
|
457
|
+
const errors = [];
|
|
458
|
+
const warnings = [];
|
|
459
|
+
const patterns = ["app/**/page.tsx", "app/**/*Client.tsx", "components/**/*.tsx"];
|
|
460
|
+
const files = [];
|
|
461
|
+
for (const pattern of patterns) {
|
|
462
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
463
|
+
files.push(...matches);
|
|
464
|
+
}
|
|
465
|
+
for (const filePath of files) {
|
|
466
|
+
const content = this.readFile(filePath);
|
|
467
|
+
if (!content)
|
|
468
|
+
continue;
|
|
469
|
+
const fileName = path.basename(filePath);
|
|
470
|
+
if (this.shouldExclude(fileName))
|
|
471
|
+
continue;
|
|
472
|
+
// CHECK: Multi-step wizard should have reset functionality
|
|
138
473
|
if (content.includes("activeStep") && content.includes("setActiveStep")) {
|
|
139
474
|
const hasReset = content.includes("handleReset") ||
|
|
140
475
|
content.includes("onReset") ||
|
|
141
476
|
content.includes("setActiveStep(0)");
|
|
142
477
|
if (!hasReset) {
|
|
143
|
-
warnings.push(`${fileName}: Multi-step wizard should have reset functionality
|
|
478
|
+
warnings.push(`${fileName}: Multi-step wizard should have reset functionality.`);
|
|
144
479
|
}
|
|
145
480
|
}
|
|
146
|
-
|
|
147
|
-
|
|
481
|
+
}
|
|
482
|
+
return {
|
|
483
|
+
name: "Wizard Reset",
|
|
484
|
+
passed: true, // Warnings only
|
|
485
|
+
duration: Date.now() - startTime,
|
|
486
|
+
errors,
|
|
487
|
+
warnings,
|
|
488
|
+
};
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Check 8: Password Fields
|
|
492
|
+
* Ensures secret fields use password type
|
|
493
|
+
*/
|
|
494
|
+
validatePasswordFields() {
|
|
495
|
+
const startTime = Date.now();
|
|
496
|
+
const errors = [];
|
|
497
|
+
const warnings = [];
|
|
498
|
+
const patterns = ["app/**/*.tsx", "components/**/*.tsx"];
|
|
499
|
+
const files = [];
|
|
500
|
+
for (const pattern of patterns) {
|
|
501
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
502
|
+
files.push(...matches);
|
|
503
|
+
}
|
|
504
|
+
for (const filePath of files) {
|
|
505
|
+
const content = this.readFile(filePath);
|
|
506
|
+
if (!content)
|
|
507
|
+
continue;
|
|
508
|
+
const fileName = path.basename(filePath);
|
|
509
|
+
if (this.shouldExclude(fileName))
|
|
510
|
+
continue;
|
|
511
|
+
// CHECK: Password type for secret fields
|
|
148
512
|
if (content.includes("TextField") || content.includes("<input")) {
|
|
149
513
|
const secretLabels = ["Secret", "Token", "Password", "ApiKey", "AccessToken"];
|
|
150
514
|
for (const secret of secretLabels) {
|
|
151
515
|
const labelPattern = new RegExp(`label=["'][^"']*${secret}[^"']*["']`, "i");
|
|
152
516
|
if (labelPattern.test(content)) {
|
|
153
|
-
// Check for type="password" OR dynamic toggle
|
|
154
517
|
const hasPasswordType = new RegExp(`type=["']password["']`, "i").test(content) ||
|
|
155
518
|
content.includes("showPassword") ||
|
|
156
519
|
content.includes("type={");
|
|
157
520
|
if (!hasPasswordType) {
|
|
158
|
-
warnings.push(`${fileName}: Field with
|
|
521
|
+
warnings.push(`${fileName}: Field with "${secret}" label should use type="password".`);
|
|
159
522
|
break;
|
|
160
523
|
}
|
|
161
524
|
}
|
|
@@ -163,8 +526,48 @@ class UIConsistencyPreflight {
|
|
|
163
526
|
}
|
|
164
527
|
}
|
|
165
528
|
return {
|
|
166
|
-
name: "
|
|
167
|
-
passed:
|
|
529
|
+
name: "Password Fields",
|
|
530
|
+
passed: true, // Warnings only
|
|
531
|
+
duration: Date.now() - startTime,
|
|
532
|
+
errors,
|
|
533
|
+
warnings,
|
|
534
|
+
};
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Check 9: Metric Component Consolidation
|
|
538
|
+
* Ensures deprecated metric components are not used
|
|
539
|
+
*/
|
|
540
|
+
validateMetricConsolidation() {
|
|
541
|
+
const startTime = Date.now();
|
|
542
|
+
const errors = [];
|
|
543
|
+
const warnings = [];
|
|
544
|
+
const patterns = ["app/**/*.tsx", "components/**/*.tsx"];
|
|
545
|
+
const files = [];
|
|
546
|
+
for (const pattern of patterns) {
|
|
547
|
+
const matches = glob_1.glob.sync(pattern, { ignore: EXCLUDED_DIRS });
|
|
548
|
+
files.push(...matches);
|
|
549
|
+
}
|
|
550
|
+
for (const filePath of files) {
|
|
551
|
+
const content = this.readFile(filePath);
|
|
552
|
+
if (!content)
|
|
553
|
+
continue;
|
|
554
|
+
const fileName = path.basename(filePath);
|
|
555
|
+
if (this.shouldExclude(fileName))
|
|
556
|
+
continue;
|
|
557
|
+
// Skip the actual component definition files
|
|
558
|
+
if (fileName === "MetricStatsCard.tsx" || fileName === "DashboardMetric.tsx") {
|
|
559
|
+
continue;
|
|
560
|
+
}
|
|
561
|
+
for (const deprecated of DEPRECATED_METRIC_COMPONENTS) {
|
|
562
|
+
const importPattern = new RegExp(`import.*${deprecated}|from.*${deprecated}`, "g");
|
|
563
|
+
if (importPattern.test(content)) {
|
|
564
|
+
warnings.push(`${filePath}: Uses ${deprecated}. Consider using StatCard or CompactStatCard for consistency.`);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
return {
|
|
569
|
+
name: "Metric Consolidation",
|
|
570
|
+
passed: true, // Warnings only
|
|
168
571
|
duration: Date.now() - startTime,
|
|
169
572
|
errors,
|
|
170
573
|
warnings,
|
|
@@ -177,7 +580,16 @@ class UIConsistencyPreflight {
|
|
|
177
580
|
console.log("\n" + console_chars_1.emoji.globe + " UI CONSISTENCY VALIDATION");
|
|
178
581
|
console.log((0, console_chars_1.createDivider)(60, "heavy"));
|
|
179
582
|
const results = [];
|
|
180
|
-
|
|
583
|
+
// Run all validation checks
|
|
584
|
+
results.push(this.validatePaginationConsolidation());
|
|
585
|
+
results.push(this.validateDesignTokens());
|
|
586
|
+
results.push(this.validateResponsiveBreakpoints());
|
|
587
|
+
results.push(this.validateAccessibility());
|
|
588
|
+
results.push(this.validateErrorHandling());
|
|
589
|
+
results.push(this.validateLoadingStates());
|
|
590
|
+
results.push(this.validateWizardReset());
|
|
591
|
+
results.push(this.validatePasswordFields());
|
|
592
|
+
results.push(this.validateMetricConsolidation());
|
|
181
593
|
this.printResults(results);
|
|
182
594
|
const allPassed = results.every((r) => r.passed);
|
|
183
595
|
return { passed: allPassed, results };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-consistency-validation.js","sourceRoot":"","sources":["../../../src/checks/ui/ui-consistency-validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ui-consistency-validation.js","sourceRoot":"","sources":["../../../src/checks/ui/ui-consistency-validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"z-index-check.d.ts","sourceRoot":"","sources":["../../../src/checks/ui/z-index-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,eAAO,MAAM,EAAE,qBAAqB,CAAC;AACrC,eAAO,MAAM,IAAI,kBAAkB,CAAC;AACpC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,6CAA6C,CAAC;AACtE,eAAO,MAAM,IAAI,UAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"z-index-check.d.ts","sourceRoot":"","sources":["../../../src/checks/ui/z-index-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAUH,eAAO,MAAM,EAAE,qBAAqB,CAAC;AACrC,eAAO,MAAM,IAAI,kBAAkB,CAAC;AACpC,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,QAAQ,OAAO,CAAC;AAC7B,eAAO,MAAM,WAAW,6CAA6C,CAAC;AACtE,eAAO,MAAM,IAAI,UAAS,CAAC;AAojB3B;;GAEG;AACH,wBAAsB,GAAG,kBAqIxB"}
|
|
@@ -72,10 +72,11 @@ const Z_INDEX_TOKEN_MAP = {
|
|
|
72
72
|
2: "var(--z-content-mid)",
|
|
73
73
|
10: "var(--z-content-overlay)",
|
|
74
74
|
20: "var(--z-content-controls)",
|
|
75
|
+
50: "var(--z-sticky-content)", // Page-level sticky elements (below header)
|
|
75
76
|
100: "var(--z-header)",
|
|
76
77
|
200: "var(--z-sidebar)",
|
|
77
78
|
300: "var(--z-navigation)",
|
|
78
|
-
1000: "var(--z-sticky)",
|
|
79
|
+
1000: "var(--z-sticky)", // Main site header sticky
|
|
79
80
|
1010: "var(--z-fixed)",
|
|
80
81
|
1030: "var(--z-dropdown)",
|
|
81
82
|
1040: "var(--z-header-dropdown)",
|
|
@@ -430,10 +431,18 @@ function determineSuggestedZIndex(context, file) {
|
|
|
430
431
|
if (/drawer|sidebar/i.test(file) || /drawer|sidebar/i.test(context)) {
|
|
431
432
|
return "var(--z-drawer)";
|
|
432
433
|
}
|
|
433
|
-
// Header/Nav
|
|
434
|
-
if (/
|
|
434
|
+
// Main site Header/Nav (unified header, app bar)
|
|
435
|
+
if (/UnifiedHeader|AppBar/i.test(file) || /site.*header|main.*nav/i.test(context)) {
|
|
435
436
|
return "var(--z-sticky)";
|
|
436
437
|
}
|
|
438
|
+
// Page-level sticky content (ProductActionBar, etc.) - BELOW header dropdowns
|
|
439
|
+
if (/ActionBar|sticky/i.test(file) || /sticky.*top|position.*sticky/i.test(context)) {
|
|
440
|
+
return "var(--z-sticky-content)";
|
|
441
|
+
}
|
|
442
|
+
// Other header/nav elements
|
|
443
|
+
if (/header|nav|appbar/i.test(file) || /header|nav/i.test(context)) {
|
|
444
|
+
return "var(--z-header)";
|
|
445
|
+
}
|
|
437
446
|
// Overlay/Backdrop
|
|
438
447
|
if (/overlay|backdrop/i.test(file) || /overlay|backdrop/i.test(context)) {
|
|
439
448
|
return "var(--z-backdrop)";
|