dash-ui-kit 1.0.94 → 2.1.0-dev
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/README.md +52 -0
- package/dist/react/components/accordion/index.cjs.js +193 -0
- package/dist/react/components/accordion/index.cjs.js.map +1 -0
- package/dist/react/components/accordion/index.esm.js +169 -0
- package/dist/react/components/accordion/index.esm.js.map +1 -0
- package/dist/react/components/avatar/index.cjs.js +39 -0
- package/dist/react/components/avatar/index.cjs.js.map +1 -0
- package/dist/react/components/avatar/index.esm.js +34 -0
- package/dist/react/components/avatar/index.esm.js.map +1 -0
- package/dist/react/components/badge/index.cjs.js +97 -0
- package/dist/react/components/badge/index.cjs.js.map +1 -0
- package/dist/react/components/badge/index.d.ts +10 -1
- package/dist/react/components/badge/index.esm.js +92 -0
- package/dist/react/components/badge/index.esm.js.map +1 -0
- package/dist/react/components/bigNumber/index.cjs.js +100 -0
- package/dist/react/components/bigNumber/index.cjs.js.map +1 -0
- package/dist/react/components/bigNumber/index.esm.js +95 -0
- package/dist/react/components/bigNumber/index.esm.js.map +1 -0
- package/dist/react/components/button/index.cjs.js +540 -0
- package/dist/react/components/button/index.cjs.js.map +1 -0
- package/dist/react/components/button/index.d.ts +7 -1
- package/dist/react/components/button/index.esm.js +535 -0
- package/dist/react/components/button/index.esm.js.map +1 -0
- package/dist/react/components/copyButton/index.cjs.js +95 -0
- package/dist/react/components/copyButton/index.cjs.js.map +1 -0
- package/dist/react/components/copyButton/index.esm.js +71 -0
- package/dist/react/components/copyButton/index.esm.js.map +1 -0
- package/dist/react/components/dashLogo/index.cjs.js +74 -0
- package/dist/react/components/dashLogo/index.cjs.js.map +1 -0
- package/dist/react/components/dashLogo/index.esm.js +69 -0
- package/dist/react/components/dashLogo/index.esm.js.map +1 -0
- package/dist/react/components/dateBlock/index.cjs.js +120 -0
- package/dist/react/components/dateBlock/index.cjs.js.map +1 -0
- package/dist/react/components/dateBlock/index.esm.js +115 -0
- package/dist/react/components/dateBlock/index.esm.js.map +1 -0
- package/dist/react/components/dialog/index.cjs.js +292 -0
- package/dist/react/components/dialog/index.cjs.js.map +1 -0
- package/dist/react/components/dialog/index.esm.js +270 -0
- package/dist/react/components/dialog/index.esm.js.map +1 -0
- package/dist/react/components/heading/index.cjs.js +65 -0
- package/dist/react/components/heading/index.cjs.js.map +1 -0
- package/dist/react/components/heading/index.d.ts +4 -1
- package/dist/react/components/heading/index.esm.js +63 -0
- package/dist/react/components/heading/index.esm.js.map +1 -0
- package/dist/react/components/icons/index.cjs.js +1173 -0
- package/dist/react/components/icons/index.cjs.js.map +1 -0
- package/dist/react/components/icons/index.d.ts +2 -0
- package/dist/react/components/icons/index.esm.js +1128 -0
- package/dist/react/components/icons/index.esm.js.map +1 -0
- package/dist/react/components/identifier/index.cjs.js +286 -0
- package/dist/react/components/identifier/index.cjs.js.map +1 -0
- package/dist/react/components/identifier/index.esm.js +282 -0
- package/dist/react/components/identifier/index.esm.js.map +1 -0
- package/dist/react/components/index.cjs.js +101 -0
- package/dist/react/components/index.cjs.js.map +1 -0
- package/dist/react/components/index.d.ts +1 -1
- package/dist/react/components/index.esm.js +29 -0
- package/dist/react/components/index.esm.js.map +1 -0
- package/dist/react/components/input/index.cjs.js +242 -0
- package/dist/react/components/input/index.cjs.js.map +1 -0
- package/dist/react/components/input/index.d.ts +4 -0
- package/dist/react/components/input/index.esm.js +237 -0
- package/dist/react/components/input/index.esm.js.map +1 -0
- package/dist/react/components/list/index.cjs.js +49 -0
- package/dist/react/components/list/index.cjs.js.map +1 -0
- package/dist/react/components/list/index.esm.js +47 -0
- package/dist/react/components/list/index.esm.js.map +1 -0
- package/dist/react/components/notActive/index.cjs.js +40 -0
- package/dist/react/components/notActive/index.cjs.js.map +1 -0
- package/dist/react/components/notActive/index.esm.js +38 -0
- package/dist/react/components/notActive/index.esm.js.map +1 -0
- package/dist/react/components/overlayMenu/index.cjs.js +469 -0
- package/dist/react/components/overlayMenu/index.cjs.js.map +1 -0
- package/dist/react/components/overlayMenu/index.d.ts +9 -10
- package/dist/react/components/overlayMenu/index.esm.js +464 -0
- package/dist/react/components/overlayMenu/index.esm.js.map +1 -0
- package/dist/react/components/overlaySelect/index.cjs.js +350 -0
- package/dist/react/components/overlaySelect/index.cjs.js.map +1 -0
- package/dist/react/components/overlaySelect/index.d.ts +4 -0
- package/dist/react/components/overlaySelect/index.esm.js +345 -0
- package/dist/react/components/overlaySelect/index.esm.js.map +1 -0
- package/dist/react/components/progressStepBar/index.cjs.js +54 -0
- package/dist/react/components/progressStepBar/index.cjs.js.map +1 -0
- package/dist/react/components/progressStepBar/index.d.ts +5 -2
- package/dist/react/components/progressStepBar/index.esm.js +52 -0
- package/dist/react/components/progressStepBar/index.esm.js.map +1 -0
- package/dist/react/components/select/index.cjs.js +241 -0
- package/dist/react/components/select/index.cjs.js.map +1 -0
- package/dist/react/components/select/index.d.ts +4 -0
- package/dist/react/components/select/index.esm.js +217 -0
- package/dist/react/components/select/index.esm.js.map +1 -0
- package/dist/react/components/switch/index.cjs.js +184 -0
- package/dist/react/components/switch/index.cjs.js.map +1 -0
- package/dist/react/components/switch/index.esm.js +179 -0
- package/dist/react/components/switch/index.esm.js.map +1 -0
- package/dist/react/components/tabs/index.cjs.js +178 -0
- package/dist/react/components/tabs/index.cjs.js.map +1 -0
- package/dist/react/components/tabs/index.esm.js +154 -0
- package/dist/react/components/tabs/index.esm.js.map +1 -0
- package/dist/react/components/text/index.cjs.js +126 -0
- package/dist/react/components/text/index.cjs.js.map +1 -0
- package/dist/react/components/text/index.d.ts +5 -0
- package/dist/react/components/text/index.esm.js +121 -0
- package/dist/react/components/text/index.esm.js.map +1 -0
- package/dist/react/components/textarea/index.cjs.js +260 -0
- package/dist/react/components/textarea/index.cjs.js.map +1 -0
- package/dist/react/components/textarea/index.d.ts +4 -0
- package/dist/react/components/textarea/index.esm.js +255 -0
- package/dist/react/components/textarea/index.esm.js.map +1 -0
- package/dist/react/components/timeDelta/index.cjs.js +93 -0
- package/dist/react/components/timeDelta/index.cjs.js.map +1 -0
- package/dist/react/components/timeDelta/index.d.ts +1 -1
- package/dist/react/components/timeDelta/index.esm.js +88 -0
- package/dist/react/components/timeDelta/index.esm.js.map +1 -0
- package/dist/react/components/transactionStatusIcon/index.cjs.js +59 -0
- package/dist/react/components/transactionStatusIcon/index.cjs.js.map +1 -0
- package/dist/react/components/transactionStatusIcon/index.esm.js +54 -0
- package/dist/react/components/transactionStatusIcon/index.esm.js.map +1 -0
- package/dist/react/components/valueCard/index.cjs.js +181 -0
- package/dist/react/components/valueCard/index.cjs.js.map +1 -0
- package/dist/react/components/valueCard/index.d.ts +5 -1
- package/dist/react/components/valueCard/index.esm.js +176 -0
- package/dist/react/components/valueCard/index.esm.js.map +1 -0
- package/dist/react/contexts/ThemeContext.cjs.js +79 -0
- package/dist/react/contexts/ThemeContext.cjs.js.map +1 -0
- package/dist/react/contexts/ThemeContext.esm.js +76 -0
- package/dist/react/contexts/ThemeContext.esm.js.map +1 -0
- package/dist/react/contexts/index.cjs.js +11 -0
- package/dist/react/contexts/index.cjs.js.map +1 -0
- package/dist/react/contexts/index.esm.js +4 -0
- package/dist/react/contexts/index.esm.js.map +1 -0
- package/dist/react/hooks/index.d.ts +1 -0
- package/dist/react/hooks/useColorScheme.cjs.js +25 -0
- package/dist/react/hooks/useColorScheme.cjs.js.map +1 -0
- package/dist/react/hooks/useColorScheme.d.ts +9 -0
- package/dist/react/hooks/useColorScheme.esm.js +23 -0
- package/dist/react/hooks/useColorScheme.esm.js.map +1 -0
- package/dist/react/hooks/useDebounce.cjs.js +83 -0
- package/dist/react/hooks/useDebounce.cjs.js.map +1 -0
- package/dist/react/hooks/useDebounce.esm.js +78 -0
- package/dist/react/hooks/useDebounce.esm.js.map +1 -0
- package/dist/react/index.cjs.js +99 -12833
- package/dist/react/index.cjs.js.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.esm.js +27 -12747
- package/dist/react/index.esm.js.map +1 -1
- package/dist/react/shared/utils/datetime.cjs.js +59 -0
- package/dist/react/shared/utils/datetime.cjs.js.map +1 -0
- package/dist/react/shared/utils/datetime.esm.js +57 -0
- package/dist/react/shared/utils/datetime.esm.js.map +1 -0
- package/dist/react/utils/copyToClipboard.cjs.js +31 -0
- package/dist/react/utils/copyToClipboard.cjs.js.map +1 -0
- package/dist/react/utils/copyToClipboard.esm.js +26 -0
- package/dist/react/utils/copyToClipboard.esm.js.map +1 -0
- package/dist/react/utils/index.d.ts +1 -1
- package/dist/react-native/components/avatar/index.d.ts +26 -0
- package/dist/react-native/components/avatar/index.web.d.ts +24 -0
- package/dist/react-native/components/badge/index.d.ts +63 -0
- package/dist/react-native/components/bigNumber/index.d.ts +26 -0
- package/dist/react-native/components/button/index.d.ts +45 -0
- package/dist/react-native/components/copyButton/index.d.ts +22 -0
- package/dist/react-native/components/copyButton/index.web.d.ts +20 -0
- package/dist/react-native/components/dashLogo/index.d.ts +30 -0
- package/dist/react-native/components/heading/index.d.ts +25 -0
- package/dist/react-native/components/icons/index.d.ts +43 -0
- package/dist/react-native/components/identifier/index.d.ts +47 -0
- package/dist/react-native/components/index.d.ts +15 -0
- package/dist/react-native/components/input/index.d.ts +59 -0
- package/dist/react-native/components/notActive/index.d.ts +16 -0
- package/dist/react-native/components/tabs/index.d.ts +50 -0
- package/dist/react-native/components/text/index.d.ts +28 -0
- package/dist/react-native/components/transactionStatusIcon/index.d.ts +24 -0
- package/dist/react-native/components/valueCard/index.d.ts +47 -0
- package/dist/react-native/hooks/index.d.ts +1 -0
- package/dist/react-native/hooks/useDebounce.d.ts +43 -0
- package/dist/react-native/index.cjs.js +2882 -0
- package/dist/react-native/index.cjs.js.map +1 -0
- package/dist/react-native/index.d.ts +4 -0
- package/dist/react-native/index.esm.js +2833 -0
- package/dist/react-native/index.esm.js.map +1 -0
- package/dist/react-native/styles/index.d.ts +11 -0
- package/dist/react-native/styles/tokens.d.ts +308 -0
- package/dist/react-native/styles/utils.d.ts +65 -0
- package/dist/react-native/utils/clipboard.d.ts +27 -0
- package/dist/react-native/utils/index.d.ts +3 -0
- package/dist/react-native/utils/resolveColorScheme.d.ts +1 -0
- package/dist/react-native/utils/tw.d.ts +7 -0
- package/dist/shared/constants/colors.d.ts +25 -0
- package/dist/shared/constants/index.d.ts +2 -0
- package/dist/shared/constants/sizes.d.ts +49 -0
- package/dist/shared/index.cjs.js +171 -0
- package/dist/shared/index.cjs.js.map +1 -0
- package/dist/shared/index.d.ts +3 -0
- package/dist/shared/index.esm.js +161 -0
- package/dist/shared/index.esm.js.map +1 -0
- package/dist/shared/types/common.d.ts +33 -0
- package/dist/shared/types/index.d.ts +1 -0
- package/dist/shared/utils/index.d.ts +1 -0
- package/dist/styles.css +1 -1
- package/package.json +50 -8
- /package/dist/{react → shared}/utils/datetime.d.ts +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
type BadgeColor = 'blue' | 'white' | 'gray' | 'light-gray' | 'turquoise' | 'red' | 'orange';
|
|
2
3
|
export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
3
4
|
/**
|
|
4
5
|
* Content of the badge
|
|
@@ -11,7 +12,15 @@ export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
|
11
12
|
/**
|
|
12
13
|
* Color theme
|
|
13
14
|
*/
|
|
14
|
-
color?:
|
|
15
|
+
color?: BadgeColor;
|
|
16
|
+
/**
|
|
17
|
+
* Color override for light theme
|
|
18
|
+
*/
|
|
19
|
+
colorLight?: BadgeColor;
|
|
20
|
+
/**
|
|
21
|
+
* Color override for dark theme
|
|
22
|
+
*/
|
|
23
|
+
colorDark?: BadgeColor;
|
|
15
24
|
/**
|
|
16
25
|
* Size of the badge
|
|
17
26
|
*/
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { __rest } from 'tslib';
|
|
4
|
+
import { jsx } from 'react/jsx-runtime';
|
|
5
|
+
import { useColorScheme } from '../../hooks/useColorScheme.esm.js';
|
|
6
|
+
|
|
7
|
+
const Badge = _a => {
|
|
8
|
+
var _b;
|
|
9
|
+
var {
|
|
10
|
+
children,
|
|
11
|
+
variant = 'default',
|
|
12
|
+
color,
|
|
13
|
+
colorLight,
|
|
14
|
+
colorDark,
|
|
15
|
+
size = 'sm',
|
|
16
|
+
borderRadius,
|
|
17
|
+
className = '',
|
|
18
|
+
onClick
|
|
19
|
+
} = _a,
|
|
20
|
+
props = __rest(_a, ["children", "variant", "color", "colorLight", "colorDark", "size", "borderRadius", "className", "onClick"]);
|
|
21
|
+
const effectiveColor = (_b = useColorScheme(color, colorLight, colorDark)) !== null && _b !== void 0 ? _b : 'blue';
|
|
22
|
+
const baseClasses = 'inline-flex items-center justify-center font-medium transition-colors';
|
|
23
|
+
// Size classes with default border radius
|
|
24
|
+
const sizeClasses = {
|
|
25
|
+
xxs: 'px-1 py-1 text-xs gap-2 rounded-full',
|
|
26
|
+
xs: 'px-[0.5rem] py-[0.25rem] text-xs rounded-full',
|
|
27
|
+
sm: 'px-[2.125rem] py-[0.625rem] text-xs rounded-full',
|
|
28
|
+
xl: 'px-[2.25rem] py-4 text-lg rounded-full'
|
|
29
|
+
};
|
|
30
|
+
// Border radius classes (overrides size border radius)
|
|
31
|
+
const borderRadiusClasses = {
|
|
32
|
+
xs: 'rounded-[0.25rem]'
|
|
33
|
+
};
|
|
34
|
+
// Color and variant combination classes
|
|
35
|
+
const getVariantClasses = () => {
|
|
36
|
+
const colorMap = {
|
|
37
|
+
blue: {
|
|
38
|
+
default: 'text-[#4C7EFF]',
|
|
39
|
+
flat: 'bg-[rgba(76,126,255,0.15)] text-[#4C7EFF]',
|
|
40
|
+
solid: 'bg-[#4C7EFF] text-white',
|
|
41
|
+
bordered: 'outline outline-1 outline-[#4C7EFF] text-[#4C7EFF]'
|
|
42
|
+
},
|
|
43
|
+
white: {
|
|
44
|
+
default: 'text-white',
|
|
45
|
+
flat: 'bg-[rgba(255,255,255,0.15)] text-white',
|
|
46
|
+
solid: 'bg-white text-[#0C1C33]',
|
|
47
|
+
bordered: 'outline outline-1 outline-white text-white'
|
|
48
|
+
},
|
|
49
|
+
gray: {
|
|
50
|
+
default: 'text-[#0C1C33]',
|
|
51
|
+
flat: 'bg-[rgba(12,28,51,0.15)] text-[#0C1C33]',
|
|
52
|
+
solid: 'bg-[#0C1C33] text-white',
|
|
53
|
+
bordered: 'outline outline-1 outline-[#0C1C33] text-[#0C1C33]'
|
|
54
|
+
},
|
|
55
|
+
'light-gray': {
|
|
56
|
+
default: 'text-[#6B7280]',
|
|
57
|
+
flat: 'bg-[#0C1C33]/5 text-[#0C1C33]',
|
|
58
|
+
solid: 'bg-[#0C1C33]/15 text-[#0C1C33]',
|
|
59
|
+
bordered: 'outline outline-1 outline-[#6B7280] text-[#6B7280]'
|
|
60
|
+
},
|
|
61
|
+
turquoise: {
|
|
62
|
+
default: 'text-[#60F6D2]',
|
|
63
|
+
flat: 'bg-[rgba(96,246,210,0.15)] text-[#60F6D2]',
|
|
64
|
+
solid: 'bg-[#60F6D2] text-[#0C1C33]',
|
|
65
|
+
bordered: 'outline outline-1 outline-[#60F6D2] text-[#60F6D2]'
|
|
66
|
+
},
|
|
67
|
+
red: {
|
|
68
|
+
default: 'text-[#CD2E00]',
|
|
69
|
+
flat: 'bg-[rgba(205,46,0,0.15)] text-[#CD2E00]',
|
|
70
|
+
solid: 'bg-[#CD2E00] text-white',
|
|
71
|
+
bordered: 'outline outline-1 outline-[#CD2E00] text-[#CD2E00]'
|
|
72
|
+
},
|
|
73
|
+
orange: {
|
|
74
|
+
default: 'text-[#F98F12]',
|
|
75
|
+
flat: 'bg-[rgba(249,143,18,0.15)] text-[#F98F12]',
|
|
76
|
+
solid: 'bg-[#F98F12] text-white',
|
|
77
|
+
bordered: 'outline outline-1 outline-[#F98F12] text-[#F98F12]'
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return colorMap[effectiveColor][variant];
|
|
81
|
+
};
|
|
82
|
+
const classes = [baseClasses, sizeClasses[size], getVariantClasses(), borderRadius && borderRadiusClasses[borderRadius], className].filter(Boolean).join(' ');
|
|
83
|
+
return jsx("span", Object.assign({
|
|
84
|
+
className: classes,
|
|
85
|
+
onClick: onClick
|
|
86
|
+
}, props, {
|
|
87
|
+
children: children
|
|
88
|
+
}));
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export { Badge, Badge as default };
|
|
92
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/badge/index.tsx"],"sourcesContent":["import React from 'react';\nimport { useColorScheme } from '../../hooks/useColorScheme'\n\ntype BadgeColor = 'blue' | 'white' | 'gray' | 'light-gray' | 'turquoise' | 'red' | 'orange'\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Content of the badge\n */\n children: React.ReactNode;\n\n /**\n * Visual style variant\n */\n variant?: 'default' | 'flat' | 'solid' | 'bordered';\n\n /**\n * Color theme\n */\n color?: BadgeColor;\n\n /**\n * Color override for light theme\n */\n colorLight?: BadgeColor;\n\n /**\n * Color override for dark theme\n */\n colorDark?: BadgeColor;\n\n /**\n * Size of the badge\n */\n size?: 'xxs' | 'xs' | 'sm' | 'xl';\n\n /**\n * Border radius variant\n */\n borderRadius?: 'xs';\n\n /**\n * Additional CSS class name\n */\n className?: string;\n\n /**\n * Click handler\n */\n onClick?: React.MouseEventHandler<HTMLSpanElement>;\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n children,\n variant = 'default',\n color,\n colorLight,\n colorDark,\n size = 'sm',\n borderRadius,\n className = '',\n onClick,\n ...props\n}) => {\n const effectiveColor = useColorScheme(color, colorLight, colorDark) ?? 'blue'\n const baseClasses = 'inline-flex items-center justify-center font-medium transition-colors';\n \n // Size classes with default border radius\n const sizeClasses = {\n xxs: 'px-1 py-1 text-xs gap-2 rounded-full',\n xs: 'px-[0.5rem] py-[0.25rem] text-xs rounded-full',\n sm: 'px-[2.125rem] py-[0.625rem] text-xs rounded-full',\n xl: 'px-[2.25rem] py-4 text-lg rounded-full',\n }\n\n // Border radius classes (overrides size border radius)\n const borderRadiusClasses = {\n xs: 'rounded-[0.25rem]',\n }\n \n // Color and variant combination classes\n const getVariantClasses = () => {\n const colorMap = {\n blue: {\n default: 'text-[#4C7EFF]',\n flat: 'bg-[rgba(76,126,255,0.15)] text-[#4C7EFF]',\n solid: 'bg-[#4C7EFF] text-white',\n bordered: 'outline outline-1 outline-[#4C7EFF] text-[#4C7EFF]',\n },\n white: {\n default: 'text-white',\n flat: 'bg-[rgba(255,255,255,0.15)] text-white',\n solid: 'bg-white text-[#0C1C33]',\n bordered: 'outline outline-1 outline-white text-white',\n },\n gray: {\n default: 'text-[#0C1C33]',\n flat: 'bg-[rgba(12,28,51,0.15)] text-[#0C1C33]',\n solid: 'bg-[#0C1C33] text-white',\n bordered: 'outline outline-1 outline-[#0C1C33] text-[#0C1C33]',\n },\n 'light-gray': {\n default: 'text-[#6B7280]',\n flat: 'bg-[#0C1C33]/5 text-[#0C1C33]',\n solid: 'bg-[#0C1C33]/15 text-[#0C1C33]',\n bordered: 'outline outline-1 outline-[#6B7280] text-[#6B7280]',\n },\n turquoise: {\n default: 'text-[#60F6D2]',\n flat: 'bg-[rgba(96,246,210,0.15)] text-[#60F6D2]',\n solid: 'bg-[#60F6D2] text-[#0C1C33]',\n bordered: 'outline outline-1 outline-[#60F6D2] text-[#60F6D2]',\n },\n red: {\n default: 'text-[#CD2E00]',\n flat: 'bg-[rgba(205,46,0,0.15)] text-[#CD2E00]',\n solid: 'bg-[#CD2E00] text-white',\n bordered: 'outline outline-1 outline-[#CD2E00] text-[#CD2E00]',\n },\n orange: {\n default: 'text-[#F98F12]',\n flat: 'bg-[rgba(249,143,18,0.15)] text-[#F98F12]',\n solid: 'bg-[#F98F12] text-white',\n bordered: 'outline outline-1 outline-[#F98F12] text-[#F98F12]',\n },\n }\n \n return colorMap[effectiveColor][variant];\n }\n \n const classes = [\n baseClasses,\n sizeClasses[size],\n getVariantClasses(),\n borderRadius && borderRadiusClasses[borderRadius],\n className,\n ].filter(Boolean).join(' ')\n \n return (\n <span className={classes} onClick={onClick} {...props}>\n {children}\n </span>\n )\n}\n\nexport default Badge\n"],"names":["Badge","_a","children","variant","color","colorLight","colorDark","size","borderRadius","className","onClick","props","__rest","effectiveColor","_b","useColorScheme","baseClasses","sizeClasses","xxs","xs","sm","xl","borderRadiusClasses","getVariantClasses","colorMap","blue","default","flat","solid","bordered","white","gray","turquoise","red","orange","classes","filter","Boolean","join","_jsx","Object","assign"],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
'use strict';
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
6
|
+
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
9
|
+
var ThemeContext = require('../../contexts/ThemeContext.cjs.js');
|
|
10
|
+
|
|
11
|
+
const bigNumberStyles = classVarianceAuthority.cva('inline-flex whitespace-nowrap gap-1', {
|
|
12
|
+
variants: {
|
|
13
|
+
theme: {
|
|
14
|
+
light: 'text-gray-900',
|
|
15
|
+
dark: 'text-gray-100'
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
defaultVariants: {
|
|
19
|
+
theme: 'light'
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Splits a numeric string into groups of three characters for display.
|
|
24
|
+
* Supports two variants:
|
|
25
|
+
* - `space`: groups separated by gap
|
|
26
|
+
* - `comma`: groups separated by commas, with decimal part after `.`
|
|
27
|
+
* Supports light/dark theme.
|
|
28
|
+
*/
|
|
29
|
+
const BigNumber = ({
|
|
30
|
+
children,
|
|
31
|
+
variant = 'space',
|
|
32
|
+
className = '',
|
|
33
|
+
decimalPointSpacing = -2
|
|
34
|
+
}) => {
|
|
35
|
+
const {
|
|
36
|
+
theme
|
|
37
|
+
} = ThemeContext.useTheme();
|
|
38
|
+
const decimalPointStyle = {
|
|
39
|
+
marginLeft: `${decimalPointSpacing}px`,
|
|
40
|
+
marginRight: `${decimalPointSpacing}px`
|
|
41
|
+
};
|
|
42
|
+
if (children === undefined || children === null) return null;
|
|
43
|
+
const str = children.toString();
|
|
44
|
+
if (variant === 'space') {
|
|
45
|
+
// Split into integer and decimal parts
|
|
46
|
+
const [intPart, fracPart] = str.split('.');
|
|
47
|
+
// group digits every 3, right to left (only for integer part)
|
|
48
|
+
const groups = intPart.split('').reverse().reduce((acc, char, idx) => {
|
|
49
|
+
if (idx % 3 === 0) acc.unshift('');
|
|
50
|
+
acc[0] = char + acc[0];
|
|
51
|
+
return acc;
|
|
52
|
+
}, []);
|
|
53
|
+
return jsxRuntime.jsxs("span", {
|
|
54
|
+
className: `${bigNumberStyles({
|
|
55
|
+
theme
|
|
56
|
+
})} ${className}`,
|
|
57
|
+
children: [groups.map((grp, i) => jsxRuntime.jsx("span", {
|
|
58
|
+
children: grp
|
|
59
|
+
}, i)), fracPart != null && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
60
|
+
children: [jsxRuntime.jsx("span", {
|
|
61
|
+
style: decimalPointStyle,
|
|
62
|
+
children: "."
|
|
63
|
+
}), jsxRuntime.jsx("span", {
|
|
64
|
+
children: fracPart
|
|
65
|
+
})]
|
|
66
|
+
})]
|
|
67
|
+
});
|
|
68
|
+
} else {
|
|
69
|
+
// comma variant
|
|
70
|
+
const [intPart, fracPart] = str.split('.');
|
|
71
|
+
const groups = intPart.split('').reverse().reduce((acc, char, idx) => {
|
|
72
|
+
if (idx % 3 === 0) acc.unshift('');
|
|
73
|
+
acc[0] = char + acc[0];
|
|
74
|
+
return acc;
|
|
75
|
+
}, []);
|
|
76
|
+
return jsxRuntime.jsxs("span", {
|
|
77
|
+
className: `${bigNumberStyles({
|
|
78
|
+
theme
|
|
79
|
+
})} ${className}`,
|
|
80
|
+
children: [groups.map((grp, i) => jsxRuntime.jsxs("span", {
|
|
81
|
+
children: [jsxRuntime.jsx("span", {
|
|
82
|
+
children: grp
|
|
83
|
+
}), i < groups.length - 1 && jsxRuntime.jsx("span", {
|
|
84
|
+
children: ","
|
|
85
|
+
})]
|
|
86
|
+
}, i)), fracPart != null && jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
87
|
+
children: [jsxRuntime.jsx("span", {
|
|
88
|
+
style: decimalPointStyle,
|
|
89
|
+
children: "."
|
|
90
|
+
}), jsxRuntime.jsx("span", {
|
|
91
|
+
children: fracPart
|
|
92
|
+
})]
|
|
93
|
+
})]
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
exports.BigNumber = BigNumber;
|
|
99
|
+
exports.default = BigNumber;
|
|
100
|
+
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../../src/react/components/bigNumber/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nexport type BigNumberVariant = 'space' | 'comma'\n\nexport interface BigNumberProps {\n /** The numeric value (or string) to format. */\n children?: number | string | null\n /** Use non-breaking space groups or comma groups. */\n variant?: BigNumberVariant\n /** Extra class names to apply to the wrapper. Use gap-* classes for spacing between groups. */\n className?: string\n /** Horizontal spacing (in pixels) around the decimal point. Negative values reduce spacing. @default -2 */\n decimalPointSpacing?: number\n}\n\nconst bigNumberStyles = cva(\n 'inline-flex whitespace-nowrap gap-1',\n {\n variants: {\n theme: {\n light: 'text-gray-900',\n dark: 'text-gray-100'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\n/**\n * Splits a numeric string into groups of three characters for display.\n * Supports two variants:\n * - `space`: groups separated by gap\n * - `comma`: groups separated by commas, with decimal part after `.`\n * Supports light/dark theme.\n */\nexport const BigNumber: React.FC<BigNumberProps> = ({ children, variant = 'space', className = '', decimalPointSpacing = -2 }) => {\n const { theme } = useTheme()\n\n const decimalPointStyle: React.CSSProperties = {\n marginLeft: `${decimalPointSpacing}px`,\n marginRight: `${decimalPointSpacing}px`\n }\n\n if (children === undefined || children === null) return null\n const str = children.toString()\n\n if (variant === 'space') {\n // Split into integer and decimal parts\n const [intPart, fracPart] = str.split('.')\n\n // group digits every 3, right to left (only for integer part)\n const groups = intPart\n .split('')\n .reverse()\n .reduce<string[]>((acc, char, idx) => {\n if (idx % 3 === 0) acc.unshift('')\n acc[0] = char + acc[0]\n return acc\n }, [])\n\n return (\n <span className={`${bigNumberStyles({ theme })} ${className}`}>\n {groups.map((grp, i) => (\n <span key={i}>{grp}</span>\n ))}\n {fracPart != null && (\n <>\n <span style={decimalPointStyle}>.</span>\n <span>{fracPart}</span>\n </>\n )}\n </span>\n )\n } else {\n // comma variant\n const [intPart, fracPart] = str.split('.')\n const groups = intPart\n .split('')\n .reverse()\n .reduce<string[]>((acc, char, idx) => {\n if (idx % 3 === 0) acc.unshift('')\n acc[0] = char + acc[0]\n return acc\n }, [])\n\n return (\n <span className={`${bigNumberStyles({ theme })} ${className}`}>\n {groups.map((grp, i) => (\n <span key={i}>\n <span>{grp}</span>\n {i < groups.length - 1 && <span>,</span>}\n </span>\n ))}\n {fracPart != null && (\n <>\n <span style={decimalPointStyle}>.</span>\n <span>{fracPart}</span>\n </>\n )}\n </span>\n )\n }\n}\n\nexport default BigNumber "],"names":["bigNumberStyles","cva","variants","theme","light","dark","defaultVariants","BigNumber","children","variant","className","decimalPointSpacing","useTheme","decimalPointStyle","marginLeft","marginRight","undefined","str","toString","intPart","fracPart","split","groups","reverse","reduce","acc","char","idx","unshift","_jsxs","map","grp","i","_jsx","_Fragment","style","length"],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
|
+
import { cva } from 'class-variance-authority';
|
|
5
|
+
import { useTheme } from '../../contexts/ThemeContext.esm.js';
|
|
6
|
+
|
|
7
|
+
const bigNumberStyles = cva('inline-flex whitespace-nowrap gap-1', {
|
|
8
|
+
variants: {
|
|
9
|
+
theme: {
|
|
10
|
+
light: 'text-gray-900',
|
|
11
|
+
dark: 'text-gray-100'
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
defaultVariants: {
|
|
15
|
+
theme: 'light'
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Splits a numeric string into groups of three characters for display.
|
|
20
|
+
* Supports two variants:
|
|
21
|
+
* - `space`: groups separated by gap
|
|
22
|
+
* - `comma`: groups separated by commas, with decimal part after `.`
|
|
23
|
+
* Supports light/dark theme.
|
|
24
|
+
*/
|
|
25
|
+
const BigNumber = ({
|
|
26
|
+
children,
|
|
27
|
+
variant = 'space',
|
|
28
|
+
className = '',
|
|
29
|
+
decimalPointSpacing = -2
|
|
30
|
+
}) => {
|
|
31
|
+
const {
|
|
32
|
+
theme
|
|
33
|
+
} = useTheme();
|
|
34
|
+
const decimalPointStyle = {
|
|
35
|
+
marginLeft: `${decimalPointSpacing}px`,
|
|
36
|
+
marginRight: `${decimalPointSpacing}px`
|
|
37
|
+
};
|
|
38
|
+
if (children === undefined || children === null) return null;
|
|
39
|
+
const str = children.toString();
|
|
40
|
+
if (variant === 'space') {
|
|
41
|
+
// Split into integer and decimal parts
|
|
42
|
+
const [intPart, fracPart] = str.split('.');
|
|
43
|
+
// group digits every 3, right to left (only for integer part)
|
|
44
|
+
const groups = intPart.split('').reverse().reduce((acc, char, idx) => {
|
|
45
|
+
if (idx % 3 === 0) acc.unshift('');
|
|
46
|
+
acc[0] = char + acc[0];
|
|
47
|
+
return acc;
|
|
48
|
+
}, []);
|
|
49
|
+
return jsxs("span", {
|
|
50
|
+
className: `${bigNumberStyles({
|
|
51
|
+
theme
|
|
52
|
+
})} ${className}`,
|
|
53
|
+
children: [groups.map((grp, i) => jsx("span", {
|
|
54
|
+
children: grp
|
|
55
|
+
}, i)), fracPart != null && jsxs(Fragment, {
|
|
56
|
+
children: [jsx("span", {
|
|
57
|
+
style: decimalPointStyle,
|
|
58
|
+
children: "."
|
|
59
|
+
}), jsx("span", {
|
|
60
|
+
children: fracPart
|
|
61
|
+
})]
|
|
62
|
+
})]
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
// comma variant
|
|
66
|
+
const [intPart, fracPart] = str.split('.');
|
|
67
|
+
const groups = intPart.split('').reverse().reduce((acc, char, idx) => {
|
|
68
|
+
if (idx % 3 === 0) acc.unshift('');
|
|
69
|
+
acc[0] = char + acc[0];
|
|
70
|
+
return acc;
|
|
71
|
+
}, []);
|
|
72
|
+
return jsxs("span", {
|
|
73
|
+
className: `${bigNumberStyles({
|
|
74
|
+
theme
|
|
75
|
+
})} ${className}`,
|
|
76
|
+
children: [groups.map((grp, i) => jsxs("span", {
|
|
77
|
+
children: [jsx("span", {
|
|
78
|
+
children: grp
|
|
79
|
+
}), i < groups.length - 1 && jsx("span", {
|
|
80
|
+
children: ","
|
|
81
|
+
})]
|
|
82
|
+
}, i)), fracPart != null && jsxs(Fragment, {
|
|
83
|
+
children: [jsx("span", {
|
|
84
|
+
style: decimalPointStyle,
|
|
85
|
+
children: "."
|
|
86
|
+
}), jsx("span", {
|
|
87
|
+
children: fracPart
|
|
88
|
+
})]
|
|
89
|
+
})]
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export { BigNumber, BigNumber as default };
|
|
95
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../../../../src/react/components/bigNumber/index.tsx"],"sourcesContent":["import React from 'react'\nimport { cva } from 'class-variance-authority'\nimport { useTheme } from '../../contexts/ThemeContext'\n\nexport type BigNumberVariant = 'space' | 'comma'\n\nexport interface BigNumberProps {\n /** The numeric value (or string) to format. */\n children?: number | string | null\n /** Use non-breaking space groups or comma groups. */\n variant?: BigNumberVariant\n /** Extra class names to apply to the wrapper. Use gap-* classes for spacing between groups. */\n className?: string\n /** Horizontal spacing (in pixels) around the decimal point. Negative values reduce spacing. @default -2 */\n decimalPointSpacing?: number\n}\n\nconst bigNumberStyles = cva(\n 'inline-flex whitespace-nowrap gap-1',\n {\n variants: {\n theme: {\n light: 'text-gray-900',\n dark: 'text-gray-100'\n }\n },\n defaultVariants: {\n theme: 'light'\n }\n }\n)\n\n/**\n * Splits a numeric string into groups of three characters for display.\n * Supports two variants:\n * - `space`: groups separated by gap\n * - `comma`: groups separated by commas, with decimal part after `.`\n * Supports light/dark theme.\n */\nexport const BigNumber: React.FC<BigNumberProps> = ({ children, variant = 'space', className = '', decimalPointSpacing = -2 }) => {\n const { theme } = useTheme()\n\n const decimalPointStyle: React.CSSProperties = {\n marginLeft: `${decimalPointSpacing}px`,\n marginRight: `${decimalPointSpacing}px`\n }\n\n if (children === undefined || children === null) return null\n const str = children.toString()\n\n if (variant === 'space') {\n // Split into integer and decimal parts\n const [intPart, fracPart] = str.split('.')\n\n // group digits every 3, right to left (only for integer part)\n const groups = intPart\n .split('')\n .reverse()\n .reduce<string[]>((acc, char, idx) => {\n if (idx % 3 === 0) acc.unshift('')\n acc[0] = char + acc[0]\n return acc\n }, [])\n\n return (\n <span className={`${bigNumberStyles({ theme })} ${className}`}>\n {groups.map((grp, i) => (\n <span key={i}>{grp}</span>\n ))}\n {fracPart != null && (\n <>\n <span style={decimalPointStyle}>.</span>\n <span>{fracPart}</span>\n </>\n )}\n </span>\n )\n } else {\n // comma variant\n const [intPart, fracPart] = str.split('.')\n const groups = intPart\n .split('')\n .reverse()\n .reduce<string[]>((acc, char, idx) => {\n if (idx % 3 === 0) acc.unshift('')\n acc[0] = char + acc[0]\n return acc\n }, [])\n\n return (\n <span className={`${bigNumberStyles({ theme })} ${className}`}>\n {groups.map((grp, i) => (\n <span key={i}>\n <span>{grp}</span>\n {i < groups.length - 1 && <span>,</span>}\n </span>\n ))}\n {fracPart != null && (\n <>\n <span style={decimalPointStyle}>.</span>\n <span>{fracPart}</span>\n </>\n )}\n </span>\n )\n }\n}\n\nexport default BigNumber "],"names":["bigNumberStyles","cva","variants","theme","light","dark","defaultVariants","BigNumber","children","variant","className","decimalPointSpacing","useTheme","decimalPointStyle","marginLeft","marginRight","undefined","str","toString","intPart","fracPart","split","groups","reverse","reduce","acc","char","idx","unshift","_jsxs","map","grp","i","_jsx","_Fragment","style","length"],"mappings":"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"}
|