@scrabble-solver/scrabble-solver 2.15.25 → 2.16.0-alpha.1

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 (83) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +5 -5
  3. package/.next/cache/.previewinfo +1 -1
  4. package/.next/cache/.rscinfo +1 -1
  5. package/.next/cache/.tsbuildinfo +1 -1
  6. package/.next/cache/webpack/client-production/0.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack +0 -0
  8. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  9. package/.next/cache/webpack/edge-server-production/index.pack +0 -0
  10. package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
  11. package/.next/cache/webpack/server-production/0.pack +0 -0
  12. package/.next/cache/webpack/server-production/index.pack +0 -0
  13. package/.next/cache/webpack/server-production/index.pack.old +0 -0
  14. package/.next/prerender-manifest.json +4 -4
  15. package/.next/required-server-files.js +2 -1
  16. package/.next/required-server-files.json +2 -1
  17. package/.next/routes-manifest.json +1 -1
  18. package/.next/server/chunks/712.js +1 -1
  19. package/.next/server/middleware-build-manifest.js +1 -1
  20. package/.next/server/pages/404.html +1 -1
  21. package/.next/server/pages/500.html +1 -1
  22. package/.next/server/pages/_app.js.nft.json +1 -1
  23. package/.next/server/pages/_error.js.nft.json +1 -1
  24. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  25. package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  26. package/.next/server/pages/api/solve.js +1 -1
  27. package/.next/server/pages/api/solve.js.nft.json +1 -1
  28. package/.next/server/pages/api/verify.js.nft.json +1 -1
  29. package/.next/server/pages/api/visit.js.nft.json +1 -1
  30. package/.next/server/pages/index.html +1 -1
  31. package/.next/server/pages/index.js.nft.json +1 -1
  32. package/.next/server/pages/index.json +1 -1
  33. package/.next/server/pages/not-found.html +1 -1
  34. package/.next/server/webpack-api-runtime.js +1 -1
  35. package/.next/static/{FDUqldlsD7FXe6iWhIJmu → YS42EFHDGPCCe3JyeXaNi}/_buildManifest.js +1 -1
  36. package/.next/static/chunks/pages/{_app-c0932b8ca24945cb.js → _app-9c9aaea7b6881765.js} +4 -4
  37. package/.next/static/chunks/pages/{index-08b3b0a754095919.js → index-e9ea63e97865edcf.js} +1 -1
  38. package/.next/static/css/{500cdc9a24075d91.css → 78726ae7cf7a5497.css} +1 -1
  39. package/.next/trace +21 -21
  40. package/.next/trace-build +1 -1
  41. package/README.md +3 -3
  42. package/next.config.js +1 -0
  43. package/package.json +10 -9
  44. package/src/@types/scss.d.ts +5 -0
  45. package/src/components/Board/Board.module.scss +2 -2
  46. package/src/components/Board/components/Actions/Actions.module.scss +1 -1
  47. package/src/components/Board/components/Cell/Cell.module.scss +26 -6
  48. package/src/components/Board/components/InputPrompt/InputPrompt.module.scss +1 -1
  49. package/src/components/Button/Button.module.scss +1 -1
  50. package/src/components/Dictionary/Dictionary.module.scss +1 -1
  51. package/src/components/DictionaryInput/DictionaryInput.module.scss +1 -1
  52. package/src/components/IconButton/IconButton.module.scss +1 -1
  53. package/src/components/Loading/Loading.module.scss +1 -1
  54. package/src/components/Modal/Modal.module.scss +1 -1
  55. package/src/components/NotFound/NotFound.module.scss +1 -1
  56. package/src/components/PlainTiles/PlainTiles.module.scss +1 -1
  57. package/src/components/Rack/Rack.module.scss +11 -6
  58. package/src/components/Rack/components/InputPrompt/InputPrompt.module.scss +1 -1
  59. package/src/components/Rack/components/RackTile/RackTile.module.scss +1 -1
  60. package/src/components/Radio/Radio.module.scss +1 -1
  61. package/src/components/Results/Results.module.scss +1 -1
  62. package/src/components/ResultsInput/ResultsInput.module.scss +1 -1
  63. package/src/components/Solver/Solver.module.scss +1 -1
  64. package/src/components/Solver/components/InsertButton/InsertButton.module.scss +1 -1
  65. package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.module.scss +1 -1
  66. package/src/components/Spinner/Spinner.module.scss +1 -1
  67. package/src/components/Tile/Tile.module.scss +1 -1
  68. package/src/hooks/useLocalStorage.ts +4 -52
  69. package/src/lib/isMac.ts +1 -1
  70. package/src/modals/MenuModal/MenuModal.module.scss +1 -1
  71. package/src/modals/RemainingTilesModal/components/Character/Character.module.scss +1 -1
  72. package/src/modals/ResultsModal/ResultsModal.module.scss +1 -1
  73. package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +1 -1
  74. package/src/parameters/index.ts +45 -44
  75. package/src/state/localStorage.ts +42 -52
  76. package/src/state/settings/initialState.ts +7 -7
  77. package/src/styles/_tokens.scss +59 -0
  78. package/src/styles/global.scss +3 -3
  79. package/src/styles/mixins.scss +13 -12
  80. package/src/styles/variables.module.scss +53 -0
  81. package/src/styles/variables.scss +44 -41
  82. package/tsconfig.tsbuildinfo +1 -1
  83. /package/.next/static/{FDUqldlsD7FXe6iWhIJmu → YS42EFHDGPCCe3JyeXaNi}/_ssgManifest.js +0 -0
