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

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/dist/layered.css CHANGED
@@ -6,67 +6,6 @@
6
6
  box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
7
7
  transition: 0.2s box-shadow;
8
8
  }
9
- .charcoal-clickable {
10
- cursor: pointer;
11
-
12
- /* Reset button appearance */
13
- -webkit-appearance: none;
14
- -moz-appearance: none;
15
- appearance: none;
16
- background: transparent;
17
- padding: 0;
18
- border-style: none;
19
- outline: none;
20
- color: inherit;
21
- text-rendering: inherit;
22
- letter-spacing: inherit;
23
- word-spacing: inherit;
24
- text-decoration: none;
25
-
26
- /* Change the font styles in all browsers. */
27
- font: inherit;
28
-
29
- /* Remove the margin in Firefox and Safari. */
30
- margin: 0;
31
-
32
- /* Show the overflow in Edge. */
33
- overflow: visible;
34
-
35
- /* Remove the inheritance of text transform in Firefox. */
36
- text-transform: none;
37
- }
38
-
39
- .charcoal-clickable:disabled,
40
- .charcoal-clickable[aria-disabled]:not([aria-disabled='false']) {
41
- cursor: default;
42
- }
43
-
44
- .charcoal-clickable:focus {
45
- outline: none;
46
- }
47
-
48
- .charcoal-clickable::-moz-focus-inner {
49
- border-style: none;
50
- padding: 0;
51
- }
52
- .charcoal-radio__label {
53
- display: grid;
54
- grid-template-columns: auto 1fr;
55
- grid-gap: 4px;
56
- align-items: center;
57
- cursor: pointer;
58
- }
59
-
60
- .charcoal-radio__label[aria-disabled]:not([aria-disabled='false']) {
61
- opacity: 0.32;
62
- cursor: default;
63
- }
64
-
65
- .charcoal-radio__label_div {
66
- font-size: 14px;
67
- line-height: 22px;
68
- color: var(--charcoal-color-text-default);
69
- }
70
9
  .charcoal-button {
71
10
  -webkit-appearance: none;
72
11
  -moz-appearance: none;
@@ -217,141 +156,67 @@
217
156
  .charcoal-button[data-full-width='true'] {
218
157
  width: 100%;
219
158
  }
220
- .charcoal-multi-select {
221
- display: grid;
222
- grid-template-columns: auto 1fr;
223
- align-items: center;
224
- position: relative;
159
+ .charcoal-clickable {
225
160
  cursor: pointer;
226
- gap: 4px;
227
- }
228
-
229
- .charcoal-multi-select:disabled,
230
- .charcoal-multi-select[aria-disabled]:not([aria-disabled='false']) {
231
- opacity: 0.32;
232
- cursor: default;
233
- }
234
-
235
- .charcoal-multi-select-label {
236
- display: flow-root;
237
- align-items: center;
238
- font-size: 14px;
239
- line-height: 22px;
240
- color: var(--charcoal-color-text-default);
241
- }
242
-
243
- .charcoal-multi-select-label::before {
244
- display: block;
245
- width: 0;
246
- height: 0;
247
- content: '';
248
- margin-top: -4px;
249
- }
250
-
251
- .charcoal-multi-select-label::after {
252
- display: block;
253
- width: 0;
254
- height: 0;
255
- content: '';
256
- margin-bottom: -4px;
257
- }
258
161
 
259
- .charcoal-multi-select-input[type='checkbox'] {
162
+ /* Reset button appearance */
260
163
  -webkit-appearance: none;
261
164
  -moz-appearance: none;
262
165
  appearance: none;
263
- display: block;
264
- width: 20px;
265
- height: 20px;
266
- margin: 0;
267
- background-color: var(--charcoal-color-container-neutral-default);
268
- border-radius: 999999px;
269
- transition:
270
- 0.2s background-color,
271
- 0.2s box-shadow;
272
- }
273
-
274
- .charcoal-multi-select-input[type='checkbox']:checked {
275
- background-color: var(--charcoal-color-container-primary-default);
276
- }
277
-
278
- .charcoal-multi-select-input[type='checkbox']:focus {
279
- outline: none;
280
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
281
- }
282
-
283
- .charcoal-multi-select-input[type='checkbox']:focus-visible {
284
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
285
- }
286
-
287
- .charcoal-multi-select-input[type='checkbox']:focus:not(:focus-visible) {
288
- box-shadow: none;
289
- }
166
+ background: transparent;
167
+ padding: 0;
168
+ border-style: none;
169
+ outline: none;
170
+ color: inherit;
171
+ text-rendering: inherit;
172
+ letter-spacing: inherit;
173
+ word-spacing: inherit;
174
+ text-decoration: none;
290
175
 
291
- .charcoal-multi-select-input[type='checkbox']:hover:not(:disabled):not([aria-disabled]),
292
- .charcoal-multi-select-input[type='checkbox']:hover[aria-disabled='false'] {
293
- background-color: var(--charcoal-color-container-neutral-hover);
294
- }
176
+ /* Change the font styles in all browsers. */
177
+ font: inherit;
295
178
 
296
- .charcoal-multi-select-input[type='checkbox']:active:not(:disabled):not([aria-disabled]),
297
- .charcoal-multi-select-input[type='checkbox']:active[aria-disabled='false'] {
298
- background-color: var(--charcoal-color-container-neutral-press);
299
- }
179
+ /* Remove the margin in Firefox and Safari. */
180
+ margin: 0;
300
181
 
301
- .charcoal-multi-select-input[type='checkbox']:checked:hover:not(:disabled):not([aria-disabled]),
302
- .charcoal-multi-select-input[type='checkbox']:checked:hover[aria-disabled='false'] {
303
- background-color: var(--charcoal-color-container-primary-hover);
304
- }
182
+ /* Show the overflow in Edge. */
183
+ overflow: visible;
305
184
 
306
- .charcoal-multi-select-input[type='checkbox']:checked:active:not(:disabled):not([aria-disabled]),
307
- .charcoal-multi-select-input[type='checkbox']:checked:active[aria-disabled='false'] {
308
- background-color: var(--charcoal-color-container-primary-press);
309
- }
185
+ /* Remove the inheritance of text transform in Firefox. */
186
+ text-transform: none;
187
+ }
310
188
 
311
- .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false']:not(:disabled):not(
312
- [aria-disabled]
313
- ) {
314
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
189
+ .charcoal-clickable:disabled,
190
+ .charcoal-clickable[aria-disabled]:not([aria-disabled='false']) {
191
+ cursor: default;
315
192
  }
316
193
 
317
- .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false'][aria-disabled='false'] {
318
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
194
+ .charcoal-clickable:focus {
195
+ outline: none;
319
196
  }
320
197
 
321
- .charcoal-multi-select-input[type='checkbox'][data-overlay='true'] {
322
- background-color: var(--charcoal-color-container-on-img-default);
198
+ .charcoal-clickable::-moz-focus-inner {
199
+ border-style: none;
200
+ padding: 0;
323
201
  }
324
-
325
- .charcoal-multi-select-overlay {
326
- position: absolute;
327
- top: -2px;
328
- left: -2px;
329
- box-sizing: border-box;
330
- display: flex;
202
+ .charcoal-radio__label {
203
+ display: grid;
204
+ grid-template-columns: auto 1fr;
205
+ grid-gap: 4px;
331
206
  align-items: center;
332
- justify-content: center;
333
- width: 24px;
334
- height: 24px;
335
- border-radius: 999999px;
336
- color: var(--charcoal-color-icon-on-primary-default);
337
- transition: 0.2s box-shadow;
207
+ cursor: pointer;
338
208
  }
339
209
 
340
- .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true']:not(:disabled):not(
341
- [aria-disabled]
342
- ) {
343
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
344
- }
345
-
346
- .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true'][aria-disabled='false'] {
347
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
210
+ .charcoal-radio__label[aria-disabled]:not([aria-disabled='false']) {
211
+ opacity: 0.32;
212
+ cursor: default;
348
213
  }
349
214
 
350
- .charcoal-multi-select-overlay[data-overlay='true'] {
351
- border-color: var(--charcoal-color-border-hud);
352
- border-width: 2px;
353
- border-style: solid;
354
- }
215
+ .charcoal-radio__label_div {
216
+ font-size: 14px;
217
+ line-height: 22px;
218
+ color: var(--charcoal-color-text-default);
219
+ }
355
220
  .charcoal-icon-button {
356
221
  cursor: pointer;
357
222
  -webkit-appearance: none;
@@ -476,43 +341,183 @@
476
341
  .charcoal-icon-button[aria-disabled='false']:focus:not(:focus-visible) {
477
342
  box-shadow: none;
478
343
  }
479
- .charcoal-switch__label {
480
- display: inline-grid;
344
+ .charcoal-radio-group {
345
+ display: grid;
346
+ grid-template-columns: 1fr;
347
+ grid-gap: 8px;
348
+ }
349
+ .charcoal-multi-select {
350
+ display: grid;
481
351
  grid-template-columns: auto 1fr;
482
352
  align-items: center;
353
+ position: relative;
483
354
  cursor: pointer;
484
- outline: 0;
485
355
  gap: 4px;
486
356
  }
487
357
 
488
- .charcoal-switch__label[aria-disabled='true'] {
358
+ .charcoal-multi-select:disabled,
359
+ .charcoal-multi-select[aria-disabled]:not([aria-disabled='false']) {
489
360
  opacity: 0.32;
490
361
  cursor: default;
491
362
  }
492
363
 
493
- .charcoal-switch__label[aria-disabled='true'] > input {
494
- opacity: 1;
495
- }
496
-
497
- .charcoal-switch__label_div {
364
+ .charcoal-multi-select-label {
365
+ display: flow-root;
366
+ align-items: center;
498
367
  font-size: 14px;
499
368
  line-height: 22px;
500
369
  color: var(--charcoal-color-text-default);
501
370
  }
502
- .charcoal-text-field-root {
503
- display: grid;
504
- grid-template-columns: 1fr;
505
- grid-gap: 4px;
506
- }
507
371
 
508
- .charcoal-text-field-root[aria-disabled='true'] {
509
- opacity: 0.32;
372
+ .charcoal-multi-select-label::before {
373
+ display: block;
374
+ width: 0;
375
+ height: 0;
376
+ content: '';
377
+ margin-top: -4px;
510
378
  }
511
379
 
512
- .charcoal-text-field-container {
513
- display: flex;
514
- height: 40px;
515
- transition:
380
+ .charcoal-multi-select-label::after {
381
+ display: block;
382
+ width: 0;
383
+ height: 0;
384
+ content: '';
385
+ margin-bottom: -4px;
386
+ }
387
+
388
+ .charcoal-multi-select-input[type='checkbox'] {
389
+ -webkit-appearance: none;
390
+ -moz-appearance: none;
391
+ appearance: none;
392
+ display: block;
393
+ width: 20px;
394
+ height: 20px;
395
+ margin: 0;
396
+ background-color: var(--charcoal-color-container-neutral-default);
397
+ border-radius: 999999px;
398
+ transition:
399
+ 0.2s background-color,
400
+ 0.2s box-shadow;
401
+ }
402
+
403
+ .charcoal-multi-select-input[type='checkbox']:checked {
404
+ background-color: var(--charcoal-color-container-primary-default);
405
+ }
406
+
407
+ .charcoal-multi-select-input[type='checkbox']:focus {
408
+ outline: none;
409
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
410
+ }
411
+
412
+ .charcoal-multi-select-input[type='checkbox']:focus-visible {
413
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
414
+ }
415
+
416
+ .charcoal-multi-select-input[type='checkbox']:focus:not(:focus-visible) {
417
+ box-shadow: none;
418
+ }
419
+
420
+ .charcoal-multi-select-input[type='checkbox']:hover:not(:disabled):not([aria-disabled]),
421
+ .charcoal-multi-select-input[type='checkbox']:hover[aria-disabled='false'] {
422
+ background-color: var(--charcoal-color-container-neutral-hover);
423
+ }
424
+
425
+ .charcoal-multi-select-input[type='checkbox']:active:not(:disabled):not([aria-disabled]),
426
+ .charcoal-multi-select-input[type='checkbox']:active[aria-disabled='false'] {
427
+ background-color: var(--charcoal-color-container-neutral-press);
428
+ }
429
+
430
+ .charcoal-multi-select-input[type='checkbox']:checked:hover:not(:disabled):not([aria-disabled]),
431
+ .charcoal-multi-select-input[type='checkbox']:checked:hover[aria-disabled='false'] {
432
+ background-color: var(--charcoal-color-container-primary-hover);
433
+ }
434
+
435
+ .charcoal-multi-select-input[type='checkbox']:checked:active:not(:disabled):not([aria-disabled]),
436
+ .charcoal-multi-select-input[type='checkbox']:checked:active[aria-disabled='false'] {
437
+ background-color: var(--charcoal-color-container-primary-press);
438
+ }
439
+
440
+ .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false']:not(:disabled):not(
441
+ [aria-disabled]
442
+ ) {
443
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
444
+ }
445
+
446
+ .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false'][aria-disabled='false'] {
447
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
448
+ }
449
+
450
+ .charcoal-multi-select-input[type='checkbox'][data-overlay='true'] {
451
+ background-color: var(--charcoal-color-container-on-img-default);
452
+ }
453
+
454
+ .charcoal-multi-select-overlay {
455
+ position: absolute;
456
+ top: -2px;
457
+ left: -2px;
458
+ box-sizing: border-box;
459
+ display: flex;
460
+ align-items: center;
461
+ justify-content: center;
462
+ width: 24px;
463
+ height: 24px;
464
+ border-radius: 999999px;
465
+ color: var(--charcoal-color-icon-on-primary-default);
466
+ transition: 0.2s box-shadow;
467
+ }
468
+
469
+ .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true']:not(:disabled):not(
470
+ [aria-disabled]
471
+ ) {
472
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
473
+ }
474
+
475
+ .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true'][aria-disabled='false'] {
476
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
477
+ }
478
+
479
+ .charcoal-multi-select-overlay[data-overlay='true'] {
480
+ border-color: var(--charcoal-color-border-hud);
481
+ border-width: 2px;
482
+ border-style: solid;
483
+ }
484
+ .charcoal-switch__label {
485
+ display: inline-grid;
486
+ grid-template-columns: auto 1fr;
487
+ align-items: center;
488
+ 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
+ }
501
+
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
+ }
512
+
513
+ .charcoal-text-field-root[aria-disabled='true'] {
514
+ opacity: 0.32;
515
+ }
516
+
517
+ .charcoal-text-field-container {
518
+ display: flex;
519
+ height: 40px;
520
+ transition:
516
521
  0.2s background-color,
517
522
  0.2s box-shadow;
518
523
  color: var(--charcoal-color-text-secondary-default);
@@ -580,176 +585,23 @@
580
585
  -webkit-appearance: none;
581
586
  -moz-appearance: none;
582
587
  appearance: none;
583
- background: transparent;
584
-
585
- color: var(--charcoal-color-text-secondary-default);
586
- }
587
-
588
- .charcoal-text-field-input::-moz-placeholder {
589
- color: var(--charcoal-color-text-placeholder-default);
590
- }
591
-
592
- .charcoal-text-field-input::placeholder {
593
- color: var(--charcoal-color-text-placeholder-default);
594
- }
595
-
596
- .charcoal-text-field-line-counter {
597
- line-height: 22px;
598
- font-size: 14px;
599
- color: var(--charcoal-color-text-tertiary-default);
600
- }
601
- .charcoal-icon {
602
- display: inline-flex;
603
- width: var(--charcoal-icon-size);
604
- height: var(--charcoal-icon-size);
605
- }
606
-
607
- pixiv-icon:not(:defined) {
608
- --pixiv-icon-base: 24px;
609
- --pixiv-icon-scale: 1;
610
- --pixiv-icon-size: calc(var(--pixiv-icon-base) * var(--pixiv-icon-scale));
611
-
612
- display: inline-flex;
613
- /* --charcoal-icon-size がセットされていればそれを優先、
614
- なければ name / scale から導出した --pixiv-icon-size をフォールバック */
615
- width: var(--charcoal-icon-size, var(--pixiv-icon-size));
616
- height: var(--charcoal-icon-size, var(--pixiv-icon-size));
617
- }
618
-
619
- pixiv-icon:not(:defined)[name^='16/'] {
620
- --pixiv-icon-base: 16px;
621
- --pixiv-icon-size: 16px;
622
- }
623
-
624
- pixiv-icon:not(:defined)[name^='24/'][scale='2'] {
625
- --pixiv-icon-scale: 2;
626
- }
627
-
628
- pixiv-icon:not(:defined)[name^='24/'][scale='3'] {
629
- --pixiv-icon-scale: 3;
630
- }
631
-
632
- pixiv-icon:not(:defined)[name^='32/'] {
633
- --pixiv-icon-base: 32px;
634
- --pixiv-icon-size: 32px;
635
- }
636
-
637
- pixiv-icon:not(:defined)[name^='Inline/'] {
638
- --pixiv-icon-base: 16px;
639
- }
640
-
641
- pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
642
- --pixiv-icon-scale: 2;
643
- }
644
- .charcoal-modal-background {
645
- overflow: auto;
646
- display: flex;
647
- position: fixed;
648
- top: 0;
649
- left: 0;
650
- width: 100%;
651
- height: 100%;
652
- justify-content: center;
653
- padding: 40px 0;
654
- box-sizing: border-box;
655
-
656
- background-color: var(--charcoal-color-background-overlay);
657
- }
658
-
659
- @media (max-width: 743px) {
660
- .charcoal-modal-background[data-bottom-sheet='true'],
661
- .charcoal-modal-background[data-bottom-sheet='full'] {
662
- padding: 0;
663
- }
664
- }
665
-
666
- /* easeOutQuart。duration は useTransitionPresence の MODAL_TRANSITION_DURATION_MS と一致させること。
667
- transition は entering / exiting に限定し、開いたままテーマ切り替え等で
668
- 色や transform が変わってもアニメーションしないようにする */
669
- .charcoal-modal-background[data-animation] {
670
- overflow: hidden;
671
- }
672
-
673
- .charcoal-modal-background[data-animation='entering'],
674
- .charcoal-modal-background[data-animation='exiting'] {
675
- transition: background-color 400ms cubic-bezier(0.25, 1, 0.5, 1);
676
- }
677
-
678
- /* 閉じアニメーション中はクリックを下のページへ通す(transitionend が来ない環境で
679
- 透明なオーバーレイがタップを奪い続けるのも防ぐ) */
680
- .charcoal-modal-background[data-animation='exited'],
681
- .charcoal-modal-background[data-animation='exiting'] {
682
- background-color: transparent;
683
- pointer-events: none;
684
- }
685
-
686
- .charcoal-modal-background[data-animation='entered'] {
687
- overflow: auto;
688
- }
689
-
690
- .charcoal-modal-background[data-animation='entering'] > .charcoal-modal-dialog,
691
- .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
692
- transition: transform 400ms cubic-bezier(0.25, 1, 0.5, 1);
693
- }
694
-
695
- .charcoal-modal-background[data-animation='exited'] > .charcoal-modal-dialog,
696
- .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
697
- transform: translateY(100%);
698
- }
699
-
700
- .charcoal-modal-close-button {
701
- position: absolute;
702
- top: 8px;
703
- right: 8px;
704
-
705
- color: var(--charcoal-color-text-tertiary-default);
706
- transition: 0.2s color;
707
- }
708
-
709
- .charcoal-modal-title {
710
- margin: 0;
711
- font-weight: inherit;
712
- font-size: inherit;
713
- }
714
- .charcoal-modal-header-root {
715
- height: 64px;
716
- display: grid;
717
- align-content: center;
718
- justify-content: center;
719
- }
720
-
721
- @media (max-width: 743px) {
722
- .charcoal-modal-header-root[data-bottom-sheet='true'],
723
- .charcoal-modal-header-root[data-bottom-sheet='full'] {
724
- height: 48px;
725
- }
726
- }
727
-
728
- .charcoal-modal-header-title {
729
- color: var(--charcoal-color-text-default);
730
- font-size: 16px;
731
- line-height: 24px;
732
- font-weight: bold;
733
- display: flow-root;
734
- }
735
-
736
- .charcoal-modal-align {
737
- padding-left: 16px;
738
- padding-right: 16px;
739
- }
588
+ background: transparent;
740
589
 
