@justin_evo/evo-ui 1.1.0 → 1.2.1
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 +3 -3
- package/dist/TopNav/TopNav.d.ts +19 -0
- package/dist/declarations.d.ts +6 -6
- package/dist/evo-ui.css +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.es.js +3301 -3197
- package/package.json +52 -52
- package/src/Alert/Alert.tsx +49 -49
- package/src/AutoComplete/AutoComplete.tsx +810 -810
- package/src/Badge/Badge.tsx +53 -53
- package/src/Breadcrumb/Breadcrumb.tsx +53 -53
- package/src/Button/Button.tsx +125 -125
- package/src/Card/Card.tsx +257 -257
- package/src/Checkbox/Checkbox.tsx +59 -59
- package/src/CommandPalette/CommandPalette.tsx +185 -185
- package/src/Container/Container.tsx +31 -31
- package/src/Divider/Divider.tsx +31 -31
- package/src/Form/Form.tsx +185 -185
- package/src/Grid/Grid.tsx +66 -66
- package/src/ImageCropper/ImageCropper.tsx +911 -911
- package/src/Input/Input.tsx +74 -74
- package/src/Modal/Modal.tsx +77 -77
- package/src/Nav/Nav.tsx +708 -708
- package/src/Notification/Notification.tsx +1503 -1503
- package/src/Pagination/Pagination.tsx +76 -76
- package/src/Radio/Radio.tsx +69 -69
- package/src/RichTextArea/RichTextArea.tsx +886 -869
- package/src/Select/Select.tsx +515 -515
- package/src/Skeleton/Skeleton.tsx +70 -70
- package/src/Stack/Stack.tsx +52 -52
- package/src/Table/Table.tsx +335 -335
- package/src/Tabs/Tabs.tsx +90 -90
- package/src/Theme/ThemeProvider.tsx +253 -253
- package/src/Theme/ThemeToggle.tsx +79 -79
- package/src/Toggle/Toggle.tsx +48 -48
- package/src/Tooltip/Tooltip.tsx +38 -38
- package/src/TopNav/TopNav.tsx +1163 -994
- package/src/TreeSelect/TreeSelect.tsx +825 -825
- package/src/css/alert.module.scss +93 -93
- package/src/css/autocomplete.module.scss +416 -416
- package/src/css/badge.module.scss +82 -82
- package/src/css/base/_color.scss +159 -159
- package/src/css/base/_theme.scss +237 -237
- package/src/css/base/_variables.scss +161 -161
- package/src/css/breadcrumb.module.scss +50 -50
- package/src/css/button.module.scss +385 -385
- package/src/css/card.module.scss +217 -217
- package/src/css/checkbox.module.scss +123 -120
- package/src/css/commandpalette.module.scss +211 -211
- package/src/css/container.module.scss +18 -18
- package/src/css/divider.module.scss +41 -41
- package/src/css/form.module.scss +245 -245
- package/src/css/imagecropper.module.scss +397 -397
- package/src/css/input.module.scss +89 -89
- package/src/css/modal.module.scss +105 -105
- package/src/css/nav.module.scss +494 -494
- package/src/css/notification.module.scss +691 -691
- package/src/css/pagination.module.scss +63 -63
- package/src/css/radio.module.scss +89 -89
- package/src/css/richtextarea.module.scss +307 -307
- package/src/css/select.module.scss +525 -525
- package/src/css/skeleton.module.scss +30 -30
- package/src/css/table.module.scss +386 -386
- package/src/css/tabs.module.scss +63 -63
- package/src/css/theme-toggle.module.scss +83 -83
- package/src/css/toggle.module.scss +54 -54
- package/src/css/tooltip.module.scss +97 -97
- package/src/css/topnav.module.scss +568 -396
- package/src/css/treeselect.module.scss +558 -558
- package/src/css/utilities/_borders.scss +111 -111
- package/src/css/utilities/_colors.scss +66 -66
- package/src/css/utilities/_effects.scss +216 -216
- package/src/css/utilities/_layout.scss +181 -181
- package/src/css/utilities/_position.scss +75 -75
- package/src/css/utilities/_sizing.scss +138 -138
- package/src/css/utilities/_spacing.scss +99 -99
- package/src/css/utilities/_typography.scss +121 -121
- package/src/css/utilities/index.scss +24 -24
- package/src/declarations.d.ts +6 -6
- package/src/index.ts +60 -60
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
import styles from '../css/skeleton.module.scss';
|
|
2
|
-
|
|
3
|
-
interface EvoSkeletonProps {
|
|
4
|
-
width?: number | string;
|
|
5
|
-
height?: number | string;
|
|
6
|
-
borderRadius?: number | string;
|
|
7
|
-
className?: string;
|
|
8
|
-
animated?: boolean;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
interface EvoSkeletonTextProps {
|
|
12
|
-
lines?: number;
|
|
13
|
-
className?: string;
|
|
14
|
-
animated?: boolean;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface EvoSkeletonCircleProps {
|
|
18
|
-
size?: number | string;
|
|
19
|
-
className?: string;
|
|
20
|
-
animated?: boolean;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const toSize = (v: number | string) => (typeof v === 'number' ? `${v}px` : v);
|
|
24
|
-
|
|
25
|
-
const EvoSkeletonText = ({ lines = 3, className = '', animated = true }: EvoSkeletonTextProps) => (
|
|
26
|
-
<div className={`${styles.textGroup} ${className}`}>
|
|
27
|
-
{Array.from({ length: lines }).map((_, i) => (
|
|
28
|
-
<div
|
|
29
|
-
key={i}
|
|
30
|
-
className={[styles.skeleton, animated ? styles.animated : ''].filter(Boolean).join(' ')}
|
|
31
|
-
style={{
|
|
32
|
-
width: i === lines - 1 ? '65%' : '100%',
|
|
33
|
-
height: '0.875rem',
|
|
34
|
-
borderRadius: '4px',
|
|
35
|
-
}}
|
|
36
|
-
/>
|
|
37
|
-
))}
|
|
38
|
-
</div>
|
|
39
|
-
);
|
|
40
|
-
|
|
41
|
-
const EvoSkeletonCircle = ({ size = 40, className = '', animated = true }: EvoSkeletonCircleProps) => (
|
|
42
|
-
<div
|
|
43
|
-
className={[styles.skeleton, animated ? styles.animated : '', className].filter(Boolean).join(' ')}
|
|
44
|
-
style={{
|
|
45
|
-
width: toSize(size),
|
|
46
|
-
height: toSize(size),
|
|
47
|
-
borderRadius: '50%',
|
|
48
|
-
}}
|
|
49
|
-
/>
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
export const EvoSkeleton = ({
|
|
53
|
-
width = '100%',
|
|
54
|
-
height = '1rem',
|
|
55
|
-
borderRadius = '6px',
|
|
56
|
-
className = '',
|
|
57
|
-
animated = true,
|
|
58
|
-
}: EvoSkeletonProps) => (
|
|
59
|
-
<div
|
|
60
|
-
className={[styles.skeleton, animated ? styles.animated : '', className].filter(Boolean).join(' ')}
|
|
61
|
-
style={{
|
|
62
|
-
width: toSize(width),
|
|
63
|
-
height: toSize(height),
|
|
64
|
-
borderRadius: toSize(borderRadius),
|
|
65
|
-
}}
|
|
66
|
-
/>
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
EvoSkeleton.Text = EvoSkeletonText;
|
|
70
|
-
EvoSkeleton.Circle = EvoSkeletonCircle;
|
|
1
|
+
import styles from '../css/skeleton.module.scss';
|
|
2
|
+
|
|
3
|
+
interface EvoSkeletonProps {
|
|
4
|
+
width?: number | string;
|
|
5
|
+
height?: number | string;
|
|
6
|
+
borderRadius?: number | string;
|
|
7
|
+
className?: string;
|
|
8
|
+
animated?: boolean;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface EvoSkeletonTextProps {
|
|
12
|
+
lines?: number;
|
|
13
|
+
className?: string;
|
|
14
|
+
animated?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface EvoSkeletonCircleProps {
|
|
18
|
+
size?: number | string;
|
|
19
|
+
className?: string;
|
|
20
|
+
animated?: boolean;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const toSize = (v: number | string) => (typeof v === 'number' ? `${v}px` : v);
|
|
24
|
+
|
|
25
|
+
const EvoSkeletonText = ({ lines = 3, className = '', animated = true }: EvoSkeletonTextProps) => (
|
|
26
|
+
<div className={`${styles.textGroup} ${className}`}>
|
|
27
|
+
{Array.from({ length: lines }).map((_, i) => (
|
|
28
|
+
<div
|
|
29
|
+
key={i}
|
|
30
|
+
className={[styles.skeleton, animated ? styles.animated : ''].filter(Boolean).join(' ')}
|
|
31
|
+
style={{
|
|
32
|
+
width: i === lines - 1 ? '65%' : '100%',
|
|
33
|
+
height: '0.875rem',
|
|
34
|
+
borderRadius: '4px',
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
37
|
+
))}
|
|
38
|
+
</div>
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
const EvoSkeletonCircle = ({ size = 40, className = '', animated = true }: EvoSkeletonCircleProps) => (
|
|
42
|
+
<div
|
|
43
|
+
className={[styles.skeleton, animated ? styles.animated : '', className].filter(Boolean).join(' ')}
|
|
44
|
+
style={{
|
|
45
|
+
width: toSize(size),
|
|
46
|
+
height: toSize(size),
|
|
47
|
+
borderRadius: '50%',
|
|
48
|
+
}}
|
|
49
|
+
/>
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
export const EvoSkeleton = ({
|
|
53
|
+
width = '100%',
|
|
54
|
+
height = '1rem',
|
|
55
|
+
borderRadius = '6px',
|
|
56
|
+
className = '',
|
|
57
|
+
animated = true,
|
|
58
|
+
}: EvoSkeletonProps) => (
|
|
59
|
+
<div
|
|
60
|
+
className={[styles.skeleton, animated ? styles.animated : '', className].filter(Boolean).join(' ')}
|
|
61
|
+
style={{
|
|
62
|
+
width: toSize(width),
|
|
63
|
+
height: toSize(height),
|
|
64
|
+
borderRadius: toSize(borderRadius),
|
|
65
|
+
}}
|
|
66
|
+
/>
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
EvoSkeleton.Text = EvoSkeletonText;
|
|
70
|
+
EvoSkeleton.Circle = EvoSkeletonCircle;
|
package/src/Stack/Stack.tsx
CHANGED
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import React, { CSSProperties } from 'react';
|
|
2
|
-
|
|
3
|
-
type Direction = 'row' | 'column';
|
|
4
|
-
type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
5
|
-
type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
6
|
-
|
|
7
|
-
interface EvoStackProps {
|
|
8
|
-
children: React.ReactNode;
|
|
9
|
-
direction?: Direction;
|
|
10
|
-
gap?: number | string;
|
|
11
|
-
align?: Align;
|
|
12
|
-
justify?: Justify;
|
|
13
|
-
wrap?: boolean;
|
|
14
|
-
className?: string;
|
|
15
|
-
style?: CSSProperties;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
const alignMap: Record<Align, string> = {
|
|
19
|
-
start: 'flex-start', center: 'center', end: 'flex-end',
|
|
20
|
-
stretch: 'stretch', baseline: 'baseline',
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const justifyMap: Record<Justify, string> = {
|
|
24
|
-
start: 'flex-start', center: 'center', end: 'flex-end',
|
|
25
|
-
between: 'space-between', around: 'space-around', evenly: 'space-evenly',
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export const EvoStack = ({
|
|
29
|
-
children,
|
|
30
|
-
direction = 'column',
|
|
31
|
-
gap = '1rem',
|
|
32
|
-
align = 'stretch',
|
|
33
|
-
justify = 'start',
|
|
34
|
-
wrap = false,
|
|
35
|
-
className = '',
|
|
36
|
-
style,
|
|
37
|
-
}: EvoStackProps) => (
|
|
38
|
-
<div
|
|
39
|
-
className={className}
|
|
40
|
-
style={{
|
|
41
|
-
display: 'flex',
|
|
42
|
-
flexDirection: direction,
|
|
43
|
-
gap: typeof gap === 'number' ? `${gap}px` : gap,
|
|
44
|
-
alignItems: alignMap[align],
|
|
45
|
-
justifyContent: justifyMap[justify],
|
|
46
|
-
flexWrap: wrap ? 'wrap' : 'nowrap',
|
|
47
|
-
...style,
|
|
48
|
-
}}
|
|
49
|
-
>
|
|
50
|
-
{children}
|
|
51
|
-
</div>
|
|
52
|
-
);
|
|
1
|
+
import React, { CSSProperties } from 'react';
|
|
2
|
+
|
|
3
|
+
type Direction = 'row' | 'column';
|
|
4
|
+
type Align = 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
5
|
+
type Justify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';
|
|
6
|
+
|
|
7
|
+
interface EvoStackProps {
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
direction?: Direction;
|
|
10
|
+
gap?: number | string;
|
|
11
|
+
align?: Align;
|
|
12
|
+
justify?: Justify;
|
|
13
|
+
wrap?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
style?: CSSProperties;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const alignMap: Record<Align, string> = {
|
|
19
|
+
start: 'flex-start', center: 'center', end: 'flex-end',
|
|
20
|
+
stretch: 'stretch', baseline: 'baseline',
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const justifyMap: Record<Justify, string> = {
|
|
24
|
+
start: 'flex-start', center: 'center', end: 'flex-end',
|
|
25
|
+
between: 'space-between', around: 'space-around', evenly: 'space-evenly',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export const EvoStack = ({
|
|
29
|
+
children,
|
|
30
|
+
direction = 'column',
|
|
31
|
+
gap = '1rem',
|
|
32
|
+
align = 'stretch',
|
|
33
|
+
justify = 'start',
|
|
34
|
+
wrap = false,
|
|
35
|
+
className = '',
|
|
36
|
+
style,
|
|
37
|
+
}: EvoStackProps) => (
|
|
38
|
+
<div
|
|
39
|
+
className={className}
|
|
40
|
+
style={{
|
|
41
|
+
display: 'flex',
|
|
42
|
+
flexDirection: direction,
|
|
43
|
+
gap: typeof gap === 'number' ? `${gap}px` : gap,
|
|
44
|
+
alignItems: alignMap[align],
|
|
45
|
+
justifyContent: justifyMap[justify],
|
|
46
|
+
flexWrap: wrap ? 'wrap' : 'nowrap',
|
|
47
|
+
...style,
|
|
48
|
+
}}
|
|
49
|
+
>
|
|
50
|
+
{children}
|
|
51
|
+
</div>
|
|
52
|
+
);
|