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.
Files changed (53) hide show
  1. package/.turbo/turbo-build.log +127 -105
  2. package/CHANGELOG.md +6 -0
  3. package/dist/alert-banner.d.ts +29 -0
  4. package/dist/alert-banner.mjs +5 -0
  5. package/dist/alert-banner.mjs.map +1 -0
  6. package/dist/avatar.d.ts +22 -7
  7. package/dist/avatar.mjs +3 -1
  8. package/dist/badge.d.ts +9 -0
  9. package/dist/badge.mjs +4 -0
  10. package/dist/badge.mjs.map +1 -0
  11. package/dist/card-payment-block.css +1 -1
  12. package/dist/card-payment-block.css.map +1 -1
  13. package/dist/card-payment-block.mjs +21 -16
  14. package/dist/chunk-BISZCSUR.mjs +11 -0
  15. package/dist/chunk-BISZCSUR.mjs.map +1 -0
  16. package/dist/chunk-EIUBW4B6.mjs +9 -0
  17. package/dist/chunk-EIUBW4B6.mjs.map +1 -0
  18. package/dist/chunk-EWY53DIV.mjs +10 -0
  19. package/dist/chunk-EWY53DIV.mjs.map +1 -0
  20. package/dist/chunk-H33QAJXR.mjs +7 -0
  21. package/dist/chunk-H33QAJXR.mjs.map +1 -0
  22. package/dist/{chunk-IUZHBHDJ.mjs → chunk-OZBN2ZC6.mjs} +4 -4
  23. package/dist/{chunk-IUZHBHDJ.mjs.map → chunk-OZBN2ZC6.mjs.map} +1 -1
  24. package/dist/chunk-UGSJ7PI7.mjs +9 -0
  25. package/dist/chunk-UGSJ7PI7.mjs.map +1 -0
  26. package/dist/chunk-UVKFEZEW.mjs +11 -0
  27. package/dist/chunk-UVKFEZEW.mjs.map +1 -0
  28. package/dist/index.css +1 -1
  29. package/dist/index.css.map +1 -1
  30. package/dist/index.d.ts +5 -1
  31. package/dist/index.mjs +21 -16
  32. package/dist/label.d.ts +6 -0
  33. package/dist/label.mjs +5 -0
  34. package/dist/label.mjs.map +1 -0
  35. package/dist/layout/layout.css +1 -1
  36. package/dist/layout/layout.css.map +1 -1
  37. package/dist/layout/layout.mjs +21 -16
  38. package/dist/modal.d.ts +48 -0
  39. package/dist/modal.mjs +5 -0
  40. package/dist/modal.mjs.map +1 -0
  41. package/dist/stacked-list-item.css +1 -1
  42. package/dist/stacked-list-item.css.map +1 -1
  43. package/dist/stacked-list-item.mjs +21 -16
  44. package/package.json +1 -1
  45. package/src/alert-banner.tsx +98 -0
  46. package/src/avatar.tsx +73 -43
  47. package/src/badge.tsx +43 -0
  48. package/src/index.tsx +6 -2
  49. package/src/label.tsx +11 -0
  50. package/src/modal.tsx +121 -0
  51. package/src/stacked-list-item.tsx +1 -0
  52. package/dist/chunk-664HOPW7.mjs +0 -7
  53. package/dist/chunk-664HOPW7.mjs.map +0 -1
@@ -1,43 +1,48 @@
1
- export { a as StackedListItem } from './chunk-IUZHBHDJ.mjs';
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-3ZCDEN7B.mjs';
8
- import './chunk-HDNA6QBW.mjs';
9
- import './chunk-HAQTLD4G.mjs';
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-RMX72FR3.mjs';
16
- import './chunk-NI4IFVX3.mjs';
17
- import './chunk-25FJ277C.mjs';
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-B2KVPYRJ.mjs';
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-664HOPW7.mjs';
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ekm-ui",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "sideEffects": [
5
5
  "**/*.css"
6
6
  ],
@@ -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
- type Props = {
2
- img?: string;
3
- placeholderInitials: string[];
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
- export function Avatar({ img, placeholderInitials, color, border }: Props) {
9
- console.log(placeholderInitials[0]);
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
- var colorMap: Record<string, string> = {
12
- A: "bg-red-200",
13
- B: "bg-red-200",
14
- C: "bg-red-200",
15
- D: "bg-red-200",
16
- E: "bg-red-200",
17
- F: "bg-red-200",
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
- const bgColor = colorMap[placeholderInitials[0]] || "bg-gray-100";
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
- return (
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={`relative inline-flex h-10 w-10 items-center justify-center overflow-hidden bg-gray-100 dark:bg-gray-600 ${border} ${color} ${bgColor}`}
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="font-medium text-gray-600 dark:text-gray-300">
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
+ }
@@ -1,3 +1,4 @@
1
+ //@ts-nocheck
1
2
  import { Avatar } from "./";
2
3
  import { Badge } from "flowbite-react";
3
4
 
@@ -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"]}