@golstats/gsc-reports 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/README.md +2 -0
  2. package/dist/FilterConditions-55d68355-C5NIJbY6-xW04mYhu-DRN4eEO4.js +191 -0
  3. package/dist/FilterField-59a73e38-DO8nYLqs-Da7H_Fvj-ZuLwDGOM.js +21 -0
  4. package/dist/FilterSubcategories-a9b32cc9-DlkHni1L-BXid_sIn-BvoU3OqZ.js +42 -0
  5. package/dist/css/fonts.css +83 -0
  6. package/dist/fonts/BebasNeue-Bold.otf +0 -0
  7. package/dist/fonts/BebasNeue-Bold.ttf +0 -0
  8. package/dist/fonts/BebasNeue-Bold.woff2 +0 -0
  9. package/dist/fonts/BebasNeue-Book.otf +0 -0
  10. package/dist/fonts/BebasNeue-Book.ttf +0 -0
  11. package/dist/fonts/BebasNeue-Book.woff2 +0 -0
  12. package/dist/fonts/BebasNeue-Light.otf +0 -0
  13. package/dist/fonts/BebasNeue-Light.ttf +0 -0
  14. package/dist/fonts/BebasNeue-Light.woff2 +0 -0
  15. package/dist/fonts/BebasNeue-Regular.otf +0 -0
  16. package/dist/fonts/BebasNeue-Regular.ttf +0 -0
  17. package/dist/fonts/BebasNeue-Regular.woff2 +0 -0
  18. package/dist/fonts/BebasNeue-Thin.otf +0 -0
  19. package/dist/fonts/BebasNeue-Thin.ttf +0 -0
  20. package/dist/fonts/BebasNeue-Thin.woff2 +0 -0
  21. package/dist/fonts/Montserrat-Black.otf +0 -0
  22. package/dist/fonts/Montserrat-BlackItalic.otf +0 -0
  23. package/dist/fonts/Montserrat-Bold.otf +0 -0
  24. package/dist/fonts/Montserrat-BoldItalic.otf +0 -0
  25. package/dist/fonts/Montserrat-ExtraBold.otf +0 -0
  26. package/dist/fonts/Montserrat-ExtraBoldItalic.otf +0 -0
  27. package/dist/fonts/Montserrat-ExtraLight.otf +0 -0
  28. package/dist/fonts/Montserrat-ExtraLightItalic.otf +0 -0
  29. package/dist/fonts/Montserrat-Italic.otf +0 -0
  30. package/dist/fonts/Montserrat-Light.otf +0 -0
  31. package/dist/fonts/Montserrat-LightItalic.otf +0 -0
  32. package/dist/fonts/Montserrat-Medium.otf +0 -0
  33. package/dist/fonts/Montserrat-MediumItalic.otf +0 -0
  34. package/dist/fonts/Montserrat-Regular.otf +0 -0
  35. package/dist/fonts/Montserrat-SemiBold.otf +0 -0
  36. package/dist/fonts/Montserrat-SemiBoldItalic.otf +0 -0
  37. package/dist/fonts/Montserrat-Thin.otf +0 -0
  38. package/dist/fonts/Montserrat-ThinItalic.otf +0 -0
  39. package/dist/fonts/Oswald-Bold.ttf +0 -0
  40. package/dist/fonts/Oswald-ExtraLight.ttf +0 -0
  41. package/dist/fonts/Oswald-Light.ttf +0 -0
  42. package/dist/fonts/Oswald-Medium.ttf +0 -0
  43. package/dist/fonts/Oswald-Regular.ttf +0 -0
  44. package/dist/fonts/Oswald-SemiBold.ttf +0 -0
  45. package/dist/fonts/Poppins-Black.otf +0 -0
  46. package/dist/fonts/Poppins-BlackItalic.otf +0 -0
  47. package/dist/fonts/Poppins-Bold.otf +0 -0
  48. package/dist/fonts/Poppins-BoldItalic.otf +0 -0
  49. package/dist/fonts/Poppins-ExtraBold.otf +0 -0
  50. package/dist/fonts/Poppins-ExtraBoldItalic.otf +0 -0
  51. package/dist/fonts/Poppins-ExtraLight.otf +0 -0
  52. package/dist/fonts/Poppins-ExtraLightItalic.otf +0 -0
  53. package/dist/fonts/Poppins-Italic.otf +0 -0
  54. package/dist/fonts/Poppins-Light.otf +0 -0
  55. package/dist/fonts/Poppins-LightItalic.otf +0 -0
  56. package/dist/fonts/Poppins-Medium.otf +0 -0
  57. package/dist/fonts/Poppins-MediumItalic.otf +0 -0
  58. package/dist/fonts/Poppins-Regular.otf +0 -0
  59. package/dist/fonts/Poppins-SemiBold.otf +0 -0
  60. package/dist/fonts/Poppins-SemiBoldItalic.otf +0 -0
  61. package/dist/fonts/Poppins-Thin.otf +0 -0
  62. package/dist/fonts/Poppins-ThinItalic.otf +0 -0
  63. package/dist/gsc-reports.css +1 -0
  64. package/dist/gsc-reports.es.js +4 -0
  65. package/dist/gsc-reports.umd.js +4079 -0
  66. package/dist/icons/icn-close.svg +5 -0
  67. package/dist/icons/icn-delete-delete.svg +3 -0
  68. package/dist/icons/icn-delete.svg +3 -0
  69. package/dist/icons/icn-download.svg +4 -0
  70. package/dist/icons/icn-duplicate-white.svg +11 -0
  71. package/dist/icons/icn-duplicate.svg +11 -0
  72. package/dist/icons/icn-edit.svg +11 -0
  73. package/dist/icons/icn-editar-withe.svg +3 -0
  74. package/dist/icons/icn-rename-white.svg +3 -0
  75. package/dist/icons/icn-rename.svg +3 -0
  76. package/dist/icons/icn-report-white.svg +11 -0
  77. package/dist/icons/icn-report.svg +11 -0
  78. package/dist/images/background-postmatch-template-01.jpg +0 -0
  79. package/dist/images/background-postmatch-template-02.jpg +0 -0
  80. package/dist/images/canchaRPH.svg +30 -0
  81. package/dist/index-B1R4W2EC.js +128151 -0
  82. package/dist/reports/background-postmatch-template-01@2x.jpg +0 -0
  83. package/dist/reports/background-postmatch-template-02@2x.jpg +0 -0
  84. package/dist/reports/thumbnail-portada-01@2x.png +0 -0
  85. package/dist/reports/thumbnail-portada-02@2x.png +0 -0
  86. package/dist/reports/thumbnail-portada-03@2x.png +0 -0
  87. package/dist/reports/thumbnail-portada-04@2x.png +0 -0
  88. package/dist/reports/thumbnail-portada-prmatch-01@2x.png +0 -0
  89. package/dist/reports/thumbnail-portada-prmatch-02@2x.png +0 -0
  90. package/dist/reports/thumbnail-portada-prmatch-03@2x.png +0 -0
  91. package/dist/reports/thumbnail-portada-prmatch-04@2x.png +0 -0
  92. package/dist/thumb1.png +0 -0
  93. package/dist/thumbnail-portada-01.jpg +0 -0
  94. package/dist/thumbnail-portada-02.jpg +0 -0
  95. package/dist/thumbnail-portada-03.jpg +0 -0
  96. package/dist/thumbnail-portada-04.jpg +0 -0
  97. package/dist/thumbnail-portada-prmatch-01.jpg +0 -0
  98. package/dist/thumbnail-portada-prmatch-02.jpg +0 -0
  99. package/dist/thumbnail-portada-prmatch-03.jpg +0 -0
  100. package/dist/thumbnail-portada-prmatch-04.jpg +0 -0
  101. package/package.json +70 -0
  102. package/src/App.vue +28 -0
  103. package/src/components/ReportsSection.vue +764 -0
  104. package/src/components/TemplatesSection.vue +911 -0
  105. package/src/components/elementsTemplates/ModalCreateTemplate.vue +407 -0
  106. package/src/components/elementsTemplates/ModalDeleteReport.vue +231 -0
  107. package/src/components/elementsTemplates/ModalDeleteTemplate.vue +234 -0
  108. package/src/components/elementsTemplates/ModalGenerarReporte.vue +1151 -0
  109. package/src/components/elementsTemplates/ModalRenameReporte.vue +315 -0
  110. package/src/components/elementsTemplates/ModalRenameTemplate.vue +320 -0
  111. package/src/components/elementsTemplates/ModalSoloEscritorio.vue +83 -0
  112. package/src/components/elementsTemplates/ModalduplicateTemplate.vue +283 -0
  113. package/src/components/elementsTemplates/ReportItem.vue +458 -0
  114. package/src/components/elementsTemplates/TemplateItem.vue +360 -0
  115. package/src/components/elementsTemplates/TooltipReportOptions.vue +85 -0
  116. package/src/components/elementsTemplates/TooltipTemplateOptions.vue +141 -0
  117. package/src/components/filters.vue +935 -0
  118. package/src/components/gsc-reports.vue +452 -0
  119. package/src/components/template-report-maker/CoverPage.vue +636 -0
  120. package/src/components/template-report-maker/CoverSelector.vue +165 -0
  121. package/src/components/template-report-maker/ReportAndTemplateMaker.vue +675 -0
  122. package/src/components/template-report-maker/ReportView.vue +66 -0
  123. package/src/components/template-report-maker/TemplateReportPage.vue +398 -0
  124. package/src/components/thumbnails-reports/AnalisisPostMatchType1.vue +741 -0
  125. package/src/components/thumbnails-reports/AnalisisPostMatchType2.vue +743 -0
  126. package/src/components/thumbnails-reports/AnalisisPostMatchType3.vue +463 -0
  127. package/src/components/thumbnails-reports/AnalisisPostMatchType4.vue +462 -0
  128. package/src/components/thumbnails-reports/AnalisisPrematchType1.vue +164 -0
  129. package/src/components/thumbnails-reports/AnalisisPrematchType2.vue +163 -0
  130. package/src/components/thumbnails-reports/AnalisisPrematchType3.vue +173 -0
  131. package/src/components/thumbnails-reports/AnalisisPrematchType4.vue +173 -0
  132. package/src/index.js +4 -0
  133. package/src/main.js +4 -0
  134. package/src/types.d.ts +45 -0
  135. package/src/utils/dateUtils.js +52 -0
