@kiosinc/commons-rn 0.1.89 → 0.1.91

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 (67) hide show
  1. package/lib/commonjs/assets/icons/gitLogo.svg +6 -0
  2. package/lib/commonjs/assets/icons/gusteauLogo.svg +9 -0
  3. package/lib/commonjs/assets/icons/poweredByLumina.svg +19 -0
  4. package/lib/commonjs/assets/icons/remyLogo.svg +6 -0
  5. package/lib/commonjs/constants/index.js +2 -2
  6. package/lib/commonjs/constants/index.js.map +1 -1
  7. package/lib/commonjs/helpers/index.js +7 -0
  8. package/lib/commonjs/helpers/index.js.map +1 -1
  9. package/lib/commonjs/helpers/notifications/NotificationHandler.js +97 -0
  10. package/lib/commonjs/helpers/notifications/NotificationHandler.js.map +1 -0
  11. package/lib/commonjs/hooks/index.js +7 -0
  12. package/lib/commonjs/hooks/index.js.map +1 -1
  13. package/lib/commonjs/hooks/useSaveDevice.js +76 -0
  14. package/lib/commonjs/hooks/useSaveDevice.js.map +1 -0
  15. package/lib/commonjs/localization/translations/en.json +5 -4
  16. package/lib/commonjs/screens/Auth/Login.js +23 -5
  17. package/lib/commonjs/screens/Auth/Login.js.map +1 -1
  18. package/lib/commonjs/types/react-native-config.d.js +2 -0
  19. package/lib/commonjs/types/react-native-config.d.js.map +1 -0
  20. package/lib/module/assets/icons/gitLogo.svg +6 -0
  21. package/lib/module/assets/icons/gusteauLogo.svg +9 -0
  22. package/lib/module/assets/icons/poweredByLumina.svg +19 -0
  23. package/lib/module/assets/icons/remyLogo.svg +6 -0
  24. package/lib/module/constants/index.js +2 -2
  25. package/lib/module/constants/index.js.map +1 -1
  26. package/lib/module/helpers/index.js +1 -0
  27. package/lib/module/helpers/index.js.map +1 -1
  28. package/lib/module/helpers/notifications/NotificationHandler.js +89 -0
  29. package/lib/module/helpers/notifications/NotificationHandler.js.map +1 -0
  30. package/lib/module/hooks/index.js +1 -0
  31. package/lib/module/hooks/index.js.map +1 -1
  32. package/lib/module/hooks/useSaveDevice.js +68 -0
  33. package/lib/module/hooks/useSaveDevice.js.map +1 -0
  34. package/lib/module/localization/translations/en.json +5 -4
  35. package/lib/module/screens/Auth/Login.js +22 -4
  36. package/lib/module/screens/Auth/Login.js.map +1 -1
  37. package/lib/module/types/react-native-config.d.js +2 -0
  38. package/lib/module/types/react-native-config.d.js.map +1 -0
  39. package/lib/typescript/src/constants/index.d.ts +2 -2
  40. package/lib/typescript/src/constants/index.d.ts.map +1 -1
  41. package/lib/typescript/src/helpers/index.d.ts +1 -0
  42. package/lib/typescript/src/helpers/index.d.ts.map +1 -1
  43. package/lib/typescript/src/helpers/notifications/NotificationHandler.d.ts +13 -0
  44. package/lib/typescript/src/helpers/notifications/NotificationHandler.d.ts.map +1 -0
  45. package/lib/typescript/src/hooks/index.d.ts +1 -0
  46. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  47. package/lib/typescript/src/hooks/useSaveDevice.d.ts +7 -0
  48. package/lib/typescript/src/hooks/useSaveDevice.d.ts.map +1 -0
  49. package/lib/typescript/src/localization/index.d.ts +1 -0
  50. package/lib/typescript/src/localization/index.d.ts.map +1 -1
  51. package/lib/typescript/src/screens/Auth/Login.d.ts.map +1 -1
  52. package/package.json +2 -1
  53. package/src/assets/icons/gitLogo.svg +6 -0
  54. package/src/assets/icons/gusteauLogo.svg +9 -0
  55. package/src/assets/icons/poweredByLumina.svg +19 -0
  56. package/src/assets/icons/remyLogo.svg +6 -0
  57. package/src/constants/index.ts +2 -2
  58. package/src/helpers/index.ts +1 -0
  59. package/src/helpers/notifications/NotificationHandler.ts +114 -0
  60. package/src/hooks/index.ts +1 -0
  61. package/src/hooks/useSaveDevice.ts +80 -0
  62. package/src/localization/translations/en.json +5 -4
  63. package/src/screens/Auth/Login.tsx +22 -4
  64. package/src/types/react-native-config.d.ts +21 -0
  65. package/lib/commonjs/assets/icons/appLogo.svg +0 -3
  66. package/lib/module/assets/icons/appLogo.svg +0 -3
  67. package/src/assets/icons/appLogo.svg +0 -3