@@ -1,28 +1,49 @@
1
- import { Board, type BoardJson, type Game, type Locale, type ShowCoordinates } from '@scrabble-solver/types';
1
+ import { Board, type BoardJson } from '@scrabble-solver/types';
2
2
  import store2 from 'store2';
3
3
 
4
- import type { AutoGroupTiles, InputMode, Rack, RemoveCellFilters } from '@/types';
4
+ import type { Rack } from '@/types';
5
+
6
+ import type { SettingsState } from './settings/types';
5
7
 
6
- const AUTO_GROUP_TILES = 'auto-group-tiles';
7
8
  const BOARD = 'board';
8
- const GAME_ID = 'config-id';
9
- const INPUT_MODE = 'input-mode';
10
- const REMOVE_CELL_FILTERS = 'remove-cell-filters';
11
- const LOCALE = 'locale';
12
9
  const RACK = 'rack';
13
- const SHOW_COORDINATES = 'show-coordinates';
10
+ const SETTINGS = 'settings';
11
+
12
+ const LEGACY_KEYS: Record<keyof SettingsState, string> = {
13
+ autoGroupTiles: 'auto-group-tiles',
14
+ game: 'config-id',
15
+ inputMode: 'input-mode',
16
+ locale: 'locale',
17
+ removeCellFilters: 'remove-cell-filters',
18
+ showCoordinates: 'show-coordinates',
19
+ };
14
20
 
15
21
  const store = store2.namespace('scrabble-solver');
16
22
 
