@scrabble-solver/scrabble-solver 2.15.25 → 2.16.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +5 -5
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/.next/prerender-manifest.json +4 -4
- package/.next/required-server-files.js +2 -1
- package/.next/required-server-files.json +2 -1
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/712.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
- package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
- package/.next/server/pages/api/solve.js +1 -1
- package/.next/server/pages/api/solve.js.nft.json +1 -1
- package/.next/server/pages/api/verify.js.nft.json +1 -1
- package/.next/server/pages/api/visit.js.nft.json +1 -1
- package/.next/server/pages/index.html +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/index.json +1 -1
- package/.next/server/pages/not-found.html +1 -1
- package/.next/server/webpack-api-runtime.js +1 -1
- package/.next/static/{FDUqldlsD7FXe6iWhIJmu → HFiEUpdZIGYd_XKb5mCLZ}/_buildManifest.js +1 -1
- package/.next/static/chunks/pages/{_app-c0932b8ca24945cb.js → _app-9c9aaea7b6881765.js} +4 -4
- package/.next/static/chunks/pages/{index-08b3b0a754095919.js → index-e9ea63e97865edcf.js} +1 -1
- package/.next/static/css/{500cdc9a24075d91.css → 78726ae7cf7a5497.css} +1 -1
- package/.next/trace +21 -21
- package/.next/trace-build +1 -1
- package/README.md +3 -3
- package/next.config.js +1 -0
- package/package.json +10 -9
- package/src/@types/scss.d.ts +5 -0
- package/src/components/Board/Board.module.scss +2 -2
- package/src/components/Board/components/Actions/Actions.module.scss +1 -1
- package/src/components/Board/components/Cell/Cell.module.scss +26 -6
- package/src/components/Board/components/InputPrompt/InputPrompt.module.scss +1 -1
- package/src/components/Button/Button.module.scss +1 -1
- package/src/components/Dictionary/Dictionary.module.scss +1 -1
- package/src/components/DictionaryInput/DictionaryInput.module.scss +1 -1
- package/src/components/IconButton/IconButton.module.scss +1 -1
- package/src/components/Loading/Loading.module.scss +1 -1
- package/src/components/Modal/Modal.module.scss +1 -1
- package/src/components/NotFound/NotFound.module.scss +1 -1
- package/src/components/PlainTiles/PlainTiles.module.scss +1 -1
- package/src/components/Rack/Rack.module.scss +11 -6
- package/src/components/Rack/components/InputPrompt/InputPrompt.module.scss +1 -1
- package/src/components/Rack/components/RackTile/RackTile.module.scss +1 -1
- package/src/components/Radio/Radio.module.scss +1 -1
- package/src/components/Results/Results.module.scss +1 -1
- package/src/components/ResultsInput/ResultsInput.module.scss +1 -1
- package/src/components/Solver/Solver.module.scss +1 -1
- package/src/components/Solver/components/InsertButton/InsertButton.module.scss +1 -1
- package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.module.scss +1 -1
- package/src/components/Spinner/Spinner.module.scss +1 -1
- package/src/components/Tile/Tile.module.scss +1 -1
- package/src/hooks/useLocalStorage.ts +4 -52
- package/src/lib/isMac.ts +1 -1
- package/src/modals/MenuModal/MenuModal.module.scss +1 -1
- package/src/modals/RemainingTilesModal/components/Character/Character.module.scss +1 -1
- package/src/modals/ResultsModal/ResultsModal.module.scss +1 -1
- package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.module.scss +1 -1
- package/src/parameters/index.ts +45 -44
- package/src/state/localStorage.ts +42 -52
- package/src/state/settings/initialState.ts +7 -7
- package/src/styles/_tokens.scss +59 -0
- package/src/styles/global.scss +3 -3
- package/src/styles/mixins.scss +13 -12
- package/src/styles/variables.module.scss +53 -0
- package/src/styles/variables.scss +44 -41
- package/tsconfig.tsbuildinfo +1 -1
- /package/.next/static/{FDUqldlsD7FXe6iWhIJmu → HFiEUpdZIGYd_XKb5mCLZ}/_ssgManifest.js +0 -0
|
@@ -1,28 +1,49 @@
|
|
|
1
|
-
import { Board, type BoardJson
|
|
1
|
+
import { Board, type BoardJson } from '@scrabble-solver/types';
|
|
2
2
|
import store2 from 'store2';
|
|
3
3
|
|
|
4
|
-
import type {
|
|
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
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
-
|
|
69
|
-
|
|
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
|
-
|
|
81
|
-
store.set(
|
|
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:
|
|
13
|
-
game:
|
|
14
|
-
inputMode:
|
|
15
|
-
locale:
|
|
16
|
-
|
|
17
|
-
|
|
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;
|
package/src/styles/global.scss
CHANGED
package/src/styles/mixins.scss
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
@
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
$media-expressions: (
|
|
12
|
-
|
|
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
|
-
@
|
|
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: #
|
|
8
|
-
--border--color--light: #
|
|
9
|
-
--border--radius:
|
|
10
|
-
--border--width:
|
|
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: #
|
|
25
|
-
--color--blue--light: #
|
|
26
|
-
--color--green: #
|
|
27
|
-
--color--green--light: #
|
|
28
|
-
--color--red: #
|
|
29
|
-
--color--red--light: #
|
|
30
|
-
--color--violet: #
|
|
31
|
-
--color--violet--light: #
|
|
32
|
-
--color--yellow: #
|
|
33
|
-
--color--yellow--light: #
|
|
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: #
|
|
37
|
-
--color--background: #
|
|
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: #
|
|
41
|
-
--color--foreground--secondary: #
|
|
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: #
|
|
57
|
-
--color--bonus--character-multiplier--3: #
|
|
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: #
|
|
60
|
-
--color--bonus--word-multiplier--3: #
|
|
61
|
-
--color--
|
|
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:
|
|
77
|
-
--spacing--s:
|
|
78
|
-
--spacing--m:
|
|
79
|
-
--spacing--l:
|
|
80
|
-
--spacing--xl:
|
|
81
|
-
--spacing--xxl:
|
|
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:
|
|
91
|
-
--transition--duration--long:
|
|
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:
|
|
101
|
-
--dictionary--height:
|
|
102
|
-
--dictionary--height--mobile:
|
|
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:
|
|
106
|
-
--modal--width:
|
|
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:
|
|
111
|
-
--solver-column--width:
|
|
113
|
+
--results--item--height: #{$results-item-height};
|
|
114
|
+
--solver-column--width: #{$solver-column-width};
|
|
112
115
|
--square-button--size: 32px;
|
|
113
|
-
--text-input--height:
|
|
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:
|
|
121
|
+
--logo--height: #{$logo-height-small};
|
|
119
122
|
}
|
|
120
123
|
|
|
121
124
|
@include media('<s') {
|