@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.
@@ -7,10 +7,14 @@
7
7
  * These are patterns that apply to all pages, not just integrations.
8
8
  *
9
9
  * Checks:
10
- * - Buttons disabled during loading states (async action buttons only)
11
- * - Extracted async handlers (not inline)
12
- * - Network error handling (fetch calls must have catch)
13
- * - Multi-step wizard reset functionality
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
- * Validate UI consistency across relevant files
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
- validateUIConsistency() {
353
+ validateErrorHandling() {
99
354
  const startTime = Date.now();
100
355
  const errors = [];
101
356
  const warnings = [];
102
- // Find all page and client component files
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 1: Inline async onClick with fetch must be extracted
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 2: Network errors must be handled
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 3: Multi-step wizard should have reset functionality
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
- // CHECK 4: Password type for secret fields in forms
147
- // Only check files with form inputs
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 label containing "${secret}" should use type="password"`);
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: "UI Consistency",
167
- passed: errors.length === 0,
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
- results.push(this.validateUIConsistency());
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":";;AACA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AAEzB,2CAA6B;AAE7B,6DAAiE;AACjE,uFAAwF;AACxF,+BAA4B;AAE5B,kDAAkD;AAErC,QAAA,EAAE,GAAG,8BAA8B,CAAC;AACpC,QAAA,IAAI,GAAG,2BAA2B,CAAC;AACnC,QAAA,WAAW,GAAG,yEAAyE,CAAC;AACxF,QAAA,QAAQ,GAAG,IAAI,CAAC;AAChB,QAAA,QAAQ,GAAG,KAAK,CAAC;AACjB,QAAA,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;AAUhI,wCAAwC;AACxC,MAAM,cAAc,GAAG;IACrB,qBAAqB;IACrB,sBAAsB;IACtB,cAAc;IACd,WAAW;IACX,mBAAmB;CACpB,CAAC;AAEF,yBAAyB;AACzB,MAAM,aAAa,GAAG;IACpB,oBAAoB;IACpB,aAAa;IACb,WAAW;IACX,WAAW;IACX,iBAAiB;CAClB,CAAC;AAEF,gFAAgF;AAChF,MAAM,gCAAgC,GAAG;IACvC,kBAAkB;IAClB,qBAAqB;CACtB,CAAC;AAEF,sCAAsC;AACtC,MAAM,qBAAqB,GAAG;IAC5B,eAAe;IACf,SAAS;IACT,UAAU,EAAG,uBAAuB;IACpC,QAAQ,EAAK,qBAAqB;IAClC,YAAY,EAAE,yBAAyB;IACvC,cAAc;IACd,SAAS;IACT,aAAa;CACd,CAAC;AAEF,wDAAwD;AACxD,MAAM,wBAAwB,GAAG;IAC/B,qBAAqB,EAAG,aAAa;IACrC,aAAa,EAAW,aAAa;IACrC,cAAc,EAAU,cAAc;IACtC,aAAa,EAAW,aAAa;CACtC,CAAC;AAEF,0DAA0D;AAC1D,MAAM,0BAA0B,GAAG;IACjC,kBAAkB;IAClB,WAAW;IACX,UAAU,EAAG,8CAA8C;IAC3D,UAAU,EAAG,oCAAoC;CAClD,CAAC;AAEF,8CAA8C;AAC9C,MAAM,4BAA4B,GAAG;IACnC,iBAAiB;IACjB,iBAAiB;CAClB,CAAC;AAEF,MAAM,sBAAsB;IAClB,OAAO,CAAU;IAEzB,YAAY,UAAiC,EAAE;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAC1C,CAAC;IAEO,QAAQ,CAAC,QAAgB;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,aAAa,CAAC,QAAgB;QACpC,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACK,+BAA+B;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,6CAA6C;YAC7C,IAAI,QAAQ,KAAK,sBAAsB,IAAI,QAAQ,KAAK,yBAAyB,EAAE,CAAC;gBAClF,SAAS;YACX,CAAC;YAED,KAAK,MAAM,UAAU,IAAI,gCAAgC,EAAE,CAAC;gBAC1D,oBAAoB;gBACpB,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,WAAW,UAAU,UAAU,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnF,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,MAAM,CAAC,IAAI,CACT,GAAG,QAAQ,qBAAqB,UAAU,0DAA0D,CACrG,CAAC;gBACJ,CAAC;gBAED,sBAAsB;gBACtB,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,IAAI,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;gBACrD,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7B,MAAM,CAAC,IAAI,CACT,GAAG,QAAQ,sBAAsB,UAAU,gEAAgE,CAC5G,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,0BAA0B;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,oBAAoB;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACzC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,+BAA+B;YAC/B,MAAM,YAAY,GAAG,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACpF,IAAI,YAAY;gBAAE,SAAS;YAE3B,+DAA+D;YAC/D,KAAK,MAAM,OAAO,IAAI,wBAAwB,EAAE,CAAC;gBAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvC,IAAI,OAAO,EAAE,CAAC;oBACZ,0DAA0D;oBAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACtB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;4BACvB,gBAAgB;4BAChB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gCAAE,SAAS;4BAC1E,eAAe;4BACf,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCAAE,SAAS;4BAEtC,4BAA4B;4BAC5B,IACE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCACvB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCACvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;gCAC3B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gCACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gCACtB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EACxB,CAAC;gCACD,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,IAAI,CAAC,GAAG,CAAC,sEAAsE,CAC3F,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,IAAI,EAAE,wBAAwB;YACtC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,6BAA6B;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,yCAAyC;YACzC,+EAA+E;YAC/E,MAAM,eAAe,GAAG,oBAAoB,CAAC;YAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YAErD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACrD,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,mGAAmG,CAC/G,CAAC;oBACF,MAAM,CAAC,iCAAiC;gBAC1C,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzD,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,yEAAyE,CACrF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,wBAAwB;YAC9B,MAAM,EAAE,IAAI,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,qBAAqB;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,iDAAiD;YACjD,4DAA4D;YAC5D,MAAM,iBAAiB,GAAG,wFAAwF,CAAC;YACnH,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;YAC3D,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3D,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,gFAAgF,CAC5F,CAAC;oBACF,MAAM;gBACR,CAAC;YACH,CAAC;YAED,wCAAwC;YACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;gBACtD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;gBAC/D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;oBAChC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;wBACxD,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,sFAAsF,CAClG,CAAC;wBACF,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,oCAAoC;YACpC,MAAM,UAAU,GAAG,aAAa,CAAC;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACpD,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,sCAAsC,CAAC,CAAC;oBAC/D,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,eAAe;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,qBAAqB;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QAClF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,2DAA2D;YAC3D,MAAM,uBAAuB,GAAG,oDAAoD,CAAC;YACrF,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC;YACxE,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CACT,GAAG,QAAQ,qEAAqE,kBAAkB,CAAC,MAAM,GAAG,CAC7G,CAAC;YACJ,CAAC;YAED,wCAAwC;YACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAChD,MAAM,gBAAgB,GAAG,WAAW,IAAI,WAAW,CAAC;gBAEpD,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,kEAAkE,CAAC,CAAC;gBAC7F,CAAC;YACH,CAAC;YAED,kDAAkD;YAClD,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC7D,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,qDAAqD,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC3B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,qBAAqB;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,oDAAoD;YACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClG,MAAM,eAAe,GACnB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;oBAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;oBAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;gBAE9B,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,yDAAyD,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;YAED,8EAA8E;YAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACjE,MAAM,kBAAkB,GACtB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;oBACrC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;gBAExC,IAAI,CAAC,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvD,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,wEAAwE,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,IAAI,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,mBAAmB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;QAClF,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,2DAA2D;YAC3D,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACxE,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,sDAAsD,CAAC,CAAC;gBACnF,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,IAAI,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,sBAAsB;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,yCAAyC;YACzC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChE,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAC9E,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;oBAClC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,mBAAmB,MAAM,YAAY,EAAE,GAAG,CAAC,CAAC;oBAC5E,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBAC/B,MAAM,eAAe,GACnB,IAAI,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;4BACtD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;4BAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;4BACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,iBAAiB,MAAM,qCAAqC,CAAC,CAAC;4BACvF,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,2BAA2B;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,WAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE3C,6CAA6C;YAC7C,IAAI,QAAQ,KAAK,qBAAqB,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;gBAC7E,SAAS;YACX,CAAC;YAED,KAAK,MAAM,UAAU,IAAI,4BAA4B,EAAE,CAAC;gBACtD,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,WAAW,UAAU,UAAU,UAAU,EAAE,EAAE,GAAG,CAAC,CAAC;gBACnF,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,QAAQ,CAAC,IAAI,CACX,GAAG,QAAQ,UAAU,UAAU,+DAA+D,CAC/F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,IAAI,EAAE,gBAAgB;YAC9B,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,MAAM;YACN,QAAQ;SACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,qBAAK,CAAC,KAAK,GAAG,4BAA4B,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,IAAA,6BAAa,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAExC,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,4BAA4B;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC;QAEjD,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IAEO,YAAY,CAAC,OAAsB;QACzC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,6BAAa,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAE/C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,IAAI;gBACjC,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI;gBACxB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAErE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;oBAClC,OAAO,CAAC,GAAG,CAAC,MAAM,qBAAK,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,MAAM,qBAAK,CAAC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,6BAAa,EAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QACtD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;QACvD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAElE,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAK,CAAC,KAAK,aAAa,MAAM,YAAY,MAAM,SAAS,CAAC,CAAC;QAC1E,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAK,CAAC,OAAO,cAAc,aAAa,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,qBAAK,CAAC,KAAK,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE5E,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,KAAK,qBAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,qBAAK,CAAC,KAAK,wBAAwB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;CACF;AAkBQ,wDAAsB;AAhB/B,MAAM;AACN,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,IAAA,6DAA+B,EAAC,YAAI,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;IAE5C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -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;AA2iB3B;;GAEG;AACH,wBAAsB,GAAG,kBAqIxB"}
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 (/header|nav|appbar/i.test(file) || /header|nav/i.test(context)) {
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)";