741
- .charcoal-modal-body {
742
- padding-bottom: 40px;
590
+ color: var(--charcoal-color-text-secondary-default);
743
591
  }
744
592
 
745
- .charcoal-modal-buttons {
746
- display: grid;
747
- grid-auto-flow: row;
748
- grid-row-gap: 8px;
593
+ .charcoal-text-field-input::-moz-placeholder {
594
+ color: var(--charcoal-color-text-placeholder-default);
595
+ }
749
596
 
750
- padding-top: 16px;
751
- padding-left: 16px;
752
- padding-right: 16px;
597
+ .charcoal-text-field-input::placeholder {
598
+ color: var(--charcoal-color-text-placeholder-default);
599
+ }
600
+
601
+ .charcoal-text-field-line-counter {
602
+ line-height: 22px;
603
+ font-size: 14px;
604
+ color: var(--charcoal-color-text-tertiary-default);
753
605
  }
754
606
  .charcoal-text-area-root {
755
607
  display: grid;
@@ -863,6 +715,119 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
863
715
  font-size: 14px;
864
716
  color: var(--charcoal-color-text-tertiary-default);
865
717
  }
718
+ .charcoal-icon {
719
+ display: inline-flex;
720
+ width: var(--charcoal-icon-size);
721
+ height: var(--charcoal-icon-size);
722
+ }
723
+
724
+ pixiv-icon:not(:defined) {
725
+ --pixiv-icon-base: 24px;
726
+ --pixiv-icon-scale: 1;
727
+ --pixiv-icon-size: calc(var(--pixiv-icon-base) * var(--pixiv-icon-scale));
728
+
729
+ display: inline-flex;
730
+ /* --charcoal-icon-size がセットされていればそれを優先、
731
+ なければ name / scale から導出した --pixiv-icon-size をフォールバック */
732
+ width: var(--charcoal-icon-size, var(--pixiv-icon-size));
733
+ height: var(--charcoal-icon-size, var(--pixiv-icon-size));
734
+ }
735
+
736
+ pixiv-icon:not(:defined)[name^='16/'] {
737
+ --pixiv-icon-base: 16px;
738
+ --pixiv-icon-size: 16px;
739
+ }
740
+
741
+ pixiv-icon:not(:defined)[name^='24/'][scale='2'] {
742
+ --pixiv-icon-scale: 2;
743
+ }
744
+
745
+ pixiv-icon:not(:defined)[name^='24/'][scale='3'] {
746
+ --pixiv-icon-scale: 3;
747
+ }
748
+
749
+ pixiv-icon:not(:defined)[name^='32/'] {
750
+ --pixiv-icon-base: 32px;
751
+ --pixiv-icon-size: 32px;
752
+ }
753
+
754
+ pixiv-icon:not(:defined)[name^='Inline/'] {
755
+ --pixiv-icon-base: 16px;
756
+ }
757
+
758
+ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
759
+ --pixiv-icon-scale: 2;
760
+ }
761
+ .charcoal-modal-background {
762
+ overflow: auto;
763
+ display: flex;
764
+ position: fixed;
765
+ top: 0;
766
+ left: 0;
767
+ width: 100%;
768
+ height: 100%;
769
+ justify-content: center;
770
+ padding: 40px 0;
771
+ box-sizing: border-box;
772
+
773
+ background-color: var(--charcoal-color-background-overlay);
774
+ }
775
+
776
+ @media (max-width: 743px) {
777
+ .charcoal-modal-background[data-bottom-sheet='true'],
778
+ .charcoal-modal-background[data-bottom-sheet='full'] {
779
+ padding: 0;
780
+ }
781
+ }
782
+
783
+ /* easeOutQuart。duration は useTransitionPresence の MODAL_TRANSITION_DURATION_MS と一致させること。
784
+ transition は entering / exiting に限定し、開いたままテーマ切り替え等で
785
+ 色や transform が変わってもアニメーションしないようにする */
786
+ .charcoal-modal-background[data-animation] {
787
+ overflow: hidden;
788
+ }
789
+
790
+ .charcoal-modal-background[data-animation='entering'],
791
+ .charcoal-modal-background[data-animation='exiting'] {
792
+ transition: background-color 400ms cubic-bezier(0.25, 1, 0.5, 1);
793
+ }
794
+
795
+ /* 閉じアニメーション中はクリックを下のページへ通す(transitionend が来ない環境で
796
+ 透明なオーバーレイがタップを奪い続けるのも防ぐ) */
797
+ .charcoal-modal-background[data-animation='exited'],
798
+ .charcoal-modal-background[data-animation='exiting'] {
799
+ background-color: transparent;
800
+ pointer-events: none;
801
+ }
802
+
803
+ .charcoal-modal-background[data-animation='entered'] {
804
+ overflow: auto;
805
+ }
806
+
807
+ .charcoal-modal-background[data-animation='entering'] > .charcoal-modal-dialog,
808
+ .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
809
+ transition: transform 400ms cubic-bezier(0.25, 1, 0.5, 1);
810
+ }
811
+
812
+ .charcoal-modal-background[data-animation='exited'] > .charcoal-modal-dialog,
813
+ .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
814
+ transform: translateY(100%);
815
+ }
816
+
817
+ .charcoal-modal-close-button {
818
+ position: absolute;
819
+ top: 8px;
820
+ right: 8px;
821
+
822
+ color: var(--charcoal-color-text-tertiary-default);
823
+ transition: 0.2s color;
824
+ }
825
+
826
+ .charcoal-modal-title {
827
+ margin: 0;
828
+ font-weight: inherit;
829
+ font-size: inherit;
830
+ }
866
831
  .charcoal-loading-spinner {
867
832
  box-sizing: content-box;
868
833
  margin: auto;
@@ -906,27 +871,45 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
906
871
  .charcoal-loading-spinner-icon[data-once='true'] {
907
872
  animation-iteration-count: 1;
908
873
  }
909
- .charcoal-checkbox__label {
910
- position: relative;
911
- cursor: pointer;
912
- display: flex;
913
- gap: 4px;
874
+ .charcoal-modal-header-root {
875
+ height: 64px;
876
+ display: grid;
877
+ align-content: center;
878
+ justify-content: center;
914
879
  }
915
880
 
916
- .charcoal-checkbox__label[aria-disabled='true'] {
917
- cursor: default;
918
- opacity: 0.32;
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;
919
885
  }
886
+ }
920
887
 
921
- .charcoal-checkbox__label[aria-disabled='true'] > input {
922
- opacity: 1;
923
- }
924
-
925
- .charcoal-checkbox__label_div {
926
- flex: 1;
888
+ .charcoal-modal-header-title {
927
889
  color: var(--charcoal-color-text-default);
928
- font-size: 14px;
929
- line-height: 20px;
890
+ font-size: 16px;
891
+ line-height: 24px;
892
+ font-weight: bold;
893
+ display: flow-root;
894
+ }
895
+
896
+ .charcoal-modal-align {
897
+ padding-left: 16px;
898
+ padding-right: 16px;
899
+ }
900
+
901
+ .charcoal-modal-body {
902
+ padding-bottom: 40px;
903
+ }
904
+
905
+ .charcoal-modal-buttons {
906
+ display: grid;
907
+ grid-auto-flow: row;
908
+ grid-row-gap: 8px;
909
+
910
+ padding-top: 16px;
911
+ padding-left: 16px;
912
+ padding-right: 16px;
930
913
  }
931
914
  .charcoal-dropdown-selector-root {
932
915
  display: grid;
@@ -1012,6 +995,25 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1012
995
  .charcoal-ui-dropdown-selector-icon {
1013
996
  color: var(--charcoal-color-icon-secondary-default);
1014
997
  }
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
+ }
1015
1017
  .charcoal-dropdown-selector-menu-item {
1016
1018
  font-size: 14px;
1017
1019
  line-height: 22px;
@@ -1046,66 +1048,11 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1046
1048
 
1047
1049
  display: flex;
1048
1050
  align-items: center;
1049
- margin-left: 20px;
1050
- }
1051
-
1052
- .charcoal-dropdown-selector-menu-fullwidth {
1053
- width: 100%;
1054
- }
1055
- .charcoal-hint-text {
1056
- background-color: var(--charcoal-color-container-secondary-default);
1057
- border-radius: 8px;
1058
- padding: 12px 16px;
1059
- display: flex;
1060
- align-items: flex-start;
1061
- }
1062
-
1063
- .charcoal-hint-text[data-context='page'] {
1064
- justify-content: center;
1065
- }
1066
-
1067
- @media (min-width: 744px) {
1068
-
1069
- .charcoal-hint-text[data-context='page'] {
1070
- padding: 20px 40px
1071
- }
1072
- }
1073
-
1074
- .charcoal-hint-text-icon {
1075
- display: flex;
1076
- align-items: center;
1077
- color: var(--charcoal-color-icon-tertiary-default);
1078
- height: 22px;
1079
- margin: 0 4px 0 0;
1080
- }
1081
-
1082
- .charcoal-hint-text-message {
1083
- color: var(--charcoal-color-text-secondary-default);
1084
- font-size: 14px;
1085
- line-height: 22px;
1086
- display: flow-root;
1087
- margin: 0;
1088
- min-width: 0;
1089
- overflow-wrap: break-word;
1090
- }
1091
- .charcoal-menu-item-group {
1092
- display: block;
1093
- }
1094
-
1095
- .charcoal-menu-item-group > span {
1096
- display: block;
1097
- color: var(--charcoal-color-text-tertiary-default);
1098
- font-size: 12px;
1099
- font-weight: bold;
1100
- padding: 12px 0 8px 16px;
1051
+ margin-left: 20px;
1101
1052
  }
1102
1053
 
1103
- .charcoal-menu-item-group > ul {
1104
- padding-left: 0;
1105
- margin: 0;
1106
- box-sizing: border-box;
1107
- list-style: none;
1108
- overflow: hidden;
1054
+ .charcoal-dropdown-selector-menu-fullwidth {
1055
+ width: 100%;
1109
1056
  }
1110
1057
  .charcoal-segmented-control {
1111
1058
  display: inline-flex;
@@ -1178,6 +1125,64 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1178
1125
  white-space: nowrap;
1179
1126
  opacity: 0;
1180
1127
  }
1128
+ .charcoal-hint-text {
1129
+ background-color: var(--charcoal-color-container-secondary-default);
1130
+ border-radius: 8px;
1131
+ padding: 12px 16px;
1132
+ display: flex;
1133
+ align-items: flex-start;
1134
+ }
1135
+
1136
+ .charcoal-hint-text[data-context='page'] {
1137
+ justify-content: center;
1138
+ }
1139
+
1140
+ @media (min-width: 744px) {
1141
+
1142
+ .charcoal-hint-text[data-context='page'] {
1143
+ padding: 20px 40px
1144
+ }
1145
+ }
1146
+
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;
1153
+ }
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;
1162
+ overflow-wrap: break-word;
1163
+ }
1164
+ .charcoal-checkbox__label {
1165
+ position: relative;
1166
+ cursor: pointer;
1167
+ display: flex;
1168
+ gap: 4px;
1169
+ }
1170
+
1171
+ .charcoal-checkbox__label[aria-disabled='true'] {
1172
+ cursor: default;
1173
+ opacity: 0.32;
1174
+ }
1175
+
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
+ }
1181
1186
  .charcoal-tag-item {
1182
1187
  --charcoal-tag-item-color: var(--charcoal-color-text-on-primary-default);
1183
1188
  --charcoal-tag-item-size: 40px;
@@ -1332,122 +1337,145 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1332
1337
  .charcoal-tag-item__labe__text[data-has-translate='true']::after {
1333
1338
  display: none;
1334
1339
  }
1335
- .charcoal-pagination {
1336
- display: flex;
1337
- justify-content: center;
1338
- align-items: center;
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);
1339
1350
  }
