Fundamentally, Psammead components are intended to be:
- Presentational
- GEL-Compliant
- Accessible
When developing and using Psammead components, we try to maintain a very clear distinction between presentational and container components, as they are described in this blog post.
In summary, Psammead components should be almost exclusively concerned with how the component appears, and should avoid fetching or mutating data. Instead, these data fetching and mutating operations are split out into "container" components that can be entirely separate, and which can provide any necessary data or behaviour to presentational components via props.
These principles help Psammead components to be reusable across fundamentally different projects and back-ends.
GEL is the BBC's shared design language. All Psammead components should be built on the GEL utility packages defined in this repo, helping ensure they fit within GEL, and in turn provide a consistent user experience.
Finally, Psammead components are built and tested against the BBC News assistive technology guidelines. More information on building components to these guidelines can be found in the project's contributing guide.