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

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 (69) hide show
  1. package/package.json +10 -3
  2. package/src/App.vue +0 -16
  3. package/src/assets/svg/CheckTick.vue +0 -21
  4. package/src/assets/svg/ChevronBigDown.vue +0 -22
  5. package/src/assets/svg/ChevronDownSolid.vue +0 -19
  6. package/src/assets/svg/ChevronDownStroke.vue +0 -22
  7. package/src/assets/svg/ChevronDownStrokeSolid.vue +0 -19
  8. package/src/assets/svg/SearchBigZoomIn.vue +0 -21
  9. package/src/assets/svg/SortArrow.vue +0 -24
  10. package/src/assets/svg/Student.vue +0 -30
  11. package/src/assets/svg/partner.vue +0 -33
  12. package/src/assets/svg/people.vue +0 -25
  13. package/src/components/HelloWorld.vue +0 -1974
  14. package/src/components/accordion/EUIAccordion.vue +0 -152
  15. package/src/components/alerts/EUIAlerts.vue +0 -194
  16. package/src/components/avatar/EUIAvatar.vue +0 -96
  17. package/src/components/breadcrumb/EUIBreadcrumb.vue +0 -59
  18. package/src/components/button/EUIButton.vue +0 -154
  19. package/src/components/button/EUIButtonGroup.vue +0 -287
  20. package/src/components/button/buttonAnimateTab.vue +0 -74
  21. package/src/components/checkbox/EUICheckbox.vue +0 -110
  22. package/src/components/datepicker/EUIDatepicker.vue +0 -295
  23. package/src/components/delete.vue +0 -262
  24. package/src/components/dragModal/EUIDrag.vue +0 -179
  25. package/src/components/dropdown/EUIMultiDropdown.vue +0 -174
  26. package/src/components/errorMessage/EUIErrorMessage.vue +0 -25
  27. package/src/components/input/EUIInput.vue +0 -223
  28. package/src/components/input/EUINumberInput.vue +0 -250
  29. package/src/components/loader/EUICircleLoader.vue +0 -31
  30. package/src/components/loader/EUICubeLoader.vue +0 -237
  31. package/src/components/loader/EUILoader.vue +0 -17
  32. package/src/components/loader/EUISquareLoader.vue +0 -47
  33. package/src/components/modal/EUIModal.vue +0 -224
  34. package/src/components/pillSelect/EUIPillSelect.vue +0 -149
  35. package/src/components/popover/EUIPopover.vue +0 -297
  36. package/src/components/radio/EUIRadio.vue +0 -75
  37. package/src/components/searchInput/EUISearch.vue +0 -223
  38. package/src/components/searchTagSelect/EUISearchTagSelect.vue +0 -642
  39. package/src/components/searchTagSelect/SearchInput.vue +0 -167
  40. package/src/components/searchexpand/EUISearchExpand.vue +0 -148
  41. package/src/components/searchexpand/EUISearchToggle.vue +0 -86
  42. package/src/components/select/EUISelect.vue +0 -1092
  43. package/src/components/selectSearch/EUISelectSearch.vue +0 -23
  44. package/src/components/slideover/EUISlideover.vue +0 -207
  45. package/src/components/stepperTimeline/EUIStepperHorizontal.vue +0 -242
  46. package/src/components/stepperTimeline/EUIStepperTimeline.vue +0 -16
  47. package/src/components/stepperTimeline/EUIStepperVertical.vue +0 -112
  48. package/src/components/table/ColumnResizeTable.vue +0 -740
  49. package/src/components/table/EUIDashboardTable.vue +0 -514
  50. package/src/components/table/EUIPageLimit.vue +0 -66
  51. package/src/components/table/EUIPagination.vue +0 -175
  52. package/src/components/table/EUIStudentPagination.vue +0 -172
  53. package/src/components/table/EUITable.vue +0 -559
  54. package/src/components/table/EUITableCheckbox.vue +0 -98
  55. package/src/components/table/GrowthTable.vue +0 -575
  56. package/src/components/table/GrowthTableView.vue +0 -108
  57. package/src/components/table/ResizeTableview.vue +0 -198
  58. package/src/components/table/UCheckbox.vue +0 -169
  59. package/src/components/table/UTable.vue +0 -611
  60. package/src/components/table/UTableview.vue +0 -189
  61. package/src/components/tabs/EUITabOutline.vue +0 -263
  62. package/src/components/tabs/EUITabs.vue +0 -226
  63. package/src/components/tag/EUITag.vue +0 -88
  64. package/src/components/telephone/EUITelephone.vue +0 -299
  65. package/src/components/textArea/EUITextArea.vue +0 -155
  66. package/src/components/timeLine/EUITimeLine.vue +0 -148
  67. package/src/components/toggle/EUIToggle.vue +0 -101
  68. package/src/components/tooltip/EUITooltip.vue +0 -111
  69. package/src/components/uidemo/select-com.vue +0 -120
