@basic-ui/material 1.0.0-alpha.15 → 1.0.0-alpha.18

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 (118) hide show
  1. package/build/cjs/index.js +296 -52
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Alert/Alert.d.ts +1 -1
  4. package/build/esm/AppBar/AppBarButton.d.ts +1 -1
  5. package/build/esm/BottomSheet/BottomSheet.d.ts +1 -1
  6. package/build/esm/BottomSheet/BottomSheetSurface.d.ts +1 -1
  7. package/build/esm/Button/BaseButton.d.ts +1 -1
  8. package/build/esm/Button/BaseButton.js +1 -0
  9. package/build/esm/Button/BaseButton.js.map +1 -1
  10. package/build/esm/Button/Button.d.ts +1 -1
  11. package/build/esm/Button/ButtonGroup.d.ts +1 -1
  12. package/build/esm/Button/FilledButton.d.ts +1 -1
  13. package/build/esm/Button/OutlinedButton.d.ts +1 -1
  14. package/build/esm/Button/TransparentButton.d.ts +1 -1
  15. package/build/esm/CheckBox/CheckBox.d.ts +1 -1
  16. package/build/esm/Chip/ButtonChip.d.ts +1 -1
  17. package/build/esm/Chip/ChipBase.d.ts +1 -1
  18. package/build/esm/Chip/ChoiceChip.d.ts +1 -1
  19. package/build/esm/Combobox/Combobox.d.ts +7 -7
  20. package/build/esm/Combobox/Combobox.js +4 -3
  21. package/build/esm/Combobox/Combobox.js.map +1 -1
  22. package/build/esm/Dialog/Dialog.d.ts +1 -1
  23. package/build/esm/Dialog/DialogBackdrop.d.ts +1 -1
  24. package/build/esm/Dialog/DialogSurface.d.ts +1 -1
  25. package/build/esm/Dialog/Scrim.d.ts +1 -1
  26. package/build/esm/Divider/Divider.d.ts +1 -1
  27. package/build/esm/Link/Link.d.ts +1 -1
  28. package/build/esm/Link/Link.js +12 -0
  29. package/build/esm/Link/Link.js.map +1 -1
  30. package/build/esm/ListItem/ListItem.d.ts +3 -1
  31. package/build/esm/ListItem/ListItem.js +46 -43
  32. package/build/esm/ListItem/ListItem.js.map +1 -1
  33. package/build/esm/Menu/Menu.d.ts +4 -4
  34. package/build/esm/NavRail/NavRailItem.d.ts +3 -3
  35. package/build/esm/Paper/Paper.d.ts +1 -1
  36. package/build/esm/RadioButton/RadioGroup.d.ts +1 -1
  37. package/build/esm/Ripple/useRippleSurface.d.ts +1 -0
  38. package/build/esm/Ripple/useRippleSurface.js +17 -16
  39. package/build/esm/Ripple/useRippleSurface.js.map +1 -1
  40. package/build/esm/Select/Select.d.ts +1 -1
  41. package/build/esm/Select/Select.js +4 -0
  42. package/build/esm/Select/Select.js.map +1 -1
  43. package/build/esm/Select/SelectIcon.d.ts +1 -1
  44. package/build/esm/SelectItem/SelectItem.d.ts +5 -2
  45. package/build/esm/SelectItem/SelectItem.js +17 -4
  46. package/build/esm/SelectItem/SelectItem.js.map +1 -1
  47. package/build/esm/SelectionControl/SelectionControlText.d.ts +1 -1
  48. package/build/esm/Skeleton/Skeleton.d.ts +1 -1
  49. package/build/esm/Slider/Slider.d.ts +17 -0
  50. package/build/esm/Slider/Slider.js +224 -0
  51. package/build/esm/Slider/Slider.js.map +1 -0
  52. package/build/esm/Slider/index.d.ts +1 -0
  53. package/build/esm/Slider/index.js +2 -0
  54. package/build/esm/Slider/index.js.map +1 -0
  55. package/build/esm/Snackbar/Snackbar.d.ts +1 -1
  56. package/build/esm/Switch/Switch.d.ts +1 -1
  57. package/build/esm/Tab/Tab.d.ts +1 -1
  58. package/build/esm/Tab/TabList.d.ts +1 -1
  59. package/build/esm/Tab/TabPanel.d.ts +1 -1
  60. package/build/esm/TabIndicator/TabIndicator.d.ts +1 -1
  61. package/build/esm/Table/TableHead.d.ts +1 -1
  62. package/build/esm/Table/TableRow.d.ts +1 -1
  63. package/build/esm/TextField/FilledContainer.d.ts +1 -1
  64. package/build/esm/TextField/HelperText.d.ts +1 -1
  65. package/build/esm/TextField/Input.d.ts +1 -1
  66. package/build/esm/TextField/OutlinedContainer.d.ts +1 -1
  67. package/build/esm/TextField/OutlinedContainer.js +13 -5
  68. package/build/esm/TextField/OutlinedContainer.js.map +1 -1
  69. package/build/esm/TextField/TextField.d.ts +1 -1
  70. package/build/esm/ThemeExplorer/BorderSlider.d.ts +7 -0
  71. package/build/esm/ThemeExplorer/BorderSlider.js +78 -0
  72. package/build/esm/ThemeExplorer/BorderSlider.js.map +1 -0
  73. package/build/esm/ThemeExplorer/ColorSchemePicker.d.ts +10 -0
  74. package/build/esm/ThemeExplorer/ColorSchemePicker.js +54 -0
  75. package/build/esm/ThemeExplorer/ColorSchemePicker.js.map +1 -0
  76. package/build/esm/ThemeExplorer/FontAutoComplete.d.ts +9 -0
  77. package/build/esm/ThemeExplorer/FontAutoComplete.js +128 -0
  78. package/build/esm/ThemeExplorer/FontAutoComplete.js.map +1 -0
  79. package/build/esm/ThemeExplorer/ThemeBuilder.d.ts +2 -0
  80. package/build/esm/ThemeExplorer/ThemeBuilder.js +231 -93
  81. package/build/esm/ThemeExplorer/ThemeBuilder.js.map +1 -1
  82. package/build/esm/ThemeExplorer/components.js +4 -4
  83. package/build/esm/ThemeExplorer/components.js.map +1 -1
  84. package/build/esm/ThemeExplorer/googleFonts.d.ts +1 -0
  85. package/build/esm/ThemeExplorer/googleFonts.js +7 -0
  86. package/build/esm/ThemeExplorer/googleFonts.js.map +1 -0
  87. package/build/esm/ThemeExplorer/updateGoogleFonts.js +70 -0
  88. package/build/esm/ThemeExplorer/updateGoogleFonts.js.map +1 -0
  89. package/build/esm/ThemeExplorer/useDeferredColor.js +3 -4
  90. package/build/esm/ThemeExplorer/useDeferredColor.js.map +1 -1
  91. package/build/esm/Tooltip/Tooltip.d.ts +1 -1
  92. package/build/esm/index.d.ts +1 -0
  93. package/build/esm/index.js +1 -0
  94. package/build/esm/index.js.map +1 -1
  95. package/build/tsconfig-build.tsbuildinfo +1 -1
  96. package/package.json +6 -6
  97. package/src/Button/BaseButton.tsx +1 -0
  98. package/src/Combobox/Combobox.tsx +5 -2
  99. package/src/Link/Link.tsx +12 -0
  100. package/src/ListItem/ListItem.tsx +48 -42
  101. package/src/Ripple/useRippleSurface.ts +8 -2
  102. package/src/Select/PaymentMethodSelect.story.tsx +17 -24
  103. package/src/Select/Select.tsx +6 -0
  104. package/src/SelectItem/SelectItem.tsx +13 -3
  105. package/src/Slider/Slider.story.tsx +36 -0
  106. package/src/Slider/Slider.tsx +275 -0
  107. package/src/Slider/index.ts +1 -0
  108. package/src/TextField/OutlinedContainer.tsx +8 -3
  109. package/src/ThemeExplorer/BorderSlider.tsx +73 -0
  110. package/src/ThemeExplorer/ColorSchemePicker.tsx +55 -0
  111. package/src/ThemeExplorer/FontAutoComplete.tsx +139 -0
  112. package/src/ThemeExplorer/ThemeBuilder.story.tsx +2 -1
  113. package/src/ThemeExplorer/ThemeBuilder.tsx +218 -82
  114. package/src/ThemeExplorer/components.tsx +4 -4
  115. package/src/ThemeExplorer/googleFonts.ts +1436 -0
  116. package/src/ThemeExplorer/updateGoogleFonts.js +33 -0
  117. package/src/ThemeExplorer/useDeferredColor.tsx +3 -6
  118. package/src/index.ts +1 -0