1340
1351
 
1341
- .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1342
- min-width: 32px;
1343
- min-height: 32px;
1352
+ .charcoal-text-ellipsis[data-has-line-height='true'] {
1353
+ line-height: var(--charcoal-text-ellipsis-line-height);
1344
1354
  }
1345
1355
 
1346
- .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1347
- min-width: 40px;
1348
- min-height: 40px;
1356
+ .charcoal-text-ellipsis[data-has-line-height='false'] {
1357
+ line-height: inherit;
1349
1358
  }
1350
1359
 
1351
- /* stylelint-disable no-descending-specificity */
1352
- .charcoal-pagination-button {
1353
- cursor: pointer;
1354
- -webkit-appearance: none;
1355
- -moz-appearance: none;
1356
- appearance: none;
1357
- padding: 0;
1358
- border-style: none;
1359
- outline: none;
1360
- text-decoration: none;
1361
- font-family: inherit;
1362
- font-style: inherit;
1363
- font-variant: inherit;
1364
- margin: 0;
1365
- -webkit-user-select: none;
1366
- -moz-user-select: none;
1367
- user-select: none;
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
+ }
1368
1373
 
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));
1369
1380
  display: flex;
1370
1381
  align-items: center;
1371
1382
  justify-content: center;
1372
- font-size: 14px;
1373
- font-weight: 700;
1374
- line-height: 22px;
1383
+ gap: var(--charcoal-space-20);
1384
+ pointer-events: auto;
1385
+ }
1375
1386
 
