@teammodlr/ui-kit 1.0.6 → 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,585 @@
1
+ import {createVar, globalKeyframes, globalStyle, style, styleVariants} from "@vanilla-extract/css";
2
+ import { themeVars } from "../../../styles/theme.css";
3
+ import { fonts } from "../../../styles/typography.css";
4
+
5
+ const sizes = {
6
+ xs: '22px',
7
+ sm: '28px',
8
+ md: '36px',
9
+ lg: '40px',
10
+ xl: '45px',
11
+ };
12
+
13
+ const borderRadiuses = {
14
+ xs: '2px',
15
+ sm: '3px',
16
+ md: '4px',
17
+ lg: '6px',
18
+ xl: '8px',
19
+ };
20
+
21
+ const padding = {
22
+ xs: `0 ${themeVars.space[1]}`,
23
+ sm: `0 ${themeVars.space[2]}`,
24
+ md: `0 ${themeVars.space[3]}`,
25
+ lg: `0 ${themeVars.space[3]}`,
26
+ xl: `0 ${themeVars.space[4]}`,
27
+ }
28
+
29
+ export const vars = {
30
+ height: createVar(),
31
+ radius: createVar(),
32
+ padding: createVar(),
33
+ backgroundColor: createVar(),
34
+ borderColor: createVar(),
35
+ boxShadowColor: createVar(),
36
+ color: createVar(),
37
+ }
38
+
39
+ export const base = style({
40
+ alignItems: 'center',
41
+ boxSizing: 'border-box',
42
+ display: 'inline-flex',
43
+ fontSize: themeVars.fontSize.base,
44
+ fontVariationSettings: `"wght" ${fonts.INTER.wghts[500]}`,
45
+ maxWidth: '100%',
46
+ width: 'auto',
47
+ position: 'relative',
48
+ textAlign: 'center',
49
+ textDecoration: 'none',
50
+ verticalAlign: 'middle',
51
+ whiteSpace: 'nowrap',
52
+ justifyContent: 'center',
53
+ height: vars.height,
54
+ lineHeight: vars.height,
55
+ borderRadius: vars.radius,
56
+ padding: vars.padding,
57
+ zIndex: "auto",
58
+ backgroundColor: vars.backgroundColor,
59
+ border: 0,
60
+ color: vars.color,
61
+ transition: `color .3s ${themeVars.transition.default},
62
+ background-color .3s ${themeVars.transition.default},
63
+ box-shadow .3s ${themeVars.transition.default},
64
+ border-color .3s ${themeVars.transition.default}`,
65
+ fontFamily: 'inherit',
66
+ ':hover': {
67
+ cursor: 'pointer',
68
+ },
69
+ ':focus': {
70
+ outline: 'none',
71
+ }
72
+ });
73
+
74
+ export const variant = styleVariants({
75
+ primary: {
76
+ vars: {
77
+ [vars.backgroundColor]: themeVars.color.blue[500],
78
+ [vars.borderColor]: themeVars.color.blue[500],
79
+ [vars.boxShadowColor]: themeVars.color.blue[500],
80
+ [vars.color]: '#FFFFFF',
81
+ },
82
+ ':hover': {
83
+ vars: {
84
+ [vars.backgroundColor]: themeVars.color.blue[600],
85
+ [vars.borderColor]: themeVars.color.blue[600],
86
+ },
87
+ },
88
+ ':focus': {
89
+ vars: {
90
+ [vars.borderColor]: themeVars.color.blue[500],
91
+ }
92
+ }
93
+ },
94
+ default: {
95
+ vars: {
96
+ [vars.color]: themeVars.color.gray[600],
97
+ [vars.backgroundColor]: 'white',
98
+ [vars.boxShadowColor]: themeVars.color.blue[500],
99
+ [vars.borderColor]: themeVars.color.gray[200],
100
+ },
101
+ ':hover': {
102
+ vars: {
103
+ [vars.color]: themeVars.color.blue[500],
104
+ [vars.borderColor]: themeVars.color.blue[500]
105
+ },
106
+ },
107
+ ':focus': {
108
+ vars: {
109
+ [vars.color]: themeVars.color.blue[500],
110
+ [vars.borderColor]: themeVars.color.blue[500],
111
+ }
112
+ }
113
+ },
114
+ tertiary: {
115
+ vars: {
116
+ [vars.color]: themeVars.color.gray[400],
117
+ [vars.backgroundColor]: 'white',
118
+ [vars.boxShadowColor]: themeVars.color.blue[500],
119
+ [vars.borderColor]: themeVars.color.gray[200],
120
+ },
121
+ ':hover': {
122
+ vars: {
123
+ [vars.color]: themeVars.color.blue[500],
124
+ [vars.borderColor]: themeVars.color.blue[500]
125
+ },
126
+ },
127
+ ':focus': {
128
+ vars: {
129
+ [vars.color]: themeVars.color.blue[500],
130
+ [vars.borderColor]: themeVars.color.blue[500],
131
+ }
132
+ }
133
+ },
134
+ success: {
135
+ vars: {
136
+ [vars.backgroundColor]: themeVars.color.green[500],
137
+ [vars.borderColor]: themeVars.color.green[500],
138
+ [vars.boxShadowColor]: themeVars.color.green[500],
139
+ [vars.color]: '#FFFFFF',
140
+ },
141
+ ':hover': {
142
+ vars: {
143
+ [vars.backgroundColor]: themeVars.color.green[600],
144
+ [vars.borderColor]: themeVars.color.green[600],
145
+ [vars.color]: '#FFFFFF',
146
+ },
147
+ },
148
+ ':focus': {
149
+ vars: {
150
+ [vars.borderColor]: themeVars.color.green[600],
151
+ [vars.backgroundColor]: themeVars.color.green[600],
152
+ }
153
+ }
154
+ },
155
+ warning: {
156
+ vars: {
157
+ [vars.backgroundColor]: themeVars.color.amber[400],
158
+ [vars.borderColor]: themeVars.color.amber[400],
159
+ [vars.boxShadowColor]: themeVars.color.amber[400],
160
+ [vars.color]: themeVars.color.gray[800],
161
+ },
162
+ ':hover': {
163
+ vars: {
164
+ [vars.backgroundColor]: themeVars.color.amber[500],
165
+ [vars.borderColor]: themeVars.color.amber[500],
166
+ [vars.color]: themeVars.color.gray[900],
167
+ },
168
+ },
169
+ ':focus': {
170
+ vars: {
171
+ [vars.borderColor]: themeVars.color.amber[500],
172
+ [vars.backgroundColor]: themeVars.color.amber[500],
173
+ }
174
+ }
175
+ },
176
+ error: {
177
+ vars: {
178
+ [vars.backgroundColor]: themeVars.color.red[500],
179
+ [vars.borderColor]: themeVars.color.red[500],
180
+ [vars.boxShadowColor]: themeVars.color.red[500],
181
+ [vars.color]: '#FFFFFF',
182
+ },
183
+ ':hover': {
184
+ vars: {
185
+ [vars.backgroundColor]: themeVars.color.red[600],
186
+ [vars.borderColor]: themeVars.color.red[600],
187
+ },
188
+ },
189
+ ':focus': {
190
+ vars: {
191
+ [vars.borderColor]: themeVars.color.red[600],
192
+ [vars.backgroundColor]: themeVars.color.red[600],
193
+ }
194
+ }
195
+ },
196
+ });
197
+
198
+ export const secondary = styleVariants({
199
+ primary: {
200
+ vars: {
201
+ [vars.backgroundColor]: themeVars.color.blue[100],
202
+ [vars.borderColor]: themeVars.color.blue[100],
203
+ [vars.color]: themeVars.color.blue[500],
204
+ },
205
+ ':hover': {
206
+ vars: {
207
+ [vars.backgroundColor]: themeVars.color.blue[200],
208
+ [vars.borderColor]: themeVars.color.blue[200],
209
+ [vars.color]: themeVars.color.blue[600],
210
+ },
211
+ },
212
+ ':focus': {
213
+ vars: {
214
+ [vars.backgroundColor]: themeVars.color.blue[200],
215
+ [vars.borderColor]: themeVars.color.blue[200],
216
+ [vars.color]: themeVars.color.blue[600],
217
+ },
218
+ }
219
+ },
220
+ default: {
221
+ vars: {
222
+ [vars.backgroundColor]: themeVars.color.gray[100],
223
+ [vars.borderColor]: themeVars.color.gray[100],
224
+ [vars.color]: themeVars.color.gray[500],
225
+ },
226
+ ':hover': {
227
+ vars: {
228
+ [vars.backgroundColor]: themeVars.color.gray[200],
229
+ [vars.borderColor]: themeVars.color.gray[200],
230
+ [vars.color]: themeVars.color.gray[600],
231
+ },
232
+ },
233
+ ':focus': {
234
+ vars: {
235
+ [vars.backgroundColor]: themeVars.color.gray[200],
236
+ [vars.borderColor]: themeVars.color.gray[200],
237
+ [vars.color]: themeVars.color.gray[600],
238
+ },
239
+ }
240
+ },
241
+ tertiary: {
242
+ vars: {
243
+ [vars.backgroundColor]: themeVars.color.gray[100],
244
+ [vars.borderColor]: themeVars.color.gray[100],
245
+ [vars.color]: themeVars.color.gray[400],
246
+ },
247
+ ':hover': {
248
+ vars: {
249
+ [vars.backgroundColor]: themeVars.color.gray[200],
250
+ [vars.borderColor]: themeVars.color.gray[200],
251
+ [vars.color]: themeVars.color.gray[500],
252
+ },
253
+ },
254
+ ':focus': {
255
+ vars: {
256
+ [vars.backgroundColor]: themeVars.color.gray[200],
257
+ [vars.borderColor]: themeVars.color.gray[200],
258
+ [vars.color]: themeVars.color.gray[500],
259
+ },
260
+ }
261
+ },
262
+ success: {
263
+ vars: {
264
+ [vars.backgroundColor]: themeVars.color.green[100],
265
+ [vars.borderColor]: themeVars.color.green[100],
266
+ [vars.color]: themeVars.color.green[600],
267
+ },
268
+ ':hover': {
269
+ vars: {
270
+ [vars.backgroundColor]: themeVars.color.green[200],
271
+ [vars.borderColor]: themeVars.color.green[200],
272
+ [vars.color]: themeVars.color.green[700],
273
+ },
274
+ },
275
+ ':focus': {
276
+ vars: {
277
+ [vars.backgroundColor]: themeVars.color.green[200],
278
+ [vars.borderColor]: themeVars.color.green[200],
279
+ [vars.color]: themeVars.color.green[700],
280
+ },
281
+ }
282
+ },
283
+ warning: {
284
+ vars: {
285
+ [vars.backgroundColor]: themeVars.color.amber[100],
286
+ [vars.borderColor]: themeVars.color.amber[100],
287
+ [vars.color]: themeVars.color.amber[600],
288
+ },
289
+ ':hover': {
290
+ vars: {
291
+ [vars.backgroundColor]: themeVars.color.amber[200],
292
+ [vars.borderColor]: themeVars.color.amber[200],
293
+ [vars.color]: themeVars.color.amber[700],
294
+ },
295
+ },
296
+ ':focus': {
297
+ vars: {
298
+ [vars.backgroundColor]: themeVars.color.amber[200],
299
+ [vars.borderColor]: themeVars.color.amber[200],
300
+ [vars.color]: themeVars.color.amber[700],
301
+ },
302
+ }
303
+ },
304
+ error: {
305
+ vars: {
306
+ [vars.backgroundColor]: themeVars.color.red[100],
307
+ [vars.borderColor]: themeVars.color.red[100],
308
+ [vars.color]: themeVars.color.red[500],
309
+ },
310
+ ':hover': {
311
+ vars: {
312
+ [vars.backgroundColor]: themeVars.color.red[200],
313
+ [vars.borderColor]: themeVars.color.red[200],
314
+ [vars.color]: themeVars.color.red[600],
315
+ },
316
+ },
317
+ ':focus': {
318
+ vars: {
319
+ [vars.backgroundColor]: themeVars.color.red[200],
320
+ [vars.borderColor]: themeVars.color.red[200],
321
+ [vars.color]: themeVars.color.red[600],
322
+ },
323
+ }
324
+ },
325
+ });
326
+
327
+ export const link = styleVariants({
328
+ primary: {
329
+ vars: {
330
+ [vars.backgroundColor]: 'transparent',
331
+ [vars.borderColor]: 'transparent',
332
+ [vars.color]: themeVars.color.blue[500],
333
+ },
334
+ ':hover': {
335
+ vars: {
336
+ [vars.backgroundColor]: 'transparent',
337
+ [vars.borderColor]: 'transparent',
338
+ [vars.color]: themeVars.color.blue[600],
339
+ },
340
+ textDecoration: 'underline',
341
+ }
342
+ },
343
+ default: {
344
+ vars: {
345
+ [vars.backgroundColor]: 'transparent',
346
+ [vars.borderColor]: 'transparent',
347
+ [vars.color]: themeVars.color.gray[500],
348
+ },
349
+ ':hover': {
350
+ vars: {
351
+ [vars.backgroundColor]: 'transparent',
352
+ [vars.borderColor]: 'transparent',
353
+ [vars.color]: themeVars.color.gray[600],
354
+ },
355
+ textDecoration: 'underline',
356
+ }
357
+ },
358
+ tertiary: {
359
+ vars: {
360
+ [vars.backgroundColor]: 'transparent',
361
+ [vars.borderColor]: 'transparent',
362
+ [vars.color]: themeVars.color.gray[400],
363
+ },
364
+ ':hover': {
365
+ vars: {
366
+ [vars.backgroundColor]: 'transparent',
367
+ [vars.borderColor]: 'transparent',
368
+ [vars.color]: themeVars.color.gray[500],
369
+ },
370
+ textDecoration: 'underline',
371
+ }
372
+ },
373
+ success: {
374
+ vars: {
375
+ [vars.backgroundColor]: 'transparent',
376
+ [vars.borderColor]: 'transparent',
377
+ [vars.color]: themeVars.color.green[500],
378
+ },
379
+ ':hover': {
380
+ vars: {
381
+ [vars.backgroundColor]: 'transparent',
382
+ [vars.borderColor]: 'transparent',
383
+ [vars.color]: themeVars.color.green[600],
384
+ },
385
+ textDecoration: 'underline',
386
+ }
387
+ },
388
+ warning: {
389
+ vars: {
390
+ [vars.backgroundColor]: 'transparent',
391
+ [vars.borderColor]: 'transparent',
392
+ [vars.color]: themeVars.color.amber[600],
393
+ },
394
+ ':hover': {
395
+ vars: {
396
+ [vars.backgroundColor]: 'transparent',
397
+ [vars.borderColor]: 'transparent',
398
+ [vars.color]: themeVars.color.amber[700],
399
+ },
400
+ textDecoration: 'underline',
401
+ }
402
+ },
403
+ error: {
404
+ vars: {
405
+ [vars.backgroundColor]: 'transparent',
406
+ [vars.borderColor]: 'transparent',
407
+ [vars.color]: themeVars.color.red[500],
408
+ },
409
+ ':hover': {
410
+ vars: {
411
+ [vars.backgroundColor]: 'transparent',
412
+ [vars.borderColor]: 'transparent',
413
+ [vars.color]: themeVars.color.red[600],
414
+ },
415
+ textDecoration: 'underline',
416
+ }
417
+ },
418
+ });
419
+
420
+ export const size = styleVariants({
421
+ xs: {
422
+ vars: {
423
+ [vars.height]: sizes.xs,
424
+ [vars.radius]: borderRadiuses.xs,
425
+ [vars.padding]: padding.xs,
426
+ },
427
+ fontSize: themeVars.fontSize.small,
428
+ },
429
+ sm: {
430
+ vars: {
431
+ [vars.height]: sizes.sm,
432
+ [vars.radius]: borderRadiuses.sm,
433
+ [vars.padding]: padding.sm,
434
+ },
435
+ fontSize: themeVars.fontSize.small,
436
+ },
437
+ md: {
438
+ vars: {
439
+ [vars.height]: sizes.md,
440
+ [vars.radius]: borderRadiuses.md,
441
+ [vars.padding]: padding.md,
442
+ },
443
+ },
444
+ lg: {
445
+ vars: {
446
+ [vars.height]: sizes.lg,
447
+ [vars.radius]: borderRadiuses.lg,
448
+ [vars.padding]: padding.lg,
449
+ },
450
+ fontSize: themeVars.fontSize.large,
451
+ },
452
+ xl: {
453
+ vars: {
454
+ [vars.height]: sizes.xl,
455
+ [vars.radius]: borderRadiuses.xl,
456
+ [vars.padding]: padding.xl,
457
+ },
458
+ fontSize: themeVars.fontSize.large,
459
+ },
460
+ });
461
+
462
+ const baseBorder = style({
463
+ position: 'absolute',
464
+ top: 0,
465
+ left: 0,
466
+ bottom: 0,
467
+ right: 0,
468
+ pointerEvents: 'none',
469
+ borderRadius: 'inherit',
470
+ transition: 'border-color 0.2s ease-in-out',
471
+ });
472
+
473
+ export const border = style([
474
+ baseBorder,
475
+ {
476
+ border: `1px solid ${vars.borderColor}`,
477
+ }
478
+ ]);
479
+
480
+ export const borderState = style([
481
+ baseBorder,
482
+ {
483
+ border: `1px solid transparent`,
484
+ zIndex: 1
485
+ }
486
+ ]);
487
+
488
+ globalStyle(`${base}:hover ${border}, ${base}:focus ${border}`, {
489
+ borderColor: "transparent",
490
+ });
491
+
492
+ globalStyle(`${base}:hover ${borderState}, ${base}:focus ${borderState}`, {
493
+ borderColor: vars.borderColor,
494
+ });
495
+
496
+ export const wave = style({
497
+ position: 'absolute',
498
+ top: 0,
499
+ left: 0,
500
+ bottom: 0,
501
+ right: 0,
502
+ pointerEvents: 'none',
503
+ borderRadius: 'inherit',
504
+ animationIterationCount: 1,
505
+ animationDuration: '0.5s',
506
+ zIndex: 1,
507
+ animationTimingFunction: 'cubic-bezier(0.4, 0, 0.15, 1), cubic-bezier(0.4, 0, 0.4, 1)',
508
+ });
509
+
510
+ const buttonWaveGrow = 'button-wave-grow';
511
+
512
+ globalKeyframes(buttonWaveGrow, {
513
+ 'from': {
514
+ boxShadow: `0 0 0.5px 0 ${vars.boxShadowColor}`
515
+ },
516
+ 'to': {
517
+ boxShadow: `0 0 0.5px 4.4px ${vars.boxShadowColor}`
518
+ }
519
+ });
520
+
521
+ const buttonWaveOpacity = 'button-wave-opacity';
522
+
523
+ globalKeyframes(buttonWaveOpacity, {
524
+ '0%': {
525
+ opacity: 0.5
526
+ },
527
+ '90%': {
528
+ opacity: 0
529
+ },
530
+ '100%': {
531
+ opacity: 0
532
+ }
533
+ });
534
+
535
+ export const waveActive = style({
536
+ zIndex: 1,
537
+ animationName: `${buttonWaveGrow}, ${buttonWaveOpacity}`,
538
+ });
539
+
540
+ export const iconButton = style({
541
+ display: 'flex',
542
+ flexGrow: 0,
543
+ flexShrink: 0,
544
+ fontSize: 0,
545
+ lineHeight: 0,
546
+ userSelect: 'none',
547
+ padding: 'initial',
548
+ height: vars.height,
549
+ width: vars.height,
550
+ });
551
+
552
+ export const icon = style({
553
+ display: 'flex',
554
+ flexGrow: 0,
555
+ flexShrink: 0,
556
+ fontSize: 0,
557
+ lineHeight: 0,
558
+ userSelect: 'none'
559
+ });
560
+
561
+ globalStyle(`${icon} > svg`, {
562
+ overflow: 'hidden',
563
+ pointerEvents: 'none',
564
+ maxWidth: '100%',
565
+ maxHeight: '100%',
566
+ verticalAlign: 'middle'
567
+ });
568
+
569
+ export const iconLeft = style([icon, {
570
+ marginRight: themeVars.space[2],
571
+ position: 'relative'
572
+ }]);
573
+
574
+ export const iconRight = style({
575
+ marginLeft: themeVars.space[2],
576
+ });
577
+
578
+ export const rounded = style({
579
+ borderRadius: '9999px',
580
+ });
581
+
582
+ export const block = style({
583
+ display: 'flex',
584
+ width: '100%',
585
+ });
@@ -0,0 +1 @@
1
+ export * from './Button.css';
@@ -1,47 +1,36 @@
1
- <template>
2
- <component
3
- :is="tag"
4
- :class="computedClasses"
5
- >
6
- <slot />
7
- </component>
8
- </template>
9
-
10
- <script lang="ts">
11
- import type { Size } from '../../types/props';
12
- import { defineComponent, provide, type PropType, computed } from 'vue';
13
-
14
- export default defineComponent({
15
- name: "MButtonGroup",
16
- props: {
17
- tag: {
18
- type: String,
19
- default: 'div'
20
- },
21
- size: {
22
- type: String as PropType<Size>,
23
- default: 'md'
24
- }
25
- },
26
- setup(props) {
27
-
28
- provide('buttonGroup', {
29
- groupProps: props,
30
- isGroup: true
31
- });
32
-
33
- const computedClasses = computed(() => {
34
- return [
35
- 'm-button-group',
36
- {
37
- [`m-button-group--${props.size}`]: props.size
38
- }
39
- ]
40
- });
41
-
42
- return {
43
- computedClasses
44
- }
45
- }
46
- })
47
- </script>
1
+ <template>
2
+ <div
3
+ :class="classes"
4
+ >
5
+ <slot/>
6
+ </div>
7
+ </template>
8
+
9
+ <script lang="ts">
10
+ import type {Size} from '../../types/props';
11
+ import {defineComponent, type PropType, provide, reactive, toRef} from 'vue';
12
+ import * as style from "./style";
13
+ import type {ButtonGroupState} from "./symbol";
14
+ import {BUTTON_GROUP_STATE} from "./symbol";
15
+
16
+ export default defineComponent({
17
+ name: "MButtonGroup",
18
+ props: {
19
+ size: {
20
+ type: String as PropType<Size>,
21
+ default: 'md'
22
+ }
23
+ },
24
+ setup(props) {
25
+ const state: ButtonGroupState = reactive({
26
+ size: toRef(props, 'size')
27
+ });
28
+
29
+ provide(BUTTON_GROUP_STATE, state);
30
+
31
+ return {
32
+ classes: style.base
33
+ }
34
+ }
35
+ })
36
+ </script>
@@ -3,7 +3,7 @@
3
3
  <MButton>Hello</MButton>
