{"version":3,"sources":["../src/types.ts","../src/token-parser.ts","../src/token-exporter.ts","../src/theme-runtime.ts","../src/color-utils.ts","../src/accessibility-utils.ts","../src/component-theming.ts","../src/plugin-manager.ts","../src/responsive-tokens.ts","../src/figma-diff.ts","../src/cicd-validator.ts","../src/token-versioning.ts","../src/token-analytics.ts","../src/ide-support.ts","../src/token-registry.ts"],"names":["TokenError","message","path","ValidationError","ParseError","ThemeError","ExportError","TokenParser","filePath","options","validate","expandReferences","fs","content","ext","tokens","parseYAML","error","validateToken","obj","item","index","token","key","newPath","expanded","getValue","parts","current","part","expandValue","value","refPath","refValue","expandedObj","expandTokens","errors","allPaths","collectPaths","validateAlias","aliasPath","TokenExporter","selector","prefix","flatTokens","cssVars","parentKey","flat","processValue","fullKey","tokenKey","nestedKey","ThemeRuntime","config","theme","themeName","themes","nextIndex","styleElement","callback","mediaQuery","handleChange","e","systemTheme","css","styleId","ColorUtils","hex","cleanHex","r","g","b","rgb","toHex","max","min","h","s","l","d","hsl","hue2rgb","q","t","p","amount","newRgb","color1","color2","getLuminance","val","lum1","lum2","lighter","darker","ratio","AccessibilityUtils","wcagAA","wcagAAA","wcagAALarge","wcagAAALarge","level","metrics","extractColors","colors","i","j","contrast","passing","m","failing","total","ComponentTheming","componentName","globalTokens","scoped","scopePath","PluginManagerClass","plugin","pluginName","name","pluginManager","ResponsiveTokens","breakpoint","responsive","state","states","breakpoints","defaultBreakpoints","breakpointsToUse","cssParts","bp","responsiveTokens","processTokens","target","responsiveCSS","basePath","cssVar","FigmaDiff","figmaTokens","codeTokens","tolerance","ignorePaths","getAllPaths","paths","traverse","ignored","figmaPaths","codePaths","added","removed","changed","matches","figmaValue","codeValue","diff","lines","change","value1","value2","num1","num2","outputPath","CICDValidator","warnings","deprecated","report","rule","result","warning","checkTokens","TokenVersioning","includeDeprecated","filtered","filterTokens","filteredObj","filteredValue","oldPath","migrated","cloned","setValue","deleteValue","oldValue","migrations","checkMigrations","TokenAnalytics","format","used","unused","coverage","IDESupport","tokenPath","TokenRegistry","team","version","entry"],"mappings":"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","file":"index.cjs","sourcesContent":["export interface DesignTokens {\n  [key: string]: TokenValue | DesignTokens | TokenValue[] | DesignTokens[];\n}\n\nexport interface TokenValue {\n  value: string | number | TokenState | TokenResponsive;\n  type?: 'color' | 'dimension' | 'fontFamily' | 'fontWeight' | 'duration' | 'custom';\n  description?: string;\n  version?: TokenVersion;\n  deprecated?: boolean;\n  states?: TokenState;\n  responsive?: TokenResponsive;\n  component?: string;\n  scope?: string;\n}\n\nexport interface TokenState {\n  default?: string | number;\n  hover?: string | number;\n  active?: string | number;\n  focus?: string | number;\n  disabled?: string | number;\n  [key: string]: string | number | undefined;\n}\n\nexport interface TokenResponsive {\n  default?: string | number;\n  sm?: string | number;\n  md?: string | number;\n  lg?: string | number;\n  xl?: string | number;\n  [key: string]: string | number | undefined;\n}\n\nexport interface TokenVersion {\n  major: number;\n  minor: number;\n  patch: number;\n  deprecated?: boolean;\n  migration?: string;\n}\n\nexport interface Theme {\n  name: string;\n  tokens: DesignTokens;\n}\n\nexport interface ThemeConfig {\n  themes: Theme[];\n  defaultTheme?: string;\n}\n\nexport interface TokenExportOptions {\n  format: 'css' | 'js' | 'ts' | 'scss' | 'json';\n  selector?: string;\n  prefix?: string;\n  variables?: boolean;\n}\n\nexport interface TokenParserOptions {\n  validate?: boolean;\n  expandReferences?: boolean;\n}\n\nexport interface ColorRGB {\n  r: number;\n  g: number;\n  b: number;\n}\n\nexport interface ColorHSL {\n  h: number;\n  s: number;\n  l: number;\n}\n\nexport interface ComponentTheme {\n  name: string;\n  scope: string;\n  tokens: DesignTokens;\n}\n\nexport interface Plugin {\n  name: string;\n  exporter?: (tokens: DesignTokens, options?: any) => string;\n  validator?: (tokens: DesignTokens, options?: any) => boolean | {\n    valid: boolean;\n    errors: string[];\n  };\n}\n\nexport interface PluginOptions {\n  [key: string]: any;\n}\n\nexport interface AccessibilityMetrics {\n  ratio: number;\n  wcagAA: boolean;\n  wcagAAA: boolean;\n  level: 'pass' | 'fail' | 'large-text';\n}\n\nexport interface Breakpoint {\n  name: string;\n  min?: number;\n  max?: number;\n}\n\nexport interface DiffResult {\n  added: string[];\n  removed: string[];\n  changed: Array<{\n    path: string;\n    oldValue: any;\n    newValue: any;\n  }>;\n  matches: string[];\n}\n\nexport interface DiffOptions {\n  tolerance?: number;\n  ignorePaths?: string[];\n}\n\nexport interface MigrationResult {\n  success: boolean;\n  migrated: number;\n  errors: string[];\n}\n\nexport interface VersionValidationResult {\n  valid: boolean;\n  deprecated: string[];\n  migrations: MigrationResult[];\n}\n\nexport interface CICDValidationOptions {\n  strict?: boolean;\n  checkAccessibility?: boolean;\n  checkDeprecated?: boolean;\n  customRules?: Array<(tokens: DesignTokens) => boolean | {\n    valid: boolean;\n    error: string;\n  }>;\n}\n\nexport interface CICDValidationResult {\n  valid: boolean;\n  errors: string[];\n  warnings: string[];\n}\n\nexport interface HoverInfo {\n  path: string;\n  value: string | number;\n  type?: string;\n  description?: string;\n}\n\nexport interface Completion {\n  label: string;\n  detail?: string;\n  documentation?: string;\n}\n\nexport interface Definition {\n  path: string;\n  value: string | number;\n  type?: string;\n}\n\nexport interface RegistryEntry {\n  path: string;\n  value: TokenValue;\n  team?: string;\n  version?: string;\n  metadata?: Record<string, any>;\n}\n\nexport interface RegistryConfig {\n  teams?: string[];\n  defaultVersion?: string;\n}\n\nexport class TokenError extends Error {\n  path?: string;\n  constructor(message: string, path?: string) {\n    super(message);\n    this.name = 'TokenError';\n    this.path = path;\n  }\n}\n\nexport class ValidationError extends TokenError {\n  constructor(message: string, path?: string) {\n    super(message, path);\n    this.name = 'ValidationError';\n  }\n}\n\nexport class ParseError extends TokenError {\n  constructor(message: string, path?: string) {\n    super(message, path);\n    this.name = 'ParseError';\n  }\n}\n\nexport class ThemeError extends TokenError {\n  constructor(message: string, path?: string) {\n    super(message, path);\n    this.name = 'ThemeError';\n  }\n}\n\nexport class ExportError extends TokenError {\n  constructor(message: string, path?: string) {\n    super(message, path);\n    this.name = 'ExportError';\n  }\n}\n\n","import fs from 'fs';\nimport path from 'path';\nimport { parse as parseYAML } from 'yaml';\nimport type {\n  DesignTokens,\n  TokenParserOptions,\n  TokenValue,\n} from './types';\nimport { ParseError, ValidationError } from './types';\n\nexport class TokenParser {\n  static parse(filePath: string, options: TokenParserOptions = {}): DesignTokens {\n    const {\n      validate = true,\n      expandReferences = true,\n    } = options;\n\n    try {\n      if (!fs.existsSync(filePath)) {\n        throw new ParseError(`Token file not found: ${filePath}`, filePath);\n      }\n\n      const content = fs.readFileSync(filePath, 'utf-8');\n      const ext = path.extname(filePath).toLowerCase();\n      \n      let tokens: DesignTokens;\n      \n      if (ext === '.yaml' || ext === '.yml') {\n        tokens = parseYAML(content);\n      } else {\n        tokens = JSON.parse(content);\n      }\n\n      if (validate) {\n        this.validate(tokens);\n      }\n\n      if (expandReferences) {\n        tokens = this.expandReferences(tokens);\n      }\n\n      return tokens;\n    } catch (error) {\n      if (error instanceof ParseError || error instanceof ValidationError) {\n        throw error;\n      }\n      throw new ParseError(\n        `Failed to parse token file: ${error instanceof Error ? error.message : String(error)}`,\n        filePath\n      );\n    }\n  }\n\n  static validate(tokens: DesignTokens): void {\n    const validateToken = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          validateToken(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      // Check if this is a token value object\n      if ('value' in obj) {\n        const token = obj as TokenValue;\n        if (token.value === undefined || token.value === null) {\n          throw new ValidationError(\n            `Token value is required at path: ${path}`,\n            path\n          );\n        }\n      } else {\n        // Recursively validate nested objects\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            validateToken(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    try {\n      validateToken(tokens);\n    } catch (error) {\n      if (error instanceof ValidationError) {\n        throw error;\n      }\n      throw new ValidationError(\n        `Token validation failed: ${error instanceof Error ? error.message : String(error)}`\n      );\n    }\n  }\n\n  static expandReferences(tokens: DesignTokens): DesignTokens {\n    const expanded = JSON.parse(JSON.stringify(tokens));\n    \n    const getValue = (obj: any, path: string): any => {\n      const parts = path.split('.');\n      let current: any = obj;\n      for (const part of parts) {\n        if (current && typeof current === 'object' && part in current) {\n          current = current[part];\n        } else {\n          return undefined;\n        }\n      }\n      return current?.value ?? current;\n    };\n\n    const expandValue = (value: any): any => {\n      if (typeof value === 'string' && value.startsWith('{') && value.endsWith('}')) {\n        const refPath = value.slice(1, -1);\n        const refValue = getValue(expanded, refPath);\n        if (refValue !== undefined) {\n          return refValue;\n        }\n      }\n      if (typeof value === 'object' && value !== null) {\n        if (Array.isArray(value)) {\n          return value.map(expandValue);\n        }\n        const expandedObj: any = {};\n        for (const key in value) {\n          if (Object.prototype.hasOwnProperty.call(value, key)) {\n            expandedObj[key] = expandValue(value[key]);\n          }\n        }\n        return expandedObj;\n      }\n      return value;\n    };\n\n    const expandTokens = (obj: any): any => {\n      if (typeof obj !== 'object' || obj === null) {\n        return obj;\n      }\n\n      if (Array.isArray(obj)) {\n        return obj.map(expandTokens);\n      }\n\n      if ('value' in obj) {\n        return {\n          ...obj,\n          value: expandValue(obj.value),\n        };\n      }\n\n      const expanded: any = {};\n      for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          expanded[key] = expandTokens(obj[key]);\n        }\n      }\n      return expanded;\n    };\n\n    return expandTokens(expanded);\n  }\n\n  static validateAliases(tokens: DesignTokens): {\n    valid: boolean;\n    errors: string[];\n  } {\n    const errors: string[] = [];\n    const allPaths = new Set<string>();\n\n    const collectPaths = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          collectPaths(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj) {\n        if (path) {\n          allPaths.add(path);\n        }\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            collectPaths(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    const validateAlias = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          validateAlias(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('$alias' in obj) {\n        const aliasPath = obj.$alias as string;\n        if (!allPaths.has(aliasPath)) {\n          errors.push(`Invalid alias at ${path}: ${aliasPath} not found`);\n        }\n      } else if ('value' in obj) {\n        // Skip token values\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            validateAlias(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    collectPaths(tokens);\n    validateAlias(tokens);\n\n    return {\n      valid: errors.length === 0,\n      errors,\n    };\n  }\n}\n\n","import type {\n  DesignTokens,\n  TokenExportOptions,\n  TokenValue,\n} from './types';\nimport { ExportError } from './types';\n\nexport class TokenExporter {\n  static export(tokens: DesignTokens, options: TokenExportOptions): string {\n    switch (options.format) {\n      case 'css':\n        return this.exportCSS(tokens, options);\n      case 'scss':\n        return this.exportSCSS(tokens, options);\n      case 'js':\n        return this.exportJS(tokens, options);\n      case 'ts':\n        return this.exportTS(tokens);\n      case 'json':\n        return this.exportJSON(tokens);\n      default:\n        throw new ExportError(`Unsupported format: ${options.format}`);\n    }\n  }\n\n  static exportCSS(tokens: DesignTokens, options: {\n    selector?: string;\n    prefix?: string;\n  } = {}): string {\n    const selector = options.selector || ':root';\n    const prefix = options.prefix || 'hf';\n    const flatTokens = this.flattenTokens(tokens, prefix);\n\n    const cssVars = Object.entries(flatTokens)\n      .map(([key, value]) => {\n        const cssVar = `--${key}`;\n        return `  ${cssVar}: ${value};`;\n      })\n      .join('\\n');\n\n    return `${selector} {\\n${cssVars}\\n}`;\n  }\n\n  static exportSCSS(tokens: DesignTokens, options: {\n    prefix?: string;\n  } = {}): string {\n    const prefix = options.prefix || 'hf';\n    const flatTokens = this.flattenTokens(tokens, prefix);\n\n    const scssVars = Object.entries(flatTokens)\n      .map(([key, value]) => {\n        const scssVar = `$${key.replace(/-/g, '-')}`;\n        return `${scssVar}: ${value};`;\n      })\n      .join('\\n');\n\n    return scssVars;\n  }\n\n  static exportJS(tokens: DesignTokens, options: {\n    variables?: boolean;\n    prefix?: string;\n  } = {}): string {\n    const prefix = options.prefix || 'hf';\n    const useVariables = options.variables ?? false;\n\n    if (useVariables) {\n      const flatTokens = this.flattenTokens(tokens, prefix);\n      const jsVars = Object.entries(flatTokens)\n        .map(([key]) => {\n          const jsKey = key.replace(/-/g, '_');\n          return `  ${jsKey}: 'var(--${key})'`;\n        })\n        .join(',\\n');\n      return `export const tokens = {\\n${jsVars}\\n};`;\n    }\n\n    return `export const tokens = ${JSON.stringify(tokens, null, 2)};`;\n  }\n\n  static exportTS(tokens: DesignTokens): string {\n    return `export const tokens = ${JSON.stringify(tokens, null, 2)} as const;`;\n  }\n\n  static exportJSON(tokens: DesignTokens): string {\n    return JSON.stringify(tokens, null, 2);\n  }\n\n  static flattenTokens(\n    tokens: DesignTokens,\n    prefix: string = 'hf',\n    parentKey: string = ''\n  ): Record<string, string> {\n    const flat: Record<string, string> = {};\n\n    const processValue = (key: string, value: any): void => {\n      const fullKey = parentKey ? `${parentKey}-${key}` : key;\n      const tokenKey = `${prefix}-${fullKey}`.toLowerCase().replace(/\\./g, '-');\n\n      if (value && typeof value === 'object' && 'value' in value) {\n        const token = value as TokenValue;\n        if (typeof token.value === 'string' || typeof token.value === 'number') {\n          flat[tokenKey] = String(token.value);\n        } else {\n          // Handle TokenState or TokenResponsive\n          if (token.value && typeof token.value === 'object') {\n            if ('default' in token.value) {\n              flat[tokenKey] = String(token.value.default);\n            }\n          }\n        }\n      } else if (value && typeof value === 'object' && !Array.isArray(value)) {\n        // Recursively process nested objects\n        for (const nestedKey in value) {\n          if (Object.prototype.hasOwnProperty.call(value, nestedKey)) {\n            processValue(nestedKey, value[nestedKey]);\n          }\n        }\n      } else if (Array.isArray(value)) {\n        value.forEach((item, index) => {\n          processValue(`${key}-${index}`, item);\n        });\n      }\n    };\n\n    for (const key in tokens) {\n      if (Object.prototype.hasOwnProperty.call(tokens, key)) {\n        processValue(key, tokens[key]);\n      }\n    }\n\n    return flat;\n  }\n}\n\n","import type { ThemeConfig, DesignTokens } from './types';\nimport { ThemeError } from './types';\nimport { TokenExporter } from './token-exporter';\n\nexport class ThemeRuntime {\n  private themes: Map<string, DesignTokens>;\n  private currentTheme: string | null = null;\n  private defaultTheme: string;\n  private systemThemeWatcher: (() => void) | null = null;\n\n  constructor(config: ThemeConfig) {\n    if (!config.themes || config.themes.length === 0) {\n      throw new ThemeError('At least one theme is required');\n    }\n\n    this.themes = new Map();\n    config.themes.forEach((theme) => {\n      if (!theme.name || !theme.tokens) {\n        throw new ThemeError('Theme must have a name and tokens');\n      }\n      this.themes.set(theme.name, theme.tokens);\n    });\n\n    this.defaultTheme = config.defaultTheme || config.themes[0].name;\n    if (!this.themes.has(this.defaultTheme)) {\n      throw new ThemeError(`Default theme \"${this.defaultTheme}\" not found`);\n    }\n  }\n\n  init(selector: string = ':root', prefix: string = 'hf'): void {\n    this.applyTheme(this.defaultTheme, selector, prefix);\n  }\n\n  applyTheme(themeName: string, selector: string = ':root', prefix: string = 'hf'): void {\n    const theme = this.themes.get(themeName);\n    if (!theme) {\n      throw new ThemeError(`Theme \"${themeName}\" not found`);\n    }\n\n    this.currentTheme = themeName;\n    this.injectCSS(theme, selector, prefix);\n    \n    // Dispatch custom event for theme change\n    if (typeof window !== 'undefined') {\n      window.dispatchEvent(\n        new CustomEvent('tokiforge:theme-change', {\n          detail: { theme: themeName, tokens: theme },\n        })\n      );\n    }\n  }\n\n  getCurrentTheme(): string | null {\n    return this.currentTheme;\n  }\n\n  getThemeTokens(themeName: string): DesignTokens {\n    const theme = this.themes.get(themeName);\n    if (!theme) {\n      throw new ThemeError(`Theme \"${themeName}\" not found`);\n    }\n    return theme;\n  }\n\n  getAvailableThemes(): string[] {\n    return Array.from(this.themes.keys());\n  }\n\n  nextTheme(): string {\n    const themes = this.getAvailableThemes();\n    if (themes.length === 0) {\n      throw new ThemeError('No themes available');\n    }\n    \n    const currentIndex = this.currentTheme \n      ? themes.indexOf(this.currentTheme) \n      : -1;\n    const nextIndex = (currentIndex + 1) % themes.length;\n    const nextTheme = themes[nextIndex];\n    \n    return nextTheme;\n  }\n\n  destroy(): void {\n    // Clean up system theme watcher if active\n    if (this.systemThemeWatcher) {\n      this.systemThemeWatcher();\n      this.systemThemeWatcher = null;\n    }\n\n    // Remove style element if in browser environment\n    if (typeof document !== 'undefined') {\n      const styleElement = document.getElementById('tokiforge-theme');\n      if (styleElement) {\n        styleElement.remove();\n      }\n    }\n  }\n\n  watchSystemTheme(callback: (systemTheme: string) => void): () => void {\n    if (typeof window === 'undefined' || typeof window.matchMedia === 'undefined') {\n      // Return no-op function in non-browser environments\n      return () => {};\n    }\n\n    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n    const handleChange = (e: MediaQueryListEvent | MediaQueryList) => {\n      const systemTheme = e.matches ? 'dark' : 'light';\n      callback(systemTheme);\n    };\n\n    // Modern browsers\n    if (mediaQuery.addEventListener) {\n      mediaQuery.addEventListener('change', handleChange);\n      this.systemThemeWatcher = () => {\n        mediaQuery.removeEventListener('change', handleChange);\n      };\n    } else {\n      // Legacy browsers\n      mediaQuery.addListener(handleChange);\n      this.systemThemeWatcher = () => {\n        mediaQuery.removeListener(handleChange);\n      };\n    }\n\n    // Initial call\n    handleChange(mediaQuery);\n\n    return this.systemThemeWatcher;\n  }\n\n  static detectSystemTheme(): string {\n    if (typeof window === 'undefined' || typeof window.matchMedia === 'undefined') {\n      return 'light';\n    }\n\n    try {\n      const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;\n      return prefersDark ? 'dark' : 'light';\n    } catch {\n      return 'light';\n    }\n  }\n\n  private injectCSS(tokens: DesignTokens, selector: string, prefix: string): void {\n    // Only inject CSS in browser environments\n    if (typeof document === 'undefined') {\n      return;\n    }\n\n    const css = this.generateCSS(tokens, selector, prefix);\n    const styleId = 'tokiforge-theme';\n    \n    let styleElement = document.getElementById(styleId) as HTMLStyleElement;\n    if (!styleElement) {\n      styleElement = document.createElement('style');\n      styleElement.id = styleId;\n      document.head.appendChild(styleElement);\n    }\n    \n    styleElement.textContent = css;\n  }\n\n  private generateCSS(tokens: DesignTokens, selector: string, prefix: string): string {\n    return TokenExporter.exportCSS(tokens, { selector, prefix });\n  }\n}\n\n","import type { ColorRGB, ColorHSL } from './types';\n\nexport class ColorUtils {\n  static hexToRGB(hex: string): ColorRGB {\n    const cleanHex = hex.replace('#', '');\n    const r = parseInt(cleanHex.substring(0, 2), 16);\n    const g = parseInt(cleanHex.substring(2, 4), 16);\n    const b = parseInt(cleanHex.substring(4, 6), 16);\n    return { r, g, b };\n  }\n\n  static rgbToHex(rgb: ColorRGB): string {\n    const toHex = (n: number) => {\n      const hex = Math.round(n).toString(16);\n      return hex.length === 1 ? '0' + hex : hex;\n    };\n    return `#${toHex(rgb.r)}${toHex(rgb.g)}${toHex(rgb.b)}`;\n  }\n\n  static rgbToHSL(rgb: ColorRGB): ColorHSL {\n    const r = rgb.r / 255;\n    const g = rgb.g / 255;\n    const b = rgb.b / 255;\n\n    const max = Math.max(r, g, b);\n    const min = Math.min(r, g, b);\n    let h = 0;\n    let s = 0;\n    const l = (max + min) / 2;\n\n    if (max !== min) {\n      const d = max - min;\n      s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n      switch (max) {\n        case r:\n          h = ((g - b) / d + (g < b ? 6 : 0)) / 6;\n          break;\n        case g:\n          h = ((b - r) / d + 2) / 6;\n          break;\n        case b:\n          h = ((r - g) / d + 4) / 6;\n          break;\n      }\n    }\n\n    return {\n      h: Math.round(h * 360),\n      s: Math.round(s * 100),\n      l: Math.round(l * 100),\n    };\n  }\n\n  static hslToRGB(hsl: ColorHSL): ColorRGB {\n    const h = hsl.h / 360;\n    const s = hsl.s / 100;\n    const l = hsl.l / 100;\n\n    let r: number;\n    let g: number;\n    let b: number;\n\n    if (s === 0) {\n      r = g = b = l;\n    } else {\n      const hue2rgb = (p: number, q: number, t: number) => {\n        if (t < 0) t += 1;\n        if (t > 1) t -= 1;\n        if (t < 1 / 6) return p + (q - p) * 6 * t;\n        if (t < 1 / 2) return q;\n        if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n        return p;\n      };\n\n      const q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n      const p = 2 * l - q;\n\n      r = hue2rgb(p, q, h + 1 / 3);\n      g = hue2rgb(p, q, h);\n      b = hue2rgb(p, q, h - 1 / 3);\n    }\n\n    return {\n      r: Math.round(r * 255),\n      g: Math.round(g * 255),\n      b: Math.round(b * 255),\n    };\n  }\n\n  static darken(hex: string, amount: number): string {\n    const rgb = this.hexToRGB(hex);\n    const hsl = this.rgbToHSL(rgb);\n    hsl.l = Math.max(0, hsl.l - amount);\n    const newRgb = this.hslToRGB(hsl);\n    return this.rgbToHex(newRgb);\n  }\n\n  static lighten(hex: string, amount: number): string {\n    const rgb = this.hexToRGB(hex);\n    const hsl = this.rgbToHSL(rgb);\n    hsl.l = Math.min(100, hsl.l + amount);\n    const newRgb = this.hslToRGB(hsl);\n    return this.rgbToHex(newRgb);\n  }\n\n  static getContrastRatio(color1: string, color2: string): number {\n    const getLuminance = (hex: string): number => {\n      const rgb = this.hexToRGB(hex);\n      const [r, g, b] = [rgb.r / 255, rgb.g / 255, rgb.b / 255].map((val) => {\n        return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n      });\n      return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n    };\n\n    const lum1 = getLuminance(color1);\n    const lum2 = getLuminance(color2);\n    const lighter = Math.max(lum1, lum2);\n    const darker = Math.min(lum1, lum2);\n    const ratio = (lighter + 0.05) / (darker + 0.05);\n\n    return Math.round(ratio * 100) / 100;\n  }\n}\n\n","import type { DesignTokens, AccessibilityMetrics, TokenValue } from './types';\nimport { ColorUtils } from './color-utils';\n\nexport class AccessibilityUtils {\n  static calculateContrast(color1: string, color2: string): AccessibilityMetrics {\n    const getLuminance = (hex: string): number => {\n      const rgb = ColorUtils.hexToRGB(hex);\n      const [r, g, b] = [rgb.r / 255, rgb.g / 255, rgb.b / 255].map((val) => {\n        return val <= 0.03928 ? val / 12.92 : Math.pow((val + 0.055) / 1.055, 2.4);\n      });\n      return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n    };\n\n    const lum1 = getLuminance(color1);\n    const lum2 = getLuminance(color2);\n    const lighter = Math.max(lum1, lum2);\n    const darker = Math.min(lum1, lum2);\n    const ratio = (lighter + 0.05) / (darker + 0.05);\n\n    const wcagAA = ratio >= 4.5;\n    const wcagAAA = ratio >= 7;\n    const wcagAALarge = ratio >= 3;\n    const wcagAAALarge = ratio >= 4.5;\n\n    let level: 'pass' | 'fail' | 'large-text';\n    if (wcagAAA) {\n      level = 'pass';\n    } else if (wcagAA) {\n      level = 'pass';\n    } else if (wcagAALarge || wcagAAALarge) {\n      level = 'large-text';\n    } else {\n      level = 'fail';\n    }\n\n    return {\n      ratio: Math.round(ratio * 100) / 100,\n      wcagAA: wcagAA || wcagAALarge,\n      wcagAAA: wcagAAA || wcagAAALarge,\n      level,\n    };\n  }\n\n  static checkAccessibility(tokens: DesignTokens): AccessibilityMetrics[] {\n    const metrics: AccessibilityMetrics[] = [];\n\n    const extractColors = (obj: any, path: string = ''): string[] => {\n      const colors: string[] = [];\n      \n      if (typeof obj !== 'object' || obj === null) {\n        return colors;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          colors.push(...extractColors(item, `${path}[${index}]`));\n        });\n        return colors;\n      }\n\n      if ('value' in obj) {\n        const token = obj as TokenValue;\n        if (token.type === 'color' && typeof token.value === 'string') {\n          colors.push(token.value);\n        }\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            colors.push(...extractColors(obj[key], newPath));\n          }\n        }\n      }\n\n      return colors;\n    };\n\n    const colors = extractColors(tokens);\n    \n    // Check contrast between all color pairs\n    for (let i = 0; i < colors.length; i++) {\n      for (let j = i + 1; j < colors.length; j++) {\n        const contrast = this.calculateContrast(colors[i], colors[j]);\n        metrics.push(contrast);\n      }\n    }\n\n    return metrics;\n  }\n\n  static generateAccessibilityReport(tokens: DesignTokens): {\n    passing: number;\n    failing: number;\n    total: number;\n    details: AccessibilityMetrics[];\n  } {\n    const metrics = this.checkAccessibility(tokens);\n    const passing = metrics.filter((m) => m.level === 'pass').length;\n    const failing = metrics.filter((m) => m.level === 'fail').length;\n    const total = metrics.length;\n\n    return {\n      passing,\n      failing,\n      total,\n      details: metrics,\n    };\n  }\n}\n\n","import type { ComponentTheme, DesignTokens } from './types';\nimport { TokenExporter } from './token-exporter';\n\nexport class ComponentTheming {\n  private themes: Map<string, ComponentTheme> = new Map();\n\n  registerComponentTheme(theme: ComponentTheme): void {\n    this.themes.set(theme.name, theme);\n  }\n\n  getScopedTokens(componentName: string, globalTokens: DesignTokens): DesignTokens {\n    const theme = this.themes.get(componentName);\n    if (!theme) {\n      return {};\n    }\n\n    // Merge component tokens with global tokens, scoping component tokens\n    const scoped: DesignTokens = { ...globalTokens };\n    \n    const scopePath = theme.scope.split('.');\n    let current: any = scoped;\n    for (let i = 0; i < scopePath.length - 1; i++) {\n      if (!current[scopePath[i]]) {\n        current[scopePath[i]] = {};\n      }\n      current = current[scopePath[i]];\n    }\n    current[scopePath[scopePath.length - 1]] = theme.tokens;\n\n    return scoped;\n  }\n\n  applyComponentTheme(componentName: string, selector: string, prefix: string = 'hf'): string {\n    const theme = this.themes.get(componentName);\n    if (!theme) {\n      return '';\n    }\n\n    return TokenExporter.exportCSS(theme.tokens, { selector, prefix });\n  }\n}\n\n","import type { Plugin, DesignTokens, PluginOptions } from './types';\n\nexport class PluginManagerClass {\n  private plugins: Map<string, Plugin> = new Map();\n\n  register(plugin: Plugin): void {\n    this.plugins.set(plugin.name, plugin);\n  }\n\n  export(tokens: DesignTokens, pluginName: string, options?: PluginOptions): string {\n    const plugin = this.plugins.get(pluginName);\n    if (!plugin || !plugin.exporter) {\n      throw new Error(`Plugin \"${pluginName}\" not found or does not have an exporter`);\n    }\n    return plugin.exporter(tokens, options);\n  }\n\n  validate(tokens: DesignTokens, pluginName: string, options?: PluginOptions): boolean | {\n    valid: boolean;\n    errors: string[];\n  } {\n    const plugin = this.plugins.get(pluginName);\n    if (!plugin || !plugin.validator) {\n      throw new Error(`Plugin \"${pluginName}\" not found or does not have a validator`);\n    }\n    return plugin.validator(tokens, options);\n  }\n\n  getPlugin(name: string): Plugin | undefined {\n    return this.plugins.get(name);\n  }\n\n  listPlugins(): string[] {\n    return Array.from(this.plugins.keys());\n  }\n}\n\nexport const pluginManager = new PluginManagerClass();\n\n","import type { TokenValue, DesignTokens, Breakpoint } from './types';\nimport { TokenExporter } from './token-exporter';\n\nexport class ResponsiveTokens {\n  static getResponsiveValue(token: TokenValue, breakpoint: string): string | number | undefined {\n    if (!token.responsive) {\n      return typeof token.value === 'object' ? undefined : token.value;\n    }\n\n    const responsive = token.responsive;\n    return responsive[breakpoint] ?? responsive.default;\n  }\n\n  static getStateValue(token: TokenValue, state: string): string | number | undefined {\n    if (!token.states) {\n      return typeof token.value === 'object' ? undefined : token.value;\n    }\n\n    const states = token.states;\n    return states[state] ?? states.default;\n  }\n\n  static generateResponsiveCSS(\n    tokens: DesignTokens,\n    breakpoints: Breakpoint[] = [],\n    prefix: string = 'hf'\n  ): string {\n    const defaultBreakpoints: Breakpoint[] = [\n      { name: 'sm', min: 640 },\n      { name: 'md', min: 768 },\n      { name: 'lg', min: 1024 },\n      { name: 'xl', min: 1280 },\n    ];\n\n    const breakpointsToUse = breakpoints.length > 0 ? breakpoints : defaultBreakpoints;\n    const cssParts: string[] = [];\n\n    // Generate base CSS\n    cssParts.push(TokenExporter.exportCSS(tokens, { selector: ':root', prefix }));\n\n    // Generate responsive CSS\n    breakpointsToUse.forEach((bp) => {\n      const mediaQuery = `@media (min-width: ${bp.min}px)`;\n      const responsiveTokens: DesignTokens = {};\n\n      // Filter tokens with responsive values for this breakpoint\n      const processTokens = (obj: any, target: any): void => {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            if (obj[key] && typeof obj[key] === 'object' && 'value' in obj[key]) {\n              const token = obj[key] as TokenValue;\n              if (token.responsive && token.responsive[bp.name]) {\n                if (!target[key]) {\n                  target[key] = { ...token };\n                }\n                target[key].value = token.responsive[bp.name];\n              }\n            } else if (typeof obj[key] === 'object' && obj[key] !== null) {\n              if (!target[key]) {\n                target[key] = {};\n              }\n              processTokens(obj[key], target[key]);\n            }\n          }\n        }\n      };\n\n      processTokens(tokens, responsiveTokens);\n\n      if (Object.keys(responsiveTokens).length > 0) {\n        const responsiveCSS = TokenExporter.exportCSS(responsiveTokens, {\n          selector: ':root',\n          prefix,\n        });\n        cssParts.push(`${mediaQuery} {\\n${responsiveCSS}\\n}`);\n      }\n    });\n\n    return cssParts.join('\\n\\n');\n  }\n\n  static generateStateCSS(tokens: DesignTokens, prefix: string = 'hf'): string {\n    const cssParts: string[] = [];\n    \n    const processTokens = (obj: any, basePath: string = ''): void => {\n      for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          const path = basePath ? `${basePath}-${key}` : key;\n          \n          if (obj[key] && typeof obj[key] === 'object' && 'value' in obj[key]) {\n            const token = obj[key] as TokenValue;\n            if (token.states) {\n              const states = token.states;\n              const cssVar = `--${prefix}-${path}`.toLowerCase().replace(/\\./g, '-');\n              \n              Object.entries(states).forEach(([state, value]) => {\n                if (state !== 'default' && value !== undefined) {\n                  cssParts.push(`.${state} { ${cssVar}: ${value}; }`);\n                }\n              });\n            }\n          } else if (typeof obj[key] === 'object' && obj[key] !== null) {\n            processTokens(obj[key], path);\n          }\n        }\n      }\n    };\n\n    processTokens(tokens);\n    return cssParts.join('\\n');\n  }\n}\n\n","import type { DesignTokens, DiffResult, DiffOptions } from './types';\nimport fs from 'fs';\n\nexport class FigmaDiff {\n  static compare(figmaTokens: DesignTokens, codeTokens: DesignTokens, options: DiffOptions = {}): DiffResult {\n    const tolerance = options.tolerance ?? 0;\n    const ignorePaths = options.ignorePaths ?? [];\n\n    const getAllPaths = (tokens: DesignTokens, prefix: string = ''): Set<string> => {\n      const paths = new Set<string>();\n      \n      const traverse = (obj: any, path: string): void => {\n        if (ignorePaths.some(ignored => path.startsWith(ignored))) {\n          return;\n        }\n\n        if (typeof obj !== 'object' || obj === null) {\n          return;\n        }\n\n        if (Array.isArray(obj)) {\n          obj.forEach((item, index) => {\n            traverse(item, `${path}[${index}]`);\n          });\n          return;\n        }\n\n        if ('value' in obj) {\n          paths.add(path);\n        } else {\n          for (const key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n              const newPath = path ? `${path}.${key}` : key;\n              traverse(obj[key], newPath);\n            }\n          }\n        }\n      };\n\n      traverse(tokens, prefix);\n      return paths;\n    };\n\n    const getValue = (tokens: DesignTokens, path: string): any => {\n      const parts = path.split('.');\n      let current: any = tokens;\n      \n      for (const part of parts) {\n        if (current && typeof current === 'object' && part in current) {\n          current = current[part];\n        } else {\n          return undefined;\n        }\n      }\n      \n      return current?.value ?? current;\n    };\n\n    const figmaPaths = getAllPaths(figmaTokens);\n    const codePaths = getAllPaths(codeTokens);\n\n    const added: string[] = [];\n    const removed: string[] = [];\n    const changed: Array<{ path: string; oldValue: any; newValue: any }> = [];\n    const matches: string[] = [];\n\n    // Find added paths\n    figmaPaths.forEach((path) => {\n      if (!codePaths.has(path)) {\n        added.push(path);\n      }\n    });\n\n    // Find removed paths\n    codePaths.forEach((path) => {\n      if (!figmaPaths.has(path)) {\n        removed.push(path);\n      }\n    });\n\n    // Find changed and matching paths\n    figmaPaths.forEach((path) => {\n      if (codePaths.has(path)) {\n        const figmaValue = getValue(figmaTokens, path);\n        const codeValue = getValue(codeTokens, path);\n        \n        if (this.valuesMatch(figmaValue, codeValue, tolerance)) {\n          matches.push(path);\n        } else {\n          changed.push({\n            path,\n            oldValue: codeValue,\n            newValue: figmaValue,\n          });\n        }\n      }\n    });\n\n    return {\n      added,\n      removed,\n      changed,\n      matches,\n    };\n  }\n\n  static generateReport(diff: DiffResult): string {\n    const lines: string[] = [];\n    \n    lines.push('Figma Token Diff Report');\n    lines.push('='.repeat(50));\n    lines.push('');\n\n    if (diff.added.length > 0) {\n      lines.push(`Added (${diff.added.length}):`);\n      diff.added.forEach((path) => {\n        lines.push(`  + ${path}`);\n      });\n      lines.push('');\n    }\n\n    if (diff.removed.length > 0) {\n      lines.push(`Removed (${diff.removed.length}):`);\n      diff.removed.forEach((path) => {\n        lines.push(`  - ${path}`);\n      });\n      lines.push('');\n    }\n\n    if (diff.changed.length > 0) {\n      lines.push(`Changed (${diff.changed.length}):`);\n      diff.changed.forEach((change) => {\n        lines.push(`  ~ ${change.path}`);\n        lines.push(`    Old: ${JSON.stringify(change.oldValue)}`);\n        lines.push(`    New: ${JSON.stringify(change.newValue)}`);\n      });\n      lines.push('');\n    }\n\n    if (diff.matches.length > 0) {\n      lines.push(`Matches (${diff.matches.length}):`);\n      lines.push(`  All matching tokens are in sync.`);\n      lines.push('');\n    }\n\n    return lines.join('\\n');\n  }\n\n  static hasMismatches(diff: DiffResult): boolean {\n    return diff.added.length > 0 || diff.removed.length > 0 || diff.changed.length > 0;\n  }\n\n  static valuesMatch(value1: any, value2: any, tolerance: number = 0): boolean {\n    if (value1 === value2) {\n      return true;\n    }\n\n    if (typeof value1 === 'number' && typeof value2 === 'number') {\n      return Math.abs(value1 - value2) <= tolerance;\n    }\n\n    if (typeof value1 === 'string' && typeof value2 === 'string') {\n      // Try to extract numbers from strings (e.g., \"10px\" -> 10)\n      const num1 = parseFloat(value1);\n      const num2 = parseFloat(value2);\n      if (!isNaN(num1) && !isNaN(num2)) {\n        return Math.abs(num1 - num2) <= tolerance;\n      }\n      return value1 === value2;\n    }\n\n    return false;\n  }\n\n  static exportJSON(diff: DiffResult, outputPath: string): void {\n    fs.writeFileSync(outputPath, JSON.stringify(diff, null, 2));\n  }\n}\n\n","import type {\n  DesignTokens,\n  CICDValidationOptions,\n  CICDValidationResult,\n} from './types';\nimport { TokenParser } from './token-parser';\nimport { AccessibilityUtils } from './accessibility-utils';\nimport fs from 'fs';\n\nexport class CICDValidator {\n  static validate(tokens: DesignTokens, options: CICDValidationOptions = {}): CICDValidationResult {\n    const errors: string[] = [];\n    const warnings: string[] = [];\n\n    try {\n      // Basic validation\n      TokenParser.validate(tokens);\n    } catch (error) {\n      errors.push(error instanceof Error ? error.message : String(error));\n    }\n\n    // Check deprecated tokens\n    if (options.checkDeprecated) {\n      const deprecated = this.getDeprecatedTokens(tokens);\n      if (deprecated.length > 0) {\n        if (options.strict) {\n          errors.push(`Deprecated tokens found: ${deprecated.join(', ')}`);\n        } else {\n          warnings.push(`Deprecated tokens: ${deprecated.join(', ')}`);\n        }\n      }\n    }\n\n    // Check accessibility\n    if (options.checkAccessibility) {\n      const report = AccessibilityUtils.generateAccessibilityReport(tokens);\n      if (report.failing > 0) {\n        if (options.strict) {\n          errors.push(`${report.failing} accessibility issues found`);\n        } else {\n          warnings.push(`${report.failing} accessibility issues found`);\n        }\n      }\n    }\n\n    // Custom rules\n    if (options.customRules) {\n      options.customRules.forEach((rule) => {\n        const result = rule(tokens);\n        if (typeof result === 'boolean') {\n          if (!result) {\n            errors.push('Custom validation rule failed');\n          }\n        } else {\n          if (!result.valid) {\n            errors.push(result.error);\n          }\n        }\n      });\n    }\n\n    return {\n      valid: errors.length === 0,\n      errors,\n      warnings,\n    };\n  }\n\n  static validateFile(filePath: string, options: CICDValidationOptions = {}): CICDValidationResult {\n    if (!fs.existsSync(filePath)) {\n      return {\n        valid: false,\n        errors: [`File not found: ${filePath}`],\n        warnings: [],\n      };\n    }\n\n    try {\n      const tokens = TokenParser.parse(filePath, {\n        validate: true,\n        expandReferences: true,\n      });\n      return this.validate(tokens, options);\n    } catch (error) {\n      return {\n        valid: false,\n        errors: [error instanceof Error ? error.message : String(error)],\n        warnings: [],\n      };\n    }\n  }\n\n  static exitCode(result: CICDValidationResult): number {\n    return result.valid ? 0 : 1;\n  }\n\n  static generateReport(result: CICDValidationResult): string {\n    const lines: string[] = [];\n    \n    lines.push('CI/CD Validation Report');\n    lines.push('='.repeat(50));\n    lines.push('');\n    \n    if (result.valid) {\n      lines.push('✅ Validation passed');\n    } else {\n      lines.push('❌ Validation failed');\n    }\n    lines.push('');\n    \n    if (result.errors.length > 0) {\n      lines.push(`Errors (${result.errors.length}):`);\n      result.errors.forEach((error) => {\n        lines.push(`  ❌ ${error}`);\n      });\n      lines.push('');\n    }\n    \n    if (result.warnings.length > 0) {\n      lines.push(`Warnings (${result.warnings.length}):`);\n      result.warnings.forEach((warning) => {\n        lines.push(`  ⚠️  ${warning}`);\n      });\n      lines.push('');\n    }\n    \n    return lines.join('\\n');\n  }\n\n  private static getDeprecatedTokens(tokens: DesignTokens): string[] {\n    const deprecated: string[] = [];\n\n    const checkTokens = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          checkTokens(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj && obj.deprecated === true) {\n        deprecated.push(path || 'root');\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            checkTokens(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    checkTokens(tokens);\n    return deprecated;\n  }\n}\n\n","import type {\n  DesignTokens,\n  MigrationResult,\n  VersionValidationResult,\n  TokenValue,\n} from './types';\n\nexport class TokenVersioning {\n  static getDeprecatedTokens(tokens: DesignTokens): string[] {\n    const deprecated: string[] = [];\n\n    const checkTokens = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          checkTokens(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj) {\n        const token = obj as TokenValue;\n        if (token.deprecated === true || token.version?.deprecated === true) {\n          deprecated.push(path || 'root');\n        }\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            checkTokens(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    checkTokens(tokens);\n    return deprecated;\n  }\n\n  static filterDeprecated(tokens: DesignTokens, includeDeprecated: boolean = false): DesignTokens {\n    const filtered = JSON.parse(JSON.stringify(tokens));\n\n    const filterTokens = (obj: any): any => {\n      if (typeof obj !== 'object' || obj === null) {\n        return obj;\n      }\n\n      if (Array.isArray(obj)) {\n        return obj.map(filterTokens).filter((item) => item !== null);\n      }\n\n      if ('value' in obj) {\n        const token = obj as TokenValue;\n        if (token.deprecated === true || token.version?.deprecated === true) {\n          return includeDeprecated ? obj : null;\n        }\n        return obj;\n      }\n\n      const filteredObj: any = {};\n      for (const key in obj) {\n        if (Object.prototype.hasOwnProperty.call(obj, key)) {\n          const filteredValue = filterTokens(obj[key]);\n          if (filteredValue !== null) {\n            filteredObj[key] = filteredValue;\n          }\n        }\n      }\n      return filteredObj;\n    };\n\n    return filterTokens(filtered);\n  }\n\n  static migrateToken(tokens: DesignTokens, oldPath: string, newPath: string): MigrationResult {\n    const errors: string[] = [];\n    let migrated = 0;\n\n    try {\n      const cloned = JSON.parse(JSON.stringify(tokens));\n      \n      // Get value at old path\n      const getValue = (obj: any, path: string): any => {\n        const parts = path.split('.');\n        let current: any = obj;\n        for (const part of parts) {\n          if (current && typeof current === 'object' && part in current) {\n            current = current[part];\n          } else {\n            return undefined;\n          }\n        }\n        return current;\n      };\n\n      // Set value at new path\n      const setValue = (obj: any, path: string, value: any): void => {\n        const parts = path.split('.');\n        let current: any = obj;\n        for (let i = 0; i < parts.length - 1; i++) {\n          const part = parts[i];\n          if (!current[part] || typeof current[part] !== 'object') {\n            current[part] = {};\n          }\n          current = current[part];\n        }\n        current[parts[parts.length - 1]] = value;\n      };\n\n      // Delete value at old path\n      const deleteValue = (obj: any, path: string): void => {\n        const parts = path.split('.');\n        let current: any = obj;\n        for (let i = 0; i < parts.length - 1; i++) {\n          if (current && typeof current === 'object' && parts[i] in current) {\n            current = current[parts[i]];\n          } else {\n            return;\n          }\n        }\n        if (current && typeof current === 'object') {\n          delete current[parts[parts.length - 1]];\n        }\n      };\n\n      const oldValue = getValue(cloned, oldPath);\n      if (oldValue === undefined) {\n        errors.push(`Token not found at path: ${oldPath}`);\n      } else {\n        setValue(cloned, newPath, oldValue);\n        deleteValue(cloned, oldPath);\n        migrated = 1;\n      }\n\n      return {\n        success: errors.length === 0,\n        migrated,\n        errors,\n      };\n    } catch (error) {\n      errors.push(error instanceof Error ? error.message : String(error));\n      return {\n        success: false,\n        migrated: 0,\n        errors,\n      };\n    }\n  }\n\n  static validateVersions(tokens: DesignTokens): VersionValidationResult {\n    const deprecated = this.getDeprecatedTokens(tokens);\n    const migrations: MigrationResult[] = [];\n\n    // Check for migration paths\n    const checkMigrations = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          checkMigrations(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj) {\n        const token = obj as TokenValue;\n        if (token.version?.migration) {\n          migrations.push({\n            success: false,\n            migrated: 0,\n            errors: [`Migration required for ${path}: ${token.version.migration}`],\n          });\n        }\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            checkMigrations(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    checkMigrations(tokens);\n\n    return {\n      valid: deprecated.length === 0 && migrations.length === 0,\n      deprecated,\n      migrations,\n    };\n  }\n}\n\n","import type { DesignTokens } from './types';\n\nexport class TokenAnalytics {\n  private usage: Map<string, Set<string>> = new Map();\n\n  trackUsage(path: string, format?: string): void {\n    if (!this.usage.has(path)) {\n      this.usage.set(path, new Set());\n    }\n    if (format) {\n      this.usage.get(path)!.add(format);\n    }\n  }\n\n  getUsageReport(tokens: DesignTokens): {\n    coverage: number;\n    unused: string[];\n    used: string[];\n    total: number;\n  } {\n    const allPaths: string[] = [];\n\n    const getAllPaths = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          getAllPaths(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj) {\n        allPaths.push(path || 'root');\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            getAllPaths(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    getAllPaths(tokens);\n\n    const used = allPaths.filter((path) => this.usage.has(path));\n    const unused = allPaths.filter((path) => !this.usage.has(path));\n    const total = allPaths.length;\n    const coverage = total > 0 ? (used.length / total) * 100 : 0;\n\n    return {\n      coverage: Math.round(coverage * 100) / 100,\n      unused,\n      used,\n      total,\n    };\n  }\n\n  reset(): void {\n    this.usage.clear();\n  }\n\n  generateReport(tokens: DesignTokens): string {\n    const report = this.getUsageReport(tokens);\n    const lines: string[] = [];\n    \n    lines.push('Token Analytics Report');\n    lines.push('='.repeat(50));\n    lines.push('');\n    lines.push(`Total Tokens: ${report.total}`);\n    lines.push(`Used Tokens: ${report.used.length}`);\n    lines.push(`Unused Tokens: ${report.unused.length}`);\n    lines.push(`Coverage: ${report.coverage.toFixed(2)}%`);\n    lines.push('');\n    \n    if (report.unused.length > 0) {\n      lines.push(`Unused Tokens (${report.unused.length}):`);\n      report.unused.forEach((path) => {\n        lines.push(`  - ${path}`);\n      });\n      lines.push('');\n    }\n    \n    return lines.join('\\n');\n  }\n}\n\n","import type { DesignTokens, HoverInfo, Completion, Definition, TokenValue } from './types';\n\nexport class IDESupport {\n  private tokens: DesignTokens = {};\n\n  loadTokens(tokens: DesignTokens): void {\n    this.tokens = tokens;\n  }\n\n  getHoverInfo(tokenPath: string): HoverInfo | null {\n    const token = this.getToken(tokenPath);\n    if (!token) {\n      return null;\n    }\n\n    const value = this.getTokenValue(token);\n    return {\n      path: tokenPath,\n      value: typeof value === 'object' ? JSON.stringify(value) : String(value),\n      type: token.type,\n      description: token.description,\n    };\n  }\n\n  getCompletions(prefix: string = ''): Completion[] {\n    const paths = this.getAllTokenPaths();\n    const matching = paths.filter((path) => path.startsWith(prefix));\n\n    return matching.map((path) => {\n      const token = this.getToken(path);\n      const value = token ? this.getTokenValue(token) : undefined;\n      \n      return {\n        label: path,\n        detail: value !== undefined ? String(value) : undefined,\n        documentation: token?.description,\n      };\n    });\n  }\n\n  getDefinition(tokenPath: string): Definition | null {\n    const token = this.getToken(tokenPath);\n    if (!token) {\n      return null;\n    }\n\n    const value = this.getTokenValue(token);\n    return {\n      path: tokenPath,\n      value: typeof value === 'object' ? JSON.stringify(value) : String(value),\n      type: token.type,\n    };\n  }\n\n  private getTokenValue(token: TokenValue): string | number {\n    if (typeof token.value === 'string' || typeof token.value === 'number') {\n      return token.value;\n    }\n    if (token.value && typeof token.value === 'object' && 'default' in token.value) {\n      return token.value.default as string | number;\n    }\n    return '';\n  }\n\n  private getToken(path: string): TokenValue | null {\n    const parts = path.split('.');\n    let current: any = this.tokens;\n\n    for (const part of parts) {\n      if (current && typeof current === 'object' && part in current) {\n        current = current[part];\n      } else {\n        return null;\n      }\n    }\n\n    if (current && typeof current === 'object' && 'value' in current) {\n      return current as TokenValue;\n    }\n\n    return null;\n  }\n\n  private getAllTokenPaths(): string[] {\n    const paths: string[] = [];\n\n    const traverse = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          traverse(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj) {\n        paths.push(path || 'root');\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            traverse(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    traverse(this.tokens);\n    return paths;\n  }\n}\n\n","import type { DesignTokens, RegistryEntry, RegistryConfig, TokenValue } from './types';\n\nexport class TokenRegistry {\n  private entries: RegistryEntry[] = [];\n  private config: RegistryConfig;\n\n  constructor(config: RegistryConfig = {}) {\n    this.config = config;\n  }\n\n  importFromTokens(tokens: DesignTokens, team?: string, version?: string): void {\n    const processTokens = (obj: any, path: string = ''): void => {\n      if (typeof obj !== 'object' || obj === null) {\n        return;\n      }\n\n      if (Array.isArray(obj)) {\n        obj.forEach((item, index) => {\n          processTokens(item, `${path}[${index}]`);\n        });\n        return;\n      }\n\n      if ('value' in obj) {\n        const entry: RegistryEntry = {\n          path: path || 'root',\n          value: obj as TokenValue,\n          team: team || this.config.teams?.[0],\n          version: version || this.config.defaultVersion || '1.0.0',\n        };\n        this.entries.push(entry);\n      } else {\n        for (const key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) {\n            const newPath = path ? `${path}.${key}` : key;\n            processTokens(obj[key], newPath);\n          }\n        }\n      }\n    };\n\n    processTokens(tokens);\n  }\n\n  getAll(team?: string): DesignTokens {\n    const filtered = team\n      ? this.entries.filter((entry) => entry.team === team)\n      : this.entries;\n\n    const tokens: DesignTokens = {};\n    \n    filtered.forEach((entry) => {\n      this.setNestedValue(tokens, entry.path, entry.value);\n    });\n\n    return tokens;\n  }\n\n  exportTokens(team?: string, version?: string): DesignTokens {\n    const filtered = this.entries.filter((entry) => {\n      if (team && entry.team !== team) {\n        return false;\n      }\n      if (version && entry.version !== version) {\n        return false;\n      }\n      return true;\n    });\n\n    const tokens: DesignTokens = {};\n    \n    filtered.forEach((entry) => {\n      this.setNestedValue(tokens, entry.path, entry.value);\n    });\n\n    return tokens;\n  }\n\n  private setNestedValue(obj: any, path: string, value: any): void {\n    const parts = path.split('.');\n    let current: any = obj;\n\n    for (let i = 0; i < parts.length - 1; i++) {\n      const part = parts[i];\n      if (!current[part] || typeof current[part] !== 'object') {\n        current[part] = {};\n      }\n      current = current[part];\n    }\n\n    current[parts[parts.length - 1]] = value;\n  }\n}\n\n"]}