Codemod scripts for Picasso
This repository contains a collection of codemod scripts based for use with JSCodeshift that help update Picasso APIs.
yarn add -D @toptal/picasso-codemod
npx jscodeshift -t <codemod-script> --parser=tsx <path>
- jscodeshift CLI usage
Codemods do not guarantee the code format preservation. Therefore be sure to run prettier
and eslint
on your repo after applying a codemod. Take a look here to learn more about the issue.
Updates the PromptModal variant prop from red | green | blue
to positive | negative
.
The diff should look like this:
-<PromptModal title="Title" message="message" onSubmit={handleSubmit} open={isOpen} variant='red' />
-<PromptModal title="Title" message="message" onSubmit={handleSubmit} open={isOpen} variant='blue' />
-<PromptModal title="Title" message="message" onSubmit={handleSubmit} open={isOpen} variant='green' />
+<PromptModal title="Title" message="message" onSubmit={handleSubmit} open={isOpen} variant='negative' />
+<PromptModal title="Title" message="message" onSubmit={handleSubmit} open={isOpen} variant='positive' />
+<PromptModal title="Title" message="message" onSubmit={handleSubmit} open={isOpen} variant='positive' />
Command
npx jscodeshift --parser=tsx -t node_modules/@toptal/picasso-codemod/v5.0.0/prompt-modal-variants src/**/*.tsx
Renames occurrences of Label
to Tag
.
- import { Label } from '@toptal/picasso'
+ import { Tag } from '@toptal/picasso'
const Example = () => (
- <Label.Group>
+ <Tag.Group>
- <Label>Angular JS</Label>
+ <Tag>Angular JS</Tag>
- <Label>React JS</Label>
+ <Tag>React JS</Tag>
- <Label onDelete={handleDelete}>Ember JS</Label>
+ <Tag onDelete={handleDelete}>Ember JS</Tag>
- <Label>Vue JS</Label>
+ <Tag>Vue JS</Tag>
- </Label.Group>
+ </Tag.Group>
)
Command
npx jscodeshift -t node_modules/@toptal/picasso-codemod/v5.0.0/label-tag src/**/*.tsx --parser=tsx
Updates the Accordion prop bordered?: boolean
to borders: 'all' | 'none'
.
The diff should look like this:
-<Accordion content='Accordion content' bordered>Summary</Accordion>
-<Accordion content='Accordion content' bordered={true}>Summary</Accordion>
-<Accordion content='Accordion content' bordered={false}>Summary</Accordion>
-<Accordion content='Accordion content'>Summary</Accordion>
+<Accordion content='Accordion content' borders='all'>Summary</Accordion>
+<Accordion content='Accordion content' borders='all'>Summary</Accordion>
+<Accordion content='Accordion content' borders='none'>Summary</Accordion>
+<Accordion content='Accordion content'>Summary</Accordion>
Command
npx jscodeshift --parser=tsx -t node_modules/@toptal/picasso-codemod/v5.0.0/accordion-borders src/**/*.tsx
Renames occurrences of Subheader
to PageHead
.
- import { Subheader } from '@toptal/picasso'
+ import { PageHead } from '@toptal/picasso'
const Example = () => (
- <Subheader>
+ <PageHead>
- <Subheader.Main>
+ <PageHead.Main>
- <Subheader.Title>Title</Subheader.Title>
+ <PageHead.Title>Title</PageHead.Title>
- </Subheader.Main>
+ </PageHead.Main>
- </Subheader>
+ </PageHead>
)
Command
npx jscodeshift -t node_modules/@toptal/picasso-codemod/v5.0.0/subheader-pagehead src/**/*.tsx --parser=tsx
Renames occurrences of Page.Header
to Page.TopBar
.
import { Page } from '@toptal/picasso'
const Example = () => (
- <Page.Header>
+ <Page.TopBar>
Content
- </Page.Header>
+ </Page.TopBar>
<details>
<summary>Command</summary>
```sh
npx jscodeshift -t node_modules/@toptal/picasso-codemod/v5.0.0/header-topbar src/**/*.tsx --parser=tsx
Renames variants of button to new values, replaced circular button with Button.Circular
.
const Example = () => (
- <Button variant='primary-blue'>Primary Red</Button>
+ <Button variant='primary'>Primary Red</Button>
)
Command
npx jscodeshift -t node_modules/@toptal/picasso-codemod/v5.0.0/button-variants src/**/*.tsx --parser=tsx