@arcblock/ux 3.0.39 → 3.0.41

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.
@@ -9,12 +9,10 @@ import { useNavMenuContext } from './nav-menu-context';
9
9
  import { translate } from '../Locale/util';
10
10
  import { useLocaleContext } from '../Locale/context';
11
11
 
12
+ // Arcblock Icons
12
13
  import AIKitSvg from './images/ai-kit.svg?react';
13
14
  import NftStudioSvg from './images/nft-studio.svg?react';
14
15
  import CreatorStudioSvg from './images/creator-studio.svg?react';
15
- import AigneSvg from './images/aigne.svg?react';
16
- import ArcSphereSvg from './images/arcsphere.svg?react';
17
- import AistroSvg from './images/aistro.svg?react';
18
16
  import BlockletLauncherSvg from './images/blocklet-launcher.svg?react';
19
17
  import BlockletStoreSvg from './images/blocklet-store.svg?react';
20
18
  import Web3KitSvg from './images/web3-kit.svg?react';
@@ -29,6 +27,11 @@ import VCSvg from './images/vc.svg?react';
29
27
  import DidConnectSvg from './images/did-connect.svg?react';
30
28
  import PaymentKitPng from './images/payment-kit.png';
31
29
 
30
+ // AIGNE Icons
31
+ import AigneSvg from './images/aigne.svg?react';
32
+ import ArcSphereSvg from './images/arcsphere.svg?react';
33
+ import AistroPng from './images/aistro.png';
34
+
32
35
  const translations = {
33
36
  en: {
34
37
  groups: {
@@ -36,6 +39,8 @@ const translations = {
36
39
  components: 'Components',
37
40
  computeStorage: 'Compute/Storage',
38
41
  identity: 'Identity',
42
+ frameworkTools: 'Framework & tools',
43
+ modelsAdapters: 'Models adapters',
39
44
  },
40
45
  products: {
41
46
  nftStudio: {
@@ -45,7 +50,7 @@ const translations = {
45
50
  description: 'All-in-one creator tool',
46
51
  },
47
52
  aigne: {
48
- description: 'Your AI assistant',
53
+ description: 'The Agentic Ecosystem for AI Apps',
49
54
  },
50
55
  arcsphere: {
51
56
  description: 'AI native browser',
@@ -98,6 +103,30 @@ const translations = {
98
103
  didConnect: {
99
104
  description: 'Passwordless login',
100
105
  },
106
+ aigneCodeSmith: {
107
+ description: 'Review and improve your code with AI',
108
+ },
109
+ aigneDocSmith: {
110
+ description: 'Generate and update docs with AI',
111
+ },
112
+ aigneWebSmith: {
113
+ description: 'Build and deploy AI-powered web apps',
114
+ },
115
+ aigneCLI: {
116
+ description: 'Develop agents from the command line',
117
+ },
118
+ aigneObservability: {
119
+ description: 'Understand and inspect agent behavior',
120
+ },
121
+ aigneStudio: {
122
+ description: 'Create agents visually, no code needed',
123
+ },
124
+ aigneFramework: {
125
+ description: 'The functional core of agentic AI',
126
+ },
127
+ aigneHub: {
128
+ description: 'One API. Any Model',
129
+ },
101
130
  },
102
131
  },
103
132
  zh: {
@@ -106,6 +135,8 @@ const translations = {
106
135
  components: '组件',
107
136
  computeStorage: '计算/存储',
108
137
  identity: '身份',
138
+ frameworkTools: '框架与工具',
139
+ modelsAdapters: '模型适配器',
109
140
  },
110
141
  products: {
111
142
  nftStudio: {
@@ -115,7 +146,7 @@ const translations = {
115
146
  description: '一体化创作工具',
116
147
  },
117
148
  aigne: {
118
- description: '您的人工智能助手',
149
+ description: 'AI 应用的代理生态系统',
119
150
  },
120
151
  arcsphere: {
121
152
  description: 'AI 原生浏览器',
@@ -168,6 +199,30 @@ const translations = {
168
199
  didConnect: {
169
200
  description: '无密码登录',
170
201
  },
202
+ aigneCodeSmith: {
203
+ description: '使用 AI 审查并优化你的代码',
204
+ },
205
+ aigneDocSmith: {
206
+ description: '用 AI 生成和更新项目文档',
207
+ },
208
+ aigneWebSmith: {
209
+ description: '构建并部署 AI 驱动的 Web 应用',
210
+ },
211
+ aigneCLI: {
212
+ description: '通过命令行开发 Agent',
213
+ },
214
+ aigneObservability: {
215
+ description: '理解并分析 Agent 的行为',
216
+ },
217
+ aigneStudio: {
218
+ description: '零代码构建 Agent',
219
+ },
220
+ aigneFramework: {
221
+ description: 'Agent AI 的功能核心框架',
222
+ },
223
+ aigneHub: {
224
+ description: '一套 API,连接所有模型',
225
+ },
171
226
  },
172
227
  },
173
228
  };
@@ -197,240 +252,367 @@ const Wrapper = styled(Box)`
197
252
  }
198
253
  `;
199
254
 
200
- export interface ProductsProps extends BoxProps {
201
- isOpen?: boolean;
255
+ function AigneIcon({ color = 'black', backgroundColor = 'transparent' }: { color?: string; backgroundColor?: string }) {
256
+ return (
257
+ <Box
258
+ component="span"
259
+ sx={{
260
+ display: 'inline-flex',
261
+ alignItems: 'center',
262
+ justifyContent: 'center',
263
+ color,
264
+ backgroundColor,
265
+ borderRadius: '4px',
266
+ }}>
267
+ <AigneSvg />
268
+ </Box>
269
+ );
202
270
  }
203
271
 
204
- // FIXME: @lixl39505 isOpen 没有用,是否要移除?
205
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
206
- export default function Products({ className, isOpen = undefined, ...rest }: ProductsProps) {
272
+ export type ProductsType = 'AIGNE' | 'ARCBLOCK';
273
+ export interface ProductsProps extends BoxProps {
274
+ type: ProductsType;
275
+ }
276
+ export default function Products({ className, type, ...rest }: ProductsProps) {
207
277
  const { mode } = useNavMenuContext();
208
278
  const { palette } = useTheme();
209
279
  const wrapperRef = useRef<HTMLDivElement>(null);
210
280
  const { locale = 'en' } = useLocaleContext() || {};
211
281
  const t = useMemoizedFn((key, data = {}) => translate(translations, key, locale, 'en', data));
282
+
212
283
  const groups = useCreation(() => {
213
- return [
214
- {
215
- type: 'Group',
216
- label: t('groups.applications'),
217
- children: [
218
- {
219
- label: (
220
- <Link to={`https://www.nftstudio.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
221
- NFT Studio
222
- </Link>
223
- ),
224
- description: t('products.nftStudio.description'),
225
- icon: <NftStudioSvg />,
226
- },
227
- {
228
- label: (
229
- <Link
230
- to={`https://www.arcblock.io/content/collections/${locale}/creator-studio`}
231
- target="_blank"
232
- rel="noreferrer noopener">
233
- Creator Studio
234
- </Link>
235
- ),
236
- description: t('products.creatorStudio.description'),
237
- icon: <CreatorStudioSvg />,
238
- },
239
- {
240
- label: (
241
- <Link to={`https://www.aistro.io/${locale}`} target="_blank" rel="noreferrer noopener">
242
- Aistro
243
- </Link>
244
- ),
245
- description: t('products.aistro.description'),
246
- icon: <AistroSvg />,
247
- },
248
- {
249
- label: (
250
- <Link to="https://www.aigne.io/" target="_blank" rel="noreferrer noopener">
251
- AIGNE
252
- </Link>
253
- ),
254
- description: t('products.aigne.description'),
255
- icon: <AigneSvg style={{ filter: palette.mode === 'dark' ? 'invert(1)' : 'none' }} />,
256
- },
257
- {
258
- label: (
259
- <Link to={`https://www.arcsphere.io/${locale}`} target="_blank" rel="noreferrer noopener">
260
- ArcSphere
261
- </Link>
262
- ),
263
- description: t('products.arcsphere.description'),
264
- icon: <ArcSphereSvg />,
265
- },
266
- ],
267
- },
268
- {
269
- type: 'Group',
270
- label: t('groups.components'),
271
- children: [
272
- {
273
- label: (
274
- <Link to={`https://launcher.arcblock.io/${locale}`} target="_blank" rel="noreferrer noopener">
275
- Blocklet Launcher
276
- </Link>
277
- ),
278
- description: t('products.blockletLauncher.description'),
279
- icon: <BlockletLauncherSvg />,
280
- },
281
- {
282
- label: (
283
- <Link to={`https://www.aikit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
284
- AI Kit
285
- </Link>
286
- ),
287
- description: t('products.aiKit.description'),
288
- icon: <AIKitSvg />,
289
- },
290
- {
291
- label: (
292
- <Link to={`https://www.blocklet.io/${locale}/payment-kit`} target="_blank" rel="noreferrer noopener">
293
- Payment Kit
294
- </Link>
295
- ),
296
- description: t('products.paymentKit.description'),
297
- icon: <img src={PaymentKitPng} alt="Payment Kit" />,
298
- },
299
- {
300
- label: (
301
- <Link to={`https://store.blocklet.dev/?locale=${locale}`} target="_blank" rel="noreferrer noopener">
302
- Blocklet Store
303
- </Link>
304
- ),
305
- description: t('products.blockletStore.description'),
306
- icon: <BlockletStoreSvg />,
307
- },
308
- {
309
- label: (
310
- <Link to={`https://www.web3kit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
311
- Web3 Kit
312
- </Link>
313
- ),
314
- description: t('products.web3Kit.description'),
315
- icon: <Web3KitSvg />,
316
- },
317
- ],
318
- },
319
- {
320
- type: 'Group',
321
- label: t('groups.computeStorage'),
322
- children: [
323
- {
324
- label: (
325
- <Link
326
- to={`https://www.arcblock.io/content/collections/${locale}/blocklet`}
327
- target="_blank"
328
- rel="noreferrer noopener">
329
- Blocklet Framework
330
- </Link>
331
- ),
332
- description: t('products.blockletFramework.description'),
333
- icon: <BlockletFrameworkSvg />,
334
- },
335
- {
336
- label: (
337
- <Link to={`https://www.didspaces.com/${locale}`} target="_blank" rel="noreferrer noopener">
338
- DID Spaces
339
- </Link>
340
- ),
341
- description: t('products.didSpaces.description'),
342
- icon: <DidSvg />,
343
- },
344
- {
345
- label: (
346
- <Link to="https://main.abtnetwork.io/" target="_blank" rel="noreferrer noopener">
347
- ABT Network
348
- </Link>
349
- ),
350
- description: t('products.abtNetwork.description'),
351
- icon: <AbtNetworkSvg />,
352
- },
353
- {
354
- label: (
355
- <Link to={`https://www.blocklet.io/${locale}/blocklet-server`} target="_blank" rel="noreferrer noopener">
356
- Blocklet Server
357
- </Link>
358
- ),
359
- description: t('products.blockletServer.description'),
360
- icon: <BlockletServerSvg />,
361
- },
362
- {
363
- label: (
364
- <Link
365
- to={`https://www.arcblock.io/content/collections/${locale}/ocap`}
366
- target="_blank"
367
- rel="noreferrer noopener">
368
- ОСАР
369
- </Link>
370
- ),
371
- description: t('products.ocap.description'),
372
- icon: <OCAPSvg />,
373
- },
374
- ],
375
- },
376
- {
377
- type: 'Group',
378
- label: t('groups.identity'),
379
- children: [
380
- {
381
- label: (
382
- <Link
383
- to={`https://www.arcblock.io/content/collections/${locale}/did`}
384
- target="_blank"
385
- rel="noreferrer noopener">
386
- DID
387
- </Link>
388
- ),
389
- description: t('products.did.description'),
390
- icon: <DidSvg />,
391
- },
392
- {
393
- label: (
394
- <Link to={`https://www.didwallet.io/${locale}`} target="_blank" rel="noreferrer noopener">
395
- DID Wallet
396
- </Link>
397
- ),
398
- description: t('products.didWallet.description'),
399
- icon: <DidWalletSvg />,
400
- },
401
- {
402
- label: (
403
- <Link to={`https://www.didnames.io/${locale}`} target="_blank" rel="noreferrer noopener">
404
- DID Names
405
- </Link>
406
- ),
407
- description: t('products.didNameService.description'),
408
- icon: <DidNameServiceSvg />,
409
- },
410
- {
411
- label: (
412
- <Link
413
- to={`https://www.arcblock.io/content/collections/${locale}/verifiable-credential`}
414
- target="_blank"
415
- rel="noreferrer noopener">
416
- VC
417
- </Link>
418
- ),
419
- description: t('products.vc.description'),
420
- icon: <VCSvg />,
421
- },
422
- {
423
- label: (
424
- <Link to={`https://www.didconnect.io/${locale}`} target="_blank" rel="noreferrer noopener">
425
- DID Connect
426
- </Link>
427
- ),
428
- description: t('products.didConnect.description'),
429
- icon: <DidConnectSvg />,
430
- },
431
- ],
432
- },
433
- ];
284
+ if (type === 'ARCBLOCK') {
285
+ return [
286
+ {
287
+ type: 'Group',
288
+ label: t('groups.applications'),
289
+ children: [
290
+ {
291
+ label: (
292
+ <Link to={`https://www.nftstudio.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
293
+ NFT Studio
294
+ </Link>
295
+ ),
296
+ description: t('products.nftStudio.description'),
297
+ icon: <NftStudioSvg />,
298
+ },
299
+ {
300
+ label: (
301
+ <Link
302
+ to={`https://www.arcblock.io/content/collections/${locale}/creator-studio`}
303
+ target="_blank"
304
+ rel="noreferrer noopener">
305
+ Creator Studio
306
+ </Link>
307
+ ),
308
+ description: t('products.creatorStudio.description'),
309
+ icon: <CreatorStudioSvg />,
310
+ },
311
+ {
312
+ label: (
313
+ <Link to="https://www.aigne.io/" target="_blank" rel="noreferrer noopener">
314
+ AIGNE
315
+ </Link>
316
+ ),
317
+ description: t('products.aigne.description'),
318
+ icon: <AigneIcon color={palette.mode === 'dark' ? 'white' : 'black'} />,
319
+ },
320
+ {
321
+ label: (
322
+ <Link to={`https://www.arcsphere.io/${locale}`} target="_blank" rel="noreferrer noopener">
323
+ ArcSphere
324
+ </Link>
325
+ ),
326
+ description: t('products.arcsphere.description'),
327
+ icon: <ArcSphereSvg />,
328
+ },
329
+ ],
330
+ },
331
+ {
332
+ type: 'Group',
333
+ label: t('groups.components'),
334
+ children: [
335
+ {
336
+ label: (
337
+ <Link to={`https://launcher.arcblock.io/${locale}`} target="_blank" rel="noreferrer noopener">
338
+ Blocklet Launcher
339
+ </Link>
340
+ ),
341
+ description: t('products.blockletLauncher.description'),
342
+ icon: <BlockletLauncherSvg />,
343
+ },
344
+ {
345
+ label: (
346
+ <Link to="https://www.aigne.io/hub" target="_blank" rel="noreferrer noopener">
347
+ AI Kit
348
+ </Link>
349
+ ),
350
+ description: t('products.aiKit.description'),
351
+ icon: <AIKitSvg />,
352
+ },
353
+ {
354
+ label: (
355
+ <Link to={`https://www.blocklet.io/${locale}/payment-kit`} target="_blank" rel="noreferrer noopener">
356
+ Payment Kit
357
+ </Link>
358
+ ),
359
+ description: t('products.paymentKit.description'),
360
+ icon: <img src={PaymentKitPng} alt="Payment Kit" />,
361
+ },
362
+ {
363
+ label: (
364
+ <Link to={`https://store.blocklet.dev/?locale=${locale}`} target="_blank" rel="noreferrer noopener">
365
+ Blocklet Store
366
+ </Link>
367
+ ),
368
+ description: t('products.blockletStore.description'),
369
+ icon: <BlockletStoreSvg />,
370
+ },
371
+ {
372
+ label: (
373
+ <Link to={`https://www.web3kit.rocks/${locale}`} target="_blank" rel="noreferrer noopener">
374
+ Web3 Kit
375
+ </Link>
376
+ ),
377
+ description: t('products.web3Kit.description'),
378
+ icon: <Web3KitSvg />,
379
+ },
380
+ ],
381
+ },
382
+ {
383
+ type: 'Group',
384
+ label: t('groups.computeStorage'),
385
+ children: [
386
+ {
387
+ label: (
388
+ <Link
389
+ to={`https://www.arcblock.io/content/collections/${locale}/blocklet`}
390
+ target="_blank"
391
+ rel="noreferrer noopener">
392
+ Blocklet Framework
393
+ </Link>
394
+ ),
395
+ description: t('products.blockletFramework.description'),
396
+ icon: <BlockletFrameworkSvg />,
397
+ },
398
+ {
399
+ label: (
400
+ <Link to={`https://www.didspaces.com/${locale}`} target="_blank" rel="noreferrer noopener">
401
+ DID Spaces
402
+ </Link>
403
+ ),
404
+ description: t('products.didSpaces.description'),
405
+ icon: <DidSvg />,
406
+ },
407
+ {
408
+ label: (
409
+ <Link to="https://main.abtnetwork.io/" target="_blank" rel="noreferrer noopener">
410
+ ABT Network
411
+ </Link>
412
+ ),
413
+ description: t('products.abtNetwork.description'),
414
+ icon: <AbtNetworkSvg />,
415
+ },
416
+ {
417
+ label: (
418
+ <Link
419
+ to={`https://www.blocklet.io/${locale}/blocklet-server`}
420
+ target="_blank"
421
+ rel="noreferrer noopener">
422
+ Blocklet Server
423
+ </Link>
424
+ ),
425
+ description: t('products.blockletServer.description'),
426
+ icon: <BlockletServerSvg />,
427
+ },
428
+ {
429
+ label: (
430
+ <Link
431
+ to={`https://www.arcblock.io/content/collections/${locale}/ocap`}
432
+ target="_blank"
433
+ rel="noreferrer noopener">
434
+ ОСАР
435
+ </Link>
436
+ ),
437
+ description: t('products.ocap.description'),
438
+ icon: <OCAPSvg />,
439
+ },
440
+ ],
441
+ },
442
+ {
443
+ type: 'Group',
444
+ label: t('groups.identity'),
445
+ children: [
446
+ {
447
+ label: (
448
+ <Link
449
+ to={`https://www.arcblock.io/content/collections/${locale}/did`}
450
+ target="_blank"
451
+ rel="noreferrer noopener">
452
+ DID
453
+ </Link>
454
+ ),
455
+ description: t('products.did.description'),
456
+ icon: <DidSvg />,
457
+ },
458
+ {
459
+ label: (
460
+ <Link to={`https://www.didwallet.io/${locale}`} target="_blank" rel="noreferrer noopener">
461
+ DID Wallet
462
+ </Link>
463
+ ),
464
+ description: t('products.didWallet.description'),
465
+ icon: <DidWalletSvg />,
466
+ },
467
+ {
468
+ label: (
469
+ <Link to={`https://www.didnames.io/${locale}`} target="_blank" rel="noreferrer noopener">
470
+ DID Names
471
+ </Link>
472
+ ),
473
+ description: t('products.didNameService.description'),
474
+ icon: <DidNameServiceSvg />,
475
+ },
476
+ {
477
+ label: (
478
+ <Link
479
+ to={`https://www.arcblock.io/content/collections/${locale}/verifiable-credential`}
480
+ target="_blank"
481
+ rel="noreferrer noopener">
482
+ VC
483
+ </Link>
484
+ ),
485
+ description: t('products.vc.description'),
486
+ icon: <VCSvg />,
487
+ },
488
+ {
489
+ label: (
490
+ <Link to={`https://www.didconnect.io/${locale}`} target="_blank" rel="noreferrer noopener">
491
+ DID Connect
492
+ </Link>
493
+ ),
494
+ description: t('products.didConnect.description'),
495
+ icon: <DidConnectSvg />,
496
+ },
497
+ ],
498
+ },
499
+ ];
500
+ }
501
+
502
+ if (type === 'AIGNE') {
503
+ return [
504
+ {
505
+ type: 'Group',
506
+ label: t('groups.applications'),
507
+ children: [
508
+ {
509
+ label: (
510
+ <Link to={`https://www.arcsphere.io/${locale}`} target="_blank" rel="noreferrer noopener">
511
+ ArcSphere
512
+ </Link>
513
+ ),
514
+ description: t('products.arcsphere.description'),
515
+ icon: <ArcSphereSvg />,
516
+ },
517
+ {
518
+ label: (
519
+ <Link to={`https://www.aistro.io/${locale}`} target="_blank" rel="noreferrer noopener">
520
+ Aistro
521
+ </Link>
522
+ ),
523
+ description: t('products.aistro.description'),
524
+ icon: <img src={AistroPng} alt="Aistro" />,
525
+ },
526
+ {
527
+ label: (
528
+ <Link to="https://www.aigne.io/doc-smith" target="_blank" rel="noreferrer noopener">
529
+ AIGNE CodeSmith
530
+ </Link>
531
+ ),
532
+ description: t('products.aigneCodeSmith.description'),
533
+ icon: <AigneIcon color="#56a596" backgroundColor="#e9fcf6" />,
534
+ },
535
+ {
536
+ label: (
537
+ <Link to="https://www.aigne.io/code-smith" target="_blank" rel="noreferrer noopener">
538
+ AIGNE DocSmith
539
+ </Link>
540
+ ),
541
+ description: t('products.aigneDocSmith.description'),
542
+ icon: <AigneIcon color="#e46f38" backgroundColor="#f7e0d7" />,
543
+ },
544
+ {
545
+ label: (
546
+ <Link to="https://www.aigne.io/web-smith" target="_blank" rel="noreferrer noopener">
547
+ AIGNE WebSmith
548
+ </Link>
549
+ ),
550
+ description: t('products.aigneWebSmith.description'),
551
+ icon: <AigneIcon color="#7c45eb" backgroundColor="#f0e9ff" />,
552
+ },
553
+ ],
554
+ },
555
+ {
556
+ type: 'Group',
557
+ label: t('groups.frameworkTools'),
558
+ children: [
559
+ {
560
+ label: (
561
+ <Link to="https://www.aigne.io/cli" target="_blank" rel="noreferrer noopener">
562
+ AIGNE CLI
563
+ </Link>
564
+ ),
565
+ description: t('products.aigneCLI.description'),
566
+ icon: <AigneIcon color="#d05d4e" backgroundColor="#faeaea" />,
567
+ },
568
+ {
569
+ label: (
570
+ <Link to="https://www.aigne.io/observability" target="_blank" rel="noreferrer noopener">
571
+ AIGNE Observability
572
+ </Link>
573
+ ),
574
+ description: t('products.aigneObservability.description'),
575
+ icon: <AigneIcon color="#6ba456" backgroundColor="#edfae8" />,
576
+ },
577
+ {
578
+ label: (
579
+ <Link to="https://www.aigne.io/studio" target="_blank" rel="noreferrer noopener">
580
+ AIGNE Studio
581
+ </Link>
582
+ ),
583
+ description: t('products.aigneStudio.description'),
584
+ icon: <AigneIcon color="#676cbf" backgroundColor="#edeeff" />,
585
+ },
586
+ {
587
+ label: (
588
+ <Link to="https://www.aigne.io/framework" target="_blank" rel="noreferrer noopener">
589
+ AIGNE Framework
590
+ </Link>
591
+ ),
592
+ description: t('products.aigneFramework.description'),
593
+ icon: <AigneIcon color="#5086d0" backgroundColor="#eef4ff" />,
594
+ },
595
+ ],
596
+ },
597
+ {
598
+ type: 'Group',
599
+ label: t('groups.modelsAdapters'),
600
+ children: [
601
+ {
602
+ label: (
603
+ <Link to="https://www.aigne.io/hub" target="_blank" rel="noreferrer noopener">
604
+ AIGNE Hub
605
+ </Link>
606
+ ),
607
+ description: t('products.aigneHub.description'),
608
+ icon: <AigneIcon color="#e4930b" backgroundColor="#fbf4d4" />,
609
+ },
610
+ ],
611
+ },
612
+ ];
613
+ }
614
+
615
+ return [];
434
616
  }, [t, locale, palette]);
435
617
 
436
618
  return (