UNPKG

@birhaus/tools

Version:

BIRHAUS Developer Tools - CognitiveLoadMeter, linting rules, and validation tools

1 lines 60.8 kB
{"version":3,"sources":["../src/components/CognitiveLoadMeter.tsx","../src/linting/BirhausLinter.ts"],"names":["cn","classes","CognitiveLoadMeter","_targetSelector","targetElement","enableRealTimeAnalysis","analysisInterval","position","initialMinimized","showDetails","showOnlyViolations","minSeverity","onAnalysisComplete","onViolationDetected","className","analysis","setAnalysis","useState","isAnalyzing","setIsAnalyzing","minimized","setMinimized","showSettings","setShowSettings","analysisRef","useRef","analyzeCognitiveLoad","target","metrics","violations","suggestions","navItems","formFields","select","options","computedStyles","el","style","value","clickableElements","textElements","spanishElements","bilingualElements","text","hasSpanishPattern","hasLabelEs","hasLabelEn","confirmationTexts","confirmationElements","imagesWithoutAlt","weightedViolations","acc","v","score","level","runAnalysis","useCallback","result","violation","shouldShowViolation","severityLevels","minLevel","useEffect","positionClasses","scoreColors","jsx","jsxs","Brain","Maximize2","Settings","Minimize2","BarChart3","AlertTriangle","suggestion","Zap","useCognitiveLoadAnalysis","defaultOptions","millerLawNavigationRule","context","node","isNavigationElement","countNavigationItems","spanishFirstLabelsRule","birhausComponents","isBirhausComponent","findMissingSpanishLabels","labelName","fixer","forbidConfirmationDialogsRule","confirmationPatterns","containsConfirmationPattern","formFieldLimitsRule","isFormElement","fieldCount","countFormFields","accessibilityRequirementsRule","isImageElement","hasAttribute","isInteractiveElement","hasAccessibleLabel","elementName","getElementName","components","count","traverse","n","name","suffix","missing","attributes","prop","attr","spanishProp","patterns","extractTextContent","pattern","attributeName","birhausRules","birhausPlugin"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client'\n\n/* eslint-disable security/detect-object-injection */\n// Object accesses in this file use controlled keys from validated enums\n\nimport { useState, useEffect, useRef, useCallback } from 'react'\nimport { \n Brain, \n AlertTriangle, \n Zap,\n BarChart3,\n Settings,\n Minimize2,\n Maximize2\n} from 'lucide-react'\n\n/**\n * BIRHAUS CognitiveLoadMeter\n * \n * Real-time cognitive load analysis tool for developers:\n * - Measures Miller's Law compliance (7±2 items)\n * - Tracks visual complexity and information density\n * - Spanish-first violation messages\n * - Performance impact monitoring\n * - Accessibility compliance checking\n * - Real-time suggestions for improvement\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n\nexport interface CognitiveLoadMetrics {\n // Miller's Law metrics\n navigationItems: number\n formFields: number\n choiceOptions: number\n \n // Visual complexity\n colorCount: number\n fontVariations: number\n visualLayers: number\n \n // Information density\n textDensity: number\n actionDensity: number\n interactionComplexity: number\n \n // Accessibility\n contrastIssues: number\n missingAltText: number\n keyboardNavigation: boolean\n \n // Spanish-first compliance\n spanishLabelCoverage: number\n bilingualSupport: boolean\n \n // BIRHAUS compliance\n undoPatternUsage: number\n confirmationDialogs: number\n progressiveDisclosure: number\n}\n\nexport interface CognitiveLoadAnalysis {\n score: number // 0-100 (100 = perfect cognitive load)\n level: 'low' | 'medium' | 'high' | 'critical'\n violations: CognitiveViolation[]\n suggestions: CognitiveSuggestion[]\n metrics: CognitiveLoadMetrics\n}\n\nexport interface CognitiveViolation {\n id: string\n type: 'miller-law' | 'visual-complexity' | 'accessibility' | 'birhaus-principle'\n severity: 'low' | 'medium' | 'high' | 'critical'\n messageEs: string\n messageEn?: string\n element?: Element\n birhausPrinciple?: number\n}\n\nexport interface CognitiveSuggestion {\n id: string\n priority: 'low' | 'medium' | 'high'\n actionEs: string\n actionEn?: string\n estimatedImpact: number // 0-100\n birhausPrinciple?: number\n}\n\nexport interface CognitiveLoadMeterProps {\n // Target element to analyze\n _targetSelector?: string\n targetElement?: Element\n \n // Analysis configuration\n enableRealTimeAnalysis?: boolean\n analysisInterval?: number\n \n // Display options\n position?: 'top-right' | 'bottom-right' | 'bottom-left' | 'top-left' | 'floating'\n minimized?: boolean\n showDetails?: boolean\n \n // Filtering\n showOnlyViolations?: boolean\n minSeverity?: 'low' | 'medium' | 'high' | 'critical'\n \n // Callbacks\n onAnalysisComplete?: (analysis: CognitiveLoadAnalysis) => void\n onViolationDetected?: (violation: CognitiveViolation) => void\n \n // Styling\n className?: string\n}\n\n// eslint-disable-next-line max-lines-per-function -- CognitiveLoadMeter requires complex analysis and UI rendering logic\nexport function CognitiveLoadMeter({\n _targetSelector = 'body', // Not used in current implementation\n targetElement,\n enableRealTimeAnalysis = true,\n analysisInterval = 2000,\n position = 'top-right',\n minimized: initialMinimized = false,\n showDetails = true,\n showOnlyViolations = false,\n minSeverity = 'medium',\n onAnalysisComplete,\n onViolationDetected,\n className\n}: CognitiveLoadMeterProps) {\n \n // State management\n const [analysis, setAnalysis] = useState<CognitiveLoadAnalysis | null>(null)\n const [isAnalyzing, setIsAnalyzing] = useState(false)\n const [minimized, setMinimized] = useState(initialMinimized)\n const [showSettings, setShowSettings] = useState(false)\n \n const analysisRef = useRef<NodeJS.Timeout>()\n \n // BIRHAUS: Analyze cognitive load of target element\n // eslint-disable-next-line max-lines-per-function, complexity -- Analysis requires comprehensive DOM traversal and metric calculation\n const analyzeCognitiveLoad = (): CognitiveLoadAnalysis => {\n const target = targetElement || document.querySelector(_targetSelector || 'body') || document.body\n const metrics: CognitiveLoadMetrics = {\n navigationItems: 0,\n formFields: 0,\n choiceOptions: 0,\n colorCount: 0,\n fontVariations: 0,\n visualLayers: 0,\n textDensity: 0,\n actionDensity: 0,\n interactionComplexity: 0,\n contrastIssues: 0,\n missingAltText: 0,\n keyboardNavigation: true,\n spanishLabelCoverage: 0,\n bilingualSupport: false,\n undoPatternUsage: 0,\n confirmationDialogs: 0,\n progressiveDisclosure: 0\n }\n \n const violations: CognitiveViolation[] = []\n const suggestions: CognitiveSuggestion[] = []\n \n // Miller's Law Analysis\n const navItems = target.querySelectorAll('nav a, nav button, [role=\"navigation\"] a, [role=\"navigation\"] button')\n metrics.navigationItems = navItems.length\n \n if (navItems.length > 7) {\n violations.push({\n id: 'nav-miller-law',\n type: 'miller-law',\n severity: navItems.length > 10 ? 'critical' : 'high',\n messageEs: `Navegación con ${navItems.length} elementos (máximo recomendado: 7)`,\n messageEn: `Navigation has ${navItems.length} items (recommended max: 7)`,\n birhausPrinciple: 1\n })\n \n suggestions.push({\n id: 'nav-reduce-items',\n priority: 'high',\n actionEs: 'Agrupa elementos de navegación o usa menús desplegables',\n actionEn: 'Group navigation items or use dropdown menus',\n estimatedImpact: 85,\n birhausPrinciple: 1\n })\n }\n \n // Form complexity analysis\n const formFields = target.querySelectorAll('input, select, textarea')\n metrics.formFields = formFields.length\n \n if (formFields.length > 7) {\n violations.push({\n id: 'form-miller-law',\n type: 'miller-law',\n severity: formFields.length > 10 ? 'high' : 'medium',\n messageEs: `Formulario con ${formFields.length} campos (considera dividir en pasos)`,\n messageEn: `Form has ${formFields.length} fields (consider multi-step)`,\n birhausPrinciple: 4\n })\n \n suggestions.push({\n id: 'form-progressive',\n priority: 'medium',\n actionEs: 'Usa MinimalForm para dividir en pasos de máximo 7 campos',\n actionEn: 'Use MinimalForm to split into steps of max 7 fields',\n estimatedImpact: 75,\n birhausPrinciple: 4\n })\n }\n \n // Choice options analysis\n const selects = target.querySelectorAll('select')\n selects.forEach((select: HTMLSelectElement) => {\n const options = select.querySelectorAll('option').length\n metrics.choiceOptions = Math.max(metrics.choiceOptions, options)\n \n if (options > 7) {\n violations.push({\n id: `select-miller-law-${Math.random()}`,\n type: 'miller-law',\n severity: options > 12 ? 'high' : 'medium',\n messageEs: `Lista desplegable con ${options} opciones (máximo recomendado: 7)`,\n messageEn: `Dropdown has ${options} options (recommended max: 7)`,\n element: select,\n birhausPrinciple: 1\n })\n }\n })\n \n // Visual complexity analysis\n const computedStyles = new Set<string>()\n const elements = target.querySelectorAll('*')\n \n elements.forEach((el: Element) => {\n const style = getComputedStyle(el)\n computedStyles.add(style.color)\n computedStyles.add(style.backgroundColor)\n computedStyles.add(style.fontFamily)\n computedStyles.add(style.fontSize)\n })\n \n metrics.colorCount = Array.from(computedStyles)\n .filter(value => value.includes('rgb') || value.includes('#')).length\n metrics.fontVariations = Array.from(computedStyles)\n .filter(value => value.includes('px') || value.includes('rem')).length\n \n // Action density analysis\n const clickableElements = target.querySelectorAll('button, a, [onclick], [role=\"button\"]')\n metrics.actionDensity = clickableElements.length\n \n if (clickableElements.length > 12) {\n violations.push({\n id: 'action-density',\n type: 'visual-complexity',\n severity: 'medium',\n messageEs: `Demasiadas acciones disponibles (${clickableElements.length})`,\n messageEn: `Too many available actions (${clickableElements.length})`,\n birhausPrinciple: 3\n })\n }\n \n // Spanish-first compliance\n const textElements = target.querySelectorAll('[aria-label], label, button, a, h1, h2, h3, h4, h5, h6')\n let spanishElements = 0\n let bilingualElements = 0\n \n textElements.forEach((el: Element) => {\n const text = el.textContent || el.getAttribute('aria-label') || ''\n const hasSpanishPattern = /[ñáéíóúü]|[Ññ]|ción|dad|mente/i.test(text)\n const hasLabelEs = el.hasAttribute('data-label-es') || el.hasAttribute('labelEs')\n const hasLabelEn = el.hasAttribute('data-label-en') || el.hasAttribute('labelEn')\n \n if (hasSpanishPattern) spanishElements++\n if (hasLabelEs && hasLabelEn) bilingualElements++\n })\n \n metrics.spanishLabelCoverage = textElements.length > 0 \n ? (spanishElements / textElements.length) * 100 \n : 100\n metrics.bilingualSupport = bilingualElements > 0\n \n if (metrics.spanishLabelCoverage < 70) {\n violations.push({\n id: 'spanish-first',\n type: 'birhaus-principle',\n severity: 'medium',\n messageEs: `Solo ${Math.round(metrics.spanishLabelCoverage)}% de elementos usan español`,\n messageEn: `Only ${Math.round(metrics.spanishLabelCoverage)}% of elements use Spanish`,\n birhausPrinciple: 7\n })\n \n suggestions.push({\n id: 'add-spanish-labels',\n priority: 'medium',\n actionEs: 'Agrega propiedades labelEs a los componentes',\n actionEn: 'Add labelEs properties to components',\n estimatedImpact: 60,\n birhausPrinciple: 7\n })\n }\n \n // Confirmation dialog detection (anti-pattern)\n const confirmationTexts = ['¿está seguro?', 'confirmar', 'are you sure?', 'confirm']\n const confirmationElements = Array.from(target.querySelectorAll('*'))\n .filter((el: Element) => confirmationTexts.some(text => \n el.textContent?.toLowerCase().includes(text)\n ))\n \n metrics.confirmationDialogs = confirmationElements.length\n \n if (confirmationElements.length > 0) {\n violations.push({\n id: 'confirmation-dialogs',\n type: 'birhaus-principle',\n severity: 'high',\n messageEs: `${confirmationElements.length} diálogo(s) de confirmación detectado(s)`,\n messageEn: `${confirmationElements.length} confirmation dialog(s) detected`,\n birhausPrinciple: 5\n })\n \n suggestions.push({\n id: 'replace-with-undo',\n priority: 'high',\n actionEs: 'Reemplaza confirmaciones con funcionalidad de deshacer',\n actionEn: 'Replace confirmations with undo functionality',\n estimatedImpact: 90,\n birhausPrinciple: 5\n })\n }\n \n // Accessibility analysis\n const imagesWithoutAlt = target.querySelectorAll('img:not([alt])')\n metrics.missingAltText = imagesWithoutAlt.length\n \n if (imagesWithoutAlt.length > 0) {\n violations.push({\n id: 'missing-alt-text',\n type: 'accessibility',\n severity: 'high',\n messageEs: `${imagesWithoutAlt.length} imagen(es) sin texto alternativo`,\n messageEn: `${imagesWithoutAlt.length} image(s) missing alt text`,\n birhausPrinciple: 6\n })\n }\n \n // Calculate overall score\n // violations.length can be used for future violation limit feature\n const weightedViolations = violations.reduce((acc, v) => {\n const weights = { low: 1, medium: 2, high: 4, critical: 8 }\n return acc + weights[v.severity]\n }, 0)\n \n const score = Math.max(0, 100 - (weightedViolations * 5))\n const level = score >= 80 ? 'low' : \n score >= 60 ? 'medium' : \n score >= 40 ? 'high' : 'critical'\n \n return {\n score,\n level,\n violations: showOnlyViolations ? violations : violations,\n suggestions: suggestions.slice(0, 5), // Top 5 suggestions\n metrics\n }\n }\n \n // Run analysis (memoized to prevent useEffect re-renders)\n const runAnalysis = useCallback(() => {\n setIsAnalyzing(true)\n \n setTimeout(() => {\n const result = analyzeCognitiveLoad()\n setAnalysis(result)\n setIsAnalyzing(false)\n \n onAnalysisComplete?.(result)\n \n // Report violations\n result.violations.forEach(violation => {\n if (shouldShowViolation(violation)) {\n onViolationDetected?.(violation)\n }\n })\n }, 100)\n // eslint-disable-next-line react-hooks/exhaustive-deps -- Function dependencies are complex, stable in practice\n }, [onAnalysisComplete, onViolationDetected])\n \n // Filter violations by severity\n const shouldShowViolation = (violation: CognitiveViolation) => {\n const severityLevels = { low: 1, medium: 2, high: 3, critical: 4 }\n const minLevel = severityLevels[minSeverity]\n const violationLevel = severityLevels[violation.severity]\n return violationLevel >= minLevel\n }\n \n // Real-time analysis setup\n useEffect(() => {\n if (enableRealTimeAnalysis) {\n runAnalysis() // Initial analysis\n \n analysisRef.current = setInterval(() => {\n runAnalysis()\n }, analysisInterval)\n \n return () => {\n if (analysisRef.current) {\n clearInterval(analysisRef.current)\n }\n }\n }\n }, [enableRealTimeAnalysis, analysisInterval, runAnalysis])\n \n const positionClasses = {\n 'top-right': 'fixed top-4 right-4 z-50',\n 'bottom-right': 'fixed bottom-4 right-4 z-50',\n 'bottom-left': 'fixed bottom-4 left-4 z-50',\n 'top-left': 'fixed top-4 left-4 z-50',\n 'floating': 'fixed top-1/2 right-4 -translate-y-1/2 z-50'\n }\n \n const scoreColors = {\n low: 'text-green-600 bg-green-100',\n medium: 'text-yellow-600 bg-yellow-100',\n high: 'text-orange-600 bg-orange-100',\n critical: 'text-red-600 bg-red-100'\n }\n \n if (minimized) {\n return (\n <div className={cn(positionClasses[position], className)}>\n <button\n onClick={() => setMinimized(false)}\n className={cn(\n 'flex items-center gap-2 px-3 py-2 bg-white border border-gray-300 rounded-lg shadow-lg hover:shadow-xl transition-shadow',\n analysis && scoreColors[analysis.level]\n )}\n >\n <Brain className=\"h-4 w-4\" />\n {analysis && (\n <span className=\"text-sm font-medium\">{analysis.score}</span>\n )}\n <Maximize2 className=\"h-3 w-3\" />\n </button>\n </div>\n )\n }\n \n return (\n <div className={cn(positionClasses[position], 'w-80 max-w-[calc(100vw-2rem)]', className)}>\n <div className=\"bg-white border border-gray-300 rounded-lg shadow-lg\">\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <div className=\"flex items-center gap-2\">\n <Brain className=\"h-5 w-5 text-blue-600\" />\n <span className=\"font-medium text-gray-900\">Cognitive Load</span>\n {isAnalyzing && (\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600\" />\n )}\n </div>\n \n <div className=\"flex items-center gap-1\">\n <button\n onClick={() => setShowSettings(!showSettings)}\n className=\"p-1 text-gray-400 hover:text-gray-600 rounded\"\n >\n <Settings className=\"h-4 w-4\" />\n </button>\n <button\n onClick={() => setMinimized(true)}\n className=\"p-1 text-gray-400 hover:text-gray-600 rounded\"\n >\n <Minimize2 className=\"h-4 w-4\" />\n </button>\n <button\n onClick={runAnalysis}\n className=\"p-1 text-gray-400 hover:text-gray-600 rounded\"\n >\n <BarChart3 className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n \n {/* Score */}\n {analysis && (\n <div className=\"p-4\">\n <div className={cn(\n 'flex items-center justify-between p-3 rounded-lg',\n scoreColors[analysis.level]\n )}>\n <div>\n <div className=\"text-2xl font-bold\">{analysis.score}</div>\n <div className=\"text-sm capitalize\">{analysis.level} load</div>\n </div>\n <div className=\"text-right text-sm\">\n <div>{analysis.violations.length} violaciones</div>\n <div>{analysis.suggestions.length} sugerencias</div>\n </div>\n </div>\n </div>\n )}\n \n {/* Details */}\n {analysis && showDetails && (\n <div className=\"p-4 border-t border-gray-200\">\n <div className=\"space-y-3\">\n {/* Key metrics */}\n <div className=\"grid grid-cols-2 gap-2 text-sm\">\n <div className=\"flex justify-between\">\n <span>Navegación:</span>\n <span className={analysis.metrics.navigationItems > 7 ? 'text-red-600' : 'text-green-600'}>\n {analysis.metrics.navigationItems}/7\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span>Campos:</span>\n <span className={analysis.metrics.formFields > 7 ? 'text-red-600' : 'text-green-600'}>\n {analysis.metrics.formFields}\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span>Español:</span>\n <span className={analysis.metrics.spanishLabelCoverage < 70 ? 'text-yellow-600' : 'text-green-600'}>\n {Math.round(analysis.metrics.spanishLabelCoverage)}%\n </span>\n </div>\n <div className=\"flex justify-between\">\n <span>Confirmaciones:</span>\n <span className={analysis.metrics.confirmationDialogs > 0 ? 'text-red-600' : 'text-green-600'}>\n {analysis.metrics.confirmationDialogs}\n </span>\n </div>\n </div>\n \n {/* Top violations */}\n {analysis.violations.slice(0, 3).map((violation) => (\n <div key={violation.id} className=\"flex items-start gap-2 p-2 bg-gray-50 rounded text-xs\">\n <AlertTriangle className=\"h-3 w-3 text-red-500 mt-0.5 flex-shrink-0\" />\n <div className=\"flex-1\">\n <div className=\"font-medium text-gray-900\">{violation.messageEs}</div>\n {violation.birhausPrinciple && (\n <div className=\"text-gray-500\">Principio BIRHAUS #{violation.birhausPrinciple}</div>\n )}\n </div>\n </div>\n ))}\n \n {/* Top suggestions */}\n {analysis.suggestions.slice(0, 2).map((suggestion) => (\n <div key={suggestion.id} className=\"flex items-start gap-2 p-2 bg-blue-50 rounded text-xs\">\n <Zap className=\"h-3 w-3 text-blue-500 mt-0.5 flex-shrink-0\" />\n <div className=\"flex-1\">\n <div className=\"font-medium text-gray-900\">{suggestion.actionEs}</div>\n <div className=\"text-gray-500\">Impacto estimado: {suggestion.estimatedImpact}%</div>\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// BIRHAUS: Hook for using cognitive load analysis programmatically\nexport function useCognitiveLoadAnalysis(_targetSelector = 'body') { // Reserved for future DOM targeting\n const [analysis, setAnalysis] = useState<CognitiveLoadAnalysis | null>(null)\n const [isAnalyzing, setIsAnalyzing] = useState(false)\n \n const runAnalysis = () => {\n // Implementation would be similar to the component's analysis logic\n // This is a simplified version for the hook\n setIsAnalyzing(true)\n \n setTimeout(() => {\n // Mock analysis for now - real implementation would mirror the component\n const mockAnalysis: CognitiveLoadAnalysis = {\n score: 85,\n level: 'low',\n violations: [],\n suggestions: [],\n metrics: {\n navigationItems: 4,\n formFields: 3,\n choiceOptions: 5,\n colorCount: 8,\n fontVariations: 3,\n visualLayers: 4,\n textDensity: 45,\n actionDensity: 6,\n interactionComplexity: 3,\n contrastIssues: 0,\n missingAltText: 0,\n keyboardNavigation: true,\n spanishLabelCoverage: 85,\n bilingualSupport: true,\n undoPatternUsage: 2,\n confirmationDialogs: 0,\n progressiveDisclosure: 3\n }\n }\n \n setAnalysis(mockAnalysis)\n setIsAnalyzing(false)\n }, 500)\n }\n \n return {\n analysis,\n isAnalyzing,\n runAnalysis\n }\n}\n\n// Components and utilities are exported via individual export declarations above","/**\n * BIRHAUS ESLint Plugin\n * \n * ESLint rules to enforce BIRHAUS design principles in React/TypeScript code:\n * - Miller's Law compliance (max 7 navigation items, form fields)\n * - Spanish-first labeling requirements\n * - Undo-over-confirm pattern enforcement\n * - Accessibility compliance checks\n * - Cognitive load reduction\n */\n\nimport { Rule } from 'eslint'\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// AST node types from ESLint are complex and often require 'any' for compatibility\n\nexport interface BirhausLinterOptions {\n // Miller's Law enforcement\n maxNavigationItems?: number\n maxFormFields?: number\n maxSelectOptions?: number\n \n // Spanish-first requirements\n requireSpanishLabels?: boolean\n spanishLabelSuffix?: string\n \n // BIRHAUS pattern enforcement\n forbidConfirmationDialogs?: boolean\n requireUndoPattern?: boolean\n \n // Accessibility requirements\n requireAltText?: boolean\n requireAriaLabels?: boolean\n \n // Cognitive load limits\n maxActionsPerView?: number\n maxColorsPerComponent?: number\n}\n\nconst defaultOptions: BirhausLinterOptions = {\n maxNavigationItems: 7,\n maxFormFields: 7,\n maxSelectOptions: 7,\n requireSpanishLabels: true,\n spanishLabelSuffix: 'Es',\n forbidConfirmationDialogs: true,\n requireUndoPattern: false,\n requireAltText: true,\n requireAriaLabels: true,\n maxActionsPerView: 4,\n maxColorsPerComponent: 5\n}\n\n// BIRHAUS Rule: Miller's Law - Navigation Items\nexport const millerLawNavigationRule: Rule.RuleModule = {\n meta: {\n type: 'problem',\n docs: {\n description: 'Enforce Miller\\'s Law (7±2) for navigation items',\n category: 'BIRHAUS Principles',\n recommended: true\n },\n fixable: undefined,\n schema: [\n {\n type: 'object',\n properties: {\n maxItems: {\n type: 'integer',\n minimum: 1,\n maximum: 10,\n default: 7\n }\n },\n additionalProperties: false\n }\n ],\n messages: {\n tooManyNavItems: 'Navigation has {{count}} items (BIRHAUS Principle #1: max {{max}} recommended for cognitive load)',\n suggestGrouping: 'Consider grouping navigation items or using dropdown menus to reduce cognitive load'\n }\n },\n \n create(context: Rule.RuleContext) {\n const options = { ...defaultOptions, ...context.options[0] }\n \n return {\n JSXElement(node: any) {\n // Detect nav elements\n if (isNavigationElement(node)) {\n const navItems = countNavigationItems(node)\n \n if (navItems > options.maxNavigationItems!) {\n context.report({\n node: node as any,\n messageId: 'tooManyNavItems',\n data: {\n count: navItems.toString(),\n max: options.maxNavigationItems!.toString()\n }\n })\n }\n }\n }\n }\n }\n}\n\n// BIRHAUS Rule: Spanish-First Labels\nexport const spanishFirstLabelsRule: Rule.RuleModule = {\n meta: {\n type: 'problem',\n docs: {\n description: 'Require Spanish-first labeling for BIRHAUS components',\n category: 'BIRHAUS Principles',\n recommended: true\n },\n fixable: 'code',\n schema: [\n {\n type: 'object',\n properties: {\n suffix: {\n type: 'string',\n default: 'Es'\n },\n components: {\n type: 'array',\n items: { type: 'string' },\n default: ['BirhausButton', 'BirhausInput', 'BirhausSelect', 'BirhausCard']\n }\n },\n additionalProperties: false\n }\n ],\n messages: {\n missingSpanishLabel: 'BIRHAUS component missing Spanish label (BIRHAUS Principle #7: Bilingual by design)',\n addSpanishLabel: 'Add {{labelName}} prop for Spanish-first internationalization'\n }\n },\n \n create(context: Rule.RuleContext) {\n const options = { ...defaultOptions, ...context.options[0] }\n