@bigbinary/neeto-molecules 5.5.0-beta1 → 5.5.0

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 (191) hide show
  1. package/dist/BrowserSupport.js +116 -51
  2. package/dist/BrowserSupport.js.map +1 -1
  3. package/dist/{Columns-C20zru7a.js → Columns-CpCh1cnJ.js} +6 -4
  4. package/dist/Columns-CpCh1cnJ.js.map +1 -0
  5. package/dist/{ConfigureView-D-2SQf3j.js → ConfigureView-re6uU4Lp.js} +6 -4
  6. package/dist/ConfigureView-re6uU4Lp.js.map +1 -0
  7. package/dist/EmailForm.js +3 -1
  8. package/dist/EmailForm.js.map +1 -1
  9. package/dist/FinderModal.js +14 -1
  10. package/dist/FinderModal.js.map +1 -1
  11. package/dist/FloatingActionMenu.js +175 -55
  12. package/dist/FloatingActionMenu.js.map +1 -1
  13. package/dist/IpRestriction.js +19 -9
  14. package/dist/IpRestriction.js.map +1 -1
  15. package/dist/ProductEmbed.js +35 -23
  16. package/dist/ProductEmbed.js.map +1 -1
  17. package/dist/ShareViaLink.js +4 -4
  18. package/dist/ShareViaLink.js.map +1 -1
  19. package/dist/Sidebar.js +43 -5
  20. package/dist/Sidebar.js.map +1 -1
  21. package/dist/StickyRibbonsContainer.js +27 -18
  22. package/dist/StickyRibbonsContainer.js.map +1 -1
  23. package/dist/cjs/BrowserSupport.js +119 -51
  24. package/dist/cjs/BrowserSupport.js.map +1 -1
  25. package/dist/cjs/{Columns-rqa7goJu.js → Columns-Gcp48xQM.js} +5 -3
  26. package/dist/cjs/Columns-Gcp48xQM.js.map +1 -0
  27. package/dist/cjs/{ConfigureView-CNWEfiae.js → ConfigureView-CAdrpELW.js} +6 -4
  28. package/dist/cjs/ConfigureView-CAdrpELW.js.map +1 -0
  29. package/dist/cjs/EmailForm.js +3 -1
  30. package/dist/cjs/EmailForm.js.map +1 -1
  31. package/dist/cjs/FinderModal.js +14 -1
  32. package/dist/cjs/FinderModal.js.map +1 -1
  33. package/dist/cjs/FloatingActionMenu.js +189 -69
  34. package/dist/cjs/FloatingActionMenu.js.map +1 -1
  35. package/dist/cjs/IpRestriction.js +19 -9
  36. package/dist/cjs/IpRestriction.js.map +1 -1
  37. package/dist/cjs/ProductEmbed.js +34 -22
  38. package/dist/cjs/ProductEmbed.js.map +1 -1
  39. package/dist/cjs/ShareViaLink.js +4 -4
  40. package/dist/cjs/ShareViaLink.js.map +1 -1
  41. package/dist/cjs/Sidebar.js +43 -5
  42. package/dist/cjs/Sidebar.js.map +1 -1
  43. package/dist/cjs/StickyRibbonsContainer.js +29 -20
  44. package/dist/cjs/StickyRibbonsContainer.js.map +1 -1
  45. package/dist/cjs/mail-Di35Ay-Z.js +20 -0
  46. package/dist/cjs/mail-Di35Ay-Z.js.map +1 -0
  47. package/dist/cjs/performanceDiagnostics-CS7NTxaH.js +93 -0
  48. package/dist/cjs/performanceDiagnostics-CS7NTxaH.js.map +1 -0
  49. package/dist/cjs/{phone-number-DVlbgxBG.js → phone-number-BydWe8Mf.js} +22 -3
  50. package/dist/cjs/phone-number-BydWe8Mf.js.map +1 -0
  51. package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js +121 -0
  52. package/dist/cjs/useWhatsNewChangesCount-BVkLLk7f.js.map +1 -0
  53. package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js +106 -0
  54. package/dist/cjs/useWhatsNewChangesCount-CyOUS5U3.js.map +1 -0
  55. package/dist/cjs/v2/BrowserSupport.js +119 -51
  56. package/dist/cjs/v2/BrowserSupport.js.map +1 -1
  57. package/dist/cjs/v2/Builder.js +17 -13
  58. package/dist/cjs/v2/Builder.js.map +1 -1
  59. package/dist/cjs/v2/CalendarView.js +2 -2
  60. package/dist/cjs/v2/Columns.js +1 -1
  61. package/dist/cjs/v2/ConfigurePageSidebar.js +1 -1
  62. package/dist/cjs/v2/DndTable.js +1 -0
  63. package/dist/cjs/v2/DndTable.js.map +1 -1
  64. package/dist/cjs/v2/DynamicVariables.js +17 -8
  65. package/dist/cjs/v2/DynamicVariables.js.map +1 -1
  66. package/dist/cjs/v2/EmailForm.js +97 -10
  67. package/dist/cjs/v2/EmailForm.js.map +1 -1
  68. package/dist/cjs/v2/EmailPreview.js +1 -1
  69. package/dist/cjs/v2/EmailPreview.js.map +1 -1
  70. package/dist/cjs/v2/Engagements.js +10 -7
  71. package/dist/cjs/v2/Engagements.js.map +1 -1
  72. package/dist/cjs/v2/FinderModal.js +104 -72
  73. package/dist/cjs/v2/FinderModal.js.map +1 -1
  74. package/dist/cjs/v2/FloatingActionMenu.js +267 -110
  75. package/dist/cjs/v2/FloatingActionMenu.js.map +1 -1
  76. package/dist/cjs/v2/IpRestriction.js +17 -7
  77. package/dist/cjs/v2/IpRestriction.js.map +1 -1
  78. package/dist/cjs/v2/MadeWith.js +5 -3
  79. package/dist/cjs/v2/MadeWith.js.map +1 -1
  80. package/dist/cjs/v2/MoreDropdown.js +5 -2
  81. package/dist/cjs/v2/MoreDropdown.js.map +1 -1
  82. package/dist/cjs/v2/OptionFields.js +1 -0
  83. package/dist/cjs/v2/OptionFields.js.map +1 -1
  84. package/dist/cjs/v2/PhoneNumber.js +1 -1
  85. package/dist/cjs/v2/ProductEmbed.js +25 -13
  86. package/dist/cjs/v2/ProductEmbed.js.map +1 -1
  87. package/dist/cjs/v2/SessionEnvironment.js +3 -16
  88. package/dist/cjs/v2/SessionEnvironment.js.map +1 -1
  89. package/dist/cjs/v2/Sidebar.js +95 -32
  90. package/dist/cjs/v2/Sidebar.js.map +1 -1
  91. package/dist/cjs/v2/StickyRibbonsContainer.js +29 -19
  92. package/dist/cjs/v2/StickyRibbonsContainer.js.map +1 -1
  93. package/dist/cjs/v2/SubHeader.js +1 -1
  94. package/dist/cjs/v2/Taxonomy.js +1 -1
  95. package/dist/mail-CkquKByM.js +18 -0
  96. package/dist/mail-CkquKByM.js.map +1 -0
  97. package/dist/performanceDiagnostics-DJcT0dfG.js +88 -0
  98. package/dist/performanceDiagnostics-DJcT0dfG.js.map +1 -0
  99. package/dist/{phone-number-ClrmOx58.js → phone-number-n0BLV3g6.js} +24 -5
  100. package/dist/phone-number-n0BLV3g6.js.map +1 -0
  101. package/dist/useWhatsNewChangesCount-C71JkNHv.js +96 -0
  102. package/dist/useWhatsNewChangesCount-C71JkNHv.js.map +1 -0
  103. package/dist/useWhatsNewChangesCount-CQxhUCpt.js +106 -0
  104. package/dist/useWhatsNewChangesCount-CQxhUCpt.js.map +1 -0
  105. package/dist/v2/BrowserSupport.js +116 -51
  106. package/dist/v2/BrowserSupport.js.map +1 -1
  107. package/dist/v2/Builder.js +17 -13
  108. package/dist/v2/Builder.js.map +1 -1
  109. package/dist/v2/CalendarView.js +2 -2
  110. package/dist/v2/Columns.js +1 -1
  111. package/dist/v2/ConfigurePageSidebar.js +1 -1
  112. package/dist/v2/DndTable.js +1 -0
  113. package/dist/v2/DndTable.js.map +1 -1
  114. package/dist/v2/DynamicVariables.js +18 -9
  115. package/dist/v2/DynamicVariables.js.map +1 -1
  116. package/dist/v2/EmailForm.js +100 -13
  117. package/dist/v2/EmailForm.js.map +1 -1
  118. package/dist/v2/EmailPreview.js +1 -1
  119. package/dist/v2/EmailPreview.js.map +1 -1
  120. package/dist/v2/Engagements.js +10 -7
  121. package/dist/v2/Engagements.js.map +1 -1
  122. package/dist/v2/FinderModal.js +105 -73
  123. package/dist/v2/FinderModal.js.map +1 -1
  124. package/dist/v2/FloatingActionMenu.js +238 -81
  125. package/dist/v2/FloatingActionMenu.js.map +1 -1
  126. package/dist/v2/IpRestriction.js +17 -7
  127. package/dist/v2/IpRestriction.js.map +1 -1
  128. package/dist/v2/MadeWith.js +5 -3
  129. package/dist/v2/MadeWith.js.map +1 -1
  130. package/dist/v2/MoreDropdown.js +5 -2
  131. package/dist/v2/MoreDropdown.js.map +1 -1
  132. package/dist/v2/OptionFields.js +1 -0
  133. package/dist/v2/OptionFields.js.map +1 -1
  134. package/dist/v2/PhoneNumber.js +2 -2
  135. package/dist/v2/ProductEmbed.js +26 -14
  136. package/dist/v2/ProductEmbed.js.map +1 -1
  137. package/dist/v2/SessionEnvironment.js +2 -15
  138. package/dist/v2/SessionEnvironment.js.map +1 -1
  139. package/dist/v2/Sidebar.js +95 -32
  140. package/dist/v2/Sidebar.js.map +1 -1
  141. package/dist/v2/StickyRibbonsContainer.js +27 -17
  142. package/dist/v2/StickyRibbonsContainer.js.map +1 -1
  143. package/dist/v2/SubHeader.js +1 -1
  144. package/dist/v2/Taxonomy.js +1 -1
  145. package/package.json +8 -8
  146. package/src/translations/ar.json +8 -3
  147. package/src/translations/bg.json +8 -3
  148. package/src/translations/ca.json +8 -3
  149. package/src/translations/cs.json +8 -3
  150. package/src/translations/da.json +8 -3
  151. package/src/translations/de.json +8 -3
  152. package/src/translations/en.json +18 -2
  153. package/src/translations/es-MX.json +8 -3
  154. package/src/translations/es.json +8 -3
  155. package/src/translations/et.json +8 -3
  156. package/src/translations/fi.json +8 -3
  157. package/src/translations/fil.json +8 -3
  158. package/src/translations/fr.json +8 -3
  159. package/src/translations/he.json +8 -3
  160. package/src/translations/hi.json +8 -3
  161. package/src/translations/hr.json +8 -3
  162. package/src/translations/hu.json +8 -3
  163. package/src/translations/id.json +8 -3
  164. package/src/translations/it.json +8 -3
  165. package/src/translations/ja.json +8 -3
  166. package/src/translations/ko.json +8 -3
  167. package/src/translations/lv.json +984 -0
  168. package/src/translations/nl.json +8 -3
  169. package/src/translations/pl.json +8 -3
  170. package/src/translations/pt-BR.json +8 -3
  171. package/src/translations/pt.json +8 -3
  172. package/src/translations/ro.json +8 -3
  173. package/src/translations/ru.json +8 -3
  174. package/src/translations/sk.json +8 -3
  175. package/src/translations/sl.json +8 -3
  176. package/src/translations/sv.json +8 -3
  177. package/src/translations/th.json +8 -3
  178. package/src/translations/tr.json +8 -3
  179. package/src/translations/uk.json +8 -3
  180. package/src/translations/vi.json +8 -3
  181. package/src/translations/zh-CN.json +8 -3
  182. package/src/translations/zh-TW.json +8 -3
  183. package/types/BrowserSupport.d.ts +128 -39
  184. package/types/v2/EmailForm.d.ts +1 -0
  185. package/types/v2/EmailFormProvider.d.ts +3 -1
  186. package/dist/Columns-C20zru7a.js.map +0 -1
  187. package/dist/ConfigureView-D-2SQf3j.js.map +0 -1
  188. package/dist/cjs/Columns-rqa7goJu.js.map +0 -1
  189. package/dist/cjs/ConfigureView-CNWEfiae.js.map +0 -1
  190. package/dist/cjs/phone-number-DVlbgxBG.js.map +0 -1
  191. package/dist/phone-number-ClrmOx58.js.map +0 -1
