@recode-js/next-toolkit 0.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 (266) hide show
  1. package/README.md +27 -0
  2. package/dist/NextToolkitProvider.d.ts +8 -0
  3. package/dist/NextToolkitProvider.d.ts.map +1 -0
  4. package/dist/NextToolkitProvider.js +12 -0
  5. package/dist/NextToolkitProvider.js.map +1 -0
  6. package/dist/_virtual/_commonjsHelpers.js +6 -0
  7. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  8. package/dist/_virtual/browser.js +4 -0
  9. package/dist/_virtual/browser.js.map +1 -0
  10. package/dist/_virtual/index.js +4 -0
  11. package/dist/_virtual/index.js.map +1 -0
  12. package/dist/_virtual/index2.js +4 -0
  13. package/dist/_virtual/index2.js.map +1 -0
  14. package/dist/_virtual/index3.js +4 -0
  15. package/dist/_virtual/index3.js.map +1 -0
  16. package/dist/_virtual/node.js +4 -0
  17. package/dist/_virtual/node.js.map +1 -0
  18. package/dist/_virtual/use-sync-external-store-with-selector.development.js +4 -0
  19. package/dist/_virtual/use-sync-external-store-with-selector.development.js.map +1 -0
  20. package/dist/_virtual/use-sync-external-store-with-selector.production.js +4 -0
  21. package/dist/_virtual/use-sync-external-store-with-selector.production.js.map +1 -0
  22. package/dist/_virtual/with-selector.js +4 -0
  23. package/dist/_virtual/with-selector.js.map +1 -0
  24. package/dist/axios/api.d.ts +16 -0
  25. package/dist/axios/api.d.ts.map +1 -0
  26. package/dist/axios/api.js +11 -0
  27. package/dist/axios/api.js.map +1 -0
  28. package/dist/components/auth/Form.d.ts +10 -0
  29. package/dist/components/auth/Form.d.ts.map +1 -0
  30. package/dist/components/auth/Form.js +49 -0
  31. package/dist/components/auth/Form.js.map +1 -0
  32. package/dist/components/auth/auth.d.ts +8 -0
  33. package/dist/components/auth/auth.d.ts.map +1 -0
  34. package/dist/components/auth/auth.js +18 -0
  35. package/dist/components/auth/auth.js.map +1 -0
  36. package/dist/components/auth/formActions.d.ts +17 -0
  37. package/dist/components/auth/formActions.d.ts.map +1 -0
  38. package/dist/components/auth/formActions.js +58 -0
  39. package/dist/components/auth/formActions.js.map +1 -0
  40. package/dist/components/auth/login/LoginPage.d.ts +7 -0
  41. package/dist/components/auth/login/LoginPage.d.ts.map +1 -0
  42. package/dist/components/auth/login/LoginPage.js +18 -0
  43. package/dist/components/auth/login/LoginPage.js.map +1 -0
  44. package/dist/components/auth/login/login.d.ts +1 -0
  45. package/dist/components/auth/login/login.d.ts.map +1 -0
  46. package/dist/components/auth/register/RegisterPage.d.ts +7 -0
  47. package/dist/components/auth/register/RegisterPage.d.ts.map +1 -0
  48. package/dist/components/auth/register/RegisterPage.js +18 -0
  49. package/dist/components/auth/register/RegisterPage.js.map +1 -0
  50. package/dist/components/auth/register/register.d.ts +1 -0
  51. package/dist/components/auth/register/register.d.ts.map +1 -0
  52. package/dist/components/auth/styles/form.module.css.js +4 -0
  53. package/dist/components/auth/styles/form.module.css.js.map +1 -0
  54. package/dist/components/common/Button.d.ts +25 -0
  55. package/dist/components/common/Button.d.ts.map +1 -0
  56. package/dist/components/common/Button.js +25 -0
  57. package/dist/components/common/Button.js.map +1 -0
  58. package/dist/components/common/styles/button.module.css.js +4 -0
  59. package/dist/components/common/styles/button.module.css.js.map +1 -0
  60. package/dist/components/navigation/NavigatorProvider.d.ts +10 -0
  61. package/dist/components/navigation/NavigatorProvider.d.ts.map +1 -0
  62. package/dist/components/navigation/NavigatorProvider.js +15 -0
  63. package/dist/components/navigation/NavigatorProvider.js.map +1 -0
  64. package/dist/components/navigation/bottom-tab/BottomTab.d.ts +12 -0
  65. package/dist/components/navigation/bottom-tab/BottomTab.d.ts.map +1 -0
  66. package/dist/components/navigation/bottom-tab/BottomTab.js +45 -0
  67. package/dist/components/navigation/bottom-tab/BottomTab.js.map +1 -0
  68. package/dist/components/navigation/bottom-tab/bottom-tab.module.css.js +4 -0
  69. package/dist/components/navigation/bottom-tab/bottom-tab.module.css.js.map +1 -0
  70. package/dist/components/navigation/drawer/Drawer.d.ts +21 -0
  71. package/dist/components/navigation/drawer/Drawer.d.ts.map +1 -0
  72. package/dist/components/navigation/drawer/Drawer.js +91 -0
  73. package/dist/components/navigation/drawer/Drawer.js.map +1 -0
  74. package/dist/components/navigation/drawer/drawer.module.css.js +4 -0
  75. package/dist/components/navigation/drawer/drawer.module.css.js.map +1 -0
  76. package/dist/components/navigation/header/Header.d.ts +7 -0
  77. package/dist/components/navigation/header/Header.d.ts.map +1 -0
  78. package/dist/components/navigation/header/Header.js +32 -0
  79. package/dist/components/navigation/header/Header.js.map +1 -0
  80. package/dist/components/navigation/header/header.module.css.js +4 -0
  81. package/dist/components/navigation/header/header.module.css.js.map +1 -0
  82. package/dist/components/navigation/navigatior-provider.module.css.js +4 -0
  83. package/dist/components/navigation/navigatior-provider.module.css.js.map +1 -0
  84. package/dist/components/toast/Toast.d.ts +9 -0
  85. package/dist/components/toast/Toast.d.ts.map +1 -0
  86. package/dist/components/toast/Toast.js +92 -0
  87. package/dist/components/toast/Toast.js.map +1 -0
  88. package/dist/components/toast/ToastExamples.d.ts +2 -0
  89. package/dist/components/toast/ToastExamples.d.ts.map +1 -0
  90. package/dist/components/toast/ToastExamples.js +74 -0
  91. package/dist/components/toast/ToastExamples.js.map +1 -0
  92. package/dist/components/toast/toast.module.css.js +4 -0
  93. package/dist/components/toast/toast.module.css.js.map +1 -0
  94. package/dist/index.d.ts +11 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +9 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.js +969 -0
  99. package/dist/node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.js.map +1 -0
  100. package/dist/node_modules/axios/index.js +26 -0
  101. package/dist/node_modules/axios/index.js.map +1 -0
  102. package/dist/node_modules/axios/lib/adapters/adapters.js +129 -0
  103. package/dist/node_modules/axios/lib/adapters/adapters.js.map +1 -0
  104. package/dist/node_modules/axios/lib/adapters/fetch.js +289 -0
  105. package/dist/node_modules/axios/lib/adapters/fetch.js.map +1 -0
  106. package/dist/node_modules/axios/lib/adapters/http.js +895 -0
  107. package/dist/node_modules/axios/lib/adapters/http.js.map +1 -0
  108. package/dist/node_modules/axios/lib/adapters/xhr.js +203 -0
  109. package/dist/node_modules/axios/lib/adapters/xhr.js.map +1 -0
  110. package/dist/node_modules/axios/lib/axios.js +88 -0
  111. package/dist/node_modules/axios/lib/axios.js.map +1 -0
  112. package/dist/node_modules/axios/lib/cancel/CancelToken.js +135 -0
  113. package/dist/node_modules/axios/lib/cancel/CancelToken.js.map +1 -0
  114. package/dist/node_modules/axios/lib/cancel/CanceledError.js +25 -0
  115. package/dist/node_modules/axios/lib/cancel/CanceledError.js.map +1 -0
  116. package/dist/node_modules/axios/lib/cancel/isCancel.js +7 -0
  117. package/dist/node_modules/axios/lib/cancel/isCancel.js.map +1 -0
  118. package/dist/node_modules/axios/lib/core/Axios.js +238 -0
  119. package/dist/node_modules/axios/lib/core/Axios.js.map +1 -0
  120. package/dist/node_modules/axios/lib/core/AxiosError.js +110 -0
  121. package/dist/node_modules/axios/lib/core/AxiosError.js.map +1 -0
  122. package/dist/node_modules/axios/lib/core/AxiosHeaders.js +314 -0
  123. package/dist/node_modules/axios/lib/core/AxiosHeaders.js.map +1 -0
  124. package/dist/node_modules/axios/lib/core/InterceptorManager.js +71 -0
  125. package/dist/node_modules/axios/lib/core/InterceptorManager.js.map +1 -0
  126. package/dist/node_modules/axios/lib/core/buildFullPath.js +24 -0
  127. package/dist/node_modules/axios/lib/core/buildFullPath.js.map +1 -0
  128. package/dist/node_modules/axios/lib/core/dispatchRequest.js +83 -0
  129. package/dist/node_modules/axios/lib/core/dispatchRequest.js.map +1 -0
  130. package/dist/node_modules/axios/lib/core/mergeConfig.js +108 -0
  131. package/dist/node_modules/axios/lib/core/mergeConfig.js.map +1 -0
  132. package/dist/node_modules/axios/lib/core/settle.js +29 -0
  133. package/dist/node_modules/axios/lib/core/settle.js.map +1 -0
  134. package/dist/node_modules/axios/lib/core/transformData.js +30 -0
  135. package/dist/node_modules/axios/lib/core/transformData.js.map +1 -0
  136. package/dist/node_modules/axios/lib/defaults/index.js +161 -0
  137. package/dist/node_modules/axios/lib/defaults/index.js.map +1 -0
  138. package/dist/node_modules/axios/lib/defaults/transitional.js +9 -0
  139. package/dist/node_modules/axios/lib/defaults/transitional.js.map +1 -0
  140. package/dist/node_modules/axios/lib/env/data.js +4 -0
  141. package/dist/node_modules/axios/lib/env/data.js.map +1 -0
  142. package/dist/node_modules/axios/lib/helpers/AxiosTransformStream.js +143 -0
  143. package/dist/node_modules/axios/lib/helpers/AxiosTransformStream.js.map +1 -0
  144. package/dist/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +58 -0
  145. package/dist/node_modules/axios/lib/helpers/AxiosURLSearchParams.js.map +1 -0
  146. package/dist/node_modules/axios/lib/helpers/HttpStatusCode.js +78 -0
  147. package/dist/node_modules/axios/lib/helpers/HttpStatusCode.js.map +1 -0
  148. package/dist/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +28 -0
  149. package/dist/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js.map +1 -0
  150. package/dist/node_modules/axios/lib/helpers/bind.js +16 -0
  151. package/dist/node_modules/axios/lib/helpers/bind.js.map +1 -0
  152. package/dist/node_modules/axios/lib/helpers/buildURL.js +69 -0
  153. package/dist/node_modules/axios/lib/helpers/buildURL.js.map +1 -0
  154. package/dist/node_modules/axios/lib/helpers/callbackify.js +17 -0
  155. package/dist/node_modules/axios/lib/helpers/callbackify.js.map +1 -0
  156. package/dist/node_modules/axios/lib/helpers/combineURLs.js +17 -0
  157. package/dist/node_modules/axios/lib/helpers/combineURLs.js.map +1 -0
  158. package/dist/node_modules/axios/lib/helpers/composeSignals.js +49 -0
  159. package/dist/node_modules/axios/lib/helpers/composeSignals.js.map +1 -0
  160. package/dist/node_modules/axios/lib/helpers/cookies.js +55 -0
  161. package/dist/node_modules/axios/lib/helpers/cookies.js.map +1 -0
  162. package/dist/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +76 -0
  163. package/dist/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js.map +1 -0
  164. package/dist/node_modules/axios/lib/helpers/formDataToJSON.js +95 -0
  165. package/dist/node_modules/axios/lib/helpers/formDataToJSON.js.map +1 -0
  166. package/dist/node_modules/axios/lib/helpers/formDataToStream.js +113 -0
  167. package/dist/node_modules/axios/lib/helpers/formDataToStream.js.map +1 -0
  168. package/dist/node_modules/axios/lib/helpers/fromDataURI.js +55 -0
  169. package/dist/node_modules/axios/lib/helpers/fromDataURI.js.map +1 -0
  170. package/dist/node_modules/axios/lib/helpers/isAbsoluteURL.js +17 -0
  171. package/dist/node_modules/axios/lib/helpers/isAbsoluteURL.js.map +1 -0
  172. package/dist/node_modules/axios/lib/helpers/isAxiosError.js +16 -0
  173. package/dist/node_modules/axios/lib/helpers/isAxiosError.js.map +1 -0
  174. package/dist/node_modules/axios/lib/helpers/isURLSameOrigin.js +17 -0
  175. package/dist/node_modules/axios/lib/helpers/isURLSameOrigin.js.map +1 -0
  176. package/dist/node_modules/axios/lib/helpers/parseHeaders.js +57 -0
  177. package/dist/node_modules/axios/lib/helpers/parseHeaders.js.map +1 -0
  178. package/dist/node_modules/axios/lib/helpers/parseProtocol.js +8 -0
  179. package/dist/node_modules/axios/lib/helpers/parseProtocol.js.map +1 -0
  180. package/dist/node_modules/axios/lib/helpers/progressEventReducer.js +47 -0
  181. package/dist/node_modules/axios/lib/helpers/progressEventReducer.js.map +1 -0
  182. package/dist/node_modules/axios/lib/helpers/readBlob.js +16 -0
  183. package/dist/node_modules/axios/lib/helpers/readBlob.js.map +1 -0
  184. package/dist/node_modules/axios/lib/helpers/resolveConfig.js +63 -0
  185. package/dist/node_modules/axios/lib/helpers/resolveConfig.js.map +1 -0
  186. package/dist/node_modules/axios/lib/helpers/speedometer.js +55 -0
  187. package/dist/node_modules/axios/lib/helpers/speedometer.js.map +1 -0
  188. package/dist/node_modules/axios/lib/helpers/spread.js +30 -0
  189. package/dist/node_modules/axios/lib/helpers/spread.js.map +1 -0
  190. package/dist/node_modules/axios/lib/helpers/throttle.js +45 -0
  191. package/dist/node_modules/axios/lib/helpers/throttle.js.map +1 -0
  192. package/dist/node_modules/axios/lib/helpers/toFormData.js +222 -0
  193. package/dist/node_modules/axios/lib/helpers/toFormData.js.map +1 -0
  194. package/dist/node_modules/axios/lib/helpers/toURLEncodedForm.js +21 -0
  195. package/dist/node_modules/axios/lib/helpers/toURLEncodedForm.js.map +1 -0
  196. package/dist/node_modules/axios/lib/helpers/trackStream.js +89 -0
  197. package/dist/node_modules/axios/lib/helpers/trackStream.js.map +1 -0
  198. package/dist/node_modules/axios/lib/helpers/validator.js +101 -0
  199. package/dist/node_modules/axios/lib/helpers/validator.js.map +1 -0
  200. package/dist/node_modules/axios/lib/platform/common/utils.js +46 -0
  201. package/dist/node_modules/axios/lib/platform/common/utils.js.map +1 -0
  202. package/dist/node_modules/axios/lib/platform/index.js +10 -0
  203. package/dist/node_modules/axios/lib/platform/index.js.map +1 -0
  204. package/dist/node_modules/axios/lib/platform/node/classes/FormData.js +3 -0
  205. package/dist/node_modules/axios/lib/platform/node/classes/FormData.js.map +1 -0
  206. package/dist/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +7 -0
  207. package/dist/node_modules/axios/lib/platform/node/classes/URLSearchParams.js.map +1 -0
  208. package/dist/node_modules/axios/lib/platform/node/index.js +41 -0
  209. package/dist/node_modules/axios/lib/platform/node/index.js.map +1 -0
  210. package/dist/node_modules/axios/lib/utils.js +784 -0
  211. package/dist/node_modules/axios/lib/utils.js.map +1 -0
  212. package/dist/node_modules/debug/src/browser.js +287 -0
  213. package/dist/node_modules/debug/src/browser.js.map +1 -0
  214. package/dist/node_modules/debug/src/common.js +304 -0
  215. package/dist/node_modules/debug/src/common.js.map +1 -0
  216. package/dist/node_modules/debug/src/index.js +24 -0
  217. package/dist/node_modules/debug/src/index.js.map +1 -0
  218. package/dist/node_modules/debug/src/node.js +280 -0
  219. package/dist/node_modules/debug/src/node.js.map +1 -0
  220. package/dist/node_modules/follow-redirects/debug.js +20 -0
  221. package/dist/node_modules/follow-redirects/debug.js.map +1 -0
  222. package/dist/node_modules/follow-redirects/index.js +701 -0
  223. package/dist/node_modules/follow-redirects/index.js.map +1 -0
  224. package/dist/node_modules/immer/dist/immer.js +860 -0
  225. package/dist/node_modules/immer/dist/immer.js.map +1 -0
  226. package/dist/node_modules/proxy-from-env/index.js +112 -0
  227. package/dist/node_modules/proxy-from-env/index.js.map +1 -0
  228. package/dist/node_modules/react-redux/dist/react-redux.js +348 -0
  229. package/dist/node_modules/react-redux/dist/react-redux.js.map +1 -0
  230. package/dist/node_modules/redux/dist/redux.js +362 -0
  231. package/dist/node_modules/redux/dist/redux.js.map +1 -0
  232. package/dist/node_modules/redux-thunk/dist/redux-thunk.js +15 -0
  233. package/dist/node_modules/redux-thunk/dist/redux-thunk.js.map +1 -0
  234. package/dist/node_modules/reselect/dist/reselect.js +322 -0
  235. package/dist/node_modules/reselect/dist/reselect.js.map +1 -0
  236. package/dist/node_modules/server-only/index.js +5 -0
  237. package/dist/node_modules/server-only/index.js.map +1 -0
  238. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js +108 -0
  239. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.development.js.map +1 -0
  240. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js +96 -0
  241. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-with-selector.production.js.map +1 -0
  242. package/dist/node_modules/use-sync-external-store/with-selector.js +14 -0
  243. package/dist/node_modules/use-sync-external-store/with-selector.js.map +1 -0
  244. package/dist/store/StoreProvider.d.ts +7 -0
  245. package/dist/store/StoreProvider.d.ts.map +1 -0
  246. package/dist/store/StoreProvider.js +11 -0
  247. package/dist/store/StoreProvider.js.map +1 -0
  248. package/dist/store/features/drawer/drawer.slice.d.ts +12 -0
  249. package/dist/store/features/drawer/drawer.slice.d.ts.map +1 -0
  250. package/dist/store/features/drawer/drawer.slice.js +26 -0
  251. package/dist/store/features/drawer/drawer.slice.js.map +1 -0
  252. package/dist/store/features/toast/toastSlice.d.ts +16 -0
  253. package/dist/store/features/toast/toastSlice.d.ts.map +1 -0
  254. package/dist/store/features/toast/toastSlice.js +26 -0
  255. package/dist/store/features/toast/toastSlice.js.map +1 -0
  256. package/dist/store/hooks.d.ts +10 -0
  257. package/dist/store/hooks.d.ts.map +1 -0
  258. package/dist/store/hooks.js +8 -0
  259. package/dist/store/hooks.js.map +1 -0
  260. package/dist/store/store.d.ts +16 -0
  261. package/dist/store/store.d.ts.map +1 -0
  262. package/dist/store/store.js +13 -0
  263. package/dist/store/store.js.map +1 -0
  264. package/dist/styles.css +2 -0
  265. package/dist/styles.css.map +1 -0
  266. package/package.json +57 -0
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface Props {
3
+ children: React.ReactNode;
4
+ }
5
+ export default function StoreProvider({ children }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=StoreProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreProvider.d.ts","sourceRoot":"","sources":["../../src/store/StoreProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,UAAU,KAAK;IACb,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,2CAMxD"}
@@ -0,0 +1,11 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { Provider as Provider_default } from '../node_modules/react-redux/dist/react-redux.js';
4
+ import { store } from './store.js';
5
+
6
+ function StoreProvider({ children }) {
7
+ return (jsx(Provider_default, { store: store, children: children }));
8
+ }
9
+
10
+ export { StoreProvider as default };
11
+ //# sourceMappingURL=StoreProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StoreProvider.js","sources":["../../src/store/StoreProvider.tsx"],"sourcesContent":["\"use client\"\nimport React from 'react'\nimport { Provider } from 'react-redux'\nimport { store } from './store'\n\ninterface Props {\n children: React.ReactNode\n}\n\nexport default function StoreProvider({ children }: Props) {\n return (\n <Provider store={store}>\n {children}\n </Provider>\n )\n}\n"],"names":["_jsx","Provider"],"mappings":";;;;;AASc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,EAAS,CAAA,CAAA;IACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACEA,CAAAA,CAAAA,CAAA,CAACC,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAQ,EAAA,CAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACnB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,EAAA,CACA,CAAA;AAEf;;"}
@@ -0,0 +1,12 @@
1
+ type DrawerState = {
2
+ isOpen: boolean;
3
+ };
4
+ export declare const drawerSlice: import("@reduxjs/toolkit").Slice<DrawerState, {
5
+ openDrawer: (state: DrawerState) => void;
6
+ closeDrawer: (state: DrawerState) => void;
7
+ toggleDrawer: (state: DrawerState) => void;
8
+ }, "drawer", "drawer", import("@reduxjs/toolkit").SliceSelectors<DrawerState>>;
9
+ export declare const openDrawer: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"drawer/openDrawer">, closeDrawer: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"drawer/closeDrawer">, toggleDrawer: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"drawer/toggleDrawer">;
10
+ declare const _default: import("redux").Reducer<DrawerState>;
11
+ export default _default;
12
+ //# sourceMappingURL=drawer.slice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.slice.d.ts","sourceRoot":"","sources":["../../../../src/store/features/drawer/drawer.slice.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,OAAO,CAAA;CAChB,CAAA;AAKD,eAAO,MAAM,WAAW;wBAIA,WAAW;yBAGV,WAAW;0BAGV,WAAW;8EAInC,CAAC;AAIH,eAAO,MAAQ,UAAU,+EAAE,WAAW,gFAAE,YAAY,+EAAwB,CAAA;;AAC5E,wBAAkC"}
@@ -0,0 +1,26 @@
1
+ import { createSlice } from '../../../node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.js';
2
+
3
+ const initialState = {
4
+ isOpen: false,
5
+ };
6
+ const drawerSlice = createSlice({
7
+ name: "drawer",
8
+ initialState,
9
+ reducers: {
10
+ openDrawer: (state) => {
11
+ state.isOpen = true;
12
+ },
13
+ closeDrawer: (state) => {
14
+ state.isOpen = false;
15
+ },
16
+ toggleDrawer: (state) => {
17
+ state.isOpen = !state.isOpen;
18
+ },
19
+ },
20
+ });
21
+ // Action creators are generated for each case reducer function
22
+ const { openDrawer, closeDrawer, toggleDrawer } = drawerSlice.actions;
23
+ var drawerReducer = drawerSlice.reducer;
24
+
25
+ export { closeDrawer, drawerReducer as default, drawerSlice, openDrawer, toggleDrawer };
26
+ //# sourceMappingURL=drawer.slice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.slice.js","sources":["../../../../src/store/features/drawer/drawer.slice.ts"],"sourcesContent":["import { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\ntype DrawerState = {\n isOpen: boolean\n}\nconst initialState: DrawerState = {\n isOpen: false,\n};\n\nexport const drawerSlice = createSlice({\n name: \"drawer\",\n initialState,\n reducers: {\n openDrawer: (state: DrawerState)=>{\n state.isOpen = true;\n },\n closeDrawer: (state: DrawerState)=>{\n state.isOpen = false;\n },\n toggleDrawer: (state: DrawerState)=>{\n state.isOpen = !state.isOpen;\n },\n },\n});\n\n\n// Action creators are generated for each case reducer function\nexport const { openDrawer, closeDrawer, toggleDrawer } = drawerSlice.actions\nexport default drawerSlice.reducer"],"names":[],"mappings":";;AAKA,MAAM,YAAY,GAAgB;AAChC,IAAA,MAAM,EAAE,KAAK;CACd;AAEM,MAAM,WAAW,GAAG,WAAW,CAAC;AACrC,IAAA,IAAI,EAAE,QAAQ;IACd,YAAY;AACZ,IAAA,QAAQ,EAAE;AACR,QAAA,UAAU,EAAE,CAAC,KAAkB,KAAG;AAChC,YAAA,KAAK,CAAC,MAAM,GAAG,IAAI;QACrB,CAAC;AACD,QAAA,WAAW,EAAE,CAAC,KAAkB,KAAG;AACjC,YAAA,KAAK,CAAC,MAAM,GAAG,KAAK;QACtB,CAAC;AACD,QAAA,YAAY,EAAE,CAAC,KAAkB,KAAG;AAClC,YAAA,KAAK,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM;QAC9B,CAAC;AACF,KAAA;AACF,CAAA;AAGD;AACO,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,WAAW,CAAC;AACrE,oBAAe,WAAW,CAAC,OAAO;;;;"}
@@ -0,0 +1,16 @@
1
+ export type ToastType = "success" | "error" | "warning" | "info";
2
+ export type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
3
+ export interface Toast {
4
+ id: string;
5
+ message: string;
6
+ type: ToastType;
7
+ position: ToastPosition;
8
+ duration?: number;
9
+ }
10
+ export interface ToastState {
11
+ toasts: Toast[];
12
+ }
13
+ export declare const addToast: import("@reduxjs/toolkit").ActionCreatorWithPayload<Toast, "toast/addToast">, removeToast: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "toast/removeToast">, clearAllToasts: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"toast/clearAllToasts">;
14
+ declare const _default: import("redux").Reducer<ToastState>;
15
+ export default _default;
16
+ //# sourceMappingURL=toastSlice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toastSlice.d.ts","sourceRoot":"","sources":["../../../../src/store/features/toast/toastSlice.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;CACjB;AAsBD,eAAO,MAAQ,QAAQ,gFAAE,WAAW,oFAAE,cAAc,gFAAuB,CAAC;;AAC5E,wBAAkC"}
@@ -0,0 +1,26 @@
1
+ import { createSlice } from '../../../node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.js';
2
+
3
+ // store/features/toast/toastSlice.ts
4
+ const initialState = {
5
+ toasts: [],
6
+ };
7
+ const toastSlice = createSlice({
8
+ name: "toast",
9
+ initialState,
10
+ reducers: {
11
+ addToast: (state, action) => {
12
+ state.toasts.push(action.payload);
13
+ },
14
+ removeToast: (state, action) => {
15
+ state.toasts = state.toasts.filter((toast) => toast.id !== action.payload);
16
+ },
17
+ clearAllToasts: (state) => {
18
+ state.toasts = [];
19
+ },
20
+ },
21
+ });
22
+ const { addToast, removeToast, clearAllToasts } = toastSlice.actions;
23
+ var toastReducers = toastSlice.reducer;
24
+
25
+ export { addToast, clearAllToasts, toastReducers as default, removeToast };
26
+ //# sourceMappingURL=toastSlice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toastSlice.js","sources":["../../../../src/store/features/toast/toastSlice.ts"],"sourcesContent":["// store/features/toast/toastSlice.ts\nimport { createSlice, PayloadAction } from \"@reduxjs/toolkit\";\n\nexport type ToastType = \"success\" | \"error\" | \"warning\" | \"info\";\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\nexport interface Toast {\n id: string;\n message: string;\n type: ToastType;\n position: ToastPosition;\n duration?: number;\n}\n\nexport interface ToastState {\n toasts: Toast[];\n}\n\nconst initialState: ToastState = {\n toasts: [],\n};\n\nconst toastSlice = createSlice({\n name: \"toast\",\n initialState,\n reducers: {\n addToast: (state, action: PayloadAction<Toast>) => {\n state.toasts.push(action.payload);\n },\n removeToast: (state, action: PayloadAction<string>) => {\n state.toasts = state.toasts.filter((toast) => toast.id !== action.payload);\n },\n clearAllToasts: (state) => {\n state.toasts = [];\n },\n },\n});\n\nexport const { addToast, removeToast, clearAllToasts } = toastSlice.actions;\nexport default toastSlice.reducer;"],"names":[],"mappings":";;AAAA;AAwBA,MAAM,YAAY,GAAe;AAC/B,IAAA,MAAM,EAAE,EAAE;CACX;AAED,MAAM,UAAU,GAAG,WAAW,CAAC;AAC7B,IAAA,IAAI,EAAE,OAAO;IACb,YAAY;AACZ,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE,CAAC,KAAK,EAAE,MAA4B,KAAI;YAChD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QACnC,CAAC;AACD,QAAA,WAAW,EAAE,CAAC,KAAK,EAAE,MAA6B,KAAI;YACpD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC;QAC5E,CAAC;AACD,QAAA,cAAc,EAAE,CAAC,KAAK,KAAI;AACxB,YAAA,KAAK,CAAC,MAAM,GAAG,EAAE;QACnB,CAAC;AACF,KAAA;AACF,CAAA,CAAC;AAEK,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;AACpE,oBAAe,UAAU,CAAC,OAAO;;;;"}
@@ -0,0 +1,10 @@
1
+ import { TypedUseSelectorHook } from "react-redux";
2
+ import type { RootState } from "./store";
3
+ export declare const useAppDispatch: () => import("redux-thunk").ThunkDispatch<{
4
+ toast: import("./features/toast/toastSlice").ToastState;
5
+ drawer: {
6
+ isOpen: boolean;
7
+ };
8
+ }, undefined, import("redux").UnknownAction> & import("redux").Dispatch<import("redux").UnknownAction>;
9
+ export declare const useAppSelector: TypedUseSelectorHook<RootState>;
10
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/store/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAA4B,MAAM,aAAa,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAe,MAAM,SAAS,CAAC;AAGtD,eAAO,MAAM,cAAc;;;;;sGAAmC,CAAC;AAC/D,eAAO,MAAM,cAAc,EAAE,oBAAoB,CAAC,SAAS,CAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { useSelector, useDispatch } from '../node_modules/react-redux/dist/react-redux.js';
2
+
3
+ // Use throughout app instead of plain useDispatch/useSelector
4
+ const useAppDispatch = () => useDispatch();
5
+ const useAppSelector = useSelector;
6
+
7
+ export { useAppDispatch, useAppSelector };
8
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sources":["../../src/store/hooks.ts"],"sourcesContent":["import { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\nimport type { RootState, AppDispatch } from \"./store\";\n\n// Use throughout app instead of plain useDispatch/useSelector\nexport const useAppDispatch = () => useDispatch<AppDispatch>();\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\n"],"names":[],"mappings":";;AAGA;MACa,cAAc,GAAG,MAAM,WAAW;AACxC,MAAM,cAAc,GAAoC;;;;"}
@@ -0,0 +1,16 @@
1
+ export declare const store: import("@reduxjs/toolkit").EnhancedStore<{
2
+ toast: import("./features/toast/toastSlice").ToastState;
3
+ drawer: {
4
+ isOpen: boolean;
5
+ };
6
+ }, import("redux").UnknownAction, import("@reduxjs/toolkit").Tuple<[import("redux").StoreEnhancer<{
7
+ dispatch: import("redux-thunk").ThunkDispatch<{
8
+ toast: import("./features/toast/toastSlice").ToastState;
9
+ drawer: {
10
+ isOpen: boolean;
11
+ };
12
+ }, undefined, import("redux").UnknownAction>;
13
+ }>, import("redux").StoreEnhancer]>>;
14
+ export type RootState = ReturnType<typeof store.getState>;
15
+ export type AppDispatch = typeof store.dispatch;
16
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK;;;;;;;;;;;;oCAKhB,CAAA;AAGF,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,OAAO,KAAK,CAAC,QAAQ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { configureStore } from '../node_modules/@reduxjs/toolkit/dist/redux-toolkit.modern.js';
2
+ import toastReducers from './features/toast/toastSlice.js';
3
+ import drawerReducer from './features/drawer/drawer.slice.js';
4
+
5
+ const store = configureStore({
6
+ reducer: {
7
+ toast: toastReducers,
8
+ drawer: drawerReducer
9
+ }
10
+ });
11
+
12
+ export { store };
13
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sources":["../../src/store/store.ts"],"sourcesContent":["import { configureStore } from \"@reduxjs/toolkit\";\nimport toastReducers from './features/toast/toastSlice'\nimport drawerReducer from './features/drawer/drawer.slice'\n\nexport const store = configureStore({\n reducer: {\n toast: toastReducers,\n drawer: drawerReducer\n }\n})\n\n// ✅ Types inferred from store itself\nexport type RootState = ReturnType<typeof store.getState>;\nexport type AppDispatch = typeof store.dispatch;\n"],"names":[],"mappings":";;;;AAIO,MAAM,KAAK,GAAG,cAAc,CAAC;AAClC,IAAA,OAAO,EAAE;AACP,QAAA,KAAK,EAAE,aAAa;AACpB,QAAA,MAAM,EAAE;AACT;AACF,CAAA;;;;"}
@@ -0,0 +1,2 @@
1
+ .form-module_body__ovEaB{align-items:center;background:linear-gradient(135deg,#0a0a0a,#1a1a1a);display:flex;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;justify-content:center;margin:0;min-height:100dvh;padding:20px}.form-module_container__pfSTX{background:#1e1e1e;border:1px solid #333;border-radius:12px;box-shadow:0 10px 40px rgba(0,0,0,.5);max-width:420px;padding:40px;width:100%}.form-module_header__-Vh-f{margin-bottom:32px;text-align:center}.form-module_title__ov3mG{color:#fff;font-size:28px;margin:0 0 8px}.form-module_subtitle__HvTd0{color:#9ca3af;font-size:14px;margin:0}.form-module_formGroup__hWjui{margin-bottom:24px}.form-module_label__MepSB{color:#e5e5e5;display:block;font-size:14px;font-weight:600;margin-bottom:8px}.form-module_inputWrapper__ByHFQ{position:relative}.form-module_input__oNK5d{background:#2a2a2a;border:2px solid #333;border-radius:8px;box-sizing:border-box;color:#e5e5e5;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:15px;outline:none;padding:12px 16px;transition:border-color .3s;width:100%}.form-module_input__oNK5d:focus{border-color:#666}.form-module_input__oNK5d::placeholder{color:#666}.form-module_inputPassword__Swhcb{padding-right:70px}.form-module_passwordToggle__Tc-Of{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:14px;padding:4px 8px;position:absolute;right:16px;top:50%;transform:translateY(-50%);transition:color .3s}.form-module_passwordToggle__Tc-Of:hover{color:#e5e5e5}.form-module_termsWrapper__NDC-h{align-items:flex-start;display:flex;gap:8px;margin-bottom:24px}.form-module_termsLabel__CsRXv{color:#9ca3af;cursor:pointer;font-size:14px;line-height:1.5;user-select:none}.form-module_termsLink__Gfi4D{color:#e5e5e5;text-decoration:none;transition:color .3s}.form-module_termsLink__Gfi4D:hover{color:#fff;text-decoration:underline}.form-module_formOptions__R9lFj{align-items:center;display:flex;flex-wrap:wrap;font-size:14px;gap:12px;justify-content:space-between;margin-bottom:24px}.form-module_rememberMe__iZ1Y6{align-items:center;display:flex;gap:8px}.form-module_checkbox__6nZn8{accent-color:#666;cursor:pointer;height:16px;width:16px}.form-module_checkboxLabel__90ZXF{color:#9ca3af;cursor:pointer;user-select:none}.form-module_forgotPassword__8tUhn{color:#e5e5e5;text-decoration:none;transition:color .3s}.form-module_forgotPassword__8tUhn:hover{color:#fff;text-decoration:underline}.form-module_submitButton__SFtC4{background:#fff;border:none;border-radius:8px;color:#000;cursor:pointer;font-size:16px;font-weight:600;margin-bottom:20px;padding:14px;transition:transform .2s,box-shadow .2s;width:100%}.form-module_submitButton__SFtC4:hover:not(:disabled){box-shadow:0 6px 20px hsla(0,0%,100%,.2);transform:translateY(-2px)}.form-module_submitButton__SFtC4:active:not(:disabled){transform:translateY(0)}.form-module_submitButtonDisabled__FBAby{background:#666;color:#999;cursor:not-allowed;opacity:.6}.form-module_divider__SO1uz{align-items:center;display:flex;gap:12px;margin:24px 0}.form-module_dividerLine__EzKmX{background:#333;flex:1;height:1px}.form-module_dividerText__IZf8J{color:#9ca3af;font-size:14px;white-space:nowrap}.form-module_googleButton__3-UZH{align-items:center;background:#2a2a2a;border:2px solid #333;border-radius:8px;color:#e5e5e5;cursor:pointer;display:flex;font-size:16px;font-weight:600;gap:12px;justify-content:center;padding:14px;transition:all .2s;width:100%}.form-module_googleButton__3-UZH:hover{background:#333;border-color:#444}.form-module_googleIcon__G1GFD{flex-shrink:0;height:20px;width:20px}.form-module_linkContainer__day9b{color:#9ca3af;font-size:14px;margin-top:24px;text-align:center}.form-module_linkAnchor__FitVq{color:#e5e5e5;font-weight:600;text-decoration:none;transition:color .3s}.form-module_linkAnchor__FitVq:hover{color:#fff;text-decoration:underline}@media (max-width:480px){.form-module_container__pfSTX{max-width:100%}.form-module_title__ov3mG{font-size:24px}.form-module_subtitle__HvTd0{font-size:13px}.form-module_formOptions__R9lFj{align-items:flex-start;flex-direction:column;gap:12px}.form-module_googleButton__3-UZH,.form-module_submitButton__SFtC4{font-size:15px;padding:12px}.form-module_termsWrapper__NDC-h{gap:6px}.form-module_termsLabel__CsRXv{font-size:13px}}@media (max-width:360px){.form-module_body__ovEaB{padding:8px}.form-module_container__pfSTX{padding:24px 20px}.form-module_title__ov3mG{font-size:22px}.form-module_formGroup__hWjui{margin-bottom:20px}.form-module_inputPassword__Swhcb,.form-module_input__oNK5d{font-size:14px;padding:10px 14px}.form-module_passwordToggle__Tc-Of{font-size:13px;padding:4px 6px}.form-module_termsLabel__CsRXv{font-size:12px}}@keyframes toast-module_slideIn__H-Pk9{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes toast-module_slideOut__3csxM{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-20px)}}.toast-module_container__ohgV5{pointer-events:none;position:fixed;z-index:9999}.toast-module_topLeft__SzFS9{left:20px;top:20px}.toast-module_topCenter__X5W-x{left:50%;top:20px;transform:translateX(-50%)}.toast-module_topRight__WiZzM{right:20px;top:20px}.toast-module_bottomLeft__ZZ7VF{bottom:20px;left:20px}.toast-module_bottomCenter__QNJrM{bottom:20px;left:50%;transform:translateX(-50%)}.toast-module_bottomRight__DMtoS{bottom:20px;right:20px}.toast-module_toast__HNUcj{align-items:center;animation:toast-module_slideIn__H-Pk9 .3s ease-out;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.5);display:flex;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:500;gap:12px;margin-bottom:12px;max-width:500px;min-width:300px;padding:16px 20px;pointer-events:auto}.toast-module_success__gWJh5{background:#10b981;border:1px solid #059669;color:#fff}.toast-module_error__DMi33{background:#ef4444;border:1px solid #dc2626;color:#fff}.toast-module_warning__u0IYu{background:#f59e0b;border:1px solid #d97706;color:#fff}.toast-module_info__Kprtr{background:#3b82f6;border:1px solid #2563eb;color:#fff}.toast-module_icon__LIAqr{flex-shrink:0;height:20px;width:20px}.toast-module_message__TBY65{flex:1;line-height:1.5}.toast-module_closeButton__9JKNG{align-items:center;background:transparent;border:none;color:inherit;cursor:pointer;display:flex;justify-content:center;opacity:.8;padding:4px;transition:opacity .2s}.toast-module_closeButton__9JKNG:hover{opacity:1}.drawer-module_overlay__q-K7v{backdrop-filter:blur(2px);background:rgba(0,0,0,.6);bottom:0;left:0;opacity:0;position:fixed;right:0;top:0;transition:opacity .3s ease,visibility .3s ease;visibility:hidden;z-index:1998}.drawer-module_overlayActive__TBtTp{opacity:1;visibility:visible}.drawer-module_drawer__BYzka{background:#1e1e1e;border-right:1px solid #333;bottom:0;display:flex;flex-direction:column;left:0;max-width:300px;overflow-y:auto;position:fixed;top:0;transform:translateX(-100%);transition:transform .3s ease;width:280px;z-index:1999}.drawer-module_drawerOpen__zOzfU{transform:translateX(0)}.drawer-module_drawerHeader__jfnik{align-items:center;border-bottom:1px solid #333;display:flex;justify-content:space-between;padding:20px}.drawer-module_drawerTitle__U6z6w{color:#fff;font-size:20px;font-weight:600;margin:0}.drawer-module_closeButton__jsmLy{align-items:center;background:transparent;border:none;border-radius:8px;color:#9ca3af;cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .3s ease;width:32px}.drawer-module_closeButton__jsmLy svg{height:20px;width:20px}.drawer-module_closeButton__jsmLy:hover{background:#2a2a2a;color:#fff}.drawer-module_userSection__ImkXA{align-items:center;border-bottom:1px solid #333;display:flex;gap:16px;padding:24px 20px}.drawer-module_userAvatar__ULdsW{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:50%;color:#fff;display:flex;flex-shrink:0;height:56px;justify-content:center;width:56px}.drawer-module_userAvatar__ULdsW svg{height:28px;width:28px}.drawer-module_userInfo__9EEOf{flex:1;min-width:0}.drawer-module_userName__8QARh{color:#fff;font-size:16px;font-weight:600;margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-module_userEmail__XzKIK{color:#9ca3af;font-size:13px;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawer-module_drawerNav__7Y0i5{flex:1;padding:16px 12px}.drawer-module_drawerItem__dZ-D-{align-items:center;border-radius:12px;color:#9ca3af;cursor:pointer;display:flex;gap:16px;margin-bottom:4px;padding:12px 16px;position:relative;text-decoration:none;transition:all .3s ease}.drawer-module_drawerItem__dZ-D-:hover{background:#2a2a2a;color:#e5e5e5}.drawer-module_drawerItemActive__qZu83{background:#2a2a2a;color:#fff}.drawer-module_drawerIcon__VEOCM{flex-shrink:0;height:24px;transition:transform .3s ease;width:24px}.drawer-module_drawerItemActive__qZu83 .drawer-module_drawerIcon__VEOCM{transform:scale(1.1)}.drawer-module_drawerLabel__rGRVu{flex:1;font-size:15px;font-weight:500;transition:font-weight .3s ease}.drawer-module_drawerItemActive__qZu83 .drawer-module_drawerLabel__rGRVu{font-weight:600}.drawer-module_activeIndicator__OChhz{background:#fff;border-radius:50%;height:4px;width:4px}.drawer-module_drawerFooter__6lgYV{border-top:1px solid #333;padding:16px 20px}.drawer-module_logoutButton__2ivdr{align-items:center;background:transparent;border:1px solid #333;border-radius:12px;color:#9ca3af;cursor:pointer;display:flex;font-size:15px;font-weight:500;gap:12px;justify-content:center;padding:12px 16px;transition:all .3s ease;width:100%}.drawer-module_logoutButton__2ivdr svg{height:20px;width:20px}.drawer-module_logoutButton__2ivdr:hover{background:#2a2a2a;border-color:#444;color:#fff}@media (min-width:1280px){.drawer-module_overlay__q-K7v{display:none}.drawer-module_drawer__BYzka{flex:1;position:relative;transform:translateX(0)}.drawer-module_childrenContainer__E0MUz{transform:translateX(280px);width:calc(100dvw - 280px)}}@media (max-width:480px){.drawer-module_drawer__BYzka{width:260px}.drawer-module_drawerHeader__jfnik{padding:16px}.drawer-module_drawerTitle__U6z6w{font-size:18px}.drawer-module_userSection__ImkXA{gap:12px;padding:20px 16px}.drawer-module_userAvatar__ULdsW{height:48px;width:48px}.drawer-module_userAvatar__ULdsW svg{height:24px;width:24px}.drawer-module_userName__8QARh{font-size:15px}.drawer-module_userEmail__XzKIK{font-size:12px}.drawer-module_drawerNav__7Y0i5{padding:12px 8px}.drawer-module_drawerItem__dZ-D-{gap:14px;padding:10px 14px}.drawer-module_drawerIcon__VEOCM{height:22px;width:22px}.drawer-module_drawerLabel__rGRVu{font-size:14px}.drawer-module_drawerFooter__6lgYV{padding:12px 16px}.drawer-module_logoutButton__2ivdr{font-size:14px;gap:10px;padding:10px 14px}.drawer-module_logoutButton__2ivdr svg{height:18px;width:18px}}.drawer-module_drawer__BYzka::-webkit-scrollbar{width:6px}.drawer-module_drawer__BYzka::-webkit-scrollbar-track{background:transparent}.drawer-module_drawer__BYzka::-webkit-scrollbar-thumb{background:#333;border-radius:3px}.drawer-module_drawer__BYzka::-webkit-scrollbar-thumb:hover{background:#444}.button-module_button__LqRxW{-webkit-tap-highlight-color:transparent;align-items:center;background:transparent;border:2px solid transparent;border-radius:8px;cursor:pointer;display:inline-flex;font-weight:500;justify-content:center;transition:background-color .2s ease,color .2s ease,border-color .2s ease,transform .1s ease;user-select:none}.button-module_button__LqRxW:active{transform:scale(.97)}.button-module_button__LqRxW:disabled{cursor:not-allowed;opacity:.6}.button-module_primary__6lUa1{--btn-color:#2563eb;--btn-text:#fff}.button-module_success__LF-Tc{--btn-color:#16a34a;--btn-text:#fff}.button-module_warning__aX7nJ{--btn-color:#f59e0b;--btn-text:#000}.button-module_danger__WoOe-{--btn-color:#dc2626;--btn-text:#fff}.button-module_secondary__59fu3{--btn-color:#e5e7eb;--btn-text:#111827}.button-module_filled__qFmoz{background:var(--btn-color);color:var(--btn-text)}.button-module_filled__qFmoz:hover:not(:disabled){filter:brightness(.9)}.button-module_outline__s5gIM{background:transparent;border-color:var(--btn-color);color:var(--btn-color)}.button-module_outline__s5gIM:hover:not(:disabled){background:rgba(0,0,0,.04)}.button-module_dotted__cC708{background:transparent;border:2px dotted var(--btn-color);color:var(--btn-color)}.button-module_dotted__cC708:hover:not(:disabled){background:rgba(0,0,0,.04)}.button-module_sm__XxSLL{font-size:14px;height:36px;padding:0 14px}.button-module_md__MnWVI{font-size:15px;height:44px;padding:0 18px}.button-module_lg__sGtW2{font-size:16px;height:52px;padding:0 22px}.button-module_fullWidth__dcXRG{width:100%}@media (max-width:480px){.button-module_md__MnWVI{font-size:16px;height:48px}.button-module_lg__sGtW2{font-size:17px;height:56px}}.bottom-tab-module_bottomTab__Tq18p{background:#1e1e1e;border-top:1px solid #333;bottom:0;height:60px;left:0;padding-bottom:env(safe-area-inset-bottom);position:fixed;right:0;z-index:1000}.bottom-tab-module_tabContainer__gPnK8{align-items:center;display:flex;justify-content:space-around;margin:0 auto;max-width:768px;padding:8px 0}.bottom-tab-module_tabItem__74ogp{align-items:center;border-radius:12px;color:#9ca3af;cursor:pointer;display:flex;flex:1;flex-direction:column;justify-content:center;margin:0 4px;padding:8px 12px;position:relative;text-decoration:none;transition:all .3s ease}.bottom-tab-module_tabItem__74ogp:hover{background:#2a2a2a;color:#e5e5e5}.bottom-tab-module_tabItemActive__IEmy1{color:#fff}.bottom-tab-module_tabItemActive__IEmy1:before{background:#fff;border-radius:0 0 3px 3px;content:"";height:3px;left:50%;position:absolute;top:0;transform:translateX(-50%);width:40px}.bottom-tab-module_tabIcon__hfFxW{height:24px;margin-bottom:4px;transition:transform .3s ease;width:24px}.bottom-tab-module_tabItemActive__IEmy1 .bottom-tab-module_tabIcon__hfFxW{transform:scale(1.1)}.bottom-tab-module_tabLabel__eqEhf{font-size:11px;font-weight:500;text-align:center;transition:font-size .3s ease;white-space:nowrap}.bottom-tab-module_tabItemActive__IEmy1 .bottom-tab-module_tabLabel__eqEhf{font-size:12px;font-weight:600}@media (max-width:480px){.bottom-tab-module_tabContainer__gPnK8{padding:6px 0}.bottom-tab-module_tabItem__74ogp{margin:0 2px;padding:6px 8px}.bottom-tab-module_tabIcon__hfFxW{height:22px;margin-bottom:3px;width:22px}.bottom-tab-module_tabLabel__eqEhf{font-size:10px}.bottom-tab-module_tabItemActive__IEmy1 .bottom-tab-module_tabLabel__eqEhf{font-size:11px}}@media (max-width:360px){.bottom-tab-module_tabContainer__gPnK8{padding:4px 0}.bottom-tab-module_tabItem__74ogp{margin:0 1px;padding:4px 6px}.bottom-tab-module_tabIcon__hfFxW{height:20px;margin-bottom:2px;width:20px}.bottom-tab-module_tabLabel__eqEhf{font-size:9px}.bottom-tab-module_tabItemActive__IEmy1 .bottom-tab-module_tabLabel__eqEhf{font-size:10px}.bottom-tab-module_tabItemActive__IEmy1:before{height:2px;width:30px}}@media (min-width:769px){.bottom-tab-module_bottomTab__Tq18p{display:none}}.header-module_header__4yGjO{background:#1e1e1e;border-bottom:1px solid #333;padding-top:env(safe-area-inset-top);z-index:1000}.header-module_container__XxMaY{align-items:center;display:flex;gap:24px;justify-content:space-between;margin:0 auto;max-width:1200px;padding:16px 24px}.header-module_logo__vVUWQ{align-items:center;color:#fff;display:flex;flex-shrink:0;font-size:20px;font-weight:700;gap:12px;text-decoration:none;transition:color .3s}.header-module_logo__vVUWQ:hover{color:#e5e5e5}.header-module_logoIcon__Ullvu{align-items:center;background:#2a2a2a;border-radius:8px;display:flex;height:32px;justify-content:center;padding:6px;width:32px}.header-module_logoText__7aFlE{white-space:nowrap}.header-module_desktopNav__aPjEw{align-items:center;display:flex;flex:1;gap:8px;justify-content:center}.header-module_navLink__ha3tQ{border-radius:8px;color:#9ca3af;font-size:15px;font-weight:500;padding:8px 16px;text-decoration:none;transition:all .3s;white-space:nowrap}.header-module_navLink__ha3tQ:hover{background:#2a2a2a;color:#e5e5e5}.header-module_navLinkActive__u3y-G{background:#2a2a2a;color:#fff;font-weight:600}.header-module_actions__Bv-xm{align-items:center;display:flex;flex-shrink:0;gap:8px}.header-module_iconButton__sI4Ry{align-items:center;background:#2a2a2a;border:1px solid #333;border-radius:8px;color:#9ca3af;cursor:pointer;display:flex;height:40px;justify-content:center;position:relative;transition:all .3s;width:40px}.header-module_iconButton__sI4Ry:hover{background:#333;border-color:#444;color:#e5e5e5}.header-module_iconButton__sI4Ry svg{height:20px;width:20px}.header-module_badge__09jsK{background:#ef4444;border-radius:10px;color:#fff;font-size:10px;font-weight:600;min-width:18px;padding:2px 6px;position:absolute;right:-4px;text-align:center;top:-4px}.header-module_userProfile__Pz0tj{align-items:center;display:flex;text-decoration:none}.header-module_avatar__Vnj-L{align-items:center;background:#2a2a2a;border:2px solid #333;border-radius:50%;color:#9ca3af;cursor:pointer;display:flex;height:40px;justify-content:center;transition:all .3s;width:40px}.header-module_avatar__Vnj-L:hover{border-color:#444;color:#e5e5e5}.header-module_avatar__Vnj-L svg{height:20px;width:20px}.header-module_mobileMenuButton__nYFBZ{align-items:center;background:#2a2a2a;border:1px solid #333;border-radius:8px;color:#9ca3af;cursor:pointer;display:none;height:40px;justify-content:center;transition:all .3s;width:40px}.header-module_mobileMenuButton__nYFBZ:hover{background:#333;border-color:#444;color:#e5e5e5}.header-module_mobileMenuButton__nYFBZ svg{height:24px;width:24px}.header-module_mobileNav__AYWUq{background:#1a1a1a;border-top:1px solid #333;display:none;flex-direction:column;max-height:0;overflow:hidden;transition:max-height .3s ease-in-out}.header-module_mobileNavOpen__2Hsn-{max-height:400px}.header-module_mobileNavLink__nSn5t{border-left:3px solid transparent;color:#9ca3af;font-size:16px;font-weight:500;padding:16px 24px;text-decoration:none;transition:all .3s}.header-module_mobileNavLink__nSn5t:hover{background:#2a2a2a;color:#e5e5e5}.header-module_mobileNavLinkActive__y0qkP{background:#2a2a2a;border-left-color:#fff;color:#fff;font-weight:600}@media (max-width:768px){.header-module_desktopNav__aPjEw{display:none}.header-module_mobileMenuButton__nYFBZ,.header-module_mobileNav__AYWUq{display:flex}.header-module_container__XxMaY{padding:12px 20px}.header-module_logoText__7aFlE{font-size:18px}.header-module_iconButton__sI4Ry{height:36px;width:36px}.header-module_iconButton__sI4Ry svg{height:18px;width:18px}.header-module_avatar__Vnj-L{height:36px;width:36px}.header-module_avatar__Vnj-L svg{height:18px;width:18px}}@media (max-width:480px){.header-module_container__XxMaY{gap:12px;padding:10px 16px}.header-module_logo__vVUWQ{font-size:16px;gap:8px}.header-module_logoIcon__Ullvu{height:28px;padding:5px;width:28px}.header-module_actions__Bv-xm{gap:6px}.header-module_iconButton__sI4Ry{height:32px;width:32px}.header-module_iconButton__sI4Ry svg{height:16px;width:16px}.header-module_avatar__Vnj-L{height:32px;width:32px}.header-module_avatar__Vnj-L svg{height:16px;width:16px}.header-module_badge__09jsK{font-size:9px;min-width:16px;padding:1px 5px}.header-module_mobileNavLink__nSn5t{font-size:15px;padding:14px 20px}}@media (max-width:360px){.header-module_container__XxMaY{padding:8px 12px}.header-module_iconButton__sI4Ry:first-of-type,.header-module_logoText__7aFlE{display:none}}.navigatior-provider-module_container__h-e8Q{display:flex;flex-direction:column;height:100dvh;overflow:hidden;width:100dvw}.navigatior-provider-module_container__h-e8Q>:first-child{flex-shrink:0}.navigatior-provider-module_drawerWrapper__k9s5F{display:flex;flex:1;min-height:0;overflow:hidden}.navigatior-provider-module_drawerWrapper__k9s5F>:first-child{flex-shrink:0}.navigatior-provider-module_children__ywWjy{flex:1;min-height:0;min-width:0;overflow-x:hidden;overflow-y:auto}@media (max-width:670px){.navigatior-provider-module_bottomTabActive__s-qqx{padding-bottom:60px}}@media (hover:hover) and (pointer:fine){.navigatior-provider-module_children__ywWjy::-webkit-scrollbar{width:8px}.navigatior-provider-module_children__ywWjy::-webkit-scrollbar-track{background:transparent}.navigatior-provider-module_children__ywWjy::-webkit-scrollbar-thumb{background-color:hsla(0,0%,47%,.6);border-radius:8px}.navigatior-provider-module_children__ywWjy::-webkit-scrollbar-thumb:hover{background-color:hsla(0,0%,47%,.9)}.navigatior-provider-module_children__ywWjy{scrollbar-color:hsla(0,0%,47%,.6) transparent;scrollbar-width:thin}}@media (hover:none) and (pointer:coarse){.navigatior-provider-module_children__ywWjy{scrollbar-width:none}.navigatior-provider-module_children__ywWjy::-webkit-scrollbar{display:none}}
2
+ /*# sourceMappingURL=styles.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["form.module.css","toast.module.css","drawer.module.css","button.module.css","bottom-tab.module.css","header.module.css","navigatior-provider.module.css"],"names":[],"mappings":"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","file":"styles.css","sourcesContent":["\n/* ================================ */\n/* form.module.css */\n/* ================================ */\n\n.body {\n margin: 0;\n padding: 0;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background: linear-gradient(135deg, #0a0a0a 0%, #1a1a1a 100%);\n min-height: 100dvh;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 20px;\n}\n\n.container {\n background: #1e1e1e;\n border-radius: 12px;\n box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);\n width: 100%;\n max-width: 420px;\n padding: 40px;\n border: 1px solid #333;\n}\n\n.header {\n text-align: center;\n margin-bottom: 32px;\n}\n\n.title {\n color: #ffffff;\n font-size: 28px;\n margin: 0 0 8px 0;\n}\n\n.subtitle {\n color: #9ca3af;\n font-size: 14px;\n margin: 0;\n}\n\n.formGroup {\n margin-bottom: 24px;\n}\n\n.label {\n display: block;\n color: #e5e5e5;\n font-size: 14px;\n font-weight: 600;\n margin-bottom: 8px;\n}\n\n.inputWrapper {\n position: relative;\n}\n\n.input {\n width: 100%;\n padding: 12px 16px;\n border: 2px solid #333;\n border-radius: 8px;\n font-size: 15px;\n background: #2a2a2a;\n color: #e5e5e5;\n outline: none;\n transition: border-color 0.3s;\n box-sizing: border-box;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.input:focus {\n border-color: #666;\n}\n\n.input::placeholder {\n color: #666;\n}\n\n.inputPassword {\n padding-right: 70px;\n}\n\n.passwordToggle {\n position: absolute;\n right: 16px;\n top: 50%;\n transform: translateY(-50%);\n background: none;\n border: none;\n cursor: pointer;\n color: #9ca3af;\n font-size: 14px;\n padding: 4px 8px;\n transition: color 0.3s;\n}\n\n.passwordToggle:hover {\n color: #e5e5e5;\n}\n\n\n.termsWrapper {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n margin-bottom: 24px;\n}\n\n\n.termsLabel {\n color: #9ca3af;\n cursor: pointer;\n font-size: 14px;\n line-height: 1.5;\n user-select: none;\n}\n\n.termsLink {\n color: #e5e5e5;\n text-decoration: none;\n transition: color 0.3s;\n}\n\n.termsLink:hover {\n color: #ffffff;\n text-decoration: underline;\n}\n\n\n.formOptions {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 24px;\n font-size: 14px;\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.rememberMe {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.checkbox {\n width: 16px;\n height: 16px;\n cursor: pointer;\n accent-color: #666;\n}\n\n.checkboxLabel {\n color: #9ca3af;\n cursor: pointer;\n user-select: none;\n}\n\n.forgotPassword {\n color: #e5e5e5;\n text-decoration: none;\n transition: color 0.3s;\n}\n\n.forgotPassword:hover {\n color: #ffffff;\n text-decoration: underline;\n}\n\n.submitButton {\n width: 100%;\n padding: 14px;\n background: #ffffff;\n color: #000000;\n border: none;\n border-radius: 8px;\n font-size: 16px;\n font-weight: 600;\n cursor: pointer;\n transition: transform 0.2s, box-shadow 0.2s;\n margin-bottom: 20px;\n}\n\n.submitButton:hover:not(:disabled) {\n transform: translateY(-2px);\n box-shadow: 0 6px 20px rgba(255, 255, 255, 0.2);\n}\n\n.submitButton:active:not(:disabled) {\n transform: translateY(0);\n}\n\n.submitButtonDisabled {\n background: #666;\n color: #999;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.divider {\n display: flex;\n align-items: center;\n margin: 24px 0;\n gap: 12px;\n}\n\n.dividerLine {\n flex: 1;\n height: 1px;\n background: #333;\n}\n\n.dividerText {\n color: #9ca3af;\n font-size: 14px;\n white-space: nowrap;\n}\n\n.googleButton {\n width: 100%;\n padding: 14px;\n background: #2a2a2a;\n color: #e5e5e5;\n border: 2px solid #333;\n border-radius: 8px;\n font-size: 16px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n}\n\n.googleButton:hover {\n background: #333;\n border-color: #444;\n}\n\n.googleIcon {\n width: 20px;\n height: 20px;\n flex-shrink: 0;\n}\n\n.linkContainer {\n text-align: center;\n margin-top: 24px;\n font-size: 14px;\n color: #9ca3af;\n}\n\n.linkAnchor {\n color: #e5e5e5;\n text-decoration: none;\n font-weight: 600;\n transition: color 0.3s;\n}\n\n.linkAnchor:hover {\n color: #ffffff;\n text-decoration: underline;\n}\n\n/* Responsive Design */\n@media (max-width: 480px) {\n .container {\n max-width: 100%;\n }\n\n .title {\n font-size: 24px;\n }\n\n .subtitle {\n font-size: 13px;\n }\n\n .formOptions {\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n }\n\n .submitButton,\n .googleButton {\n padding: 12px;\n font-size: 15px;\n }\n\n .termsWrapper {\n gap: 6px;\n }\n\n .termsLabel {\n font-size: 13px;\n }\n}\n\n@media (max-width: 360px) {\n .body {\n padding: 8px;\n }\n\n .container {\n padding: 24px 20px;\n }\n\n .title {\n font-size: 22px;\n }\n\n .formGroup {\n margin-bottom: 20px;\n }\n\n .input,\n .inputPassword {\n font-size: 14px;\n padding: 10px 14px;\n }\n\n .passwordToggle {\n font-size: 13px;\n padding: 4px 6px;\n }\n .termsLabel {\n font-size: 12px;\n }\n\n}","/* toast.module.css */\n\n@keyframes slideIn {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideOut {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-20px);\n }\n}\n\n.container {\n position: fixed;\n z-index: 9999;\n pointer-events: none;\n}\n\n.topLeft {\n top: 20px;\n left: 20px;\n}\n\n.topCenter {\n top: 20px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.topRight {\n top: 20px;\n right: 20px;\n}\n\n.bottomLeft {\n bottom: 20px;\n left: 20px;\n}\n\n.bottomCenter {\n bottom: 20px;\n left: 50%;\n transform: translateX(-50%);\n}\n\n.bottomRight {\n bottom: 20px;\n right: 20px;\n}\n\n.toast {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 20px;\n border-radius: 8px;\n margin-bottom: 12px;\n min-width: 300px;\n max-width: 500px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5);\n pointer-events: auto;\n animation: slideIn 0.3s ease-out;\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n font-size: 14px;\n font-weight: 500;\n}\n\n.success {\n background: #10b981;\n color: #ffffff;\n border: 1px solid #059669;\n}\n\n.error {\n background: #ef4444;\n color: #ffffff;\n border: 1px solid #dc2626;\n}\n\n.warning {\n background: #f59e0b;\n color: #ffffff;\n border: 1px solid #d97706;\n}\n\n.info {\n background: #3b82f6;\n color: #ffffff;\n border: 1px solid #2563eb;\n}\n\n.icon {\n flex-shrink: 0;\n width: 20px;\n height: 20px;\n}\n\n.message {\n flex: 1;\n line-height: 1.5;\n}\n\n.closeButton {\n background: transparent;\n border: none;\n color: inherit;\n cursor: pointer;\n padding: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n opacity: 0.8;\n transition: opacity 0.2s;\n}\n\n.closeButton:hover {\n opacity: 1;\n}","\n/* ================================ */\n/* drawer.module.css */\n/* ================================ */\n\n.overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.6);\n backdrop-filter: blur(2px);\n opacity: 0;\n visibility: hidden;\n transition: opacity 0.3s ease, visibility 0.3s ease;\n z-index: 1998;\n}\n\n.overlayActive {\n opacity: 1;\n visibility: visible;\n}\n\n.drawer {\n position: fixed;\n top: 0;\n left: 0;\n bottom: 0;\n width: 280px;\n max-width: 300px;\n /* max-width: 85vw; */\n background: #1e1e1e;\n border-right: 1px solid #333;\n transform: translateX(-100%);\n transition: transform 0.3s ease;\n z-index: 1999;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n\n.drawerOpen {\n transform: translateX(0);\n}\n\n.drawerHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px;\n border-bottom: 1px solid #333;\n}\n\n.drawerTitle {\n font-size: 20px;\n font-weight: 600;\n color: #ffffff;\n margin: 0;\n}\n\n.closeButton {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: transparent;\n border: none;\n color: #9ca3af;\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.3s ease;\n}\n\n.closeButton svg {\n width: 20px;\n height: 20px;\n}\n\n.closeButton:hover {\n background: #2a2a2a;\n color: #ffffff;\n}\n\n.userSection {\n padding: 24px 20px;\n border-bottom: 1px solid #333;\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.userAvatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n display: flex;\n align-items: center;\n justify-content: center;\n color: #ffffff;\n flex-shrink: 0;\n}\n\n.userAvatar svg {\n width: 28px;\n height: 28px;\n}\n\n.userInfo {\n flex: 1;\n min-width: 0;\n}\n\n.userName {\n font-size: 16px;\n font-weight: 600;\n color: #ffffff;\n margin: 0 0 4px 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.userEmail {\n font-size: 13px;\n color: #9ca3af;\n margin: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.drawerNav {\n flex: 1;\n padding: 16px 12px;\n}\n\n.drawerItem {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n margin-bottom: 4px;\n text-decoration: none;\n color: #9ca3af;\n border-radius: 12px;\n transition: all 0.3s ease;\n position: relative;\n cursor: pointer;\n}\n\n.drawerItem:hover {\n background: #2a2a2a;\n color: #e5e5e5;\n}\n\n.drawerItemActive {\n background: #2a2a2a;\n color: #ffffff;\n}\n\n.drawerIcon {\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n transition: transform 0.3s ease;\n}\n\n.drawerItemActive .drawerIcon {\n transform: scale(1.1);\n}\n\n.drawerLabel {\n font-size: 15px;\n font-weight: 500;\n flex: 1;\n transition: font-weight 0.3s ease;\n}\n\n.drawerItemActive .drawerLabel {\n font-weight: 600;\n}\n\n.activeIndicator {\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background: #ffffff;\n}\n\n.drawerFooter {\n padding: 16px 20px;\n border-top: 1px solid #333;\n}\n\n.logoutButton {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 12px;\n width: 100%;\n padding: 12px 16px;\n background: transparent;\n border: 1px solid #333;\n border-radius: 12px;\n color: #9ca3af;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\n.logoutButton svg {\n width: 20px;\n height: 20px;\n}\n\n.logoutButton:hover {\n background: #2a2a2a;\n border-color: #444;\n color: #ffffff;\n}\n\n@media (min-width: 1280px) {\n .overlay {\n display: none;\n }\n .drawer {\n transform: translateX(0);\n position: relative;\n flex: 1;\n }\n .childrenContainer {\n transform: translateX(280px);\n width: calc(100dvw - 280px);\n }\n}\n/* Responsive Design */\n@media (max-width: 480px) {\n .drawer {\n width: 260px;\n }\n\n .drawerHeader {\n padding: 16px;\n }\n\n .drawerTitle {\n font-size: 18px;\n }\n\n .userSection {\n padding: 20px 16px;\n gap: 12px;\n }\n\n .userAvatar {\n width: 48px;\n height: 48px;\n }\n\n .userAvatar svg {\n width: 24px;\n height: 24px;\n }\n\n .userName {\n font-size: 15px;\n }\n\n .userEmail {\n font-size: 12px;\n }\n\n .drawerNav {\n padding: 12px 8px;\n }\n\n .drawerItem {\n padding: 10px 14px;\n gap: 14px;\n }\n\n .drawerIcon {\n width: 22px;\n height: 22px;\n }\n\n .drawerLabel {\n font-size: 14px;\n }\n\n .drawerFooter {\n padding: 12px 16px;\n }\n\n .logoutButton {\n padding: 10px 14px;\n font-size: 14px;\n gap: 10px;\n }\n\n .logoutButton svg {\n width: 18px;\n height: 18px;\n }\n}\n\n/* Custom Scrollbar */\n.drawer::-webkit-scrollbar {\n width: 6px;\n}\n\n.drawer::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.drawer::-webkit-scrollbar-thumb {\n background: #333;\n border-radius: 3px;\n}\n\n.drawer::-webkit-scrollbar-thumb:hover {\n background: #444;\n}","/* ============================\n BASE BUTTON\n ============================ */\n\n.button {\n border-radius: 8px;\n font-weight: 500;\n cursor: pointer;\n user-select: none;\n border: 2px solid transparent;\n background: transparent;\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n transition: background-color 0.2s ease, color 0.2s ease,\n border-color 0.2s ease, transform 0.1s ease;\n\n -webkit-tap-highlight-color: transparent;\n}\n\n.button:active {\n transform: scale(0.97);\n}\n\n.button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n/* ============================\n COLOR VARIANTS (TOKENS)\n ============================ */\n\n.primary {\n --btn-color: #2563eb;\n --btn-text: #ffffff;\n}\n\n.success {\n --btn-color: #16a34a;\n --btn-text: #ffffff;\n}\n\n.warning {\n --btn-color: #f59e0b;\n --btn-text: #000000;\n}\n\n.danger {\n --btn-color: #dc2626;\n --btn-text: #ffffff;\n}\n\n.secondary {\n --btn-color: #e5e7eb;\n --btn-text: #111827;\n}\n\n/* ============================\n APPEARANCES\n ============================ */\n\n/* FILLED */\n.filled {\n background: var(--btn-color);\n color: var(--btn-text);\n}\n\n.filled:hover:not(:disabled) {\n filter: brightness(0.9);\n}\n\n/* OUTLINE */\n.outline {\n background: transparent;\n color: var(--btn-color);\n border-color: var(--btn-color);\n}\n\n.outline:hover:not(:disabled) {\n background: rgba(0, 0, 0, 0.04);\n}\n\n/* DOTTED */\n.dotted {\n background: transparent;\n color: var(--btn-color);\n border: 2px dotted var(--btn-color);\n}\n\n.dotted:hover:not(:disabled) {\n background: rgba(0, 0, 0, 0.04);\n}\n\n/* ============================\n SIZES\n ============================ */\n\n.sm {\n height: 36px;\n padding: 0 14px;\n font-size: 14px;\n}\n\n.md {\n height: 44px;\n padding: 0 18px;\n font-size: 15px;\n}\n\n.lg {\n height: 52px;\n padding: 0 22px;\n font-size: 16px;\n}\n\n/* ============================\n LAYOUT\n ============================ */\n\n.fullWidth {\n width: 100%;\n}\n\n/* ============================\n RESPONSIVE (MOBILE)\n ============================ */\n\n@media (max-width: 480px) {\n .md {\n height: 48px;\n font-size: 16px;\n }\n\n .lg {\n height: 56px;\n font-size: 17px;\n }\n}\n","/* ================================ */\n/* bottomtab.module.css */\n/* ================================ */\n\n.bottomTab {\n position: fixed;\n bottom: 0;\n left: 0;\n right: 0;\n height: 60px;\n background: #1e1e1e;\n border-top: 1px solid #333;\n z-index: 1000;\n padding-bottom: env(safe-area-inset-bottom);\n}\n\n.tabContainer {\n display: flex;\n justify-content: space-around;\n align-items: center;\n max-width: 768px;\n margin: 0 auto;\n padding: 8px 0;\n}\n\n.tabItem {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 8px 12px;\n text-decoration: none;\n color: #9ca3af;\n transition: all 0.3s ease;\n border-radius: 12px;\n margin: 0 4px;\n position: relative;\n cursor: pointer;\n}\n\n.tabItem:hover {\n background: #2a2a2a;\n color: #e5e5e5;\n}\n\n.tabItemActive {\n color: #ffffff;\n}\n\n.tabItemActive::before {\n content: \"\";\n position: absolute;\n top: 0;\n left: 50%;\n transform: translateX(-50%);\n width: 40px;\n height: 3px;\n background: #ffffff;\n border-radius: 0 0 3px 3px;\n}\n\n.tabIcon {\n width: 24px;\n height: 24px;\n margin-bottom: 4px;\n transition: transform 0.3s ease;\n}\n\n.tabItemActive .tabIcon {\n transform: scale(1.1);\n}\n\n.tabLabel {\n font-size: 11px;\n font-weight: 500;\n text-align: center;\n white-space: nowrap;\n transition: font-size 0.3s ease;\n}\n\n.tabItemActive .tabLabel {\n font-weight: 600;\n font-size: 12px;\n}\n\n/* Responsive Design */\n@media (max-width: 480px) {\n .tabContainer {\n padding: 6px 0;\n }\n\n .tabItem {\n padding: 6px 8px;\n margin: 0 2px;\n }\n\n .tabIcon {\n width: 22px;\n height: 22px;\n margin-bottom: 3px;\n }\n\n .tabLabel {\n font-size: 10px;\n }\n\n .tabItemActive .tabLabel {\n font-size: 11px;\n }\n}\n\n@media (max-width: 360px) {\n .tabContainer {\n padding: 4px 0;\n }\n\n .tabItem {\n padding: 4px 6px;\n margin: 0 1px;\n }\n\n .tabIcon {\n width: 20px;\n height: 20px;\n margin-bottom: 2px;\n }\n\n .tabLabel {\n font-size: 9px;\n }\n\n .tabItemActive .tabLabel {\n font-size: 10px;\n }\n\n .tabItemActive::before {\n width: 30px;\n height: 2px;\n }\n}\n\n/* Hide on larger screens (optional) */\n@media (min-width: 769px) {\n .bottomTab {\n display: none;\n }\n}\n\n/* Add padding to body to prevent content being hidden behind bottom tab */\n/* Add this to your global CSS or layout */\n/*\nbody {\n padding-bottom: 70px;\n}\n\n@media (min-width: 769px) {\n body {\n padding-bottom: 0;\n }\n}\n*/\n","\n/* ================================ */\n/* header.module.css */\n/* ================================ */\n\n.header {\n /* position: fixed;\n top: 0;\n left: 0;\n right: 0; */\n background: #1e1e1e;\n border-bottom: 1px solid #333;\n z-index: 1000;\n padding-top: env(safe-area-inset-top);\n}\n\n.container {\n display: flex;\n align-items: center;\n justify-content: space-between;\n max-width: 1200px;\n margin: 0 auto;\n padding: 16px 24px;\n gap: 24px;\n}\n\n/* Logo */\n.logo {\n display: flex;\n align-items: center;\n gap: 12px;\n text-decoration: none;\n color: #ffffff;\n font-size: 20px;\n font-weight: 700;\n transition: color 0.3s;\n flex-shrink: 0;\n}\n\n.logo:hover {\n color: #e5e5e5;\n}\n\n.logoIcon {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: #2a2a2a;\n border-radius: 8px;\n padding: 6px;\n}\n\n.logoText {\n white-space: nowrap;\n}\n\n/* Desktop Navigation */\n.desktopNav {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n justify-content: center;\n}\n\n.navLink {\n padding: 8px 16px;\n color: #9ca3af;\n text-decoration: none;\n font-size: 15px;\n font-weight: 500;\n border-radius: 8px;\n transition: all 0.3s;\n white-space: nowrap;\n}\n\n.navLink:hover {\n color: #e5e5e5;\n background: #2a2a2a;\n}\n\n.navLinkActive {\n color: #ffffff;\n background: #2a2a2a;\n font-weight: 600;\n}\n\n/* Actions */\n.actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.iconButton {\n position: relative;\n width: 40px;\n height: 40px;\n background: #2a2a2a;\n border: 1px solid #333;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n cursor: pointer;\n transition: all 0.3s;\n}\n\n.iconButton:hover {\n background: #333;\n color: #e5e5e5;\n border-color: #444;\n}\n\n.iconButton svg {\n width: 20px;\n height: 20px;\n}\n\n.badge {\n position: absolute;\n top: -4px;\n right: -4px;\n background: #ef4444;\n color: #ffffff;\n font-size: 10px;\n font-weight: 600;\n padding: 2px 6px;\n border-radius: 10px;\n min-width: 18px;\n text-align: center;\n}\n\n.userProfile {\n display: flex;\n align-items: center;\n text-decoration: none;\n}\n\n.avatar {\n width: 40px;\n height: 40px;\n background: #2a2a2a;\n border: 2px solid #333;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n transition: all 0.3s;\n cursor: pointer;\n}\n\n.avatar:hover {\n border-color: #444;\n color: #e5e5e5;\n}\n\n.avatar svg {\n width: 20px;\n height: 20px;\n}\n\n/* Mobile Menu Button */\n.mobileMenuButton {\n display: none;\n width: 40px;\n height: 40px;\n background: #2a2a2a;\n border: 1px solid #333;\n border-radius: 8px;\n align-items: center;\n justify-content: center;\n color: #9ca3af;\n cursor: pointer;\n transition: all 0.3s;\n}\n\n.mobileMenuButton:hover {\n background: #333;\n color: #e5e5e5;\n border-color: #444;\n}\n\n.mobileMenuButton svg {\n width: 24px;\n height: 24px;\n}\n\n/* Mobile Navigation */\n.mobileNav {\n display: none;\n flex-direction: column;\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.3s ease-in-out;\n background: #1a1a1a;\n border-top: 1px solid #333;\n}\n\n.mobileNavOpen {\n max-height: 400px;\n}\n\n.mobileNavLink {\n padding: 16px 24px;\n color: #9ca3af;\n text-decoration: none;\n font-size: 16px;\n font-weight: 500;\n transition: all 0.3s;\n border-left: 3px solid transparent;\n}\n\n.mobileNavLink:hover {\n color: #e5e5e5;\n background: #2a2a2a;\n}\n\n.mobileNavLinkActive {\n color: #ffffff;\n background: #2a2a2a;\n border-left-color: #ffffff;\n font-weight: 600;\n}\n\n/* @media (min-width: 1280px) {\n .header {\n left: 280px;\n }\n} */\n\n/* Responsive Design */\n@media (max-width: 768px) {\n .desktopNav {\n display: none;\n }\n\n .mobileMenuButton {\n display: flex;\n }\n\n .mobileNav {\n display: flex;\n }\n\n .container {\n padding: 12px 20px;\n }\n\n .logoText {\n font-size: 18px;\n }\n\n .iconButton {\n width: 36px;\n height: 36px;\n }\n\n .iconButton svg {\n width: 18px;\n height: 18px;\n }\n\n .avatar {\n width: 36px;\n height: 36px;\n }\n\n .avatar svg {\n width: 18px;\n height: 18px;\n }\n}\n\n@media (max-width: 480px) {\n .container {\n padding: 10px 16px;\n gap: 12px;\n }\n\n .logo {\n font-size: 16px;\n gap: 8px;\n }\n\n .logoIcon {\n width: 28px;\n height: 28px;\n padding: 5px;\n }\n\n .actions {\n gap: 6px;\n }\n\n .iconButton {\n width: 32px;\n height: 32px;\n }\n\n .iconButton svg {\n width: 16px;\n height: 16px;\n }\n\n .avatar {\n width: 32px;\n height: 32px;\n }\n\n .avatar svg {\n width: 16px;\n height: 16px;\n }\n\n .badge {\n font-size: 9px;\n padding: 1px 5px;\n min-width: 16px;\n }\n\n .mobileNavLink {\n padding: 14px 20px;\n font-size: 15px;\n }\n}\n\n@media (max-width: 360px) {\n .container {\n padding: 8px 12px;\n }\n\n .logoText {\n display: none;\n }\n\n .iconButton:first-of-type {\n display: none;\n }\n}\n\n/* Add padding to body to prevent content being hidden behind header */\n/* Add this to your global CSS or layout */\n/*\nbody {\n padding-top: 70px;\n}\n\n@media (max-width: 768px) {\n body {\n padding-top: 60px;\n }\n}\n\n@media (max-width: 480px) {\n body {\n padding-top: 56px;\n }\n}\n*/",".container {\n height: 100dvh;\n width: 100dvw;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n}\n\n/* Header must not shrink */\n.container > *:first-child {\n flex-shrink: 0;\n}\n\n.drawerWrapper {\n flex: 1;\n display: flex;\n min-height: 0; /* REQUIRED */\n overflow: hidden; /* lock wrapper */\n}\n\n/* Drawer must not shrink */\n.drawerWrapper > :first-child {\n flex-shrink: 0;\n}\n\n.children {\n flex: 1; /* take remaining space */\n min-width: 0; /* REQUIRED for horizontal layouts */\n min-height: 0; /* REQUIRED for vertical scrolling */\n overflow-y: auto; /* scroll here */\n overflow-x: hidden;\n}\n\n@media (max-width: 670px) {\n .bottomTabActive {\n padding-bottom: 60px;\n }\n}\n\n\n\n/* ===========================\n DESKTOP SCROLLBAR STYLING\n =========================== */\n@media (hover: hover) and (pointer: fine) {\n .children::-webkit-scrollbar {\n width: 8px;\n }\n\n .children::-webkit-scrollbar-track {\n background: transparent;\n }\n\n .children::-webkit-scrollbar-thumb {\n background-color: rgba(120, 120, 120, 0.6);\n border-radius: 8px;\n }\n\n .children::-webkit-scrollbar-thumb:hover {\n background-color: rgba(120, 120, 120, 0.9);\n }\n\n /* Firefox */\n .children {\n scrollbar-width: thin;\n scrollbar-color: rgba(120, 120, 120, 0.6) transparent;\n }\n}\n\n/* ===========================\n MOBILE: HIDE SCROLLBAR\n =========================== */\n@media (hover: none) and (pointer: coarse) {\n .children {\n scrollbar-width: none; /* Firefox */\n }\n\n .children::-webkit-scrollbar {\n display: none; /* Chrome / Safari */\n }\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@recode-js/next-toolkit",
3
+ "version": "0.0.1",
4
+ "main": "dist/index.js",
5
+ "type": "module",
6
+ "module": "dist/index.esm.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ },
16
+ "./styles.css": "./dist/styles.css"
17
+ },
18
+ "sideEffects": [
19
+ "*.css"
20
+ ],
21
+ "scripts": {
22
+ "build": "rollup -c",
23
+ "build:tsup": "tsup",
24
+ "dev": "rollup -c -w"
25
+ },
26
+ "peerDependencies": {
27
+ "next": "^16.1.1",
28
+ "react": "19.2.3",
29
+ "react-dom": "19.2.3"
30
+ },
31
+ "devDependencies": {
32
+ "@babel/core": "^7.28.5",
33
+ "@babel/preset-react": "^7.28.5",
34
+ "@babel/preset-typescript": "^7.28.5",
35
+ "@rollup/plugin-babel": "^6.1.0",
36
+ "@rollup/plugin-commonjs": "^25.0.0",
37
+ "@rollup/plugin-node-resolve": "^15.0.0",
38
+ "@rollup/plugin-typescript": "^11.0.0",
39
+ "@types/node": "^25.0.3",
40
+ "@types/react": "^19",
41
+ "next": "^16.1.1",
42
+ "postcss": "^8.4.0",
43
+ "rollup": "^4.0.0",
44
+ "rollup-plugin-postcss": "^4.0.2",
45
+ "rollup-preserve-directives": "^1.1.3",
46
+ "tslib": "^2.8.1",
47
+ "tsup": "^8.5.1",
48
+ "typescript": "^5.0.0"
49
+ },
50
+ "dependencies": {
51
+ "@reduxjs/toolkit": "^2.11.2",
52
+ "axios": "^1.13.2",
53
+ "client-only": "^0.0.1",
54
+ "react-redux": "^9.2.0",
55
+ "server-only": "^0.0.1"
56
+ }
57
+ }