17
- export const localStorage = {
18
- getAutoGroupTiles(): AutoGroupTiles | undefined {
19
- return store.get(AUTO_GROUP_TILES) as AutoGroupTiles | undefined;
20
- },
21
-
22
- setAutoGroupTiles(autoGroupTiles: AutoGroupTiles | undefined): void {
23
- store.set(AUTO_GROUP_TILES, autoGroupTiles, true);
24
- },
23
+ /**
24
+ * Introduced in 2.15.26 on 2026/04/27.
25
+ * Life expectancy: 1y.
26
+ */
27
+ const migrateLegacySettings = (): Partial<SettingsState> => {
28
+ const settings: Partial<SettingsState> = {};
29
+ let hasLegacy = false;
30
+
31
+ for (const [setting, legacyKey] of Object.entries(LEGACY_KEYS) as [keyof SettingsState, string][]) {
32
+ if (store.has(legacyKey)) {
33
+ settings[setting] = store.get(legacyKey);
34
+ store.remove(legacyKey);
35
+ hasLegacy = true;
36
+ }
37
+ }
38
+
39
+ if (hasLegacy) {
40
+ store.set(SETTINGS, settings, true);
41
+ }
42
+
43
+ return settings;
44
+ };
25
45
 
46
+ export const localStorage = {
26
47
  getBoard(): Board | undefined {
27
48
  const serialized = store.get(BOARD) as string | undefined;
28
49
  return serialized ? Board.fromJson(JSON.parse(serialized) as BoardJson) : undefined;
@@ -33,30 +54,6 @@ export const localStorage = {
33
54
  store.set(BOARD, serialized, true);
34
55
  },
35
56
 
36
- getGame(): Game | undefined {
37
- return store.get(GAME_ID) as Game | undefined;
38
- },
39
-
40
- setGame(game: Game | undefined): void {
41
- store.set(GAME_ID, game, true);
42
- },
43
-
44
- getInputMode(): InputMode | undefined {
45
- return store.get(INPUT_MODE) as InputMode | undefined;
46
- },
47
-
48
- setInputMode(inputMode: InputMode | undefined): void {
49
- store.set(INPUT_MODE, inputMode, true);
50
- },
51
-
52
- getLocale(): Locale | undefined {
53
- return store.get(LOCALE) as Locale | undefined;
54
- },
55
-
56
- setLocale(locale: Locale | undefined): void {
57
- store.set(LOCALE, locale, true);
58
- },
59
-
60
57
  getRack(): Rack | undefined {
61
58
  return store.get(RACK) as Rack | undefined;
62
59
  },
@@ -65,19 +62,12 @@ export const localStorage = {
65
62
  store.set(RACK, rack, true);
66
63
  },
67
64
 
68
- getShowCoordinates(): ShowCoordinates | undefined {
69
- return store.get(SHOW_COORDINATES) as ShowCoordinates | undefined;
70
- },
71
-
72
- setShowCoordinates(showCoordinates: ShowCoordinates | undefined): void {
73
- store.set(SHOW_COORDINATES, showCoordinates, true);
74
- },
75
-
76
- getRemoveCellFilters(): RemoveCellFilters | undefined {
77
- return store.get(REMOVE_CELL_FILTERS) as RemoveCellFilters | undefined;
65
+ getSettings(): Partial<SettingsState> {
66
+ const stored = store.get(SETTINGS) as Partial<SettingsState> | undefined;
67
+ return stored ?? migrateLegacySettings();
78
68
  },
79
69
 
80
- setRemoveCellFilters(removeCellFilters: RemoveCellFilters | undefined): void {
81
- store.set(REMOVE_CELL_FILTERS, removeCellFilters, true);
70
+ setSettings(settings: SettingsState): void {
71
+ store.set(SETTINGS, settings, true);
82
72
  },
83
73
  };
@@ -5,14 +5,14 @@ import { localStorage } from '../localStorage';
5
5
  import { guessLocale } from './lib';
6
6
  import type { SettingsState } from './types';
7
7
 
8
- const localStorageAutoGroupTiles = localStorage.getAutoGroupTiles();
9
8
  const isTouchScreen = typeof globalThis.matchMedia !== 'undefined' && globalThis.matchMedia('(hover: none)').matches;
10
9
 
11
10
  export const settingsInitialState: SettingsState = {
12
- autoGroupTiles: typeof localStorageAutoGroupTiles === 'undefined' ? 'left' : localStorageAutoGroupTiles,
13
- game: localStorage.getGame() ?? Game.Scrabble,
14
- inputMode: localStorage.getInputMode() ?? (isTouchScreen ? 'touchscreen' : 'keyboard'),
15
- locale: localStorage.getLocale() ?? guessLocale(),
16
- showCoordinates: localStorage.getShowCoordinates() ?? 'hidden',
17
- removeCellFilters: localStorage.getRemoveCellFilters() ?? 'always',
11
+ autoGroupTiles: null,
12
+ game: Game.Scrabble,
13
+ inputMode: isTouchScreen ? 'touchscreen' : 'keyboard',
14
+ locale: guessLocale(),
15
+ removeCellFilters: 'always',
16
+ showCoordinates: 'hidden',
17
+ ...localStorage.getSettings(),
18
18
  };
@@ -0,0 +1,59 @@
1
+ @use 'sass:math';
2
+
3
+ @function strip-unit($value) {
4
+ @return math.div($value, $value * 0 + 1);
5
+ }
6
+
7
+ $breakpoint-xs: 480px;
8
+ $breakpoint-s: 768px;
9
+ $breakpoint-m: 992px;
10
+ $breakpoint-l: 1200px;
11
+ $breakpoint-xl: 1400px;
12
+
13
+ $border-color: #cdcdcd;
14
+ $border-color-light: #d9d9d9;
15
+ $border-radius: 5px;
16
+ $border-width: 1px;
17
+
18
+ $color-blue: #c7d8f9;
19
+ $color-blue-light: #dde4f6;
20
+ $color-green: #bae3ba;
21
+ $color-green-light: #d6ebd6;
22
+ $color-red: #f7c2aa;
23
+ $color-red-light: #fbe0d4;
24
+ $color-violet: #78387f;
25
+ $color-violet-light: #b284b8;
26
+ $color-yellow: #efe3ae;
27
+ $color-yellow-light: #f7f1d6;
28
+
29
+ $color-background: #f4f4f4;
30
+ $color-foreground: #222;
31
+ $color-foreground-secondary: #444;
32
+ $color-inactive: #cdcdcd;
33
+
34
+ $color-bonus-character-multiplier-2: #b8d5ed;
35
+ $color-bonus-character-multiplier-3: #86aed1;
36
+ $color-bonus-character-multiplier-4: #3477b2;
37
+ $color-bonus-word-multiplier-2: #fbc997;
38
+ $color-bonus-word-multiplier-3: #f19393;
39
+ $color-bonus-word-multiplier-4: #ed5e5e;
40
+
41
+ $spacing-xs: 2px;
42
+ $spacing-s: 5px;
43
+ $spacing-m: 10px;
44
+ $spacing-l: 20px;
45
+ $spacing-xl: 40px;
46
+ $spacing-xxl: 80px;
47
+
48
+ $transition-duration: 100ms;
49
+ $transition-duration-long: 250ms;
50
+
51
+ $button-icon-size: 24px;
52
+ $dictionary-height: 260px;
53
+ $dictionary-height-mobile: 110px;
54
+ $logo-height: 60px;
55
+ $logo-height-small: 48px;
56
+ $modal-width: 370px;
57
+ $results-item-height: 40px;
58
+ $solver-column-width: 580px;
59
+ $text-input-height: 40px;
@@ -1,7 +1,7 @@
1
- @import 'normalize.css';
1
+ @use 'normalize.css';
2
2
 
3
- @import './mixins';
4
- @import './variables';
3
+ @use './mixins' as *;
4
+ @use './variables';
5
5
 
6
6
  *,
7
7
  *:after,
@@ -1,15 +1,16 @@
1
- @import 'include-media';
2
-
3
- $breakpoints: (
4
- xs: 480px,
5
- s: 768px,
6
- m: 992px,
7
- l: 1200px,
8
- xl: 1400px,
9
- );
10
-
11
- $media-expressions: (
12
- touch: '(hover: none)',
1
+ @use 'styles/tokens' as *;
2
+
3
+ @forward 'include-media' with (
4
+ $breakpoints: (
5
+ xs: $breakpoint-xs,
6
+ s: $breakpoint-s,
7
+ m: $breakpoint-m,
8
+ l: $breakpoint-l,
9
+ xl: $breakpoint-xl,
10
+ ),
11
+ $media-expressions: (
12
+ touch: '(hover: none)',
13
+ )
13
14
  );
14
15
 
15
16
  @mixin scrollbars {
@@ -0,0 +1,53 @@
1
+ @use 'styles/tokens' as *;
2
+
3
+ :export {
4
+ breakpointXs: strip-unit($breakpoint-xs);
5
+ breakpointS: strip-unit($breakpoint-s);
6
+ breakpointM: strip-unit($breakpoint-m);
7
+ breakpointL: strip-unit($breakpoint-l);
8
+ breakpointXl: strip-unit($breakpoint-xl);
9
+
10
+ borderColor: $border-color;
11
+ borderColorLight: $border-color-light;
12
+ borderRadius: strip-unit($border-radius);
13
+ borderWidth: strip-unit($border-width);
14
+
15
+ colorBlue: $color-blue;
16
+ colorBlueLight: $color-blue-light;
17
+ colorGreen: $color-green;
18
+ colorGreenLight: $color-green-light;
19
+ colorRed: $color-red;
20
+ colorRedLight: $color-red-light;
21
+ colorVioletLight: $color-violet-light;
22
+ colorYellow: $color-yellow;
23
+ colorYellowLight: $color-yellow-light;
24
+
25
+ colorBackground: $color-background;
26
+ colorForegroundSecondary: $color-foreground-secondary;
27
+
28
+ colorBonusCharacterMultiplier2: $color-bonus-character-multiplier-2;
29
+ colorBonusCharacterMultiplier3: $color-bonus-character-multiplier-3;
30
+ colorBonusCharacterMultiplier4: $color-bonus-character-multiplier-4;
31
+ colorBonusWordMultiplier2: $color-bonus-word-multiplier-2;
32
+ colorBonusWordMultiplier3: $color-bonus-word-multiplier-3;
33
+ colorBonusWordMultiplier4: $color-bonus-word-multiplier-4;
34
+
35
+ spacingXs: strip-unit($spacing-xs);
36
+ spacingS: strip-unit($spacing-s);
37
+ spacingM: strip-unit($spacing-m);
38
+ spacingL: strip-unit($spacing-l);
39
+ spacingXl: strip-unit($spacing-xl);
40
+
41
+ transitionDuration: strip-unit($transition-duration);
42
+ transitionDurationLong: strip-unit($transition-duration-long);
43
+
44
+ buttonIconSize: strip-unit($button-icon-size);
45
+ dictionaryHeight: strip-unit($dictionary-height);
46
+ dictionaryHeightMobile: strip-unit($dictionary-height-mobile);
47
+ logoHeight: strip-unit($logo-height);
48
+ logoHeightSmall: strip-unit($logo-height-small);
49
+ modalWidth: strip-unit($modal-width);
50
+ resultsItemHeight: strip-unit($results-item-height);
51
+ solverColumnWidth: strip-unit($solver-column-width);
52
+ textInputHeight: strip-unit($text-input-height);
53
+ }
@@ -1,13 +1,14 @@
1
- @import 'styles/mixins';
1
+ @use 'styles/mixins' as *;
2
+ @use 'styles/tokens' as *;
2
3
 
3
4
  $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
4
5
 
5
6
  :root {
6
7
  --border: var(--border--width) solid var(--border--color);
7
- --border--color: #cdcdcd;
8
- --border--color--light: #d9d9d9;
9
- --border--radius: 5px;
10
- --border--width: 1px;
8
+ --border--color: #{$border-color};
9
+ --border--color--light: #{$border-color-light};
10
+ --border--radius: #{$border-radius};
11
+ --border--width: #{$border-width};
11
12
 
12
13
  --box-shadow: 0 0 var(--box-shadow--blur) var(--box-shadow--spread) var(--box-shadow--color);
13
14
  --box-shadow--blur: 8px;
@@ -21,24 +22,24 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
21
22
  --box-shadow--raised--subtle: inset -1px -1px 1px 0 var(--box-shadow--color--raised);
22
23
 
23
24
  --color--white: #ffffff;
24
- --color--blue: #c7d8f9;
25
- --color--blue--light: #dde4f6;
26
- --color--green: #bae3ba;
27
- --color--green--light: #d6ebd6;
28
- --color--red: #f7c2aa;
29
- --color--red--light: #fbe0d4;
30
- --color--violet: #78387f;
31
- --color--violet--light: #b284b8;
32
- --color--yellow: #efe3ae;
33
- --color--yellow--light: #f7f1d6;
25
+ --color--blue: #{$color-blue};
26
+ --color--blue--light: #{$color-blue-light};
27
+ --color--green: #{$color-green};
28
+ --color--green--light: #{$color-green-light};
29
+ --color--red: #{$color-red};
30
+ --color--red--light: #{$color-red-light};
31
+ --color--violet: #{$color-violet};
32
+ --color--violet--light: #{$color-violet-light};
33
+ --color--yellow: #{$color-yellow};
34
+ --color--yellow--light: #{$color-yellow-light};
34
35
 
35
36
  --color--focus: #{rgba(#268fff, 0.5)};
36
- --color--inactive: #cdcdcd;
37
- --color--background: #f4f4f4;
37
+ --color--inactive: #{$color-inactive};
38
+ --color--background: #{$color-background};
38
39
  --color--background--element: var(--color--white);
39
40
  --color--background--overlay: rgba(255, 255, 255, 0.65);
40
- --color--foreground: #222;
41
- --color--foreground--secondary: #444;
41
+ --color--foreground: #{$color-foreground};
42
+ --color--foreground--secondary: #{$color-foreground-secondary};
42
43
  --color--mark: #ffff00;
43
44
  --color--error: hsl(0, 92%, 62%);
44
45
  --color--error--opposite: var(--color--white);
@@ -53,12 +54,14 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
53
54
  --color--bonus--character--2: var(--color--green--light);
54
55
  --color--bonus--character--3: var(--color--blue--light);
55
56
  --color--bonus--character--5: var(--color--red--light);
56
- --color--bonus--character-multiplier--2: #b8d5ed;
57
- --color--bonus--character-multiplier--3: #86aed1;
57
+ --color--bonus--character-multiplier--2: #{$color-bonus-character-multiplier-2};
58
+ --color--bonus--character-multiplier--3: #{$color-bonus-character-multiplier-3};
59
+ --color--bonus--character-multiplier--4: #{$color-bonus-character-multiplier-4};
58
60
  --color--bonus--start: var(--color--violet--light);
59
- --color--bonus--word-multiplier--2: #fbc997;
60
- --color--bonus--word-multiplier--3: #f19393;
61
- --color--tooltip--background: #444;
61
+ --color--bonus--word-multiplier--2: #{$color-bonus-word-multiplier-2};
62
+ --color--bonus--word-multiplier--3: #{$color-bonus-word-multiplier-3};
63
+ --color--bonus--word-multiplier--4: #{$color-bonus-word-multiplier-4};
64
+ --color--tooltip--background: #{$color-foreground-secondary};
62
65
  --color--tooltip--foreground: var(--color--white);
63
66
 
64
67
  --font--family: system-ui, sans-serif;
@@ -73,12 +76,12 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
73
76
 
74
77
  --opacity--disabled: 0.3;
75
78
 
76
- --spacing--xs: 2px;
77
- --spacing--s: 5px;
78
- --spacing--m: 10px;
79
- --spacing--l: 20px;
80
- --spacing--xl: 40px;
81
- --spacing--xxl: 80px;
79
+ --spacing--xs: #{$spacing-xs};
80
+ --spacing--s: #{$spacing-s};
81
+ --spacing--m: #{$spacing-m};
82
+ --spacing--l: #{$spacing-l};
83
+ --spacing--xl: #{$spacing-xl};
84
+ --spacing--xxl: #{$spacing-xxl};
82
85
 
83
86
  --scrollbar--size: 5px;
84
87
  --scrollbar--thumb--color: var(--border--color);
@@ -87,8 +90,8 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
87
90
 
88
91
  --transition: all var(--transition--duration) var(--transition--easing);
89
92
  --transition--long: all var(--transition--duration--long) var(--transition--easing);
90
- --transition--duration: 100ms;
91
- --transition--duration--long: 250ms;
93
+ --transition--duration: #{$transition-duration};
94
+ --transition--duration--long: #{$transition-duration-long};
92
95
  --transition--easing: #{$easeOutSine};
93
96
 
94
97
  --z-index--focus-effect: 1;
@@ -97,25 +100,25 @@ $easeOutSine: cubic-bezier(0.61, 1, 0.88, 1);
97
100
  --z-index--close-button: 101;
98
101
  --z-index--tooltip: 102;
99
102
 
100
- --button--icon--size: 24px;
101
- --dictionary--height: 260px;
102
- --dictionary--height--mobile: 110px;
103
+ --button--icon--size: #{$button-icon-size};
104
+ --dictionary--height: #{$dictionary-height};
105
+ --dictionary--height--mobile: #{$dictionary-height-mobile};
103
106
  --key--height: 36px;
104
107
  --key--icon--size: 16px;
105
- --logo--height: 60px;
106
- --modal--width: 370px;
108
+ --logo--height: #{$logo-height};
109
+ --modal--width: #{$modal-width};
107
110
  --nav--height: calc(var(--logo--height) + var(--nav--padding));
108
111
  --nav--padding: var(--spacing--l);
109
112
  --results--icon--size: 18px;
110
- --results--item--height: 40px;
111
- --solver-column--width: 580px;
113
+ --results--item--height: #{$results-item-height};
114
+ --solver-column--width: #{$solver-column-width};
112
115
  --square-button--size: 32px;
113
- --text-input--height: 40px;
116
+ --text-input--height: #{$text-input-height};
114
117
  --tooltip--max-width: 500px;
115
118
 
116
119
  @include media('<l') {
117
120
  --dictionary--height: var(--dictionary--height--mobile);
118
- --logo--height: 48px;
121
+ --logo--height: #{$logo-height-small};
119
122
  }
120
123
 
121
124
  @include media('<s') {