ordering-ui-admin-external 1.6.2 → 1.6.3

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 (175) hide show
  1. package/_bundles/main.css +134 -129
  2. package/_bundles/{ordering-ui-admin.488bdda58ba73188d3b5.js → ordering-ui-admin.3ebe4d4f772eaeb4f851.js} +2 -2
  3. package/_bundles/{ordering-ui-admin.488bdda58ba73188d3b5.js.LICENSE.txt → ordering-ui-admin.3ebe4d4f772eaeb4f851.js.LICENSE.txt} +4 -4
  4. package/_modules/components/BusinessIntelligence/Reports/index.js +1 -1
  5. package/_modules/components/CartRecovery/OpenCartsFilterGroup/index.js +1 -1
  6. package/_modules/components/CartRecovery/RecoveryActionHeader/index.js +1 -1
  7. package/_modules/components/Delivery/AddressForm/index.js +1 -1
  8. package/_modules/components/Delivery/DriversCompaniesListing/index.js +1 -1
  9. package/_modules/components/Delivery/DriversGroupLogs/index.js +2 -2
  10. package/_modules/components/Delivery/DriversGroupsListing/index.js +1 -1
  11. package/_modules/components/Home/HomePage/index.js +29 -6
  12. package/_modules/components/Home/HomePage/styles.js +27 -5
  13. package/_modules/components/LanguageSelector/index.js +1 -1
  14. package/_modules/components/Login/LoginForm/index.js +119 -20
  15. package/_modules/components/Login/LoginForm/styles.js +60 -30
  16. package/_modules/components/Loyalty/RewardsPrograms/index.js +1 -1
  17. package/_modules/components/Marketing/CampaignSignUpOption/index.js +1 -1
  18. package/_modules/components/Marketing/EnterprisePromotionListing/index.js +1 -1
  19. package/_modules/components/Messages/MessagesListing/styles.js +1 -1
  20. package/_modules/components/MyProducts/AppLayout/index.js +75 -0
  21. package/_modules/components/MyProducts/AppLayout/styles.js +41 -0
  22. package/_modules/components/MyProducts/CallCenterApp/index.js +42 -0
  23. package/_modules/components/MyProducts/ContentForm/index.js +236 -0
  24. package/_modules/components/MyProducts/ContentForm/styles.js +32 -0
  25. package/_modules/components/MyProducts/CustomerApp/index.js +18 -25
  26. package/_modules/components/MyProducts/DriverApp/index.js +18 -45
  27. package/_modules/components/MyProducts/KioskApp/index.js +42 -0
  28. package/_modules/components/MyProducts/OrderingWebsite/index.js +351 -3
  29. package/_modules/components/MyProducts/OrderingWebsite/styles.js +54 -3
  30. package/_modules/components/MyProducts/PosApp/index.js +42 -0
  31. package/_modules/components/MyProducts/StoreApp/index.js +18 -45
  32. package/_modules/components/MyProducts/index.js +22 -1
  33. package/_modules/components/OrderingProducts/OrderingProductDetails/index.js +6 -8
  34. package/_modules/components/OrderingProducts/SiteTheme/index.js +13 -4
  35. package/_modules/components/Orders/DeliveriesManager/index.js +6 -0
  36. package/_modules/components/Orders/DriversManager/index.js +7 -1
  37. package/_modules/components/Orders/GoogleMapsApiKeySettingButton/index.js +110 -0
  38. package/_modules/components/{MyProducts/CustomerApp/styles.js → Orders/GoogleMapsApiKeySettingButton/style.js} +9 -13
  39. package/_modules/components/Orders/Messages/styles.js +3 -3
  40. package/_modules/components/Orders/OrderContactInformation/index.js +7 -7
  41. package/_modules/components/Orders/OrdersContentHeader/index.js +4 -2
  42. package/_modules/components/Orders/OrdersManager/index.js +3 -2
  43. package/_modules/components/Profile/ProfilePage/index.js +2 -1
  44. package/_modules/components/Profile/ProfilePage/styles.js +2 -2
  45. package/_modules/components/Profile/Sessions/index.js +209 -0
  46. package/_modules/components/Profile/Sessions/styles.js +46 -0
  47. package/_modules/components/Profile/index.js +8 -1
  48. package/_modules/components/Settings/EmailSetting/index.js +2 -29
  49. package/_modules/components/Settings/PageForm/index.js +6 -1
  50. package/_modules/components/Settings/Settings/index.js +0 -62
  51. package/_modules/components/Shared/CitySelector/index.js +9 -1
  52. package/_modules/components/Shared/Modal/index.js +5 -3
  53. package/_modules/components/Shared/Modal/styles.js +25 -23
  54. package/_modules/components/SidebarMenu/index.js +132 -76
  55. package/_modules/components/SidebarMenu/styles.js +4 -2
  56. package/_modules/components/Stores/AddBusinessForm/index.js +22 -8
  57. package/_modules/components/Stores/BusinessBrandGENDetail/index.js +6 -1
  58. package/_modules/components/Stores/BusinessProductList/styles.js +1 -1
  59. package/_modules/components/Stores/BusinessProductsCategories/styles.js +1 -1
  60. package/_modules/components/Stores/BusinessProductsCategoyInfo/index.js +6 -1
  61. package/_modules/components/Stores/BusinessProductsListing/index.js +35 -8
  62. package/_modules/components/Stores/BusinessProductsListing/styles.js +6 -4
  63. package/_modules/components/Stores/BusinessSelectHeader/index.js +17 -9
  64. package/_modules/components/Stores/BusinessSelectHeader/styles.js +1 -1
  65. package/_modules/components/Stores/BusinessSummary/index.js +21 -8
  66. package/_modules/components/Stores/BusinessSummary/styles.js +5 -3
  67. package/_modules/components/Stores/BusinessSync/index.js +6 -2
  68. package/_modules/components/Stores/BusinessSyncItsaCheckmate/index.js +52 -0
  69. package/_modules/components/Stores/BusinessSyncItsaCheckmate/styles.js +31 -0
  70. package/_modules/components/Support/index.js +1 -1
  71. package/_modules/hooks/useCountdownTimer.js +40 -0
  72. package/_modules/index.js +18 -0
  73. package/_modules/utils/index.js +65 -4
  74. package/index-template.js +49 -8
  75. package/package.json +3 -2
  76. package/src/components/BusinessIntelligence/Reports/index.js +1 -1
  77. package/src/components/CartRecovery/OpenCartsFilterGroup/index.js +1 -1
  78. package/src/components/CartRecovery/RecoveryActionHeader/index.js +1 -1
  79. package/src/components/Delivery/AddressForm/index.js +1 -1
  80. package/src/components/Delivery/DriversCompaniesListing/index.js +1 -1
  81. package/src/components/Delivery/DriversGroupLogs/index.js +1 -1
  82. package/src/components/Delivery/DriversGroupsListing/index.js +1 -1
  83. package/src/components/Home/HomePage/index.js +62 -6
  84. package/src/components/Home/HomePage/styles.js +48 -1
  85. package/src/components/LanguageSelector/index.js +1 -1
  86. package/src/components/Login/LoginForm/index.js +211 -94
  87. package/src/components/Login/LoginForm/styles.js +74 -8
  88. package/src/components/Loyalty/RewardsPrograms/index.js +1 -1
  89. package/src/components/Marketing/CampaignSignUpOption/index.js +1 -1
  90. package/src/components/Marketing/EnterprisePromotionListing/index.js +1 -1
  91. package/src/components/Messages/MessagesListing/styles.js +3 -5
  92. package/src/components/MyProducts/AppLayout/index.js +97 -0
  93. package/src/components/MyProducts/AppLayout/styles.js +145 -0
  94. package/src/components/MyProducts/CallCenterApp/index.js +29 -0
  95. package/src/components/MyProducts/ContentForm/index.js +230 -0
  96. package/src/components/MyProducts/ContentForm/styles.js +67 -0
  97. package/src/components/MyProducts/CustomerApp/index.js +17 -41
  98. package/src/components/MyProducts/DriverApp/index.js +16 -70
  99. package/src/components/MyProducts/KioskApp/index.js +29 -0
  100. package/src/components/MyProducts/OrderingWebsite/index.js +452 -25
  101. package/src/components/MyProducts/OrderingWebsite/styles.js +244 -0
  102. package/src/components/MyProducts/PosApp/index.js +29 -0
  103. package/src/components/MyProducts/StoreApp/index.js +16 -70
  104. package/src/components/MyProducts/index.js +7 -1
  105. package/src/components/OrderingProducts/OrderingProductDetails/index.js +4 -4
  106. package/src/components/OrderingProducts/SiteTheme/index.js +8 -0
  107. package/src/components/Orders/DeliveriesManager/index.js +5 -1
  108. package/src/components/Orders/DriversManager/index.js +7 -1
  109. package/src/components/Orders/GoogleMapsApiKeySettingButton/index.js +94 -0
  110. package/src/components/Orders/GoogleMapsApiKeySettingButton/style.js +38 -0
  111. package/src/components/Orders/Messages/styles.js +6 -0
  112. package/src/components/Orders/OrderContactInformation/index.js +1 -1
  113. package/src/components/Orders/OrdersContentHeader/index.js +6 -1
  114. package/src/components/Orders/OrdersManager/index.js +2 -1
  115. package/src/components/Profile/ProfilePage/index.js +2 -0
  116. package/src/components/Profile/ProfilePage/styles.js +2 -1
  117. package/src/components/Profile/Sessions/index.js +209 -0
  118. package/src/components/Profile/Sessions/styles.js +132 -0
  119. package/src/components/Profile/index.js +3 -1
  120. package/src/components/Settings/EmailSetting/index.js +0 -32
  121. package/src/components/Settings/PageForm/index.js +3 -0
  122. package/src/components/Settings/Settings/index.js +0 -65
  123. package/src/components/Shared/CitySelector/index.js +8 -0
  124. package/src/components/Shared/Modal/index.js +32 -26
  125. package/src/components/Shared/Modal/styles.js +11 -3
  126. package/src/components/SidebarMenu/index.js +92 -70
  127. package/src/components/SidebarMenu/styles.js +8 -1
  128. package/src/components/Stores/AddBusinessForm/index.js +10 -8
  129. package/src/components/Stores/BusinessBrandGENDetail/index.js +3 -0
  130. package/src/components/Stores/BusinessProductList/styles.js +1 -1
  131. package/src/components/Stores/BusinessProductsCategories/styles.js +1 -1
  132. package/src/components/Stores/BusinessProductsCategoyInfo/index.js +3 -0
  133. package/src/components/Stores/BusinessProductsListing/index.js +35 -1
  134. package/src/components/Stores/BusinessProductsListing/styles.js +9 -1
  135. package/src/components/Stores/BusinessSelectHeader/index.js +14 -2
  136. package/src/components/Stores/BusinessSelectHeader/styles.js +5 -0
  137. package/src/components/Stores/BusinessSummary/index.js +27 -10
  138. package/src/components/Stores/BusinessSummary/styles.js +7 -0
  139. package/src/components/Stores/BusinessSync/index.js +7 -2
  140. package/src/components/Stores/BusinessSyncItsaCheckmate/index.js +63 -0
  141. package/src/components/Stores/BusinessSyncItsaCheckmate/styles.js +88 -0
  142. package/src/components/Support/index.js +1 -1
  143. package/src/hooks/useCountdownTimer.js +26 -0
  144. package/src/index.js +7 -1
  145. package/src/utils/index.js +61 -0
  146. package/template/app.js +14 -12
  147. package/template/assets/images/ItsaCheckmateLogo.png +0 -0
  148. package/template/assets/images/door-dash.png +0 -0
  149. package/template/assets/images/myProducts/driver-app-brand.png +0 -0
  150. package/template/assets/images/myProducts/driver-app-free.png +0 -0
  151. package/template/assets/images/myProducts/multi-store-customer-app.png +0 -0
  152. package/template/assets/images/myProducts/my-callcenter-app-brand.png +0 -0
  153. package/template/assets/images/myProducts/my-callcenter-app-live.png +0 -0
  154. package/template/assets/images/myProducts/my-kiosk-app-brand.png +0 -0
  155. package/template/assets/images/myProducts/my-kiosk-app-live.png +0 -0
  156. package/template/assets/images/myProducts/my-pos-app-brand.png +0 -0
  157. package/template/assets/images/myProducts/my-pos-app-live.png +0 -0
  158. package/template/assets/images/myProducts/single-store-customer-app.png +0 -0
  159. package/template/assets/images/myProducts/store-app-brand.png +0 -0
  160. package/template/assets/images/myProducts/store-app-free.png +0 -0
  161. package/template/assets/images/projectStatuses/project-active.png +0 -0
  162. package/template/assets/images/projectStatuses/project-past-due-payment.png +0 -0
  163. package/template/components/AutologinParams/index.js +79 -0
  164. package/template/components/ListenPageChanges/index.js +3 -2
  165. package/template/config.json +1 -0
  166. package/template/helmetdata.json +21 -0
  167. package/template/pages/CallCenterApp/index.js +12 -0
  168. package/template/pages/KioskApp/index.js +12 -0
  169. package/template/pages/PosApp/index.js +12 -0
  170. package/template/theme.json +3 -0
  171. package/_modules/components/MyProducts/DriverApp/styles.js +0 -29
  172. package/_modules/components/MyProducts/StoreApp/styles.js +0 -29
  173. package/src/components/MyProducts/CustomerApp/styles.js +0 -59
  174. package/src/components/MyProducts/DriverApp/styles.js +0 -104
  175. package/src/components/MyProducts/StoreApp/styles.js +0 -104