@@ -0,0 +1,114 @@
1
+ import messaging, {
2
+ FirebaseMessagingTypes,
3
+ } from '@react-native-firebase/messaging';
4
+
5
+ export class NotificationHandler {
6
+ // Request Permission for Notifications (iOS only)
7
+ static async requestPermission(): Promise<void> {
8
+ try {
9
+ const authStatus = await messaging().requestPermission();
10
+ const enabled =
11
+ authStatus === messaging.AuthorizationStatus.AUTHORIZED ||
12
+ authStatus === messaging.AuthorizationStatus.PROVISIONAL;
13
+
14
+ if (enabled) {
15
+ console.log('Authorization status:', authStatus);
16
+ }
17
+ } catch (error) {
18
+ console.error('Permission request failed:', error);
19
+ }
20
+ }
21
+
22
+ // Get FCM Token
23
+ static async getToken(): Promise<string | null> {
24
+ try {
25
+ const token = await messaging().getToken();
26
+ console.log('FCM Token:', token);
27
+ return token;
28
+ } catch (error) {
29
+ console.error('Failed to get FCM token', error);
30
+ return null;
31
+ }
32
+ }
33
+
34
+ // Refresh FCM Token
35
+ static async refreshToken(
36
+ onTokenRefreshed: (token: string) => void
37
+ ): Promise<void> {
38
+ messaging().onTokenRefresh(async (fcmToken: string) => {
39
+ console.log('New FCM Token:', fcmToken);
40
+ // Execute the callback with the new token
41
+ onTokenRefreshed(fcmToken);
42
+ });
43
+ }
44
+
45
+ // Handle Foreground Notifications
46
+ static onNotificationReceived(
47
+ callback: (message: FirebaseMessagingTypes.RemoteMessage) => void
48
+ ): void {
49
+ messaging().onMessage(
50
+ async (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => {
51
+ console.log('Foreground notification:', remoteMessage);
52
+ callback(remoteMessage);
53
+ }
54
+ );
55
+ }
56
+
57
+ // Handle Notification Clicks when App is in Background or Quit State
58
+ static onNotificationOpenedApp(
59
+ callback: (message: FirebaseMessagingTypes.RemoteMessage | null) => void
60
+ ): void {
61
+ messaging().onNotificationOpenedApp(
62
+ (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => {
63
+ console.log(
64
+ 'App opened from background state via notification:',
65
+ remoteMessage
66
+ );
67
+ callback(remoteMessage);
68
+ }
69
+ );
70
+ }
71
+
72
+ // Handle Initial Notification when App is opened from Quit State
73
+ static async onNotificationInitialAppOpen(
74
+ callback: (message: FirebaseMessagingTypes.RemoteMessage | null) => void
75
+ ): Promise<void> {
76
+ const remoteMessage = await messaging().getInitialNotification();
77
+ if (remoteMessage) {
78
+ console.log(
79
+ 'App opened from quit state via notification:',
80
+ remoteMessage
81
+ );
82
+ callback(remoteMessage);
83
+ }
84
+ }
85
+
86
+ // Background Message Handler
87
+ static handleBackgroundMessage(): void {
88
+ messaging().setBackgroundMessageHandler(
89
+ async (remoteMessage: FirebaseMessagingTypes.RemoteMessage) => {
90
+ console.log('Message handled in the background!', remoteMessage);
91
+ }
92
+ );
93
+ }
94
+
95
+ // Subscribe to a Topic
96
+ static async subscribeToTopic(topic: string): Promise<void> {
97
+ try {
98
+ await messaging().subscribeToTopic(topic);
99
+ console.log(`Subscribed to topic: ${topic}`);
100
+ } catch (error) {
101
+ console.error(`Failed to subscribe to topic: ${topic}`, error);
102
+ }
103
+ }
104
+
105
+ // Unsubscribe from a Topic
106
+ static async unsubscribeFromTopic(topic: string): Promise<void> {
107
+ try {
108
+ await messaging().unsubscribeFromTopic(topic);
109
+ console.log(`Unsubscribed from topic: ${topic}`);
110
+ } catch (error) {
111
+ console.error(`Failed to unsubscribe from topic: ${topic}`, error);
112
+ }
113
+ }
114
+ }
@@ -7,3 +7,4 @@ export { useAppVersionCheck } from './useAppVersionCheck';
7
7
  export { useBusinesses } from './useBusinesses';
8
8
  export { useLogout } from './useLogout';
9
9
  export { useCreateBusiness } from './useCreateBusiness';
10
+ export { useSaveDeviceDetails } from './useSaveDevice';
@@ -0,0 +1,80 @@
1
+ import { useMutation } from '@tanstack/react-query';
2
+ import firestore from '@react-native-firebase/firestore';
3
+ import Config from 'react-native-config';
4
+ import { Alert, useAuthentication } from '@kiosinc/commons-rn';
5
+ import DeviceInfo from 'react-native-device-info';
6
+
7
+ const uniqueId = DeviceInfo.getUniqueId();
8
+
9
+ const DATA = {
10
+ deviceName: DeviceInfo.getDeviceId(),
11
+ build: DeviceInfo.getBuildNumber(),
12
+ fcmToken: '',
13
+ uid: '',
14
+ model: DeviceInfo.getModel(),
15
+ systemName: DeviceInfo.getSystemName(),
16
+ systemVersion: DeviceInfo.getSystemVersion(),
17
+ updatedAt: '',
18
+ createdAt: '',
19
+ version: DeviceInfo.getVersion(),
20
+ };
21
+
22
+ export const useSaveDeviceDetails = () => {
23
+ const { user } = useAuthentication();
24
+ const mutation = useMutation(
25
+ async ({ token }: { token: string }) => {
26
+ // List of allowed URL schemes
27
+ const allowedSchemes = ['gusteau', 'remy', 'gusteaudev', 'remydev'];
28
+
29
+ // Run only if URL_SCHEME is in the allowed list
30
+ if (!allowedSchemes.includes(Config.URL_SCHEME)) {
31
+ console.log('URL_SCHEME is not valid for this function');
32
+ return;
33
+ }
34
+
35
+ const devicesRef = firestore().collection(
36
+ `devices/registry/${Config.URL_SCHEME}`
37
+ );
38
+ const docRef = devicesRef.doc(await uniqueId);
39
+ const docSnapshot = await docRef.get();
40
+
41
+ // Check if UID or FCM token is empty or different before updating
42
+ const existingData = docSnapshot.exists ? docSnapshot.data() : null;
43
+
44
+ const shouldUpdate =
45
+ !existingData?.uid ||
46
+ existingData.uid !== user?.uid ||
47
+ existingData.fcmToken !== token;
48
+
49
+ if (shouldUpdate) {
50
+ await docRef.set(
51
+ {
52
+ ...DATA,
53
+ uid: user?.uid || '',
54
+ fcmToken: token,
55
+ createdAt:
56
+ existingData?.createdAt ?? firestore.FieldValue.serverTimestamp(),
57
+ updatedAt: firestore.FieldValue.serverTimestamp(),
58
+ },
59
+ { merge: true }
60
+ );
61
+ console.log('Device added or updated!');
62
+ } else {
63
+ console.log('Device update not needed, UID and FCM token match.');
64
+ }
65
+ },
66
+ {
67
+ onError: (error: Error) => {
68
+ Alert.show({
69
+ title: error.name,
70
+ description: error?.message,
71
+ });
72
+ },
73
+ }
74
+ );
75
+
76
+ return {
77
+ saveDevice: mutation.mutate,
78
+ isLoadingDevice: mutation.isLoading,
79
+ };
80
+ };
@@ -10,7 +10,7 @@
10
10
  "continue": "Continue",
11
11
  "logIn": "Log In",
12
12
  "forgotPassword": "Forgot Password?",
13
- "newToApp": "New to KIOS?",
13
+ "newToApp": "New to LUMINA?",
14
14
  "signUp": "Sign Up",
15
15
  "email": "Email",
16
16
  "password": "Password",
@@ -19,7 +19,7 @@
19
19
  "resetPassword": "Reset Password",
20
20
  "resetPasswordInstructionSent": "The reset password instructions were sent to {{email}}.",
21
21
  "backToLogin": "Back to Log In",
22
- "createAccountTitle": "Create a KIOS Account",
22
+ "createAccountTitle": "Create a LUMINA Account",
23
23
  "createAccount": "Create Account",
24
24
  "businessName": "Business Name",
25
25
  "businessNameRequired": "Enter Business Name",
@@ -36,7 +36,7 @@
36
36
  "validEmail": "Email must be a valid email",
37
37
  "requiredEmailForLogin": "Enter the email you have an account with",
38
38
  "requiredEmailForSignUp": "Enter the email you want to create an account with",
39
- "byContinue": "By continuing, you agree to KIOS’s",
39
+ "byContinue": "By continuing, you agree to LUMINA’s",
40
40
  "termsAndConditions": "Terms and Conditions",
41
41
  "and": "and",
42
42
  "privacyPolicy": "Privacy Policy.",
@@ -83,6 +83,7 @@
83
83
  "review": "Review Terms"
84
84
  },
85
85
  "termsTitle": "Terms of Service Update",
86
- "acceptTerms": "Accept Terms"
86
+ "acceptTerms": "Accept Terms",
87
+ "version": "Version"
87
88
  }