1376
- /* HACK:
1377
- * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1378
- * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1379
- */
1380
- /* stylelint-disable-next-line property-no-vendor-prefix */
1381
- -webkit-transform: translateZ(0);
1387
+ .charcoal-notification-content {
1388
+ display: flex;
1389
+ align-items: center;
1390
+ min-width: 0;
1391
+ }
1382
1392
 
1383
- color: var(--charcoal-color-text-tertiary-default);
1384
- background-color: transparent;
1385
- border-radius: 20px;
1386
- transition:
1387
- 0.2s background-color,
1388
- 0.2s box-shadow;
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);
1389
1403
  }
1390
- .charcoal-pagination-button:focus {
1391
- outline: none;
1392
- }
1393
- .charcoal-pagination-button::-moz-focus-inner {
1394
- border-style: none;
1395
- padding: 0;
1396
- }
1397
- .charcoal-pagination-button[hidden] {
1398
- visibility: hidden;
1399
- display: block;
1400
- }
1401
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1402
- .charcoal-pagination-button[aria-disabled='false']:hover {
1403
- color: var(--charcoal-color-text-tertiary-default);
1404
- background-color: var(--charcoal-color-container-secondary-default);
1404
+
1405
+ @media (prefers-reduced-motion: reduce) {
1406
+ .charcoal-notification,
1407
+ .charcoal-notification[data-exiting='true'] {
1408
+ animation: none;
1405
1409
  }
1406
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1407
- .charcoal-pagination-button[aria-disabled='false']:active {
1408
- color: var(--charcoal-color-text-tertiary-press);
1409
- background-color: var(--charcoal-color-container-tertiary-press);
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
+ );
1410
1421
  }
1411
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1412
- .charcoal-pagination-button[aria-disabled='false']:focus {
1413
- outline: none;
1414
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
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
+ );
1415
1430
  }
