@jjlmoya/utils-creative 1.3.0 → 1.5.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.
@@ -1,316 +0,0 @@
1
- .excuse-generator {
2
- --excuse-generator-bg: #fff;
3
- --excuse-generator-bg-transparent: rgba(255, 255, 255, 0.8);
4
- --excuse-generator-bg-muted: #f1f5f9;
5
- --excuse-generator-text: #0f172a;
6
- --excuse-generator-text-muted: #475569;
7
- --excuse-generator-text-dim: #64748b;
8
- --excuse-generator-border: #e2e8f0;
9
- --excuse-generator-shadow: rgba(0, 0, 0, 0.05);
10
- --excuse-generator-primary: #ec4899;
11
- --excuse-generator-primary-on: #fff;
12
- --excuse-generator-accent: #f43f5e;
13
- --excuse-generator-success: #10b981;
14
- --excuse-generator-warning: #f59e0b;
15
- --excuse-generator-error: #f43f5e;
16
- --excuse-generator-ring: rgba(236, 72, 153, 0.2);
17
- }
18
-
19
- .theme-dark .excuse-generator {
20
- --excuse-generator-bg: #0f172a;
21
- --excuse-generator-bg-transparent: rgba(15, 23, 42, 0.8);
22
- --excuse-generator-bg-muted: #1e293b;
23
- --excuse-generator-text: #f8fafc;
24
- --excuse-generator-text-muted: #94a3b8;
25
- --excuse-generator-text-dim: #64748b;
26
- --excuse-generator-border: #334155;
27
- --excuse-generator-shadow: rgba(0, 0, 0, 0.3);
28
- --excuse-generator-primary: #f472b6;
29
- --excuse-generator-primary-on: #fff;
30
- --excuse-generator-accent: #fb7185;
31
- --excuse-generator-success: #34d399;
32
- --excuse-generator-warning: #fbbf24;
33
- --excuse-generator-error: #fb7185;
34
- --excuse-generator-ring: rgba(244, 114, 182, 0.2);
35
- }
36
-
37
- .excuse-generator-root {
38
- max-width: 64rem;
39
- margin-left: auto;
40
- margin-right: auto;
41
- padding: 1rem;
42
- }
43
-
44
- @media (min-width: 768px) {
45
- .excuse-generator-root {
46
- padding: 2rem;
47
- }
48
- }
49
-
50
- .excuse-generator-card {
51
- position: relative;
52
- background-color: var(--excuse-generator-bg-transparent);
53
- backdrop-filter: blur(24px);
54
- border-radius: 2rem;
55
- padding: 2rem;
56
- box-shadow: 0 25px 50px -12px var(--excuse-generator-shadow);
57
- border: 1px solid var(--excuse-generator-border);
58
- min-height: 500px;
59
- display: flex;
60
- flex-direction: column;
61
- align-items: center;
62
- justify-content: center;
63
- text-align: center;
64
- overflow: hidden;
65
- }
66
-
67
- @media (min-width: 768px) {
68
- .excuse-generator-card {
69
- padding: 3rem;
70
- }
71
- }
72
-
73
- .excuse-generator-blob {
74
- position: absolute;
75
- width: 24rem;
76
- height: 24rem;
77
- border-radius: 9999px;
78
- filter: blur(64px);
79
- pointer-events: none;
80
- }
81
-
82
- .excuse-generator-blob-1 {
83
- top: 0;
84
- right: 0;
85
- transform: translate(50%, -50%);
86
- background-color: rgba(244, 114, 182, 0.2);
87
- }
88
-
89
- .excuse-generator-blob-2 {
90
- bottom: 0;
91
- left: 0;
92
- transform: translate(-50%, 50%);
93
- background-color: rgba(251, 113, 133, 0.2);
94
- }
95
-
96
- .excuse-generator-slots {
97
- position: relative;
98
- z-index: 10;
99
- width: 100%;
100
- max-width: 80rem;
101
- min-height: 200px;
102
- display: flex;
103
- flex-direction: column;
104
- gap: 1rem;
105
- margin-bottom: 3rem;
106
- }
107
-
108
- @media (min-width: 1024px) {
109
- .excuse-generator-slots {
110
- flex-direction: row;
111
- align-items: center;
112
- }
113
- }
114
-
115
- .excuse-generator-slot {
116
- position: relative;
117
- flex: 1;
118
- min-width: 200px;
119
- background-color: rgba(255, 255, 255, 0.6);
120
- backdrop-filter: blur(4px);
121
- border-radius: 1rem;
122
- padding: 1.5rem;
123
- border: 2px solid var(--excuse-generator-border);
124
- box-shadow: 0 10px 15px -3px var(--excuse-generator-shadow);
125
- display: flex;
126
- align-items: center;
127
- justify-content: center;
128
- text-align: center;
129
- transition-property: all;
130
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
131
- transition-duration: 300ms;
132
- }
133
-
134
- .theme-dark .excuse-generator-slot {
135
- background-color: rgba(15, 23, 42, 0.6);
136
- }
137
-
138
- .excuse-generator-slot:hover {
139
- transform: scale(1.05);
140
- background-color: var(--excuse-generator-bg);
141
- border-color: var(--excuse-generator-primary);
142
- }
143
-
144
- .excuse-generator-slot-label {
145
- position: absolute;
146
- top: 0.5rem;
147
- left: 50%;
148
- transform: translateX(-50%);
149
- color: var(--excuse-generator-text-dim);
150
- font-size: 0.75rem;
151
- line-height: 1rem;
152
- text-transform: uppercase;
153
- letter-spacing: 0.1em;
154
- opacity: 0.5;
155
- }
156
-
157
- .excuse-generator-slot-text {
158
- font-size: 1.5rem;
159
- font-weight: 900;
160
- color: var(--excuse-generator-primary);
161
- line-height: 1.25;
162
- overflow-wrap: break-word;
163
- width: 100%;
164
- transition-property: all;
165
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
166
- transition-duration: 100ms;
167
- }
168
-
169
- @media (min-width: 768px) {
170
- .excuse-generator-slot-text {
171
- font-size: 1.875rem;
172
- line-height: 2.25rem;
173
- }
174
- }
175
-
176
- .excuse-generator-slot-text.blur {
177
- filter: blur(3px);
178
- opacity: 0.7;
179
- transform: scale(0.95);
180
- }
181
-
182
- .excuse-generator-separator {
183
- display: none;
184
- font-size: 2rem;
185
- color: var(--excuse-generator-border);
186
- }
187
-
188
- @media (min-width: 1024px) {
189
- .excuse-generator-separator {
190
- display: block;
191
- }
192
- }
193
-
194
- .excuse-generator-separator-mobile {
195
- display: flex;
196
- justify-content: center;
197
- color: var(--excuse-generator-border);
198
- }
199
-
200
- @media (min-width: 1024px) {
201
- .excuse-generator-separator-mobile {
202
- display: none;
203
- }
204
- }
205
-
206
- .excuse-generator-actions {
207
- position: relative;
208
- z-index: 10;
209
- display: flex;
210
- flex-direction: column;
211
- gap: 1.5rem;
212
- align-items: center;
213
- }
214
-
215
- .excuse-generator-btn {
216
- position: relative;
217
- padding-left: 2.5rem;
218
- padding-right: 2.5rem;
219
- padding-top: 1.25rem;
220
- padding-bottom: 1.25rem;
221
- background-color: #0f172a;
222
- border-radius: 1rem;
223
- color: #fff;
224
- font-weight: 900;
225
- font-size: 1.25rem;
226
- line-height: 1.75rem;
227
- box-shadow: 0 25px 50px -12px rgba(236, 72, 153, 0.2);
228
- border: none;
229
- cursor: pointer;
230
- overflow: hidden;
231
- transition-property: all;
232
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
233
- transition-duration: 300ms;
234
- }
235
-
236
- .theme-dark .excuse-generator-btn {
237
- background-color: #f8fafc;
238
- color: #0f172a;
239
- }
240
-
241
- .excuse-generator-btn:hover {
242
- transform: translateY(-0.25rem);
243
- box-shadow: 0 25px 50px -12px rgba(236, 72, 153, 0.4);
244
- }
245
-
246
- .excuse-generator-btn:active {
247
- transform: translateY(0);
248
- }
249
-
250
- .excuse-generator-btn:disabled {
251
- opacity: 0.7;
252
- cursor: not-allowed;
253
- }
254
-
255
- .excuse-generator-btn-content {
256
- position: relative;
257
- z-index: 10;
258
- display: flex;
259
- align-items: center;
260
- gap: 0.75rem;
261
- }
262
-
263
- .excuse-generator-btn-gradient {
264
- position: absolute;
265
- inset: 0;
266
- background-image: linear-gradient(to right, var(--excuse-generator-primary), var(--excuse-generator-accent), var(--excuse-generator-primary));
267
- opacity: 0;
268
- transition-property: opacity;
269
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
270
- transition-duration: 300ms;
271
- }
272
-
273
- .excuse-generator-btn:hover .excuse-generator-btn-gradient {
274
- opacity: 1;
275
- }
276
-
277
- .excuse-generator-btn:hover .excuse-generator-btn-content {
278
- color: var(--excuse-generator-primary-on);
279
- }
280
-
281
- .excuse-generator-copy {
282
- background: none;
283
- border: none;
284
- cursor: pointer;
285
- color: var(--excuse-generator-text-dim);
286
- font-size: 0.875rem;
287
- line-height: 1.25rem;
288
- font-weight: 700;
289
- display: flex;
290
- align-items: center;
291
- gap: 0.5rem;
292
- transition-property: all;
293
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
294
- transition-duration: 200ms;
295
- opacity: 0;
296
- pointer-events: none;
297
- transform: translateY(0.5rem);
298
- }
299
-
300
- .excuse-generator-copy.visible {
301
- opacity: 1;
302
- pointer-events: auto;
303
- transform: translateY(0);
304
- }
305
-
306
- .excuse-generator-copy:hover {
307
- color: var(--excuse-generator-primary);
308
- }
309
-
310
- .excuse-generator-copy-success {
311
- color: var(--excuse-generator-success);
312
- font-weight: 700;
313
- display: flex;
314
- align-items: center;
315
- gap: 0.5rem;
316
- }
@@ -1,332 +0,0 @@
1
- .fortune-cookie {
2
- --fortune-cookie-bg: #fff;
3
- --fortune-cookie-bg-muted: #fffbeb;
4
- --fortune-cookie-text: #0f172a;
5
- --fortune-cookie-text-muted: #475569;
6
- --fortune-cookie-text-dim: #64748b;
7
- --fortune-cookie-border: #fef3c7;
8
- --fortune-cookie-shadow: rgba(0, 0, 0, 0.05);
9
- --fortune-cookie-primary: #f59e0b;
10
- --fortune-cookie-primary-on: #fff;
11
- --fortune-cookie-accent: #fcd34d;
12
- --fortune-cookie-success: #10b981;
13
- --fortune-cookie-warning: #f59e0b;
14
- --fortune-cookie-error: #f43f5e;
15
- }
16
-
17
- .theme-dark .fortune-cookie {
18
- --fortune-cookie-bg: #0f172a;
19
- --fortune-cookie-bg-muted: #1e293b;
20
- --fortune-cookie-text: #f8fafc;
21
- --fortune-cookie-text-muted: #94a3b8;
22
- --fortune-cookie-text-dim: #64748b;
23
- --fortune-cookie-border: #334155;
24
- --fortune-cookie-shadow: rgba(0, 0, 0, 0.3);
25
- --fortune-cookie-primary: #fbbf24;
26
- --fortune-cookie-primary-on: #fff;
27
- --fortune-cookie-accent: #fcd34d;
28
- --fortune-cookie-success: #34d399;
29
- --fortune-cookie-warning: #fbbf24;
30
- --fortune-cookie-error: #fb7185;
31
- }
32
-
33
- .fortune-cookie-root {
34
- width: 100%;
35
- max-width: 64rem;
36
- margin-left: auto;
37
- margin-right: auto;
38
- }
39
-
40
- .fortune-cookie-card {
41
- position: relative;
42
- background-color: var(--fortune-cookie-bg);
43
- border-radius: 1.5rem;
44
- box-shadow: 0 25px 50px -12px var(--fortune-cookie-shadow);
45
- overflow: hidden;
46
- border: 1px solid var(--fortune-cookie-border);
47
- min-height: 600px;
48
- display: flex;
49
- flex-direction: column;
50
- align-items: center;
51
- justify-content: center;
52
- padding: 2rem;
53
- }
54
-
55
- .fortune-cookie-glow {
56
- position: absolute;
57
- inset: 0;
58
- opacity: 0.1;
59
- pointer-events: none;
60
- background-image: radial-gradient(circle at center, var(--fortune-cookie-primary), transparent, transparent);
61
- }
62
-
63
- .fortune-cookie-content {
64
- position: relative;
65
- z-index: 10;
66
- width: 100%;
67
- display: flex;
68
- flex-direction: column;
69
- align-items: center;
70
- }
71
-
72
- .fortune-cookie-instruction {
73
- font-size: 1.25rem;
74
- line-height: 1.75rem;
75
- font-weight: 700;
76
- color: #92400e;
77
- margin-bottom: 2rem;
78
- text-transform: uppercase;
79
- letter-spacing: 0.1em;
80
- animation: fortune-cookie-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
81
- }
82
-
83
- .theme-dark .fortune-cookie-instruction {
84
- color: #fbbf24;
85
- }
86
-
87
- @keyframes fortune-cookie-pulse {
88
- 0%, 100% { opacity: 1; }
89
- 50% { opacity: .5; }
90
- }
91
-
92
- .fortune-cookie-stage {
93
- position: relative;
94
- width: 20rem;
95
- height: 20rem;
96
- cursor: pointer;
97
- }
98
-
99
- @media (min-width: 768px) {
100
- .fortune-cookie-stage {
101
- width: 24rem;
102
- height: 24rem;
103
- }
104
- }
105
-
106
- .fortune-cookie-body {
107
- position: absolute;
108
- inset: 2rem;
109
- transition-property: transform;
110
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
111
- transition-duration: 100ms;
112
- }
113
-
114
- @media (min-width: 768px) {
115
- .fortune-cookie-body {
116
- inset: 3rem;
117
- }
118
- }
119
-
120
- .fortune-cookie-body:active {
121
- transform: scale(0.95);
122
- }
123
-
124
- .fortune-cookie-img {
125
- width: 100%;
126
- height: 100%;
127
- object-fit: contain;
128
- z-index: 10;
129
- position: relative;
130
- }
131
-
132
- .fortune-cookie-broken {
133
- position: absolute;
134
- inset: 2rem;
135
- pointer-events: none;
136
- }
137
-
138
- .fortune-cookie-broken.hidden {
139
- display: none;
140
- }
141
-
142
- @media (min-width: 768px) {
143
- .fortune-cookie-broken {
144
- inset: 3rem;
145
- }
146
- }
147
-
148
- .fortune-cookie-half {
149
- position: absolute;
150
- width: 50%;
151
- height: 100%;
152
- object-fit: contain;
153
- transition-property: all;
154
- transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
155
- transition-duration: 1000ms;
156
- }
157
-
158
- .fortune-cookie-half-left {
159
- left: 0;
160
- transform-origin: bottom left;
161
- }
162
-
163
- .fortune-cookie-half-right {
164
- right: 0;
165
- transform-origin: bottom right;
166
- }
167
-
168
- .fortune-cookie-paper {
169
- position: absolute;
170
- top: 50%;
171
- left: 50%;
172
- transform: translate(-50%, -50%) scale(0.5);
173
- width: 75%;
174
- max-width: 280px;
175
- opacity: 0;
176
- transition-property: all;
177
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
178
- transition-duration: 1000ms;
179
- z-index: 0;
180
- }
181
-
182
- .fortune-cookie-paper.visible {
183
- opacity: 1;
184
- transform: translate(-50%, -50%) scale(1);
185
- z-index: 20;
186
- }
187
-
188
- .fortune-cookie-paper-img {
189
- width: 100%;
190
- filter: drop-shadow(0 20px 13px rgba(0, 0, 0, 0.03)) drop-shadow(0 8px 5px rgba(0, 0, 0, 0.08));
191
- transform: rotate(1deg);
192
- }
193
-
194
- .fortune-cookie-paper-content {
195
- position: absolute;
196
- inset: 0;
197
- display: flex;
198
- flex-direction: column;
199
- align-items: center;
200
- justify-content: center;
201
- padding: 2rem;
202
- text-align: center;
203
- }
204
-
205
- .fortune-cookie-text {
206
- color: #0f172a;
207
- font-weight: 900;
208
- font-size: 1.125rem;
209
- line-height: 1.25;
210
- transform: rotate(-1deg);
211
- user-select: text;
212
- }
213
-
214
- @media (min-width: 768px) {
215
- .fortune-cookie-text {
216
- font-size: 1.25rem;
217
- line-height: 1.75rem;
218
- }
219
- }
220
-
221
- .fortune-cookie-lucky-numbers {
222
- margin-top: 1rem;
223
- display: flex;
224
- flex-wrap: wrap;
225
- gap: 0.5rem;
226
- justify-content: center;
227
- transform: rotate(-1deg);
228
- }
229
-
230
- .fortune-cookie-number {
231
- font-size: 0.75rem;
232
- line-height: 1rem;
233
- font-weight: 700;
234
- background-color: rgba(255, 255, 255, 0.9);
235
- color: #450a0a;
236
- padding-left: 0.5rem;
237
- padding-right: 0.5rem;
238
- padding-top: 0.125rem;
239
- padding-bottom: 0.125rem;
240
- border-radius: 0.25rem;
241
- box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
242
- border: 1px solid #fee2e2;
243
- }
244
-
245
- .fortune-cookie-particles {
246
- position: absolute;
247
- inset: 0;
248
- pointer-events: none;
249
- overflow: visible;
250
- z-index: 20;
251
- }
252
-
253
- .fortune-cookie-reset {
254
- display: none;
255
- margin-top: 3rem;
256
- flex-direction: column;
257
- align-items: center;
258
- gap: 1rem;
259
- }
260
-
261
- .fortune-cookie-reset.visible {
262
- display: flex;
263
- }
264
-
265
- .fortune-cookie-status {
266
- font-size: 0.875rem;
267
- line-height: 1.25rem;
268
- color: var(--fortune-cookie-text-dim);
269
- }
270
-
271
- .fortune-cookie-share-btn {
272
- padding-left: 1.5rem;
273
- padding-right: 1.5rem;
274
- padding-top: 0.5rem;
275
- padding-bottom: 0.5rem;
276
- background-color: #f1f5f9;
277
- color: #334155;
278
- border-radius: 9999px;
279
- font-size: 0.875rem;
280
- line-height: 1.25rem;
281
- font-weight: 700;
282
- border: none;
283
- cursor: pointer;
284
- display: flex;
285
- align-items: center;
286
- gap: 0.5rem;
287
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
288
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
289
- transition-duration: 150ms;
290
- }
291
-
292
- .theme-dark .fortune-cookie-share-btn {
293
- background-color: #1e293b;
294
- color: #cbd5e1;
295
- }
296
-
297
- .fortune-cookie-share-btn:hover {
298
- background-color: #e2e8f0;
299
- }
300
-
301
- .theme-dark .fortune-cookie-share-btn:hover {
302
- background-color: #334155;
303
- }
304
-
305
- .fortune-cookie-shake-1 {
306
- animation: fortune-cookie-shake 0.3s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
307
- }
308
-
309
- .fortune-cookie-shake-2 {
310
- animation: fortune-cookie-shake 0.4s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
311
- }
312
-
313
- .fortune-cookie-shake-3 {
314
- animation: fortune-cookie-shake 0.5s cubic-bezier(0.36, 0.07, 0.19, 0.97) both;
315
- }
316
-
317
- @keyframes fortune-cookie-shake {
318
- 10%, 90% { transform: translate3d(-1px, 0, 0) rotate(-1deg); }
319
- 20%, 80% { transform: translate3d(2px, 0, 0) rotate(2deg); }
320
- 30%, 50%, 70% { transform: translate3d(-4px, 0, 0) rotate(-4deg); }
321
- 40%, 60% { transform: translate3d(4px, 0, 0) rotate(4deg); }
322
- }
323
-
324
- .fortune-cookie-crumb {
325
- position: absolute;
326
- width: 20px;
327
- height: 20px;
328
- background-image: url("/images/utilities/fortune/fc-crumbs.webp");
329
- background-size: contain;
330
- background-repeat: no-repeat;
331
- pointer-events: none;
332
- }