@@ -4,12 +4,12 @@ import { memo, useState, useRef, useEffect, useMemo, forwardRef } from 'react';
4
4
  import { globalProps as globalProps$1 } from '@bigbinary/neeto-commons-frontend/v2/initializers';
5
5
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
6
6
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
- import { Typography, Spinner, Input, Dialog, DropdownMenu, Badge, Avatar } from '@bigbinary/neeto-atoms';
7
+ import { Typography, Spinner, Input, Dialog, DropdownMenu, Badge, Avatar, Textarea, Button, Toastr } from '@bigbinary/neeto-atoms';
8
8
  import { Collapsible, CollapsibleTrigger, DropdownMenuItem, CollapsibleContent, DropdownMenuSub, DropdownMenuSubTrigger, DropdownMenuSubContent, DropdownMenuSeparator, DropdownMenu as DropdownMenu$1, DropdownMenuTrigger, DropdownMenuContent } from '@bigbinary/neeto-atoms/primitives';
9
9
  import { isNotEmpty, isNotPresent, isPresent, truncate, humanize } from '@bigbinary/neeto-cist';
10
10
  import useHotkeys from '@bigbinary/neeto-hotkeys';
11
11
  import Profile from '@bigbinary/neeto-team-members-frontend/v2/Profile';
12
- import { isEmpty, toLower, mergeDeepLeft, not } from 'ramda';
12
+ import { isEmpty, mergeDeepLeft, not } from 'ramda';
13
13
  import KeyboardShortcuts from './KeyboardShortcuts.js';
