@jjlmoya/utils-textiles 1.12.0 → 1.13.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jjlmoya/utils-textiles",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "type": "module",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",
@@ -138,7 +138,7 @@
138
138
  gap: 0.75rem;
139
139
  }
140
140
 
141
- :global(.option-btn) {
141
+ .option-btn {
142
142
  text-align: left;
143
143
  padding: 1rem;
144
144
  background: var(--bg-page);
@@ -154,7 +154,7 @@
154
154
  line-height: 1.4;
155
155
  }
156
156
 
157
- :global(.option-btn:hover) {
157
+ .option-btn:hover {
158
158
  border-color: #6366f1;
159
159
  background: rgba(99, 102, 241, 0.05);
160
160
  color: var(--text-main);
@@ -232,13 +232,13 @@
232
232
  text-align: left;
233
233
  }
234
234
 
235
- :global(.result-details) {
235
+ .result-details {
236
236
  display: flex;
237
237
  flex-direction: column;
238
238
  gap: 1rem;
239
239
  }
240
240
 
241
- :global(.result-id-text) {
241
+ .result-id-text {
242
242
  font-size: 0.875rem;
243
243
  font-weight: 500;
244
244
  color: var(--text-muted);
@@ -247,32 +247,32 @@
247
247
  margin: 0;
248
248
  }
249
249
 
250
- :global(.result-attrs) {
250
+ .result-attrs {
251
251
  display: flex;
252
252
  flex-direction: column;
253
253
  gap: 0.75rem;
254
254
  }
255
255
 
256
- :global(.attr-row) {
256
+ .attr-row {
257
257
  display: flex;
258
258
  flex-direction: column;
259
259
  padding-left: 1rem;
260
260
  border-left: 2px solid var(--border-color);
261
261
  }
262
262
 
263
- :global(.attr-flame) {
263
+ .attr-flame {
264
264
  border-left-color: #f97316;
265
265
  }
266
266
 
267
- :global(.attr-odor) {
267
+ .attr-odor {
268
268
  border-left-color: #6366f1;
269
269
  }
270
270
 
271
- :global(.attr-residue) {
271
+ .attr-residue {
272
272
  border-left-color: #94a3b8;
273
273
  }
274
274
 
275
- :global(.attr-label) {
275
+ .attr-label {
276
276
  font-size: 0.6rem;
277
277
  font-weight: 900;
278
278
  text-transform: uppercase;
@@ -281,7 +281,7 @@
281
281
  margin-bottom: 0.2rem;
282
282
  }
283
283
 
284
- :global(.attr-value) {
284
+ .attr-value {
285
285
  font-size: 0.875rem;
286
286
  font-weight: 600;
287
287
  color: var(--text-main);
@@ -248,7 +248,7 @@
248
248
  gap: 0.75rem;
249
249
  }
250
250
 
251
- :global(.size-cell) {
251
+ .size-cell {
252
252
  aspect-ratio: 1;
253
253
  display: flex;
254
254
  align-items: center;
@@ -263,13 +263,13 @@
263
263
  transition: all 0.2s;
264
264
  }
265
265
 
266
- :global(.size-cell:hover) {
266
+ .size-cell:hover {
267
267
  border-color: #3b82f6;
268
268
  color: #3b82f6;
269
269
  transform: scale(1.05);
270
270
  }
271
271
 
272
- :global(.size-cell.active) {
272
+ .size-cell.active {
273
273
  background: #3b82f6;
274
274
  border-color: #1e40af;
275
275
  color: white;
@@ -454,29 +454,29 @@
454
454
  font-weight: 700;
455
455
  }
456
456
 
457
- :global(.rec-size-label) {
457
+ .rec-size-label {
458
458
  display: block;
459
459
  font-size: 1rem;
460
460
  margin-bottom: 0.5rem;
461
461
  }
462
462
 
463
- :global(.rec-size) {
463
+ .rec-size {
464
464
  color: #10b981;
465
465
  font-style: normal;
466
466
  font-size: 1.2em;
467
467
  }
468
468
 
469
- :global(.rec-info) {
469
+ .rec-info {
470
470
  display: block;
471
471
  font-size: 0.875rem;
472
472
  opacity: 0.85;
473
473
  }
474
474
 
475
- :global(.rec-error) {
475
+ .rec-error {
476
476
  color: #dc2626;
477
477
  }
478
478
 
479
- :global(.recommend-details) {
479
+ .recommend-details {
480
480
  display: grid;
481
481
  grid-template-columns: repeat(3, 1fr);
482
482
  gap: 0.75rem;
@@ -485,20 +485,20 @@
485
485
  border-top: 1px solid rgba(16, 185, 129, 0.3);
486
486
  }
487
487
 
488
- :global(.recommend-item) {
488
+ .recommend-item {
489
489
  text-align: center;
490
490
  display: flex;
491
491
  flex-direction: column;
492
492
  gap: 0.25rem;
493
493
  }
494
494
 
495
- :global(.rec-label) {
495
+ .rec-label {
496
496
  font-size: 0.7rem;
497
497
  text-transform: uppercase;
498
498
  opacity: 0.7;
499
499
  }
500
500
 
501
- :global(.recommend-item strong) {
501
+ .recommend-item strong {
502
502
  font-weight: 700;
503
503
  color: #10b981;
504
504
  }
@@ -635,12 +635,12 @@
635
635
  background: var(--bg-page);
636
636
  }
637
637
 
638
- :global(.eu-cell) {
638
+ .eu-cell {
639
639
  font-weight: 700;
640
640
  color: #3b82f6;
641
641
  }
642
642
 
643
- :global(.eu-cell.active) {
643
+ .eu-cell.active {
644
644
  background: rgba(59, 130, 246, 0.1);
645
645
  }
646
646
 
@@ -284,7 +284,7 @@
284
284
  position: relative;
285
285
  }
286
286
 
287
- :global(.ruler-mark) {
287
+ .ruler-mark {
288
288
  position: absolute;
289
289
  left: 0;
290
290
  right: 0;
@@ -293,7 +293,7 @@
293
293
  transform: translateY(-50%);
294
294
  }
295
295
 
296
- :global(.ruler-mark::before) {
296
+ .ruler-mark::before {
297
297
  content: '';
298
298
  width: 8px;
299
299
  height: 1.5px;
@@ -303,7 +303,7 @@
303
303
  margin-right: 4px;
304
304
  }
305
305
 
306
- :global(.ruler-mark span) {
306
+ .ruler-mark span {
307
307
  font-size: 0.58rem;
308
308
  font-weight: 700;
309
309
  color: var(--text-muted);
@@ -325,7 +325,7 @@
325
325
  border-radius: 4px;
326
326
  }
327
327
 
328
- :global(.piece-row) {
328
+ .piece-row {
329
329
  display: flex;
330
330
  flex-direction: row;
331
331
  gap: 4px;
@@ -333,7 +333,7 @@
333
333
  align-items: stretch;
334
334
  }
335
335
 
336
- :global(.piece-block) {
336
+ .piece-block {
337
337
  border-radius: 4px;
338
338
  border: 1.5px solid;
339
339
  display: flex;
@@ -346,11 +346,11 @@
346
346
  transition: filter 0.15s;
347
347
  }
348
348
 
349
- :global(.piece-block:hover) {
349
+ .piece-block:hover {
350
350
  filter: brightness(1.08);
351
351
  }
352
352
 
353
- :global(.piece-name) {
353
+ .piece-name {
354
354
  font-size: 0.62rem;
355
355
  font-weight: 800;
356
356
  color: var(--text-main);
@@ -361,11 +361,11 @@
361
361
  width: 100%;
362
362
  }
363
363
 
364
- :global(.piece-fold) {
364
+ .piece-fold {
365
365
  border-left: 3px dashed rgba(79, 70, 229, 0.65);
366
366
  }
367
367
 
368
- :global(.fold-indicator) {
368
+ .fold-indicator {
369
369
  font-size: 0.48rem;
370
370
  font-weight: 800;
371
371
  color: rgba(79, 70, 229, 0.75);
@@ -374,7 +374,7 @@
374
374
  margin-top: 2px;
375
375
  }
376
376
 
377
- :global(.board-empty-state) {
377
+ .board-empty-state {
378
378
  flex: 1;
379
379
  display: flex;
380
380
  align-items: center;
@@ -441,7 +441,7 @@
441
441
  gap: 0.6rem;
442
442
  }
443
443
 
444
- :global(.merch-item) {
444
+ .merch-item {
445
445
  display: flex;
446
446
  align-items: center;
447
447
  gap: 0.6rem;
@@ -450,7 +450,7 @@
450
450
  color: var(--text-main);
451
451
  }
452
452
 
453
- :global(.merch-dot) {
453
+ .merch-dot {
454
454
  color: var(--f-p);
455
455
  font-size: 0.5rem;
456
456
  flex-shrink: 0;
@@ -171,13 +171,13 @@
171
171
  transition: all 0.2s;
172
172
  }
173
173
 
174
- :global(.total-badge.total-complete) {
174
+ .total-badge.total-complete {
175
175
  background: rgba(16, 185, 129, 0.1);
176
176
  color: #10b981;
177
177
  border-color: #10b981;
178
178
  }
179
179
 
180
- :global(.total-badge.total-error) {
180
+ .total-badge.total-error {
181
181
  background: rgba(239, 68, 68, 0.1);
182
182
  color: #ef4444;
183
183
  border-color: #ef4444;
@@ -226,11 +226,11 @@
226
226
  animation: fade-in 0.5s ease;
227
227
  }
228
228
 
229
- :global(.result-content.hidden) {
229
+ .result-content.hidden {
230
230
  display: none;
231
231
  }
232
232
 
233
- :global(.empty-state.hidden) {
233
+ .empty-state.hidden {
234
234
  display: none;
235
235
  }
236
236
 
@@ -250,43 +250,43 @@
250
250
  min-height: 100px;
251
251
  }
252
252
 
253
- :global(.verdict-card.color-red) {
253
+ .verdict-card.color-red {
254
254
  background: rgba(239, 68, 68, 0.1);
255
255
  color: #ef4444;
256
256
  border-left-color: #dc2626;
257
257
  }
258
258
 
259
- :global(.verdict-card.color-amber) {
259
+ .verdict-card.color-amber {
260
260
  background: rgba(251, 146, 60, 0.1);
261
261
  color: #f97316;
262
262
  border-left-color: #ea580c;
263
263
  }
264
264
 
265
- :global(.verdict-card.color-yellow) {
265
+ .verdict-card.color-yellow {
266
266
  background: rgba(234, 179, 8, 0.1);
267
267
  color: #ca8a04;
268
268
  border-left-color: #b45309;
269
269
  }
270
270
 
271
- :global(.verdict-card.color-emerald) {
271
+ .verdict-card.color-emerald {
272
272
  background: rgba(16, 185, 129, 0.1);
273
273
  color: #059669;
274
274
  border-left-color: #047857;
275
275
  }
276
276
 
277
- :global(.verdict-card.color-blue) {
277
+ .verdict-card.color-blue {
278
278
  background: rgba(59, 130, 246, 0.1);
279
279
  color: #2563eb;
280
280
  border-left-color: #1d4ed8;
281
281
  }
282
282
 
283
- :global(.verdict-card.color-indigo) {
283
+ .verdict-card.color-indigo {
284
284
  background: rgba(99, 102, 241, 0.1);
285
285
  color: #4f46e5;
286
286
  border-left-color: #4338ca;
287
287
  }
288
288
 
289
- :global(.verdict-card.color-gray) {
289
+ .verdict-card.color-gray {
290
290
  background: rgba(107, 114, 128, 0.1);
291
291
  color: #6b7280;
292
292
  border-left-color: #4b5563;
@@ -24,7 +24,7 @@
24
24
  color: #444;
25
25
  }
26
26
 
27
- :global(.theme-dark) .knitting-gauge-card {
27
+ .theme-dark .knitting-gauge-card {
28
28
  --gauge-primary: #ff7e7e;
29
29
  --gauge-secondary: #2d2d30;
30
30
  --gauge-accent: #ffa4a4;
@@ -124,7 +124,7 @@
124
124
  color: inherit;
125
125
  }
126
126
 
127
- :global(.theme-dark) .stepper-btn {
127
+ .theme-dark .stepper-btn {
128
128
  background: rgba(255, 255, 255, 0.04);
129
129
  }
130
130
 
@@ -277,7 +277,7 @@
277
277
  justify-content: center;
278
278
  }
279
279
 
280
- :global(.theme-dark) .info-icon {
280
+ .theme-dark .info-icon {
281
281
  background: rgba(255, 255, 255, 0.12);
282
282
  }
283
283
 
@@ -310,7 +310,7 @@
310
310
  pointer-events: none;
311
311
  }
312
312
 
313
- :global(.theme-dark) [data-tooltip]::before {
313
+ .theme-dark [data-tooltip]::before {
314
314
  background: #1f2937;
315
315
  border: 1px solid rgba(255, 255, 255, 0.1);
316
316
  }
@@ -329,7 +329,7 @@
329
329
  display: none;
330
330
  }
331
331
 
332
- :global(.theme-dark) .yarn-calc-extra {
332
+ .theme-dark .yarn-calc-extra {
333
333
  background: rgba(255, 126, 126, 0.08);
334
334
  border-color: rgba(255, 126, 126, 0.15);
335
335
  }
@@ -355,7 +355,7 @@
355
355
  border: 1px solid #fde68a;
356
356
  }
357
357
 
358
- :global(.theme-dark) .alert-card-warn {
358
+ .theme-dark .alert-card-warn {
359
359
  background: rgba(245, 158, 11, 0.15);
360
360
  color: #fbbf24;
361
361
  border-color: rgba(245, 158, 11, 0.3);
@@ -367,7 +367,7 @@
367
367
  border: 1px solid #fecaca;
368
368
  }
369
369
 
370
- :global(.theme-dark) .alert-card-err {
370
+ .theme-dark .alert-card-err {
371
371
  background: rgba(239, 68, 68, 0.15);
372
372
  color: #f87171;
373
373
  border-color: rgba(239, 68, 68, 0.3);
@@ -408,7 +408,7 @@
408
408
  color: inherit;
409
409
  }
410
410
 
411
- :global(.theme-dark) .ui-btn-secondary {
411
+ .theme-dark .ui-btn-secondary {
412
412
  background: rgba(255, 255, 255, 0.06);
413
413
  border-color: rgba(255, 255, 255, 0.15);
414
414
  }
@@ -417,7 +417,7 @@
417
417
  background: rgba(0, 0, 0, 0.08);
418
418
  }
419
419
 
420
- :global(.theme-dark) .ui-btn-secondary:hover {
420
+ .theme-dark .ui-btn-secondary:hover {
421
421
  background: rgba(255, 255, 255, 0.12);
422
422
  }
423
423
 
@@ -119,7 +119,7 @@
119
119
  display: none;
120
120
  }
121
121
 
122
- :global(.needle-hole) {
122
+ .needle-hole {
123
123
  flex: 0 0 auto;
124
124
  width: 64px;
125
125
  height: 64px;
@@ -135,7 +135,7 @@
135
135
  scroll-snap-align: center;
136
136
  }
137
137
 
138
- :global(.needle-hole::after) {
138
+ .needle-hole::after {
139
139
  content: '';
140
140
  position: absolute;
141
141
  width: var(--size-px);
@@ -146,20 +146,20 @@
146
146
  transition: transform 0.3s ease;
147
147
  }
148
148
 
149
- :global(.needle-hole.active) {
149
+ .needle-hole.active {
150
150
  border-color: var(--nc-p);
151
151
  background: rgba(59, 130, 246, 0.08);
152
152
  transform: scale(1.15);
153
153
  box-shadow: 0 10px 15px -3px rgba(59, 130, 246, 0.15);
154
154
  }
155
155
 
156
- :global(.needle-hole.active::after) {
156
+ .needle-hole.active::after {
157
157
  opacity: 1;
158
158
  background: var(--nc-p);
159
159
  transform: scale(1.05);
160
160
  }
161
161
 
162
- :global(.hole-label) {
162
+ .hole-label {
163
163
  position: absolute;
164
164
  bottom: -28px;
165
165
  font-size: 11px;
@@ -168,7 +168,7 @@
168
168
  transition: color 0.2s;
169
169
  }
170
170
 
171
- :global(.needle-hole.active .hole-label) {
171
+ .needle-hole.active .hole-label {
172
172
  color: var(--nc-p);
173
173
  }
174
174
 
@@ -308,35 +308,35 @@
308
308
  border-bottom: 1px solid var(--border-color);
309
309
  }
310
310
 
311
- .needle-table :global(td) {
311
+ .needle-table td {
312
312
  padding: 16px;
313
313
  border-bottom: 1px solid var(--border-color);
314
314
  color: var(--text-muted);
315
315
  transition: all 0.2s;
316
316
  }
317
317
 
318
- .needle-table :global(tbody tr:nth-child(even) td) {
318
+ .needle-table tbody tr:nth-child(even td) {
319
319
  background: rgba(0, 0, 0, 0.02);
320
320
  }
321
321
 
322
- .theme-dark .needle-table :global(tbody tr:nth-child(even) td) {
322
+ .theme-dark .needle-table tbody tr:nth-child(even td) {
323
323
  background: rgba(255, 255, 255, 0.02);
324
324
  }
325
325
 
326
- .needle-table :global(tr:hover td) {
326
+ .needle-table tr:hover td {
327
327
  background: var(--bg-muted);
328
328
  }
329
329
 
330
- .needle-table :global(tr.active td) {
330
+ .needle-table tr.active td {
331
331
  background: rgba(59, 130, 246, 0.05);
332
332
  color: var(--nc-p);
333
333
  font-weight: 700;
334
334
  }
335
335
 
336
- .needle-table :global(tr.active td:first-child) {
336
+ .needle-table tr.active td:first-child {
337
337
  box-shadow: inset 4px 0 0 var(--nc-p);
338
338
  }
339
339
 
340
- .theme-dark .needle-table :global(tr.active td) {
340
+ .theme-dark .needle-table tr.active td {
341
341
  background: rgba(59, 130, 246, 0.1);
342
342
  }
@@ -205,7 +205,7 @@
205
205
  gap: 12px;
206
206
  }
207
207
 
208
- :global(.action-pill) {
208
+ .action-pill {
209
209
  background: var(--bg-surface);
210
210
  border: 1px solid var(--border-color);
211
211
  border-radius: 16px;
@@ -215,7 +215,7 @@
215
215
  gap: 16px;
216
216
  }
217
217
 
218
- :global(.icon-box) {
218
+ .icon-box {
219
219
  width: 44px;
220
220
  height: 44px;
221
221
  background: var(--bg-muted);
@@ -228,21 +228,21 @@
228
228
  flex-shrink: 0;
229
229
  }
230
230
 
231
- :global(.action-content) { flex: 1; }
231
+ .action-content { flex: 1; }
232
232
 
233
- :global(.action-text) {
233
+ .action-text {
234
234
  display: block;
235
235
  font-size: 14px;
236
236
  color: var(--text-muted);
237
237
  }
238
238
 
239
- :global(.action-text strong) { font-weight: 700; }
239
+ .action-text strong { font-weight: 700; }
240
240
 
241
- :global(.action-val-pos) { color: var(--sp-p); }
241
+ .action-val-pos { color: var(--sp-p); }
242
242
 
243
- :global(.action-val-neg) { color: #f87171; }
243
+ .action-val-neg { color: #f87171; }
244
244
 
245
- :global(.action-note) {
245
+ .action-note {
246
246
  display: block;
247
247
  font-size: 10px;
248
248
  color: var(--text-muted);
@@ -143,7 +143,7 @@
143
143
  gap: 0.75rem;
144
144
  }
145
145
 
146
- :global(.size-cell) {
146
+ .size-cell {
147
147
  aspect-ratio: 1;
148
148
  display: flex;
149
149
  align-items: center;
@@ -158,13 +158,13 @@
158
158
  transition: all 0.2s;
159
159
  }
160
160
 
161
- :global(.size-cell:hover) {
161
+ .size-cell:hover {
162
162
  border-color: #3b82f6;
163
163
  color: #3b82f6;
164
164
  transform: scale(1.05);
165
165
  }
166
166
 
167
- :global(.size-cell.active) {
167
+ .size-cell.active {
168
168
  background: #3b82f6;
169
169
  border-color: #3b82f6;
170
170
  color: white;
@@ -94,7 +94,7 @@
94
94
  animation: fade-in 0.4s ease;
95
95
  }
96
96
 
97
- :global(.protocol-display.hidden) {
97
+ .protocol-display.hidden {
98
98
  display: none;
99
99
  }
100
100
 
@@ -339,7 +339,7 @@
339
339
  animation: pulse-warning 4s ease infinite;
340
340
  }
341
341
 
342
- :global(.warning-card.hidden) {
342
+ .warning-card.hidden {
343
343
  display: none;
344
344
  }
345
345
 
@@ -436,7 +436,7 @@
436
436
  background: var(--bg-page);
437
437
  }
438
438
 
439
- :global(.empty-state.hidden) {
439
+ .empty-state.hidden {
440
440
  display: none;
441
441
  }
442
442
 
@@ -357,19 +357,19 @@
357
357
  overflow: hidden;
358
358
  }
359
359
 
360
- :global(.scheme-item) {
360
+ .scheme-item {
361
361
  stroke-width: 4;
362
362
  fill: none;
363
363
  stroke: var(--border-color);
364
364
  transition: all 0.4s cubic-bezier(0.19, 1, 0.22, 1);
365
365
  }
366
366
 
367
- :global(.scheme-item.filled) {
367
+ .scheme-item.filled {
368
368
  stroke: var(--yc-p);
369
369
  fill: #10b98108;
370
370
  }
371
371
 
372
- :global(.scheme-callout) {
372
+ .scheme-callout {
373
373
  stroke: var(--yc-p);
374
374
  stroke-width: 2;
375
375
  fill: none;
@@ -378,7 +378,7 @@
378
378
  opacity: 0.7;
379
379
  }
380
380
 
381
- :global(.scheme-dot) {
381
+ .scheme-dot {
382
382
  fill: var(--yc-p);
383
383
  transition: all 0.4s ease;
384
384
  }
@@ -399,7 +399,7 @@
399
399
  z-index: 10;
400
400
  }
401
401
 
402
- .scheme-label :global(span) {
402
+ .scheme-label span {
403
403
  font-size: 9px;
404
404
  font-weight: 900;
405
405
  text-transform: uppercase;
@@ -407,13 +407,13 @@
407
407
  color: var(--text-muted);
408
408
  }
409
409
 
410
- .scheme-label :global(strong) {
410
+ .scheme-label strong {
411
411
  color: var(--text-main);
412
412
  font-weight: 950;
413
413
  font-size: 15px;
414
414
  }
415
415
 
416
- .scheme-label :global(em) {
416
+ .scheme-label em {
417
417
  font-size: 11px;
418
418
  font-style: normal;
419
419
  color: var(--yc-p);