edvoyui-component-library-test-flight 0.0.170 → 0.0.173

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 (223) hide show
  1. package/dist/{edvoy-ui.cjs.js → library-vue-ts.cjs.js} +26 -26
  2. package/dist/{edvoy-ui.css → library-vue-ts.css} +1 -1
  3. package/dist/{edvoy-ui.es.js → library-vue-ts.es.js} +2262 -2249
  4. package/dist/library-vue-ts.umd.js +168 -0
  5. package/dist/selectSearch/EUISelectSearch.vue.d.ts.map +1 -0
  6. package/package.json +10 -11
  7. package/src/App.vue +16 -0
  8. package/src/App.vue.js.map +1 -0
  9. package/src/assets/fonts/gilroy/GilroyBold/font.woff +0 -0
  10. package/src/assets/fonts/gilroy/GilroyBold/font.woff2 +0 -0
  11. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff +0 -0
  12. package/src/assets/fonts/gilroy/GilroyBoldItalic/font.woff2 +0 -0
  13. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff +0 -0
  14. package/src/assets/fonts/gilroy/GilroyExtraBold/font.woff2 +0 -0
  15. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff +0 -0
  16. package/src/assets/fonts/gilroy/GilroyExtraBoldItalic/font.woff2 +0 -0
  17. package/src/assets/fonts/gilroy/GilroyMedium/font.woff +0 -0
  18. package/src/assets/fonts/gilroy/GilroyMedium/font.woff2 +0 -0
  19. package/src/assets/fonts/gilroy/GilroyRegular/font.woff +0 -0
  20. package/src/assets/fonts/gilroy/GilroyRegular/font.woff2 +0 -0
  21. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff +0 -0
  22. package/src/assets/fonts/gilroy/GilroySemiBold/font.woff2 +0 -0
  23. package/src/assets/fonts/inter/Inter-Bold.woff +0 -0
  24. package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  25. package/src/assets/fonts/inter/Inter-Italic.woff +0 -0
  26. package/src/assets/fonts/inter/Inter-Italic.woff2 +0 -0
  27. package/src/assets/fonts/inter/Inter-Medium.woff +0 -0
  28. package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  29. package/src/assets/fonts/inter/Inter-MediumItalic.woff +0 -0
  30. package/src/assets/fonts/inter/Inter-MediumItalic.woff2 +0 -0
  31. package/src/assets/fonts/inter/Inter-Regular.woff +0 -0
  32. package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  33. package/src/assets/fonts/inter/Inter-SemiBold.woff +0 -0
  34. package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  35. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff +0 -0
  36. package/src/assets/fonts/inter/Inter-SemiBoldItalic.woff2 +0 -0
  37. package/src/assets/images/search-nodata.png +0 -0
  38. package/src/assets/scss/body.scss +25 -0
  39. package/src/assets/svg/CheckTick.vue +21 -0
  40. package/src/assets/svg/CheckTick.vue.js.map +1 -0
  41. package/src/assets/svg/ChevronBigDown.vue +22 -0
  42. package/src/assets/svg/ChevronBigDown.vue.js.map +1 -0
  43. package/src/assets/svg/ChevronDownSolid.vue +19 -0
  44. package/src/assets/svg/ChevronDownSolid.vue.js.map +1 -0
  45. package/src/assets/svg/ChevronDownStroke.vue +22 -0
  46. package/src/assets/svg/ChevronDownStroke.vue.js.map +1 -0
  47. package/src/assets/svg/ChevronDownStrokeSolid.vue +19 -0
  48. package/src/assets/svg/ChevronDownStrokeSolid.vue.js.map +1 -0
  49. package/src/assets/svg/SearchBigZoomIn.vue +21 -0
  50. package/src/assets/svg/SearchBigZoomIn.vue.js.map +1 -0
  51. package/src/assets/svg/SortArrow.vue +24 -0
  52. package/src/assets/svg/SortArrow.vue.js.map +1 -0
  53. package/src/assets/svg/Student.vue +30 -0
  54. package/src/assets/svg/Student.vue.js.map +1 -0
  55. package/src/assets/svg/partner.vue +33 -0
  56. package/src/assets/svg/partner.vue.js.map +1 -0
  57. package/src/assets/svg/people.vue +25 -0
  58. package/src/assets/svg/people.vue.js.map +1 -0
  59. package/src/assets/vue.svg +1 -0
  60. package/src/components/HelloWorld.vue +1974 -0
  61. package/src/components/HelloWorld.vue.js.map +1 -0
  62. package/src/components/accordion/EUIAccordion.stories.ts +204 -0
  63. package/src/components/accordion/EUIAccordion.vue +152 -0
  64. package/src/components/accordion/EUIAccordion.vue.js.map +1 -0
  65. package/src/components/alerts/EUIAlerts.stories.ts +217 -0
  66. package/src/components/alerts/EUIAlerts.vue +194 -0
  67. package/src/components/alerts/EUIAlerts.vue.js.map +1 -0
  68. package/src/components/avatar/EUIAvatar.stories.ts +157 -0
  69. package/src/components/avatar/EUIAvatar.vue +96 -0
  70. package/src/components/avatar/EUIAvatar.vue.js.map +1 -0
  71. package/src/components/breadcrumb/EUIBreadcrumb.stories.ts +75 -0
  72. package/src/components/breadcrumb/EUIBreadcrumb.vue +59 -0
  73. package/src/components/breadcrumb/EUIBreadcrumb.vue.js.map +1 -0
  74. package/src/components/button/EUIButton.stories.ts +270 -0
  75. package/src/components/button/EUIButton.vue +154 -0
  76. package/src/components/button/EUIButton.vue.js.map +1 -0
  77. package/src/components/button/EUIButtonGroup.vue +287 -0
  78. package/src/components/button/EUIButtonGroup.vue.js.map +1 -0
  79. package/src/components/button/buttonAnimateTab.vue +74 -0
  80. package/src/components/button/buttonAnimateTab.vue.js.map +1 -0
  81. package/src/components/checkbox/EUICheckbox.stories.ts +58 -0
  82. package/src/components/checkbox/EUICheckbox.vue +110 -0
  83. package/src/components/checkbox/EUICheckbox.vue.js.map +1 -0
  84. package/src/components/datepicker/EUIDatepicker.stories.ts +492 -0
  85. package/src/components/datepicker/EUIDatepicker.vue +295 -0
  86. package/src/components/datepicker/EUIDatepicker.vue.js.map +1 -0
  87. package/src/components/delete.vue +262 -0
  88. package/src/components/delete.vue.js.map +1 -0
  89. package/src/components/dragModal/EUIDrag.vue +179 -0
  90. package/src/components/dragModal/EUIDrag.vue.js.map +1 -0
  91. package/src/components/dropdown/EUIMultiDropdown.stories.ts +294 -0
  92. package/src/components/dropdown/EUIMultiDropdown.vue +187 -0
  93. package/src/components/dropdown/EUIMultiDropdown.vue.js.map +1 -0
  94. package/src/components/errorMessage/EUIErrorMessage.scss +0 -0
  95. package/src/components/errorMessage/EUIErrorMessage.stories.ts +41 -0
  96. package/src/components/errorMessage/EUIErrorMessage.vue +25 -0
  97. package/src/components/errorMessage/EUIErrorMessage.vue.js.map +1 -0
  98. package/src/components/index.js.map +1 -0
  99. package/src/components/index.ts +62 -0
  100. package/src/components/input/EUIInput.stories.ts +387 -0
  101. package/src/components/input/EUIInput.vue +223 -0
  102. package/src/components/input/EUIInput.vue.js.map +1 -0
  103. package/src/components/input/EUINumberInput.vue +250 -0
  104. package/src/components/loader/EUICircleLoader.vue +31 -0
  105. package/src/components/loader/EUICircleLoader.vue.js.map +1 -0
  106. package/src/components/loader/EUICubeLoader.vue +237 -0
  107. package/src/components/loader/EUICubeLoader.vue.js.map +1 -0
  108. package/src/components/loader/EUILoader.stories.ts +99 -0
  109. package/src/components/loader/EUILoader.vue +17 -0
  110. package/src/components/loader/EUILoader.vue.js.map +1 -0
  111. package/src/components/loader/EUISquareLoader.vue +47 -0
  112. package/src/components/loader/EUISquareLoader.vue.js.map +1 -0
  113. package/src/components/modal/EUIModal.stories.ts +412 -0
  114. package/src/components/modal/EUIModal.vue +224 -0
  115. package/src/components/modal/EUIModal.vue.js.map +1 -0
  116. package/src/components/pillSelect/EUIPillSelect.stories.ts +74 -0
  117. package/src/components/pillSelect/EUIPillSelect.vue +149 -0
  118. package/src/components/pillSelect/EUIPillSelect.vue.js.map +1 -0
  119. package/src/components/popover/EUIPopover.stories.ts +306 -0
  120. package/src/components/popover/EUIPopover.vue +297 -0
  121. package/src/components/popover/EUIPopover.vue.js.map +1 -0
  122. package/src/components/radio/EUIRadio.stories.ts +54 -0
  123. package/src/components/radio/EUIRadio.vue +75 -0
  124. package/src/components/radio/EUIRadio.vue.js.map +1 -0
  125. package/src/components/searchInput/EUISearch.stories.ts +24 -0
  126. package/src/components/searchInput/EUISearch.vue +223 -0
  127. package/src/components/searchInput/EUISearch.vue.js.map +1 -0
  128. package/src/components/searchTagSelect/EUISearchTagSelect.vue +642 -0
  129. package/src/components/searchTagSelect/EUISearchTagSelect.vue.js.map +1 -0
  130. package/src/components/searchTagSelect/SearchInput.vue +167 -0
  131. package/src/components/searchTagSelect/SearchInput.vue.js.map +1 -0
  132. package/src/components/searchexpand/EUISearchExpand.vue +148 -0
  133. package/src/components/searchexpand/EUISearchExpand.vue.js.map +1 -0
  134. package/src/components/searchexpand/EUISearchToggle.vue +86 -0
  135. package/src/components/searchexpand/EUISearchToggle.vue.js.map +1 -0
  136. package/src/components/select/EUISelect.stories.ts +101 -0
  137. package/src/components/select/EUISelect.vue +1092 -0
  138. package/src/components/select/EUISelect.vue.js.map +1 -0
  139. package/src/components/selectSearch/EUISelectSearch.vue +23 -0
  140. package/src/components/selectSearch/EUISelectSearch.vue.js.map +1 -0
  141. package/src/components/slideover/EUISlideover.stories.ts +318 -0
  142. package/src/components/slideover/EUISlideover.vue +207 -0
  143. package/src/components/slideover/EUISlideover.vue.js.map +1 -0
  144. package/src/components/stepperTimeline/EUIStepperHorizontal.vue +242 -0
  145. package/src/components/stepperTimeline/EUIStepperHorizontal.vue.js.map +1 -0
  146. package/src/components/stepperTimeline/EUIStepperTimeline.stories.ts +54 -0
  147. package/src/components/stepperTimeline/EUIStepperTimeline.vue +16 -0
  148. package/src/components/stepperTimeline/EUIStepperTimeline.vue.js.map +1 -0
  149. package/src/components/stepperTimeline/EUIStepperVertical.vue +112 -0
  150. package/src/components/stepperTimeline/EUIStepperVertical.vue.js.map +1 -0
  151. package/src/components/table/ColumnResizeTable.vue +740 -0
  152. package/src/components/table/ColumnResizeTable.vue.js.map +1 -0
  153. package/src/components/table/EUIDashboardTable.vue +514 -0
  154. package/src/components/table/EUIDashboardTable.vue.js.map +1 -0
  155. package/src/components/table/EUIPageLimit.vue +66 -0
  156. package/src/components/table/EUIPageLimit.vue.js.map +1 -0
  157. package/src/components/table/EUIPagination.vue +175 -0
  158. package/src/components/table/EUIPagination.vue.js.map +1 -0
  159. package/src/components/table/EUIStudentPagination.vue +172 -0
  160. package/src/components/table/EUIStudentPagination.vue.js.map +1 -0
  161. package/src/components/table/EUITable.stories.ts +300 -0
  162. package/src/components/table/EUITable.vue +559 -0
  163. package/src/components/table/EUITable.vue.js.map +1 -0
  164. package/src/components/table/EUITableCheckbox.vue +98 -0
  165. package/src/components/table/EUITableCheckbox.vue.js.map +1 -0
  166. package/src/components/table/GrowthTable.vue +575 -0
  167. package/src/components/table/GrowthTable.vue.js.map +1 -0
  168. package/src/components/table/GrowthTableView.vue +108 -0
  169. package/src/components/table/GrowthTableView.vue.js.map +1 -0
  170. package/src/components/table/ResizeTableview.vue +198 -0
  171. package/src/components/table/ResizeTableview.vue.js.map +1 -0
  172. package/src/components/table/UCheckbox.vue +169 -0
  173. package/src/components/table/UCheckbox.vue.js.map +1 -0
  174. package/src/components/table/UTable.scss +69 -0
  175. package/src/components/table/UTable.vue +611 -0
  176. package/src/components/table/UTable.vue.js.map +1 -0
  177. package/src/components/table/UTableview.vue +189 -0
  178. package/src/components/table/UTableview.vue.js.map +1 -0
  179. package/src/components/tabs/EUITabOutline.vue +263 -0
  180. package/src/components/tabs/EUITabOutline.vue.js.map +1 -0
  181. package/src/components/tabs/EUITabs.vue +226 -0
  182. package/src/components/tabs/EUITabs.vue.js.map +1 -0
  183. package/src/components/tabs/EUItabs.stories.ts +137 -0
  184. package/src/components/tag/EUITag.stories.ts +53 -0
  185. package/src/components/tag/EUITag.vue +88 -0
  186. package/src/components/tag/EUITag.vue.js.map +1 -0
  187. package/src/components/telephone/EUITelephone.stories.ts +358 -0
  188. package/src/components/telephone/EUITelephone.vue +299 -0
  189. package/src/components/telephone/EUITelephone.vue.js.map +1 -0
  190. package/src/components/textArea/EUITextArea.stories.ts +134 -0
  191. package/src/components/textArea/EUITextArea.vue +155 -0
  192. package/src/components/textArea/EUITextArea.vue.js.map +1 -0
  193. package/src/components/timeLine/EUITimeLine.stories.ts +247 -0
  194. package/src/components/timeLine/EUITimeLine.vue +148 -0
  195. package/src/components/timeLine/EUITimeLine.vue.js.map +1 -0
  196. package/src/components/toggle/EUIToggle.stories.ts +63 -0
  197. package/src/components/toggle/EUIToggle.vue +101 -0
  198. package/src/components/toggle/EUIToggle.vue.js.map +1 -0
  199. package/src/components/tooltip/EUITooltip.stories.ts +53 -0
  200. package/src/components/tooltip/EUITooltip.vue +111 -0
  201. package/src/components/tooltip/EUITooltip.vue.js.map +1 -0
  202. package/src/components/uidemo/select-com.vue +120 -0
  203. package/src/components/uidemo/select-com.vue.js.map +1 -0
  204. package/src/data/books.js.map +1 -0
  205. package/src/data/books.ts +163 -0
  206. package/src/data/country.ts +56 -0
  207. package/src/data/tab.js.map +1 -0
  208. package/src/data/tab.ts +40 -0
  209. package/src/data/table.js.map +1 -0
  210. package/src/data/table.ts +5654 -0
  211. package/src/main.js.map +1 -0
  212. package/src/main.ts +5 -0
  213. package/src/style.scss +186 -0
  214. package/src/utils/helpers.js.map +1 -0
  215. package/src/utils/helpers.ts +30 -0
  216. package/src/utils/lodash.js.map +1 -0
  217. package/src/utils/lodash.ts +9 -0
  218. package/src/utils/types.js.map +1 -0
  219. package/src/utils/types.ts +9 -0
  220. package/src/vite-env.d.ts +5 -0
  221. package/dist/EUISelectSearch.vue.d.ts.map +0 -1
  222. package/dist/edvoy-ui.umd.js +0 -168
  223. /package/dist/{EUISelectSearch.vue.d.ts → selectSearch/EUISelectSearch.vue.d.ts} +0 -0
