@scrabble-solver/scrabble-solver 2.15.9 → 2.15.11

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 (312) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +9 -9
  3. package/.next/cache/.rscinfo +1 -1
  4. package/.next/cache/.tsbuildinfo +1 -1
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/client-production/index.pack.old +0 -0
  8. package/.next/cache/webpack/edge-server-production/0.pack +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/diagnostics/framework.json +1 -1
  15. package/.next/next-minimal-server.js.nft.json +1 -1
  16. package/.next/next-server.js.nft.json +1 -1
  17. package/.next/prerender-manifest.json +4 -4
  18. package/.next/required-server-files.json +1 -2
  19. package/.next/routes-manifest.json +1 -1
  20. package/.next/server/chunks/60.js +1 -1
  21. package/.next/server/chunks/812.js +1 -1
  22. package/.next/server/chunks/974.js +1 -1
  23. package/.next/server/middleware-build-manifest.js +1 -1
  24. package/.next/server/pages/404.html +1 -1
  25. package/.next/server/pages/404.js.nft.json +1 -1
  26. package/.next/server/pages/500.html +1 -1
  27. package/.next/server/pages/_app.js.nft.json +1 -1
  28. package/.next/server/pages/api/dictionary/[locale]/[word].js +2 -2
  29. package/.next/server/pages/api/dictionary/[locale]/[word].js.nft.json +1 -1
  30. package/.next/server/pages/api/dictionary/[locale].js +1 -1
  31. package/.next/server/pages/api/dictionary/[locale].js.nft.json +1 -1
  32. package/.next/server/pages/api/solve.js +1 -1
  33. package/.next/server/pages/api/solve.js.nft.json +1 -1
  34. package/.next/server/pages/api/verify.js +1 -1
  35. package/.next/server/pages/api/verify.js.nft.json +1 -1
  36. package/.next/server/pages/api/visit.js +1 -1
  37. package/.next/server/pages/index.html +1 -1
  38. package/.next/server/pages/index.js +1 -1
  39. package/.next/server/pages/index.js.nft.json +1 -1
  40. package/.next/server/pages/index.json +1 -1
  41. package/.next/server/pages-manifest.json +1 -1
  42. package/.next/server/webpack-api-runtime.js +1 -1
  43. package/.next/static/{3MlxnccTCLyz9bgD30zY2 → 47JHul8F9NSWCNSEuahuL}/_buildManifest.js +1 -1
  44. package/.next/static/chunks/{main-b934e2c3dd3b55b5.js → main-016492249b3393e2.js} +1 -1
  45. package/.next/static/chunks/pages/{404-7451dd58396eaa39.js → 404-590e2a3839c1d9e0.js} +1 -1
  46. package/.next/static/chunks/pages/_app-0e951de0aebb6505.js +1 -0
  47. package/.next/static/chunks/pages/index-c1d5a66d0f4794a6.js +1 -0
  48. package/.next/trace +23 -23
  49. package/next.config.js +3 -0
  50. package/package.json +12 -11
  51. package/src/api/getServerLoggingData.ts +1 -3
  52. package/src/api/index.ts +5 -5
  53. package/src/api/isBoardValid.ts +3 -5
  54. package/src/api/isCellValid.ts +4 -6
  55. package/src/api/isCharacterValid.ts +2 -3
  56. package/src/api/isRowValid.ts +3 -5
  57. package/src/components/Alert/Alert.tsx +1 -3
  58. package/src/components/Alert/index.ts +1 -1
  59. package/src/components/Badge/Badge.tsx +1 -3
  60. package/src/components/Badge/index.ts +1 -1
  61. package/src/components/Board/Board.tsx +2 -4
  62. package/src/components/Board/BoardPure.tsx +3 -3
  63. package/src/components/Board/components/Actions/Actions.tsx +3 -5
  64. package/src/components/Board/components/Actions/index.ts +1 -1
  65. package/src/components/Board/components/Cell/Cell.tsx +3 -5
  66. package/src/components/Board/components/Cell/index.ts +1 -1
  67. package/src/components/Board/components/InputPrompt/InputPrompt.tsx +3 -5
  68. package/src/components/Board/components/InputPrompt/index.ts +1 -1
  69. package/src/components/Board/components/ToggleDirectionButton/ToggleDirectionButton.tsx +2 -4
  70. package/src/components/Board/components/ToggleDirectionButton/index.ts +1 -1
  71. package/src/components/Board/components/index.ts +4 -4
  72. package/src/components/Board/hooks/index.ts +6 -6
  73. package/src/components/Board/hooks/useBackgroundImage.tsx +7 -9
  74. package/src/components/Board/hooks/useBoardStyle.ts +7 -9
  75. package/src/components/Board/hooks/useFloatingActions.ts +1 -3
  76. package/src/components/Board/hooks/useFloatingFocus.ts +1 -3
  77. package/src/components/Board/hooks/useFloatingInputPrompt.ts +1 -3
  78. package/src/components/Board/hooks/useGrid.ts +2 -4
  79. package/src/components/Board/index.ts +1 -1
  80. package/src/components/Board/lib/getBonusColor.ts +1 -3
  81. package/src/components/Board/lib/getPositionInGrid.ts +1 -3
  82. package/src/components/Board/lib/index.ts +2 -2
  83. package/src/components/Button/Button.tsx +3 -3
  84. package/src/components/Button/Link.tsx +1 -3
  85. package/src/components/Button/index.ts +1 -1
  86. package/src/components/Dictionary/Dictionary.tsx +3 -5
  87. package/src/components/Dictionary/index.ts +1 -1
  88. package/src/components/DictionaryInput/DictionaryInput.tsx +1 -3
  89. package/src/components/DictionaryInput/index.ts +1 -1
  90. package/src/components/EmptyState/EmptyState.tsx +2 -4
  91. package/src/components/EmptyState/index.ts +1 -1
  92. package/src/components/IconButton/IconButton.tsx +3 -3
  93. package/src/components/IconButton/Link.tsx +1 -3
  94. package/src/components/IconButton/index.ts +1 -1
  95. package/src/components/Key/Key.tsx +1 -3
  96. package/src/components/Key/index.ts +1 -1
  97. package/src/components/Keys/Arrows/Arrows.tsx +2 -4
  98. package/src/components/Keys/Arrows/index.ts +1 -1
  99. package/src/components/{keys.tsx → Keys/index.tsx} +3 -1
  100. package/src/components/Loading/Loading.tsx +2 -4
  101. package/src/components/Loading/index.ts +1 -1
  102. package/src/components/Logo/Logo.tsx +1 -3
  103. package/src/components/Logo/LogoBlueprint.tsx +2 -4
  104. package/src/components/Logo/index.ts +1 -1
  105. package/src/components/Modal/Modal.tsx +3 -3
  106. package/src/components/Modal/components/Section/Section.tsx +1 -3
  107. package/src/components/Modal/components/Section/index.ts +1 -1
  108. package/src/components/Modal/components/index.ts +1 -1
  109. package/src/components/Modal/index.ts +1 -1
  110. package/src/components/NavButtons/NavButtons.tsx +16 -13
  111. package/src/components/NavButtons/index.ts +1 -1
  112. package/src/components/NotFound/NotFound.tsx +2 -4
  113. package/src/components/NotFound/index.ts +1 -1
  114. package/src/components/PlainTiles/PlainTiles.tsx +10 -4
  115. package/src/components/PlainTiles/Tile.tsx +1 -3
  116. package/src/components/PlainTiles/index.ts +1 -1
  117. package/src/components/PlainTiles/lib/createPlainTile.ts +10 -6
  118. package/src/components/PlainTiles/lib/createPlainTiles.ts +2 -4
  119. package/src/components/PlainTiles/lib/getViewbox.ts +1 -3
  120. package/src/components/PlainTiles/lib/getX.ts +1 -3
  121. package/src/components/PlainTiles/lib/getY.ts +1 -3
  122. package/src/components/PlainTiles/lib/index.ts +6 -6
  123. package/src/components/PlainTiles/lib/randomize.ts +1 -3
  124. package/src/components/Progress/Progress.tsx +1 -3
  125. package/src/components/Progress/index.ts +1 -1
  126. package/src/components/Rack/Rack.tsx +2 -4
  127. package/src/components/Rack/components/InputPrompt/InputPrompt.tsx +2 -2
  128. package/src/components/Rack/components/InputPrompt/index.ts +1 -1
  129. package/src/components/Rack/components/RackTile/RackTile.tsx +4 -7
  130. package/src/components/Rack/components/RackTile/index.ts +1 -1
  131. package/src/components/Rack/components/index.ts +2 -2
  132. package/src/components/Rack/index.ts +1 -1
  133. package/src/components/Radio/Radio.tsx +1 -3
  134. package/src/components/Radio/index.ts +1 -1
  135. package/src/components/Results/Cell.tsx +9 -3
  136. package/src/components/Results/Header.tsx +2 -4
  137. package/src/components/Results/HeaderButton.tsx +1 -3
  138. package/src/components/Results/Result.tsx +2 -4
  139. package/src/components/Results/Results.tsx +7 -9
  140. package/src/components/Results/SolveButton.tsx +2 -4
  141. package/src/components/Results/index.ts +1 -1
  142. package/src/components/ResultsInput/ResultsInput.tsx +1 -3
  143. package/src/components/ResultsInput/index.ts +1 -1
  144. package/src/components/SeoMessage/SeoMessage.tsx +5 -6
  145. package/src/components/SeoMessage/index.ts +1 -1
  146. package/src/components/Solver/Solver.tsx +8 -8
  147. package/src/components/Solver/components/InsertButton/InsertButton.tsx +2 -4
  148. package/src/components/Solver/components/InsertButton/index.ts +1 -1
  149. package/src/components/Solver/components/ResultCandidatePicker/ResultCandidatePicker.tsx +4 -6
  150. package/src/components/Solver/components/ResultCandidatePicker/index.ts +1 -1
  151. package/src/components/Solver/components/index.ts +2 -2
  152. package/src/components/Solver/index.ts +1 -1
  153. package/src/components/Spinner/Spinner.tsx +1 -3
  154. package/src/components/Spinner/index.ts +1 -1
  155. package/src/components/Tile/Tile.tsx +2 -4
  156. package/src/components/Tile/TilePure.tsx +2 -2
  157. package/src/components/Tile/index.ts +1 -1
  158. package/src/components/Tooltip/TooltipTrigger.tsx +5 -3
  159. package/src/components/index.ts +24 -25
  160. package/src/hooks/index.ts +13 -13
  161. package/src/hooks/useAppLayout.ts +19 -15
  162. package/src/hooks/useColumns.ts +2 -4
  163. package/src/hooks/useDirection.ts +1 -3
  164. package/src/hooks/useEffectOnce.ts +2 -4
  165. package/src/hooks/useIsTouchDevice.ts +2 -4
  166. package/src/hooks/useLanguage.ts +1 -3
  167. package/src/hooks/useLatest.ts +1 -3
  168. package/src/hooks/useLocalStorage.ts +1 -3
  169. package/src/hooks/useMedia.ts +1 -3
  170. package/src/hooks/useMediaQueries.ts +2 -4
  171. package/src/hooks/useMediaQuery.ts +2 -4
  172. package/src/hooks/useOnWindowResize.ts +1 -3
  173. package/src/hooks/useViewportSize.ts +2 -4
  174. package/src/i18n/i18n.ts +1 -3
  175. package/src/i18n/index.ts +1 -1
  176. package/src/lib/arrayEquals.ts +1 -3
  177. package/src/lib/createArray.ts +1 -3
  178. package/src/lib/createComparator.ts +3 -5
  179. package/src/lib/createGridOf.ts +2 -4
  180. package/src/lib/createKeyComparator.ts +6 -5
  181. package/src/lib/createKeyboardNavigation.ts +2 -4
  182. package/src/lib/createNullMovingComparator.test.ts +1 -1
  183. package/src/lib/createNullMovingComparator.ts +1 -3
  184. package/src/lib/createRegExp.ts +1 -3
  185. package/src/lib/createStringComparator.ts +5 -3
  186. package/src/lib/detectLocale.ts +1 -3
  187. package/src/lib/extractCharacters.test.ts +1 -1
  188. package/src/lib/extractCharacters.ts +1 -3
  189. package/src/lib/extractCharactersByCase.test.ts +1 -1
  190. package/src/lib/extractCharactersByCase.ts +2 -4
  191. package/src/lib/extractInputValue.ts +1 -3
  192. package/src/lib/findCell.ts +1 -3
  193. package/src/lib/getCellSize.ts +3 -5
  194. package/src/lib/getCoordinate.test.ts +22 -0
  195. package/src/lib/getCoordinate.ts +10 -4
  196. package/src/lib/getCoordinates.ts +2 -4
  197. package/src/lib/getRemainingTiles.ts +8 -5
  198. package/src/lib/getRemainingTilesCount.ts +8 -4
  199. package/src/lib/getRemainingTilesGroups.ts +3 -5
  200. package/src/lib/getTileSizes.ts +1 -3
  201. package/src/lib/getTotalRemainingTilesCount.ts +8 -4
  202. package/src/lib/groupResults.ts +3 -5
  203. package/src/lib/guessLocale.ts +2 -4
  204. package/src/lib/index.ts +39 -39
  205. package/src/lib/inverseDirection.ts +1 -3
  206. package/src/lib/isCtrl.ts +1 -3
  207. package/src/lib/isMac.ts +3 -4
  208. package/src/lib/isRegExp.ts +1 -3
  209. package/src/lib/isStringArray.ts +1 -3
  210. package/src/lib/isUpperCase.ts +1 -3
  211. package/src/lib/memoize.ts +18 -20
  212. package/src/lib/noop.ts +1 -3
  213. package/src/lib/numberComparator.ts +1 -3
  214. package/src/lib/resultMatchesCellFilter.ts +1 -3
  215. package/src/lib/reverseComparator.ts +1 -3
  216. package/src/lib/sortGroupedResults.ts +2 -4
  217. package/src/lib/sortResults.ts +5 -7
  218. package/src/lib/unorderedArraysEqual.ts +2 -4
  219. package/src/lib/zipCharactersAndTiles.ts +1 -3
  220. package/src/modals/DictionaryModal/DictionaryModal.tsx +2 -2
  221. package/src/modals/DictionaryModal/index.ts +1 -1
  222. package/src/modals/KeyMapModal/KeyMapModal.tsx +2 -2
  223. package/src/modals/KeyMapModal/components/Mapping/Mapping.tsx +1 -3
  224. package/src/modals/KeyMapModal/components/Mapping/index.ts +1 -1
  225. package/src/modals/KeyMapModal/components/index.ts +1 -1
  226. package/src/modals/KeyMapModal/index.ts +1 -1
  227. package/src/modals/MenuModal/MenuModal.tsx +2 -2
  228. package/src/modals/MenuModal/index.ts +1 -1
  229. package/src/modals/RemainingTilesModal/RemainingTilesModal.tsx +2 -2
  230. package/src/modals/RemainingTilesModal/components/Character/Character.tsx +6 -3
  231. package/src/modals/RemainingTilesModal/components/Character/index.ts +1 -1
  232. package/src/modals/RemainingTilesModal/components/index.ts +1 -1
  233. package/src/modals/RemainingTilesModal/index.ts +1 -1
  234. package/src/modals/ResultsModal/ResultsModal.tsx +2 -2
  235. package/src/modals/ResultsModal/index.ts +1 -1
  236. package/src/modals/SettingsModal/SettingsModal.tsx +2 -2
  237. package/src/modals/SettingsModal/components/AutoGroupTilesSetting/AutoGroupTilesSetting.tsx +1 -3
  238. package/src/modals/SettingsModal/components/AutoGroupTilesSetting/index.ts +1 -1
  239. package/src/modals/SettingsModal/components/ConfigSetting/ConfigSetting.tsx +4 -10
  240. package/src/modals/SettingsModal/components/ConfigSetting/index.ts +1 -1
  241. package/src/modals/SettingsModal/components/ConfigSetting/lib.ts +19 -0
  242. package/src/modals/SettingsModal/components/InputModeSetting/InputModeSetting.tsx +1 -3
  243. package/src/modals/SettingsModal/components/InputModeSetting/index.ts +1 -1
  244. package/src/modals/SettingsModal/components/LocaleSetting/LocaleSetting.tsx +1 -3
  245. package/src/modals/SettingsModal/components/LocaleSetting/index.ts +1 -1
  246. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/ShowCoordinatesSetting.tsx +1 -3
  247. package/src/modals/SettingsModal/components/ShowCoordinatesSetting/index.ts +1 -1
  248. package/src/modals/SettingsModal/components/index.ts +5 -5
  249. package/src/modals/SettingsModal/index.ts +1 -1
  250. package/src/modals/WordsModal/WordsModal.tsx +2 -2
  251. package/src/modals/WordsModal/index.ts +1 -1
  252. package/src/modals/index.ts +7 -7
  253. package/src/pages/_app.tsx +3 -1
  254. package/src/pages/api/dictionary/[locale]/[word].ts +1 -1
  255. package/src/pages/api/dictionary/[locale]/index.ts +1 -1
  256. package/src/pages/api/solve.ts +6 -4
  257. package/src/pages/api/verify.ts +6 -4
  258. package/src/pages/api/visit.ts +2 -2
  259. package/src/pages/index.tsx +12 -2
  260. package/src/sdk/fetch.ts +1 -3
  261. package/src/sdk/fetchJson.ts +2 -4
  262. package/src/sdk/findWordDefinitions.ts +2 -4
  263. package/src/sdk/getDictionary.ts +2 -4
  264. package/src/sdk/index.ts +4 -4
  265. package/src/sdk/solve.ts +2 -4
  266. package/src/sdk/verify.ts +2 -4
  267. package/src/sdk/visit.ts +1 -3
  268. package/src/service-worker/average.ts +1 -3
  269. package/src/service-worker/dictionaries/expirationManager.ts +1 -3
  270. package/src/service-worker/dictionaries/getDictionary.ts +3 -5
  271. package/src/service-worker/dictionaries/getDictionaryUrl.ts +1 -3
  272. package/src/service-worker/dictionaries/index.ts +2 -2
  273. package/src/service-worker/dictionaries/revalidateDictionary.ts +3 -5
  274. package/src/service-worker/getTrie.ts +1 -3
  275. package/src/service-worker/index.ts +4 -2
  276. package/src/service-worker/routeSolveRequests.ts +17 -11
  277. package/src/service-worker/routeVerifyRequests.ts +7 -5
  278. package/src/serviceWorkerManager.ts +4 -4
  279. package/src/state/index.ts +4 -4
  280. package/src/state/localStorage.ts +10 -12
  281. package/src/state/sagas.ts +4 -1
  282. package/src/state/selectors.ts +3 -6
  283. package/src/state/slices/boardInitialState.ts +6 -7
  284. package/src/state/slices/boardSlice.ts +5 -7
  285. package/src/state/slices/cellFilterInitialState.ts +1 -3
  286. package/src/state/slices/cellFilterSlice.ts +2 -4
  287. package/src/state/slices/dictionaryInitialState.ts +2 -4
  288. package/src/state/slices/dictionarySlice.ts +2 -4
  289. package/src/state/slices/index.ts +16 -16
  290. package/src/state/slices/rackInitialState.ts +2 -4
  291. package/src/state/slices/rackSlice.ts +2 -4
  292. package/src/state/slices/resultsInitialState.ts +1 -3
  293. package/src/state/slices/resultsSlice.ts +2 -4
  294. package/src/state/slices/settingsInitialState.ts +2 -4
  295. package/src/state/slices/settingsSlice.ts +2 -4
  296. package/src/state/slices/solveInitialState.ts +3 -5
  297. package/src/state/slices/solveSlice.ts +2 -4
  298. package/src/state/slices/verifyInitialState.ts +2 -4
  299. package/src/state/slices/verifySlice.ts +2 -4
  300. package/src/state/store.ts +1 -3
  301. package/src/state/useTranslate.ts +2 -4
  302. package/src/state/useTypedSelector.ts +1 -3
  303. package/src/types/api.ts +15 -0
  304. package/src/types/index.ts +3 -1
  305. package/tsconfig.json +1 -1
  306. package/tsconfig.tsbuildinfo +1 -0
  307. package/.next/cache/eslint/.cache_8dgz12 +0 -1
  308. package/.next/static/chunks/pages/_app-735105409cfdb48f.js +0 -1
  309. package/.next/static/chunks/pages/index-d492616d9bc42176.js +0 -1
  310. package/src/components/Keys/index.ts +0 -1
  311. package/tsconfig.jest.json +0 -7
  312. /package/.next/static/{3MlxnccTCLyz9bgD30zY2 → 47JHul8F9NSWCNSEuahuL}/_ssgManifest.js +0 -0