@@ -1,287 +0,0 @@
1
- <template>
2
- <div>
3
- <div
4
- class="inline-flex items-center gap-2 px-2 py-2 overflow-hidden transition-all duration-200 ease-in bg-white shadow-xl w-max shadow-purple-50"
5
- :class="[rounded ? 'rounded-full' : 'rounded-lg']"
6
- v-bind="$attrs"
7
- >
8
- <slot name="before" />
9
- <nav
10
- ref="navContainer"
11
- class="relative z-0 inline-flex flex-row items-center gap-2"
12
- >
13
- <div
14
- ref="navIndicator"
15
- class="absolute left-0 top-0 h-full w-auto -z-[1] transition-all duration-350 ease-[cubic-bezier(0.15,0.3,0.25,1)]"
16
- :class="[
17
- getBtnClass(activeBtnName),
18
- rounded ? 'rounded-full' : 'rounded-lg',
19
- ]"
20
- ></div>
21
- <button
22
- v-for="(data, index) in items"
23
- :key="`data-${index}`"
24
- v-bind="buttonAttrs"
25
- :type="type"
26
- :size="size"
27
- :iconType="iconType"
28
- :data-name="data.name"
29
- :class="[
30
- 'capitalize box-border border-none inline-flex flex-row gap-x-2 items-center !bg-transparent',
31
- rounded ? 'rounded-full' : 'rounded-lg',
32
- getBtnClass(data.name || ''),
33
- { 'bar-indicator': data.name !== activeBtnName },
34
- ]"
35
- :disabled="disabled"
36
- :loading="loading"
37
- :icon="icon"
38
- @click="handleOnChange(data || '')"
39
- style="transition: all 350ms cubic-bezier(0.15, 0.3, 0.25, 1)"
40
- >
41
- <component
42
- :is="icon"
43
- v-if="iconType === 'icon' || iconType === 'startIcon'"
44
- :class="[iconWidth]"
45
- />
46
- <slot :data="data" :activeName="activeBtnName">
47
- {{ data?.name }}
48
- </slot>
49
- <component
50
- :is="icon"
51
- v-if="iconType === 'endIcon'"
52
- :class="[iconWidth]"
53
- />
54
- <svg
55
- v-if="loading"
56
- class="animate-spin"
57
- :class="[iconWidth]"
58
- xmlns="http://www.w3.org/2000/svg"
59
- fill="none"
60
- viewBox="0 0 24 24"
61
- >
62
- <circle
63
- class="opacity-25"
64
- cx="12"
65
- cy="12"
66
- r="10"
67
- stroke="currentColor"
68
- stroke-width="4"
69
- />
70
- <path
71
- fill="currentColor"
72
- class="opacity-75"
73
- d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
74
- />
75
- </svg>
76
- </button>
77
- </nav>
78
- <slot name="after" />
79
- </div>
80
- </div>
81
- </template>
82
-
83
- <script setup lang="ts">
84
- import {
85
- computed,
86
- nextTick,
87
- onMounted,
88
- PropType,
89
- reactive,
90
- ref,
91
- toRefs,
92
- useAttrs,
93
- } from "vue";
94
-
95
- interface Item {
96
- name: string;
97
- [key: string]: any;
98
- }
99
-
100
- const props = defineProps({
101
- items: {
102
- type: Array as () => Item[],
103
- default: () => [],
104
- },
105
- defaultActive: {
106
- type: String,
107
- default: "",
108
- },
109
- type: {
110
- type: String as PropType<"button" | "submit" | "reset">,
111
- default: "button",
112
- },
113
- size: {
114
- type: String as PropType<"xs" | "sm" | "md" | "lg">,
115
- default: "md",
116
- },
117
- activeColor: {
118
- type: String as PropType<
119
- | "danger"
120
- | "success"
121
- | "black"
122
- | "white"
123
- | "purple"
124
- | "secondary"
125
- | "tertiary"
126
- >,
127
- default: "white",
128
- },
129
- iconType: {
130
- type: String as PropType<"startIcon" | "endIcon" | "icon">,
131
- default: "",
132
- },
133
- icon: {
134
- type: [String, Object, Function],
135
- default: "",
136
- },
137
- rounded: {
138
- type: Boolean,
139
- default: false,
140
- },
141
- loading: Boolean,
142
- disabled: Boolean,
143
- });
144
-
145
- defineOptions({
146
- inheritAttrs: false,
147
- });
148
- const attrs = useAttrs();
149
- const buttonAttrs = computed(() => {
150
- const { class: _class, style: _style, id: _id, ...rest } = attrs;
151
- return rest;
152
- });
153
-
154
- const emit = defineEmits<{
155
- (event: "update:activeButton", activeButton: Item): void;
156
- }>();
157
-
158
- const navIndicator = ref<HTMLElement | null>(null);
159
- const navContainer = ref<HTMLElement | null>(null);
160
-
161
- const { items, defaultActive } = toRefs(props);
162
- const activeBtnName = ref(defaultActive.value || items.value[0]?.name || "");
163
-
164
- const marker = (el: HTMLElement) => {
165
- const indicator = navIndicator.value;
166
- if (indicator && el) {
167
- indicator.style.left = el.offsetLeft + "px";
168
- indicator.style.width = el.offsetWidth + "px";
169
- }
170
- };
171
-
172
- const updateMarkerPosition = () => {
173
- const activeBtn = navContainer.value?.querySelector(
174
- `button[data-name="${activeBtnName.value}"]`
175
- );
176
- if (activeBtn) {
177
- marker(activeBtn as HTMLElement);
178
- }
179
- };
180
-
181
- const handleOnChange = (val: any) => {
182
- activeBtnName.value = val?.name;
183
- emit("update:activeButton", val);
184
- nextTick(() => {
185
- updateMarkerPosition();
186
- });
187
- };
188
-
189
- onMounted(() => {
190
- nextTick(() => {
191
- requestAnimationFrame(() => {
192
- updateMarkerPosition();
193
- });
194
- });
195
- });
196
-
197
- // Computed classes for button size
198
- const sizeClasses = reactive({
199
- xs: "text-xs font-medium leading-[normal]", //24
200
- sm: "text-sm font-medium", //32
201
- md: "text-base font-semibold", //40
202
- lg: "text-base font-semibold", //48
203
- });
204
-
205
- const btnColors = {
206
- black: {
207
- enabled:
208
- "text-white bg-gray-900 hover:bg-gray-800 active:bg-black cursor-pointer active:shadow-black/50",
209
- disabled: "bg-opacity-60 cursor-not-allowed text-gray-200 bg-gray-800",
210
- },
211
- white: {
212
- enabled:
213
- "bg-white hover:bg-gray-100 text-gray-500 hover:text-gray-900 cursor-pointer active:shadow-white/50 active:bg-transparent",
214
- disabled: "bg-opacity-80 cursor-not-allowed text-gray-400 bg-gray-200",
215
- },
216
- danger: {
217
- enabled:
218
- "bg-red-500 hover:bg-red-600 active:bg-red-500 text-white cursor-pointer active:shadow-red-500/50",
219
- disabled: "bg-opacity-60 cursor-not-allowed text-gray-200 bg-red-500",
220
- },
221
- success: {
222
- enabled:
223
- "bg-green-600 hover:bg-green-700 active:bg-green-600 text-white cursor-pointer active:shadow-green-500/50",
224
- disabled: "bg-opacity-60 cursor-not-allowed text-gray-200 bg-green-600",
225
- },
226
- purple: {
227
- enabled:
228
- "bg-purple-700 hover:bg-purple-800 active:bg-purple-700 text-white cursor-pointer active:shadow-purple-500/50",
229
- disabled: "bg-opacity-60 cursor-not-allowed text-gray-200 bg-purple-500",
230
- },
231
- secondary: {
232
- enabled:
233
- "bg-purple-100 hover:bg-purple-50 active:bg-purple-100 cursor-pointer text-gray-700 active:shadow-purple-200",
234
- disabled: "bg-opacity-75 cursor-not-allowed text-gray-400 bg-purple-50",
235
- },
236
- tertiary: {
237
- enabled:
238
- "bg-gray-100 hover:bg-gray-50 active:bg-gray-100 text-gray-700 cursor-pointer active:shadow-bg-gray-200/50 ring-1 ring-gray-200",
239
- disabled:
240
- "bg-opacity-75 cursor-not-allowed text-gray-400 bg-gray-50 ring-1 ring-gray-100",
241
- },
242
- };
243
-
244
- const iconClasses = {
245
- lg: props.iconType === "icon" ? "p-3" : "px-6 py-3",
246
- md: props.iconType === "icon" ? "p-2" : "px-4 py-2",
247
- sm: props.iconType === "icon" ? "p-1.5" : "px-4 py-1.5",
248
- xs: props.iconType === "icon" ? "p-1" : "px-3 py-1",
249
- };
250
-
251
- const iconWidthClasses = reactive({
252
- xs: "w-4 h-4 text-current",
253
- sm: "w-5 h-5 text-current",
254
- md: "w-6 h-6 text-current",
255
- lg: "w-6 h-6 text-current",
256
- });
257
-
258
- const iconWidth = computed(() => {
259
- return iconWidthClasses[props.size] || "";
260
- });
261
-
262
- const getBtnClass = (btnName: string) => {
263
- const isActive = btnName === activeBtnName.value;
264
- const colorKey = isActive ? props.activeColor : "white";
265
- const state = props.disabled ? "disabled" : "enabled";
266
- const colorClass = btnColors[colorKey] ? btnColors[colorKey][state] : "";
267
- const sizeClass = sizeClasses[props.size] || "";
268
- const typeClass = iconClasses[props.size] || "";
269
- return `${colorClass} ${sizeClass} ${typeClass}`;
270
- };
271
- </script>
272
-
273
- <style lang="scss" scoped>
274
- .bar-indicator {
275
- @apply relative;
276
- &::before {
277
- content: "";
278
- transition: 0.4s;
279
- will-change: opacity;
280
- @apply absolute -bottom-4 left-0 w-full h-[0.1875rem] rounded-t-xl bg-gray-300 z-[-1] origin-bottom opacity-0;
281
- }
282
- }
283
-
284
- .bar-indicator:hover::before {
285
- @apply opacity-100 -bottom-2;
286
- }
287
- </style>
@@ -1,74 +0,0 @@
1
- <template>
2
- <div class="inline-flex flex-col items-end w-full space-y-20">
3
- <div
4
- class="inline-flex items-center gap-2 px-3 py-3 transition-colors duration-100 ease-in bg-white rounded-full shadow-xl w-max shadow-purple-50"
5
- >
6
- <slot name="before" />
7
- <nav class="relative inline-flex flex-row items-center gap-2">
8
- <div id="nav-indicator"></div>
9
- <EUIBtnGroup
10
- v-for="(data, index) in allDays"
11
- :key="`data-${index}`"
12
- size="sm"
13
- :data-name="data.name"
14
- :color="activeDays === data.name ? 'tertiary' : 'white'"
15
- rounded
16
- @click="handleOnChange(data.name)"
17
- >
18
- {{ data.name }}
19
- <small class="opacity-75">({{ data.count }})</small></EUIBtnGroup
20
- >
21
- </nav>
22
- <slot name="after" />
23
- </div>
24
- </div>
25
- </template>
26
-
27
- <script setup lang="ts">
28
- import { nextTick, onMounted, ref } from "vue";
29
- import EUIBtnGroup from "./EUIBtnGroup.vue";
30
-
31
- const allDays = ref([
32
- { name: "7 days", count: 5 },
33
- { name: "15 days", count: 10 },
34
- { name: "16-30 days", count: 20 },
35
- { name: "31-60 days", count: 121 },
36
- { name: "61-90 days", count: 40 },
37
- ]);
38
-
39
- const activeDays = ref(allDays.value[0].name);
40
-
41
- onMounted(() => {
42
- nextTick(() => {
43
- const activeBtn = document.querySelector(
44
- `nav button[data-name="${activeDays.value}"]`
45
- );
46
- if (activeBtn) marker(activeBtn as HTMLElement);
47
- });
48
- });
49
-
50
- const marker = (el: HTMLElement) => {
51
- const indicator = document.querySelector("#nav-indicator") as HTMLElement;
52
- if (indicator && el) {
53
- indicator.style.left = el.offsetLeft + "px";
54
- indicator.style.width = el.offsetWidth + "px";
55
- }
56
- };
57
-
58
- const handleOnChange = (val: string) => {
59
- activeDays.value = val;
60
- nextTick(() => {
61
- const activeBtn = document.querySelector(
62
- `nav button[data-name="${activeDays.value}"]`
63
- );
64
- if (activeBtn) marker(activeBtn as HTMLElement);
65
- });
66
- };
67
- </script>
68
-
69
- <style lang="scss" scoped>
70
- #nav-indicator {
71
- transition: all 350ms cubic-bezier(0.15, 0.3, 0.25, 1);
72
- @apply absolute w-auto h-1 bg-gray-500 rounded-t-lg -bottom-3;
73
- }
74
- </style>
@@ -1,110 +0,0 @@
1
- <template>
2
- <div>
3
- <label class="flex flex-row items-center scale-100 translate-x-0 translate-y-0 eui-checkbox">
4
- <input v-model="isChecked" type="checkbox" id="checkbox" class="appearance-none sr-only input-checkbox" :disabled="disabled"
5
- @change="toggle($event)" />
6
- <div class="cbx-icon" for="checkbox">
7
- <span>
8
- <svg width="14px" height="14px">
9
- <use xlink:href="#check-box"></use>
10
- </svg>
11
- </span>
12
- <svg class="absolute pointer-events-none select-none inline-svg size-0">
13
- <symbol id="check-box" viewbox="0 0 14 14">
14
- <polyline points="1.5 6 4.5 9 10.5 1"></polyline>
15
- </symbol>
16
- </svg>
17
- </div>
18
- <slot name="label">
19
- <span v-if="label" class="text-sm font-medium tracking-wide text-gray-700 ms-2 first-letter:capitalize">{{ label }}</span>
20
- </slot>
21
- </label>
22
- <template v-if="errors && Object.keys(errors).length">
23
- <EUIErrorMessage :errors="errors" :name="name" />
24
- </template>
25
- </div>
26
- </template>
27
-
28
- <script setup lang="ts">
29
- import { PropType, watch,ref } from "vue";
30
- import EUIErrorMessage from "../errorMessage/EUIErrorMessage.vue";
31
-
32
- const props = defineProps({
33
- errors: { type: Object, required: false, default: () => {} },
34
- name: {
35
- type: String,
36
- required: false,
37
- default: "",
38
- },
39
- modelValue: {
40
- type: Boolean as PropType<boolean>,
41
- required: true,
42
- default: false,
43
- },
44
- disabled: {
45
- type: Boolean,
46
- default: false,
47
- },
48
- label: { type: String as PropType<string>, required: true, default: "" },
49
- });
50
-
51
- const emit = defineEmits(["update:modelValue", "toggle"]);
52
- const isChecked = ref<boolean>(props.modelValue);
53
-
54
- watch(isChecked, (newValue) => {
55
- emit("update:modelValue", newValue);
56
- });
57
-
58
- const toggle = ($event: Event) => {
59
- if($event) {
60
- emit("toggle", isChecked.value);
61
- }
62
- };
63
-
64
- watch(props, (newValue) => {
65
- isChecked.value = newValue.modelValue;
66
- });
67
- </script>
68
-
69
- <style lang="scss">
70
- .eui-checkbox .cbx-icon {
71
- transition: all 0.2s ease;
72
- @apply select-none cursor-pointer p-px rounded-md overflow-hidden inline-block scale-110;
73
- }
74
-
75
- .eui-checkbox .cbx-icon span {
76
- transform: translate3d(0, 0, 0);
77
- transition: all 0.2s ease;
78
- @apply float-left align-middle relative size-5 border-[1.5px] border-gray-400 rounded scale-100;
79
- }
80
-
81
- .eui-checkbox .cbx-icon span > svg {
82
- top: 3.5px;
83
- left: 2.5px;
84
- stroke-width: 1.75;
85
- stroke-linecap: round;
86
- stroke-linejoin: round;
87
- stroke-dasharray: 18px;
88
- stroke-dashoffset: 18px;
89
- transition: all 0.3s ease;
90
- transition-delay: 0.1s;
91
- transform: translate3d(0, 0, 0);
92
- @apply absolute fill-none stroke-white;
93
- }
94
-
95
- .eui-checkbox .input-checkbox:checked + .cbx-icon > span {
96
- animation: anim 0.4s ease;
97
- @apply bg-purple-700 border-purple-700;
98
- }
99
-
100
- .eui-checkbox .input-checkbox:checked + .cbx-icon span > svg {
101
- stroke-dashoffset: 0;
102
- transition: rotate(8deg);
103
- }
104
-
105
- @keyframes anim {
106
- 50% {
107
- transform: scale(0.85);
108
- }
109
- }
110
- </style>