@@ -0,0 +1,145 @@
1
+ import styled, { css } from 'styled-components'
2
+
3
+ export const Container = styled.div`
4
+ flex: 1;
5
+ padding: 25px 20px;
6
+ box-sizing: border-box;
7
+ transition: all 0.5s;
8
+ max-height: 100vh;
9
+ overflow: auto;
10
+ min-height: 100vh;
11
+ `
12
+ export const HeaderTitleContainer = styled.div`
13
+ display: flex;
14
+ align-items: center;
15
+
16
+ > h1 {
17
+ font-weight: 700;
18
+ font-size: 20px;
19
+ color: ${props => props.theme.colors.headingColor};
20
+ margin: 0px;
21
+ line-height: 32px;
22
+ }
23
+
24
+ > button {
25
+ ${props => props.theme?.rtl ? css`
26
+ margin-left: 8px;
27
+ margin-right: -8px;
28
+ ` : css`
29
+ margin-right: 8px;
30
+ margin-left: -8px;
31
+ `}
32
+
33
+ svg {
34
+ width: 25px;
35
+ height: 25px;
36
+ }
37
+ }
38
+ `
39
+ export const ContentWrapper = styled.div`
40
+ padding: 20px 0;
41
+
42
+ > h1 {
43
+ font-size: 24px;
44
+ font-weight: 700;
45
+ margin: 0;
46
+ }
47
+ > p {
48
+ font-size: 14px;
49
+ margin: 8px 0;
50
+ }
51
+ @media (min-width: 1024px) {
52
+ > h1 {
53
+ font-size: 32px;
54
+ line-height: 48px;
55
+ }
56
+ > p {
57
+ font-size: 16px;
58
+ line-height: 24px;
59
+ }
60
+ }
61
+ `
62
+ export const BoxWrapper = styled.div`
63
+ display: flex;
64
+ flex-direction: column;
65
+
66
+ @media (min-width: 1024px) {
67
+ flex-direction: row;
68
+ justify-content: space-between;
69
+ }
70
+ `
71
+ export const AppInfoContainer = styled.div`
72
+ margin-top: 36px;
73
+ display: flex;
74
+ flex-direction: column;
75
+ box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.1);
76
+ border-radius: 8px;
77
+ padding: 45px 25px;
78
+
79
+ h2 {
80
+ font-size: 24px;
81
+ margin-top: 0;
82
+ margin-bottom: 32px;
83
+ }
84
+
85
+ p {
86
+ font-size: 14px;
87
+ margin: 0;
88
+ }
89
+ @media (min-width: 1024px) {
90
+ width: calc(50% - 23px);
91
+ h2 {
92
+ font-size: 32px;
93
+ line-height: 48px;
94
+ }
95
+ p {
96
+ font-size: 16px;
97
+ line-height: 24px;
98
+ }
99
+ }
100
+ `
101
+ export const ImageWrapper = styled.div`
102
+ flex: 1;
103
+ margin-bottom: 25px;
104
+ display: flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ img {
108
+ width: 100%;
109
+ max-width: 430px;
110
+ }
111
+ `
112
+ export const AppStoreLinksWrapper = styled.div`
113
+ margin-top: 33px;
114
+ display: flex;
115
+ > a {
116
+ &:not(:first-child) {
117
+ ${props => props.theme?.rtl ? css`
118
+ margin-right: 24px;
119
+ ` : css`
120
+ margin-left: 24px;
121
+ `}
122
+ }
123
+ }
124
+ `
125
+ export const DownloadLink = styled.a`
126
+ flex: 1;
127
+ img {
128
+ width: 100%;
129
+ object-fit: cover;
130
+ }
131
+
132
+ ${({ isSingle }) => isSingle ? css`
133
+ margin: 0 auto;
134
+ text-decoration: underline;
135
+ ` : css`
136
+ max-width: 200px;
137
+ `}
138
+ `
139
+ export const ButtonWRapper = styled.div`
140
+ margin-top: 31px;
141
+ button {
142
+ height: 44px;
143
+ min-width: 250px;
144
+ }
145
+ `
@@ -0,0 +1,29 @@
1
+ import React from 'react'
2
+ import { useLanguage } from 'ordering-components-admin-external'
3
+ import { useTheme } from 'styled-components'
4
+ import { AppLayout } from '../AppLayout'
5
+
6
+ export const CallCenterApp = () => {
7
+ const [, t] = useLanguage()
8
+ const theme = useTheme()
9
+
10
+ const appInfo = {
11
+ title: t('ORDERING_CALL_CENTER_APP', 'Ordering Call Center App'),
12
+ description: t('CALL_CENTER_DESCRIPTION', 'Give this tool to your team of agents, capture orders in just a few seconds, and keep offering the best customer experience possible.'),
13
+ images: {
14
+ live: theme.images.myProducts.myCallcenterAppLive,
15
+ brand: theme.images.myProducts.myCallcenterAppBrand
16
+ },
17
+ live_title: t('LIVE_DEMO', 'Live Demo'),
18
+ live_description: t('APP_LIVE_DEMO_DESCRIPTION', 'This is a branded Ordering.co product; play with it and understand how it works'),
19
+ web_url: 'https://callcenter.tryordering.com/search',
20
+ web_link_title: t('CALL_CENTER', 'Call center'),
21
+ brand_title: t('YOUR_BRANDED_KIOSK', 'Your Branded Kiosk'),
22
+ brand_description: t('CALL_CENTER_BRANDED_DESCRIPTION', 'The Call Center is delivered in less than five working days, fully branded with your guidelines, and ready to be used on any tablet or device you add it to.'),
23
+ purchase_link: 'https://www.ordering.co/ordering-sales'
24
+ }
25
+
26
+ return (
27
+ <AppLayout appInfo={appInfo} />
28
+ )
29
+ }
@@ -0,0 +1,230 @@
1
+ import React, { useEffect, useState } from 'react'
2
+ import { useLanguage, ContentForm as ContentFormController } from 'ordering-components-admin-external'
3
+ import { Button } from '../../../styles'
4
+
5
+ import $ from 'jquery'
6
+ import ReactSummernote from 'react-summernote'
7
+ import 'react-summernote/dist/react-summernote.css'
8
+ import 'bootstrap/js/dist/modal'
9
+ import 'bootstrap/js/dist/dropdown'
10
+ import 'bootstrap/js/dist/tooltip'
11
+ import 'bootstrap/dist/css/bootstrap.css'
12
+
13
+ import { Alert, Modal } from '../../Shared'
14
+ import { InsertLink } from '../../Settings/InsertLink'
15
+ import { InsertVideo } from '../../Settings/InsertVideo'
16
+ import { InsertImage } from '../../Settings/InsertImage'
17
+
18
+ import {
19
+ PageContainer,
20
+ Header,
21
+ WrapperEditor,
22
+ ButtonGroupWrapper
23
+ } from './styles'
24
+
25
+ const ContentFormUI = (props) => {
26
+ const {
27
+ formState,
28
+ imageListState,
29
+ insertImageState,
30
+ handleInsertImage,
31
+ handleDeleteImage,
32
+ handleChangeFormState,
33
+ handleSave,
34
+ selectedImageUrl,
35
+ setSelectedImageUrl,
36
+ handleDelete,
37
+ title,
38
+ content
39
+ } = props
40
+
41
+ const [, t] = useLanguage()
42
+ const [openModal, setOpenModal] = useState(null)
43
+ const [editorContext, setEditorContext] = useState(null)
44
+ const [alertState, setAlertState] = useState({ open: false, content: [] })
45
+ const [pageContent, setPageContent] = useState(null)
46
+
47
+ const insertLink = (context) => {
48
+ const ui = $.summernote.ui
49
+ const button = ui.button({
50
+ contents: '<i class="note-icon-link"/>',
51
+ tooltip: 'link',
52
+ class: 'note-btn',
53
+ click: () => {
54
+ setEditorContext(context)
55
+ context.invoke('editor.saveRange')
56
+ setOpenModal('link')
57
+ }
58
+ })
59
+ return button.render()
60
+ }
61
+
62
+ const handleRestoreEditor = () => editorContext.invoke('restoreRange')
63
+
64
+ const insertImage = (context) => {
65
+ const ui = $.summernote.ui
66
+ const button = ui.button({
67
+ contents: '<i class="note-icon-picture"/>',
68
+ tooltip: 'picture',
69
+ class: 'note-btn',
70
+ click: () => {
71
+ setEditorContext(context)
72
+ context.invoke('editor.saveRange')
73
+ setOpenModal('image')
74
+ }
75
+ })
76
+ return button.render()
77
+ }
78
+
79
+ const insertVideo = (context) => {
80
+ const ui = $.summernote.ui
81
+ const button = ui.button({
82
+ contents: '<i class="note-icon-video"/>',
83
+ tooltip: 'video',
84
+ class: 'note-btn',
85
+ click: () => {
86
+ setEditorContext(context)
87
+ context.invoke('editor.saveRange')
88
+ setOpenModal('video')
89
+ }
90
+ })
91
+ return button.render()
92
+ }
93
+
94
+ const handleCloseModal = () => {
95
+ setOpenModal(false)
96
+ setEditorContext(null)
97
+ }
98
+
99
+ useEffect(() => {
100
+ if (!formState?.error) return
101
+ setAlertState({
102
+ open: true,
103
+ content: formState?.error
104
+ })
105
+ }, [formState?.error])
106
+
107
+ useEffect(() => {
108
+ if (!pageContent) return
109
+ handleChangeFormState('body', pageContent)
110
+ }, [pageContent])
111
+
112
+ const onInit = (note) => {
113
+ note.reset()
114
+ const regex = /(\<\w*)((\s\/\>)|(.*\<\/\w*\>))/i
115
+ if (content.match(regex) !== null) {
116
+ note.replace(content)
117
+ } else {
118
+ note.insertText(content)
119
+ }
120
+ }
121
+
122
+ return (
123
+ <>
124
+ <PageContainer>
125
+ <Header>
126
+ <h1>{title}</h1>
127
+ </Header>
128
+ <WrapperEditor>
129
+ <ReactSummernote
130
+ onInit={onInit}
131
+ placeholder={t('START_NEW_PAGE')}
132
+ options={{
133
+ height: 350,
134
+ fontNames: ['Arial', 'Arial Black', 'Comic Sans MS', 'Courier New'],
135
+ toolbar: [
136
+ ['style', ['style']],
137
+ ['font', ['bold', 'italic', 'underline', 'clear']],
138
+ ['fontsize', ['fontsize']],
139
+ ['color', ['color']],
140
+ ['para', ['ul', 'paragraph']],
141
+ ['table', ['table']],
142
+ ['insert', ['insertLink', 'insertImage', 'insertVideo']],
143
+ ['codeview', ['codeview']]
144
+ ],
145
+ buttons: {
146
+ insertLink: insertLink,
147
+ insertImage: insertImage,
148
+ insertVideo: insertVideo
149
+ }
150
+ }}
151
+ onChange={content => setPageContent(content)}
152
+ />
153
+ </WrapperEditor>
154
+ <ButtonGroupWrapper>
155
+ <Button
156
+ borderRadius='8px'
157
+ color='primary'
158
+ disabled={Object.keys(formState.changes).length === 0}
159
+ onClick={() => handleSave()}
160
+ >
161
+ {t('ACCEPT', 'Accept')}
162
+ </Button>
163
+ <Button
164
+ borderRadius='8px'
165
+ color='secundaryDark'
166
+ onClick={() => handleDelete()}
167
+ >
168
+ {t('DELETE', 'Delete')}
169
+ </Button>
170
+ </ButtonGroupWrapper>
171
+ </PageContainer>
172
+ <Modal
173
+ width='60%'
174
+ open={openModal === 'link'}
175
+ onClose={() => setOpenModal(null)}
176
+ >
177
+ <InsertLink
178
+ editorContext={editorContext}
179
+ handleRestoreEditor={handleRestoreEditor}
180
+ onClose={() => handleCloseModal()}
181
+ />
182
+ </Modal>
183
+ <Modal
184
+ width='60%'
185
+ open={openModal === 'video'}
186
+ onClose={() => setOpenModal(null)}
187
+ >
188
+ <InsertVideo
189
+ editorContext={editorContext}
190
+ handleRestoreEditor={handleRestoreEditor}
191
+ onClose={() => handleCloseModal()}
192
+ />
193
+ </Modal>
194
+ <Modal
195
+ width='60%'
196
+ open={openModal === 'image'}
197
+ onClose={() => setOpenModal(null)}
198
+ >
199
+ <InsertImage
200
+ imageListState={imageListState}
201
+ editorContext={editorContext}
202
+ handleRestoreEditor={handleRestoreEditor}
203
+ onClose={() => handleCloseModal()}
204
+ insertImageState={insertImageState}
205
+ handleInsertImage={handleInsertImage}
206
+ handleDeleteImage={handleDeleteImage}
207
+ selectedImageUrl={selectedImageUrl}
208
+ setSelectedImageUrl={setSelectedImageUrl}
209
+ />
210
+ </Modal>
211
+ <Alert
212
+ title={t('BUSINESS', 'Business')}
213
+ content={alertState.content}
214
+ acceptText={t('ACCEPT', 'Accept')}
215
+ open={alertState.open}
216
+ onClose={() => setAlertState({ open: false, content: [] })}
217
+ onAccept={() => setAlertState({ open: false, content: [] })}
218
+ closeOnBackdrop={false}
219
+ />
220
+ </>
221
+ )
222
+ }
223
+
224
+ export const ContentForm = (props) => {
225
+ const contentFormProps = {
226
+ ...props,
227
+ UIComponent: ContentFormUI
228
+ }
229
+ return <ContentFormController {...contentFormProps} />
230
+ }
@@ -0,0 +1,67 @@
1
+ import styled, { css } from 'styled-components'
2
+
3
+ export const PageContainer = styled.div`
4
+ `
5
+
6
+ export const Header = styled.div`
7
+ display: flex;
8
+ align-items: center;
9
+ h1 {
10
+ font-size: 20px;
11
+ font-weight: 700;
12
+ margin-bottom: 0px;
13
+
14
+ ${props => props.theme?.rtl ? css`
15
+ margin-left: 20px;
16
+ ` : css`
17
+ margin-right: 20px;
18
+ `}
19
+ }
20
+ `
21
+
22
+ export const WrapperEditor = styled.div`
23
+ margin-top: 40px;
24
+
25
+ .note-editor {
26
+ border-radius: 8px;
27
+ border: 1px solid ${props => props.theme.colors.borderColor};
28
+
29
+ .note-toolbar {
30
+ border-bottom: 1px solid ${props => props.theme.colors.borderColor};
31
+ }
32
+
33
+ .note-btn {
34
+ &:hover,
35
+ &:focus {
36
+ background-color: ${props => props.theme.colors.secundaryDarkContrast};
37
+ box-shadow: none;
38
+ }
39
+ }
40
+
41
+ .note-dropdown-menu {
42
+ a {
43
+ color: #000;
44
+ }
45
+
46
+ h1 {
47
+ font-size: 36px;
48
+ }
49
+ }
50
+ }
51
+ `
52
+
53
+ export const ButtonGroupWrapper = styled.div`
54
+ margin-top: 25px;
55
+ display: flex;
56
+ align-items: center;
57
+ > button {
58
+ height: 44px;
59
+ &:last-child {
60
+ ${props => props.theme?.rtl ? css`
61
+ margin-right: 14px;
62
+ ` : css`
63
+ margin-left: 14px;
64
+ `}
65
+ }
66
+ }
67
+ `
@@ -1,52 +1,28 @@
1
1
  import React from 'react'
