@arcblock/ux 2.10.57 → 2.10.59

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.
@@ -8,6 +8,11 @@ export interface IBlockletStore extends CardProps {
8
8
  avatar: string;
9
9
  author: string;
10
10
  download: string;
11
+ official?: {
12
+ tooltip: React.ReactNode;
13
+ size?: number;
14
+ color?: string;
15
+ };
11
16
  button?: React.ReactNode;
12
17
  buttonText?: string;
13
18
  buttonDisabled?: boolean;
@@ -2,11 +2,13 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import React, { isValidElement } from 'react';
3
3
  import Download from '@iconify-icons/tabler/cloud-download';
4
4
  import { Icon } from '@iconify/react';
5
- import { Card, CircularProgress, Stack, Typography } from '@mui/material';
5
+ import VerifiedIcon from '@mui/icons-material/Verified';
6
+ import { Box, Card, CircularProgress, Stack, Typography } from '@mui/material';
6
7
  import Avatar from '../Avatar';
7
8
  import Button from '../Button';
8
9
  import { useTheme } from '../Theme';
9
10
  import IconText from './components/icon-text';
11
+ import TooltipIcon from './tooltip-icon';
10
12
  import { formatDownloadCount, strippedString } from './utils';
11
13
  export default function BlockletStore(props) {
12
14
  const {
@@ -17,6 +19,7 @@ export default function BlockletStore(props) {
17
19
  author,
18
20
  download,
19
21
  did,
22
+ official,
20
23
  buttonText = 'Install',
21
24
  buttonDisabled,
22
25
  buttonLoading,
@@ -74,24 +77,52 @@ export default function BlockletStore(props) {
74
77
  children: [/*#__PURE__*/_jsxs(Stack, {
75
78
  flex: 1,
76
79
  direction: "row",
77
- gap: 2,
80
+ gap: 1,
78
81
  alignItems: "center",
79
82
  overflow: "hidden",
83
+ sx: {
84
+ '& > *': {
85
+ flexShrink: 0
86
+ }
87
+ },
80
88
  children: [/*#__PURE__*/_jsx(Avatar, {
81
89
  src: cover,
82
90
  did: did,
83
91
  size: 48,
84
- variant: "rounded"
92
+ variant: "rounded",
93
+ style: {
94
+ borderRadius: '8px',
95
+ overflow: 'hidden'
96
+ }
85
97
  }), /*#__PURE__*/_jsx(Typography, {
86
- flex: 1,
87
- fontWeight: "typography.fontWeightMedium",
98
+ className: "blocklet-title",
99
+ fontWeight: "fontWeightMedium",
88
100
  sx: {
89
101
  fontSize: 16,
90
102
  textOverflow: 'ellipsis',
91
103
  whiteSpace: 'nowrap',
92
- overflow: 'hidden'
104
+ overflow: 'hidden',
105
+ pl: 0.5,
106
+ '&&': {
107
+ flexShrink: 1
108
+ }
93
109
  },
94
110
  ...titleProps
111
+ }), /*#__PURE__*/_jsx(Box, {
112
+ flex: 1,
113
+ display: "flex",
114
+ alignItems: "center",
115
+ justifyContent: "flex-start",
116
+ gap: 1,
117
+ children: official && /*#__PURE__*/_jsx(TooltipIcon, {
118
+ title: official.tooltip,
119
+ children: /*#__PURE__*/_jsx(VerifiedIcon, {
120
+ sx: {
121
+ color: official.color || '#D97706',
122
+ fontSize: official.size || 18
123
+ }
124
+ })
125
+ })
95
126
  }), button || onButtonClick && /*#__PURE__*/_jsxs(Button, {
96
127
  color: "reverse",
97
128
  variant: "outlined",
@@ -115,6 +146,7 @@ export default function BlockletStore(props) {
115
146
  }), /*#__PURE__*/_jsx(Stack, {
116
147
  py: 2,
117
148
  children: /*#__PURE__*/_jsx(Typography, {
149
+ className: "blocklet-description",
118
150
  variant: "body2",
119
151
  color: "text.secondary",
120
152
  sx: {
@@ -1,4 +1,5 @@
1
1
  import ActionButton, { strippedString } from './utils';
2
2
  import Blocklet from './blocklet';
3
- export { ActionButton, strippedString };
3
+ import TooltipIcon from './tooltip-icon';
4
+ export { ActionButton, strippedString, TooltipIcon };
4
5
  export default Blocklet;
@@ -1,4 +1,5 @@
1
1
  import ActionButton, { strippedString } from './utils';
2
2
  import Blocklet from './blocklet';
3
- export { ActionButton, strippedString };
3
+ import TooltipIcon from './tooltip-icon';
4
+ export { ActionButton, strippedString, TooltipIcon };
4
5
  export default Blocklet;
@@ -0,0 +1,7 @@
1
+ import { TooltipProps } from '@mui/material';
2
+ export interface TooltipIconProps extends TooltipProps {
3
+ fontSize?: number | string;
4
+ fontWeight?: number | string;
5
+ color?: string;
6
+ }
7
+ export default function TooltipIcon({ title, sx, children, PopperProps, fontSize, fontWeight, color, ...props }: TooltipIconProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Tooltip, tooltipClasses } from '@mui/material';
3
+ export default function TooltipIcon({
4
+ title,
5
+ sx,
6
+ children,
7
+ PopperProps,
8
+ fontSize = 12,
9
+ fontWeight = 500,
10
+ color = 'text.secondary',
11
+ ...props
12
+ }) {
13
+ return title ? /*#__PURE__*/_jsx(Tooltip, {
14
+ title: title,
15
+ placement: "top",
16
+ ...props,
17
+ PopperProps: {
18
+ ...PopperProps,
19
+ sx: [{
20
+ [`& .${tooltipClasses.tooltip}`]: {
21
+ backgroundColor: 'common.white',
22
+ boxShadow: 1,
23
+ fontSize,
24
+ fontWeight,
25
+ color,
26
+ display: 'flex',
27
+ alignItems: 'center'
28
+ }
29
+ }, ...(Array.isArray(PopperProps?.sx) ? PopperProps.sx : [PopperProps?.sx])]
30
+ },
31
+ children: children
32
+ }) : children;
33
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "2.10.57",
3
+ "version": "2.10.59",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -64,12 +64,12 @@
64
64
  "react": ">=18.2.0",
65
65
  "react-router-dom": ">=6.22.3"
66
66
  },
67
- "gitHead": "cd0308705e9e6f81cabc9cf41e5d63b324f63be7",
67
+ "gitHead": "6e83602a81e7f104f3f0b6cb94d22a1974becef2",
68
68
  "dependencies": {
69
69
  "@arcblock/did-motif": "^1.1.13",
70
- "@arcblock/icons": "^2.10.57",
71
- "@arcblock/nft-display": "^2.10.57",
72
- "@arcblock/react-hooks": "^2.10.57",
70
+ "@arcblock/icons": "^2.10.59",
71
+ "@arcblock/nft-display": "^2.10.59",
72
+ "@arcblock/react-hooks": "^2.10.59",
73
73
  "@babel/plugin-syntax-dynamic-import": "^7.8.3",
74
74
  "@fontsource/inter": "^5.0.16",
75
75
  "@fontsource/ubuntu-mono": "^5.0.18",
@@ -2,11 +2,13 @@ import React, { isValidElement } from 'react';
2
2
 
3
3
  import Download from '@iconify-icons/tabler/cloud-download';
4
4
  import { Icon } from '@iconify/react';
5
- import { Card, CardProps, CircularProgress, Stack, Typography } from '@mui/material';
5
+ import VerifiedIcon from '@mui/icons-material/Verified';
6
+ import { Box, Card, CardProps, CircularProgress, Stack, Typography } from '@mui/material';
6
7
  import Avatar from '../Avatar';
7
8
  import Button from '../Button';
8
9
  import { useTheme } from '../Theme';
9
10
  import IconText from './components/icon-text';
11
+ import TooltipIcon from './tooltip-icon';
10
12
  import { formatDownloadCount, strippedString } from './utils';
11
13
 
12
14
  export interface IBlockletStore extends CardProps {
@@ -17,6 +19,11 @@ export interface IBlockletStore extends CardProps {
17
19
  avatar: string;
18
20
  author: string;
19
21
  download: string;
22
+ official?: {
23
+ tooltip: React.ReactNode;
24
+ size?: number;
25
+ color?: string;
26
+ };
20
27
  button?: React.ReactNode;
21
28
  buttonText?: string;
22
29
  buttonDisabled?: boolean;
@@ -35,6 +42,7 @@ export default function BlockletStore(props: IBlockletStore) {
35
42
  author,
36
43
  download,
37
44
  did,
45
+ official,
38
46
  buttonText = 'Install',
39
47
  buttonDisabled,
40
48
  buttonLoading,
@@ -81,14 +89,28 @@ export default function BlockletStore(props: IBlockletStore) {
81
89
  onClick={handleMainClick}
82
90
  {...rest}
83
91
  sx={{ p: { xs: 2, md: 3 }, borderRadius: 2, ...rest.sx }}>
84
- <Stack flex={1} direction="row" gap={2} alignItems="center" overflow="hidden">
85
- <Avatar src={cover} did={did} size={48} variant="rounded" />
92
+ <Stack flex={1} direction="row" gap={1} alignItems="center" overflow="hidden" sx={{ '& > *': { flexShrink: 0 } }}>
93
+ <Avatar src={cover} did={did} size={48} variant="rounded" style={{ borderRadius: '8px', overflow: 'hidden' }} />
86
94
  <Typography
87
- flex={1}
88
- fontWeight="typography.fontWeightMedium"
89
- sx={{ fontSize: 16, textOverflow: 'ellipsis', whiteSpace: 'nowrap', overflow: 'hidden' }}
95
+ className="blocklet-title"
96
+ fontWeight="fontWeightMedium"
97
+ sx={{
98
+ fontSize: 16,
99
+ textOverflow: 'ellipsis',
100
+ whiteSpace: 'nowrap',
101
+ overflow: 'hidden',
102
+ pl: 0.5,
103
+ '&&': { flexShrink: 1 },
104
+ }}
90
105
  {...titleProps}
91
106
  />
107
+ <Box flex={1} display="flex" alignItems="center" justifyContent="flex-start" gap={1}>
108
+ {official && (
109
+ <TooltipIcon title={official.tooltip}>
110
+ <VerifiedIcon sx={{ color: official.color || '#D97706', fontSize: official.size || 18 }} />
111
+ </TooltipIcon>
112
+ )}
113
+ </Box>
92
114
  {button ||
93
115
  (onButtonClick && (
94
116
  <Button
@@ -110,6 +132,7 @@ export default function BlockletStore(props: IBlockletStore) {
110
132
  </Stack>
111
133
  <Stack py={2}>
112
134
  <Typography
135
+ className="blocklet-description"
113
136
  variant="body2"
114
137
  color="text.secondary"
115
138
  sx={{
@@ -1,5 +1,6 @@
1
1
  import ActionButton, { strippedString } from './utils';
2
2
  import Blocklet from './blocklet';
3
+ import TooltipIcon from './tooltip-icon';
3
4
 
4
- export { ActionButton, strippedString };
5
+ export { ActionButton, strippedString, TooltipIcon };
5
6
  export default Blocklet;
@@ -0,0 +1,46 @@
1
+ import { Tooltip, TooltipProps, tooltipClasses } from '@mui/material';
2
+
3
+ export interface TooltipIconProps extends TooltipProps {
4
+ fontSize?: number | string;
5
+ fontWeight?: number | string;
6
+ color?: string;
7
+ }
8
+
9
+ export default function TooltipIcon({
10
+ title,
11
+ sx,
12
+ children,
13
+ PopperProps,
14
+ fontSize = 12,
15
+ fontWeight = 500,
16
+ color = 'text.secondary',
17
+ ...props
18
+ }: TooltipIconProps) {
19
+ return title ? (
20
+ <Tooltip
21
+ title={title}
22
+ placement="top"
23
+ {...props}
24
+ PopperProps={{
25
+ ...PopperProps,
26
+ sx: [
27
+ {
28
+ [`& .${tooltipClasses.tooltip}`]: {
29
+ backgroundColor: 'common.white',
30
+ boxShadow: 1,
31
+ fontSize,
32
+ fontWeight,
33
+ color,
34
+ display: 'flex',
35
+ alignItems: 'center',
36
+ },
37
+ },
38
+ ...(Array.isArray(PopperProps?.sx) ? PopperProps.sx : [PopperProps?.sx]),
39
+ ],
40
+ }}>
41
+ {children}
42
+ </Tooltip>
43
+ ) : (
44
+ children
45
+ );
46
+ }