@charcoal-ui/react 6.1.0-beta.3 → 6.1.0-beta.4

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 (33) hide show
  1. package/dist/_lib/compat.d.ts +4 -3
  2. package/dist/_lib/compat.d.ts.map +1 -1
  3. package/dist/components/Notification/Snackbar/index.d.ts +4 -0
  4. package/dist/components/Notification/Snackbar/index.d.ts.map +1 -1
  5. package/dist/components/Notification/Snackbar/index2.cjs +11 -8
  6. package/dist/components/Notification/Snackbar/index2.cjs.map +1 -1
  7. package/dist/components/Notification/Snackbar/index2.js +12 -9
  8. package/dist/components/Notification/Snackbar/index2.js.map +1 -1
  9. package/dist/components/Notification/Toast/index2.js +20 -16
  10. package/dist/components/Notification/Toast/index2.js.map +1 -1
  11. package/dist/components/Notification/useNotificationQueue.cjs +11 -11
  12. package/dist/components/Notification/useNotificationQueue.cjs.map +1 -1
  13. package/dist/components/Notification/useNotificationQueue.d.ts +2 -1
  14. package/dist/components/Notification/useNotificationQueue.d.ts.map +1 -1
  15. package/dist/components/Notification/useNotificationQueue.js +11 -11
  16. package/dist/components/Notification/useNotificationQueue.js.map +1 -1
  17. package/dist/components/Pagination/index2.js +60 -52
  18. package/dist/components/Pagination/index2.js.map +1 -1
  19. package/dist/index.css +853 -854
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/layered.css +853 -854
  23. package/dist/layered.css.map +1 -1
  24. package/package.json +5 -5
  25. package/src/_lib/compat.ts +4 -3
  26. package/src/components/Carousel/__snapshots__/index.css.snap +4 -4
  27. package/src/components/Carousel/index.css +4 -4
  28. package/src/components/Notification/Snackbar/index.test.tsx +25 -4
  29. package/src/components/Notification/Snackbar/index.tsx +16 -1
  30. package/src/components/Notification/useNotificationQueue.ts +16 -15
  31. package/src/components/Pagination/__snapshots__/index.css.snap +0 -1
  32. package/src/components/Pagination/index.css +0 -1
  33. package/src/index.ts +1 -0
package/dist/index.css CHANGED
@@ -217,130 +217,6 @@
217
217
  line-height: 22px;
218
218
  color: var(--charcoal-color-text-default);
219
219
  }
220
- .charcoal-icon-button {
221
- cursor: pointer;
222
- -webkit-appearance: none;
223
- -moz-appearance: none;
224
- appearance: none;
225
- background: transparent;
226
- padding: 0;
227
- border-style: none;
228
- outline: none;
229
- color: inherit;
230
- text-rendering: inherit;
231
- letter-spacing: inherit;
232
- word-spacing: inherit;
233
- text-decoration: none;
234
- font: inherit;
235
- margin: 0;
236
- overflow: visible;
237
- text-transform: none;
238
-
239
- -webkit-user-select: none;
240
-
241
- -moz-user-select: none;
242
-
243
- user-select: none;
244
- display: flex;
245
- align-items: center;
246
- justify-content: center;
247
- border-radius: 999999px;
248
- transition:
249
- 0.2s background-color,
250
- 0.2s box-shadow;
251
- }
252
-
253
- .charcoal-icon-button:disabled,
254
- .charcoal-icon-button[aria-disabled]:not([aria-disabled='false']) {
255
- cursor: default;
256
- opacity: 0.32;
257
- }
258
-
259
- .charcoal-icon-button:focus {
260
- outline: none;
261
- }
262
-
263
- .charcoal-icon-button::-moz-focus-inner {
264
- border-style: none;
265
- padding: 0;
266
- }
267
-
268
- .charcoal-icon-button[data-size='XS'] {
269
- width: 20px;
270
- height: 20px;
271
- }
272
-
273
- .charcoal-icon-button[data-size='S'] {
274
- width: 32px;
275
- height: 32px;
276
- }
277
-
278
- .charcoal-icon-button[data-size='M'] {
279
- width: 40px;
280
- height: 40px;
281
- }
282
-
283
- .charcoal-icon-button[data-variant='Default'] {
284
- color: var(--charcoal-color-icon-tertiary-default);
285
- background-color: transparent;
286
- }
287
-
288
- .charcoal-icon-button[data-variant='Default'][data-active='true']:not(:disabled):not([aria-disabled]),
289
- .charcoal-icon-button[data-variant='Default'][data-active='true'][aria-disabled='false'] {
290
- color: var(--charcoal-color-icon-tertiary-press);
291
- background-color: var(--charcoal-color-container-press-a);
292
- }
293
-
294
- .charcoal-icon-button[data-variant='Default'][data-active='false']:not(:disabled):not([aria-disabled]):hover,
295
- .charcoal-icon-button[data-variant='Default'][data-active='false'][aria-disabled='false']:hover {
296
- color: var(--charcoal-color-icon-tertiary-hover);
297
- background-color: var(--charcoal-color-container-hover-a);
298
- }
299
-
300
- .charcoal-icon-button[data-variant='Default'][data-active='false']:not(:disabled):not([aria-disabled]):active,
301
- .charcoal-icon-button[data-variant='Default'][data-active='false'][aria-disabled='false']:active {
302
- color: var(--charcoal-color-icon-tertiary-press);
303
- background-color: var(--charcoal-color-container-press-a);
304
- }
305
-
306
- .charcoal-icon-button[data-variant='Overlay'] {
307
- color: var(--charcoal-color-icon-on-on-img-default);
308
- background-color: var(--charcoal-color-container-on-img-default);
309
- }
310
-
311
- .charcoal-icon-button[data-variant='Overlay'][data-active='true']:not(:disabled):not([aria-disabled]),
312
- .charcoal-icon-button[data-variant='Overlay'][data-active='true'][aria-disabled='false'] {
313
- color: var(--charcoal-color-icon-on-on-img-press);
314
- background-color: var(--charcoal-color-container-on-img-press);
315
- }
316
-
317
- .charcoal-icon-button[data-variant='Overlay'][data-active='false']:not(:disabled):not([aria-disabled]):hover,
318
- .charcoal-icon-button[data-variant='Overlay'][data-active='false'][aria-disabled='false']:hover {
319
- color: var(--charcoal-color-icon-on-on-img-hover);
320
- background-color: var(--charcoal-color-container-on-img-hover);
321
- }
322
-
323
- .charcoal-icon-button[data-variant='Overlay'][data-active='false']:not(:disabled):not([aria-disabled]):active,
324
- .charcoal-icon-button[data-variant='Overlay'][data-active='false'][aria-disabled='false']:active {
325
- color: var(--charcoal-color-icon-on-on-img-press);
326
- background-color: var(--charcoal-color-container-on-img-press);
327
- }
328
-
329
- .charcoal-icon-button:not(:disabled):not([aria-disabled]):focus,
330
- .charcoal-icon-button[aria-disabled='false']:focus {
331
- outline: none;
332
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
333
- }
334
-
335
- .charcoal-icon-button:not(:disabled):not([aria-disabled]):focus-visible,
336
- .charcoal-icon-button[aria-disabled='false']:focus-visible {
337
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
338
- }
339
-
340
- .charcoal-icon-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
341
- .charcoal-icon-button[aria-disabled='false']:focus:not(:focus-visible) {
342
- box-shadow: none;
343
- }
344
220
  .charcoal-radio-group {
345
221
  display: grid;
346
222
  grid-template-columns: 1fr;
@@ -481,240 +357,130 @@
481
357
  border-width: 2px;
482
358
  border-style: solid;
483
359
  }
