Skip to content

Commit 7bd72c3

Browse files
matthprostlisalupi
authored andcommitted
refactor: theme provider exported into themes package (#5632)
* refactor: theme provider exported into themes package * fix: add theme provide and use theme back to ui * fix: add theme provider in tests
1 parent cd6aeab commit 7bd72c3

File tree

48 files changed

+319
-146
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+319
-146
lines changed

.changeset/eight-glasses-warn.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,13 @@
22
"@ultraviolet/ui": major
33
---
44

5-
⚠️ BREAKING CHANGES ⚠️
5+
! BREAKING CHANGES !
66
In order to start using the new style, you will need to import new `<ThemeProvider />` and import new CSS generated at build time:
77

88
```tsx
99
import { ThemeProvider } from '@emotion/react'
10-
import { consoleLightTheme } from '@ultraviolet/themes'
10+
import { consoleLightTheme, ThemeProvider as ThemeProviderUV } from '@ultraviolet/themes'
1111

12-
import { ThemeProvider as ThemeProviderUV } from "@ultraviolet/ui" // ThemeProvider that generate the theme applied to components
1312
import "@ultraviolet/ui/styles" // Generated CSS used by components
1413
1514
export const App = (children) => {

.changeset/seven-teeth-shine.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
"@ultraviolet/illustrations": major
3+
"@ultraviolet/themes": major
4+
"@ultraviolet/icons": major
5+
"@ultraviolet/plus": major
6+
"@ultraviolet/ui": major
7+
---
8+
9+
Theme provider has been moved to `@ultraviolet/themes` package. `@ultraviolet/ui` imports it internally and export `ThemeProvider` and `useTheme` hook for convenience.

.storybook/components/DocsContainer.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ import {
55
DocsContainer as BaseContainer,
66
Unstyled,
77
} from '@storybook/addon-docs/blocks'
8-
import { consoleLightTheme as lightTheme } from '@ultraviolet/themes'
8+
import { consoleLightTheme as lightTheme, ThemeProvider as ThemeProviderUV } from '@ultraviolet/themes'
99
import type { ReactNode } from 'react'
1010
import { cloneElement, isValidElement, useState } from 'react'
1111
import { globalStyles } from './globalStyle'
1212
import '@ultraviolet/fonts/fonts.css'
13-
import { GlobalAlert, ThemeProvider as ThemeProviderUV } from '@ultraviolet/ui'
13+
import { GlobalAlert } from '@ultraviolet/ui'
1414

1515
type ExtraProps = {
1616
/**

.storybook/preview.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ import {
66
consoleDarkTheme as darkTheme,
77
consoleDarkerTheme as darkerTheme,
88
consoleLightTheme as lightTheme,
9+
ThemeProvider as ThemeProviderUI
910
} from '@ultraviolet/themes'
1011
import DocsContainer from './components/DocsContainer'
1112
import Page from './components/Page'
1213
import { globalStyles } from './components/globalStyle'
1314
import { dark, light } from './storybookThemes'
1415
import '@ultraviolet/fonts/fonts.css'
1516
import { scan } from "react-scan"
16-
import { ThemeProvider as ThemeProviderUI } from '@ultraviolet/ui'
1717

1818
const BREAKPOINT_ORDER = [
1919
'xlarge',
@@ -155,7 +155,7 @@ const decorators = [
155155

156156
return darkerTheme
157157
}
158-
158+
159159
return (
160160
<>
161161
<ThemeProviderUI theme={finalTheme()}>

examples/next/src/components/CopyBoxCommand.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { useTheme } from '@emotion/react'
21
import styled from '@emotion/styled'
2+
import { useTheme } from '@ultraviolet/themes'
33
import { Stack, Tabs } from '@ultraviolet/ui'
44
import type { ReactElement } from 'react'
55
import { Children, isValidElement, useState } from 'react'

examples/next/src/components/Header.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { useTheme } from '@emotion/react'
21
import styled from '@emotion/styled'
32
import { MoonIcon, SunIcon } from '@ultraviolet/icons'
3+
import { useTheme } from '@ultraviolet/themes'
44
import { Breakpoint, Toggle } from '@ultraviolet/ui'
55
import { APP_MAX_WIDTH } from '../constants'
66
import GithubAndDocumentationButtons from './GithubAndDocumentationButtons'
@@ -37,7 +37,7 @@ const HeaderRow = styled.div`
3737
`
3838

3939
const TopBar = () => {
40-
const { theme, setTheme } = useTheme()
40+
const { theme } = useTheme()
4141

4242
return (
4343
<Header>
@@ -48,11 +48,7 @@ const TopBar = () => {
4848
<GithubAndDocumentationButtons />
4949
</Breakpoint>
5050
<SunIcon size="small" />
51-
<Toggle
52-
checked={theme === 'dark'}
53-
name="darkMode"
54-
onChange={() => setTheme(theme === 'light' ? 'dark' : 'light')}
55-
/>
51+
<Toggle checked={theme === 'dark'} name="darkMode" />
5652
<MoonIcon size="small" />
5753
</HorizontalStack>
5854
</HeaderRow>

examples/next/src/pages/advanced/AdvancedUseCases.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ import styled from '@emotion/styled'
22
import { Stack, Text } from '@ultraviolet/ui'
33
import CopyBox from '../../components/CopyBoxCommand'
44

5-
const useCase1 = `import { ThemeProvider } from '@emotion/react'
6-
import { theme as lightTheme, dark as darkTheme, Button, Text } from '@ultraviolet/ui'
5+
const useCase1 = `import { theme as lightTheme, dark as darkTheme, Button, Text } from '@ultraviolet/ui'
6+
import { ThemeProvider } from '@ultraviolet/themes'
77
import React, { useCallback, useState } from 'react'
88
99
const App = () => {

examples/vite/src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { PlusIcon } from '@ultraviolet/icons'
2+
import { consoleDarkTheme, consoleLightTheme } from '@ultraviolet/themes'
23
import {
34
Alert,
45
Button,
@@ -10,7 +11,6 @@ import {
1011
} from '@ultraviolet/ui'
1112
import { useState } from 'react'
1213
import '@ultraviolet/ui/styles' // Import styles for the UI components
13-
import { consoleDarkTheme, consoleLightTheme } from '@ultraviolet/themes'
1414

1515
export const App = () => {
1616
const [count, setCount] = useState(0)

examples/vite/src/main.tsx

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { ThemeProvider } from '@emotion/react'
2-
import { consoleLightTheme } from '@ultraviolet/themes'
31
import { StrictMode } from 'react'
42
import { createRoot } from 'react-dom/client'
53
import { App } from './App.tsx'
@@ -9,8 +7,6 @@ const root = createRoot(document.getElementById('root')!)
97

108
root.render(
119
<StrictMode>
12-
<ThemeProvider theme={consoleLightTheme}>
13-
<App />
14-
</ThemeProvider>
10+
<App />
1511
</StrictMode>,
1612
)

packages/icons/README.md

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,19 @@ Ultraviolet Icons is a set of components based on SVG icons. It provides a set o
66

77
## Get Started
88

9-
For icons to work you will need to install some extra dependencies, such as `@ultraviolet/themes` and `@emotion/react`.
10-
119
```sh
12-
$ pnpm add @ultraviolet/icons @ultraviolet/themes @emotion/react
10+
$ pnpm add @ultraviolet/icons @ultraviolet/themes
1311
```
1412

1513
You can then add `ThemeProvider` to your applications and use the provided theme from `@ultraviolet/themes` or use your own.
1614

1715
```tsx
1816
import { ThemeProvider } from '@emotion/react'
1917
import { SdkGoProductIcon } from '@ultraviolet/icons/product'
20-
import { consoleLightTheme } from '@ultraviolet/themes'
18+
import { theme } from '@ultraviolet/themes'
2119

2220
const App = () => (
23-
<ThemeProvider theme={consoleLightTheme}>
21+
<ThemeProvider theme={theme}>
2422
<SdkGoProductIcon size="medium" variant="primary"/>
2523
</ThemeProvider>
2624
)

0 commit comments

Comments
 (0)