classcard-ui 0.2.1484 → 0.2.1486

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 (212) hide show
  1. package/README.md +24 -24
  2. package/dist/classcard-ui.common.js +122 -108
  3. package/dist/classcard-ui.common.js.map +1 -1
  4. package/dist/classcard-ui.css +1 -1
  5. package/dist/classcard-ui.umd.js +122 -108
  6. package/dist/classcard-ui.umd.js.map +1 -1
  7. package/dist/classcard-ui.umd.min.js +1 -1
  8. package/dist/classcard-ui.umd.min.js.map +1 -1
  9. package/package.json +84 -84
  10. package/src/App.vue +16 -16
  11. package/src/colorConfig.js +52 -52
  12. package/src/components/CAlertModal/CAlertModal.vue +179 -179
  13. package/src/components/CAlertModal/index.js +3 -3
  14. package/src/components/CAlerts/CAlerts.vue +114 -114
  15. package/src/components/CAlerts/index.js +2 -2
  16. package/src/components/CAnchorTabs/CAnchorTabs.vue +100 -100
  17. package/src/components/CAnchorTabs/index.js +2 -2
  18. package/src/components/CAnchorTag/CAnchorTag.vue +84 -84
  19. package/src/components/CAnchorTag/index.js +2 -2
  20. package/src/components/CAvatar/CAvatar.vue +232 -225
  21. package/src/components/CAvatar/index.js +2 -2
  22. package/src/components/CAvatarGroup/CAvatarGroup.vue +213 -213
  23. package/src/components/CAvatarGroup/index.js +2 -2
  24. package/src/components/CBasicTable/CBasicTable.vue +184 -184
  25. package/src/components/CBasicTable/index.js +2 -2
  26. package/src/components/CBreadcrumbs/CBreadcrumbs.vue +38 -38
  27. package/src/components/CBreadcrumbs/index.js +2 -2
  28. package/src/components/CButton/CButton.vue +239 -239
  29. package/src/components/CButton/index.js +2 -2
  30. package/src/components/CButtonGroup/CButtonGroup.vue +155 -155
  31. package/src/components/CButtonGroup/index.js +2 -2
  32. package/src/components/CButtonIcon/CButtonIcon.vue +166 -166
  33. package/src/components/CButtonIcon/index.js +2 -2
  34. package/src/components/CButtonLink/CButtonLink.vue +43 -43
  35. package/src/components/CButtonLink/index.js +2 -2
  36. package/src/components/CButtonSelect/CButtonSelect.vue +186 -186
  37. package/src/components/CButtonSelect/index.js +2 -2
  38. package/src/components/CButtonSelectBorder/CButtonSelectBorder.vue +265 -265
  39. package/src/components/CButtonSelectBorder/index.js +3 -3
  40. package/src/components/CButtonWithDropdown/CButtonWithDropdown.vue +152 -152
  41. package/src/components/CButtonWithDropdown/index.js +2 -2
  42. package/src/components/CCalendar/CCalendar.vue +443 -443
  43. package/src/components/CCalendar/index.js +3 -3
  44. package/src/components/CCard/CCard.vue +53 -53
  45. package/src/components/CCard/index.js +2 -2
  46. package/src/components/CCheckbox/CCheckbox.vue +200 -200
  47. package/src/components/CCheckbox/index.js +2 -2
  48. package/src/components/CCircularButton/CCircularButton.vue +57 -57
  49. package/src/components/CCircularButton/index.js +2 -2
  50. package/src/components/CCollapsibleSection/CCollapsibleSection.vue +121 -121
  51. package/src/components/CCollapsibleSection/index.js +2 -2
  52. package/src/components/CColorDots/CColorDots.vue +52 -52
  53. package/src/components/CColorDots/index.js +3 -3
  54. package/src/components/CConfirmActionModal/CConfirmActionModal.vue +253 -253
  55. package/src/components/CConfirmActionModal/index.js +3 -3
  56. package/src/components/CDatepicker/CDatepicker.vue +235 -235
  57. package/src/components/CDatepicker/index.js +2 -2
  58. package/src/components/CDualSelect/CDualSelect.vue +193 -193
  59. package/src/components/CDualSelect/index.js +2 -2
  60. package/src/components/CEditor/CEditor.vue +114 -114
  61. package/src/components/CEditor/index.js +2 -2
  62. package/src/components/CFormSectionHeading/CFormSectionHeading.vue +76 -76
  63. package/src/components/CFormSectionHeading/index.js +2 -2
  64. package/src/components/CGroupedFilterDropdown/CGroupedFilterDropdown.vue +331 -331
  65. package/src/components/CGroupedFilterDropdown/index.js +2 -2
  66. package/src/components/CGroupedSelect/CGroupedSelect.vue +366 -366
  67. package/src/components/CGroupedSelect/index.js +3 -3
  68. package/src/components/CIcon/CIcon.vue +112 -112
  69. package/src/components/CIcon/index.js +2 -2
  70. package/src/components/CIconDropdown/CIconDropdown.vue +206 -206
  71. package/src/components/CIconDropdown/index.js +2 -2
  72. package/src/components/CIconSelect/CIconSelect.vue +182 -182
  73. package/src/components/CIconSelect/index.js +3 -3
  74. package/src/components/CInput/CInput.vue +173 -173
  75. package/src/components/CInput/index.js +2 -2
  76. package/src/components/CInputAddon/CInputAddon.vue +297 -297
  77. package/src/components/CInputAddon/index.js +2 -2
  78. package/src/components/CInputEmail/CInputEmail.vue +107 -107
  79. package/src/components/CInputEmail/index.js +2 -2
  80. package/src/components/CInsetTabs/CInsetTabs.vue +141 -141
  81. package/src/components/CInsetTabs/index.js +3 -3
  82. package/src/components/CLinearProgressBar/CLinearProgressBar.vue +35 -35
  83. package/src/components/CLinearProgressBar/index.js +2 -2
  84. package/src/components/CModalHeading/CModalHeading.vue +22 -22
  85. package/src/components/CModalHeading/index.js +2 -2
  86. package/src/components/CModuleHelpLinks/CModuleHelpLinks.vue +88 -88
  87. package/src/components/CModuleHelpLinks/index.js +3 -3
  88. package/src/components/CMultiselect/CMultiselect.vue +1298 -1298
  89. package/src/components/CMultiselect/index.js +2 -2
  90. package/src/components/CMultiselectr/CMultiselectr.vue +44 -44
  91. package/src/components/CMultiselectr/index.js +2 -2
  92. package/src/components/CPageHeading/CPageHeading.vue +83 -83
  93. package/src/components/CPageHeading/index.js +2 -2
  94. package/src/components/CPagination/CPagination.vue +239 -239
  95. package/src/components/CPagination/index.js +2 -2
  96. package/src/components/CPhoneNumber/CPhoneNumber.vue +213 -213
  97. package/src/components/CPhoneNumber/index.js +2 -2
  98. package/src/components/CProgress/CProgress.vue +91 -91
  99. package/src/components/CProgress/index.js +2 -2
  100. package/src/components/CRadio/CRadio.vue +197 -197
  101. package/src/components/CRadio/index.js +2 -2
  102. package/src/components/CRadioGroup/CRadioGroup.vue +96 -96
  103. package/src/components/CRadioGroup/index.js +2 -2
  104. package/src/components/CRangeSlider/CRangeSlider.vue +55 -55
  105. package/src/components/CRangeSlider/index.js +2 -2
  106. package/src/components/CReorderableStackedList/CReorderableStackedList.vue +94 -94
  107. package/src/components/CReorderableStackedList/index.js +2 -2
  108. package/src/components/CSelect/CSelect.vue +1216 -1216
  109. package/src/components/CSelect/index.js +2 -2
  110. package/src/components/CSmallTimeline/CSmallTimeline.vue +40 -40
  111. package/src/components/CSmallTimeline/index.js +2 -2
  112. package/src/components/CStackedList/CStackedList.vue +162 -162
  113. package/src/components/CStackedList/index.js +2 -2
  114. package/src/components/CStats/CStats.vue +157 -157
  115. package/src/components/CStats/index.js +2 -2
  116. package/src/components/CSwitch/CSwitch.vue +200 -200
  117. package/src/components/CSwitch/index.js +2 -2
  118. package/src/components/CTabLazy/CTabLazy.vue +83 -83
  119. package/src/components/CTabLazy/index.js +2 -2
  120. package/src/components/CTable/CTable.vue +1114 -1114
  121. package/src/components/CTable/index.js +2 -2
  122. package/src/components/CTabs/CTabs.vue +250 -250
  123. package/src/components/CTabs/index.js +2 -2
  124. package/src/components/CTag/CTag.vue +109 -109
  125. package/src/components/CTag/index.js +2 -2
  126. package/src/components/CTextarea/CTextarea.vue +118 -118
  127. package/src/components/CTextarea/index.js +2 -2
  128. package/src/components/CTimeline/CTimeline.vue +237 -237
  129. package/src/components/CTimeline/index.js +2 -2
  130. package/src/components/CToolTip/CToolTip.vue +108 -108
  131. package/src/components/CToolTip/index.js +3 -3
  132. package/src/components/CUpload/CUpload.vue +332 -331
  133. package/src/components/CUpload/index.js +2 -2
  134. package/src/components/NumberAnimator.vue +112 -112
  135. package/src/components/index.js +58 -58
  136. package/src/helper.js +8 -8
  137. package/src/icons.js +833 -833
  138. package/src/main.js +22 -22
  139. package/src/stories/CAlertModal.stories.js +30 -30
  140. package/src/stories/CAlerts.stories.js +39 -39
  141. package/src/stories/CAnchorTabs.stories.js +29 -29
  142. package/src/stories/CAnchorTag.stories.js +38 -38
  143. package/src/stories/CAvatar.stories.js +38 -38
  144. package/src/stories/CAvatarGroup.stories.js +136 -136
  145. package/src/stories/CBasicTable.stories.js +316 -316
  146. package/src/stories/CBreadcrumbs.stories.js +24 -24
  147. package/src/stories/CButton.stories.js +49 -49
  148. package/src/stories/CButtonGroup.stories.js +43 -43
  149. package/src/stories/CButtonIcon.stories.js +27 -27
  150. package/src/stories/CButtonLink.stories.js +24 -24
  151. package/src/stories/CButtonSelect.stories.js +44 -44
  152. package/src/stories/CButtonSelectBorder.stories.js +56 -56
  153. package/src/stories/CButtonWithDropdown.stories.js +41 -41
  154. package/src/stories/CCalendar.stories.js +16 -16
  155. package/src/stories/CCard.stories.js +30 -30
  156. package/src/stories/CCheckbox.stories.js +38 -38
  157. package/src/stories/CCircularButton.stories.js +29 -29
  158. package/src/stories/CCollapsibleSection.stories.js +29 -29
  159. package/src/stories/CColorDots.stories.js +37 -37
  160. package/src/stories/CConfirmActionModal.stories.js +67 -67
  161. package/src/stories/CDatepicker.stories.js +31 -31
  162. package/src/stories/CDualSelect.stories.js +29 -29
  163. package/src/stories/CEditor.stories.js +30 -30
  164. package/src/stories/CFormSectionHeading.stories.js +37 -37
  165. package/src/stories/CGroupedFilterDropdown.stories.js +131 -131
  166. package/src/stories/CGroupedSelect.stories.js +103 -103
  167. package/src/stories/CIcon.stories.js +31 -31
  168. package/src/stories/CIconDropdown.stories.js +52 -52
  169. package/src/stories/CIconSelect.stories.js +45 -45
  170. package/src/stories/CInput.stories.js +36 -36
  171. package/src/stories/CInputAddon.stories.js +37 -37
  172. package/src/stories/CInputEmail.stories.js +27 -27
  173. package/src/stories/CInsetTabs.stories.js +48 -48
  174. package/src/stories/CLinearProgressBar.stories.js +22 -22
  175. package/src/stories/CModalHeading.stories.js +25 -25
  176. package/src/stories/CModuleHelpLinks.stories.js +25 -25
  177. package/src/stories/CMultiselect.stories.js +146 -146
  178. package/src/stories/CMultiselectr.stories.js +23 -23
  179. package/src/stories/CPageHeading.stories.js +32 -32
  180. package/src/stories/CPagination.stories.js +30 -30
  181. package/src/stories/CPhoneNumber.stories.js +37 -37
  182. package/src/stories/CProgress.stories.js +23 -23
  183. package/src/stories/CRadio.stories.js +44 -44
  184. package/src/stories/CRadioGroup.stories.js +51 -51
  185. package/src/stories/CRangeSlider.stories.js +23 -23
  186. package/src/stories/CReorderableStackedList.stories.js +23 -23
  187. package/src/stories/CSelect.stories.js +157 -157
  188. package/src/stories/CSmallTimeline.stories.js +26 -26
  189. package/src/stories/CStackedList.stories.js +37 -37
  190. package/src/stories/CStats.stories.js +53 -53
  191. package/src/stories/CSwitch.stories.js +28 -28
  192. package/src/stories/CTabLazy.stories.js +42 -42
  193. package/src/stories/CTable.stories.js +203 -203
  194. package/src/stories/CTabs.stories.js +36 -36
  195. package/src/stories/CTag.stories.js +37 -37
  196. package/src/stories/CTextarea.stories.js +32 -32
  197. package/src/stories/CTimeline.stories.js +26 -26
  198. package/src/stories/CToolTip.stories.js +27 -27
  199. package/src/stories/CUpload.stories.js +36 -36
  200. package/src/stories/Introduction.stories.mdx +207 -207
  201. package/src/stories/Page.vue +88 -88
  202. package/src/stories/assets/code-brackets.svg +0 -0
  203. package/src/stories/assets/colors.svg +0 -0
  204. package/src/stories/assets/comments.svg +0 -0
  205. package/src/stories/assets/direction.svg +0 -0
  206. package/src/stories/assets/flow.svg +0 -0
  207. package/src/stories/assets/plugin.svg +0 -0
  208. package/src/stories/assets/repo.svg +0 -0
  209. package/src/stories/assets/stackalt.svg +0 -0
  210. package/src/stories/header.css +26 -26
  211. package/src/stories/page.css +69 -69
  212. package/src/stories/utils.css +32 -32
