@blocklet/launcher-workflow 2.0.27 → 2.0.29

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/lib/checkout.js CHANGED
@@ -87,6 +87,7 @@ function CheckoutPage() {
87
87
  const [showPayment, setShowPayment] = (0, _react.useState)(false);
88
88
  const [paying, setPaying] = (0, _react.useState)(false);
89
89
  const [agree, setAgree] = (0, _react.useState)(false);
90
+ const [showAgreeHint, setShowAgreeHint] = (0, _react.useState)(false);
90
91
  const [showPaidDialog, setShowPaidDialog] = (0, _useSetState.default)({
91
92
  open: false,
92
93
  nftId: ''
@@ -145,6 +146,13 @@ function CheckoutPage() {
145
146
  setPaying(false);
146
147
  };
147
148
  const handlePay = async () => {
149
+ if (!agree) {
150
+ setShowAgreeHint(true);
151
+ setTimeout(() => {
152
+ setShowAgreeHint(false);
153
+ }, 2000);
154
+ return;
155
+ }
148
156
  if (session.user) {
149
157
  setShowPayment(true);
150
158
  setPaying(true);
@@ -303,16 +311,17 @@ function CheckoutPage() {
303
311
  className: "agreement",
304
312
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_checkbox.default, {
305
313
  checked: agree,
314
+ showHint: showAgreeHint,
306
315
  onClick: () => toggleAgreement(),
307
- label: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
308
- children: [t('common.agreeTo'), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
316
+ label: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
317
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
309
318
  className: "agreement-label",
310
319
  onClick: e => {
311
320
  e.stopPropagation();
312
321
  setShowAgreement(true);
313
322
  },
314
323
  children: ["Blocklet ", t('common.agreement')]
315
- })]
324
+ })
316
325
  })
317
326
  })