@@ -1,19 +1,21 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import { useState, useMemo, useDeferredValue, useEffect } from 'react';
3
+ import { useState, useMemo, useEffect } from 'react';
4
4
  import { CorePalette, argbFromHex, hexFromArgb } from '@material/material-color-utilities';
5
5
  import { toColor } from '@basic-ui/color-picker';
6
- import { THEME_OVERRIDE_STORAGE_KEY, injectThemeOverride, transformTheme } from '@basic-ui/dynamic-theme';
6
+ import { THEME_OVERRIDE_STORAGE_KEY, injectThemeOverride, transformTheme, loadGoogleFont } from '@basic-ui/dynamic-theme';
7
+ import { rem } from 'polished';
8
+ import remToPx from 'polished/lib/helpers/remToPx';
7
9
  import { Box } from '../Box';
8
10
  import { TonalColors } from './components';
9
- import { TextFieldColorPicker } from './TextFieldColorPicker';
10
11
  import { ThemeColors } from './ThemeColors';
11
12
  import { makeColorScheme } from './makeColorScheme';
12
- import { theme } from '../theme';
13
13
  import { Text } from '../Text';
14
- import { Button } from '../Button';
15
14
  import { useLocalStorageCachedState } from './useLocalStorageCachedState';
16
15
  import { useDeferredColor } from './useDeferredColor';
16
+ import { FontAutoComplete, parseMainFont } from './FontAutoComplete';
17
+ import { BorderSlider } from './BorderSlider';
18
+ import { ColorSchemePicker } from './ColorSchemePicker';
17
19
  import { jsx as _jsx } from "react/jsx-runtime";
18
20
  import { jsxs as _jsxs } from "react/jsx-runtime";
19
21
  import { Fragment as _Fragment } from "react/jsx-runtime";
@@ -41,19 +43,53 @@ export var ThemeBuilder = function ThemeBuilder(props) {
41
43
  };
42
44
 
43
45
  var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
44
- var _props$CodeHighlighti = props.CodeHighlightingComponent,
46
+ var theme = props.baseTheme,
47
+ _props$CodeHighlighti = props.CodeHighlightingComponent,
45
48
  CodeHighlightingComponent = _props$CodeHighlighti === void 0 ? DefaultHighlighter : _props$CodeHighlighti;
46
49
 
47
- var _useLocalStorageCache = useLocalStorageCachedState(toColor('hex', theme.colors.primary), 'primary'),
50
+ var _useLocalStorageCache = useLocalStorageCachedState(parseMainFont(theme.fonts.plain), 'fontFamily.plain'),
48
51
  _useLocalStorageCache2 = _slicedToArray(_useLocalStorageCache, 2),
49
- primaryColor = _useLocalStorageCache2[0],
50
- setPrimaryColor = _useLocalStorageCache2[1];
52
+ plainFont = _useLocalStorageCache2[0],
53
+ setPlainFont = _useLocalStorageCache2[1];
51
54
 
52
- var deferredPrimaryColor = useDeferredValue(primaryColor);
55
+ var _useLocalStorageCache3 = useLocalStorageCachedState(parseMainFont(theme.fonts.brand), 'fontFamily.brand'),
56
+ _useLocalStorageCache4 = _slicedToArray(_useLocalStorageCache3, 2),
57
+ brandFont = _useLocalStorageCache4[0],
58
+ setBrandFont = _useLocalStorageCache4[1];
59
+
60
+ var _useLocalStorageCache5 = useLocalStorageCachedState(parseInt(remToPx(theme.radii['extra-small'])), 'radii.extra-small'),
61
+ _useLocalStorageCache6 = _slicedToArray(_useLocalStorageCache5, 2),
62
+ radiusExtraSmall = _useLocalStorageCache6[0],
63
+ setRadiusExtraSmall = _useLocalStorageCache6[1];
64
+
65
+ var _useLocalStorageCache7 = useLocalStorageCachedState(parseInt(remToPx(theme.radii['small'])), 'radii.small'),
66
+ _useLocalStorageCache8 = _slicedToArray(_useLocalStorageCache7, 2),
67
+ radiusSmall = _useLocalStorageCache8[0],
68
+ setRadiusSmall = _useLocalStorageCache8[1];
69
+
70
+ var _useLocalStorageCache9 = useLocalStorageCachedState(parseInt(remToPx(theme.radii['medium'])), 'radii.medium'),
71
+ _useLocalStorageCache10 = _slicedToArray(_useLocalStorageCache9, 2),
72
+ radiusMedium = _useLocalStorageCache10[0],
73
+ setRadiusMedium = _useLocalStorageCache10[1];
74
+
75
+ var _useLocalStorageCache11 = useLocalStorageCachedState(parseInt(remToPx(theme.radii['large'])), 'radii.large'),
76
+ _useLocalStorageCache12 = _slicedToArray(_useLocalStorageCache11, 2),
77
+ radiusLarge = _useLocalStorageCache12[0],
78
+ setRadiusLarge = _useLocalStorageCache12[1];
79
+
80
+ var _useLocalStorageCache13 = useLocalStorageCachedState(parseInt(remToPx(theme.radii['extra-large'])), 'radii.extra-large'),
81
+ _useLocalStorageCache14 = _slicedToArray(_useLocalStorageCache13, 2),
82
+ radiusExtraLarge = _useLocalStorageCache14[0],
83
+ setRadiusExtraLarge = _useLocalStorageCache14[1];
84
+
85
+ var _useLocalStorageCache15 = useLocalStorageCachedState(toColor('hex', theme.colors.primary), 'primary'),
86
+ _useLocalStorageCache16 = _slicedToArray(_useLocalStorageCache15, 2),
87
+ primaryColor = _useLocalStorageCache16[0],
88
+ setPrimaryColor = _useLocalStorageCache16[1];
53
89
 