@@ -0,0 +1,1974 @@
1
+ <template>
2
+ <div class="max-w-screen-xl mx-auto bg-white">
3
+ <h1
4
+ class="my-10 text-2xl font-bold text-center text-gray-900 underline underline-offset-8 decoration-green-400 decoration-wavy"
5
+ >
6
+ Edvoy User Interface
7
+ </h1>
8
+ </div>
9
+ </template>
10
+ <script setup lang="ts"></script>
11
+ <style lang="scss"></style>
12
+
13
+ <!-- Development code here -->
14
+
15
+ <!--<template>
16
+ <div class="h-[clac(100svh-64px)] w-full px-10 py-8 max-w-screen-xl mx-auto">
17
+ <h1 class="mb-2 font-semibold text-gray-900 tetx-lg">Edvoy UI Componnet</h1>
18
+ <div
19
+ class="flex flex-col max-w-screen-sm gap-4 p-6 mx-auto mb-10 border rounded-xl"
20
+ >
21
+ <pre>{{ inputNumber }} ==> {{ inputNumberPoints }}</pre>
22
+ <EUINumberInput
23
+ v-model.trim="inputNumber"
24
+ name="addnote"
25
+ id="addnote"
26
+ label="Add Note"
27
+ placeholder="Note here..."
28
+ :min="0"
29
+ :max="100"
30
+ :step="1"
31
+ />
32
+ <EUINumberInput
33
+ v-model.trim="inputNumberPoints"
34
+ name="addnote"
35
+ id="addnote"
36
+ label="Add Note"
37
+ placeholder="Note here..."
38
+ :min="0"
39
+ :max="100"
40
+ :step="0.5"
41
+ />
42
+ </div>
43
+
44
+ <div class="max-w-xs py-4 mx-auto border border-red-500 rounded-xl">
45
+ <EUISearchTagSelect
46
+ v-model="selectedCity"
47
+ :items="datas"
48
+ :searchIcon="true"
49
+ :required="false"
50
+ itemText="name"
51
+ placeholder="Search Cities"
52
+ select-type="multiple"
53
+ :clearable="true"
54
+ @search="onSearch"
55
+ @on-change="onCitySelect"
56
+ @on-deselect="clear"
57
+ >
58
+ <template #labelhint>
59
+ <div class="my-1 text-xs font-medium text-gray-400">
60
+ Changing the city will affect your university selection
61
+ </div>
62
+ </template>
63
+ </EUISearchTagSelect>
64
+ <pre class="p-2 text-red-500 text-xxs">{{ selectedCity }}--</pre>
65
+ </div>
66
+
67
+ <div class="relative">
68
+ <EUIStepperHorizontal
69
+ :steps="allSteps"
70
+ :step-status="currentStage"
71
+ :history="lifeCycleHistory"
72
+ />
73
+ </div>
74
+
75
+ <div class="grid max-w-5xl grid-cols-3 gap-6 mx-auto mb-6">
76
+ <EUISelect
77
+ v-model="businessAreaSel"
78
+ :value="businessAreaSel"
79
+ :items="businessArea"
80
+ search-label="name"
81
+ label="Select Label"
82
+ selectedCountLabel="Business Area"
83
+ placeholder="Placeholder"
84
+ :multiple="true"
85
+ :inputFilled="true"
86
+ :searchable="true"
87
+ />
88
+
89
+ <EUISelect
90
+ v-model="popoverSelect"
91
+ :value="popoverSelect"
92
+ :items="datas"
93
+ search-label="name"
94
+ label="Select Label"
95
+ placeholder="Placeholder"
96
+ :searchable="true"
97
+ :multiple="true"
98
+ :isCheckbox="true"
99
+ :selectedCount="true"
100
+ :inputFilled="true"
101
+ />
102
+
103
+ <EUISelect
104
+ v-model="popoverSelect"
105
+ :value="popoverSelect"
106
+ :items="countryAll"
107
+ search-label="name"
108
+ label="Country"
109
+ placeholder="select country"
110
+ :searchable="true"
111
+ :multiple="true"
112
+ :isCheckbox="true"
113
+ :selectedCount="true"
114
+ :inputFilled="true"
115
+ :group-select="true"
116
+ />
117
+ </div>
118
+
119
+ <div class="grid w-full h-48 grid-cols-4 gap-4 mb-20 isolate">
120
+ <div
121
+ class="flex items-center justify-between w-full max-w-2xl gap-4 p-2 mx-auto border rounded-lg h-max"
122
+ >
123
+ <div class="text-base font-semibold leading-loose text-gray-900">
124
+ Popover Click Method
125
+ </div>
126
+
127
+ <div class="inline-flex items-center justify-end flex-none gap-4">
128
+ <EUIPopover
129
+ trigger="click"
130
+ placement="bottom-end"
131
+ className="max-w-80 min-w-80"
132
+ customButton="capitalize box-border border-none inline-flex flex-row gap-x-2 items-center active:scale-[.97] active:shadow-md transition duration-150 ease-in-out active:translate-y-0.5 rounded-lg bg-white hover:bg-gray-100 active:bg-gray-50 text-black cursor-pointer active:shadow-white/50 active:bg-transparent text-base font-semibold p-2"
133
+ >
134
+ <template #referenceButton="{ open }">
135
+ <div class="relative">
136
+ <FunnelIcon class="text-current size-6" />
137
+ <div
138
+ v-if="!open"
139
+ class="absolute bg-purple-600 border-2 border-white -top-1 -right-1 rounded-3xl size-3"
140
+ />
141
+ </div>
142
+ </template>
143
+
144
+ <div
145
+ class="block p-6 bg-white rounded-lg shadow-lg me-2 ring-1 ring-gray-100 ring-opacity-10"
146
+ >
147
+ <div>
148
+ lorem ipsum dolor sit amet consectetur adipisicing elit.
149
+ </div>
150
+ <div @click.stop>
151
+ <EUISelect
152
+ search-label="name"
153
+ label="Select Label"
154
+ placeholder="Placeholder"
155
+ :items="datas"
156
+ :multiple="true"
157
+ :multiple-limit="3"
158
+ />
159
+ </div>
160
+
161
+ <div>lorem ipsum dolor sit amet consectetur adipisicing elit</div>
162
+ <div class="flex items-center justify-end gap-4 pt-4">
163
+ <EUIButton
164
+ type="button"
165
+ size="md"
166
+ color="white"
167
+ :loading="isLoading"
168
+ @click="resetFilters()"
169
+ >Reset</EUIButton
170
+ >
171
+ <EUIButton
172
+ type="button"
173
+ size="md"
174
+ color="purple"
175
+ :loading="isLoading"
176
+ @click="applyFilter()"
177
+ >Apply</EUIButton
178
+ >
179
+ </div>
180
+ </div>
181
+ </EUIPopover>
182
+ </div>
183
+ </div>
184
+
185
+ <div
186
+ class="flex items-center justify-between w-full max-w-2xl gap-4 p-2 mx-auto border rounded-lg h-max"
187
+ >
188
+ <div class="text-base font-semibold leading-loose text-gray-900">
189
+ Popover Hover Method
190
+ </div>
191
+
192
+ <div class="inline-flex items-center justify-end flex-none gap-4">
193
+ <EUIPopover
194
+ trigger="hover"
195
+ placement="bottom-end"
196
+ :hover-hide-delay="150"
197
+ className="max-w-80 min-w-80"
198
+ customButton="capitalize box-border border-none inline-flex flex-row gap-x-2 items-center active:scale-[.97] active:shadow-md transition duration-150 ease-in-out active:translate-y-0.5 rounded-lg bg-white hover:bg-gray-100 active:bg-gray-50 text-black cursor-pointer active:shadow-white/50 active:bg-transparent text-base font-semibold p-2"
199
+ >
200
+ <template #referenceButton>
201
+ <div class="relative">
202
+ <FunnelIcon class="text-current size-6" />
203
+ <div
204
+ class="absolute bg-purple-600 border-2 border-white -top-1 -right-1 rounded-3xl size-3"
205
+ />
206
+ </div>
207
+ </template>
208
+ <div
209
+ class="block p-6 bg-white rounded-lg shadow-lg me-2 ring-1 ring-gray-100 ring-opacity-10"
210
+ >
211
+ <div>
212
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ex
213
+ atque sed illo ipsa tenetur dolores minus quis, impedit aliquam
214
+ magni. Animi laborum tenetur culpa aperiam porro nihil eius
215
+ soluta asperiores.
216
+ </div>
217
+
218
+ <div class="flex items-center justify-end gap-4 pt-4">
219
+ <EUIButton
220
+ type="button"
221
+ size="md"
222
+ color="white"
223
+ :loading="isLoading"
224
+ @click="resetFilters()"
225
+ >Reset</EUIButton
226
+ >
227
+ <EUIButton
228
+ type="button"
229
+ size="md"
230
+ color="purple"
231
+ :loading="isLoading"
232
+ @click="applyFilter()"
233
+ >Apply</EUIButton
234
+ >
235
+ </div>
236
+ </div>
237
+ </EUIPopover>
238
+ </div>
239
+ </div>
240
+
241
+ <div
242
+ class="flex items-center justify-between w-full max-w-2xl gap-4 p-2 mx-auto border rounded-lg h-max"
243
+ >
244
+ <div class="text-base font-semibold leading-loose text-gray-900">
245
+ Popover Default Open
246
+ </div>
247
+
248
+ <div class="inline-flex items-center justify-end flex-none gap-4">
249
+ <EUIPopover
250
+ v-model:visible="isInitiallyOpen"
251
+ placement="bottom-end"
252
+ :hover-hide-delay="150"
253
+ className="max-w-80 min-w-80"
254
+ customButton="capitalize box-border border-none inline-flex flex-row gap-x-2 items-center active:scale-[.97] active:shadow-md transition duration-150 ease-in-out active:translate-y-0.5 rounded-lg bg-white hover:bg-gray-100 active:bg-gray-50 text-black cursor-pointer active:shadow-white/50 active:bg-transparent text-base font-semibold p-2"
255
+ >
256
+ <template #referenceButton>
257
+ <div class="relative">
258
+ <FunnelIcon class="text-current size-6" />
259
+ <div
260
+ class="absolute bg-purple-600 border-2 border-white -top-1 -right-1 rounded-3xl size-3"
261
+ />
262
+ </div>
263
+ </template>
264
+ <div
265
+ class="block p-6 bg-white rounded-lg shadow-lg me-2 ring-1 ring-gray-100 ring-opacity-10"
266
+ >
267
+ <div>
268
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Ex
269
+ atque sed illo ipsa tenetur dolores minus quis, impedit aliquam
270
+ magni. Animi laborum tenetur culpa aperiam porro nihil eius
271
+ soluta asperiores.
272
+ </div>
273
+
274
+ <div class="flex items-center justify-end gap-4 pt-4">
275
+ <EUIButton
276
+ type="button"
277
+ size="md"
278
+ color="white"
279
+ :loading="isLoading"
280
+ @click="resetFilters()"
281
+ >Reset</EUIButton
282
+ >
283
+ <EUIButton
284
+ type="button"
285
+ size="md"
286
+ color="purple"
287
+ :loading="isLoading"
288
+ @click="onDefaultClose()"
289
+ >Apply</EUIButton
290
+ >
291
+ </div>
292
+ </div>
293
+ </EUIPopover>
294
+ </div>
295
+ </div>
296
+
297
+ <div
298
+ class="flex items-center justify-between w-full max-w-2xl gap-4 p-2 mx-auto border rounded-lg h-max"
299
+ >
300
+ <div class="text-base font-semibold leading-loose text-gray-900">
301
+ Popover Manual
302
+ </div>
303
+
304
+ <div class="inline-flex items-center justify-end flex-none gap-4">
305
+ <EUIPopover
306
+ trigger="manual"
307
+ v-model:visible="popoverVisible"
308
+ placement="top"
309
+ className="max-w-80 min-w-80"
310
+ customButton="capitalize box-border border-none inline-flex flex-row gap-x-2 items-center active:scale-[.97] active:shadow-md transition duration-150 ease-in-out active:translate-y-0.5 rounded-lg bg-white hover:bg-gray-100 active:bg-gray-50 text-black cursor-pointer active:shadow-white/50 active:bg-transparent text-base font-semibold p-2"
311
+ @click="onPopoverToggle"
312
+ >
313
+ <template #referenceButton>
314
+ <div class="relative">
315
+ <FunnelIcon class="text-current size-6" />
316
+ <div
317
+ class="absolute bg-purple-600 border-2 border-white -top-1 -right-1 rounded-3xl size-3"
318
+ />
319
+ </div>
320
+ </template>
321
+ <div
322
+ class="block p-6 bg-white rounded-lg shadow-lg me-2 ring-1 ring-gray-100 ring-opacity-10"
323
+ >
324
+ <div>
325
+ lorem ipsum dolor sit amet consectetur adipisicing elit.
326
+ </div>
327
+ <div @click.stop>
328
+ <EUISelect
329
+ search-label="name"
330
+ label="Select Label"
331
+ placeholder="Placeholder"
332
+ :items="datas"
333
+ :multiple="true"
334
+ :multiple-limit="3"
335
+ />
336
+ </div>
337
+
338
+ <div>lorem ipsum dolor sit amet consectetur adipisicing elit</div>
339
+
340
+ <div class="flex items-center justify-end gap-4 pt-4">
341
+ <EUIButton
342
+ type="button"
343
+ size="md"
344
+ color="white"
345
+ :loading="isLoading"
346
+ @click="resetFilters()"
347
+ >Reset</EUIButton
348
+ >
349
+ <EUIButton
350
+ type="button"
351
+ size="md"
352
+ color="purple"
353
+ :loading="isLoading"
354
+ @click="applyFilter()"
355
+ >Apply</EUIButton
356
+ >
357
+ </div>
358
+ </div>
359
+ </EUIPopover>
360
+ </div>
361
+ </div>
362
+ </div>
363
+
364
+ <div class="mb-10">
365
+ <EUITabOutline
366
+ activeColor="purple"
367
+ size="sm"
368
+ :items="allDays"
369
+ :defaultActive="activeTab"
370
+ @update:activeTabItem="onchangeActiveTab"
371
+ >
372
+ <template v-slot:content="{ data, activeName }">
373
+ <div class="space-y-4">
374
+ <span class="text-red-400">{{ data.name }} - {{ activeName }}</span>
375
+ <p>
376
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sit odio
377
+ quia, obcaecati suscipit, praesentium temporibus, non placeat
378
+ reprehenderit commodi ut adipisci consequatur laboriosam? Est
379
+ perspiciatis vero illo repudiandae quis explicabo.
380
+ </p>
381
+
382
+ <p>
383
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Sit odio
384
+ quia, obcaecati suscipit, praesentium temporibus, non placeat
385
+ reprehenderit commodi ut adipisci consequatur laboriosam? Est
386
+ perspiciatis vero illo repudiandae quis explicabo.
387
+ </p>
388
+ </div>
389
+ </template>
390
+ </EUITabOutline>
391
+ </div>
392
+
393
+ <div class="p-8 space-x-6 space-y-4">
394
+ <pre class="text-right">{{ activeDays }}--</pre>
395
+ <div class="inline-flex flex-col items-end w-full">
396
+ <EUIButtonGroup
397
+ activeColor="purple"
398
+ size="sm"
399
+ :rounded="false"
400
+ :items="allDays"
401
+ :defaultActive="activeDays"
402
+ @update:activeButton="onchangeDays"
403
+ >
404
+ <template #before>
405
+ <div
406
+ class="px-2 text-sm font-normal leading-tight tracking-wide text-black me-4 font-inter"
407
+ >
408
+ Renewals due in
409
+ </div>
410
+ </template>
411
+ <template #default="{ data, activeName }">
412
+ {{ data.name }}
413
+ <small
414
+ :class="activeName === data.name ? 'opacity-100' : 'opacity-75'"
415
+ >({{ data.count }})</small
416
+ >
417
+ </template>
418
+ </EUIButtonGroup>
419
+ </div>
420
+
421
+ <div class="inline-flex items-center justify-end w-full">
422
+ <EUISearchExpand
423
+ v-model:model-value="searchInput"
424
+ :search-sync="showSearch"
425
+ @input="seachStudent($event?.target?.value)"
426
+ @update:modelValue="seachStudent($event?.target?.value)"
427
+ />
428
+ </div>
429
+ </div>
430
+
431
+ <div class="grid gap-4 sm:grid-cols-2 place-items-start">
432
+ <div
433
+ class="w-full max-w-screen-xl col-span-2 p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
434
+ >
435
+ <span
436
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
437
+ >
438
+ Name: Alert
439
+ </span>
440
+ <pre
441
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
442
+ ><code>&lt;EUIInput label="Firstname" placeholder="Enter your name" /&gt;</code></pre>
443
+
444
+ <div class="space-y-4">
445
+ <EUIAlerts
446
+ alert-type="Success"
447
+ heading="Deactivate account"
448
+ textMessage="Are you sure you want to deactivate your account? All of your data will be permanently removed from our servers forever. This action cannot be undone."
449
+ />
450
+
451
+ <EUIAlerts
452
+ alert-type="Warning"
453
+ heading="Send Icon here"
454
+ :alertIcon="ExclamationTriangleIcon"
455
+ >
456
+ <template #xclose>
457
+ <a
458
+ href="#"
459
+ class="text-sm font-medium text-yellow-700 whitespace-nowrap hover:text-yellow-600"
460
+ >
461
+ Go to Page
462
+ <span aria-hidden="true"> &rarr;</span>
463
+ </a>
464
+ </template>
465
+ </EUIAlerts>
466
+
467
+ <EUIAlerts alert-type="Success" heading="Title only show here" />
468
+
469
+ <EUIAlerts
470
+ alert-type="Warning"
471
+ heading="Send Icon here"
472
+ :icon="ExclamationTriangleIcon"
473
+ />
474
+
475
+ <EUIAlerts
476
+ alert-type="Default"
477
+ heading="Close Icon Boolean enabled"
478
+ close-icon
479
+ />
480
+
481
+ <EUIAlerts
482
+ alert-type="Error"
483
+ heading="Deactivate account"
484
+ textMessage="Are you sure you want to deactivate your account? All of your data will be permanently removed from our servers forever. This action cannot be undone."
485
+ :showAlert="showAlert"
486
+ :close-icon="true"
487
+ @update:showAlert="showAlert = $event"
488
+ />
489
+
490
+ <EUIAlerts
491
+ alert-type="Warning"
492
+ heading="Deactivate account"
493
+ textMessage="Are you sure you want to deactivate your account? All of your data will be permanently removed from our servers forever. This action cannot be undone."
494
+ :showAlert="showAlert"
495
+ close-icon
496
+ action-items
497
+ @update:showAlert="showAlert = $event"
498
+ @alertAction="onClickAlert"
499
+ @alertDismiss="showAlert = false"
500
+ />
501
+
502
+ <EUIAlerts
503
+ alert-type="Warning"
504
+ :showAlert="showAlert"
505
+ @update:showAlert="showAlert = $event"
506
+ >
507
+ <template #icon>
508
+ <ExclamationTriangleIcon
509
+ class="text-current size-4"
510
+ aria-hidden="true"
511
+ />
512
+ </template>
513
+ <template #title>Use Template here</template>
514
+ <template #content
515
+ >Are you sure you want to deactivate your account? All of your
516
+ data will be permanently removed from our servers forever. This
517
+ action cannot be undone.</template
518
+ >
519
+
520
+ <template #actionButtons>
521
+ <div class="pt-4">
522
+ <button
523
+ type="button"
524
+ class="rounded-md px-3 py-1.5 text-sm font-medium bg-black text-white focus:outline-none focus:ring-2 focus:ring-offset-2"
525
+ >
526
+ View status
527
+ </button>
528
+ <button
529
+ type="button"
530
+ class="ml-3 rounded-md px-3 py-1.5 bg-white text-sm font-medium focus:outline-none focus:ring-2 focus:ring-offset-2"
531
+ >
532
+ Dismiss
533
+ </button>
534
+ </div>
535
+ </template>
536
+ </EUIAlerts>
537
+ </div>
538
+ </div>
539
+
540
+ <div
541
+ class="w-full max-w-screen-xl col-span-2 p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
542
+ >
543
+ <span
544
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
545
+ >
546
+ Name: Input
547
+ </span>
548
+ <pre
549
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
550
+ ><code>&lt;EUIInput label="Firstname" placeholder="Enter your name" /&gt;</code></pre>
551
+
552
+ <div class="grid grid-cols-3 gap-4 pb-6 mb-4 border-b">
553
+ <EUIInput
554
+ v-model.trim="form.input"
555
+ name="addnote"
556
+ id="addnote"
557
+ placeholder="Note here..."
558
+ />
559
+
560
+ <EUIInput
561
+ v-model.trim="form.input"
562
+ name="addnote"
563
+ id="addnote"
564
+ label="Add Note"
565
+ placeholder="Note here..."
566
+ />
567
+ <EUIInput
568
+ v-model.trim="form.input"
569
+ name="addnote"
570
+ id="addnote"
571
+ label="Add Note"
572
+ placeholder="Note here..."
573
+ rounded
574
+ :class-name="['bg-gray-100/50']"
575
+ />
576
+ <EUIInput
577
+ v-model.trim="form.input"
578
+ name="addnote"
579
+ id="addnote"
580
+ label="Add Note"
581
+ placeholder="Note type here..."
582
+ :icon="MagnifyingGlassIcon"
583
+ icon-type="startIcon"
584
+ />
585
+
586
+ <EUIInput
587
+ v-model.trim="form.input"
588
+ name="addnote"
589
+ id="addnote"
590
+ label="Add Note"
591
+ placeholder="Note type here..."
592
+ :icon="MagnifyingGlassIcon"
593
+ icon-type="endIcon"
594
+ />
595
+
596
+ <EUIInput
597
+ v-model.trim="form.input"
598
+ name="addnote"
599
+ id="addnote"
600
+ type="search"
601
+ placeholder="Search here..."
602
+ rounded
603
+ :class-name="['bg-gray-100/50 rounded-3xl']"
604
+ :icon="MagnifyingGlassIcon"
605
+ icon-type="startIcon"
606
+ />
607
+
608
+ <EUIInput
609
+ v-model.trim="form.input"
610
+ name="addnote"
611
+ id="addnote"
612
+ label="Add note disabled"
613
+ placeholder="Note type here..."
614
+ :icon="MagnifyingGlassIcon"
615
+ icon-type="endIcon"
616
+ disabled
617
+ />
618
+
619
+ <EUIInput
620
+ v-model.trim="form.input"
621
+ name="addnote"
622
+ id="addnote"
623
+ label="Add note readonly"
624
+ placeholder="Note type here..."
625
+ :icon="MagnifyingGlassIcon"
626
+ icon-type="endIcon"
627
+ readonly
628
+ />
629
+ </div>
630
+
631
+ <div class="grid grid-cols-3 gap-4">
632
+ <EUIInput
633
+ v-model.trim="form.input"
634
+ label="full name"
635
+ placeholder="Enter your name"
636
+ inputFilled
637
+ />
638
+
639
+ <EUIInput
640
+ v-model.trim="form.input"
641
+ name="addname"
642
+ id="addname"
643
+ label="Full name"
644
+ placeholder="Enter your name"
645
+ :icon="MagnifyingGlassIcon"
646
+ icon-type="startIcon"
647
+ inputFilled
648
+ />
649
+
650
+ <EUIInput
651
+ v-model.trim="form.input"
652
+ name="addemail"
653
+ id="addemail"
654
+ label="Email address"
655
+ placeholder="Enter your email"
656
+ :icon="MagnifyingGlassIcon"
657
+ icon-type="endIcon"
658
+ inputFilled
659
+ />
660
+
661
+ <EUIInput
662
+ v-model.trim="form.input"
663
+ name="search"
664
+ id="search"
665
+ type="search"
666
+ label="Course Search"
667
+ placeholder="Search here..."
668
+ :icon="MagnifyingGlassIcon"
669
+ icon-type="startIcon"
670
+ inputFilled
671
+ />
672
+
673
+ <EUIInput
674
+ v-model.trim="form.input"
675
+ name="search"
676
+ id="search"
677
+ type="search"
678
+ label="Course search disabled"
679
+ placeholder="Search here..."
680
+ :icon="MagnifyingGlassIcon"
681
+ icon-type="startIcon"
682
+ inputFilled
683
+ disabled
684
+ />
685
+
686
+ <EUIInput
687
+ v-model.trim="form.input"
688
+ name="search"
689
+ id="search"
690
+ type="search"
691
+ label="Course Search readonly"
692
+ placeholder="Search here..."
693
+ :icon="MagnifyingGlassIcon"
694
+ icon-type="startIcon"
695
+ inputFilled
696
+ readonly
697
+ />
698
+ </div>
699
+ </div>
700
+
701
+ <div
702
+ class="w-full max-w-screen-xl col-span-2 p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
703
+ >
704
+ <span
705
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
706
+ >
707
+ Name: Telephone
708
+ </span>
709
+ <pre
710
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
711
+ >
712
+ <code>&lt;EUITelephone name="contactNumber" label="Contact Number" placeholder="Your mobile number" tag="Mobile
713
+ input required" tag-color="Error" /&gt;</code>
714
+ </pre>
715
+
716
+ <div class="grid grid-cols-2 gap-6">
717
+ <EUITelephone
718
+ v-model="mobileNumber"
719
+ name="contactNumber"
720
+ label="Contact Number"
721
+ placeholder="Your mobile number"
722
+ tag="Mobile input required"
723
+ tag-color="Error"
724
+ :errors="{ name: 'Enter a valid phone number' }"
725
+ icon-type="startIcon"
726
+ :icon="DevicePhoneMobileIcon"
727
+ inputFilled
728
+ />
729
+
730
+ <EUITelephone
731
+ v-model="mobileNumber"
732
+ name="contactNumber"
733
+ label="Contact Number"
734
+ placeholder="Your mobile number"
735
+ tag="Mobile input required"
736
+ tag-color="Error"
737
+ :errors="{ name: 'Enter a valid phone number' }"
738
+ icon-type="startIcon"
739
+ :icon="DevicePhoneMobileIcon"
740
+ required
741
+ />
742
+ </div>
743
+ </div>
744
+
745
+ <div
746
+ class="w-full max-w-screen-xl col-span-2 p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
747
+ >
748
+ <span
749
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
750
+ >
751
+ Name: Select Multiple
752
+ </span>
753
+ <pre
754
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
755
+ >
756
+ <code>&lt;EUISelect label="Firstname" placeholder="Enter your name" :items="datas" /&gt;</code>
757
+ </pre>
758
+ <div class="grid grid-cols-3 gap-4">
759
+ <EUISelect
760
+ v-model="checkboxData"
761
+ search-label="name"
762
+ placeholder="Placeholder"
763
+ :items="datas"
764
+ :selected-count="true"
765
+ selectedCountLabel="Checkbox"
766
+ :multiple="true"
767
+ :is-checkbox="true"
768
+ />
769
+
770
+ <EUISelect
771
+ search-label="name"
772
+ label="Select Label"
773
+ placeholder="Placeholder"
774
+ :items="datas"
775
+ :multiple="true"
776
+ :multiple-limit="3"
777
+ />
778
+ <EUISelect placeholder="Enter your name" :items="datas" />
779
+ <EUISelect
780
+ :is-use-custom-select="true"
781
+ :items="datas"
782
+ name="customselect"
783
+ placeholder="Select multiple"
784
+ :multiple="true"
785
+ customWidth="380px"
786
+ :custom-offset="[0, 10]"
787
+ />
788
+ </div>
789
+
790
+ <div class="grid grid-cols-3 gap-4">
791
+ <EUISelect
792
+ search-label="name"
793
+ label="Multiple Select width Limiting"
794
+ placeholder="Enter your name"
795
+ :items="datas"
796
+ :multiple="true"
797
+ :multiple-limit="3"
798
+ inputFilled
799
+ />
800
+ <EUISelect placeholder="Enter your name" :items="datas" inputFilled />
801
+ <EUISelect
802
+ :is-use-custom-select="true"
803
+ :items="datas"
804
+ name="customselect"
805
+ placeholder="Select multiple"
806
+ :multiple="true"
807
+ customWidth="380px"
808
+ :custom-offset="[-20, 10]"
809
+ inputFilled
810
+ />
811
+ <EUISelectSearch />
812
+ </div>
813
+ </div>
814
+
815
+ <div
816
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1 z-[calc(infinity)]"
817
+ >
818
+ <span
819
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
820
+ >
821
+ Name: Multi Dropdown
822
+ </span>
823
+ <pre
824
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
825
+ ><code>&lt;EUIMultiDropdown title="dropdown" :menu-items="menubar" /&gt;</code>
826
+ </pre>
827
+ <div class="inline-flex items-center gap-4">
828
+ <EUIMultiDropdown title="dropdown" :menu-items="menubar" />
829
+
830
+ <EUIMultiDropdown
831
+ class-name="px-3 py-2 text-gray-700 hover:text-gray-900 bg-white rounded-md focus:bg-violet-100 group focus:outline-none focus:ring-2 focus:ring-violet-400 focus:ring-opacity-100 hover:bg-gray-100 active:bg-violet-200"
832
+ @subMenuItem="handleSubMenuItem"
833
+ @menuItem="handleMenuItem"
834
+ @action-item="addAction"
835
+ >
836
+ <template #dropdownName="{ open }">
837
+ <span>My Students</span>
838
+ <ChevronDownStroke
839
+ :class="open ? 'text-gray-900 rotate-180' : 'text-gray-500'"
840
+ class="transition duration-100 ease-in-out transform rotate-0 size-6 group-hover:text-opacity-80"
841
+ aria-hidden="true"
842
+ />
843
+ </template>
844
+ <template #actionName> + Add Custom Filter </template>
845
+ </EUIMultiDropdown>
846
+ </div>
847
+ </div>
848
+
849
+ <div
850
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
851
+ >
852
+ <span
853
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
854
+ >
855
+ Name: Checkbox
856
+ </span>
857
+ <pre
858
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
859
+ >
860
+ <code>&lt;EUICheckbox label="Use checkbox" /&gt;</code>
861
+ </pre>
862
+ <EUICheckbox label="Use checkbox" />
863
+ </div>
864
+
865
+ <div
866
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
867
+ >
868
+ <span
869
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
870
+ >
871
+ Name: Tabs
872
+ </span>
873
+ <pre
874
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
875
+ >
876
+ <code>&lt;EUITabs :tabs="tabData" :defaultActiveIndex="0" /&gt;</code>
877
+ </pre>
878
+ <EUITabs tab-style="border" :tabs="tabData" :defaultActiveIndex="0">
879
+ <template #title="{ tab }">{{ tab.name }}</template>
880
+ <template #content="{ activeTab }">
881
+ {{ activeTab }}
882
+ </template>
883
+ </EUITabs>
884
+
885
+ <div class="bg-white">
886
+ <EUITabs tab-style="design" :tabs="tabData" :defaultActiveIndex="0">
887
+ <template #title="{ tab, tabIndex, activeTab }">
888
+ {{ tab.name }}
889
+ <span
890
+ class="rounded-3xl px-1.5 text-xss font-medium uppercase leading-none inline-flex items-center h-4 transition-colors duration-100 ease-in-out"
891
+ :class="[
892
+ tabIndex === activeTab
893
+ ? 'text-gray-100 bg-gray-600'
894
+ : 'bg-gray-300 text-gray-600',
895
+ ]"
896
+ >{{ 28399 }}</span
897
+ >
898
+ </template>
899
+ <template #content="{ activeTab }">
900
+ <div class="p-2 text-sm">
901
+ {{ activeTab }}
902
+ </div>
903
+ </template>
904
+ </EUITabs>
905
+ </div>
906
+ </div>
907
+
908
+ <div
909
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
910
+ >
911
+ <span
912
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
913
+ >
914
+ Name: Textarea
915
+ </span>
916
+ <pre
917
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
918
+ >
919
+ <code>&lt;EUITextarea label="Office Address" placeholder="Enter offices and location details" /&gt;</code>
920
+ </pre>
921
+ <EUITextarea
922
+ placeholder="Enter offices and location details"
923
+ label="Office Address"
924
+ />
925
+ </div>
926
+
927
+ <div
928
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
929
+ >
930
+ <span
931
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
932
+ >
933
+ Name: Tag
934
+ </span>
935
+ <pre
936
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
937
+ >
938
+ <code>&lt;EUITag closeIcon :model-value="tagModal" @remove="handleClose" /&gt;</code>
939
+ </pre>
940
+ <EUITag closeIcon :model-value="tagModal" @remove="handleClose"
941
+ >Tag Name</EUITag
942
+ >
943
+ </div>
944
+
945
+ <div
946
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
947
+ >
948
+ <span
949
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
950
+ >
951
+ Name: Switch Toggle
952
+ </span>
953
+ <pre
954
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
955
+ >
956
+ <code>&lt;EUIToggle label="toggle switch" /&gt;</code>
957
+ </pre>
958
+ <EUIToggle label="toggle switch" />
959
+ </div>
960
+
961
+ <div
962
+ class="w-full max-w-screen-xl col-span-2 p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
963
+ >
964
+ <span
965
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
966
+ >
967
+ Name: Loader
968
+ </span>
969
+ <pre
970
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
971
+ >
972
+ <code>&lt;EUILoader /&gt;</code>
973
+ </pre>
974
+ <EUILoader />
975
+ </div>
976
+
977
+ <div
978
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
979
+ >
980
+ <span
981
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
982
+ >
983
+ Name: Avatar
984
+ </span>
985
+ <pre
986
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
987
+ >
988
+ <code>&lt;EUIAvatar image-url="https://tinyurl.com/43e5fxh9" :profile="true" full-name="JohnCena"
989
+ :show-status="true" status="Online" size="sm"&gt;&lt;template #name&gt;John Cena&lt;/template&gt; &lt;template
990
+ #designation&gt;Actor&lt;/template&gt; &lt;EUIAvatar/&gt;</code>
991
+ </pre>
992
+ <EUIAvatar
993
+ image-url="https://tinyurl.com/43e5fxh9"
994
+ :profile="true"
995
+ full-name="JohnCena"
996
+ :show-status="true"
997
+ status="Online"
998
+ size="sm"
999
+ >
1000
+ <template #name>John Cena</template>
1001
+ <template #designation>Actor</template>
1002
+ </EUIAvatar>
1003
+ </div>
1004
+
1005
+ <div
1006
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
1007
+ >
1008
+ <span
1009
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1010
+ >
1011
+ Name: Datepicker
1012
+ </span>
1013
+ <pre
1014
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1015
+ >
1016
+ <code>&lt;EUIDatepicker v-model="datepicker" label="Datepicker" placeholder="Select Date here..." /&gt;</code>
1017
+ </pre>
1018
+ <EUIDatepicker
1019
+ v-model="datepicker"
1020
+ label="Datepicker"
1021
+ placeholder="Select Date here..."
1022
+ />
1023
+ </div>
1024
+
1025
+ <div
1026
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
1027
+ >
1028
+ <span
1029
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1030
+ >
1031
+ Name: Button
1032
+ </span>
1033
+ <pre
1034
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1035
+ >
1036
+ <code>&lt;EUIButton type="button" size="md" color="purple" @click="onClickMethod"&gt;Open
1037
+ Modal&lt;/EUIButton&gt;</code>
1038
+ </pre>
1039
+
1040
+ <div class="space-y-4">
1041
+ <div class="inline-flex flex-row flex-wrap items-center gap-4">
1042
+ <EUIButton type="button" size="xs" color="purple" rounded>
1043
+ XS Button
1044
+ </EUIButton>
1045
+ <EUIButton type="button" size="sm" color="purple" rounded
1046
+ >SM Button</EUIButton
1047
+ >
1048
+ <EUIButton type="button" size="md" color="purple"
1049
+ >MD Button</EUIButton
1050
+ >
1051
+ <EUIButton type="button" size="lg" color="purple"
1052
+ >LG Button</EUIButton
1053
+ >
1054
+ <EUIButton
1055
+ color="primary"
1056
+ rounded
1057
+ size="md"
1058
+ iconType="startIcon"
1059
+ :icon="HomeIcon"
1060
+ >Home</EUIButton
1061
+ >
1062
+ </div>
1063
+
1064
+ <details>
1065
+ <summary class="text-gray-600 cursor-pointer">
1066
+ Primary Gradient
1067
+ </summary>
1068
+ <div class="inline-flex flex-row items-center gap-4">
1069
+ <EUIButton type="button" size="xs" color="primary" rounded>
1070
+ XS Button
1071
+ </EUIButton>
1072
+ <EUIButton type="button" size="sm" color="primary" rounded
1073
+ >SM Button</EUIButton
1074
+ >
1075
+ <EUIButton type="button" size="md" color="primary" rounded
1076
+ >MD Button</EUIButton
1077
+ >
1078
+ <EUIButton type="button" size="lg" color="primary" rounded
1079
+ >LG Button</EUIButton
1080
+ >
1081
+ </div>
1082
+ </details>
1083
+
1084
+ <details>
1085
+ <summary class="text-gray-600 cursor-pointer">white</summary>
1086
+ <div class="inline-flex flex-row items-center gap-4">
1087
+ <EUIButton type="button" size="xs" color="white" rounded>
1088
+ XS Button
1089
+ </EUIButton>
1090
+ <EUIButton type="button" size="sm" color="white" rounded
1091
+ >SM Button</EUIButton
1092
+ >
1093
+ <EUIButton type="button" size="md" color="white"
1094
+ >MD Button</EUIButton
1095
+ >
1096
+ <EUIButton type="button" size="lg" color="white"
1097
+ >LG Button</EUIButton
1098
+ >
1099
+ </div>
1100
+ </details>
1101
+
1102
+ <details>
1103
+ <summary class="text-gray-600 cursor-pointer">Danger</summary>
1104
+ <div class="inline-flex flex-row items-center gap-4">
1105
+ <EUIButton type="button" size="xs" color="danger">
1106
+ XS Button
1107
+ </EUIButton>
1108
+ <EUIButton type="button" size="sm" color="danger"
1109
+ >SM Button</EUIButton
1110
+ >
1111
+ <EUIButton type="button" size="md" color="danger"
1112
+ >MD Button</EUIButton
1113
+ >
1114
+ <EUIButton type="button" size="lg" color="danger"
1115
+ >LG Button</EUIButton
1116
+ >
1117
+ </div>
1118
+ </details>
1119
+
1120
+ <details>
1121
+ <summary class="text-gray-600 cursor-pointer">Success</summary>
1122
+ <div class="inline-flex flex-row items-center gap-4">
1123
+ <EUIButton type="button" size="xs" color="success">
1124
+ XS Button
1125
+ </EUIButton>
1126
+ <EUIButton type="button" size="sm" color="success"
1127
+ >SM Button</EUIButton
1128
+ >
1129
+ <EUIButton type="button" size="md" color="success" rounded
1130
+ >MD Button</EUIButton
1131
+ >
1132
+ <EUIButton type="button" size="lg" color="success" rounded
1133
+ >LG Button</EUIButton
1134
+ >
1135
+ </div>
1136
+ </details>
1137
+
1138
+ <details>
1139
+ <summary class="text-gray-600 cursor-pointer">Black</summary>
1140
+ <div class="inline-flex flex-row items-center gap-4">
1141
+ <EUIButton type="button" size="xs" color="black">
1142
+ XS Button
1143
+ </EUIButton>
1144
+ <EUIButton type="button" size="sm" color="black"
1145
+ >SM Button</EUIButton
1146
+ >
1147
+ <EUIButton type="button" size="md" color="black" rounded
1148
+ >MD Button</EUIButton
1149
+ >
1150
+ <EUIButton type="button" size="lg" color="black" rounded
1151
+ >LG Button</EUIButton
1152
+ >
1153
+ </div>
1154
+ </details>
1155
+ </div>
1156
+ </div>
1157
+
1158
+ <div
1159
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
1160
+ >
1161
+ <span
1162
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1163
+ >
1164
+ Name: Modal
1165
+ </span>
1166
+ <pre
1167
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1168
+ >
1169
+ <code>
1170
+ &lt;EUIModal :isVisible="showModal" slim-header @update:isVisible="showModal=$event"
1171
+ @confirm="handleConfirm"&gt; &lt;template #title&gt; Custom Title here&lt;/template&gt; &lt;div
1172
+ class=""&gt;Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus quas possimus ea culpa id voluptatum
1173
+ cumque, animi earum sequi, aliquid eius omnis repellendus nihil soluta vitae a temporibus! Perspiciatis,
1174
+ nihil?&lt;/div&gt; &lt;/EUIModal&gt;
1175
+ </code>
1176
+ </pre>
1177
+ <div class="space-x-4">
1178
+ <EUIButton
1179
+ type="button"
1180
+ size="md"
1181
+ color="primary"
1182
+ rounded
1183
+ @click="showModal = true"
1184
+ >Default Modal</EUIButton
1185
+ >
1186
+ <EUIButton
1187
+ type="button"
1188
+ size="md"
1189
+ color="primary"
1190
+ rounded
1191
+ @click="customModal = true"
1192
+ >Custom Modal
1193
+ </EUIButton>
1194
+ </div>
1195
+
1196
+ <EUIModal
1197
+ :isVisible="showModal"
1198
+ slim-header
1199
+ @update:isVisible="showModal = $event"
1200
+ @confirm="handleConfirm"
1201
+ >
1202
+ <template #title> Custom Title here</template>
1203
+ <div class="">
1204
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus quas
1205
+ possimus ea culpa id voluptatum cumque, animi earum sequi, aliquid
1206
+ eius omnis repellendus nihil soluta vitae a temporibus!
1207
+ Perspiciatis, nihil?
1208
+ </div>
1209
+ </EUIModal>
1210
+
1211
+ <EUIModal
1212
+ :isVisible="customModal"
1213
+ @update:isVisible="customModal = $event"
1214
+ @confirm="openModal"
1215
+ rounded-class="rounded-3xl"
1216
+ >
1217
+ <template #header>
1218
+ <div
1219
+ class="sticky inset-x-0 top-0 px-6 py-4 text-base font-semibold bg-white border-b"
1220
+ >
1221
+ Custom Header here
1222
+ </div>
1223
+ </template>
1224
+ <template #content>
1225
+ <div
1226
+ class="p-4 max-h-[calc(100svh-10rem)] overflow-y-auto space-y-4"
1227
+ >
1228
+ <div v-for="item in 10" :key="`row-${item}`">
1229
+ Lorem, ipsum dolor sit amet consectetur adipisicing elit. Minus
1230
+ quas possimus ea culpa id voluptatum cumque, animi earum sequi,
1231
+ aliquid eius omnis repellendus nihil soluta vitae a temporibus!
1232
+ Perspiciatis, nihil?
1233
+ </div>
1234
+ </div>
1235
+ </template>
1236
+ <template #footer>
1237
+ <div
1238
+ class="sticky inset-x-0 bottom-0 flex items-center justify-end p-4 bg-white border-t border-gray-200"
1239
+ >
1240
+ <div class="text-base font-semibold">Custom Footer here</div>
1241
+ <button
1242
+ class="px-4 py-2 text-base font-semibold tracking-wide text-gray-600 transition-colors duration-75 bg-white rounded-md hover:bg-gray-100"
1243
+ @click="customModal = false"
1244
+ >
1245
+ Cancel
1246
+ </button>
1247
+ <button
1248
+ class="px-4 py-2 text-base font-semibold tracking-wide text-white transition-colors duration-75 bg-purple-600 rounded-md hover:bg-purple-700"
1249
+ >
1250
+ Confirm
1251
+ </button>
1252
+ </div>
1253
+ </template>
1254
+ </EUIModal>
1255
+ </div>
1256
+
1257
+ <div
1258
+ class="w-full max-w-xl p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
1259
+ >
1260
+ <span
1261
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1262
+ >
1263
+ Name: Accordion
1264
+ </span>
1265
+ <pre
1266
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1267
+ >
1268
+ <code>&lt;EUIAccordion :datas="accordionData" :defaultOpen="[1]" :collapse="true" /&gt;</code>
1269
+ </pre>
1270
+ <EUIAccordion
1271
+ :datas="accordionData"
1272
+ :defaultOpen="[1]"
1273
+ :collapse="true"
1274
+ />
1275
+ </div>
1276
+
1277
+ <div
1278
+ class="w-full max-w-xl p-4 overflow-y-auto bg-white border border-gray-200 border-solid rounded-lg max-h-96 hover:ring-2 ring-purple-500 ring-offset-1"
1279
+ >
1280
+ <span
1281
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1282
+ >
1283
+ Name: Timeline
1284
+ </span>
1285
+ <pre
1286
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1287
+ >
1288
+ <code>&lt;EUITimeLine :items="timelineData" type="view" /&gt;</code>
1289
+ </pre>
1290
+ <EUITimeLine :items="timelineData" type="view" />
1291
+ <EUITimeLine
1292
+ :items="timelineData"
1293
+ type="icon"
1294
+ :icon="ArrowDownCircleIcon"
1295
+ />
1296
+ <EUITimeLine :items="timelineImage" type="image" :show-more="true" />
1297
+ </div>
1298
+
1299
+ <div
1300
+ class="w-full max-w-screen-xl col-span-2 p-4 bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1"
1301
+ >
1302
+ <span
1303
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1304
+ >
1305
+ Name: Stepper Timeline
1306
+ </span>
1307
+ <pre
1308
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1309
+ >
1310
+ <code>&lt;EUIStepperVertical stepStatus="opportunity" /&gt;</code>
1311
+ </pre>
1312
+ <EUIStepperTimeline />
1313
+ </div>
1314
+
1315
+ <div
1316
+ class="w-full max-w-screen-xl col-span-2 p-4 overflow-auto bg-white border border-gray-200 border-solid rounded-lg hover:ring-2 ring-purple-500 ring-offset-1 max-h-svh"
1317
+ >
1318
+ <span
1319
+ class="px-1 py-1 mb-0 font-mono text-xs leading-none text-gray-500 bg-gray-100 rounded-md"
1320
+ >
1321
+ Name: Dashboard Table
1322
+ </span>
1323
+ <pre
1324
+ class="pb-4 my-4 text-sm font-normal text-gray-700 whitespace-pre-wrap border-b border-gray-100 border-solid"
1325
+ >
1326
+ <code>&lt;EUIDashboardTable :checkable="true"
1327
+ paginated
1328
+ :checked-rows.sync="checkedRows"
1329
+ backend-pagination
1330
+ :per-page="limit"
1331
+ :headers="tableHeaders"
1332
+ :items="tableData"
1333
+ :total="totalCount"
1334
+ :default-sort-direction="defaultSortOrder"
1335
+ default-sort="introducer_details"
1336
+ :current-page="offset"
1337
+ @sort="onSort"
1338
+ @mouseenter="select"
1339
+ @mouseleave=";(selectedIndex = null), (selected = null)" &gt; &lt;template #[`item.introducer_details`]="{ row,
1340
+ rowIndex }"&gt;
1341
+ &lt;div class="flex flex-row items-center gap-2"&gt;
1342
+ &lt;div
1343
+ class="flex items-center justify-center text-sm font-bold text-gray-900 bg-gray-100 rounded-full size-8"
1344
+ &gt;
1345
+ &lt;img
1346
+ :src="row?.introducer_details?.url"
1347
+ class="size-8 rounded-3xl"
1348
+ alt=""
1349
+ /&gt;
1350
+ &lt;/div&gt;
1351
+ &lt;div class="text-sm"&gt;{{ row?.introducer_details?.name }}&lt;/div&gt;
1352
+ &lt;/div&gt;
1353
+ &lt;/template&gt;
1354
+ &lt;/EUIDashboardTable&gt;
1355
+ </code>
1356
+ </pre>
1357
+ <EUIDashboardTable
1358
+ :checkable="true"
1359
+ paginated
1360
+ :checked-rows.sync="checkedRows"
1361
+ backend-pagination
1362
+ :per-page="limit"
1363
+ :headers="tableHeaders"
1364
+ :items="tableData"
1365
+ :total="totalCount"
1366
+ :default-sort-direction="defaultSortOrder"
1367
+ default-sort="introducer_details"
1368
+ :current-page="offset"
1369
+ @sort="onSort"
1370
+ @mouseenter="select"
1371
+ @mouseleave="(selectedIndex = null), (selected = null)"
1372
+ >
1373
+ <template #[`item.introducer_details`]="{ row, rowIndex }">
1374
+ <div class="flex flex-row items-center gap-2">
1375
+ <div
1376
+ class="flex items-center justify-center text-sm font-bold text-gray-900 bg-gray-100 rounded-full size-8"
1377
+ >
1378
+ <img
1379
+ :src="row?.introducer_details?.url"
1380
+ class="size-8 rounded-3xl"
1381
+ alt=""
1382
+ />
1383
+ </div>
1384
+ <div class="text-sm">{{ row?.introducer_details?.name }}</div>
1385
+ </div>
1386
+ </template>
1387
+ </EUIDashboardTable>
1388
+
1389
+ <div class="py-4">
1390
+ <EUITable
1391
+ :checkable="true"
1392
+ :table-loading="loading"
1393
+ paginated
1394
+ :checked-rows.sync="checkedRows"
1395
+ backend-pagination
1396
+ :per-page="10"
1397
+ :headers="studentHeader"
1398
+ :items="studentData"
1399
+ :total="studentData.length"
1400
+ :default-sort-direction="defaultSortOrder"
1401
+ default-sort=""
1402
+ :current-page="offset"
1403
+ @changePage="onPageChange"
1404
+ @sort="onSort"
1405
+ @mouseenter="select"
1406
+ @mouseleave="(selectedIndex = null), (selected = null)"
1407
+ >
1408
+ <template #[`item.firstName`]="{ row, rowIndex }">
1409
+ <div class="space-y-0.5">
1410
+ <div class="block text-sm font-medium leading-snug">
1411
+ {{
1412
+ capitalizeText(row?.firstName) +
1413
+ " " +
1414
+ capitalizeText(row?.lastName)
1415
+ }}
1416
+ </div>
1417
+ <div class="text-xs font-medium text-gray-900 leading-[normal]">
1418
+ {{ row?.referenceId }}
1419
+ </div>
1420
+ </div>
1421
+ </template>
1422
+ <template #[`item.activeUser`]="{ row, rowIndex }">
1423
+ {{ row?.activeUser?.user?.firstName }}
1424
+ {{ row?.activeUser?.user?.lastName }}
1425
+ </template>
1426
+ </EUITable>
1427
+ </div>
1428
+ </div>
1429
+ </div>
1430
+
1431
+ <div class="">
1432
+ <pre
1433
+ class="text-[0.5rem] p-2 rounded-lg max-h-72 overflow-y-auto text-red-600 border border-gray-100"
1434
+ >
1435
+ {{ `Total Row:${selectedRows.length}` }}
1436
+ {{ selectedRows.map((x) => x?._id) }}
1437
+ </pre>
1438
+
1439
+ <div class="py-4">
1440
+ <EUITable
1441
+ :checkable="true"
1442
+ :table-loading="loading"
1443
+ paginated
1444
+ v-model:selectedRows.sync="selectedRows"
1445
+ :checked-rows.sync="checkedRows"
1446
+ backend-pagination
1447
+ :per-page="10"
1448
+ :headers="studentHeader"
1449
+ :items="studentData"
1450
+ :total="studentData.length"
1451
+ :default-sort-direction="defaultSortOrder"
1452
+ default-sort=""
1453
+ :current-page="offset"
1454
+ @changePage="onPageChange"
1455
+ @sort="onSort"
1456
+ @mouseenter="select"
1457
+ @mouseleave="(selectedIndex = null), (selected = null)"
1458
+ >
1459
+ <template #[`item.firstName`]="{ row, rowIndex }">
1460
+ <div class="space-y-0.5">
1461
+ <div class="block text-sm font-medium leading-snug">
1462
+ {{
1463
+ capitalizeText(row?.firstName) +
1464
+ " " +
1465
+ capitalizeText(row?.lastName)
1466
+ }}
1467
+ </div>
1468
+ <div class="text-xs font-medium text-gray-900 leading-[normal]">
1469
+ {{ row?.referenceId }}
1470
+ </div>
1471
+ </div>
1472
+ </template>
1473
+ <template #[`item.activeUser`]="{ row, rowIndex }">
1474
+ {{ row?.activeUser?.user?.firstName }}
1475
+ {{ row?.activeUser?.user?.lastName }}
1476
+ </template>
1477
+ </EUITable>
1478
+ </div>
1479
+ </div>
1480
+ <div>
1481
+ <UTableview />
1482
+ <EUIAccordion
1483
+ :datas="accordionData"
1484
+ :defaultOpen="[1]"
1485
+ :collapse="true"
1486
+ accordionStyle="separated"
1487
+ @update:activeItem="handleActiveItem"
1488
+ >
1489
+ <template #title="{ item }">
1490
+ <div>{{ item.title }}</div>
1491
+ </template>
1492
+ <template #right-icon="{ item }">
1493
+ <div
1494
+ :key="item"
1495
+ class="w-10 h-10 bg-red-100 border border-red-500 rounded-full"
1496
+ />
1497
+ </template>
1498
+ <template #content="{ item }">
1499
+ <div>{{ item.content }}</div>
1500
+ </template>
1501
+ </EUIAccordion>
1502
+ </div>
1503
+ </div>
1504
+ </template>
1505
+
1506
+ <script setup lang="ts">
1507
+ import { computed, reactive, ref } from "vue";
1508
+ import EUIButton from "./button/EUIButton.vue";
1509
+ import EUICheckbox from "./checkbox/EUICheckbox.vue";
1510
+ import EUIInput from "./input/EUIInput.vue";
1511
+ import EUIModal from "./modal/EUIModal.vue";
1512
+ import EUISelect from "./select/EUISelect.vue";
1513
+ import EUITabs from "./tabs/EUITabs.vue";
1514
+ import EUITextarea from "./textArea/EUITextArea.vue";
1515
+ import EUISelectSearch from "./selectSearch/EUISelectSearch.vue";
1516
+ import EUITimeLine from "./timeLine/EUITimeLine.vue";
1517
+ import {
1518
+ ArrowDownCircleIcon,
1519
+ MagnifyingGlassIcon,
1520
+ } from "@heroicons/vue/24/solid";
1521
+ import EUITag from "./tag/EUITag.vue";
1522
+ import EUIToggle from "./toggle/EUIToggle.vue";
1523
+ import EUILoader from "./loader/EUILoader.vue";
1524
+ import EUIAvatar from "./avatar/EUIAvatar.vue";
1525
+ import EUIStepperTimeline from "./stepperTimeline/EUIStepperTimeline.vue";
1526
+ import EUIAccordion from "./accordion/EUIAccordion.vue";
1527
+ import EUITelephone from "./telephone/EUITelephone.vue";
1528
+ import {
1529
+ DevicePhoneMobileIcon,
1530
+ ExclamationTriangleIcon,
1531
+ FunnelIcon,
1532
+ HomeIcon,
1533
+ } from "@heroicons/vue/24/outline";
1534
+ import EUIDatepicker from "./datepicker/EUIDatepicker.vue";
1535
+ import EUIDashboardTable from "./table/EUIDashboardTable.vue";
1536
+ import tabData from "../data/tab";
1537
+ import {
1538
+ studentData,
1539
+ studentHeader,
1540
+ tableData,
1541
+ tableHeaders,
1542
+ } from "../data/table";
1543
+ import EUITable from "./table/EUITable.vue";
1544
+ import { capitalizeText } from "../utils/lodash";
1545
+ import ChevronDownStroke from "../assets/svg/ChevronDownStroke.vue";
1546
+ import EUIMultiDropdown from "./dropdown/EUIMultiDropdown.vue";
1547
+ // import Delete from "./delete.vue";
1548
+ import UTableview from "./table/UTableview.vue";
1549
+ import EUIAlerts from "./alerts/EUIAlerts.vue";
1550
+ import EUIButtonGroup from "./button/EUIButtonGroup.vue";
1551
+ import EUISearchExpand from "./searchexpand/EUISearchExpand.vue";
1552
+ import EUITabOutline from "./tabs/EUITabOutline.vue";
1553
+ import EUIPopover from "./popover/EUIPopover.vue";
1554
+ import EUIStepperHorizontal from "./stepperTimeline/EUIStepperHorizontal.vue";
1555
+ import { debounce } from "lodash";
1556
+ import EUISearchTagSelect from "./searchTagSelect/EUISearchTagSelect.vue";
1557
+ import { countryAll } from "../data/country";
1558
+ import EUINumberInput from "./input/EUINumberInput.vue";
1559
+
1560
+ const checkboxData = ref([]);
1561
+ const businessAreaSel = ref();
1562
+ const popoverSelect = ref();
1563
+
1564
+ const businessArea = ref(["All", "B2B", "B2C", "Accelerator"]);
1565
+
1566
+ const emit = defineEmits(["update:modelValue", "on-select"]);
1567
+ const selectedCity = ref();
1568
+
1569
+ const onSearch = debounce(async (query: string) => query, 350);
1570
+ const onCitySelect = (value: any) => {
1571
+ emit("on-select", value);
1572
+ };
1573
+
1574
+ const clear = (item: any) => {
1575
+ // const currentSelection = props.modelValue;
1576
+ // if (Array.isArray(currentSelection)) {
1577
+ // const updatedSelection = currentSelection.filter(
1578
+ // (selectedItem) => !selectedItem.slug?.includes(item.slug)
1579
+ // );
1580
+ // emit("update:modelValue", updatedSelection);
1581
+ // emit("on-select", updatedSelection);
1582
+ // }
1583
+ };
1584
+
1585
+ // TODO: Popover
1586
+ const isLoading = ref(false);
1587
+ const popoverVisible = ref(false);
1588
+
1589
+ const isInitiallyOpen = ref(true);
1590
+ const onDefaultClose = () => {
1591
+ isInitiallyOpen.value = false;
1592
+ };
1593
+
1594
+ const onPopoverToggle = () => {
1595
+ popoverVisible.value = !popoverVisible.value;
1596
+ };
1597
+
1598
+ const onPopoverHide = () => {
1599
+ popoverVisible.value = false;
1600
+ };
1601
+
1602
+ const applyFilter = () => {
1603
+ onPopoverHide();
1604
+ };
1605
+
1606
+ const resetFilters = () => {};
1607
+
1608
+ const allDays = ref([
1609
+ { name: "7 days", count: 5 },
1610
+ { name: "15 days", count: 10 },
1611
+ { name: "16-30 days", count: 20 },
1612
+ { name: "31-60 days", count: 121 },
1613
+ { name: "61-90 days", count: 40 },
1614
+ ]);
1615
+
1616
+ const activeDays = ref(allDays.value[0].name);
1617
+ const activeTab = ref(allDays.value[3].name);
1618
+
1619
+ const onchangeActiveTab = (val: any) => {
1620
+ activeTab.value = val.name;
1621
+ };
1622
+
1623
+ const onchangeDays = (val: any) => {
1624
+ activeDays.value = val.name;
1625
+ };
1626
+
1627
+ const searchInput = ref("");
1628
+ const showSearch = ref(false);
1629
+
1630
+ const seachStudent = (e) => {
1631
+ console.log("seachStudent", e);
1632
+ };
1633
+
1634
+ const mobileNumber = ref("+91 8667444951");
1635
+ const datepicker = ref(new Date());
1636
+ const loading = ref(false);
1637
+
1638
+ const inputNumber = ref();
1639
+ const inputNumberPoints = ref()
1640
+
1641
+ const form = reactive({
1642
+ input: "Lorem ipsum dolor sit",
1643
+ mobile: "+918667444951",
1644
+ });
1645
+
1646
+ const showAlert = ref(true);
1647
+ const onClickAlert = () => {
1648
+ alert("Alert action button clicked");
1649
+ };
1650
+
1651
+ //TODO: Dashboard Table
1652
+ const selectedRows = ref([]);
1653
+ const checkedRows = ref([]);
1654
+ const defaultSortOrder = ref("asc");
1655
+ const limit = ref(5);
1656
+ const offset = ref(0);
1657
+ const selectedIndex = ref(null);
1658
+ const selected: { index: string } = { index: "" };
1659
+
1660
+ const totalCount = computed(() => {
1661
+ return tableData.length;
1662
+ });
1663
+
1664
+ const select = (_item: any, index: any) => {
1665
+ selectedIndex.value = index;
1666
+ };
1667
+
1668
+ const onSort = (field: string, order: string) => {
1669
+ const modifier = order === "desc" ? -1 : 1;
1670
+ tableData.sort((a, b) => {
1671
+ if (a[field] < b[field]) return -1 * modifier;
1672
+ if (a[field] > b[field]) return 1 * modifier;
1673
+ return 0;
1674
+ });
1675
+ };
1676
+
1677
+ const onPageChange = (offsetData: number) => {
1678
+ offset.value = offsetData;
1679
+ loading.value = true;
1680
+ console.log("@changePage:", offsetData);
1681
+ setTimeout(() => {
1682
+ loading.value = false;
1683
+ }, 800);
1684
+ };
1685
+
1686
+ // TODO: Multi dropdown menu clicked access
1687
+ const menubar = ref([{ text: "Students" }, { text: "Application" }]);
1688
+
1689
+ const handleMenuItem = (item: any) => {
1690
+ console.log("Menu clicked:", item);
1691
+ };
1692
+
1693
+ const addAction = (e: Event) => {
1694
+ console.log("Action Item clicked:" + e);
1695
+ };
1696
+
1697
+ const handleSubMenuItem = (subItem: any) => {
1698
+ console.log("Submenu item clicked:", subItem);
1699
+ };
1700
+
1701
+ //TODO: TagModal
1702
+ const tagModal = ref(false);
1703
+ const handleClose = () => {
1704
+ tagModal.value = true;
1705
+ };
1706
+
1707
+ //TODO: Modal
1708
+ const showModal = ref(false);
1709
+ const handleConfirm = () => {
1710
+ showModal.value = true;
1711
+ };
1712
+
1713
+ const customModal = ref(false);
1714
+ const openModal = () => {
1715
+ customModal.value = false;
1716
+ };
1717
+
1718
+ // accordion active Index
1719
+ const handleActiveItem = (activeItems: number) => {
1720
+ console.log("Currently active accordion(s):", activeItems);
1721
+ };
1722
+
1723
+ // Stepper dynamic Data
1724
+ const allSteps = ["MQL", "SAL", "PROSPECT", "CUSTOMER"];
1725
+ const currentStage = "PROSPECT";
1726
+ const lifeCycleHistory = [
1727
+ {
1728
+ lifecycleStage: "MQL",
1729
+ updatedAt: "2025-08-25T15:35:55.965Z",
1730
+ updatedBy: {
1731
+ email: "testuser3@edvoy.com",
1732
+ },
1733
+ },
1734
+ {
1735
+ lifecycleStage: "SAL",
1736
+ updatedAt: "2025-08-25T15:36:16.616Z",
1737
+ updatedBy: {
1738
+ email: "testuser3@edvoy.com",
1739
+ },
1740
+ },
1741
+ {
1742
+ lifecycleStage: "PROSPECT",
1743
+ updatedAt: "2025-08-25T15:42:30.195Z",
1744
+ updatedBy: {
1745
+ email: "testuser2@edvoy.com",
1746
+ },
1747
+ },
1748
+ ];
1749
+
1750
+ //TODO: Select Data
1751
+ const datas = ref([
1752
+ {
1753
+ value: "ShawnBurke",
1754
+ name: "Shawn Burke",
1755
+ age: 6,
1756
+ },
1757
+ {
1758
+ value: "EmeryNolan",
1759
+ name: "Emery Nolan",
1760
+ age: 4,
1761
+ },
1762
+ {
1763
+ value: "EmbryGrant",
1764
+ name: "Embry Grant",
1765
+ age: 3,
1766
+ },
1767
+ {
1768
+ value: "JesseAustin",
1769
+ name: "Jesse Austin",
1770
+ age: 9,
1771
+ },
1772
+ {
1773
+ value: "TandyChristensen",
1774
+ name: "Tandy Christensen",
1775
+ age: 7,
1776
+ },
1777
+ {
1778
+ value: "ShawnBurkeNew",
1779
+ name: "Shawn Burke New",
1780
+ age: 6,
1781
+ },
1782
+ {
1783
+ value: "EmeryNolanNew",
1784
+ name: "Emery Nolan New",
1785
+ age: 4,
1786
+ },
1787
+ {
1788
+ value: "EmbryGrantNew",
1789
+ name: "Embry Grant New",
1790
+ age: 3,
1791
+ },
1792
+ {
1793
+ value: "JesseAustinNew",
1794
+ name: "Jesse Austin New",
1795
+ age: 9,
1796
+ },
1797
+ {
1798
+ value: "TandyChristensenNew",
1799
+ name: "Tandy Christensen New",
1800
+ age: 7,
1801
+ },
1802
+ ]);
1803
+ //TODO: Timeline
1804
+
1805
+ const timelineData = ref([
1806
+ {
1807
+ id: 1,
1808
+ person: { name: "Alex Curren" },
1809
+ date: "2d ago",
1810
+ dateTime: "2023-01-24T09:12",
1811
+ },
1812
+ {
1813
+ id: 2,
1814
+ person: { name: "Alex Curren" },
1815
+ date: "1d ago",
1816
+ dateTime: "2023-01-24T09:20",
1817
+ },
1818
+ {
1819
+ id: 3,
1820
+ person: { name: "Alex Curren" },
1821
+ date: "2d ago",
1822
+ dateTime: "2023-01-24T09:12",
1823
+ },
1824
+ {
1825
+ id: 4,
1826
+ person: { name: "Alex Curren" },
1827
+ date: "1d ago",
1828
+ dateTime: "2023-01-24T09:20",
1829
+ },
1830
+ {
1831
+ id: 5,
1832
+ person: { name: "Alex Curren" },
1833
+ date: "2d ago",
1834
+ dateTime: "2023-01-24T09:12",
1835
+ },
1836
+ {
1837
+ id: 6,
1838
+ person: { name: "Alex Curren" },
1839
+ date: "1d ago",
1840
+ dateTime: "2023-01-24T09:20",
1841
+ },
1842
+ ]);
1843
+
1844
+ const timelineImage = ref([
1845
+ {
1846
+ id: 1,
1847
+ person: {
1848
+ name: "Chelsea Hagon",
1849
+ imageUrl:
1850
+ "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
1851
+ },
1852
+ comment:
1853
+ "Called client, they reassured me the invoice would be paid by the 25th.",
1854
+ date: "3d ago",
1855
+ dateTime: "2023-01-23T15:56",
1856
+ showmore: {
1857
+ title: "More Details",
1858
+ content:
1859
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat, dicta quae aliquam provident mollitia nostrum.",
1860
+ },
1861
+ },
1862
+ {
1863
+ id: 2,
1864
+ person: {
1865
+ name: "Chelsea Hagon",
1866
+ imageUrl:
1867
+ "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
1868
+ },
1869
+ comment:
1870
+ "Called client, they reassured me the invoice would be paid by the 25th.",
1871
+ date: "3d ago",
1872
+ dateTime: "2023-01-23T15:56",
1873
+ showmore: {
1874
+ title: "More Details",
1875
+ content:
1876
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat, dicta quae aliquam provident mollitia nostrum.",
1877
+ },
1878
+ },
1879
+ {
1880
+ id: 3,
1881
+ person: {
1882
+ name: "Chelsea Hagon",
1883
+ imageUrl:
1884
+ "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
1885
+ },
1886
+ comment:
1887
+ "Called client, they reassured me the invoice would be paid by the 25th.",
1888
+ date: "3d ago",
1889
+ dateTime: "2023-01-23T15:56",
1890
+ showmore: {
1891
+ title: "More Details",
1892
+ content:
1893
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat, dicta quae aliquam provident mollitia nostrum.",
1894
+ },
1895
+ },
1896
+ {
1897
+ id: 4,
1898
+ person: {
1899
+ name: "Chelsea Hagon",
1900
+ imageUrl:
1901
+ "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
1902
+ },
1903
+ comment:
1904
+ "Called client, they reassured me the invoice would be paid by the 25th.",
1905
+ date: "3d ago",
1906
+ dateTime: "2023-01-23T15:56",
1907
+ showmore: {
1908
+ title: "More Details",
1909
+ content:
1910
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat, dicta quae aliquam provident mollitia nostrum.",
1911
+ },
1912
+ },
1913
+ {
1914
+ id: 5,
1915
+ person: {
1916
+ name: "Chelsea Hagon",
1917
+ imageUrl:
1918
+ "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
1919
+ },
1920
+ comment:
1921
+ "Called client, they reassured me the invoice would be paid by the 25th.",
1922
+ date: "3d ago",
1923
+ dateTime: "2023-01-23T15:56",
1924
+ showmore: {
1925
+ title: "More Details",
1926
+ content:
1927
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat, dicta quae aliquam provident mollitia nostrum.",
1928
+ },
1929
+ },
1930
+ {
1931
+ id: 6,
1932
+ person: {
1933
+ name: "Chelsea Hagon",
1934
+ imageUrl:
1935
+ "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80",
1936
+ },
1937
+ comment:
1938
+ "Called client, they reassured me the invoice would be paid by the 25th.",
1939
+ date: "3d ago",
1940
+ dateTime: "2023-01-23T15:56",
1941
+ showmore: {
1942
+ title: "More Details",
1943
+ content:
1944
+ "Lorem ipsum dolor sit amet consectetur adipisicing elit. Repellat, dicta quae aliquam provident mollitia nostrum.",
1945
+ },
1946
+ },
1947
+ ]);
1948
+
1949
+ const accordionData = ref([
1950
+ {
1951
+ title: "1.How long does the course take?",
1952
+ content:
1953
+ "The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
1954
+ },
1955
+ {
1956
+ title: "2.How long does the course take?",
1957
+ content:
1958
+ "The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
1959
+ },
1960
+ {
1961
+ title: "3.How long does the course take?",
1962
+ content:
1963
+ "The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
1964
+ },
1965
+ {
1966
+ title: "4.How long does the course take?",
1967
+ content:
1968
+ "The video content takes more than 4.5 hours. In addition, you can test gained knowledge on 30 quizzes and practical tasks.",
1969
+ },
1970
+ ]);
1971
+ </script>
1972
+
1973
+ <style lang="scss" scoped></style>
1974
+ -->