{"_id":"@affectively/aeon-flux-react","_rev":"2-e294a7f1d9a381c579cc6b4ce87f8a77","name":"@affectively/aeon-flux-react","dist-tags":{"latest":"5.0.0"},"versions":{"5.0.0":{"name":"@affectively/aeon-flux-react","version":"5.0.0","license":"UNLICENSED","_id":"@affectively/aeon-flux-react@5.0.0","maintainers":[{"name":"buley","email":"buley@outlook.com"}],"homepage":"https://github.com/affectively/aeon-flux#readme","bugs":{"url":"https://github.com/affectively/aeon-flux/issues"},"dist":{"shasum":"3855f5a6ba78b5cd6ac0df00fd38d626f1c94a4d","tarball":"https://registry.npmjs.org/@affectively/aeon-flux-react/-/aeon-flux-react-5.0.0.tgz","fileCount":19,"integrity":"sha512-9OCDrUyNJ7H0whFuax+QLtJ1jWyB1b/8lIb2ekFeYSIg7q5L0L2WBL8C6mukhv+9G/1bX6qrFSdHP30EP8glYQ==","signatures":[{"sig":"MEUCIQDFDfvWnyHLDKRy9WvAUZrSBa4hJJIr4x7O9HnuNoKg3AIgUe/4xSTx83bayZBIY4bIQVRAMqq1vKEHEWK0vUYzCvE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":47272},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"bun --watch ./src/index.ts","test":"bun test","build":"bun build ./src/index.ts --outfile ./dist/index.js --format esm --target browser --external react --external react/jsx-dev-runtime --external react/jsx-runtime --external @affectively/aeon-flux-runtime && tsc --declaration --emitDeclarationOnly","prepublishOnly":"npm run build"},"_npmUser":{"name":"buley","email":"buley@outlook.com"},"repository":{"url":"git+https://github.com/affectively/aeon-flux.git","type":"git"},"_npmVersion":"11.8.0","description":"React bindings for @affectively/aeon-flux","directories":{},"sideEffects":["./src/Link.tsx","./dist/index.js"],"_nodeVersion":"25.5.0","dependencies":{"@affectively/aeon-flux-runtime":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/react":"^18.0.0"},"peerDependencies":{"react":">=18.0.0"},"_npmOperationalInternal":{"tmp":"tmp/aeon-flux-react_5.0.0_1773156052802_0.05978960402886058","host":"s3://npm-registry-packages-npm-production"},"deprecated":"This package is deprecated and no longer supported. Do not use."}},"time":{"created":"2026-03-10T15:20:52.683Z","modified":"2026-03-27T19:58:30.854Z","5.0.0":"2026-03-10T15:20:52.957Z"},"bugs":{"url":"https://github.com/affectively/aeon-flux/issues"},"license":"UNLICENSED","homepage":"https://github.com/affectively/aeon-flux#readme","repository":{"url":"git+https://github.com/affectively/aeon-flux.git","type":"git"},"description":"React bindings for @affectively/aeon-flux","maintainers":[{"name":"buley","email":"buley@outlook.com"}],"readme":"# @affectively/aeon-flux-react\n\nReact bindings for `@affectively/aeon-flux` with collaborative presence UI.\n\n## Presence Flight-Deck Scroll UX\n\nThe Presence Kit includes a social, performance-oriented collaborative scrollbar:\n\n- `PresenceScrollBar`: standalone rail + legend for collaborator scroll telemetry.\n- `CollaborativePresenceScrollContainer`: content container with an interactive collaborative rail.\n- `PresenceElementsPanel`: combined presence panel (cursor/focus/typing/selection/scroll/viewport/input/emotion).\n\n### Theme Tokens\n\nUse `PresenceScrollThemeTokens` to style rails consistently across apps:\n\n```tsx\nimport {\n  CollaborativePresenceScrollContainer,\n  PresenceElementsPanel,\n  type PresenceScrollThemeTokens,\n  type PresenceUser,\n} from '@affectively/aeon-flux-react';\n\nconst scrollTheme: PresenceScrollThemeTokens = {\n  accentColor: '#ccff00',\n  railSurfaceColor: 'linear-gradient(180deg, #0a0f13, #0d1319)',\n  railBorderColor: 'rgba(204, 255, 0, 0.28)',\n  textColor: '#e8f6b2',\n  mutedTextColor: '#9fb371',\n};\n\nfunction FlightDeck({\n  presence,\n  localUserId,\n}: {\n  presence: PresenceUser[];\n  localUserId: string;\n}) {\n  return (\n    <CollaborativePresenceScrollContainer\n      presence={presence}\n      localUserId={localUserId}\n      height={420}\n      accentColor={scrollTheme.accentColor}\n      theme={scrollTheme}\n    >\n      <PresenceElementsPanel\n        presence={presence}\n        localUserId={localUserId}\n        scrollTheme={scrollTheme}\n      />\n    </CollaborativePresenceScrollContainer>\n  );\n}\n```\n\n### Keyboard + Accessibility\n\n`CollaborativePresenceScrollContainer` rail is keyboard operable:\n\n- `ArrowUp` / `ArrowDown`\n- `PageUp` / `PageDown`\n- `Home` / `End`\n\nThe rail exposes `role=\"scrollbar\"` semantics and collaborator context for assistive tech.\n\n### Advanced Signal API\n\nFor custom rails and telemetry UIs, these exports are available:\n\n- `buildScrollSignals`\n- `sortScrollSignalsForRail`\n- `sortScrollSignalsForLegend`\n- `buildScrollDensityMap`\n- `computeScrollActivity`\n- `shouldCommitLocalDepthUpdate`\n- `PresenceScrollSignal` type and defaults (`DEFAULT_SCROLL_*`)\n","readmeFilename":"README.md"}