@basic-ui/material 0.1.9 → 0.1.12

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.
Files changed (72) hide show
  1. package/build/cjs/index.js +4 -6
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/AppBar/AppBarButton.d.ts +1 -1
  4. package/build/esm/BottomSheet/BottomSheet.d.ts +1 -1
  5. package/build/esm/BottomSheet/BottomSheetSurface.d.ts +1 -1
  6. package/build/esm/Button/BaseButton.d.ts +1 -1
  7. package/build/esm/Button/Button.d.ts +1 -1
  8. package/build/esm/Button/FilledButton.d.ts +1 -1
  9. package/build/esm/Button/FloatingActionButton.d.ts +7 -0
  10. package/build/esm/Button/FloatingActionButton.js +8 -0
  11. package/build/esm/Button/FloatingActionButton.js.map +1 -0
  12. package/build/esm/Button/OutlinedButton.d.ts +1 -3
  13. package/build/esm/Button/TransparentButton.d.ts +1 -1
  14. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  15. package/build/esm/CheckBox/CheckBoxIcon.d.ts +1 -1
  16. package/build/esm/Chip/ButtonChip.d.ts +1 -1
  17. package/build/esm/Chip/ChoiceChip.d.ts +1 -1
  18. package/build/esm/Combobox/Combobox.d.ts +7 -7
  19. package/build/esm/Dialog/Dialog.d.ts +1 -1
  20. package/build/esm/Dialog/DialogBackdrop.d.ts +1 -1
  21. package/build/esm/Dialog/DialogSurface.d.ts +1 -1
  22. package/build/esm/Link/Link.d.ts +1 -1
  23. package/build/esm/List/List.d.ts +1 -1
  24. package/build/esm/ListItem/ListItem.d.ts +1 -1
  25. package/build/esm/Menu/Menu.d.ts +4 -4
  26. package/build/esm/RadioButton/RadioGroup.d.ts +1 -1
  27. package/build/esm/Ripple/keyframes.js +0 -2
  28. package/build/esm/Ripple/keyframes.js.map +1 -1
  29. package/build/esm/Ripple/useRipple.js +4 -4
  30. package/build/esm/Ripple/useRipple.js.map +1 -1
  31. package/build/esm/Select/SelectIcon.d.ts +1 -1
  32. package/build/esm/SelectItem/SelectItem.d.ts +1 -1
  33. package/build/esm/Snackbar/Snackbar.d.ts +1 -1
  34. package/build/esm/Snackbar/Stack.d.ts +2 -0
  35. package/build/esm/Snackbar/Stack.js.map +1 -1
  36. package/build/esm/Switch/Switch.d.ts +1 -1
  37. package/build/esm/Tab/Tab.d.ts +1 -1
  38. package/build/esm/Tab/TabList.d.ts +1 -1
  39. package/build/esm/Tab/TabPanel.d.ts +1 -1
  40. package/build/esm/TabIndicator/TabIndicator.d.ts +1 -1
  41. package/build/esm/Table/TableHead.d.ts +1 -1
  42. package/build/esm/TextField/FilledContainer.d.ts +1 -1
  43. package/build/esm/TextField/Input.d.ts +1 -1
  44. package/build/esm/TextField/OutlinedContainer.d.ts +1 -1
  45. package/build/esm/TextField/TextField.d.ts +1 -1
  46. package/build/esm/ThemeExplorer/ColorPicker.d.ts +8 -0
  47. package/build/esm/ThemeExplorer/ColorPicker.js +76 -0
  48. package/build/esm/ThemeExplorer/ColorPicker.js.map +1 -0
  49. package/build/esm/ThemeExplorer/TextFieldColorPicker.d.ts +9 -0
  50. package/build/esm/ThemeExplorer/TextFieldColorPicker.js +100 -0
  51. package/build/esm/ThemeExplorer/TextFieldColorPicker.js.map +1 -0
  52. package/build/esm/ThemeExplorer/ThemeColors.d.ts +5 -0
  53. package/build/esm/ThemeExplorer/ThemeColors.js +80 -0
  54. package/build/esm/ThemeExplorer/ThemeColors.js.map +1 -0
  55. package/build/esm/ThemeExplorer/components.d.ts +31 -0
  56. package/build/esm/ThemeExplorer/components.js +184 -0
  57. package/build/esm/ThemeExplorer/components.js.map +1 -0
  58. package/build/esm/ThemeExplorer/makeColorScheme.d.ts +66 -0
  59. package/build/esm/ThemeExplorer/makeColorScheme.js +66 -0
  60. package/build/esm/ThemeExplorer/makeColorScheme.js.map +1 -0
  61. package/build/esm/ThemeExplorer/useDeferredColor.d.ts +3 -0
  62. package/build/esm/ThemeExplorer/useDeferredColor.js +11 -0
  63. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -0
  64. package/build/esm/ThemeExplorer/useLocalStorageCachedState.d.ts +1 -0
  65. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js +11 -0
  66. package/build/esm/ThemeExplorer/useLocalStorageCachedState.js.map +1 -0
  67. package/build/esm/Tooltip/Tooltip.d.ts +1 -1
  68. package/build/tsconfig.tsbuildinfo +80 -120
  69. package/package.json +10 -8
  70. package/src/Ripple/keyframes.ts +0 -2
  71. package/src/Ripple/useRipple.ts +6 -4
  72. package/src/Snackbar/Stack.tsx +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ThemeExplorer/TextFieldColorPicker.tsx"],"names":["toColor","Popper","useControlledState","useOnClickOutside","alpha","Box","TextField","Button","useRef","useState","memo","useCallback","ColorPicker","TextFieldColorPicker","props","value","valueProp","defaultValue","onChange","onChangeProp","disabled","otherProps","popoverOpen","setPopoverOpen","text","setText","hex","_onChange","setState","v","color","replace","popoverRef","buttonRef","e","target","current","backgroundColor","open","pointerEvents","cursor","width","height","borderRadius","borderWidth","borderColor","borderStyle","outlineColor","match","zIndex"],"mappings":"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","sourcesContent":["import { Color, toColor } from '@basic-ui/color-picker';\nimport { Popper, useControlledState, useOnClickOutside } from '@basic-ui/core';\nimport { alpha, Box, TextField, Button, TextFieldProps } from '../';\nimport { useRef, useState, memo, useCallback } from 'react';\nimport { ColorPicker } from './ColorPicker';\n\nexport interface TextFieldColorPickerProps\n extends Omit<TextFieldProps, 'value' | 'defaultValue' | 'onChange'> {\n value?: Color;\n defaultValue?: Color;\n onChange?: (color: Color) => void;\n}\n\nexport const TextFieldColorPicker = memo<TextFieldColorPickerProps>((props) => {\n const {\n value: valueProp,\n defaultValue = toColor('hex', '#33ff33'),\n onChange: onChangeProp,\n disabled,\n ...otherProps\n } = props;\n\n const [popoverOpen, setPopoverOpen] = useState(false);\n const [text, setText] = useState(valueProp?.hex || defaultValue.hex);\n const [value, _onChange] = useControlledState<Color, any, []>(\n valueProp,\n onChangeProp as any,\n defaultValue,\n (setState) => (v: any) => {\n setState(v);\n setText(v.hex);\n }\n );\n\n const onChange = useCallback(\n (color: Color) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n _onChange!(color);\n setText(color.hex.replace('#', ''));\n },\n [_onChange]\n );\n\n const popoverRef = useRef<HTMLDivElement>(null);\n const buttonRef = useRef<HTMLButtonElement>(null);\n useOnClickOutside(popoverRef, (e) => {\n if (e.target === buttonRef?.current) {\n return;\n }\n setPopoverOpen(false);\n });\n\n return (\n <>\n <TextField\n disabled={disabled}\n value={text.replace('#', '')}\n leadingIcon={'#'}\n trailingIcon={\n <Button\n style={{ backgroundColor: value.hex }}\n color=\"on.surface\"\n ref={buttonRef}\n onClick={() => setPopoverOpen((open) => !open)}\n disabled={disabled}\n sx={{\n pointerEvents: 'all',\n cursor: 'pointer',\n width: 32,\n height: 32,\n borderRadius: '4px',\n borderWidth: '1px',\n borderColor: alpha('on.surface', 0.38),\n borderStyle: 'solid',\n outlineColor: 'transparent',\n }}\n />\n }\n maxLength={6}\n hideCharacterCounter\n onChange={(e) => {\n if (e.target.value.match(/^[a-fA-F0-9]{6}$/)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n onChange!(toColor('hex', '#' + e.target.value));\n return;\n }\n setText(e.target.value);\n }}\n {...otherProps}\n />\n {popoverOpen && (\n <Popper\n anchorEl={buttonRef}\n placement=\"bottom-end\"\n style={{ zIndex: 2 }}\n >\n <Box ref={popoverRef} py={2}>\n <Box boxShadow={12}>\n <ColorPicker\n color={value}\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n onChange={onChange!}\n width={220}\n height={220}\n />\n </Box>\n <Box></Box>\n </Box>\n </Popper>\n )}\n </>\n );\n});\n"],"file":"TextFieldColorPicker.js"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { makeColorScheme } from './makeColorScheme';
3
+ export declare const ThemeColors: React.MemoExoticComponent<({ scheme, }: {
4
+ scheme: Omit<ReturnType<typeof makeColorScheme>, 'modes'>;
5
+ }) => JSX.Element>;
@@ -0,0 +1,80 @@
1
+ import React, { memo } from 'react';
2
+ import { Box } from '..';
3
+ import { ColorRow } from './components';
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { jsxs as _jsxs } from "react/jsx-runtime";
6
+ export const ThemeColors = /*#__PURE__*/memo(({
7
+ scheme
8
+ }) => {
9
+ function makeColorArrayForToken(token) {
10
+ return [{
11
+ token: "".concat(token),
12
+ bg: scheme[token],
13
+ color: scheme.on[token]
14
+ }, {
15
+ token: "on.".concat(token),
16
+ bg: scheme.on[token],
17
+ color: scheme[token]
18
+ }, {
19
+ token: "".concat(token, "-container"),
20
+ bg: scheme["".concat(token, "-container")],
21
+ color: scheme.on["".concat(token, "-container")]
22
+ }, {
23
+ token: "on.".concat(token, "-container"),
24
+ bg: scheme.on["".concat(token, "-container")],
25
+ color: scheme["".concat(token, "-container")]
26
+ }];
27
+ }
28
+
29
+ return /*#__PURE__*/_jsxs(Box, {
30
+ width: "600",
31
+ display: "flex",
32
+ flexDirection: "column",
33
+ sx: {
34
+ gap: 2
35
+ },
36
+ children: [/*#__PURE__*/_jsx(ColorRow, {
37
+ colors: makeColorArrayForToken('primary'),
38
+ height: 118
39
+ }), /*#__PURE__*/_jsx(ColorRow, {
40
+ colors: makeColorArrayForToken('secondary')
41
+ }), /*#__PURE__*/_jsx(ColorRow, {
42
+ colors: makeColorArrayForToken('tertiary')
43
+ }), /*#__PURE__*/_jsx(ColorRow, {
44
+ colors: makeColorArrayForToken('error')
45
+ }), /*#__PURE__*/_jsx(ColorRow, {
46
+ colors: [{
47
+ token: "background",
48
+ bg: scheme.background,
49
+ color: scheme.on.background
50
+ }, {
51
+ token: "on.background",
52
+ bg: scheme.on.background,
53
+ color: scheme.background
54
+ }, {
55
+ token: "surface",
56
+ bg: scheme.surface,
57
+ color: scheme.on.surface
58
+ }, {
59
+ token: "on.surface",
60
+ bg: scheme.on.surface,
61
+ color: scheme.surface
62
+ }]
63
+ }), /*#__PURE__*/_jsx(ColorRow, {
64
+ colors: [{
65
+ token: "surface-variant",
66
+ bg: scheme['surface-variant'],
67
+ color: scheme.on['surface-variant']
68
+ }, {
69
+ token: "on.surface-variant",
70
+ bg: scheme.on['surface-variant'],
71
+ color: scheme['surface-variant']
72
+ }, {
73
+ token: "outline",
74
+ bg: scheme.outline,
75
+ color: scheme.on.outline
76
+ }]
77
+ })]
78
+ });
79
+ });
80
+ //# sourceMappingURL=ThemeColors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ThemeExplorer/ThemeColors.tsx"],"names":["React","memo","Box","ColorRow","ThemeColors","scheme","makeColorArrayForToken","token","bg","color","on","gap","background","surface","outline"],"mappings":"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","sourcesContent":["import React, { memo } from 'react';\nimport { Box } from '..';\nimport { ColorRow } from './components';\nimport { makeColorScheme } from './makeColorScheme';\n\nexport const ThemeColors = memo(\n ({\n scheme,\n }: {\n scheme: Omit<ReturnType<typeof makeColorScheme>, 'modes'>;\n }) => {\n function makeColorArrayForToken(token: string) {\n return [\n {\n token: `${token}`,\n bg: scheme[token],\n color: scheme.on[token],\n },\n {\n token: `on.${token}`,\n bg: scheme.on[token],\n color: scheme[token],\n },\n {\n token: `${token}-container`,\n bg: scheme[`${token}-container`],\n color: scheme.on[`${token}-container`],\n },\n {\n token: `on.${token}-container`,\n bg: scheme.on[`${token}-container`],\n color: scheme[`${token}-container`],\n },\n ];\n }\n return (\n <Box width=\"600\" display=\"flex\" flexDirection=\"column\" sx={{ gap: 2 }}>\n <ColorRow colors={makeColorArrayForToken('primary')} height={118} />\n <ColorRow colors={makeColorArrayForToken('secondary')} />\n <ColorRow colors={makeColorArrayForToken('tertiary')} />\n <ColorRow colors={makeColorArrayForToken('error')} />\n <ColorRow\n colors={[\n {\n token: `background`,\n bg: scheme.background,\n color: scheme.on.background,\n },\n {\n token: `on.background`,\n bg: scheme.on.background,\n color: scheme.background,\n },\n {\n token: `surface`,\n bg: scheme.surface,\n color: scheme.on.surface,\n },\n {\n token: `on.surface`,\n bg: scheme.on.surface,\n color: scheme.surface,\n },\n ]}\n />\n <ColorRow\n colors={[\n {\n token: `surface-variant`,\n bg: scheme['surface-variant'],\n color: scheme.on['surface-variant'],\n },\n {\n token: `on.surface-variant`,\n bg: scheme.on['surface-variant'],\n color: scheme['surface-variant'],\n },\n {\n token: `outline`,\n bg: scheme.outline,\n color: scheme.on.outline,\n },\n ]}\n />\n </Box>\n );\n }\n);\n"],"file":"ThemeColors.js"}
@@ -0,0 +1,31 @@
1
+ import React, { CSSProperties } from 'react';
2
+ import { TonalPalette } from '@material/material-color-utilities';
3
+ export declare const ColorItem: React.MemoExoticComponent<(props: {
4
+ token: string;
5
+ style: CSSProperties;
6
+ height: number;
7
+ width: string;
8
+ }) => JSX.Element>;
9
+ export declare const ColorRow: React.MemoExoticComponent<(props: {
10
+ colors: {
11
+ token: string;
12
+ bg: string;
13
+ color: string;
14
+ }[];
15
+ height?: number;
16
+ }) => JSX.Element>;
17
+ export declare const TonalColorItem: React.MemoExoticComponent<(props: {
18
+ color: string;
19
+ level: number;
20
+ }) => JSX.Element>;
21
+ export declare const TonalColorsFromToken: React.MemoExoticComponent<(props: {
22
+ token: string;
23
+ }) => JSX.Element>;
24
+ export declare const TonalColors: React.MemoExoticComponent<(props: {
25
+ palette: TonalPalette;
26
+ }) => JSX.Element>;
27
+ export declare function makeColorArrayForToken(token: string): {
28
+ token: string;
29
+ bg: string;
30
+ color: string;
31
+ }[];
@@ -0,0 +1,184 @@
1
+ import React, { memo, useState } from 'react';
2
+ import { Box, Text, Tooltip } from '../';
3
+ import { rgb, parseToHsl, parseToRgb } from 'polished';
4
+ import { hexFromArgb, TonalPalette } from '@material/material-color-utilities';
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ import { jsxs as _jsxs } from "react/jsx-runtime";
7
+ import { Fragment as _Fragment } from "react/jsx-runtime";
8
+ export const ColorItem = /*#__PURE__*/memo(props => {
9
+ const {
10
+ token,
11
+ style,
12
+ height = 50,
13
+ width
14
+ } = props;
15
+ const [computedColor, setComputedColor] = useState();
16
+ const hslColor = computedColor ? parseToHsl(computedColor) : {
17
+ hue: 0,
18
+ saturation: 0,
19
+ lightness: 0
20
+ };
21
+ const rgbColor = computedColor ? parseToRgb(computedColor) : {
22
+ red: 0,
23
+ green: 0,
24
+ blue: 0
25
+ };
26
+ return /*#__PURE__*/_jsx(Tooltip, {
27
+ label: computedColor ? /*#__PURE__*/_jsxs(_Fragment, {
28
+ children: [/*#__PURE__*/_jsx("p", {
29
+ children: token
30
+ }), /*#__PURE__*/_jsx("p", {
31
+ children: rgb(rgbColor)
32
+ }), /*#__PURE__*/_jsxs("p", {
33
+ children: ["rgb(", rgbColor.red, ", ", rgbColor.green, ", ", rgbColor.blue, ")"]
34
+ }), /*#__PURE__*/_jsxs("p", {
35
+ children: ["hsl(", Math.round(hslColor.hue), ",", ' ', Math.round(hslColor.saturation * 100), "%,", ' ', Math.round(hslColor.lightness * 100), "%)"]
36
+ })]
37
+ }) : /*#__PURE__*/_jsx("p", {
38
+ children: token
39
+ }),
40
+ children: /*#__PURE__*/_jsx(Box, {
41
+ width: width,
42
+ height: height,
43
+ style: style,
44
+ pl: "10px",
45
+ pt: "10px",
46
+ ref: ref => {
47
+ if (ref) {
48
+ setComputedColor(window.getComputedStyle(ref).backgroundColor);
49
+ }
50
+ },
51
+ children: /*#__PURE__*/_jsx(Text, {
52
+ variant: "body2",
53
+ as: "span",
54
+ fontSize: "11px",
55
+ lineHeight: "11px",
56
+ children: token
57
+ })
58
+ })
59
+ });
60
+ });
61
+ export const ColorRow = /*#__PURE__*/memo(props => {
62
+ const {
63
+ colors,
64
+ height = 50
65
+ } = props;
66
+ return /*#__PURE__*/_jsx(Box, {
67
+ width: "100%",
68
+ display: "flex",
69
+ sx: {
70
+ ':first-of-type': {
71
+ borderTopLeftRadius: 24,
72
+ borderTopRightRadius: 24,
73
+ overflow: 'hidden'
74
+ },
75
+ ':last-of-type': {
76
+ borderBottomLeftRadius: 24,
77
+ borderBottomRightRadius: 24,
78
+ overflow: 'hidden'
79
+ }
80
+ },
81
+ children: colors.map(({
82
+ token,
83
+ bg,
84
+ color
85
+ }, idx) => /*#__PURE__*/_jsx(ColorItem, {
86
+ width: colors.length % 2 === 1 ? idx === colors.length - 1 ? '50%' : '25%' : '33.33%',
87
+ token: token,
88
+ style: {
89
+ backgroundColor: bg,
90
+ color: color
91
+ },
92
+ height: height
93
+ }, token))
94
+ });
95
+ });
96
+ export const TonalColorItem = /*#__PURE__*/memo(props => {
97
+ const {
98
+ level,
99
+ color
100
+ } = props;
101
+ const hslColor = parseToHsl(color);
102
+ const rgbColor = parseToRgb(color);
103
+ return /*#__PURE__*/_jsx(Tooltip, {
104
+ label: /*#__PURE__*/_jsxs(_Fragment, {
105
+ children: [/*#__PURE__*/_jsxs("p", {
106
+ children: ["Luminance: ", level]
107
+ }), /*#__PURE__*/_jsx("p", {
108
+ children: rgb(rgbColor)
109
+ }), /*#__PURE__*/_jsxs("p", {
110
+ children: ["rgb(", rgbColor.red, ", ", rgbColor.green, ", ", rgbColor.blue, ")"]
111
+ }), /*#__PURE__*/_jsxs("p", {
112
+ children: ["hsl(", Math.round(hslColor.hue), ",", ' ', Math.round(hslColor.saturation * 100), "%,", ' ', Math.round(hslColor.lightness * 100), "%)"]
113
+ })]
114
+ }),
115
+ children: /*#__PURE__*/_jsx(Box, {
116
+ flex: 1,
117
+ display: "flex",
118
+ alignItems: "center",
119
+ justifyContent: "center",
120
+ style: {
121
+ backgroundColor: color,
122
+ color: level <= 50 ? '#fff' : '#000'
123
+ },
124
+ children: level
125
+ }, level)
126
+ });
127
+ });
128
+ export const TonalColorsFromToken = /*#__PURE__*/memo(props => {
129
+ const [computedColor, setComputedColor] = useState();
130
+
131
+ if (!computedColor) {
132
+ return /*#__PURE__*/_jsx(Box, {
133
+ ref: ref => {
134
+ if (ref) {
135
+ setComputedColor(window.getComputedStyle(ref).backgroundColor);
136
+ }
137
+ },
138
+ bg: props.token,
139
+ style: {
140
+ position: 'fixed',
141
+ left: -5000,
142
+ top: -5000
143
+ }
144
+ });
145
+ }
146
+
147
+ const colorInt = parseInt(rgb(parseToRgb(computedColor)).slice(1), 16);
148
+ const tonal = TonalPalette.fromInt(colorInt);
149
+ return /*#__PURE__*/_jsx(TonalColors, {
150
+ palette: tonal
151
+ });
152
+ });
153
+ export const TonalColors = /*#__PURE__*/memo(props => {
154
+ const luminanceLevels = [0, 10, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 95, 98, 99, 100];
155
+ return /*#__PURE__*/_jsx(Box, {
156
+ display: "flex",
157
+ height: "72px",
158
+ width: "100%",
159
+ children: luminanceLevels.map(level => /*#__PURE__*/_jsx(TonalColorItem, {
160
+ level: level,
161
+ color: hexFromArgb(props.palette.tone(level))
162
+ }, level))
163
+ });
164
+ });
165
+ export function makeColorArrayForToken(token) {
166
+ return [{
167
+ token,
168
+ bg: token,
169
+ color: 'on.' + token
170
+ }, {
171
+ token,
172
+ bg: 'on.' + token,
173
+ color: token
174
+ }, {
175
+ token,
176
+ bg: token + '-container',
177
+ color: 'on.' + token + '-container'
178
+ }, {
179
+ token,
180
+ bg: 'on.' + token + '-container',
181
+ color: token + '-container'
182
+ }];
183
+ }
184
+ //# sourceMappingURL=components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ThemeExplorer/components.tsx"],"names":["React","memo","useState","Box","Text","Tooltip","rgb","parseToHsl","parseToRgb","hexFromArgb","TonalPalette","ColorItem","props","token","style","height","width","computedColor","setComputedColor","hslColor","hue","saturation","lightness","rgbColor","red","green","blue","Math","round","ref","window","getComputedStyle","backgroundColor","ColorRow","colors","borderTopLeftRadius","borderTopRightRadius","overflow","borderBottomLeftRadius","borderBottomRightRadius","map","bg","color","idx","length","TonalColorItem","level","TonalColorsFromToken","position","left","top","colorInt","parseInt","slice","tonal","fromInt","TonalColors","luminanceLevels","palette","tone","makeColorArrayForToken"],"mappings":"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","sourcesContent":["import React, { memo, useState, CSSProperties } from 'react';\nimport { Box, Text, Tooltip } from '../';\nimport { rgb, parseToHsl, parseToRgb } from 'polished';\nimport { hexFromArgb, TonalPalette } from '@material/material-color-utilities';\n\nexport const ColorItem = memo(\n (props: {\n token: string;\n style: CSSProperties;\n height: number;\n width: string;\n }) => {\n const { token, style, height = 50, width } = props;\n const [computedColor, setComputedColor] = useState<string>();\n const hslColor = computedColor\n ? parseToHsl(computedColor)\n : { hue: 0, saturation: 0, lightness: 0 };\n const rgbColor = computedColor\n ? parseToRgb(computedColor)\n : { red: 0, green: 0, blue: 0 };\n return (\n <Tooltip\n label={\n computedColor ? (\n <>\n <p>{token}</p>\n <p>{rgb(rgbColor)}</p>\n <p>\n rgb({rgbColor.red}, {rgbColor.green}, {rgbColor.blue})\n </p>\n <p>\n hsl({Math.round(hslColor.hue)},{' '}\n {Math.round(hslColor.saturation * 100)}%,{' '}\n {Math.round(hslColor.lightness * 100)}%)\n </p>\n </>\n ) : (\n <p>{token}</p>\n )\n }\n >\n <Box\n width={width}\n height={height}\n style={style}\n pl=\"10px\"\n pt=\"10px\"\n ref={(ref: HTMLDivElement | null) => {\n if (ref) {\n setComputedColor(window.getComputedStyle(ref).backgroundColor);\n }\n }}\n >\n <Text variant=\"body2\" as=\"span\" fontSize=\"11px\" lineHeight=\"11px\">\n {token}\n </Text>\n </Box>\n </Tooltip>\n );\n }\n);\n\nexport const ColorRow = memo(\n (props: {\n colors: { token: string; bg: string; color: string }[];\n height?: number;\n }) => {\n const { colors, height = 50 } = props;\n return (\n <Box\n width=\"100%\"\n display=\"flex\"\n sx={{\n ':first-of-type': {\n borderTopLeftRadius: 24,\n borderTopRightRadius: 24,\n overflow: 'hidden',\n },\n ':last-of-type': {\n borderBottomLeftRadius: 24,\n borderBottomRightRadius: 24,\n overflow: 'hidden',\n },\n }}\n >\n {colors.map(({ token, bg, color }, idx) => (\n <ColorItem\n width={\n colors.length % 2 === 1\n ? idx === colors.length - 1\n ? '50%'\n : '25%'\n : '33.33%'\n }\n key={token}\n token={token}\n style={{ backgroundColor: bg, color: color }}\n height={height}\n />\n ))}\n </Box>\n );\n }\n);\n\nexport const TonalColorItem = memo(\n (props: { color: string; level: number }) => {\n const { level, color } = props;\n const hslColor = parseToHsl(color);\n const rgbColor = parseToRgb(color);\n return (\n <Tooltip\n label={\n <>\n <p>Luminance: {level}</p>\n <p>{rgb(rgbColor)}</p>\n <p>\n rgb({rgbColor.red}, {rgbColor.green}, {rgbColor.blue})\n </p>\n <p>\n hsl({Math.round(hslColor.hue)},{' '}\n {Math.round(hslColor.saturation * 100)}%,{' '}\n {Math.round(hslColor.lightness * 100)}%)\n </p>\n </>\n }\n >\n <Box\n key={level}\n flex={1}\n display=\"flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n style={{\n backgroundColor: color,\n color: level <= 50 ? '#fff' : '#000',\n }}\n >\n {level}\n </Box>\n </Tooltip>\n );\n }\n);\n\nexport const TonalColorsFromToken = memo((props: { token: string }) => {\n const [computedColor, setComputedColor] = useState<string>();\n if (!computedColor) {\n return (\n <Box\n ref={(ref: HTMLDivElement | null) => {\n if (ref) {\n setComputedColor(window.getComputedStyle(ref).backgroundColor);\n }\n }}\n bg={props.token}\n style={{ position: 'fixed', left: -5000, top: -5000 }}\n />\n );\n }\n const colorInt = parseInt(rgb(parseToRgb(computedColor)).slice(1), 16);\n const tonal = TonalPalette.fromInt(colorInt);\n\n return <TonalColors palette={tonal} />;\n});\n\nexport const TonalColors = memo((props: { palette: TonalPalette }) => {\n const luminanceLevels = [\n 0,\n 10,\n 20,\n 25,\n 30,\n 35,\n 40,\n 50,\n 60,\n 70,\n 80,\n 90,\n 95,\n 98,\n 99,\n 100,\n ];\n return (\n <Box display=\"flex\" height=\"72px\" width=\"100%\">\n {luminanceLevels.map((level) => (\n <TonalColorItem\n key={level}\n level={level}\n color={hexFromArgb(props.palette.tone(level))}\n />\n ))}\n </Box>\n );\n});\n\nexport function makeColorArrayForToken(\n token: string\n): { token: string; bg: string; color: string }[] {\n return [\n { token, bg: token, color: 'on.' + token },\n { token, bg: 'on.' + token, color: token },\n { token, bg: token + '-container', color: 'on.' + token + '-container' },\n { token, bg: 'on.' + token + '-container', color: token + '-container' },\n ];\n}\n"],"file":"components.js"}
@@ -0,0 +1,66 @@
1
+ import { TonalPalette } from '@material/material-color-utilities';
2
+ export declare function makeColorScheme(opts: {
3
+ primary: TonalPalette;
4
+ secondary: TonalPalette;
5
+ tertiary: TonalPalette;
6
+ error: TonalPalette;
7
+ neutral: TonalPalette;
8
+ neutralVariant: TonalPalette;
9
+ }): {
10
+ primary: string;
11
+ secondary: string;
12
+ tertiary: string;
13
+ error: string;
14
+ 'primary-container': string;
15
+ 'secondary-container': string;
16
+ 'tertiary-container': string;
17
+ 'error-container': string;
18
+ background: string;
19
+ surface: string;
20
+ 'surface-variant': string;
21
+ outline: string;
22
+ on: {
23
+ primary: string;
24
+ secondary: string;
25
+ tertiary: string;
26
+ error: string;
27
+ 'primary-container': string;
28
+ 'secondary-container': string;
29
+ 'tertiary-container': string;
30
+ 'error-container': string;
31
+ background: string;
32
+ surface: string;
33
+ 'surface-variant': string;
34
+ outline: string;
35
+ };
36
+ modes: {
37
+ dark: {
38
+ primary: string;
39
+ secondary: string;
40
+ tertiary: string;
41
+ error: string;
42
+ 'primary-container': string;
43
+ 'secondary-container': string;
44
+ 'tertiary-container': string;
45
+ 'error-container': string;
46
+ background: string;
47
+ surface: string;
48
+ 'surface-variant': string;
49
+ outline: string;
50
+ on: {
51
+ primary: string;
52
+ secondary: string;
53
+ tertiary: string;
54
+ error: string;
55
+ 'primary-container': string;
56
+ 'secondary-container': string;
57
+ 'tertiary-container': string;
58
+ 'error-container': string;
59
+ background: string;
60
+ surface: string;
61
+ 'surface-variant': string;
62
+ outline: string;
63
+ };
64
+ };
65
+ };
66
+ };
@@ -0,0 +1,66 @@
1
+ import { hexFromArgb } from '@material/material-color-utilities';
2
+ export function makeColorScheme(opts) {
3
+ function c(palette, tone) {
4
+ return hexFromArgb(palette.tone(tone));
5
+ }
6
+
7
+ return {
8
+ primary: c(opts.primary, 40),
9
+ secondary: c(opts.secondary, 40),
10
+ tertiary: c(opts.tertiary, 40),
11
+ error: c(opts.error, 40),
12
+ 'primary-container': c(opts.primary, 90),
13
+ 'secondary-container': c(opts.secondary, 90),
14
+ 'tertiary-container': c(opts.tertiary, 90),
15
+ 'error-container': c(opts.error, 90),
16
+ background: c(opts.neutral, 99),
17
+ surface: c(opts.neutral, 99),
18
+ 'surface-variant': c(opts.neutralVariant, 99),
19
+ outline: c(opts.neutralVariant, 50),
20
+ on: {
21
+ primary: c(opts.primary, 100),
22
+ secondary: c(opts.secondary, 100),
23
+ tertiary: c(opts.tertiary, 100),
24
+ error: c(opts.error, 100),
25
+ 'primary-container': c(opts.primary, 10),
26
+ 'secondary-container': c(opts.secondary, 10),
27
+ 'tertiary-container': c(opts.tertiary, 10),
28
+ 'error-container': c(opts.error, 10),
29
+ background: c(opts.neutral, 10),
30
+ surface: c(opts.neutral, 10),
31
+ 'surface-variant': c(opts.neutralVariant, 10),
32
+ outline: c(opts.neutralVariant, 95)
33
+ },
34
+ modes: {
35
+ dark: {
36
+ primary: c(opts.primary, 80),
37
+ secondary: c(opts.secondary, 80),
38
+ tertiary: c(opts.tertiary, 80),
39
+ error: c(opts.error, 80),
40
+ 'primary-container': c(opts.primary, 30),
41
+ 'secondary-container': c(opts.secondary, 30),
42
+ 'tertiary-container': c(opts.tertiary, 30),
43
+ 'error-container': c(opts.error, 30),
44
+ background: c(opts.neutral, 10),
45
+ surface: c(opts.neutral, 10),
46
+ 'surface-variant': c(opts.neutralVariant, 30),
47
+ outline: c(opts.neutralVariant, 60),
48
+ on: {
49
+ primary: c(opts.primary, 20),
50
+ secondary: c(opts.secondary, 20),
51
+ tertiary: c(opts.tertiary, 20),
52
+ error: c(opts.error, 20),
53
+ 'primary-container': c(opts.primary, 90),
54
+ 'secondary-container': c(opts.secondary, 90),
55
+ 'tertiary-container': c(opts.tertiary, 90),
56
+ 'error-container': c(opts.error, 90),
57
+ background: c(opts.neutral, 90),
58
+ surface: c(opts.neutral, 90),
59
+ 'surface-variant': c(opts.neutralVariant, 80),
60
+ outline: c(opts.neutralVariant, 10)
61
+ }
62
+ }
63
+ }
64
+ };
65
+ }
66
+ //# sourceMappingURL=makeColorScheme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ThemeExplorer/makeColorScheme.tsx"],"names":["hexFromArgb","makeColorScheme","opts","c","palette","tone","primary","secondary","tertiary","error","background","neutral","surface","neutralVariant","outline","on","modes","dark"],"mappings":"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","sourcesContent":["import { TonalPalette, hexFromArgb } from '@material/material-color-utilities';\n\nexport function makeColorScheme(opts: {\n primary: TonalPalette;\n secondary: TonalPalette;\n tertiary: TonalPalette;\n error: TonalPalette;\n neutral: TonalPalette;\n neutralVariant: TonalPalette;\n}) {\n function c(palette: TonalPalette, tone: number) {\n return hexFromArgb(palette.tone(tone));\n }\n\n return {\n primary: c(opts.primary, 40),\n secondary: c(opts.secondary, 40),\n tertiary: c(opts.tertiary, 40),\n error: c(opts.error, 40),\n 'primary-container': c(opts.primary, 90),\n 'secondary-container': c(opts.secondary, 90),\n 'tertiary-container': c(opts.tertiary, 90),\n 'error-container': c(opts.error, 90),\n background: c(opts.neutral, 99),\n surface: c(opts.neutral, 99),\n 'surface-variant': c(opts.neutralVariant, 99),\n outline: c(opts.neutralVariant, 50),\n on: {\n primary: c(opts.primary, 100),\n secondary: c(opts.secondary, 100),\n tertiary: c(opts.tertiary, 100),\n error: c(opts.error, 100),\n 'primary-container': c(opts.primary, 10),\n 'secondary-container': c(opts.secondary, 10),\n 'tertiary-container': c(opts.tertiary, 10),\n 'error-container': c(opts.error, 10),\n background: c(opts.neutral, 10),\n surface: c(opts.neutral, 10),\n 'surface-variant': c(opts.neutralVariant, 10),\n outline: c(opts.neutralVariant, 95),\n },\n modes: {\n dark: {\n primary: c(opts.primary, 80),\n secondary: c(opts.secondary, 80),\n tertiary: c(opts.tertiary, 80),\n error: c(opts.error, 80),\n 'primary-container': c(opts.primary, 30),\n 'secondary-container': c(opts.secondary, 30),\n 'tertiary-container': c(opts.tertiary, 30),\n 'error-container': c(opts.error, 30),\n background: c(opts.neutral, 10),\n surface: c(opts.neutral, 10),\n 'surface-variant': c(opts.neutralVariant, 30),\n outline: c(opts.neutralVariant, 60),\n on: {\n primary: c(opts.primary, 20),\n secondary: c(opts.secondary, 20),\n tertiary: c(opts.tertiary, 20),\n error: c(opts.error, 20),\n 'primary-container': c(opts.primary, 90),\n 'secondary-container': c(opts.secondary, 90),\n 'tertiary-container': c(opts.tertiary, 90),\n 'error-container': c(opts.error, 90),\n background: c(opts.neutral, 90),\n surface: c(opts.neutral, 90),\n 'surface-variant': c(opts.neutralVariant, 80),\n outline: c(opts.neutralVariant, 10),\n },\n },\n },\n };\n}\n"],"file":"makeColorScheme.js"}
@@ -0,0 +1,3 @@
1
+ import { TonalPalette } from '@material/material-color-utilities';
2
+ import { Color } from '@basic-ui/color-picker';
3
+ export declare function useDeferredColor(key: string, fallbackValue: TonalPalette): [Color | null, TonalPalette, (c: Color | null) => void];
@@ -0,0 +1,11 @@
1
+ import { useMemo, useDeferredValue } from 'react';
2
+ import { TonalPalette, argbFromHex } from '@material/material-color-utilities';
3
+ import { useLocalStorageCachedState } from './useLocalStorageCachedState'; // import './styles.css';
4
+
5
+ export function useDeferredColor(key, fallbackValue) {
6
+ const [color, setColor] = useLocalStorageCachedState('theme-builder.' + key, null);
7
+ const deferredColor = useDeferredValue(color);
8
+ const colorTonal = useMemo(() => deferredColor != null && deferredColor.hex ? TonalPalette.fromInt(argbFromHex(deferredColor.hex)) : fallbackValue, [deferredColor == null ? void 0 : deferredColor.hex, fallbackValue]);
9
+ return [color, colorTonal, setColor];
10
+ }
11
+ //# sourceMappingURL=useDeferredColor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ThemeExplorer/useDeferredColor.tsx"],"names":["useMemo","useDeferredValue","TonalPalette","argbFromHex","useLocalStorageCachedState","useDeferredColor","key","fallbackValue","color","setColor","deferredColor","colorTonal","hex","fromInt"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,gBAAlB,QAA0C,OAA1C;AACA,SAASC,YAAT,EAAuBC,WAAvB,QAA0C,oCAA1C;AAEA,SAASC,0BAAT,QAA2C,8BAA3C,C,CAEA;;AACA,OAAO,SAASC,gBAAT,CACLC,GADK,EAELC,aAFK,EAGoD;AACzD,QAAM,CAACC,KAAD,EAAQC,QAAR,IAAoBL,0BAA0B,CAClD,mBAAmBE,GAD+B,EAElD,IAFkD,CAApD;AAIA,QAAMI,aAAa,GAAGT,gBAAgB,CAACO,KAAD,CAAtC;AACA,QAAMG,UAAU,GAAGX,OAAO,CACxB,MACEU,aAAa,QAAb,IAAAA,aAAa,CAAEE,GAAf,GACIV,YAAY,CAACW,OAAb,CAAqBV,WAAW,CAACO,aAAa,CAACE,GAAf,CAAhC,CADJ,GAEIL,aAJkB,EAKxB,CAACG,aAAD,oBAACA,aAAa,CAAEE,GAAhB,EAAqBL,aAArB,CALwB,CAA1B;AAOA,SAAO,CAACC,KAAD,EAAQG,UAAR,EAAoBF,QAApB,CAAP;AACD","sourcesContent":["import { useMemo, useDeferredValue } from 'react';\nimport { TonalPalette, argbFromHex } from '@material/material-color-utilities';\nimport { Color } from '@basic-ui/color-picker';\nimport { useLocalStorageCachedState } from './useLocalStorageCachedState';\n\n// import './styles.css';\nexport function useDeferredColor(\n key: string,\n fallbackValue: TonalPalette\n): [Color | null, TonalPalette, (c: Color | null) => void] {\n const [color, setColor] = useLocalStorageCachedState<Color | null>(\n 'theme-builder.' + key,\n null\n );\n const deferredColor = useDeferredValue(color);\n const colorTonal = useMemo(\n () =>\n deferredColor?.hex\n ? TonalPalette.fromInt(argbFromHex(deferredColor.hex))\n : fallbackValue,\n [deferredColor?.hex, fallbackValue]\n );\n return [color, colorTonal, setColor];\n}\n"],"file":"useDeferredColor.js"}
@@ -0,0 +1 @@
1
+ export declare function useLocalStorageCachedState<T>(key: string, initialValue: T): [T, (c: T) => void];
@@ -0,0 +1,11 @@
1
+ import { useCallback, useState } from 'react';
2
+ export function useLocalStorageCachedState(key, initialValue) {
3
+ const [state, _setState] = useState(() => JSON.parse(localStorage.getItem(key) || 'null') || initialValue);
4
+ const setState = useCallback(c => {
5
+ _setState(c);
6
+
7
+ localStorage.setItem(key, JSON.stringify(c));
8
+ }, [key]);
9
+ return [state, setState];
10
+ }
11
+ //# sourceMappingURL=useLocalStorageCachedState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ThemeExplorer/useLocalStorageCachedState.ts"],"names":["useCallback","useState","useLocalStorageCachedState","key","initialValue","state","_setState","JSON","parse","localStorage","getItem","setState","c","setItem","stringify"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,QAAtB,QAAsC,OAAtC;AAEA,OAAO,SAASC,0BAAT,CACLC,GADK,EAELC,YAFK,EAGgB;AACrB,QAAM,CAACC,KAAD,EAAQC,SAAR,IAAqBL,QAAQ,CACjC,MAAMM,IAAI,CAACC,KAAL,CAAWC,YAAY,CAACC,OAAb,CAAqBP,GAArB,KAA6B,MAAxC,KAAmDC,YADxB,CAAnC;AAGA,QAAMO,QAAQ,GAAGX,WAAW,CACzBY,CAAD,IAAgB;AACdN,IAAAA,SAAS,CAACM,CAAD,CAAT;;AACAH,IAAAA,YAAY,CAACI,OAAb,CAAqBV,GAArB,EAA0BI,IAAI,CAACO,SAAL,CAAeF,CAAf,CAA1B;AACD,GAJyB,EAK1B,CAACT,GAAD,CAL0B,CAA5B;AAOA,SAAO,CAACE,KAAD,EAAQM,QAAR,CAAP;AACD","sourcesContent":["import { useCallback, useState } from 'react';\n\nexport function useLocalStorageCachedState<T>(\n key: string,\n initialValue: T\n): [T, (c: T) => void] {\n const [state, _setState] = useState<T>(\n () => JSON.parse(localStorage.getItem(key) || 'null') || initialValue\n );\n const setState = useCallback(\n (c: T): void => {\n _setState(c);\n localStorage.setItem(key, JSON.stringify(c));\n },\n [key]\n );\n return [state, setState];\n}\n"],"file":"useLocalStorageCachedState.js"}
@@ -5,4 +5,4 @@ export interface TooltipProps extends BoxProps, Omit<PopperProps, 'color' | 'anc
5
5
  label: React.ReactNode;
6
6
  disabled?: boolean;
7
7
  }
8
- export declare const Tooltip: React.ForwardRefExoticComponent<Pick<TooltipProps, "onKeyDown" | "onPointerDown" | "style" | "disabled" | "left" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "backgroundColor" | "backgroundImage" | "backgroundPosition" | "backgroundRepeat" | "backgroundSize" | "borderBottomColor" | "borderBottomLeftRadius" | "borderBottomRightRadius" | "borderBottomStyle" | "borderBottomWidth" | "borderLeftColor" | "borderLeftStyle" | "borderLeftWidth" | "borderRightColor" | "borderRightStyle" | "borderRightWidth" | "borderTopColor" | "borderTopLeftRadius" | "borderTopRightRadius" | "borderTopStyle" | "borderTopWidth" | "bottom" | "color" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontSize" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "opacity" | "order" | "overflowX" | "overflowY" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "position" | "right" | "textAlign" | "textShadow" | "top" | "translate" | "verticalAlign" | "width" | "background" | "border" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderStyle" | "borderTop" | "borderWidth" | "flex" | "gridArea" | "gridColumn" | "gridRow" | "margin" | "overflow" | "padding" | "bg" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "p" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "hidden" | "gridColumnGap" | "gridGap" | "gridRowGap" | "size" | "as" | "sx" | "__css" | "variant" | "tx" | "theme" | "borderX" | "borderY" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "tabIndex" | "title" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "label" | "innerAs" | "placement" | "strategy" | "modifiers" | "usePortal" | "portalSelector" | "skidding" | "distance" | "offsetFn" | "arrowPadding"> & React.RefAttributes<HTMLDivElement>>;
8
+ export declare const Tooltip: React.ForwardRefExoticComponent<Pick<TooltipProps, "bottom" | "top" | "hidden" | "left" | "right" | "as" | "sx" | "__css" | "variant" | "tx" | "theme" | "m" | "margin" | "mt" | "marginTop" | "mr" | "marginRight" | "mb" | "marginBottom" | "ml" | "marginLeft" | "mx" | "marginX" | "my" | "marginY" | "p" | "padding" | "pt" | "paddingTop" | "pr" | "paddingRight" | "pb" | "paddingBottom" | "pl" | "paddingLeft" | "px" | "paddingX" | "py" | "paddingY" | "width" | "height" | "minWidth" | "minHeight" | "maxWidth" | "maxHeight" | "display" | "verticalAlign" | "size" | "overflow" | "overflowX" | "overflowY" | "fontFamily" | "fontSize" | "fontWeight" | "lineHeight" | "letterSpacing" | "fontStyle" | "textAlign" | "color" | "bg" | "backgroundColor" | "opacity" | "alignItems" | "alignContent" | "justifyItems" | "justifyContent" | "flexWrap" | "flexDirection" | "flex" | "flexGrow" | "flexShrink" | "flexBasis" | "justifySelf" | "alignSelf" | "order" | "border" | "borderX" | "borderY" | "borderWidth" | "borderTopWidth" | "borderBottomWidth" | "borderLeftWidth" | "borderRightWidth" | "borderStyle" | "borderTopStyle" | "borderBottomStyle" | "borderLeftStyle" | "borderRightStyle" | "borderColor" | "borderTopColor" | "borderBottomColor" | "borderLeftColor" | "borderRightColor" | "borderRadius" | "borderTopLeftRadius" | "borderTopRightRadius" | "borderBottomLeftRadius" | "borderBottomRightRadius" | "borderTop" | "borderRight" | "borderBottom" | "borderLeft" | "gridGap" | "gridColumnGap" | "gridRowGap" | "gridColumn" | "gridRow" | "gridAutoFlow" | "gridAutoColumns" | "gridAutoRows" | "gridTemplateColumns" | "gridTemplateRows" | "gridTemplateAreas" | "gridArea" | "background" | "backgroundImage" | "backgroundSize" | "backgroundPosition" | "backgroundRepeat" | "position" | "zIndex" | "boxShadow" | "textShadow" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "slot" | "spellCheck" | "style" | "tabIndex" | "title" | "translate" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "children" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "key" | "label" | "disabled" | "innerAs" | "placement" | "strategy" | "modifiers" | "usePortal" | "portalSelector" | "skidding" | "distance" | "offsetFn" | "arrowPadding"> & React.RefAttributes<HTMLDivElement>>;