@jjlmoya/utils-audiovisual 1.4.0 → 1.6.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,7 +1,6 @@
1
1
  ---
2
2
  import { Icon } from 'astro-icon/components';
3
3
  import type { TimelapseUI } from './index';
4
- import './style.css';
5
4
 
6
5
  interface Props {
7
6
  ui: TimelapseUI;
@@ -133,7 +132,6 @@ const { ui } = Astro.props;
133
132
  els.shutter.innerText = formatShutter(r.shutterSpeed);
134
133
  }
135
134
 
136
- // eslint-disable-next-line complexity
137
135
  function recalculate() {
138
136
  const h = +(els.hours?.value || 0), m = +(els.minutes?.value || 0), s = +(els.seconds?.value || 0), f = +(els.fps?.value || 24);
139
137
  updateResultDisplay(calculateTimelapse(h * 3600 + m * 60, s, f));
@@ -146,3 +144,289 @@ const { ui } = Astro.props;
146
144
 
147
145
  recalculate();
148
146
  </script>
147
+
148
+ <style>
149
+ :global(.tlc-root) {
150
+ width: 100%;
151
+ max-width: 64rem;
152
+ margin: 0 auto;
153
+ }
154
+
155
+ :global(.tlc-grid) {
156
+ display: grid;
157
+ grid-template-columns: 1fr 1fr;
158
+ border-radius: 1.5rem;
159
+ overflow: hidden;
160
+ border: 1px solid #e2e8f0;
161
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.15);
162
+ }
163
+
164
+ :global(.theme-dark .tlc-grid) {
165
+ border-color: #334155;
166
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
167
+ }
168
+
169
+ @media (max-width: 768px) {
170
+ .tlc-grid {
171
+ grid-template-columns: 1fr;
172
+ }
173
+ }
174
+
175
+ :global(.tlc-inputs-panel) {
176
+ padding: 2rem 3rem;
177
+ background: #f8fafc;
178
+ display: flex;
179
+ flex-direction: column;
180
+ gap: 2rem;
181
+ }
182
+
183
+ :global(.theme-dark .tlc-inputs-panel) {
184
+ background: rgba(15, 23, 42, 0.5);
185
+ }
186
+
187
+ @media (max-width: 768px) {
188
+ :global(.tlc-inputs-panel) {
189
+ padding: 2rem;
190
+ }
191
+ }
192
+
193
+ :global(.tlc-panel-title) {
194
+ display: flex;
195
+ align-items: center;
196
+ gap: 0.5rem;
197
+ font-size: 1.25rem;
198
+ font-weight: 900;
199
+ color: #1e293b;
200
+ margin: 0;
201
+ }
202
+
203
+ :global(.theme-dark .tlc-panel-title) {
204
+ color: #f8fafc;
205
+ }
206
+
207
+ :global(.tlc-panel-icon) {
208
+ width: 1.25rem;
209
+ height: 1.25rem;
210
+ color: #6366f1;
211
+ }
212
+
213
+ :global(.tlc-fields) {
214
+ display: flex;
215
+ flex-direction: column;
216
+ gap: 1.5rem;
217
+ }
218
+
219
+ :global(.tlc-field-group) {
220
+ display: flex;
221
+ flex-direction: column;
222
+ gap: 0.75rem;
223
+ }
224
+
225
+ :global(.tlc-group-label) {
226
+ font-size: 0.7rem;
227
+ font-weight: 700;
228
+ text-transform: uppercase;
229
+ letter-spacing: 0.08em;
230
+ color: #64748b;
231
+ }
232
+
233
+ :global(.tlc-row) {
234
+ display: flex;
235
+ gap: 1rem;
236
+ }
237
+
238
+ :global(.tlc-field) {
239
+ flex: 1;
240
+ display: flex;
241
+ flex-direction: column;
242
+ gap: 0.25rem;
243
+ }
244
+
245
+ :global(.tlc-sub-label) {
246
+ font-size: 0.7rem;
247
+ color: #94a3b8;
248
+ margin-left: 0.25rem;
249
+ }
250
+
251
+ :global(.tlc-input) {
252
+ width: 100%;
253
+ background: #fff;
254
+ border: 2px solid #e2e8f0;
255
+ border-radius: 0.75rem;
256
+ padding: 0.75rem 1rem;
257
+ font-size: 1.5rem;
258
+ font-weight: 700;
259
+ color: #334155;
260
+ outline: none;
261
+ transition: border-color 0.15s, box-shadow 0.15s;
262
+ box-sizing: border-box;
263
+ }
264
+
265
+ :global(.theme-dark .tlc-input) {
266
+ background: #1e293b;
267
+ border-color: #334155;
268
+ color: #f8fafc;
269
+ }
270
+
271
+ :global(.tlc-input-indigo:focus) {
272
+ border-color: #6366f1;
273
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
274
+ }
275
+
276
+ :global(.theme-dark .tlc-input-indigo:focus) {
277
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.25);
278
+ }
279
+
280
+ :global(.tlc-input-pink:focus) {
281
+ border-color: #ec4899;
282
+ box-shadow: 0 0 0 3px rgba(236, 72, 153, 0.15);
283
+ }
284
+
285
+ :global(.theme-dark .tlc-input-pink:focus) {
286
+ box-shadow: 0 0 0 3px rgba(236, 72, 153, 0.25);
287
+ }
288
+
289
+ :global(.tlc-select-wrapper) {
290
+ position: relative;
291
+ }
292
+
293
+ :global(.tlc-select) {
294
+ appearance: none;
295
+ cursor: pointer;
296
+ width: 100%;
297
+ }
298
+
299
+ :global(.tlc-select-arrow) {
300
+ position: absolute;
301
+ right: 1rem;
302
+ top: 50%;
303
+ transform: translateY(-50%);
304
+ width: 1.25rem;
305
+ height: 1.25rem;
306
+ color: #94a3b8;
307
+ pointer-events: none;
308
+ }
309
+
310
+ :global(.tlc-results-panel) {
311
+ padding: 2rem 3rem;
312
+ background: linear-gradient(135deg, #4f46e5, #7c3aed);
313
+ color: #fff;
314
+ display: flex;
315
+ flex-direction: column;
316
+ justify-content: space-between;
317
+ gap: 2rem;
318
+ }
319
+
320
+ @media (max-width: 768px) {
321
+ :global(.tlc-results-panel) {
322
+ padding: 2rem;
323
+ }
324
+ }
325
+
326
+ :global(.tlc-results-title) {
327
+ display: flex;
328
+ align-items: center;
329
+ gap: 0.5rem;
330
+ font-size: 1.25rem;
331
+ font-weight: 900;
332
+ color: #c7d2fe;
333
+ margin: 0;
334
+ }
335
+
336
+ :global(.tlc-results-icon) {
337
+ width: 1.25rem;
338
+ height: 1.25rem;
339
+ color: #a5b4fc;
340
+ }
341
+
342
+ :global(.tlc-interval-section) {
343
+ display: flex;
344
+ flex-direction: column;
345
+ gap: 0.5rem;
346
+ }
347
+
348
+ :global(.tlc-interval-label) {
349
+ font-size: 0.7rem;
350
+ font-weight: 700;
351
+ text-transform: uppercase;
352
+ letter-spacing: 0.1em;
353
+ color: #c7d2fe;
354
+ margin: 0;
355
+ }
356
+
357
+ :global(.tlc-interval-value) {
358
+ display: flex;
359
+ align-items: baseline;
360
+ gap: 0.5rem;
361
+ }
362
+
363
+ :global(.tlc-big-number) {
364
+ font-size: clamp(3.5rem, 8vw, 5rem);
365
+ font-weight: 900;
366
+ letter-spacing: -0.03em;
367
+ line-height: 1;
368
+ }
369
+
370
+ :global(.tlc-big-unit) {
371
+ font-size: 1.5rem;
372
+ font-weight: 700;
373
+ color: #a5b4fc;
374
+ }
375
+
376
+ :global(.tlc-stats-grid) {
377
+ display: grid;
378
+ grid-template-columns: 1fr 1fr;
379
+ gap: 1.5rem 2rem;
380
+ }
381
+
382
+ :global(.tlc-stat) {
383
+ display: flex;
384
+ flex-direction: column;
385
+ gap: 0.25rem;
386
+ }
387
+
388
+ :global(.tlc-stat-label) {
389
+ font-size: 0.65rem;
390
+ font-weight: 700;
391
+ text-transform: uppercase;
392
+ letter-spacing: 0.1em;
393
+ color: #c7d2fe;
394
+ margin: 0;
395
+ }
396
+
397
+ :global(.tlc-stat-value) {
398
+ font-size: 1.875rem;
399
+ font-weight: 700;
400
+ font-variant-numeric: tabular-nums;
401
+ margin: 0;
402
+ line-height: 1.1;
403
+ }
404
+
405
+ :global(.tlc-stat-value-sm) {
406
+ font-size: 1.25rem;
407
+ color: #e0e7ff;
408
+ }
409
+
410
+ :global(.tlc-rule-info) {
411
+ display: flex;
412
+ align-items: flex-start;
413
+ gap: 1rem;
414
+ padding-top: 1.5rem;
415
+ border-top: 1px solid rgba(165, 180, 252, 0.3);
416
+ }
417
+
418
+ :global(.tlc-info-icon) {
419
+ width: 1.5rem;
420
+ height: 1.5rem;
421
+ color: #a5b4fc;
422
+ flex-shrink: 0;
423
+ margin-top: 0.1rem;
424
+ }
425
+
426
+ :global(.tlc-info-text) {
427
+ font-size: 0.8rem;
428
+ line-height: 1.5;
429
+ color: #c7d2fe;
430
+ margin: 0;
431
+ }
432
+ </style>