14
14
  import SubscriptionUpgradeRequestModal from './SubscriptionUpgradeRequestModal.js';
15
15
  import { withT } from '@bigbinary/neeto-commons-frontend/v2/react-utils';
@@ -21,17 +21,20 @@ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
21
21
  import { useQuery } from '@tanstack/react-query';
22
22
  import axios from 'axios';
23
23
  import { S as Search } from '../search-H0uYy0W-.js';
24
+ import { g as getNeetoUrl, i as isPerformanceDiagnosticsEnabled, a as getProductBillingUrl, r as reportSlowness } from '../performanceDiagnostics-DJcT0dfG.js';
24
25
  import useBreakpoints from '@bigbinary/neeto-commons-frontend/v2/react-utils/useBreakpoints';
25
- import { t } from 'i18next';
26
+ import { M as MENU_ITEM_CLASSES, D as DELETE_WORKSPACE_URL, A as APP_THEME_LOCALSTORAGE_KEY, T as THEMES, L as LEGACY_THEMES, a as THEME_ICON_BASE, b as THEME_BUTTON_BASE, c as MY_ORGANIZATION_URL, B as BILLING_URL, N as NEETO_AUTH_BILLING_INFO_URL, S as SLOWNESS_DESCRIPTION_MAX_LENGTH, u as useWhatsNewChangesCount, d as DEFAULT_MENU_LINK_PROPS } from '../useWhatsNewChangesCount-CQxhUCpt.js';
26
27
  import { c as createLucideIcon } from '../createLucideIcon--oLqczpc.js';
