@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.
Files changed (254) hide show
  1. package/lib/__storybook__/argTypes.d.ts +10 -1
  2. package/lib/components/avatar/Avatar.vue.d.ts +16 -30
  3. package/lib/components/avatar/style/Avatar.css.d.ts +9 -0
  4. package/lib/components/avatar/style/index.d.ts +1 -0
  5. package/lib/components/avatargroup/AvatarGroup.vue.d.ts +28 -13
  6. package/lib/components/avatargroup/style/AvatarGroup.css.d.ts +2 -0
  7. package/lib/components/avatargroup/style/index.d.ts +1 -0
  8. package/lib/components/avatargroup/symbol.d.ts +13 -0
  9. package/lib/components/badge/Badge.vue.d.ts +30 -0
  10. package/lib/components/badge/style/Badge.css.d.ts +4 -0
  11. package/lib/components/badge/style/index.d.ts +1 -0
  12. package/lib/components/breadcrumb/Breadcrumb.vue.d.ts +12 -3
  13. package/lib/components/{breadcrumbitem → breadcrumb}/BreadcrumbItem.vue.d.ts +11 -0
  14. package/lib/components/breadcrumb/style/Breadcrumb.css.d.ts +4 -0
  15. package/lib/components/breadcrumb/style/index.d.ts +1 -0
  16. package/lib/components/breadcrumb/symbol.d.ts +13 -0
  17. package/lib/components/button/Button.vue.d.ts +39 -28
  18. package/lib/components/button/style/Button.css.d.ts +24 -0
  19. package/lib/components/button/style/index.d.ts +1 -0
  20. package/lib/components/buttongroup/ButtonGroup.vue.d.ts +2 -13
  21. package/lib/components/buttongroup/style/ButtonGroup.css.d.ts +2 -0
  22. package/lib/components/buttongroup/style/index.d.ts +1 -0
  23. package/lib/components/buttongroup/symbol.d.ts +6 -0
  24. package/lib/components/checkbox/Checkbox.vue.d.ts +17 -20
  25. package/lib/components/checkbox/style/Checkbox.css.d.ts +16 -0
  26. package/lib/components/checkbox/style/index.d.ts +1 -0
  27. package/lib/components/colorpicker/ColorPicker.vue.d.ts +75 -0
  28. package/lib/components/colorpicker/style/ColorPicker.css.d.ts +9 -0
  29. package/lib/components/colorpicker/style/index.d.ts +1 -0
  30. package/lib/components/colorpicker/utils.d.ts +16 -0
  31. package/lib/components/dropdown/Dropdown.vue.d.ts +5 -4
  32. package/lib/components/dropdown/DropdownItem.vue.d.ts +12 -5
  33. package/lib/components/dropdown/DropdownList.vue.d.ts +4 -1
  34. package/lib/components/dropdown/style/Dropdown.css.d.ts +5 -0
  35. package/lib/components/dropdown/style/index.d.ts +1 -0
  36. package/lib/components/dropdown/symbol.d.ts +6 -0
  37. package/lib/components/index.d.ts +10 -1
  38. package/lib/components/input/Input.vue.d.ts +35 -19
  39. package/lib/components/input/style/Input.css.d.ts +23 -0
  40. package/lib/components/input/style/index.d.ts +1 -0
  41. package/lib/components/link/Link.vue.d.ts +2 -2
  42. package/lib/components/messageprovider/Message.vue.d.ts +13 -1
  43. package/lib/components/messageprovider/MessageProvider.vue.d.ts +6 -5
  44. package/lib/components/messageprovider/style/Message.css.d.ts +12 -0
  45. package/lib/components/messageprovider/style/index.d.ts +1 -0
  46. package/lib/components/messageprovider/types.d.ts +2 -1
  47. package/lib/components/modal/Modal.vue.d.ts +52 -0
  48. package/lib/components/modal/style/Modal.css.d.ts +21 -0
  49. package/lib/components/modal/style/index.d.ts +1 -0
  50. package/lib/components/radio/Radio.vue.d.ts +85 -0
  51. package/lib/components/radio/style/Checkbox.css.d.ts +16 -0
  52. package/lib/components/radio/style/index.d.ts +1 -0
  53. package/lib/components/radiobutton/RadioButton.vue.d.ts +98 -0
  54. package/lib/components/radiobutton/style/RadioButton.css.d.ts +14 -0
  55. package/lib/components/radiobutton/style/index.d.ts +1 -0
  56. package/lib/components/radiobuttongroup/RadioButtonGroup.vue.d.ts +48 -0
  57. package/lib/components/radiobuttongroup/style/RadioButtonGroup.css.d.ts +3 -0
  58. package/lib/components/radiobuttongroup/style/index.d.ts +1 -0
  59. package/lib/components/radiobuttongroup/symbol.d.ts +9 -0
  60. package/lib/components/select/Select.vue.d.ts +22 -13
  61. package/lib/components/select/style/Select.css.d.ts +30 -0
  62. package/lib/components/select/style/index.d.ts +1 -0
  63. package/lib/components/skeleton/Skeleton.vue.d.ts +15 -21
  64. package/lib/components/skeleton/style/Skeleton.css.d.ts +8 -0
  65. package/lib/components/skeleton/style/index.d.ts +2 -0
  66. package/lib/components/slider/Slider.vue.d.ts +32 -0
  67. package/lib/components/slider/style/Slider.css.d.ts +4 -0
  68. package/lib/components/slider/style/index.d.ts +1 -0
  69. package/lib/components/tab/TabGroup.vue.d.ts +1 -1
  70. package/lib/components/table/Table.vue.d.ts +1 -1
  71. package/lib/components/tag/Tag.vue.d.ts +44 -0
  72. package/lib/components/tag/style/Tag.css.d.ts +11 -0
  73. package/lib/components/tag/style/index.d.ts +1 -0
  74. package/lib/components/tooltip/Tooltip.vue.d.ts +17 -2
  75. package/lib/components/tooltip/style/Tooltip.css.d.ts +6 -0
  76. package/lib/components/tooltip/style/index.d.ts +1 -0
  77. package/lib/components/virtualscroll/VirtualScroll.vue.d.ts +46 -16
  78. package/lib/components/virtualscroll/style/VirtualScroll.css.d.ts +1 -0
  79. package/lib/components/virtualscroll/style/index.d.ts +1 -0
  80. package/lib/composables/useInput.d.ts +1 -1
  81. package/lib/composables/useInteractive.d.ts +15 -0
  82. package/lib/composables/useZIndex.d.ts +8 -0
  83. package/lib/index.cjs.js +8 -2
  84. package/lib/index.d.ts +0 -1
  85. package/lib/index.es.js +3688 -1692
  86. package/lib/style.css +1 -1
  87. package/lib/styles/theme.css.d.ts +147 -0
  88. package/lib/styles/typography.css.d.ts +22 -0
  89. package/lib/types/props.d.ts +1 -0
  90. package/package.json +33 -26
  91. package/src/__storybook__/argTypes.ts +19 -1
  92. package/src/components/avatar/Avatar.vue +33 -26
  93. package/src/components/avatar/examples/index.stories.ts +1 -1
  94. package/src/components/avatar/style/Avatar.css.ts +92 -0
  95. package/src/components/avatar/style/index.ts +1 -0
  96. package/src/components/avatargroup/AvatarGroup.vue +71 -32
  97. package/src/components/avatargroup/examples/basic.vue +33 -7
  98. package/src/components/avatargroup/examples/index.stories.ts +4 -8
  99. package/src/components/avatargroup/style/AvatarGroup.css.ts +21 -0
  100. package/src/components/avatargroup/style/index.ts +1 -0
  101. package/src/components/avatargroup/symbol.ts +17 -0
  102. package/src/components/badge/Badge.css +128 -0
  103. package/src/components/badge/Badge.vue +43 -0
  104. package/src/components/badge/examples/basic.vue +10 -0
  105. package/src/components/badge/examples/index.stories.ts +21 -0
  106. package/src/components/badge/examples/index.ts +1 -0
  107. package/src/components/badge/style/Badge.css.ts +124 -0
  108. package/src/components/badge/style/index.ts +1 -0
  109. package/src/components/breadcrumb/Breadcrumb.vue +22 -15
  110. package/src/components/breadcrumb/BreadcrumbItem.vue +73 -0
  111. package/src/components/breadcrumb/examples/basic.vue +5 -7
  112. package/src/components/breadcrumb/examples/index.stories.ts +2 -2
  113. package/src/components/breadcrumb/style/Breadcrumb.css.ts +40 -0
  114. package/src/components/breadcrumb/style/index.ts +1 -0
  115. package/src/components/breadcrumb/symbol.ts +17 -0
  116. package/src/components/button/Button.vue +194 -107
  117. package/src/components/button/examples/icon-left.vue +12 -0
  118. package/src/components/button/examples/icon.vue +6 -7
  119. package/src/components/button/examples/index.stories.ts +9 -7
  120. package/src/components/button/examples/index.ts +3 -2
  121. package/src/components/button/examples/variants-secondary.vue +8 -0
  122. package/src/components/button/examples/variants.vue +8 -0
  123. package/src/components/button/style/Button.css.ts +585 -0
  124. package/src/components/button/style/index.ts +1 -0
  125. package/src/components/buttongroup/ButtonGroup.vue +36 -47
  126. package/src/components/buttongroup/examples/basic.vue +2 -2
  127. package/src/components/buttongroup/examples/icon-group.vue +22 -0
  128. package/src/components/buttongroup/examples/index.stories.ts +4 -2
  129. package/src/components/buttongroup/examples/index.ts +1 -0
  130. package/src/components/buttongroup/style/ButtonGroup.css.ts +40 -0
  131. package/src/components/buttongroup/style/index.ts +1 -0
  132. package/src/components/buttongroup/symbol.ts +8 -0
  133. package/src/components/checkbox/Checkbox.vue +70 -54
  134. package/src/components/checkbox/examples/index.stories.ts +1 -1
  135. package/src/components/checkbox/style/Checkbox.css.ts +127 -0
  136. package/src/components/checkbox/style/index.ts +1 -0
  137. package/src/components/colorpicker/ColorPicker.vue +283 -0
  138. package/src/components/colorpicker/examples/basic.vue +3 -0
  139. package/src/components/colorpicker/examples/index.stories.ts +17 -0
  140. package/src/components/colorpicker/examples/index.ts +1 -0
  141. package/src/components/colorpicker/style/ColorPicker.css.ts +97 -0
  142. package/src/components/colorpicker/style/index.ts +1 -0
  143. package/src/components/colorpicker/utils.ts +188 -0
  144. package/src/components/dropdown/Dropdown.vue +45 -24
  145. package/src/components/dropdown/DropdownItem.vue +121 -118
  146. package/src/components/dropdown/DropdownList.vue +3 -3
  147. package/src/components/dropdown/DropdownWrapper.vue +2 -1
  148. package/src/components/dropdown/examples/custom.vue +13 -0
  149. package/src/components/dropdown/examples/index.stories.ts +4 -2
  150. package/src/components/dropdown/examples/index.ts +1 -0
  151. package/src/components/dropdown/style/Dropdown.css.ts +48 -0
  152. package/src/components/dropdown/style/index.ts +1 -0
  153. package/src/components/dropdown/symbol.ts +8 -0
  154. package/src/components/form/examples/basic.vue +4 -2
  155. package/src/components/form/examples/index.stories.ts +4 -2
  156. package/src/components/image/examples/index.stories.ts +1 -1
  157. package/src/components/index.ts +10 -2
  158. package/src/components/input/Input.vue +84 -42
  159. package/src/components/input/examples/basic.vue +2 -1
  160. package/src/components/input/examples/index.stories.ts +1 -1
  161. package/src/components/input/examples/prefix.vue +4 -2
  162. package/src/components/input/examples/suffix.vue +4 -2
  163. package/src/components/input/style/Input.css.ts +221 -0
  164. package/src/components/input/style/index.ts +1 -0
  165. package/src/components/link/examples/index.stories.ts +1 -1
  166. package/src/components/messageprovider/Message.vue +52 -5
  167. package/src/components/messageprovider/MessageProvider.css +0 -13
  168. package/src/components/messageprovider/MessageProvider.vue +18 -16
  169. package/src/components/messageprovider/examples/basic.vue +56 -5
  170. package/src/components/messageprovider/examples/index.stories.ts +0 -1
  171. package/src/components/messageprovider/examples/index.ts +1 -0
  172. package/src/components/messageprovider/examples/update.vue +34 -0
  173. package/src/components/messageprovider/examples/wrapper.vue +1 -1
  174. package/src/components/messageprovider/style/Message.css.ts +109 -0
  175. package/src/components/messageprovider/style/index.ts +1 -0
  176. package/src/components/messageprovider/types.ts +9 -1
  177. package/src/components/modal/Modal.vue +126 -0
  178. package/src/components/modal/examples/basic.vue +40 -0
  179. package/src/components/modal/examples/index.stories.ts +20 -0
  180. package/src/components/modal/examples/index.ts +2 -0
  181. package/src/components/modal/examples/modal-form.vue +99 -0
  182. package/src/components/modal/style/Modal.css.ts +257 -0
  183. package/src/components/modal/style/index.ts +1 -0
  184. package/src/components/radio/Checkbox.css +185 -0
  185. package/src/components/radio/Radio.vue +137 -0
  186. package/src/components/radio/examples/basic.vue +9 -0
  187. package/src/components/radio/examples/index.stories.ts +19 -0
  188. package/src/components/radio/examples/index.ts +2 -0
  189. package/src/components/radio/style/Checkbox.css.ts +132 -0
  190. package/src/components/radio/style/index.ts +1 -0
  191. package/src/components/radiobutton/RadioButton.vue +131 -0
  192. package/src/components/radiobutton/style/RadioButton.css.ts +185 -0
  193. package/src/components/radiobutton/style/index.ts +1 -0
  194. package/src/components/radiobuttongroup/RadioButtonGroup.vue +75 -0
  195. package/src/components/radiobuttongroup/examples/basic.vue +17 -0
  196. package/src/components/radiobuttongroup/examples/index.stories.ts +22 -0
  197. package/src/components/radiobuttongroup/examples/index.ts +2 -0
  198. package/src/components/radiobuttongroup/style/RadioButtonGroup.css.ts +37 -0
  199. package/src/components/radiobuttongroup/style/index.ts +1 -0
  200. package/src/components/radiobuttongroup/symbol.ts +11 -0
  201. package/src/components/select/Select.css +0 -226
  202. package/src/components/select/Select.vue +116 -48
  203. package/src/components/select/examples/index.stories.ts +1 -1
  204. package/src/components/select/examples/multiple.vue +1 -2
  205. package/src/components/select/style/Select.css.ts +254 -0
  206. package/src/components/select/style/index.ts +1 -0
  207. package/src/components/skeleton/Skeleton.vue +55 -47
  208. package/src/components/skeleton/examples/index.stories.ts +1 -8
  209. package/src/components/skeleton/style/Skeleton.css.ts +57 -0
  210. package/src/components/skeleton/style/index.ts +2 -0
  211. package/src/components/slider/Slider.vue +76 -0
  212. package/src/components/slider/style/Slider.css.ts +43 -0
  213. package/src/components/slider/style/index.ts +1 -0
  214. package/src/components/tab/examples/index.stories.ts +1 -1
  215. package/src/components/table/examples/index.stories.ts +1 -1
  216. package/src/components/tag/Tag.css +0 -0
  217. package/src/components/tag/Tag.vue +66 -0
  218. package/src/components/tag/examples/basic.vue +5 -0
  219. package/src/components/tag/examples/index.stories.ts +22 -0
  220. package/src/components/tag/examples/index.ts +1 -0
  221. package/src/components/tag/style/Tag.css.ts +79 -0
  222. package/src/components/tag/style/index.ts +1 -0
  223. package/src/components/tooltip/Tooltip.css +0 -6
  224. package/src/components/tooltip/Tooltip.vue +53 -22
  225. package/src/components/tooltip/examples/basic.vue +2 -5
  226. package/src/components/tooltip/examples/index.stories.ts +1 -1
  227. package/src/components/tooltip/style/Tooltip.css.ts +48 -0
  228. package/src/components/tooltip/style/index.ts +1 -0
  229. package/src/components/virtualscroll/VirtualScroll.vue +159 -53
  230. package/src/components/virtualscroll/examples/basic.vue +21 -27
  231. package/src/components/virtualscroll/examples/index.stories.ts +2 -18
  232. package/src/components/virtualscroll/style/VirtualScroll.css.ts +18 -0
  233. package/src/components/virtualscroll/style/index.ts +1 -0
  234. package/src/composables/useInput.ts +2 -2
  235. package/src/composables/useInteractive.ts +20 -0
  236. package/src/composables/usePopper.ts +1 -1
  237. package/src/composables/useZIndex.ts +31 -0
  238. package/src/css/components.css +4 -3
  239. package/src/css/normalize.css +0 -379
  240. package/src/css/variables.css +2 -2
  241. package/src/examples/cards/cards.stories.ts +9 -0
  242. package/src/examples/cards/sidebar.vue +263 -0
  243. package/src/index.ts +1 -1
  244. package/src/styles/theme.css.ts +149 -0
  245. package/src/styles/typography.css.ts +91 -0
  246. package/src/types/props.ts +2 -0
  247. package/lib/components/breadcrumbitem/index.d.ts +0 -1
  248. package/src/components/avatar/Avatar.css +0 -69
  249. package/src/components/breadcrumbitem/BreadcrumbItem.vue +0 -66
  250. package/src/components/breadcrumbitem/index.ts +0 -1
  251. package/src/components/button/examples/colors-secondary.vue +0 -8
  252. package/src/components/button/examples/colors.vue +0 -8
  253. package/src/components/dropdown/Dropdown.css +0 -68
  254. /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
- <div class="m-avatar-group">
3
- <slot />
4
- </div>
5
- </template>
6
-
7
- <script lang="ts">
8
- import { defineComponent, provide } from 'vue';
9
-
10
-
11
- export default defineComponent({
12
- name: "MAvatarGroup",
13
- props: {
14
- max: {
15
- type: Number,
16
- default: 5
17
- },
18
- size: {
19
- type: [Number, String],
20
- default: 'md'
21
- }
22
- },
23
- setup(props) {
24
-
25
- provide('avatarGroup', props);
26
-
27
- return {
28
- props
29
- }
30
- }
31
- })
32
- </script>
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
- } from "@/__storybook__";
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
- size: {
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,10 @@
1
+ <template>
2
+ <MBadge secondary>default</MBadge>
3
+ </template>
4
+
5
+ <script lang="ts" setup>
6
+ import { ref } from 'vue';
7
+
8
+ const badgeValue = ref(0);
9
+
10
+ </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';