@@ -1,225 +1,232 @@
1
- <template>
2
- <div>
3
- <!-- adding class on div when label is present to prevent shrink of avatar -->
4
- <div
5
- :class="[
6
- description ? 'items-start' : 'items-center',
7
- hasLabel ? `${classes} shrink-0` : '',
8
- ]"
9
- class="flex"
10
- >
11
- <div v-if="image" class="relative">
12
- <img
13
- @error="$emit('error', $event)"
14
- :class="[
15
- classes,
16
- imageClasses,
17
- imageResizeClass,
18
- hasRing ? `p-1 ring-2 ${getRingColor}` : '',
19
- ]"
20
- class="inline-block"
21
- loading="lazy"
22
- :src="image"
23
- :alt="name || 'Avatar'"
24
- />
25
- <div
26
- class="absolute left-1/2 -mt-3 -translate-x-1/2 rounded-md"
27
- :class="labelDetails.parentClass"
28
- v-if="hasLabel"
29
- >
30
- <span
31
- v-if="labelDetails.type == 'text'"
32
- :class="labelDetails.textClass"
33
- >{{ labelDetails.text }}</span
34
- ><c-icon
35
- v-else
36
- :type="labelDetails.icon.type"
37
- :name="labelDetails.icon.name"
38
- :class="
39
- labelDetails.icon.class
40
- ? labelDetails.icon.class
41
- : `h-5 w-5 text-gray-400`
42
- "
43
- :viewBox="
44
- labelDetails.icon.viewBox
45
- ? labelDetails.icon.viewBox
46
- : '0 0 20 20'
47
- "
48
- ></c-icon>
49
- </div>
50
- </div>
51
- <div
52
- v-else
53
- :class="
54
- hasRing
55
- ? `${getRingColor} relative flex h-12 w-12 items-center justify-center justify-items-center rounded-full ring-2`
56
- : ''
57
- "
58
- >
59
- <div
60
- :class="[
61
- 'flex-none text-center font-medium',
62
- hasRing
63
- ? 'flex h-10 w-10 items-center justify-center rounded-full text-sm'
64
- : nameInitialsClasses,
65
- `border-${isDynamicallyColored ? customColor : 'red'}-300`,
66
- `bg-${isDynamicallyColored ? customColor : 'red'}-100`,
67
- `text-${isDynamicallyColored ? customColor : 'red'}-600`,
68
- hasLabel && !hasRing
69
- ? 'relative flex items-center justify-center'
70
- : '',
71
- ]"
72
- :style="[
73
- size == 'medium' && !hasLabel ? { 'line-height': '3rem' } : '',
74
- size == 'large' && !hasLabel ? { 'line-height': '3.5rem' } : '',
75
- size == 'very large' && !hasLabel ? { 'line-height': '6rem' } : '',
76
- size == 'very very large' && !hasLabel
77
- ? { 'line-height': '8rem' }
78
- : '',
79
- size == 'extrasmall' && !hasLabel ? { 'font-size': '0.7rem' } : '',
80
- size == 'extraextrasmall' && !hasLabel
81
- ? { 'font-size': '0.5rem' }
82
- : '',
83
- size == 'extraextraextrasmall' && !hasLabel
84
- ? { 'font-size': '0.5rem' }
85
- : '',
86
- ]"
87
- :title="name || nameInitials"
88
-
89
- >
90
- {{ nameInitials }}
91
- <div
92
- v-if="hasLabel"
93
- class="absolute bottom-0 left-1/2 z-10 -translate-x-1/2 translate-y-1/2 whitespace-nowrap rounded-md"
94
- :class="labelDetails.parentClass"
95
- >
96
- <span
97
- v-if="labelDetails.type == 'text'"
98
- :class="labelDetails.textClass"
99
- >{{ labelDetails.text }}</span
100
- ><c-icon
101
- v-else
102
- :type="labelDetails.icon.type"
103
- :name="labelDetails.icon.name"
104
- :class="
105
- labelDetails.icon.class
106
- ? labelDetails.icon.class
107
- : `h-5 w-5 text-gray-400`
108
- "
109
- :viewBox="
110
- labelDetails.icon.viewBox
111
- ? labelDetails.icon.viewBox
112
- : '0 0 20 20'
113
- "
114
- ></c-icon>
115
- </div>
116
- </div>
117
- </div>
118
- <div class="ml-3 text-left" v-if="name">
119
- <p v-if="name" class="text-sm text-gray-900">
120
- {{ name }}
121
- </p>
122
- <p
123
- v-if="description"
124
- class="text-xs text-gray-500 group-hover:text-gray-700"
125
- >
126
- {{ description }}
127
- </p>
128
- <slot></slot>
129
- </div>
130
- </div>
131
- </div>
132
- </template>
133
- <script>
134
- import CIcon from "../CIcon/CIcon.vue";
135
- export default {
136
- name: "CAvatar",
137
- components: {
138
- CIcon,
139
- },
140
- props: {
141
- size: {
142
- type: String,
143
- required: true,
144
- default: "medium",
145
- },
146
- image: {
147
- type: String,
148
- },
149
- nameInitials: {
150
- type: String,
151
- },
152
- rounded: { type: Boolean },
153
- name: { type: String },
154
- description: { type: String },
155
- imageClasses: { type: String },
156
- isDynamicallyColored: { type: Boolean, default: false },
157
- hasRing: { type: Boolean, default: false },
158
- ringColor: { type: String, default: "gray" },
159
- hasLabel: { type: Boolean, default: false },
160
- labelDetails: { type: Object, default: null },
161
- imageResizeClass: {
162
- type: String,
163
- default: "object-cover",
164
- },
165
- },
166
- data() {
167
- return {
168
- colors: ["gray", "red", "yellow", "indigo", "pink", "purple", "green"],
169
- customColor: null,
170
- };
171
- },
172
- computed: {
173
- classes() {
174
- return {
175
- "h-5 w-5": this.size == "extraextraextrasmall",
176
- "h-6 w-6": this.size == "extraextrasmall",
177
- "h-8 w-8": this.size == "extrasmall",
178
- "h-10 w-10": this.size == "small",
179
- "h-12 w-12": this.size == "medium",
180
- "h-14 w-14": this.size == "large",
181
- "h-24 w-24": this.size == "very large",
182
- "h-32 w-32": this.size == "very very large",
183
- "rounded-full": this.rounded == true,
184
- "rounded-md": this.rounded == false,
185
- };
186
- },
187
-
188
- nameInitialsClasses() {
189
- return {
190
- "h-5 w-5 leading-5": this.size == "extraextraextrasmall",
191
- "h-6 w-6 leading-6": this.size == "extraextrasmall",
192
- "h-8 w-8 leading-8": this.size == "extrasmall",
193
- "h-10 w-10 leading-10 text-xs": this.size == "small",
194
- "h-12 w-12 text-sm": this.size == "medium",
195
- "h-14 w-14 text-base": this.size == "large",
196
- "h-24 w-24 text-2xl": this.size == "very large",
197
- "h-32 w-32 text-3xl": this.size == "very very large",
198
- "rounded-full": this.rounded == true,
199
- "rounded-md": this.rounded == false,
200
- };
201
- },
202
- getRingColor() {
203
- if (this.ringColor == "yellow") {
204
- return "ring-[#facc15]";
205
- } else if (this.ringColor == "indigo") {
206
- return "ring-indigo-400";
207
- } else if (this.ringColor == "red") {
208
- return "ring-red-600";
209
- } else {
210
- return "ring-gray-400";
211
- }
212
- },
213
- },
214
- methods: {
215
- setColors() {
216
- this.colors = this.colors.sort(() => Math.random() - 0.5);
217
- let show = this.colors[Math.floor(Math.random() * this.colors.length)];
218
- this.customColor = show;
219
- },
220
- },
221
- mounted() {
222
- this.setColors();
223
- },
224
- };
225
- </script>
1
+ <template>
2
+ <div>
3
+ <!-- adding class on div when label is present to prevent shrink of avatar -->
4
+ <div
5
+ :class="[
6
+ description ? 'items-start' : 'items-center',
7
+ hasLabel ? `${classes} shrink-0` : '',
8
+ ]"
9
+ class="flex"
10
+ >
11
+ <div v-if="image" class="relative">
12
+ <img
13
+ @error="$emit('error', $event)"
14
+ :class="[
15
+ classes,
16
+ imageClasses,
17
+ imageResizeClass,
18
+ hasRing ? `p-1 ring-2 ${getRingColor}` : '',
19
+ ]"
20
+ class="inline-block"
21
+ loading="lazy"
22
+ :src="image"
23
+ :alt="name || 'Avatar'"
24
+ />
25
+ <div
26
+ class="absolute left-1/2 -mt-3 -translate-x-1/2 rounded-md"
27
+ :class="labelDetails.parentClass"
28
+ v-if="hasLabel"
29
+ >
30
+ <span
31
+ v-if="labelDetails.type == 'text'"
32
+ :class="labelDetails.textClass"
33
+ >{{ labelDetails.text }}</span
34
+ ><c-icon
35
+ v-else
36
+ :type="labelDetails.icon.type"
37
+ :name="labelDetails.icon.name"
38
+ :class="
39
+ labelDetails.icon.class
40
+ ? labelDetails.icon.class
41
+ : `h-5 w-5 text-gray-400`
42
+ "
43
+ :viewBox="
44
+ labelDetails.icon.viewBox
45
+ ? labelDetails.icon.viewBox
46
+ : '0 0 20 20'
47
+ "
48
+ ></c-icon>
49
+ </div>
50
+ </div>
51
+ <div
52
+ v-else
53
+ :class="
54
+ hasRing
55
+ ? `${getRingColor} relative flex h-12 w-12 items-center justify-center justify-items-center rounded-full ring-2`
56
+ : ''
57
+ "
58
+ >
59
+ <div
60
+ :class="[
61
+ 'flex-none text-center font-medium',
62
+ hasRing
63
+ ? 'flex h-10 w-10 items-center justify-center rounded-full text-sm'
64
+ : nameInitialsClasses,
65
+ `border-${isDynamicallyColored ? customColor : 'red'}-300`,
66
+ `bg-${isDynamicallyColored ? customColor : 'red'}-100`,
67
+ `text-${isDynamicallyColored ? customColor : 'red'}-600`,
68
+ hasLabel && !hasRing
69
+ ? 'relative flex items-center justify-center'
70
+ : '',
71
+ ]"
72
+ :style="[
73
+ size == 'medium' && !hasLabel ? { 'line-height': '3rem' } : '',
74
+ size == 'large' && !hasLabel ? { 'line-height': '3.5rem' } : '',
75
+ size == 'very large' && !hasLabel ? { 'line-height': '6rem' } : '',
76
+ size == 'very very large' && !hasLabel
77
+ ? { 'line-height': '8rem' }
78
+ : '',
79
+ size == 'extrasmall' && !hasLabel ? { 'font-size': '0.7rem' } : '',
80
+ size == 'extraextrasmall' && !hasLabel
81
+ ? { 'font-size': '0.5rem' }
82
+ : '',
83
+ size == 'extraextraextrasmall' && !hasLabel
84
+ ? { 'font-size': '0.5rem' }
85
+ : '',
86
+ ]"
87
+ :title="name || nameInitials"
88
+
89
+ >
90
+ {{ nameInitials }}
91
+ <div
92
+ v-if="hasLabel"
93
+ class="absolute bottom-0 left-1/2 z-10 -translate-x-1/2 translate-y-1/2 whitespace-nowrap rounded-md"
94
+ :class="labelDetails.parentClass"
95
+ >
96
+ <span
97
+ v-if="labelDetails.type == 'text'"
98
+ :class="labelDetails.textClass"
99
+ >{{ labelDetails.text }}</span
100
+ ><c-icon
101
+ v-else
102
+ :type="labelDetails.icon.type"
103
+ :name="labelDetails.icon.name"
104
+ :class="
105
+ labelDetails.icon.class
106
+ ? labelDetails.icon.class
107
+ : `h-5 w-5 text-gray-400`
108
+ "
109
+ :viewBox="
110
+ labelDetails.icon.viewBox
111
+ ? labelDetails.icon.viewBox
112
+ : '0 0 20 20'
113
+ "
114
+ ></c-icon>
115
+ </div>
116
+ </div>
117
+ </div>
118
+ <div class="ml-3 text-left" v-if="name">
119
+ <p v-if="name" class="text-sm text-gray-900">
120
+ {{ name }}
121
+ </p>
122
+ <p
123
+ v-if="description"
124
+ class="text-xs text-gray-500 group-hover:text-gray-700"
125
+ >
126
+ {{ description }}
127
+ </p>
128
+ <slot></slot>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </template>
133
+ <script>
134
+ import CIcon from "../CIcon/CIcon.vue";
135
+ export default {
136
+ name: "CAvatar",
137
+ components: {
138
+ CIcon,
139
+ },
140
+ props: {
141
+ size: {
142
+ type: String,
143
+ required: true,
144
+ default: "medium",
145
+ },
146
+ image: {
147
+ type: String,
148
+ },
149
+ nameInitials: {
150
+ type: String,
151
+ },
152
+ rounded: { type: Boolean },
153
+ name: { type: String },
154
+ description: { type: String },
155
+ imageClasses: { type: String },
156
+ isDynamicallyColored: { type: Boolean, default: false },
157
+ hasRing: { type: Boolean, default: false },
158
+ ringColor: { type: String, default: "gray" },
159
+ hasLabel: { type: Boolean, default: false },
160
+ labelDetails: { type: Object, default: null },
161
+ imageResizeClass: {
162
+ type: String,
163
+ default: "object-cover",
164
+ },
165
+ id: { type: Number, default: null },
166
+ enableHashColor: { type: Boolean, default: false },
167
+ },
168
+ data() {
169
+ return {
170
+ colors: ["gray", "red", "yellow", "indigo", "pink", "purple", "green"],
171
+ customColor: null,
172
+ };
173
+ },
174
+ computed: {
175
+ classes() {
176
+ return {
177
+ "h-5 w-5": this.size == "extraextraextrasmall",
178
+ "h-6 w-6": this.size == "extraextrasmall",
179
+ "h-8 w-8": this.size == "extrasmall",
180
+ "h-10 w-10": this.size == "small",
181
+ "h-12 w-12": this.size == "medium",
182
+ "h-14 w-14": this.size == "large",
183
+ "h-24 w-24": this.size == "very large",
184
+ "h-32 w-32": this.size == "very very large",
185
+ "rounded-full": this.rounded == true,
186
+ "rounded-md": this.rounded == false,
187
+ };
188
+ },
189
+
190
+ nameInitialsClasses() {
191
+ return {
192
+ "h-5 w-5 leading-5": this.size == "extraextraextrasmall",
193
+ "h-6 w-6 leading-6": this.size == "extraextrasmall",
194
+ "h-8 w-8 leading-8": this.size == "extrasmall",
195
+ "h-10 w-10 leading-10 text-xs": this.size == "small",
196
+ "h-12 w-12 text-sm": this.size == "medium",
197
+ "h-14 w-14 text-base": this.size == "large",
198
+ "h-24 w-24 text-2xl": this.size == "very large",
199
+ "h-32 w-32 text-3xl": this.size == "very very large",
200
+ "rounded-full": this.rounded == true,
201
+ "rounded-md": this.rounded == false,
202
+ };
203
+ },
204
+ getRingColor() {
205
+ if (this.ringColor == "yellow") {
206
+ return "ring-[#facc15]";
207
+ } else if (this.ringColor == "indigo") {
208
+ return "ring-indigo-400";
209
+ } else if (this.ringColor == "red") {
210
+ return "ring-red-600";
211
+ } else {
212
+ return "ring-gray-400";
213
+ }
214
+ },
215
+ },
216
+ methods: {
217
+ setColors() {
218
+ let showColor = null;
219
+ if (this.enableHashColor && typeof this.id === "number" && this.id >= 0) {
220
+ showColor = this.colors[this.id % this.colors.length];
221
+ } else {
222
+ this.colors.sort(() => Math.random() - 0.5);
223
+ showColor = this.colors[Math.floor(Math.random() * this.colors.length)];
224
+ }
225
+ this.customColor = showColor;
226
+ },
227
+ },
228
+ mounted() {
229
+ this.setColors();
230
+ },
231
+ };
232
+ </script>
@@ -1,3 +1,3 @@
1
- import CAvatar from './CAvatar.vue'
2
-
1
+ import CAvatar from './CAvatar.vue'
2
+
3
3
  export default CAvatar