@bigbinary/neeto-molecules 1.19.10 → 1.19.11

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/README.md +0 -2
  2. package/dist/Breadcrumbs.js +1 -1
  3. package/dist/Builder.js +5 -1
  4. package/dist/Builder.js.map +1 -1
  5. package/dist/CalendarView.js +8 -2
  6. package/dist/CalendarView.js.map +1 -1
  7. package/dist/{Chevron-c639aa31.js → Chevron-fe44fbdd.js} +2 -2
  8. package/dist/{Chevron-c639aa31.js.map → Chevron-fe44fbdd.js.map} +1 -1
  9. package/dist/Codeblock.js +1 -1
  10. package/dist/Columns.js +6 -2
  11. package/dist/Columns.js.map +1 -1
  12. package/dist/ConfigurePageSidebar.js +3 -2
  13. package/dist/ConfigurePageSidebar.js.map +1 -1
  14. package/dist/ConfirmationModal.js +5 -2
  15. package/dist/ConfirmationModal.js.map +1 -1
  16. package/dist/CopyToClipboardButton.js +1 -1
  17. package/dist/Currency.js +2 -2
  18. package/dist/CustomDomain.js +13 -3
  19. package/dist/CustomDomain.js.map +1 -1
  20. package/dist/CustomDomainDashboard.js +16 -4
  21. package/dist/CustomDomainDashboard.js.map +1 -1
  22. package/dist/DateFormat.js +2 -1
  23. package/dist/DateFormat.js.map +1 -1
  24. package/dist/DateRangeFilter.js +2 -1
  25. package/dist/DateRangeFilter.js.map +1 -1
  26. package/dist/DeleteArchiveModal.js +4 -1
  27. package/dist/DeleteArchiveModal.js.map +1 -1
  28. package/dist/DocumentEditor.js +2 -2
  29. package/dist/DownloadMobileAppCallout.js +1 -1
  30. package/dist/DynamicVariables.js +2 -1
  31. package/dist/DynamicVariables.js.map +1 -1
  32. package/dist/EmailForm.js +13 -2
  33. package/dist/EmailForm.js.map +1 -1
  34. package/dist/EmailPreview.js +2 -1
  35. package/dist/EmailPreview.js.map +1 -1
  36. package/dist/EmojiPicker.js +1 -1
  37. package/dist/EmojiReactions.js +2 -1
  38. package/dist/EmojiReactions.js.map +1 -1
  39. package/dist/ErrorPage.js +2 -1
  40. package/dist/ErrorPage.js.map +1 -1
  41. package/dist/FloatingActionMenu.js +8 -1
  42. package/dist/FloatingActionMenu.js.map +1 -1
  43. package/dist/Header.js +5 -1
  44. package/dist/Header.js.map +1 -1
  45. package/dist/HelpPopover.js +3 -1
  46. package/dist/HelpPopover.js.map +1 -1
  47. package/dist/IconPicker.js +6 -1
  48. package/dist/IconPicker.js.map +1 -1
  49. package/dist/InlineInput.js +2 -1
  50. package/dist/InlineInput.js.map +1 -1
  51. package/dist/Insights.js +6 -1
  52. package/dist/Insights.js.map +1 -1
  53. package/dist/IntegrationCard.js +6 -1
  54. package/dist/IntegrationCard.js.map +1 -1
  55. package/dist/IntegrationDisconnectAlert.js +1 -1
  56. package/dist/IntegrationWalkthroughModal.js +3 -1
  57. package/dist/IntegrationWalkthroughModal.js.map +1 -1
  58. package/dist/IpRestriction.js +10 -2
  59. package/dist/IpRestriction.js.map +1 -1
  60. package/dist/KeyboardShortcuts.js +3 -1
  61. package/dist/KeyboardShortcuts.js.map +1 -1
  62. package/dist/LoginPage.js +5 -2
  63. package/dist/LoginPage.js.map +1 -1
  64. package/dist/MenuBar.js +3 -1
  65. package/dist/MenuBar.js.map +1 -1
  66. package/dist/Metadata.js +2 -1
  67. package/dist/Metadata.js.map +1 -1
  68. package/dist/MoreDropdown.js +3 -1
  69. package/dist/MoreDropdown.js.map +1 -1
  70. package/dist/NavigationHeader.js +6 -1
  71. package/dist/NavigationHeader.js.map +1 -1
  72. package/dist/NeetoWidget.js +11 -2
  73. package/dist/NeetoWidget.js.map +1 -1
  74. package/dist/Onboarding.js +3 -1
  75. package/dist/Onboarding.js.map +1 -1
  76. package/dist/OptionFields.js +5 -1
  77. package/dist/OptionFields.js.map +1 -1
  78. package/dist/PageLoader.js +1 -1
  79. package/dist/PhoneNumber.js +4 -1
  80. package/dist/PhoneNumber.js.map +1 -1
  81. package/dist/ProductEmbed.js +11 -1
  82. package/dist/ProductEmbed.js.map +1 -1
  83. package/dist/PublishBlock.js +3 -1
  84. package/dist/PublishBlock.js.map +1 -1
  85. package/dist/PublishYourItem.js +1 -1
  86. package/dist/Rename.js +5 -1
  87. package/dist/Rename.js.map +1 -1
  88. package/dist/ResponsiveDevicePicker.js +1 -1
  89. package/dist/Schedule.js +8 -2
  90. package/dist/Schedule.js.map +1 -1
  91. package/dist/Search.js +1 -1
  92. package/dist/SendToFields.js +6 -2
  93. package/dist/SendToFields.js.map +1 -1
  94. package/dist/Settings.js +7 -1
  95. package/dist/Settings.js.map +1 -1
  96. package/dist/ShareRecordingPane.js +7 -1
  97. package/dist/ShareRecordingPane.js.map +1 -1
  98. package/dist/ShareViaEmail.js +12 -2
  99. package/dist/ShareViaEmail.js.map +1 -1
  100. package/dist/ShareViaLink.js +9 -2
  101. package/dist/ShareViaLink.js.map +1 -1
  102. package/dist/Sidebar.js +3 -2
  103. package/dist/Sidebar.js.map +1 -1
  104. package/dist/StickyRibbonsContainer.js +1 -1
  105. package/dist/SubHeader.js +7 -2
  106. package/dist/SubHeader.js.map +1 -1
  107. package/dist/SuffixedInput.js +2 -2
  108. package/dist/Taxonomy.js +16 -3
  109. package/dist/Taxonomy.js.map +1 -1
  110. package/dist/TimeFormat.js +2 -1
  111. package/dist/TimeFormat.js.map +1 -1
  112. package/dist/TimezoneMismatchModal.js +3 -1
  113. package/dist/TimezoneMismatchModal.js.map +1 -1
  114. package/dist/ToggleFeatureCard.js +6 -2
  115. package/dist/ToggleFeatureCard.js.map +1 -1
  116. package/dist/cjs/Breadcrumbs.js +3 -2
  117. package/dist/cjs/Breadcrumbs.js.map +1 -1
  118. package/dist/cjs/Builder.js +21 -14
  119. package/dist/cjs/Builder.js.map +1 -1
  120. package/dist/cjs/CalendarView.js +22 -12
  121. package/dist/cjs/CalendarView.js.map +1 -1
  122. package/dist/cjs/{Chevron-5fe59f57.js → Chevron-37ef38ee.js} +6 -5
  123. package/dist/cjs/{Chevron-5fe59f57.js.map → Chevron-37ef38ee.js.map} +1 -1
  124. package/dist/cjs/Codeblock.js +1 -1
  125. package/dist/cjs/Columns.js +6 -2
  126. package/dist/cjs/Columns.js.map +1 -1
  127. package/dist/cjs/ConfigurePageSidebar.js +5 -3
  128. package/dist/cjs/ConfigurePageSidebar.js.map +1 -1
  129. package/dist/cjs/ConfirmationModal.js +17 -9
  130. package/dist/cjs/ConfirmationModal.js.map +1 -1
  131. package/dist/cjs/CopyToClipboardButton.js +3 -2
  132. package/dist/cjs/CopyToClipboardButton.js.map +1 -1
  133. package/dist/cjs/Currency.js +6 -4
  134. package/dist/cjs/Currency.js.map +1 -1
  135. package/dist/cjs/CustomDomain.js +19 -6
  136. package/dist/cjs/CustomDomain.js.map +1 -1
  137. package/dist/cjs/CustomDomainDashboard.js +25 -9
  138. package/dist/cjs/CustomDomainDashboard.js.map +1 -1
  139. package/dist/cjs/DateFormat.js +6 -3
  140. package/dist/cjs/DateFormat.js.map +1 -1
  141. package/dist/cjs/DateRangeFilter.js +6 -3
  142. package/dist/cjs/DateRangeFilter.js.map +1 -1
  143. package/dist/cjs/DeleteArchiveModal.js +15 -8
  144. package/dist/cjs/DeleteArchiveModal.js.map +1 -1
  145. package/dist/cjs/DocumentEditor.js +6 -4
  146. package/dist/cjs/DocumentEditor.js.map +1 -1
  147. package/dist/cjs/DownloadMobileAppCallout.js +3 -2
  148. package/dist/cjs/DownloadMobileAppCallout.js.map +1 -1
  149. package/dist/cjs/DynamicVariables.js +7 -4
  150. package/dist/cjs/DynamicVariables.js.map +1 -1
  151. package/dist/cjs/EmailForm.js +29 -11
  152. package/dist/cjs/EmailForm.js.map +1 -1
  153. package/dist/cjs/EmailPreview.js +12 -9
  154. package/dist/cjs/EmailPreview.js.map +1 -1
  155. package/dist/cjs/EmojiPicker.js +3 -2
  156. package/dist/cjs/EmojiPicker.js.map +1 -1
  157. package/dist/cjs/EmojiReactions.js +6 -3
  158. package/dist/cjs/EmojiReactions.js.map +1 -1
  159. package/dist/cjs/ErrorPage.js +8 -5
  160. package/dist/cjs/ErrorPage.js.map +1 -1
  161. package/dist/cjs/FloatingActionMenu.js +40 -27
  162. package/dist/cjs/FloatingActionMenu.js.map +1 -1
  163. package/dist/cjs/Header.js +7 -2
  164. package/dist/cjs/Header.js.map +1 -1
  165. package/dist/cjs/HelpPopover.js +11 -6
  166. package/dist/cjs/HelpPopover.js.map +1 -1
  167. package/dist/cjs/IconPicker.js +20 -9
  168. package/dist/cjs/IconPicker.js.map +1 -1
  169. package/dist/cjs/InlineInput.js +7 -4
  170. package/dist/cjs/InlineInput.js.map +1 -1
  171. package/dist/cjs/Insights.js +18 -11
  172. package/dist/cjs/Insights.js.map +1 -1
  173. package/dist/cjs/IntegrationCard.js +18 -8
  174. package/dist/cjs/IntegrationCard.js.map +1 -1
  175. package/dist/cjs/IntegrationDisconnectAlert.js +3 -2
  176. package/dist/cjs/IntegrationDisconnectAlert.js.map +1 -1
  177. package/dist/cjs/IntegrationWalkthroughModal.js +10 -5
  178. package/dist/cjs/IntegrationWalkthroughModal.js.map +1 -1
  179. package/dist/cjs/IpRestriction.js +43 -25
  180. package/dist/cjs/IpRestriction.js.map +1 -1
  181. package/dist/cjs/KeyboardShortcuts.js +13 -8
  182. package/dist/cjs/KeyboardShortcuts.js.map +1 -1
  183. package/dist/cjs/LoginPage.js +21 -13
  184. package/dist/cjs/LoginPage.js.map +1 -1
  185. package/dist/cjs/MenuBar.js +15 -10
  186. package/dist/cjs/MenuBar.js.map +1 -1
  187. package/dist/cjs/Metadata.js +10 -7
  188. package/dist/cjs/Metadata.js.map +1 -1
  189. package/dist/cjs/MoreDropdown.js +14 -9
  190. package/dist/cjs/MoreDropdown.js.map +1 -1
  191. package/dist/cjs/NavigationHeader.js +10 -3
  192. package/dist/cjs/NavigationHeader.js.map +1 -1
  193. package/dist/cjs/NeetoWidget.js +52 -32
  194. package/dist/cjs/NeetoWidget.js.map +1 -1
  195. package/dist/cjs/Onboarding.js +16 -11
  196. package/dist/cjs/Onboarding.js.map +1 -1
  197. package/dist/cjs/OptionFields.js +25 -16
  198. package/dist/cjs/OptionFields.js.map +1 -1
  199. package/dist/cjs/PageLoader.js +3 -2
  200. package/dist/cjs/PageLoader.js.map +1 -1
  201. package/dist/cjs/PhoneNumber.js +13 -6
  202. package/dist/cjs/PhoneNumber.js.map +1 -1
  203. package/dist/cjs/ProductEmbed.js +53 -32
  204. package/dist/cjs/ProductEmbed.js.map +1 -1
  205. package/dist/cjs/PublishBlock.js +12 -7
  206. package/dist/cjs/PublishBlock.js.map +1 -1
  207. package/dist/cjs/PublishYourItem.js +4 -3
  208. package/dist/cjs/PublishYourItem.js.map +1 -1
  209. package/dist/cjs/Rename.js +12 -5
  210. package/dist/cjs/Rename.js.map +1 -1
  211. package/dist/cjs/ResponsiveDevicePicker.js +3 -2
  212. package/dist/cjs/ResponsiveDevicePicker.js.map +1 -1
  213. package/dist/cjs/Schedule.js +37 -23
  214. package/dist/cjs/Schedule.js.map +1 -1
  215. package/dist/cjs/Search.js +3 -2
  216. package/dist/cjs/Search.js.map +1 -1
  217. package/dist/cjs/SendToFields.js +30 -20
  218. package/dist/cjs/SendToFields.js.map +1 -1
  219. package/dist/cjs/Settings.js +15 -6
  220. package/dist/cjs/Settings.js.map +1 -1
  221. package/dist/cjs/ShareRecordingPane.js +21 -9
  222. package/dist/cjs/ShareRecordingPane.js.map +1 -1
  223. package/dist/cjs/ShareViaEmail.js +33 -15
  224. package/dist/cjs/ShareViaEmail.js.map +1 -1
  225. package/dist/cjs/ShareViaLink.js +37 -23
  226. package/dist/cjs/ShareViaLink.js.map +1 -1
  227. package/dist/cjs/Sidebar.js +7 -4
  228. package/dist/cjs/Sidebar.js.map +1 -1
  229. package/dist/cjs/StickyRibbonsContainer.js +3 -2
  230. package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
  231. package/dist/cjs/SubHeader.js +11 -5
  232. package/dist/cjs/SubHeader.js.map +1 -1
  233. package/dist/cjs/SuffixedInput.js +4 -3
  234. package/dist/cjs/SuffixedInput.js.map +1 -1
  235. package/dist/cjs/Taxonomy.js +44 -21
  236. package/dist/cjs/Taxonomy.js.map +1 -1
  237. package/dist/cjs/TimeFormat.js +2 -1
  238. package/dist/cjs/TimeFormat.js.map +1 -1
  239. package/dist/cjs/TimezoneMismatchModal.js +15 -10
  240. package/dist/cjs/TimezoneMismatchModal.js.map +1 -1
  241. package/dist/cjs/ToggleFeatureCard.js +22 -12
  242. package/dist/cjs/ToggleFeatureCard.js.map +1 -1
  243. package/dist/cjs/{index-9b0c3047.js → index-5189db17.js} +36 -20
  244. package/dist/cjs/{index-9b0c3047.js.map → index-5189db17.js.map} +1 -1
  245. package/dist/cjs/{useColumns-9978cf70.js → useColumns-5660bfea.js} +19 -10
  246. package/dist/cjs/{useColumns-9978cf70.js.map → useColumns-5660bfea.js.map} +1 -1
  247. package/dist/{index-8fd0cad5.js → index-e29acf27.js} +10 -3
  248. package/dist/{index-8fd0cad5.js.map → index-e29acf27.js.map} +1 -1
  249. package/dist/{useColumns-751e9192.js → useColumns-cec6e827.js} +6 -2
  250. package/dist/{useColumns-751e9192.js.map → useColumns-cec6e827.js.map} +1 -1
  251. package/package.json +24 -3
  252. package/src/translations/en.json +0 -84
  253. package/dist/Security.js +0 -341
  254. package/dist/Security.js.map +0 -1
  255. package/dist/ThemeSidebar.js +0 -1410
  256. package/dist/ThemeSidebar.js.map +0 -1
  257. package/dist/cjs/Security.js +0 -372
  258. package/dist/cjs/Security.js.map +0 -1
  259. package/dist/cjs/ThemeSidebar.js +0 -1443
  260. package/dist/cjs/ThemeSidebar.js.map +0 -1
  261. package/types/Security.d.ts +0 -35
  262. package/types/themeSidebar.d.ts +0 -80
