Skip to content

Commit 7b7f889

Browse files
committed
fix(@theme-ui/core): add typescript jsx support
1 parent c69998f commit 7b7f889

File tree

8 files changed

+80
-4
lines changed

8 files changed

+80
-4
lines changed

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,11 @@
4747
"tsConfig": {
4848
"module": "commonjs",
4949
"esModuleInterop": true,
50-
"resolveJsonModule": true
50+
"resolveJsonModule": true,
51+
"jsx": "react",
52+
"strictFunctionTypes": true,
53+
"alwaysStrict": true,
54+
"noImplicitThis": true
5155
}
5256
}
5357
},

packages/core/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
"dependencies": {
2020
"@emotion/core": "^10.0.0",
2121
"@theme-ui/css": "^0.3.1",
22+
"@types/styled-system": "^5.1.6",
23+
"@types/styled-system__css": "^5.0.4",
2224
"deepmerge": "^4.2.2"
2325
},
2426
"peerDependencies": {

packages/core/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import deepmerge from 'deepmerge'
1010
import { version as __EMOTION_VERSION__ } from '@emotion/core/package.json'
1111
import { Theme } from './theme'
1212

13+
import './react-jsx'
14+
1315
export * from './theme'
1416

1517
const getCSS = props => {

packages/core/src/react-jsx.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { SxProps } from './theme'
2+
3+
declare module 'react' {
4+
// tslint:disable-next-line: no-empty-interface
5+
interface DOMAttributes<T> extends SxProps {}
6+
}
7+
8+
declare global {
9+
namespace JSX {
10+
// tslint:disable-next-line: no-empty-interface
11+
interface IntrinsicAttributes extends SxProps {}
12+
}
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`JSX accepts sx prop 1`] = `
4+
.emotion-0 {
5+
margin-top: 10px;
6+
padding-left: 8px;
7+
padding-right: 8px;
8+
}
9+
10+
<div
11+
className="emotion-0"
12+
/>
13+
`;

packages/core/test/react-jsx.tsx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/** @jsx jsx */
2+
import { jsx } from '../src'
3+
import renderer from 'react-test-renderer'
4+
5+
const renderJSON = (el: React.ReactNode) => renderer.create(el).toJSON()
6+
7+
describe('JSX', () => {
8+
test('accepts sx prop', () => {
9+
expect(
10+
renderJSON(
11+
<div
12+
sx={{
13+
// TypeScript support should autocomplete keys here
14+
mt: 10,
15+
px: 2,
16+
}}
17+
/>
18+
)
19+
).toMatchSnapshot()
20+
})
21+
})

packages/core/tsconfig.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
"compilerOptions": {
33
"resolveJsonModule": true,
44
"esModuleInterop": true,
5-
"moduleResolution": "node"
6-
}
5+
"moduleResolution": "node",
6+
"jsx": "react"
7+
},
8+
"include": ["./src/**/*.ts", "./src/**/*.tsx"]
79
}

yarn.lock

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1377,7 +1377,7 @@
13771377
"@babel/parser" "^7.8.3"
13781378
"@babel/types" "^7.8.3"
13791379

1380-
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.6.0", "@babel/traverse@^7.7.2", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.0", "@babel/traverse@^7.8.4":
1380+
"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.4", "@babel/traverse@^7.6.0", "@babel/traverse@^7.7.2", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4":
13811381
version "7.8.4"
13821382
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c"
13831383
integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg==
@@ -3585,6 +3585,20 @@
35853585
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
35863586
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
35873587

3588+
"@types/styled-system@^5.1.6":
3589+
version "5.1.6"
3590+
resolved "https://registry.yarnpkg.com/@types/styled-system/-/styled-system-5.1.6.tgz#4f45612df1f0987a05465dd280b16818e3e27c73"
3591+
integrity sha512-npB/Fdqc1TH6UwyB9CtsTXkg3zb8jg/WG4LUEQ85cY6oSRgRbytxfsgbgdG+YWQFtbznp3J/4BAdkPB+WsHheA==
3592+
dependencies:
3593+
csstype "^2.6.4"
3594+
3595+
"@types/styled-system__css@^5.0.4":
3596+
version "5.0.4"
3597+
resolved "https://registry.yarnpkg.com/@types/styled-system__css/-/styled-system__css-5.0.4.tgz#df83b015cf377ab39ecf33ea31339c05eeb9230a"
3598+
integrity sha512-SHHoNh9cCRTG9hcmCD2ua0NeYUrLmLXoMJ7g0U/e0FjrzcwNQtM5wjjEJVCVZymU632xA1PdPEykrtoSHTIecA==
3599+
dependencies:
3600+
csstype "^2.6.6"
3601+
35883602
"@types/testing-library__dom@*", "@types/testing-library__dom@^6.0.0":
35893603
version "6.10.0"
35903604
resolved "https://registry.yarnpkg.com/@types/testing-library__dom/-/testing-library__dom-6.10.0.tgz#590d76e3875a7c536dc744eb530cbf51b6483404"
@@ -8215,6 +8229,11 @@ csstype@^2.2.0, csstype@^2.5.7:
82158229
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.7.tgz#20b0024c20b6718f4eda3853a1f5a1cce7f5e4a5"
82168230
integrity sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==
82178231

8232+
csstype@^2.6.4, csstype@^2.6.6:
8233+
version "2.6.9"
8234+
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098"
8235+
integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q==
8236+
82188237
currently-unhandled@^0.4.1:
82198238
version "0.4.1"
82208239
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"

0 commit comments

Comments
 (0)