318
327
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
@@ -325,7 +334,7 @@ function CheckoutPage() {
325
334
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_button.default, {
326
335
  loading: paying,
327
336
  className: "button-pay",
328
- disabled: paying || showPayment || !planId || !paymentMethod || !agree,
337
+ disabled: paying || showPayment || !planId || !paymentMethod,
329
338
  variant: "contained",
330
339
  onClick: handlePay,
331
340
  children: t('common.pay')
@@ -3,13 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = PaymentMethod;
6
+ exports.default = CheckBox;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
9
+ var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
9
10
  var _propTypes = _interopRequireDefault(require("prop-types"));
11
+ var _locale = require("../contexts/locale");
10
12
  var _jsxRuntime = require("react/jsx-runtime");
11
13
  var _templateObject;
12
- const _excluded = ["label", "checked"];
14
+ const _excluded = ["label", "checked", "showHint"];
13
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
16
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
15
17
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -55,25 +57,43 @@ UncheckedIcon.defaultProps = {
55
57
  fill: "none",
56
58
  xmlns: "http://www.w3.org/2000/svg"
57
59
  };
58
- function PaymentMethod(_ref) {
60
+ function CheckBox(_ref) {
59
61
  let {
60
62
  label,
61
- checked
63
+ checked,
64
+ showHint
62
65
  } = _ref,
63
66
  rest = _objectWithoutProperties(_ref, _excluded);
67
+ const {
68
+ t
69
+ } = (0, _locale.useLocaleContext)();
64
70
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, _objectSpread(_objectSpread({}, rest), {}, {
65
- children: [checked ? /*#__PURE__*/(0, _jsxRuntime.jsx)(CheckedIcon, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(UncheckedIcon, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
71
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
72
+ open: showHint,
73
+ title: t('common.agreementHint'),
74
+ arrow: true,
75
+ placement: "top-start",
76
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
77
+ style: {
78
+ display: 'flex',
79
+ alignItems: 'center'
80
+ },
81
+ children: checked ? /*#__PURE__*/(0, _jsxRuntime.jsx)(CheckedIcon, {}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(UncheckedIcon, {})
82
+ })
83
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
66
84
  className: "label",
67
85
  children: label
68
86
  })]
69
87
  }));
70
88
  }
71
89
  const Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n justify-content: flex-start;\n align-items: center;\n cursor: pointer;\n\n .label {\n margin-left: 8px;\n }\n"])));
72
- PaymentMethod.propTypes = {
90
+ CheckBox.propTypes = {
91
+ showHint: _propTypes.default.bool,
73
92
  checked: _propTypes.default.bool,
74
93
  label: _propTypes.default.any
75
94
  };
76
- PaymentMethod.defaultProps = {
95
+ CheckBox.defaultProps = {
77
96
  checked: false,
97
+ showHint: false,
78
98
  label: ''
79
99
  };
@@ -33,4 +33,4 @@ function Layout(_ref) {
33
33
  Layout.propTypes = {
34
34
  children: _propTypes.default.any.isRequired
35
35
  };
36
- const Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n width: 100%;\n height: 100%;\n padding: 0 32px 32px;\n"])));
36
+ const Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n width: 100%;\n height: 100%;\n padding: 0 32px 32px;\n\n ", " {\n padding: 0 16px 16px;\n }\n"])), props => props.theme.breakpoints.down('md'));
package/lib/locales/en.js CHANGED
@@ -5,6 +5,7 @@ module.exports = {
5
5
  agreeTo: 'Agree to the',
6
6
  agreement: 'Agreement',
7
7
  paymentMethod: 'Payment Method',
8
+ agreementHint: 'Please check the box to agree to the user agreement and continue',
8
9
  serverType: 'Blocklet Space Type',
9
10
  paying: 'Paying',
10
11
  name: 'Name',
package/lib/locales/zh.js CHANGED
@@ -4,6 +4,7 @@ module.exports = {
4
4
  common: {
5
5
  agreeTo: '同意',
6
6
  agreement: '用户协议',
7
+ agreementHint: '请勾选同意用户协议后继续',
7
8
  paymentMethod: '支付方式',
8
9
  serverType: '空间信息',
9
10
  paying: '支付中',
package/lib/purchase.js CHANGED
@@ -7,6 +7,7 @@ exports.default = void 0;
7
7
  var _react = _interopRequireWildcard(require("react"));
8
8
  var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
9
9
  var _Center = _interopRequireDefault(require("@arcblock/ux/lib/Center"));
10
+ var _compactLayout = _interopRequireDefault(require("@blocklet/launcher-layout/lib/compact-layout"));
10
11
  var _useMobile = _interopRequireDefault(require("@blocklet/launcher-ux/lib/use-mobile"));
11
12
  var _styled = _interopRequireDefault(require("@emotion/styled"));
12
13
  var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
@@ -64,6 +65,7 @@ PrevIcon.defaultProps = {
64
65
  height: "40"
65
66
  };
66
67
  const SLIDE_WIDTH = 300;
68
+ const SLIDE_MIN_WIDTH = 280;
67
69
  function PurchasePage(_ref) {
68
70
  var _planState$value4, _planState$value5;
69
71
  let {
@@ -111,9 +113,10 @@ function PurchasePage(_ref) {
111
113
  });
112
114
  const calculateConfig = (maxLength, tmpPlanLength) => {
113
115
  const factor = Math.min(maxLength, tmpPlanLength);
116
+ const width = factor < 3 ? SLIDE_MIN_WIDTH : SLIDE_WIDTH;
114
117
  return {
115
118
  perPage: factor,
116
- width: "".concat(factor * SLIDE_WIDTH, "px"),
119
+ width: "".concat(factor * width, "px"),
117
120
  gap: '24px'
118
121
  };
119
122
  };
@@ -195,114 +198,126 @@ function PurchasePage(_ref) {
195
198
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_header.default, {
196
199
  title: t('purchase.pageTitle'),
197
200
  disableBack: disableBack
198
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_body.default, {
201
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_body.default, {
199
202
  style: {
200
203
  justifyContent: 'center'
201
204
  },
202
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
203
- ref: planListRef,
204
- className: "plan-list",
205
- children: planState.loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Center.default, {
206
- relative: "parent",
207
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {})
208
- }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
209
- children: [!isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
210
- toc: true,
211
- productFeatures: productFeatures,
212
- className: "toc"
213
- }), ((_planState$value5 = planState.value) === null || _planState$value5 === void 0 ? void 0 : _planState$value5.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactSplide.Splide, {
214
- extensions: {
215
- Grid: _splideExtensionGrid.Grid
216
- },
217
- onPaginationMounted: splide => {
218
- const pageCount = Math.ceil(planState.value.length / splide.options.perPage);
219
- const showArrows = pageCount > 1;
220
- setSplideConfig({
221
- arrows: showArrows
222
- });
223
- if (showArrows) {
224
- setTimeout(() => {
225
- setOpenMorePlanPrompt(true);
226
- // 3s 后隐藏
227
- setTimeout(() => setOpenMorePlanPrompt(false), 3000);
228
- }, 1000);
229
- }
230
- },
231
- hasTrack: false,
232
- onMoved: (splide, index) => {
233
- var _splide$options;
234
- selectCurrent((_splide$options = splide.options) === null || _splide$options === void 0 ? void 0 : _splide$options.perPage, index);
235
- },
236
- options: {
237
- pagination: true,
238
- arrows: splideConfig.arrows,
239
- classes: {
240
- pagination: 'splide__pagination splide__pagination-custom'
241
- },
242
- trimSpace: true,
243
- width: splideConfig.width,
244
- perPage: splideConfig.perPage,
245
- gap: splideConfig.gap
246
- },
247
- children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
248
- className: "splide__arrows",
249
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
250
- className: "splide__arrow splide__arrow--prev",
251
- type: "button",
252
- disabled: "",
253
- "aria-label": "Previous slide",
254
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PrevIcon, {
255
- viewBox: "0 0 40 40"
256
- })
257
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
258
- open: openMorePlanPrompt,
259
- title: t('purchase.morePlanPrompt'),
260
- placement: "top",
261
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
262
- className: "splide__arrow splide__arrow--next",
263
- type: "button",
264
- "aria-label": "Next slide",
265
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(NextIcon, {
266
- viewBox: "0 0 40 40"
267
- })
205
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
206
+ style: {
207
+ flex: 1,
208
+ position: 'relative'
209
+ },
210
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
211
+ className: "container-inner",
212
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_compactLayout.default, {
213
+ bottom: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_footer.default, {
214
+ className: "footer",
215
+ children: [embed && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
216
+ className: "select-space",
217
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Link, {
218
+ to: (0, _urlJoin.default)(routerPrefix, "/purchase/select".concat(window.location.search)),
219
+ children: t('purchase.selectSpaceHint')
268
220
  })
221
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
222
+ component: _reactRouterDom.Link,
223
+ disabled: planState.loading || !selectedPlanId,
224
+ to: (0, _urlJoin.default)(routerPrefix, "/purchase/checkout?".concat(searchParams.toString())),
225
+ className: "button-next",
226
+ variant: "contained",
227
+ children: t('common.next')
269
228
  })]
270
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactSplide.SplideTrack, {
271
- children: planState.value.map(plan => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactSplide.SplideSlide, {
272
- style: {
273
- width: 'auto'
274
- },
275
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
276
- recommend: !!plan.isRecommended,
277
- checked: plan._id === selectedPlanId,
278
- plan: plan,
279
- onClick: () => handleSelect(plan._id)
280
- })
281
- }, plan._id))
282
- })]
283
- })]
284
- })
285
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_footer.default, {
286
- className: "footer",
287
- children: [embed && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
288
- className: "select-space",
289
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Link, {
290
- to: (0, _urlJoin.default)(routerPrefix, "/purchase/select".concat(window.location.search)),
291
- children: t('purchase.selectSpaceHint')
229
+ }),
230
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
231
+ ref: planListRef,
232
+ className: "plan-list",
233
+ children: planState.loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Center.default, {
234
+ relative: "parent",
235
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {})
236
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
237
+ children: [!isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
238
+ toc: true,
239
+ productFeatures: productFeatures,
240
+ className: "toc"
241
+ }), ((_planState$value5 = planState.value) === null || _planState$value5 === void 0 ? void 0 : _planState$value5.length) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactSplide.Splide, {
242
+ extensions: {
243
+ Grid: _splideExtensionGrid.Grid
244
+ },
245
+ onPaginationMounted: splide => {
246
+ const pageCount = Math.ceil(planState.value.length / splide.options.perPage);
247
+ const showArrows = pageCount > 1;
248
+ setSplideConfig({
249
+ arrows: showArrows
250
+ });
251
+ if (showArrows) {
252
+ setTimeout(() => {
253
+ setOpenMorePlanPrompt(true);
254
+ // 3s 后隐藏
255
+ setTimeout(() => setOpenMorePlanPrompt(false), 3000);
256
+ }, 1000);
257
+ }
258
+ },
259
+ hasTrack: false,
260
+ onMoved: (splide, index) => {
261
+ var _splide$options;
262
+ selectCurrent((_splide$options = splide.options) === null || _splide$options === void 0 ? void 0 : _splide$options.perPage, index);
263
+ },
264
+ options: {
265
+ pagination: true,
266
+ arrows: splideConfig.arrows,
267
+ classes: {
268
+ pagination: 'splide__pagination splide__pagination-custom'
269
+ },
270
+ trimSpace: true,
271
+ width: splideConfig.width,
272
+ perPage: splideConfig.perPage,
273
+ gap: splideConfig.gap
274
+ },
275
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
276
+ className: "splide__arrows",
277
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
278
+ className: "splide__arrow splide__arrow--prev",
279
+ type: "button",
280
+ disabled: "",
281
+ "aria-label": "Previous slide",
282
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(PrevIcon, {
283
+ viewBox: "0 0 40 40"
284
+ })
285
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
286
+ open: openMorePlanPrompt,
287
+ title: t('purchase.morePlanPrompt'),
288
+ placement: "top",
289
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("button", {
290
+ className: "splide__arrow splide__arrow--next",
291
+ type: "button",
292
+ "aria-label": "Next slide",
293
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(NextIcon, {
294
+ viewBox: "0 0 40 40"
295
+ })
296
+ })
297
+ })]
298
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactSplide.SplideTrack, {
299
+ children: planState.value.map(plan => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactSplide.SplideSlide, {
300
+ style: {
301
+ width: 'auto'
302
+ },
303
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
304
+ recommend: !!plan.isRecommended,
305
+ checked: plan._id === selectedPlanId,
306
+ plan: plan,
307
+ onClick: () => handleSelect(plan._id)
308
+ })
309
+ }, plan._id))
310
+ })]
311
+ })]
312
+ })
313
+ })
292
314
  })
