@lmnto/h-mall-shared 1.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 (262) hide show
  1. package/app.css +457 -0
  2. package/bitbucket-pipelines.yml +223 -0
  3. package/package.json +43 -0
  4. package/public/gif/balloon.gif +0 -0
  5. package/public/gif/gift.gif +0 -0
  6. package/public/img/ai-dialog.png +0 -0
  7. package/public/img/ai-x1-banner.png +0 -0
  8. package/public/img/ai-x1.png +0 -0
  9. package/public/img/alert-Icon.png +0 -0
  10. package/public/img/aleta-payment-kyc-require.png +0 -0
  11. package/public/img/aleta-payment-pending.png +0 -0
  12. package/public/img/aleta-payment-rejected.png +0 -0
  13. package/public/img/aleta-payment-subscription-required.png +0 -0
  14. package/public/img/boost-banner-bg.png +0 -0
  15. package/public/img/boost-banner-right.png +0 -0
  16. package/public/img/boost-banner.png +0 -0
  17. package/public/img/boost-dialog-bg.png +0 -0
  18. package/public/img/boostPower.png +0 -0
  19. package/public/img/boostTooltip.png +0 -0
  20. package/public/img/brand-icon.svg +23 -0
  21. package/public/img/brand-text.svg +11 -0
  22. package/public/img/card-icon.png +0 -0
  23. package/public/img/cashback-Icon.png +0 -0
  24. package/public/img/crown.svg +9 -0
  25. package/public/img/empty-box.png +0 -0
  26. package/public/img/gen3-dialog.png +0 -0
  27. package/public/img/gen3-home-banner-bg.png +0 -0
  28. package/public/img/gen3-image.png +0 -0
  29. package/public/img/gift.png +0 -0
  30. package/public/img/img-placeholder-illustration.svg +6 -0
  31. package/public/img/logo.svg +31 -0
  32. package/public/img/offerBanner.png +0 -0
  33. package/public/img/pagenotfound.png +0 -0
  34. package/public/img/partial-pay-payment-successful.png +0 -0
  35. package/public/img/phoneShippingBG.png +0 -0
  36. package/public/img/placeholder-image.jpg +0 -0
  37. package/public/img/powerIcon.png +0 -0
  38. package/public/img/product-01.png +0 -0
  39. package/public/img/product-02.jpg +0 -0
  40. package/public/img/product-03.jpg +0 -0
  41. package/public/img/product-04.jpg +0 -0
  42. package/public/img/product-05.png +0 -0
  43. package/public/img/product-06.png +0 -0
  44. package/public/img/profile-avatar.svg +12 -0
  45. package/public/img/promotion-icon.png +0 -0
  46. package/public/img/session-expired.png +0 -0
  47. package/public/img/shipping-alert-icon.png +0 -0
  48. package/public/img/shippingIcon.png +0 -0
  49. package/public/img/smart-pay-banner-how.png +0 -0
  50. package/public/img/smart-pay-banner-own.png +0 -0
  51. package/public/img/smart-pay-chose.png +0 -0
  52. package/public/img/smart-pay-easy.png +0 -0
  53. package/public/img/smart-pay-payment.png +0 -0
  54. package/public/img/smart-plan-fire.gif +0 -0
  55. package/public/img/smart-plan-sparkle.gif +0 -0
  56. package/public/img/special.png +0 -0
  57. package/public/img/specialOfferBg.png +0 -0
  58. package/public/img/stop-shipping-banner.png +0 -0
  59. package/public/img/subscriptionBanner.png +0 -0
  60. package/public/img/subscriptionIcon.png +0 -0
  61. package/public/img/successIcon.png +0 -0
  62. package/public/img/wallet-icon.png +0 -0
  63. package/public/img/world-wide-shipping.png +0 -0
  64. package/public/next.svg +1 -0
  65. package/public/vercel.svg +1 -0
  66. package/shared/components/AddressFormComponent.tsx +215 -0
  67. package/shared/components/AddressShippingFormComponent.tsx +223 -0
  68. package/shared/components/AiPaymentDialog.tsx +95 -0
  69. package/shared/components/AppLoadingComponent.tsx +15 -0
  70. package/shared/components/AppLoadingComponentV2.tsx +18 -0
  71. package/shared/components/Button.tsx +48 -0
  72. package/shared/components/BuySubscriptionDialog.tsx +75 -0
  73. package/shared/components/CartDrawerComponent.tsx +324 -0
  74. package/shared/components/CashbackComponent.tsx +48 -0
  75. package/shared/components/CashbackMigrationComponent.tsx +41 -0
  76. package/shared/components/CommissionNonEligibleComponent.tsx +27 -0
  77. package/shared/components/CustomNextImage.tsx +50 -0
  78. package/shared/components/CustomNextLink.tsx +46 -0
  79. package/shared/components/EditAddressFormComponent.tsx +254 -0
  80. package/shared/components/EmptyCartMessageComponent.tsx +25 -0
  81. package/shared/components/EmptyCartMessageForCartPage.tsx +61 -0
  82. package/shared/components/EmptyLegacyOrderMessageForOrdersPage.tsx +52 -0
  83. package/shared/components/EmptyOrderMessageForOrdersPage.tsx +62 -0
  84. package/shared/components/EmptyOrderMessageForShippingOrdersPage.tsx +62 -0
  85. package/shared/components/Footer.tsx +71 -0
  86. package/shared/components/GreetingDialog.tsx +96 -0
  87. package/shared/components/Header.tsx +106 -0
  88. package/shared/components/HoldShippingDialog.tsx +165 -0
  89. package/shared/components/HomeBanners.tsx +298 -0
  90. package/shared/components/InactiveCartDialog.tsx +69 -0
  91. package/shared/components/InputCartQuantity.tsx +342 -0
  92. package/shared/components/Inputfield.tsx +110 -0
  93. package/shared/components/ListItemComponent.tsx +82 -0
  94. package/shared/components/LoadingIconComponent.tsx +284 -0
  95. package/shared/components/OrderNotFoundComponent.tsx +56 -0
  96. package/shared/components/PageHeader.tsx +42 -0
  97. package/shared/components/PhoneNumberCountries.tsx +133 -0
  98. package/shared/components/PhoneShippingDialog.tsx +77 -0
  99. package/shared/components/PickupDialog.tsx +92 -0
  100. package/shared/components/ProductNotFoundComponent.tsx +56 -0
  101. package/shared/components/ProductPriceComponent.tsx +32 -0
  102. package/shared/components/ProfileMenu.tsx +120 -0
  103. package/shared/components/RequestCreditNoteInvoiceDialog.tsx +214 -0
  104. package/shared/components/RequestInvoiceDialog.tsx +194 -0
  105. package/shared/components/SelectCities.tsx +133 -0
  106. package/shared/components/SelectComponent.tsx +334 -0
  107. package/shared/components/SelectCountries.tsx +179 -0
  108. package/shared/components/SelectPickUpStore.tsx +131 -0
  109. package/shared/components/SelectStates.tsx +144 -0
  110. package/shared/components/ServerTime.tsx +68 -0
  111. package/shared/components/SessionDialogComponent.tsx +60 -0
  112. package/shared/components/ShippingAddressFormDialogComponent.tsx +51 -0
  113. package/shared/components/Sidebar.tsx +281 -0
  114. package/shared/components/SpecialOfferDialog.tsx +193 -0
  115. package/shared/components/StatusComponents.tsx +25 -0
  116. package/shared/components/StepperComponent.tsx +79 -0
  117. package/shared/components/StepperSmartPayComponent.tsx +97 -0
  118. package/shared/components/SubscriptionPurchaseDialogComponent.tsx +81 -0
  119. package/shared/components/TableComponent.tsx +144 -0
  120. package/shared/components/TablePaginationComponent.tsx +151 -0
  121. package/shared/components/aleta/AletaManagerComponent.tsx +52 -0
  122. package/shared/components/aleta/KycPendingStatus.tsx +33 -0
  123. package/shared/components/aleta/KycRejectedStatus.tsx +53 -0
  124. package/shared/components/aleta/KycRequiredStatus.tsx +53 -0
  125. package/shared/components/aleta/SubscriptionRequiredStatus.tsx +45 -0
  126. package/shared/components/icons/AletaWalletIcon.tsx +21 -0
  127. package/shared/components/icons/BrandIcon.tsx +97 -0
  128. package/shared/components/icons/BrandText.tsx +47 -0
  129. package/shared/components/icons/CartIcon.tsx +21 -0
  130. package/shared/components/icons/DoneIcon.tsx +27 -0
  131. package/shared/components/icons/HomnifiIcon.tsx +23 -0
  132. package/shared/components/icons/InfoIcon.tsx +16 -0
  133. package/shared/components/icons/SmartPayProductIcon.tsx +31 -0
  134. package/shared/components/payments/DisclaimerAlertDialog.tsx +205 -0
  135. package/shared/components/payments/EmptyAssets.tsx +23 -0
  136. package/shared/components/payments/PaybyWalletItemComponent.tsx +116 -0
  137. package/shared/components/payments/PaymentAssetItemComponent.tsx +101 -0
  138. package/shared/components/payments/RequestProcessingDialog.tsx +123 -0
  139. package/shared/components/payments/WalletSectionManager.tsx +82 -0
  140. package/shared/components/payments/WalletSliderComponent.tsx +326 -0
  141. package/shared/components/payments/WalletTermsAndConditionComponent.tsx +88 -0
  142. package/shared/constants/address-shipping.schema.ts +56 -0
  143. package/shared/constants/address.schema.ts +56 -0
  144. package/shared/constants/app.ts +323 -0
  145. package/shared/constants/environment.ts +23 -0
  146. package/shared/constants/feature-flags.ts +15 -0
  147. package/shared/constants/query-keys.ts +106 -0
  148. package/shared/constants/routes.ts +41 -0
  149. package/shared/constants/socket.ts +15 -0
  150. package/shared/contexts/HomeProductsContext.tsx +51 -0
  151. package/shared/contexts/MainWrapperContext.tsx +289 -0
  152. package/shared/contexts/WebSocketContext.tsx +155 -0
  153. package/shared/hooks/useAddressForm.ts +169 -0
  154. package/shared/hooks/useAddresses.ts +28 -0
  155. package/shared/hooks/useAppForm.ts +39 -0
  156. package/shared/hooks/useCart.ts +207 -0
  157. package/shared/hooks/useCopy.ts +45 -0
  158. package/shared/hooks/useCountries.ts +27 -0
  159. package/shared/hooks/useCustomRouter.ts +51 -0
  160. package/shared/hooks/useDebounce.ts +21 -0
  161. package/shared/hooks/useInvoice.ts +41 -0
  162. package/shared/hooks/useOnlineUser.ts +38 -0
  163. package/shared/hooks/usePayments.ts +101 -0
  164. package/shared/hooks/useShippingAddressForm.ts +70 -0
  165. package/shared/hooks/useShippingAddresses.ts +33 -0
  166. package/shared/hooks/useStores.ts +29 -0
  167. package/shared/hooks/useUserActivity.ts +43 -0
  168. package/shared/i18n/client.ts +27 -0
  169. package/shared/i18n/locales/en.ts +383 -0
  170. package/shared/i18n/locales/it.ts +373 -0
  171. package/shared/i18n/server.ts +7 -0
  172. package/shared/services/addresses.service.ts +27 -0
  173. package/shared/services/api/core/ApiError.ts +29 -0
  174. package/shared/services/api/core/ApiRequestOptions.ts +25 -0
  175. package/shared/services/api/core/ApiResult.ts +11 -0
  176. package/shared/services/api/core/CancelablePromise.ts +130 -0
  177. package/shared/services/api/core/OpenAPI.ts +37 -0
  178. package/shared/services/api/core/request.ts +376 -0
  179. package/shared/services/api/index.ts +64 -0
  180. package/shared/services/api/models/AddAllProductToShippingCartDto.ts +7 -0
  181. package/shared/services/api/models/AddProductToCartDto.ts +8 -0
  182. package/shared/services/api/models/AddProductToShippingCartDto.ts +8 -0
  183. package/shared/services/api/models/AdminPlaceOrderDto.ts +16 -0
  184. package/shared/services/api/models/AssignPickupSerialNumberDto.ts +10 -0
  185. package/shared/services/api/models/CreateUserAddressDto.ts +19 -0
  186. package/shared/services/api/models/DeletCartProductsArrayDto.ts +7 -0
  187. package/shared/services/api/models/GenerateInvoiceDto.ts +7 -0
  188. package/shared/services/api/models/OrderConfirmationEmailDto.ts +8 -0
  189. package/shared/services/api/models/PlaceOrderDto.ts +9 -0
  190. package/shared/services/api/models/PlaceShipmentOrderDto.ts +8 -0
  191. package/shared/services/api/models/ProductBoostDto.ts +18 -0
  192. package/shared/services/api/models/RemoveAssignedSerialNumberDto.ts +9 -0
  193. package/shared/services/api/models/RemoveProductToCartDto.ts +8 -0
  194. package/shared/services/api/models/ShipmentItem.ts +8 -0
  195. package/shared/services/api/models/ShippingCartUpdateBillingAddressesDto.ts +7 -0
  196. package/shared/services/api/models/ShippingCartUpdateShippingMethodDto.ts +7 -0
  197. package/shared/services/api/models/UnfreezeWalletDto.ts +8 -0
  198. package/shared/services/api/models/UpdateCartBillingAddressesDto.ts +7 -0
  199. package/shared/services/api/models/UpdateCartPaymentMethodDto.ts +9 -0
  200. package/shared/services/api/models/UpdateCartShippingMethodDto.ts +7 -0
  201. package/shared/services/api/models/UpdateCartStoreDto.ts +7 -0
  202. package/shared/services/api/models/UpdateProductDto.ts +11 -0
  203. package/shared/services/api/models/UpdateShipmentItemStatusDto.ts +24 -0
  204. package/shared/services/api/models/UpdateShippingCartPaymentMethodDto.ts +9 -0
  205. package/shared/services/api/models/UpdateUserAddressDto.ts +19 -0
  206. package/shared/services/api/models/ValidateAuthCodeDto.ts +8 -0
  207. package/shared/services/api/models/WithdrawOrderWalletDto.ts +8 -0
  208. package/shared/services/api/services/AddressesService.ts +160 -0
  209. package/shared/services/api/services/AdminsDevicesService.ts +28 -0
  210. package/shared/services/api/services/AdminsOrdersService.ts +117 -0
  211. package/shared/services/api/services/AdminsPickupsService.ts +57 -0
  212. package/shared/services/api/services/AdminsProductsService.ts +86 -0
  213. package/shared/services/api/services/CartsService.ts +190 -0
  214. package/shared/services/api/services/CashBackQueueService.ts +39 -0
  215. package/shared/services/api/services/CategoriesService.ts +65 -0
  216. package/shared/services/api/services/DefaultService.ts +19 -0
  217. package/shared/services/api/services/FeaturesFlagsService.ts +20 -0
  218. package/shared/services/api/services/IossQueueService.ts +39 -0
  219. package/shared/services/api/services/OrderCallbackService.ts +67 -0
  220. package/shared/services/api/services/OrderEmailsService.ts +40 -0
  221. package/shared/services/api/services/OrderImportService.ts +228 -0
  222. package/shared/services/api/services/OrdersService.ts +183 -0
  223. package/shared/services/api/services/PaymentGatewayService.ts +19 -0
  224. package/shared/services/api/services/PaymentsService.ts +88 -0
  225. package/shared/services/api/services/ProductsService.ts +67 -0
  226. package/shared/services/api/services/ShipmentOrderCallbackService.ts +67 -0
  227. package/shared/services/api/services/ShipmentOrdersService.ts +88 -0
  228. package/shared/services/api/services/ShipmentsService.ts +30 -0
  229. package/shared/services/api/services/ShippingCartService.ts +247 -0
  230. package/shared/services/api/services/ShippingMethodsService.ts +20 -0
  231. package/shared/services/api/services/StoresService.ts +25 -0
  232. package/shared/services/api/services/SyncServiceQueueService.ts +39 -0
  233. package/shared/services/api/services/UpgradeOrdersService.ts +26 -0
  234. package/shared/services/api/services/UsersAuthService.ts +45 -0
  235. package/shared/services/api/services/UsersService.ts +53 -0
  236. package/shared/services/api/services/XeraQueueService.ts +39 -0
  237. package/shared/services/index.ts +0 -0
  238. package/shared/services/payment-method.service.ts +29 -0
  239. package/shared/stores/cartStore.ts +108 -0
  240. package/shared/stores/countriesStore.ts +62 -0
  241. package/shared/stores/formStore.ts +19 -0
  242. package/shared/stores/loadingStore.ts +12 -0
  243. package/shared/stores/userStore.ts +32 -0
  244. package/shared/types/SelectComponent.types.ts +31 -0
  245. package/shared/types/addressForm.ts +27 -0
  246. package/shared/types/cart.ts +208 -0
  247. package/shared/types/category.ts +6 -0
  248. package/shared/types/creditNote.ts +0 -0
  249. package/shared/types/feature-flags.ts +5 -0
  250. package/shared/types/icon.ts +5 -0
  251. package/shared/types/index.d.ts +84 -0
  252. package/shared/types/order.ts +332 -0
  253. package/shared/types/pagination.ts +5 -0
  254. package/shared/types/payments.ts +68 -0
  255. package/shared/types/product.ts +54 -0
  256. package/shared/types/shoppingCart.ts +219 -0
  257. package/shared/types/upgradeCart.ts +226 -0
  258. package/shared/types/user.ts +36 -0
  259. package/shared/utils/app.util.ts +261 -0
  260. package/shared/utils/notifications.util.ts +39 -0
  261. package/shared/utils/user-session.util.ts +171 -0
  262. package/tailwind.config.ts +234 -0
