@jjlmoya/utils-home 1.15.0 → 1.16.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.
@@ -231,269 +231,3 @@ const qrUI = ui as QRGeneratorUI;
231
231
  init();
232
232
  </script>
233
233
 
234
- <style>
235
- .qr-wrapper {
236
- --qr-p: #3b82f6;
237
-
238
- width: 100%;
239
- padding: 1rem 0;
240
- }
241
-
242
- .qr-card {
243
- background: var(--bg-surface);
244
- width: calc(100% - 24px);
245
- max-width: 900px;
246
- margin: 0 auto;
247
- border-radius: 24px;
248
- overflow: hidden;
249
- display: flex;
250
- flex-direction: column;
251
- border: 1px solid var(--border-color);
252
- color: var(--text-main);
253
- }
254
-
255
- @media (min-width: 768px) {
256
- .qr-card {
257
- flex-direction: row;
258
- min-height: 520px;
259
- }
260
- }
261
-
262
- .qr-left {
263
- flex: 1;
264
- padding: 32px;
265
- border-bottom: 1px solid var(--border-color);
266
- display: flex;
267
- flex-direction: column;
268
- gap: 24px;
269
- }
270
-
271
- @media (min-width: 768px) {
272
- .qr-left {
273
- border-bottom: none;
274
- border-right: 1px solid var(--border-color);
275
- }
276
- }
277
-
278
- .qr-right {
279
- flex: 0 0 auto;
280
- width: 100%;
281
- background: var(--bg-muted);
282
- padding: 40px 32px;
283
- display: flex;
284
- flex-direction: column;
285
- align-items: center;
286
- justify-content: center;
287
- gap: 24px;
288
- position: relative;
289
- }
290
-
291
- @media (min-width: 768px) {
292
- .qr-right {
293
- width: 340px;
294
- }
295
- }
296
-
297
- .tab-bar {
298
- display: flex;
299
- background: var(--bg-muted);
300
- padding: 4px;
301
- border-radius: 14px;
302
- gap: 2px;
303
- }
304
-
305
- .tab-btn {
306
- flex: 1;
307
- padding: 10px;
308
- border: none;
309
- background: transparent;
310
- border-radius: 10px;
311
- font-size: 11px;
312
- font-weight: 800;
313
- text-transform: uppercase;
314
- letter-spacing: 0.12em;
315
- color: var(--text-muted);
316
- cursor: pointer;
317
- transition: all 0.2s;
318
- }
319
-
320
- .tab-btn.active {
321
- background: var(--bg-surface);
322
- color: var(--text-main);
323
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
324
- }
325
-
326
- .qr-form {
327
- display: flex;
328
- flex-direction: column;
329
- gap: 16px;
330
- }
331
-
332
- .qr-form.hidden {
333
- display: none;
334
- }
335
-
336
- .field-group {
337
- display: flex;
338
- flex-direction: column;
339
- gap: 6px;
340
- }
341
-
342
- .field-label {
343
- font-size: 12px;
344
- font-weight: 700;
345
- color: var(--text-muted);
346
- }
347
-
348
- .field-input {
349
- width: 100%;
350
- padding: 10px 14px;
351
- background: var(--bg-muted);
352
- border: 1px solid var(--border-color);
353
- border-radius: 10px;
354
- font-size: 14px;
355
- font-weight: 500;
356
- color: var(--text-main);
357
- transition: border-color 0.2s, box-shadow 0.2s;
358
- box-sizing: border-box;
359
- }
360
-
361
- .field-input:focus {
362
- outline: none;
363
- border-color: var(--qr-p);
364
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
365
- }
366
-
367
- .input-row {
368
- position: relative;
369
- }
370
-
371
- .input-row .field-input {
372
- padding-right: 44px;
373
- }
374
-
375
- .eye-btn {
376
- position: absolute;
377
- right: 10px;
378
- top: 50%;
379
- transform: translateY(-50%);
380
- background: none;
381
- border: none;
382
- cursor: pointer;
383
- color: var(--text-muted);
384
- padding: 4px;
385
- display: flex;
386
- }
387
-
388
- .eye-btn svg {
389
- width: 18px;
390
- height: 18px;
391
- }
392
-
393
- .two-col {
394
- display: grid;
395
- grid-template-columns: 1fr 1fr;
396
- gap: 12px;
397
- }
398
-
399
- .check-group {
400
- justify-content: flex-end;
401
- padding-bottom: 2px;
402
- }
403
-
404
- .check-label {
405
- display: flex;
406
- align-items: center;
407
- gap: 8px;
408
- cursor: pointer;
409
- font-size: 13px;
410
- color: var(--text-muted);
411
- padding-top: 22px;
412
- }
413
-
414
- .check-input {
415
- width: 16px;
416
- height: 16px;
417
- accent-color: var(--qr-p);
418
- }
419
-
420
- .qr-preview-area {
421
- position: relative;
422
- width: 100%;
423
- max-width: 260px;
424
- }
425
-
426
- .canvas-glow {
427
- position: relative;
428
- }
429
-
430
- .canvas-glow::before {
431
- content: "";
432
- position: absolute;
433
- inset: -4px;
434
- background: linear-gradient(135deg, #3b82f6, #06b6d4);
435
- border-radius: 20px;
436
- filter: blur(12px);
437
- opacity: 0.3;
438
- transition: opacity 0.3s;
439
- }
440
-
441
- .canvas-glow:hover::before {
442
- opacity: 0.55;
443
- }
444
-
445
- .canvas-box {
446
- position: relative;
447
- background: var(--bg-surface);
448
- border: 1px solid var(--border-color);
449
- border-radius: 16px;
450
- padding: 16px;
451
- display: flex;
452
- align-items: center;
453
- justify-content: center;
454
- }
455
-
456
- .canvas-box canvas {
457
- width: 100%;
458
- height: auto;
459
- }
460
-
461
- .download-btn {
462
- display: flex;
463
- align-items: center;
464
- gap: 8px;
465
- padding: 12px 24px;
466
- background: var(--qr-p);
467
- color: #fff;
468
- border: none;
469
- border-radius: 12px;
470
- font-size: 13px;
471
- font-weight: 700;
472
- cursor: pointer;
473
- transition: all 0.2s;
474
- box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
475
- }
476
-
477
- .download-btn:hover {
478
- filter: brightness(1.1);
479
- box-shadow: 0 6px 16px rgba(59, 130, 246, 0.4);
480
- transform: translateY(-1px);
481
- }
482
-
483
- .download-btn svg {
484
- width: 18px;
485
- height: 18px;
486
- }
487
-
488
- .privacy-msg {
489
- font-size: 12px;
490
- color: var(--text-muted);
491
- text-align: center;
492
- max-width: 220px;
493
- line-height: 1.5;
494
- }
495
-
496
- .theme-dark .canvas-box {
497
- background: #020617;
498
- }
499
- </style>
@@ -0,0 +1,264 @@
1
+ .qr-wrapper {
2
+ --qr-p: #3b82f6;
3
+
4
+ width: 100%;
5
+ padding: 1rem 0;
6
+ }
7
+
8
+ .qr-card {
9
+ background: var(--bg-surface);
10
+ width: calc(100% - 24px);
11
+ max-width: 900px;
12
+ margin: 0 auto;
13
+ border-radius: 24px;
14
+ overflow: hidden;
15
+ display: flex;
16
+ flex-direction: column;
17
+ border: 1px solid var(--border-color);
18
+ color: var(--text-main);
19
+ }
20
+
21
+ @media (min-width: 768px) {
22
+ .qr-card {
23
+ flex-direction: row;
24
+ min-height: 520px;
25
+ }
26
+ }
27
+
28
+ .qr-left {
29
+ flex: 1;
30
+ padding: 32px;
31
+ border-bottom: 1px solid var(--border-color);
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 24px;
35
+ }
36
+
37
+ @media (min-width: 768px) {
38
+ .qr-left {
39
+ border-bottom: none;
40
+ border-right: 1px solid var(--border-color);
41
+ }
42
+ }
43
+
44
+ .qr-right {
45
+ flex: 0 0 auto;
46
+ width: 100%;
47
+ background: var(--bg-muted);
48
+ padding: 40px 32px;
49
+ display: flex;
50
+ flex-direction: column;
51
+ align-items: center;
52
+ justify-content: center;
53
+ gap: 24px;
54
+ position: relative;
55
+ }
56
+
57
+ @media (min-width: 768px) {
58
+ .qr-right {
59
+ width: 340px;
60
+ }
61
+ }
62
+
63
+ .tab-bar {
64
+ display: flex;
65
+ background: var(--bg-muted);
66
+ padding: 4px;
67
+ border-radius: 14px;
68
+ gap: 2px;
69
+ }
70
+
71
+ .tab-btn {
72
+ flex: 1;
73
+ padding: 10px;
74
+ border: none;
75
+ background: transparent;
76
+ border-radius: 10px;
77
+ font-size: 11px;
78
+ font-weight: 800;
79
+ text-transform: uppercase;
80
+ letter-spacing: 0.12em;
81
+ color: var(--text-muted);
82
+ cursor: pointer;
83
+ transition: all 0.2s;
84
+ }
85
+
86
+ .tab-btn.active {
87
+ background: var(--bg-surface);
88
+ color: var(--text-main);
89
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
90
+ }
91
+
92
+ .qr-form {
93
+ display: flex;
94
+ flex-direction: column;
95
+ gap: 16px;
96
+ }
97
+
98
+ .qr-form.hidden {
99
+ display: none;
100
+ }
101
+
102
+ .field-group {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 6px;
106
+ }
107
+
108
+ .field-label {
109
+ font-size: 12px;
110
+ font-weight: 700;
111
+ color: var(--text-muted);
112
+ }
113
+
114
+ .field-input {
115
+ width: 100%;
116
+ padding: 10px 14px;
117
+ background: var(--bg-muted);
118
+ border: 1px solid var(--border-color);
119
+ border-radius: 10px;
120
+ font-size: 14px;
121
+ font-weight: 500;
122
+ color: var(--text-main);
123
+ transition: border-color 0.2s, box-shadow 0.2s;
124
+ box-sizing: border-box;
125
+ }
126
+
127
+ .field-input:focus {
128
+ outline: none;
129
+ border-color: var(--qr-p);
130
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
131
+ }
132
+
133
+ .input-row {
134
+ position: relative;
135
+ }
136
+
137
+ .input-row .field-input {
138
+ padding-right: 44px;
139
+ }
140
+
141
+ .eye-btn {
142
+ position: absolute;
143
+ right: 10px;
144
+ top: 50%;
145
+ transform: translateY(-50%);
146
+ background: none;
147
+ border: none;
148
+ cursor: pointer;
149
+ color: var(--text-muted);
150
+ padding: 4px;
151
+ display: flex;
152
+ }
153
+
154
+ .eye-btn svg {
155
+ width: 18px;
156
+ height: 18px;
157
+ }
158
+
159
+ .two-col {
160
+ display: grid;
161
+ grid-template-columns: 1fr 1fr;
162
+ gap: 12px;
163
+ }
164
+
165
+ .check-group {
166
+ justify-content: flex-end;
167
+ padding-bottom: 2px;
168
+ }
169
+
170
+ .check-label {
171
+ display: flex;
172
+ align-items: center;
173
+ gap: 8px;
174
+ cursor: pointer;
175
+ font-size: 13px;
176
+ color: var(--text-muted);
177
+ padding-top: 22px;
178
+ }
179
+
180
+ .check-input {
181
+ width: 16px;
182
+ height: 16px;
183
+ accent-color: var(--qr-p);
184
+ }
185
+
186
+ .qr-preview-area {
187
+ position: relative;
188
+ width: 100%;
189
+ max-width: 260px;
190
+ }
191
+
192
+ .canvas-glow {
193
+ position: relative;
194
+ }
195
+
196
+ .canvas-glow::before {
197
+ content: "";
198
+ position: absolute;
199
+ inset: -4px;
200
+ background: linear-gradient(135deg, #3b82f6, #06b6d4);
201
+ border-radius: 20px;
202
+ filter: blur(12px);
203
+ opacity: 0.3;
204
+ transition: opacity 0.3s;
205
+ }
206
+
207
+ .canvas-glow:hover::before {
208
+ opacity: 0.55;
209
+ }
210
+
211
+ .canvas-box {
212
+ position: relative;
213
+ background: var(--bg-surface);
214
+ border: 1px solid var(--border-color);
215
+ border-radius: 16px;
216
+ padding: 16px;
217
+ display: flex;
218
+ align-items: center;
219
+ justify-content: center;
220
+ }
221
+
222
+ .canvas-box canvas {
223
+ width: 100%;
224
+ height: auto;
225
+ }
226
+
227
+ .download-btn {
228
+ display: flex;
229
+ align-items: center;
230
+ gap: 8px;
231
+ padding: 12px 24px;
232
+ background: var(--qr-p);
233
+ color: #fff;
234
+ border: none;
235
+ border-radius: 12px;
236
+ font-size: 13px;
237
+ font-weight: 700;
238
+ cursor: pointer;
239
+ transition: all 0.2s;
240
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
241
+ }
242
+
243
+ .download-btn:hover {
244
+ filter: brightness(1.1);
245
+ box-shadow: 0 6px 16px rgba(59, 130, 246, 0.4);
246
+ transform: translateY(-1px);
247
+ }
248
+
249
+ .download-btn svg {
250
+ width: 18px;
251
+ height: 18px;
252
+ }
253
+
254
+ .privacy-msg {
255
+ font-size: 12px;
256
+ color: var(--text-muted);
257
+ text-align: center;
258
+ max-width: 220px;
259
+ line-height: 1.5;
260
+ }
261
+
262
+ .theme-dark .canvas-box {
263
+ background: #020617;
264
+ }