@flamingo-stack/openframe-frontend-core 0.0.717 → 0.0.718
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.
- package/dist/{chunk-3MJPCKB6.js → chunk-45F7PXUI.js} +2 -2
- package/dist/{chunk-TYVS64YN.js → chunk-67QBMN4R.js} +1 -1
- package/dist/{chunk-3RKBJT6K.cjs → chunk-6A43ZDWV.cjs} +2 -2
- package/dist/chunk-A6P6DHEZ.cjs +130 -0
- package/dist/{chunk-M2A5SC6H.cjs → chunk-BOTM373R.cjs} +2 -2
- package/dist/{chunk-X3RVDBXU.cjs → chunk-BWIN42ZA.cjs} +15 -15
- package/dist/{chunk-6MZI5SQ4.js → chunk-DCD5WZUF.js} +3 -3
- package/dist/{chunk-2EK7PA73.js → chunk-DEZDMTBM.js} +4 -4
- package/dist/{chunk-NB6EWUDE.cjs → chunk-DXCBOZVT.cjs} +13 -13
- package/dist/{chunk-J3Q53TWW.cjs → chunk-EZC2F5OT.cjs} +22 -22
- package/dist/{chunk-2AI2E3O2.cjs → chunk-GN4A7PMB.cjs} +27 -27
- package/dist/{chunk-6T3BTD6Q.js → chunk-IWCPXJEE.js} +201 -327
- package/dist/{chunk-2X2P3VHF.js → chunk-JIWMBIVZ.js} +4 -4
- package/dist/{chunk-NPAQSMRY.js → chunk-LOYPRJWA.js} +1053 -357
- package/dist/{chunk-U3TP4UGA.cjs → chunk-MIQLUUVF.cjs} +6 -6
- package/dist/{chunk-FGKSAQR3.js → chunk-MM7MCIXL.js} +4 -4
- package/dist/{chunk-B5XU6KOA.js → chunk-N2PF5CFX.js} +4836 -5424
- package/dist/{chunk-LANNTTKP.cjs → chunk-NDZ5ZXOQ.cjs} +6 -6
- package/dist/{chunk-WH5GJSID.js → chunk-PQ6HBLZ7.js} +3 -3
- package/dist/{chunk-FROXS52D.cjs → chunk-QBCDSTLE.cjs} +2 -2
- package/dist/{chunk-NQWJAOHO.js → chunk-QXZCLQNV.js} +1 -1
- package/dist/{chunk-3QAMMWV2.cjs → chunk-S2FUFMLW.cjs} +20 -20
- package/dist/{chunk-PD4W2VMH.js → chunk-SGFTTJKO.js} +1 -1
- package/dist/{chunk-E6FLX4TX.js → chunk-TBCZCRQ5.js} +5 -5
- package/dist/{chunk-OHLBO4LM.cjs → chunk-WALCXC7J.cjs} +3 -3
- package/dist/{chunk-VZI5BA4L.js → chunk-XGHGGBM3.js} +1 -1
- package/dist/{chunk-VYKFM2NB.cjs → chunk-YC5COB5V.cjs} +32 -32
- package/dist/{chunk-47FISYO5.js → chunk-YEMCCYIF.js} +2 -2
- package/dist/chunk-YYYVS7CX.js +130 -0
- package/dist/{chunk-5MF3NMYC.cjs → chunk-Z3CVSPO3.cjs} +581 -1169
- package/dist/{chunk-PPXR22YC.cjs → chunk-Z5UWW3Z2.cjs} +707 -11
- package/dist/{chunk-JO5TLJPM.cjs → chunk-ZXCZYMN4.cjs} +37 -163
- package/dist/{cloud-tenants-KDWTVHSI.cjs → cloud-tenants-PFDF7O5U.cjs} +5 -4
- package/dist/{cloud-tenants-LNC26WY2.js → cloud-tenants-TAKOWXLD.js} +4 -3
- package/dist/components/case-studies/index.cjs +13 -12
- package/dist/components/case-studies/index.js +5 -4
- package/dist/components/contact/index.cjs +6 -5
- package/dist/components/contact/index.js +5 -4
- package/dist/components/docs/index.cjs +8 -7
- package/dist/components/docs/index.js +7 -6
- package/dist/components/embeds/index.cjs +6 -5
- package/dist/components/embeds/index.js +5 -4
- package/dist/components/faq/index.cjs +6 -5
- package/dist/components/faq/index.js +5 -4
- package/dist/components/features/index.cjs +9 -4
- package/dist/components/features/index.js +8 -3
- package/dist/components/features/remote-session/index.d.ts +2 -0
- package/dist/components/features/remote-session/index.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-session-keep-modals.d.ts +3 -3
- package/dist/components/features/remote-session/remote-session-keep-modals.d.ts.map +1 -1
- package/dist/components/features/remote-session/remote-session-ticket-modals.d.ts +29 -0
- package/dist/components/features/remote-session/remote-session-ticket-modals.d.ts.map +1 -0
- package/dist/components/help-center-pages/index.cjs +48 -47
- package/dist/components/help-center-pages/index.js +14 -13
- package/dist/components/index.cjs +30 -25
- package/dist/components/index.js +19 -14
- package/dist/components/meeting-scheduler/index.cjs +25 -24
- package/dist/components/meeting-scheduler/index.js +4 -3
- package/dist/components/navigation/index.cjs +6 -5
- package/dist/components/navigation/index.js +5 -4
- package/dist/components/onboarding-guides/index.cjs +8 -7
- package/dist/components/onboarding-guides/index.js +7 -6
- package/dist/components/product-demo/index.cjs +7 -7
- package/dist/components/product-demo/index.js +7 -7
- package/dist/components/tickets/index.cjs +8 -7
- package/dist/components/tickets/index.js +7 -6
- package/dist/components/ui/autocomplete.d.ts +6 -0
- package/dist/components/ui/autocomplete.d.ts.map +1 -1
- package/dist/components/ui/index.cjs +7 -6
- package/dist/components/ui/index.js +6 -5
- package/dist/{devices-ATHYJUVQ.cjs → devices-KRCGZMGA.cjs} +6 -5
- package/dist/{devices-NYCRQ3PG.js → devices-LHEX7O5T.js} +4 -3
- package/dist/hooks/index.cjs +6 -4
- package/dist/hooks/index.js +5 -3
- package/dist/index.cjs +14 -8
- package/dist/index.js +15 -9
- package/dist/{knowledge-EHNRYT7U.cjs → knowledge-KLVPVEYZ.cjs} +5 -4
- package/dist/{knowledge-DEKYJXBS.js → knowledge-RZSFNR33.js} +4 -3
- package/dist/{logs-Q7YFIVYI.js → logs-E5DOV5JO.js} +4 -3
- package/dist/{logs-3V765P7O.cjs → logs-OX3XTVL2.cjs} +13 -12
- package/dist/{policies-TXU5AIXS.cjs → policies-FOSCIZGK.cjs} +9 -8
- package/dist/{policies-BTIENK5A.js → policies-MC2S4S5G.js} +4 -3
- package/dist/{remote-session-R6VAFESR.cjs → remote-session-DRFE5XZE.cjs} +4 -3
- package/dist/{remote-session-GSGZOFDX.js → remote-session-JQ2BPIE3.js} +2 -1
- package/dist/{software-update-SW2HOBHW.js → software-update-D4OEIH65.js} +6 -4
- package/dist/{software-update-MINTICZY.cjs → software-update-HOBSTWVO.cjs} +11 -9
- package/package.json +1 -1
- package/src/components/features/remote-session/index.ts +2 -0
- package/src/components/features/remote-session/remote-session-keep-modals.tsx +4 -4
- package/src/components/features/remote-session/remote-session-ticket-modals.tsx +140 -0
- package/src/components/ui/autocomplete.tsx +18 -4
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
ShellTypeBadge,
|
|
9
9
|
SoftwareInfo,
|
|
10
10
|
SoftwareSourceBadge
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-XGHGGBM3.js";
|
|
12
12
|
import {
|
|
13
13
|
AppHeader,
|
|
14
14
|
AppLayout,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
isMegaMenu,
|
|
34
34
|
navLinkLabel,
|
|
35
35
|
siteNavHasMobileMenus
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-YEMCCYIF.js";
|
|
37
37
|
import {
|
|
38
38
|
MobileNavigationDropdown,
|
|
39
39
|
MultiLevelNavigation,
|
|
@@ -95,7 +95,6 @@ import {
|
|
|
95
95
|
AuthBenefitsPanel,
|
|
96
96
|
AuthProvidersList,
|
|
97
97
|
AuthShell,
|
|
98
|
-
Autocomplete,
|
|
99
98
|
BackToLoginLink,
|
|
100
99
|
Badge,
|
|
101
100
|
BenefitCard,
|
|
@@ -220,7 +219,6 @@ import {
|
|
|
220
219
|
GooglePlayBadge,
|
|
221
220
|
HIDDEN_DEVICE_STATUSES,
|
|
222
221
|
HeaderButton,
|
|
223
|
-
HiddenTagsPopup,
|
|
224
222
|
HighlightCard,
|
|
225
223
|
HighlightCardGrid,
|
|
226
224
|
HighlightConfigSection,
|
|
@@ -565,7 +563,7 @@ import {
|
|
|
565
563
|
useTrackerClock,
|
|
566
564
|
useWalkthroughVideo,
|
|
567
565
|
usersCountLabel
|
|
568
|
-
} from "./chunk-
|
|
566
|
+
} from "./chunk-N2PF5CFX.js";
|
|
569
567
|
import {
|
|
570
568
|
Board,
|
|
571
569
|
BoardColumn,
|
|
@@ -585,9 +583,12 @@ import {
|
|
|
585
583
|
import "./chunk-LQYXMEYF.js";
|
|
586
584
|
import "./chunk-4JPLYOS6.js";
|
|
587
585
|
import {
|
|
586
|
+
AssignTicketModal,
|
|
587
|
+
Autocomplete,
|
|
588
588
|
BACK_BUTTON_SKELETON_CLASS,
|
|
589
589
|
BackButton,
|
|
590
590
|
EntityImage,
|
|
591
|
+
HiddenTagsPopup,
|
|
591
592
|
KeepRecordingModal,
|
|
592
593
|
PageActions,
|
|
593
594
|
PageLayout,
|
|
@@ -632,11 +633,12 @@ import {
|
|
|
632
633
|
TITLE_BLOCK_MIN_HEIGHT,
|
|
633
634
|
TitleBlock,
|
|
634
635
|
TruncateText,
|
|
636
|
+
UnassignTicketModal,
|
|
635
637
|
formatRemoteSessionElapsed,
|
|
636
638
|
formatRemoteSessionOffset,
|
|
637
639
|
usePageActionsBottomPadding,
|
|
638
640
|
useRemoteSessionTimer
|
|
639
|
-
} from "./chunk-
|
|
641
|
+
} from "./chunk-LOYPRJWA.js";
|
|
640
642
|
import {
|
|
641
643
|
CommandApprovalToast,
|
|
642
644
|
GraphQLIntrospector,
|
|
@@ -670,7 +672,6 @@ import {
|
|
|
670
672
|
useActiveSection,
|
|
671
673
|
useApiParams,
|
|
672
674
|
useAuthenticatedImage,
|
|
673
|
-
useAutoLimitTags,
|
|
674
675
|
useBatchImages,
|
|
675
676
|
useClaudeMirrorSrc,
|
|
676
677
|
useContactSubmission,
|
|
@@ -680,7 +681,6 @@ import {
|
|
|
680
681
|
useFocusTrap,
|
|
681
682
|
useFormRescue,
|
|
682
683
|
useHumanitySignals,
|
|
683
|
-
useKeyboardCollisionPadding,
|
|
684
684
|
useLocationHash,
|
|
685
685
|
useMemoizedCallback,
|
|
686
686
|
useNatsClient,
|
|
@@ -704,7 +704,7 @@ import {
|
|
|
704
704
|
validateSchema,
|
|
705
705
|
validateVariables,
|
|
706
706
|
variablesToUrlParams
|
|
707
|
-
} from "./chunk-
|
|
707
|
+
} from "./chunk-IWCPXJEE.js";
|
|
708
708
|
import {
|
|
709
709
|
DRAG_AND_DROP_MEDIA_QUERY,
|
|
710
710
|
useDragAndDropEnabled,
|
|
@@ -712,6 +712,10 @@ import {
|
|
|
712
712
|
useLocalStorage
|
|
713
713
|
} from "./chunk-3K5ZLZE7.js";
|
|
714
714
|
import "./chunk-HFL2F4RM.js";
|
|
715
|
+
import {
|
|
716
|
+
useAutoLimitTags,
|
|
717
|
+
useKeyboardCollisionPadding
|
|
718
|
+
} from "./chunk-YYYVS7CX.js";
|
|
715
719
|
import "./chunk-WSDT7LYL.js";
|
|
716
720
|
import "./chunk-G3GRYDMS.js";
|
|
717
721
|
import {
|
|
@@ -2160,6 +2164,7 @@ export {
|
|
|
2160
2164
|
AskDisplay,
|
|
2161
2165
|
AskPrompts,
|
|
2162
2166
|
AspectRatio,
|
|
2167
|
+
AssignTicketModal,
|
|
2163
2168
|
AssigneeDropdown,
|
|
2164
2169
|
AuditLoggingIcon,
|
|
2165
2170
|
AuthBenefitsPanel,
|
|
@@ -3162,6 +3167,7 @@ export {
|
|
|
3162
3167
|
TruncateText,
|
|
3163
3168
|
TrustpilotIcon,
|
|
3164
3169
|
UnarchiveChatModal,
|
|
3170
|
+
UnassignTicketModal,
|
|
3165
3171
|
UnreadCountBadge,
|
|
3166
3172
|
UnreadDot,
|
|
3167
3173
|
UnsavedChangesChip,
|
|
@@ -8,14 +8,15 @@ var _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
|
|
|
8
8
|
var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
11
|
+
var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
|
|
12
12
|
require('./chunk-4HJRHEXD.cjs');
|
|
13
13
|
require('./chunk-HQQE74RO.cjs');
|
|
14
14
|
require('./chunk-DEY6XXGO.cjs');
|
|
15
|
-
require('./chunk-
|
|
16
|
-
require('./chunk-
|
|
15
|
+
require('./chunk-Z5UWW3Z2.cjs');
|
|
16
|
+
require('./chunk-ZXCZYMN4.cjs');
|
|
17
17
|
require('./chunk-B4NCVYEQ.cjs');
|
|
18
18
|
require('./chunk-MZ4KBSH7.cjs');
|
|
19
|
+
require('./chunk-A6P6DHEZ.cjs');
|
|
19
20
|
require('./chunk-WBNAEYTQ.cjs');
|
|
20
21
|
require('./chunk-AUMKE74M.cjs');
|
|
21
22
|
require('./chunk-LX22Y43B.cjs');
|
|
@@ -96,7 +97,7 @@ function KnowledgeScreen(_props) {
|
|
|
96
97
|
const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
|
|
97
98
|
const fixture = _react.useMemo.call(void 0, () => buildKnowledgeFixture(cast), [cast]);
|
|
98
99
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
99
|
-
|
|
100
|
+
_chunkZ3CVSPO3cjs.KnowledgeBaseArticleView,
|
|
100
101
|
{
|
|
101
102
|
...fixture.article,
|
|
102
103
|
content: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUWQWMGJ7cjs.SimpleMarkdownRenderer, { content: fixture.content, textSize: "compact" })
|
|
@@ -8,14 +8,15 @@ import {
|
|
|
8
8
|
} from "./chunk-CYUUHFXL.js";
|
|
9
9
|
import {
|
|
10
10
|
KnowledgeBaseArticleView
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-N2PF5CFX.js";
|
|
12
12
|
import "./chunk-ILNN6QRW.js";
|
|
13
13
|
import "./chunk-LQYXMEYF.js";
|
|
14
14
|
import "./chunk-4JPLYOS6.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-LOYPRJWA.js";
|
|
16
|
+
import "./chunk-IWCPXJEE.js";
|
|
17
17
|
import "./chunk-3K5ZLZE7.js";
|
|
18
18
|
import "./chunk-HFL2F4RM.js";
|
|
19
|
+
import "./chunk-YYYVS7CX.js";
|
|
19
20
|
import "./chunk-WSDT7LYL.js";
|
|
20
21
|
import "./chunk-G3GRYDMS.js";
|
|
21
22
|
import "./chunk-PLWMIU72.js";
|
|
@@ -16,14 +16,15 @@ import {
|
|
|
16
16
|
ToolBadge,
|
|
17
17
|
logSeverityVariant,
|
|
18
18
|
logSourceLabels
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-N2PF5CFX.js";
|
|
20
20
|
import "./chunk-ILNN6QRW.js";
|
|
21
21
|
import "./chunk-LQYXMEYF.js";
|
|
22
22
|
import "./chunk-4JPLYOS6.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-LOYPRJWA.js";
|
|
24
|
+
import "./chunk-IWCPXJEE.js";
|
|
25
25
|
import "./chunk-3K5ZLZE7.js";
|
|
26
26
|
import "./chunk-HFL2F4RM.js";
|
|
27
|
+
import "./chunk-YYYVS7CX.js";
|
|
27
28
|
import "./chunk-WSDT7LYL.js";
|
|
28
29
|
import "./chunk-G3GRYDMS.js";
|
|
29
30
|
import "./chunk-PLWMIU72.js";
|
|
@@ -16,14 +16,15 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var
|
|
19
|
+
var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
|
|
20
20
|
require('./chunk-4HJRHEXD.cjs');
|
|
21
21
|
require('./chunk-HQQE74RO.cjs');
|
|
22
22
|
require('./chunk-DEY6XXGO.cjs');
|
|
23
|
-
require('./chunk-
|
|
24
|
-
require('./chunk-
|
|
23
|
+
require('./chunk-Z5UWW3Z2.cjs');
|
|
24
|
+
require('./chunk-ZXCZYMN4.cjs');
|
|
25
25
|
require('./chunk-B4NCVYEQ.cjs');
|
|
26
26
|
require('./chunk-MZ4KBSH7.cjs');
|
|
27
|
+
require('./chunk-A6P6DHEZ.cjs');
|
|
27
28
|
require('./chunk-WBNAEYTQ.cjs');
|
|
28
29
|
require('./chunk-AUMKE74M.cjs');
|
|
29
30
|
require('./chunk-LX22Y43B.cjs');
|
|
@@ -77,7 +78,7 @@ function entry(logId, minutesAgo, severity, toolType, device2, summary) {
|
|
|
77
78
|
id: logId,
|
|
78
79
|
logId,
|
|
79
80
|
timestamp: displayTime(_chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, minutesAgo)),
|
|
80
|
-
status: { label: severity, variant:
|
|
81
|
+
status: { label: severity, variant: _chunkZ3CVSPO3cjs.logSeverityVariant.call(void 0, severity) },
|
|
81
82
|
source: { name: toolType, toolType },
|
|
82
83
|
device: device2,
|
|
83
84
|
description: { title: summary }
|
|
@@ -149,13 +150,13 @@ var NO_FILTERS = {};
|
|
|
149
150
|
var ACTION_COLUMNS = ["copy", "quickView", "open"];
|
|
150
151
|
var BESIDE_DRAWER_HIDDEN = [...ACTION_COLUMNS, "tool", "source"];
|
|
151
152
|
var logHref = () => "#";
|
|
152
|
-
var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
153
|
+
var copyAction = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.LogCopyIconButton, {});
|
|
153
154
|
function LogsScreen({ compact = false }) {
|
|
154
155
|
const [dock, setDock] = _react.useState.call(void 0, null);
|
|
155
156
|
const selected = LOGS_FIXTURE_SELECTED;
|
|
156
157
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full bg-ods-bg", children: [
|
|
157
158
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1 overflow-clip", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
158
|
-
|
|
159
|
+
_chunkZ3CVSPO3cjs.LogsPageView,
|
|
159
160
|
{
|
|
160
161
|
showHeader: false,
|
|
161
162
|
className: "p-[var(--spacing-system-l)]",
|
|
@@ -163,7 +164,7 @@ function LogsScreen({ compact = false }) {
|
|
|
163
164
|
onSearchChange: noop,
|
|
164
165
|
onOpenFilters: noop,
|
|
165
166
|
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
166
|
-
|
|
167
|
+
_chunkZ3CVSPO3cjs.LogsTableView,
|
|
167
168
|
{
|
|
168
169
|
logs: LOGS_FIXTURE_ENTRIES,
|
|
169
170
|
facets: LOGS_FIXTURE_FACETS,
|
|
@@ -177,8 +178,8 @@ function LogsScreen({ compact = false }) {
|
|
|
177
178
|
)
|
|
178
179
|
}
|
|
179
180
|
) }),
|
|
180
|
-
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
181
|
-
|
|
181
|
+
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setDock, className: "relative w-[calc(400px+var(--spacing-system-m))] shrink-0", children: dock && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.AppLayoutDrawerContainerContext.Provider, { value: dock, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
182
|
+
_chunkZ3CVSPO3cjs.LogDrawer,
|
|
182
183
|
{
|
|
183
184
|
docked: true,
|
|
184
185
|
isOpen: true,
|
|
@@ -190,12 +191,12 @@ function LogsScreen({ compact = false }) {
|
|
|
190
191
|
{ label: "Log ID", value: selected.logId },
|
|
191
192
|
{
|
|
192
193
|
label: "Source",
|
|
193
|
-
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
194
|
+
value: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.ToolBadge, { toolType: _chunkUWQWMGJ7cjs.normalizeToolTypeWithFallback.call(void 0, selected.source.toolType) })
|
|
194
195
|
},
|
|
195
|
-
{ label: "Device", value:
|
|
196
|
+
{ label: "Device", value: _chunkZ3CVSPO3cjs.logSourceLabels.call(void 0, selected.device).deviceName }
|
|
196
197
|
],
|
|
197
198
|
deviceCard: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
198
|
-
|
|
199
|
+
_chunkZ3CVSPO3cjs.DeviceCard,
|
|
199
200
|
{
|
|
200
201
|
...LOGS_FIXTURE_DEVICE,
|
|
201
202
|
actions: {
|
|
@@ -10,14 +10,15 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
|
|
14
14
|
require('./chunk-4HJRHEXD.cjs');
|
|
15
15
|
require('./chunk-HQQE74RO.cjs');
|
|
16
16
|
require('./chunk-DEY6XXGO.cjs');
|
|
17
|
-
require('./chunk-
|
|
18
|
-
require('./chunk-
|
|
17
|
+
require('./chunk-Z5UWW3Z2.cjs');
|
|
18
|
+
require('./chunk-ZXCZYMN4.cjs');
|
|
19
19
|
require('./chunk-B4NCVYEQ.cjs');
|
|
20
20
|
require('./chunk-MZ4KBSH7.cjs');
|
|
21
|
+
require('./chunk-A6P6DHEZ.cjs');
|
|
21
22
|
require('./chunk-WBNAEYTQ.cjs');
|
|
22
23
|
require('./chunk-AUMKE74M.cjs');
|
|
23
24
|
require('./chunk-LX22Y43B.cjs');
|
|
@@ -82,14 +83,14 @@ var POLICIES = [
|
|
|
82
83
|
policy("policy-local-admins", "No local admins", "No everyday account is a local administrator.", false, 0)
|
|
83
84
|
];
|
|
84
85
|
var POLICIES_FIXTURE = {
|
|
85
|
-
summary:
|
|
86
|
+
summary: _chunkZ3CVSPO3cjs.computePolicySummary.call(void 0, POLICIES),
|
|
86
87
|
rows: POLICIES.map((item) => ({
|
|
87
88
|
id: item.id,
|
|
88
89
|
name: item.name,
|
|
89
90
|
description: item.description,
|
|
90
91
|
critical: item.critical,
|
|
91
92
|
severityLabel: item.critical ? "Critical" : "Low",
|
|
92
|
-
status:
|
|
93
|
+
status: _chunkZ3CVSPO3cjs.getPolicyTableStatus.call(void 0, item),
|
|
93
94
|
actions: [
|
|
94
95
|
{ label: "Policy Details", onClick: noop },
|
|
95
96
|
{ label: "Delete Policy", onClick: noop }
|
|
@@ -103,16 +104,16 @@ var POLICIES_FIXTURE = {
|
|
|
103
104
|
var _jsxruntime = require('react/jsx-runtime');
|
|
104
105
|
function PoliciesScreen({ compact = false }) {
|
|
105
106
|
const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
106
|
-
|
|
107
|
+
_chunkZ3CVSPO3cjs.PoliciesTable,
|
|
107
108
|
{
|
|
108
109
|
rows: POLICIES_FIXTURE.rows,
|
|
109
110
|
rowAsLink: true,
|
|
110
|
-
rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
111
|
+
rightSlot: compact ? void 0 : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.DataTable.RowCount, {}),
|
|
111
112
|
emptyMessage: "No policies found."
|
|
112
113
|
}
|
|
113
114
|
);
|
|
114
115
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col gap-[var(--spacing-system-l)] bg-ods-bg p-[var(--spacing-system-l)]", children: [
|
|
115
|
-
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
116
|
+
!compact && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ3CVSPO3cjs.PolicySummaryCards, { summary: POLICIES_FIXTURE.summary, now: POLICIES_FIXTURE.now }),
|
|
116
117
|
table
|
|
117
118
|
] });
|
|
118
119
|
}
|
|
@@ -10,14 +10,15 @@ import {
|
|
|
10
10
|
PolicySummaryCards,
|
|
11
11
|
computePolicySummary,
|
|
12
12
|
getPolicyTableStatus
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-N2PF5CFX.js";
|
|
14
14
|
import "./chunk-ILNN6QRW.js";
|
|
15
15
|
import "./chunk-LQYXMEYF.js";
|
|
16
16
|
import "./chunk-4JPLYOS6.js";
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-LOYPRJWA.js";
|
|
18
|
+
import "./chunk-IWCPXJEE.js";
|
|
19
19
|
import "./chunk-3K5ZLZE7.js";
|
|
20
20
|
import "./chunk-HFL2F4RM.js";
|
|
21
|
+
import "./chunk-YYYVS7CX.js";
|
|
21
22
|
import "./chunk-WSDT7LYL.js";
|
|
22
23
|
import "./chunk-G3GRYDMS.js";
|
|
23
24
|
import "./chunk-PLWMIU72.js";
|
|
@@ -10,7 +10,8 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
|
|
14
|
+
require('./chunk-A6P6DHEZ.cjs');
|
|
14
15
|
require('./chunk-DC4RTYWK.cjs');
|
|
15
16
|
require('./chunk-FFT56TYB.cjs');
|
|
16
17
|
require('./chunk-PSVSEN4J.cjs');
|
|
@@ -174,7 +175,7 @@ function RemoteSessionScreen({ compact = false }) {
|
|
|
174
175
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-full flex-col bg-ods-bg", children: [
|
|
175
176
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[var(--spacing-system-l)] flex-shrink-0" }),
|
|
176
177
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
177
|
-
|
|
178
|
+
_chunkZ5UWW3Z2cjs.RemoteDesktopView,
|
|
178
179
|
{
|
|
179
180
|
...fixture.view,
|
|
180
181
|
onEnterFullscreen: noop,
|
|
@@ -185,7 +186,7 @@ function RemoteSessionScreen({ compact = false }) {
|
|
|
185
186
|
screen: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RemoteDesktopPicture, { desktop: fixture.desktop }),
|
|
186
187
|
chat: compact ? null : (
|
|
187
188
|
// The side column needs the room of the wide layout; a narrow frame keeps the screen alone.
|
|
188
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
189
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden min-h-0 content-md:flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZ5UWW3Z2cjs.RemoteDesktopChatPanel, { ...fixture.chat, sending: false, onSend: keepDraft, variant: "side" }) })
|
|
189
190
|
)
|
|
190
191
|
}
|
|
191
192
|
) })
|
|
@@ -10,7 +10,8 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
RemoteDesktopChatPanel,
|
|
12
12
|
RemoteDesktopView
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-LOYPRJWA.js";
|
|
14
|
+
import "./chunk-YYYVS7CX.js";
|
|
14
15
|
import "./chunk-KBJJQFYU.js";
|
|
15
16
|
import "./chunk-P3JMAMHP.js";
|
|
16
17
|
import "./chunk-JHQ334WS.js";
|
|
@@ -11,19 +11,21 @@ import {
|
|
|
11
11
|
DEMO_NOW
|
|
12
12
|
} from "./chunk-CYUUHFXL.js";
|
|
13
13
|
import {
|
|
14
|
-
Autocomplete,
|
|
15
14
|
DeviceSelector,
|
|
16
15
|
PACKAGE_SEARCH_LABEL,
|
|
17
16
|
PACKAGE_SEARCH_PLACEHOLDER,
|
|
18
17
|
SoftwareActionForm
|
|
19
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-N2PF5CFX.js";
|
|
20
19
|
import "./chunk-ILNN6QRW.js";
|
|
21
20
|
import "./chunk-LQYXMEYF.js";
|
|
22
21
|
import "./chunk-4JPLYOS6.js";
|
|
23
|
-
import
|
|
24
|
-
|
|
22
|
+
import {
|
|
23
|
+
Autocomplete
|
|
24
|
+
} from "./chunk-LOYPRJWA.js";
|
|
25
|
+
import "./chunk-IWCPXJEE.js";
|
|
25
26
|
import "./chunk-3K5ZLZE7.js";
|
|
26
27
|
import "./chunk-HFL2F4RM.js";
|
|
28
|
+
import "./chunk-YYYVS7CX.js";
|
|
27
29
|
import "./chunk-WSDT7LYL.js";
|
|
28
30
|
import "./chunk-G3GRYDMS.js";
|
|
29
31
|
import "./chunk-PLWMIU72.js";
|
|
@@ -15,15 +15,17 @@ var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
var _chunk5MF3NMYCcjs = require('./chunk-5MF3NMYC.cjs');
|
|
18
|
+
var _chunkZ3CVSPO3cjs = require('./chunk-Z3CVSPO3.cjs');
|
|
20
19
|
require('./chunk-4HJRHEXD.cjs');
|
|
21
20
|
require('./chunk-HQQE74RO.cjs');
|
|
22
21
|
require('./chunk-DEY6XXGO.cjs');
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
var _chunkZ5UWW3Z2cjs = require('./chunk-Z5UWW3Z2.cjs');
|
|
25
|
+
require('./chunk-ZXCZYMN4.cjs');
|
|
25
26
|
require('./chunk-B4NCVYEQ.cjs');
|
|
26
27
|
require('./chunk-MZ4KBSH7.cjs');
|
|
28
|
+
require('./chunk-A6P6DHEZ.cjs');
|
|
27
29
|
require('./chunk-WBNAEYTQ.cjs');
|
|
28
30
|
require('./chunk-AUMKE74M.cjs');
|
|
29
31
|
require('./chunk-LX22Y43B.cjs');
|
|
@@ -114,14 +116,14 @@ var noop = () => {
|
|
|
114
116
|
var HIDDEN_WHEN_COMPACT = ["organization"];
|
|
115
117
|
function StaticPackageField({ value }) {
|
|
116
118
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
117
|
-
|
|
119
|
+
_chunkZ5UWW3Z2cjs.Autocomplete,
|
|
118
120
|
{
|
|
119
|
-
label:
|
|
121
|
+
label: _chunkZ3CVSPO3cjs.PACKAGE_SEARCH_LABEL,
|
|
120
122
|
labelVariant: "large",
|
|
121
123
|
options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
|
|
122
124
|
value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
|
|
123
125
|
onChange: noop,
|
|
124
|
-
placeholder:
|
|
126
|
+
placeholder: _chunkZ3CVSPO3cjs.PACKAGE_SEARCH_PLACEHOLDER
|
|
125
127
|
}
|
|
126
128
|
);
|
|
127
129
|
}
|
|
@@ -135,7 +137,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
135
137
|
[fixture.devices, fixture.selectedIds]
|
|
136
138
|
);
|
|
137
139
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
138
|
-
|
|
140
|
+
_chunkZ3CVSPO3cjs.SoftwareActionForm,
|
|
139
141
|
{
|
|
140
142
|
action: fixture.action,
|
|
141
143
|
showHeader: false,
|
|
@@ -147,7 +149,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
147
149
|
initialValues: fixture.initialValues,
|
|
148
150
|
renderPackageSearch,
|
|
149
151
|
renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
150
|
-
|
|
152
|
+
_chunkZ3CVSPO3cjs.DeviceSelector,
|
|
151
153
|
{
|
|
152
154
|
devices: selected,
|
|
153
155
|
loading: false,
|
package/package.json
CHANGED
|
@@ -34,6 +34,8 @@ export type {
|
|
|
34
34
|
KeepRecordingSelection,
|
|
35
35
|
ReleaseKeepingModalProps,
|
|
36
36
|
} from './remote-session-keep-modals';
|
|
37
|
+
export { AssignTicketModal, UnassignTicketModal } from './remote-session-ticket-modals';
|
|
38
|
+
export type { AssignTicketModalProps, UnassignTicketModalProps } from './remote-session-ticket-modals';
|
|
37
39
|
export {
|
|
38
40
|
RemoteSessionEventList,
|
|
39
41
|
RemoteSessionTimelineMarkers,
|
|
@@ -151,8 +151,8 @@ export interface ReleaseKeepingModalProps {
|
|
|
151
151
|
keptOn: string;
|
|
152
152
|
/** The reason as it reads in the sentence, e.g. "Client dispute". */
|
|
153
153
|
reason: string;
|
|
154
|
-
/** The
|
|
155
|
-
|
|
154
|
+
/** The tickets assigned to the recording, as they read in the line, e.g. "TKT-4631"; the line is left out without any. */
|
|
155
|
+
tickets?: string[];
|
|
156
156
|
/** When the recording will be deleted once released, formatted. */
|
|
157
157
|
expiresOn: string;
|
|
158
158
|
/** The original expiry date when it has already passed, so the release adds the grace period. */
|
|
@@ -169,7 +169,7 @@ export function ReleaseKeepingModal({
|
|
|
169
169
|
keptBy,
|
|
170
170
|
keptOn,
|
|
171
171
|
reason,
|
|
172
|
-
|
|
172
|
+
tickets = [],
|
|
173
173
|
expiresOn,
|
|
174
174
|
dueOn,
|
|
175
175
|
isPending = false,
|
|
@@ -185,7 +185,7 @@ export function ReleaseKeepingModal({
|
|
|
185
185
|
<p>
|
|
186
186
|
Kept by {keptBy} on {keptOn} for {reason}.
|
|
187
187
|
</p>
|
|
188
|
-
{
|
|
188
|
+
{tickets.length > 0 && <p>Ticket: {tickets.join(', ')}</p>}
|
|
189
189
|
</div>
|
|
190
190
|
|
|
191
191
|
<KeepNotice icon={<HourglassIcon size={24} color="currentColor" />} title={`It will expire on ${expiresOn}`}>
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { Autocomplete, type AutocompleteOption } from '../../ui/autocomplete';
|
|
5
|
+
import { Button } from '../../ui/button/button';
|
|
6
|
+
import { ModalV2, ModalV2Footer, ModalV2Header, ModalV2Title } from '../../ui/modal-v2';
|
|
7
|
+
|
|
8
|
+
export interface AssignTicketModalProps {
|
|
9
|
+
isOpen: boolean;
|
|
10
|
+
onClose: () => void;
|
|
11
|
+
/**
|
|
12
|
+
* The tickets that can be assigned: label = title, value = ticket id. Leave
|
|
13
|
+
* out the ones already assigned to the recording.
|
|
14
|
+
*/
|
|
15
|
+
options: AutocompleteOption<string>[];
|
|
16
|
+
/** Server-side search: called with the typed text; the caller refreshes `options`. Client-side filtering otherwise. */
|
|
17
|
+
onSearch?: (query: string) => void;
|
|
18
|
+
/** The ticket search is in flight. */
|
|
19
|
+
loading?: boolean;
|
|
20
|
+
/** The assignment is in flight: the button spins and the dialog refuses to close. */
|
|
21
|
+
isPending?: boolean;
|
|
22
|
+
onConfirm: (ticketIds: string[]) => void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Assign Ticket: links one or more tickets to a recording. */
|
|
26
|
+
export function AssignTicketModal({
|
|
27
|
+
isOpen,
|
|
28
|
+
onClose,
|
|
29
|
+
options,
|
|
30
|
+
onSearch,
|
|
31
|
+
loading = false,
|
|
32
|
+
isPending = false,
|
|
33
|
+
onConfirm,
|
|
34
|
+
}: AssignTicketModalProps) {
|
|
35
|
+
const [ticketIds, setTicketIds] = useState<string[]>([]);
|
|
36
|
+
// Titles of the picked tickets: a server-side search replaces `options`, and
|
|
37
|
+
// a picked ticket missing from the new results would otherwise show its id.
|
|
38
|
+
const [titles, setTitles] = useState<Record<string, string>>({});
|
|
39
|
+
|
|
40
|
+
// Every opening starts blank. Reset while rendering, not from an effect: the
|
|
41
|
+
// modal stays mounted when it closes, so an effect would paint the opening
|
|
42
|
+
// frame with the previous selection still in the field.
|
|
43
|
+
const [seededOpen, setSeededOpen] = useState(isOpen);
|
|
44
|
+
if (seededOpen !== isOpen) {
|
|
45
|
+
setSeededOpen(isOpen);
|
|
46
|
+
if (isOpen) {
|
|
47
|
+
setTicketIds([]);
|
|
48
|
+
setTitles({});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const handleChange = (ids: string[]) => {
|
|
53
|
+
setTicketIds(ids);
|
|
54
|
+
setTitles(prev => {
|
|
55
|
+
const next: Record<string, string> = {};
|
|
56
|
+
for (const id of ids) next[id] = options.find(option => option.value === id)?.label ?? prev[id] ?? id;
|
|
57
|
+
return next;
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const handleAssign = () => {
|
|
62
|
+
if (ticketIds.length === 0 || isPending) return;
|
|
63
|
+
onConfirm(ticketIds);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<ModalV2 isOpen={isOpen} onClose={isPending ? () => {} : onClose} className="text-left md:max-w-[600px]">
|
|
68
|
+
<ModalV2Header>
|
|
69
|
+
<ModalV2Title>Assign Ticket</ModalV2Title>
|
|
70
|
+
</ModalV2Header>
|
|
71
|
+
|
|
72
|
+
<Autocomplete
|
|
73
|
+
multiple
|
|
74
|
+
wrapTags
|
|
75
|
+
label="Tickets"
|
|
76
|
+
labelVariant="large"
|
|
77
|
+
options={options}
|
|
78
|
+
value={ticketIds}
|
|
79
|
+
onChange={handleChange}
|
|
80
|
+
renderTag={option => titles[option.value] ?? option.label}
|
|
81
|
+
onInputChange={onSearch ? (value, reason) => reason === 'input' && onSearch(value) : undefined}
|
|
82
|
+
disableClientFilter={Boolean(onSearch)}
|
|
83
|
+
loading={loading}
|
|
84
|
+
noOptionsText="No tickets found"
|
|
85
|
+
disabled={isPending}
|
|
86
|
+
/>
|
|
87
|
+
|
|
88
|
+
<ModalV2Footer>
|
|
89
|
+
<Button type="button" variant="outline" onClick={onClose} disabled={isPending} className="flex-1 md:hidden">
|
|
90
|
+
Cancel
|
|
91
|
+
</Button>
|
|
92
|
+
<div className="hidden flex-1 md:block" />
|
|
93
|
+
<Button
|
|
94
|
+
type="button"
|
|
95
|
+
variant="accent"
|
|
96
|
+
onClick={handleAssign}
|
|
97
|
+
loading={isPending}
|
|
98
|
+
disabled={ticketIds.length === 0}
|
|
99
|
+
className="flex-1"
|
|
100
|
+
>
|
|
101
|
+
Assign
|
|
102
|
+
</Button>
|
|
103
|
+
</ModalV2Footer>
|
|
104
|
+
</ModalV2>
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface UnassignTicketModalProps {
|
|
109
|
+
isOpen: boolean;
|
|
110
|
+
onClose: () => void;
|
|
111
|
+
/** The unassignment is in flight: the button spins and the dialog refuses to close. */
|
|
112
|
+
isPending?: boolean;
|
|
113
|
+
onConfirm: () => void;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Unassign Ticket: unlinks a ticket from a recording; the ticket itself is unchanged. */
|
|
117
|
+
export function UnassignTicketModal({ isOpen, onClose, isPending = false, onConfirm }: UnassignTicketModalProps) {
|
|
118
|
+
return (
|
|
119
|
+
<ModalV2 isOpen={isOpen} onClose={isPending ? () => {} : onClose} className="text-left md:max-w-[600px]">
|
|
120
|
+
<ModalV2Header>
|
|
121
|
+
<ModalV2Title>Unassign Ticket</ModalV2Title>
|
|
122
|
+
</ModalV2Header>
|
|
123
|
+
|
|
124
|
+
<p className="w-full text-ods-text-primary text-h4">
|
|
125
|
+
This Ticket will no longer be linked to this remote session. The ticket itself stays as it is, and you can
|
|
126
|
+
assign it again anytime.
|
|
127
|
+
</p>
|
|
128
|
+
|
|
129
|
+
<ModalV2Footer>
|
|
130
|
+
<Button type="button" variant="outline" onClick={onClose} disabled={isPending} className="flex-1 md:hidden">
|
|
131
|
+
Cancel
|
|
132
|
+
</Button>
|
|
133
|
+
<div className="hidden flex-1 md:block" />
|
|
134
|
+
<Button type="button" variant="destructive" onClick={onConfirm} loading={isPending} className="flex-1">
|
|
135
|
+
Unassign
|
|
136
|
+
</Button>
|
|
137
|
+
</ModalV2Footer>
|
|
138
|
+
</ModalV2>
|
|
139
|
+
);
|
|
140
|
+
}
|