@@ -0,0 +1,171 @@
1
+ "use server";
2
+
3
+ import { ResponseCookie } from "next/dist/compiled/@edge-runtime/cookies";
4
+ import { cookies } from "next/headers";
5
+
6
+ import { COOKIES_NAME } from "../constants/app";
7
+
8
+ let cookieOptions:
9
+ | Partial<ResponseCookie>
10
+ | undefined
11
+ | [options: ResponseCookie] = {
12
+ httpOnly: true,
13
+ secure: false, // Only send over HTTPS
14
+ sameSite: "strict", // Prevent cross-site request forgery (CSRF)
15
+ maxAge: 3600, // 1 hour in seconds
16
+ };
17
+
18
+ const getJwExpiredTimeInSeconds = (tokenPayload: string) => {
19
+ const decodedPayload: any = JSON.parse(
20
+ Buffer.from(tokenPayload, "base64").toString(),
21
+ );
22
+ if (decodedPayload?.exp) {
23
+ return decodedPayload?.exp - decodedPayload?.iat;
24
+ }
25
+
26
+ return 0;
27
+ };
28
+
29
+ export const setJwtCookie = async ({
30
+ id,
31
+ token,
32
+ }: {
33
+ id: string;
34
+ token: string;
35
+ }): Promise<boolean> => {
36
+ return new Promise(async (resolve) => {
37
+ // Asynchronous operation here
38
+ try {
39
+ const { set } = await cookies();
40
+ if (!set) return;
41
+
42
+ const tokenParts: string[] = token.split(".");
43
+
44
+ if (tokenParts.length == 3) {
45
+ const tokenPayload: string = tokenParts[1];
46
+
47
+ cookieOptions = {
48
+ ...cookieOptions,
49
+ maxAge: getJwExpiredTimeInSeconds(tokenPayload),
50
+ };
51
+
52
+ set(COOKIES_NAME.authToken, token, cookieOptions);
53
+ set(COOKIES_NAME.userSessionId, id, cookieOptions);
54
+
55
+ return resolve(true);
56
+ }
57
+
58
+ resolve(false);
59
+ } catch {
60
+ resolve(false);
61
+ }
62
+ });
63
+ };
64
+
65
+ export const isTokenExpired = async (): Promise<boolean> => {
66
+ try {
67
+ const { get } = await cookies();
68
+ if (!get) return;
69
+
70
+ const token = get(COOKIES_NAME.authToken)?.value;
71
+ if (!token) return true;
72
+
73
+ const tokenParts: string[] = token.split(".");
74
+ const tokenPayload: string = tokenParts?.[1];
75
+ if (!tokenPayload) return true;
76
+
77
+ const decodedPayload: any = JSON.parse(
78
+ Buffer.from(tokenPayload, "base64").toString(),
79
+ );
80
+
81
+ if ((decodedPayload?.exp ?? 0) > Date.now() / 1000) {
82
+ return false;
83
+ }
84
+
85
+ // await deleteToken();
86
+
87
+ return true;
88
+ } catch {
89
+ return true;
90
+ }
91
+ };
92
+
93
+ export const getToken = async (): Promise<string> => {
94
+ try {
95
+ const { get } = await cookies();
96
+ if (!get) return;
97
+
98
+ const token = get(COOKIES_NAME.authToken)?.value;
99
+ if (!token) return "";
100
+
101
+ return token;
102
+ } catch {
103
+ return "";
104
+ }
105
+ };
106
+
107
+ export const deleteToken = async (): Promise<boolean> => {
108
+ try {
109
+ const { delete: deleteCookie } = await cookies();
110
+
111
+ deleteCookie(COOKIES_NAME.authToken);
112
+ deleteCookie(COOKIES_NAME.userSessionId);
113
+ deleteCookie(COOKIES_NAME.aletaPaymentToken);
114
+
115
+ return true;
116
+ } catch {
117
+ return false;
118
+ }
119
+ };
120
+
121
+ export const getTokenExpiredTime = async (): Promise<number> => {
122
+ try {
123
+ const { get } = await cookies();
124
+ if (!get) return;
125
+
126
+ const token = get(COOKIES_NAME.authToken)?.value;
127
+ if (!token) return 0;
128
+
129
+ const tokenParts: string[] = token.split(".");
130
+ const tokenPayload: string = tokenParts?.[1];
131
+ if (!tokenPayload) return 0;
132
+
133
+ const decodedPayload: any = JSON.parse(
134
+ Buffer.from(tokenPayload, "base64").toString(),
135
+ );
136
+
137
+ if (decodedPayload?.exp) {
138
+ return parseInt(decodedPayload.exp, 10);
139
+ }
140
+
141
+ return 0;
142
+ } catch (error) {
143
+ console.log("🚀 ~ getTokenExpiredTime ~ error:", error);
144
+ return 0;
145
+ }
146
+ };
147
+
148
+ export const getTokenRemainingTime = async () => {
149
+ const expiryTime = await getTokenExpiredTime();
150
+ const now = Date.now() / 1000;
151
+
152
+ const remainingSeconds = expiryTime - now;
153
+
154
+ return remainingSeconds;
155
+ };
156
+
157
+ export const saveCookie = async (key: string, value: string) => {
158
+ const { set } = await cookies();
159
+ if (!set) return;
160
+
161
+ set(key, value, {
162
+ maxAge: 300,
163
+ });
164
+ };
165
+
166
+ export const getCookie = async (key: string) => {
167
+ const { get } = await cookies();
168
+ if (!get) return;
169
+
170
+ return get(key)?.value ?? null;
171
+ };
@@ -0,0 +1,234 @@
1
+ import withMT from "@material-tailwind/react/utils/withMT";
2
+ import type { Config } from "tailwindcss";
3
+
4
+ export const sharedConfig: Config = {
5
+ content: ["../h-mall-shared/shared/**/*.{js,ts,jsx,tsx,mdx}"],
6
+ safelist: [
7
+ "bg-yellow-50",
8
+ "bg-red-100",
9
+ "text-info-500",
10
+ "bg-info-100",
11
+ "text-[#DC9700]",
12
+ ],
13
+
14
+ theme: {
15
+ // fontSize: {
16
+ // xs: '0.75rem',
17
+ // sm: '0.875rem',
18
+ // base: '0.875rem', // Adjust the base font size here
19
+ // },
20
+ screens: {
21
+ cxs: {
22
+ min: "320px",
23
+ max: "768px",
24
+ },
25
+
26
+ "min-sm": { min: "640px" },
27
+
28
+ "max-xs": { min: "20px", max: "768px" },
29
+
30
+ sm: "640px",
31
+ // => @media (min-width: 640px) { ... }
32
+
33
+ md: "768px",
34
+ // => @media (min-width: 768px) { ... }
35
+
36
+ lg: "1024px",
37
+ // => @media (min-width: 1024px) { ... }
38
+
39
+ xl: "1280px",
40
+ // => @media (min-width: 1280px) { ... }
41
+
42
+ "2xl": "1536px",
43
+ // => @media (min-width: 1536px) { ... }
44
+ },
45
+ radio: {
46
+ styles: {
47
+ base: {
48
+ label: {
49
+ color: "text-black-700",
50
+ fontWeight: "font-light",
51
+ userSelect: "select-none",
52
+ cursor: "cursor-pointer",
53
+ mt: "mt-0",
54
+ flex: "flex-1",
55
+ },
56
+ },
57
+ },
58
+ },
59
+ drawer: {
60
+ defaultProps: {
61
+ size: 500,
62
+ },
63
+ },
64
+ extend: {
65
+ breadcrumbs: {
66
+ styles: {
67
+ base: {
68
+ root: {
69
+ initial: {
70
+ width: "w-fit",
71
+ },
72
+ },
73
+ },
74
+ },
75
+ },
76
+ fontFamily: {
77
+ sans: ["var(--font-Roboto)", "sans-serif"], // injected using next/font, check layout.jsx
78
+ },
79
+ colors: {
80
+ white: "#ffffff",
81
+ offWhite: "#FBFBFB",
82
+ slateBG: "#E3E9F6",
83
+ sushiGreen: "#01c9a7",
84
+
85
+ black: {
86
+ 50: "#E8E9EA",
87
+ 100: "#B9BABE",
88
+ 200: "#97999F",
89
+ 300: "#676B73",
90
+ 400: "#494E58",
91
+ 500: "#1C222E",
92
+ 600: "#191F2A",
93
+ 700: "#141821",
94
+ 800: "#0F1319",
95
+ 900: "#0C0E13",
96
+ },
97
+ gray: {
98
+ 50: "#F9F9F9",
99
+ 100: "#D1D3D8",
100
+ 200: "#D0D3D9",
101
+ 300: "#B3B8C3",
102
+ 400: "#ADB2BD",
103
+ 500: "#757D8D",
104
+ 600: "#6B7382",
105
+ 700: "#4C515B",
106
+ 800: "#3B3F46",
107
+ 900: "#2D3036",
108
+ },
109
+ slate: {
110
+ 50: "#E3E9F6",
111
+ 100: "#CFD4DB",
112
+ 200: "#B8BFCA",
113
+ 300: "#97A2B1",
114
+ 400: "#8390A2",
115
+ 500: "#64748B",
116
+ 600: "#5B6A7E",
117
+ 700: "#475263",
118
+ 800: "#37404C",
119
+ 900: "#2A313A",
120
+ },
121
+
122
+ orange: {
123
+ 50: "#fff9ef",
124
+ 100: "#fff1ea",
125
+ 200: "#feebe0",
126
+ 300: "#fdd5bf",
127
+ 400: "#e16b2c",
128
+ 500: "#fa7731",
129
+ 600: "#c85f27",
130
+ 700: "#bc5925",
131
+ 800: "#96471d",
132
+ 900: "#582a11",
133
+ },
134
+ red: {
135
+ 100: "#FDECE9",
136
+ 200: "#F8A69B",
137
+ 300: "#F47D6D",
138
+ 400: "#F26451",
139
+ 500: "#DC2828", // ← NEW PRIMARY
140
+ 600: "#B12C2C",
141
+ 700: "#AA2B1A",
142
+ 800: "#832214",
143
+ 900: "#641A10",
144
+ },
145
+ yellow: {
146
+ 50: "#FFF8E8",
147
+ 100: "#FFEAB8",
148
+ 200: "#FFE095",
149
+ 300: "#FED165",
150
+ 400: "#FEC947",
151
+ 500: "#FEBB19",
152
+ 600: "#E7AA17",
153
+ 700: "#B48512",
154
+ 800: "#8C670E",
155
+ 900: "#6B4F0B",
156
+ },
157
+ info: {
158
+ 100: "#eaf4ff",
159
+ 200: "#e0eefe",
160
+ 300: "#bfddfd",
161
+ 400: "#2a82e1",
162
+ 500: "#2f90fa",
163
+ 600: "#2673c8",
164
+ 700: "#236cbc",
165
+ 800: "#1c5696",
166
+ 900: "#103258",
167
+ },
168
+ green: {
169
+ 100: "#c6f6ee",
170
+ 200: "#98ebdd",
171
+ 300: "#6adfcb",
172
+ 400: "#3cd4ba",
173
+ 500: "#01c9a7", // Main degree
174
+ 600: "#01b596",
175
+ 700: "#019f83",
176
+ 800: "#018c74",
177
+ 900: "#00735e",
178
+ },
179
+ purple: {
180
+ 50: "#E6F6FD",
181
+ 100: "#BAE8FB",
182
+ 200: "#8DD9F8",
183
+ 300: "#5BC6ED",
184
+ 400: "#29B4E4",
185
+ 500: "#0094E3",
186
+ 600: "#0072B4",
187
+ 700: "#005487",
188
+ 800: "#003D61",
189
+ 900: "#002941",
190
+ },
191
+ blue: {
192
+ 50: "#e6f0ff",
193
+ 100: "#b3d1ff",
194
+ 200: "#80b2ff",
195
+ 300: "#4d93ff",
196
+ 400: "#1a74ff",
197
+ 500: "#1a74ff",
198
+ 600: "#002ec9",
199
+ 700: "#002395",
200
+ 800: "#001861",
201
+ 900: "#000d2d",
202
+ },
203
+ },
204
+ keyframes: {
205
+ "bg-sweep": {
206
+ "0%": {
207
+ backgroundSize: "0% 100%",
208
+ backgroundPosition: "50% 0%",
209
+ },
210
+ "100%": {
211
+ backgroundSize: "200% 100%",
212
+ backgroundPosition: "0% 0%",
213
+ },
214
+ },
215
+ jiggleScale: {
216
+ "0%, 100%": { transform: "scale(1) rotate(0deg)" },
217
+ "25%": { transform: "scale(1.1) rotate(-8deg)" },
218
+ "50%": { transform: "scale(1.3) rotate(8deg)" },
219
+ "75%": { transform: "scale(1.1) rotate(-8deg)" },
220
+ },
221
+ },
222
+ animation: {
223
+ "bg-sweep": "bg-sweep 0.5s ease-out forwards",
224
+ jiggleScale: "jiggleScale 1s infinite",
225
+ },
226
+ zIndex: {
227
+ tooltip: "999999999",
228
+ },
229
+ },
230
+ },
231
+ plugins: [require("@material-tailwind/react/utils/withMT")],
232
+ };
233
+
234
+ export const sharedWithMT = withMT;