@@ -0,0 +1,315 @@
1
+ <template>
2
+ <div class="modal-overlay" @click.self="$emit('close')">
3
+ <div class="modal-content">
4
+ <button class="close-btn" @click="$emit('close')">
5
+ <img src="/icons/icn-close.svg" alt="Cerrar" />
6
+ </button>
7
+ <div class="modal-header">
8
+ <img src="/icons/icn-rename-white.svg" class="icon-title" alt="icon" />
9
+ <span class="modal-title">Renombrar Reporte</span>
10
+ </div>
11
+ <div class="header-separator"></div>
12
+ <div class="modal-body">
13
+ <div class="modal-label">Nombre:</div>
14
+ <input
15
+ class="template-name-input"
16
+ type="text"
17
+ v-model="newName"
18
+ :placeholder="initialName"
19
+ maxlength="40"
20
+ autocomplete="off"
21
+ :disabled="isLoading"
22
+ />
23
+ <div v-if="errorMessage" class="error-message">
24
+ {{ errorMessage }}
25
+ </div>
26
+ </div>
27
+ <div class="header-separator"></div>
28
+ <div class="modal-footer">
29
+ <button class="cancel-btn" @click="$emit('close')" :disabled="isLoading">Cancelar</button>
30
+ <button
31
+ class="next-btn"
32
+ :disabled="newName.trim().length < 3 || isLoading"
33
+ @click="acceptRename"
34
+ >
35
+ <span v-if="isLoading">Guardando...</span>
36
+ <span v-else>Guardar</span>
37
+ </button>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </template>
42
+
43
+ <script setup>
44
+ import { ref, watch } from 'vue'
45
+ import axios from 'axios'
46
+
47
+ const props = defineProps({
48
+ initialName: {
49
+ type: String,
50
+ required: true,
51
+ },
52
+ templateType: {
53
+ type: String,
54
+ required: true,
55
+ },
56
+ token: {
57
+ type: String,
58
+ required: true,
59
+ },
60
+ userId: {
61
+ type: [String, Number],
62
+ required: true,
63
+ },
64
+ reportId: {
65
+ type: [String, Number],
66
+ required: true,
67
+ },
68
+ })
69
+
70
+ const emit = defineEmits(['close', 'rename', 'refresh'])
71
+ const newName = ref(props.initialName)
72
+ const isLoading = ref(false)
73
+ const errorMessage = ref('')
74
+
75
+ watch(
76
+ () => props.initialName,
77
+ (val) => {
78
+ newName.value = val
79
+ errorMessage.value = ''
80
+ },
81
+ )
82
+
83
+ async function acceptRename() {
84
+ console.log('acceptRename')
85
+ if (newName.value.trim().length < 3) return
86
+ console.log('acceptRename 22')
87
+ isLoading.value = true
88
+ errorMessage.value = ''
89
+
90
+ try {
91
+ const axiosInstance = axios.create({ headers: { Authorization: `${props.token}` } })
92
+
93
+ await axiosInstance.put(
94
+ `https://m9qip57rsh.execute-api.us-east-2.amazonaws.com/prod/users/${props.userId}/reports/${props.reportId}/rename`,
95
+ {
96
+ name: newName.value.trim(),
97
+ },
98
+ )
99
+
100
+ // Si la petición es exitosa, emitir el evento de rename y refresh
101
+ emit('rename', newName.value.trim())
102
+ emit('refresh')
103
+ emit('close')
104
+ } catch (error) {
105
+ console.error('Error al renombrar el reporte:', error)
106
+
107
+ if (error.response?.status === 409) {
108
+ errorMessage.value = 'Ya existe un reporte con el mismo nombre'
109
+ } else {
110
+ errorMessage.value = 'Error al renombrar el reporte. Inténtalo de nuevo.'
111
+ }
112
+ } finally {
113
+ isLoading.value = false
114
+ }
115
+ }
116
+ </script>
117
+
118
+ <style scoped>
119
+ .modal-overlay {
120
+ position: fixed;
121
+ top: 0;
122
+ left: 0;
123
+ width: 100vw;
124
+ height: 100vh;
125
+ background: rgba(0, 0, 0, 0.45);
126
+ display: flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ z-index: 4210;
130
+ }
131
+ .modal-content {
132
+ width: 375px;
133
+ height: auto;
134
+ background: #2e3b46;
135
+ border-radius: 10px;
136
+ box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.18);
137
+ padding: 0;
138
+ position: relative;
139
+ display: flex;
140
+ flex-direction: column;
141
+ font-family: 'Poppins-Regular', 'Montserrat', sans-serif;
142
+ }
143
+ .close-btn {
144
+ position: absolute;
145
+ top: 16px;
146
+ right: 16px;
147
+ background: none;
148
+ border: none;
149
+ cursor: pointer;
150
+ z-index: 2;
151
+ padding: 0;
152
+ display: flex;
153
+ align-items: center;
154
+ justify-content: center;
155
+ }
156
+ .close-btn:hover {
157
+ opacity: 0.7;
158
+ }
159
+ .close-btn img {
160
+ width: 20px;
161
+ height: 20px;
162
+ }
163
+ .header-separator {
164
+ width: 100%;
165
+ height: 1px;
166
+ border-bottom: dashed 1px #58626b;
167
+ margin: 12px 0 0 0;
168
+ }
169
+ .modal-header {
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 8px;
173
+ padding: 20px 24px 0 24px;
174
+ }
175
+ .icon-title {
176
+ width: 16px;
177
+ height: 16px;
178
+ }
179
+ .modal-title {
180
+ font-family: Poppins-Medium;
181
+ font-size: 14px;
182
+ font-weight: 500;
183
+ font-stretch: normal;
184
+ font-style: normal;
185
+ line-height: 1.5;
186
+ letter-spacing: normal;
187
+ text-align: left;
188
+ color: #fff;
189
+ }
190
+ .modal-body {
191
+ flex: 1;
192
+ display: flex;
193
+ flex-direction: column;
194
+ justify-content: center;
195
+ padding: 12px 24px 0 24px;
196
+ }
197
+ .modal-label {
198
+ font-family: Poppins-Regular;
199
+ font-size: 14px;
200
+ font-stretch: normal;
201
+ font-style: normal;
202
+ line-height: normal;
203
+ letter-spacing: -0.3px;
204
+ margin-top: 0px;
205
+ text-align: left;
206
+ color: rgba(255, 255, 255, 0.6);
207
+ margin-bottom: 8px;
208
+ }
209
+ .template-name-input {
210
+ width: 327px;
211
+ height: 44.5px;
212
+ border-radius: 6px;
213
+ border: 1px solid #3d4a54;
214
+ background: #2e3b46;
215
+ color: #fff;
216
+ font-family: Poppins-Regular;
217
+ font-size: 14px;
218
+ font-weight: normal;
219
+ font-stretch: normal;
220
+ font-style: normal;
221
+ line-height: normal;
222
+ letter-spacing: 0.1px;
223
+ text-align: left;
224
+ padding: 0 16px;
225
+ margin-bottom: 8px;
226
+ outline: none;
227
+ box-sizing: border-box;
228
+ transition: border 0.2s;
229
+ margin-left: auto;
230
+ margin-right: auto;
231
+ }
232
+ .template-name-input::placeholder {
233
+ color: #b0bec5;
234
+ opacity: 0.5;
235
+ }
236
+ .template-name-input:focus {
237
+ border: 1.5px solid rgba(224, 231, 240, 0.3);
238
+ }
239
+ .template-name-input:disabled {
240
+ opacity: 0.5;
241
+ cursor: not-allowed;
242
+ }
243
+ .error-message {
244
+ color: #fcfcfc;
245
+ font-size: 12px;
246
+ opacity: 0.6;
247
+ text-align: center;
248
+ margin-top: 0px;
249
+ font-family: Poppins-Regular;
250
+ }
251
+ .modal-footer {
252
+ display: flex;
253
+ justify-content: center;
254
+ align-items: center;
255
+ gap: 18px;
256
+ margin-top: 13px;
257
+ padding: 0 24px 12px 24px;
258
+ }
259
+ .cancel-btn {
260
+ background: none;
261
+ border: none;
262
+ color: #b0bec5;
263
+ font-size: 14.9px;
264
+ font-family: Poppins-Medium;
265
+ height: 30px;
266
+ border-radius: 64px;
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: center;
270
+ cursor: pointer;
271
+ padding: 0 18px;
272
+ transition: color 0.2s;
273
+ text-decoration: underline;
274
+ }
275
+ .cancel-btn:hover:not(:disabled) {
276
+ color: #fff;
277
+ }
278
+ .cancel-btn:disabled {
279
+ opacity: 0.5;
280
+ cursor: not-allowed;
281
+ }
282
+ .next-btn {
283
+ width: 107px;
284
+ height: 30px;
285
+ border-radius: 64px;
286
+ -webkit-backdrop-filter: blur(16px);
287
+ backdrop-filter: blur(16px);
288
+ border: solid 0.8px #cbee6b;
289
+ background-color: rgba(255, 255, 255, 0.06);
290
+ font-family: Poppins-Medium;
291
+ font-size: 14.9px;
292
+ font-weight: 500;
293
+ font-stretch: normal;
294
+ font-style: normal;
295
+ line-height: 1.2;
296
+ letter-spacing: -0.45px;
297
+ text-align: center;
298
+ color: #fff;
299
+ cursor: pointer;
300
+ transition:
301
+ background 0.2s,
302
+ color 0.2s;
303
+ display: flex;
304
+ align-items: center;
305
+ justify-content: center;
306
+ }
307
+ .next-btn:disabled {
308
+ opacity: 0.5;
309
+ cursor: not-allowed;
310
+ }
311
+ .next-btn:not(:disabled):hover {
312
+ background: #cbee6b;
313
+ color: #232e39;
314
+ }
315
+ </style>
@@ -0,0 +1,320 @@
1
+ <template>
2
+ <div class="modal-overlay" @click.self="$emit('close')">
3
+ <div class="modal-content">
4
+ <button class="close-btn" @click="$emit('close')">
5
+ <img src="/icons/icn-close.svg" alt="Cerrar" />
6
+ </button>
7
+ <div class="modal-header">
8
+ <img src="/icons/icn-rename-white.svg" class="icon-title" alt="icon" />
9
+ <span class="modal-title">Renombrar Template</span>
10
+ </div>
11
+ <div class="header-separator"></div>
12
+ <div class="modal-body">
13
+ <div class="modal-label">Nombre:</div>
14
+ <input
15
+ class="template-name-input"
16
+ type="text"
17
+ v-model="newName"
18
+ :placeholder="initialName"
19
+ maxlength="40"
20
+ autocomplete="off"
21
+ :disabled="isLoading"
22
+ />
23
+ <div v-if="errorMessage" class="error-message">
24
+ {{ errorMessage }}
25
+ </div>
26
+ </div>
27
+ <div class="header-separator"></div>
28
+ <div class="modal-footer">
29
+ <button class="cancel-btn" @click="$emit('close')" :disabled="isLoading">Cancelar</button>
30
+ <button
31
+ class="next-btn"
32
+ :disabled="newName.trim().length < 3 || isLoading"
33
+ @click="acceptRename"
34
+ >
35
+ <span v-if="isLoading">Guardando...</span>
36
+ <span v-else>Guardar</span>
37
+ </button>
38
+ </div>
39
+ </div>
40
+ </div>
41
+ </template>
42
+
43
+ <script setup>
44
+ import { ref, watch } from 'vue'
45
+ import axios from 'axios'
46
+
47
+ const props = defineProps({
48
+ initialName: {
49
+ type: String,
50
+ required: true,
51
+ },
52
+ templateType: {
53
+ type: String,
54
+ required: true,
55
+ },
56
+ token: {
57
+ type: String,
58
+ required: true,
59
+ },
60
+ userId: {
61
+ type: String,
62
+ required: true,
63
+ },
64
+ templateId: {
65
+ type: String,
66
+ required: true,
67
+ },
68
+ })
69
+
70
+ const emit = defineEmits(['close', 'rename', 'refresh'])
71
+ const newName = ref(props.initialName)
72
+ const isLoading = ref(false)
73
+ const errorMessage = ref('')
74
+
75
+ watch(
76
+ () => props.initialName,
77
+ (val) => {
78
+ newName.value = val
79
+ errorMessage.value = ''
80
+ },
81
+ )
82
+
83
+ async function acceptRename() {
84
+ console.log('acceptRename')
85
+ if (newName.value.trim().length < 3) return
86
+ console.log('acceptRename 22')
87
+
88
+ isLoading.value = true
89
+ errorMessage.value = ''
90
+
91
+ try {
92
+ await axios.put(
93
+ `https://m9qip57rsh.execute-api.us-east-2.amazonaws.com/prod/users/${props.userId}/templates/${props.templateId}/general`,
94
+ {
95
+ name: newName.value.trim(),
96
+ },
97
+ {
98
+ headers: {
99
+ Authorization: `${props.token}`,
100
+ 'Content-Type': 'application/json',
101
+ },
102
+ },
103
+ )
104
+
105
+ // Si la petición es exitosa, emitir el evento de rename y refresh
106
+ emit('rename', newName.value.trim())
107
+ emit('refresh')
108
+ emit('close')
109
+ } catch (error) {
110
+ console.error('Error al renombrar el template:', error)
111
+
112
+ if (error.response?.status === 409) {
113
+ errorMessage.value = 'Ya existe un template con el mismo nombre'
114
+ } else {
115
+ errorMessage.value = 'Error al renombrar el template. Inténtalo de nuevo.'
116
+ }
117
+ } finally {
118
+ isLoading.value = false
119
+ }
120
+ }
121
+ </script>
122
+
123
+ <style scoped>
124
+ .modal-overlay {
125
+ position: fixed;
126
+ top: 0;
127
+ left: 0;
128
+ width: 100vw;
129
+ height: 100vh;
130
+ background: rgba(0, 0, 0, 0.45);
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ z-index: 3200;
135
+ }
136
+ .modal-content {
137
+ width: 375px;
138
+ height: auto;
139
+ background: #2e3b46;
140
+ border-radius: 10px;
141
+ box-shadow: 0 2px 16px 0 rgba(0, 0, 0, 0.18);
142
+ padding: 0;
143
+ position: relative;
144
+ display: flex;
145
+ flex-direction: column;
146
+ font-family: 'Poppins-Regular', 'Montserrat', sans-serif;
147
+ }
148
+ .close-btn {
149
+ position: absolute;
150
+ top: 16px;
151
+ right: 16px;
152
+ background: none;
153
+ border: none;
154
+ cursor: pointer;
155
+ z-index: 2;
156
+ padding: 0;
157
+ display: flex;
158
+ align-items: center;
159
+ justify-content: center;
160
+ }
161
+ .close-btn:hover {
162
+ opacity: 0.7;
163
+ }
164
+ .close-btn img {
165
+ width: 20px;
166
+ height: 20px;
167
+ }
168
+ .header-separator {
169
+ width: 100%;
170
+ height: 1px;
171
+ border-bottom: dashed 1px #58626b;
172
+ margin: 12px 0 0 0;
173
+ }
174
+ .modal-header {
175
+ display: flex;
176
+ align-items: center;
177
+ gap: 8px;
178
+ padding: 20px 24px 0 24px;
179
+ }
180
+ .icon-title {
181
+ width: 16px;
182
+ height: 16px;
183
+ }
184
+ .modal-title {
185
+ font-family: Poppins-Medium;
186
+ font-size: 14px;
187
+ font-weight: 500;
188
+ font-stretch: normal;
189
+ font-style: normal;
190
+ line-height: 1.5;
191
+ letter-spacing: normal;
192
+ text-align: left;
193
+ color: #fff;
194
+ }
195
+ .modal-body {
196
+ flex: 1;
197
+ display: flex;
198
+ flex-direction: column;
199
+ justify-content: center;
200
+ padding: 12px 24px 0 24px;
201
+ }
202
+ .modal-label {
203
+ font-family: Poppins-Regular;
204
+ font-size: 14px;
205
+ font-stretch: normal;
206
+ font-style: normal;
207
+ line-height: normal;
208
+ letter-spacing: -0.3px;
209
+ margin-top: 0px;
210
+ text-align: left;
211
+ color: rgba(255, 255, 255, 0.6);
212
+ margin-bottom: 8px;
213
+ }
214
+ .template-name-input {
215
+ width: 327px;
216
+ height: 44.5px;
217
+ border-radius: 6px;
218
+ border: 1px solid #3d4a54;
219
+ background: #2e3b46;
220
+ color: #fff;
221
+ font-family: Poppins-Regular;
222
+ font-size: 14px;
223
+ font-weight: normal;
224
+ font-stretch: normal;
225
+ font-style: normal;
226
+ line-height: normal;
227
+ letter-spacing: 0.1px;
228
+ text-align: left;
229
+ padding: 0 16px;
230
+ margin-bottom: 8px;
231
+ outline: none;
232
+ box-sizing: border-box;
233
+ transition: border 0.2s;
234
+ margin-left: auto;
235
+ margin-right: auto;
236
+ }
237
+ .template-name-input::placeholder {
238
+ color: #b0bec5;
239
+ opacity: 0.5;
240
+ }
241
+ .template-name-input:focus {
242
+ border: 1.5px solid rgba(224, 231, 240, 0.3);
243
+ }
244
+ .template-name-input:disabled {
245
+ opacity: 0.5;
246
+ cursor: not-allowed;
247
+ }
248
+ .error-message {
249
+ color: #fcfcfc;
250
+ font-size: 12px;
251
+ opacity: 0.6;
252
+ text-align: center;
253
+ margin-top: 0px;
254
+ font-family: Poppins-Regular;
255
+ }
256
+ .modal-footer {
257
+ display: flex;
258
+ justify-content: center;
259
+ align-items: center;
260
+ gap: 18px;
261
+ margin-top: 13px;
262
+ padding: 0 24px 12px 24px;
263
+ }
264
+ .cancel-btn {
265
+ background: none;
266
+ border: none;
267
+ color: #b0bec5;
268
+ font-size: 14.9px;
269
+ font-family: Poppins-Medium;
270
+ height: 30px;
271
+ border-radius: 64px;
272
+ display: flex;
273
+ align-items: center;
274
+ justify-content: center;
275
+ cursor: pointer;
276
+ padding: 0 18px;
277
+ transition: color 0.2s;
278
+ text-decoration: underline;
279
+ }
280
+ .cancel-btn:hover:not(:disabled) {
281
+ color: #fff;
282
+ }
283
+ .cancel-btn:disabled {
284
+ opacity: 0.5;
285
+ cursor: not-allowed;
286
+ }
287
+ .next-btn {
288
+ width: 107px;
289
+ height: 30px;
290
+ border-radius: 64px;
291
+ -webkit-backdrop-filter: blur(16px);
292
+ backdrop-filter: blur(16px);
293
+ border: solid 0.8px #cbee6b;
294
+ background-color: rgba(255, 255, 255, 0.06);
295
+ font-family: Poppins-Medium;
296
+ font-size: 14.9px;
297
+ font-weight: 500;
298
+ font-stretch: normal;
299
+ font-style: normal;
300
+ line-height: 1.2;
301
+ letter-spacing: -0.45px;
302
+ text-align: center;
303
+ color: #fff;
304
+ cursor: pointer;
305
+ transition:
306
+ background 0.2s,
307
+ color 0.2s;
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: center;
311
+ }
312
+ .next-btn:disabled {
313
+ opacity: 0.5;
314
+ cursor: not-allowed;
315
+ }
316
+ .next-btn:not(:disabled):hover {
317
+ background: #cbee6b;
318
+ color: #232e39;
319
+ }
320
+ </style>
@@ -0,0 +1,83 @@
1
+ <template>
2
+ <div class="modal-overlay">
3
+ <div class="modal-content">
4
+ <div class="modal-icon">
5
+ <svg
6
+ width="48"
7
+ height="48"
8
+ viewBox="0 0 48 48"
9
+ fill="none"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ >
12
+ <rect x="8" y="10" width="32" height="20" rx="2" stroke="#C0CBE0" stroke-width="2" />
13
+ <rect x="16" y="34" width="16" height="2" rx="1" fill="#C0CBE0" />
14
+ </svg>
15
+ </div>
16
+ <div class="modal-text">
17
+ Esta sección solo está disponible para<br />
18
+ escritorio. Utiliza tu computadora <br />para ingresar.
19
+ </div>
20
+ <button class="modal-btn" @click="$emit('close')">OK</button>
21
+ </div>
22
+ </div>
23
+ </template>
24
+
25
+ <script setup>
26
+ // No necesita lógica interna
27
+ </script>
28
+
29
+ <style scoped>
30
+ .modal-overlay {
31
+ position: fixed;
32
+ top: 0;
33
+ left: 0;
34
+ width: 100vw;
35
+ height: 100vh;
36
+ background: rgba(0, 0, 0, 0.65);
37
+ display: flex;
38
+ align-items: center;
39
+ justify-content: center;
40
+ z-index: 9999;
41
+ }
42
+ .modal-content {
43
+ background: #26323c;
44
+ border-radius: 18px;
45
+ padding: 36px 32px 28px 32px;
46
+ display: flex;
47
+ flex-direction: column;
48
+ align-items: center;
49
+ max-width: 340px;
50
+ width: 100%;
51
+ box-shadow: 0 4px 24px 0 rgba(0, 0, 0, 0.25);
52
+ }
53
+ .modal-icon {
54
+ margin-bottom: 8px;
55
+ }
56
+ .modal-text {
57
+ font-family: Poppins-Light, Arial, sans-serif;
58
+ font-size: 16px;
59
+ font-weight: 300;
60
+ font-stretch: normal;
61
+ font-style: normal;
62
+ line-height: 1.63;
63
+ letter-spacing: normal;
64
+ text-align: center;
65
+ color: #fff;
66
+ margin-bottom: 28px;
67
+ }
68
+ .modal-btn {
69
+ background: #cbee6b;
70
+ color: #26323c;
71
+ font-family: Poppins-Bold, Arial, sans-serif;
72
+ font-size: 18px;
73
+ border: none;
74
+ border-radius: 24px;
75
+ padding: 7px 48px;
76
+ cursor: pointer;
77
+ width: 321px;
78
+ transition: opacity 0.2s;
79
+ }
80
+ .modal-btn:hover {
81
+ opacity: 0.85;
82
+ }
83
+ </style>