@truelab/truelogic 4.2.2 → 4.3.0-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 (231) hide show
  1. package/dist/100.min.js +1 -1
  2. package/dist/103.min.js +1 -1
  3. package/dist/113.min.js +1 -1
  4. package/dist/172.min.js +1 -1
  5. package/dist/180.min.js +1 -1
  6. package/dist/201.min.js +1 -1
  7. package/dist/203.min.js +1 -1
  8. package/dist/266.min.js +1 -1
  9. package/dist/282.min.js +1 -1
  10. package/dist/383.min.js +1 -1
  11. package/dist/4.min.js +1 -1
  12. package/dist/423.min.js +1 -1
  13. package/dist/487.min.js +1 -1
  14. package/dist/546.min.js +1 -1
  15. package/dist/585.min.js +1 -1
  16. package/dist/59.min.js +1 -1
  17. package/dist/683.min.js +1 -1
  18. package/dist/699.min.js +1 -1
  19. package/dist/728.min.js +1 -1
  20. package/dist/755.min.js +1 -1
  21. package/dist/756.min.js +1 -1
  22. package/dist/761.min.js +1 -1
  23. package/dist/763.min.js +1 -1
  24. package/dist/80.min.js +1 -1
  25. package/dist/887.91365f04.css +3 -0
  26. package/dist/887.min.js +1 -0
  27. package/dist/90.min.js +1 -1
  28. package/dist/929.min.js +1 -1
  29. package/dist/937.min.js +1 -1
  30. package/dist/988.min.js +1 -1
  31. package/dist/assets/events-empty.e864d6cd0e2060d9eb98.webp +0 -0
  32. package/dist/assets/locales/cs.json +5 -1
  33. package/dist/assets/locales/de.json +5 -1
  34. package/dist/assets/locales/en.json +5 -1
  35. package/dist/assets/locales/es.json +5 -1
  36. package/dist/assets/locales/fi.json +5 -1
  37. package/dist/assets/locales/fr.json +5 -1
  38. package/dist/assets/locales/hi.json +5 -1
  39. package/dist/assets/locales/hr.json +5 -1
  40. package/dist/assets/locales/id.json +5 -1
  41. package/dist/assets/locales/it.json +5 -1
  42. package/dist/assets/locales/ja.json +5 -1
  43. package/dist/assets/locales/kk.json +5 -1
  44. package/dist/assets/locales/ko.json +5 -1
  45. package/dist/assets/locales/nl.json +5 -1
  46. package/dist/assets/locales/no.json +5 -1
  47. package/dist/assets/locales/pl.json +5 -1
  48. package/dist/assets/locales/pt.json +5 -1
  49. package/dist/assets/locales/ru.json +5 -1
  50. package/dist/assets/locales/sc_en.json +26 -22
  51. package/dist/assets/locales/sr.json +5 -1
  52. package/dist/assets/locales/sv.json +5 -1
  53. package/dist/assets/locales/th.json +5 -1
  54. package/dist/assets/locales/tr.json +5 -1
  55. package/dist/assets/locales/uk.json +5 -1
  56. package/dist/assets/locales/vi.json +5 -1
  57. package/dist/assets/locales/zh.json +5 -1
  58. package/dist/truelogic.min.css +1 -1
  59. package/dist/truelogic.min.js +1 -1
  60. package/dist/types/src/app/lib/functions/getConfigurationNonCriticalImages.test.d.ts +1 -0
  61. package/dist/types/src/app/lib/hooks/useSandboxGuiEvents.d.ts +5 -0
  62. package/dist/types/src/app/lib/singletones/publicEmitter.d.ts +9 -0
  63. package/dist/types/src/app/store.d.ts +35 -30
  64. package/dist/types/src/entities/autoplay/model/autoPlaySlice.d.ts +7 -6
  65. package/dist/types/src/entities/bonus/model/bonusSlice.d.ts +35 -30
  66. package/dist/types/src/entities/gameInfo/index.d.ts +3 -1
  67. package/dist/types/src/entities/gameInfo/lib/getGameInfoSections.d.ts +24 -0
  68. package/dist/types/src/entities/gameInfo/lib/getGameInfoSections.test.d.ts +1 -0
  69. package/dist/types/src/entities/gameInfo/model/gameInfoSlice.d.ts +4 -3
  70. package/dist/types/src/entities/gameInfo/model/types.d.ts +23 -2
  71. package/dist/types/src/entities/menu/index.d.ts +2 -1
  72. package/dist/types/src/entities/menu/model/menuSlice.d.ts +34 -0
  73. package/dist/types/src/entities/menu/model/menuSlice.test.d.ts +1 -0
  74. package/dist/types/src/entities/modals/index.d.ts +0 -1
  75. package/dist/types/src/entities/payTable/model/types.d.ts +5 -0
  76. package/dist/types/src/entities/payTable/ui/PayTableConstructor/PayTableConstructor.d.ts +13 -1
  77. package/dist/types/src/entities/payTable/ui/PayTableConstructor/PayTableConstructor.stories.d.ts +8 -1
  78. package/dist/types/src/entities/payTable/ui/PayTableConstructor/items/PayTableLine.stories.d.ts +5 -1
  79. package/dist/types/src/entities/payTable/ui/PayTableConstructor/items/PayTableSymbolGridV1.stories.d.ts +5 -1
  80. package/dist/types/src/entities/payTable/ui/PayTableConstructor/items/PayTableSymbolSpecialV1.stories.d.ts +5 -1
  81. package/dist/types/src/entities/payTable/ui/PayTableConstructor/items/PayTableSymbolSpecialV2.stories.d.ts +5 -1
  82. package/dist/types/src/entities/payTable/ui/PayTableConstructor/items/PayTableTitle.stories.d.ts +5 -1
  83. package/dist/types/src/entities/realityCheck/index.d.ts +0 -1
  84. package/dist/types/src/entities/roundsHistory/ui/RoundsHistoryCard.d.ts +1 -0
  85. package/dist/types/src/entities/sound/ui/SoundSettingsSwitcher/SoundSettingsSwitcher.d.ts +1 -0
  86. package/dist/types/src/features/menu/index.d.ts +2 -1
  87. package/dist/types/src/features/menu/lib/useInfoClick.d.ts +10 -0
  88. package/dist/types/src/features/menu/ui/InfoButton/InfoButton.d.ts +15 -0
  89. package/dist/types/src/features/menu/ui/PanelInfo/PanelInfo.d.ts +11 -0
  90. package/dist/types/src/modules/promoLobby/app/model/index.d.ts +2 -2
  91. package/dist/types/src/modules/promoLobby/app/model/promoLobbySlice.d.ts +30 -2
  92. package/dist/types/src/modules/promoLobby/app/model/promoLobbySlice.test.d.ts +1 -0
  93. package/dist/types/src/modules/promoLobby/app/model/types.d.ts +6 -1
  94. package/dist/types/src/modules/promoLobby/entities/modals/index.d.ts +0 -2
  95. package/dist/types/src/modules/promoLobby/entities/modals/ui/ModalBase.d.ts +1 -1
  96. package/dist/types/src/modules/promoLobby/entities/modals/ui/ModalBaseHeader.d.ts +1 -1
  97. package/dist/types/src/modules/promoLobby/entities/prizeDrop/lib/isTrueTokenCampaign.d.ts +2 -0
  98. package/dist/types/src/modules/promoLobby/entities/prizeDrop/ui/PrizeDropEvents/PrizeDropEventsEmpty.d.ts +5 -0
  99. package/dist/types/src/modules/promoLobby/entities/prizeDrop/ui/PrizeDropEvents/PrizeDropEventsList.d.ts +2 -0
  100. package/dist/types/src/modules/promoLobby/entities/prizeDrop/ui/PrizeDropEvents/components/PrizeDropEventsPrizes.d.ts +4 -0
  101. package/dist/types/src/modules/promoLobby/shared/lib/analytics/promoLobbyAnalytics.d.ts +2 -1
  102. package/dist/types/src/modules/promoLobby/shared/lib/analytics/subscribePromoLobbyAnalytics.d.ts +9 -0
  103. package/dist/types/src/modules/promoLobby/shared/lib/hooks/useHasNotifications.d.ts +7 -3
  104. package/dist/types/src/modules/promoLobby/shared/modals/modalsSlice.d.ts +2 -1
  105. package/dist/types/src/modules/promoLobby/styles/tailwind.config.d.ts +3 -2
  106. package/dist/types/src/modules/promoLobby/widgets/panel/ui/PanelPromoLobby.d.ts +1 -4
  107. package/dist/types/src/modules/promoLobby/widgets/promoLobbyTab/index.d.ts +1 -0
  108. package/dist/types/src/modules/promoLobby/widgets/promoLobbyTab/ui/PromoLobbyTab.d.ts +7 -0
  109. package/dist/types/src/modules/promoLobby/widgets/topBar/ui/TopBar.d.ts +9 -0
  110. package/dist/types/src/sandbox/config.d.ts +12 -12
  111. package/dist/types/src/sandbox/gui/gui.d.ts +5 -6
  112. package/dist/types/src/sandbox/gui/helpers/index.d.ts +1 -1
  113. package/dist/types/src/sandbox/gui/helpers/serializationGameInfo.d.ts +6 -0
  114. package/dist/types/src/sandbox/gui/sections/configuration/gameInfo/index.d.ts +12 -0
  115. package/dist/types/src/sandbox/gui/sections/configuration/gameInfo/items/generateInfoItem.d.ts +11 -0
  116. package/dist/types/src/sandbox/gui/sections/configuration/gameInfo/items/generateLineItem.d.ts +11 -0
  117. package/dist/types/src/sandbox/gui/sections/configuration/gameInfo/items/generateSymbolItem.d.ts +11 -0
  118. package/dist/types/src/sandbox/gui/sections/configuration/gameInfo/items/index.d.ts +3 -0
  119. package/dist/types/src/sandbox/gui/sections/promoLobby/index.d.ts +8 -0
  120. package/dist/types/src/sandbox/presets/index.d.ts +6 -2
  121. package/dist/types/src/sandbox/presets/prizeDrop/campaignsList.d.ts +2 -0
  122. package/dist/types/src/sandbox/presets/prizeDrop/lobbyInit.d.ts +2 -0
  123. package/dist/types/src/sandbox/presets/rewards/index.d.ts +1 -1
  124. package/dist/types/src/sandbox/presets/rewards/list.d.ts +0 -2
  125. package/dist/types/src/sandbox/presets/steps/counters.d.ts +7 -0
  126. package/dist/types/src/sandbox/presets/steps/simple.d.ts +3 -0
  127. package/dist/types/src/sandbox/types/GameInfo.d.ts +11 -0
  128. package/dist/types/src/sandbox/types/PayTable.d.ts +1 -6
  129. package/dist/types/src/screens/welcome/ui/WelcomeScreen/WelcomeScreen.stories.d.ts +1 -0
  130. package/dist/types/src/shared/api/config/types.d.ts +4 -0
  131. package/dist/types/src/shared/api/modules/promoLobby/config.d.ts +4 -0
  132. package/dist/types/src/shared/lib/classes/integration/OperatorAbstractService.d.ts +0 -2
  133. package/dist/types/src/shared/lib/classes/integration/OperatorBaseService.d.ts +0 -4
  134. package/dist/types/src/shared/lib/classes/integration/OperatorGeneralService.d.ts +1 -3
  135. package/dist/types/src/shared/lib/constants/cssVars.d.ts +8 -0
  136. package/dist/types/src/shared/lib/constants/index.d.ts +1 -0
  137. package/dist/types/src/shared/lib/constants/widgetZIndex.d.ts +1 -0
  138. package/dist/types/src/shared/lib/functions/formatCount.d.ts +5 -0
  139. package/dist/types/src/shared/lib/functions/index.d.ts +1 -0
  140. package/dist/types/src/shared/lib/hooks/index.d.ts +1 -1
  141. package/dist/types/src/shared/lib/hooks/useElementsBottomCssVar.d.ts +14 -0
  142. package/dist/types/src/shared/lib/panelLayout/types.d.ts +2 -2
  143. package/dist/types/src/shared/lib/singletones/analyticsEmitter.d.ts +0 -1
  144. package/dist/types/src/shared/lib/singletones/gameEmitter.d.ts +22 -1
  145. package/dist/types/src/shared/lib/singletones/operatorEmitter.d.ts +0 -2
  146. package/dist/types/src/shared/lib/store/redux.d.ts +14 -12
  147. package/dist/types/src/shared/lib/tests/utils/getPreloadedState.d.ts +7 -6
  148. package/dist/types/src/shared/lib/tests/utils/setupTestStore.d.ts +14 -12
  149. package/dist/types/src/shared/model/menu/types.d.ts +13 -1
  150. package/dist/types/src/shared/model/modals/index.d.ts +1 -1
  151. package/dist/types/src/shared/model/modals/modalsSlice.d.ts +2 -3
  152. package/dist/types/src/shared/modules/menuInnerPage.d.ts +25 -0
  153. package/dist/types/src/shared/modules/menuTabsRegistry.d.ts +3 -0
  154. package/dist/types/src/shared/ui/CustomScroll/CustomScroll.d.ts +8 -0
  155. package/dist/types/src/shared/ui/FixedWidthLabel/FixedWidthLabel.d.ts +1 -0
  156. package/dist/types/src/shared/ui/InfoConstructor/InfoConstructor.d.ts +3 -1
  157. package/dist/types/src/shared/ui/InfoConstructor/items/InfoIconListItem.d.ts +4 -1
  158. package/dist/types/src/shared/ui/InfoSeparator/InfoSeparator.d.ts +13 -0
  159. package/dist/types/src/shared/ui/InfoSeparator/index.d.ts +1 -0
  160. package/dist/types/src/shared/ui/SettingsSwitchCard/SettingsSwitchCard.d.ts +16 -0
  161. package/dist/types/src/shared/ui/SettingsSwitchCard/index.d.ts +1 -0
  162. package/dist/types/src/shared/ui/Switch/index.d.ts +0 -2
  163. package/dist/types/src/shared/ui/TabBar/TabBar.d.ts +16 -0
  164. package/dist/types/src/shared/ui/TabBar/TabBar.stories.d.ts +1804 -0
  165. package/dist/types/src/shared/ui/TabBar/TabBarIconButton.d.ts +8 -0
  166. package/dist/types/src/shared/ui/TabBar/TabBarItem.d.ts +12 -0
  167. package/dist/types/src/shared/ui/TabBar/index.d.ts +3 -0
  168. package/dist/types/src/shared/ui/TapAnywhere/TapAnywhere.d.ts +4 -2
  169. package/dist/types/src/widgets/menu/index.d.ts +3 -0
  170. package/dist/types/src/widgets/menu/lib/selectors.d.ts +20 -0
  171. package/dist/types/src/widgets/menu/lib/useMenuTabs.d.ts +32 -0
  172. package/dist/types/src/widgets/menu/ui/GameInfoLight/GameInfoLight.d.ts +16 -0
  173. package/dist/types/src/widgets/menu/ui/GameInfoLight/GameInfoLight.stories.d.ts +23 -0
  174. package/dist/types/src/widgets/menu/ui/MenuHeader/MenuHeader.d.ts +18 -0
  175. package/dist/types/src/widgets/menu/ui/MenuTabBar/MenuTabBar.d.ts +11 -0
  176. package/dist/types/src/widgets/menu/ui/MenuTabContent/MenuTabContent.d.ts +17 -0
  177. package/dist/types/src/widgets/menu/ui/ModalMenu/ModalMenu.stories.d.ts +23 -0
  178. package/dist/types/src/widgets/menu/ui/ModalMenu/ModalMenu.test.d.ts +1 -0
  179. package/dist/types/src/widgets/menu/ui/tabs/ActivityTab.d.ts +2 -0
  180. package/dist/types/src/widgets/menu/ui/tabs/ActivityTab.test.d.ts +1 -0
  181. package/dist/types/src/widgets/menu/ui/tabs/GameInfoTab.d.ts +14 -0
  182. package/dist/types/src/widgets/menu/ui/tabs/GameInfoTab.test.d.ts +1 -0
  183. package/dist/types/src/widgets/menu/ui/tabs/RealityCheckSettings.d.ts +7 -0
  184. package/dist/types/src/widgets/menu/ui/tabs/RealityCheckSettings.test.d.ts +1 -0
  185. package/dist/types/src/widgets/menu/ui/tabs/RoundDetailsPage.d.ts +9 -0
  186. package/dist/types/src/widgets/menu/ui/tabs/SettingsTab.d.ts +2 -0
  187. package/dist/types/src/widgets/{modals/ui/ModalSettings.stories.d.ts → menu/ui/tabs/SettingsTab.stories.d.ts} +3 -3
  188. package/dist/types/src/widgets/modals/index.d.ts +0 -7
  189. package/dist/types/src/widgets/modals/ui/ModalRealityCheckReminder.test.d.ts +1 -0
  190. package/package.json +1 -1
  191. package/dist/318.e2d54eb1.css +0 -3
  192. package/dist/318.min.js +0 -1
  193. package/dist/assets/coming-soon.378973f1d8788623bbe9.webp +0 -0
  194. package/dist/assets/true-coin.1428441fe478e319cb4e.webp +0 -0
  195. package/dist/types/src/entities/menu/ui/MenuSwitchItem.d.ts +0 -6
  196. package/dist/types/src/entities/menu/ui/MenuSwitchItem.stories.d.ts +0 -35
  197. package/dist/types/src/entities/modals/ui/ModalMenuItemCard.d.ts +0 -8
  198. package/dist/types/src/entities/realityCheck/ui/RealityCheckSwitcher/RealityCheckSwitcher.d.ts +0 -7
  199. package/dist/types/src/features/menu/ui/PanelMenu/PanelMenu.d.ts +0 -10
  200. package/dist/types/src/modules/promoLobby/entities/modals/ui/ModalFullHeightBase.d.ts +0 -10
  201. package/dist/types/src/modules/promoLobby/entities/modals/ui/ModalMenuItemCard.d.ts +0 -8
  202. package/dist/types/src/modules/promoLobby/screens/InfoScreen/InfoScreen.d.ts +0 -1
  203. package/dist/types/src/modules/promoLobby/screens/ProfileScreen/ProfileScreen.d.ts +0 -1
  204. package/dist/types/src/modules/promoLobby/shared/lib/constants/index.d.ts +0 -1
  205. package/dist/types/src/modules/promoLobby/shared/lib/constants/widgetZIndex.d.ts +0 -3
  206. package/dist/types/src/modules/promoLobby/shared/lib/hooks/usePromoLobbyAnalyticsEvents.d.ts +0 -1
  207. package/dist/types/src/modules/promoLobby/widgets/modals/ui/ModalPromoLobby.d.ts +0 -2
  208. package/dist/types/src/modules/promoLobby/widgets/navbar/index.d.ts +0 -2
  209. package/dist/types/src/modules/promoLobby/widgets/navbar/lib/navbarConfig.d.ts +0 -7
  210. package/dist/types/src/modules/promoLobby/widgets/navbar/ui/Navbar.d.ts +0 -1
  211. package/dist/types/src/modules/promoLobby/widgets/navbar/ui/NavbarItem.d.ts +0 -12
  212. package/dist/types/src/sandbox/gui/helpers/serializationPayTable.d.ts +0 -3
  213. package/dist/types/src/sandbox/gui/sections/configuration/gameInfo.d.ts +0 -2
  214. package/dist/types/src/sandbox/gui/sections/configuration/payTable.d.ts +0 -2
  215. package/dist/types/src/shared/lib/hooks/useFullScreen.d.ts +0 -5
  216. package/dist/types/src/shared/lib/hooks/useFullScreenSupport.d.ts +0 -1
  217. package/dist/types/src/shared/model/fullScreen/fullScreenSlice.d.ts +0 -7
  218. package/dist/types/src/shared/model/fullScreen/index.d.ts +0 -1
  219. package/dist/types/src/shared/ui/Switch/SwitchItem.d.ts +0 -21
  220. package/dist/types/src/shared/ui/Switch/SwitchItem.stories.d.ts +0 -14
  221. package/dist/types/src/widgets/modals/ui/ModalGameInfo.d.ts +0 -1
  222. package/dist/types/src/widgets/modals/ui/ModalMenu/ModalMenu.stories.d.ts +0 -17
  223. package/dist/types/src/widgets/modals/ui/ModalPayTable.d.ts +0 -1
  224. package/dist/types/src/widgets/modals/ui/ModalPayTable.stories.d.ts +0 -15
  225. package/dist/types/src/widgets/modals/ui/ModalRealityCheck.d.ts +0 -1
  226. package/dist/types/src/widgets/modals/ui/ModalRoundDetails.d.ts +0 -1
  227. package/dist/types/src/widgets/modals/ui/ModalRoundsHistory.d.ts +0 -1
  228. package/dist/types/src/widgets/modals/ui/ModalSettings.d.ts +0 -1
  229. package/dist/types/src/widgets/topBar/ui/TopBar.d.ts +0 -5
  230. /package/dist/types/src/{widgets → modules/promoLobby/widgets}/topBar/index.d.ts +0 -0
  231. /package/dist/types/src/widgets/{modals → menu}/ui/ModalMenu/ModalMenu.d.ts +0 -0
