@topconsultnpm/sdkui-react-beta 6.12.35 → 6.12.37

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.
@@ -0,0 +1,5 @@
1
+ declare const TMUserAvatar: ({ name, returnType }: {
2
+ name: string;
3
+ returnType?: "jsx" | "svg";
4
+ }) => string | import("react/jsx-runtime").JSX.Element;
5
+ export default TMUserAvatar;
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import TMTooltip from './TMTooltip';
3
+ const TMUserAvatar = ({ name, returnType = 'jsx' }) => {
4
+ // Helper function to generate dark color from name
5
+ const generateDarkColorFromName = (str) => {
6
+ let hash = 0;
7
+ for (let i = 0; i < str.length; i++) {
8
+ hash = str.charCodeAt(i) + ((hash << 5) - hash);
9
+ }
10
+ const hue = Math.floor((hash & 0x00FFFFFF) / 0x10000);
11
+ let colorRange;
12
+ if (hue >= 0 && hue < 30)
13
+ colorRange = 0; // Dark red
14
+ else if (hue >= 30 && hue < 90)
15
+ colorRange = 60; // Dark orange to yellow
16
+ else if (hue >= 90 && hue < 150)
17
+ colorRange = 120; // Dark green
18
+ else if (hue >= 150 && hue < 210)
19
+ colorRange = 180; // Dark cyan
20
+ else if (hue >= 210 && hue < 270)
21
+ colorRange = 240; // Dark blue
22
+ else if (hue >= 270 && hue < 330)
23
+ colorRange = 300; // Dark purple
24
+ else
25
+ colorRange = 360; // Dark magenta
26
+ return `hsl(${colorRange}, 70%, 30%)`; // Dark color
27
+ };
28
+ // Helper function to extract initials from name
29
+ const extractInitialsFromName = (name) => {
30
+ if (name.length >= 3) {
31
+ const lettersOnly = name.replace(/[^a-zA-Z]/g, '');
32
+ return lettersOnly.substring(0, 3).toUpperCase();
33
+ }
34
+ return name[0].toUpperCase();
35
+ };
36
+ const initials = extractInitialsFromName(name ?? '-');
37
+ const bgColor = generateDarkColorFromName(name ?? '-');
38
+ if (returnType === 'svg') {
39
+ return `
40
+ <svg width="30" height="30" viewBox="0 0 40 40" xmlns="http://www.w3.org/2000/svg">
41
+ <circle cx="20" cy="20" r="20" fill="${bgColor}" />
42
+ <text x="50%" y="50%" text-anchor="middle" dominant-baseline="middle" fill="#fff" font-size="14" font-weight="bold" font-family="sans-serif">
43
+ ${initials}
44
+ </text>
45
+ </svg>
46
+ `.trim();
47
+ }
48
+ return (_jsx(TMTooltip, { content: name ?? '-', children: _jsx("div", { style: {
49
+ width: "40px",
50
+ height: "40px",
51
+ borderRadius: "50%",
52
+ backgroundColor: bgColor,
53
+ display: "flex",
54
+ alignItems: "center",
55
+ justifyContent: "center",
56
+ marginRight: "10px",
57
+ fontWeight: "bold",
58
+ color: '#fff',
59
+ fontSize: "18px",
60
+ userSelect: "none",
61
+ cursor: "default",
62
+ }, children: _jsx("span", { style: { fontSize: "12px" }, children: initials }) }) }));
63
+ };
64
+ export default TMUserAvatar;
@@ -19,6 +19,7 @@ export { Spinner } from './base/TMSpinner';
19
19
  export { default as TMToggleButton } from './base/TMToggleButton';
20
20
  export { default as TMTooltip } from './base/TMTooltip';
21
21
  export { default as TMVilViewer } from './base/TMVilViewer';
22
+ export { default as TMUserAvatar } from './base/TMUserAvatar';
22
23
  export { default as TMDropDown } from './editors/TMDropDown';
23
24
  export { default as TMTreeDropDown } from './editors/TMTreeDropDown';
24
25
  export { default as TMSummary } from './editors/TMSummary';
@@ -20,6 +20,7 @@ export { Spinner } from './base/TMSpinner';
20
20
  export { default as TMToggleButton } from './base/TMToggleButton';
21
21
  export { default as TMTooltip } from './base/TMTooltip';
22
22
  export { default as TMVilViewer } from './base/TMVilViewer';
23
+ export { default as TMUserAvatar } from './base/TMUserAvatar';
23
24
  //editors
24
25
  export { default as TMDropDown } from './editors/TMDropDown';
25
26
  export { default as TMTreeDropDown } from './editors/TMTreeDropDown';
@@ -0,0 +1,6 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import TMUserAvatar from '../components/base/TMUserAvatar';
3
+ declare const meta: Meta<typeof TMUserAvatar>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof TMUserAvatar>;
6
+ export declare const MultipleAvatars: Story;
@@ -0,0 +1,19 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import TMUserAvatar from '../components/base/TMUserAvatar';
3
+ import { TMDeviceProvider } from '../components';
4
+ const meta = {
5
+ title: 'Components/TMUserAvatar',
6
+ component: TMUserAvatar,
7
+ decorators: [(Story) => (_jsxs(TMDeviceProvider, { children: [" ", _jsx(Story, {}), " "] })),],
8
+ tags: ['autodocs'],
9
+ args: {
10
+ name: 'Test User',
11
+ },
12
+ };
13
+ export default meta;
14
+ export const MultipleAvatars = {
15
+ render: () => {
16
+ const names = ['Luca', 'Claudio', 'Marco', 'Alessia', 'Giorgio', 'Ashkan', 'Joele', 'Alessandro'];
17
+ return (_jsx("div", { style: { display: 'flex', gap: '10px', flexWrap: 'wrap' }, children: names.map((name, index) => (_jsx(TMUserAvatar, { name: name }, index))) }));
18
+ },
19
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topconsultnpm/sdkui-react-beta",
3
- "version": "6.12.35",
3
+ "version": "6.12.37",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1",