ekm-ui 0.3.0 → 0.3.2
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/.turbo/turbo-build.log +127 -105
- package/CHANGELOG.md +6 -0
- package/dist/alert-banner.d.ts +29 -0
- package/dist/alert-banner.mjs +5 -0
- package/dist/alert-banner.mjs.map +1 -0
- package/dist/avatar.d.ts +22 -7
- package/dist/avatar.mjs +3 -1
- package/dist/badge.d.ts +9 -0
- package/dist/badge.mjs +4 -0
- package/dist/badge.mjs.map +1 -0
- package/dist/card-payment-block.css +1 -1
- package/dist/card-payment-block.css.map +1 -1
- package/dist/card-payment-block.mjs +21 -16
- package/dist/chunk-BISZCSUR.mjs +11 -0
- package/dist/chunk-BISZCSUR.mjs.map +1 -0
- package/dist/chunk-EIUBW4B6.mjs +9 -0
- package/dist/chunk-EIUBW4B6.mjs.map +1 -0
- package/dist/chunk-EWY53DIV.mjs +10 -0
- package/dist/chunk-EWY53DIV.mjs.map +1 -0
- package/dist/chunk-H33QAJXR.mjs +7 -0
- package/dist/chunk-H33QAJXR.mjs.map +1 -0
- package/dist/{chunk-IUZHBHDJ.mjs → chunk-OZBN2ZC6.mjs} +4 -4
- package/dist/{chunk-IUZHBHDJ.mjs.map → chunk-OZBN2ZC6.mjs.map} +1 -1
- package/dist/chunk-UGSJ7PI7.mjs +9 -0
- package/dist/chunk-UGSJ7PI7.mjs.map +1 -0
- package/dist/chunk-UVKFEZEW.mjs +11 -0
- package/dist/chunk-UVKFEZEW.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.mjs +21 -16
- package/dist/label.d.ts +6 -0
- package/dist/label.mjs +5 -0
- package/dist/label.mjs.map +1 -0
- package/dist/layout/layout.css +1 -1
- package/dist/layout/layout.css.map +1 -1
- package/dist/layout/layout.mjs +21 -16
- package/dist/modal.d.ts +48 -0
- package/dist/modal.mjs +5 -0
- package/dist/modal.mjs.map +1 -0
- package/dist/stacked-list-item.css +1 -1
- package/dist/stacked-list-item.css.map +1 -1
- package/dist/stacked-list-item.mjs +21 -16
- package/package.json +1 -1
- package/src/alert-banner.tsx +98 -0
- package/src/avatar.tsx +73 -43
- package/src/badge.tsx +43 -0
- package/src/index.tsx +6 -2
- package/src/label.tsx +11 -0
- package/src/modal.tsx +121 -0
- package/src/stacked-list-item.tsx +1 -0
- package/dist/chunk-664HOPW7.mjs +0 -7
- package/dist/chunk-664HOPW7.mjs.map +0 -1
|
@@ -1,43 +1,48 @@
|
|
|
1
|
-
export { a as StackedListItem } from './chunk-
|
|
1
|
+
export { a as StackedListItem } from './chunk-OZBN2ZC6.mjs';
|
|
2
|
+
import './chunk-3ZCDEN7B.mjs';
|
|
3
|
+
import './chunk-HDNA6QBW.mjs';
|
|
4
|
+
import './chunk-HAQTLD4G.mjs';
|
|
5
|
+
import './chunk-X6GXSTW7.mjs';
|
|
2
6
|
import './chunk-ZHHTK7UM.mjs';
|
|
3
7
|
import './chunk-QWPN2UNV.mjs';
|
|
8
|
+
import './chunk-RMX72FR3.mjs';
|
|
9
|
+
import './chunk-NI4IFVX3.mjs';
|
|
10
|
+
import './chunk-25FJ277C.mjs';
|
|
4
11
|
import './chunk-FAFXVD4P.mjs';
|
|
5
12
|
import './chunk-256SAVHD.mjs';
|
|
6
13
|
import './chunk-VPLCWU7T.mjs';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-X6GXSTW7.mjs';
|
|
14
|
+
import './chunk-EIUBW4B6.mjs';
|
|
15
|
+
import './chunk-B2KVPYRJ.mjs';
|
|
16
|
+
import './chunk-OT256LE6.mjs';
|
|
11
17
|
import './chunk-FJQEJBBY.mjs';
|
|
18
|
+
import './chunk-UVKFEZEW.mjs';
|
|
12
19
|
import './chunk-EWNPNF2B.mjs';
|
|
13
20
|
import './chunk-YQAMEBON.mjs';
|
|
14
21
|
import './chunk-EQANFKDN.mjs';
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
22
|
+
import './chunk-ZT7KDTGF.mjs';
|
|
23
|
+
import './chunk-WU66HPYP.mjs';
|
|
24
|
+
import './chunk-FRIXS4BL.mjs';
|
|
18
25
|
import './chunk-LWDFKEBO.mjs';
|
|
19
26
|
import './chunk-PJMH47GY.mjs';
|
|
20
27
|
import './chunk-KAQJAKQH.mjs';
|
|
21
28
|
import './chunk-BIU2AAPZ.mjs';
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-OT256LE6.mjs';
|
|
24
|
-
import './chunk-FRIXS4BL.mjs';
|
|
29
|
+
import './chunk-VASBTVLS.mjs';
|
|
25
30
|
import './chunk-YTTLKTRL.mjs';
|
|
26
31
|
import './chunk-T2OVPC6F.mjs';
|
|
27
32
|
import './chunk-2IZBG5JT.mjs';
|
|
28
33
|
import './chunk-ZPLTGYYM.mjs';
|
|
29
34
|
import './chunk-QRNTMHBL.mjs';
|
|
30
35
|
import './chunk-ER4YVWM3.mjs';
|
|
31
|
-
import './chunk-ZT7KDTGF.mjs';
|
|
32
|
-
import './chunk-WU66HPYP.mjs';
|
|
33
36
|
import './chunk-NS6AVKX7.mjs';
|
|
37
|
+
import './chunk-BISZCSUR.mjs';
|
|
34
38
|
import './chunk-O3QYDTAF.mjs';
|
|
35
|
-
import './chunk-
|
|
39
|
+
import './chunk-EWY53DIV.mjs';
|
|
40
|
+
import './chunk-H33QAJXR.mjs';
|
|
41
|
+
import './chunk-UGSJ7PI7.mjs';
|
|
36
42
|
import './chunk-S7V4MUJ2.mjs';
|
|
43
|
+
import './chunk-QTAUYFKM.mjs';
|
|
37
44
|
import './chunk-SAXGEQRG.mjs';
|
|
38
45
|
import './chunk-LN7UO7PK.mjs';
|
|
39
|
-
import './chunk-VASBTVLS.mjs';
|
|
40
|
-
import './chunk-QTAUYFKM.mjs';
|
|
41
46
|
import './chunk-RUPJ2ZHA.mjs';
|
|
42
47
|
//# sourceMappingURL=out.js.map
|
|
43
48
|
//# sourceMappingURL=stacked-list-item.mjs.map
|
package/package.json
CHANGED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
|
|
3
|
+
import { variantProps } from 'classname-variants/react'
|
|
4
|
+
import { FaTimes } from 'react-icons/fa'
|
|
5
|
+
import { FaTimes, FaInfoCircle, FaCheckCircle, FaExclamationCircle, FaExclamationTriangle } from 'react-icons/fa'
|
|
6
|
+
import PropTypes from 'prop-types'
|
|
7
|
+
|
|
8
|
+
const alertProps = variantProps({
|
|
9
|
+
base: 'flex p-4 mb-4',
|
|
10
|
+
variants: {
|
|
11
|
+
type: {
|
|
12
|
+
info: 'text-blue-800 border border-blue-300 bg-blue-50 dark:bg-gray-800 dark:text-blue-400 dark:border-blue-800',
|
|
13
|
+
default: 'text-gray-800 border border-gray-300 bg-gray-50 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-800',
|
|
14
|
+
success: 'text-green-800 border border-green-300 bg-green-50 dark:bg-gray-800 dark:text-green-400 dark:border-green-800',
|
|
15
|
+
danger: 'text-red-800 border border-red-300 bg-red-50 dark:bg-gray-800 dark:text-red-400 dark:border-red-800',
|
|
16
|
+
warning: 'text-yellow-800 border border-yellow-300 bg-yellow-50 dark:bg-gray-800 dark:text-yellow-400 dark:border-yellow-800',
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
sm: 'text-sm',
|
|
20
|
+
md: 'text-md',
|
|
21
|
+
lg: 'text-lg',
|
|
22
|
+
},
|
|
23
|
+
rounded: {
|
|
24
|
+
true: 'rounded-lg',
|
|
25
|
+
false: 'rounded-none',
|
|
26
|
+
},
|
|
27
|
+
defaultVariants: {
|
|
28
|
+
type: 'info',
|
|
29
|
+
rounded: true,
|
|
30
|
+
size: 'md',
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
const dismissProps = variantProps({
|
|
36
|
+
base: 'ml-auto -mx-1.5 -my-1.5 rounded-lg focus:ring-2 p-1.5 inline-flex items-center justify-center h-8 w-8',
|
|
37
|
+
variants: {
|
|
38
|
+
type: {
|
|
39
|
+
info: ' bg-blue-50 text-blue-500 focus:ring-blue-400 hover:bg-blue-200 dark:bg-gray-800 dark:text-blue-400 dark:hover:bg-gray-700',
|
|
40
|
+
default: ' bg-grey-50 text-gray-500 focus:ring-gray-400 hover:bg-gray-200 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700',
|
|
41
|
+
success: ' bg-green-50 text-green-500 focus:ring-green-400 hover:bg-green-200 dark:bg-green-800 dark:text-green-400 dark:hover:bg-gray-700',
|
|
42
|
+
danger: ' bg-red-50 text-red-500 focus:ring-red-400 hover:bg-red-200 dark:bg-gray-800 dark:text-red-400 dark:hover:bg-gray-700',
|
|
43
|
+
warning: ' bg-yellow-50 text-yellow-500 focus:ring-yellow-400 hover:bg-yellow-200 dark:bg-gray-800 dark:text-yellow-400 dark:hover:bg-gray-700',
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
export function AlertBanner({ children, type, showIcon, onDismiss, rounded}) {
|
|
49
|
+
|
|
50
|
+
const renderIcon = () => {
|
|
51
|
+
switch (type) {
|
|
52
|
+
case 'info':
|
|
53
|
+
return <FaInfoCircle />
|
|
54
|
+
case 'success':
|
|
55
|
+
return <FaCheckCircle />
|
|
56
|
+
case 'danger':
|
|
57
|
+
return <FaExclamationCircle />
|
|
58
|
+
case 'warning':
|
|
59
|
+
return <FaExclamationTriangle />
|
|
60
|
+
default:
|
|
61
|
+
return <FaInfoCircle />
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return (
|
|
66
|
+
<div {...alertProps({ type, rounded })} role="alert">
|
|
67
|
+
{showIcon && <div className="flex-shrink-0 inline w-4 h-4 mr-3 mt-1">{renderIcon()}</div>}
|
|
68
|
+
<span className="sr-only">{type}</span>
|
|
69
|
+
{children && <div>{children}</div>}
|
|
70
|
+
|
|
71
|
+
{onDismiss && (
|
|
72
|
+
<button type="button" {...dismissProps({ type })} data-dismiss-target="#alert-1" aria-label="Close" onClick={onDismiss}>
|
|
73
|
+
<span className="sr-only">Close</span>
|
|
74
|
+
<FaTimes />
|
|
75
|
+
</button>
|
|
76
|
+
)}
|
|
77
|
+
</div>
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
AlertBanner.defaultProps = {
|
|
82
|
+
showIcon: true,
|
|
83
|
+
rounded: true,
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
AlertBanner.propTypes = {
|
|
87
|
+
/** Type of Alert */
|
|
88
|
+
type: PropTypes.oneOf(['info', 'success', 'warning', 'danger']).isRequired,
|
|
89
|
+
/** Determins if the icon assosiated with the alert type should be shown (defaults to true) */
|
|
90
|
+
showIcon: PropTypes.bool,
|
|
91
|
+
/** Function to be called when Alert is dismissed */
|
|
92
|
+
onDismiss: PropTypes.func,
|
|
93
|
+
/** Whether Alert should have rounded corners */
|
|
94
|
+
rounded: PropTypes.bool,
|
|
95
|
+
/** Components to be rendered as Part of the Compound Component*/
|
|
96
|
+
children: PropTypes.node.isRequired,
|
|
97
|
+
}
|
|
98
|
+
|
package/src/avatar.tsx
CHANGED
|
@@ -1,51 +1,81 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
color?: string;
|
|
5
|
-
border?: string;
|
|
6
|
-
};
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
import { twMerge } from 'tailwind-merge'
|
|
3
|
+
import PropTypes from 'prop-types'
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
const avatarSize = Object.freeze({
|
|
6
|
+
xs: 'w-6 h-6',
|
|
7
|
+
sm: 'w-8 h-8',
|
|
8
|
+
md: 'w-10 h-10',
|
|
9
|
+
lg: 'w-20 h-20',
|
|
10
|
+
xl: 'w-36 h-36',
|
|
11
|
+
})
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
G: "bg-red-200",
|
|
19
|
-
H: "bg-pink-200",
|
|
20
|
-
I: "bg-pink-200",
|
|
21
|
-
J: "bg-pink-200",
|
|
22
|
-
K: "bg-pink-200",
|
|
23
|
-
L: "bg-pink-200",
|
|
24
|
-
M: "bg-pink-200",
|
|
25
|
-
N: "bg-pink-200",
|
|
26
|
-
O: "bg-green-200",
|
|
27
|
-
P: "bg-green-200",
|
|
28
|
-
Q: "bg-green-200",
|
|
29
|
-
R: "bg-green-200",
|
|
30
|
-
S: "bg-green-200",
|
|
31
|
-
T: "bg-green-200",
|
|
32
|
-
U: "bg-orange-200",
|
|
33
|
-
V: "bg-orange-200",
|
|
34
|
-
W: "bg-orange-200",
|
|
35
|
-
X: "bg-orange-200",
|
|
36
|
-
Y: "bg-orange-200",
|
|
37
|
-
Z: "bg-orange-200",
|
|
38
|
-
};
|
|
13
|
+
const fontSize = Object.freeze({
|
|
14
|
+
xs: 'text-xs',
|
|
15
|
+
sm: 'text-sm',
|
|
16
|
+
md: 'text-lg',
|
|
17
|
+
lg: 'text-3xl',
|
|
18
|
+
xl: 'text-7xl',
|
|
19
|
+
})
|
|
39
20
|
|
|
40
|
-
|
|
21
|
+
var colorMap = Object.freeze({
|
|
22
|
+
A: 'bg-red-200',
|
|
23
|
+
B: 'bg-red-200',
|
|
24
|
+
C: 'bg-red-200',
|
|
25
|
+
D: 'bg-red-200',
|
|
26
|
+
E: 'bg-red-200',
|
|
27
|
+
F: 'bg-red-200',
|
|
28
|
+
G: 'bg-red-200',
|
|
29
|
+
H: 'bg-pink-200',
|
|
30
|
+
I: 'bg-pink-200',
|
|
31
|
+
J: 'bg-pink-200',
|
|
32
|
+
K: 'bg-pink-200',
|
|
33
|
+
L: 'bg-pink-200',
|
|
34
|
+
M: 'bg-pink-200',
|
|
35
|
+
N: 'bg-pink-200',
|
|
36
|
+
O: 'bg-green-200',
|
|
37
|
+
P: 'bg-green-200',
|
|
38
|
+
Q: 'bg-green-200',
|
|
39
|
+
R: 'bg-green-200',
|
|
40
|
+
S: 'bg-green-200',
|
|
41
|
+
T: 'bg-green-200',
|
|
42
|
+
U: 'bg-orange-200',
|
|
43
|
+
V: 'bg-orange-200',
|
|
44
|
+
W: 'bg-orange-200',
|
|
45
|
+
X: 'bg-orange-200',
|
|
46
|
+
Y: 'bg-orange-200',
|
|
47
|
+
Z: 'bg-orange-200',
|
|
48
|
+
})
|
|
41
49
|
|
|
42
|
-
|
|
50
|
+
export function Avatar({ children, img, size, placeholderInitials, rounded, ...props }) {
|
|
51
|
+
const bgColor = placeholderInitials ? colorMap[placeholderInitials[0].toUpperCase()] : 'bg-gray-100'
|
|
52
|
+
return img ? (
|
|
53
|
+
<img
|
|
54
|
+
src={img}
|
|
55
|
+
className={twMerge('flex justify-center items-center space-x-4 object-cover', size ? avatarSize[size] : 'w-10 h-10', rounded ? "rounded-full" : "rounded-lg")}
|
|
56
|
+
{...props}
|
|
57
|
+
></img>
|
|
58
|
+
) : (
|
|
43
59
|
<div
|
|
44
|
-
className={
|
|
60
|
+
className={twMerge(
|
|
61
|
+
'relative inline-flex items-center justify-center overflow-hidden',
|
|
62
|
+
bgColor,
|
|
63
|
+
size ? avatarSize[size] : 'w-10 h-10', rounded ? "rounded-full" : "rounded-lg"
|
|
64
|
+
)}
|
|
65
|
+
{...props}
|
|
45
66
|
>
|
|
46
|
-
<span className=
|
|
47
|
-
{placeholderInitials}
|
|
48
|
-
</span>
|
|
67
|
+
<span className={twMerge('text-gray-600 dark:text-gray-300', size ? fontSize[size] : 'text-md')}>{placeholderInitials.toUpperCase()}</span>
|
|
49
68
|
</div>
|
|
50
|
-
)
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
Avatar.propTypes = {
|
|
73
|
+
/** String for file path of image */
|
|
74
|
+
img: PropTypes.string,
|
|
75
|
+
/** String to determine the size of the avatar. "xs, sm, md, lg, xl" */
|
|
76
|
+
size: PropTypes.string,
|
|
77
|
+
/** String for intials of name inputted */
|
|
78
|
+
placeholderInitials: PropTypes.string.isRequired,
|
|
79
|
+
/** Boolean to determine if avatar is circular */
|
|
80
|
+
rounded: PropTypes.boolean,
|
|
51
81
|
}
|
package/src/badge.tsx
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
import { variantProps } from 'classname-variants/react';
|
|
3
|
+
|
|
4
|
+
const badgeProps = variantProps({
|
|
5
|
+
base: "flex h-fit items-center gap-1 font-semibold",
|
|
6
|
+
variants: {
|
|
7
|
+
color: {
|
|
8
|
+
info: "bg-cyan-100 text-cyan-800 dark:bg-cyan-200 dark:text-cyan-800 group-hover:bg-cyan-200 dark:group-hover:bg-cyan-300",
|
|
9
|
+
gray: "bg-gray-100 text-gray-800 dark:bg-gray-700 dark:text-gray-300 group-hover:bg-gray-200 dark:group-hover:bg-gray-600",
|
|
10
|
+
failure: "bg-red-100 text-red-800 dark:bg-red-200 dark:text-red-900 group-hover:bg-red-200 dark:group-hover:bg-red-300",
|
|
11
|
+
success: "bg-green-100 text-green-800 dark:bg-green-200 dark:text-green-900 group-hover:bg-green-200 dark:group-hover:bg-green-300",
|
|
12
|
+
warning: "bg-yellow-100 text-yellow-800 dark:bg-yellow-200 dark:text-yellow-900 group-hover:bg-yellow-200 dark:group-hover:bg-yellow-300",
|
|
13
|
+
indigo: "bg-indigo-100 text-indigo-800 dark:bg-indigo-200 dark:text-indigo-900 group-hover:bg-indigo-200 dark:group-hover:bg-indigo-300",
|
|
14
|
+
purple: "bg-purple-100 text-purple-800 dark:bg-purple-200 dark:text-purple-900 group-hover:bg-purple-200 dark:group-hover:bg-purple-300",
|
|
15
|
+
pink: "bg-pink-100 text-pink-800 dark:bg-pink-200 dark:text-pink-900 group-hover:bg-pink-200 dark:group-hover:bg-pink-300",
|
|
16
|
+
blue: "bg-cyan-100 text-cyan-800 dark:bg-cyan-200 dark:text-cyan-900 group-hover:bg-cyan-200 dark:group-hover:bg-cyan-300",
|
|
17
|
+
cyan: "bg-cyan-100 text-cyan-800 dark:bg-cyan-200 dark:text-cyan-900 group-hover:bg-cyan-200 dark:group-hover:bg-cyan-300",
|
|
18
|
+
dark: "bg-gray-600 text-gray-100 dark:bg-gray-900 dark:text-gray-200 group-hover:bg-gray-500 dark:group-hover:bg-gray-700",
|
|
19
|
+
light: "bg-gray-200 text-gray-800 dark:bg-gray-400 dark:text-gray-900 group-hover:bg-gray-300 dark:group-hover:bg-gray-500",
|
|
20
|
+
green: "bg-green-100 text-green-800 dark:bg-green-200 dark:text-green-900 group-hover:bg-green-200 dark:group-hover:bg-green-300",
|
|
21
|
+
lime: "bg-lime-100 text-lime-800 dark:bg-lime-200 dark:text-lime-900 group-hover:bg-lime-200 dark:group-hover:bg-lime-300",
|
|
22
|
+
red: "bg-red-100 text-red-800 dark:bg-red-200 dark:text-red-900 group-hover:bg-red-200 dark:group-hover:bg-red-300",
|
|
23
|
+
teal: "bg-teal-100 text-teal-800 dark:bg-teal-200 dark:text-teal-900 group-hover:bg-teal-200 dark:group-hover:bg-teal-300",
|
|
24
|
+
yellow: "bg-yellow-100 text-yellow-800 dark:bg-yellow-200 dark:text-yellow-900 group-hover:bg-yellow-200 dark:group-hover:bg-yellow-300"
|
|
25
|
+
},
|
|
26
|
+
size: {
|
|
27
|
+
xs: "p-1 text-xs",
|
|
28
|
+
sm: "p-1.5 text-sm"
|
|
29
|
+
},
|
|
30
|
+
icon: {
|
|
31
|
+
false: "rounded px-2 py-0.5",
|
|
32
|
+
true: "rounded-full p-1.5",
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
export function Badge ({ color="gray", size="xs", icon="false", children, ...props }) {
|
|
38
|
+
return (
|
|
39
|
+
<span {...badgeProps({ color, size, icon })} {...props}>{children}
|
|
40
|
+
</span>
|
|
41
|
+
|
|
42
|
+
)
|
|
43
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -12,7 +12,6 @@ export { Drawer } from "./drawer";
|
|
|
12
12
|
export { MiniFeatureBlock } from "./mini-feature-block";
|
|
13
13
|
export { Layout } from "./layout/layout";
|
|
14
14
|
export { ColorPicker } from "./color-picker";
|
|
15
|
-
export { Avatar } from "./avatar";
|
|
16
15
|
export { TextRow } from "./text-row";
|
|
17
16
|
export { PageHeader } from "./page-header";
|
|
18
17
|
export { ButtonGroupItem } from "./button-group-item";
|
|
@@ -36,6 +35,11 @@ export { Select } from "./select";
|
|
|
36
35
|
export { Checkbox } from "./checkbox";
|
|
37
36
|
export { Accordion } from "./accordion";
|
|
38
37
|
export { Breadcrumb } from "./breadcrumb";
|
|
39
|
-
export {TextArea} from "./textarea";
|
|
38
|
+
export { TextArea } from "./textarea";
|
|
39
|
+
export { Modal } from "./modal";
|
|
40
|
+
export { AlertBanner } from "./alert-banner";
|
|
41
|
+
export { Avatar } from "./avatar";
|
|
42
|
+
export { Badge } from "./badge";
|
|
43
|
+
export { Label } from "./label";
|
|
40
44
|
|
|
41
45
|
import "./styles.css";
|
package/src/label.tsx
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
import { twMerge } from 'tailwind-merge'
|
|
3
|
+
|
|
4
|
+
export function Label({ children, ...props }) {
|
|
5
|
+
return (
|
|
6
|
+
<label className={twMerge("text-sm font-medium text-gray-900 dark:text-white", props.className && props.className)}
|
|
7
|
+
data-testid="flowbite-label"{...props}>
|
|
8
|
+
{children}
|
|
9
|
+
</label>
|
|
10
|
+
)
|
|
11
|
+
}
|
package/src/modal.tsx
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
import { FaTimes } from 'react-icons/fa'
|
|
3
|
+
import { variantProps } from 'classname-variants/react'
|
|
4
|
+
import PropTypes from 'prop-types'
|
|
5
|
+
|
|
6
|
+
const modalProps = variantProps({
|
|
7
|
+
base: 'relative p-4 w-full max-h-full ',
|
|
8
|
+
variants: {
|
|
9
|
+
size: {
|
|
10
|
+
xsm: 'max-w-md',
|
|
11
|
+
sm: 'max-w-xl',
|
|
12
|
+
md: 'max-w-2xl',
|
|
13
|
+
lg: 'max-w-3xl',
|
|
14
|
+
},
|
|
15
|
+
defaultVariants: {
|
|
16
|
+
size: 'md',
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
export function Modal({ children, ...props }) {
|
|
22
|
+
const renderHeadedModal = () => (
|
|
23
|
+
<div className="flex items-center justify-between p-4 md:p-5 border-b rounded-t dark:border-gray-600">
|
|
24
|
+
<h3 className="text-xl font-semibold text-gray-900 dark:text-white">{props.title}</h3>
|
|
25
|
+
<button
|
|
26
|
+
type="button"
|
|
27
|
+
className="text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center dark:hover:bg-gray-600 dark:hover:text-white"
|
|
28
|
+
data-modal-hide="default-modal"
|
|
29
|
+
onClick={props.onClose}
|
|
30
|
+
>
|
|
31
|
+
<FaTimes />
|
|
32
|
+
<span className="sr-only">Close modal</span>
|
|
33
|
+
</button>
|
|
34
|
+
</div>
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
const renderHeadlessModal = () => (
|
|
38
|
+
<button
|
|
39
|
+
type="button"
|
|
40
|
+
className="absolute top-3 end-2.5 text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center dark:hover:bg-gray-600 dark:hover:text-white"
|
|
41
|
+
data-modal-hide="default-modal"
|
|
42
|
+
onClick={props.onClose}
|
|
43
|
+
>
|
|
44
|
+
<FaTimes />
|
|
45
|
+
<span className="sr-only">Close modal</span>
|
|
46
|
+
</button>
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
if (!props.show) return <div />
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<div
|
|
53
|
+
id="default-modal"
|
|
54
|
+
tabIndex="-1"
|
|
55
|
+
aria-hidden="true"
|
|
56
|
+
className="overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 justify-center items-center w-full md:inset-0 h-[calc(100%-1rem)] max-h-full flex bg-gray-900 bg-opacity-50 dark:bg-gray-900 dark:bg-opacity-50"
|
|
57
|
+
role="dialog"
|
|
58
|
+
>
|
|
59
|
+
<div {...modalProps(props)}>
|
|
60
|
+
<div className="relative bg-white rounded-lg shadow dark:bg-gray-700">
|
|
61
|
+
{props.title ? renderHeadedModal() : renderHeadlessModal()}
|
|
62
|
+
{!props.title && (
|
|
63
|
+
<button
|
|
64
|
+
type="button"
|
|
65
|
+
className="absolute top-3 end-2.5 text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm w-8 h-8 ms-auto inline-flex justify-center items-center dark:hover:bg-gray-600 dark:hover:text-white"
|
|
66
|
+
data-modal-hide="default-modal"
|
|
67
|
+
onClick={props.onClose}
|
|
68
|
+
>
|
|
69
|
+
<FaTimes />
|
|
70
|
+
<span className="sr-only">Close modal</span>
|
|
71
|
+
</button>
|
|
72
|
+
)}
|
|
73
|
+
{children}
|
|
74
|
+
</div>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export function ModalBody({ children }) {
|
|
81
|
+
return <div>{children}</div>
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export function ModalFooter({ children, border = true }) {
|
|
85
|
+
return <div className={`flex items-center p-4 md:p-5 ${border && 'border-t'} border-gray-200 rounded-b dark:border-gray-600`}>{children}</div>
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
Modal.Body = ModalBody
|
|
89
|
+
Modal.Footer = ModalFooter
|
|
90
|
+
|
|
91
|
+
Modal.defaultProps = {
|
|
92
|
+
size: 'md',
|
|
93
|
+
show: true,
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
Modal.propTypes = {
|
|
97
|
+
/** Tile of the modal not providing a title makes this a headless modal */
|
|
98
|
+
title: PropTypes.string,
|
|
99
|
+
/** Whether or not the modal is visible */
|
|
100
|
+
show: PropTypes.bool,
|
|
101
|
+
/** Size of the modal */
|
|
102
|
+
size: PropTypes.oneOf(['xsm', 'sm', 'md', 'lg']),
|
|
103
|
+
/** Callback for the close action */
|
|
104
|
+
onClose: PropTypes.func.isRequired,
|
|
105
|
+
/** Body and Footer compounds used to build up the modal. The footer is optional */
|
|
106
|
+
children: PropTypes.arrayOf([
|
|
107
|
+
PropTypes.shape({ type: PropTypes.oneOf([ModalBody]), }).isRequired,
|
|
108
|
+
PropTypes.shape({ type: PropTypes.oneOf([ModalFooter]) })
|
|
109
|
+
]),
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
ModalBody.propTypes = {
|
|
113
|
+
/** Markup to make up the Modal content */
|
|
114
|
+
children: PropTypes.node.isRequired,
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
ModalFooter.propTypes = {
|
|
118
|
+
/** Markup to make up the Modal Footer */
|
|
119
|
+
border: PropTypes.bool,
|
|
120
|
+
children: PropTypes.node.isRequired,
|
|
121
|
+
}
|
package/dist/chunk-664HOPW7.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
|
|
3
|
-
function a({img:i,placeholderInitials:g,color:e,border:n}){console.log(g[0]);var b={A:"bg-red-200",B:"bg-red-200",C:"bg-red-200",D:"bg-red-200",E:"bg-red-200",F:"bg-red-200",G:"bg-red-200",H:"bg-pink-200",I:"bg-pink-200",J:"bg-pink-200",K:"bg-pink-200",L:"bg-pink-200",M:"bg-pink-200",N:"bg-pink-200",O:"bg-green-200",P:"bg-green-200",Q:"bg-green-200",R:"bg-green-200",S:"bg-green-200",T:"bg-green-200",U:"bg-orange-200",V:"bg-orange-200",W:"bg-orange-200",X:"bg-orange-200",Y:"bg-orange-200",Z:"bg-orange-200"};let o=b[g[0]]||"bg-gray-100";return jsx("div",{className:`relative inline-flex h-10 w-10 items-center justify-center overflow-hidden bg-gray-100 dark:bg-gray-600 ${n} ${e} ${o}`,children:jsx("span",{className:"font-medium text-gray-600 dark:text-gray-300",children:g})})}
|
|
4
|
-
|
|
5
|
-
export { a };
|
|
6
|
-
//# sourceMappingURL=out.js.map
|
|
7
|
-
//# sourceMappingURL=chunk-664HOPW7.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/avatar.tsx"],"names":["jsx","Avatar","img","placeholderInitials","color","border","colorMap","bgColor"],"mappings":"AA6CM,cAAAA,MAAA,oBAtCC,SAASC,EAAO,CAAE,IAAAC,EAAK,oBAAAC,EAAqB,MAAAC,EAAO,OAAAC,CAAO,EAAU,CACzE,QAAQ,IAAIF,EAAoB,CAAC,CAAC,EAElC,IAAIG,EAAmC,CACrC,EAAG,aACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,EAAG,cACH,EAAG,cACH,EAAG,cACH,EAAG,cACH,EAAG,cACH,EAAG,cACH,EAAG,cACH,EAAG,eACH,EAAG,eACH,EAAG,eACH,EAAG,eACH,EAAG,eACH,EAAG,eACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,gBACH,EAAG,eACL,EAEA,IAAMC,EAAUD,EAASH,EAAoB,CAAC,CAAC,GAAK,cAEpD,OACEH,EAAC,OACC,UAAW,2GAA2GK,KAAUD,KAASG,IAEzI,SAAAP,EAAC,QAAK,UAAU,+CACb,SAAAG,EACH,EACF,CAEJ","sourcesContent":["type Props = {\n img?: string;\n placeholderInitials: string[];\n color?: string;\n border?: string;\n};\n\nexport function Avatar({ img, placeholderInitials, color, border }: Props) {\n console.log(placeholderInitials[0]);\n\n var colorMap: Record<string, string> = {\n A: \"bg-red-200\",\n B: \"bg-red-200\",\n C: \"bg-red-200\",\n D: \"bg-red-200\",\n E: \"bg-red-200\",\n F: \"bg-red-200\",\n G: \"bg-red-200\",\n H: \"bg-pink-200\",\n I: \"bg-pink-200\",\n J: \"bg-pink-200\",\n K: \"bg-pink-200\",\n L: \"bg-pink-200\",\n M: \"bg-pink-200\",\n N: \"bg-pink-200\",\n O: \"bg-green-200\",\n P: \"bg-green-200\",\n Q: \"bg-green-200\",\n R: \"bg-green-200\",\n S: \"bg-green-200\",\n T: \"bg-green-200\",\n U: \"bg-orange-200\",\n V: \"bg-orange-200\",\n W: \"bg-orange-200\",\n X: \"bg-orange-200\",\n Y: \"bg-orange-200\",\n Z: \"bg-orange-200\",\n };\n\n const bgColor = colorMap[placeholderInitials[0]] || \"bg-gray-100\";\n\n return (\n <div\n className={`relative inline-flex h-10 w-10 items-center justify-center overflow-hidden bg-gray-100 dark:bg-gray-600 ${border} ${color} ${bgColor}`}\n >\n <span className=\"font-medium text-gray-600 dark:text-gray-300\">\n {placeholderInitials}\n </span>\n </div>\n );\n}\n"]}
|