@harmonia-core/ui 1.0.0

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.
Files changed (77) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +267 -0
  3. package/dist/capacity/animation.d.ts +77 -0
  4. package/dist/capacity/animation.d.ts.map +1 -0
  5. package/dist/capacity/constants.d.ts +119 -0
  6. package/dist/capacity/constants.d.ts.map +1 -0
  7. package/dist/capacity/feedback.d.ts +55 -0
  8. package/dist/capacity/feedback.d.ts.map +1 -0
  9. package/dist/capacity/fields/field-manager.d.ts +45 -0
  10. package/dist/capacity/fields/field-manager.d.ts.map +1 -0
  11. package/dist/capacity/index.d.ts +15 -0
  12. package/dist/capacity/index.d.ts.map +1 -0
  13. package/dist/capacity/index.js +1313 -0
  14. package/dist/capacity/index.js.map +1 -0
  15. package/dist/capacity/index.mjs +1267 -0
  16. package/dist/capacity/index.mjs.map +1 -0
  17. package/dist/capacity/mode.d.ts +50 -0
  18. package/dist/capacity/mode.d.ts.map +1 -0
  19. package/dist/capacity/prediction/hooks.d.ts +11 -0
  20. package/dist/capacity/prediction/hooks.d.ts.map +1 -0
  21. package/dist/capacity/prediction/pattern-extractor.d.ts +26 -0
  22. package/dist/capacity/prediction/pattern-extractor.d.ts.map +1 -0
  23. package/dist/capacity/prediction/pattern-store.d.ts +35 -0
  24. package/dist/capacity/prediction/pattern-store.d.ts.map +1 -0
  25. package/dist/capacity/prediction/prediction-engine.d.ts +39 -0
  26. package/dist/capacity/prediction/prediction-engine.d.ts.map +1 -0
  27. package/dist/capacity/prediction/types.d.ts +24 -0
  28. package/dist/capacity/prediction/types.d.ts.map +1 -0
  29. package/dist/capacity/provider.d.ts +119 -0
  30. package/dist/capacity/provider.d.ts.map +1 -0
  31. package/dist/capacity/signals/aggregator.d.ts +38 -0
  32. package/dist/capacity/signals/aggregator.d.ts.map +1 -0
  33. package/dist/capacity/signals/detectors/environment-detector.d.ts +31 -0
  34. package/dist/capacity/signals/detectors/environment-detector.d.ts.map +1 -0
  35. package/dist/capacity/signals/detectors/input-detector.d.ts +23 -0
  36. package/dist/capacity/signals/detectors/input-detector.d.ts.map +1 -0
  37. package/dist/capacity/signals/detectors/interaction-detector.d.ts +27 -0
  38. package/dist/capacity/signals/detectors/interaction-detector.d.ts.map +1 -0
  39. package/dist/capacity/signals/detectors/scroll-detector.d.ts +35 -0
  40. package/dist/capacity/signals/detectors/scroll-detector.d.ts.map +1 -0
  41. package/dist/capacity/signals/detectors/session-detector.d.ts +23 -0
  42. package/dist/capacity/signals/detectors/session-detector.d.ts.map +1 -0
  43. package/dist/capacity/signals/detectors/time-detector.d.ts +20 -0
  44. package/dist/capacity/signals/detectors/time-detector.d.ts.map +1 -0
  45. package/dist/capacity/signals/detectors/types.d.ts +25 -0
  46. package/dist/capacity/signals/detectors/types.d.ts.map +1 -0
  47. package/dist/capacity/signals/signal-bus.d.ts +50 -0
  48. package/dist/capacity/signals/signal-bus.d.ts.map +1 -0
  49. package/dist/capacity/types.d.ts +239 -0
  50. package/dist/capacity/types.d.ts.map +1 -0
  51. package/dist/capacity/utils/index.d.ts +7 -0
  52. package/dist/capacity/utils/index.d.ts.map +1 -0
  53. package/dist/capacity/utils/typography.d.ts +176 -0
  54. package/dist/capacity/utils/typography.d.ts.map +1 -0
  55. package/dist/components/ambient-field-monitor.d.ts +10 -0
  56. package/dist/components/ambient-field-monitor.d.ts.map +1 -0
  57. package/dist/components/capacity-controls.d.ts +15 -0
  58. package/dist/components/capacity-controls.d.ts.map +1 -0
  59. package/dist/components/capacity-demo-card.d.ts +13 -0
  60. package/dist/components/capacity-demo-card.d.ts.map +1 -0
  61. package/dist/components/index.d.ts +18 -0
  62. package/dist/components/index.d.ts.map +1 -0
  63. package/dist/components/index.js +1703 -0
  64. package/dist/components/index.js.map +1 -0
  65. package/dist/components/index.mjs +1688 -0
  66. package/dist/components/index.mjs.map +1 -0
  67. package/dist/components/ui/badge.d.ts +8 -0
  68. package/dist/components/ui/badge.d.ts.map +1 -0
  69. package/dist/components/ui/button.d.ts +10 -0
  70. package/dist/components/ui/button.d.ts.map +1 -0
  71. package/dist/components/ui/card.d.ts +10 -0
  72. package/dist/components/ui/card.d.ts.map +1 -0
  73. package/dist/components/ui/select.d.ts +6 -0
  74. package/dist/components/ui/select.d.ts.map +1 -0
  75. package/dist/components/ui/slider.d.ts +14 -0
  76. package/dist/components/ui/slider.d.ts.map +1 -0
  77. package/package.json +98 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../lib/capacity/constants.ts","../../lib/capacity/feedback.ts","../../lib/capacity/fields/field-manager.ts","../../lib/capacity/mode.ts","../../lib/capacity/provider.tsx","../../lib/capacity/animation.ts","../../lib/components/ui/slider.tsx","../../lib/components/ui/button.tsx","../../lib/components/ui/card.tsx","../../lib/components/ui/badge.tsx","../../lib/components/ui/select.tsx","../../lib/components/capacity-controls.tsx","../../lib/components/capacity-demo-card.tsx","../../lib/components/ambient-field-monitor.tsx"],"names":["motion","jsx","rengeVars","stylesInjected","variantStyles","_a","useState","useCallback","jsxs"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Capacity-Adaptive UI Constants\n *\n * Structural Principles Layer - Mathematical foundations for proportional design\n */\n\n// ============================================================================\n// Proportional Systems (Golden Ratio, Fibonacci)\n// ============================================================================\n\n/** Golden ratio φ */\nexport const PHI = 1.618033988749895\n\n/** Inverse golden ratio (1/φ) */\nexport const PHI_INVERSE = 0.618033988749895\n\n/** Fibonacci sequence for natural scaling steps */\nexport const FIBONACCI = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144] as const\n\n// ============================================================================\n// Auditory Feedback Frequencies (Hz) - Phase 3\n// ============================================================================\n\n/**\n * Frequency ranges for optional auditory feedback\n * Used for interaction confirmation and depth signaling\n * Note: These are constrained ranges, not healing claims\n */\nexport const FEEDBACK_FREQUENCIES = {\n low: 396, // Foundation/root elements\n mid: 528, // Primary interactive content\n high: 741, // Dynamic/feedback elements\n} as const\n\n// ============================================================================\n// Field Defaults\n// ============================================================================\n\n/** Default field configuration */\nexport const DEFAULT_FIELD_CONFIG = {\n smoothing: 0.15, // Exponential smoothing factor\n velocityThreshold: 0.05, // Min velocity to register as trend\n debounceMs: 100, // Debounce rapid changes\n} as const\n\n/** Default user capacity (neutral state) */\nexport const DEFAULT_USER_CAPACITY = {\n cognitive: 0.7,\n temporal: 0.7,\n emotional: 0.7,\n} as const\n\n/** Default emotional state (positive to show expressive animations) */\nexport const DEFAULT_EMOTIONAL_STATE = {\n valence: 0.3, // > 0.15 (with emotional > 0.6) triggers expressive motion mode\n arousal: 0.5,\n} as const\n\n/** Default capacity field (neutral state) */\nexport const DEFAULT_CAPACITY_FIELD = {\n cognitive: 0.5,\n temporal: 0.5,\n emotional: 0.5,\n valence: 0.0,\n} as const\n\n// ============================================================================\n// Component Response Presets\n// ============================================================================\n\n/**\n * Intelligent defaults for component responses\n * 90% of components can use these without override\n */\ninterface ComponentResponse {\n visual: {\n opacityRange: [number, number]\n scaleRange: [number, number]\n }\n spatial: {\n densityRange: [number, number]\n spacingMultiplier: [number, number]\n }\n sonic: {\n enabled: boolean\n }\n semantic: {\n verbosityLevel: string\n urgencyFraming: string\n }\n}\n\nexport const DEFAULT_COMPONENT_RESPONSE: ComponentResponse = {\n visual: {\n opacityRange: [0.4, 1.0],\n scaleRange: [0.95, 1.0],\n },\n spatial: {\n densityRange: [0.6, 1.0],\n spacingMultiplier: [1.0, PHI],\n },\n sonic: {\n enabled: false, // Opt-in\n },\n semantic: {\n verbosityLevel: \"concise\",\n urgencyFraming: \"neutral\",\n },\n} as const\n\n// ============================================================================\n// Accessibility Constants\n// ============================================================================\n\n/** Minimum contrast ratio (WCAG AA) - invariant across all states */\nexport const MIN_CONTRAST_RATIO = 4.5\n\n/** Reduced motion media query key */\nexport const PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\"\n\n/** Maximum animation duration (ms) for time-sensitive users */\nexport const MAX_ANIMATION_DURATION_MS = 300\n\n// ============================================================================\n// Motion Tokens\n// ============================================================================\n\n/**\n * Motion tokens by mode\n * \n * \"off\" means no decorative motion, NOT no transitions at all.\n * You still keep: opacity fades, height/visibility transitions, focus transitions.\n * This preserves usability and avoids \"broken UI\" feelings.\n * \n * \"subtle\" = grounded, low-amplitude, slow easing\n * \"expressive\" = playful, elastic, higher amplitude\n */\nexport const MOTION_TOKENS = {\n off: {\n durationFast: 0,\n durationBase: 0,\n durationSlow: 0,\n easing: \"linear\",\n // Essential transitions still allowed (opacity, focus rings)\n essentialDuration: 100,\n essentialEasing: \"ease-out\",\n },\n soothing: {\n durationFast: 0, // No fast motion -- everything is slow and rhythmic\n durationBase: 800,\n durationSlow: 1200,\n easing: \"ease-in-out\", // Smooth, no sharp edges\n essentialDuration: 200,\n essentialEasing: \"ease-in-out\",\n },\n subtle: {\n durationFast: 100,\n durationBase: 200,\n durationSlow: 350,\n easing: \"ease-out\",\n essentialDuration: 150,\n essentialEasing: \"ease-out\",\n },\n expressive: {\n durationFast: 200,\n durationBase: 400,\n durationSlow: 700,\n easing: \"cubic-bezier(0.34, 1.56, 0.64, 1)\", // Spring-like overshoot\n essentialDuration: 150,\n essentialEasing: \"ease-out\",\n },\n} as const\n","/**\n * Multimodal Feedback - Phase 3\n *\n * Opt-in haptic and sonic feedback tied to capacity state.\n * Both channels are disabled by default (see DEFAULT_COMPONENT_RESPONSE.sonic.enabled).\n *\n * Haptic: Web Vibration API — short patterns on interaction\n * Sonic: Web Audio API — sub-audible tones from FEEDBACK_FREQUENCIES\n *\n * Design constraints:\n * - Opt-in only: never fires without explicit user enablement\n * - Degrades silently on unsupported browsers\n * - Volume capped at 0.08 to keep tones sub-audible (felt, not heard prominently)\n * - Arousal-aware: higher arousal → higher frequency feedback\n */\n\nimport type { ArousalMode } from \"./types\"\nimport { FEEDBACK_FREQUENCIES } from \"./constants\"\n\n// ============================================================================\n// Haptic Feedback (Web Vibration API)\n// ============================================================================\n\n/** Haptic patterns (ms on/off durations) for different interaction types */\nexport const HAPTIC_PATTERNS = {\n /** Short tap — confirm/select */\n tap: [8],\n /** Two pulses — toggle/switch */\n toggle: [8, 50, 8],\n /** Gentle pulse — ambient/ambient confirmation */\n pulse: [15, 30, 15],\n /** Error/warning — three quick */\n error: [50, 30, 50, 30, 50],\n} as const\n\nexport type HapticPatternName = keyof typeof HAPTIC_PATTERNS\n\n/**\n * Trigger a haptic vibration pattern.\n * Silently no-ops on unsupported browsers (desktop, iOS Safari).\n */\nexport function triggerHaptic(pattern: HapticPatternName = \"tap\"): void {\n if (typeof navigator !== \"undefined\" && \"vibrate\" in navigator) {\n navigator.vibrate(HAPTIC_PATTERNS[pattern])\n }\n}\n\n// ============================================================================\n// Sonic Feedback (Web Audio API)\n// ============================================================================\n\nlet _audioCtx: AudioContext | null = null\n\nfunction getAudioContext(): AudioContext | null {\n if (typeof window === \"undefined\") return null\n try {\n if (!_audioCtx || _audioCtx.state === \"closed\") {\n _audioCtx = new AudioContext()\n }\n // Resume if suspended (browser autoplay policy)\n if (_audioCtx.state === \"suspended\") {\n _audioCtx.resume()\n }\n return _audioCtx\n } catch {\n return null\n }\n}\n\n/**\n * Play a short sine-wave tone for interaction confirmation.\n *\n * @param frequency - Hz from FEEDBACK_FREQUENCIES (396/528/741)\n * @param duration - Tone length in ms (default 120)\n * @param volume - Peak gain, 0–1 (default 0.06 — sub-audible)\n */\nexport function playSonicFeedback(\n frequency: number,\n duration: number = 120,\n volume: number = 0.06,\n): void {\n const ctx = getAudioContext()\n if (!ctx) return\n\n const oscillator = ctx.createOscillator()\n const gainNode = ctx.createGain()\n\n oscillator.connect(gainNode)\n gainNode.connect(ctx.destination)\n\n oscillator.type = \"sine\"\n oscillator.frequency.setValueAtTime(frequency, ctx.currentTime)\n\n // Fade in/out envelope to prevent click artifacts\n gainNode.gain.setValueAtTime(0, ctx.currentTime)\n gainNode.gain.linearRampToValueAtTime(volume, ctx.currentTime + 0.015)\n gainNode.gain.linearRampToValueAtTime(0, ctx.currentTime + duration / 1000)\n\n oscillator.start(ctx.currentTime)\n oscillator.stop(ctx.currentTime + duration / 1000 + 0.02)\n}\n\n/**\n * Select the appropriate frequency for the current arousal level.\n *\n * calm → 396 Hz (low/root — grounding)\n * neutral → 528 Hz (mid — balanced)\n * activated → 741 Hz (high — energetic)\n */\nexport function getFrequencyForPace(pace: ArousalMode): number {\n if (pace === \"activated\") return FEEDBACK_FREQUENCIES.high\n if (pace === \"calm\") return FEEDBACK_FREQUENCIES.low\n return FEEDBACK_FREQUENCIES.mid\n}\n\n/**\n * Play sonic feedback tuned to the current arousal/pace level.\n * Convenience wrapper over playSonicFeedback + getFrequencyForPace.\n */\nexport function playPacedSonic(pace: ArousalMode, duration?: number): void {\n playSonicFeedback(getFrequencyForPace(pace), duration)\n}\n","/**\n * Field Manager - Singleton that maintains ambient field state\n *\n * Components subscribe to fields, never write to them\n * Only Phase 1 slider system writes field values\n */\n\nimport type { AmbientContext, UserCapacity, EmotionalState, FieldValue, FieldConfig } from \"../types\"\nimport { DEFAULT_USER_CAPACITY, DEFAULT_EMOTIONAL_STATE, DEFAULT_FIELD_CONFIG } from \"../constants\"\n\n// ============================================================================\n// Field Derivation Functions\n// ============================================================================\n\n/**\n * Derives energy field from user capacity\n * Energy = geometric mean of all capacity dimensions\n */\nfunction deriveEnergyField(capacity: UserCapacity): number {\n const { cognitive, temporal, emotional } = capacity\n return Math.pow(cognitive * temporal * emotional, 1 / 3)\n}\n\n/**\n * Derives attention field from temporal pressure\n * Attention inversely related to time availability\n */\nfunction deriveAttentionField(capacity: UserCapacity): number {\n // When temporal capacity is low (time pressure high), attention demand increases\n return 1 - capacity.temporal * 0.5 // Range: 0.5 to 1.0\n}\n\n/**\n * Derives emotional valence field from emotional state\n * Direct mapping of valence dimension\n */\nfunction deriveEmotionalValenceField(state: EmotionalState): number {\n return state.valence\n}\n\n// ============================================================================\n// Field Value Factory\n// ============================================================================\n\n/**\n * Creates a field value with temporal tracking\n */\nfunction createFieldValue<T>(value: T, previousValue?: FieldValue<T>): FieldValue<T> {\n const now = Date.now()\n const lastChange = previousValue?.lastChange ?? now\n const timeDelta = (now - lastChange) / 1000 // seconds\n\n let trend: \"rising\" | \"falling\" | \"stable\" = \"stable\"\n let velocity: number | undefined\n\n if (typeof value === \"number\" && previousValue && typeof previousValue.value === \"number\") {\n const valueDelta = value - previousValue.value\n velocity = timeDelta > 0 ? valueDelta / timeDelta : 0\n\n if (Math.abs(velocity) > DEFAULT_FIELD_CONFIG.velocityThreshold) {\n trend = velocity > 0 ? \"rising\" : \"falling\"\n }\n }\n\n return {\n value,\n lastChange: now,\n trend,\n velocity,\n }\n}\n\n// ============================================================================\n// Field Manager Class\n// ============================================================================\n\ntype FieldChangeListener = (context: AmbientContext) => void\n\nclass FieldManagerClass {\n private context: AmbientContext\n private listeners: Set<FieldChangeListener> = new Set()\n private config: FieldConfig = DEFAULT_FIELD_CONFIG\n\n constructor() {\n const initialCapacity = DEFAULT_USER_CAPACITY\n const initialState = DEFAULT_EMOTIONAL_STATE\n\n this.context = {\n energy: createFieldValue(deriveEnergyField(initialCapacity)),\n attention: createFieldValue(deriveAttentionField(initialCapacity)),\n emotionalValence: createFieldValue(deriveEmotionalValenceField(initialState)),\n userCapacity: initialCapacity,\n emotionalState: initialState,\n }\n }\n\n /**\n * Get current ambient context (read-only)\n */\n getContext(): Readonly<AmbientContext> {\n return this.context\n }\n\n /**\n * Update user capacity (Phase 1 slider system writes here)\n */\n updateCapacity(capacity: Partial<UserCapacity>): void {\n const newCapacity = { ...this.context.userCapacity, ...capacity }\n\n this.context = {\n ...this.context,\n userCapacity: newCapacity,\n energy: createFieldValue(deriveEnergyField(newCapacity), this.context.energy),\n attention: createFieldValue(deriveAttentionField(newCapacity), this.context.attention),\n }\n\n this.notifyListeners()\n }\n\n /**\n * Update emotional state (Phase 1 slider system writes here)\n */\n updateEmotionalState(state: Partial<EmotionalState>): void {\n const newState = { ...this.context.emotionalState, ...state }\n\n this.context = {\n ...this.context,\n emotionalState: newState,\n emotionalValence: createFieldValue(deriveEmotionalValenceField(newState), this.context.emotionalValence),\n }\n\n this.notifyListeners()\n }\n\n /**\n * Subscribe to field changes\n */\n subscribe(listener: FieldChangeListener): () => void {\n this.listeners.add(listener)\n\n // Return unsubscribe function\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n /**\n * Notify all listeners of field changes\n */\n private notifyListeners(): void {\n this.listeners.forEach((listener) => {\n try {\n listener(this.context)\n } catch (error) {\n console.error(\"[v0] Field listener error:\", error)\n }\n })\n }\n\n /**\n * Update field configuration\n */\n updateConfig(config: Partial<FieldConfig>): void {\n this.config = { ...this.config, ...config }\n }\n\n /**\n * Get current field configuration\n */\n getConfig(): Readonly<FieldConfig> {\n return this.config\n }\n}\n\n// Singleton instance\nexport const FieldManager = new FieldManagerClass()\n","/**\n * Mode Derivation - Field → Mode transformation\n *\n * This is the key insight: don't map sliders directly to 50 UI changes.\n * Instead, derive 2-4 coherent modes and let modes drive everything.\n *\n * STRICT SEPARATION OF CONCERNS:\n * ┌─────────────┬────────────────────────────────────┬─────────────────────────────┐\n * │ Slider │ Controls │ Must NOT Control │\n * ├─────────────┼────────────────────────────────────┼─────────────────────────────┤\n * │ Cognitive │ density, hierarchy, concurrency │ tone, animation speed │\n * │ Temporal │ content length, shortcuts, defaults│ color, layout structure │\n * │ Emotional │ motion restraint, friction │ content importance │\n * │ Valence │ tone, expressiveness │ information volume │\n * └─────────────┴────────────────────────────────────┴─────────────────────────────┘\n */\n\nimport type { CapacityField, InterfaceMode, InterfaceModeLabel, ArousalMode } from \"./types\"\n\n// ============================================================================\n// Mode Derivation Rules\n// ============================================================================\n\n/**\n * Derives InterfaceMode from CapacityField\n *\n * Rules:\n * - Cognitive → density (how many things compete for attention at once)\n * - Temporal → content length, shortcuts (how much time the UI asks from user)\n * - Emotional → motion restraint (nervous-system-safe UI, no surprises)\n * - Valence → tone/expressiveness (emotional color, not information volume)\n */\nexport function deriveMode(field: CapacityField): InterfaceMode {\n const lowCognitive = field.cognitive < 0.4\n const highCognitive = field.cognitive > 0.7\n const lowEmotional = field.emotional < 0.4\n const highEmotional = field.emotional > 0.6\n const lowTemporal = field.temporal < 0.4\n const highValence = field.valence > 0.15\n const negValence = field.valence < -0.15\n\n // ═══════════════════════════════════════════════════════════════════════════\n // COGNITIVE → Density, Hierarchy, Concurrency\n // Controls how many things compete for attention at once\n // Wider thresholds → clearer visual jumps between modes\n // ═══════════════════════════════════════════════════════════════════════════\n const density: InterfaceMode[\"density\"] = lowCognitive\n ? \"low\"\n : highCognitive\n ? \"high\"\n : \"medium\"\n\n // ═══════════════════════════════════════════════════════════════════════════\n // TEMPORAL → Content Length, Shortcuts, Defaults\n // Controls how much time the UI asks from the user\n // ═══════════════════════════════════════════════════════════════════════════\n const choiceLoad: InterfaceMode[\"choiceLoad\"] = lowTemporal ? \"minimal\" : \"normal\"\n\n // Guidance increases when temporal is low (provide shortcuts/defaults)\n // Also increases when cognitive is low (need more explanation)\n const guidance: InterfaceMode[\"guidance\"] = lowCognitive\n ? \"high\"\n : lowTemporal\n ? \"medium\"\n : \"low\"\n\n // ═══════════════════════════════════════════════════════════════════════════\n // EMOTIONAL → Motion Restraint, Friction\n // Controls nervous-system-safe UI (no surprises when capacity is low)\n // Four distinct tiers:\n // off: emotional < 0.15 → fully protective, static UI\n // soothing: emotional 0.15-0.4 → slow rhythmic motion only (breathe, float)\n // subtle: emotional 0.4-0.6 or low valence → grounded, minimal motion\n // expressive: emotional > 0.6 AND positive valence → full animation suite\n // ═══════════════════════════════════════════════════════════════════════════\n const veryLowEmotional = field.emotional < 0.15\n const motion: InterfaceMode[\"motion\"] = veryLowEmotional\n ? \"off\"\n : lowEmotional\n ? \"soothing\"\n : highEmotional && highValence\n ? \"expressive\"\n : \"subtle\"\n\n // ═══════════════════════════════════════════════════════════════════════════\n // VALENCE → Tone, Expressiveness (NOT information volume)\n // Controls emotional color: warmth, playfulness, accent frequency\n // ═══════════════════════════════════════════════════════════════════════════\n // Boosted contrast when mood is low helps with visual accessibility\n // This is a subtle visual adjustment, not information density\n const contrast: InterfaceMode[\"contrast\"] = negValence ? \"boosted\" : \"standard\"\n\n // ═══════════════════════════════════════════════════════════════════════════\n // COGNITIVE → Focus Guidance\n // Draws attention to important elements proportional to cognitive load.\n // Three tiers:\n // guided: cognitive < 0.4 → strong beacon glow + border (distracted)\n // gentle: cognitive < 0.7 → soft highlight + muted glow (calm/moderate)\n // default: cognitive >= 0.7 → no special treatment (focused/sharp)\n // Only activates when there IS some motion available (not \"off\"),\n // so the beacons don't appear on an already-static UI.\n // ═══════════════════════════════════════════════════════════════════════════\n const focus: InterfaceMode[\"focus\"] = motion === \"off\"\n ? \"default\"\n : lowCognitive\n ? \"guided\"\n : !highCognitive\n ? \"gentle\"\n : \"default\"\n\n // ═══════════════════════════════════════════════════════════════════════════\n // AROUSAL → Animation Pacing (Phase 3)\n // Controls HOW FAST animations play, independent of motion intensity.\n // calm: arousal < 0.35 → slow, deliberate pacing (+50% duration)\n // neutral: arousal 0.35–0.65 → standard pacing\n // activated: arousal > 0.65 → fast, energetic pacing (-35% duration)\n // ═══════════════════════════════════════════════════════════════════════════\n const arousal = field.arousal ?? 0.5\n const pace: ArousalMode = arousal < 0.35 ? \"calm\"\n : arousal > 0.65 ? \"activated\"\n : \"neutral\"\n\n return { density, guidance, motion, contrast, choiceLoad, focus, pace }\n}\n\n// ============================================================================\n// Mode Label Derivation\n// ============================================================================\n\n/**\n * Derives a human-readable mode label from raw capacity inputs\n *\n * We use RAW VALUES, not derived mode, because:\n * - Neutral (0.5, 0.5, 0.5) and Focused (0.7, 0.7, 0.6) produce the same InterfaceMode\n * - But they should have different labels (Calm vs Focused)\n * - The distinction is the RAW capacity level, not the derived mode\n *\n * Preset → Label / Motion / Focus mapping:\n * - Exhausted (0.1, 0.1, 0.1) → Minimal motion: off focus: default (static)\n * - Overwhelmed (0.2, 0.15, 0.2) → Minimal motion: soothing focus: guided (warm beacon)\n * - Distracted (0.35, 0.25, 0.5) → Minimal motion: subtle focus: guided (warm beacon)\n * - Neutral (0.5, 0.5, 0.5) → Calm motion: subtle focus: gentle (cool glow)\n * - Focused (0.75, 0.75, 0.55) → Focused motion: subtle focus: default\n * - Energized (0.9, 0.85, 0.85) → Exploratory motion: expressive focus: default\n * - Exploring (1.0, 1.0, 1.0) → Exploratory motion: expressive focus: default\n */\nexport function deriveModeLabel(inputs: CapacityField): InterfaceModeLabel {\n const { cognitive, temporal, emotional } = inputs\n\n // Exploratory: High cognitive AND high emotional capacity (energetic, engaged)\n // Threshold: both > 0.6 (lowered to capture Energized preset)\n if (cognitive > 0.6 && emotional > 0.6) {\n return \"Exploratory\"\n }\n\n // Minimal: Low capacity (cognitive AND temporal both below midpoint)\n // Threshold: both < 0.4 (raised to capture Overwhelmed + Exhausted distinctly)\n if (cognitive < 0.4 && temporal < 0.4) {\n return \"Minimal\"\n }\n\n // Focused: Good cognitive AND good temporal capacity (ready to work)\n // Threshold: both >= 0.55 (lowered slightly to capture Focused preset cleanly)\n if (cognitive >= 0.55 && temporal >= 0.55) {\n return \"Focused\"\n }\n\n // Calm: Everything else\n // Includes: Neutral (0.5s), Distracted (ok cognitive but low temporal), moderate states\n return \"Calm\"\n}\n\n// ============================================================================\n// Mode Utilities\n// ============================================================================\n\n/**\n * Get mode badge color based on label\n */\nexport function getModeBadgeColor(label: InterfaceModeLabel): string {\n switch (label) {\n case \"Calm\":\n return \"oklch(0.65 0.15 220)\" // Soft blue\n case \"Focused\":\n return \"oklch(0.68 0.16 45)\" // Primary rust\n case \"Exploratory\":\n return \"oklch(0.65 0.2 135)\" // Toxic green\n case \"Minimal\":\n return \"oklch(0.55 0.1 280)\" // Muted purple\n default:\n return \"oklch(0.5 0 0)\" // Gray\n }\n}\n","/**\n * Capacity Provider - React Context wrapper for ambient fields\n *\n * Wraps application root and exposes field hooks\n */\n\n\"use client\"\n\nimport type React from \"react\"\n\nimport { createContext, useContext, useEffect, useState, useCallback, useRef, type Dispatch, type SetStateAction } from \"react\"\nimport type { AmbientContext, UserCapacity, EmotionalState, MotionMode, CapacityField, InterfaceMode } from \"./types\"\nimport { triggerHaptic, playPacedSonic, type HapticPatternName } from \"./feedback\"\nimport { FieldManager } from \"./fields/field-manager\"\nimport { deriveMode } from \"./mode\"\nimport { MOTION_TOKENS, DEFAULT_CAPACITY_FIELD } from \"./constants\"\nimport { SignalAggregator } from \"./signals/aggregator\"\n\n// ============================================================================\n// Context Definition\n// ============================================================================\n\ninterface CapacityContextValue {\n context: AmbientContext\n updateCapacity: (capacity: Partial<UserCapacity>) => void\n updateEmotionalState: (state: Partial<EmotionalState>) => void\n isAutoMode: boolean;\n toggleAutoMode: () => void;\n updateCapacityField: (field: CapacityField) => void;\n hapticEnabled: boolean;\n sonicEnabled: boolean;\n setHapticEnabled: Dispatch<SetStateAction<boolean>>;\n setSonicEnabled: Dispatch<SetStateAction<boolean>>;\n}\n\nconst CapacityContext = createContext<CapacityContextValue | null>(null)\n\n// ============================================================================\n// Provider Component\n// ============================================================================\n\n/**\n * Exponential moving average weight for auto-mode signal smoothing.\n *\n * Each new reading contributes this fraction; the previous smoothed value\n * keeps (1 − α). A lower value means more smoothing and a longer \"warm-up\"\n * before a mode label actually flips — roughly α=0.2 means 4–5 consecutive\n * 2-second polls (~8–10 s) before a step-change lands at ≈ 67 % of its\n * final value, preventing single noisy readings from triggering a switch.\n */\nconst AUTO_EMA_ALPHA = 0.2;\n\nfunction applyEMA(prev: CapacityField, next: CapacityField, alpha: number): CapacityField {\n return {\n cognitive: prev.cognitive * (1 - alpha) + next.cognitive * alpha,\n temporal: prev.temporal * (1 - alpha) + next.temporal * alpha,\n emotional: prev.emotional * (1 - alpha) + next.emotional * alpha,\n valence: prev.valence * (1 - alpha) + next.valence * alpha,\n };\n}\n\nexport function CapacityProvider({ children }: { children: React.ReactNode }) {\n const [context, setContext] = useState<AmbientContext>(() => FieldManager.getContext());\n const [isAutoMode, setIsAutoMode] = useState<boolean>(true); // Start in auto mode\n const [hapticEnabled, setHapticEnabled] = useState<boolean>(false);\n const [sonicEnabled, setSonicEnabled] = useState<boolean>(false);\n const isFirstAggregationComplete = useRef<boolean>(false); // New ref to control initial aggregator application\n const smoothedFieldRef = useRef<CapacityField | null>(null); // EMA-smoothed field for auto mode\n const aggregatorRef = useRef<SignalAggregator | null>(null);\n\n useEffect(() => {\n // Initialize aggregator on mount\n aggregatorRef.current = new SignalAggregator();\n\n const unsubscribe = FieldManager.subscribe((newContext) => {\n setContext(newContext);\n });\n\n return () => {\n unsubscribe();\n // Clean up aggregator on unmount\n if (aggregatorRef.current) {\n aggregatorRef.current.destroy();\n }\n };\n }, []);\n\n // Effect to run aggregator in auto mode\n useEffect(() => {\n let intervalId: NodeJS.Timeout;\n\n if (isAutoMode && aggregatorRef.current) {\n // Reset smoothing state when (re-)entering auto mode so stale manual\n // slider positions don't bias the EMA baseline.\n isFirstAggregationComplete.current = false;\n smoothedFieldRef.current = null;\n intervalId = setInterval(async () => {\n try {\n const suggestedField = await aggregatorRef.current!.aggregateSignals();\n\n if (!isFirstAggregationComplete.current) {\n // Skip the very first aggregation — detectors need one cycle to stabilise.\n // Seed the EMA with this reading so the next poll has a sensible baseline.\n isFirstAggregationComplete.current = true;\n smoothedFieldRef.current = suggestedField;\n } else {\n // Apply EMA smoothing: new readings blend in gradually so a single\n // noisy poll can't instantly flip the mode label.\n smoothedFieldRef.current = applyEMA(\n smoothedFieldRef.current ?? suggestedField,\n suggestedField,\n AUTO_EMA_ALPHA,\n );\n const smoothed = smoothedFieldRef.current;\n FieldManager.updateCapacity({\n cognitive: smoothed.cognitive,\n temporal: smoothed.temporal,\n emotional: smoothed.emotional,\n });\n FieldManager.updateEmotionalState({\n valence: smoothed.valence,\n });\n }\n } catch (error) {\n // Log but do not crash — auto mode silently degrades on transient failures\n console.warn('[CapacityProvider] Signal aggregation failed:', error);\n }\n }, 2000); // Aggregate every 2 seconds\n }\n\n return () => {\n if (intervalId) {\n clearInterval(intervalId);\n }\n };\n }, [isAutoMode]);\n\n // Memoized update functions\n const updateCapacity = useCallback((capacity: Partial<UserCapacity>) => {\n if (isAutoMode) {\n setIsAutoMode(false); // Switch to manual mode if user manually updates capacity\n }\n FieldManager.updateCapacity(capacity);\n }, [isAutoMode]);\n\n const updateEmotionalState = useCallback((state: Partial<EmotionalState>) => {\n if (isAutoMode) {\n setIsAutoMode(false); // Switch to manual mode if user manually updates emotional state\n }\n FieldManager.updateEmotionalState(state);\n }, [isAutoMode]);\n\n const updateCapacityField = useCallback((field: CapacityField) => {\n // This function can be used to set the full capacity field directly, regardless of auto mode.\n // Useful for initial setup or explicit overrides.\n FieldManager.updateCapacity({\n cognitive: field.cognitive,\n temporal: field.temporal,\n emotional: field.emotional,\n });\n FieldManager.updateEmotionalState({\n valence: field.valence,\n });\n }, []);\n\n const toggleAutoMode = useCallback(() => {\n setIsAutoMode((prev) => !prev);\n }, []);\n\n return (\n <CapacityContext.Provider value={{\n context, updateCapacity, updateEmotionalState, isAutoMode, toggleAutoMode, updateCapacityField,\n hapticEnabled, sonicEnabled, setHapticEnabled, setSonicEnabled,\n }}>\n {children}\n </CapacityContext.Provider>\n );\n}\n\n// ============================================================================\n// Hooks\n// ============================================================================\n\n/**\n * Access full ambient context\n * Most components should use specific field hooks instead\n */\nexport function useCapacityContext(): CapacityContextValue {\n const context = useContext(CapacityContext)\n if (!context) {\n throw new Error(\"useCapacityContext must be used within CapacityProvider\")\n }\n return context\n}\n\n/**\n * Subscribe to energy field only\n */\nexport function useEnergyField() {\n const { context } = useCapacityContext()\n return context.energy\n}\n\n/**\n * Subscribe to attention field only\n */\nexport function useAttentionField() {\n const { context } = useCapacityContext()\n return context.attention\n}\n\n/**\n * Subscribe to emotional valence field only\n */\nexport function useEmotionalValenceField() {\n const { context } = useCapacityContext()\n return context.emotionalValence\n}\n\n/**\n * Get field update functions (for Phase 1 slider system)\n */\nexport function useFieldControls() {\n const { updateCapacity, updateEmotionalState, isAutoMode, toggleAutoMode, updateCapacityField } = useCapacityContext()\n return { updateCapacity, updateEmotionalState, isAutoMode, toggleAutoMode, updateCapacityField }\n}\n\n/**\n * Detect system prefers-reduced-motion preference\n * Returns true if user has requested reduced motion\n */\nexport function usePrefersReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false)\n\n useEffect(() => {\n // Check initial value\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\")\n setPrefersReducedMotion(mediaQuery.matches)\n\n // Listen for changes\n const handleChange = (event: MediaQueryListEvent) => {\n setPrefersReducedMotion(event.matches)\n }\n\n mediaQuery.addEventListener(\"change\", handleChange)\n return () => mediaQuery.removeEventListener(\"change\", handleChange)\n }, [])\n\n return prefersReducedMotion\n}\n\n/**\n * Derive the full mode from current capacity context.\n * This is the primary hook for section-level components that need\n * the field values AND the derived mode together.\n * \n * Eliminates the repeated { cognitive: context.userCapacity.cognitive, ... }\n * construction that was duplicated across every section component.\n */\nexport function useDerivedMode(): {\n field: CapacityField\n mode: InterfaceMode\n} {\n const { context } = useCapacityContext()\n\n const field: CapacityField = {\n cognitive: context.userCapacity.cognitive,\n temporal: context.userCapacity.temporal,\n emotional: context.userCapacity.emotional,\n valence: context.emotionalState.valence,\n arousal: context.emotionalState.arousal,\n }\n\n const mode = deriveMode(field)\n\n return { field, mode }\n}\n\n/**\n * Get effective motion mode with system preference override\n *\n * System prefers-reduced-motion is a HARD OVERRIDE - non-negotiable on safety.\n * This ensures accessibility compliance regardless of derived mode.\n */\nexport function useEffectiveMotion(): {\n mode: MotionMode\n tokens: typeof MOTION_TOKENS[keyof typeof MOTION_TOKENS]\n prefersReducedMotion: boolean\n} {\n const { field } = useDerivedMode()\n const prefersReducedMotion = usePrefersReducedMotion()\n\n const derivedMode = deriveMode(field)\n const effectiveMode: MotionMode = prefersReducedMotion ? \"off\" : derivedMode.motion\n\n return {\n mode: effectiveMode,\n tokens: MOTION_TOKENS[effectiveMode],\n prefersReducedMotion,\n }\n}\n\n/**\n * Access multimodal feedback preferences and fire helper.\n *\n * Reads opt-in flags from context — feedback only fires when the user\n * has explicitly enabled it in the CapacityControls panel.\n * Pace-aware: sonic frequency adapts to current arousal level.\n */\nexport function useFeedback(): {\n hapticEnabled: boolean\n sonicEnabled: boolean\n setHapticEnabled: Dispatch<SetStateAction<boolean>>\n setSonicEnabled: Dispatch<SetStateAction<boolean>>\n fire: (pattern?: HapticPatternName) => void\n} {\n const { hapticEnabled, sonicEnabled, setHapticEnabled, setSonicEnabled } = useCapacityContext()\n const { mode } = useDerivedMode()\n\n const fire = useCallback((pattern: HapticPatternName = \"tap\") => {\n if (hapticEnabled) triggerHaptic(pattern)\n if (sonicEnabled) playPacedSonic(mode.pace)\n }, [hapticEnabled, sonicEnabled, mode.pace])\n\n return { hapticEnabled, sonicEnabled, setHapticEnabled, setSonicEnabled, fire }\n}\n\n/**\n * Get motion tokens with arousal-based pacing applied (Phase 3)\n *\n * Arousal independently controls animation speed:\n * - calm (< 0.35): +50% duration — slow, deliberate\n * - neutral (0.35–0.65): standard duration\n * - activated (> 0.65): -35% duration — fast, energetic\n *\n * System prefers-reduced-motion overrides pace to \"calm\" for safety.\n */\nexport function usePacedMotionTokens(): {\n mode: MotionMode\n pace: ReturnType<typeof deriveMode>[\"pace\"]\n tokens: {\n durationFast: number\n durationBase: number\n durationSlow: number\n easing: string\n essentialDuration: number\n essentialEasing: string\n }\n} {\n const { mode } = useDerivedMode()\n const { mode: effectiveMotion, tokens: baseTokens, prefersReducedMotion } = useEffectiveMotion()\n\n const effectivePace = prefersReducedMotion ? \"calm\" : mode.pace\n const multiplier = effectivePace === \"calm\" ? 1.5 : effectivePace === \"activated\" ? 0.65 : 1.0\n\n return {\n mode: effectiveMotion,\n pace: effectivePace,\n tokens: {\n ...baseTokens,\n durationFast: Math.round(baseTokens.durationFast * multiplier),\n durationBase: Math.round(baseTokens.durationBase * multiplier),\n durationSlow: Math.round(baseTokens.durationSlow * multiplier),\n },\n }\n}\n","/**\n * Capacity-aware animation class utilities.\n *\n * Centralizes the repeated pattern of selecting CSS animation classes\n * based on the current motion mode (off / subtle / expressive).\n * Each section was independently deriving the same entranceClass / hoverClass /\n * ambientClass -- this module makes it a single source of truth.\n */\n\nimport type { MotionMode, FocusMode } from \"./types\"\n\n// ============================================================================\n// Entrance animations (one-shot, runs once when section scrolls into view)\n// ============================================================================\n\n/**\n * Map of named entrance animation presets.\n * Each preset maps a MotionMode to a CSS class name from globals.css.\n * \"off\" always maps to \"\" (no animation).\n */\nconst ENTRANCE_PRESETS = {\n /** Liquid organic morph -> gentle scale fade -> soft bloom -> none */\n morph: { expressive: \"morph-fade-in\", subtle: \"sacred-fade\", soothing: \"bloom\", off: \"\" },\n /** Spinning vortex -> gentle scale fade -> soft bloom -> none */\n vortex: { expressive: \"vortex-reveal\", subtle: \"sacred-fade\", soothing: \"bloom\", off: \"\" },\n /** Spiral in from corner -> soft bloom -> soft bloom -> none */\n spiral: { expressive: \"spiral-in\", subtle: \"bloom\", soothing: \"bloom\", off: \"\" },\n} as const\n\ntype EntrancePreset = keyof typeof ENTRANCE_PRESETS\n\n/**\n * Returns the appropriate entrance animation class for the given motion mode.\n * Returns \"\" when hasPlayed is true, preventing re-render flicker.\n */\nexport function entranceClass(\n motion: MotionMode,\n preset: EntrancePreset,\n hasPlayed: boolean,\n): string {\n if (hasPlayed) return \"\"\n return ENTRANCE_PRESETS[preset][motion]\n}\n\n// ============================================================================\n// Hover animations (applied as a persistent class, triggered by :hover in CSS)\n// ============================================================================\n\n/**\n * Returns the appropriate hover animation class.\n * \"off\" mode disables hover animations entirely.\n */\nexport function hoverClass(motion: MotionMode): string {\n if (motion === \"expressive\") return \"hover-expand\"\n if (motion === \"subtle\" || motion === \"soothing\") return \"hover-lift\"\n return \"\"\n}\n\n// ============================================================================\n// Ambient animations (looping, always active while mode is expressive)\n// ============================================================================\n\n/**\n * Returns a class for continuous ambient animation (breathing, floating, etc.)\n *\n * - expressive: all ambient types active\n * - soothing: only slow, rhythmic types (breathe, float) -- calms the nervous system\n * - subtle / off: no ambient animation\n */\nexport function ambientClass(motion: MotionMode, type: \"breathe\" | \"float\" | \"pulse\" | \"vibrate\"): string {\n if (motion === \"expressive\") return type\n if (motion === \"soothing\" && (type === \"breathe\" || type === \"float\")) return type\n return \"\"\n}\n\n/**\n * Returns the appropriate animation class for list items (staggered entrance).\n * Expressive: helix-rise, Subtle: sacred-fade, Off: none.\n */\nexport function listItemClass(motion: MotionMode): string {\n if (motion === \"expressive\") return \"helix-rise\"\n if (motion === \"subtle\" || motion === \"soothing\") return \"sacred-fade\"\n return \"\"\n}\n\n// ============================================================================\n// Focus / attention-drawing classes (activated by FocusMode \"guided\" or \"gentle\")\n// ============================================================================\n\n/**\n * Returns attention-beacon class for important container elements (cards, CTAs).\n * - guided: strong warm glow (3s cycle) + border accent\n * - gentle: muted cool glow (5s cycle) + softer border\n * - default: no treatment\n */\nexport function focusBeaconClass(focus: FocusMode): string {\n if (focus === \"guided\") return \"attention-beacon focus-highlight\"\n if (focus === \"gentle\") return \"gentle-beacon gentle-highlight\"\n return \"\"\n}\n\n/**\n * Returns attention-text class for important headings / labels.\n * - guided: warm text-shadow pulse (3s)\n * - gentle: cool text-shadow pulse (5s)\n * - default: no treatment\n */\nexport function focusTextClass(focus: FocusMode): string {\n if (focus === \"guided\") return \"attention-text\"\n if (focus === \"gentle\") return \"gentle-text\"\n return \"\"\n}\n","'use client'\n\nimport * as React from 'react'\nimport { rengeVars } from '@renge-ui/tokens'\n\n// Track and thumb require pseudo-elements — inline styles can't reach them.\n// These styles use CSS vars directly so they respond to createRengeTheme() at runtime.\nconst SLIDER_STYLES = `\n[data-renge-slider] {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: ${rengeVars.space[1]};\n background: ${rengeVars.color.bgMuted};\n border-radius: ${rengeVars.radius.full};\n outline: none;\n cursor: pointer;\n transition: background ${rengeVars.duration[1]} ${rengeVars.easing.out};\n}\n[data-renge-slider]:focus-visible {\n box-shadow: 0 0 0 2px ${rengeVars.color.bg}, 0 0 0 4px ${rengeVars.color.borderFocus};\n}\n[data-renge-slider]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n\n/* WebKit track */\n[data-renge-slider]::-webkit-slider-runnable-track {\n height: ${rengeVars.space[1]};\n background: ${rengeVars.color.bgMuted};\n border-radius: ${rengeVars.radius.full};\n}\n\n/* WebKit thumb */\n[data-renge-slider]::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: ${rengeVars.space[3]};\n height: ${rengeVars.space[3]};\n margin-top: calc((${rengeVars.space[1]} - ${rengeVars.space[3]}) / 2);\n border-radius: ${rengeVars.radius.full};\n background: ${rengeVars.color.accent};\n border: none;\n cursor: pointer;\n transition:\n background ${rengeVars.duration[1]} ${rengeVars.easing.out},\n transform ${rengeVars.duration[1]} ${rengeVars.easing.spring};\n}\n[data-renge-slider]:not(:disabled)::-webkit-slider-thumb:hover {\n background: ${rengeVars.color.accentHover};\n transform: scale(1.2);\n}\n[data-renge-slider]:not(:disabled):active::-webkit-slider-thumb {\n transform: scale(1.1);\n}\n\n/* Firefox track */\n[data-renge-slider]::-moz-range-track {\n height: ${rengeVars.space[1]};\n background: ${rengeVars.color.bgMuted};\n border-radius: ${rengeVars.radius.full};\n border: none;\n}\n\n/* Firefox thumb */\n[data-renge-slider]::-moz-range-thumb {\n width: ${rengeVars.space[3]};\n height: ${rengeVars.space[3]};\n border-radius: ${rengeVars.radius.full};\n background: ${rengeVars.color.accent};\n border: none;\n cursor: pointer;\n transition:\n background ${rengeVars.duration[1]} ${rengeVars.easing.out},\n transform ${rengeVars.duration[1]} ${rengeVars.easing.spring};\n}\n[data-renge-slider]:not(:disabled)::-moz-range-thumb:hover {\n background: ${rengeVars.color.accentHover};\n transform: scale(1.2);\n}\n`\n\nlet stylesInjected = false\n\nfunction Slider({\n className,\n value,\n defaultValue,\n min = 0,\n max = 100,\n step,\n onChange,\n disabled,\n style,\n ...props\n}: {\n className?: string\n value?: number\n defaultValue?: number\n min?: number\n max?: number\n step?: number\n onChange?: (value: number) => void\n disabled?: boolean\n style?: React.CSSProperties\n} & Omit<React.ComponentProps<'input'>, 'onChange' | 'value' | 'defaultValue' | 'type' | 'style'>) {\n if (typeof document !== 'undefined' && !stylesInjected) {\n const el = document.createElement('style')\n el.setAttribute('data-renge-slider-styles', '')\n el.textContent = SLIDER_STYLES\n document.head.appendChild(el)\n stylesInjected = true\n }\n\n return (\n <input\n data-slot=\"slider\"\n data-renge-slider=\"\"\n type=\"range\"\n className={className}\n value={value}\n defaultValue={defaultValue}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value ?? defaultValue}\n onChange={(e) => onChange?.(parseFloat(e.target.value))}\n style={style}\n {...props}\n />\n )\n}\n\nexport { Slider }\n","'use client'\n\nimport * as React from 'react'\nimport { rengeVars } from '@renge-ui/tokens'\n\ntype ButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\ntype ButtonSize = 'default' | 'sm' | 'lg' | 'icon' | 'icon-sm' | 'icon-lg'\n\n// Injected once per page — scoped to data-renge-btn attribute so there are no\n// collisions with the consumer's own button styles.\nconst BUTTON_STYLES = `\n[data-renge-btn] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 500;\n cursor: pointer;\n border: none;\n outline: none;\n text-decoration: none;\n user-select: none;\n transition:\n background ${rengeVars.duration[1]} ${rengeVars.easing.out},\n color ${rengeVars.duration[1]} ${rengeVars.easing.out},\n box-shadow ${rengeVars.duration[1]} ${rengeVars.easing.out},\n transform ${rengeVars.duration[1]} ${rengeVars.easing.spring};\n}\n[data-renge-btn]:active:not(:disabled) {\n transform: scale(0.97);\n}\n[data-renge-btn]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n[data-renge-btn]:focus-visible {\n box-shadow: 0 0 0 2px ${rengeVars.color.bg}, 0 0 0 4px ${rengeVars.color.borderFocus};\n}\n\n[data-renge-btn=\"default\"]:hover:not(:disabled) { background: ${rengeVars.color.accentHover}; }\n[data-renge-btn=\"destructive\"]:hover:not(:disabled) { filter: brightness(1.1); }\n[data-renge-btn=\"outline\"]:hover:not(:disabled) {\n background: ${rengeVars.color.bgSubtle};\n border-color: ${rengeVars.color.accent};\n color: ${rengeVars.color.accent};\n}\n[data-renge-btn=\"secondary\"]:hover:not(:disabled) { background: ${rengeVars.color.bgMuted}; }\n[data-renge-btn=\"ghost\"]:hover:not(:disabled) { background: ${rengeVars.color.bgSubtle}; }\n[data-renge-btn=\"link\"]:hover:not(:disabled) { color: ${rengeVars.color.accentHover}; }\n`\n\nconst variantStyles: Record<ButtonVariant, React.CSSProperties> = {\n default: {\n background: rengeVars.color.accent,\n color: rengeVars.color.fgInverse,\n },\n destructive: {\n background: rengeVars.color.danger,\n color: rengeVars.color.fgInverse,\n },\n outline: {\n background: 'transparent',\n color: rengeVars.color.fg,\n border: `1px solid ${rengeVars.color.border}`,\n },\n secondary: {\n background: rengeVars.color.bgSubtle,\n color: rengeVars.color.fg,\n },\n ghost: {\n background: 'transparent',\n color: rengeVars.color.fg,\n },\n link: {\n background: 'transparent',\n color: rengeVars.color.accent,\n textDecoration: 'underline',\n textUnderlineOffset: '3px',\n },\n}\n\nconst sizeStyles: Record<ButtonSize, React.CSSProperties> = {\n default: {\n padding: `${rengeVars.space[2]} ${rengeVars.space[4]}`,\n fontSize: rengeVars.fontSize.sm,\n borderRadius: rengeVars.radius[2],\n gap: rengeVars.space[2],\n },\n sm: {\n padding: `${rengeVars.space[1]} ${rengeVars.space[3]}`,\n fontSize: rengeVars.fontSize.xs,\n borderRadius: rengeVars.radius[2],\n gap: rengeVars.space[1],\n },\n lg: {\n padding: `${rengeVars.space[3]} ${rengeVars.space[5]}`,\n fontSize: rengeVars.fontSize.base,\n borderRadius: rengeVars.radius[3],\n gap: rengeVars.space[2],\n },\n icon: {\n width: rengeVars.space[6],\n height: rengeVars.space[6],\n padding: rengeVars.space[2],\n borderRadius: rengeVars.radius[2],\n flexShrink: 0,\n },\n 'icon-sm': {\n width: rengeVars.space[5],\n height: rengeVars.space[5],\n padding: rengeVars.space[1],\n borderRadius: rengeVars.radius[2],\n flexShrink: 0,\n },\n 'icon-lg': {\n width: rengeVars.space[7],\n height: rengeVars.space[7],\n padding: rengeVars.space[3],\n borderRadius: rengeVars.radius[3],\n flexShrink: 0,\n },\n}\n\nlet stylesInjected = false\n\nfunction Button({\n className,\n variant = 'default',\n size = 'default',\n style,\n ...props\n}: React.ComponentProps<'button'> & {\n variant?: ButtonVariant\n size?: ButtonSize\n}) {\n // Inject once per client session\n if (typeof document !== 'undefined' && !stylesInjected) {\n const el = document.createElement('style')\n el.setAttribute('data-renge-button-styles', '')\n el.textContent = BUTTON_STYLES\n document.head.appendChild(el)\n stylesInjected = true\n }\n\n return (\n <button\n data-slot=\"button\"\n data-renge-btn={variant}\n className={className}\n style={{ ...variantStyles[variant], ...sizeStyles[size], ...style }}\n {...props}\n />\n )\n}\n\nexport { Button }\nexport type { ButtonVariant, ButtonSize }\n","import * as React from 'react'\nimport { rengeVars } from '@renge-ui/tokens'\n\nfunction Card({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card\"\n className={className}\n style={{\n background: rengeVars.color.bgSubtle,\n border: `1px solid ${rengeVars.color.border}`,\n borderRadius: rengeVars.radius[4],\n boxShadow: `0 1px 3px color-mix(in oklch, ${rengeVars.color.fg} 8%, transparent)`,\n transition: `box-shadow ${rengeVars.duration[2]} ${rengeVars.easing.out}`,\n overflow: 'hidden',\n ...style,\n }}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-header\"\n className={className}\n style={{\n padding: `${rengeVars.space[4]} ${rengeVars.space[4]} 0`,\n display: 'grid',\n gridAutoRows: 'min-content',\n gap: rengeVars.space[1],\n ...style,\n }}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-title\"\n className={className}\n style={{\n fontSize: rengeVars.fontSize.base,\n lineHeight: rengeVars.lineHeight.base,\n fontWeight: 600,\n color: rengeVars.color.fg,\n ...style,\n }}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-description\"\n className={className}\n style={{\n fontSize: rengeVars.fontSize.sm,\n lineHeight: rengeVars.lineHeight.sm,\n color: rengeVars.color.fgSubtle,\n ...style,\n }}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-action\"\n className={className}\n style={{\n gridColumn: '2',\n gridRow: '1 / span 2',\n alignSelf: 'start',\n justifySelf: 'end',\n ...style,\n }}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-content\"\n className={className}\n style={{\n padding: `0 ${rengeVars.space[4]} ${rengeVars.space[4]}`,\n ...style,\n }}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, style, ...props }: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"card-footer\"\n className={className}\n style={{\n display: 'flex',\n alignItems: 'center',\n padding: `0 ${rengeVars.space[4]} ${rengeVars.space[4]}`,\n ...style,\n }}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","import * as React from 'react'\nimport { rengeVars } from '@renge-ui/tokens'\n\ntype BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline'\n\nconst variantStyles: Record<BadgeVariant, React.CSSProperties> = {\n default: {\n background: rengeVars.color.accent,\n color: rengeVars.color.fgInverse,\n },\n secondary: {\n background: rengeVars.color.accentSubtle,\n color: rengeVars.color.fg,\n },\n destructive: {\n background: rengeVars.color.danger,\n color: rengeVars.color.fgInverse,\n },\n outline: {\n background: 'transparent',\n color: rengeVars.color.fg,\n border: `1px solid ${rengeVars.color.border}`,\n },\n}\n\nconst baseStyle: React.CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n padding: `${rengeVars.space[1]} ${rengeVars.space[2]}`,\n borderRadius: rengeVars.radius.full,\n fontSize: rengeVars.fontSize.xs,\n lineHeight: rengeVars.lineHeight.xs,\n fontWeight: 500,\n whiteSpace: 'nowrap',\n border: 'none',\n transition: `background ${rengeVars.duration[1]} ${rengeVars.easing.out},\n color ${rengeVars.duration[1]} ${rengeVars.easing.out}`,\n}\n\nfunction Badge({\n className,\n variant = 'default',\n style,\n ...props\n}: React.ComponentProps<'span'> & { variant?: BadgeVariant }) {\n return (\n <span\n data-slot=\"badge\"\n className={className}\n style={{ ...baseStyle, ...variantStyles[variant], ...style }}\n {...props}\n />\n )\n}\n\nexport { Badge }\nexport type { BadgeVariant }\n","'use client'\n\nimport * as React from 'react'\nimport { rengeVars } from '@renge-ui/tokens'\n\n// Scoped styles for focus ring and hover — inline styles can't target :focus/:hover\nconst SELECT_STYLES = `\n[data-renge-select]:focus {\n outline: none;\n border-color: ${rengeVars.color.borderFocus};\n box-shadow: 0 0 0 2px ${rengeVars.color.accentSubtle};\n}\n[data-renge-select]:hover:not(:disabled):not(:focus) {\n border-color: ${rengeVars.color.accent};\n}\n[data-renge-select]:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n}\n`\n\nlet stylesInjected = false\n\nfunction Select({\n className,\n children,\n value,\n defaultValue,\n onChange,\n style,\n ...props\n}: React.ComponentProps<'select'> & {\n onValueChange?: (value: string) => void\n}) {\n if (typeof document !== 'undefined' && !stylesInjected) {\n const el = document.createElement('style')\n el.setAttribute('data-renge-select-styles', '')\n el.textContent = SELECT_STYLES\n document.head.appendChild(el)\n stylesInjected = true\n }\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(e)\n props.onValueChange?.(e.target.value)\n }\n\n const { onValueChange: _, ...restProps } = props\n\n return (\n <select\n data-slot=\"select\"\n data-renge-select=\"\"\n className={className}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n style={{\n width: '100%',\n padding: `${rengeVars.space[2]} ${rengeVars.space[3]}`,\n background: rengeVars.color.bg,\n color: rengeVars.color.fg,\n border: `1px solid ${rengeVars.color.border}`,\n borderRadius: rengeVars.radius[2],\n fontSize: rengeVars.fontSize.sm,\n lineHeight: rengeVars.lineHeight.sm,\n cursor: 'pointer',\n transition: `border-color ${rengeVars.duration[1]} ${rengeVars.easing.out},\n box-shadow ${rengeVars.duration[1]} ${rengeVars.easing.out}`,\n ...style,\n }}\n {...restProps}\n >\n {children}\n </select>\n )\n}\n\nexport { Select }\n","/**\n * Capacity-Adaptive UI Controls - Phase 1 Manual Input System (4 Inputs)\n *\n * STRICT SEPARATION OF CONCERNS:\n * ┌─────────────┬────────────────────────────────────┬─────────────────────────────┐\n * │ Slider │ Controls │ Must NOT Control │\n * ├─────────────┼────────────────────────────────────┼─────────────────────────────┤\n * │ Cognitive │ density, hierarchy, concurrency │ tone, animation speed │\n * │ Temporal │ content length, shortcuts, defaults│ color, layout structure │\n * │ Emotional │ motion restraint, friction │ content importance │\n * │ Valence │ tone, expressiveness │ information volume │\n * └─────────────┴────────────────────────────────────┴─────────────────────────────┘\n */\n\n\"use client\"\n\nimport { useState, useCallback } from \"react\"\nimport { motion, AnimatePresence } from \"motion/react\"\nimport {\n useCapacityContext,\n useDerivedMode,\n useEnergyField,\n useAttentionField,\n useEmotionalValenceField,\n useFeedback,\n deriveModeLabel,\n getModeBadgeColor,\n} from \"../capacity\"\nimport { Slider } from \"./ui/slider\"\nimport { Button } from \"./ui/button\"\nimport { Card, CardHeader, CardTitle, CardContent } from \"./ui/card\"\nimport { Badge } from \"./ui/badge\"\nimport { Select } from \"./ui/select\"\n\nfunction SettingsIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z\"\n />\n <path\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M15 12a3 3 0 11-6 0 3 3 0 016 0z\"\n />\n </svg>\n )\n}\n\nfunction CloseIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n )\n}\n\nfunction ResetIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\"\n />\n </svg>\n )\n}\n\nconst CAPACITY_PRESETS = {\n exhausted: {\n label: \"Exhausted\",\n description: \"Protective mode: stripped-back, no motion, no surprises\",\n cognitive: 0.1,\n temporal: 0.1,\n emotional: 0.1,\n valence: -0.6,\n arousal: 0.1,\n },\n overwhelmed: {\n label: \"Overwhelmed\",\n description: \"High stress: minimal content, boosted contrast, soothing motion\",\n cognitive: 0.2,\n temporal: 0.15,\n emotional: 0.2,\n valence: -0.5,\n arousal: 0.2,\n },\n distracted: {\n label: \"Distracted\",\n description: \"Short attention: fewer items, guided focus on key elements\",\n cognitive: 0.35,\n temporal: 0.25,\n emotional: 0.5,\n valence: 0.0,\n arousal: 0.4,\n },\n neutral: {\n label: \"Neutral\",\n description: \"Balanced: medium density, subtle motion, gentle focus on key items\",\n cognitive: 0.5,\n temporal: 0.5,\n emotional: 0.5,\n valence: 0.0,\n arousal: 0.5,\n },\n focused: {\n label: \"Focused\",\n description: \"Task-ready: full content, subtle motion, clear hierarchy\",\n cognitive: 0.75,\n temporal: 0.75,\n emotional: 0.55,\n valence: 0.1,\n arousal: 0.6,\n },\n energized: {\n label: \"Energized\",\n description: \"Full engagement: dense layout, expressive animations, warm tone\",\n cognitive: 0.9,\n temporal: 0.85,\n emotional: 0.85,\n valence: 0.6,\n arousal: 0.8,\n },\n exploring: {\n label: \"Exploring\",\n description: \"Maximum everything: all content, all animations, all features\",\n cognitive: 1.0,\n temporal: 1.0,\n emotional: 1.0,\n valence: 0.8,\n arousal: 0.9,\n },\n} as const\n\ntype PresetKey = keyof typeof CAPACITY_PRESETS\n\nconst DEFAULT_CALM_STATE = {\n cognitive: 0.5,\n temporal: 0.5,\n emotional: 0.5,\n valence: 0.0,\n arousal: 0.5,\n} as const\n\nexport function CapacityControls() {\n const [isOpen, setIsOpen] = useState(false)\n const { updateCapacity, updateEmotionalState, isAutoMode, toggleAutoMode } = useCapacityContext()\n const { hapticEnabled, sonicEnabled, setHapticEnabled, setSonicEnabled, fire: fireFeedback } = useFeedback()\n const { field, mode } = useDerivedMode()\n const energy = useEnergyField()\n const attention = useAttentionField()\n const valence = useEmotionalValenceField()\n\n const modeLabel = deriveModeLabel(field)\n const modeBadgeColor = getModeBadgeColor(modeLabel)\n\n const handleReset = () => {\n updateCapacity({\n cognitive: DEFAULT_CALM_STATE.cognitive,\n temporal: DEFAULT_CALM_STATE.temporal,\n emotional: DEFAULT_CALM_STATE.emotional,\n })\n updateEmotionalState({\n valence: DEFAULT_CALM_STATE.valence,\n arousal: DEFAULT_CALM_STATE.arousal,\n })\n }\n\n const fireInteractionFeedback = useCallback(() => {\n fireFeedback(\"tap\")\n }, [fireFeedback])\n\n return (\n <div className=\"fixed bottom-4 right-4 z-50\">\n <AnimatePresence>\n {!isOpen && (\n <motion.div\n initial={{ opacity: 0, scale: 0.8 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.8 }}\n className=\"flex items-center gap-2\"\n >\n <Badge\n className=\"shadow-lg\"\n style={{ backgroundColor: modeBadgeColor, color: \"white\" }}\n >\n {modeLabel}\n </Badge>\n <Button\n onClick={() => setIsOpen(true)}\n variant=\"outline\"\n size=\"sm\"\n className=\"shadow-lg bg-background\"\n >\n <SettingsIcon className=\"w-4 h-4 mr-2\" />\n Capacity\n </Button>\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n className=\"fixed inset-0 bg-black/20 backdrop-blur-sm md:hidden\"\n onClick={() => setIsOpen(false)}\n aria-hidden=\"true\"\n />\n )}\n </AnimatePresence>\n\n <AnimatePresence>\n {isOpen && (\n <motion.div\n initial={{ opacity: 0, y: 20, scale: 0.95 }}\n animate={{ opacity: 1, y: 0, scale: 1 }}\n exit={{ opacity: 0, y: 20, scale: 0.95 }}\n transition={{ type: \"spring\", damping: 20, stiffness: 300 }}\n className=\"relative\"\n >\n <Card className=\"w-80 shadow-xl max-h-[85vh] overflow-y-auto\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex flex-col items-center gap-2\">\n <div className=\"flex items-center gap-2\">\n <CardTitle className=\"text-sm font-semibold\">\n Capacity Controls\n </CardTitle>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-8 w-8 shrink-0\"\n onClick={(e) => {\n e.stopPropagation()\n setIsOpen(false)\n }}\n aria-label=\"Close capacity controls\"\n >\n <CloseIcon className=\"w-4 h-4\" />\n </Button>\n </div>\n <div className=\"flex items-center gap-2\">\n <Badge\n className=\"text-xs\"\n style={{ backgroundColor: modeBadgeColor, color: \"white\" }}\n >\n {modeLabel}\n </Badge>\n <Button\n variant={isAutoMode ? \"default\" : \"outline\"}\n size=\"sm\"\n className=\"h-7 text-xs px-2\"\n onClick={toggleAutoMode}\n aria-label={isAutoMode ? \"Switch to manual mode\" : \"Switch to auto mode\"}\n >\n {isAutoMode ? \"Auto\" : \"Manual\"}\n </Button>\n </div>\n </div>\n <p className=\"text-xs text-muted-foreground\">\n {isAutoMode\n ? \"Signals are driving values automatically. Move any slider to take manual control.\"\n : \"Adjust your state to see the UI adapt in real-time.\"}\n </p>\n </CardHeader>\n\n <CardContent className=\"space-y-6\">\n <div className=\"space-y-2 flex flex-col gap-2\">\n <label className=\"text-sm font-medium\">Quick Presets</label>\n <Select\n defaultValue=\"\"\n onValueChange={(value: string) => {\n if (!value) return\n const preset = CAPACITY_PRESETS[value as PresetKey]\n updateCapacity({\n cognitive: preset.cognitive,\n temporal: preset.temporal,\n emotional: preset.emotional,\n })\n updateEmotionalState({ valence: preset.valence, arousal: preset.arousal })\n fireInteractionFeedback()\n }}\n >\n <option value=\"\" disabled>Select a preset...</option>\n {Object.entries(CAPACITY_PRESETS).map(([key, preset]) => (\n <option key={key} value={key}>\n {preset.label} — {preset.description}\n </option>\n ))}\n </Select>\n </div>\n\n <div className=\"flex items-center justify-between border-t border-border pt-4\">\n <p className=\"text-xs text-muted-foreground\">Or adjust individually:</p>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleReset}\n className=\"h-7 text-xs text-muted-foreground hover:text-foreground\"\n >\n <ResetIcon className=\"w-3 h-3 mr-1\" />\n Reset\n </Button>\n </div>\n\n <SliderControl\n label=\"Cognitive Capacity\"\n description=\"Controls: density, hierarchy, concurrency\"\n value={field.cognitive}\n onChange={(v) => updateCapacity({ cognitive: v })}\n lowLabel=\"Fewer items\"\n highLabel=\"More items\"\n />\n\n <SliderControl\n label=\"Temporal Capacity\"\n description=\"Controls: content length, shortcuts, defaults\"\n value={field.temporal}\n onChange={(v) => updateCapacity({ temporal: v })}\n lowLabel=\"Abbreviated\"\n highLabel=\"Full detail\"\n />\n\n <SliderControl\n label=\"Emotional Capacity\"\n description=\"Controls: motion restraint, friction\"\n value={field.emotional}\n onChange={(v) => updateCapacity({ emotional: v })}\n lowLabel=\"Calm UI\"\n highLabel=\"Expressive\"\n />\n\n <div className=\"pt-2 border-t border-border\">\n <ValenceSliderControl\n label=\"Emotional Valence\"\n description=\"Controls: tone, expressiveness (not info volume)\"\n value={field.valence}\n onChange={(v) => updateEmotionalState({ valence: v })}\n />\n </div>\n\n <SliderControl\n label=\"Arousal\"\n description=\"Controls: animation pacing (calm → activated)\"\n value={field.arousal ?? 0.5}\n onChange={(v) => updateEmotionalState({ arousal: v })}\n lowLabel=\"Calm\"\n highLabel=\"Activated\"\n />\n\n <div className=\"pt-2 border-t border-border space-y-2\">\n <p className=\"text-xs font-medium text-muted-foreground\">\n Feedback <span className=\"font-normal opacity-60\">(opt-in)</span>\n </p>\n <div className=\"flex gap-2\">\n <button\n onClick={() => setHapticEnabled(v => !v)}\n className={`flex-1 py-1.5 px-2 rounded-md text-xs border transition-colors ${hapticEnabled ? \"bg-primary/10 border-primary/50 text-primary\" : \"border-border text-muted-foreground hover:text-foreground\"}`}\n aria-pressed={hapticEnabled}\n >\n 📳 Haptic\n </button>\n <button\n onClick={() => setSonicEnabled(v => !v)}\n className={`flex-1 py-1.5 px-2 rounded-md text-xs border transition-colors ${sonicEnabled ? \"bg-primary/10 border-primary/50 text-primary\" : \"border-border text-muted-foreground hover:text-foreground\"}`}\n aria-pressed={sonicEnabled}\n >\n 🔔 Sonic\n </button>\n </div>\n <p className=\"text-[10px] text-muted-foreground opacity-60\">\n Pace: <span className=\"font-medium\">{mode.pace}</span> → {mode.pace === \"calm\" ? \"+50% duration\" : mode.pace === \"activated\" ? \"−35% duration\" : \"standard\"}\n </p>\n </div>\n\n <div className=\"pt-4 border-t border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Derived Fields\n </p>\n <div className=\"grid grid-cols-3 gap-2 text-center\">\n <FieldDisplay label=\"Energy\" value={energy.value} color=\"text-chart-1\" />\n <FieldDisplay label=\"Attention\" value={attention.value} color=\"text-chart-2\" />\n <FieldDisplay label=\"Valence\" value={valence.value} color=\"text-chart-3\" signed />\n </div>\n </div>\n\n <div className=\"pt-4 border-t border-border\">\n <p className=\"text-xs font-medium text-muted-foreground mb-2\">\n Interface Mode\n </p>\n <div className=\"grid grid-cols-2 gap-1 text-xs\">\n <span className=\"text-muted-foreground\">Density:</span>\n <span className=\"font-medium\">{mode.density}</span>\n <span className=\"text-muted-foreground\">Guidance:</span>\n <span className=\"font-medium\">{mode.guidance}</span>\n <span className=\"text-muted-foreground\">Motion:</span>\n <span className=\"font-medium\">{mode.motion}</span>\n <span className=\"text-muted-foreground\">Contrast:</span>\n <span className=\"font-medium\">{mode.contrast}</span>\n <span className=\"text-muted-foreground\">Choices:</span>\n <span className=\"font-medium\">{mode.choiceLoad}</span>\n <span className=\"text-muted-foreground\">Focus:</span>\n <span className=\"font-medium\">{mode.focus}</span>\n <span className=\"text-muted-foreground\">Pace:</span>\n <span className=\"font-medium\">{mode.pace}</span>\n </div>\n </div>\n </CardContent>\n </Card>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n )\n}\n\nfunction SliderControl({\n label,\n description,\n value,\n onChange,\n lowLabel,\n highLabel,\n}: {\n label: string\n description: string\n value: number\n onChange: (value: number) => void\n lowLabel: string\n highLabel: string\n}) {\n return (\n <div className=\"space-y-2\">\n <div className=\"flex justify-between items-baseline\">\n <label className=\"text-sm font-medium\">{label}</label>\n <span className=\"text-xs text-muted-foreground tabular-nums\">\n {Math.round(value * 100)}%\n </span>\n </div>\n <Slider\n value={value}\n onChange={(v) => onChange(v)}\n min={0}\n max={1}\n step={0.01}\n className=\"w-full\"\n />\n <div className=\"flex justify-between text-xs text-muted-foreground\">\n <span>{lowLabel}</span>\n <span>{highLabel}</span>\n </div>\n </div>\n )\n}\n\nfunction ValenceSliderControl({\n label,\n description,\n value,\n onChange,\n}: {\n label: string\n description: string\n value: number\n onChange: (value: number) => void\n}) {\n const sliderValue = (value + 1) / 2\n const displayValue = value >= 0 ? `+${value.toFixed(2)}` : value.toFixed(2)\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex justify-between items-baseline\">\n <label className=\"text-sm font-medium\">{label}</label>\n <span className=\"text-xs text-muted-foreground tabular-nums font-mono\">\n {displayValue}\n </span>\n </div>\n <Slider\n value={sliderValue}\n onChange={(v) => onChange(v * 2 - 1)}\n min={0}\n max={1}\n step={0.01}\n className=\"w-full\"\n />\n <div className=\"flex justify-between text-xs text-muted-foreground\">\n <span>Negative</span>\n <span className=\"opacity-50\">Neutral</span>\n <span>Positive</span>\n </div>\n </div>\n )\n}\n\nfunction FieldDisplay({\n label,\n value,\n color,\n signed = false,\n}: {\n label: string\n value: number\n color: string\n signed?: boolean\n}) {\n const displayValue = signed\n ? (value >= 0 ? \"+\" : \"\") + value.toFixed(2)\n : value.toFixed(2)\n\n return (\n <div className=\"bg-muted/50 rounded-md p-2\">\n <p className=\"text-xs text-muted-foreground\">{label}</p>\n <p className={`text-sm font-mono font-bold ${color}`}>{displayValue}</p>\n </div>\n )\n}\n","/**\n * Capacity Demo Card\n *\n * A live demonstration of how UI adapts to capacity state.\n *\n * STRICT SEPARATION OF CONCERNS:\n * - Cognitive → density (how many items shown, visual complexity)\n * - Temporal → content length (full vs abbreviated text)\n * - Emotional → motion restraint (animation intensity)\n * - Valence → tone only (greeting warmth, accent color)\n */\n\n\"use client\"\n\nimport {\n useDerivedMode,\n deriveModeLabel,\n getModeBadgeColor,\n entranceClass as getEntranceClass,\n hoverClass as getHoverClass,\n ambientClass,\n listItemClass,\n useFeedback,\n} from \"../capacity\"\nimport { Card, CardHeader, CardTitle, CardDescription, CardContent } from \"./ui/card\"\nimport { Badge } from \"./ui/badge\"\n\nconst DENSITY_CONTENT = {\n high: {\n title: \"Adaptive Interface Demo\",\n featureCount: 4,\n cta: \"Explore the Framework\",\n },\n medium: {\n title: \"Adaptive Interface\",\n featureCount: 2,\n cta: \"Explore\",\n },\n low: {\n title: \"Live Demo\",\n featureCount: 0,\n cta: \"Go\",\n },\n}\n\nconst TEMPORAL_CONTENT = {\n full: {\n description: \"This card demonstrates how the capacity system adapts UI in real-time based on your current state.\",\n features: [\n \"Cognitive capacity controls visual density\",\n \"Temporal capacity controls content length\",\n \"Emotional capacity controls motion restraint\",\n \"Valence controls tone and expressiveness\",\n ],\n },\n abbreviated: {\n description: \"UI adapts in real-time.\",\n features: [\n \"Density from cognitive\",\n \"Length from temporal\",\n \"Motion from emotional\",\n \"Tone from valence\",\n ],\n },\n}\n\nconst TONE = {\n positive: {\n greeting: \"You're doing great!\",\n accent: \"text-green-600 dark:text-accent\",\n },\n neutral: {\n greeting: \"Here's how it works:\",\n accent: \"text-primary\",\n },\n negative: {\n greeting: \"Take your time.\",\n accent: \"text-muted-foreground\",\n },\n}\n\nexport function CapacityDemoCard() {\n const { field, mode } = useDerivedMode()\n const { fire } = useFeedback()\n const modeLabel = deriveModeLabel(field)\n const modeBadgeColor = getModeBadgeColor(modeLabel)\n\n const densityContent = DENSITY_CONTENT[mode.density]\n const temporalContent = field.temporal > 0.4 ? TEMPORAL_CONTENT.full : TEMPORAL_CONTENT.abbreviated\n const toneKey = field.valence > 0.2 ? \"positive\" : field.valence < -0.2 ? \"negative\" : \"neutral\"\n const tone = TONE[toneKey]\n\n const entrance = getEntranceClass(mode.motion, \"morph\", false)\n const hover = getHoverClass(mode.motion)\n\n const visibleFeatures = temporalContent.features.slice(0, densityContent.featureCount)\n\n return (\n <Card\n className={`max-w-md border-2 transition-colors ${entrance} ${hover}`}\n style={{ borderColor: `color-mix(in oklch, ${modeBadgeColor} 40%, transparent)` }}\n >\n <CardHeader>\n <div className=\"flex items-center justify-between mb-2\">\n <Badge\n className=\"text-xs\"\n style={{ backgroundColor: modeBadgeColor, color: \"white\" }}\n >\n {modeLabel} Mode\n </Badge>\n <span className={`text-xs ${tone.accent}`}>{tone.greeting}</span>\n </div>\n <CardTitle className={ambientClass(mode.motion, \"float\")}>\n {densityContent.title}\n </CardTitle>\n {mode.density !== \"low\" && (\n <CardDescription>{temporalContent.description}</CardDescription>\n )}\n </CardHeader>\n\n <CardContent className=\"space-y-4\">\n {visibleFeatures.length > 0 && (\n <ul className=\"space-y-2\">\n {visibleFeatures.map((feature, idx) => (\n <li\n key={idx}\n className={`flex items-start gap-2 text-sm text-muted-foreground ${listItemClass(mode.motion)}`}\n style={{ animationDelay: `${idx * 0.15}s` }}\n >\n <CheckIcon className=\"w-4 h-4 text-primary shrink-0 mt-0.5\" />\n <span>{feature}</span>\n </li>\n ))}\n </ul>\n )}\n\n {mode.guidance !== \"low\" && (\n <p className=\"text-xs text-muted-foreground/70 italic\">\n {mode.guidance === \"high\"\n ? \"Tip: adjust capacity controls (bottom-right) to see this card change\"\n : \"Try adjusting the capacity controls\"}\n </p>\n )}\n\n <div className={mode.choiceLoad === \"normal\" ? \"flex gap-2\" : \"\"}>\n <button\n className={`${mode.choiceLoad === \"normal\" ? \"flex-1\" : \"w-full\"} py-2 px-4 rounded-md bg-primary text-primary-foreground font-medium text-sm transition-transform ${hover} ${ambientClass(mode.motion, \"breathe\")}`}\n onClick={() => fire(\"tap\")}\n >\n {densityContent.cta}\n </button>\n {mode.choiceLoad === \"normal\" && mode.density !== \"low\" && (\n <button\n className=\"py-2 px-3 rounded-md border border-border text-sm text-muted-foreground hover:text-foreground transition-colors\"\n onClick={() => fire(\"tap\")}\n >\n Details\n </button>\n )}\n </div>\n\n <div className=\"pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground mb-2\">Live State</p>\n {mode.choiceLoad === \"minimal\" ? (\n <div className=\"grid grid-cols-2 gap-1 text-xs\">\n <StateChip label=\"Cog\" value={field.cognitive} hint=\"density\" />\n <StateChip label=\"Temp\" value={field.temporal} hint=\"length\" />\n </div>\n ) : (\n <div className=\"grid grid-cols-4 gap-1 text-xs\">\n <StateChip label=\"Cog\" value={field.cognitive} hint=\"density\" />\n <StateChip label=\"Temp\" value={field.temporal} hint=\"length\" />\n <StateChip label=\"Emo\" value={field.emotional} hint=\"motion\" />\n <StateChip label=\"Val\" value={field.valence} hint=\"tone\" signed />\n </div>\n )}\n </div>\n </CardContent>\n </Card>\n )\n}\n\nfunction StateChip({\n label,\n value,\n hint,\n signed = false,\n}: {\n label: string\n value: number\n hint: string\n signed?: boolean\n}) {\n const displayValue = signed\n ? (value >= 0 ? \"+\" : \"\") + value.toFixed(1)\n : value.toFixed(1)\n\n return (\n <div className=\"bg-muted/50 rounded-md px-2 py-1 text-center\">\n <p className=\"text-muted-foreground text-[10px]\">{label}</p>\n <p className=\"font-mono font-medium\">{displayValue}</p>\n <p className=\"text-muted-foreground text-[9px] opacity-70\">{hint}</p>\n </div>\n )\n}\n\nfunction CheckIcon({ className }: { className?: string }) {\n return (\n <svg\n className={className}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n d=\"M5 13l4 4L19 7\"\n />\n </svg>\n )\n}\n","/**\n * Mode Derivation Monitor - Shows how inputs become interface modes\n *\n * Three columns:\n * 1. Your Inputs (4 values with live gauges)\n * 2. Derived Mode (label + token pills)\n * 3. UI Effects (active effect list)\n */\n\n\"use client\"\n\nimport {\n useDerivedMode,\n deriveModeLabel,\n getModeBadgeColor,\n} from \"../capacity\"\nimport { Card } from \"./ui/card\"\nimport { Badge } from \"./ui/badge\"\n\nexport function AmbientFieldMonitor() {\n return (\n <div className=\"space-y-6\">\n <InputsToModeFlow />\n <DerivationLogicExplainer />\n </div>\n )\n}\n\nfunction InputsToModeFlow() {\n const { field, mode } = useDerivedMode()\n const label = deriveModeLabel(field)\n const badgeColor = getModeBadgeColor(label)\n\n return (\n <Card className=\"overflow-hidden border-border/50\">\n <div className=\"grid lg:grid-cols-3 divide-y lg:divide-y-0 lg:divide-x divide-border/50\">\n\n <div className=\"p-6 space-y-4\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground\">\n <span className=\"w-6 h-6 rounded-full bg-muted flex items-center justify-center text-xs\">1</span>\n Your Inputs\n </div>\n <div className=\"space-y-3\">\n <InputGauge label=\"Cognitive\" value={field.cognitive} description=\"mental bandwidth\" />\n <InputGauge label=\"Temporal\" value={field.temporal} description=\"time available\" />\n <InputGauge label=\"Emotional\" value={field.emotional} description=\"resilience\" />\n <InputGauge label=\"Valence\" value={field.valence} description=\"mood\" isBipolar />\n </div>\n </div>\n\n <div className=\"p-6 space-y-4 bg-muted/30\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground\">\n <span className=\"w-6 h-6 rounded-full bg-muted flex items-center justify-center text-xs\">2</span>\n Derived Mode\n </div>\n <div className=\"flex flex-col items-center py-4\">\n <Badge\n className=\"text-xl font-bold px-6 py-3 shadow-lg\"\n style={{ backgroundColor: badgeColor, color: \"white\" }}\n >\n {label}\n </Badge>\n </div>\n <div className=\"flex flex-wrap gap-2 justify-center\">\n <ModePill label=\"density\" value={mode.density} />\n <ModePill label=\"guidance\" value={mode.guidance} />\n <ModePill label=\"choices\" value={mode.choiceLoad} />\n <ModePill label=\"motion\" value={mode.motion} />\n <ModePill label=\"contrast\" value={mode.contrast} />\n <ModePill label=\"focus\" value={mode.focus} />\n </div>\n </div>\n\n <div className=\"p-6 space-y-4\">\n <div className=\"flex items-center gap-2 text-sm font-medium text-muted-foreground\">\n <span className=\"w-6 h-6 rounded-full bg-muted flex items-center justify-center text-xs\">3</span>\n UI Effects\n </div>\n <div className=\"space-y-1.5\">\n <EffectRow active={mode.density === \"low\"} text=\"Fewer items shown, simpler layouts\" />\n <EffectRow active={mode.density === \"high\"} text=\"Full feature display, dense grids\" />\n <EffectRow active={mode.guidance === \"high\"} text=\"More labels, helper text visible\" />\n <EffectRow active={mode.choiceLoad === \"minimal\"} text=\"Reduced options, smart defaults\" />\n <EffectRow active={mode.motion === \"off\"} text=\"No animations, fully static UI\" />\n <EffectRow active={mode.motion === \"soothing\"} text=\"Slow rhythmic motion: breathe, float\" />\n <EffectRow active={mode.motion === \"subtle\"} text=\"Calm animations, no surprises\" />\n <EffectRow active={mode.motion === \"expressive\"} text=\"Playful micro-interactions\" />\n <EffectRow active={mode.contrast === \"boosted\"} text=\"Higher contrast for accessibility\" />\n <EffectRow active={mode.focus === \"gentle\"} text=\"Soft highlight on important elements\" />\n <EffectRow active={mode.focus === \"guided\"} text=\"Strong beacon glow on key elements\" />\n </div>\n </div>\n </div>\n </Card>\n )\n}\n\nfunction InputGauge({\n label,\n value,\n description,\n isBipolar = false,\n}: {\n label: string\n value: number\n description: string\n isBipolar?: boolean\n}) {\n const percentage = isBipolar ? ((value + 1) / 2) * 100 : value * 100\n\n const getColor = () => {\n if (isBipolar) {\n if (value < -0.15) return \"bg-amber-500\"\n if (value > 0.15) return \"bg-emerald-500\"\n return \"bg-sky-500\"\n }\n if (value < 0.4) return \"bg-amber-500\"\n if (value > 0.7) return \"bg-emerald-500\"\n return \"bg-sky-500\"\n }\n\n return (\n <div className=\"space-y-1.5\">\n <div className=\"flex justify-between items-baseline\">\n <span className=\"text-sm font-medium text-foreground\">{label}</span>\n <span className=\"text-xs text-muted-foreground\">{description}</span>\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"flex-1 h-2 bg-muted rounded-full overflow-hidden\">\n <div\n className={`h-full rounded-full transition-all duration-300 ${getColor()}`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n <span className=\"text-sm font-mono tabular-nums w-12 text-right text-foreground\">\n {isBipolar ? (value >= 0 ? \"+\" : \"\") + value.toFixed(1) : (value * 100).toFixed(0) + \"%\"}\n </span>\n </div>\n </div>\n )\n}\n\nfunction ModePill({ label, value }: { label: string; value: string }) {\n return (\n <span className=\"inline-flex items-center gap-1.5 px-2.5 py-1 rounded-full bg-background border border-border text-xs\">\n <span className=\"text-muted-foreground\">{label}:</span>\n <span className=\"font-medium text-foreground\">{value}</span>\n </span>\n )\n}\n\nfunction EffectRow({ active, text }: { active: boolean; text: string }) {\n return (\n <div className={`py-1.5 text-sm transition-opacity ${active ? \"opacity-100\" : \"opacity-40\"}`}>\n <span className={active ? \"text-foreground font-medium\" : \"text-muted-foreground\"}>\n {active ? \"-> \" : \" \"}{text}\n </span>\n </div>\n )\n}\n\nfunction DerivationLogicExplainer() {\n return (\n <Card className=\"p-6 border-border/50 bg-muted/20\">\n <h3 className=\"text-sm font-semibold text-muted-foreground uppercase tracking-wide mb-4\">\n Derivation Rules\n </h3>\n <div className=\"grid gap-4 md:grid-cols-2 text-sm\">\n <div className=\"space-y-2\">\n <p className=\"font-medium text-foreground\">Cognitive controls density:</p>\n <ul className=\"space-y-1 text-muted-foreground font-mono text-xs\">\n <li>{\"cognitive < 0.4 → density: low\"}</li>\n <li>{\"cognitive > 0.7 → density: high\"}</li>\n <li>{\"else → density: medium\"}</li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-medium text-foreground\">Temporal controls choices:</p>\n <ul className=\"space-y-1 text-muted-foreground font-mono text-xs\">\n <li>{\"temporal < 0.4 → choiceLoad: minimal\"}</li>\n <li>{\"else → choiceLoad: normal\"}</li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-medium text-foreground\">Emotional controls motion:</p>\n <ul className=\"space-y-1 text-muted-foreground font-mono text-xs\">\n <li>{\"emotional < 0.15 → motion: off\"}</li>\n <li>{\"emotional < 0.4 → motion: soothing\"}</li>\n <li>{\"emotional > 0.6 & val > 0.15 → motion: expressive\"}</li>\n <li>{\"else → motion: subtle\"}</li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-medium text-foreground\">Valence controls tone:</p>\n <ul className=\"space-y-1 text-muted-foreground font-mono text-xs\">\n <li>{\"valence < -0.15 → contrast: boosted\"}</li>\n <li>{\"else → contrast: standard\"}</li>\n </ul>\n </div>\n <div className=\"space-y-2\">\n <p className=\"font-medium text-foreground\">Cognitive controls focus:</p>\n <ul className=\"space-y-1 text-muted-foreground font-mono text-xs\">\n <li>{\"motion == off → focus: default\"}</li>\n <li>{\"cognitive < 0.4 → focus: guided\"}</li>\n <li>{\"cognitive < 0.7 → focus: gentle\"}</li>\n <li>{\"else → focus: default\"}</li>\n </ul>\n </div>\n </div>\n </Card>\n )\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ type BadgeVariant = 'default' | 'secondary' | 'destructive' | 'outline';