88
89
  }
@@ -5,10 +5,12 @@ import {
5
5
  KeyboardAvoidingView,
6
6
  Header,
7
7
  } from '../../components';
8
- import { useTheme } from '@react-navigation/native';
9
8
  import React, { useEffect } from 'react';
10
9
  import { useTranslation } from 'react-i18next';
11
- import AppLogo from '../../assets/icons/appLogo.svg';
10
+ import RemyLogo from '../../assets/icons/remyLogo.svg';
11
+ import GitLogo from '../../assets/icons/gitLogo.svg';
12
+ import GusteauLogo from '../../assets/icons/gusteauLogo.svg';
13
+ import PoweredByLuminaLogo from '../../assets/icons/poweredByLumina.svg';
12
14
  import { useMMKVString } from 'react-native-mmkv';
13
15
  import { MMKV_KEYS } from '../../constants';
14
16
  import FastImage from 'react-native-fast-image';
@@ -19,6 +21,7 @@ import { LoginWithPhoneNumber } from './LoginWithPhoneNumber';
19
21
  import { LoginWithEmail } from './LoginWithEmail';
20
22
  import DeviceInfo from 'react-native-device-info';
21
23
  import Config from 'react-native-config';
24
+ import { useTheme } from 'react-native-paper';
22
25
 