1416
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1417
- .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1418
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
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;
1419
1444
  }
1420
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1421
- .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1422
- box-shadow: none;
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);
1423
1450
  }
1424
- .charcoal-pagination-button[aria-current] {
1425
- cursor: default;
1451
+
1452
+ .charcoal-snackbar[data-dim='true'] {
1426
1453
  background-color: var(--charcoal-color-container-hud-default);
1427
1454
  color: var(--charcoal-color-text-on-hud-default);
1455
+ border-color: var(--charcoal-color-border-hud);
1428
1456
  }
1429
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1430
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1431
- background-color: var(--charcoal-color-container-hud-default);
1432
- color: var(--charcoal-color-text-on-hud-default);
1433
- }
1434
- /* stylelint-enable no-descending-specificity */
1435
1457
 
1436
- .charcoal-pagination-nav-button[data-hidden] {
1437
- visibility: hidden;
1438
- }
1458
+ @keyframes charcoal-snackbar-enter {
1459
+ from {
1460
+ opacity: 0;
1461
+ transform: translateY(var(--charcoal-snackbar-enter-offset));
1462
+ }
1439
1463
 
1440
- .charcoal-pagination-spacer,
1441
- .charcoal-pagination-spacer:hover,
1442
- .charcoal-pagination-spacer:active {
1443
- cursor: default;
1444
- color: var(--charcoal-color-text-tertiary-default);
1445
- background: none;
1464
+ to {
1465
+ opacity: 1;
1466
+ transform: translateY(0);
1446
1467
  }
1468
+ }
1447
1469
 
1448
- .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1470
+ @keyframes charcoal-snackbar-exit {
1471
+ from {
1449
1472
  opacity: 1;
1450
1473
  }
1474
+
1475
+ to {
1476
+ opacity: 0;
1477
+ }
1478
+ }
1451
1479
  .charcoal-carousel {
1452
1480
  --charcoal-carousel-gap: 0px;
1453
1481
 
@@ -1767,53 +1795,122 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1767
1795
  }
1768
1796
  }
