@arcblock/ux 2.13.61 → 2.13.63

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.
@@ -98,7 +98,7 @@ export default function DIDConnectContainer({
98
98
  return `hsla(${h}, ${s}%, ${finalL}%, ${finalAlpha})`;
99
99
  });
100
100
  const backgroundGlow = `linear-gradient(45deg, ${colorListGlow.join(', ')})`;
101
- const glowStyle = {
101
+ const glowStyle = open ? {
102
102
  overflow: 'visible',
103
103
  '&::before, &::after': {
104
104
  content: '""',
@@ -129,7 +129,7 @@ export default function DIDConnectContainer({
129
129
  backgroundPosition: '0 0'
130
130
  }
131
131
  }
132
- };
132
+ } : {};
133
133
  if (openVariant === 'page') {
134
134
  return /*#__PURE__*/_jsx(Box, {
135
135
  className: "did-connect__container-page",
@@ -179,11 +179,11 @@ export default function DIDConnectContainer({
179
179
  borderBottomLeftRadius: 0,
180
180
  borderBottomRightRadius: 0,
181
181
  p: '2px',
182
- animation: 'glowBreathe 7s linear infinite',
183
182
  '.did-connect__root': {
184
183
  backgroundColor: 'transparent'
185
184
  },
186
185
  overflow: 'hidden',
186
+ animation: open ? 'glowBreathe 7s linear infinite' : 'none',
187
187
  '@keyframes glowBreathe': {
188
188
  '0%, 100%': {
189
189
  boxShadow: `
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box } from '@mui/material';
3
3
  import { useCreation, useSize } from 'ahooks';
4
4
  import { useRef } from 'react';
5
+ import useBrowser from '@arcblock/react-hooks/lib/useBrowser';
5
6
  import PoweredBy from './powered-by';
6
7
  import AppInfoItem from './app-info-item';
7
8
  import AppIcon from './app-icon';
@@ -13,6 +14,7 @@ export default function DIDConnectFooter({
13
14
  currentAppColor = globalThis.blocklet?.appPid ? getDIDColor(globalThis.blocklet?.appPid) : '#fff',
14
15
  sx
15
16
  }) {
17
+ const browser = useBrowser();
16
18
  const rootRef = useRef(null);
17
19
  const size = useSize(rootRef);
18
20
  const isSmallView = useCreation(() => {
@@ -32,7 +34,8 @@ export default function DIDConnectFooter({
32
34
  backgroundColor: hexToRgba(currentAppColor, 0.08),
33
35
  // 需要保持跟 .did-connect__root 的规则一样
34
36
  mx: isSmallView ? -2 : -3,
35
- px: isSmallView ? 2 : 3,
37
+ // eslint-disable-next-line no-nested-ternary
38
+ px: isSmallView ? browser.arcSphere ? 1 : 2 : 3,
36
39
  py: 1.5,
37
40
  // HACK: 极限条件下,footer 会溢出,使用隐藏的滚动条来处理这种情况(屏幕宽度小于 360 时会出现)
38
41
  overflow: 'auto',
@@ -1535,7 +1535,7 @@ export default function Products({
1535
1535
  return [{
1536
1536
  type: 'Group',
1537
1537
  label: t('groups.applications'),
1538
- children: [[{
1538
+ children: [{
1539
1539
  label: /*#__PURE__*/_jsx(Link, {
1540
1540
  to: `https://www.nftstudio.rocks/${locale}`,
1541
1541
  target: "_blank",
@@ -1553,7 +1553,16 @@ export default function Products({
1553
1553
  }),
1554
1554
  description: t('products.creatorStudio.description'),
1555
1555
  icon: /*#__PURE__*/_jsx(CreatorStudioSvg, {})
1556
- }], [{
1556
+ }, {
1557
+ label: /*#__PURE__*/_jsx(Link, {
1558
+ to: `https://www.aistro.io/${locale}`,
1559
+ target: "_blank",
1560
+ rel: "noreferrer noopener",
1561
+ children: "Aistro"
1562
+ }),
1563
+ description: t('products.aistro.description'),
1564
+ icon: /*#__PURE__*/_jsx(AistroSvg, {})
1565
+ }, {
1557
1566
  label: /*#__PURE__*/_jsx(Link, {
1558
1567
  to: "https://www.aigne.io/",
1559
1568
  target: "_blank",
@@ -1575,20 +1584,11 @@ export default function Products({
1575
1584
  }),
1576
1585
  description: t('products.arcsphere.description'),
1577
1586
  icon: /*#__PURE__*/_jsx(ArcSphereSvg, {})
1578
- }, {
1579
- label: /*#__PURE__*/_jsx(Link, {
1580
- to: `https://www.aistro.io/${locale}`,
1581
- target: "_blank",
1582
- rel: "noreferrer noopener",
1583
- children: "Aistro"
1584
- }),
1585
- description: t('products.aistro.description'),
1586
- icon: /*#__PURE__*/_jsx(AistroSvg, {})
1587
- }]]
1587
+ }]
1588
1588
  }, {
1589
1589
  type: 'Group',
1590
1590
  label: t('groups.components'),
1591
- children: [[{
1591
+ children: [{
1592
1592
  label: /*#__PURE__*/_jsx(Link, {
1593
1593
  to: `https://launcher.arcblock.io/${locale}`,
1594
1594
  target: "_blank",
@@ -1618,7 +1618,7 @@ export default function Products({
1618
1618
  src: PaymentKitPng,
1619
1619
  alt: "Payment Kit"
1620
1620
  })
1621
- }], [{
1621
+ }, {
1622
1622
  label: /*#__PURE__*/_jsx(Link, {
1623
1623
  to: `https://store.blocklet.dev/?locale=${locale}`,
1624
1624
  target: "_blank",
@@ -1636,11 +1636,11 @@ export default function Products({
1636
1636
  }),
1637
1637
  description: t('products.web3Kit.description'),
1638
1638
  icon: /*#__PURE__*/_jsx(Web3KitSvg, {})
1639
- }]]
1639
+ }]
1640
1640
  }, {
1641
1641
  type: 'Group',
1642
1642
  label: t('groups.computeStorage'),
1643
- children: [[{
1643
+ children: [{
1644
1644
  label: /*#__PURE__*/_jsx(Link, {
1645
1645
  to: `https://www.arcblock.io/content/collections/${locale}/blocklet`,
1646
1646
  target: "_blank",
@@ -1667,7 +1667,7 @@ export default function Products({
1667
1667
  }),
1668
1668
  description: t('products.abtNetwork.description'),
1669
1669
  icon: /*#__PURE__*/_jsx(AbtNetworkSvg, {})
1670
- }], [{
1670
+ }, {
1671
1671
  label: /*#__PURE__*/_jsx(Link, {
1672
1672
  to: `https://www.blocklet.io/${locale}/blocklet-server`,
1673
1673
  target: "_blank",
@@ -1685,11 +1685,11 @@ export default function Products({
1685
1685
  }),
1686
1686
  description: t('products.ocap.description'),
1687
1687
  icon: /*#__PURE__*/_jsx(OCAPSvg, {})
1688
- }]]
1688
+ }]
1689
1689
  }, {
1690
1690
  type: 'Group',
1691
1691
  label: t('groups.identity'),
1692
- children: [[{
1692
+ children: [{
1693
1693
  label: /*#__PURE__*/_jsx(Link, {
1694
1694
  to: `https://www.arcblock.io/content/collections/${locale}/did`,
1695
1695
  target: "_blank",
@@ -1716,7 +1716,7 @@ export default function Products({
1716
1716
  }),
1717
1717
  description: t('products.didNameService.description'),
1718
1718
  icon: /*#__PURE__*/_jsx(DidNameServiceSvg, {})
1719
- }], [{
1719
+ }, {
1720
1720
  label: /*#__PURE__*/_jsx(Link, {
1721
1721
  to: `https://www.arcblock.io/content/collections/${locale}/verifiable-credential`,
1722
1722
  target: "_blank",
@@ -1734,7 +1734,7 @@ export default function Products({
1734
1734
  }),
1735
1735
  description: t('products.didConnect.description'),
1736
1736
  icon: /*#__PURE__*/_jsx(DidConnectSvg, {})
1737
- }]]
1737
+ }]
1738
1738
  }];
1739
1739
  }, [t, locale, palette]);
1740
1740
  return /*#__PURE__*/_jsx(Wrapper, {
@@ -1743,11 +1743,11 @@ export default function Products({
1743
1743
  ...rest,
1744
1744
  children: groups.map(group => /*#__PURE__*/_jsx(SubItemGroup, {
1745
1745
  label: group.label,
1746
- children: group.children.map((rows, i) => /*#__PURE__*/_jsx(Grid, {
1746
+ children: /*#__PURE__*/_jsx(Grid, {
1747
1747
  container: true,
1748
1748
  columnSpacing: 1,
1749
1749
  rowSpacing: 1,
1750
- children: rows.map((item, j) => /*#__PURE__*/_jsx(Grid, {
1750
+ children: group.children.map(item => /*#__PURE__*/_jsx(Grid, {
1751
1751
  item: true,
1752
1752
  xs: 12,
1753
1753
  md: 6,
@@ -1759,8 +1759,8 @@ export default function Products({
1759
1759
  },
1760
1760
  ...item
1761
1761
  })
1762
- }, j))
1763
- }, i))
1762
+ }, item.description))
1763
+ })
1764
1764
  }, group.label))
1765
1765
  });
1766
1766
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.13.61",
3
+ "version": "2.13.63",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -71,14 +71,14 @@
71
71
  "react": ">=18.2.0",
72
72
  "react-router-dom": ">=6.22.3"
73
73
  },
74
- "gitHead": "af211a24eb0d7f0b24a3e15b8d7acff49edd7494",
74
+ "gitHead": "3ba664fa67f707517df7ba1958bc13870c253ac0",
75
75
  "dependencies": {
76
76
  "@arcblock/did-motif": "^1.1.13",
77
- "@arcblock/icons": "^2.13.61",
78
- "@arcblock/nft-display": "^2.13.61",
79
- "@arcblock/react-hooks": "^2.13.61",
77
+ "@arcblock/icons": "^2.13.63",
78
+ "@arcblock/nft-display": "^2.13.63",
79
+ "@arcblock/react-hooks": "^2.13.63",
80
80
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
81
- "@blocklet/theme": "^2.13.61",
81
+ "@blocklet/theme": "^2.13.63",
82
82
  "@fontsource/roboto": "~5.1.1",
83
83
  "@fontsource/ubuntu-mono": "^5.0.18",
84
84
  "@iconify-icons/logos": "^1.2.36",
@@ -137,39 +137,41 @@ export default function DIDConnectContainer({
137
137
 
138
138
  const backgroundGlow = `linear-gradient(45deg, ${colorListGlow.join(', ')})`;
139
139
 
140
- const glowStyle = {
141
- overflow: 'visible',
142
- '&::before, &::after': {
143
- content: '""',
144
- position: 'absolute',
145
- top: '-3px',
146
- right: '-3px',
147
- bottom: '-3px',
148
- left: '-3px',
149
- background,
150
- backgroundSize: '300% 300%',
151
- backgroundRepeat: 'no-repeat',
152
- animation: 'glowRotate 10s linear infinite',
153
- borderRadius: '14px !important',
154
- zIndex: 0,
155
- },
156
- '&::after': {
157
- background: backgroundGlow,
158
- filter: 'blur(15px)',
159
- },
140
+ const glowStyle = open
141
+ ? {
142
+ overflow: 'visible',
143
+ '&::before, &::after': {
144
+ content: '""',
145
+ position: 'absolute',
146
+ top: '-3px',
147
+ right: '-3px',
148
+ bottom: '-3px',
149
+ left: '-3px',
150
+ background,
151
+ backgroundSize: '300% 300%',
152
+ backgroundRepeat: 'no-repeat',
153
+ animation: 'glowRotate 10s linear infinite',
154
+ borderRadius: '14px !important',
155
+ zIndex: 0,
156
+ },
157
+ '&::after': {
158
+ background: backgroundGlow,
159
+ filter: 'blur(15px)',
160
+ },
160
161
 
161
- '@keyframes glowRotate': {
162
- '0%': {
163
- backgroundPosition: '0 0',
164
- },
165
- '50%': {
166
- backgroundPosition: '100% 0',
167
- },
168
- '100%': {
169
- backgroundPosition: '0 0',
170
- },
171
- },
172
- };
162
+ '@keyframes glowRotate': {
163
+ '0%': {
164
+ backgroundPosition: '0 0',
165
+ },
166
+ '50%': {
167
+ backgroundPosition: '100% 0',
168
+ },
169
+ '100%': {
170
+ backgroundPosition: '0 0',
171
+ },
172
+ },
173
+ }
174
+ : {};
173
175
 
174
176
  if (openVariant === 'page') {
175
177
  return (
@@ -223,11 +225,11 @@ export default function DIDConnectContainer({
223
225
  borderBottomLeftRadius: 0,
224
226
  borderBottomRightRadius: 0,
225
227
  p: '2px',
226
- animation: 'glowBreathe 7s linear infinite',
227
228
  '.did-connect__root': {
228
229
  backgroundColor: 'transparent',
229
230
  },
230
231
  overflow: 'hidden',
232
+ animation: open ? 'glowBreathe 7s linear infinite' : 'none',
231
233
  '@keyframes glowBreathe': {
232
234
  '0%, 100%': {
233
235
  boxShadow: `
@@ -1,6 +1,7 @@
1
1
  import { Box, SxProps } from '@mui/material';
2
2
  import { useCreation, useSize } from 'ahooks';
3
3
  import { useRef } from 'react';
4
+ import useBrowser from '@arcblock/react-hooks/lib/useBrowser';
4
5
 
5
6
  import PoweredBy from './powered-by';
6
7
  import AppInfoItem from './app-info-item';
@@ -18,6 +19,7 @@ export default function DIDConnectFooter({
18
19
  currentAppColor?: string;
19
20
  sx?: SxProps;
20
21
  }) {
22
+ const browser = useBrowser();
21
23
  const rootRef = useRef<HTMLDivElement>(null);
22
24
  const size = useSize(rootRef);
23
25
  const isSmallView = useCreation(() => {
@@ -40,7 +42,8 @@ export default function DIDConnectFooter({
40
42
  backgroundColor: hexToRgba(currentAppColor, 0.08),
41
43
  // 需要保持跟 .did-connect__root 的规则一样
42
44
  mx: isSmallView ? -2 : -3,
43
- px: isSmallView ? 2 : 3,
45
+ // eslint-disable-next-line no-nested-ternary
46
+ px: isSmallView ? (browser.arcSphere ? 1 : 2) : 3,
44
47
  py: 1.5,
45
48
  // HACK: 极限条件下,footer 会溢出,使用隐藏的滚动条来处理这种情况(屏幕宽度小于 360 时会出现)
46
49
  overflow: 'auto',
@@ -213,238 +213,219 @@ export default function Products({ className, isOpen, ...rest }: ProductsProps)
213
213
  type: 'Group',
214
214
  label: t('groups.applications'),
215
215
  children: [
216
- [
217
- {
218
- label: (
219
- <Link to={`https://www.nftstudio.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
220
- NFT Studio
221
- </Link>
222
- ),
223
- description: t('products.nftStudio.description'),
224
- icon: <NftStudioSvg />,
225
- },
226
- {
227
- label: (
228
- <Link
229
- to={`https://www.arcblock.io/content/collections/${locale}/creator-studio`}
230
- target="_blank"
231
- rel="noreferrer noopener">
232
- Creator Studio
233
- </Link>
234
- ),
235
- description: t('products.creatorStudio.description'),
236
- icon: <CreatorStudioSvg />,
237
- },
238
- ],
239
- [
240
- {
241
- label: (
242
- <Link to="https://www.aigne.io/" target="_blank" rel="noreferrer noopener">
243
- AIGNE
244
- </Link>
245
- ),
246
- description: t('products.aigne.description'),
247
- icon: <AigneSvg style={{ filter: palette.mode === 'dark' ? 'invert(1)' : 'none' }} />,
248
- },
249
- {
250
- label: (
251
- <Link to={`https://www.arcsphere.io/${locale}`} target="_blank" rel="noreferrer noopener">
252
- ArcSphere
253
- </Link>
254
- ),
255
- description: t('products.arcsphere.description'),
256
- icon: <ArcSphereSvg />,
257
- },
258
- {
259
- label: (
260
- <Link to={`https://www.aistro.io/${locale}`} target="_blank" rel="noreferrer noopener">
261
- Aistro
262
- </Link>
263
- ),
264
- description: t('products.aistro.description'),
265
- icon: <AistroSvg />,
266
- },
267
- ],
216
+ {
217
+ label: (
218
+ <Link to={`https://www.nftstudio.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
219
+ NFT Studio
220
+ </Link>
221
+ ),
222
+ description: t('products.nftStudio.description'),
223
+ icon: <NftStudioSvg />,
224
+ },
225
+ {
226
+ label: (
227
+ <Link
228
+ to={`https://www.arcblock.io/content/collections/${locale}/creator-studio`}
229
+ target="_blank"
230
+ rel="noreferrer noopener">
231
+ Creator Studio
232
+ </Link>
233
+ ),
234
+ description: t('products.creatorStudio.description'),
235
+ icon: <CreatorStudioSvg />,
236
+ },
237
+ {
238
+ label: (
239
+ <Link to={`https://www.aistro.io/${locale}`} target="_blank" rel="noreferrer noopener">
240
+ Aistro
241
+ </Link>
242
+ ),
243
+ description: t('products.aistro.description'),
244
+ icon: <AistroSvg />,
245
+ },
246
+ {
247
+ label: (
248
+ <Link to="https://www.aigne.io/" target="_blank" rel="noreferrer noopener">
249
+ AIGNE
250
+ </Link>
251
+ ),
252
+ description: t('products.aigne.description'),
253
+ icon: <AigneSvg style={{ filter: palette.mode === 'dark' ? 'invert(1)' : 'none' }} />,
254
+ },
255
+ {
256
+ label: (
257
+ <Link to={`https://www.arcsphere.io/${locale}`} target="_blank" rel="noreferrer noopener">
258
+ ArcSphere
259
+ </Link>
260
+ ),
261
+ description: t('products.arcsphere.description'),
262
+ icon: <ArcSphereSvg />,
263
+ },
268
264
  ],
269
265
  },
270
266
  {
271
267
  type: 'Group',
272
268
  label: t('groups.components'),
273
269
  children: [
274
- [
275
- {
276
- label: (
277
- <Link to={`https://launcher.arcblock.io/${locale}`} target="_blank" rel="noreferrer noopener">
278
- Blocklet Launcher
279
- </Link>
280
- ),
281
- description: t('products.blockletLauncher.description'),
282
- icon: <BlockletLauncherSvg />,
283
- },
284
- {
285
- label: (
286
- <Link to={`https://www.aikit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
287
- AI Kit
288
- </Link>
289
- ),
290
- description: t('products.aiKit.description'),
291
- icon: <AIKitSvg />,
292
- },
293
- {
294
- label: (
295
- <Link to={`https://www.blocklet.io/${locale}/payment-kit`} target="_blank" rel="noreferrer noopener">
296
- Payment Kit
297
- </Link>
298
- ),
299
- description: t('products.paymentKit.description'),
300
- icon: <img src={PaymentKitPng} alt="Payment Kit" />,
301
- },
302
- ],
303
- [
304
- {
305
- label: (
306
- <Link to={`https://store.blocklet.dev/?locale=${locale}`} target="_blank" rel="noreferrer noopener">
307
- Blocklet Store
308
- </Link>
309
- ),
310
- description: t('products.blockletStore.description'),
311
- icon: <BlockletStoreSvg />,
312
- },
313
- {
314
- label: (
315
- <Link to={`https://www.web3kit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
316
- Web3 Kit
317
- </Link>
318
- ),
319
- description: t('products.web3Kit.description'),
320
- icon: <Web3KitSvg />,
321
- },
322
- ],
270
+ {
271
+ label: (
272
+ <Link to={`https://launcher.arcblock.io/${locale}`} target="_blank" rel="noreferrer noopener">
273
+ Blocklet Launcher
274
+ </Link>
275
+ ),
276
+ description: t('products.blockletLauncher.description'),
277
+ icon: <BlockletLauncherSvg />,
278
+ },
279
+ {
280
+ label: (
281
+ <Link to={`https://www.aikit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
282
+ AI Kit
283
+ </Link>
284
+ ),
285
+ description: t('products.aiKit.description'),
286
+ icon: <AIKitSvg />,
287
+ },
288
+ {
289
+ label: (
290
+ <Link to={`https://www.blocklet.io/${locale}/payment-kit`} target="_blank" rel="noreferrer noopener">
291
+ Payment Kit
292
+ </Link>
293
+ ),
294
+ description: t('products.paymentKit.description'),
295
+ icon: <img src={PaymentKitPng} alt="Payment Kit" />,
296
+ },
297
+ {
298
+ label: (
299
+ <Link to={`https://store.blocklet.dev/?locale=${locale}`} target="_blank" rel="noreferrer noopener">
300
+ Blocklet Store
301
+ </Link>
302
+ ),
303
+ description: t('products.blockletStore.description'),
304
+ icon: <BlockletStoreSvg />,
305
+ },
306
+ {
307
+ label: (
308
+ <Link to={`https://www.web3kit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
309
+ Web3 Kit
310
+ </Link>
311
+ ),
312
+ description: t('products.web3Kit.description'),
313
+ icon: <Web3KitSvg />,
314
+ },
323
315
  ],
324
316
  },
325
317
  {
326
318
  type: 'Group',
327
319
  label: t('groups.computeStorage'),
328
320
  children: [
329
- [
330
- {
331
- label: (
332
- <Link
333
- to={`https://www.arcblock.io/content/collections/${locale}/blocklet`}
334
- target="_blank"
335
- rel="noreferrer noopener">
336
- Blocklet Framework
337
- </Link>
338
- ),
339
- description: t('products.blockletFramework.description'),
340
- icon: <BlockletFrameworkSvg />,
341
- },
342
- {
343
- label: (
344
- <Link to={`https://www.didspaces.com/${locale}`} target="_blank" rel="noreferrer noopener">
345
- DID Spaces
346
- </Link>
347
- ),
348
- description: t('products.didSpaces.description'),
349
- icon: <DidSvg />,
350
- },
351
- {
352
- label: (
353
- <Link to="https://main.abtnetwork.io/" target="_blank" rel="noreferrer noopener">
354
- ABT Network
355
- </Link>
356
- ),
357
- description: t('products.abtNetwork.description'),
358
- icon: <AbtNetworkSvg />,
359
- },
360
- ],
361
- [
362
- {
363
- label: (
364
- <Link
365
- to={`https://www.blocklet.io/${locale}/blocklet-server`}
366
- target="_blank"
367
- rel="noreferrer noopener">
368
- Blocklet Server
369
- </Link>
370
- ),
371
- description: t('products.blockletServer.description'),
372
- icon: <BlockletServerSvg />,
373
- },
374
- {
375
- label: (
376
- <Link
377
- to={`https://www.arcblock.io/content/collections/${locale}/ocap`}
378
- target="_blank"
379
- rel="noreferrer noopener">
380
- ОСАР
381
- </Link>
382
- ),
383
- description: t('products.ocap.description'),
384
- icon: <OCAPSvg />,
385
- },
386
- ],
321
+ {
322
+ label: (
323
+ <Link
324
+ to={`https://www.arcblock.io/content/collections/${locale}/blocklet`}
325
+ target="_blank"
326
+ rel="noreferrer noopener">
327
+ Blocklet Framework
328
+ </Link>
329
+ ),
330
+ description: t('products.blockletFramework.description'),
331
+ icon: <BlockletFrameworkSvg />,
332
+ },
333
+ {
334
+ label: (
335
+ <Link to={`https://www.didspaces.com/${locale}`} target="_blank" rel="noreferrer noopener">
336
+ DID Spaces
337
+ </Link>
338
+ ),
339
+ description: t('products.didSpaces.description'),
340
+ icon: <DidSvg />,
341
+ },
342
+ {
343
+ label: (
344
+ <Link to="https://main.abtnetwork.io/" target="_blank" rel="noreferrer noopener">
345
+ ABT Network
346
+ </Link>
347
+ ),
348
+ description: t('products.abtNetwork.description'),
349
+ icon: <AbtNetworkSvg />,
350
+ },
351
+ {
352
+ label: (
353
+ <Link to={`https://www.blocklet.io/${locale}/blocklet-server`} target="_blank" rel="noreferrer noopener">
354
+ Blocklet Server
355
+ </Link>
356
+ ),
357
+ description: t('products.blockletServer.description'),
358
+ icon: <BlockletServerSvg />,
359
+ },
360
+ {
361
+ label: (
362
+ <Link
363
+ to={`https://www.arcblock.io/content/collections/${locale}/ocap`}
364
+ target="_blank"
365
+ rel="noreferrer noopener">
366
+ ОСАР
367
+ </Link>
368
+ ),
369
+ description: t('products.ocap.description'),
370
+ icon: <OCAPSvg />,
371
+ },
387
372
  ],
388
373
  },
389
374
  {
390
375
  type: 'Group',
391
376
  label: t('groups.identity'),
392
377
  children: [
393
- [
394
- {
395
- label: (
396
- <Link
397
- to={`https://www.arcblock.io/content/collections/${locale}/did`}
398
- target="_blank"
399
- rel="noreferrer noopener">
400
- DID
401
- </Link>
402
- ),
403
- description: t('products.did.description'),
404
- icon: <DidSvg />,
405
- },
406
- {
407
- label: (
408
- <Link to={`https://www.didwallet.io/${locale}`} target="_blank" rel="noreferrer noopener">
409
- DID Wallet
410
- </Link>
411
- ),
412
- description: t('products.didWallet.description'),
413
- icon: <DidWalletSvg />,
414
- },
415
- {
416
- label: (
417
- <Link to={`https://www.didnames.io/${locale}`} target="_blank" rel="noreferrer noopener">
418
- DID Names
419
- </Link>
420
- ),
421
- description: t('products.didNameService.description'),
422
- icon: <DidNameServiceSvg />,
423
- },
424
- ],
425
- [
426
- {
427
- label: (
428
- <Link
429
- to={`https://www.arcblock.io/content/collections/${locale}/verifiable-credential`}
430
- target="_blank"
431
- rel="noreferrer noopener">
432
- VC
433
- </Link>
434
- ),
435
- description: t('products.vc.description'),
436
- icon: <VCSvg />,
437
- },
438
- {
439
- label: (
440
- <Link to={`https://www.didconnect.io/${locale}`} target="_blank" rel="noreferrer noopener">
441
- DID Connect
442
- </Link>
443
- ),
444
- description: t('products.didConnect.description'),
445
- icon: <DidConnectSvg />,
446
- },
447
- ],
378
+ {
379
+ label: (
380
+ <Link
381
+ to={`https://www.arcblock.io/content/collections/${locale}/did`}
382
+ target="_blank"
383
+ rel="noreferrer noopener">
384
+ DID
385
+ </Link>
386
+ ),
387
+ description: t('products.did.description'),
388
+ icon: <DidSvg />,
389
+ },
390
+ {
391
+ label: (
392
+ <Link to={`https://www.didwallet.io/${locale}`} target="_blank" rel="noreferrer noopener">
393
+ DID Wallet
394
+ </Link>
395
+ ),
396
+ description: t('products.didWallet.description'),
397
+ icon: <DidWalletSvg />,
398
+ },
399
+ {
400
+ label: (
401
+ <Link to={`https://www.didnames.io/${locale}`} target="_blank" rel="noreferrer noopener">
402
+ DID Names
403
+ </Link>
404
+ ),
405
+ description: t('products.didNameService.description'),
406
+ icon: <DidNameServiceSvg />,
407
+ },
408
+ {
409
+ label: (
410
+ <Link
411
+ to={`https://www.arcblock.io/content/collections/${locale}/verifiable-credential`}
412
+ target="_blank"
413
+ rel="noreferrer noopener">
414
+ VC
415
+ </Link>
416
+ ),
417
+ description: t('products.vc.description'),
418
+ icon: <VCSvg />,
419
+ },
420
+ {
421
+ label: (
422
+ <Link to={`https://www.didconnect.io/${locale}`} target="_blank" rel="noreferrer noopener">
423
+ DID Connect
424
+ </Link>
425
+ ),
426
+ description: t('products.didConnect.description'),
427
+ icon: <DidConnectSvg />,
428
+ },
448
429
  ],
449
430
  },
450
431
  ];
@@ -454,15 +435,13 @@ export default function Products({ className, isOpen, ...rest }: ProductsProps)
454
435
  <Wrapper ref={wrapperRef} className={`is-${mode} ${className}`} {...rest}>
455
436
  {groups.map((group) => (
456
437
  <SubItemGroup key={group.label} label={group.label}>
457
- {group.children.map((rows, i) => (
458
- <Grid container key={i} columnSpacing={1} rowSpacing={1}>
459
- {rows.map((item, j) => (
460
- <Grid item xs={12} md={6} lg={4} key={j}>
461
- <Item variant="panel" style={{ padding: '8px' }} {...item} />
462
- </Grid>
463
- ))}
464
- </Grid>
465
- ))}
438
+ <Grid container columnSpacing={1} rowSpacing={1}>
439
+ {group.children.map((item) => (
440
+ <Grid item xs={12} md={6} lg={4} key={item.description}>
441
+ <Item variant="panel" style={{ padding: '8px' }} {...item} />
442
+ </Grid>
443
+ ))}
444
+ </Grid>
466
445
  </SubItemGroup>
467
446
  ))}
468
447
  </Wrapper>