3
+ declare function Badge({ className, variant, style, ...props }: React.ComponentProps<'span'> & {
4
+ variant?: BadgeVariant;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export { Badge };
7
+ export type { BadgeVariant };
8
+ //# sourceMappingURL=badge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../lib/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAA;AAoCvE,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAmB,EACnB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAA;CAAE,2CAS3D;AAED,OAAO,EAAE,KAAK,EAAE,CAAA;AAChB,YAAY,EAAE,YAAY,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ type ButtonVariant = 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
3
+ type ButtonSize = 'default' | 'sm' | 'lg' | 'icon' | 'icon-sm' | 'icon-lg';
4
+ declare function Button({ className, variant, size, style, ...props }: React.ComponentProps<'button'> & {
5
+ variant?: ButtonVariant;
6
+ size?: ButtonSize;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ export { Button };
9
+ export type { ButtonVariant, ButtonSize };
10
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../lib/components/ui/button.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,KAAK,aAAa,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAA;AAC3F,KAAK,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAA;AAsH1E,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,OAAmB,EACnB,IAAgB,EAChB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,IAAI,CAAC,EAAE,UAAU,CAAA;CAClB,2CAmBA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA;AACjB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import * as React from 'react';
2
+ declare function Card({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
3
+ declare function CardHeader({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
4
+ declare function CardTitle({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
5
+ declare function CardDescription({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
6
+ declare function CardAction({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
7
+ declare function CardContent({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
8
+ declare function CardFooter({ className, style, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
9
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
10
+ //# sourceMappingURL=card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../lib/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,iBAAS,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAiBxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAe9E;AAED,iBAAS,SAAS,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAe7E;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAcnF;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAe9E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAY/E;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAc9E;AAED,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,WAAW,GACZ,CAAA"}
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ declare function Select({ className, children, value, defaultValue, onChange, style, ...props }: React.ComponentProps<'select'> & {
3
+ onValueChange?: (value: string) => void;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ export { Select };
6
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../lib/components/ui/select.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAqB9B,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG;IAClC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,2CA2CA;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ declare function Slider({ className, value, defaultValue, min, max, step, onChange, disabled, style, ...props }: {
3
+ className?: string;
4
+ value?: number;
5
+ defaultValue?: number;
6
+ min?: number;
7
+ max?: number;
8
+ step?: number;
9
+ onChange?: (value: number) => void;
10
+ disabled?: boolean;
11
+ style?: React.CSSProperties;
12
+ } & Omit<React.ComponentProps<'input'>, 'onChange' | 'value' | 'defaultValue' | 'type' | 'style'>): import("react/jsx-runtime").JSX.Element;
13
+ export { Slider };
14
+ //# sourceMappingURL=slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../../lib/components/ui/slider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAmF9B,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,KAAK,EACL,YAAY,EACZ,GAAO,EACP,GAAS,EACT,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;CAC5B,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC,2CA6BhG;AAED,OAAO,EAAE,MAAM,EAAE,CAAA"}
package/package.json ADDED
@@ -0,0 +1,98 @@
1
+ {
2
+ "name": "@harmonia-core/ui",
3
+ "version": "1.0.0",
4
+ "private": false,
5
+ "description": "A capacity-adaptive UI framework that treats human cognitive, temporal, and emotional state as first-class inputs. Derives interface modes (density, motion, contrast, focus) from explicit user state — no inference, no profiling.",
6
+ "keywords": [
7
+ "capacity-adaptive",
8
+ "ui-framework",
9
+ "react",
10
+ "accessibility",
11
+ "adaptive-ui",
12
+ "cognitive-load",
13
+ "motion",
14
+ "design-tokens"
15
+ ],
16
+ "license": "MIT",
17
+ "author": "Vanessa Martin",
18
+ "homepage": "https://harmonia-ui.vercel.app",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/vsm1996/harmonia-ui"
22
+ },
23
+ "main": "./dist/capacity/index.js",
24
+ "module": "./dist/capacity/index.mjs",
25
+ "types": "./dist/capacity/index.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./dist/capacity/index.d.ts",
29
+ "import": "./dist/capacity/index.mjs",
30
+ "require": "./dist/capacity/index.js"
31
+ },
32
+ "./components": {
33
+ "types": "./dist/components/index.d.ts",
34
+ "import": "./dist/components/index.mjs",
35
+ "require": "./dist/components/index.js"
36
+ }
37
+ },
38
+ "publishConfig": {
39
+ "access": "public"
40
+ },
41
+ "files": [
42
+ "dist"
43
+ ],
44
+ "peerDependencies": {
45
+ "@renge-ui/tokens": "^2.2.0",
46
+ "motion": ">=11.0.0",
47
+ "react": ">=18.0.0",
48
+ "react-dom": ">=18.0.0"
49
+ },
50
+ "peerDependenciesMeta": {
51
+ "motion": {
52
+ "optional": true
53
+ }
54
+ },
55
+ "dependencies": {},
56
+ "devDependencies": {
57
+ "@renge-ui/tokens": "^2.2.0",
58
+ "@tailwindcss/postcss": "^4.1.9",
59
+ "@testing-library/dom": "^10.4.1",
60
+ "@testing-library/jest-dom": "^6.9.1",
61
+ "@testing-library/react": "^16.3.2",
62
+ "@testing-library/user-event": "^14.6.1",
63
+ "@types/node": "^22",
64
+ "@types/react": "^19",
65
+ "@types/react-dom": "^19",
66
+ "@vercel/analytics": "1.3.1",
67
+ "@vercel/speed-insights": "1.3.1",
68
+ "@vitejs/plugin-react": "^5.1.4",
69
+ "autoprefixer": "^10.4.20",
70
+ "daisyui": "^5.5.19",
71
+ "date-fns": "4.1.0",
72
+ "framer-motion": "12.29.2",
73
+ "jsdom": "^28.1.0",
74
+ "lucide-react": "^0.454.0",
75
+ "motion": "12.24.10",
76
+ "next": "^16.1.6",
77
+ "next-themes": "^0.4.6",
78
+ "postcss": "^8.5",
79
+ "react": "19.2.0",
80
+ "react-dom": "19.2.0",
81
+ "recharts": "2.15.4",
82
+ "sonner": "^1.7.4",
83
+ "tailwindcss": "^4.1.9",
84
+ "tsup": "^8.5.0",
85
+ "typescript": "^5",
86
+ "vitest": "^4.0.18",
87
+ "zod": "3.25.76"
88
+ },
89
+ "scripts": {
90
+ "build": "next build",
91
+ "build:lib": "tsup && tsc --project tsconfig.lib.json",
92
+ "dev": "next dev",
93
+ "lint": "eslint .",
94
+ "start": "next start",
95
+ "test": "vitest run",
96
+ "test:watch": "vitest"
97
+ }
98
+ }