23
26
  const Tab = createMaterialTopTabNavigator();
24
27
 
@@ -56,7 +59,15 @@ export const Login = () => {
56
59
  width={{ phone: '100%', tablet: 372 }}
57
60
  >
58
61
  <View alignItems="center" pt={'16'}>
59
- <AppLogo />
62
+ {Config.APP_NAME === 'git' && (
63
+ <GitLogo fill={theme.colors.onBackground} height={27} />
64
+ )}
65
+ {Config.APP_NAME === 'remy' && (
66
+ <RemyLogo fill={theme.colors.onBackground} height={27} />
67
+ )}
68
+ {Config.APP_NAME === 'gusteau' && (
69
+ <GusteauLogo fill={theme.colors.onBackground} height={27} />
70
+ )}
60
71
  </View>
61
72
  <View flexGrow={1} flexShrink={1} pt="24">
62
73
  <Tab.Navigator
@@ -96,8 +107,15 @@ export const Login = () => {
96
107
  color="secondary"
97
108
  textAlign="center"
98
109
  >{`${t(
99
- 'profile.version'
110
+ 'commons.version'
100
111
  )} ${DeviceInfo.getVersion()} (${DeviceInfo.getBuildNumber()})`}</Text>
112
+ <View alignItems="center">
113
+ <PoweredByLuminaLogo
114
+ fill={theme.colors.onBackground}
115
+ width={150}
116
+ height={30}
117
+ />
118
+ </View>
101
119
  </View>
102
120
  </View>
103
121
  </ParentView>
@@ -0,0 +1,21 @@
1
+ declare module 'react-native-config' {
2
+ export interface NativeConfig {
3
+ ENV: 'local' | 'dev' | 'production';
4
+ AMPLITUDE_API_KEY?: string;
5
+ GOOGLE_PLACES_API_KEY?: string;
6
+ SQUARE_APPLICATION_ID?: string;
7
+ CHILDS_SERVER_ENV: string;
8
+ SQUARE_BASE_URL: string;
9
+ BASE_URL: string;
10
+ SQUARE_BASE_URL: string;
11
+ MIXPANEL_TOKEN: string;
12
+ APP_NAME: string;
13
+ URL_SCHEME: string;
14
+ BUNDLE_IDENTIFIER: string;
15
+ PLAY_STORE_URL?: string;
16
+ APP_STORE_URL?: string;
17
+ }
18
+
19
+ export const Config: NativeConfig;
20
+ export default Config;
21
+ }
@@ -1,3 +0,0 @@
1
- <svg width="85" height="27" viewBox="0 0 85 27" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M0.47175 0.799998H5.18775L5.00775 13.184L5.25975 13.22C6.12375 12.116 6.97575 11.084 7.81575 10.124C8.67975 9.164 9.74775 8 11.0198 6.632L16.3838 0.799998H22.0358L16.2398 7.028C14.7998 8.588 13.4078 10.04 12.0638 11.384L12.1358 11.6C13.3118 11.744 14.2838 12.116 15.0518 12.716C15.8438 13.316 16.5518 14.228 17.1758 15.452L22.7198 26H17.7878L13.3238 17.756C12.7238 16.652 12.1118 15.92 11.4878 15.56C10.8638 15.176 9.97575 14.984 8.82375 14.984L5.18775 18.836V26H0.47175V0.799998ZM30.7463 0.799998V26H26.0303V0.799998H30.7463ZM47.6067 26.576C45.0867 26.576 42.8667 26.048 40.9467 24.992C39.0507 23.912 37.5747 22.376 36.5187 20.384C35.4627 18.368 34.9347 16.028 34.9347 13.364C34.9347 10.7 35.4627 8.384 36.5187 6.416C37.5747 4.424 39.0507 2.9 40.9467 1.844C42.8667 0.763999 45.0867 0.223999 47.6067 0.223999C50.1267 0.223999 52.3347 0.763999 54.2307 1.844C56.1507 2.9 57.6387 4.424 58.6947 6.416C59.7507 8.384 60.2787 10.7 60.2787 13.364C60.2787 16.028 59.7507 18.368 58.6947 20.384C57.6387 22.376 56.1507 23.912 54.2307 24.992C52.3347 26.048 50.1267 26.576 47.6067 26.576ZM39.7947 13.364C39.7947 16.34 40.5027 18.644 41.9187 20.276C43.3347 21.908 45.2307 22.724 47.6067 22.724C49.9827 22.724 51.8787 21.908 53.2947 20.276C54.7107 18.644 55.4187 16.34 55.4187 13.364C55.4187 10.436 54.7107 8.156 53.2947 6.524C51.8787 4.892 49.9827 4.076 47.6067 4.076C45.2307 4.076 43.3347 4.892 41.9187 6.524C40.5027 8.156 39.7947 10.436 39.7947 13.364ZM74.1469 26.576C71.8189 26.576 69.8029 26.228 68.0989 25.532C66.4189 24.836 65.1349 23.828 64.2469 22.508C63.3589 21.188 62.9149 19.64 62.9149 17.864L67.5589 17.9C67.6309 19.412 68.2549 20.588 69.4309 21.428C70.6069 22.268 72.2149 22.7 74.2549 22.724C76.1269 22.724 77.5669 22.412 78.5749 21.788C79.6069 21.14 80.1229 20.216 80.1229 19.016C80.1229 18.008 79.6789 17.252 78.7909 16.748C77.9269 16.244 76.6429 15.824 74.9389 15.488L72.4549 14.984C70.6549 14.624 69.1309 14.204 67.8829 13.724C66.6589 13.22 65.6389 12.464 64.8229 11.456C64.0069 10.448 63.5989 9.092 63.5989 7.388C63.5989 5.948 64.0189 4.7 64.8589 3.644C65.7229 2.564 66.9349 1.736 68.4949 1.16C70.0789 0.559999 71.9389 0.259999 74.0749 0.259999C77.1949 0.259999 79.6789 1.04 81.5269 2.6C83.3749 4.16 84.3109 6.296 84.3349 9.008H79.7629C79.7389 7.472 79.1989 6.272 78.1429 5.408C77.0869 4.544 75.6829 4.112 73.9309 4.112C72.2029 4.112 70.8469 4.412 69.8629 5.012C68.8789 5.612 68.3869 6.44 68.3869 7.496C68.3869 8.528 68.8429 9.308 69.7549 9.836C70.6669 10.364 71.9869 10.808 73.7149 11.168L76.3789 11.708C78.1309 12.068 79.5949 12.488 80.7709 12.968C81.9709 13.424 82.9549 14.132 83.7229 15.092C84.5149 16.028 84.9109 17.276 84.9109 18.836C84.9109 21.236 83.9509 23.132 82.0309 24.524C80.1349 25.892 77.5069 26.576 74.1469 26.576Z" fill="#23A969"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg width="85" height="27" viewBox="0 0 85 27" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M0.47175 0.799998H5.18775L5.00775 13.184L5.25975 13.22C6.12375 12.116 6.97575 11.084 7.81575 10.124C8.67975 9.164 9.74775 8 11.0198 6.632L16.3838 0.799998H22.0358L16.2398 7.028C14.7998 8.588 13.4078 10.04 12.0638 11.384L12.1358 11.6C13.3118 11.744 14.2838 12.116 15.0518 12.716C15.8438 13.316 16.5518 14.228 17.1758 15.452L22.7198 26H17.7878L13.3238 17.756C12.7238 16.652 12.1118 15.92 11.4878 15.56C10.8638 15.176 9.97575 14.984 8.82375 14.984L5.18775 18.836V26H0.47175V0.799998ZM30.7463 0.799998V26H26.0303V0.799998H30.7463ZM47.6067 26.576C45.0867 26.576 42.8667 26.048 40.9467 24.992C39.0507 23.912 37.5747 22.376 36.5187 20.384C35.4627 18.368 34.9347 16.028 34.9347 13.364C34.9347 10.7 35.4627 8.384 36.5187 6.416C37.5747 4.424 39.0507 2.9 40.9467 1.844C42.8667 0.763999 45.0867 0.223999 47.6067 0.223999C50.1267 0.223999 52.3347 0.763999 54.2307 1.844C56.1507 2.9 57.6387 4.424 58.6947 6.416C59.7507 8.384 60.2787 10.7 60.2787 13.364C60.2787 16.028 59.7507 18.368 58.6947 20.384C57.6387 22.376 56.1507 23.912 54.2307 24.992C52.3347 26.048 50.1267 26.576 47.6067 26.576ZM39.7947 13.364C39.7947 16.34 40.5027 18.644 41.9187 20.276C43.3347 21.908 45.2307 22.724 47.6067 22.724C49.9827 22.724 51.8787 21.908 53.2947 20.276C54.7107 18.644 55.4187 16.34 55.4187 13.364C55.4187 10.436 54.7107 8.156 53.2947 6.524C51.8787 4.892 49.9827 4.076 47.6067 4.076C45.2307 4.076 43.3347 4.892 41.9187 6.524C40.5027 8.156 39.7947 10.436 39.7947 13.364ZM74.1469 26.576C71.8189 26.576 69.8029 26.228 68.0989 25.532C66.4189 24.836 65.1349 23.828 64.2469 22.508C63.3589 21.188 62.9149 19.64 62.9149 17.864L67.5589 17.9C67.6309 19.412 68.2549 20.588 69.4309 21.428C70.6069 22.268 72.2149 22.7 74.2549 22.724C76.1269 22.724 77.5669 22.412 78.5749 21.788C79.6069 21.14 80.1229 20.216 80.1229 19.016C80.1229 18.008 79.6789 17.252 78.7909 16.748C77.9269 16.244 76.6429 15.824 74.9389 15.488L72.4549 14.984C70.6549 14.624 69.1309 14.204 67.8829 13.724C66.6589 13.22 65.6389 12.464 64.8229 11.456C64.0069 10.448 63.5989 9.092 63.5989 7.388C63.5989 5.948 64.0189 4.7 64.8589 3.644C65.7229 2.564 66.9349 1.736 68.4949 1.16C70.0789 0.559999 71.9389 0.259999 74.0749 0.259999C77.1949 0.259999 79.6789 1.04 81.5269 2.6C83.3749 4.16 84.3109 6.296 84.3349 9.008H79.7629C79.7389 7.472 79.1989 6.272 78.1429 5.408C77.0869 4.544 75.6829 4.112 73.9309 4.112C72.2029 4.112 70.8469 4.412 69.8629 5.012C68.8789 5.612 68.3869 6.44 68.3869 7.496C68.3869 8.528 68.8429 9.308 69.7549 9.836C70.6669 10.364 71.9869 10.808 73.7149 11.168L76.3789 11.708C78.1309 12.068 79.5949 12.488 80.7709 12.968C81.9709 13.424 82.9549 14.132 83.7229 15.092C84.5149 16.028 84.9109 17.276 84.9109 18.836C84.9109 21.236 83.9509 23.132 82.0309 24.524C80.1349 25.892 77.5069 26.576 74.1469 26.576Z" fill="#23A969"/>
3
- </svg>
@@ -1,3 +0,0 @@
1
- <svg width="85" height="27" viewBox="0 0 85 27" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M0.47175 0.799998H5.18775L5.00775 13.184L5.25975 13.22C6.12375 12.116 6.97575 11.084 7.81575 10.124C8.67975 9.164 9.74775 8 11.0198 6.632L16.3838 0.799998H22.0358L16.2398 7.028C14.7998 8.588 13.4078 10.04 12.0638 11.384L12.1358 11.6C13.3118 11.744 14.2838 12.116 15.0518 12.716C15.8438 13.316 16.5518 14.228 17.1758 15.452L22.7198 26H17.7878L13.3238 17.756C12.7238 16.652 12.1118 15.92 11.4878 15.56C10.8638 15.176 9.97575 14.984 8.82375 14.984L5.18775 18.836V26H0.47175V0.799998ZM30.7463 0.799998V26H26.0303V0.799998H30.7463ZM47.6067 26.576C45.0867 26.576 42.8667 26.048 40.9467 24.992C39.0507 23.912 37.5747 22.376 36.5187 20.384C35.4627 18.368 34.9347 16.028 34.9347 13.364C34.9347 10.7 35.4627 8.384 36.5187 6.416C37.5747 4.424 39.0507 2.9 40.9467 1.844C42.8667 0.763999 45.0867 0.223999 47.6067 0.223999C50.1267 0.223999 52.3347 0.763999 54.2307 1.844C56.1507 2.9 57.6387 4.424 58.6947 6.416C59.7507 8.384 60.2787 10.7 60.2787 13.364C60.2787 16.028 59.7507 18.368 58.6947 20.384C57.6387 22.376 56.1507 23.912 54.2307 24.992C52.3347 26.048 50.1267 26.576 47.6067 26.576ZM39.7947 13.364C39.7947 16.34 40.5027 18.644 41.9187 20.276C43.3347 21.908 45.2307 22.724 47.6067 22.724C49.9827 22.724 51.8787 21.908 53.2947 20.276C54.7107 18.644 55.4187 16.34 55.4187 13.364C55.4187 10.436 54.7107 8.156 53.2947 6.524C51.8787 4.892 49.9827 4.076 47.6067 4.076C45.2307 4.076 43.3347 4.892 41.9187 6.524C40.5027 8.156 39.7947 10.436 39.7947 13.364ZM74.1469 26.576C71.8189 26.576 69.8029 26.228 68.0989 25.532C66.4189 24.836 65.1349 23.828 64.2469 22.508C63.3589 21.188 62.9149 19.64 62.9149 17.864L67.5589 17.9C67.6309 19.412 68.2549 20.588 69.4309 21.428C70.6069 22.268 72.2149 22.7 74.2549 22.724C76.1269 22.724 77.5669 22.412 78.5749 21.788C79.6069 21.14 80.1229 20.216 80.1229 19.016C80.1229 18.008 79.6789 17.252 78.7909 16.748C77.9269 16.244 76.6429 15.824 74.9389 15.488L72.4549 14.984C70.6549 14.624 69.1309 14.204 67.8829 13.724C66.6589 13.22 65.6389 12.464 64.8229 11.456C64.0069 10.448 63.5989 9.092 63.5989 7.388C63.5989 5.948 64.0189 4.7 64.8589 3.644C65.7229 2.564 66.9349 1.736 68.4949 1.16C70.0789 0.559999 71.9389 0.259999 74.0749 0.259999C77.1949 0.259999 79.6789 1.04 81.5269 2.6C83.3749 4.16 84.3109 6.296 84.3349 9.008H79.7629C79.7389 7.472 79.1989 6.272 78.1429 5.408C77.0869 4.544 75.6829 4.112 73.9309 4.112C72.2029 4.112 70.8469 4.412 69.8629 5.012C68.8789 5.612 68.3869 6.44 68.3869 7.496C68.3869 8.528 68.8429 9.308 69.7549 9.836C70.6669 10.364 71.9869 10.808 73.7149 11.168L76.3789 11.708C78.1309 12.068 79.5949 12.488 80.7709 12.968C81.9709 13.424 82.9549 14.132 83.7229 15.092C84.5149 16.028 84.9109 17.276 84.9109 18.836C84.9109 21.236 83.9509 23.132 82.0309 24.524C80.1349 25.892 77.5069 26.576 74.1469 26.576Z" fill="#23A969"/>
3
- </svg>