27
28
  import { C as CircleQuestionMark } from '../circle-question-mark-B807GLZf.js';
28
29
  import { C as ChevronRight } from '../chevron-right-CEsVcNLw.js';
29
30
  import { U as User } from '../user-Dhw9zdMR.js';
30
31
  import useLocalStorage from '@bigbinary/neeto-commons-frontend/v2/react-utils/useLocalStorage';
32
+ import { t } from 'i18next';
31
33
  import { getFromLocalStorage } from '@bigbinary/neeto-commons-frontend/v2/utils';
32
34
  import { resetAuthTokens } from '@bigbinary/neeto-commons-frontend/v2/utils/axios';
33
35
  import { removeFromLocalStorage } from '@bigbinary/neeto-commons-frontend/v2/utils/general';
34
36
  import CopyToClipboardButton from './CopyToClipboardButton.js';
37
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
35
38
  import '../useKeyboardShortcutsPaneState-BlyFMEtW.js';
36
39
  import 'zustand/shallow';
37
40
  import '@bigbinary/neeto-commons-frontend/v2/react-utils/withImmutableActions';
@@ -49,7 +52,7 @@ import '../copy-Dj71cP65.js';
49
52
  */
50
53
 
51
54
 
52
- const __iconNode$9 = [
55
+ const __iconNode$c = [
53
56
  [
54
57
  "path",
55
58
  {
@@ -58,7 +61,7 @@ const __iconNode$9 = [
58
61
  }
59
62
  ]
60
63
  ];
61
- const Activity = createLucideIcon("activity", __iconNode$9);
64
+ const Activity = createLucideIcon("activity", __iconNode$c);
62
65
 
63
66
  /**
64
67
  * @license lucide-react v1.24.0 - ISC
@@ -68,7 +71,7 @@ const Activity = createLucideIcon("activity", __iconNode$9);
68
71
  */
69
72
 
70
73
 
71
- const __iconNode$8 = [
74
+ const __iconNode$b = [
72
75
  ["path", { d: "M12 7v14", key: "1akyts" }],
73
76
  [
74
77
  "path",
@@ -78,7 +81,7 @@ const __iconNode$8 = [
78
81
  }
79
82
  ]
80
83
  ];
81
- const BookOpen = createLucideIcon("book-open", __iconNode$8);
84
+ const BookOpen = createLucideIcon("book-open", __iconNode$b);
82
85
 
83
86
  /**
84
87
  * @license lucide-react v1.24.0 - ISC
@@ -88,11 +91,11 @@ const BookOpen = createLucideIcon("book-open", __iconNode$8);
88
91
  */
89
92
 
90
93
 
91
- const __iconNode$7 = [
94
+ const __iconNode$a = [
92
95
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
93
96
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
94
97
  ];
95
- const CircleCheck = createLucideIcon("circle-check", __iconNode$7);
98
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$a);
96
99
 
97
100
  /**
98
101
  * @license lucide-react v1.24.0 - ISC
@@ -102,12 +105,12 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$7);
102
105
  */
103
106
 
104
107
 
105
- const __iconNode$6 = [
108
+ const __iconNode$9 = [
106
109
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
107
110
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
108
111
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
109
112
  ];
110
- const CircleX = createLucideIcon("circle-x", __iconNode$6);
113
+ const CircleX = createLucideIcon("circle-x", __iconNode$9);
111
114
 
112
115
  /**
113
116
  * @license lucide-react v1.24.0 - ISC
@@ -117,7 +120,7 @@ const CircleX = createLucideIcon("circle-x", __iconNode$6);
117
120
  */
118
121
 
119
122
 
120
- const __iconNode$5 = [
123
+ const __iconNode$8 = [
121
124
  [
122
125
  "path",
123
126
  {
@@ -127,7 +130,7 @@ const __iconNode$5 = [
127
130
  ],
128
131
  ["path", { d: "M5 21h14", key: "11awu3" }]
129
132
  ];
130
- const Crown = createLucideIcon("crown", __iconNode$5);
133
+ const Crown = createLucideIcon("crown", __iconNode$8);
131
134
 
132
135
  /**
133
136
  * @license lucide-react v1.24.0 - ISC
@@ -137,12 +140,68 @@ const Crown = createLucideIcon("crown", __iconNode$5);
137
140
  */
138
141
 
139
142
 
140
- const __iconNode$4 = [
143
+ const __iconNode$7 = [
144
+ ["path", { d: "m12 14 4-4", key: "9kzdfg" }],
145
+ ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0", key: "19p75a" }]
146
+ ];
147
+ const Gauge = createLucideIcon("gauge", __iconNode$7);
148
+
149
+ /**
150
+ * @license lucide-react v1.24.0 - ISC
151
+ *
152
+ * This source code is licensed under the ISC license.
153
+ * See the LICENSE file in the root directory of this source tree.
154
+ */
155
+
156
+
157
+ const __iconNode$6 = [
158
+ [
159
+ "path",
160
+ {
161
+ d: "M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",
162
+ key: "1gvzjb"
163
+ }
164
+ ],
165
+ ["path", { d: "M9 18h6", key: "x1upvd" }],
166
+ ["path", { d: "M10 22h4", key: "ceow96" }]
167
+ ];
168
+ const Lightbulb = createLucideIcon("lightbulb", __iconNode$6);
169
+
170
+ /**
171
+ * @license lucide-react v1.24.0 - ISC
172
+ *
173
+ * This source code is licensed under the ISC license.
174
+ * See the LICENSE file in the root directory of this source tree.
175
+ */
176
+
177
+
178
+ const __iconNode$5 = [
141
179
  ["path", { d: "m16 17 5-5-5-5", key: "1bji2h" }],
142
180
  ["path", { d: "M21 12H9", key: "dn1m92" }],
143
181
  ["path", { d: "M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4", key: "1uf3rs" }]
144
182
  ];
145
- const LogOut = createLucideIcon("log-out", __iconNode$4);
183
+ const LogOut = createLucideIcon("log-out", __iconNode$5);
184
+
185
+ /**
186
+ * @license lucide-react v1.24.0 - ISC
187
+ *
188
+ * This source code is licensed under the ISC license.
189
+ * See the LICENSE file in the root directory of this source tree.
190
+ */
191
+
192
+
193
+ const __iconNode$4 = [
194
+ [
195
+ "path",
196
+ {
197
+ d: "M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z",
198
+ key: "169xi5"
199
+ }
200
+ ],
201
+ ["path", { d: "M15 5.764v15", key: "1pn4in" }],
202
+ ["path", { d: "M9 3.236v15", key: "1uimfh" }]
203
+ ];
204
+ const Map = createLucideIcon("map", __iconNode$4);
146
205
 
147
206
  /**
148
207
  * @license lucide-react v1.24.0 - ISC
@@ -509,39 +568,6 @@ var Modal = withT(function (_ref) {
509
568
  });
510
569
  });
511
570
 
512
- var MY_ORGANIZATION_URL = "/auth/organization/edit";
513
- var BILLING_URL = "/auth/admin_billing";
514
- var DELETE_WORKSPACE_URL = "/auth/organization/delete";
515
- var ENGAGE_WIDGET_TRIGGER_ID = "neetoengage-trigger";
516
- var DEFAULT_MENU_LINK_PROPS = {
517
- engageProps: {
518
- id: ENGAGE_WIDGET_TRIGGER_ID,
519
- label: t("neetoMolecules.sidebar.helpLinks.whatsNew"),
520
- "data-testid": "help-link-engage-button"
521
- },
522
- keyboardShortcutProps: {
523
- label: t("neetoMolecules.sidebar.helpLinks.keyboardShortcuts"),
524
- "data-testid": "help-link-keyboard-shortcut-button"
525
- }
526
- };
527
-
528
- // Theme switcher
529
- var APP_THEME_LOCALSTORAGE_KEY = "appTheme";
530
- var THEMES = {
531
- LIGHT: "light",
532
- DARK: "dark"
533
- };
534
-
535
- // Legacy neetoUI theme classes — kept until full migration is complete.
536
- var LEGACY_THEMES = {
537
- LIGHT: "neeto-ui-theme--light",
538
- DARK: "neeto-ui-theme--dark"
539
- };
540
- var NEETO_AUTH_BILLING_INFO_URL = "/neeto_sso/api/v1/subscription/billing";
541
- var MENU_ITEM_CLASSES = "gap-2.5 px-2.5 py-2 font-medium [&>[data-slot=menu-item-prefix]>svg]:!size-[18px] [&>[data-slot=menu-item-suffix]>svg]:!size-[18px]";
542
- var THEME_BUTTON_BASE = "relative z-10 flex items-center justify-center gap-1 rounded-md px-2.5 py-1.5 text-xs font-medium transition-colors focus-visible:outline-none";
543
- var THEME_ICON_BASE = "transition-transform duration-300 ease-out";
544
-
545
571
  var _excluded$2 = ["className"];
546
572
  function ownKeys$4(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; }
547
573
  function _objectSpread$4(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$4(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$4(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -556,12 +582,12 @@ var MenuItem = /*#__PURE__*/forwardRef(function (_ref, forwardedRef) {
556
582
  MenuItem.displayName = "FloatingActionMenu.MenuItem";
557
583
 
558
584
  var HelpItems = withT(function (_ref) {
559
- var _globalProps;
560
- var t = _ref.t;
585
+ var t = _ref.t,
586
+ onReportSlowness = _ref.onReportSlowness;
561
587
  return /*#__PURE__*/jsxs(Fragment, {
562
588
  children: [/*#__PURE__*/jsx(MenuItem, {
563
589
  "data-testid": "help-link-help-articles-button",
564
- href: "https://help.".concat(toLower(((_globalProps = globalProps) === null || _globalProps === void 0 ? void 0 : _globalProps.appName) || ""), ".com/"),
590
+ href: "".concat(getNeetoUrl("help"), "/"),
565
591
  prefix: /*#__PURE__*/jsx(BookOpen, {
566
592
  size: 18
567
593
  }),
@@ -588,6 +614,24 @@ var HelpItems = withT(function (_ref) {
588
614
  rel: "noreferrer",
589
615
  target: "_blank",
590
616
  children: t("neetoMolecules.sidebar.helpLinks.askTheCommunity")
617
+ }), /*#__PURE__*/jsx(MenuItem, {
618
+ "data-testid": "help-link-request-feature-button",
619
+ href: "".concat(getNeetoUrl("engage"), "/feature-requests"),
620
+ prefix: /*#__PURE__*/jsx(Lightbulb, {
621
+ size: 18
622
+ }),
623
+ rel: "noreferrer",
624
+ target: "_blank",
625
+ children: t("neetoMolecules.sidebar.helpLinks.requestFeature")
626
+ }), /*#__PURE__*/jsx(MenuItem, {
627
+ "data-testid": "help-link-roadmap-button",
628
+ href: "".concat(getNeetoUrl("engage"), "/product-roadmap"),
629
+ prefix: /*#__PURE__*/jsx(Map, {
630
+ size: 18
631
+ }),
632
+ rel: "noreferrer",
633
+ target: "_blank",
634
+ children: t("neetoMolecules.sidebar.helpLinks.roadmap")
591
635
  }), /*#__PURE__*/jsx(MenuItem, {
592
636
  "data-testid": "help-link-status-button",
593
637
  href: "https://neetostatus.com/",
@@ -597,11 +641,19 @@ var HelpItems = withT(function (_ref) {
597
641
  rel: "noreferrer",
598
642
  target: "_blank",
599
643
  children: t("neetoMolecules.sidebar.helpLinks.systemStatus")
644
+ }), isPerformanceDiagnosticsEnabled() && /*#__PURE__*/jsx(MenuItem, {
645
+ "data-testid": "help-link-report-slowness-button",
646
+ prefix: /*#__PURE__*/jsx(Gauge, {
647
+ size: 18
648
+ }),
649
+ onClick: onReportSlowness,
650
+ children: t("neetoMolecules.sidebar.helpLinks.reportSlowness")
600
651
  })]
601
652
  });
602
653
  });
603
654
 
604
- var MobileHelpMenu = function MobileHelpMenu() {
655
+ var MobileHelpMenu = function MobileHelpMenu(_ref) {
656
+ var onReportSlowness = _ref.onReportSlowness;
605
657
  var _useTranslation = useTranslation(),
606
658
  t = _useTranslation.t;
607
659
  var _useState = useState(false),
@@ -631,18 +683,23 @@ var MobileHelpMenu = function MobileHelpMenu() {
631
683
  })
632
684
  }), /*#__PURE__*/jsx(CollapsibleContent, {
633
685
  className: "flex flex-col gap-0.5 ps-6 pt-1",
634
- children: /*#__PURE__*/jsx(HelpItems, {})
686
+ children: /*#__PURE__*/jsx(HelpItems, {
687
+ onReportSlowness: onReportSlowness
688
+ })
635
689
  })]
636
690
  });
637
691
  };
638
692
 
639
- var HelpMenu = function HelpMenu() {
693
+ var HelpMenu = function HelpMenu(_ref) {
694
+ var onReportSlowness = _ref.onReportSlowness;
640
695
  var _useBreakpoints = useBreakpoints(),
641
696
  isSize = _useBreakpoints.isSize;
642
697
  var isMobile = isSize("mobile");
643
698
  var _useTranslation = useTranslation(),
644
699
  t = _useTranslation.t;
645
- if (isMobile) return /*#__PURE__*/jsx(MobileHelpMenu, {});
700
+ if (isMobile) return /*#__PURE__*/jsx(MobileHelpMenu, {
701
+ onReportSlowness: onReportSlowness
702
+ });
646
703
  return /*#__PURE__*/jsxs(DropdownMenuSub, {
647
704
  children: [/*#__PURE__*/jsxs(DropdownMenuSubTrigger, {
648
705
  className: MENU_ITEM_CLASSES,
@@ -657,7 +714,9 @@ var HelpMenu = function HelpMenu() {
657
714
  className: "z-[99999]",
658
715
  collisionPadding: 16,
659
716
  sideOffset: 8,
660
- children: /*#__PURE__*/jsx(HelpItems, {})
717
+ children: /*#__PURE__*/jsx(HelpItems, {
718
+ onReportSlowness: onReportSlowness
719
+ })
661
720
  })]
662
721
  });
663
722
  };
@@ -1269,33 +1328,35 @@ var ProfileMenu = function ProfileMenu(_ref) {
1269
1328
  isOrganizationSwitcherEnabled = _ref.isOrganizationSwitcherEnabled,
1270
1329
  isConsumer = _ref.isConsumer,
1271
1330
  enableSubscriptionUpgradeRequest = _ref.enableSubscriptionUpgradeRequest,
1272
- openUpgradeModal = _ref.openUpgradeModal;
1331
+ openUpgradeModal = _ref.openUpgradeModal,
1332
+ onReportSlowness = _ref.onReportSlowness;
1273
1333
  var isAuthenticated = profileInfo.isAuthenticated;
1274
1334
  var _useTranslation = useTranslation(),
1275
1335
  t = _useTranslation.t;
1276
- var normalizedPlan = (((_globalProps$user = globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.subscriptionPlan) || "").toLowerCase();
1277
- var isFreePlan = normalizedPlan === "free";
1336
+
1337
+ // A paid plan can be named more than one thing, so the badge follows the
1338
+ // isPro flag the backend sends alongside the plan; the plan name is display
1339
+ // text only.
1340
+ var isPro = Boolean((_globalProps$user = globalProps.user) === null || _globalProps$user === void 0 ? void 0 : _globalProps$user.isPro);
1278
1341
  var isOwner = (_globalProps$user2 = globalProps.user) === null || _globalProps$user2 === void 0 ? void 0 : _globalProps$user2.isOwner;
1279
- var showUpgradeModal = isFreePlan && enableSubscriptionUpgradeRequest && !isOwner;
1342
+ var showUpgradeModal = !isPro && enableSubscriptionUpgradeRequest && !isOwner;
1280
1343
  var getSubscriptionPlanAction = function getSubscriptionPlanAction() {
1281
1344
  if (showUpgradeModal) return {
1282
1345
  onClick: openUpgradeModal
1283
1346
  };
1284
- if (isFreePlan && isOwner && enableSubscriptionUpgradeRequest) {
1285
- var _globalProps$organiza;
1347
+ if (!isPro && isOwner && enableSubscriptionUpgradeRequest) {
1286
1348
  return {
1287
- href: "".concat((_globalProps$organiza = globalProps.organization) === null || _globalProps$organiza === void 0 ? void 0 : _globalProps$organiza.authAppUrl, "/admin/billing/overview")
1349
+ href: getProductBillingUrl()
1288
1350
  };
1289
1351
  }
1290
1352
  return {
1291
1353
  href: NEETO_AUTH_BILLING_INFO_URL
1292
1354
  };
1293
1355
  };
1294
- var isProPlan = normalizedPlan === "pro";
1295
1356
  var subscriptionPlanLink = _objectSpread$2({
1296
1357
  label: /*#__PURE__*/jsxs("span", {
1297
1358
  className: "flex items-center gap-2",
1298
- children: [globalProps.appName, isProPlan ? /*#__PURE__*/jsx(Badge, {
1359
+ children: [globalProps.appName, isPro ? /*#__PURE__*/jsx(Badge, {
1299
1360
  label: humanize((_globalProps$user3 = globalProps.user) === null || _globalProps$user3 === void 0 ? void 0 : _globalProps$user3.subscriptionPlan),
1300
1361
  style: {
1301
1362
  "--accent-foreground": "var(--color-amber-950)"
@@ -1339,7 +1400,9 @@ var ProfileMenu = function ProfileMenu(_ref) {
1339
1400
  links: [subscriptionPlanLink]
1340
1401
  }), showProductSwitcher && /*#__PURE__*/jsx(ProductSwitcher, {
1341
1402
  toggleModal: toggleModal
1342
- }), /*#__PURE__*/jsx(HelpMenu, {}), /*#__PURE__*/jsx(DropdownMenuSeparator, {
1403
+ }), /*#__PURE__*/jsx(HelpMenu, {
1404
+ onReportSlowness: onReportSlowness
1405
+ }), /*#__PURE__*/jsx(DropdownMenuSeparator, {
1343
1406
  className: "my-2"
1344
1407
  })]
1345
1408
  }), isAuthenticated && !isConsumer && /*#__PURE__*/jsx(ProfileExpandMenu, {
@@ -1354,6 +1417,103 @@ var ProfileMenu = function ProfileMenu(_ref) {
1354
1417
  });
1355
1418
  };
1356
1419
 
1420
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
1421
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
1422
+ var ReportSlownessModal = function ReportSlownessModal(_ref) {
1423
+ var reportedAt = _ref.reportedAt,
1424
+ onClose = _ref.onClose;
1425
+ var _useTranslation = useTranslation(),
1426
+ t = _useTranslation.t;
1427
+ var _useState = useState(""),
1428
+ _useState2 = _slicedToArray(_useState, 2),
1429
+ description = _useState2[0],
1430
+ setDescription = _useState2[1];
1431
+ var _useState3 = useState(false),
1432
+ _useState4 = _slicedToArray(_useState3, 2),
1433
+ isSubmitting = _useState4[0],
1434
+ setIsSubmitting = _useState4[1];
1435
+ var handleClose = function handleClose() {
1436
+ setDescription("");
1437
+ onClose();
1438
+ };
1439
+ var handleSubmit = /*#__PURE__*/function () {
1440
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
1441
+ var report;
1442
+ return _regenerator().w(function (_context) {
1443
+ while (1) switch (_context.n) {
1444
+ case 0:
1445
+ setIsSubmitting(true);
1446
+ _context.n = 1;
1447
+ return reportSlowness({
1448
+ description: description.trim(),
1449
+ reportedAt: reportedAt
1450
+ });
1451
+ case 1:
1452
+ report = _context.v;
1453
+ setIsSubmitting(false);
1454
+ if (report) {
1455
+ _context.n = 2;
1456
+ break;
1457
+ }
1458
+ Toastr.error(t("neetoMolecules.reportSlowness.error"));
1459
+ return _context.a(2);
1460
+ case 2:
1461
+ Toastr.success(t("neetoMolecules.reportSlowness.success"), report.replay_url ? {
1462
+ buttonLabel: t("neetoMolecules.reportSlowness.viewReplay"),
1463
+ onClick: function onClick() {
1464
+ return window.open(report.replay_url, "_blank", "noopener,noreferrer");
1465
+ }
1466
+ } : {});
1467
+ handleClose();
1468
+ case 3:
1469
+ return _context.a(2);
1470
+ }
1471
+ }, _callee);
1472
+ }));
1473
+ return function handleSubmit() {
1474
+ return _ref2.apply(this, arguments);
1475
+ };
1476
+ }();
1477
+ return /*#__PURE__*/jsxs(Dialog, {
1478
+ "aria-describedby": undefined,
1479
+ closeOnEsc: !isSubmitting,
1480
+ closeOnOutsideClick: !isSubmitting,
1481
+ isOpen: Boolean(reportedAt),
1482
+ onClose: handleClose,
1483
+ children: [/*#__PURE__*/jsx(Dialog.Header, {
1484
+ children: /*#__PURE__*/jsx(Dialog.Title, {
1485
+ children: t("neetoMolecules.reportSlowness.title")
1486
+ })
1487
+ }), /*#__PURE__*/jsx(Dialog.Body, {
1488
+ children: /*#__PURE__*/jsx(Textarea, {
1489
+ dataTestId: "report-slowness-description",
1490
+ label: t("neetoMolecules.reportSlowness.descriptionLabel"),
1491
+ maxLength: SLOWNESS_DESCRIPTION_MAX_LENGTH,
1492
+ value: description,
1493
+ placeholder: t("neetoMolecules.reportSlowness.descriptionPlaceholder"),
1494
+ onChange: function onChange(e) {
1495
+ return setDescription(e.target.value);
1496
+ }
1497
+ })
1498
+ }), /*#__PURE__*/jsxs(Dialog.Footer, {
1499
+ className: "flex gap-x-2",
1500
+ children: [/*#__PURE__*/jsx(Button, {
1501
+ "data-testid": "report-slowness-cancel-button",
1502
+ disabled: isSubmitting,
1503
+ label: t("neetoMolecules.reportSlowness.cancel"),
1504
+ variant: "secondary",
1505
+ onClick: handleClose
1506
+ }), /*#__PURE__*/jsx(Button, {
1507
+ "data-testid": "report-slowness-submit-button",
1508
+ disabled: isSubmitting,
1509
+ label: t("neetoMolecules.reportSlowness.submit"),
1510
+ loading: isSubmitting,
1511
+ onClick: handleSubmit
1512
+ })]
1513
+ })]
1514
+ });
1515
+ };
1516
+
1357
1517
  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; }
1358
1518
  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), true).forEach(function (r) { _defineProperty(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; }
1359
1519
  var ProfileButton = function ProfileButton(_ref) {
@@ -1382,8 +1542,9 @@ var ProfileButton = function ProfileButton(_ref) {
1382
1542
  setIsMenuOpen = _useState6[1];
1383
1543
  var _useState7 = useState(null),
1384
1544
  _useState8 = _slicedToArray(_useState7, 2),
1385
- changesCount = _useState8[0],
1386
- setChangesCount = _useState8[1];
1545
+ slownessReportedAt = _useState8[0],
1546
+ setSlownessReportedAt = _useState8[1];
1547
+ var changesCount = useWhatsNewChangesCount();
1387
1548
  var _KeyboardShortcuts$us = KeyboardShortcuts.usePaneState(),
1388
1549
  _KeyboardShortcuts$us2 = _slicedToArray(_KeyboardShortcuts$us, 2),
1389
1550
  setIsOpen = _KeyboardShortcuts$us2[1];
@@ -1393,18 +1554,6 @@ var ProfileButton = function ProfileButton(_ref) {
1393
1554
  mode: "global"
1394
1555
  });
1395
1556
  var profileInfo = getProfileInfo(profileInfoOverrides, isConsumer);
1396
- useEffect(function () {
1397
- var Nv = {
1398
- onReceiveData: function onReceiveData(data) {
1399
- if (!data.unreadCount) return;
1400
- setChangesCount(data.unreadCount);
1401
- },
1402
- onShow: function onShow() {
1403
- setChangesCount(null);
1404
- }
1405
- };
1406
- window.Nv = window.Nv ? Object.assign(window.Nv, Nv) : Nv;
1407
- }, []);
1408
1557
  var newBottomLinks = [].concat(_toConsumableArray(getDefaultBottomLinks(profileInfo.isAuthenticated, isConsumer)), _toConsumableArray(bottomLinks));
1409
1558
  var defaultLinks = Object.keys(DEFAULT_MENU_LINK_PROPS).map(function (key) {
1410
1559
  return _objectSpread$1(_objectSpread$1(_objectSpread$1({}, DEFAULT_MENU_LINK_PROPS[key]), key === "keyboardShortcutProps" && {
@@ -1470,13 +1619,21 @@ var ProfileButton = function ProfileButton(_ref) {
1470
1619
  openUpgradeModal: function openUpgradeModal() {
1471
1620
  return setIsUpgradeModalOpen(true);
1472
1621
  },
1473
- toggleModal: setIsModalOpen
1622
+ toggleModal: setIsModalOpen,
1623
+ onReportSlowness: function onReportSlowness() {
1624
+ return setSlownessReportedAt(Date.now());
1625
+ }
1474
1626
  })
1475
1627
  })]
1476
1628
  }), isPresent(changesCount) && /*#__PURE__*/jsx("span", {
1477
1629
  className: "bg-foreground text-background pointer-events-none absolute end-0 top-0 z-[3] flex h-[0.9375rem] min-w-[0.9375rem] items-center justify-center rounded-full border border-white px-1 text-[10px] select-none",
1478
1630
  "data-testid": "help-icon-changes-count",
1479
1631
  children: changesCount
1632
+ }), /*#__PURE__*/jsx(ReportSlownessModal, {
1633
+ reportedAt: slownessReportedAt,
1634
+ onClose: function onClose() {
1635
+ return setSlownessReportedAt(null);
1636
+ }
1480
1637
  }), /*#__PURE__*/jsx(Modal, {
1481
1638
  isOpen: isModalOpen,
1482
1639
  onClose: function onClose() {