2
2
  import { useLanguage } from 'ordering-components-admin-external'
3
- import { useInfoShare } from '../../../contexts/InfoShareContext'
4
- import { IconButton, Button } from '../../../styles'
5
- import { List as MenuIcon } from 'react-bootstrap-icons'
6
3
  import { useTheme } from 'styled-components'
7
- import {
8
- Container,
9
- HeaderTitleContainer,
10
- ContentWrapper,
11
- ButtonWrapper
12
- } from './styles'
13
- import { BoxLayout } from '../BoxLayout'
4
+ import { AppLayout } from '../AppLayout'
14
5
 
15
6
  export const CustomerApp = () => {
16
7
  const [, t] = useLanguage()
17
8
  const theme = useTheme()
18
- const [{ isCollapse }, { handleMenuCollapse }] = useInfoShare()
9
+
10
+ const appInfo = {
11
+ title: t('CUSTOMER_APP', 'Customer App'),
12
+ description: t('CUSTOMER_APP_DESCRIPTION', 'Give your business owners or managers a tool to manage their whole business\'s incoming orders on the go by installing this app on any mobile device they have.'),
13
+ images: {
14
+ live: theme.images.myProducts.multiStoreCustomerApp,
15
+ brand: theme.images.myProducts.singleStoreCustomerApp
16
+ },
17
+ live_title: t('MULTI-STORE-CUSTOMER-APP', 'Multi-store Customer App'),
18
+ live_description: t('FREE_TO_USE_DESCRIPTION', 'This is a branded Ordering.co product. use it with your project, email, and password for free. features might be limited.'),
19
+ live_purchase_link: 'https://www.ordering.co/ordering-sales',
20
+ brand_title: t('SINGLE_STORE_CUSTOMER_APP', 'Single Store Customer App'),
21
+ brand_description: t('BRANDED_APP_DESCRIPTION', 'This App is delivered in less than five working days, fully branded with your guidelines, removing all ordering.co presence to give your brand more awareness.'),
22
+ purchase_link: 'https://www.ordering.co/ordering-sales'
23
+ }
19
24
 
20
25
  return (
21
- <Container>
22
- <HeaderTitleContainer>
23
- {isCollapse && (
24
- <IconButton
25
- color='black'
26
- onClick={() => handleMenuCollapse(false)}
27
- >
28
- <MenuIcon />
29
- </IconButton>
30
- )}
31
- <h1>{t('MY_PRODUCTS', 'My products')}</h1>
32
- </HeaderTitleContainer>
33
- <ContentWrapper>
34
- <BoxLayout
35
- title={t('CUSTOMER_APP', 'Customer app')}
36
- photo={theme.images.myProducts.customerApp}
37
- description={t('CUSTOMER_APP_DESC', 'Give your customers the chance to order from their mobile devices wherever they are, receive push notifications, offers, and much more.')}
38
- >
39
- <ButtonWrapper>
40
- <Button
41
- color='primary'
42
- borderRadius='8px'
43
- onClick={() => window.open('https://www.ordering.co/ordering-sales', '_blank')}
44
- >
45
- {t('REQUEST_APP_NOW', 'Request app now')}
46
- </Button>
47
- </ButtonWrapper>
48
- </BoxLayout>
49
- </ContentWrapper>
50
- </Container>
26
+ <AppLayout appInfo={appInfo} />
51
27
  )
52
28
  }
