You are the agent entry point — read first. Next: router
SPEC_INDEX.md· systemARCHITECTURE.md. Load this +SPEC_INDEX.mdfirst; pull module/standing docs on demand.
@webex/components is a published React component library that embeds Webex-styled meeting, messaging, and people UI into host applications. Data flows through adapter interfaces from @webex/component-adapter-interfaces; this repo ships JSON mock adapters for Storybook and local development.
What it is:
- React 18 UI components (meetings, messaging, roster, settings, auth flows)
- JSON adapters implementing Webex adapter interfaces for offline/demo use
- Rollup-built npm package with SCSS themes and bundled CSS
What it is NOT:
- ❌ A full Webex client or SDK — it does not call Webex cloud APIs directly
- ❌ Webex Widgets — widgets bundle the SDK adapter; this library expects hosts to supply adapters
- ❌ A backend service — no server, datastore, or deployment target in this repo
- JavaScript (ES modules), React 18.3.1, PropTypes, RxJS 6
- Build: Rollup, Babel, SCSS (
rollup-plugin-scss) - Test: Jest, React Testing Library, Storybook 6, Chromatic
- Peer deps:
react,react-dom,prop-types,rxjs,@babel/runtime
Host App
└─ withAdapter(Component, adapterFactory) or WebexDataProvider
└─ AdapterContext (meetings, people, rooms, …)
└─ Webex* React components (hooks read adapter observables)
→ Full repo architecture: ARCHITECTURE.md
src/
├── components/ # Exported + internal React components, hooks, HOCs
├── adapters/ # WebexJSONAdapter + domain JSON adapters
├── styles/ # Global SCSS variables, mixins, defaults
├── themes/ # dark/light theme tokens + assets
├── assets/ # Fonts copied to dist on build
├── constants.js # Class prefix and shared string constants
└── util.js # Shared helpers (deepMerge, rxjs chainWith, …)
→ Per-module docs: ai-docs/SPEC_INDEX.md
- Code is the source of truth. Never invent an API, prop, adapter method, or export — read
src/index.jsand barrel files. - Ask before coding. Present a plan / Spec Summary; wait for confirmation.
- Adapter boundary. Components consume data only via
@webex/component-adapter-interfacesadapters injected throughWebexDataProviderorwithAdapter. - Class prefix. Use
WEBEX_COMPONENTS_CLASS_PREFIX(wxc) fromsrc/constants.js— must stay aligned withsrc/styles/_variables.scss. - Peer dependencies. Do not bundle
react,react-dom,prop-types, orrxjs— they are Rollup externals. - Tests required. Changes must include Jest tests; follow existing snapshot and hook test patterns.
- Lint clean.
npm run lintermust pass; avoid disabling ESLint rules without maintainer approval.
| Task | Command |
|---|---|
| Install (with peers) | npx install-peerdeps @webex/components (consumers) / npx npm-install-peers (dev) |
| Build | npm run build |
| Test | npm run test |
| Coverage | npm run test:coverage |
| Lint | npm run linter |
| Dev / Storybook | npm run storybook |
- Styles side effect:
src/index.jsimports./styles/index.scss— consumers must load compiled CSS fromdist/css/webex-components.cssor equivalent. - Adapter connect lifecycle:
withAdapterrenders the wrapped component immediately; whileadapter.connect()is pending, it returns the component withoutWebexDataProviderand passesadapterConnected={false}. After connect resolves, it re-renders withWebexDataProviderandadapterConnected={true}. Do not assumeAdapterContextis available on first paint. - JSON adapter datasource shape:
WebexJSONAdapterexpects top-level keysactivities,meetings,memberships,organizations,people,rooms. - Semantic release: Version bumps are automated — do not manually edit version in
package.jsonfor releases.
- Read this file +
ai-docs/SPEC_INDEX.mdbefore touching code. - Match existing component folder layout (
ComponentName/ComponentName.jsx, co-located tests/stories). - Update the manifest-routed module spec when changing public surface or behavior.
- New npm dependency or peer dependency change.
- New exported component or breaking prop/adapter contract change.
- Changes to Rollup externals or published
fileslist.
- Commit secrets, tokens, or credentials.
- Disable tests or lint to force green CI.
- Overwrite canonical specs without
spec-reconcileapproval.
| Need | Load |
|---|---|
| System shape | ai-docs/ARCHITECTURE.md |
| Public exports | ai-docs/CONTRACTS.md |
| Module work | <module-path>/ai-docs/<module-name>-spec.md |
| Setup | ai-docs/GETTING_STARTED.md |
| Enforceable rules | ai-docs/RULES.md |
| Conventions | ai-docs/patterns/ |
Machine contract: .sdd/manifest.json