# Live Components
# Introduction
A live code component is an interactive and dynamic element in web development that allows real-time execution, editing, and visualization of code within a web page or application. These components are particularly useful for educational purposes, documentation, and interactive coding environments. Let me explain the concept in more detail:
Use Cases are:
- Interactive tutorials and learning platforms
- API documentation with live examples
- Code playgrounds for experimenting with languages or libraries
- Technical blog posts with editable code samples
- Coding interviews or assessments
- Collaborative coding environments
There are libraries like Sandpack (opens new window) and react-live (opens new window) that can help you add live coding components to your MDX. There are various ways to implement live code components. Here's a simple example using react-live (opens new window):
# Implementing Live Components with react-live
➜ nextra-casiano-rodriguez-leon-alu0100291865 git:(guide) cat components/live.jsx
import React from 'react';
import { LiveProvider, LiveEditor, LiveError, LivePreview } from 'react-live';
// See https://commerce.nearform.com/open-source/react-live/docs
const LiveCodeComponent = () => {
const code = `
function App() {
const bS = { padding: '10px', fontSize: '16px', backgroundColor: 'lightgreen', border: 'none', borderRadius: '5px' };
const hS = { fontSize: '24px', color: 'blue' };
const [count, setCount] = React.useState(0);
return (
<div>
<h1 style = {hS}>Count: {count}</h1>
<button style={bS}
onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
`;
return (
<LiveProvider code={code}>
<div className="grid grid-cols-2 gap-4">
<div>
<LiveEditor className="font-mono" />
<LiveError />
</div>
<div style={{ flex: 1 }}>
<LivePreview className="" />
</div>
</div>
</LiveProvider>
);
};
export default LiveCodeComponent;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
The LiveProvider
component is the top-level component that takes a code
prop,
which contains the code to be edited and previewed.
It acts as a context provider for the other react-live components.
Inside the LiveProvider
, there is a div
with a CSS class of grid
grid-cols-2 gap-4
, which sets up a two-column grid layout with a gap between the columns.
This layout is achieved using Tailwind CSS utility classes.
- The first column contains another
div
that houses theLiveEditor
andLiveError
components.
- The
LiveEditor
component is where the user can edit the code. - The
LiveError
component displays any errors that occur in the code being edited.
- The second column contains a
div
with an inline style which allows it to take up the remaining space. Inside this div, there is theLivePreview
component, which renders the output of the code being edited in real-time.
# Using the Live Component
Here is the mdx page that uses the live component:
➜ nextra-casiano-rodriguez-leon-alu0100291865 git:(guide) cat pages/live.mdx
import Live from "@/components/live"
# Live Components
<Live />
2
3
4
5
# Running the Live Component
It looks like this:
Now you can edit the code and lively run it seeing the results in real-time.