package/next.config.js CHANGED
@@ -16,6 +16,9 @@ const tsConfigAliases = Object.keys(tsConfigJson.compilerOptions.paths).reduce(
16
16
 
17
17
  module.exports = {
18
18
  compress: false,
19
+ eslint: {
20
+ ignoreDuringBuilds: true,
21
+ },
19
22
  reactStrictMode: true,
20
23
  webpack: (config) => ({
21
24
  ...config,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scrabble-solver/scrabble-solver",
3
- "version": "2.15.9",
3
+ "version": "2.15.11",
4
4
  "description": "Scrabble Solver 2 - App",
5
5
  "repository": {
6
6
  "type": "git",
@@ -21,24 +21,25 @@
21
21
  "clean": "rimraf .next/",
22
22
  "debug": "NODE_OPTIONS='--inspect' next dev",
23
23
  "dev": "env-cmd next dev",
24
- "start": "env-cmd next start -p 3333"
24
+ "start": "env-cmd next start -p 3333",
25
+ "type-check": "tsc --noEmit"
25
26
  },
26
27
  "dependencies": {
27
28
  "@floating-ui/react": "^0.27.5",
28
29
  "@kamilmielnik/trie": "^4.0.0",
29
30
  "@reduxjs/toolkit": "^2.6.1",
30
- "@scrabble-solver/configs": "^2.15.9",
31
- "@scrabble-solver/constants": "^2.15.9",
32
- "@scrabble-solver/dictionaries": "^2.15.9",
33
- "@scrabble-solver/logger": "^2.15.9",
34
- "@scrabble-solver/solver": "^2.15.9",
35
- "@scrabble-solver/types": "^2.15.9",
36
- "@scrabble-solver/word-definitions": "^2.15.9",
31
+ "@scrabble-solver/configs": "^2.15.11",
32
+ "@scrabble-solver/constants": "^2.15.11",
33
+ "@scrabble-solver/dictionaries": "^2.15.11",
34
+ "@scrabble-solver/logger": "^2.15.11",
35
+ "@scrabble-solver/solver": "^2.15.11",
36
+ "@scrabble-solver/types": "^2.15.11",
37
+ "@scrabble-solver/word-definitions": "^2.15.11",
37
38
  "classnames": "^2.5.1",
38
39
  "env-cmd": "^10.1.0",
39
40
  "include-media": "^2.0.0",
40
41
  "include-media-query-builder": "^1.1.0",
41
- "next": "^15.2.3",
42
+ "next": "^15.2.4",
42
43
  "normalize.css": "^8.0.1",
43
44
  "react": "^19.0.0",
44
45
  "react-cool-onclickoutside": "^1.7.0",
@@ -71,5 +72,5 @@
71
72
  "@types/redux-saga": "^0.10.5",
72
73
  "sass": "^1.86.0"
73
74
  },
74
- "gitHead": "d0654f37094c58a9982d7984e3fc8722f1fa24f0"
75
+ "gitHead": "4fa527098d5e67120adb7964777c044a09378332"
75
76
  }
@@ -8,12 +8,10 @@ interface ServerLoggingData {
8
8
  xRealIp?: string | string[];
9
9
  }
10
10
 
11
- const getServerLoggingData = (request: NextApiRequest): ServerLoggingData => ({
11
+ export const getServerLoggingData = (request: NextApiRequest): ServerLoggingData => ({
12
12
  origin: request.headers.origin,
13
13
  referer: request.headers.referer,
14
14
  userAgent: request.headers['user-agent'],
15
15
  xForwardedFor: request.headers['x-forwarded-for'],
16
16
  xRealIp: request.headers['x-real-ip'],
17
17
  });
18
-
19
- export default getServerLoggingData;
package/src/api/index.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { default as getServerLoggingData } from './getServerLoggingData';
2
- export { default as isBoardValid } from './isBoardValid';
3
- export { default as isCellValid } from './isCellValid';
4
- export { default as isCharacterValid } from './isCharacterValid';
5
- export { default as isRowValid } from './isRowValid';
1
+ export { getServerLoggingData } from './getServerLoggingData';
2
+ export { isBoardValid } from './isBoardValid';
3
+ export { isCellValid } from './isCellValid';
4
+ export { isCharacterValid } from './isCharacterValid';
5
+ export { isRowValid } from './isRowValid';
@@ -1,9 +1,9 @@
1
1
  import { BoardJson, CellJson, Config } from '@scrabble-solver/types';
2
2
 
3
- import isRowValid from './isRowValid';
3
+ import { isRowValid } from './isRowValid';
4
4
 
5
- const isBoardValid = (board: BoardJson, config: Config): boolean => {
6
- if (board.length !== config.boardSize) {
5
+ export const isBoardValid = (board: BoardJson, config: Config): boolean => {
6
+ if (board.length !== config.boardHeight) {
7
7
  return false;
8
8
  }
9
9
 
@@ -39,5 +39,3 @@ const areTwoCharacterTilesValid = (board: CellJson[][], config: Config): boolean
39
39
 
40
40
  return true;
41
41
  };
42
-
43
- export default isBoardValid;
@@ -1,15 +1,15 @@
1
1
  import { CellJson, Config } from '@scrabble-solver/types';
2
2
 
3
- import isCharacterValid from './isCharacterValid';
3
+ import { isCharacterValid } from './isCharacterValid';
4
4
 
5
- const isCellValid = (cell: CellJson, config: Config): boolean => {
5
+ export const isCellValid = (cell: CellJson, config: Config): boolean => {
6
6
  const { isEmpty, tile, x, y } = cell;
7
7
 
8
- if (x < 0 || x >= config.boardSize) {
8
+ if (x < 0 || x >= config.boardWidth) {
9
9
  return false;
10
10
  }
11
11
 
12
- if (y < 0 || y >= config.boardSize) {
12
+ if (y < 0 || y >= config.boardHeight) {
13
13
  return false;
14
14
  }
15
15
 
@@ -23,5 +23,3 @@ const isCellValid = (cell: CellJson, config: Config): boolean => {
23
23
 
24
24
  return true;
25
25
  };
26
-
27
- export default isCellValid;
@@ -1,7 +1,8 @@
1
1
  const TWO_TILE_CHARACTER_LENGTH = 2;
2
+
2
3
  const MAX_CHARACTER_LENGTH = TWO_TILE_CHARACTER_LENGTH;
3
4
 
4
- const isCharacterValid = (character: string): boolean => {
5
+ export const isCharacterValid = (character: string): boolean => {
5
6
  /*
6
7
  * We could be strict here and check whether config.hasCharacter(character) || character === BLANK
7
8
  * but since this case won't really affect/break solving, we don't need to worry about it.
@@ -9,5 +10,3 @@ const isCharacterValid = (character: string): boolean => {
9
10
  */
10
11
  return character.length !== 0 && character.length <= MAX_CHARACTER_LENGTH;
11
12
  };
12
-
13
- export default isCharacterValid;
@@ -1,9 +1,9 @@
1
1
  import { CellJson, Config } from '@scrabble-solver/types';
2
2
 
3
- import isCellValid from './isCellValid';
3
+ import { isCellValid } from './isCellValid';
4
4
 
5
- const isRowValid = (row: CellJson[], config: Config): boolean => {
6
- if (row.length !== config.boardSize) {
5
+ export const isRowValid = (row: CellJson[], config: Config): boolean => {
6
+ if (row.length !== config.boardWidth) {
7
7
  return false;
8
8
  }
9
9
 
@@ -15,5 +15,3 @@ const isRowValid = (row: CellJson[], config: Config): boolean => {
15
15
 
16
16
  return true;
17
17
  };
18
-
19
- export default isRowValid;
@@ -18,7 +18,7 @@ const ICON_PER_TYPE: Record<Props['variant'], FunctionComponent<SVGAttributes<SV
18
18
  warning: ExclamationTriangleFill,
19
19
  };
20
20
 
21
- const Alert: FunctionComponent<Props> = ({ children, className, variant, ...props }) => {
21
+ export const Alert: FunctionComponent<Props> = ({ children, className, variant, ...props }) => {
22
22
  const Icon = ICON_PER_TYPE[variant];
23
23
 
24
24
  return (
@@ -39,5 +39,3 @@ const Alert: FunctionComponent<Props> = ({ children, className, variant, ...prop
39
39
  </div>
40
40
  );
41
41
  };
42
-
43
- export default Alert;
@@ -1 +1 @@
1
- export { default } from './Alert';
1
+ export { Alert } from './Alert';
@@ -8,8 +8,6 @@ interface Props {
8
8
  className?: string;
9
9
  }
10
10
 
11
- const Badge: FunctionComponent<Props> = ({ children, className }) => (
11
+ export const Badge: FunctionComponent<Props> = ({ children, className }) => (
12
12
  <div className={classNames(styles.badge, className)}>{children}</div>
13
13
  );
14
-
15
- export default Badge;
@@ -1 +1 @@
1
- export { default } from './Badge';
1
+ export { Badge } from './Badge';
@@ -23,7 +23,7 @@ import {
23
23
  } from 'state';
24
24
 
25
25
  import styles from './Board.module.scss';
26
- import BoardPure from './BoardPure';
26
+ import { BoardPure } from './BoardPure';
27
27
  import { Actions, InputPrompt } from './components';
28
28
  import { useBoardStyle, useFloatingActions, useFloatingFocus, useFloatingInputPrompt, useGrid } from './hooks';
29
29
 
@@ -31,7 +31,7 @@ interface Props {
31
31
  className?: string;
32
32
  }
33
33
 
34
- const Board: FunctionComponent<Props> = ({ className }) => {
34
+ export const Board: FunctionComponent<Props> = ({ className }) => {
35
35
  const dispatch = useDispatch();
36
36
  const locale = useTypedSelector(selectLocale);
37
37
  const rows = useTypedSelector(selectRowsWithCandidate);
@@ -227,5 +227,3 @@ const Board: FunctionComponent<Props> = ({ className }) => {
227
227
  </>
228
228
  );
229
229
  };
230
-
231
- export default Board;
@@ -38,7 +38,7 @@ interface Props {
38
38
  onPaste: ClipboardEventHandler<HTMLInputElement>;
39
39
  }
40
40
 
41
- const BoardPure = forwardRef<HTMLDivElement, Props>(
41
+ const BoardPureBase = forwardRef<HTMLDivElement, Props>(
42
42
  (
43
43
  {
44
44
  className,
@@ -134,7 +134,7 @@ const BoardPure = forwardRef<HTMLDivElement, Props>(
134
134
  cell={cell}
135
135
  cellBottom={y < rows.length - 1 ? rows[y + 1][x] : undefined}
136
136
  cellLeft={x > 0 ? rows[y][x - 1] : undefined}
137
- cellRight={x < rows.length - 1 ? rows[y][x + 1] : undefined}
137
+ cellRight={x < rows[y].length - 1 ? rows[y][x + 1] : undefined}
138
138
  cellTop={y > 0 ? rows[y - 1][x] : undefined}
139
139
  inputRef={inputRefs[y][x]}
140
140
  key={x}
@@ -149,4 +149,4 @@ const BoardPure = forwardRef<HTMLDivElement, Props>(
149
149
  ),
150
150
  );
151
151
 
152
- export default memo(BoardPure);
152
+ export const BoardPure = memo(BoardPureBase);
@@ -9,8 +9,8 @@ import { findCell, isMac } from 'lib';
9
9
  import { selectCellFilter, selectInputMode, selectResultCandidateCells, useTranslate, useTypedSelector } from 'state';
10
10
  import { Direction } from 'types';
11
11
 
12
- import Button from '../../../Button';
13
- import ToggleDirectionButton from '../ToggleDirectionButton';
12
+ import { Button } from '../../../Button';
13
+ import { ToggleDirectionButton } from '../ToggleDirectionButton';
14
14
 
15
15
  import styles from './Actions.module.scss';
16
16
  import { getNextCellFilter } from './lib';
@@ -24,7 +24,7 @@ interface Props extends HTMLProps<HTMLDivElement> {
24
24
  onToggleFilterCell: MouseEventHandler<HTMLButtonElement>;
25
25
  }
26
26
 
27
- const Actions = forwardRef<HTMLDivElement, Props>(
27
+ export const Actions = forwardRef<HTMLDivElement, Props>(
28
28
  (
29
29
  { cell, className, direction, onDirectionToggle, onEnterWord, onToggleBlank, onToggleFilterCell, ...props },
30
30
  ref,
@@ -98,5 +98,3 @@ const Actions = forwardRef<HTMLDivElement, Props>(
98
98
  );
99
99
  },
100
100
  );
101
-
102
- export default Actions;
@@ -1 +1 @@
1
- export { default } from './Actions';
1
+ export { Actions } from './Actions';
@@ -21,7 +21,7 @@ import {
21
21
  useTypedSelector,
22
22
  } from 'state';
23
23
 
24
- import Tile from '../../../Tile';
24
+ import { Tile } from '../../../Tile';
25
25
 
26
26
  import styles from './Cell.module.scss';
27
27
 
@@ -38,7 +38,7 @@ interface Props {
38
38
  onFocus: (x: number, y: number) => void;
39
39
  }
40
40
 
41
- const Cell: FunctionComponent<Props> = ({
41
+ export const Cell: FunctionComponent<Props> = ({
42
42
  cell,
43
43
  cellBottom,
44
44
  cellLeft,
@@ -101,7 +101,7 @@ const Cell: FunctionComponent<Props> = ({
101
101
  })}
102
102
  className={classNames(styles.tile, className, {
103
103
  [styles.first3]: x < 3,
104
- [styles.last3]: config.boardSize - x - 1 < 3,
104
+ [styles.last3]: config.boardWidth - x - 1 < 3,
105
105
  [styles.sharpTopLeft]: cellTop?.hasTile() || cellLeft?.hasTile(),
106
106
  [styles.sharpTopRight]: cellTop?.hasTile() || cellRight?.hasTile(),
107
107
  [styles.sharpBottomLeft]: cellBottom?.hasTile() || cellLeft?.hasTile(),
@@ -123,5 +123,3 @@ const Cell: FunctionComponent<Props> = ({
123
123
  />
124
124
  );
125
125
  };
126
-
127
- export default Cell;
@@ -1 +1 @@
1
- export { default } from './Cell';
1
+ export { Cell } from './Cell';
@@ -5,8 +5,8 @@ import { Check } from 'icons';
5
5
  import { useTranslate } from 'state';
6
6
  import { Direction } from 'types';
7
7
 
8
- import Button from '../../../Button';
9
- import ToggleDirectionButton from '../ToggleDirectionButton';
8
+ import { Button } from '../../../Button';
9
+ import { ToggleDirectionButton } from '../ToggleDirectionButton';
10
10
 
11
11
  import styles from './InputPrompt.module.scss';
12
12
 
@@ -18,7 +18,7 @@ interface Props extends Omit<HTMLProps<HTMLFormElement>, 'onSubmit'> {
18
18
  onSubmit: (input: string) => void;
19
19
  }
20
20
 
21
- const InputPrompt = forwardRef<HTMLFormElement, Props>(
21
+ export const InputPrompt = forwardRef<HTMLFormElement, Props>(
22
22
  ({ className, direction, initialValue, onDirectionToggle, onSubmit, ...props }, ref) => {
23
23
  const translate = useTranslate();
24
24
  const [inputRef, setInputRef] = useState<HTMLInputElement | null>(null);
@@ -78,5 +78,3 @@ const InputPrompt = forwardRef<HTMLFormElement, Props>(
78
78
  );
79
79
  },
80
80
  );
81
-
82
- export default InputPrompt;
@@ -1 +1 @@
1
- export { default } from './InputPrompt';
1
+ export { InputPrompt } from './InputPrompt';
@@ -6,7 +6,7 @@ import { ArrowDown } from 'icons';
6
6
  import { useTranslate } from 'state';
7
7
  import { Direction } from 'types';
8
8
 
9
- import Button from '../../../Button';
9
+ import { Button } from '../../../Button';
10
10
 
11
11
  import styles from './ToggleDirectionButton.module.scss';
12
12
 
@@ -15,7 +15,7 @@ interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
15
15
  direction: Direction;
16
16
  }
17
17
 
18
- const ToggleDirectionButton: FunctionComponent<Props> = ({ className, direction, ...props }) => {
18
+ export const ToggleDirectionButton: FunctionComponent<Props> = ({ className, direction, ...props }) => {
19
19
  const translate = useTranslate();
20
20
  const isTouchDevice = useIsTouchDevice();
21
21
 
@@ -39,5 +39,3 @@ const ToggleDirectionButton: FunctionComponent<Props> = ({ className, direction,
39
39
  />
40
40
  );
41
41
  };
42
-
43
- export default ToggleDirectionButton;
@@ -1 +1 @@
1
- export { default } from './ToggleDirectionButton';
1
+ export { ToggleDirectionButton } from './ToggleDirectionButton';
@@ -1,4 +1,4 @@
1
- export { default as Actions } from './Actions';
2
- export { default as Cell } from './Cell';
3
- export { default as InputPrompt } from './InputPrompt';
4
- export { default as ToggleDirectionButton } from './ToggleDirectionButton';
1
+ export { Actions } from './Actions';
2
+ export { Cell } from './Cell';
3
+ export { InputPrompt } from './InputPrompt';
4
+ export { ToggleDirectionButton } from './ToggleDirectionButton';
@@ -1,6 +1,6 @@
1
- export { default as useBackgroundImage } from './useBackgroundImage';
2
- export { default as useBoardStyle } from './useBoardStyle';
3
- export { default as useFloatingActions } from './useFloatingActions';
4
- export { default as useFloatingFocus } from './useFloatingFocus';
5
- export { default as useFloatingInputPrompt } from './useFloatingInputPrompt';
6
- export { default as useGrid } from './useGrid';
1
+ export { useBackgroundImage } from './useBackgroundImage';
2
+ export { useBoardStyle } from './useBoardStyle';
3
+ export { useFloatingActions } from './useFloatingActions';
4
+ export { useFloatingFocus } from './useFloatingFocus';
5
+ export { useFloatingInputPrompt } from './useFloatingInputPrompt';
6
+ export { useGrid } from './useGrid';
@@ -24,17 +24,17 @@ const BONUS_WORD_2 = 'b2';
24
24
  const BONUS_WORD_3 = 'b3';
25
25
  const BONUS_WORD_4 = 'b4';
26
26
 
27
- const useBackgroundImage = () => {
28
- const { boardSize, cellSize, coordinatesSize } = useAppLayout();
27
+ export const useBackgroundImage = () => {
28
+ const { boardHeight, boardWidth, cellSize, coordinatesSize } = useAppLayout();
29
29
  const locale = useTypedSelector(selectLocale);
30
30
  const { direction } = LOCALE_FEATURES[locale];
31
31
  const showCoordinates = useTypedSelector(selectShowCoordinates);
32
32
  const { isLessThanXs } = useMediaQueries();
33
33
  const borderRadius = isLessThanXs ? BORDER_RADIUS_XS : BORDER_RADIUS;
34
34
  const config = useTypedSelector(selectConfig);
35
- const center = { x: Math.floor(config.boardSize / 2), y: Math.floor(config.boardSize / 2) };
36
- const viewBoxHeight = boardSize;
37
- const viewBoxWidth = boardSize;
35
+ const center = { x: Math.floor(config.boardWidth / 2), y: Math.floor(config.boardHeight / 2) };
36
+ const viewBoxHeight = boardHeight;
37
+ const viewBoxWidth = boardWidth;
38
38
  const bonusSize = cellSize * 0.8;
39
39
  const bonusOffset = cellSize * 0.1;
40
40
  const iconSize = cellSize * 0.4;
@@ -157,7 +157,7 @@ const useBackgroundImage = () => {
157
157
  </>
158
158
  )}
159
159
 
160
- {Array.from({ length: config.boardSize - 1 }).map((_value, index) => (
160
+ {Array.from({ length: config.boardHeight - 1 }).map((_value, index) => (
161
161
  <use
162
162
  key={index}
163
163
  href={`#${HORIZONTAL_LINE}`}
@@ -165,7 +165,7 @@ const useBackgroundImage = () => {
165
165
  />
166
166
  ))}
167
167
 
168
- {Array.from({ length: config.boardSize - 1 }).map((_value, index) => (
168
+ {Array.from({ length: config.boardWidth - 1 }).map((_value, index) => (
169
169
  <use
170
170
  key={index}
171
171
  href={`#${VERTICAL_LINE}`}
@@ -213,5 +213,3 @@ const useBackgroundImage = () => {
213
213
  const dataUrl = `data:image/svg+xml;base64,${encodedSvg}`;
214
214
  return dataUrl;
215
215
  };
216
-
217
- export default useBackgroundImage;
@@ -5,9 +5,9 @@ import { getTileSizes } from 'lib';
5
5
  import { BORDER_WIDTH } from 'parameters';
6
6
  import { selectConfig, selectShowCoordinates, useTypedSelector } from 'state';
7
7
 
8
- import useBackgroundImage from './useBackgroundImage';
8
+ import { useBackgroundImage } from './useBackgroundImage';
9
9
 
10
- const useBoardStyle = () => {
10
+ export const useBoardStyle = () => {
11
11
  const config = useTypedSelector(selectConfig);
12
12
  const { cellSize } = useAppLayout();
13
13
  const { tileFontSize } = getTileSizes(cellSize);
@@ -20,17 +20,15 @@ const useBoardStyle = () => {
20
20
  fontSize: tileFontSize,
21
21
  gridTemplateColumns:
22
22
  showCoordinates === 'hidden'
23
- ? `repeat(${config.boardSize}, 1fr)`
24
- : `${coordinatesSize}px repeat(${config.boardSize}, 1fr)`,
23
+ ? `repeat(${config.boardWidth}, 1fr)`
24
+ : `${coordinatesSize}px repeat(${config.boardWidth}, 1fr)`,
25
25
  gridTemplateRows:
26
26
  showCoordinates === 'hidden'
27
- ? `repeat(${config.boardSize}, 1fr)`
28
- : `${coordinatesSize}px repeat(${config.boardSize}, 1fr)`,
27
+ ? `repeat(${config.boardHeight}, 1fr)`
28
+ : `${coordinatesSize}px repeat(${config.boardHeight}, 1fr)`,
29
29
  }),
30
- [backgroundImage, config.boardSize, coordinatesSize, showCoordinates, tileFontSize],
30
+ [backgroundImage, config.boardHeight, config.boardWidth, coordinatesSize, showCoordinates, tileFontSize],
31
31
  );
32
32
 
33
33
  return boardStyle;
34
34
  };
35
-
36
- export default useBoardStyle;
@@ -3,7 +3,7 @@ import { autoUpdate, offset, shift, useFloating } from '@floating-ui/react';
3
3
  import { useAppLayout } from 'hooks';
4
4
  import { BOARD_CELL_ACTIONS_OFFSET } from 'parameters';
5
5
 
6
- const useFloatingActions = () => {
6
+ export const useFloatingActions = () => {
7
7
  const { actionsWidth } = useAppLayout();
8
8
 
9
9
  return useFloating({
@@ -18,5 +18,3 @@ const useFloatingActions = () => {
18
18
  whileElementsMounted: autoUpdate,
19
19
  });
20
20
  };
21
-
22
- export default useFloatingActions;
@@ -1,10 +1,8 @@
1
1
  import { autoUpdate, useFloating } from '@floating-ui/react';
2
2
 
3
- const useFloatingFocus = () => {
3
+ export const useFloatingFocus = () => {
4
4
  return useFloating({
5
5
  placement: 'top-start',
6
6
  whileElementsMounted: autoUpdate,
7
7
  });
8
8
  };
9
-
10
- export default useFloatingFocus;
@@ -2,7 +2,7 @@ import { autoUpdate, offset, shift, useFloating } from '@floating-ui/react';
2
2
 
3
3
  import { BOARD_CELL_ACTIONS_OFFSET } from 'parameters';
4
4
 
5
- const useFloatingInputPrompt = () => {
5
+ export const useFloatingInputPrompt = () => {
6
6
  return useFloating({
7
7
  middleware: [
8
8
  offset({
@@ -15,5 +15,3 @@ const useFloatingInputPrompt = () => {
15
15
  whileElementsMounted: autoUpdate,
16
16
  });
17
17
  };
18
-
19
- export default useFloatingInputPrompt;
@@ -40,7 +40,7 @@ interface Actions {
40
40
  onPaste: ClipboardEventHandler<HTMLInputElement>;
41
41
  }
42
42
 
43
- const useGrid = (rows: Cell[][]): [State, Actions] => {
43
+ export const useGrid = (rows: Cell[][]): [State, Actions] => {
44
44
  const height = rows.length;
45
45
  const width = rows[0].length;
46
46
  const dispatch = useDispatch();
@@ -106,7 +106,7 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
106
106
  };
107
107
 
108
108
  characters.forEach((character) => {
109
- if (x >= config.boardSize || y >= config.boardSize) {
109
+ if (x >= config.boardWidth || y >= config.boardHeight) {
110
110
  return;
111
111
  }
112
112
 
@@ -374,5 +374,3 @@ const useGrid = (rows: Cell[][]): [State, Actions] => {
374
374
  { insertValue, onChange, onDirectionToggle, onFocus, onKeyDown, onPaste },
375
375
  ];
376
376
  };
377
-
378
- export default useGrid;
@@ -1 +1 @@
1
- export { default } from './Board';
1
+ export { Board } from './Board';
@@ -3,7 +3,7 @@ import { Bonus } from '@scrabble-solver/types';
3
3
 
4
4
  import { COLOR_BONUS_CHARACTER, COLOR_BONUS_CHARACTER_MULTIPLIER, COLOR_BONUS_WORD } from 'parameters';
5
5
 
6
- const getBonusColor = (bonus: Bonus): string => {
6
+ export const getBonusColor = (bonus: Bonus): string => {
7
7
  if (bonus.type === BONUS_WORD) {
8
8
  return COLOR_BONUS_WORD[bonus.multiplier];
9
9
  }
@@ -14,5 +14,3 @@ const getBonusColor = (bonus: Bonus): string => {
14
14
 
15
15
  return COLOR_BONUS_CHARACTER_MULTIPLIER[bonus.multiplier];
16
16
  };
17
-
18
- export default getBonusColor;
@@ -1,6 +1,6 @@
1
1
  import { Point } from 'types';
2
2
 
3
- const getPositionInGrid = <T>(grid: T[][], constraint: (value: T) => boolean): Point | undefined => {
3
+ export const getPositionInGrid = <T>(grid: T[][], constraint: (value: T) => boolean): Point | undefined => {
4
4
  for (let y = 0; y < grid.length; ++y) {
5
5
  for (let x = 0; x < grid[0].length; ++x) {
6
6
  if (constraint(grid[y][x])) {
@@ -11,5 +11,3 @@ const getPositionInGrid = <T>(grid: T[][], constraint: (value: T) => boolean): P
11
11
 
12
12
  return undefined;
13
13
  };
14
-
15
- export default getPositionInGrid;
@@ -1,2 +1,2 @@
1
- export { default as getBonusColor } from './getBonusColor';
2
- export { default as getPositionInGrid } from './getPositionInGrid';
1
+ export { getBonusColor } from './getBonusColor';
2
+ export { getPositionInGrid } from './getPositionInGrid';
@@ -4,7 +4,7 @@ import { ButtonHTMLAttributes, FunctionComponent, ReactNode, SVGAttributes } fro
4
4
  import { Tooltip } from '../Tooltip';
5
5
 
6
6
  import styles from './Button.module.scss';
7
- import Link from './Link';
7
+ import { Link } from './Link';
8
8
 
9
9
  interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
10
10
  'aria-label': string;
@@ -15,7 +15,7 @@ interface Props extends ButtonHTMLAttributes<HTMLButtonElement> {
15
15
  wide?: boolean;
16
16
  }
17
17
 
18
- const Button: FunctionComponent<Props> = ({
18
+ const ButtonBase: FunctionComponent<Props> = ({
19
19
  children,
20
20
  className,
21
21
  Icon,
@@ -45,6 +45,6 @@ const Button: FunctionComponent<Props> = ({
45
45
  );
46
46
  };
47
47
 
48
- export default Object.assign(Button, {
48
+ export const Button = Object.assign(ButtonBase, {
49
49
  Link,
50
50
  });
@@ -15,7 +15,7 @@ interface Props extends AnchorHTMLAttributes<HTMLAnchorElement> {
15
15
  wide?: boolean;
16
16
  }
17
17
 
18
- const Link: FunctionComponent<Props> = ({
18
+ export const Link: FunctionComponent<Props> = ({
19
19
  children,
20
20
  className,
21
21
  Icon,
@@ -43,5 +43,3 @@ const Link: FunctionComponent<Props> = ({
43
43
  </Tooltip>
44
44
  );
45
45
  };
46
-
47
- export default Link;
@@ -1 +1 @@
1
- export { default } from './Button';
1
+ export { Button } from './Button';