1769
1797
  /* stylelint-enable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
1770
- .charcoal-notification-region {
1771
- position: fixed;
1772
- left: 0;
1773
- right: 0;
1774
- display: grid;
1798
+ .charcoal-pagination {
1799
+ display: flex;
1775
1800
  justify-content: center;
1776
- pointer-events: none;
1777
- box-sizing: border-box;
1801
+ align-items: center;
1778
1802
  }
1779
1803
 
1780
- .charcoal-notification {
1781
- box-sizing: border-box;
1782
- border-radius: var(--charcoal-radius-oval);
1783
- width: -moz-fit-content;
1784
- width: fit-content;
1785
- max-width: calc(100vw - var(--charcoal-space-46));
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
+
1786
1832
  display: flex;
1787
1833
  align-items: center;
1788
1834
  justify-content: center;
1789
- gap: var(--charcoal-space-20);
1790
- pointer-events: auto;
1791
- }
1835
+ font-size: 14px;
1836
+ font-weight: 700;
1837
+ line-height: 22px;
1792
1838
 
1793
- .charcoal-notification-content {
1794
- display: flex;
1795
- align-items: center;
1796
- min-width: 0;
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;
1797
1852
  }
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 */
1798
1898
 
1799
- .charcoal-notification-label {
1800
- min-width: 0;
1801
- overflow: hidden;
1802
- overflow-wrap: break-word;
1803
- display: -webkit-box;
1804
- -webkit-box-orient: vertical;
1805
- -webkit-line-clamp: 2;
1806
- font-size: var(--charcoal-text-font-size-caption-m);
1807
- font-weight: var(--charcoal-text-font-weight-bold);
1808
- line-height: var(--charcoal-text-line-height-caption-m);
1899
+ .charcoal-pagination-nav-button[data-hidden] {
1900
+ visibility: hidden;
1809
1901
  }
1810
1902
 
1811
- @media (prefers-reduced-motion: reduce) {
1812
- .charcoal-notification,
1813
- .charcoal-notification[data-exiting='true'] {
1814
- animation: none;
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;
1815
1913
  }
1816
- }
1817
1914
  .charcoal-toast-region {
1818
1915
  --charcoal-toast-offset: 16px;
1819
1916
  }
@@ -1875,103 +1972,6 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1875
1972
  opacity: 0;
1876
1973
  }
