An environment for designing, reviewing, and quality-testing React components.
# Install `@sanity/ui-workshop` as dev dependency
npm install @sanity/ui-workshop -D
# Install peer dependencies
npm install @sanity/icons @sanity/ui react react-dom styled-components
Add a workshop.config.ts
(or .js) in the root of your project:
import {defineConfig} from '@sanity/ui-workshop'
export default defineConfig({
title: 'My UI Workshop',
})
Start the workshop
workshop dev
workshop
will automatically find workshop "scopes" by searching for files mathing these patterns:
src/**/__workshop__/index.js
src/**/__workshop__/index.jsx
src/**/__workshop__/index.ts
src/**/__workshop__/index.tsx
Define your first workshop scope by creating src/__workshop__/index.tsx
:
import {
defineScope,
useBoolean,
useNumber,
useSelect,
useString,
useText,
} from '@sanity/ui-workshop'
export default defineScope({
name: 'test',
title: 'Test',
stories: [
{
name: 'test',
title: 'Test',
component: TestStory,
},
],
})
const options = {
None: '',
Small: 'sm',
Medium: 'md',
Large: 'lg',
}
function TestStory() {
const text = useText('Text', 'Hello, world')
const boolean = useBoolean('Boolean', true)
const number = useNumber('Number', 1234)
const string = useString('String', '...')
const option = useSelect('Select option', options)
return (
<div>
<h1>This is my first story.</h1>
<p>Some text: {text}</p>
<p>A boolean: {boolean ? 'true' : 'false'}</p>
<p>A number: {number}</p>
<p>A string: {string}</p>
<p>An option: {option}</p>
</div>
)
}