@teammodlr/ui-kit 1.0.7 → 2.0.0
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/lib/__storybook__/argTypes.d.ts +10 -1
- package/lib/components/avatar/Avatar.vue.d.ts +16 -30
- package/lib/components/avatar/style/Avatar.css.d.ts +9 -0
- package/lib/components/avatar/style/index.d.ts +1 -0
- package/lib/components/avatargroup/AvatarGroup.vue.d.ts +28 -13
- package/lib/components/avatargroup/style/AvatarGroup.css.d.ts +2 -0
- package/lib/components/avatargroup/style/index.d.ts +1 -0
- package/lib/components/avatargroup/symbol.d.ts +13 -0
- package/lib/components/badge/Badge.vue.d.ts +30 -0
- package/lib/components/badge/style/Badge.css.d.ts +4 -0
- package/lib/components/badge/style/index.d.ts +1 -0
- package/lib/components/breadcrumb/Breadcrumb.vue.d.ts +12 -3
- package/lib/components/{breadcrumbitem → breadcrumb}/BreadcrumbItem.vue.d.ts +11 -0
- package/lib/components/breadcrumb/style/Breadcrumb.css.d.ts +4 -0
- package/lib/components/breadcrumb/style/index.d.ts +1 -0
- package/lib/components/breadcrumb/symbol.d.ts +13 -0
- package/lib/components/button/Button.vue.d.ts +39 -28
- package/lib/components/button/style/Button.css.d.ts +24 -0
- package/lib/components/button/style/index.d.ts +1 -0
- package/lib/components/buttongroup/ButtonGroup.vue.d.ts +2 -13
- package/lib/components/buttongroup/style/ButtonGroup.css.d.ts +2 -0
- package/lib/components/buttongroup/style/index.d.ts +1 -0
- package/lib/components/buttongroup/symbol.d.ts +6 -0
- package/lib/components/checkbox/Checkbox.vue.d.ts +17 -20
- package/lib/components/checkbox/style/Checkbox.css.d.ts +16 -0
- package/lib/components/checkbox/style/index.d.ts +1 -0
- package/lib/components/colorpicker/ColorPicker.vue.d.ts +75 -0
- package/lib/components/colorpicker/style/ColorPicker.css.d.ts +9 -0
- package/lib/components/colorpicker/style/index.d.ts +1 -0
- package/lib/components/colorpicker/utils.d.ts +16 -0
- package/lib/components/dropdown/Dropdown.vue.d.ts +5 -4
- package/lib/components/dropdown/DropdownItem.vue.d.ts +12 -5
- package/lib/components/dropdown/DropdownList.vue.d.ts +4 -1
- package/lib/components/dropdown/style/Dropdown.css.d.ts +5 -0
- package/lib/components/dropdown/style/index.d.ts +1 -0
- package/lib/components/dropdown/symbol.d.ts +6 -0
- package/lib/components/index.d.ts +10 -1
- package/lib/components/input/Input.vue.d.ts +35 -19
- package/lib/components/input/style/Input.css.d.ts +23 -0
- package/lib/components/input/style/index.d.ts +1 -0
- package/lib/components/link/Link.vue.d.ts +2 -2
- package/lib/components/messageprovider/Message.vue.d.ts +13 -1
- package/lib/components/messageprovider/MessageProvider.vue.d.ts +6 -5
- package/lib/components/messageprovider/style/Message.css.d.ts +12 -0
- package/lib/components/messageprovider/style/index.d.ts +1 -0
- package/lib/components/messageprovider/types.d.ts +2 -1
- package/lib/components/modal/Modal.vue.d.ts +52 -0
- package/lib/components/modal/style/Modal.css.d.ts +21 -0
- package/lib/components/modal/style/index.d.ts +1 -0
- package/lib/components/radio/Radio.vue.d.ts +85 -0
- package/lib/components/radio/style/Checkbox.css.d.ts +16 -0
- package/lib/components/radio/style/index.d.ts +1 -0
- package/lib/components/radiobutton/RadioButton.vue.d.ts +98 -0
- package/lib/components/radiobutton/style/RadioButton.css.d.ts +14 -0
- package/lib/components/radiobutton/style/index.d.ts +1 -0
- package/lib/components/radiobuttongroup/RadioButtonGroup.vue.d.ts +48 -0
- package/lib/components/radiobuttongroup/style/RadioButtonGroup.css.d.ts +3 -0
- package/lib/components/radiobuttongroup/style/index.d.ts +1 -0
- package/lib/components/radiobuttongroup/symbol.d.ts +9 -0
- package/lib/components/select/Select.vue.d.ts +22 -13
- package/lib/components/select/style/Select.css.d.ts +30 -0
- package/lib/components/select/style/index.d.ts +1 -0
- package/lib/components/skeleton/Skeleton.vue.d.ts +15 -21
- package/lib/components/skeleton/style/Skeleton.css.d.ts +8 -0
- package/lib/components/skeleton/style/index.d.ts +2 -0
- package/lib/components/slider/Slider.vue.d.ts +32 -0
- package/lib/components/slider/style/Slider.css.d.ts +4 -0
- package/lib/components/slider/style/index.d.ts +1 -0
- package/lib/components/tab/TabGroup.vue.d.ts +1 -1
- package/lib/components/table/Table.vue.d.ts +1 -1
- package/lib/components/tag/Tag.vue.d.ts +44 -0
- package/lib/components/tag/style/Tag.css.d.ts +11 -0
- package/lib/components/tag/style/index.d.ts +1 -0
- package/lib/components/tooltip/Tooltip.vue.d.ts +17 -2
- package/lib/components/tooltip/style/Tooltip.css.d.ts +6 -0
- package/lib/components/tooltip/style/index.d.ts +1 -0
- package/lib/components/virtualscroll/VirtualScroll.vue.d.ts +46 -16
- package/lib/components/virtualscroll/style/VirtualScroll.css.d.ts +1 -0
- package/lib/components/virtualscroll/style/index.d.ts +1 -0
- package/lib/composables/useInput.d.ts +1 -1
- package/lib/composables/useInteractive.d.ts +15 -0
- package/lib/composables/useZIndex.d.ts +8 -0
- package/lib/index.cjs.js +8 -2
- package/lib/index.d.ts +0 -1
- package/lib/index.es.js +3688 -1692
- package/lib/style.css +1 -1
- package/lib/styles/theme.css.d.ts +147 -0
- package/lib/styles/typography.css.d.ts +22 -0
- package/lib/types/props.d.ts +1 -0
- package/package.json +33 -26
- package/src/__storybook__/argTypes.ts +19 -1
- package/src/components/avatar/Avatar.vue +33 -26
- package/src/components/avatar/examples/index.stories.ts +1 -1
- package/src/components/avatar/style/Avatar.css.ts +92 -0
- package/src/components/avatar/style/index.ts +1 -0
- package/src/components/avatargroup/AvatarGroup.vue +71 -32
- package/src/components/avatargroup/examples/basic.vue +33 -7
- package/src/components/avatargroup/examples/index.stories.ts +4 -8
- package/src/components/avatargroup/style/AvatarGroup.css.ts +21 -0
- package/src/components/avatargroup/style/index.ts +1 -0
- package/src/components/avatargroup/symbol.ts +17 -0
- package/src/components/badge/Badge.css +128 -0
- package/src/components/badge/Badge.vue +43 -0
- package/src/components/badge/examples/basic.vue +10 -0
- package/src/components/badge/examples/index.stories.ts +21 -0
- package/src/components/badge/examples/index.ts +1 -0
- package/src/components/badge/style/Badge.css.ts +124 -0
- package/src/components/badge/style/index.ts +1 -0
- package/src/components/breadcrumb/Breadcrumb.vue +22 -15
- package/src/components/breadcrumb/BreadcrumbItem.vue +73 -0
- package/src/components/breadcrumb/examples/basic.vue +5 -7
- package/src/components/breadcrumb/examples/index.stories.ts +2 -2
- package/src/components/breadcrumb/style/Breadcrumb.css.ts +40 -0
- package/src/components/breadcrumb/style/index.ts +1 -0
- package/src/components/breadcrumb/symbol.ts +17 -0
- package/src/components/button/Button.vue +194 -107
- package/src/components/button/examples/icon-left.vue +12 -0
- package/src/components/button/examples/icon.vue +6 -7
- package/src/components/button/examples/index.stories.ts +9 -7
- package/src/components/button/examples/index.ts +3 -2
- package/src/components/button/examples/variants-secondary.vue +8 -0
- package/src/components/button/examples/variants.vue +8 -0
- package/src/components/button/style/Button.css.ts +585 -0
- package/src/components/button/style/index.ts +1 -0
- package/src/components/buttongroup/ButtonGroup.vue +36 -47
- package/src/components/buttongroup/examples/basic.vue +2 -2
- package/src/components/buttongroup/examples/icon-group.vue +22 -0
- package/src/components/buttongroup/examples/index.stories.ts +4 -2
- package/src/components/buttongroup/examples/index.ts +1 -0
- package/src/components/buttongroup/style/ButtonGroup.css.ts +40 -0
- package/src/components/buttongroup/style/index.ts +1 -0
- package/src/components/buttongroup/symbol.ts +8 -0
- package/src/components/checkbox/Checkbox.vue +70 -54
- package/src/components/checkbox/examples/index.stories.ts +1 -1
- package/src/components/checkbox/style/Checkbox.css.ts +127 -0
- package/src/components/checkbox/style/index.ts +1 -0
- package/src/components/colorpicker/ColorPicker.vue +283 -0
- package/src/components/colorpicker/examples/basic.vue +3 -0
- package/src/components/colorpicker/examples/index.stories.ts +17 -0
- package/src/components/colorpicker/examples/index.ts +1 -0
- package/src/components/colorpicker/style/ColorPicker.css.ts +97 -0
- package/src/components/colorpicker/style/index.ts +1 -0
- package/src/components/colorpicker/utils.ts +188 -0
- package/src/components/dropdown/Dropdown.vue +45 -24
- package/src/components/dropdown/DropdownItem.vue +121 -118
- package/src/components/dropdown/DropdownList.vue +3 -3
- package/src/components/dropdown/DropdownWrapper.vue +2 -1
- package/src/components/dropdown/examples/custom.vue +13 -0
- package/src/components/dropdown/examples/index.stories.ts +4 -2
- package/src/components/dropdown/examples/index.ts +1 -0
- package/src/components/dropdown/style/Dropdown.css.ts +48 -0
- package/src/components/dropdown/style/index.ts +1 -0
- package/src/components/dropdown/symbol.ts +8 -0
- package/src/components/form/examples/basic.vue +4 -2
- package/src/components/form/examples/index.stories.ts +4 -2
- package/src/components/image/examples/index.stories.ts +1 -1
- package/src/components/index.ts +10 -2
- package/src/components/input/Input.vue +84 -42
- package/src/components/input/examples/basic.vue +2 -1
- package/src/components/input/examples/index.stories.ts +1 -1
- package/src/components/input/examples/prefix.vue +4 -2
- package/src/components/input/examples/suffix.vue +4 -2
- package/src/components/input/style/Input.css.ts +221 -0
- package/src/components/input/style/index.ts +1 -0
- package/src/components/link/examples/index.stories.ts +1 -1
- package/src/components/messageprovider/Message.vue +52 -5
- package/src/components/messageprovider/MessageProvider.css +0 -13
- package/src/components/messageprovider/MessageProvider.vue +18 -16
- package/src/components/messageprovider/examples/basic.vue +56 -5
- package/src/components/messageprovider/examples/index.stories.ts +0 -1
- package/src/components/messageprovider/examples/index.ts +1 -0
- package/src/components/messageprovider/examples/update.vue +34 -0
- package/src/components/messageprovider/examples/wrapper.vue +1 -1
- package/src/components/messageprovider/style/Message.css.ts +109 -0
- package/src/components/messageprovider/style/index.ts +1 -0
- package/src/components/messageprovider/types.ts +9 -1
- package/src/components/modal/Modal.vue +126 -0
- package/src/components/modal/examples/basic.vue +40 -0
- package/src/components/modal/examples/index.stories.ts +20 -0
- package/src/components/modal/examples/index.ts +2 -0
- package/src/components/modal/examples/modal-form.vue +99 -0
- package/src/components/modal/style/Modal.css.ts +257 -0
- package/src/components/modal/style/index.ts +1 -0
- package/src/components/radio/Checkbox.css +185 -0
- package/src/components/radio/Radio.vue +137 -0
- package/src/components/radio/examples/basic.vue +9 -0
- package/src/components/radio/examples/index.stories.ts +19 -0
- package/src/components/radio/examples/index.ts +2 -0
- package/src/components/radio/style/Checkbox.css.ts +132 -0
- package/src/components/radio/style/index.ts +1 -0
- package/src/components/radiobutton/RadioButton.vue +131 -0
- package/src/components/radiobutton/style/RadioButton.css.ts +185 -0
- package/src/components/radiobutton/style/index.ts +1 -0
- package/src/components/radiobuttongroup/RadioButtonGroup.vue +75 -0
- package/src/components/radiobuttongroup/examples/basic.vue +17 -0
- package/src/components/radiobuttongroup/examples/index.stories.ts +22 -0
- package/src/components/radiobuttongroup/examples/index.ts +2 -0
- package/src/components/radiobuttongroup/style/RadioButtonGroup.css.ts +37 -0
- package/src/components/radiobuttongroup/style/index.ts +1 -0
- package/src/components/radiobuttongroup/symbol.ts +11 -0
- package/src/components/select/Select.css +0 -226
- package/src/components/select/Select.vue +116 -48
- package/src/components/select/examples/index.stories.ts +1 -1
- package/src/components/select/examples/multiple.vue +1 -2
- package/src/components/select/style/Select.css.ts +254 -0
- package/src/components/select/style/index.ts +1 -0
- package/src/components/skeleton/Skeleton.vue +55 -47
- package/src/components/skeleton/examples/index.stories.ts +1 -8
- package/src/components/skeleton/style/Skeleton.css.ts +57 -0
- package/src/components/skeleton/style/index.ts +2 -0
- package/src/components/slider/Slider.vue +76 -0
- package/src/components/slider/style/Slider.css.ts +43 -0
- package/src/components/slider/style/index.ts +1 -0
- package/src/components/tab/examples/index.stories.ts +1 -1
- package/src/components/table/examples/index.stories.ts +1 -1
- package/src/components/tag/Tag.css +0 -0
- package/src/components/tag/Tag.vue +66 -0
- package/src/components/tag/examples/basic.vue +5 -0
- package/src/components/tag/examples/index.stories.ts +22 -0
- package/src/components/tag/examples/index.ts +1 -0
- package/src/components/tag/style/Tag.css.ts +79 -0
- package/src/components/tag/style/index.ts +1 -0
- package/src/components/tooltip/Tooltip.css +0 -6
- package/src/components/tooltip/Tooltip.vue +53 -22
- package/src/components/tooltip/examples/basic.vue +2 -5
- package/src/components/tooltip/examples/index.stories.ts +1 -1
- package/src/components/tooltip/style/Tooltip.css.ts +48 -0
- package/src/components/tooltip/style/index.ts +1 -0
- package/src/components/virtualscroll/VirtualScroll.vue +159 -53
- package/src/components/virtualscroll/examples/basic.vue +21 -27
- package/src/components/virtualscroll/examples/index.stories.ts +2 -18
- package/src/components/virtualscroll/style/VirtualScroll.css.ts +18 -0
- package/src/components/virtualscroll/style/index.ts +1 -0
- package/src/composables/useInput.ts +2 -2
- package/src/composables/useInteractive.ts +20 -0
- package/src/composables/usePopper.ts +1 -1
- package/src/composables/useZIndex.ts +31 -0
- package/src/css/components.css +4 -3
- package/src/css/normalize.css +0 -379
- package/src/css/variables.css +2 -2
- package/src/examples/cards/cards.stories.ts +9 -0
- package/src/examples/cards/sidebar.vue +263 -0
- package/src/index.ts +1 -1
- package/src/styles/theme.css.ts +149 -0
- package/src/styles/typography.css.ts +91 -0
- package/src/types/props.ts +2 -0
- package/lib/components/breadcrumbitem/index.d.ts +0 -1
- package/src/components/avatar/Avatar.css +0 -69
- package/src/components/breadcrumbitem/BreadcrumbItem.vue +0 -66
- package/src/components/breadcrumbitem/index.ts +0 -1
- package/src/components/button/examples/colors-secondary.vue +0 -8
- package/src/components/button/examples/colors.vue +0 -8
- package/src/components/dropdown/Dropdown.css +0 -68
- /package/src/components/button/{Button.css → Button-old.css} +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createVar, style, styleVariants } from "@vanilla-extract/css";
|
|
2
|
+
import { themeVars } from "../../../styles/theme.css";
|
|
3
|
+
|
|
4
|
+
const sizes = {
|
|
5
|
+
xs: '16px',
|
|
6
|
+
sm: '24px',
|
|
7
|
+
md: '32px',
|
|
8
|
+
lg: '40px',
|
|
9
|
+
xl: '96px',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const borderRadiuses = {
|
|
13
|
+
xs: '2px',
|
|
14
|
+
sm: '3px',
|
|
15
|
+
md: '4px',
|
|
16
|
+
lg: '6px',
|
|
17
|
+
xl: '8px',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const vars = {
|
|
21
|
+
size: createVar(),
|
|
22
|
+
radius: createVar(),
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const base = style({
|
|
26
|
+
width: vars.size,
|
|
27
|
+
height: vars.size,
|
|
28
|
+
borderRadius: vars.radius,
|
|
29
|
+
backgroundColor: themeVars.color.gray[300],
|
|
30
|
+
boxSizing: 'content-box',
|
|
31
|
+
cursor: 'inherit',
|
|
32
|
+
display: 'flex',
|
|
33
|
+
flexDirection: 'column',
|
|
34
|
+
justifyContent: 'center',
|
|
35
|
+
outline: 'none',
|
|
36
|
+
overflow: 'hidden',
|
|
37
|
+
position: 'static',
|
|
38
|
+
border: 0,
|
|
39
|
+
padding: themeVars.space[0],
|
|
40
|
+
margin: themeVars.space[1],
|
|
41
|
+
color: themeVars.color.gray[500],
|
|
42
|
+
fontSize: themeVars.fontSize.small,
|
|
43
|
+
alignItems: 'center'
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export const size = styleVariants({
|
|
47
|
+
xs: {
|
|
48
|
+
vars: {
|
|
49
|
+
[vars.size]: sizes.xs,
|
|
50
|
+
[vars.radius]: borderRadiuses.xs,
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
sm: {
|
|
54
|
+
vars: {
|
|
55
|
+
[vars.size]: sizes.sm,
|
|
56
|
+
[vars.radius]: borderRadiuses.sm,
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
md: {
|
|
60
|
+
vars: {
|
|
61
|
+
[vars.size]: sizes.md,
|
|
62
|
+
[vars.radius]: borderRadiuses.md,
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
lg: {
|
|
66
|
+
vars: {
|
|
67
|
+
[vars.size]: sizes.lg,
|
|
68
|
+
[vars.radius]: borderRadiuses.lg,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
xl: {
|
|
72
|
+
vars: {
|
|
73
|
+
[vars.size]: sizes.xl,
|
|
74
|
+
[vars.radius]: borderRadiuses.xl,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
export const image = style({
|
|
80
|
+
display: 'flex',
|
|
81
|
+
width: '100%',
|
|
82
|
+
height: '100%',
|
|
83
|
+
flex: '1 1 100%'
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
export const rounded = style({
|
|
87
|
+
borderRadius: '9999px',
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
export const outline = style({
|
|
91
|
+
boxShadow: '0 0 0 2px #FFF'
|
|
92
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Avatar.css';
|
|
@@ -1,32 +1,71 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
1
|
+
<template>
|
|
2
|
+
<ul :class="style.base">
|
|
3
|
+
<li v-for="(option, index) in avatars" :key="index" :class="style.item">
|
|
4
|
+
<div style="display: inline-block; position: relative; outline: 0;" :style="{ zIndex: (avatars.length - index)}">
|
|
5
|
+
<MAvatar :src="option.src" :srcSet="option.srcSet" :alt="option.alt" />
|
|
6
|
+
</div>
|
|
7
|
+
</li>
|
|
8
|
+
<li v-if="options && options.length > max">
|
|
9
|
+
<MAvatar>
|
|
10
|
+
+{{ remaining }}
|
|
11
|
+
</MAvatar>
|
|
12
|
+
</li>
|
|
13
|
+
</ul>
|
|
14
|
+
</template>
|
|
15
|
+
|
|
16
|
+
<script lang="ts">
|
|
17
|
+
import {computed, defineComponent, type PropType, provide, reactive, toRef} from 'vue';
|
|
18
|
+
import * as style from './style';
|
|
19
|
+
import type {AvatarGroupState, Options} from './symbol';
|
|
20
|
+
import type {Size} from "../../types/props";
|
|
21
|
+
import {AVATAR_GROUP_STATE} from "./symbol";
|
|
22
|
+
|
|
23
|
+
export default defineComponent({
|
|
24
|
+
name: "MAvatarGroup",
|
|
25
|
+
components: {
|
|
26
|
+
MAvatar: () => import('../avatar/Avatar.vue')
|
|
27
|
+
},
|
|
28
|
+
props: {
|
|
29
|
+
options: {
|
|
30
|
+
type: Array as PropType<Options[]>,
|
|
31
|
+
default: () => []
|
|
32
|
+
},
|
|
33
|
+
max: {
|
|
34
|
+
type: Number,
|
|
35
|
+
default: 5
|
|
36
|
+
},
|
|
37
|
+
size: {
|
|
38
|
+
type: String as PropType<Size>,
|
|
39
|
+
default: 'md'
|
|
40
|
+
},
|
|
41
|
+
rounded: {
|
|
42
|
+
type: Boolean,
|
|
43
|
+
default: false
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
setup(props) {
|
|
47
|
+
const state: AvatarGroupState = reactive({
|
|
48
|
+
size: toRef(props, 'size'),
|
|
49
|
+
rounded: toRef(props, 'rounded'),
|
|
50
|
+
max: toRef(props, 'max')
|
|
51
|
+
})
|
|
52
|
+
provide(AVATAR_GROUP_STATE, state);
|
|
53
|
+
|
|
54
|
+
const avatars = computed(() => {
|
|
55
|
+
return props.options.slice(0, props.max);
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
const remaining = computed(() => {
|
|
59
|
+
return props.options.length - props.max;
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
style,
|
|
64
|
+
avatars,
|
|
65
|
+
remaining
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
</script>
|
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
<template>
|
|
4
|
-
<MAvatarGroup
|
|
5
|
-
<MAvatar src="https://cdn.discordapp.com/avatars/314170125915783180/9f71af5f78d3188a0c92800c94112496.webp" variant="circle" />
|
|
6
|
-
<MAvatar src="https://cdn.vuetifyjs.com/images/lists/2.jpg" variant="circle" />
|
|
7
|
-
<MAvatar src="https://cdn.vuetifyjs.com/images/lists/3.jpg" variant="circle" />
|
|
8
|
-
<MAvatar src="https://cdn.vuetifyjs.com/images/lists/4.jpg" variant="circle" />
|
|
9
|
-
<MAvatar src="https://cdn.vuetifyjs.com/images/lists/5.jpg" variant="circle" />
|
|
10
|
-
</MAvatarGroup>
|
|
4
|
+
<MAvatarGroup size="lg" :options="options" rounded />
|
|
11
5
|
</template>
|
|
6
|
+
|
|
7
|
+
<script setup lang="ts">
|
|
8
|
+
|
|
9
|
+
const options = [
|
|
10
|
+
{
|
|
11
|
+
src: "https://cdn.discordapp.com/avatars/314170125915783180/9f71af5f78d3188a0c92800c94112496.webp",
|
|
12
|
+
srcSet: "",
|
|
13
|
+
alt: "Avatar"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
src: "https://cdn.vuetifyjs.com/images/lists/2.jpg",
|
|
17
|
+
srcSet: "",
|
|
18
|
+
alt: "Avatar"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
src: "https://cdn.vuetifyjs.com/images/lists/3.jpg",
|
|
22
|
+
srcSet: "",
|
|
23
|
+
alt: "Avatar"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
src: "https://cdn.vuetifyjs.com/images/lists/4.jpg",
|
|
27
|
+
srcSet: "",
|
|
28
|
+
alt: "Avatar"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
src: "https://cdn.vuetifyjs.com/images/lists/5.jpg",
|
|
32
|
+
srcSet: "",
|
|
33
|
+
alt: "Avatar"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
|
|
37
|
+
</script>
|
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
} from "./index";
|
|
7
7
|
|
|
8
8
|
import {
|
|
9
|
-
createStory
|
|
10
|
-
|
|
9
|
+
createStory,
|
|
10
|
+
sizeArgType
|
|
11
|
+
} from "../../../__storybook__";
|
|
11
12
|
|
|
12
13
|
export default {
|
|
13
14
|
component: MAvatarGroup,
|
|
@@ -16,12 +17,7 @@ export default {
|
|
|
16
17
|
},
|
|
17
18
|
title: 'Components/Avatar Group',
|
|
18
19
|
argTypes: {
|
|
19
|
-
|
|
20
|
-
control: {
|
|
21
|
-
type: 'select',
|
|
22
|
-
options: ['xs', 'sm', 'md', 'lg', 'xl']
|
|
23
|
-
}
|
|
24
|
-
},
|
|
20
|
+
...sizeArgType()
|
|
25
21
|
}
|
|
26
22
|
}
|
|
27
23
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { createVar, globalStyle, style, styleVariants } from "@vanilla-extract/css";
|
|
2
|
+
import { themeVars } from "../../../styles/theme.css";
|
|
3
|
+
|
|
4
|
+
const sizes = {
|
|
5
|
+
xs: '16px',
|
|
6
|
+
sm: '24px',
|
|
7
|
+
md: '32px',
|
|
8
|
+
lg: '40px',
|
|
9
|
+
xl: '96px',
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const base = style({
|
|
13
|
+
display: 'flex',
|
|
14
|
+
lineHeight: 1,
|
|
15
|
+
listStyle: 'none',
|
|
16
|
+
padding: 0
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
export const item = style({
|
|
20
|
+
marginRight: '-10px',
|
|
21
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './AvatarGroup.css';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type {InjectionKey} from "vue";
|
|
2
|
+
import type {Size} from "../../types/props";
|
|
3
|
+
|
|
4
|
+
export type Options = {
|
|
5
|
+
src: string;
|
|
6
|
+
srcSet: string;
|
|
7
|
+
alt: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export interface AvatarGroupState {
|
|
12
|
+
max: number;
|
|
13
|
+
size: Size;
|
|
14
|
+
rounded: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const AVATAR_GROUP_STATE: InjectionKey<AvatarGroupState> = Symbol('AVATAR_GROUP_STATE');
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
.m-badge__wrapper {
|
|
2
|
+
position: relative;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.m-badge {
|
|
6
|
+
--badge-border-color: var(--white);
|
|
7
|
+
--badge-background-color: var(--red);
|
|
8
|
+
--badge-color: var(--white);
|
|
9
|
+
--badge-line-height: 15px;
|
|
10
|
+
--badge-font-size: 10px;
|
|
11
|
+
--badge-padding: 0px 6px;
|
|
12
|
+
--badge-border-radius: 8px;
|
|
13
|
+
--badge-translate-x: 45%;
|
|
14
|
+
--badge-translate-y: -50%;
|
|
15
|
+
|
|
16
|
+
position: absolute;
|
|
17
|
+
display: inline-block;
|
|
18
|
+
border: 1px solid var(--badge-border-color);
|
|
19
|
+
background-color: var(--badge-background-color);
|
|
20
|
+
color: var(--badge-color);
|
|
21
|
+
line-height: var(--badge-line-height);
|
|
22
|
+
font-size: var(--badge-font-size);
|
|
23
|
+
padding: var(--badge-padding);
|
|
24
|
+
border-radius: var(--badge-border-radius);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.m-badge__top-right {
|
|
28
|
+
--badge-translate-x: 45%;
|
|
29
|
+
--badge-translate-y: -50%;
|
|
30
|
+
top: 0;
|
|
31
|
+
right: 0;
|
|
32
|
+
transform: translate(var(--badge-translate-x), var(--badge-translate-y));
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.m-badge__top-left {
|
|
36
|
+
--badge-translate-x: -45%;
|
|
37
|
+
--badge-translate-y: -50%;
|
|
38
|
+
top: 0;
|
|
39
|
+
left: 0;
|
|
40
|
+
transform: translate(var(--badge-translate-x), var(--badge-translate-y));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.m-badge__bottom-right {
|
|
44
|
+
--badge-translate-x: 50%;
|
|
45
|
+
--badge-translate-y: 45%;
|
|
46
|
+
bottom: 0;
|
|
47
|
+
right: 0;
|
|
48
|
+
transform: translate(var(--badge-translate-x), var(--badge-translate-y));
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.m-badge__bottom-left {
|
|
52
|
+
--badge-translate-x: -50%;
|
|
53
|
+
--badge-translate-y: 45%;
|
|
54
|
+
bottom: 0;
|
|
55
|
+
left: 0;
|
|
56
|
+
transform: translate(var(--badge-translate-x), var(--badge-translate-y));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.m-badge--blue {
|
|
60
|
+
--badge-border-color: var(--blue);
|
|
61
|
+
--badge-background-color: var(--blue);
|
|
62
|
+
--badge-color: var(--white);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.m-badge--red {
|
|
66
|
+
--badge-border-color: var(--red);
|
|
67
|
+
--badge-background-color: var(--red);
|
|
68
|
+
--badge-color: var(--white);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.m-badge--green {
|
|
72
|
+
--badge-border-color: var(--green);
|
|
73
|
+
--badge-background-color: var(--green);
|
|
74
|
+
--badge-color: var(--white);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.m-badge--yellow {
|
|
78
|
+
--badge-border-color: var(--yellow);
|
|
79
|
+
--badge-background-color: var(--yellow);
|
|
80
|
+
--badge-color: var(--gray-900);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.m-badge--black {
|
|
84
|
+
--badge-border-color: var(--gray-900);
|
|
85
|
+
--badge-background-color: var(--gray-900);
|
|
86
|
+
--badge-color: var(--white);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.m-badge--white {
|
|
90
|
+
--badge-border-color: var(--gray-300);
|
|
91
|
+
--badge-background-color: var(--white);
|
|
92
|
+
--badge-color: var(--gray-900);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.m-badge--xs {
|
|
96
|
+
--badge-line-height: 10px;
|
|
97
|
+
--badge-font-size: 8px;
|
|
98
|
+
--badge-padding: 0px 4px;
|
|
99
|
+
--badge-border-radius: 5px;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.m-badge--sm {
|
|
103
|
+
--badge-line-height: 12px;
|
|
104
|
+
--badge-font-size: 9px;
|
|
105
|
+
--badge-padding: 0px 5px;
|
|
106
|
+
--badge-border-radius: 6px;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.m-badge--md {
|
|
110
|
+
--badge-line-height: 15px;
|
|
111
|
+
--badge-font-size: 10px;
|
|
112
|
+
--badge-padding: 0px 6px;
|
|
113
|
+
--badge-border-radius: 8px;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.m-badge--lg {
|
|
117
|
+
--badge-line-height: 18px;
|
|
118
|
+
--badge-font-size: 12px;
|
|
119
|
+
--badge-padding: 0px 8px;
|
|
120
|
+
--badge-border-radius: 10px;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.m-badge--xl {
|
|
124
|
+
--badge-line-height: 20px;
|
|
125
|
+
--badge-font-size: 14px;
|
|
126
|
+
--badge-padding: 0px 10px;
|
|
127
|
+
--badge-border-radius: 12px;
|
|
128
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<span :class="baseClass" >
|
|
3
|
+
<span :class="textClass" secondary>
|
|
4
|
+
<slot />
|
|
5
|
+
</span>
|
|
6
|
+
</span>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script lang="ts">
|
|
10
|
+
import type { Variant } from '../../types/props';
|
|
11
|
+
import { computed, defineComponent, type PropType } from 'vue';
|
|
12
|
+
import * as style from "./style";
|
|
13
|
+
|
|
14
|
+
export default defineComponent({
|
|
15
|
+
name: "MBadge",
|
|
16
|
+
props: {
|
|
17
|
+
variant: {
|
|
18
|
+
type: String as PropType<Variant>,
|
|
19
|
+
default: 'default'
|
|
20
|
+
},
|
|
21
|
+
secondary: {
|
|
22
|
+
type: Boolean,
|
|
23
|
+
default: false
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
setup(props) {
|
|
27
|
+
const baseClass = computed(() => {
|
|
28
|
+
return [
|
|
29
|
+
style.base,
|
|
30
|
+
style.variant[props.variant],
|
|
31
|
+
{
|
|
32
|
+
[style.secondary[props.variant]]: props.secondary
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
textClass: style.text,
|
|
39
|
+
baseClass
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
</script>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import MBadge from "../Badge.vue";
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
MBadgeBasic,
|
|
5
|
+
} from "./index";
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
variantArgType,
|
|
9
|
+
createStory,
|
|
10
|
+
sizeArgType
|
|
11
|
+
} from "../../../__storybook__";
|
|
12
|
+
|
|
13
|
+
export default {
|
|
14
|
+
component: MBadge,
|
|
15
|
+
title: 'Components/Badge',
|
|
16
|
+
argTypes: {
|
|
17
|
+
...variantArgType()
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const Basic = createStory(MBadgeBasic);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as MBadgeBasic } from './basic.vue';
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { createVar, globalStyle, style, styleVariants } from "@vanilla-extract/css";
|
|
2
|
+
import { themeVars } from "../../../styles/theme.css";
|
|
3
|
+
import { fonts } from "../../../styles/typography.css";
|
|
4
|
+
|
|
5
|
+
const borderRadiuses = {
|
|
6
|
+
xs: '2px',
|
|
7
|
+
sm: '3px',
|
|
8
|
+
md: '4px',
|
|
9
|
+
lg: '6px',
|
|
10
|
+
xl: '8px',
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const vars = {
|
|
14
|
+
color: createVar(),
|
|
15
|
+
backgroundColor: createVar(),
|
|
16
|
+
radius: createVar(),
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export const base = style({
|
|
20
|
+
vars: {
|
|
21
|
+
[vars.radius]: borderRadiuses.md,
|
|
22
|
+
},
|
|
23
|
+
boxSizing: "border-box",
|
|
24
|
+
appearance: "none",
|
|
25
|
+
border: 0,
|
|
26
|
+
display: "inline-flex",
|
|
27
|
+
position: "static",
|
|
28
|
+
borderRadius: vars.radius,
|
|
29
|
+
backgroundColor: vars.backgroundColor,
|
|
30
|
+
overflow: "hidden",
|
|
31
|
+
padding: `${themeVars.space['0.5']} ${themeVars.space[1]}`,
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
export const text = style({
|
|
35
|
+
color: vars.color,
|
|
36
|
+
margin: 0,
|
|
37
|
+
padding: 0,
|
|
38
|
+
fontSize: themeVars.fontSize.xsmall,
|
|
39
|
+
fontVariationSettings: `"wght" ${fonts.INTER.wghts[500]}`,
|
|
40
|
+
letterSpacing: '0.5px',
|
|
41
|
+
textTransform: 'uppercase',
|
|
42
|
+
lineHeight: themeVars.fontSize.base,
|
|
43
|
+
overflow: 'hidden',
|
|
44
|
+
textOverflow: 'ellipsis',
|
|
45
|
+
whiteSpace: 'nowrap',
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
export const variant = styleVariants({
|
|
49
|
+
primary: {
|
|
50
|
+
vars: {
|
|
51
|
+
[vars.backgroundColor]: themeVars.color.blue[500],
|
|
52
|
+
[vars.color]: '#FFFFFF',
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
default: {
|
|
56
|
+
vars: {
|
|
57
|
+
[vars.color]: 'white',
|
|
58
|
+
[vars.backgroundColor]: themeVars.color.gray[500],
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
tertiary: {
|
|
62
|
+
vars: {
|
|
63
|
+
[vars.color]: themeVars.color.gray[100],
|
|
64
|
+
[vars.backgroundColor]: themeVars.color.gray[400],
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
success: {
|
|
68
|
+
vars: {
|
|
69
|
+
[vars.backgroundColor]: themeVars.color.green[500],
|
|
70
|
+
[vars.color]: '#FFFFFF',
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
warning: {
|
|
74
|
+
vars: {
|
|
75
|
+
[vars.backgroundColor]: themeVars.color.amber[400],
|
|
76
|
+
[vars.color]: themeVars.color.gray[800],
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
error: {
|
|
80
|
+
vars: {
|
|
81
|
+
[vars.backgroundColor]: themeVars.color.red[500],
|
|
82
|
+
[vars.color]: '#FFFFFF',
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
export const secondary = styleVariants({
|
|
88
|
+
primary: {
|
|
89
|
+
vars: {
|
|
90
|
+
[vars.backgroundColor]: themeVars.color.blue[100],
|
|
91
|
+
[vars.color]: themeVars.color.blue[600],
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
default: {
|
|
95
|
+
vars: {
|
|
96
|
+
[vars.backgroundColor]: themeVars.color.gray[100],
|
|
97
|
+
[vars.color]: themeVars.color.gray[600],
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
tertiary: {
|
|
101
|
+
vars: {
|
|
102
|
+
[vars.backgroundColor]: themeVars.color.gray[100],
|
|
103
|
+
[vars.color]: themeVars.color.gray[400],
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
success: {
|
|
107
|
+
vars: {
|
|
108
|
+
[vars.backgroundColor]: themeVars.color.green[100],
|
|
109
|
+
[vars.color]: themeVars.color.green[600],
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
warning: {
|
|
113
|
+
vars: {
|
|
114
|
+
[vars.backgroundColor]: themeVars.color.amber[100],
|
|
115
|
+
[vars.color]: themeVars.color.amber[600],
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
error: {
|
|
119
|
+
vars: {
|
|
120
|
+
[vars.backgroundColor]: themeVars.color.red[100],
|
|
121
|
+
[vars.color]: themeVars.color.red[600],
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Badge.css';
|