@@ -1,1443 +0,0 @@
1
- 'use strict';
2
-
3
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
- var React = require('react');
6
- var neetoui = require('@bigbinary/neetoui');
7
- var reactI18next = require('react-i18next');
8
- var yup = require('yup');
9
- var formik$1 = require('@bigbinary/neetoui/formik');
10
- var neetoCist = require('@bigbinary/neeto-cist');
11
- var withT = require('@bigbinary/neeto-commons-frontend/react-utils/withT');
12
- var ramda = require('ramda');
13
- var _extends = require('@babel/runtime/helpers/extends');
14
- var classnames = require('classnames');
15
- var neetoIcons = require('@bigbinary/neeto-icons');
16
- var framerMotion = require('framer-motion');
17
- var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
18
- var _regeneratorRuntime = require('@babel/runtime/regenerator');
19
- var activestorage = require('@rails/activestorage');
20
- var reactDropzone = require('react-dropzone');
21
- var formik = require('formik');
22
- var antd = require('antd');
23
- var injectCss = require('./inject-css-80a5faa3.js');
24
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
25
- var MoreDropdown = require('./MoreDropdown.js');
26
-
27
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
28
-
29
- function _interopNamespace(e) {
30
- if (e && e.__esModule) return e;
31
- var n = Object.create(null);
32
- if (e) {
33
- Object.keys(e).forEach(function (k) {
34
- if (k !== 'default') {
35
- var d = Object.getOwnPropertyDescriptor(e, k);
36
- Object.defineProperty(n, k, d.get ? d : {
37
- enumerable: true,
38
- get: function () { return e[k]; }
39
- });
40
- }
41
- });
42
- }
43
- n["default"] = e;
44
- return Object.freeze(n);
45
- }
46
-
47
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
48
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
49
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
50
- var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
51
- var withT__default = /*#__PURE__*/_interopDefaultLegacy(withT);
52
- var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
53
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
54
- var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
55
- var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
56
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
57
-
58
- var DIRECT_UPLOAD_URL = "/api/direct_uploads";
59
- var DESIGN_SCREENS = {
60
- THEMES: "Themes",
61
- CUSTOMIZE: "Customize",
62
- LOADING: "Loading"
63
- };
64
- var INITIAL_STATE = {
65
- name: "",
66
- backgroundColor: "#ffffff",
67
- backgroundOverlayColor: "#000000",
68
- backgroundOverlayOpacity: 0,
69
- isDominantBackgroundColorEnabled: false,
70
- questionColor: "#000000",
71
- buttonBackgroundColor: "#2D36D4",
72
- buttonTextColor: "#ffffff",
73
- answerColor: "#2D36D4",
74
- answerTextColor: "#ffffff",
75
- logo: {},
76
- buttonBorderRadius: 10,
77
- isContentBackgroundEnabled: false,
78
- welcomeTextAlignment: "left",
79
- thankYouTextAlignment: "center",
80
- questionsTextAlignment: "left",
81
- fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
82
- };
83
- var THEME_VALIDATION_SCHEMA = yup__namespace.object().shape({
84
- name: yup__namespace.string().required("Name is required")
85
- });
86
- var FIVE_MEGABYTES = 5242880;
87
- var POSITION_OPTIONS = [{
88
- label: "Left",
89
- value: "left"
90
- }, {
91
- label: "Right",
92
- value: "right"
93
- }];
94
- var BACKGROUND_POSITION_OPTIONS = [{
95
- label: "Center",
96
- value: "center"
97
- }, {
98
- label: "Top left",
99
- value: "top left"
100
- }, {
101
- label: "Top center",
102
- value: "top center"
103
- }, {
104
- label: "Top right",
105
- value: "top right"
106
- }, {
107
- label: "Center left",
108
- value: "center left"
109
- }, {
110
- label: "Center right",
111
- value: "center right"
112
- }, {
113
- label: "Bottom left",
114
- value: "bottom left"
115
- }, {
116
- label: "Bottom right",
117
- value: "bottom right"
118
- }, {
119
- label: "Bottom center",
120
- value: "bottom center"
121
- }];
122
- var FONT_OPTIONS = [{
123
- label: "System UI",
124
- value: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"'
125
- }, {
126
- label: "Cedarville Cursive",
127
- value: "'Cedarville Cursive', cursive"
128
- }, {
129
- label: "Poppins",
130
- value: "Poppins, sans-serif"
131
- }, {
132
- label: "Roboto",
133
- value: "Roboto, sans-serif"
134
- }, {
135
- label: "Open Sans",
136
- value: "Open Sans, sans-serif"
137
- }, {
138
- label: "Montserrat",
139
- value: "Montserrat, sans-serif"
140
- }, {
141
- label: "Raleway",
142
- value: "Raleway, sans-serif"
143
- }, {
144
- label: "Quicksand",
145
- value: "Quicksand, sans-serif"
146
- }, {
147
- label: "Inter",
148
- value: "Inter, sans-serif"
149
- }, {
150
- label: "Satoshi",
151
- value: "Satoshi, sans-serif"
152
- }, {
153
- label: "Chillax",
154
- value: "Chillax, sans-serif"
155
- }, {
156
- label: "Clash Display",
157
- value: "Clash Display, sans-serif"
158
- }, {
159
- label: "General Sans",
160
- value: "General Sans, sans-serif"
161
- }, {
162
- label: "Cabinet Grotesk",
163
- value: "Cabinet Grotesk, sans-serif"
164
- }, {
165
- label: "Lora",
166
- value: "Lora, serif"
167
- }, {
168
- label: "Merriweather",
169
- value: "Merriweather, serif"
170
- }, {
171
- label: "Boska",
172
- value: "Boska, serif"
173
- }, {
174
- label: "Playfair Display",
175
- value: "Playfair Display, serif"
176
- }, {
177
- label: "Roboto Slab",
178
- value: "Roboto Slab, serif"
179
- }, {
180
- label: "Dancing Script",
181
- value: "Dancing Script, cursive"
182
- }];
183
-
184
- var Card = function Card(_ref) {
185
- var title = _ref.title,
186
- children = _ref.children;
187
- return /*#__PURE__*/React__default["default"].createElement("div", {
188
- className: "neeto-ui-border-gray-300 neeto-ui-rounded-lg neeto-ui-bg-white space-y-3 border p-4"
189
- }, title && /*#__PURE__*/React__default["default"].createElement("div", {
190
- className: "flex items-center justify-between"
191
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
192
- "data-cy": "edit-theme-properties",
193
- lineHeight: "normal",
194
- style: "h4",
195
- weight: "semibold"
196
- }, title)), children && /*#__PURE__*/React__default["default"].createElement("div", {
197
- className: "space-y-4"
198
- }, children));
199
- };
200
-
201
- var ProgressBar = function ProgressBar(_ref) {
202
- var progressPercentage = _ref.progressPercentage,
203
- progressValue = _ref.progressValue;
204
- return /*#__PURE__*/React__default["default"].createElement("div", {
205
- className: "neeto-ui-bg-gray-200 neeto-ui-rounded-full w-full overflow-hidden"
206
- }, /*#__PURE__*/React__default["default"].createElement(framerMotion.motion.div, {
207
- animate: {
208
- width: "".concat(progressPercentage, "%")
209
- },
210
- className: "neeto-ui-bg-primary-600 neeto-ui-text-primary-100 text-2xs neeto-ui-rounded-full flex h-3 animate-pulse items-center justify-center font-medium leading-none",
211
- initial: {
212
- width: 0
213
- },
214
- transition: {
215
- duration: 0.5,
216
- ease: "easeInOut"
217
- }
218
- }, progressValue));
219
- };
220
-
221
- function ownKeys$2(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
222
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$2(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$2(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
223
- var readFile = function readFile(file) {
224
- return new Promise(function (resolve) {
225
- var reader = new FileReader();
226
- reader.onload = function () {
227
- resolve(reader.result);
228
- };
229
- reader.readAsDataURL(file);
230
- });
231
- };
232
- var getImage = /*#__PURE__*/function () {
233
- var _ref = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(file) {
234
- var image;
235
- return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
236
- while (1) switch (_context.prev = _context.next) {
237
- case 0:
238
- image = new Image();
239
- _context.next = 3;
240
- return readFile(file);
241
- case 3:
242
- image.src = _context.sent;
243
- return _context.abrupt("return", new Promise(function (resolve) {
244
- image.onload = function () {
245
- resolve(image);
246
- };
247
- }));
248
- case 5:
249
- case "end":
250
- return _context.stop();
251
- }
252
- }, _callee);
253
- }));
254
- return function getImage(_x) {
255
- return _ref.apply(this, arguments);
256
- };
257
- }();
258
- var transformTheme = function transformTheme(values) {
259
- return {
260
- name: values.name,
261
- colorScheme: {
262
- backgroundColor: values.backgroundColor,
263
- questionColor: values.questionColor,
264
- buttonBackgroundColor: values.buttonBackgroundColor,
265
- buttonTextColor: values.buttonTextColor,
266
- answerColor: values.answerColor,
267
- answerTextColor: values.answerTextColor
268
- },
269
- backgroundImage: _objectSpread$2(_objectSpread$2({}, values.backgroundImage), {}, {
270
- backgroundColor: values.backgroundColor,
271
- backgroundOverlayOpacity: values.backgroundOverlayOpacity,
272
- isDominantBackgroundColorEnabled: values.isDominantBackgroundColorEnabled,
273
- backgroundPosition: values.backgroundImage.backgroundPosition
274
- }),
275
- fontOptions: {
276
- fontFamily: values.fontFamily
277
- },
278
- buttonOptions: {
279
- buttonBorderRadius: values.buttonBorderRadius
280
- },
281
- layout: {
282
- isContentBackgroundEnabled: values.isContentBackgroundEnabled,
283
- contentBackgroundColor: values.contentBackgroundColor,
284
- welcomeTextAlignment: values.welcomeTextAlignment,
285
- thankYouTextAlignment: values.thankYouTextAlignment,
286
- questionsTextAlignment: values.questionsTextAlignment,
287
- logo: values.logo
288
- }
289
- };
290
- };
291
- var parseTheme = function parseTheme(theme) {
292
- var _theme$layout$logo;
293
- return {
294
- name: theme.name,
295
- backgroundColor: theme.colorScheme.backgroundColor,
296
- questionColor: theme.colorScheme.questionColor,
297
- buttonBackgroundColor: theme.colorScheme.buttonBackgroundColor,
298
- buttonTextColor: theme.colorScheme.buttonTextColor,
299
- answerColor: theme.colorScheme.answerColor,
300
- answerTextColor: theme.colorScheme.answerTextColor,
301
- backgroundImage: theme.backgroundImage,
302
- backgroundOverlayOpacity: theme.backgroundImage.backgroundOverlayOpacity,
303
- fontFamily: theme.fontOptions.fontFamily,
304
- buttonBorderRadius: theme.buttonOptions.buttonBorderRadius,
305
- isDominantBackgroundColorEnabled: theme.backgroundImage.isDominantBackgroundColorEnabled,
306
- isContentBackgroundEnabled: theme.layout.isContentBackgroundEnabled,
307
- contentBackgroundColor: theme.layout.contentBackgroundColor,
308
- welcomeTextAlignment: theme.layout.welcomeTextAlignment,
309
- thankYouTextAlignment: theme.layout.thankYouTextAlignment,
310
- questionsTextAlignment: theme.layout.questionsTextAlignment,
311
- logo: (_theme$layout$logo = theme.layout.logo) !== null && _theme$layout$logo !== void 0 ? _theme$layout$logo : {}
312
- };
313
- };
314
- var getContrast = function getContrast(hexcolor) {
315
- // If a leading # is provided, remove it
316
- if (hexcolor.slice(0, 1) === "#") {
317
- hexcolor = hexcolor.slice(1);
318
- }
319
-
320
- // If a three-character hexcode, make six-character
321
- if (hexcolor.length === 3) {
322
- hexcolor = hexcolor.split("").map(function (hex) {
323
- return hex + hex;
324
- }).join("");
325
- }
326
-
327
- // Convert to RGB value
328
- var r = parseInt(hexcolor.substr(0, 2), 16);
329
- var g = parseInt(hexcolor.substr(2, 2), 16);
330
- var b = parseInt(hexcolor.substr(4, 2), 16);
331
-
332
- // Get YIQ ratio
333
- var yiq = (r * 299 + g * 587 + b * 114) / 1000;
334
-
335
- // Check contrast
336
- return yiq >= 128 ? "#000000" : "#ffffff";
337
- };
338
- var hexToRgb = function hexToRgb(hex) {
339
- var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex.padEnd(7, "0"));
340
- return result ? "".concat(parseInt(result[1], 16), ", ").concat(parseInt(result[2], 16), ", ").concat(parseInt(result[3], 16)) : null;
341
- };
342
- var getDominantColor = /*#__PURE__*/function () {
343
- var _ref2 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(file) {
344
- var image, context, c, hex;
345
- return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
346
- while (1) switch (_context2.prev = _context2.next) {
347
- case 0:
348
- _context2.next = 2;
349
- return getImage(file);
350
- case 2:
351
- image = _context2.sent;
352
- context = document.createElement("canvas").getContext("2d");
353
- context === null || context === void 0 ? void 0 : context.drawImage(image, 0, 0, 1, 1);
354
- c = context === null || context === void 0 ? void 0 : context.getImageData(0, 0, 1, 1).data;
355
- if (!c) {
356
- _context2.next = 9;
357
- break;
358
- }
359
- hex = "#".concat(((1 << 24) + (c[0] << 16) + (c[1] << 8) + c[2]).toString(16).slice(1));
360
- return _context2.abrupt("return", hex);
361
- case 9:
362
- return _context2.abrupt("return", null);
363
- case 10:
364
- case "end":
365
- return _context2.stop();
366
- }
367
- }, _callee2);
368
- }));
369
- return function getDominantColor(_x2) {
370
- return _ref2.apply(this, arguments);
371
- };
372
- }();
373
- var bytesToSize = function bytesToSize(bytes) {
374
- var sizes = ["Bytes", "KB", "MB", "GB", "TB"];
375
- if (bytes === 0) return "n/a";
376
- var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)), 10);
377
- if (i === 0) return "".concat(bytes, " ").concat(sizes[i], ")");
378
- return "".concat((bytes / Math.pow(1024, i)).toFixed(1), " ").concat(sizes[i]);
379
- };
380
- var scrollElementIntoView = function scrollElementIntoView(elementId) {
381
- var _elementToScroll$scro;
382
- var elementToScroll = document.getElementById(elementId);
383
- elementToScroll === null || elementToScroll === void 0 ? void 0 : (_elementToScroll$scro = elementToScroll.scrollIntoView) === null || _elementToScroll$scro === void 0 ? void 0 : _elementToScroll$scro.call(elementToScroll, {
384
- behavior: "smooth"
385
- });
386
- };
387
-
388
- var useDropzoneWithValidation = function useDropzoneWithValidation(_ref) {
389
- var maxSize = _ref.maxSize,
390
- acceptedTypes = _ref.acceptedTypes,
391
- handleAcceptedFile = _ref.handleAcceptedFile,
392
- _ref$isDominantColorE = _ref.isDominantColorEnabled,
393
- isDominantColorEnabled = _ref$isDominantColorE === void 0 ? false : _ref$isDominantColorE;
394
- var _useState = React.useState([]),
395
- _useState2 = _slicedToArray__default["default"](_useState, 2),
396
- files = _useState2[0],
397
- setFiles = _useState2[1];
398
- var _useState3 = React.useState(false),
399
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
400
- error = _useState4[0],
401
- setError = _useState4[1];
402
- var _useState5 = React.useState(0),
403
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
404
- uploadProgress = _useState6[0],
405
- setUploadProgress = _useState6[1];
406
- var maxSizeInReadableUnits = bytesToSize(maxSize);
407
- var _useTranslation = reactI18next.useTranslation(),
408
- t = _useTranslation.t;
409
- var fileErrors = {
410
- "file-invalid-type": t("neetoMolecules.themeSidebar.error.fileTypeError", {
411
- acceptedTypes: acceptedTypes
412
- }),
413
- "file-too-large": t("neetoMolecules.themeSidebar.error.fileSizeLimitExceeded", {
414
- maxSizeInReadableUnits: maxSizeInReadableUnits
415
- })
416
- };
417
- var _useDropzone = reactDropzone.useDropzone({
418
- accept: acceptedTypes,
419
- onDrop: function () {
420
- var _onDrop = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee2(acceptedFiles) {
421
- var newFiles;
422
- return _regeneratorRuntime__default["default"].wrap(function _callee2$(_context2) {
423
- while (1) switch (_context2.prev = _context2.next) {
424
- case 0:
425
- _context2.next = 2;
426
- return new Promise(function (resolve) {
427
- var files = [];
428
- acceptedFiles.forEach(function (file) {
429
- var upload = new activestorage.DirectUpload(file, DIRECT_UPLOAD_URL, {
430
- directUploadWillStoreFileWithXHR: function directUploadWillStoreFileWithXHR(xhr) {
431
- xhr.upload.addEventListener("progress", function (event) {
432
- var percentComplete = Math.round(event.loaded / event.total * 100);
433
- setUploadProgress(percentComplete);
434
- });
435
- }
436
- });
437
- upload.create( /*#__PURE__*/function () {
438
- var _ref2 = _asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee(error, blob) {
439
- var resolvedFile, dominantColor;
440
- return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
441
- while (1) switch (_context.prev = _context.next) {
442
- case 0:
443
- if (!error) {
444
- _context.next = 2;
445
- break;
446
- }
447
- return _context.abrupt("return", neetoui.Toastr.error(error));
448
- case 2:
449
- resolvedFile = {
450
- url: blob.blob_url,
451
- name: blob.filename,
452
- signed_id: blob.signed_id,
453
- type: blob.content_type,
454
- size: blob.byte_size
455
- };
456
- if (!isDominantColorEnabled) {
457
- _context.next = 8;
458
- break;
459
- }
460
- _context.next = 6;
461
- return getDominantColor(file);
462
- case 6:
463
- dominantColor = _context.sent;
464
- resolvedFile.dominantColor = dominantColor;
465
- case 8:
466
- files.push(resolvedFile);
467
- return _context.abrupt("return", resolve(files));
468
- case 10:
469
- case "end":
470
- return _context.stop();
471
- }
472
- }, _callee);
473
- }));
474
- return function (_x2, _x3) {
475
- return _ref2.apply(this, arguments);
476
- };
477
- }());
478
- });
479
- return files;
480
- });
481
- case 2:
482
- newFiles = _context2.sent;
483
- setFiles(newFiles.map(function (file) {
484
- return handleAcceptedFile(file);
485
- }));
486
- case 4:
487
- case "end":
488
- return _context2.stop();
489
- }
490
- }, _callee2);
491
- }));
492
- function onDrop(_x) {
493
- return _onDrop.apply(this, arguments);
494
- }
495
- return onDrop;
496
- }(),
497
- maxSize: maxSize,
498
- onDropRejected: function onDropRejected(fileRejections) {
499
- fileRejections.map(function (_ref3) {
500
- var errors = _ref3.errors;
501
- return errors.map(function (_ref4) {
502
- var code = _ref4.code;
503
- return neetoui.Toastr.error(fileErrors[code] || t("neetoMolecules.common.somethingWentWrong"));
504
- });
505
- });
506
- }
507
- }),
508
- getRootProps = _useDropzone.getRootProps,
509
- getInputProps = _useDropzone.getInputProps,
510
- isDragActive = _useDropzone.isDragActive,
511
- fileRejections = _useDropzone.fileRejections;
512
- React.useEffect(function () {
513
- setError(neetoCist.isNotEmpty(fileRejections));
514
- }, [fileRejections]);
515
- return {
516
- files: files,
517
- getRootProps: getRootProps,
518
- getInputProps: getInputProps,
519
- isDragActive: isDragActive,
520
- fileRejections: fileRejections,
521
- error: error,
522
- uploadProgress: uploadProgress
523
- };
524
- };
525
-
526
- var ImageUploader = function ImageUploader(_ref) {
527
- var onChange = _ref.onChange,
528
- name = _ref.name,
529
- _ref$isDominantColorE = _ref.isDominantColorEnabled,
530
- isDominantColorEnabled = _ref$isDominantColorE === void 0 ? false : _ref$isDominantColorE;
531
- var _useTranslation = reactI18next.useTranslation(),
532
- t = _useTranslation.t;
533
- var _useDropzoneWithValid = useDropzoneWithValidation({
534
- maxSize: FIVE_MEGABYTES,
535
- acceptedTypes: "image/*",
536
- handleAcceptedFile: onChange,
537
- isDominantColorEnabled: isDominantColorEnabled
538
- }),
539
- getInputProps = _useDropzoneWithValid.getInputProps,
540
- getRootProps = _useDropzoneWithValid.getRootProps,
541
- isDragActive = _useDropzoneWithValid.isDragActive,
542
- uploadProgress = _useDropzoneWithValid.uploadProgress;
543
- var shouldShowProgress = !!(uploadProgress && uploadProgress !== 1);
544
- return /*#__PURE__*/React__default["default"].createElement("div", {
545
- className: "space-y-2"
546
- }, /*#__PURE__*/React__default["default"].createElement("div", _extends__default["default"]({}, getRootProps(), {
547
- "data-cy": "image-browse-button",
548
- className: classnames__default["default"]("neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex cursor-pointer flex-col items-center justify-center gap-3 border border-dashed p-5 px-4 transition-all duration-300 ease-in-out", {
549
- "neeto-ui-border-gray-300": !isDragActive,
550
- "neeto-ui-border-gray-700": isDragActive
551
- })
552
- }), shouldShowProgress ? /*#__PURE__*/React__default["default"].createElement("div", {
553
- className: "flex h-24 w-full items-center"
554
- }, /*#__PURE__*/React__default["default"].createElement(ProgressBar, {
555
- progressPercentage: uploadProgress * 100,
556
- progressValue: "".concat(uploadProgress, "%")
557
- })) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoIcons.ImageUpload, {
558
- className: "neeto-ui-text-primary-500",
559
- size: 24
560
- }), /*#__PURE__*/React__default["default"].createElement("div", {
561
- className: "flex flex-col space-y-1"
562
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
563
- className: "neeto-ui-text-gray-800 text-center leading-4",
564
- style: "body2"
565
- }, /*#__PURE__*/React__default["default"].createElement(reactI18next.Trans, {
566
- i18nKey: "neetoMolecules.themeSidebar.editTheme.imageUpload",
567
- components: {
568
- span: /*#__PURE__*/React__default["default"].createElement("span", {
569
- className: "neeto-ui-text-primary-500"
570
- })
571
- }
572
- })), /*#__PURE__*/React__default["default"].createElement("input", _extends__default["default"]({}, getInputProps(), {
573
- name: name
574
- })), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
575
- className: "neeto-ui-text-gray-700 text-center",
576
- "data-cy": "supported-files-text",
577
- lineHeight: "snug",
578
- style: "nano"
579
- }, t("neetoMolecules.themeSidebar.fileRequirements", {
580
- maxSize: FIVE_MEGABYTES
581
- }))))));
582
- };
583
-
584
- var ImageBlock = function ImageBlock(_ref) {
585
- var label = _ref.label,
586
- name = _ref.name,
587
- _ref$imageData = _ref.imageData,
588
- imageData = _ref$imageData === void 0 ? {} : _ref$imageData,
589
- _onChange = _ref.onChange;
590
- var url = imageData.url,
591
- size = imageData.size;
592
- var fileName = imageData.name;
593
- if (url && !fileName) {
594
- var urlParts = url.split("/");
595
- fileName = urlParts[urlParts.length - 1];
596
- }
597
- return /*#__PURE__*/React__default["default"].createElement("div", {
598
- className: "space-y-3 py-3 first:pt-0 last:pb-0"
599
- }, label && /*#__PURE__*/React__default["default"].createElement("div", {
600
- className: "flex items-center justify-between"
601
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
602
- "data-cy": "style-fields-labels",
603
- style: "body2"
604
- }, label)), url ? /*#__PURE__*/React__default["default"].createElement("div", {
605
- className: "flex items-center justify-between gap-2"
606
- }, /*#__PURE__*/React__default["default"].createElement("div", {
607
- className: "flex min-w-0 flex-grow items-center gap-2"
608
- }, /*#__PURE__*/React__default["default"].createElement("img", {
609
- className: "h-10 w-10 object-cover",
610
- src: url
611
- }), /*#__PURE__*/React__default["default"].createElement("div", {
612
- className: "flex min-w-0 flex-grow flex-col gap-1"
613
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
614
- className: "neeto-ui-text-gray-700 break-words",
615
- style: "nano"
616
- }, fileName), size ? /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
617
- className: "neeto-ui-text-gray-500",
618
- style: "nano"
619
- }, size / 1000, "KB") : null)), /*#__PURE__*/React__default["default"].createElement("div", {
620
- className: "flex items-center gap-1"
621
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
622
- label: "Remove",
623
- size: "small",
624
- style: "danger-text",
625
- onClick: function onClick() {
626
- return _onChange(name, {}, "");
627
- }
628
- }))) : /*#__PURE__*/React__default["default"].createElement(ImageUploader, {
629
- isDominantColorEnabled: true,
630
- onChange: function onChange(value) {
631
- return _onChange(name, value, "url(".concat(value.url, ")"));
632
- }
633
- }));
634
- };
635
-
636
- var SelectBlock = function SelectBlock(_ref) {
637
- var label = _ref.label,
638
- _ref$placeholder = _ref.placeholder,
639
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
640
- value = _ref.value,
641
- options = _ref.options,
642
- onChange = _ref.onChange;
643
- return /*#__PURE__*/React__default["default"].createElement("div", {
644
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
645
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
646
- "data-cy": "logo-field-labels",
647
- style: "body2"
648
- }, label), /*#__PURE__*/React__default["default"].createElement("div", {
649
- className: "w-40"
650
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
651
- options: options,
652
- placeholder: placeholder,
653
- value: value,
654
- onChange: onChange
655
- })));
656
- };
657
-
658
- var Logo = withT__default["default"](function (_ref) {
659
- var t = _ref.t,
660
- logo = _ref.logo,
661
- _onChange = _ref.onChange;
662
- return /*#__PURE__*/React__default["default"].createElement(Card, {
663
- title: t("neetoMolecules.themeSidebar.logo")
664
- }, /*#__PURE__*/React__default["default"].createElement("div", {
665
- className: "divide-y divide-gray-200"
666
- }, /*#__PURE__*/React__default["default"].createElement(ImageBlock, {
667
- imageData: logo,
668
- name: "logo",
669
- onChange: function onChange(name, value) {
670
- return _onChange(name, ramda.isEmpty(value) ? {
671
- position: logo.position
672
- } : ramda.mergeLeft(value, logo));
673
- }
674
- }), logo.url && /*#__PURE__*/React__default["default"].createElement(SelectBlock, {
675
- label: t("neetoMolecules.themeSidebar.logoPosition"),
676
- options: POSITION_OPTIONS,
677
- placeholder: t("neetoMolecules.themeSidebar.left"),
678
- value: neetoCist.findBy({
679
- value: logo.position || "left"
680
- }, POSITION_OPTIONS),
681
- onChange: function onChange(_ref2) {
682
- var value = _ref2.value;
683
- return _onChange("logo.position", value);
684
- }
685
- })));
686
- });
687
- var Logo$1 = /*#__PURE__*/React__default["default"].memo(Logo);
688
-
689
- var AlignmentBlock = function AlignmentBlock(_ref) {
690
- var label = _ref.label,
691
- name = _ref.name;
692
- var _useTranslation = reactI18next.useTranslation(),
693
- t = _useTranslation.t;
694
- return /*#__PURE__*/React__default["default"].createElement("div", {
695
- className: "flex items-center justify-between gap-2 py-3 first:pt-0 last:pb-0"
696
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
697
- "data-cy": "style-fields-labels",
698
- style: "body2"
699
- }, label), /*#__PURE__*/React__default["default"].createElement(formik.Field, {
700
- name: name
701
- }, function (_ref2) {
702
- var value = _ref2.field.value,
703
- setFieldValue = _ref2.form.setFieldValue;
704
- return /*#__PURE__*/React__default["default"].createElement("div", {
705
- className: "flex items-center gap-3"
706
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
707
- "data-cy": "alignment-left",
708
- icon: neetoIcons.LeftAlign,
709
- size: "large",
710
- style: value === "left" ? "primary" : "text",
711
- tooltipProps: {
712
- content: t("neetoMolecules.themeSidebar.alignmentOptions.left"),
713
- position: "bottom"
714
- },
715
- onClick: function onClick() {
716
- return setFieldValue(name, "left");
717
- }
718
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
719
- "data-cy": "alignment-center",
720
- icon: neetoIcons.CenterAlign,
721
- size: "large",
722
- style: value === "center" ? "primary" : "text",
723
- tooltipProps: {
724
- content: t("neetoMolecules.themeSidebar.alignmentOptions.center"),
725
- position: "bottom"
726
- },
727
- onClick: function onClick() {
728
- return setFieldValue(name, "center");
729
- }
730
- }));
731
- }));
732
- };
733
-
734
- var ColorBlock = function ColorBlock(_ref) {
735
- var label = _ref.label,
736
- _ref$color = _ref.color,
737
- color = _ref$color === void 0 ? "#FFFFFF" : _ref$color,
738
- onChange = _ref.onChange;
739
- return /*#__PURE__*/React__default["default"].createElement("div", {
740
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
741
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
742
- "data-cy": "style-fields-labels",
743
- style: "body2"
744
- }, label), /*#__PURE__*/React__default["default"].createElement(neetoui.ColorPicker, {
745
- showEyeDropper: true,
746
- color: color,
747
- onChange: onChange
748
- }));
749
- };
750
-
751
- function ownKeys$1(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
752
- function _objectSpread$1(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
753
- var FontPickerBlock = function FontPickerBlock(_ref) {
754
- var label = _ref.label,
755
- _ref$placeholder = _ref.placeholder,
756
- placeholder = _ref$placeholder === void 0 ? "" : _ref$placeholder,
757
- value = _ref.value,
758
- options = _ref.options,
759
- onChange = _ref.onChange;
760
- return /*#__PURE__*/React__default["default"].createElement("div", {
761
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
762
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
763
- "data-cy": "style-fields-labels",
764
- style: "body2"
765
- }, label), /*#__PURE__*/React__default["default"].createElement("div", {
766
- className: "w-40"
767
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Select, {
768
- options: options,
769
- placeholder: placeholder,
770
- value: value,
771
- styles: {
772
- option: function option(styles, _ref2) {
773
- var data = _ref2.data;
774
- return _objectSpread$1(_objectSpread$1({}, styles), {}, {
775
- fontFamily: data.value
776
- });
777
- }
778
- },
779
- onChange: onChange
780
- })));
781
- };
782
-
783
- var css$1 = ".ant-slider{font-feature-settings:\"tnum\";box-sizing:border-box;color:rgba(0,0,0,.85);cursor:pointer;font-size:14px;font-variant:tabular-nums;height:12px;line-height:1.5715;list-style:none;margin:10px 6px;padding:4px 0;position:relative;touch-action:none}.ant-slider-vertical{height:100%;margin:6px 10px;padding:0 4px;width:12px}.ant-slider-vertical .ant-slider-rail{height:100%;width:4px}.ant-slider-vertical .ant-slider-track{width:4px}.ant-slider-vertical .ant-slider-handle{margin-left:-5px;margin-top:-6px}.ant-slider-vertical .ant-slider-mark{height:100%;left:12px;top:0;width:18px}.ant-slider-vertical .ant-slider-mark-text{left:4px;white-space:nowrap}.ant-slider-vertical .ant-slider-step{height:100%;width:4px}.ant-slider-vertical .ant-slider-dot{margin-left:-2px;top:auto}.ant-slider-tooltip .ant-tooltip-inner{min-width:0;min-width:auto}.ant-slider-rtl.ant-slider-vertical .ant-slider-handle{margin-left:0;margin-right:-5px}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark{left:auto;right:12px}.ant-slider-rtl.ant-slider-vertical .ant-slider-mark-text{left:auto;right:4px}.ant-slider-rtl.ant-slider-vertical .ant-slider-dot{left:auto;right:2px}.ant-slider-with-marks{margin-bottom:28px}.ant-slider-rail{background-color:#f5f5f5;width:100%}.ant-slider-rail,.ant-slider-track{border-radius:2px;height:4px;position:absolute;transition:background-color .3s}.ant-slider-track{background-color:#91d5ff}.ant-slider-handle{background-color:#fff;border:2px solid #91d5ff;border-radius:50%;box-shadow:0;cursor:pointer;height:14px;margin-top:-5px;position:absolute;transition:border-color .3s,box-shadow .6s,transform .3s cubic-bezier(.18,.89,.32,1.28);width:14px}.ant-slider-handle-dragging{z-index:1}.ant-slider-handle:focus{border-color:#46a6ff;box-shadow:0 0 0 5px rgba(24,144,255,.12);outline:none}.ant-slider-handle.ant-tooltip-open{border-color:#1890ff}.ant-slider-handle:after{bottom:-6px;content:\"\";left:-6px;position:absolute;right:-6px;top:-6px}.ant-slider:hover .ant-slider-rail{background-color:#e1e1e1}.ant-slider:hover .ant-slider-track{background-color:#69c0ff}.ant-slider:hover .ant-slider-handle:not(.ant-tooltip-open){border-color:#69c0ff}.ant-slider-mark{font-size:14px;left:0;position:absolute;top:14px;width:100%}.ant-slider-mark-text{color:rgba(0,0,0,.45);cursor:pointer;display:inline-block;position:absolute;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;word-break:keep-all}.ant-slider-mark-text-active{color:rgba(0,0,0,.85)}.ant-slider-step{background:transparent;height:4px;pointer-events:none;position:absolute;width:100%}.ant-slider-dot{background-color:#fff;border:2px solid #f0f0f0;border-radius:50%;cursor:pointer;height:8px;position:absolute;top:-2px;width:8px}.ant-slider-dot-active{border-color:#8cc8ff}.ant-slider-disabled{cursor:not-allowed}.ant-slider-disabled .ant-slider-rail{background-color:#f5f5f5!important}.ant-slider-disabled .ant-slider-track{background-color:rgba(0,0,0,.25)!important}.ant-slider-disabled .ant-slider-dot,.ant-slider-disabled .ant-slider-handle{background-color:#fff;border-color:rgba(0,0,0,.25)!important;box-shadow:none;cursor:not-allowed}.ant-slider-disabled .ant-slider-dot,.ant-slider-disabled .ant-slider-mark-text{cursor:not-allowed!important}.ant-slider-rtl{direction:rtl}.ant-slider-rtl .ant-slider-mark{left:auto;right:0}";
784
- injectCss.n(css$1,{});
785
-
786
- var SliderBlock = function SliderBlock(_ref) {
787
- var label = _ref.label,
788
- onChange = _ref.onChange,
789
- defaultValue = _ref.defaultValue,
790
- min = _ref.min,
791
- max = _ref.max,
792
- marks = _ref.marks;
793
- return /*#__PURE__*/React__default["default"].createElement("div", {
794
- className: "flex items-center justify-between gap-3 py-3 first:pt-0 last:pb-0"
795
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
796
- "data-cy": "style-fields-labels",
797
- style: "body2"
798
- }, label), /*#__PURE__*/React__default["default"].createElement(antd.Slider, {
799
- className: "my-2 w-20",
800
- defaultValue: defaultValue,
801
- marks: marks,
802
- max: max,
803
- min: min,
804
- onChange: onChange,
805
- tooltip: {
806
- formatter: neetoCist.noop
807
- }
808
- }));
809
- };
810
-
811
- var SwitchBlock = function SwitchBlock(_ref) {
812
- var label = _ref.label,
813
- name = _ref.name;
814
- return /*#__PURE__*/React__default["default"].createElement("div", {
815
- className: "flex items-center justify-between py-3 first:pt-0 last:pb-0"
816
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
817
- "data-cy": "style-fields-labels",
818
- style: "body2"
819
- }, label), /*#__PURE__*/React__default["default"].createElement(formik$1.Switch, {
820
- "data-cy": "enable-background-color-toggle",
821
- name: name
822
- }));
823
- };
824
-
825
- var Properties = function Properties(_ref) {
826
- var handleChange = _ref.handleChange,
827
- values = _ref.values;
828
- var _useTranslation = reactI18next.useTranslation(),
829
- t = _useTranslation.t;
830
- var backgroundColor = values.backgroundColor,
831
- questionColor = values.questionColor,
832
- buttonBackgroundColor = values.buttonBackgroundColor,
833
- buttonTextColor = values.buttonTextColor,
834
- answerColor = values.answerColor,
835
- backgroundImage = values.backgroundImage,
836
- isContentBackgroundEnabled = values.isContentBackgroundEnabled,
837
- contentBackgroundColor = values.contentBackgroundColor,
838
- isDominantBackgroundColorEnabled = values.isDominantBackgroundColorEnabled,
839
- backgroundOverlayOpacity = values.backgroundOverlayOpacity,
840
- buttonBorderRadius = values.buttonBorderRadius;
841
- var handleOverlayChange = function handleOverlayChange(value) {
842
- handleChange("backgroundOverlayOpacity", value, Math.abs(value / 100));
843
- if (value < 0) {
844
- handleChange("backgroundOverlayColor", "#000000");
845
- } else if (value > 0) {
846
- handleChange("backgroundOverlayColor", "#ffffff");
847
- }
848
- };
849
- React.useEffect(function () {
850
- if (isContentBackgroundEnabled) {
851
- var color = contentBackgroundColor || backgroundColor;
852
- handleChange("contentBackgroundColor", color);
853
- } else {
854
- handleChange("contentBackgroundColor", contentBackgroundColor);
855
- }
856
- }, [isContentBackgroundEnabled]);
857
- React.useEffect(function () {
858
- if (isDominantBackgroundColorEnabled && backgroundImage !== null && backgroundImage !== void 0 && backgroundImage.dominantColor) {
859
- handleChange("backgroundColor", backgroundImage.dominantColor, backgroundImage.dominantColor ? hexToRgb(backgroundImage.dominantColor) : "initial");
860
- }
861
- }, [isDominantBackgroundColorEnabled, backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.dominantColor]);
862
- var handleColorChange = function handleColorChange(name) {
863
- return function (_ref2) {
864
- var hex = _ref2.hex,
865
- rgb = _ref2.rgb;
866
- handleChange(name, hex, "".concat(rgb.r, ", ").concat(rgb.g, ", ").concat(rgb.b));
867
- };
868
- };
869
- var handleAnswerColorChange = function handleAnswerColorChange(_ref3) {
870
- var hex = _ref3.hex,
871
- rgb = _ref3.rgb;
872
- handleColorChange("answerColor")({
873
- hex: hex,
874
- rgb: rgb
875
- });
876
- var contrastColor = getContrast(hex);
877
- handleColorChange("answerTextColor")({
878
- hex: contrastColor,
879
- rgb: hexToRgb(contrastColor)
880
- });
881
- };
882
- return /*#__PURE__*/React__default["default"].createElement(Card, {
883
- title: t("neetoMolecules.themeSidebar.style")
884
- }, /*#__PURE__*/React__default["default"].createElement("div", {
885
- className: "divide-y divide-gray-200"
886
- }, /*#__PURE__*/React__default["default"].createElement(FontPickerBlock, {
887
- label: t("neetoMolecules.themeSidebar.font"),
888
- options: FONT_OPTIONS,
889
- value: neetoCist.findBy({
890
- value: values.fontFamily
891
- }, FONT_OPTIONS) || null,
892
- onChange: function onChange(_ref4) {
893
- var value = _ref4.value;
894
- return handleChange("fontFamily", value);
895
- }
896
- }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
897
- color: questionColor,
898
- label: t("neetoMolecules.themeSidebar.questions"),
899
- onChange: handleColorChange("questionColor")
900
- }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
901
- color: answerColor,
902
- label: t("neetoMolecules.themeSidebar.answerColor"),
903
- onChange: handleAnswerColorChange
904
- }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
905
- color: buttonBackgroundColor,
906
- label: t("neetoMolecules.themeSidebar.buttons"),
907
- onChange: handleColorChange("buttonBackgroundColor")
908
- }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
909
- color: buttonTextColor,
910
- label: t("neetoMolecules.themeSidebar.buttonText"),
911
- onChange: handleColorChange("buttonTextColor")
912
- }), /*#__PURE__*/React__default["default"].createElement(SliderBlock, {
913
- defaultValue: buttonBorderRadius,
914
- label: t("neetoMolecules.themeSidebar.buttonBorderRadius"),
915
- max: 50,
916
- min: 0,
917
- onChange: function onChange(borderRadius) {
918
- return handleChange("buttonBorderRadius", borderRadius, "".concat(borderRadius, "px"));
919
- }
920
- }), /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
921
- color: backgroundColor,
922
- label: t("neetoMolecules.themeSidebar.backgroundColor"),
923
- onChange: function onChange(_ref5) {
924
- var hex = _ref5.hex,
925
- rgb = _ref5.rgb;
926
- handleColorChange("backgroundColor")({
927
- hex: hex,
928
- rgb: rgb
929
- });
930
- handleChange("isDominantBackgroundColorEnabled", false);
931
- }
932
- }), /*#__PURE__*/React__default["default"].createElement(SwitchBlock, {
933
- label: t("neetoMolecules.themeSidebar.enableContentBackground"),
934
- name: "isContentBackgroundEnabled"
935
- }), isContentBackgroundEnabled && /*#__PURE__*/React__default["default"].createElement(ColorBlock, {
936
- color: contentBackgroundColor,
937
- label: t("neetoMolecules.themeSidebar.formBackgroundColor"),
938
- onChange: handleColorChange("contentBackgroundColor")
939
- }), /*#__PURE__*/React__default["default"].createElement(ImageBlock, {
940
- imageData: backgroundImage,
941
- label: t("neetoMolecules.themeSidebar.backgroundImage"),
942
- name: "backgroundImage",
943
- onChange: function onChange(name, value, variableValue) {
944
- handleChange(name, value, variableValue);
945
- handleChange("backgroundOverlayOpacity", 0);
946
- }
947
- }), (backgroundImage === null || backgroundImage === void 0 ? void 0 : backgroundImage.url) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(SliderBlock, {
948
- defaultValue: backgroundOverlayOpacity,
949
- label: t("neetoMolecules.themeSidebar.backgroundOverlay"),
950
- marks: {
951
- 0: " "
952
- },
953
- max: 100,
954
- min: -100,
955
- onChange: handleOverlayChange
956
- }), /*#__PURE__*/React__default["default"].createElement(SwitchBlock, {
957
- name: "isDominantBackgroundColorEnabled",
958
- label: t("neetoMolecules.themeSidebar.enableDominantBackgroundColor")
959
- }), /*#__PURE__*/React__default["default"].createElement(SelectBlock, {
960
- label: t("neetoMolecules.themeSidebar.backgroundPosition"),
961
- options: BACKGROUND_POSITION_OPTIONS,
962
- placeholder: t("neetoMolecules.themeSidebar.left"),
963
- value: neetoCist.findBy({
964
- value: backgroundImage.backgroundPosition || "center"
965
- }, BACKGROUND_POSITION_OPTIONS),
966
- onChange: function onChange(_ref6) {
967
- var value = _ref6.value;
968
- return handleChange("backgroundImage.backgroundPosition", value);
969
- }
970
- })), /*#__PURE__*/React__default["default"].createElement(AlignmentBlock, {
971
- label: t("neetoMolecules.themeSidebar.thankYouTextAlignment"),
972
- name: "thankYouTextAlignment"
973
- }), /*#__PURE__*/React__default["default"].createElement(AlignmentBlock, {
974
- label: t("neetoMolecules.themeSidebar.welcomeTextAlignment"),
975
- name: "welcomeTextAlignment"
976
- }), /*#__PURE__*/React__default["default"].createElement(AlignmentBlock, {
977
- label: t("neetoMolecules.themeSidebar.questionsTextAlignment"),
978
- name: "questionsTextAlignment"
979
- })));
980
- };
981
-
982
- var TextBlock = function TextBlock(_ref) {
983
- var name = _ref.name,
984
- _ref$autoFocus = _ref.autoFocus,
985
- autoFocus = _ref$autoFocus === void 0 ? false : _ref$autoFocus;
986
- return /*#__PURE__*/React__default["default"].createElement(formik$1.Input, {
987
- autoFocus: autoFocus,
988
- "data-cy": "text-block-input",
989
- name: name
990
- });
991
- };
992
-
993
- var Customize = function Customize(_ref) {
994
- var theme = _ref.theme,
995
- handleFormSubmit = _ref.handleFormSubmit;
996
- var _useTranslation = reactI18next.useTranslation(),
997
- t = _useTranslation.t;
998
- var getInitialValues = function getInitialValues() {
999
- return theme ? parseTheme(theme) : INITIAL_STATE;
1000
- };
1001
- return /*#__PURE__*/React__default["default"].createElement(formik$1.Form, {
1002
- formikProps: {
1003
- enableReinitialize: true,
1004
- initialValues: getInitialValues(),
1005
- onSubmit: handleFormSubmit,
1006
- validationSchema: THEME_VALIDATION_SCHEMA,
1007
- validateOnBlur: true,
1008
- validateOnChange: true
1009
- }
1010
- }, function (_ref2) {
1011
- var values = _ref2.values,
1012
- dirty = _ref2.dirty,
1013
- isSubmitting = _ref2.isSubmitting,
1014
- setFieldValue = _ref2.setFieldValue;
1015
- return /*#__PURE__*/React__default["default"].createElement("div", {
1016
- className: "neeto-molecules-theme-design-sidebar__scroll"
1017
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1018
- className: "flex flex-col gap-6 p-4"
1019
- }, /*#__PURE__*/React__default["default"].createElement(Card, {
1020
- title: t("neetoMolecules.themeSidebar.name")
1021
- }, /*#__PURE__*/React__default["default"].createElement(TextBlock, {
1022
- autoFocus: true,
1023
- name: "name"
1024
- })), /*#__PURE__*/React__default["default"].createElement(Properties, {
1025
- handleChange: setFieldValue,
1026
- values: values
1027
- }), /*#__PURE__*/React__default["default"].createElement(Logo$1, {
1028
- logo: values.logo,
1029
- onChange: setFieldValue
1030
- })), /*#__PURE__*/React__default["default"].createElement("div", {
1031
- className: "neeto-ui-bg-white neeto-ui-shadow-s sticky bottom-0 left-0 right-0 py-6 px-4"
1032
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1033
- "data-cy": "save-changes-button",
1034
- disabled: !dirty && theme.id,
1035
- label: t("neetoMolecules.common.actions.save"),
1036
- loading: isSubmitting,
1037
- type: "submit"
1038
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1039
- className: "ml-2",
1040
- "data-cy": "reset-button",
1041
- disabled: !dirty,
1042
- label: t("neetoMolecules.common.actions.reset"),
1043
- style: "text",
1044
- type: "reset"
1045
- })));
1046
- });
1047
- };
1048
-
1049
- var _excluded = ["name"];
1050
- var ThemeCard = function ThemeCard(_ref) {
1051
- var _ref$active = _ref.active,
1052
- active = _ref$active === void 0 ? false : _ref$active,
1053
- isPreviewing = _ref.isPreviewing,
1054
- onSetPreviewTheme = _ref.onSetPreviewTheme,
1055
- onDeleteTheme = _ref.onDeleteTheme,
1056
- onEditTheme = _ref.onEditTheme,
1057
- onApplyTheme = _ref.onApplyTheme,
1058
- onCloneTheme = _ref.onCloneTheme,
1059
- theme = _ref.theme,
1060
- isHighLightedTheme = _ref.isHighLightedTheme,
1061
- isApplyingTheme = _ref.isApplyingTheme;
1062
- var _useTranslation = reactI18next.useTranslation(),
1063
- t = _useTranslation.t;
1064
- var name = theme.name,
1065
- styles = _objectWithoutProperties__default["default"](theme, _excluded);
1066
- var handleApplyTheme = function handleApplyTheme() {
1067
- if (isApplyingTheme) return;
1068
- onApplyTheme(theme);
1069
- };
1070
- var moreMenuItems = [{
1071
- "data-cy": "theme-edit-button",
1072
- key: "theme-edit-button",
1073
- onClick: function onClick() {
1074
- return onEditTheme(theme);
1075
- },
1076
- label: t("neetoMolecules.common.actions.edit"),
1077
- isVisible: neetoCist.isPresent(onEditTheme)
1078
- }, {
1079
- isVisible: neetoCist.isPresent(onCloneTheme),
1080
- "data-cy": "theme-clone-button",
1081
- key: "theme-clone-button",
1082
- onClick: function onClick() {
1083
- return onCloneTheme(theme);
1084
- },
1085
- label: t("neetoMolecules.themeSidebar.themeOptions.clone")
1086
- }, {
1087
- isVisible: neetoCist.isPresent(onDeleteTheme),
1088
- type: "divider",
1089
- key: "divider"
1090
- }, {
1091
- isVisible: neetoCist.isPresent(onDeleteTheme),
1092
- "data-cy": "theme-delete-button",
1093
- key: "theme-delete-button",
1094
- onClick: function onClick() {
1095
- return onDeleteTheme(theme);
1096
- },
1097
- label: t("neetoMolecules.themeSidebar.themeOptions.delete")
1098
- }];
1099
- return /*#__PURE__*/React__default["default"].createElement("div", {
1100
- className: "group space-y-2",
1101
- "data-cy": active ? "active-theme-card" : "theme-card",
1102
- id: theme.id
1103
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1104
- className: classnames__default["default"]("neeto-molecules-theme-thumbnail neeto-ui-rounded-lg border transition-all duration-300 ease-in-out", {
1105
- "neeto-ui-border-gray-400": !active,
1106
- "neeto-ui-border-gray-800 neeto-molecules-theme-thumbnail--active": active,
1107
- "neeto-molecules-theme-thumbnail--preview-active": isPreviewing,
1108
- "neeto-molecules-theme-thumbnail--highlight-active": isHighLightedTheme
1109
- }),
1110
- style: {
1111
- backgroundColor: ramda.path(["colorScheme", "backgroundColor"], styles),
1112
- backgroundImage: ramda.path(["backgroundImage", "url"], styles) ? "url(".concat(ramda.path(["backgroundImage", "url"], styles), ")") : "initial",
1113
- backgroundSize: "cover"
1114
- },
1115
- onClick: function onClick() {
1116
- return onSetPreviewTheme(theme);
1117
- }
1118
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1119
- className: "group-hover:opacity-85 neeto-ui-rounded-lg cursor-pointer p-6 transition-all duration-300 ease-in-out"
1120
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1121
- className: "mb-3"
1122
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1123
- style: "h3",
1124
- weight: "semibold"
1125
- }, /*#__PURE__*/React__default["default"].createElement("span", {
1126
- style: {
1127
- color: ramda.path(["colorScheme", "questionColor"], styles)
1128
- }
1129
- }, t("neetoMolecules.themeSidebar.themeCard.question"))), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1130
- className: "neeto-ui-text-gray-600",
1131
- style: "body2"
1132
- }, /*#__PURE__*/React__default["default"].createElement("span", {
1133
- style: {
1134
- color: ramda.path(["colorScheme", "answerColor"], styles)
1135
- }
1136
- }, t("neetoMolecules.themeSidebar.themeCard.answer")))), /*#__PURE__*/React__default["default"].createElement("div", {
1137
- className: "neeto-ui-rounded-lg h-5 w-12",
1138
- style: {
1139
- backgroundColor: ramda.path(["colorScheme", "buttonBackgroundColor"], styles)
1140
- }
1141
- }))), /*#__PURE__*/React__default["default"].createElement("div", {
1142
- className: "flex items-start justify-between gap-1"
1143
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1144
- className: "min-w-0 flex-grow break-words pt-1 line-clamp-2",
1145
- "data-cy": "theme-name",
1146
- lineHeight: "snug",
1147
- style: "body2"
1148
- }, name), /*#__PURE__*/React__default["default"].createElement("div", {
1149
- className: "flex items-center gap-2"
1150
- }, active ? /*#__PURE__*/React__default["default"].createElement(neetoui.Tag, {
1151
- className: "flex-shrink-0",
1152
- "data-cy": "active-theme-label",
1153
- label: t("neetoMolecules.themeSidebar.active"),
1154
- style: "success"
1155
- }) : /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1156
- className: "flex-shrink-0",
1157
- "data-cy": "apply-theme-button",
1158
- disabled: isApplyingTheme,
1159
- label: t("neetoMolecules.common.actions.apply"),
1160
- loading: isApplyingTheme,
1161
- size: "small",
1162
- style: "link",
1163
- onClick: handleApplyTheme
1164
- }), /*#__PURE__*/React__default["default"].createElement(MoreDropdown, {
1165
- buttonProps: {
1166
- buttonSize: "small"
1167
- },
1168
- menuItems: moreMenuItems,
1169
- dropdownButtonProps: {
1170
- "data-cy": "theme-card-options",
1171
- strategy: "fixed"
1172
- }
1173
- }))));
1174
- };
1175
-
1176
- var Themes = function Themes(_ref) {
1177
- var currentTheme = _ref.currentTheme,
1178
- onCloneTheme = _ref.onCloneTheme,
1179
- _ref$customThemes = _ref.customThemes,
1180
- customThemes = _ref$customThemes === void 0 ? [] : _ref$customThemes,
1181
- _ref$defaultThemes = _ref.defaultThemes,
1182
- defaultThemes = _ref$defaultThemes === void 0 ? [] : _ref$defaultThemes,
1183
- onDeleteTheme = _ref.onDeleteTheme,
1184
- onEditTheme = _ref.onEditTheme,
1185
- onApplyTheme = _ref.onApplyTheme,
1186
- previewingTheme = _ref.previewingTheme,
1187
- setPreviewingTheme = _ref.setPreviewingTheme,
1188
- themeToHighlight = _ref.themeToHighlight,
1189
- didScrollActiveThemeIntoView = _ref.didScrollActiveThemeIntoView,
1190
- applyingThemeId = _ref.applyingThemeId;
1191
- var _useTranslation = reactI18next.useTranslation(),
1192
- t = _useTranslation.t;
1193
- var _useState = React.useState(""),
1194
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1195
- searchQuery = _useState2[0],
1196
- setSearchQuery = _useState2[1];
1197
- var filteredDefaultThemes = defaultThemes.filter(function (theme) {
1198
- return theme.name.toLowerCase().includes(searchQuery.toLowerCase());
1199
- });
1200
- var filteredThemes = customThemes.filter(function (theme) {
1201
- return theme.name.toLowerCase().includes(searchQuery.toLowerCase());
1202
- });
1203
- var isSearchFieldVisible = (customThemes === null || customThemes === void 0 ? void 0 : customThemes.length) + (defaultThemes === null || defaultThemes === void 0 ? void 0 : defaultThemes.length) > 10;
1204
- React.useEffect(function () {
1205
- if (didScrollActiveThemeIntoView.current || !(currentTheme !== null && currentTheme !== void 0 && currentTheme.id)) return;
1206
- didScrollActiveThemeIntoView.current = true;
1207
- setTimeout(function () {
1208
- scrollElementIntoView(currentTheme.id);
1209
- }, 200);
1210
- }, [didScrollActiveThemeIntoView, currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id]);
1211
- return /*#__PURE__*/React__default["default"].createElement("div", {
1212
- className: "neeto-molecules-theme-design-sidebar__scroll"
1213
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1214
- className: "mb-6 space-y-3"
1215
- }, isSearchFieldVisible && /*#__PURE__*/React__default["default"].createElement(neetoui.Input, {
1216
- autoFocus: true,
1217
- autoComplete: "off",
1218
- className: "mt-1 mb-4 px-6",
1219
- placeholder: t("neetoMolecules.themeSidebar.searchThemes"),
1220
- prefix: /*#__PURE__*/React__default["default"].createElement(neetoIcons.Search, null),
1221
- type: "search",
1222
- value: searchQuery,
1223
- onChange: function onChange(e) {
1224
- return setSearchQuery(e.target.value);
1225
- }
1226
- }), ramda.isEmpty(filteredThemes) && ramda.isEmpty(filteredDefaultThemes) && /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1227
- className: "text-center",
1228
- style: "body2"
1229
- }, t("neetoMolecules.common.notFound.title", {
1230
- entity: t("neetoMolecules.themeSidebar.theme", {
1231
- count: 2
1232
- })
1233
- })), neetoCist.isNotEmpty(filteredDefaultThemes) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1234
- className: "my-4 px-4 uppercase md:px-5 lg:px-6",
1235
- "data-cy": "system-themes-header",
1236
- style: "h6",
1237
- weight: "semibold"
1238
- }, t("neetoMolecules.themeSidebar.systemThemes")), /*#__PURE__*/React__default["default"].createElement("div", {
1239
- className: "flex flex-col gap-4 px-4 md:px-5 lg:px-6"
1240
- }, filteredDefaultThemes.map(function (theme) {
1241
- return /*#__PURE__*/React__default["default"].createElement(ThemeCard, {
1242
- onApplyTheme: onApplyTheme,
1243
- onCloneTheme: onCloneTheme,
1244
- theme: theme,
1245
- active: (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id) === theme.id,
1246
- isApplyingTheme: applyingThemeId === theme.id,
1247
- isPreviewing: (previewingTheme === null || previewingTheme === void 0 ? void 0 : previewingTheme.id) === theme.id,
1248
- key: theme.id,
1249
- onSetPreviewTheme: setPreviewingTheme
1250
- });
1251
- })))), neetoCist.isNotEmpty(filteredThemes) && /*#__PURE__*/React__default["default"].createElement("div", {
1252
- className: "mb-6 space-y-3"
1253
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1254
- className: "my-4 px-4 uppercase md:px-5 lg:px-6",
1255
- "data-cy": "custom-themes-header",
1256
- style: "h6",
1257
- weight: "semibold"
1258
- }, t("neetoMolecules.themeSidebar.customThemes")), /*#__PURE__*/React__default["default"].createElement("div", {
1259
- className: "flex flex-col gap-4 px-4 md:px-5 lg:px-6"
1260
- }, filteredThemes.map(function (theme) {
1261
- var isActive = (currentTheme === null || currentTheme === void 0 ? void 0 : currentTheme.id) === theme.id;
1262
- return /*#__PURE__*/React__default["default"].createElement(ThemeCard, {
1263
- onApplyTheme: onApplyTheme,
1264
- onCloneTheme: onCloneTheme,
1265
- onEditTheme: onEditTheme,
1266
- theme: theme,
1267
- active: isActive,
1268
- isHighLightedTheme: theme.id === themeToHighlight,
1269
- isPreviewing: (previewingTheme === null || previewingTheme === void 0 ? void 0 : previewingTheme.id) === theme.id,
1270
- key: theme.id,
1271
- onDeleteTheme: !isActive ? onDeleteTheme : null,
1272
- onSetPreviewTheme: setPreviewingTheme
1273
- });
1274
- }))));
1275
- };
1276
-
1277
- var css = ".neeto-molecules-theme-design-sidebar{background-color:rgb(var(--neeto-ui-white));box-shadow:var(--neeto-ui-shadow-s);height:100%;width:320px}@media screen and (max-width:1024px){.neeto-molecules-theme-design-sidebar{width:280px}}@media screen and (max-width:768px){.neeto-molecules-theme-design-sidebar{width:240px}}.neeto-molecules-theme-design-sidebar .neeto-molecules-theme-design-sidebar__header{padding-bottom:8px;padding-top:16px}.neeto-molecules-theme-design-sidebar .neeto-molecules-theme-design-sidebar__scroll{height:94%;overflow-y:auto}.neeto-molecules-theme-design-sidebar .neeto-molecules-theme-design-sidebar__scroll .neeto-ui-colorpicker__target .neeto-ui-colorpicker-target__code{display:none}.neeto-molecules-theme-design-preview__wrapper{background-color:rgb(var(--neeto-ui-gray-100));flex-grow:1;height:100%;position:relative}.neeto-molecules-theme-thumbnail--active{border-color:rgb(var(--neeto-ui-primary-500))!important;box-shadow:0 0 0 1px rgb(var(--neeto-ui-primary-500))!important}.neeto-molecules-theme-thumbnail--preview-active{border-color:rgb(var(--neeto-ui-gray-700));box-shadow:0 0 0 1px rgb(var(--neeto-ui-gray-700))}.neeto-molecules-theme-thumbnail--highlight-active{border-color:rgb(var(--neeto-ui-success-500));box-shadow:0 0 0 1px rgb(var(--neeto-ui-success-500));transition:border-color box-shadow .1s .1s}";
1278
- injectCss.n(css,{});
1279
-
1280
- var TitleBar = function TitleBar(_ref) {
1281
- var currentScreen = _ref.currentScreen,
1282
- handleBackPress = _ref.handleBackPress,
1283
- handleCreateNewTheme = _ref.handleCreateNewTheme,
1284
- isNewTheme = _ref.isNewTheme;
1285
- var _useTranslation = reactI18next.useTranslation(),
1286
- t = _useTranslation.t;
1287
- if (currentScreen === DESIGN_SCREENS.CUSTOMIZE) {
1288
- return /*#__PURE__*/React__default["default"].createElement("div", {
1289
- className: classnames__default["default"]("neeto-molecules-theme-design-sidebar__header px-4")
1290
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1291
- className: "flex items-center justify-start space-x-2"
1292
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1293
- "data-cy": "customise-themes-back-button",
1294
- icon: neetoIcons.LeftArrow,
1295
- iconPosition: "left",
1296
- style: "text",
1297
- tooltipProps: {
1298
- content: t("neetoMolecules.themeSidebar.backToThemes"),
1299
- position: "top"
1300
- },
1301
- onClick: handleBackPress
1302
- }), /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1303
- "data-cy": "themes-header",
1304
- lineHeight: "normal",
1305
- style: "h3",
1306
- weight: "semibold"
1307
- }, isNewTheme ? t("neetoMolecules.themeSidebar.createTheme.title") : t("neetoMolecules.themeSidebar.editTheme.title"))));
1308
- }
1309
- return /*#__PURE__*/React__default["default"].createElement("div", {
1310
- className: classnames__default["default"]("neeto-molecules-theme-design-sidebar__header px-4 md:px-5 lg:px-6")
1311
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1312
- className: "flex items-center justify-between space-x-2"
1313
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Typography, {
1314
- "data-cy": "themes-header",
1315
- lineHeight: "normal",
1316
- style: "h3",
1317
- weight: "semibold"
1318
- }, neetoCist.capitalize(t("neetoMolecules.themeSidebar.theme", {
1319
- count: 2
1320
- }))), /*#__PURE__*/React__default["default"].createElement("div", {
1321
- className: "self-end"
1322
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Button, {
1323
- "data-cy": "customise-themes-add-theme-button",
1324
- icon: neetoIcons.Plus,
1325
- iconPosition: "left",
1326
- style: "text",
1327
- tooltipProps: {
1328
- content: t("neetoMolecules.themeSidebar.addNewTheme"),
1329
- position: "top"
1330
- },
1331
- onClick: handleCreateNewTheme
1332
- }))));
1333
- };
1334
-
1335
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1336
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty__default["default"](e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1337
- var ThemeSidebar = function ThemeSidebar(_ref) {
1338
- var defaultThemes = _ref.defaultThemes,
1339
- customThemes = _ref.customThemes,
1340
- createTheme = _ref.createTheme,
1341
- deleteTheme = _ref.deleteTheme,
1342
- editTheme = _ref.editTheme,
1343
- applyTheme = _ref.applyTheme,
1344
- currentTheme = _ref.currentTheme,
1345
- isLoadingThemes = _ref.isLoadingThemes,
1346
- applyingThemeId = _ref.applyingThemeId;
1347
- var _useTranslation = reactI18next.useTranslation(),
1348
- t = _useTranslation.t;
1349
- var _useState = React.useState(DESIGN_SCREENS.THEMES),
1350
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1351
- currentScreen = _useState2[0],
1352
- setCurrentScreen = _useState2[1];
1353
- var _useState3 = React.useState(null),
1354
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
1355
- previewingTheme = _useState4[0],
1356
- setPreviewingTheme = _useState4[1];
1357
- var _useState5 = React.useState(null),
1358
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
1359
- themeToHighlight = _useState6[0],
1360
- setThemeToHighlight = _useState6[1];
1361
- var didScrollActiveThemeIntoView = React.useRef(null);
1362
- React.useEffect(function () {
1363
- isLoadingThemes && setCurrentScreen(DESIGN_SCREENS.LOADING);
1364
- }, [isLoadingThemes]);
1365
- React.useEffect(function () {
1366
- !previewingTheme && setCurrentScreen(DESIGN_SCREENS.THEMES);
1367
- }, [previewingTheme]);
1368
- var handleEditTheme = function handleEditTheme(theme) {
1369
- setPreviewingTheme(theme);
1370
- setCurrentScreen(DESIGN_SCREENS.CUSTOMIZE);
1371
- };
1372
- var handleBackPress = function handleBackPress() {
1373
- setCurrentScreen(DESIGN_SCREENS.THEMES);
1374
- setPreviewingTheme(null);
1375
- };
1376
- var handleCreateNewTheme = function handleCreateNewTheme() {
1377
- setPreviewingTheme(_objectSpread(_objectSpread({}, defaultThemes[0]), {}, {
1378
- id: null,
1379
- name: t("neetoMolecules.themeSidebar.defaultThemeName")
1380
- }));
1381
- setCurrentScreen(DESIGN_SCREENS.CUSTOMIZE);
1382
- };
1383
- var highlightTheme = function highlightTheme(themeToHighlight) {
1384
- setTimeout(function () {
1385
- scrollElementIntoView(themeToHighlight.id);
1386
- }, 1500);
1387
- setTimeout(function () {
1388
- setThemeToHighlight(null);
1389
- }, 4000);
1390
- setThemeToHighlight(themeToHighlight.id);
1391
- };
1392
- var createThemeCallback = function createThemeCallback(createdTheme) {
1393
- setCurrentScreen(DESIGN_SCREENS.THEMES);
1394
- setPreviewingTheme(createdTheme.id);
1395
- highlightTheme(createdTheme);
1396
- };
1397
- var handleCloneTheme = function handleCloneTheme(data) {
1398
- var themeToClone = _objectSpread(_objectSpread({}, data), {}, {
1399
- name: "".concat(data.name, " - clone")
1400
- });
1401
- createTheme(themeToClone, createThemeCallback);
1402
- };
1403
- var handleFormSubmit = function handleFormSubmit(values) {
1404
- var formattedValues = transformTheme(values);
1405
- if (!(previewingTheme !== null && previewingTheme !== void 0 && previewingTheme.id)) {
1406
- createTheme(formattedValues, createThemeCallback);
1407
- } else {
1408
- editTheme(_objectSpread(_objectSpread({}, formattedValues), {}, {
1409
- id: previewingTheme.id
1410
- }));
1411
- }
1412
- };
1413
- return /*#__PURE__*/React__default["default"].createElement("div", {
1414
- className: "neeto-molecules-theme-design-sidebar neeto-ui-border-gray-200 border-r"
1415
- }, /*#__PURE__*/React__default["default"].createElement(TitleBar, {
1416
- currentScreen: currentScreen,
1417
- handleBackPress: handleBackPress,
1418
- handleCreateNewTheme: handleCreateNewTheme,
1419
- isNewTheme: !(previewingTheme !== null && previewingTheme !== void 0 && previewingTheme.id)
1420
- }), currentScreen === DESIGN_SCREENS.LOADING && /*#__PURE__*/React__default["default"].createElement("div", {
1421
- className: "flex h-full w-full items-center justify-center"
1422
- }, /*#__PURE__*/React__default["default"].createElement(neetoui.Spinner, null)), currentScreen === DESIGN_SCREENS.THEMES && /*#__PURE__*/React__default["default"].createElement(Themes, {
1423
- applyingThemeId: applyingThemeId,
1424
- currentTheme: currentTheme,
1425
- customThemes: customThemes,
1426
- defaultThemes: defaultThemes,
1427
- didScrollActiveThemeIntoView: didScrollActiveThemeIntoView,
1428
- highlightTheme: highlightTheme,
1429
- previewingTheme: previewingTheme,
1430
- setPreviewingTheme: setPreviewingTheme,
1431
- themeToHighlight: themeToHighlight,
1432
- onApplyTheme: applyTheme,
1433
- onCloneTheme: handleCloneTheme,
1434
- onDeleteTheme: deleteTheme,
1435
- onEditTheme: handleEditTheme
1436
- }), currentScreen === DESIGN_SCREENS.CUSTOMIZE && /*#__PURE__*/React__default["default"].createElement(Customize, {
1437
- handleFormSubmit: handleFormSubmit,
1438
- theme: previewingTheme
1439
- }));
1440
- };
1441
-
1442
- module.exports = ThemeSidebar;
1443
- //# sourceMappingURL=ThemeSidebar.js.map