54
90
  var _useMemo = useMemo(function () {
55
- return CorePalette.of(argbFromHex(deferredPrimaryColor.hex));
56
- }, [deferredPrimaryColor.hex]),
91
+ return CorePalette.of(argbFromHex(primaryColor.hex));
92
+ }, [primaryColor.hex]),
57
93
  a1 = _useMemo.a1,
58
94
  a2 = _useMemo.a2,
59
95
  a3 = _useMemo.a3,
@@ -89,11 +125,29 @@ var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
89
125
  neutralVariant: n2
90
126
  });
91
127
  }, [a1, secondaryColorTonal, tertiaryColorTonal, error, neutralColorTonal, n2]);
128
+ var newTheme = useMemo(function () {
129
+ return {
130
+ colors: scheme,
131
+ fonts: {
132
+ plain: "\"".concat(plainFont, "\""),
133
+ brand: "\"".concat(brandFont, "\"")
134
+ },
135
+ radii: {
136
+ 'extra-small': rem(radiusExtraSmall),
137
+ 'extra-small_top': "".concat(rem(radiusExtraSmall), " ").concat(rem(radiusExtraSmall), " 0 0"),
138
+ small: rem(radiusSmall),
139
+ medium: rem(radiusMedium),
140
+ large: rem(radiusLarge),
141
+ large_end: "0 ".concat(rem(radiusLarge), " ").concat(rem(radiusLarge), " 0"),
142
+ large_top: "".concat(rem(radiusLarge), " ").concat(rem(radiusLarge), " 0 0"),
143
+ 'extra-large': rem(radiusExtraLarge),
144
+ 'extra-large_top': "".concat(rem(radiusExtraLarge), " ").concat(rem(radiusExtraLarge), " 0 0")
145
+ }
146
+ };
147
+ }, [scheme, plainFont, brandFont, radiusExtraSmall, radiusSmall, radiusMedium, radiusLarge, radiusExtraLarge]);
92
148
  var colorModes = useMemo(function () {
93
- return transformTheme({
94
- colors: scheme
95
- }, []).colorModes;
96
- }, [scheme]);
149
+ return transformTheme(newTheme, ['fonts', 'radii']).colorModes;
150
+ }, [newTheme]);
97
151
  useEffect(function () {
98
152
  localStorage.setItem(THEME_OVERRIDE_STORAGE_KEY, JSON.stringify({
99
153
  colorModes: colorModes
@@ -103,85 +157,160 @@ var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
103
157
  });
104
158
  }, [colorModes]);
105
159
  return /*#__PURE__*/_jsxs(_Fragment, {
106
- children: [/*#__PURE__*/_jsxs(Box, {
160
+ children: [/*#__PURE__*/_jsx(Text, {
161
+ variant: "headline-small",
162
+ children: "Shape"
163
+ }), /*#__PURE__*/_jsxs(Box, {
107
164
  display: "flex",
108
165
  my: 3,
109
166
  sx: {
110
167
  gap: 3,
111
168
  flexWrap: 'wrap'
112
169
  },
113
- children: [/*#__PURE__*/_jsxs(Box, {
114
- display: "flex",
115
- minWidth: "300px",
116
- flex: "1",
117
- children: [/*#__PURE__*/_jsx(TextFieldColorPicker, {
118
- label: "Primary color",
119
- value: primaryColor,
120
- onChange: function onChange(c) {
121
- return setPrimaryColor(c);
122
- }
123
- }), /*#__PURE__*/_jsx(Button, {
124
- variant: "text",
125
- disabled: primaryColor.hex === toColor('hex', theme.colors.primary).hex,
126
- onClick: function onClick() {
127
- return setPrimaryColor(toColor('hex', theme.colors.primary));
128
- },
129
- children: "Reset"
130
- })]
131
- }), /*#__PURE__*/_jsxs(Box, {
132
- display: "flex",
133
- minWidth: "300px",
134
- flex: "1",
135
- children: [/*#__PURE__*/_jsx(TextFieldColorPicker, {
136
- label: "Secondary color",
137
- value: secondaryColor || toColor('hex', hexFromArgb(secondaryColorTonal.tone(40))),
138
- onChange: function onChange(c) {
139
- return setSecondaryColor(c);
140
- }
141
- }), /*#__PURE__*/_jsx(Button, {
142
- variant: "text",
143
- onClick: function onClick() {
144
- return setSecondaryColor(null);
145
- },
146
- disabled: secondaryColor === null,
147
- children: "Reset"
148
- })]
149
- }), /*#__PURE__*/_jsxs(Box, {
150
- display: "flex",
151
- minWidth: "300px",
152
- flex: "1",
153
- children: [/*#__PURE__*/_jsx(TextFieldColorPicker, {
154
- label: "Tertiary color",
155
- value: tertiaryColor || toColor('hex', hexFromArgb(tertiaryColorTonal.tone(40))),
156
- onChange: function onChange(c) {
157
- return setTertiaryColor(c);
170
+ children: [/*#__PURE__*/_jsx(BorderSlider, {
171
+ label: "Extra small",
172
+ defaultValue: radiusExtraSmall,
173
+ onChange: function onChange(v) {
174
+ return setRadiusExtraSmall(v);
175
+ },
176
+ onReset: function onReset() {
177
+ setRadiusExtraSmall(parseInt(remToPx(theme.radii['extra-small'])));
178
+ },
179
+ resetDisabled: rem(radiusExtraSmall) === theme.radii['extra-small']
180
+ }), /*#__PURE__*/_jsx(BorderSlider, {
181
+ label: "Small",
182
+ defaultValue: radiusSmall,
183
+ onChange: function onChange(v) {
184
+ return setRadiusSmall(v);
185
+ },
186
+ onReset: function onReset() {
187
+ setRadiusSmall(parseInt(remToPx(theme.radii['small'])));
188
+ },
189
+ resetDisabled: rem(radiusSmall) === theme.radii.small
190
+ }), /*#__PURE__*/_jsx(BorderSlider, {
191
+ label: "Medium",
192
+ defaultValue: radiusMedium,
193
+ onChange: function onChange(v) {
194
+ return setRadiusMedium(v);
195
+ },
196
+ onReset: function onReset() {
197
+ setRadiusMedium(parseInt(remToPx(theme.radii['medium'])));
198
+ },
199
+ resetDisabled: rem(radiusMedium) === theme.radii['medium']
200
+ }), /*#__PURE__*/_jsx(BorderSlider, {
201
+ label: "Large",
202
+ defaultValue: radiusLarge,
203
+ onChange: function onChange(v) {
204
+ return setRadiusLarge(v);
205
+ },
206
+ onReset: function onReset() {
207
+ setRadiusLarge(parseInt(remToPx(theme.radii['large'])));
208
+ },
209
+ resetDisabled: rem(radiusLarge) === theme.radii['large']
210
+ }), /*#__PURE__*/_jsx(BorderSlider, {
211
+ label: "Extra large",
212
+ defaultValue: radiusExtraLarge,
213
+ onChange: function onChange(v) {
214
+ return setRadiusExtraLarge(v);
215
+ },
216
+ onReset: function onReset() {
217
+ setRadiusExtraLarge(parseInt(remToPx(theme.radii['extra-large'])));
218
+ },
219
+ resetDisabled: rem(radiusExtraLarge) === theme.radii['extra-large']
220
+ })]
221
+ }), /*#__PURE__*/_jsx(Text, {
222
+ variant: "headline-small",
223
+ children: "Typography"
224
+ }), /*#__PURE__*/_jsxs(Box, {
225
+ display: "flex",
226
+ my: 3,
227
+ sx: {
228
+ gap: 3,
229
+ flexWrap: 'wrap'
230
+ },
231
+ children: [/*#__PURE__*/_jsx(FontAutoComplete, {
232
+ label: "Brand",
233
+ initialValue: brandFont,
234
+ onSelect: function onSelect(f) {
235
+ if (f) {
236
+ setBrandFont(f);
237
+ loadGoogleFont([{
238
+ family: f,
239
+ weights: [300, 400, 500, 600, 700]
240
+ }]);
158
241
  }
159
- }), /*#__PURE__*/_jsx(Button, {
160
- variant: "text",
161
- onClick: function onClick() {
162
- return setTertiaryColor(null);
163
- },
164
- disabled: tertiaryColor === null,
165
- children: "Reset"
166
- })]
167
- }), /*#__PURE__*/_jsxs(Box, {
168
- display: "flex",
169
- minWidth: "300px",
170
- flex: "1",
171
- children: [/*#__PURE__*/_jsx(TextFieldColorPicker, {
172
- label: "Neutral color",
173
- value: neutralColor || toColor('hex', hexFromArgb(neutralColorTonal.tone(40))),
174
- onChange: function onChange(c) {
175
- return setNeutralColor(c);
242
+ },
243
+ onReset: function onReset() {
244
+ setBrandFont(parseMainFont(theme.fonts.brand));
245
+ },
246
+ resetDisabled: brandFont === parseMainFont(theme.fonts.brand)
247
+ }), /*#__PURE__*/_jsx(FontAutoComplete, {
248
+ label: "Plain",
249
+ initialValue: plainFont,
250
+ onSelect: function onSelect(f) {
251
+ if (f) {
252
+ setPlainFont(f);
253
+ loadGoogleFont([{
254
+ family: f,
255
+ weights: [300, 400, 500, 600, 700]
256
+ }]);
176
257
  }
177
- }), /*#__PURE__*/_jsx(Button, {
178
- variant: "text",
179
- onClick: function onClick() {
180
- return setNeutralColor(null);
181
- },
182
- disabled: neutralColor === null,
183
- children: "Reset"
184
- })]
258
+ },
259
+ onReset: function onReset() {
260
+ setPlainFont(parseMainFont(theme.fonts.plain));
261
+ },
262
+ resetDisabled: plainFont === parseMainFont(theme.fonts.plain)
263
+ })]
264
+ }), /*#__PURE__*/_jsx(Text, {
265
+ variant: "headline-small",
266
+ children: "Color schemes"
267
+ }), /*#__PURE__*/_jsxs(Box, {
268
+ display: "flex",
269
+ my: 3,
270
+ sx: {
271
+ gap: 3,
272
+ flexWrap: 'wrap'
273
+ },
274
+ children: [/*#__PURE__*/_jsx(ColorSchemePicker, {
275
+ label: "Primary color",
276
+ initialValue: primaryColor,
277
+ onChange: function onChange(c) {
278
+ return setPrimaryColor(c);
279
+ },
280
+ onReset: function onReset() {
281
+ return setPrimaryColor(toColor('hex', theme.colors.primary));
282
+ },
283
+ resetDisabled: primaryColor.hex === toColor('hex', theme.colors.primary).hex
284
+ }), /*#__PURE__*/_jsx(ColorSchemePicker, {
285
+ label: "Secondary color",
286
+ initialValue: secondaryColor || toColor('hex', hexFromArgb(secondaryColorTonal.tone(40))),
287
+ onChange: function onChange(c) {
288
+ return setSecondaryColor(c);
289
+ },
290
+ onReset: function onReset() {
291
+ return setSecondaryColor(null);
292
+ },
293
+ resetDisabled: secondaryColor === null
294
+ }), /*#__PURE__*/_jsx(ColorSchemePicker, {
295
+ label: "Tertiary color",
296
+ initialValue: tertiaryColor || toColor('hex', hexFromArgb(tertiaryColorTonal.tone(40))),
297
+ onChange: function onChange(c) {
298
+ return setTertiaryColor(c);
299
+ },
300
+ onReset: function onReset() {
301
+ return setTertiaryColor(null);
302
+ },
303
+ resetDisabled: tertiaryColor === null
304
+ }), /*#__PURE__*/_jsx(ColorSchemePicker, {
305
+ label: "Neutral color",
306
+ initialValue: neutralColor || toColor('hex', hexFromArgb(neutralColorTonal.tone(40))),
307
+ onChange: function onChange(c) {
308
+ return setNeutralColor(c);
309
+ },
310
+ onReset: function onReset() {
311
+ return setNeutralColor(null);
312
+ },
313
+ resetDisabled: neutralColor === null
185
314
  })]
186
315
  }), /*#__PURE__*/_jsxs(Box, {
187
316
  width: "100%",
@@ -197,6 +326,7 @@ var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
197
326
  variant: "title-medium",
198
327
  as: "h1",
199
328
  pb: '0.3em',
329
+ pt: 3,
200
330
  children: "Light theme"
201
331
  }), /*#__PURE__*/_jsx(ThemeColors, {
202
332
  scheme: scheme
@@ -207,6 +337,7 @@ var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
207
337
  variant: "title-medium",
208
338
  as: "h1",
209
339
  pb: '0.3em',
340
+ pt: 3,
210
341
  children: "Dark theme"
211
342
  }), /*#__PURE__*/_jsx(ThemeColors, {
212
343
  scheme: scheme.modes.dark
@@ -219,7 +350,13 @@ var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
219
350
  gap: 3
220
351
  },
221
352
  flexDirection: "column",
222
- children: [/*#__PURE__*/_jsx(TonalColors, {
353
+ children: [/*#__PURE__*/_jsx(Text, {
354
+ variant: "title-medium",
355
+ as: "h1",
356
+ pb: '0.3em',
357
+ pt: 3,
358
+ children: "Palettes"
359
+ }), /*#__PURE__*/_jsx(TonalColors, {
223
360
  palette: a1
224
361
  }), /*#__PURE__*/_jsx(TonalColors, {
225
362
  palette: secondaryColorTonal
@@ -232,12 +369,13 @@ var ThemeBuilderImpl = function ThemeBuilderImpl(props) {
232
369
  }), /*#__PURE__*/_jsx(TonalColors, {
233
370
  palette: n2
234
371
  })]
235
- }), /*#__PURE__*/_jsx(CodeHighlightingComponent, {
236
- className: "language-json",
237
- children: JSON.stringify({
238
- colors: scheme
239
- }, null, 2)
240
372
  })]
373
+ }), /*#__PURE__*/_jsx(Text, {
374
+ variant: "headline-small",
375
+ children: "Theme"
376
+ }), /*#__PURE__*/_jsx(CodeHighlightingComponent, {
377
+ className: "language-json",
378
+ children: JSON.stringify(newTheme, null, 2)
241
379
  })]
242
380
  });
243
381
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeBuilder.js","names":["useState","useMemo","useDeferredValue","useEffect","CorePalette","argbFromHex","hexFromArgb","toColor","THEME_OVERRIDE_STORAGE_KEY","injectThemeOverride","transformTheme","Box","TonalColors","TextFieldColorPicker","ThemeColors","makeColorScheme","theme","Text","Button","useLocalStorageCachedState","useDeferredColor","DefaultHighlighter","props","children","ThemeBuilder","mounted","setMounted","ThemeBuilderImpl","CodeHighlightingComponent","colors","primary","primaryColor","setPrimaryColor","deferredPrimaryColor","of","hex","a1","a2","a3","error","n1","n2","secondaryColor","secondaryColorTonal","setSecondaryColor","tertiaryColor","tertiaryColorTonal","setTertiaryColor","neutralColor","neutralColorTonal","setNeutralColor","scheme","secondary","tertiary","neutral","neutralVariant","colorModes","localStorage","setItem","JSON","stringify","gap","flexWrap","c","tone","modes","dark"],"sources":["../../../src/ThemeExplorer/ThemeBuilder.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport { useState, useMemo, useDeferredValue, useEffect } from 'react';\nimport {\n CorePalette,\n argbFromHex,\n hexFromArgb,\n} from '@material/material-color-utilities';\nimport type { Color } from '@basic-ui/color-picker';\nimport { toColor } from '@basic-ui/color-picker';\nimport {\n THEME_OVERRIDE_STORAGE_KEY,\n injectThemeOverride,\n transformTheme,\n} from '@basic-ui/dynamic-theme';\n\nimport { Box } from '../Box';\nimport { TonalColors } from './components';\nimport { TextFieldColorPicker } from './TextFieldColorPicker';\nimport { ThemeColors } from './ThemeColors';\nimport { makeColorScheme } from './makeColorScheme';\nimport { theme } from '../theme';\nimport { Text } from '../Text';\nimport { Button } from '../Button';\nimport { useLocalStorageCachedState } from './useLocalStorageCachedState';\nimport { useDeferredColor } from './useDeferredColor';\n\nexport interface ThemeBuilderProps {\n CodeHighlightingComponent?: ComponentType<{\n children: string;\n className: string;\n showButtons?: boolean;\n }>;\n}\n\nfunction DefaultHighlighter(props: { children: string }) {\n return (\n <Box as=\"pre\" fontFamily=\"monospace\" fontSize=\"12px\">\n {props.children}\n </Box>\n );\n}\n\nexport const ThemeBuilder = (props: ThemeBuilderProps) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n if (!mounted) return null;\n return <ThemeBuilderImpl {...props} />;\n};\n\nconst ThemeBuilderImpl = (props: ThemeBuilderProps) => {\n const { CodeHighlightingComponent = DefaultHighlighter } = props;\n const [primaryColor, setPrimaryColor] = useLocalStorageCachedState<Color>(\n toColor('hex', theme.colors.primary),\n 'primary'\n );\n const deferredPrimaryColor = useDeferredValue(primaryColor);\n\n const { a1, a2, a3, error, n1, n2 } = useMemo(\n () => CorePalette.of(argbFromHex(deferredPrimaryColor.hex)),\n [deferredPrimaryColor.hex]\n );\n\n const [secondaryColor, secondaryColorTonal, setSecondaryColor] =\n useDeferredColor('secondary', a2);\n const [tertiaryColor, tertiaryColorTonal, setTertiaryColor] =\n useDeferredColor('tertiary', a3);\n const [neutralColor, neutralColorTonal, setNeutralColor] = useDeferredColor(\n 'neutral',\n n1\n );\n\n const scheme = useMemo(\n () =>\n makeColorScheme({\n primary: a1,\n secondary: secondaryColorTonal,\n tertiary: tertiaryColorTonal,\n error: error,\n neutral: neutralColorTonal,\n neutralVariant: n2,\n }),\n [a1, secondaryColorTonal, tertiaryColorTonal, error, neutralColorTonal, n2]\n );\n\n const colorModes = useMemo(\n () => transformTheme({ colors: scheme }, []).colorModes,\n [scheme]\n );\n useEffect(() => {\n localStorage.setItem(\n THEME_OVERRIDE_STORAGE_KEY,\n JSON.stringify({ colorModes })\n );\n injectThemeOverride({ colorModes });\n }, [colorModes]);\n\n return (\n <>\n <Box display=\"flex\" my={3} sx={{ gap: 3, flexWrap: 'wrap' }}>\n <Box display=\"flex\" minWidth=\"300px\" flex=\"1\">\n <TextFieldColorPicker\n label=\"Primary color\"\n value={primaryColor}\n onChange={(c) => setPrimaryColor(c)}\n />\n <Button\n variant=\"text\"\n disabled={\n primaryColor.hex === toColor('hex', theme.colors.primary).hex\n }\n onClick={() =>\n setPrimaryColor(toColor('hex', theme.colors.primary))\n }\n >\n Reset\n </Button>\n </Box>\n <Box display=\"flex\" minWidth=\"300px\" flex=\"1\">\n <TextFieldColorPicker\n label=\"Secondary color\"\n value={\n secondaryColor ||\n toColor('hex', hexFromArgb(secondaryColorTonal.tone(40)))\n }\n onChange={(c) => setSecondaryColor(c)}\n />\n <Button\n variant=\"text\"\n onClick={() => setSecondaryColor(null)}\n disabled={secondaryColor === null}\n >\n Reset\n </Button>\n </Box>\n <Box display=\"flex\" minWidth=\"300px\" flex=\"1\">\n <TextFieldColorPicker\n label=\"Tertiary color\"\n value={\n tertiaryColor ||\n toColor('hex', hexFromArgb(tertiaryColorTonal.tone(40)))\n }\n onChange={(c) => setTertiaryColor(c)}\n />\n <Button\n variant=\"text\"\n onClick={() => setTertiaryColor(null)}\n disabled={tertiaryColor === null}\n >\n Reset\n </Button>\n </Box>\n <Box display=\"flex\" minWidth=\"300px\" flex=\"1\">\n <TextFieldColorPicker\n label=\"Neutral color\"\n value={\n neutralColor ||\n toColor('hex', hexFromArgb(neutralColorTonal.tone(40)))\n }\n onChange={(c) => setNeutralColor(c)}\n />\n <Button\n variant=\"text\"\n onClick={() => setNeutralColor(null)}\n disabled={neutralColor === null}\n >\n Reset\n </Button>\n </Box>\n </Box>\n <Box width=\"100%\">\n <Box display=\"flex\" flexDirection=\"column\" sx={{ gap: 4 }}>\n <Box flex=\"1\">\n <Text variant=\"title-medium\" as=\"h1\" pb={'0.3em'}>\n Light theme\n </Text>\n <ThemeColors scheme={scheme} />\n </Box>\n <Box flex=\"1\">\n <Text variant=\"title-medium\" as=\"h1\" pb={'0.3em'}>\n Dark theme\n </Text>\n <ThemeColors scheme={scheme.modes.dark} />\n </Box>\n </Box>\n <Box my={4} display=\"flex\" sx={{ gap: 3 }} flexDirection=\"column\">\n <TonalColors palette={a1} />\n <TonalColors palette={secondaryColorTonal} />\n <TonalColors palette={tertiaryColorTonal} />\n <TonalColors palette={error} />\n <TonalColors palette={neutralColorTonal} />\n <TonalColors palette={n2} />\n </Box>\n <CodeHighlightingComponent className={`language-json`}>\n {JSON.stringify({ colors: scheme }, null, 2)}\n </CodeHighlightingComponent>\n </Box>\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ThemeBuilder.js","names":["useState","useMemo","useEffect","CorePalette","argbFromHex","hexFromArgb","toColor","THEME_OVERRIDE_STORAGE_KEY","injectThemeOverride","transformTheme","loadGoogleFont","rem","remToPx","Box","TonalColors","ThemeColors","makeColorScheme","Text","useLocalStorageCachedState","useDeferredColor","FontAutoComplete","parseMainFont","BorderSlider","ColorSchemePicker","DefaultHighlighter","props","children","ThemeBuilder","mounted","setMounted","ThemeBuilderImpl","theme","baseTheme","CodeHighlightingComponent","fonts","plain","plainFont","setPlainFont","brand","brandFont","setBrandFont","parseInt","radii","radiusExtraSmall","setRadiusExtraSmall","radiusSmall","setRadiusSmall","radiusMedium","setRadiusMedium","radiusLarge","setRadiusLarge","radiusExtraLarge","setRadiusExtraLarge","colors","primary","primaryColor","setPrimaryColor","of","hex","a1","a2","a3","error","n1","n2","secondaryColor","secondaryColorTonal","setSecondaryColor","tertiaryColor","tertiaryColorTonal","setTertiaryColor","neutralColor","neutralColorTonal","setNeutralColor","scheme","secondary","tertiary","neutral","neutralVariant","newTheme","small","medium","large","large_end","large_top","colorModes","localStorage","setItem","JSON","stringify","gap","flexWrap","v","f","family","weights","c","tone","modes","dark"],"sources":["../../../src/ThemeExplorer/ThemeBuilder.tsx"],"sourcesContent":["import type { ComponentType } from 'react';\nimport { useState, useMemo, useEffect } from 'react';\nimport {\n CorePalette,\n argbFromHex,\n hexFromArgb,\n} from '@material/material-color-utilities';\nimport type { Color } from '@basic-ui/color-picker';\nimport { toColor } from '@basic-ui/color-picker';\nimport {\n THEME_OVERRIDE_STORAGE_KEY,\n injectThemeOverride,\n transformTheme,\n loadGoogleFont,\n} from '@basic-ui/dynamic-theme';\nimport { rem } from 'polished';\nimport remToPx from 'polished/lib/helpers/remToPx';\n\nimport { Box } from '../Box';\nimport { TonalColors } from './components';\nimport { ThemeColors } from './ThemeColors';\nimport { makeColorScheme } from './makeColorScheme';\nimport { Text } from '../Text';\nimport { useLocalStorageCachedState } from './useLocalStorageCachedState';\nimport { useDeferredColor } from './useDeferredColor';\nimport { FontAutoComplete, parseMainFont } from './FontAutoComplete';\nimport type { Theme } from '../theme/theme';\nimport { BorderSlider } from './BorderSlider';\nimport { ColorSchemePicker } from './ColorSchemePicker';\n\nexport interface ThemeBuilderProps {\n CodeHighlightingComponent?: ComponentType<{\n children: string;\n className: string;\n showButtons?: boolean;\n }>;\n baseTheme: Theme;\n}\n\nfunction DefaultHighlighter(props: { children: string }) {\n return (\n <Box as=\"pre\" fontFamily=\"monospace\" fontSize=\"12px\">\n {props.children}\n </Box>\n );\n}\n\nexport const ThemeBuilder = (props: ThemeBuilderProps) => {\n const [mounted, setMounted] = useState(false);\n useEffect(() => {\n setMounted(true);\n }, []);\n if (!mounted) return null;\n return <ThemeBuilderImpl {...props} />;\n};\n\nconst ThemeBuilderImpl = (props: ThemeBuilderProps) => {\n const { baseTheme: theme, CodeHighlightingComponent = DefaultHighlighter } =\n props;\n const [plainFont, setPlainFont] = useLocalStorageCachedState(\n parseMainFont(theme.fonts.plain),\n 'fontFamily.plain'\n );\n const [brandFont, setBrandFont] = useLocalStorageCachedState(\n parseMainFont(theme.fonts.brand),\n 'fontFamily.brand'\n );\n\n const [radiusExtraSmall, setRadiusExtraSmall] =\n useLocalStorageCachedState<number>(\n parseInt(remToPx(theme.radii['extra-small'])),\n 'radii.extra-small'\n );\n\n const [radiusSmall, setRadiusSmall] = useLocalStorageCachedState<number>(\n parseInt(remToPx(theme.radii['small'])),\n 'radii.small'\n );\n\n const [radiusMedium, setRadiusMedium] = useLocalStorageCachedState<number>(\n parseInt(remToPx(theme.radii['medium'])),\n 'radii.medium'\n );\n\n const [radiusLarge, setRadiusLarge] = useLocalStorageCachedState<number>(\n parseInt(remToPx(theme.radii['large'])),\n 'radii.large'\n );\n\n const [radiusExtraLarge, setRadiusExtraLarge] =\n useLocalStorageCachedState<number>(\n parseInt(remToPx(theme.radii['extra-large'])),\n 'radii.extra-large'\n );\n\n const [primaryColor, setPrimaryColor] = useLocalStorageCachedState<Color>(\n toColor('hex', theme.colors.primary),\n 'primary'\n );\n\n const { a1, a2, a3, error, n1, n2 } = useMemo(\n () => CorePalette.of(argbFromHex(primaryColor.hex)),\n [primaryColor.hex]\n );\n\n const [secondaryColor, secondaryColorTonal, setSecondaryColor] =\n useDeferredColor('secondary', a2);\n const [tertiaryColor, tertiaryColorTonal, setTertiaryColor] =\n useDeferredColor('tertiary', a3);\n const [neutralColor, neutralColorTonal, setNeutralColor] = useDeferredColor(\n 'neutral',\n n1\n );\n\n const scheme = useMemo(\n () =>\n makeColorScheme({\n primary: a1,\n secondary: secondaryColorTonal,\n tertiary: tertiaryColorTonal,\n error: error,\n neutral: neutralColorTonal,\n neutralVariant: n2,\n }),\n [a1, secondaryColorTonal, tertiaryColorTonal, error, neutralColorTonal, n2]\n );\n\n const newTheme = useMemo(\n () => ({\n colors: scheme,\n fonts: { plain: `\"${plainFont}\"`, brand: `\"${brandFont}\"` },\n radii: {\n 'extra-small': rem(radiusExtraSmall),\n 'extra-small_top': `${rem(radiusExtraSmall)} ${rem(\n radiusExtraSmall\n )} 0 0`,\n small: rem(radiusSmall),\n medium: rem(radiusMedium),\n large: rem(radiusLarge),\n large_end: `0 ${rem(radiusLarge)} ${rem(radiusLarge)} 0`,\n large_top: `${rem(radiusLarge)} ${rem(radiusLarge)} 0 0`,\n 'extra-large': rem(radiusExtraLarge),\n 'extra-large_top': `${rem(radiusExtraLarge)} ${rem(\n radiusExtraLarge\n )} 0 0`,\n },\n }),\n [\n scheme,\n plainFont,\n brandFont,\n radiusExtraSmall,\n radiusSmall,\n radiusMedium,\n radiusLarge,\n radiusExtraLarge,\n ]\n );\n\n const colorModes = useMemo(\n () => transformTheme(newTheme, ['fonts', 'radii']).colorModes,\n [newTheme]\n );\n\n useEffect(() => {\n localStorage.setItem(\n THEME_OVERRIDE_STORAGE_KEY,\n JSON.stringify({ colorModes })\n );\n injectThemeOverride({ colorModes });\n }, [colorModes]);\n\n return (\n <>\n {/* Shape */}\n <Text variant=\"headline-small\">Shape</Text>\n <Box display=\"flex\" my={3} sx={{ gap: 3, flexWrap: 'wrap' }}>\n <BorderSlider\n label=\"Extra small\"\n defaultValue={radiusExtraSmall}\n onChange={(v) => setRadiusExtraSmall(v)}\n onReset={() => {\n setRadiusExtraSmall(parseInt(remToPx(theme.radii['extra-small'])));\n }}\n resetDisabled={rem(radiusExtraSmall) === theme.radii['extra-small']}\n />\n <BorderSlider\n label=\"Small\"\n defaultValue={radiusSmall}\n onChange={(v) => setRadiusSmall(v)}\n onReset={() => {\n setRadiusSmall(parseInt(remToPx(theme.radii['small'])));\n }}\n resetDisabled={rem(radiusSmall) === theme.radii.small}\n />\n <BorderSlider\n label=\"Medium\"\n defaultValue={radiusMedium}\n onChange={(v) => setRadiusMedium(v)}\n onReset={() => {\n setRadiusMedium(parseInt(remToPx(theme.radii['medium'])));\n }}\n resetDisabled={rem(radiusMedium) === theme.radii['medium']}\n />\n <BorderSlider\n label=\"Large\"\n defaultValue={radiusLarge}\n onChange={(v) => setRadiusLarge(v)}\n onReset={() => {\n setRadiusLarge(parseInt(remToPx(theme.radii['large'])));\n }}\n resetDisabled={rem(radiusLarge) === theme.radii['large']}\n />\n <BorderSlider\n label=\"Extra large\"\n defaultValue={radiusExtraLarge}\n onChange={(v) => setRadiusExtraLarge(v)}\n onReset={() => {\n setRadiusExtraLarge(parseInt(remToPx(theme.radii['extra-large'])));\n }}\n resetDisabled={rem(radiusExtraLarge) === theme.radii['extra-large']}\n />\n </Box>\n {/* Font pickers */}\n <Text variant=\"headline-small\">Typography</Text>\n <Box display=\"flex\" my={3} sx={{ gap: 3, flexWrap: 'wrap' }}>\n <FontAutoComplete\n label=\"Brand\"\n initialValue={brandFont}\n onSelect={(f) => {\n if (f) {\n setBrandFont(f);\n loadGoogleFont([\n { family: f, weights: [300, 400, 500, 600, 700] },\n ]);\n }\n }}\n onReset={() => {\n setBrandFont(parseMainFont(theme.fonts.brand));\n }}\n resetDisabled={brandFont === parseMainFont(theme.fonts.brand)}\n />\n <FontAutoComplete\n label=\"Plain\"\n initialValue={plainFont}\n onSelect={(f) => {\n if (f) {\n setPlainFont(f);\n loadGoogleFont([\n { family: f, weights: [300, 400, 500, 600, 700] },\n ]);\n }\n }}\n onReset={() => {\n setPlainFont(parseMainFont(theme.fonts.plain));\n }}\n resetDisabled={plainFont === parseMainFont(theme.fonts.plain)}\n />\n </Box>\n {/* Color pickers */}\n <Text variant=\"headline-small\">Color schemes</Text>\n <Box display=\"flex\" my={3} sx={{ gap: 3, flexWrap: 'wrap' }}>\n <ColorSchemePicker\n label=\"Primary color\"\n initialValue={primaryColor}\n onChange={(c) => setPrimaryColor(c)}\n onReset={() => setPrimaryColor(toColor('hex', theme.colors.primary))}\n resetDisabled={\n primaryColor.hex === toColor('hex', theme.colors.primary).hex\n }\n />\n <ColorSchemePicker\n label=\"Secondary color\"\n initialValue={\n secondaryColor ||\n toColor('hex', hexFromArgb(secondaryColorTonal.tone(40)))\n }\n onChange={(c) => setSecondaryColor(c)}\n onReset={() => setSecondaryColor(null)}\n resetDisabled={secondaryColor === null}\n />\n <ColorSchemePicker\n label=\"Tertiary color\"\n initialValue={\n tertiaryColor ||\n toColor('hex', hexFromArgb(tertiaryColorTonal.tone(40)))\n }\n onChange={(c) => setTertiaryColor(c)}\n onReset={() => setTertiaryColor(null)}\n resetDisabled={tertiaryColor === null}\n />\n <ColorSchemePicker\n label=\"Neutral color\"\n initialValue={\n neutralColor ||\n toColor('hex', hexFromArgb(neutralColorTonal.tone(40)))\n }\n onChange={(c) => setNeutralColor(c)}\n onReset={() => setNeutralColor(null)}\n resetDisabled={neutralColor === null}\n />\n </Box>\n <Box width=\"100%\">\n <Box display=\"flex\" flexDirection=\"column\" sx={{ gap: 4 }}>\n <Box flex=\"1\">\n <Text variant=\"title-medium\" as=\"h1\" pb={'0.3em'} pt={3}>\n Light theme\n </Text>\n <ThemeColors scheme={scheme} />\n </Box>\n <Box flex=\"1\">\n <Text variant=\"title-medium\" as=\"h1\" pb={'0.3em'} pt={3}>\n Dark theme\n </Text>\n <ThemeColors scheme={scheme.modes.dark} />\n </Box>\n </Box>\n <Box my={4} display=\"flex\" sx={{ gap: 3 }} flexDirection=\"column\">\n <Text variant=\"title-medium\" as=\"h1\" pb={'0.3em'} pt={3}>\n Palettes\n </Text>\n <TonalColors palette={a1} />\n <TonalColors palette={secondaryColorTonal} />\n <TonalColors palette={tertiaryColorTonal} />\n <TonalColors palette={error} />\n <TonalColors palette={neutralColorTonal} />\n <TonalColors palette={n2} />\n </Box>\n </Box>\n {/* Color pickers */}\n <Text variant=\"headline-small\">Theme</Text>\n <CodeHighlightingComponent className={`language-json`}>\n {JSON.stringify(newTheme, null, 2)}\n </CodeHighlightingComponent>\n </>\n );\n};\n"],"mappings":"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"}
@@ -74,13 +74,13 @@ export var ColorRow = /*#__PURE__*/memo(function (props) {
74
74
  display: "flex",
75
75
  sx: {
76
76
  ':first-of-type': {
77
- borderTopLeftRadius: 24,
78
- borderTopRightRadius: 24,
77
+ borderTopLeftRadius: 'extra-large',
78
+ borderTopRightRadius: 'extra-large',
79
79
  overflow: 'hidden'
80
80
  },
81
81
  ':last-of-type': {
82
- borderBottomLeftRadius: 24,
83
- borderBottomRightRadius: 24,
82
+ borderBottomLeftRadius: 'extra-large',
83
+ borderBottomRightRadius: 'extra-large',
84
84
  overflow: 'hidden'
85
85
  },
86
86
  height: height
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","names":["memo","useState","rgb","parseToHsl","parseToRgb","hexFromArgb","TonalPalette","Box","Tooltip","Text","ColorItem","props","token","style","width","height","computedColor","setComputedColor","hslColor","hue","saturation","lightness","rgbColor","red","green","blue","Math","round","ref","window","getComputedStyle","backgroundColor","px","py","fontSize","lineHeight","textOverflow","overflow","ColorRow","colors","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","map","idx","bg","color","length","TonalColorItem","level","TonalColorsFromToken","position","left","top","colorInt","parseInt","slice","tonal","fromInt","TonalColors","luminanceLevels","palette","tone","makeColorArrayForToken"],"sources":["../../../src/ThemeExplorer/components.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { memo, useState } from 'react';\nimport { rgb, parseToHsl, parseToRgb } from 'polished';\nimport { hexFromArgb, TonalPalette } from '@material/material-color-utilities';\n\nimport { Box, Tooltip, Text } from '../';\n\nexport const ColorItem = memo(\n (props: {\n token: string;\n style: CSSProperties;\n height?: number;\n width: string;\n }) => {\n const { token, style, width, height = '100%' } = 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 <Text\n as=\"div\"\n variant=\"body-small\"\n style={style}\n ref={(ref: HTMLDivElement | null) => {\n if (ref) {\n setComputedColor(window.getComputedStyle(ref).backgroundColor);\n }\n }}\n sx={{\n width,\n height,\n px: '10px',\n py: '10px',\n fontSize: '11px',\n lineHeight: '11px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }}\n >\n {token}\n </Text>\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 height,\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 />\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 <Text\n key={level}\n as=\"div\"\n variant=\"body-small\"\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 </Text>\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, 10, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 95, 98, 99, 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"],"mappings":"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"}
1
+ {"version":3,"file":"components.js","names":["memo","useState","rgb","parseToHsl","parseToRgb","hexFromArgb","TonalPalette","Box","Tooltip","Text","ColorItem","props","token","style","width","height","computedColor","setComputedColor","hslColor","hue","saturation","lightness","rgbColor","red","green","blue","Math","round","ref","window","getComputedStyle","backgroundColor","px","py","fontSize","lineHeight","textOverflow","overflow","ColorRow","colors","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius","map","idx","bg","color","length","TonalColorItem","level","TonalColorsFromToken","position","left","top","colorInt","parseInt","slice","tonal","fromInt","TonalColors","luminanceLevels","palette","tone","makeColorArrayForToken"],"sources":["../../../src/ThemeExplorer/components.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { memo, useState } from 'react';\nimport { rgb, parseToHsl, parseToRgb } from 'polished';\nimport { hexFromArgb, TonalPalette } from '@material/material-color-utilities';\n\nimport { Box, Tooltip, Text } from '../';\n\nexport const ColorItem = memo(\n (props: {\n token: string;\n style: CSSProperties;\n height?: number;\n width: string;\n }) => {\n const { token, style, width, height = '100%' } = 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 <Text\n as=\"div\"\n variant=\"body-small\"\n style={style}\n ref={(ref: HTMLDivElement | null) => {\n if (ref) {\n setComputedColor(window.getComputedStyle(ref).backgroundColor);\n }\n }}\n sx={{\n width,\n height,\n px: '10px',\n py: '10px',\n fontSize: '11px',\n lineHeight: '11px',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }}\n >\n {token}\n </Text>\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: 'extra-large',\n borderTopRightRadius: 'extra-large',\n overflow: 'hidden',\n },\n ':last-of-type': {\n borderBottomLeftRadius: 'extra-large',\n borderBottomRightRadius: 'extra-large',\n overflow: 'hidden',\n },\n height,\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 />\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 <Text\n key={level}\n as=\"div\"\n variant=\"body-small\"\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 </Text>\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, 10, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 95, 98, 99, 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"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const googleFonts: string[];