@sanity/ui-workshop
Version:
An environment for designing, reviewing, and quality-testing React components.
94 lines (73 loc) • 1.92 kB
Markdown
# Sanity UI Workshop
An environment for designing, reviewing, and quality-testing React components.
```sh
# 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
```
[](https://www.npmjs.com/package/@sanity/ui-workshop)
## Basic usage
Add a `workshop.config.ts` (or .js) in the root of your project:
```ts
import {defineConfig} from '@sanity/ui-workshop'
export default defineConfig({
title: 'My UI Workshop',
})
```
Start the workshop
```sh
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`:
```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>
)
}
```
## License
[MIT](LICENSE)