Skip to content

Commit 30901da

Browse files
authored
Merge pull request #76 from solved-ac/release/v0.7.0
Release
2 parents d027d9b + c64993a commit 30901da

File tree

5 files changed

+171
-17
lines changed

5 files changed

+171
-17
lines changed

package.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,22 @@
11
{
22
"name": "@solved-ac/ui-react",
3-
"version": "0.6.3",
3+
"version": "0.7.0",
44
"description": "React component library used by solved.ac",
55
"author": "shiftpsh",
66
"license": "MIT",
77
"repository": "solved-ac/ui-react",
88
"homepage": "https://github.com/solved-ac/ui-react",
9-
"main": "dist/index.js",
10-
"source": "src/index.tsx",
9+
"main": "./dist/index.js",
10+
"source": "./src/index.tsx",
11+
"module": "./dist/index.modern.mjs",
12+
"types": "./dist/index.d.ts",
13+
"exports": {
14+
".": {
15+
"types": "./dist/index.d.ts",
16+
"import": "./dist/index.modern.mjs",
17+
"require": "./dist/index.js"
18+
}
19+
},
1120
"engines": {
1221
"node": ">=10"
1322
},
@@ -57,7 +66,6 @@
5766
"babel-plugin-inline-react-svg": "^2.0.1",
5867
"babel-plugin-transform-react-jsx": "^6.24.1",
5968
"cross-env": "^7.0.2",
60-
"emotion-reset": "^3.0.1",
6169
"eslint": "^8.15.0",
6270
"eslint-config-airbnb": "^18.2.1",
6371
"eslint-config-prettier": "^6.7.0",

src/components/Tooltip.tsx

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,13 @@ import {
1616
} from '@floating-ui/react'
1717
import { AnimatePresence, motion } from 'framer-motion'
1818
import { transparentize } from 'polished'
19-
import React, { CSSProperties, ReactNode, useRef, useState } from 'react'
19+
import React, {
20+
CSSProperties,
21+
ReactNode,
22+
useRef,
23+
useState,
24+
useMemo,
25+
} from 'react'
2026
import { SolvedTheme, solvedThemes } from '../styles'
2127
import { Card, CardProps } from './Card'
2228

@@ -74,6 +80,7 @@ export type TooltipProps = {
7480
activateOnClick?: boolean
7581
noThemeChange?: boolean
7682
zIndex?: number
83+
onOpenChange?: (open: boolean) => void
7784
} & (
7885
| {
7986
noDefaultStyles: false
@@ -133,13 +140,21 @@ export const Tooltip: React.FC<TooltipProps> = (props) => {
133140
activateOnClick = false,
134141
noThemeChange = false,
135142
zIndex,
143+
onOpenChange,
136144
...cardProps
137145
} = props
138146
const [isOpen, setIsOpen] = useState(false)
139147
const renderTooltip = typeof open === 'boolean' ? open : isOpen
140148

141149
const arrowRef = useRef(null)
142150

151+
const handleOpenChange = (open: boolean): void => {
152+
setIsOpen(open)
153+
if (onOpenChange) {
154+
onOpenChange(open)
155+
}
156+
}
157+
143158
const {
144159
x,
145160
y,
@@ -152,7 +167,7 @@ export const Tooltip: React.FC<TooltipProps> = (props) => {
152167
placement: place,
153168
strategy: 'fixed',
154169
open: isOpen,
155-
onOpenChange: setIsOpen,
170+
onOpenChange: handleOpenChange,
156171
middleware: [
157172
offset(16),
158173
shift({ padding: 16 }),
@@ -183,8 +198,18 @@ export const Tooltip: React.FC<TooltipProps> = (props) => {
183198
])
184199

185200
const RenderComponent = noBackground ? motion.div : TooltipContainer
186-
const ThemeProviderComponent =
187-
noThemeChange || noBackground ? React.Fragment : ThemeProvider
201+
const ThemeProviderComponent = useMemo(
202+
() =>
203+
noThemeChange || noBackground
204+
? React.Fragment
205+
: ({ children }: { children?: ReactNode }) => (
206+
// eslint-disable-next-line react/jsx-indent
207+
<ThemeProvider theme={theme || solvedThemes.dark}>
208+
{children}
209+
</ThemeProvider>
210+
),
211+
[noThemeChange, noBackground, theme]
212+
)
188213

189214
const arrowPosition =
190215
renderSide[placement.split('-')[0] as keyof typeof renderSide]
@@ -195,7 +220,7 @@ export const Tooltip: React.FC<TooltipProps> = (props) => {
195220
{children}
196221
</TooltipWrapper>
197222
<FloatingPortal>
198-
<ThemeProviderComponent theme={theme || solvedThemes.dark}>
223+
<ThemeProviderComponent>
199224
<AnimatePresence>
200225
{renderTooltip && (
201226
<React.Fragment>

src/styles/GlobalStyles.tsx

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,136 @@
11
import { css, Global, SerializedStyles, useTheme } from '@emotion/react'
2-
import emotionReset from 'emotion-reset'
32
import { buttons, textInputs, transparentize } from 'polished'
43
import React from 'react'
54
import { SolvedTheme } from './Themes'
65

6+
const reset = css`
7+
html,
8+
body,
9+
div,
10+
span,
11+
applet,
12+
object,
13+
iframe,
14+
h1,
15+
h2,
16+
h3,
17+
h4,
18+
h5,
19+
h6,
20+
p,
21+
blockquote,
22+
pre,
23+
a,
24+
abbr,
25+
acronym,
26+
address,
27+
big,
28+
cite,
29+
code,
30+
del,
31+
dfn,
32+
em,
33+
img,
34+
ins,
35+
kbd,
36+
q,
37+
s,
38+
samp,
39+
small,
40+
strike,
41+
strong,
42+
sub,
43+
sup,
44+
tt,
45+
var,
46+
b,
47+
u,
48+
i,
49+
center,
50+
dl,
51+
dt,
52+
dd,
53+
ol,
54+
ul,
55+
li,
56+
fieldset,
57+
form,
58+
label,
59+
legend,
60+
table,
61+
caption,
62+
tbody,
63+
tfoot,
64+
thead,
65+
tr,
66+
th,
67+
td,
68+
article,
69+
aside,
70+
canvas,
71+
details,
72+
embed,
73+
figure,
74+
figcaption,
75+
footer,
76+
header,
77+
hgroup,
78+
menu,
79+
nav,
80+
output,
81+
ruby,
82+
section,
83+
summary,
84+
time,
85+
mark,
86+
audio,
87+
video {
88+
margin: 0;
89+
padding: 0;
90+
border: 0;
91+
font-size: 100%;
92+
font: inherit;
93+
vertical-align: baseline;
94+
}
95+
article,
96+
aside,
97+
details,
98+
figcaption,
99+
figure,
100+
footer,
101+
header,
102+
hgroup,
103+
menu,
104+
nav,
105+
section {
106+
display: block;
107+
}
108+
body {
109+
line-height: 1;
110+
}
111+
ol,
112+
ul {
113+
list-style: none;
114+
}
115+
blockquote,
116+
q {
117+
quotes: none;
118+
}
119+
blockquote:before,
120+
blockquote:after,
121+
q:before,
122+
q:after {
123+
content: '';
124+
content: none;
125+
}
126+
table {
127+
border-collapse: collapse;
128+
border-spacing: 0;
129+
}
130+
`
131+
7132
const globalCss = (theme: SolvedTheme): SerializedStyles => css`
8-
${emotionReset}
133+
${reset}
9134
10135
* {
11136
box-sizing: border-box;

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"compilerOptions": {
33
"outDir": "dist",
4-
"module": "esnext",
4+
"module": "ESNext",
5+
"target": "ESNext",
56
"lib": ["dom", "esnext"],
67
"moduleResolution": "node",
78
"jsx": "react",

yarn.lock

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4475,11 +4475,6 @@ emojis-list@^3.0.0:
44754475
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
44764476
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
44774477

4478-
emotion-reset@^3.0.1:
4479-
version "3.0.1"
4480-
resolved "https://registry.yarnpkg.com/emotion-reset/-/emotion-reset-3.0.1.tgz#1445e66bab7e8fd9975ce0d8cd3324589981f0a6"
4481-
integrity sha512-v6scW83qSu+wtxg7lX1s0+/2U4EAAGFxDQMkvXE10jhKtyuXCzy3/su5/MU9ZjXeNv6ZjxZH51WktrKosKUy9g==
4482-
44834478
encodeurl@~1.0.2:
44844479
version "1.0.2"
44854480
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"

0 commit comments

Comments
 (0)