Skip to content

A React component is provided that allows you to programmatically generate codesandbox projects from code samples on the fly.

License

Notifications You must be signed in to change notification settings

uiwjs/react-codesandbox

Repository files navigation

React CodeSandbox

Build & Deploy Issues Forks Stars Release npm version

A React component is provided that allows you to programmatically generate codesandbox projects from code samples on the fly.

Install

npm install @uiw/react-codesandbox --save

Usage

import React from 'react';
import CodeSandbox from '@uiw/react-codesandbox';

const code = `import React from 'react';
import ReactDOM from 'react-dom';

const App = (
  <h1>
    Hello, {formatName(user)}!
  </h1>
);

ReactDOM.render(
  <App />,
  document.getElementById('root')
);`;

function Demo() {
  return (
    <CodeSandbox
      files={{
        "package.json": {
          content: {
            dependencies: {
              react: "latest",
              "react-dom": "latest"
            }
          }
        },
        "index.js": {
          content: code
        },
        "index.html": {
          content: `<div id="root"></div>`
        }
      }}
    >
      Open in CodeSandbox
    </CodeSandbox>
  )
}

Props

type CodeSandboxProps = React.FormHTMLAttributes<HTMLFormElement> & {
  /**
   * Whether we should redirect to the embed instead of the editor.
   */
  embed?: boolean;
  /**
   * The query that will be used in the redirect url. `embed` must be equal to `true`, `embed=true`.
   * [CodeSandbox Embed Options](https://codesandbox.io/docs/embedding#embed-options)
   * @example `view=preview&runonclick=1`
   */
  query?: string;
  /**
   * Instead of redirecting we will send a JSON reponse with `{"sandbox_id": sandboxId}`.
   */
  json?: boolean;
  /**
   * Parameters used to define how the sandbox should be created.
   */
  files?: Record<string, {
    content?: string | Record<string, any>;
    isBinary?: boolean;
  }>
};

Development

Runs the project in development mode.

# Step 1, run first, listen to the component compile and output the .js file
# listen for compilation output type .d.ts file
npm run watch
# Step 2, development mode, listen to compile preview website instance
npm run start

production

Builds the app for production to the build folder.

npm run build

The build is minified and the filenames include the hashes. Your app is ready to be deployed!

Related

Contributors

As always, thanks to our amazing contributors!

Made with github-action-contributors.

License

Licensed under the MIT License.