4
4
  <MButton>Hello</MButton>
5
5
  <MButton>Hello</MButton>
6
- <MButton color="red" secondary>Hello</MButton>
7
- <MButton color="green">Hello</MButton>
6
+ <MButton>Hello</MButton>
7
+ <MButton>Hello</MButton>
8
8
  </MButtonGroup>
9
9
  </template>
@@ -0,0 +1,22 @@
1
+ <template>
2
+ <MButtonGroup>
3
+ <MButton icon>
4
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5">
5
+ <path fill-rule="evenodd" d="M2 4.75A.75.75 0 012.75 4h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 4.75zm0 10.5a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5h-7.5a.75.75 0 01-.75-.75zM2 10a.75.75 0 01.75-.75h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 10z" clip-rule="evenodd" />
6
+ </svg>
7
+ </MButton>
8
+ <MButton icon>
9
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5">
10
+ <path fill-rule="evenodd" d="M2 4.75A.75.75 0 012.75 4h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 4.75zM2 10a.75.75 0 01.75-.75h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 10zm0 5.25a.75.75 0 01.75-.75h14.5a.75.75 0 010 1.5H2.75a.75.75 0 01-.75-.75z" clip-rule="evenodd" />
11
+ </svg>
12
+
13
+ </MButton>
14
+ <MButton icon>
15
+ <svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="w-5 h-5">
16
+ <path fill-rule="evenodd" d="M2 4.75A.75.75 0 012.75 4h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 4.75zm7 10.5a.75.75 0 01.75-.75h7.5a.75.75 0 010 1.5h-7.5a.75.75 0 01-.75-.75zM2 10a.75.75 0 01.75-.75h14.5a.75.75 0 010 1.5H2.75A.75.75 0 012 10z" clip-rule="evenodd" />
17
+ </svg>
18
+ </MButton>
19
+ </MButtonGroup>
20
+ </template>
21
+ <script setup lang="ts">
22
+ </script>