484
- .charcoal-switch__label {
485
- display: inline-grid;
486
- grid-template-columns: auto 1fr;
487
- align-items: center;
360
+ .charcoal-icon-button {
488
361
  cursor: pointer;
489
- outline: 0;
490
- gap: 4px;
491
- }
492
-
493
- .charcoal-switch__label[aria-disabled='true'] {
494
- opacity: 0.32;
495
- cursor: default;
496
- }
497
-
498
- .charcoal-switch__label[aria-disabled='true'] > input {
499
- opacity: 1;
500
- }
362
+ -webkit-appearance: none;
363
+ -moz-appearance: none;
364
+ appearance: none;
365
+ background: transparent;
366
+ padding: 0;
367
+ border-style: none;
368
+ outline: none;
369
+ color: inherit;
370
+ text-rendering: inherit;
371
+ letter-spacing: inherit;
372
+ word-spacing: inherit;
373
+ text-decoration: none;
374
+ font: inherit;
375
+ margin: 0;
376
+ overflow: visible;
377
+ text-transform: none;
501
378
 
502
- .charcoal-switch__label_div {
503
- font-size: 14px;
504
- line-height: 22px;
505
- color: var(--charcoal-color-text-default);
506
- }
507
- .charcoal-text-field-root {
508
- display: grid;
509
- grid-template-columns: 1fr;
510
- grid-gap: 4px;
511
- }
379
+ -webkit-user-select: none;
512
380
 
513
- .charcoal-text-field-root[aria-disabled='true'] {
514
- opacity: 0.32;
515
- }
381
+ -moz-user-select: none;
516
382
 
517
- .charcoal-text-field-container {
383
+ user-select: none;
518
384
  display: flex;
519
- height: 40px;
385
+ align-items: center;
386
+ justify-content: center;
387
+ border-radius: 999999px;
520
388
  transition:
521
389
  0.2s background-color,
522
390
  0.2s box-shadow;
523
- color: var(--charcoal-color-text-secondary-default);
524
- background-color: var(--charcoal-color-container-secondary-default-a);
525
- border-radius: 4px;
526
- padding: 0 8px;
527
- line-height: 22px;
528
- font-size: 14px;
529
391
  }
530
392
 
531
- .charcoal-text-field-container[data-invalid='true'] {
532
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
533
- }
534
-
535
- .charcoal-text-field-container:not([aria-disabled='true']):hover {
536
- background-color: var(--charcoal-color-container-secondary-hover-a);
393
+ .charcoal-icon-button:disabled,
394
+ .charcoal-icon-button[aria-disabled]:not([aria-disabled='false']) {
395
+ cursor: default;
396
+ opacity: 0.32;
537
397
  }
538
398
 
539
- .charcoal-text-field-container:not([aria-disabled='true']):focus-within {
399
+ .charcoal-icon-button:focus {
540
400
  outline: none;
541
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
542
401
  }
543
402
 
544
- .charcoal-text-field-container:not([aria-disabled='true'])[data-invalid='true']:focus-within {
545
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
403
+ .charcoal-icon-button::-moz-focus-inner {
404
+ border-style: none;
405
+ padding: 0;
546
406
  }
547
407
 
548
- .charcoal-text-field-prefix {
549
- display: flex;
550
- align-items: center;
551
- margin-right: 4px;
552
- }
408
+ .charcoal-icon-button[data-size='XS'] {
409
+ width: 20px;
410
+ height: 20px;
411
+ }
553
412
 
554
- .charcoal-text-field-suffix {
555
- display: flex;
556
- align-items: center;
557
- gap: 8px;
558
- margin-left: 4px;
559
- }
413
+ .charcoal-icon-button[data-size='S'] {
414
+ width: 32px;
415
+ height: 32px;
416
+ }
560
417
 
561
- .charcoal-text-field-input-root {
562
- flex: 1;
563
- min-width: 0;
564
- overflow: hidden;
565
- }
418
+ .charcoal-icon-button[data-size='M'] {
419
+ width: 40px;
420
+ height: 40px;
421
+ }
566
422
 
567
- .charcoal-text-field-input {
568
- border: none;
569
- box-sizing: border-box;
570
- outline: none;
571
- font-family: inherit;
423
+ .charcoal-icon-button[data-variant='Default'] {
424
+ color: var(--charcoal-color-icon-tertiary-default);
425
+ background-color: transparent;
426
+ }
572
427
 
573
- /* Prevent zooming for iOS Safari */
574
- transform-origin: top left;
575
- transform: scale(0.875);
576
- width: calc(100% / 0.875);
577
- height: calc(100% / 0.875);
578
- font-size: calc(14px / 0.875);
579
- line-height: calc(22px / 0.875);
580
- padding-left: 0;
581
- padding-right: 0;
582
- border-radius: calc(4px / 0.875);
428
+ .charcoal-icon-button[data-variant='Default'][data-active='true']:not(:disabled):not([aria-disabled]),
429
+ .charcoal-icon-button[data-variant='Default'][data-active='true'][aria-disabled='false'] {
430
+ color: var(--charcoal-color-icon-tertiary-press);
431
+ background-color: var(--charcoal-color-container-press-a);
432
+ }
583
433
 
584
- /* Display box-shadow for iOS Safari */
585
- -webkit-appearance: none;
586
- -moz-appearance: none;
587
- appearance: none;
588
- background: transparent;
589
-
590
- color: var(--charcoal-color-text-secondary-default);
591
- }
592
-
593
- .charcoal-text-field-input::-moz-placeholder {
594
- color: var(--charcoal-color-text-placeholder-default);
595
- }
596
-
597
- .charcoal-text-field-input::placeholder {
598
- color: var(--charcoal-color-text-placeholder-default);
599
- }
434
+ .charcoal-icon-button[data-variant='Default'][data-active='false']:not(:disabled):not([aria-disabled]):hover,
435
+ .charcoal-icon-button[data-variant='Default'][data-active='false'][aria-disabled='false']:hover {
436
+ color: var(--charcoal-color-icon-tertiary-hover);
437
+ background-color: var(--charcoal-color-container-hover-a);
438
+ }
600
439
 
601
- .charcoal-text-field-line-counter {
602
- line-height: 22px;
603
- font-size: 14px;
604
- color: var(--charcoal-color-text-tertiary-default);
605
- }
606
- .charcoal-text-area-root {
607
- display: grid;
608
- grid-template-columns: 1fr;
609
- grid-gap: 4px;
610
- }
440
+ .charcoal-icon-button[data-variant='Default'][data-active='false']:not(:disabled):not([aria-disabled]):active,
441
+ .charcoal-icon-button[data-variant='Default'][data-active='false'][aria-disabled='false']:active {
442
+ color: var(--charcoal-color-icon-tertiary-press);
443
+ background-color: var(--charcoal-color-container-press-a);
444
+ }
611
445
 
612
- .charcoal-text-area-root[aria-disabled='true'] {
613
- opacity: 0.32;
446
+ .charcoal-icon-button[data-variant='Overlay'] {
447
+ color: var(--charcoal-color-icon-on-on-img-default);
448
+ background-color: var(--charcoal-color-container-on-img-default);
614
449
  }
615
450
 
616
- .charcoal-text-area-container {
617
- /* Runtime variable overridden by the React component. */
618
- --charcoal-text-area-rows: 4;
619
-
620
- position: relative;
621
- overflow: hidden;
451
+ .charcoal-icon-button[data-variant='Overlay'][data-active='true']:not(:disabled):not([aria-disabled]),
452
+ .charcoal-icon-button[data-variant='Overlay'][data-active='true'][aria-disabled='false'] {
453
+ color: var(--charcoal-color-icon-on-on-img-press);
454
+ background-color: var(--charcoal-color-container-on-img-press);
455
+ }
622
456
 
623
- color: var(--charcoal-color-text-secondary-default);
624
- background-color: var(--charcoal-color-container-secondary-default-a);
625
- border-radius: 4px;
626
- transition:
627
- 0.2s background-color,
628
- 0.2s box-shadow;
629
- height: calc(22px * var(--charcoal-text-area-rows) + 18px);
630
- }
457
+ .charcoal-icon-button[data-variant='Overlay'][data-active='false']:not(:disabled):not([aria-disabled]):hover,
458
+ .charcoal-icon-button[data-variant='Overlay'][data-active='false'][aria-disabled='false']:hover {
459
+ color: var(--charcoal-color-icon-on-on-img-hover);
460
+ background-color: var(--charcoal-color-container-on-img-hover);
461
+ }
631
462
 
632
- .charcoal-text-area-container[aria-invalid='true'] {
633
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
634
- }
463
+ .charcoal-icon-button[data-variant='Overlay'][data-active='false']:not(:disabled):not([aria-disabled]):active,
464
+ .charcoal-icon-button[data-variant='Overlay'][data-active='false'][aria-disabled='false']:active {
465
+ color: var(--charcoal-color-icon-on-on-img-press);
466
+ background-color: var(--charcoal-color-container-on-img-press);
467
+ }
635
468
 
636
- .charcoal-text-area-container:focus-within {
469
+ .charcoal-icon-button:not(:disabled):not([aria-disabled]):focus,
470
+ .charcoal-icon-button[aria-disabled='false']:focus {
637
471
  outline: none;
638
472
  box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
639
473
  }
640
474
 
641
- .charcoal-text-area-container:has([data-no-bottom-padding='true']) {
642
- height: calc(22px * (var(--charcoal-text-area-rows) + 1) + 18px);
643
- }
644
-
645
- .charcoal-text-area-container:not([aria-disabled='true']):hover {
646
- background-color: var(--charcoal-color-container-secondary-hover-a);
647
- }
648
-
649
- .charcoal-text-area-container[aria-invalid='true']:focus-within {
650
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
651
- }
652
-
653
- .charcoal-text-area-textarea {
654
- border: none;
655
- outline: none;
656
- resize: none;
657
- font-family: inherit;
658
- color: inherit;
659
- box-sizing: border-box;
660
-
661
- /* Prevent zooming for iOS Safari */
662
- --charcoal-textarea-safari-prevent-zoom-scale: 0.875;
663
- --charcoal-textarea-line-height: calc(
664
- 22px / var(--charcoal-textarea-safari-prevent-zoom-scale)
665
- );
666
- --charcoal-textarea-padding-y: calc(
667
- 8px / var(--charcoal-textarea-safari-prevent-zoom-scale)
668
- );
669
- --charcoal-textarea-padding-x: calc(
670
- 9px / var(--charcoal-textarea-safari-prevent-zoom-scale)
671
- );
672
-
673
- transform-origin: top left;
674
- transform: scale(var(--charcoal-textarea-safari-prevent-zoom-scale));
675
- width: calc(100% / var(--charcoal-textarea-safari-prevent-zoom-scale));
676
- font-size: calc(14px / var(--charcoal-textarea-safari-prevent-zoom-scale));
677
- line-height: var(--charcoal-textarea-line-height);
678
- padding: var(--charcoal-textarea-padding-y) var(--charcoal-textarea-padding-x);
679
- height: calc(
680
- var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
681
- var(--charcoal-textarea-padding-y) * 2
682
- );
683
-
684
- /* Display box-shadow for iOS Safari */
685
- -webkit-appearance: none;
686
- -moz-appearance: none;
687
- appearance: none;
688
-
689
- background: none;
690
- }
691
-
692
- .charcoal-text-area-textarea[data-no-bottom-padding='true'] {
693
- padding: var(--charcoal-textarea-padding-y)
694
- var(--charcoal-textarea-padding-x) 0;
695
- height: calc(
696
- var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
697
- var(--charcoal-textarea-padding-y)
698
- );
699
- }
700
-
701
- .charcoal-text-area-textarea::-moz-placeholder {
702
- color: var(--charcoal-color-text-placeholder-default);
475
+ .charcoal-icon-button:not(:disabled):not([aria-disabled]):focus-visible,
476
+ .charcoal-icon-button[aria-disabled='false']:focus-visible {
477
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
703
478
  }
704
479
 
705
- .charcoal-text-area-textarea::placeholder {
706
- color: var(--charcoal-color-text-placeholder-default);
480
+ .charcoal-icon-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
481
+ .charcoal-icon-button[aria-disabled='false']:focus:not(:focus-visible) {
482
+ box-shadow: none;
707
483
  }
708
-
709
- .charcoal-text-area-counter {
710
- position: absolute;
711
- bottom: 9px;
712
- right: 8px;
713
-
714
- line-height: 22px;
715
- font-size: 14px;
716
- color: var(--charcoal-color-text-tertiary-default);
717
- }
718
484
  .charcoal-icon {
719
485
  display: inline-flex;
720
486
  width: var(--charcoal-icon-size);
@@ -758,6 +524,29 @@ pixiv-icon:not(:defined)[name^='Inline/'] {
758
524
  pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
759
525
  --pixiv-icon-scale: 2;
760
526
  }
527
+ .charcoal-switch__label {
528
+ display: inline-grid;
529
+ grid-template-columns: auto 1fr;
530
+ align-items: center;
531
+ cursor: pointer;
532
+ outline: 0;
533
+ gap: 4px;
534
+ }
535
+
536
+ .charcoal-switch__label[aria-disabled='true'] {
537
+ opacity: 0.32;
538
+ cursor: default;
539
+ }
540
+
541
+ .charcoal-switch__label[aria-disabled='true'] > input {
542
+ opacity: 1;
543
+ }
544
+
545
+ .charcoal-switch__label_div {
546
+ font-size: 14px;
547
+ line-height: 22px;
548
+ color: var(--charcoal-color-text-default);
549
+ }
761
550
  .charcoal-modal-background {
762
551
  overflow: auto;
763
552
  display: flex;
@@ -828,72 +617,184 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
828
617
  font-weight: inherit;
829
618
  font-size: inherit;
830
619
  }
831
- .charcoal-loading-spinner {
832
- box-sizing: content-box;
833
- margin: auto;
834
- padding: 16px;
835
- border-radius: 8px;
836
- font-size: 48px;
837
- width: 48px;
838
- height: 48px;
839
- opacity: 0.84;
840
- color: var(--charcoal-color-icon-tertiary-default);
841
- background-color: var(--charcoal-color-background-default);
620
+ .charcoal-text-area-root {
621
+ display: grid;
622
+ grid-template-columns: 1fr;
623
+ grid-gap: 4px;
842
624
  }
843
625
 
844
- .charcoal-loading-spinner[data-transparent='true'] {
845
- background-color: transparent;
626
+ .charcoal-text-area-root[aria-disabled='true'] {
627
+ opacity: 0.32;
846
628
  }
847
629
 
848
- @keyframes charcoal-loading-spinner-icon-scale-out {
849
- from {
850
- transform: scale(0);
851
- opacity: 1;
852
- }
853
- to {
854
- transform: scale(1);
855
- opacity: 0;
856
- }
857
- }
630
+ .charcoal-text-area-container {
631
+ /* Runtime variable overridden by the React component. */
632
+ --charcoal-text-area-rows: 4;
858
633
 
859
- .charcoal-loading-spinner-icon {
860
- width: 1em;
861
- height: 1em;
862
- border-radius: 1em;
863
- background-color: currentColor;
864
- animation: charcoal-loading-spinner-icon-scale-out 1s infinite both ease-out;
634
+ position: relative;
635
+ overflow: hidden;
636
+
637
+ color: var(--charcoal-color-text-secondary-default);
638
+ background-color: var(--charcoal-color-container-secondary-default-a);
639
+ border-radius: 4px;
640
+ transition:
641
+ 0.2s background-color,
642
+ 0.2s box-shadow;
643
+ height: calc(22px * var(--charcoal-text-area-rows) + 18px);
865
644
  }
866
645
 
867
- .charcoal-loading-spinner-icon[data-reset-animation] {
868
- animation: none;
646
+ .charcoal-text-area-container[aria-invalid='true'] {
647
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
869
648
  }
870
649
 
871
- .charcoal-loading-spinner-icon[data-once='true'] {
872
- animation-iteration-count: 1;
650
+ .charcoal-text-area-container:focus-within {
651
+ outline: none;
652
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
873
653
  }
874
- .charcoal-modal-header-root {
875
- height: 64px;
876
- display: grid;
877
- align-content: center;
878
- justify-content: center;
879
- }
880
654
 
881
- @media (max-width: 743px) {
882
- .charcoal-modal-header-root[data-bottom-sheet='true'],
883
- .charcoal-modal-header-root[data-bottom-sheet='full'] {
884
- height: 48px;
655
+ .charcoal-text-area-container:has([data-no-bottom-padding='true']) {
656
+ height: calc(22px * (var(--charcoal-text-area-rows) + 1) + 18px);
885
657
  }
886
- }
887
-
888
- .charcoal-modal-header-title {
889
- color: var(--charcoal-color-text-default);
890
- font-size: 16px;
891
- line-height: 24px;
892
- font-weight: bold;
893
- display: flow-root;
894
- }
895
658
 
896
- .charcoal-modal-align {
659
+ .charcoal-text-area-container:not([aria-disabled='true']):hover {
660
+ background-color: var(--charcoal-color-container-secondary-hover-a);
661
+ }
662
+
663
+ .charcoal-text-area-container[aria-invalid='true']:focus-within {
664
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
665
+ }
666
+
667
+ .charcoal-text-area-textarea {
668
+ border: none;
669
+ outline: none;
670
+ resize: none;
671
+ font-family: inherit;
672
+ color: inherit;
673
+ box-sizing: border-box;
674
+
675
+ /* Prevent zooming for iOS Safari */
676
+ --charcoal-textarea-safari-prevent-zoom-scale: 0.875;
677
+ --charcoal-textarea-line-height: calc(
678
+ 22px / var(--charcoal-textarea-safari-prevent-zoom-scale)
679
+ );
680
+ --charcoal-textarea-padding-y: calc(
681
+ 8px / var(--charcoal-textarea-safari-prevent-zoom-scale)
682
+ );
683
+ --charcoal-textarea-padding-x: calc(
684
+ 9px / var(--charcoal-textarea-safari-prevent-zoom-scale)
685
+ );
686
+
687
+ transform-origin: top left;
688
+ transform: scale(var(--charcoal-textarea-safari-prevent-zoom-scale));
689
+ width: calc(100% / var(--charcoal-textarea-safari-prevent-zoom-scale));
690
+ font-size: calc(14px / var(--charcoal-textarea-safari-prevent-zoom-scale));
691
+ line-height: var(--charcoal-textarea-line-height);
692
+ padding: var(--charcoal-textarea-padding-y) var(--charcoal-textarea-padding-x);
693
+ height: calc(
694
+ var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
695
+ var(--charcoal-textarea-padding-y) * 2
696
+ );
697
+
698
+ /* Display box-shadow for iOS Safari */
699
+ -webkit-appearance: none;
700
+ -moz-appearance: none;
701
+ appearance: none;
702
+
703
+ background: none;
704
+ }
705
+
706
+ .charcoal-text-area-textarea[data-no-bottom-padding='true'] {
707
+ padding: var(--charcoal-textarea-padding-y)
708
+ var(--charcoal-textarea-padding-x) 0;
709
+ height: calc(
710
+ var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
711
+ var(--charcoal-textarea-padding-y)
712
+ );
713
+ }
714
+
715
+ .charcoal-text-area-textarea::-moz-placeholder {
716
+ color: var(--charcoal-color-text-placeholder-default);
717
+ }
718
+
719
+ .charcoal-text-area-textarea::placeholder {
720
+ color: var(--charcoal-color-text-placeholder-default);
721
+ }
722
+
723
+ .charcoal-text-area-counter {
724
+ position: absolute;
725
+ bottom: 9px;
726
+ right: 8px;
727
+
728
+ line-height: 22px;
729
+ font-size: 14px;
730
+ color: var(--charcoal-color-text-tertiary-default);
731
+ }
732
+ .charcoal-loading-spinner {
733
+ box-sizing: content-box;
734
+ margin: auto;
735
+ padding: 16px;
736
+ border-radius: 8px;
737
+ font-size: 48px;
738
+ width: 48px;
739
+ height: 48px;
740
+ opacity: 0.84;
741
+ color: var(--charcoal-color-icon-tertiary-default);
742
+ background-color: var(--charcoal-color-background-default);
743
+ }
744
+
745
+ .charcoal-loading-spinner[data-transparent='true'] {
746
+ background-color: transparent;
747
+ }
748
+
749
+ @keyframes charcoal-loading-spinner-icon-scale-out {
750
+ from {
751
+ transform: scale(0);
752
+ opacity: 1;
753
+ }
754
+ to {
755
+ transform: scale(1);
756
+ opacity: 0;
757
+ }
758
+ }
759
+
760
+ .charcoal-loading-spinner-icon {
761
+ width: 1em;
762
+ height: 1em;
763
+ border-radius: 1em;
764
+ background-color: currentColor;
765
+ animation: charcoal-loading-spinner-icon-scale-out 1s infinite both ease-out;
766
+ }
767
+
768
+ .charcoal-loading-spinner-icon[data-reset-animation] {
769
+ animation: none;
770
+ }
771
+
772
+ .charcoal-loading-spinner-icon[data-once='true'] {
773
+ animation-iteration-count: 1;
774
+ }
775
+ .charcoal-modal-header-root {
776
+ height: 64px;
777
+ display: grid;
778
+ align-content: center;
779
+ justify-content: center;
780
+ }
781
+
782
+ @media (max-width: 743px) {
783
+ .charcoal-modal-header-root[data-bottom-sheet='true'],
784
+ .charcoal-modal-header-root[data-bottom-sheet='full'] {
785
+ height: 48px;
786
+ }
787
+ }
788
+
789
+ .charcoal-modal-header-title {
790
+ color: var(--charcoal-color-text-default);
791
+ font-size: 16px;
792
+ line-height: 24px;
793
+ font-weight: bold;
794
+ display: flow-root;
795
+ }
796
+
797
+ .charcoal-modal-align {
897
798
  padding-left: 16px;
898
799
  padding-right: 16px;
899
800
  }
@@ -911,6 +812,164 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
911
812
  padding-left: 16px;
912
813
  padding-right: 16px;
913
814
  }
815
+ .charcoal-text-field-root {
816
+ display: grid;
817
+ grid-template-columns: 1fr;
818
+ grid-gap: 4px;
819
+ }
820
+
821
+ .charcoal-text-field-root[aria-disabled='true'] {
822
+ opacity: 0.32;
823
+ }
824
+
825
+ .charcoal-text-field-container {
826
+ display: flex;
827
+ height: 40px;
828
+ transition:
829
+ 0.2s background-color,
830
+ 0.2s box-shadow;
831
+ color: var(--charcoal-color-text-secondary-default);
832
+ background-color: var(--charcoal-color-container-secondary-default-a);
833
+ border-radius: 4px;
834
+ padding: 0 8px;
835
+ line-height: 22px;
836
+ font-size: 14px;
837
+ }
838
+
839
+ .charcoal-text-field-container[data-invalid='true'] {
840
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
841
+ }
842
+
843
+ .charcoal-text-field-container:not([aria-disabled='true']):hover {
844
+ background-color: var(--charcoal-color-container-secondary-hover-a);
845
+ }
846
+
847
+ .charcoal-text-field-container:not([aria-disabled='true']):focus-within {
848
+ outline: none;
849
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
850
+ }
851
+
852
+ .charcoal-text-field-container:not([aria-disabled='true'])[data-invalid='true']:focus-within {
853
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
854
+ }
855
+
856
+ .charcoal-text-field-prefix {
857
+ display: flex;
858
+ align-items: center;
859
+ margin-right: 4px;
860
+ }
861
+
862
+ .charcoal-text-field-suffix {
863
+ display: flex;
864
+ align-items: center;
865
+ gap: 8px;
866
+ margin-left: 4px;
867
+ }
868
+
869
+ .charcoal-text-field-input-root {
870
+ flex: 1;
871
+ min-width: 0;
872
+ overflow: hidden;
873
+ }
874
+
875
+ .charcoal-text-field-input {
876
+ border: none;
877
+ box-sizing: border-box;
878
+ outline: none;
879
+ font-family: inherit;
880
+
881
+ /* Prevent zooming for iOS Safari */
882
+ transform-origin: top left;
883
+ transform: scale(0.875);
884
+ width: calc(100% / 0.875);
885
+ height: calc(100% / 0.875);
886
+ font-size: calc(14px / 0.875);
887
+ line-height: calc(22px / 0.875);
888
+ padding-left: 0;
889
+ padding-right: 0;
890
+ border-radius: calc(4px / 0.875);
891
+
892
+ /* Display box-shadow for iOS Safari */
893
+ -webkit-appearance: none;
894
+ -moz-appearance: none;
895
+ appearance: none;
896
+ background: transparent;
897
+
898
+ color: var(--charcoal-color-text-secondary-default);
899
+ }
900
+
901
+ .charcoal-text-field-input::-moz-placeholder {
902
+ color: var(--charcoal-color-text-placeholder-default);
903
+ }
904
+
905
+ .charcoal-text-field-input::placeholder {
906
+ color: var(--charcoal-color-text-placeholder-default);
907
+ }
908
+
909
+ .charcoal-text-field-line-counter {
910
+ line-height: 22px;
911
+ font-size: 14px;
912
+ color: var(--charcoal-color-text-tertiary-default);
913
+ }
914
+ .charcoal-dropdown-selector-menu-item {
915
+ font-size: 14px;
916
+ line-height: 22px;
917
+ color: var(--charcoal-color-text-secondary-default);
918
+ padding: 9px 0;
919
+
920
+ display: flex;
921
+ align-items: center;
922
+ width: 100%;
923
+ margin-left: 20px;
924
+ }
925
+
926
+ .charcoal-dropdown-selector-menu-item[data-selected='true'] {
927
+ margin-left: 0px;
928
+ }
929
+
930
+ .charcoal-dropdown-selector-menu-item-icon {
931
+ color: var(--charcoal-color-text-secondary-default);
932
+ padding-right: 4px;
933
+ }
934
+
935
+ .charcoal-dropdown-selector-menu-item-container {
936
+ display: flex;
937
+ align-items: center;
938
+ }
939
+
940
+ .charcoal-dropdown-selector-menu-secondary {
941
+ font-size: 12px;
942
+ line-height: 20px;
943
+ color: var(--charcoal-color-text-tertiary-default);
944
+ padding-bottom: 9px;
945
+
946
+ display: flex;
947
+ align-items: center;
948
+ margin-left: 20px;
949
+ }
950
+
951
+ .charcoal-dropdown-selector-menu-fullwidth {
952
+ width: 100%;
953
+ }
954
+ .charcoal-menu-item-group {
955
+ display: block;
956
+ }
957
+
958
+ .charcoal-menu-item-group > span {
959
+ display: block;
960
+ color: var(--charcoal-color-text-tertiary-default);
961
+ font-size: 12px;
962
+ font-weight: bold;
963
+ padding: 12px 0 8px 16px;
964
+ }
965
+
966
+ .charcoal-menu-item-group > ul {
967
+ padding-left: 0;
968
+ margin: 0;
969
+ box-sizing: border-box;
970
+ list-style: none;
971
+ overflow: hidden;
972
+ }
914
973
  .charcoal-dropdown-selector-root {
915
974
  display: grid;
916
975
  grid-template-columns: 1fr;
@@ -995,65 +1054,6 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
995
1054
  .charcoal-ui-dropdown-selector-icon {
996
1055
  color: var(--charcoal-color-icon-secondary-default);
997
1056
  }
998
- .charcoal-menu-item-group {
999
- display: block;
1000
- }
1001
-
1002
- .charcoal-menu-item-group > span {
1003
- display: block;
1004
- color: var(--charcoal-color-text-tertiary-default);
1005
- font-size: 12px;
1006
- font-weight: bold;
1007
- padding: 12px 0 8px 16px;
1008
- }
1009
-
1010
- .charcoal-menu-item-group > ul {
1011
- padding-left: 0;
1012
- margin: 0;
1013
- box-sizing: border-box;
1014
- list-style: none;
1015
- overflow: hidden;
1016
- }
1017
- .charcoal-dropdown-selector-menu-item {
1018
- font-size: 14px;
1019
- line-height: 22px;
1020
- color: var(--charcoal-color-text-secondary-default);
1021
- padding: 9px 0;
1022
-
1023
- display: flex;
1024
- align-items: center;
1025
- width: 100%;
1026
- margin-left: 20px;
1027
- }
1028
-
1029
- .charcoal-dropdown-selector-menu-item[data-selected='true'] {
1030
- margin-left: 0px;
1031
- }
1032
-
1033
- .charcoal-dropdown-selector-menu-item-icon {
1034
- color: var(--charcoal-color-text-secondary-default);
1035
- padding-right: 4px;
1036
- }
1037
-
1038
- .charcoal-dropdown-selector-menu-item-container {
1039
- display: flex;
1040
- align-items: center;
1041
- }
1042
-
1043
- .charcoal-dropdown-selector-menu-secondary {
1044
- font-size: 12px;
1045
- line-height: 20px;
1046
- color: var(--charcoal-color-text-tertiary-default);
1047
- padding-bottom: 9px;
1048
-
1049
- display: flex;
1050
- align-items: center;
1051
- margin-left: 20px;
1052
- }
1053
-
1054
- .charcoal-dropdown-selector-menu-fullwidth {
1055
- width: 100%;
1056
- }
1057
1057
  .charcoal-segmented-control {
1058
1058
  display: inline-flex;
1059
1059
  align-items: center;
@@ -1125,64 +1125,52 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1125
1125
  white-space: nowrap;
1126
1126
  opacity: 0;
1127
1127
  }
1128
- .charcoal-hint-text {
1129
- background-color: var(--charcoal-color-container-secondary-default);
1130
- border-radius: 8px;
1131
- padding: 12px 16px;
1128
+ .charcoal-checkbox__label {
1129
+ position: relative;
1130
+ cursor: pointer;
1132
1131
  display: flex;
1133
- align-items: flex-start;
1132
+ gap: 4px;
1134
1133
  }
1135
1134
 
1136
- .charcoal-hint-text[data-context='page'] {
1137
- justify-content: center;
1135
+ .charcoal-checkbox__label[aria-disabled='true'] {
1136
+ cursor: default;
1137
+ opacity: 0.32;
1138
1138
  }
1139
1139
 
1140
- @media (min-width: 744px) {
1141
-
1142
- .charcoal-hint-text[data-context='page'] {
1143
- padding: 20px 40px
1144
- }
1140
+ .charcoal-checkbox__label[aria-disabled='true'] > input {
1141
+ opacity: 1;
1145
1142
  }
1146
1143
 
1147
- .charcoal-hint-text-icon {
1148
- display: flex;
1149
- align-items: center;
1150
- color: var(--charcoal-color-icon-tertiary-default);
1151
- height: 22px;
1152
- margin: 0 4px 0 0;
1144
+ .charcoal-checkbox__label_div {
1145
+ flex: 1;
1146
+ color: var(--charcoal-color-text-default);
1147
+ font-size: 14px;
1148
+ line-height: 20px;
1153
1149
  }
1150
+ .charcoal-text-ellipsis {
1151
+ /* Runtime variables overridden by the React component. */
1152
+ --charcoal-text-ellipsis-line-limit: 1;
1153
+ --charcoal-text-ellipsis-line-height: inherit;
1154
1154
 
1155
- .charcoal-hint-text-message {
1156
- color: var(--charcoal-color-text-secondary-default);
1157
- font-size: 14px;
1158
- line-height: 22px;
1159
- display: flow-root;
1160
- margin: 0;
1161
- min-width: 0;
1155
+ overflow: hidden;
1162
1156
  overflow-wrap: break-word;
1163
- }
1164
- .charcoal-checkbox__label {
1165
- position: relative;
1166
- cursor: pointer;
1167
- display: flex;
1168
- gap: 4px;
1157
+ display: -webkit-box;
1158
+ -webkit-box-orient: vertical;
1159
+ -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1169
1160
  }
1170
1161
 
1171
- .charcoal-checkbox__label[aria-disabled='true'] {
1172
- cursor: default;
1173
- opacity: 0.32;
1162
+ .charcoal-text-ellipsis[data-has-line-height='true'] {
1163
+ line-height: var(--charcoal-text-ellipsis-line-height);
1164
+ }
1165
+
1166
+ .charcoal-text-ellipsis[data-has-line-height='false'] {
1167
+ line-height: inherit;
1174
1168
  }
1175
1169
 
1176
- .charcoal-checkbox__label[aria-disabled='true'] > input {
1177
- opacity: 1;
1178
- }
1179
-
1180
- .charcoal-checkbox__label_div {
1181
- flex: 1;
1182
- color: var(--charcoal-color-text-default);
1183
- font-size: 14px;
1184
- line-height: 20px;
1185
- }
1170
+ .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1171
+ text-overflow: ellipsis;
1172
+ white-space: nowrap;
1173
+ }
1186
1174
  .charcoal-tag-item {
1187
1175
  --charcoal-tag-item-color: var(--charcoal-color-text-on-primary-default);
1188
1176
  --charcoal-tag-item-size: 40px;
@@ -1337,144 +1325,156 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1337
1325
  .charcoal-tag-item__labe__text[data-has-translate='true']::after {
1338
1326
  display: none;
1339
1327
  }
1340
- .charcoal-text-ellipsis {
1341
- /* Runtime variables overridden by the React component. */
1342
- --charcoal-text-ellipsis-line-limit: 1;
1343
- --charcoal-text-ellipsis-line-height: inherit;
1344
-
1345
- overflow: hidden;
1346
- overflow-wrap: break-word;
1347
- display: -webkit-box;
1348
- -webkit-box-orient: vertical;
1349
- -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1328
+ .charcoal-pagination {
1329
+ display: flex;
1330
+ justify-content: center;
1331
+ align-items: center;
1350
1332
  }
1351
1333
 
1352
- .charcoal-text-ellipsis[data-has-line-height='true'] {
1353
- line-height: var(--charcoal-text-ellipsis-line-height);
1334
+ .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1335
+ min-width: 32px;
1336
+ min-height: 32px;
1354
1337
  }
1355
1338
 
1356
- .charcoal-text-ellipsis[data-has-line-height='false'] {
1357
- line-height: inherit;
1339
+ .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1340
+ min-width: 40px;
1341
+ min-height: 40px;
1358
1342
  }
1359
1343
 
1360
- .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1361
- text-overflow: ellipsis;
1362
- white-space: nowrap;
1363
- }
1364
- .charcoal-notification-region {
1365
- position: fixed;
1366
- left: 0;
1367
- right: 0;
1368
- display: grid;
1369
- justify-content: center;
1370
- pointer-events: none;
1371
- box-sizing: border-box;
1372
- }
1344
+ /* stylelint-disable no-descending-specificity */
1345
+ .charcoal-pagination-button {
1346
+ cursor: pointer;
1347
+ -webkit-appearance: none;
1348
+ -moz-appearance: none;
1349
+ appearance: none;
1350
+ padding: 0;
1351
+ border-style: none;
1352
+ outline: none;
1353
+ text-decoration: none;
1354
+ font-family: inherit;
1355
+ font-style: inherit;
1356
+ font-variant: inherit;
1357
+ margin: 0;
1358
+ -webkit-user-select: none;
1359
+ -moz-user-select: none;
1360
+ user-select: none;
1373
1361
 
1374
- .charcoal-notification {
1375
- box-sizing: border-box;
1376
- border-radius: var(--charcoal-radius-oval);
1377
- width: -moz-fit-content;
1378
- width: fit-content;
1379
- max-width: calc(100vw - var(--charcoal-space-46));
1380
1362
  display: flex;
1381
1363
  align-items: center;
1382
1364
  justify-content: center;
1383
- gap: var(--charcoal-space-20);
1384
- pointer-events: auto;
1385
- }
1365
+ font-size: 14px;
1366
+ font-weight: 700;
1367
+ line-height: 22px;
1386
1368
 
1387
- .charcoal-notification-content {
1388
- display: flex;
1389
- align-items: center;
1390
- min-width: 0;
1391
- }
1369
+ /* HACK:
1370
+ * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1371
+ * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1372
+ */
1373
+ -webkit-transform: translateZ(0);
1392
1374
 
1393
- .charcoal-notification-label {
1394
- min-width: 0;
1395
- overflow: hidden;
1396
- overflow-wrap: break-word;
1397
- display: -webkit-box;
1398
- -webkit-box-orient: vertical;
1399
- -webkit-line-clamp: 2;
1400
- font-size: var(--charcoal-text-font-size-caption-m);
1401
- font-weight: var(--charcoal-text-font-weight-bold);
1402
- line-height: var(--charcoal-text-line-height-caption-m);
1375
+ color: var(--charcoal-color-text-tertiary-default);
1376
+ background-color: transparent;
1377
+ border-radius: 20px;
1378
+ transition:
1379
+ 0.2s background-color,
1380
+ 0.2s box-shadow;
1403
1381
  }
1404
-
1405
- @media (prefers-reduced-motion: reduce) {
1406
- .charcoal-notification,
1407
- .charcoal-notification[data-exiting='true'] {
1408
- animation: none;
1382
+ .charcoal-pagination-button:focus {
1383
+ outline: none;
1409
1384
  }
1410
- }
1411
- .charcoal-snackbar-region {
1412
- --charcoal-snackbar-offset: 16px;
1413
- }
1414
-
1415
- .charcoal-snackbar-region[data-position='top'] {
1416
- --charcoal-snackbar-enter-offset: calc(-1 * var(--charcoal-space-30));
1417
-
1418
- top: calc(
1419
- env(safe-area-inset-top, 0px) + max(var(--charcoal-snackbar-offset), 16px)
1420
- );
1385
+ .charcoal-pagination-button::-moz-focus-inner {
1386
+ border-style: none;
1387
+ padding: 0;
1421
1388
  }
1422
-
1423
- .charcoal-snackbar-region[data-position='bottom'] {
1424
- --charcoal-snackbar-enter-offset: var(--charcoal-space-30);
1425
-
1426
- bottom: calc(
1427
- env(safe-area-inset-bottom, 0px) +
1428
- max(var(--charcoal-snackbar-offset), 16px)
1429
- );
1389
+ .charcoal-pagination-button[hidden] {
1390
+ visibility: hidden;
1391
+ display: block;
1430
1392
  }
1431
-
1432
- .charcoal-snackbar {
1433
- min-height: 44px;
1434
- padding: var(--charcoal-space-25) var(--charcoal-space-40);
1435
- background-color: var(--charcoal-color-container-default);
1436
- color: var(--charcoal-color-text-default);
1437
- border: var(--charcoal-border-width-m) solid
1438
- var(--charcoal-color-border-secondary);
1439
- animation: charcoal-snackbar-enter 0.3s ease-out both;
1440
- }
1441
-
1442
- .charcoal-snackbar[data-exiting='true'] {
1443
- animation: charcoal-snackbar-exit 0.3s ease-out both;
1393
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1394
+ .charcoal-pagination-button[aria-disabled='false']:hover {
1395
+ color: var(--charcoal-color-text-tertiary-default);
1396
+ background-color: var(--charcoal-color-container-secondary-default);
1444
1397
  }
1445
-
1446
- .charcoal-snackbar[data-with-action='true'] {
1447
- min-height: 56px;
1448
- padding: var(--charcoal-space-25) var(--charcoal-space-30)
1449
- var(--charcoal-space-25) var(--charcoal-space-40);
1398
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1399
+ .charcoal-pagination-button[aria-disabled='false']:active {
1400
+ color: var(--charcoal-color-text-tertiary-press);
1401
+ background-color: var(--charcoal-color-container-tertiary-press);
1450
1402
  }
1451
-
1452
- .charcoal-snackbar[data-dim='true'] {
1403
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1404
+ .charcoal-pagination-button[aria-disabled='false']:focus {
1405
+ outline: none;
1406
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1407
+ }
1408
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1409
+ .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1410
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1411
+ }
1412
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1413
+ .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1414
+ box-shadow: none;
1415
+ }
1416
+ .charcoal-pagination-button[aria-current] {
1417
+ cursor: default;
1453
1418
  background-color: var(--charcoal-color-container-hud-default);
1454
1419
  color: var(--charcoal-color-text-on-hud-default);
1455
- border-color: var(--charcoal-color-border-hud);
1456
1420
  }
1421
+ .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1422
+ .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1423
+ background-color: var(--charcoal-color-container-hud-default);
1424
+ color: var(--charcoal-color-text-on-hud-default);
1425
+ }
1426
+ /* stylelint-enable no-descending-specificity */
1457
1427
 
1458
- @keyframes charcoal-snackbar-enter {
1459
- from {
1460
- opacity: 0;
1461
- transform: translateY(var(--charcoal-snackbar-enter-offset));
1428
+ .charcoal-pagination-nav-button[data-hidden] {
1429
+ visibility: hidden;
1430
+ }
1431
+
1432
+ .charcoal-pagination-spacer,
1433
+ .charcoal-pagination-spacer:hover,
1434
+ .charcoal-pagination-spacer:active {
1435
+ cursor: default;
1436
+ color: var(--charcoal-color-text-tertiary-default);
1437
+ background: none;
1462
1438
  }
1463
1439
 
1464
- to {
1440
+ .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1465
1441
  opacity: 1;
1466
- transform: translateY(0);
1467
1442
  }
1443
+ .charcoal-hint-text {
1444
+ background-color: var(--charcoal-color-container-secondary-default);
1445
+ border-radius: 8px;
1446
+ padding: 12px 16px;
1447
+ display: flex;
1448
+ align-items: flex-start;
1468
1449
  }
1469
1450
 
1470
- @keyframes charcoal-snackbar-exit {
1471
- from {
1472
- opacity: 1;
1451
+ .charcoal-hint-text[data-context='page'] {
1452
+ justify-content: center;
1473
1453
  }
1474
1454
 
1475
- to {
1476
- opacity: 0;
1455
+ @media (min-width: 744px) {
1456
+
1457
+ .charcoal-hint-text[data-context='page'] {
1458
+ padding: 20px 40px
1477
1459
  }
1460
+ }
1461
+
1462
+ .charcoal-hint-text-icon {
1463
+ display: flex;
1464
+ align-items: center;
1465
+ color: var(--charcoal-color-icon-tertiary-default);
1466
+ height: 22px;
1467
+ margin: 0 4px 0 0;
1468
+ }
1469
+
1470
+ .charcoal-hint-text-message {
1471
+ color: var(--charcoal-color-text-secondary-default);
1472
+ font-size: 14px;
1473
+ line-height: 22px;
1474
+ display: flow-root;
1475
+ margin: 0;
1476
+ min-width: 0;
1477
+ overflow-wrap: break-word;
1478
1478
  }
1479
1479
  .charcoal-carousel {
1480
1480
  --charcoal-carousel-gap: 0px;
@@ -1732,9 +1732,9 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1732
1732
 
1733
1733
  /* ── CSS Scroll Markers (progressive enhancement) ── */
1734
1734
 
1735
- /* CSS Scroll Markers / Anchor Positioning は新しい仕様で、stylelint がプロパティ・
1736
- 擬似要素・擬似クラスを未知と判定するため、この @supports ブロックでは該当ルールを無効化する。 */
1737
- /* stylelint-disable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
1735
+ /* CSS Scroll Markers / Anchor Positioning の擬似要素・擬似クラスは新しい仕様のため、
1736
+ この @supports ブロックでは該当ルールを無効化する。 */
1737
+ /* stylelint-disable selector-pseudo-class-no-unknown */
1738
1738
  @supports (scroll-marker-group: after) {
1739
1739
  .charcoal-carousel[data-indicator='true'] {
1740
1740
  padding-bottom: 40px;
@@ -1794,167 +1794,105 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1794
1794
  display: none;
1795
1795
  }
1796
1796
  }
1797
- /* stylelint-enable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
1798
- .charcoal-pagination {
1797
+ /* stylelint-enable selector-pseudo-class-no-unknown */
1798
+ .charcoal-notification-region {
1799
+ position: fixed;
1800
+ left: 0;
1801
+ right: 0;
1802
+ display: grid;
1803
+ justify-content: center;
1804
+ pointer-events: none;
1805
+ box-sizing: border-box;
1806
+ }
1807
+
1808
+ .charcoal-notification {
1809
+ box-sizing: border-box;
1810
+ border-radius: var(--charcoal-radius-oval);
1811
+ width: -moz-fit-content;
1812
+ width: fit-content;
1813
+ max-width: calc(100vw - var(--charcoal-space-46));
1799
1814
  display: flex;
1800
- justify-content: center;
1801
1815
  align-items: center;
1816
+ justify-content: center;
1817
+ gap: var(--charcoal-space-20);
1818
+ pointer-events: auto;
1802
1819
  }
1803
1820
 
1804
- .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1805
- min-width: 32px;
1806
- min-height: 32px;
1807
- }
1808
-
1809
- .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1810
- min-width: 40px;
1811
- min-height: 40px;
1812
- }
1813
-
1814
- /* stylelint-disable no-descending-specificity */
1815
- .charcoal-pagination-button {
1816
- cursor: pointer;
1817
- -webkit-appearance: none;
1818
- -moz-appearance: none;
1819
- appearance: none;
1820
- padding: 0;
1821
- border-style: none;
1822
- outline: none;
1823
- text-decoration: none;
1824
- font-family: inherit;
1825
- font-style: inherit;
1826
- font-variant: inherit;
1827
- margin: 0;
1828
- -webkit-user-select: none;
1829
- -moz-user-select: none;
1830
- user-select: none;
1831
-
1821
+ .charcoal-notification-content {
1832
1822
  display: flex;
1833
1823
  align-items: center;
1834
- justify-content: center;
1835
- font-size: 14px;
1836
- font-weight: 700;
1837
- line-height: 22px;
1838
-
1839
- /* HACK:
1840
- * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1841
- * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1842
- */
1843
- /* stylelint-disable-next-line property-no-vendor-prefix */
1844
- -webkit-transform: translateZ(0);
1845
-
1846
- color: var(--charcoal-color-text-tertiary-default);
1847
- background-color: transparent;
1848
- border-radius: 20px;
1849
- transition:
1850
- 0.2s background-color,
1851
- 0.2s box-shadow;
1824
+ min-width: 0;
1852
1825
  }
1853
- .charcoal-pagination-button:focus {
1854
- outline: none;
1855
- }
1856
- .charcoal-pagination-button::-moz-focus-inner {
1857
- border-style: none;
1858
- padding: 0;
1859
- }
1860
- .charcoal-pagination-button[hidden] {
1861
- visibility: hidden;
1862
- display: block;
1863
- }
1864
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1865
- .charcoal-pagination-button[aria-disabled='false']:hover {
1866
- color: var(--charcoal-color-text-tertiary-default);
1867
- background-color: var(--charcoal-color-container-secondary-default);
1868
- }
1869
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1870
- .charcoal-pagination-button[aria-disabled='false']:active {
1871
- color: var(--charcoal-color-text-tertiary-press);
1872
- background-color: var(--charcoal-color-container-tertiary-press);
1873
- }
1874
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1875
- .charcoal-pagination-button[aria-disabled='false']:focus {
1876
- outline: none;
1877
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1878
- }
1879
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1880
- .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1881
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1882
- }
1883
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1884
- .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1885
- box-shadow: none;
1886
- }
1887
- .charcoal-pagination-button[aria-current] {
1888
- cursor: default;
1889
- background-color: var(--charcoal-color-container-hud-default);
1890
- color: var(--charcoal-color-text-on-hud-default);
1891
- }
1892
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1893
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1894
- background-color: var(--charcoal-color-container-hud-default);
1895
- color: var(--charcoal-color-text-on-hud-default);
1896
- }
1897
- /* stylelint-enable no-descending-specificity */
1898
1826
 
1899
- .charcoal-pagination-nav-button[data-hidden] {
1900
- visibility: hidden;
1827
+ .charcoal-notification-label {
1828
+ min-width: 0;
1829
+ overflow: hidden;
1830
+ overflow-wrap: break-word;
1831
+ display: -webkit-box;
1832
+ -webkit-box-orient: vertical;
1833
+ -webkit-line-clamp: 2;
1834
+ font-size: var(--charcoal-text-font-size-caption-m);
1835
+ font-weight: var(--charcoal-text-font-weight-bold);
1836
+ line-height: var(--charcoal-text-line-height-caption-m);
1901
1837
  }
1902
1838
 
1903
- .charcoal-pagination-spacer,
1904
- .charcoal-pagination-spacer:hover,
1905
- .charcoal-pagination-spacer:active {
1906
- cursor: default;
1907
- color: var(--charcoal-color-text-tertiary-default);
1908
- background: none;
1909
- }
1910
-
1911
- .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1912
- opacity: 1;
1839
+ @media (prefers-reduced-motion: reduce) {
1840
+ .charcoal-notification,
1841
+ .charcoal-notification[data-exiting='true'] {
1842
+ animation: none;
1913
1843
  }
1914
- .charcoal-toast-region {
1915
- --charcoal-toast-offset: 16px;
1844
+ }
1845
+ .charcoal-snackbar-region {
1846
+ --charcoal-snackbar-offset: 16px;
1916
1847
  }
1917
1848
 
1918
- .charcoal-toast-region[data-position='top'] {
1919
- --charcoal-toast-enter-offset: calc(-1 * var(--charcoal-space-30));
1849
+ .charcoal-snackbar-region[data-position='top'] {
1850
+ --charcoal-snackbar-enter-offset: calc(-1 * var(--charcoal-space-30));
1920
1851
 
1921
1852
  top: calc(
1922
- env(safe-area-inset-top, 0px) + max(var(--charcoal-toast-offset), 16px)
1853
+ env(safe-area-inset-top, 0px) + max(var(--charcoal-snackbar-offset), 16px)
1923
1854
  );
1924
1855
  }
1925
1856
 
1926
- .charcoal-toast-region[data-position='bottom'] {
1927
- --charcoal-toast-enter-offset: var(--charcoal-space-30);
1857
+ .charcoal-snackbar-region[data-position='bottom'] {
1858
+ --charcoal-snackbar-enter-offset: var(--charcoal-space-30);
1928
1859
 
1929
1860
  bottom: calc(
1930
- env(safe-area-inset-bottom, 0px) + max(var(--charcoal-toast-offset), 16px)
1861
+ env(safe-area-inset-bottom, 0px) +
1862
+ max(var(--charcoal-snackbar-offset), 16px)
1931
1863
  );
1932
1864
  }
1933
1865
 
1934
- .charcoal-toast {
1935
- min-height: 40px;
1936
- padding: var(--charcoal-space-20) var(--charcoal-space-40);
1937
- color: var(--charcoal-color-text-on-positive-default);
1938
- border: var(--charcoal-border-width-m) solid var(--charcoal-color-border-hud);
1939
- animation: charcoal-toast-enter 0.3s ease-out both;
1866
+ .charcoal-snackbar {
1867
+ min-height: 44px;
1868
+ padding: var(--charcoal-space-25) var(--charcoal-space-40);
1869
+ background-color: var(--charcoal-color-container-default);
1870
+ color: var(--charcoal-color-text-default);
1871
+ border: var(--charcoal-border-width-m) solid
1872
+ var(--charcoal-color-border-secondary);
1873
+ animation: charcoal-snackbar-enter 0.3s ease-out both;
1940
1874
  }
1941
1875
 
1942
- .charcoal-toast[data-exiting='true'] {
1943
- animation: charcoal-toast-exit 0.3s ease-out both;
1876
+ .charcoal-snackbar[data-exiting='true'] {
1877
+ animation: charcoal-snackbar-exit 0.3s ease-out both;
1944
1878
  }
1945
1879
 
1946
- .charcoal-toast[data-type='success'] {
1947
- background-color: var(--charcoal-color-container-positive-default);
1880
+ .charcoal-snackbar[data-with-action='true'] {
1881
+ min-height: 56px;
1882
+ padding: var(--charcoal-space-25) var(--charcoal-space-30)
1883
+ var(--charcoal-space-25) var(--charcoal-space-40);
1948
1884
  }
1949
1885
 
1950
- .charcoal-toast[data-type='error'] {
1951
- background-color: var(--charcoal-color-container-negative-default);
1886
+ .charcoal-snackbar[data-dim='true'] {
1887
+ background-color: var(--charcoal-color-container-hud-default);
1888
+ color: var(--charcoal-color-text-on-hud-default);
1889
+ border-color: var(--charcoal-color-border-hud);
1952
1890
  }
1953
1891
 
1954
- @keyframes charcoal-toast-enter {
1892
+ @keyframes charcoal-snackbar-enter {
1955
1893
  from {
1956
1894
  opacity: 0;
1957
- transform: translateY(var(--charcoal-toast-enter-offset));
1895
+ transform: translateY(var(--charcoal-snackbar-enter-offset));
1958
1896
  }
1959
1897
 
1960
1898
  to {
@@ -1963,7 +1901,7 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1963
1901
  }
1964
1902
  }
1965
1903
 
1966
- @keyframes charcoal-toast-exit {
1904
+ @keyframes charcoal-snackbar-exit {
1967
1905
  from {
1968
1906
  opacity: 1;
1969
1907
  }
@@ -1972,99 +1910,76 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1972
1910
  opacity: 0;
1973
1911
  }
1974
1912
  }
1975
- .charcoal-text-field-assistive-text {
1976
- font-size: 14px;
1977
- line-height: 22px;
1978
- margin: 0;
1979
- color: var(--charcoal-color-text-secondary-default);
1980
- }
1981
-
1982
- .charcoal-text-field-assistive-text[data-invalid='true'] {
1983
- color: var(--charcoal-color-text-negative-default);
1913
+ .charcoal-toast-region {
1914
+ --charcoal-toast-offset: 16px;
1984
1915
  }
1985
- .charcoal-switch-input {
1986
- cursor: pointer;
1987
- -webkit-appearance: none;
1988
- -moz-appearance: none;
1989
- appearance: none;
1990
- display: inline-flex;
1991
- position: relative;
1992
- box-sizing: border-box;
1993
- width: 28px;
1994
- border: 2px solid transparent;
1995
1916
 
1996
- transition-property: background-color, box-shadow;
1997
- transition-duration: 0.2s;
1917
+ .charcoal-toast-region[data-position='top'] {
1918
+ --charcoal-toast-enter-offset: calc(-1 * var(--charcoal-space-30));
1998
1919
 
1999
- outline: none;
2000
- border-radius: 16px;
2001
- height: 16px;
2002
- margin: 0;
2003
- background-color: var(--charcoal-color-container-neutral-default);
2004
- }
1920
+ top: calc(
1921
+ env(safe-area-inset-top, 0px) + max(var(--charcoal-toast-offset), 16px)
1922
+ );
1923
+ }
2005
1924
 
2006
- .charcoal-switch-input:disabled,
2007
- .charcoal-switch-input[readonly] {
2008
- opacity: 0.32;
2009
- cursor: default;
2010
- }
1925
+ .charcoal-toast-region[data-position='bottom'] {
1926
+ --charcoal-toast-enter-offset: var(--charcoal-space-30);
2011
1927
 
2012
- .charcoal-switch-input::after {
2013
- content: '';
2014
- position: absolute;
2015
- display: block;
2016
- top: 0;
2017
- left: 0;
2018
- width: 12px;
2019
- height: 12px;
2020
- transform: translateX(0);
2021
- transition: transform 0.2s;
2022
- border-radius: 1024px;
2023
- background-color: var(--charcoal-color-icon-on-primary-default);
2024
- }
1928
+ bottom: calc(
1929
+ env(safe-area-inset-bottom, 0px) + max(var(--charcoal-toast-offset), 16px)
1930
+ );
1931
+ }
2025
1932
 
2026
- .charcoal-switch-input:checked::after {
2027
- transform: translateX(12px);
2028
- transition: transform 0.2s;
1933
+ .charcoal-toast {
1934
+ min-height: 40px;
1935
+ padding: var(--charcoal-space-20) var(--charcoal-space-40);
1936
+ color: var(--charcoal-color-text-on-positive-default);
1937
+ border: var(--charcoal-border-width-m) solid var(--charcoal-color-border-hud);
1938
+ animation: charcoal-toast-enter 0.3s ease-out both;
2029
1939
  }
2030
1940
 
2031
- .charcoal-switch-input:checked {
2032
- background-color: var(--charcoal-color-container-primary-default);
2033
- }
1941
+ .charcoal-toast[data-exiting='true'] {
1942
+ animation: charcoal-toast-exit 0.3s ease-out both;
1943
+ }
2034
1944
 
2035
- .charcoal-switch-input:not(:disabled):hover {
2036
- background-color: var(--charcoal-color-container-neutral-hover);
2037
- }
1945
+ .charcoal-toast[data-type='success'] {
1946
+ background-color: var(--charcoal-color-container-positive-default);
1947
+ }
2038
1948
 
2039
- .charcoal-switch-input:not(:disabled):active {
2040
- background-color: var(--charcoal-color-container-neutral-press);
2041
- }
1949
+ .charcoal-toast[data-type='error'] {
1950
+ background-color: var(--charcoal-color-container-negative-default);
1951
+ }
2042
1952
 
2043
- .charcoal-switch-input:not(:disabled):focus {
2044
- outline: none;
2045
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2046
- }
2047
- .charcoal-switch-input:not(:disabled):focus-visible {
2048
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2049
- }
2050
- .charcoal-switch-input:not(:disabled):focus:not(:focus-visible) {
2051
- box-shadow: none;
2052
- }
1953
+ @keyframes charcoal-toast-enter {
1954
+ from {
1955
+ opacity: 0;
1956
+ transform: translateY(var(--charcoal-toast-enter-offset));
1957
+ }
2053
1958
 
2054
- .charcoal-switch-input:not(:disabled)::after:hover {
2055
- background-color: var(--charcoal-color-icon-on-primary-hover);
1959
+ to {
1960
+ opacity: 1;
1961
+ transform: translateY(0);
1962
+ }
2056
1963
  }
2057
1964
 
2058
- .charcoal-switch-input:not(:disabled)::after:active {
2059
- background-color: var(--charcoal-color-icon-on-primary-press);
2060
- }
1965
+ @keyframes charcoal-toast-exit {
1966
+ from {
1967
+ opacity: 1;
1968
+ }
2061
1969
 
2062
- .charcoal-switch-input:not(:disabled):checked:hover {
2063
- background-color: var(--charcoal-color-container-primary-hover);
1970
+ to {
1971
+ opacity: 0;
1972
+ }
1973
+ }
1974
+ .charcoal-text-field-assistive-text {
1975
+ font-size: 14px;
1976
+ line-height: 22px;
1977
+ margin: 0;
1978
+ color: var(--charcoal-color-text-secondary-default);
2064
1979
  }
2065
1980
 
2066
- .charcoal-switch-input:not(:disabled):checked:active {
2067
- background-color: var(--charcoal-color-container-primary-press);
1981
+ .charcoal-text-field-assistive-text[data-invalid='true'] {
1982
+ color: var(--charcoal-color-text-negative-default);
2068
1983
  }
2069
1984
  .charcoal-radio-input {
2070
1985
  -webkit-appearance: none;
@@ -2154,67 +2069,6 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2154
2069
  .charcoal-radio-input:checked:not(:disabled):active::after {
2155
2070
  background-color: var(--charcoal-color-icon-on-primary-press);
2156
2071
  }
2157
- .charcoal-field-label {
2158
- font-size: 14px;
2159
- line-height: 22px;
2160
- font-weight: bold;
2161
- display: flow-root;
2162
- color: var(--charcoal-color-text-default-text1);
2163
- }
2164
-
2165
- .charcoal-field-label-required-text {
2166
- font-size: 14px;
2167
- line-height: 22px;
2168
- display: flow-root;
2169
- color: var(--charcoal-color-text-secondary-default);
2170
- }
2171
-
2172
- .charcoal-field-label-sub-label {
2173
- font-size: 14px;
2174
- line-height: 22px;
2175
- display: flow-root;
2176
- color: var(--charcoal-color-text-tertiary-default);
2177
- transition:
2178
- 0.2s color,
2179
- 0.2s box-shadow;
2180
- }
2181
-
2182
- .charcoal-field-label-root {
2183
- display: inline-flex;
2184
- align-items: center;
2185
- }
2186
-
2187
- .charcoal-field-label-root > .charcoal-field-label-required-text {
2188
- margin-left: 4px;
2189
- }
2190
-
2191
- .charcoal-field-label-root > .charcoal-field-label-sub-label {
2192
- margin-left: auto;
2193
- }
2194
- .charcoal-list-item {
2195
- list-style: none;
2196
- display: flex;
2197
- align-items: center;
2198
- min-height: 40px;
2199
- cursor: pointer;
2200
- outline: none;
2201
-
2202
- padding-right: 16px;
2203
- padding-left: 16px;
2204
-
2205
- transition: background-color 0.2s;
2206
- }
2207
-
2208
- .charcoal-list-item:not([aria-disabled='true']):hover,
2209
- .charcoal-list-item:not([aria-disabled='true']):focus,
2210
- .charcoal-list-item:not([aria-disabled='true']):focus-within {
2211
- background-color: var(--charcoal-color-container-secondary-default);
2212
- }
2213
-
2214
- .charcoal-list-item[aria-disabled='true'] {
2215
- opacity: 0.32;
2216
- cursor: default;
2217
- }
2218
2072
  .charcoal-modal-dialog {
2219
2073
  margin: auto;
2220
2074
  position: relative;
@@ -2260,6 +2114,127 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2260
2114
  .charcoal-modal-dialog:focus {
2261
2115
  outline: none;
2262
2116
  }
2117
+ .charcoal-switch-input {
2118
+ cursor: pointer;
2119
+ -webkit-appearance: none;
2120
+ -moz-appearance: none;
2121
+ appearance: none;
2122
+ display: inline-flex;
2123
+ position: relative;
2124
+ box-sizing: border-box;
2125
+ width: 28px;
2126
+ border: 2px solid transparent;
2127
+
2128
+ transition-property: background-color, box-shadow;
2129
+ transition-duration: 0.2s;
2130
+
2131
+ outline: none;
2132
+ border-radius: 16px;
2133
+ height: 16px;
2134
+ margin: 0;
2135
+ background-color: var(--charcoal-color-container-neutral-default);
2136
+ }
2137
+
2138
+ .charcoal-switch-input:disabled,
2139
+ .charcoal-switch-input[readonly] {
2140
+ opacity: 0.32;
2141
+ cursor: default;
2142
+ }
2143
+
2144
+ .charcoal-switch-input::after {
2145
+ content: '';
2146
+ position: absolute;
2147
+ display: block;
2148
+ top: 0;
2149
+ left: 0;
2150
+ width: 12px;
2151
+ height: 12px;
2152
+ transform: translateX(0);
2153
+ transition: transform 0.2s;
2154
+ border-radius: 1024px;
2155
+ background-color: var(--charcoal-color-icon-on-primary-default);
2156
+ }
2157
+
2158
+ .charcoal-switch-input:checked::after {
2159
+ transform: translateX(12px);
2160
+ transition: transform 0.2s;
2161
+ }
2162
+
2163
+ .charcoal-switch-input:checked {
2164
+ background-color: var(--charcoal-color-container-primary-default);
2165
+ }
2166
+
2167
+ .charcoal-switch-input:not(:disabled):hover {
2168
+ background-color: var(--charcoal-color-container-neutral-hover);
2169
+ }
2170
+
2171
+ .charcoal-switch-input:not(:disabled):active {
2172
+ background-color: var(--charcoal-color-container-neutral-press);
2173
+ }
2174
+
2175
+ .charcoal-switch-input:not(:disabled):focus {
2176
+ outline: none;
2177
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2178
+ }
2179
+ .charcoal-switch-input:not(:disabled):focus-visible {
2180
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2181
+ }
2182
+ .charcoal-switch-input:not(:disabled):focus:not(:focus-visible) {
2183
+ box-shadow: none;
2184
+ }
2185
+
2186
+ .charcoal-switch-input:not(:disabled)::after:hover {
2187
+ background-color: var(--charcoal-color-icon-on-primary-hover);
2188
+ }
2189
+
2190
+ .charcoal-switch-input:not(:disabled)::after:active {
2191
+ background-color: var(--charcoal-color-icon-on-primary-press);
2192
+ }
2193
+
2194
+ .charcoal-switch-input:not(:disabled):checked:hover {
2195
+ background-color: var(--charcoal-color-container-primary-hover);
2196
+ }
2197
+
2198
+ .charcoal-switch-input:not(:disabled):checked:active {
2199
+ background-color: var(--charcoal-color-container-primary-press);
2200
+ }
2201
+ .charcoal-field-label {
2202
+ font-size: 14px;
2203
+ line-height: 22px;
2204
+ font-weight: bold;
2205
+ display: flow-root;
2206
+ color: var(--charcoal-color-text-default-text1);
2207
+ }
2208
+
2209
+ .charcoal-field-label-required-text {
2210
+ font-size: 14px;
2211
+ line-height: 22px;
2212
+ display: flow-root;
2213
+ color: var(--charcoal-color-text-secondary-default);
2214
+ }
2215
+
2216
+ .charcoal-field-label-sub-label {
2217
+ font-size: 14px;
2218
+ line-height: 22px;
2219
+ display: flow-root;
2220
+ color: var(--charcoal-color-text-tertiary-default);
2221
+ transition:
2222
+ 0.2s color,
2223
+ 0.2s box-shadow;
2224
+ }
2225
+
2226
+ .charcoal-field-label-root {
2227
+ display: inline-flex;
2228
+ align-items: center;
2229
+ }
2230
+
2231
+ .charcoal-field-label-root > .charcoal-field-label-required-text {
2232
+ margin-left: 4px;
2233
+ }
2234
+
2235
+ .charcoal-field-label-root > .charcoal-field-label-sub-label {
2236
+ margin-left: auto;
2237
+ }
2263
2238
  .charcoal-menu-list {
2264
2239
  padding: 0;
2265
2240
  margin: 0;
@@ -2378,6 +2353,30 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2378
2353
  border: 2px solid #fff;
2379
2354
  box-sizing: border-box;
2380
2355
  }
2356
+ .charcoal-list-item {
2357
+ list-style: none;
2358
+ display: flex;
2359
+ align-items: center;
2360
+ min-height: 40px;
2361
+ cursor: pointer;
2362
+ outline: none;
2363
+
2364
+ padding-right: 16px;
2365
+ padding-left: 16px;
2366
+
2367
+ transition: background-color 0.2s;
2368
+ }
2369
+
2370
+ .charcoal-list-item:not([aria-disabled='true']):hover,
2371
+ .charcoal-list-item:not([aria-disabled='true']):focus,
2372
+ .charcoal-list-item:not([aria-disabled='true']):focus-within {
2373
+ background-color: var(--charcoal-color-container-secondary-default);
2374
+ }
2375
+
2376
+ .charcoal-list-item[aria-disabled='true'] {
2377
+ opacity: 0.32;
2378
+ cursor: default;
2379
+ }
2381
2380
  .charcoal-popover {
2382
2381
  margin: 4px 0;
2383
2382
  list-style: none;