@@ -8,6 +8,7 @@ export declare const apiPrizeDropLobbyInitPresets: {
8
8
  ended: string;
9
9
  liveJoinedNewWallet: string;
10
10
  upcomingOnly: string;
11
+ empty: string;
11
12
  };
12
13
  export declare const apiPrizeDropJoinCampaignPresets: {
13
14
  success: string;
@@ -18,9 +19,7 @@ export { apiWalletConvertPresets };
18
19
  export { apiWalletTransactionsPresets };
19
20
  export declare const apiRewardsListPresets: {
20
21
  empty: string;
21
- withTrueReward: string;
22
22
  withConvertReward: string;
23
- withMultipleTrueRewards: string;
24
23
  };
25
24
  export declare const apiRewardsClaimPresets: {
26
25
  success: string;
@@ -58,6 +57,11 @@ export declare const apiRoundReplayPresets: {
58
57
  replaySimple: string;
59
58
  replayStepped: string;
60
59
  };
60
+ /** `steps` of the sandbox Game logic section: what the fake game plays per round, in a loop. */
61
+ export declare const sandboxStepsPresets: {
62
+ default: string;
63
+ counters: string;
64
+ };
61
65
  export declare const payTablePresets: {
62
66
  symbolsSpecailV1: import("../../entities/payTable").TPayTableSymbolSpecialV1[];
63
67
  symbolsSpecailV2: import("../../entities/payTable").TPayTableSymbolSpecialV2[];
@@ -3,4 +3,6 @@ export declare const liveJoined: TApiPrizeDropCampaignsListResponse;
3
3
  /** Only a scheduled (UPCOMING) campaign — no running campaign. Used to verify the badge triggers on UPCOMING. */
4
4
  export declare const upcomingOnly: TApiPrizeDropCampaignsListResponse;
5
5
  export declare const liveNotJoined: TApiPrizeDropCampaignsListResponse;
6
+ /** No campaigns at all — the promo lobby tab shows its empty screen. */
7
+ export declare const noCampaigns: TApiPrizeDropCampaignsListResponse;
6
8
  export declare const ended: TApiPrizeDropCampaignsListResponse;
@@ -6,3 +6,5 @@ export declare const walletUnavailableInit: TApiPrizeDropLobbyInitResponse;
6
6
  export declare const liveJoinedInitNewWallet: TApiPrizeDropLobbyInitResponse;
7
7
  /** Preset for QA: only a scheduled (UPCOMING) campaign — verifies that badge appears without a LIVE campaign */
8
8
  export declare const upcomingOnlyInit: TApiPrizeDropLobbyInitResponse;
9
+ /** Preset for QA: no campaigns — the promo lobby tab shows the empty screen */
10
+ export declare const emptyInit: TApiPrizeDropLobbyInitResponse;
@@ -1,2 +1,2 @@
1
1
  export { failed as failedClaim, success as successClaim } from './claim';
2
- export { emptyList, withConvertReward, withMultipleTrueRewards, withTrueReward } from './list';
2
+ export { emptyList, withConvertReward } from './list';
@@ -1,5 +1,3 @@
1
1
  import { TApiRewardsListResponse } from '../../../shared/api/modules/promoLobby/rewards';
2
2
  export declare const emptyList: TApiRewardsListResponse;
3
- export declare const withTrueReward: TApiRewardsListResponse;
4
3
  export declare const withConvertReward: TApiRewardsListResponse;
5
- export declare const withMultipleTrueRewards: TApiRewardsListResponse;
@@ -0,0 +1,7 @@
1
+ import type { TSandboxStep } from '../../../sandbox/config';
2
+ /**
3
+ * Exercises the panel counter after a plain round: the typed `freespins` and `respins` variants
4
+ * (localized by the client, GEN.301/302) and a custom `title` shown verbatim — the sample is
5
+ * deliberately non-English, the way a real game localizes it on its own side.
6
+ */
7
+ export declare const sandboxStepsCounters: TSandboxStep[];
@@ -0,0 +1,3 @@
1
+ import type { TSandboxStep } from '../../../sandbox/config';
2
+ /** The everyday round: three plain spins, no features — the default the sandbox starts with. */
3
+ export declare const sandboxStepsSimple: TSandboxStep[];
@@ -0,0 +1,11 @@
1
+ import { TGameInfoConfig } from '../../entities/gameInfo';
2
+ import { TInfoItem } from '../../shared/ui/InfoConstructor';
3
+ import { TStoredPayTableItem } from './PayTable';
4
+ /**
5
+ * A block of the Game Info page as the GUI holds it. Blocks whose content is JSON (symbols, lines)
6
+ * keep it as text while a folder is open — the editor binding works with strings.
7
+ */
8
+ export type TStoredGameInfoItem = TInfoItem | TStoredPayTableItem;
9
+ export type TStoredGameInfoConfig = Omit<TGameInfoConfig, 'items'> & {
10
+ items: TStoredGameInfoItem[];
11
+ };
@@ -1,4 +1,4 @@
1
- import { TPayTableConfig, TPayTableSeparator, TPayTableSymbolGridV1, TPayTableSymbolSpecialV1, TPayTableSymbolSpecialV2, TPayTableTitle, TSymbolsGridV1Gap } from '../../entities/payTable';
1
+ import { TPayTableSeparator, TPayTableSymbolGridV1, TPayTableSymbolSpecialV1, TPayTableSymbolSpecialV2, TPayTableTitle } from '../../entities/payTable';
2
2
  export type TStoredPayTableSymbolSetting = {
3
3
  type: 'default' | 'custom' | 'dynamic';
4
4
  content: string;
@@ -11,8 +11,3 @@ export type TStoredPayTableLine = {
11
11
  lineBreak?: boolean;
12
12
  };
13
13
  export type TStoredPayTableItem = TPayTableTitle | TStoredPayTableSymbol | TStoredPayTableLine | TPayTableSeparator;
14
- export type TStoredPayTableConfig = {
15
- background?: TPayTableConfig['background'];
16
- items: TStoredPayTableItem[];
17
- symbolsGridV1Gap?: TSymbolsGridV1Gap;
18
- };
@@ -10,6 +10,7 @@ export declare const DefaultWithBigText: TStory;
10
10
  export declare const DefaultWithCustomTheme: TStory;
11
11
  export declare const DefaultWithBackground: TStory;
12
12
  export declare const DefaultWithoutVolatility: TStory;
13
+ export declare const DefaultWithoutInfoButton: TStory;
13
14
  export declare const DefaultLandscapeHigh: TStory;
14
15
  export declare const DefaultLandscapeWide: TStory;
15
16
  export declare const DefaultPortrait: TStory;
@@ -67,6 +67,10 @@ export type TSessionUrls = {
67
67
  export type TPrizeDrop = {
68
68
  apiUrl: string;
69
69
  token: string;
70
+ /** Feature flag for the PromoLobby Wallet. Absent means "keep the value from the init config" (default `false`). */
71
+ wallet?: boolean;
72
+ /** Feature flag for the PromoLobby Rewards Hub. Absent means "keep the value from the init config" (default `false`). */
73
+ rewardsHub?: boolean;
70
74
  };
71
75
  export type TSessionSettings = {
72
76
  mode: TSessionMode;
@@ -4,6 +4,10 @@ import { TApiRewardsClaimFake, TApiRewardsListFake } from '../../../../shared/ap
4
4
  import { TApiTransactionsFake, TApiWalletConvertFake } from '../../../../shared/api/modules/promoLobby/wallet';
5
5
  export type TPromoLobbyConfig = {
6
6
  enabled?: boolean;
7
+ /** Feature flag. When `false` (default) the Wallet is hidden inside PromoLobby. */
8
+ wallet?: boolean;
9
+ /** Feature flag. When `false` (default) the Rewards Hub is hidden inside PromoLobby. */
10
+ rewardsHub?: boolean;
7
11
  lang?: string;
8
12
  url?: string;
9
13
  token?: string;
@@ -60,6 +60,4 @@ export default abstract class OperatorAbstractService {
60
60
  sendHistoryShow(): Promise<void>;
61
61
  sendSettingsUpdate(_data: TSettingsData): Promise<void>;
62
62
  sendGameExit(): Promise<void>;
63
- sendFullscreenEnabled(): Promise<void>;
64
- sendFullscreenDisabled(): Promise<void>;
65
63
  }
@@ -5,8 +5,6 @@ export declare enum EOperatorBaseSendEvents {
5
5
  gameCompleted = "gameCompleted",
6
6
  changeBalance = "changeBalance",
7
7
  leaveTheGame = "leaveTheGame",
8
- fullscreenOn = "fullscreen-on",
9
- fullscreenOff = "fullscreen-off",
10
8
  modalRefill = "modalRefill"
11
9
  }
12
10
  export type TEventOptions = {
@@ -32,6 +30,4 @@ export declare class OperatorBaseService extends OperatorAbstractService {
32
30
  sendRoundFinished(data: TRoundFinishData): Promise<void>;
33
31
  sendDepositShow(): Promise<void>;
34
32
  sendGameExit(): Promise<void>;
35
- sendFullscreenEnabled(): Promise<void>;
36
- sendFullscreenDisabled(): Promise<void>;
37
33
  }
@@ -24,9 +24,7 @@ export declare enum EEventSend {
24
24
  sendDepositShow = "sendDepositShow",
25
25
  sendHistoryShow = "sendHistoryShow",
26
26
  sendSettingsUpdate = "sendSettingsUpdate",
27
- sendGameExit = "sendGameExit",
28
- sendFullscreenEnabled = "sendFullscreenEnabled",
29
- sendFullscreenDisabled = "sendFullscreenDisabled"
27
+ sendGameExit = "sendGameExit"
30
28
  }
31
29
  export declare class OperatorGeneralService {
32
30
  protected operatorServices: OperatorAbstractService[];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bottom edge of the top line bar — its texts (game title, time, lines/RTP) plus the bar's own
3
+ * 4px bottom padding, published by the TopLine widget via `useElementsBottomCssVar`. The menu
4
+ * shell keeps its header 3px below it, the way the mockups do in every state: one row (4 + 16
5
+ * = 20 → header 23), wrapped rows (4 + 25 + 4 = 33 → header 36). Consumers give `var()` a 20px
6
+ * fallback — the mockup's one-row status bar.
7
+ */
8
+ export declare const TOP_LINE_TEXTS_BOTTOM_CSS_VAR = "--top-line-texts-bottom";
@@ -1 +1,2 @@
1
+ export { TOP_LINE_TEXTS_BOTTOM_CSS_VAR } from './cssVars';
1
2
  export { WIDGET_Z_INDEX } from './widgetZIndex';
@@ -2,6 +2,7 @@ export declare const WIDGET_Z_INDEX: {
2
2
  fillFrame: string;
3
3
  tapAnywhere: string;
4
4
  welcomeFooter: string;
5
+ welcomeInfoButton: string;
5
6
  panelButtonsWithOpenModal: string;
6
7
  playerPanel: string;
7
8
  panelButtons: string;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Plain integer counters (prizes left, winners, prize counts) with the locale's group separator —
3
+ * `1578` reads as `1,578`. Money keeps going through `cashService`, this is for bare counts.
4
+ */
5
+ export declare const formatCount: (value: number | undefined | null, lang: string) => string;
@@ -3,6 +3,7 @@ export { bleachColor } from './bleachColor';
3
3
  export { camelToKebab } from './camelToKebab';
4
4
  export { hexToHsl, hslToHex, parseHSL, toHSL } from './colors';
5
5
  export { debounce } from './debounce';
6
+ export { formatCount } from './formatCount';
6
7
  export { formatDate } from './formatDate';
7
8
  export { formatTime } from './formatTime';
8
9
  export { getBase64Image } from './getBase64Image';
@@ -1,8 +1,8 @@
1
1
  export { useClickOutside } from './useClickOutside';
2
2
  export { useDebounce } from './useDebounce';
3
3
  export { useElementInViewPort } from './useElementInViewPort';
4
+ export { useElementsBottomCssVar } from './useElementsBottomCssVar';
4
5
  export { useEnv } from './useEnv';
5
- export { useFullScreenSupport } from './useFullScreenSupport';
6
6
  export { useGameTime } from './useGameTime';
7
7
  export { useHoldDown } from './useHoldDown';
8
8
  export { useOffline } from './useOffline';
@@ -0,0 +1,14 @@
1
+ import { RefObject } from 'react';
2
+ /**
3
+ * Keeps a CSS custom property on the document root equal to the bottom edge of the tallest of
4
+ * the given elements, measured from the container's top in layout px — rects are normalized by
5
+ * the container's own scale, so the game root `transform: scale()` does not leak into the value.
6
+ *
7
+ * Lets a widget position itself under another widget from a different layer of the overlay
8
+ * stack with plain CSS on the consumer side: `var(--the-name, <fallback>)`. The property is
9
+ * removed when the publishing widget unmounts, so the consumer falls back to its default.
10
+ *
11
+ * The set of elements may change between renders (a ref target appearing with its feature,
12
+ * free rounds starting mid-session) — the observer re-attaches whenever it does.
13
+ */
14
+ export declare const useElementsBottomCssVar: (name: string, containerRef: RefObject<HTMLElement>, refs: RefObject<HTMLElement>[]) => void;
@@ -6,12 +6,12 @@ export declare enum EArea {
6
6
  slot4 = "[grid-area:slot4] mp:mb-8"
7
7
  }
8
8
  export type TPanelLayout = {
9
- /** Menu button without a slot is rendered floating outside the plate */
10
- menu?: EArea;
11
9
  stakeAmounts: EArea;
12
10
  autoPlay?: EArea;
13
11
  fastPlay?: EArea;
14
12
  bonus?: EArea;
13
+ /** Info button slot on the plate; unset — the Info button is the round one in the screen corner */
14
+ info?: EArea;
15
15
  /** Narrow plate: one button on each side of the spin button */
16
16
  isNarrow: boolean;
17
17
  };
@@ -86,7 +86,6 @@ export type TAnalyticsEvents = {
86
86
  ['prizeDrop:won']: (params: TAnalyticsCustomParams) => void;
87
87
  ['notification_badge_shown']: () => void;
88
88
  ['notification_badge_cleared']: () => void;
89
- ['promoLobby:infoViewed']: () => void;
90
89
  ['promoLobby:opened']: () => void;
91
90
  ['promoLobby:closed']: () => void;
92
91
  ['wallet:opened']: () => void;
@@ -74,7 +74,28 @@ export type TAutoPlayStartedResponse = {
74
74
  number: number;
75
75
  isStopUponBonusGame: boolean;
76
76
  };
77
- export type TButtonName = 'play' | 'stop' | 'bets' | 'menu' | 'bonus' | 'bonusBetOff' | 'bonusFeature' | 'bonusFeatureBuy' | 'modalClose' | 'autoPlay' | 'autoPlayStop' | 'autoPlayOption' | 'autoPlayStart' | 'menuCard' | 'lobby' | 'return' | 'service' | 'welcome' | 'levelUp' | 'levelDown' | 'cashUp' | 'cashDown' | 'historyCard' | 'copy' | 'replay' | 'settingsCard' | 'realityCheck' | 'realityCheckSelect' | 'choice' | 'freeRounds';
77
+ /**
78
+ * Names of the `button:clicked` event. The deprecated ones belonged to the game menu of v4 (the
79
+ * burger button, the menu cards, the Settings modal) and are not emitted anymore; they stay in
80
+ * the type until the next major so that integrator code keeps compiling.
81
+ */
82
+ export type TButtonName = 'play' | 'stop' | 'bets'
83
+ /** @deprecated The burger button is gone, the menu opens with the Info button (`info`). */
84
+ | 'menu' | 'bonus' | 'bonusBetOff' | 'bonusFeature' | 'bonusFeatureBuy'
85
+ /** `value` is the modal name (`menu` for the game menu, `gameInfo` for the welcome Game Info page). */
86
+ | 'modalClose' | 'autoPlay' | 'autoPlayStop' | 'autoPlayOption' | 'autoPlayStart'
87
+ /** @deprecated The menu cards are gone, the sections are tabs (`menuTab`). */
88
+ | 'menuCard'
89
+ /** Info button — on the panel plate, in the screen corner or on the welcome screen. */
90
+ | 'info'
91
+ /** Lobby button on the panel, and the home button in the menu header. */
92
+ | 'lobby'
93
+ /** A tab of the game menu, `value` is the tab id: `promoLobby` | `gameInfo` | `activity` | `settings`. */
94
+ | 'menuTab' | 'return' | 'service' | 'welcome' | 'levelUp' | 'levelDown' | 'cashUp' | 'cashDown'
95
+ /** A round in the Activity tab, opens the round details. */
96
+ | 'historyCard' | 'copy' | 'replay'
97
+ /** @deprecated The Settings modal is gone, the reality check settings are a card of the Settings tab. */
98
+ | 'settingsCard' | 'realityCheck' | 'realityCheckSelect' | 'choice' | 'freeRounds';
78
99
  export type TSliderName = 'welcome' | 'bets' | 'autoplay';
79
100
  export type TFreeRoundResultResponse = {
80
101
  count: number;
@@ -5,8 +5,6 @@ export type TOperatorEvents = {
5
5
  ['round:ended']: (options: TRoundFinishData) => void;
6
6
  ['balance:changed']: (balance: number) => void;
7
7
  ['game:left']: () => void;
8
- ['fullscreen:enabled']: () => void;
9
- ['fullscreen:disabled']: () => void;
10
8
  ['modal:refill']: () => void;
11
9
  ['loading:started']: () => void;
12
10
  ['loading.progress:changed']: (progress: number) => void;
@@ -65,7 +65,6 @@ export declare const useAppDispatch: import("react-redux").UseDispatch<import("r
65
65
  inactivityTimeout: number;
66
66
  };
67
67
  modals: {
68
- hasOpenedByModule: boolean;
69
68
  hasOpened: boolean;
70
69
  current: import("../../model/modals").TModalName[];
71
70
  configs: {
@@ -260,7 +259,8 @@ export declare const useAppDispatch: import("react-redux").UseDispatch<import("r
260
259
  };
261
260
  gameInfo: {
262
261
  deferredConfig: import("../../../index").TGameInfoConfig;
263
- containers: import("../../ui/InfoConstructor").TInfoContainer[];
262
+ containers: import("../../../entities/gameInfo").TGameInfoContainer[];
263
+ symbolsGridV1Gap: import("../../../entities/payTable").TSymbolsGridV1Gap;
264
264
  background?: string | {
265
265
  portrait?: string;
266
266
  landscape?: string;
@@ -287,10 +287,6 @@ export declare const useAppDispatch: import("react-redux").UseDispatch<import("r
287
287
  apiRoundReplay: import("../../../app/config/types/apiRoundReplay").TApiRoundReplayState;
288
288
  gameSettings: import("../../api/config").TGameSettings;
289
289
  complianceSettings: import("../../api/config").TComplianceSettings;
290
- fullScreen: {
291
- isFullScreenSupported: boolean;
292
- isFullScreenEnabled: boolean;
293
- };
294
290
  topLine: {
295
291
  config: import("../../../index").TTopLineConfig;
296
292
  };
@@ -320,6 +316,11 @@ export declare const useAppDispatch: import("react-redux").UseDispatch<import("r
320
316
  };
321
317
  showed?: boolean;
322
318
  };
319
+ menu: {
320
+ activeTab: import("../../../entities/menu").TMenuTab;
321
+ isTabBarHidden: boolean;
322
+ entry: import("../../../entities/menu").TMenuEntry;
323
+ };
323
324
  } & import("redux-persist/es/persistReducer").PersistPartial, undefined, import("redux").UnknownAction> & import("redux").Dispatch<import("redux").Action>>;
324
325
  export declare const useAppSelector: import("react-redux").UseSelector<{
325
326
  viewPort: import("../../viewPort/lib/types").TViewPortState;
@@ -388,7 +389,6 @@ export declare const useAppSelector: import("react-redux").UseSelector<{
388
389
  inactivityTimeout: number;
389
390
  };
390
391
  modals: {
391
- hasOpenedByModule: boolean;
392
392
  hasOpened: boolean;
393
393
  current: import("../../model/modals").TModalName[];
394
394
  configs: {
@@ -583,7 +583,8 @@ export declare const useAppSelector: import("react-redux").UseSelector<{
583
583
  };
584
584
  gameInfo: {
585
585
  deferredConfig: import("../../../index").TGameInfoConfig;
586
- containers: import("../../ui/InfoConstructor").TInfoContainer[];
586
+ containers: import("../../../entities/gameInfo").TGameInfoContainer[];
587
+ symbolsGridV1Gap: import("../../../entities/payTable").TSymbolsGridV1Gap;
587
588
  background?: string | {
588
589
  portrait?: string;
589
590
  landscape?: string;
@@ -610,10 +611,6 @@ export declare const useAppSelector: import("react-redux").UseSelector<{
610
611
  apiRoundReplay: import("../../../app/config/types/apiRoundReplay").TApiRoundReplayState;
611
612
  gameSettings: import("../../api/config").TGameSettings;
612
613
  complianceSettings: import("../../api/config").TComplianceSettings;
613
- fullScreen: {
614
- isFullScreenSupported: boolean;
615
- isFullScreenEnabled: boolean;
616
- };
617
614
  topLine: {
618
615
  config: import("../../../index").TTopLineConfig;
619
616
  };
@@ -643,6 +640,11 @@ export declare const useAppSelector: import("react-redux").UseSelector<{
643
640
  };
644
641
  showed?: boolean;
645
642
  };
643
+ menu: {
644
+ activeTab: import("../../../entities/menu").TMenuTab;
645
+ isTabBarHidden: boolean;
646
+ entry: import("../../../entities/menu").TMenuEntry;
647
+ };
646
648
  } & import("redux-persist/es/persistReducer").PersistPartial>;
647
649
  export declare const useAppStore: import("react-redux").UseStore<TAppStore>;
648
650
  export declare const createAppSlice: <State, CaseReducers extends import("@reduxjs/toolkit").SliceCaseReducers<State>, Name extends string, Selectors extends import("@reduxjs/toolkit").SliceSelectors<State>, ReducerPath extends string = Name>(options: import("@reduxjs/toolkit").CreateSliceOptions<State, CaseReducers, Name, ReducerPath, Selectors>) => import("@reduxjs/toolkit").Slice<State, CaseReducers, Name, ReducerPath, Selectors>;
@@ -65,7 +65,6 @@ export declare const getPreloadedState: (storePartial?: DeepPartial<TRootState>)
65
65
  inactivityTimeout: number;
66
66
  };
67
67
  modals: {
68
- hasOpenedByModule: boolean;
69
68
  hasOpened: boolean;
70
69
  current: import("../../../model/modals").TModalName[];
71
70
  configs: {
@@ -260,7 +259,8 @@ export declare const getPreloadedState: (storePartial?: DeepPartial<TRootState>)
260
259
  };
261
260
  gameInfo: {
262
261
  deferredConfig: import("../../../../index").TGameInfoConfig;
263
- containers: import("../../../ui/InfoConstructor").TInfoContainer[];
262
+ containers: import("../../../../entities/gameInfo").TGameInfoContainer[];
263
+ symbolsGridV1Gap: import("../../../../entities/payTable").TSymbolsGridV1Gap;
264
264
  background?: string | {
265
265
  portrait?: string;
266
266
  landscape?: string;
@@ -287,10 +287,6 @@ export declare const getPreloadedState: (storePartial?: DeepPartial<TRootState>)
287
287
  apiRoundReplay: import("../../../../app/config/types/apiRoundReplay").TApiRoundReplayState;
288
288
  gameSettings: import("../../../api/config").TGameSettings;
289
289
  complianceSettings: import("../../../api/config").TComplianceSettings;
290
- fullScreen: {
291
- isFullScreenSupported: boolean;
292
- isFullScreenEnabled: boolean;
293
- };
294
290
  topLine: {
295
291
  config: import("../../../../index").TTopLineConfig;
296
292
  };
@@ -320,4 +316,9 @@ export declare const getPreloadedState: (storePartial?: DeepPartial<TRootState>)
320
316
  };
321
317
  showed?: boolean;
322
318
  };
319
+ menu: {
320
+ activeTab: import("../../../../entities/menu").TMenuTab;
321
+ isTabBarHidden: boolean;
322
+ entry: import("../../../../entities/menu").TMenuEntry;
323
+ };
323
324
  } & import("redux-persist/es/persistReducer").PersistPartial;
@@ -65,7 +65,6 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
65
65
  inactivityTimeout: number;
66
66
  };
67
67
  modals: {
68
- hasOpenedByModule: boolean;
69
68
  hasOpened: boolean;
70
69
  current: import("../../../model/modals").TModalName[];
71
70
  configs: {
@@ -260,7 +259,8 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
260
259
  };
261
260
  gameInfo: {
262
261
  deferredConfig: import("../../../../index").TGameInfoConfig;
263
- containers: import("../../../ui/InfoConstructor").TInfoContainer[];
262
+ containers: import("../../../../entities/gameInfo").TGameInfoContainer[];
263
+ symbolsGridV1Gap: import("../../../../entities/payTable").TSymbolsGridV1Gap;
264
264
  background?: string | {
265
265
  portrait?: string;
266
266
  landscape?: string;
@@ -287,10 +287,6 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
287
287
  apiRoundReplay: import("../../../../app/config/types/apiRoundReplay").TApiRoundReplayState;
288
288
  gameSettings: import("../../../api/config").TGameSettings;
289
289
  complianceSettings: import("../../../api/config").TComplianceSettings;
290
- fullScreen: {
291
- isFullScreenSupported: boolean;
292
- isFullScreenEnabled: boolean;
293
- };
294
290
  topLine: {
295
291
  config: import("../../../../index").TTopLineConfig;
296
292
  };
@@ -320,6 +316,11 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
320
316
  };
321
317
  showed?: boolean;
322
318
  };
319
+ menu: {
320
+ activeTab: import("../../../../entities/menu").TMenuTab;
321
+ isTabBarHidden: boolean;
322
+ entry: import("../../../../entities/menu").TMenuEntry;
323
+ };
323
324
  } & import("redux-persist/es/persistReducer").PersistPartial, import("redux").Action, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
324
325
  dispatch: import("redux-thunk").ThunkDispatch<{
325
326
  viewPort: import("../../../viewPort/lib/types").TViewPortState;
@@ -388,7 +389,6 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
388
389
  inactivityTimeout: number;
389
390
  };
390
391
  modals: {
391
- hasOpenedByModule: boolean;
392
392
  hasOpened: boolean;
393
393
  current: import("../../../model/modals").TModalName[];
394
394
  configs: {
@@ -583,7 +583,8 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
583
583
  };
584
584
  gameInfo: {
585
585
  deferredConfig: import("../../../../index").TGameInfoConfig;
586
- containers: import("../../../ui/InfoConstructor").TInfoContainer[];
586
+ containers: import("../../../../entities/gameInfo").TGameInfoContainer[];
587
+ symbolsGridV1Gap: import("../../../../entities/payTable").TSymbolsGridV1Gap;
587
588
  background?: string | {
588
589
  portrait?: string;
589
590
  landscape?: string;
@@ -610,10 +611,6 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
610
611
  apiRoundReplay: import("../../../../app/config/types/apiRoundReplay").TApiRoundReplayState;
611
612
  gameSettings: import("../../../api/config").TGameSettings;
612
613
  complianceSettings: import("../../../api/config").TComplianceSettings;
613
- fullScreen: {
614
- isFullScreenSupported: boolean;
615
- isFullScreenEnabled: boolean;
616
- };
617
614
  topLine: {
618
615
  config: import("../../../../index").TTopLineConfig;
619
616
  };
@@ -643,5 +640,10 @@ export declare const setupTestStore: (storePartial?: DeepPartial<TRootState>) =>
643
640
  };
644
641
  showed?: boolean;
645
642
  };
643
+ menu: {
644
+ activeTab: import("../../../../entities/menu").TMenuTab;
645
+ isTabBarHidden: boolean;
646
+ entry: import("../../../../entities/menu").TMenuEntry;
647
+ };
646
648
  } & import("redux-persist/es/persistReducer").PersistPartial, undefined, import("redux").UnknownAction>;
647
649
  }>, import("redux").StoreEnhancer]>>;
@@ -1,10 +1,22 @@
1
+ /**
2
+ * Visibility of the game menu tabs. The menu is one full-screen window with a tab bar
3
+ * (Promo Lobby | Game Info | Activity | Settings): a tab switched off here is absent from the bar
4
+ * rather than disabled, and so is a tab whose content the session cannot provide (rounds history
5
+ * in a demo session or in replay, the promo lobby without the module).
6
+ */
1
7
  export type TMenuConfig = {
8
+ /** Symbols / Lines section of the Game Info tab — the paytable blocks. */
2
9
  isPaytableVisible: boolean;
10
+ /** Features / Rules section of the Game Info tab — the game information blocks. */
3
11
  isGameInfoVisible: boolean;
12
+ /** Activity tab — the rounds history and the round details. */
4
13
  isRoundsHistoryVisible: boolean;
14
+ /** Settings tab — sound and reality check. */
5
15
  isSettingsVisible: boolean;
16
+ /** Sound button in the menu header. */
6
17
  isSoundsVisible: boolean;
7
18
  /** @deprecated Fast play is no longer shown in the game menu, the flag has no effect. */
8
19
  isFastPlayVisible?: boolean;
9
- isFullScreenVisible: boolean;
20
+ /** @deprecated Full screen is no longer part of the product, the flag is accepted and ignored. */
21
+ isFullScreenVisible?: boolean;
10
22
  };
@@ -1,2 +1,2 @@
1
1
  export type { TModalName } from './modalsSlice';
2
- export { closeModal, getCurrentModal, getIsPlayStartBlockedByModals, getModalsIsModalMode, modalsReducer, openModal, resetModalsServiceAutoplayType, setHasOpenedByModule, setIsModalReady, setModalConfigs, setModalReady, setModalsError, setModalsServiceAutoplayType, setModalsServiceErrorData, } from './modalsSlice';
2
+ export { closeModal, getCurrentModal, getIsPlayStartBlockedByModals, getModalsIsModalMode, modalsReducer, openModal, resetModalsServiceAutoplayType, setIsModalReady, setModalConfigs, setModalReady, setModalsError, setModalsServiceAutoplayType, setModalsServiceErrorData, } from './modalsSlice';
@@ -1,12 +1,11 @@
1
1
  import type { TAutoplayServiceModalType } from '../../../entities/autoplay';
2
2
  import { TAppThunkAction } from '../../../shared/lib/store';
3
3
  import { TMenuConfig } from '../menu';
4
- export type TModalName = 'menu' | 'bonusFeature' | 'autoplay' | 'realityCheck' | 'realityCheckReminder' | 'settings' | 'payTable' | 'roundsHistory' | 'roundDetails' | 'replay' | 'serviceMaxBet' | 'serviceInsufficientFunds' | 'serviceRestore' | 'serviceMaxWin' | 'serviceQuitTheGame' | 'serviceConnectionLost' | 'serviceError' | 'serviceFatalError' | 'serviceSessionExpired' | 'serviceAutoplay' | 'gameInfo' | 'freeRounds' | 'freeRoundsResult' | 'prizeDropCongratulation' | 'prizeDropUnclaimed' | 'prizeDrop' | 'prizeDropSuccess' | 'prizeDropResult' | 'prizeDropLive' | 'prizeDropJoinError' | 'stakeAmounts';
4
+ export type TModalName = 'menu' | 'bonusFeature' | 'autoplay' | 'realityCheckReminder' | 'replay' | 'serviceMaxBet' | 'serviceInsufficientFunds' | 'serviceRestore' | 'serviceMaxWin' | 'serviceQuitTheGame' | 'serviceConnectionLost' | 'serviceError' | 'serviceFatalError' | 'serviceSessionExpired' | 'serviceAutoplay' | 'freeRounds' | 'freeRoundsResult' | 'prizeDropCongratulation' | 'prizeDropUnclaimed' | 'prizeDrop' | 'prizeDropSuccess' | 'prizeDropResult' | 'prizeDropLive' | 'prizeDropJoinError' | 'stakeAmounts';
5
5
  type TModalConfigs = {
6
6
  menu: TMenuConfig;
7
7
  };
8
8
  type TModalsState = {
9
- hasOpenedByModule: boolean;
10
9
  hasOpened: boolean;
11
10
  current: TModalName[];
12
11
  configs: TModalConfigs;
@@ -23,7 +22,7 @@ type TModalsError = {
23
22
  export declare const closeModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TModalName, "modals/closeModal">, setModalConfigs: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TMenuConfig, "modals/setModalConfigs">, setModalReady: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/setModalReady">, setModalsServiceAutoplayType: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TAutoplayServiceModalType, "modals/setModalsServiceAutoplayType">, setIsModalReady: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean, "modals/setIsModalReady">, resetModalsServiceAutoplayType: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"modals/resetModalsServiceAutoplayType">, setModalsServiceErrorData: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<{
24
23
  name: string;
25
24
  message: string;
26
- }, "modals/setModalsServiceErrorData">, setHasOpened: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean, "modals/setHasOpened">, addCurrent: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TModalName, "modals/addCurrent">, focusModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TModalName, "modals/focusModal">, setHasOpenedByModule: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean, "modals/setHasOpenedByModule">;
25
+ }, "modals/setModalsServiceErrorData">, setHasOpened: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<boolean, "modals/setHasOpened">, addCurrent: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TModalName, "modals/addCurrent">, focusModal: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<TModalName, "modals/focusModal">;
27
26
  export declare const getModalsIsModalMode: import("reselect").Selector<{
28
27
  modals: TModalsState;
29
28
  }, boolean, []> & {
@@ -0,0 +1,25 @@
1
+ import { FC, ReactNode } from 'react';
2
+ /** An inner page of a tab: it renames the header and puts a back button in it. */
3
+ export type TMenuInnerPage = {
4
+ title: string;
5
+ onBack: () => void;
6
+ };
7
+ type TMenuInnerPageContext = {
8
+ page: TMenuInnerPage | null;
9
+ openPage: (page: TMenuInnerPage) => void;
10
+ closePage: () => void;
11
+ };
12
+ type TProps = {
13
+ children: ReactNode;
14
+ };
15
+ /**
16
+ * Lets the active tab take over the menu header — the round details page, for one, replaces the
17
+ * tab title with its own and swaps the home and sound buttons for a back button. Kept in React
18
+ * rather than in the store: `onBack` is a callback, and the page dies with the tab anyway.
19
+ *
20
+ * Lives in `shared` on purpose, like `menuTabsRegistry`: tabs contributed by a module (the promo
21
+ * lobby event page) open inner pages too, and a module must not depend on a core widget.
22
+ */
23
+ export declare const MenuInnerPageProvider: FC<TProps>;
24
+ export declare const useMenuInnerPage: () => TMenuInnerPageContext;
25
+ export {};
@@ -0,0 +1,3 @@
1
+ import { ComponentType } from 'react';
2
+ export declare const registerMenuTab: (component: ComponentType | null) => void;
3
+ export declare const useMenuPromoLobbyTab: () => ComponentType;
@@ -2,7 +2,15 @@ import React from 'react';
2
2
  type TCustomScrollProps = {
3
3
  children: React.ReactNode;
4
4
  className?: string;
5
+ /** Classes for the moving content box — e.g. `flex min-h-full flex-col` to let short content
6
+ * stretch to the full scroll height instead of hugging its own. */
7
+ contentClassName?: string;
5
8
  initialScrollToSelector?: string;
9
+ /**
10
+ * Scrolls back to the top whenever this value changes — for a box whose content is swapped
11
+ * in place (a tab's inner page opening or closing) without remounting the scroll itself.
12
+ */
13
+ resetKey?: unknown;
6
14
  };
7
15
  declare const CustomScroll: React.FC<TCustomScrollProps>;
8
16
  export default CustomScroll;
@@ -4,6 +4,7 @@ type TProps = {
4
4
  initialFontSize: number;
5
5
  maxWidth: number;
6
6
  minFontSize?: number;
7
+ fontSizeStep?: number;
7
8
  className?: string;
8
9
  onFontSizeAdjust?: (fontSize: number) => void;
9
10
  };