293
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
294
- component: _reactRouterDom.Link,
295
- disabled: planState.loading || !selectedPlanId,
296
- to: (0, _urlJoin.default)(routerPrefix, "/purchase/checkout?".concat(searchParams.toString())),
297
- className: "button-next",
298
- variant: "contained",
299
- children: t('common.next')
300
- })]
301
- })]
315
+ })
316
+ })
302
317
  })]
303
318
  });
304
319
  }
305
- const Container = (0, _styled.default)(_layout.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .plan-list {\n display: flex;\n justify-content: center;\n align-items: center;\n\n @media (min-width: 900px) {\n margin-top: 20px;\n }\n\n @media (min-width: 680px) and (max-width: 899px) {\n justify-content: center;\n }\n\n .toc {\n min-width: 180px;\n margin-right: 20px;\n }\n\n button.splide__pagination__page.is-active {\n background: #9397a1;\n }\n }\n\n .splide__pagination-custom {\n bottom: -24px;\n }\n\n .footer {\n display: flex;\n justify-content: ", ";\n align-item: center;\n margin-top: auto;\n\n @media (max-width: ", "px) {\n flex-direction: column;\n align-items: center;\n }\n\n .select-space {\n a {\n color: #000;\n }\n }\n\n .button-next {\n width: 200px;\n\n @media (max-width: ", "px) {\n width: 100%;\n margin-top: 20px;\n }\n }\n }\n"])), props => props.embed ? 'space-between' : 'flex-end', props => props.theme.breakpoints.values.sm, props => props.theme.breakpoints.values.sm);
320
+ const Container = (0, _styled.default)(_layout.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .container-inner {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n }\n\n .plan-list {\n display: flex;\n justify-content: center;\n align-items: center;\n\n @media (min-width: 900px) {\n margin-top: 20px;\n }\n\n @media (min-width: 680px) and (max-width: 899px) {\n justify-content: center;\n }\n\n .toc {\n min-width: 180px;\n margin-right: 20px;\n }\n\n button.splide__pagination__page.is-active {\n background: #9397a1;\n }\n }\n\n .splide__pagination-custom {\n bottom: -24px;\n }\n\n .footer {\n display: flex;\n justify-content: ", ";\n align-item: center;\n margin-top: auto;\n padding-top: 16px;\n\n > * {\n margin: 0 8px;\n ", " {\n margin: 0 16px;\n }\n }\n\n @media (max-width: ", "px) {\n flex-direction: column;\n align-items: center;\n }\n\n .select-space {\n a {\n color: #000;\n }\n }\n\n .button-next {\n width: 200px;\n\n @media (max-width: ", "px) {\n width: 100%;\n margin-top: 20px;\n }\n }\n }\n"])), props => props.embed ? 'space-between' : 'flex-end', props => props.theme.breakpoints.up('md'), props => props.theme.breakpoints.values.sm, props => props.theme.breakpoints.values.sm);
306
321
  PurchasePage.propTypes = {
307
322
  disableBack: _propTypes.default.bool
308
323
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/launcher-workflow",
3
- "version": "2.0.27",
3
+ "version": "2.0.29",
4
4
  "description": "Purchase components for Launcher UI",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -36,13 +36,13 @@
36
36
  "react": ">=18.1.0"
37
37
  },
38
38
  "dependencies": {
39
- "@arcblock/did-connect": "^2.5.23",
40
- "@arcblock/icons": "^2.5.23",
41
- "@arcblock/license": "^2.5.23",
42
- "@arcblock/ux": "^2.5.23",
43
- "@blocklet/launcher-layout": "2.0.27",
44
- "@blocklet/launcher-util": "2.0.27",
45
- "@blocklet/launcher-ux": "2.0.27",
39
+ "@arcblock/did-connect": "^2.5.24",
40
+ "@arcblock/icons": "^2.5.24",
41
+ "@arcblock/license": "^2.5.24",
42
+ "@arcblock/ux": "^2.5.24",
43
+ "@blocklet/launcher-layout": "2.0.29",
44
+ "@blocklet/launcher-util": "2.0.29",
45
+ "@blocklet/launcher-ux": "2.0.29",
46
46
  "@did-pay/react": "^1.9.51",
47
47
  "@emotion/react": "^11.10.6",
48
48
  "@emotion/styled": "^11.10.6",
@@ -72,5 +72,5 @@
72
72
  "@babel/preset-react": "^7.18.6",
73
73
  "babel-plugin-inline-react-svg": "^2.0.2"
74
74
  },
75
- "gitHead": "7a1acee827940a66960696ff2adbe7b250244702"
75
+ "gitHead": "1dd45e9681ee59f58353ebf31fe79a57355ef87a"
76
76
  }