All files / web/src/app/vision-training registry.tsx

0% Statements 0/63
0% Branches 0/1
0% Functions 0/1
0% Lines 0/63

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64                                                                                                                               
/**
 * Model Registry for Vision Training
 *
 * This registry defines model types and their metadata.
 * Pages use the path-based architecture and render components directly.
 */

import type { ModelType } from './train/components/wizard/types'

// Registry entry for a model type
export interface ModelRegistryEntry {
  label: string
  description: string
  icon: string
}

// Helper to get model registry entry
export function getModelEntry(modelType: ModelType): ModelRegistryEntry {
  switch (modelType) {
    case 'boundary-detector':
      return {
        label: 'Boundary Detector',
        description: 'Detects abacus boundaries in camera frames',
        icon: '๐ŸŽฏ',
      }
    case 'column-classifier':
      return {
        label: 'Column Classifier',
        description: 'Classifies abacus column values (0-9)',
        icon: '๐Ÿ”ข',
      }
    default: {
      const exhaustiveCheck: never = modelType
      throw new Error(`Unknown model type: ${exhaustiveCheck}`)
    }
  }
}

// Get all model types for iteration
export function getAllModelTypes(): ModelType[] {
  return ['boundary-detector', 'column-classifier']
}

// Get label for a model type
export function getModelLabel(modelType: ModelType): string {
  return getModelEntry(modelType).label
}

// Tab definitions
export type TabId = 'data' | 'train' | 'test' | 'sessions'

export interface TabDefinition {
  id: TabId
  label: string
  icon: string
}

export const TABS: TabDefinition[] = [
  { id: 'data', label: 'Data', icon: '๐Ÿ“Š' },
  { id: 'train', label: 'Train', icon: '๐Ÿ‹๏ธ' },
  { id: 'test', label: 'Test', icon: '๐Ÿงช' },
  { id: 'sessions', label: 'Sessions', icon: '๐Ÿ“' },
]