Skip to main content

Migrating

Migrating from v2 to v3

App Setup Changes

In v3, the ElementsProvider component is now required to be included at the root of your application. This is necessary to provide the theme to all components in the tree.

// import { CssVariables } from "@atomicjolt/atomic-elements"; // Remove this import
import { ElementsProvider } from "@atomicjolt/atomic-elements";

const App = () => (
<ElementsProvider>
{/* <CssVariables /> Remove this component */}
<YourApp />
</ElementsProvider>
);

If you were using CssGlobalDefaults before, you can add the applyGlobalStyles prop to ElementsProvider to apply the global styles.

Collection Components

Collection Components have migrated to a new API internally. Most things will continue to work, but all collection item key props will need to be replaced with id props.

// Before
<CustomSelect selectedKey="value1">
<Item key="value1">Value 1</Item>
<Item key="value2">Value 2</Item>
</CustomSelect>

// After
// note that selectedKey is the same
<CustomSelect selectedKey="value1">
<Item id="value1">Value 1</Item>
<Item id="value2">Value 2</Item>
</CustomSelect>

Flex Component

The Flex component has recieved an updated set of props to match the other new Layout components.

// Before
<Flex
gap={20}
alignItems="center"
justifyContent="space-between"
>
<Button>Button 1</Button>
<Button>Button 2</Button>
</Flex>

// After
<Flex
$gap="20px"
$align="center"
$justfiy="space-between"
>
<Button>Button 1</Button>
<Button>Button 2</Button>
</Flex>

Reference Storybook for the full set of props

Calendar Component

The Calendar component now exposes a composition API for more flexibility.

<Calendar>
<Flex
$gap={20}
$align="center"
$justfiy="space-between"
>
<IconButton slot="previous-month" icon="chevron_left" variant="ghost" />
<Calendar.Title />
<IconButton slot="next-month" icon="chevron_right" variant="ghost" />
</Flex>
<Calendar.Grid>
{(date) => <Calendar.Cell date={date} />}
</Calendar.Grid>
</Calendar>

Table

Table No longer supports the paginationDescriptor prop. If you want to add pagination to the bottom of a table, you can use the Table.Bottom and Pagination components.

<Table hasBottom>
<Table.Header>
<Table.Column> Name </Table.Column>
<Table.Column> Age </Table.Column>
</Table.Header>
<Table.Body>
<Table.Row>
<Table.Cell> John Doe </Table.Cell>
<Table.Cell> 25 </Table.Cell>
</Table.Row>
</Table.Body>
</Table>
<Table.Bottom>
<Pagination>
<Flex
alignItems="center"
gap={8}
>
<Pagination.FirstPage />
<Pagination.PrevPage />
<Pagination.CurrentPage />
<Pagination.NextPage />
<Pagination.LastPage />
</Flex>
</Pagination>
</Table.Body>

Removed

ComponentReplacement
CssVariablesWrap your app in the ElementsProvider component
CssGlobalDefaultsadd the applyGlobalStyles prop to ElementsProvider
LoadFontsLoad the fonts directly
SensibleDefaultsNo longer needed
PageSizeSelectUse Pagination.PageSize