1877
1974
  }
1878
- .charcoal-text-ellipsis {
1879
- /* Runtime variables overridden by the React component. */
1880
- --charcoal-text-ellipsis-line-limit: 1;
1881
- --charcoal-text-ellipsis-line-height: inherit;
1882
-
1883
- overflow: hidden;
1884
- overflow-wrap: break-word;
1885
- display: -webkit-box;
1886
- -webkit-box-orient: vertical;
1887
- -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1888
- }
1889
-
1890
- .charcoal-text-ellipsis[data-has-line-height='true'] {
1891
- line-height: var(--charcoal-text-ellipsis-line-height);
1892
- }
1893
-
1894
- .charcoal-text-ellipsis[data-has-line-height='false'] {
1895
- line-height: inherit;
1896
- }
1897
-
1898
- .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1899
- text-overflow: ellipsis;
1900
- white-space: nowrap;
1901
- }
1902
- .charcoal-radio-group {
1903
- display: grid;
1904
- grid-template-columns: 1fr;
1905
- grid-gap: 8px;
1906
- }
1907
- .charcoal-snackbar-region {
1908
- --charcoal-snackbar-offset: 16px;
1909
- }
1910
-
1911
- .charcoal-snackbar-region[data-position='top'] {
1912
- --charcoal-snackbar-enter-offset: calc(-1 * var(--charcoal-space-30));
1913
-
1914
- top: calc(
1915
- env(safe-area-inset-top, 0px) + max(var(--charcoal-snackbar-offset), 16px)
1916
- );
1917
- }
1918
-
1919
- .charcoal-snackbar-region[data-position='bottom'] {
1920
- --charcoal-snackbar-enter-offset: var(--charcoal-space-30);
1921
-
1922
- bottom: calc(
1923
- env(safe-area-inset-bottom, 0px) +
1924
- max(var(--charcoal-snackbar-offset), 16px)
1925
- );
1926
- }
1927
-
1928
- .charcoal-snackbar {
1929
- min-height: 44px;
1930
- padding: var(--charcoal-space-25) var(--charcoal-space-40);
1931
- background-color: var(--charcoal-color-container-default);
1932
- color: var(--charcoal-color-text-default);
1933
- border: var(--charcoal-border-width-m) solid
1934
- var(--charcoal-color-border-secondary);
1935
- animation: charcoal-snackbar-enter 0.3s ease-out both;
1936
- }
1937
-
1938
- .charcoal-snackbar[data-exiting='true'] {
1939
- animation: charcoal-snackbar-exit 0.3s ease-out both;
1940
- }
1941
-
1942
- .charcoal-snackbar[data-with-action='true'] {
1943
- min-height: 56px;
1944
- padding: var(--charcoal-space-25) var(--charcoal-space-30)
1945
- var(--charcoal-space-25) var(--charcoal-space-40);
1946
- }
1947
-
1948
- .charcoal-snackbar[data-dim='true'] {
1949
- background-color: var(--charcoal-color-container-hud-default);
1950
- color: var(--charcoal-color-text-on-hud-default);
1951
- border-color: var(--charcoal-color-border-hud);
1952
- }
1953
-
1954
- @keyframes charcoal-snackbar-enter {
1955
- from {
1956
- opacity: 0;
1957
- transform: translateY(var(--charcoal-snackbar-enter-offset));
1958
- }
1959
-
1960
- to {
1961
- opacity: 1;
1962
- transform: translateY(0);
1963
- }
1964
- }
1965
-
1966
- @keyframes charcoal-snackbar-exit {
1967
- from {
1968
- opacity: 1;
1969
- }
1970
-
1971
- to {
1972
- opacity: 0;
1973
- }
1974
- }
1975
1975
  .charcoal-text-field-assistive-text {
1976
1976
  font-size: 14px;
1977
1977
  line-height: 22px;
@@ -2260,6 +2260,10 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2260
2260
  .charcoal-modal-dialog:focus {
2261
2261
  outline: none;
2262
2262
  }
2263
+ .charcoal-menu-list {
2264
+ padding: 0;
2265
+ margin: 0;
2266
+ }
2263
2267
  .charcoal-checkbox-input {
2264
2268
  -webkit-appearance: none;
2265
2269
  -moz-appearance: none;
@@ -2374,10 +2378,6 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2374
2378
  border: 2px solid #fff;
2375
2379
  box-sizing: border-box;
2376
2380
  }
2377
- .charcoal-menu-list {
2378
- padding: 0;
2379
- margin: 0;
2380
- }
2381
2381
  .charcoal-popover {
2382
2382
  margin: 4px 0;
2383
2383
  list-style: none;