@maelstrom-futurism/tooltip 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Tooltip.d.ts CHANGED
@@ -1,10 +1,13 @@
1
- import React, { ReactNode } from 'react';
1
+ import { ReactNode } from 'react';
2
+ import { SerializedStyles } from '@emotion/react';
2
3
  interface TooltipProps {
3
- content: React.ReactNode;
4
- children: React.ReactNode;
4
+ content: ReactNode;
5
+ children: ReactNode;
5
6
  position?: 'top' | 'bottom' | 'left' | 'right';
6
7
  trigger?: 'hover' | 'click';
8
+ css?: SerializedStyles | SerializedStyles[];
9
+ className?: string;
7
10
  }
8
- declare const Tooltip: ({ content, children, position, trigger, }: TooltipProps) => ReactNode;
11
+ declare const Tooltip: ({ content, children, position, trigger, css, className, }: TooltipProps) => ReactNode;
9
12
  export default Tooltip;
10
13
  //# sourceMappingURL=Tooltip.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../src/Tooltip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAqB,SAAS,EAAE,MAAM,OAAO,CAAC;AAI5D,UAAU,YAAY;IAClB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,QAAA,MAAM,OAAO,GAAI,2CAKd,YAAY,KAAG,SAsCjB,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../src/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA+B,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAIlD,UAAU,YAAY;IACpB,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAC5B,GAAG,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,QAAA,MAAM,OAAO,GAAI,2DAOd,YAAY,KAAG,SAkCjB,CAAC;AAEF,eAAe,OAAO,CAAC"}
package/dist/Tooltip.js CHANGED
@@ -1,30 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "@emotion/react/jsx-runtime";
2
- import { useTheme } from '@maelstrom-futurism/core';
3
- import { useRef, useEffect } from 'react';
2
+ import { useRef, useEffect, useState } from 'react';
4
3
  import * as tooltipStyles from './Tooltip.styles';
