nuxt-glorious 0.7.9-7

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 (62) hide show
  1. package/README.md +29 -0
  2. package/dist/module.cjs +5 -0
  3. package/dist/module.d.mts +7 -0
  4. package/dist/module.d.ts +7 -0
  5. package/dist/module.json +5 -0
  6. package/dist/module.mjs +93 -0
  7. package/dist/runtime/assets/icons/glorious-arrow.svg +3 -0
  8. package/dist/runtime/assets/icons/glorious-check-fill.svg +10 -0
  9. package/dist/runtime/assets/icons/glorious-x.svg +3 -0
  10. package/dist/runtime/assets/style/components/buttons.css +88 -0
  11. package/dist/runtime/assets/style/components/drawer.css +55 -0
  12. package/dist/runtime/assets/style/components/dropdown.css +18 -0
  13. package/dist/runtime/assets/style/components/editor.css +4 -0
  14. package/dist/runtime/assets/style/components/file.css +65 -0
  15. package/dist/runtime/assets/style/components/input.css +91 -0
  16. package/dist/runtime/assets/style/components/modal.css +46 -0
  17. package/dist/runtime/assets/style/components/paginate.css +17 -0
  18. package/dist/runtime/assets/style/components/select.css +54 -0
  19. package/dist/runtime/assets/style/components/tab.css +9 -0
  20. package/dist/runtime/assets/style/components/textarea.css +64 -0
  21. package/dist/runtime/components/G/Breadcrump.vue +41 -0
  22. package/dist/runtime/components/G/Button.vue +163 -0
  23. package/dist/runtime/components/G/CountDown.vue +65 -0
  24. package/dist/runtime/components/G/Drawer.vue +80 -0
  25. package/dist/runtime/components/G/Dropdown.vue +63 -0
  26. package/dist/runtime/components/G/File.vue +142 -0
  27. package/dist/runtime/components/G/Icon/index.vue +142 -0
  28. package/dist/runtime/components/G/Input.vue +269 -0
  29. package/dist/runtime/components/G/IntersectionObserve.vue +22 -0
  30. package/dist/runtime/components/G/Loading.vue +35 -0
  31. package/dist/runtime/components/G/Modal.vue +92 -0
  32. package/dist/runtime/components/G/Paginate.vue +130 -0
  33. package/dist/runtime/components/G/Radio.vue +38 -0
  34. package/dist/runtime/components/G/Select.vue +145 -0
  35. package/dist/runtime/components/G/Tab.vue +57 -0
  36. package/dist/runtime/components/G/Wizard.vue +123 -0
  37. package/dist/runtime/components/G/textarea.vue +141 -0
  38. package/dist/runtime/composables/useGloriousAppSetting.d.ts +11 -0
  39. package/dist/runtime/composables/useGloriousAppSetting.mjs +37 -0
  40. package/dist/runtime/composables/useGloriousFetch.d.ts +13 -0
  41. package/dist/runtime/composables/useGloriousFetch.mjs +107 -0
  42. package/dist/runtime/composables/useGloriousHead.d.ts +8 -0
  43. package/dist/runtime/composables/useGloriousHead.mjs +33 -0
  44. package/dist/runtime/middlewares/Auth.d.ts +2 -0
  45. package/dist/runtime/middlewares/Auth.mjs +37 -0
  46. package/dist/runtime/middlewares/AuthStrategy.d.ts +2 -0
  47. package/dist/runtime/middlewares/AuthStrategy.mjs +17 -0
  48. package/dist/runtime/plugins/Drawer.d.ts +2 -0
  49. package/dist/runtime/plugins/Drawer.mjs +35 -0
  50. package/dist/runtime/plugins/Modal.d.ts +2 -0
  51. package/dist/runtime/plugins/Modal.mjs +38 -0
  52. package/dist/runtime/plugins/TailwindColor.d.ts +6 -0
  53. package/dist/runtime/plugins/TailwindColor.mjs +10 -0
  54. package/dist/runtime/plugins/glorious-app-setting.d.ts +2 -0
  55. package/dist/runtime/plugins/glorious-app-setting.mjs +11 -0
  56. package/dist/runtime/plugins/shortcut-key.d.ts +2 -0
  57. package/dist/runtime/plugins/shortcut-key.mjs +11 -0
  58. package/dist/runtime/stores/GloriousStore.d.ts +9 -0
  59. package/dist/runtime/stores/GloriousStore.mjs +88 -0
  60. package/dist/types.d.mts +16 -0
  61. package/dist/types.d.ts +16 -0
  62. package/package.json +53 -0