@@ -1,83 +1,29 @@
1
1
  import React from 'react'
2
2
  import { useLanguage } from 'ordering-components-admin-external'
3
- import { useInfoShare } from '../../../contexts/InfoShareContext'
4
- import { Button, IconButton } from '../../../styles'
5
- import { List as MenuIcon } from 'react-bootstrap-icons'
6
3
  import { useTheme } from 'styled-components'
7
- import { BoxLayout } from '../BoxLayout'
8
- import {
9
- Container,
10
- HeaderTitleContainer,
11
- ContentWrapper,
12
- FreeBtnWrapper,
13
- BrandedBtnWrapper
14
- } from './styles'
4
+ import { AppLayout } from '../AppLayout'
15
5
 
16
6
  export const DriverApp = () => {
17
7
  const [, t] = useLanguage()
18
8
  const theme = useTheme()
19
- const [{ isCollapse }, { handleMenuCollapse }] = useInfoShare()
20
9
 
21
- const handleOpenURL = (url) => {
22
- window.open(url, '_blank')
10
+ const appInfo = {
11
+ title: t('DRIVER_APP', 'Driver App'),
12
+ description: t('DRIVER_APP_DESCRIPTION', 'Your fleet\'s best companion gives drivers a tool to receive orders, follow optimal routes, add delivery evidence, set orders\' timing, and control their busy times.'),
13
+ images: {
14
+ live: theme.images.myProducts.driverAppFree,
15
+ brand: theme.images.myProducts.driverAppBrand
16
+ },
17
+ live_title: t('FREE_TO_USE', 'Free to use'),
18
+ live_description: t('FREE_TO_USE_DESCRIPTION', 'This is a branded Ordering.co product. use it with your project, email, and password for free. features might be limited.'),
19
+ apple_store_link: 'https://apps.apple.com/us/app/driver-app-2-0/id1606257815',
20
+ google_play_link: 'https://play.google.com/store/apps/details?id=com.ordering.deliveryv5',
21
+ brand_title: t('YOUR_BRANDED_APP', 'Your Branded App'),
22
+ brand_description: t('BRANDED_APP_DESCRIPTION', 'This App is delivered in less than five working days, fully branded with your guidelines, removing all ordering.co presence to give your brand more awareness.'),
23
+ purchase_link: 'https://www.ordering.co/ordering-sales'
23
24
  }
24
25
 
25
26
  return (
26
- <Container>
27
- <HeaderTitleContainer>
28
- {isCollapse && (
29
- <IconButton
30
- color='black'
31
- onClick={() => handleMenuCollapse(false)}
32
- >
33
- <MenuIcon />
34
- </IconButton>
35
- )}
36
- <h1>{t('MY_PRODUCTS', 'My products')}</h1>
37
- </HeaderTitleContainer>
38
- <ContentWrapper>
39
- <h1>{t('DRIVER_APP', 'Driver app')}</h1>
40
- <p>{t('DRIVER_APP_DESC', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.')}</p>
41
- <BoxLayout
42
- title={t('FREE_TO_USE', 'Free to use')}
43
- description={t('FREE_TO_USE_DESC', 'This app can be used by your fleet with the ordering.co logo.')}
44
- photo={theme.images.myProducts.driverApp}
45
- >
46
- <FreeBtnWrapper>
47
- <Button
48
- color='primary'
49
- borderRadius='8px'
50
- outline
51
- onClick={() => handleOpenURL('https://apps.apple.com/us/app/driver-app-2-0/id1606257815')}
52
- >
53
- {t('DOWNLOAD_APPLE', 'Download apple')}
54
- </Button>
55
- <Button
56
- color='primary'
57
- borderRadius='8px'
58
- outline
59
- onClick={() => handleOpenURL('https://play.google.com/store/apps/details?id=com.ordering.deliveryv5')}
60
- >
61
- {t('DOWNLOAD_GOOGLE', 'Download google')}
62
- </Button>
63
- </FreeBtnWrapper>
64
- </BoxLayout>
65
- <BoxLayout
66
- title={t('BRANDED_BY_YOU', 'Branded by you')}
67
- description={t('BRANDED_BY_YOU_DESC', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Id mi quam aenean in faucibus ac integer libero. Eu egestas sit imperdiet at sit adipiscing ullamcorper sed sit.')}
68
- photo={theme.images.myProducts.driverApp}
69
- >
70
- <BrandedBtnWrapper>
71
- <Button
72
- color='primary'
73
- borderRadius='8px'
74
- onClick={() => handleOpenURL('https://www.ordering.co/ordering-sales')}
75
- >
76
- {t('REQUEST_APP_NOW', 'Request app now')}
77
- </Button>
78
- </BrandedBtnWrapper>
79
- </BoxLayout>
80
- </ContentWrapper>
81
- </Container>
27
+ <AppLayout appInfo={appInfo} />
82
28
  )
83
29
  }
@@ -0,0 +1,29 @@
1
+ import React from 'react'
2
+ import { useLanguage } from 'ordering-components-admin-external'
3
+ import { useTheme } from 'styled-components'
4
+ import { AppLayout } from '../AppLayout'
5
+
6
+ export const KioskApp = () => {
7
+ const [, t] = useLanguage()
8
+ const theme = useTheme()
9
+
10
+ const appInfo = {
11
+ title: t('ORDERING_SELF_KIOSK', 'Ordering Self Ordering Kiosk'),
12
+ description: t('KIOS_DESCRIPTION', 'This tool will help your store complete that final step on each sale with innovative and intuitive software and hardware inside your locations.'),
13
+ images: {
14
+ live: theme.images.myProducts.myKioskAppLive,
15
+ brand: theme.images.myProducts.myKioskAppBrand
16
+ },
17
+ live_title: t('LIVE_DEMO', 'Live Demo'),
18
+ live_description: t('APP_LIVE_DEMO_DESCRIPTION', 'This is a branded Ordering.co product. play with it and understand how it works'),
19
+ apple_store_link: 'https://apps.apple.com/us/app/ordering-kiosk-2-0/id1609314960',
20
+ google_play_link: 'https://play.google.com/store/apps/details?id=com.ordering.orderingkioskv5&hl=en&gl=US',
21
+ brand_title: t('YOUR_BRANDED_KIOSK', 'Your Branded Kiosk'),
22
+ brand_description: t('KIOSK_BRANDED_DESCRIPTION', 'This App is delivered in less than five working days, fully branded with your guidelines, and ready to be used on any tablet you add it to.'),
23
+ purchase_link: 'https://www.ordering.co/ordering-sales'
24
+ }
25
+
26
+ return (
27
+ <AppLayout appInfo={appInfo} />
28
+ )
29
+ }