5
- const Tooltip = ({ content, children, position = 'top', trigger = 'hover', }) => {
6
- const theme = useTheme();
7
- const containerRef = useRef(null);
8
- const toggleTooltip = (visible) => {
9
- if (visible) {
10
- containerRef.current.style.display = 'block';
11
- }
12
- else {
13
- containerRef.current.style.display = 'none';
14
- }
15
- };
4
+ const Tooltip = ({ content, children, position = 'top', trigger = 'hover', css, className, }) => {
5
+ const [isVisible, setIsVisible] = useState(false);
6
+ const tooltipRef = useRef(null);
16
7
  useEffect(() => {
17
- if (trigger === 'click') {
18
- const handleClickOutside = (event) => {
19
- if (containerRef.current && !containerRef.current.contains(event.target)) {
20
- toggleTooltip(false);
21
- }
22
- };
23
- document.addEventListener('click', handleClickOutside);
24
- return () => document.removeEventListener('click', handleClickOutside);
25
- }
8
+ if (trigger !== 'click')
9
+ return;
10
+ const handleClickOutside = (event) => {
11
+ if (tooltipRef.current && !tooltipRef.current.contains(event.target)) {
12
+ setIsVisible(false);
13
+ }
14
+ };
15
+ document.addEventListener('click', handleClickOutside);
16
+ return () => document.removeEventListener('click', handleClickOutside);
26
17
  }, [trigger]);
27
- return (_jsxs("div", { style: { position: 'relative', display: 'inline-block' }, onMouseEnter: () => trigger === 'hover' && toggleTooltip(true), onMouseLeave: () => trigger === 'hover' && toggleTooltip(false), children: [children, _jsx("div", { ref: containerRef, style: { display: "none" }, css: [tooltipStyles.getBase(theme), tooltipStyles[position]], children: content })] }));
18
+ return (_jsxs("div", { style: { position: 'relative', display: 'inline-block' }, onMouseEnter: () => trigger === 'hover' && setIsVisible(true), onMouseLeave: () => trigger === 'hover' && setIsVisible(false), onClick: () => trigger === 'click' && setIsVisible(v => !v), children: [children, _jsx("div", { ref: tooltipRef, onClick: e => e.stopPropagation(), css: [tooltipStyles.base, tooltipStyles[position], isVisible && tooltipStyles.visible, css], className: className, children: content })] }));
28
19
  };
29
20
  export default Tooltip;
30
21
  //# sourceMappingURL=Tooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../src/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAc,EAAE,MAAM,EAAE,SAAS,EAAa,MAAM,OAAO,CAAC;AAE5D,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AASlD,MAAM,OAAO,GAAG,CAAC,EACb,OAAO,EACP,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,OAAO,GACN,EAAa,EAAE;IAC1B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAE,EAAE;QACvC,IAAI,OAAO,EAAE,CAAC;YACV,YAAY,CAAC,OAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAClD,CAAC;aAAM,CAAC;YACJ,YAAY,CAAC,OAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACjD,CAAC;IACL,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,kBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;gBAC7C,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE,CAAC;oBAC/E,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;YACL,CAAC,CAAC;YACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACvD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC3E,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAGd,OAAO,CACH,eACI,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,EACxD,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,EAC9D,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,aAAa,CAAC,KAAK,CAAC,aAE9D,QAAQ,EAET,cAAK,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,YAC3G,OAAO,GACN,IACJ,CACT,CAAC;AACN,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"Tooltip.js","sourceRoot":"","sources":["../src/Tooltip.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAa,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,KAAK,aAAa,MAAM,kBAAkB,CAAC;AAWlD,MAAM,OAAO,GAAG,CAAC,EACf,OAAO,EACP,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,OAAO,EACjB,GAAG,EACH,SAAS,GACI,EAAa,EAAE;IAC5B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEhD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,KAAK,OAAO;YAAE,OAAO;QAChC,MAAM,kBAAkB,GAAG,CAAC,KAAiB,EAAE,EAAE;YAC/C,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAAE,CAAC;gBAC7E,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QACF,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACvD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,eACE,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,EACxD,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,EAC7D,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC,EAC9D,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAE1D,QAAQ,EAET,cACE,GAAG,EAAE,UAAU,EACf,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,EACjC,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,EAC3F,SAAS,EAAE,SAAS,YAEnB,OAAO,GACJ,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -1,5 +1,5 @@
1
- import { Theme } from '@maelstrom-futurism/core';
2
- export declare const getBase: (theme: Theme) => import("@emotion/react").SerializedStyles;
1
+ export declare const base: import("@emotion/react").SerializedStyles;
2
+ export declare const visible: import("@emotion/react").SerializedStyles;
3
3
  export declare const top: import("@emotion/react").SerializedStyles;
4
4
  export declare const bottom: import("@emotion/react").SerializedStyles;
5
5
  export declare const left: import("@emotion/react").SerializedStyles;
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.styles.d.ts","sourceRoot":"","sources":["../src/Tooltip.styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEjD,eAAO,MAAM,OAAO,GAAI,OAAO,KAAK,8CASnC,CAAC;AAEF,eAAO,MAAM,GAAG,2CAKf,CAAC;AAEF,eAAO,MAAM,MAAM,2CAKlB,CAAC;AAGF,eAAO,MAAM,IAAI,2CAKhB,CAAC;AAEF,eAAO,MAAM,KAAK,2CAKjB,CAAC"}
1
+ {"version":3,"file":"Tooltip.styles.d.ts","sourceRoot":"","sources":["../src/Tooltip.styles.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,IAAI,2CAahB,CAAC;AAEF,eAAO,MAAM,OAAO,2CAInB,CAAC;AAEF,eAAO,MAAM,GAAG,2CAsBf,CAAC;AAEF,eAAO,MAAM,MAAM,2CAsBlB,CAAC;AAEF,eAAO,MAAM,IAAI,2CAsBhB,CAAC;AAEF,eAAO,MAAM,KAAK,2CAsBjB,CAAC"}
@@ -1,36 +1,119 @@
1
1
  import { css } from '@emotion/react';
2
- export const getBase = (theme) => css `
2
+ const arrowBase = `
3
+ content: '';
3
4
  position: absolute;
4
- background-color: ${theme.color("content")};
5
- color: ${theme.color("textColor")};
5
+ border-style: solid;
6
+ border-color: transparent;
7
+ `;
8
+ export const base = css `
9
+ position: absolute;
10
+ background-color: var(--mf-content);
11
+ color: var(--mf-text);
6
12
  padding: 12px;
7
- border: 1px solid ${theme.color("borderMuted")};
8
- border-radius: ${theme.borderRadius};
9
- z-index: 1000;
13
+ border: 1px solid var(--mf-border-muted);
14
+ border-radius: var(--mf-radius-card);
15
+ z-index: var(--mf-z-high);
10
16
  min-width: 200px;
17
+ opacity: 0;
18
+ visibility: hidden;
19
+ pointer-events: none;
20
+ transition: opacity var(--mf-dur-fast) ease, visibility var(--mf-dur-fast) ease;
21
+ `;
22
+ export const visible = css `
23
+ opacity: 1;
24
+ visibility: visible;
25
+ pointer-events: auto;
11
26
  `;
12
27
  export const top = css `
13
28
  bottom: 100%;
14
29
  left: 50%;
15
30
  transform: translateX(-50%);
16
31
  margin-bottom: 8px;
32
+
33
+ &::before {
34
+ ${arrowBase}
35
+ bottom: -8px;
36
+ left: 50%;
37
+ transform: translateX(-50%);
38
+ border-width: 8px 8px 0;
39
+ border-top-color: var(--mf-border-muted);
40
+ }
41
+ &::after {
42
+ ${arrowBase}
43
+ bottom: -7px;
44
+ left: 50%;
45
+ transform: translateX(-50%);
46
+ border-width: 7px 7px 0;
47
+ border-top-color: var(--mf-content);
48
+ }
17
49
  `;
18
50
  export const bottom = css `
19
51
  top: 100%;
20
52
  left: 50%;
21
53
  transform: translateX(-50%);
22
54
  margin-top: 8px;
55
+
56
+ &::before {
57
+ ${arrowBase}
58
+ top: -8px;
59
+ left: 50%;
60
+ transform: translateX(-50%);
61
+ border-width: 0 8px 8px;
62
+ border-bottom-color: var(--mf-border-muted);
63
+ }
64
+ &::after {
65
+ ${arrowBase}
66
+ top: -7px;
67
+ left: 50%;
68
+ transform: translateX(-50%);
69
+ border-width: 0 7px 7px;
70
+ border-bottom-color: var(--mf-content);
71
+ }
23
72
  `;
24
73
  export const left = css `
25
74
  right: 100%;
26
75
  top: 50%;
27
76
  transform: translateY(-50%);
28
77
  margin-right: 8px;
78
+
79
+ &::before {
80
+ ${arrowBase}
81
+ right: -8px;
82
+ top: 50%;
83
+ transform: translateY(-50%);
84
+ border-width: 8px 0 8px 8px;
85
+ border-left-color: var(--mf-border-muted);
86
+ }
87
+ &::after {
88
+ ${arrowBase}
89
+ right: -7px;
90
+ top: 50%;
91
+ transform: translateY(-50%);
92
+ border-width: 7px 0 7px 7px;
93
+ border-left-color: var(--mf-content);
94
+ }
29
95
  `;
30
96
  export const right = css `
31
97
  left: 100%;
32
98
  top: 50%;
33
99
  transform: translateY(-50%);
34
100
  margin-left: 8px;
101
+
102
+ &::before {
103
+ ${arrowBase}
104
+ left: -8px;
105
+ top: 50%;
106
+ transform: translateY(-50%);
107
+ border-width: 8px 8px 8px 0;
108
+ border-right-color: var(--mf-border-muted);
109
+ }
110
+ &::after {
111
+ ${arrowBase}
112
+ left: -7px;
113
+ top: 50%;
114
+ transform: translateY(-50%);
115
+ border-width: 7px 7px 7px 0;
116
+ border-right-color: var(--mf-content);
117
+ }
35
118
  `;
36
119
  //# sourceMappingURL=Tooltip.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.styles.js","sourceRoot":"","sources":["../src/Tooltip.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAGrC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,GAAG,CAAA;;wBAEpB,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;aACjC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;;wBAEb,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC;qBAC7B,KAAK,CAAC,YAAY;;;CAGtC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAA;;;;;CAKrB,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;CAKxB,CAAC;AAGF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;CAKtB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;CAKvB,CAAC"}
1
+ {"version":3,"file":"Tooltip.styles.js","sourceRoot":"","sources":["../src/Tooltip.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,MAAM,SAAS,GAAG;;;;;CAKjB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;;;;;;;;;CAatB,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAA;;;;CAIzB,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAA;;;;;;;UAOZ,SAAS;;;;;;;;UAQT,SAAS;;;;;;;CAOlB,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;UAOf,SAAS;;;;;;;;UAQT,SAAS;;;;;;;CAOlB,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAA;;;;;;;UAOb,SAAS;;;;;;;;UAQT,SAAS;;;;;;;CAOlB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAA;;;;;;;UAOd,SAAS;;;;;;;;UAQT,SAAS;;;;;;;CAOlB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@maelstrom-futurism/tooltip",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "Simple popup tooltip",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -19,6 +19,8 @@
19
19
  "build": "tsc",
20
20
  "test": "vitest run --coverage",
21
21
  "test:dev": "vitest",
22
+ "lint": "eslint .",
23
+ "lint:fix": "eslint --fix .",
22
24
  "prepublishOnly": "npm run build"
23
25
  },
24
26
  "author": "Dawson Goodell <dawsong@osmstudios.com>",
@@ -30,11 +32,11 @@
30
32
  "directory": "packages/tooltip"
31
33
  },
32
34
  "dependencies": {
33
- "@maelstrom-futurism/core": "^0.9.0"
35
+ "@maelstrom-futurism/core": "^0.9.2"
34
36
  },
35
37
  "peerDependences": {
36
38
  "react": ">= 18.0.0",
37
39
  "react-dom": ">= 18.0.0"
38
40
  },
39
- "gitHead": "5034af01ee5ea4d23abc4b678e0c66c73bae417a"
41
+ "gitHead": "839026702c7b52490406b7ac80860b4877805658"
40
42
  }