@@ -0,0 +1,64 @@
1
+ .xl.glorious-textarea-orange, .xl.glorious-textarea-blue, .xl.glorious-textarea-gray, .xl.glorious-textarea-red, .xl.glorious-textarea-primary {
2
+ @apply py-2.5;
3
+ }
4
+ .lg.glorious-textarea-orange, .lg.glorious-textarea-blue, .lg.glorious-textarea-gray, .lg.glorious-textarea-red, .lg.glorious-textarea-primary {
5
+ @apply py-2;
6
+ }
7
+ .md.glorious-textarea-orange, .md.glorious-textarea-blue, .md.glorious-textarea-gray, .md.glorious-textarea-red, .md.glorious-textarea-primary {
8
+ @apply py-1.5;
9
+ }
10
+ .sm.glorious-textarea-orange, .sm.glorious-textarea-blue, .sm.glorious-textarea-gray, .sm.glorious-textarea-red, .sm.glorious-textarea-primary {
11
+ @apply py-1;
12
+ }
13
+ .xsm.glorious-textarea-orange, .xsm.glorious-textarea-blue, .xsm.glorious-textarea-gray, .xsm.glorious-textarea-red, .xsm.glorious-textarea-primary {
14
+ @apply py-0.5;
15
+ }
16
+
17
+ .glorious-textarea-orange:focus-visible, .glorious-textarea-blue:focus-visible, .glorious-textarea-gray:focus-visible, .glorious-textarea-red:focus-visible, .glorious-textarea-primary:focus-visible {
18
+ @apply outline-none ring-2;
19
+ }
20
+
21
+ .glorious-textarea-primary {
22
+ @apply rounded-md ring-1 ring-green-500 px-3;
23
+ }
24
+ .glorious-textarea-primary:disabled {
25
+ @apply bg-green-300 cursor-not-allowed;
26
+ }
27
+
28
+ .glorious-textarea-red {
29
+ @apply rounded-md ring-1 ring-red-500 px-3;
30
+ }
31
+ .glorious-textarea-red:disabled {
32
+ @apply cursor-not-allowed;
33
+ }
34
+
35
+ .glorious-textarea-gray {
36
+ @apply rounded-md ring-1 ring-gray-500 px-3;
37
+ }
38
+ .glorious-textarea-gray:disabled {
39
+ @apply cursor-not-allowed;
40
+ }
41
+
42
+ .glorious-textarea-blue {
43
+ @apply rounded-md ring-1 ring-blue-500 px-3;
44
+ }
45
+ .glorious-textarea-blue:disabled {
46
+ @apply cursor-not-allowed;
47
+ }
48
+
49
+ .glorious-textarea-orange {
50
+ @apply rounded-md ring-1 ring-orange-500 px-3;
51
+ }
52
+ .glorious-textarea-orange:disabled {
53
+ @apply cursor-not-allowed;
54
+ }
55
+
56
+ .glorious-textarea {
57
+ @apply relative w-full;
58
+ }
59
+ .glorious-textarea > textarea {
60
+ @apply w-full;
61
+ }
62
+ .glorious-textarea > textarea::placeholder {
63
+ @apply text-[14px];
64
+ }
@@ -0,0 +1,41 @@
1
+ <script lang="ts" setup>
2
+ const props = defineProps({
3
+ items: {
4
+ required: true,
5
+ type: Object,
6
+ },
7
+ });
8
+ </script>
9
+
10
+ <template>
11
+ <div class="flex gap-1 flex-wrap">
12
+ <div
13
+ v-for="(item, key, index) in props.items"
14
+ :key="index"
15
+ class="flex items-center gap-1 flex-wrap"
16
+ >
17
+ <nuxt-link
18
+ v-if="index !== Object.entries(props.items).length - 1"
19
+ :to="key"
20
+ class="text-gray-500 hover:text-gray-800"
21
+ >
22
+ {{ item }}
23
+ </nuxt-link>
24
+
25
+ <span
26
+ v-if="index === Object.entries(props.items).length - 1"
27
+ class="text-gray-600 font-medium"
28
+ >
29
+ {{ item }}
30
+ </span>
31
+
32
+ <GIcon
33
+ v-if="index !== Object.entries(props.items).length - 1"
34
+ name="glorious-arrow"
35
+ style="rotate: 180deg"
36
+ :size="10"
37
+ color="#6b7280"
38
+ />
39
+ </div>
40
+ </div>
41
+ </template>
@@ -0,0 +1,163 @@
1
+ <script lang="ts" setup>
2
+ const props = defineProps({
3
+ color: {
4
+ required: false,
5
+ default: "primary",
6
+ type: String,
7
+ },
8
+ size: {
9
+ required: false,
10
+ default: "md",
11
+ type: String,
12
+ },
13
+ outline: {
14
+ required: false,
15
+ default: false,
16
+ type: Boolean,
17
+ },
18
+ disabled: {
19
+ required: false,
20
+ default: false,
21
+ type: Boolean,
22
+ },
23
+ loading: {
24
+ requried: false,
25
+ default: false,
26
+ type: Boolean,
27
+ },
28
+ to: {
29
+ requried: false,
30
+ default: "",
31
+ type: String,
32
+ },
33
+ ariaLabel: {
34
+ requried: false,
35
+ default: "",
36
+ type: String,
37
+ },
38
+ });
39
+ </script>
40
+
41
+ <template>
42
+ <button
43
+ v-if="props.to === ''"
44
+ :aria-label="props.ariaLabel"
45
+ :class="[
46
+ `glorious-button-${props.color}`,
47
+ props.size,
48
+ props.outline ? 'outline' : '',
49
+ ]"
50
+ :disabled="props.disabled"
51
+ >
52
+ <div v-if="props.loading" class="loading">
53
+ <GLoading />
54
+ </div>
55
+ <slot v-else />
56
+ </button>
57
+ <NuxtLink
58
+ v-else
59
+ :to="props.to"
60
+ :class="[
61
+ `glorious-button-${props.color}`,
62
+ props.size,
63
+ props.outline ? 'outline' : '',
64
+ ]"
65
+ :disabled="props.disabled"
66
+ >
67
+ <div v-if="props.loading" class="loading">
68
+ <GLoading />
69
+ </div>
70
+ <slot v-else />
71
+ </NuxtLink>
72
+ </template>
73
+
74
+ <style>
75
+ .xl.glorious-button-orange, .xl.glorious-button-blue, .xl.glorious-button-gray, .xl.glorious-button-red, .xl.glorious-button-primary {
76
+ @apply py-2.5;
77
+ }
78
+ .xl.glorious-button-orange > div.loading > div > div, .xl.glorious-button-blue > div.loading > div > div, .xl.glorious-button-gray > div.loading > div > div, .xl.glorious-button-red > div.loading > div > div, .xl.glorious-button-primary > div.loading > div > div {
79
+ @apply w-[24px] !important;
80
+ }
81
+ .lg.glorious-button-orange, .lg.glorious-button-blue, .lg.glorious-button-gray, .lg.glorious-button-red, .lg.glorious-button-primary {
82
+ @apply py-2;
83
+ }
84
+ .lg.glorious-button-orange > div.loading > div > div, .lg.glorious-button-blue > div.loading > div > div, .lg.glorious-button-gray > div.loading > div > div, .lg.glorious-button-red > div.loading > div > div, .lg.glorious-button-primary > div.loading > div > div {
85
+ @apply w-[24px] !important;
86
+ }
87
+ .md.glorious-button-orange, .md.glorious-button-blue, .md.glorious-button-gray, .md.glorious-button-red, .md.glorious-button-primary {
88
+ @apply py-1.5;
89
+ }
90
+ .md.glorious-button-orange > div.loading > div > div, .md.glorious-button-blue > div.loading > div > div, .md.glorious-button-gray > div.loading > div > div, .md.glorious-button-red > div.loading > div > div, .md.glorious-button-primary > div.loading > div > div {
91
+ @apply w-[24px] !important;
92
+ }
93
+ .sm.glorious-button-orange, .sm.glorious-button-blue, .sm.glorious-button-gray, .sm.glorious-button-red, .sm.glorious-button-primary {
94
+ @apply py-1;
95
+ }
96
+ .sm.glorious-button-orange > div.loading > div > div, .sm.glorious-button-blue > div.loading > div > div, .sm.glorious-button-gray > div.loading > div > div, .sm.glorious-button-red > div.loading > div > div, .sm.glorious-button-primary > div.loading > div > div {
97
+ @apply w-[24px] !important;
98
+ }
99
+ .xsm.glorious-button-orange, .xsm.glorious-button-blue, .xsm.glorious-button-gray, .xsm.glorious-button-red, .xsm.glorious-button-primary {
100
+ @apply py-0.5;
101
+ }
102
+ .xsm.glorious-button-orange > div.loading > div > div, .xsm.glorious-button-blue > div.loading > div > div, .xsm.glorious-button-gray > div.loading > div > div, .xsm.glorious-button-red > div.loading > div > div, .xsm.glorious-button-primary > div.loading > div > div {
103
+ @apply w-[24px] !important;
104
+ }
105
+
106
+ .outline.glorious-button-orange, .outline.glorious-button-blue, .outline.glorious-button-gray, .outline.glorious-button-red, .outline.glorious-button-primary {
107
+ @apply bg-transparent border outline-none;
108
+ }
109
+
110
+ .glorious-button-orange > div.loading, .glorious-button-blue > div.loading, .glorious-button-gray > div.loading, .glorious-button-red > div.loading, .glorious-button-primary > div.loading {
111
+ @apply flex justify-center items-center;
112
+ }
113
+
114
+ .glorious-button-primary {
115
+ @apply bg-green-700 hover:bg-green-600 rounded-md text-white border-green-500 px-3;
116
+ }
117
+ .glorious-button-primary.outline {
118
+ @apply text-gray-500 hover:bg-green-100;
119
+ }
120
+ .glorious-button-primary:disabled {
121
+ @apply bg-green-300 cursor-not-allowed;
122
+ }
123
+
124
+ .glorious-button-red {
125
+ @apply bg-red-500 hover:bg-red-600 rounded-md text-white border-red-500 px-3;
126
+ }
127
+ .glorious-button-red.outline {
128
+ @apply text-gray-500 hover:bg-red-100;
129
+ }
130
+ .glorious-button-red:disabled {
131
+ @apply bg-red-300 cursor-not-allowed;
132
+ }
133
+
134
+ .glorious-button-gray {
135
+ @apply bg-gray-500 hover:bg-gray-600 rounded-md text-white border-gray-500 px-3;
136
+ }
137
+ .glorious-button-gray.outline {
138
+ @apply text-gray-500 hover:bg-gray-100;
139
+ }
140
+ .glorious-button-gray:disabled {
141
+ @apply bg-gray-300 cursor-not-allowed;
142
+ }
143
+
144
+ .glorious-button-blue {
145
+ @apply bg-blue-500 hover:bg-blue-600 rounded-md text-white border-blue-500 px-3;
146
+ }
147
+ .glorious-button-blue.outline {
148
+ @apply text-gray-500 hover:bg-blue-100;
149
+ }
150
+ .glorious-button-blue:disabled {
151
+ @apply bg-blue-300 cursor-not-allowed;
152
+ }
153
+
154
+ .glorious-button-orange {
155
+ @apply bg-orange-500 hover:bg-orange-600 rounded-md text-white border-orange-500 px-3;
156
+ }
157
+ .glorious-button-orange.outline {
158
+ @apply text-gray-500 hover:bg-orange-100;
159
+ }
160
+ .glorious-button-orange:disabled {
161
+ @apply bg-orange-300 cursor-not-allowed;
162
+ }
163
+ </style>
@@ -0,0 +1,65 @@
1
+ <script lang="ts" setup>
2
+ import { onMounted, ref } from "#imports";
3
+
4
+ const isEnd = ref<Boolean>(false);
5
+ const props = defineProps({
6
+ second: {
7
+ required: true,
8
+ type: Number,
9
+ },
10
+ className: {
11
+ required: true,
12
+ type: String,
13
+ default: "flex text-gray-500 font-medium",
14
+ },
15
+ });
16
+
17
+ onMounted(() => {
18
+ const currentSecond = props.second;
19
+ let second = props.second;
20
+ const countInterval = setInterval(() => {
21
+ try {
22
+ second--;
23
+ let timeString = "";
24
+
25
+ if (currentSecond <= 60)
26
+ timeString =
27
+ "00:" + (second.toString().length === 1 ? "0" + second : second);
28
+ else {
29
+ let minute: number | string = Math.floor(second / 60);
30
+ if (minute >= 1) {
31
+ const computeSecond = second - minute * 60;
32
+ const computeSecond2 =
33
+ computeSecond.toString().length === 1
34
+ ? "0" + computeSecond
35
+ : computeSecond;
36
+ minute = minute.toString().length === 1 ? "0" + minute : minute;
37
+ timeString = minute + ":" + computeSecond2;
38
+ } else {
39
+ timeString =
40
+ "00:" + (second.toString().length === 1 ? "0" + second : second);
41
+ }
42
+ }
43
+
44
+ document.getElementById("countDown").innerText = timeString;
45
+
46
+ if (second === 0) {
47
+ isEnd.value = true;
48
+ clearInterval(countInterval);
49
+ }
50
+ } catch (e) {
51
+ clearInterval(countInterval);
52
+ }
53
+ }, 1000);
54
+ });
55
+ </script>
56
+ <template>
57
+ <div>
58
+ <slot v-if="isEnd" name="end" />
59
+ <div v-else :class="props.className">
60
+ <slot name="one"></slot>
61
+ <div id="countDown" />
62
+ <slot name="two"></slot>
63
+ </div>
64
+ </div>
65
+ </template>
@@ -0,0 +1,80 @@
1
+ <script lang="ts" setup>
2
+ import { useGloriousAppSetting } from "../../composables/useGloriousAppSetting";
3
+
4
+ const props = defineProps({
5
+ id: {
6
+ required: false,
7
+ default: "drawer",
8
+ type: String,
9
+ },
10
+ });
11
+ </script>
12
+ <template>
13
+ <div
14
+ :id="props.id"
15
+ :class="[useGloriousAppSetting.getSetting().dir]"
16
+ class="drawer close hidden"
17
+ >
18
+ <div class="w-full">
19
+ <slot></slot>
20
+ </div>
21
+ </div>
22
+ </template>
23
+
24
+ <style>
25
+ .bg-blur-drawer {
26
+ @apply fixed top-0 right-0 backdrop-blur-sm bg-gray-500 bg-opacity-50 h-full w-full z-[40];
27
+ }
28
+
29
+ .drawer {
30
+ @apply fixed top-0 bg-white h-full w-[300px] z-[50];
31
+ }
32
+ .drawer.close.rtl {
33
+ animation: drawer-close-right 250ms normal forwards;
34
+ }
35
+ .drawer.close.ltr {
36
+ animation: drawer-close-left 250ms normal forwards;
37
+ }
38
+ .drawer.open {
39
+ @apply flex;
40
+ }
41
+ .drawer.open.rtl {
42
+ animation: drawer-open-right 100ms normal forwards;
43
+ }
44
+ .drawer.open.ltr {
45
+ animation: drawer-open-left 100ms normal forwards;
46
+ }
47
+
48
+ @keyframes drawer-open-left {
49
+ from {
50
+ @apply left-[-300px];
51
+ }
52
+ to {
53
+ @apply left-0;
54
+ }
55
+ }
56
+ @keyframes drawer-open-right {
57
+ from {
58
+ @apply right-[-300px];
59
+ }
60
+ to {
61
+ @apply right-0;
62
+ }
63
+ }
64
+ @keyframes drawer-close-right {
65
+ from {
66
+ @apply right-0;
67
+ }
68
+ to {
69
+ @apply right-[-300px] hidden;
70
+ }
71
+ }
72
+ @keyframes drawer-close-left {
73
+ from {
74
+ @apply left-0;
75
+ }
76
+ to {
77
+ @apply left-[-300px] hidden;
78
+ }
79
+ }
80
+ </style>
@@ -0,0 +1,63 @@
1
+ <script lang="ts" setup>
2
+ import { onMounted } from "#imports";
3
+
4
+ const props = defineProps({
5
+ icon: {
6
+ required: false,
7
+ default: "",
8
+ type: String,
9
+ },
10
+ });
11
+
12
+ const openDropdown = (event: any) =>
13
+ event.currentTarget.parentElement.parentElement.classList.toggle("open");
14
+
15
+ onMounted(() => {
16
+ window.onclick = (event: any) => {
17
+ if (!event.target.matches(".glorious-dropdown-button")) {
18
+ const allDropdown = document.querySelectorAll(".glorious-dropdown");
19
+ allDropdown.forEach((item: any) => {
20
+ item.classList.remove("open");
21
+ });
22
+ }
23
+ };
24
+ });
25
+ </script>
26
+ <template>
27
+ <div class="glorious-dropdown">
28
+ <div>
29
+ <button
30
+ aria-label="dots"
31
+ class="glorious-dropdown-button"
32
+ @click.prevent="openDropdown($event)"
33
+ >
34
+ &nbsp;
35
+ </button>
36
+ <GIcon :name="props.icon" :color="$tailwindColor('gray', '500')" />
37
+ </div>
38
+ <div>
39
+ <slot />
40
+ </div>
41
+ </div>
42
+ </template>
43
+
44
+ <style>
45
+ .glorious-dropdown {
46
+ @apply relative;
47
+ }
48
+ .glorious-dropdown > div:last-child {
49
+ @apply hidden;
50
+ }
51
+ .glorious-dropdown > div:first-child {
52
+ @apply relative;
53
+ }
54
+ .glorious-dropdown > div:first-child > button {
55
+ @apply z-[30] w-5 relative;
56
+ }
57
+ .glorious-dropdown > div:first-child > div:nth-child(2) {
58
+ @apply absolute top-0 bottom-0 my-auto z-[20];
59
+ }
60
+ .glorious-dropdown.open > div:last-child {
61
+ @apply bg-white px-2 py-2 rounded-md shadow absolute z-[41] left-[16px] top-5 flex;
62
+ }
63
+ </style>
@@ -0,0 +1,142 @@
1
+ <script lang="ts" setup>
2
+ import { GloriousStore } from "#imports";
3
+ const props = defineProps({
4
+ modelValue: {
5
+ required: false,
6
+ default: "",
7
+ type: String,
8
+ },
9
+ color: {
10
+ required: false,
11
+ default: "primary",
12
+ type: String,
13
+ },
14
+ placeholder: {
15
+ required: false,
16
+ default: "",
17
+ type: String,
18
+ },
19
+ title: {
20
+ required: false,
21
+ default: "",
22
+ type: String,
23
+ },
24
+ size: {
25
+ required: false,
26
+ default: "md",
27
+ type: String,
28
+ },
29
+ error: {
30
+ required: false,
31
+ default: "|",
32
+ type: String,
33
+ },
34
+ });
35
+ const gs: any = GloriousStore();
36
+ const error: any = props.error.split("|");
37
+ const emits = defineEmits(["update:modelValue"]);
38
+
39
+ const changeInput = (event: any) => {
40
+ if (!event.target.files[0]) return;
41
+ emits("update:modelValue", event.target.files[0]);
42
+ event.target.nextElementSibling.innerText = event.target.files[0].name;
43
+ event.target.nextElementSibling.nextElementSibling.style.display = "flex";
44
+ };
45
+ const deleteFile = (event: any) => {
46
+ event.currentTarget.style.display = "none";
47
+ event.currentTarget.previousElementSibling.innerText =
48
+ "فایلی انتخاب نشده است";
49
+ emits("update:modelValue", null);
50
+ };
51
+ </script>
52
+ <template>
53
+ <div class="flex flex-col">
54
+ <span class="text-[14px] font-medium text-gray-500">{{ props.title }}</span>
55
+ <label
56
+ :class="[`glorious-file-${props.color}`]"
57
+ class="flex items-center gap-3 text-gray-500"
58
+ >
59
+ <div class="placeholder" :class="[props.size]">
60
+ <span>{{ props.placeholder }}</span>
61
+ </div>
62
+ <input type="file" class="hidden" @change="changeInput($event)" />
63
+ <span class="text-[12px]">فایلی انتخاب نشده است</span>
64
+ <GIcon
65
+ name="glorious-x"
66
+ color="#ff0000"
67
+ @click.prevent="deleteFile($event)"
68
+ />
69
+ </label>
70
+ <span v-if="gs.forms[error[0]]?.errors[error[1]]" class="text-red-500">
71
+ {{ gs.forms[error[0]].errors[error[1]][0] }}
72
+ </span>
73
+ </div>
74
+ </template>
75
+
76
+ <style>
77
+ .glorious-file-orange > div.xl.placeholder, .glorious-file-blue > div.xl.placeholder, .glorious-file-gray > div.xl.placeholder, .glorious-file-red > div.xl.placeholder, .glorious-file-primary > div.xl.placeholder {
78
+ @apply py-2.5;
79
+ }
80
+ .glorious-file-orange > div.lg.placeholder, .glorious-file-blue > div.lg.placeholder, .glorious-file-gray > div.lg.placeholder, .glorious-file-red > div.lg.placeholder, .glorious-file-primary > div.lg.placeholder {
81
+ @apply py-2;
82
+ }
83
+ .glorious-file-orange > div.md.placeholder, .glorious-file-blue > div.md.placeholder, .glorious-file-gray > div.md.placeholder, .glorious-file-red > div.md.placeholder, .glorious-file-primary > div.md.placeholder {
84
+ @apply py-1.5;
85
+ }
86
+ .glorious-file-orange > div.sm.placeholder, .glorious-file-blue > div.sm.placeholder, .glorious-file-gray > div.sm.placeholder, .glorious-file-red > div.sm.placeholder, .glorious-file-primary > div.sm.placeholder {
87
+ @apply py-1;
88
+ }
89
+ .glorious-file-orange > div.xsm.placeholder, .glorious-file-blue > div.xsm.placeholder, .glorious-file-gray > div.xsm.placeholder, .glorious-file-red > div.xsm.placeholder, .glorious-file-primary > div.xsm.placeholder {
90
+ @apply py-0.5;
91
+ }
92
+
93
+ .glorious-file-primary {
94
+ @apply rounded-md ring-1 ring-green-500 overflow-hidden cursor-pointer relative;
95
+ }
96
+ .glorious-file-primary > div.placeholder {
97
+ @apply bg-green-500 text-white px-3 w-max;
98
+ }
99
+ .glorious-file-primary > div:last-child {
100
+ @apply absolute left-3 hidden;
101
+ }
102
+
103
+ .glorious-file-red {
104
+ @apply rounded-md ring-1 ring-red-500 px-3 cursor-pointer relative;
105
+ }
106
+ .glorious-file-red > div.placeholder {
107
+ @apply bg-green-500 text-white px-3 w-max;
108
+ }
109
+ .glorious-file-red > div:last-child {
110
+ @apply absolute left-3;
111
+ }
112
+
113
+ .glorious-file-gray {
114
+ @apply rounded-md ring-1 ring-gray-500 px-3 cursor-pointer relative;
115
+ }
116
+ .glorious-file-gray > div.placeholder {
117
+ @apply bg-green-500 text-white px-3 w-max;
118
+ }
119
+ .glorious-file-gray > div:last-child {
120
+ @apply absolute left-3;
121
+ }
122
+
123
+ .glorious-file-blue {
124
+ @apply rounded-md ring-1 ring-blue-500 px-3 cursor-pointer relative;
125
+ }
126
+ .glorious-file-blue > div.placeholder {
127
+ @apply bg-green-500 text-white px-3 w-max;
128
+ }
129
+ .glorious-file-blue > div:last-child {
130
+ @apply absolute left-3;
131
+ }
132
+
133
+ .glorious-file-orange {
134
+ @apply rounded-md ring-1 ring-orange-500 px-3 cursor-pointer relative;
135
+ }
136
+ .glorious-file-orange > div.placeholder {
137
+ @apply bg-green-500 text-white px-3 w-max;
138
+ }
139
+ .glorious-file-orange > div:last-child {
140
+ @apply absolute left-3;
141
+ }
142
+ </style>