@charcoal-ui/react 6.0.0 → 6.1.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/layered.css CHANGED
@@ -6,372 +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-icon {
10
- display: inline-flex;
11
- width: var(--charcoal-icon-size);
12
- height: var(--charcoal-icon-size);
13
- }
14
-
15
- pixiv-icon:not(:defined) {
16
- --pixiv-icon-base: 24px;
17
- --pixiv-icon-scale: 1;
18
- --pixiv-icon-size: calc(var(--pixiv-icon-base) * var(--pixiv-icon-scale));
19
-
20
- display: inline-flex;
21
- /* --charcoal-icon-size がセットされていればそれを優先、
22
- なければ name / scale から導出した --pixiv-icon-size をフォールバック */
23
- width: var(--charcoal-icon-size, var(--pixiv-icon-size));
24
- height: var(--charcoal-icon-size, var(--pixiv-icon-size));
25
- }
26
-
27
- pixiv-icon:not(:defined)[name^='16/'] {
28
- --pixiv-icon-base: 16px;
29
- --pixiv-icon-size: 16px;
30
- }
31
-
32
- pixiv-icon:not(:defined)[name^='24/'][scale='2'] {
33
- --pixiv-icon-scale: 2;
34
- }
35
-
36
- pixiv-icon:not(:defined)[name^='24/'][scale='3'] {
37
- --pixiv-icon-scale: 3;
38
- }
39
-
40
- pixiv-icon:not(:defined)[name^='32/'] {
41
- --pixiv-icon-base: 32px;
42
- --pixiv-icon-size: 32px;
43
- }
44
-
45
- pixiv-icon:not(:defined)[name^='Inline/'] {
46
- --pixiv-icon-base: 16px;
47
- }
48
-
49
- pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
50
- --pixiv-icon-scale: 2;
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
- .charcoal-radio-group {
71
- display: grid;
72
- grid-template-columns: 1fr;
73
- grid-gap: 8px;
74
- }
75
- .charcoal-multi-select {
76
- display: grid;
77
- grid-template-columns: auto 1fr;
78
- align-items: center;
79
- position: relative;
80
- cursor: pointer;
81
- gap: 4px;
82
- }
83
-
84
- .charcoal-multi-select:disabled,
85
- .charcoal-multi-select[aria-disabled]:not([aria-disabled='false']) {
86
- opacity: 0.32;
87
- cursor: default;
88
- }
89
-
90
- .charcoal-multi-select-label {
91
- display: flow-root;
92
- align-items: center;
93
- font-size: 14px;
94
- line-height: 22px;
95
- color: var(--charcoal-color-text-default);
96
- }
97
-
98
- .charcoal-multi-select-label::before {
99
- display: block;
100
- width: 0;
101
- height: 0;
102
- content: '';
103
- margin-top: -4px;
104
- }
105
-
106
- .charcoal-multi-select-label::after {
107
- display: block;
108
- width: 0;
109
- height: 0;
110
- content: '';
111
- margin-bottom: -4px;
112
- }
113
-
114
- .charcoal-multi-select-input[type='checkbox'] {
115
- -webkit-appearance: none;
116
- -moz-appearance: none;
117
- appearance: none;
118
- display: block;
119
- width: 20px;
120
- height: 20px;
121
- margin: 0;
122
- background-color: var(--charcoal-color-container-neutral-default);
123
- border-radius: 999999px;
124
- transition:
125
- 0.2s background-color,
126
- 0.2s box-shadow;
127
- }
128
-
129
- .charcoal-multi-select-input[type='checkbox']:checked {
130
- background-color: var(--charcoal-color-container-primary-default);
131
- }
132
-
133
- .charcoal-multi-select-input[type='checkbox']:focus {
134
- outline: none;
135
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
136
- }
137
-
138
- .charcoal-multi-select-input[type='checkbox']:focus-visible {
139
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
140
- }
141
-
142
- .charcoal-multi-select-input[type='checkbox']:focus:not(:focus-visible) {
143
- box-shadow: none;
144
- }
145
-
146
- .charcoal-multi-select-input[type='checkbox']:hover:not(:disabled):not([aria-disabled]),
147
- .charcoal-multi-select-input[type='checkbox']:hover[aria-disabled='false'] {
148
- background-color: var(--charcoal-color-container-neutral-hover);
149
- }
150
-
151
- .charcoal-multi-select-input[type='checkbox']:active:not(:disabled):not([aria-disabled]),
152
- .charcoal-multi-select-input[type='checkbox']:active[aria-disabled='false'] {
153
- background-color: var(--charcoal-color-container-neutral-press);
154
- }
155
-
156
- .charcoal-multi-select-input[type='checkbox']:checked:hover:not(:disabled):not([aria-disabled]),
157
- .charcoal-multi-select-input[type='checkbox']:checked:hover[aria-disabled='false'] {
158
- background-color: var(--charcoal-color-container-primary-hover);
159
- }
160
-
161
- .charcoal-multi-select-input[type='checkbox']:checked:active:not(:disabled):not([aria-disabled]),
162
- .charcoal-multi-select-input[type='checkbox']:checked:active[aria-disabled='false'] {
163
- background-color: var(--charcoal-color-container-primary-press);
164
- }
165
-
166
- .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false']:not(:disabled):not(
167
- [aria-disabled]
168
- ) {
169
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
170
- }
171
-
172
- .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false'][aria-disabled='false'] {
173
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
174
- }
175
-
176
- .charcoal-multi-select-input[type='checkbox'][data-overlay='true'] {
177
- background-color: var(--charcoal-color-container-on-img-default);
178
- }
179
-
180
- .charcoal-multi-select-overlay {
181
- position: absolute;
182
- top: -2px;
183
- left: -2px;
184
- box-sizing: border-box;
185
- display: flex;
186
- align-items: center;
187
- justify-content: center;
188
- width: 24px;
189
- height: 24px;
190
- border-radius: 999999px;
191
- color: var(--charcoal-color-icon-on-primary-default);
192
- transition: 0.2s box-shadow;
193
- }
194
-
195
- .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true']:not(:disabled):not(
196
- [aria-disabled]
197
- ) {
198
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
199
- }
200
-
201
- .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true'][aria-disabled='false'] {
202
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
203
- }
204
-
205
- .charcoal-multi-select-overlay[data-overlay='true'] {
206
- border-color: var(--charcoal-color-border-hud);
207
- border-width: 2px;
208
- border-style: solid;
209
- }
210
- .charcoal-clickable {
211
- cursor: pointer;
212
-
213
- /* Reset button appearance */
214
- -webkit-appearance: none;
215
- -moz-appearance: none;
216
- appearance: none;
217
- background: transparent;
218
- padding: 0;
219
- border-style: none;
220
- outline: none;
221
- color: inherit;
222
- text-rendering: inherit;
223
- letter-spacing: inherit;
224
- word-spacing: inherit;
225
- text-decoration: none;
226
-
227
- /* Change the font styles in all browsers. */
228
- font: inherit;
229
-
230
- /* Remove the margin in Firefox and Safari. */
231
- margin: 0;
232
-
233
- /* Show the overflow in Edge. */
234
- overflow: visible;
235
-
236
- /* Remove the inheritance of text transform in Firefox. */
237
- text-transform: none;
238
- }
239
-
240
- .charcoal-clickable:disabled,
241
- .charcoal-clickable[aria-disabled]:not([aria-disabled='false']) {
242
- cursor: default;
243
- }
244
-
245
- .charcoal-clickable:focus {
246
- outline: none;
247
- }
248
-
249
- .charcoal-clickable::-moz-focus-inner {
250
- border-style: none;
251
- padding: 0;
252
- }
253
- .charcoal-switch__label {
254
- display: inline-grid;
255
- grid-template-columns: auto 1fr;
256
- align-items: center;
257
- cursor: pointer;
258
- outline: 0;
259
- gap: 4px;
260
- }
261
-
262
- .charcoal-switch__label[aria-disabled='true'] {
263
- opacity: 0.32;
264
- cursor: default;
265
- }
266
-
267
- .charcoal-switch__label[aria-disabled='true'] > input {
268
- opacity: 1;
269
- }
270
-
271
- .charcoal-switch__label_div {
272
- font-size: 14px;
273
- line-height: 22px;
274
- color: var(--charcoal-color-text-default);
275
- }
276
- .charcoal-text-field-root {
277
- display: grid;
278
- grid-template-columns: 1fr;
279
- grid-gap: 4px;
280
- }
281
-
282
- .charcoal-text-field-root[aria-disabled='true'] {
283
- opacity: 0.32;
284
- }
285
-
286
- .charcoal-text-field-container {
287
- display: flex;
288
- height: 40px;
289
- transition:
290
- 0.2s background-color,
291
- 0.2s box-shadow;
292
- color: var(--charcoal-color-text-secondary-default);
293
- background-color: var(--charcoal-color-container-secondary-default-a);
294
- border-radius: 4px;
295
- padding: 0 8px;
296
- line-height: 22px;
297
- font-size: 14px;
298
- }
299
-
300
- .charcoal-text-field-container[data-invalid='true'] {
301
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
302
- }
303
-
304
- .charcoal-text-field-container:not([aria-disabled='true']):hover {
305
- background-color: var(--charcoal-color-container-secondary-hover-a);
306
- }
307
-
308
- .charcoal-text-field-container:not([aria-disabled='true']):focus-within {
309
- outline: none;
310
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
311
- }
312
-
313
- .charcoal-text-field-container:not([aria-disabled='true'])[data-invalid='true']:focus-within {
314
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
315
- }
316
-
317
- .charcoal-text-field-prefix {
318
- display: flex;
319
- align-items: center;
320
- margin-right: 4px;
321
- }
322
-
323
- .charcoal-text-field-suffix {
324
- display: flex;
325
- align-items: center;
326
- gap: 8px;
327
- margin-left: 4px;
328
- }
329
-
330
- .charcoal-text-field-input-root {
331
- flex: 1;
332
- min-width: 0;
333
- overflow: hidden;
334
- }
335
-
336
- .charcoal-text-field-input {
337
- border: none;
338
- box-sizing: border-box;
339
- outline: none;
340
- font-family: inherit;
341
-
342
- /* Prevent zooming for iOS Safari */
343
- transform-origin: top left;
344
- transform: scale(0.875);
345
- width: calc(100% / 0.875);
346
- height: calc(100% / 0.875);
347
- font-size: calc(14px / 0.875);
348
- line-height: calc(22px / 0.875);
349
- padding-left: 0;
350
- padding-right: 0;
351
- border-radius: calc(4px / 0.875);
352
-
353
- /* Display box-shadow for iOS Safari */
354
- -webkit-appearance: none;
355
- -moz-appearance: none;
356
- appearance: none;
357
- background: transparent;
358
-
359
- color: var(--charcoal-color-text-secondary-default);
360
- }
361
-
362
- .charcoal-text-field-input::-moz-placeholder {
363
- color: var(--charcoal-color-text-placeholder-default);
364
- }
365
-
366
- .charcoal-text-field-input::placeholder {
367
- color: var(--charcoal-color-text-placeholder-default);
368
- }
369
-
370
- .charcoal-text-field-line-counter {
371
- line-height: 22px;
372
- font-size: 14px;
373
- color: var(--charcoal-color-text-tertiary-default);
374
- }
375
9
  .charcoal-button {
376
10
  -webkit-appearance: none;
377
11
  -moz-appearance: none;
@@ -519,8 +153,51 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
519
153
  height: 32px;
520
154
  }
521
155
 
522
- .charcoal-button[data-full-width='true'] {
523
- width: 100%;
156
+ .charcoal-button[data-full-width='true'] {
157
+ width: 100%;
158
+ }
159
+ .charcoal-clickable {
160
+ cursor: pointer;
161
+
162
+ /* Reset button appearance */
163
+ -webkit-appearance: none;
164
+ -moz-appearance: none;
165
+ appearance: none;
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;
175
+
176
+ /* Change the font styles in all browsers. */
177
+ font: inherit;
178
+
179
+ /* Remove the margin in Firefox and Safari. */
180
+ margin: 0;
181
+
182
+ /* Show the overflow in Edge. */
183
+ overflow: visible;
184
+
185
+ /* Remove the inheritance of text transform in Firefox. */
186
+ text-transform: none;
187
+ }
188
+
189
+ .charcoal-clickable:disabled,
190
+ .charcoal-clickable[aria-disabled]:not([aria-disabled='false']) {
191
+ cursor: default;
192
+ }
193
+
194
+ .charcoal-clickable:focus {
195
+ outline: none;
196
+ }
197
+
198
+ .charcoal-clickable::-moz-focus-inner {
199
+ border-style: none;
200
+ padding: 0;
524
201
  }
525
202
  .charcoal-icon-button {
526
203
  cursor: pointer;
@@ -646,137 +323,230 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
646
323
  .charcoal-icon-button[aria-disabled='false']:focus:not(:focus-visible) {
647
324
  box-shadow: none;
648
325
  }
649
- .charcoal-menu-item-group {
650
- display: block;
326
+ .charcoal-switch__label {
327
+ display: inline-grid;
328
+ grid-template-columns: auto 1fr;
329
+ align-items: center;
330
+ cursor: pointer;
331
+ outline: 0;
332
+ gap: 4px;
651
333
  }
652
334
 
653
- .charcoal-menu-item-group > span {
654
- display: block;
655
- color: var(--charcoal-color-text-tertiary-default);
656
- font-size: 12px;
657
- font-weight: bold;
658
- padding: 12px 0 8px 16px;
659
- }
335
+ .charcoal-switch__label[aria-disabled='true'] {
336
+ opacity: 0.32;
337
+ cursor: default;
338
+ }
660
339
 
661
- .charcoal-menu-item-group > ul {
662
- padding-left: 0;
663
- margin: 0;
664
- box-sizing: border-box;
665
- list-style: none;
666
- overflow: hidden;
340
+ .charcoal-switch__label[aria-disabled='true'] > input {
341
+ opacity: 1;
342
+ }
343
+
344
+ .charcoal-switch__label_div {
345
+ font-size: 14px;
346
+ line-height: 22px;
347
+ color: var(--charcoal-color-text-default);
667
348
  }
668
- .charcoal-text-area-root {
349
+ .charcoal-radio-group {
669
350
  display: grid;
670
351
  grid-template-columns: 1fr;
352
+ grid-gap: 8px;
353
+ }
354
+ .charcoal-loading-spinner {
355
+ box-sizing: content-box;
356
+ margin: auto;
357
+ padding: 16px;
358
+ border-radius: 8px;
359
+ font-size: 48px;
360
+ width: 48px;
361
+ height: 48px;
362
+ opacity: 0.84;
363
+ color: var(--charcoal-color-icon-tertiary-default);
364
+ background-color: var(--charcoal-color-background-default);
365
+ }
366
+
367
+ .charcoal-loading-spinner[data-transparent='true'] {
368
+ background-color: transparent;
369
+ }
370
+
371
+ @keyframes charcoal-loading-spinner-icon-scale-out {
372
+ from {
373
+ transform: scale(0);
374
+ opacity: 1;
375
+ }
376
+ to {
377
+ transform: scale(1);
378
+ opacity: 0;
379
+ }
380
+ }
381
+
382
+ .charcoal-loading-spinner-icon {
383
+ width: 1em;
384
+ height: 1em;
385
+ border-radius: 1em;
386
+ background-color: currentColor;
387
+ animation: charcoal-loading-spinner-icon-scale-out 1s infinite both ease-out;
388
+ }
389
+
390
+ .charcoal-loading-spinner-icon[data-reset-animation] {
391
+ animation: none;
392
+ }
393
+
394
+ .charcoal-loading-spinner-icon[data-once='true'] {
395
+ animation-iteration-count: 1;
396
+ }
397
+ .charcoal-radio__label {
398
+ display: grid;
399
+ grid-template-columns: auto 1fr;
671
400
  grid-gap: 4px;
401
+ align-items: center;
402
+ cursor: pointer;
672
403
  }
673
404
 
674
- .charcoal-text-area-root[aria-disabled='true'] {
405
+ .charcoal-radio__label[aria-disabled]:not([aria-disabled='false']) {
675
406
  opacity: 0.32;
407
+ cursor: default;
676
408
  }
677
409
 
678
- .charcoal-text-area-container {
679
- /* Runtime variable overridden by the React component. */
680
- --charcoal-text-area-rows: 4;
681
-
410
+ .charcoal-radio__label_div {
411
+ font-size: 14px;
412
+ line-height: 22px;
413
+ color: var(--charcoal-color-text-default);
414
+ }
415
+ .charcoal-multi-select {
416
+ display: grid;
417
+ grid-template-columns: auto 1fr;
418
+ align-items: center;
682
419
  position: relative;
683
- overflow: hidden;
420
+ cursor: pointer;
421
+ gap: 4px;
422
+ }
684
423
 
685
- color: var(--charcoal-color-text-secondary-default);
686
- background-color: var(--charcoal-color-container-secondary-default-a);
687
- border-radius: 4px;
424
+ .charcoal-multi-select:disabled,
425
+ .charcoal-multi-select[aria-disabled]:not([aria-disabled='false']) {
426
+ opacity: 0.32;
427
+ cursor: default;
428
+ }
429
+
430
+ .charcoal-multi-select-label {
431
+ display: flow-root;
432
+ align-items: center;
433
+ font-size: 14px;
434
+ line-height: 22px;
435
+ color: var(--charcoal-color-text-default);
436
+ }
437
+
438
+ .charcoal-multi-select-label::before {
439
+ display: block;
440
+ width: 0;
441
+ height: 0;
442
+ content: '';
443
+ margin-top: -4px;
444
+ }
445
+
446
+ .charcoal-multi-select-label::after {
447
+ display: block;
448
+ width: 0;
449
+ height: 0;
450
+ content: '';
451
+ margin-bottom: -4px;
452
+ }
453
+
454
+ .charcoal-multi-select-input[type='checkbox'] {
455
+ -webkit-appearance: none;
456
+ -moz-appearance: none;
457
+ appearance: none;
458
+ display: block;
459
+ width: 20px;
460
+ height: 20px;
461
+ margin: 0;
462
+ background-color: var(--charcoal-color-container-neutral-default);
463
+ border-radius: 999999px;
688
464
  transition:
689
465
  0.2s background-color,
690
466
  0.2s box-shadow;
691
- height: calc(22px * var(--charcoal-text-area-rows) + 18px);
692
467
  }
693
468
 
694
- .charcoal-text-area-container[aria-invalid='true'] {
695
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
469
+ .charcoal-multi-select-input[type='checkbox']:checked {
470
+ background-color: var(--charcoal-color-container-primary-default);
696
471
  }
697
472
 
698
- .charcoal-text-area-container:focus-within {
473
+ .charcoal-multi-select-input[type='checkbox']:focus {
699
474
  outline: none;
700
475
  box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
701
476
  }
702
477
 
703
- .charcoal-text-area-container:has([data-no-bottom-padding='true']) {
704
- height: calc(22px * (var(--charcoal-text-area-rows) + 1) + 18px);
478
+ .charcoal-multi-select-input[type='checkbox']:focus-visible {
479
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
705
480
  }
706
481
 
707
- .charcoal-text-area-container:not([aria-disabled='true']):hover {
708
- background-color: var(--charcoal-color-container-secondary-hover-a);
482
+ .charcoal-multi-select-input[type='checkbox']:focus:not(:focus-visible) {
483
+ box-shadow: none;
709
484
  }
710
485
 
711
- .charcoal-text-area-container[aria-invalid='true']:focus-within {
712
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
486
+ .charcoal-multi-select-input[type='checkbox']:hover:not(:disabled):not([aria-disabled]),
487
+ .charcoal-multi-select-input[type='checkbox']:hover[aria-disabled='false'] {
488
+ background-color: var(--charcoal-color-container-neutral-hover);
713
489
  }
714
490
 
715
- .charcoal-text-area-textarea {
716
- border: none;
717
- outline: none;
718
- resize: none;
719
- font-family: inherit;
720
- color: inherit;
721
- box-sizing: border-box;
491
+ .charcoal-multi-select-input[type='checkbox']:active:not(:disabled):not([aria-disabled]),
492
+ .charcoal-multi-select-input[type='checkbox']:active[aria-disabled='false'] {
493
+ background-color: var(--charcoal-color-container-neutral-press);
494
+ }
722
495
 
723
- /* Prevent zooming for iOS Safari */
724
- --charcoal-textarea-safari-prevent-zoom-scale: 0.875;
725
- --charcoal-textarea-line-height: calc(
726
- 22px / var(--charcoal-textarea-safari-prevent-zoom-scale)
727
- );
728
- --charcoal-textarea-padding-y: calc(
729
- 8px / var(--charcoal-textarea-safari-prevent-zoom-scale)
730
- );
731
- --charcoal-textarea-padding-x: calc(
732
- 9px / var(--charcoal-textarea-safari-prevent-zoom-scale)
733
- );
496
+ .charcoal-multi-select-input[type='checkbox']:checked:hover:not(:disabled):not([aria-disabled]),
497
+ .charcoal-multi-select-input[type='checkbox']:checked:hover[aria-disabled='false'] {
498
+ background-color: var(--charcoal-color-container-primary-hover);
499
+ }
734
500
 
735
- transform-origin: top left;
736
- transform: scale(var(--charcoal-textarea-safari-prevent-zoom-scale));
737
- width: calc(100% / var(--charcoal-textarea-safari-prevent-zoom-scale));
738
- font-size: calc(14px / var(--charcoal-textarea-safari-prevent-zoom-scale));
739
- line-height: var(--charcoal-textarea-line-height);
740
- padding: var(--charcoal-textarea-padding-y) var(--charcoal-textarea-padding-x);
741
- height: calc(
742
- var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
743
- var(--charcoal-textarea-padding-y) * 2
744
- );
501
+ .charcoal-multi-select-input[type='checkbox']:checked:active:not(:disabled):not([aria-disabled]),
502
+ .charcoal-multi-select-input[type='checkbox']:checked:active[aria-disabled='false'] {
503
+ background-color: var(--charcoal-color-container-primary-press);
504
+ }
745
505
 
746
- /* Display box-shadow for iOS Safari */
747
- -webkit-appearance: none;
748
- -moz-appearance: none;
749
- appearance: none;
506
+ .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false']:not(:disabled):not(
507
+ [aria-disabled]
508
+ ) {
509
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
510
+ }
750
511
 
751
- background: none;
512
+ .charcoal-multi-select-input[type='checkbox'][aria-invalid='true'][data-overlay='false'][aria-disabled='false'] {
513
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
514
+ }
515
+
516
+ .charcoal-multi-select-input[type='checkbox'][data-overlay='true'] {
517
+ background-color: var(--charcoal-color-container-on-img-default);
518
+ }
519
+
520
+ .charcoal-multi-select-overlay {
521
+ position: absolute;
522
+ top: -2px;
523
+ left: -2px;
524
+ box-sizing: border-box;
525
+ display: flex;
526
+ align-items: center;
527
+ justify-content: center;
528
+ width: 24px;
529
+ height: 24px;
530
+ border-radius: 999999px;
531
+ color: var(--charcoal-color-icon-on-primary-default);
532
+ transition: 0.2s box-shadow;
752
533
  }
753
534
 
754
- .charcoal-text-area-textarea[data-no-bottom-padding='true'] {
755
- padding: var(--charcoal-textarea-padding-y)
756
- var(--charcoal-textarea-padding-x) 0;
757
- height: calc(
758
- var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
759
- var(--charcoal-textarea-padding-y)
760
- );
535
+ .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true']:not(:disabled):not(
536
+ [aria-disabled]
537
+ ) {
538
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
761
539
  }
762
540
 
763
- .charcoal-text-area-textarea::-moz-placeholder {
764
- color: var(--charcoal-color-text-placeholder-default);
541
+ .charcoal-multi-select-overlay[aria-invalid='true'][data-overlay='true'][aria-disabled='false'] {
542
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
765
543
  }
766
544
 
767
- .charcoal-text-area-textarea::placeholder {
768
- color: var(--charcoal-color-text-placeholder-default);
545
+ .charcoal-multi-select-overlay[data-overlay='true'] {
546
+ border-color: var(--charcoal-color-border-hud);
547
+ border-width: 2px;
548
+ border-style: solid;
769
549
  }
770
-
771
- .charcoal-text-area-counter {
772
- position: absolute;
773
- bottom: 9px;
774
- right: 8px;
775
-
776
- line-height: 22px;
777
- font-size: 14px;
778
- color: var(--charcoal-color-text-tertiary-default);
779
- }
780
550
  .charcoal-modal-header-root {
781
551
  height: 64px;
782
552
  display: grid;
@@ -817,182 +587,219 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
817
587
  padding-left: 16px;
818
588
  padding-right: 16px;
819
589
  }
820
- .charcoal-segmented-control {
821
- display: inline-flex;
822
- align-items: center;
590
+ .charcoal-dropdown-selector-menu-item {
591
+ font-size: 14px;
592
+ line-height: 22px;
593
+ color: var(--charcoal-color-text-secondary-default);
594
+ padding: 9px 0;
823
595
 
824
- background-color: var(--charcoal-color-container-secondary-default-a);
825
- border-radius: 16px;
596
+ display: flex;
597
+ align-items: center;
598
+ width: 100%;
599
+ margin-left: 20px;
826
600
  }
827
601
 
828
- .charcoal-segmented-control[data-uniform-segment-width='true'],
829
- .charcoal-segmented-control[data-full-width='true'] {
830
- display: inline-grid;
831
- grid-auto-columns: minmax(80px, 1fr);
832
- grid-auto-rows: 32px;
833
- grid-auto-flow: column;
834
- }
602
+ .charcoal-dropdown-selector-menu-item[data-selected='true'] {
603
+ margin-left: 0px;
604
+ }
835
605
 
836
- .charcoal-segmented-control[data-full-width='true'] {
837
- width: 100%;
838
- }
606
+ .charcoal-dropdown-selector-menu-item-icon {
607
+ color: var(--charcoal-color-text-secondary-default);
608
+ padding-right: 4px;
609
+ }
839
610
 
840
- .charcoal-segmented-control-radio__label {
841
- position: relative;
611
+ .charcoal-dropdown-selector-menu-item-container {
842
612
  display: flex;
843
613
  align-items: center;
844
- justify-content: center;
845
- cursor: pointer;
846
- height: 32px;
614
+ }
847
615
 
848
- padding-right: 16px;
849
- padding-left: 16px;
850
- border-radius: 16px;
851
- color: var(--charcoal-color-text-secondary-default);
616
+ .charcoal-dropdown-selector-menu-secondary {
617
+ font-size: 12px;
618
+ line-height: 20px;
619
+ color: var(--charcoal-color-text-tertiary-default);
620
+ padding-bottom: 9px;
852
621
 
853
- font-size: 14px;
854
- line-height: 22px;
622
+ display: flex;
623
+ align-items: center;
624
+ margin-left: 20px;
855
625
  }
856
626
 
857
- .charcoal-segmented-control-radio__label[aria-disabled]:not([aria-disabled='false']) {
627
+ .charcoal-dropdown-selector-menu-fullwidth {
628
+ width: 100%;
629
+ }
630
+ .charcoal-dropdown-selector-root {
631
+ display: grid;
632
+ grid-template-columns: 1fr;
633
+ grid-gap: 4px;
634
+ width: 100%;
635
+ }
636
+
637
+ .charcoal-dropdown-selector-root[aria-disabled='true'] {
858
638
  cursor: default;
859
639
  opacity: 0.32;
860
640
  }
861
641
 
862
- .charcoal-segmented-control-radio__label[data-checked='true'] {
863
- background-color: var(--charcoal-color-container-primary-default);
864
- color: var(--charcoal-color-text-on-primary-default);
865
- }
642
+ .charcoal-dropdown-selector-button {
643
+ display: grid;
644
+ grid-template-columns: 1fr auto;
645
+ justify-content: space-between;
646
+ align-items: center;
866
647
 
867
- .charcoal-segmented-control-radio__label[data-uniform-segment-width='true'],
868
- .charcoal-segmented-control-radio__label[data-full-width='true'] {
869
- justify-content: center;
870
- white-space: nowrap;
871
- }
648
+ height: 40px;
649
+ width: 100%;
650
+ box-sizing: border-box;
651
+ border: none;
652
+ cursor: pointer;
653
+ gap: 4px;
872
654
 
873
- .charcoal-segmented-control-radio__input {
874
- position: absolute;
655
+ padding-right: 8px;
656
+ padding-left: 8px;
657
+ background-color: var(--charcoal-color-container-secondary-default-a);
658
+ border-radius: 4px;
875
659
 
876
- height: 0px;
877
- width: 0px;
878
- padding: 0;
879
- margin: 0;
660
+ transition:
661
+ 0.2s box-shadow,
662
+ 0.2s background-color;
663
+ }
880
664
 
881
- -webkit-appearance: none;
665
+ .charcoal-dropdown-selector-button:disabled {
666
+ cursor: default;
667
+ }
882
668
 
883
- -moz-appearance: none;
669
+ .charcoal-dropdown-selector-button:not(:disabled):focus {
670
+ outline: none;
671
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
672
+ }
884
673
 
885
- appearance: none;
886
- box-sizing: border-box;
887
- overflow: hidden;
888
- white-space: nowrap;
889
- opacity: 0;
890
- }
891
- .charcoal-hint-text {
892
- background-color: var(--charcoal-color-container-secondary-default);
893
- border-radius: 8px;
894
- padding: 12px 16px;
895
- display: flex;
896
- align-items: flex-start;
897
- }
674
+ .charcoal-dropdown-selector-button:not(:disabled):focus-visible {
675
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
676
+ }
898
677
 
899
- .charcoal-hint-text[data-context='page'] {
900
- justify-content: center;
901
- }
678
+ .charcoal-dropdown-selector-button:not(:disabled)[data-active='true'],
679
+ .charcoal-dropdown-selector-button:not(:disabled):active {
680
+ background-color: var(--charcoal-color-container-secondary-press-a);
681
+ }
902
682
 
903
- @media (min-width: 744px) {
683
+ .charcoal-dropdown-selector-button:not(:disabled):hover {
684
+ background-color: var(--charcoal-color-container-secondary-hover-a);
685
+ }
904
686
 
905
- .charcoal-hint-text[data-context='page'] {
906
- padding: 20px 40px
907
- }
687
+ .charcoal-dropdown-selector-button:not(:disabled):focus:not(:focus-visible) {
688
+ box-shadow: none;
908
689
  }
909
690
 
910
- .charcoal-hint-text-icon {
911
- display: flex;
912
- align-items: center;
913
- color: var(--charcoal-color-icon-tertiary-default);
914
- height: 22px;
915
- margin: 0 4px 0 0;
916
- }
691
+ .charcoal-dropdown-selector-button[aria-invalid='true'],
692
+ .charcoal-dropdown-selector-button:not(:disabled)[aria-invalid='true']:focus:not(:focus-visible) {
693
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
694
+ }
917
695
 
918
- .charcoal-hint-text-message {
919
- color: var(--charcoal-color-text-secondary-default);
696
+ .charcoal-ui-dropdown-selector-text {
697
+ text-align: left;
920
698
  font-size: 14px;
921
699
  line-height: 22px;
922
700
  display: flow-root;
923
- margin: 0;
924
- min-width: 0;
925
- overflow-wrap: break-word;
701
+ color: var(--charcoal-color-text-default);
702
+ overflow: hidden;
703
+ text-overflow: ellipsis;
704
+ white-space: nowrap;
926
705
  }
927
- .charcoal-modal-background {
928
- overflow: auto;
929
- display: flex;
930
- position: fixed;
931
- top: 0;
932
- left: 0;
933
- width: 100%;
934
- height: 100%;
935
- justify-content: center;
936
- padding: 40px 0;
937
- box-sizing: border-box;
938
706
 
939
- background-color: var(--charcoal-color-background-overlay);
707
+ .charcoal-ui-dropdown-selector-text[data-placeholder='true'] {
708
+ color: var(--charcoal-color-text-placeholder-default);
709
+ }
710
+
711
+ .charcoal-ui-dropdown-selector-icon {
712
+ color: var(--charcoal-color-icon-secondary-default);
713
+ }
714
+ .charcoal-menu-item-group {
715
+ display: block;
940
716
  }
941
717
 
942
- @media (max-width: 743px) {
943
- .charcoal-modal-background[data-bottom-sheet='true'],
944
- .charcoal-modal-background[data-bottom-sheet='full'] {
945
- padding: 0;
946
- }
947
- }
718
+ .charcoal-menu-item-group > span {
719
+ display: block;
720
+ color: var(--charcoal-color-text-tertiary-default);
721
+ font-size: 12px;
722
+ font-weight: bold;
723
+ padding: 12px 0 8px 16px;
724
+ }
948
725
 
949
- /* easeOutQuart。duration useTransitionPresence の MODAL_TRANSITION_DURATION_MS と一致させること。
950
- transition は entering / exiting に限定し、開いたままテーマ切り替え等で
951
- 色や transform が変わってもアニメーションしないようにする */
952
- .charcoal-modal-background[data-animation] {
726
+ .charcoal-menu-item-group > ul {
727
+ padding-left: 0;
728
+ margin: 0;
729
+ box-sizing: border-box;
730
+ list-style: none;
953
731
  overflow: hidden;
954
732
  }
733
+ .charcoal-segmented-control {
734
+ display: inline-flex;
735
+ align-items: center;
955
736
 
956
- .charcoal-modal-background[data-animation='entering'],
957
- .charcoal-modal-background[data-animation='exiting'] {
958
- transition: background-color 400ms cubic-bezier(0.25, 1, 0.5, 1);
737
+ background-color: var(--charcoal-color-container-secondary-default-a);
738
+ border-radius: 16px;
959
739
  }
960
740
 
961
- /* 閉じアニメーション中はクリックを下のページへ通す(transitionend が来ない環境で
962
- 透明なオーバーレイがタップを奪い続けるのも防ぐ) */
963
- .charcoal-modal-background[data-animation='exited'],
964
- .charcoal-modal-background[data-animation='exiting'] {
965
- background-color: transparent;
966
- pointer-events: none;
741
+ .charcoal-segmented-control[data-uniform-segment-width='true'],
742
+ .charcoal-segmented-control[data-full-width='true'] {
743
+ display: inline-grid;
744
+ grid-auto-columns: minmax(80px, 1fr);
745
+ grid-auto-rows: 32px;
746
+ grid-auto-flow: column;
747
+ }
748
+
749
+ .charcoal-segmented-control[data-full-width='true'] {
750
+ width: 100%;
751
+ }
752
+
753
+ .charcoal-segmented-control-radio__label {
754
+ position: relative;
755
+ display: flex;
756
+ align-items: center;
757
+ justify-content: center;
758
+ cursor: pointer;
759
+ height: 32px;
760
+
761
+ padding-right: 16px;
762
+ padding-left: 16px;
763
+ border-radius: 16px;
764
+ color: var(--charcoal-color-text-secondary-default);
765
+
766
+ font-size: 14px;
767
+ line-height: 22px;
967
768
  }
968
769
 
969
- .charcoal-modal-background[data-animation='entered'] {
970
- overflow: auto;
971
- }
770
+ .charcoal-segmented-control-radio__label[aria-disabled]:not([aria-disabled='false']) {
771
+ cursor: default;
772
+ opacity: 0.32;
773
+ }
972
774
 
973
- .charcoal-modal-background[data-animation='entering'] > .charcoal-modal-dialog,
974
- .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
975
- transition: transform 400ms cubic-bezier(0.25, 1, 0.5, 1);
976
- }
775
+ .charcoal-segmented-control-radio__label[data-checked='true'] {
776
+ background-color: var(--charcoal-color-container-primary-default);
777
+ color: var(--charcoal-color-text-on-primary-default);
778
+ }
977
779
 
978
- .charcoal-modal-background[data-animation='exited'] > .charcoal-modal-dialog,
979
- .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
980
- transform: translateY(100%);
981
- }
780
+ .charcoal-segmented-control-radio__label[data-uniform-segment-width='true'],
781
+ .charcoal-segmented-control-radio__label[data-full-width='true'] {
782
+ justify-content: center;
783
+ white-space: nowrap;
784
+ }
982
785
 
983
- .charcoal-modal-close-button {
786
+ .charcoal-segmented-control-radio__input {
984
787
  position: absolute;
985
- top: 8px;
986
- right: 8px;
987
-
988
- color: var(--charcoal-color-text-tertiary-default);
989
- transition: 0.2s color;
990
- }
991
788
 
992
- .charcoal-modal-title {
789
+ height: 0px;
790
+ width: 0px;
791
+ padding: 0;
993
792
  margin: 0;
994
- font-weight: inherit;
995
- font-size: inherit;
793
+
794
+ -webkit-appearance: none;
795
+
796
+ -moz-appearance: none;
797
+
798
+ appearance: none;
799
+ box-sizing: border-box;
800
+ overflow: hidden;
801
+ white-space: nowrap;
802
+ opacity: 0;
996
803
  }
997
804
  .charcoal-checkbox__label {
998
805
  position: relative;
@@ -1016,49 +823,6 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1016
823
  font-size: 14px;
1017
824
  line-height: 20px;
1018
825
  }
1019
- .charcoal-loading-spinner {
1020
- box-sizing: content-box;
1021
- margin: auto;
1022
- padding: 16px;
1023
- border-radius: 8px;
1024
- font-size: 48px;
1025
- width: 48px;
1026
- height: 48px;
1027
- opacity: 0.84;
1028
- color: var(--charcoal-color-icon-tertiary-default);
1029
- background-color: var(--charcoal-color-background-default);
1030
- }
1031
-
1032
- .charcoal-loading-spinner[data-transparent='true'] {
1033
- background-color: var(--charcoal-color-container-default-a);
1034
- }
1035
-
1036
- @keyframes charcoal-loading-spinner-icon-scale-out {
1037
- from {
1038
- transform: scale(0);
1039
- opacity: 1;
1040
- }
1041
- to {
1042
- transform: scale(1);
1043
- opacity: 0;
1044
- }
1045
- }
1046
-
1047
- .charcoal-loading-spinner-icon {
1048
- width: 1em;
1049
- height: 1em;
1050
- border-radius: 1em;
1051
- background-color: currentColor;
1052
- animation: charcoal-loading-spinner-icon-scale-out 1s infinite both ease-out;
1053
- }
1054
-
1055
- .charcoal-loading-spinner-icon[data-reset-animation] {
1056
- animation: none;
1057
- }
1058
-
1059
- .charcoal-loading-spinner-icon[data-once='true'] {
1060
- animation-iteration-count: 1;
1061
- }
1062
826
  .charcoal-tag-item {
1063
827
  --charcoal-tag-item-color: var(--charcoal-color-text-on-primary-default);
1064
828
  --charcoal-tag-item-size: 40px;
@@ -1213,130 +977,337 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1213
977
  .charcoal-tag-item__labe__text[data-has-translate='true']::after {
1214
978
  display: none;
1215
979
  }
1216
- .charcoal-dropdown-selector-root {
980
+ .charcoal-hint-text {
981
+ background-color: var(--charcoal-color-container-secondary-default);
982
+ border-radius: 8px;
983
+ padding: 12px 16px;
984
+ display: flex;
985
+ align-items: flex-start;
986
+ }
987
+
988
+ .charcoal-hint-text[data-context='page'] {
989
+ justify-content: center;
990
+ }
991
+
992
+ @media (min-width: 744px) {
993
+
994
+ .charcoal-hint-text[data-context='page'] {
995
+ padding: 20px 40px
996
+ }
997
+ }
998
+
999
+ .charcoal-hint-text-icon {
1000
+ display: flex;
1001
+ align-items: center;
1002
+ color: var(--charcoal-color-icon-tertiary-default);
1003
+ height: 22px;
1004
+ margin: 0 4px 0 0;
1005
+ }
1006
+
1007
+ .charcoal-hint-text-message {
1008
+ color: var(--charcoal-color-text-secondary-default);
1009
+ font-size: 14px;
1010
+ line-height: 22px;
1011
+ display: flow-root;
1012
+ margin: 0;
1013
+ min-width: 0;
1014
+ overflow-wrap: break-word;
1015
+ }
1016
+ .charcoal-text-area-root {
1217
1017
  display: grid;
1218
1018
  grid-template-columns: 1fr;
1219
1019
  grid-gap: 4px;
1220
- width: 100%;
1221
1020
  }
1222
1021
 
1223
- .charcoal-dropdown-selector-root[aria-disabled='true'] {
1224
- cursor: default;
1022
+ .charcoal-text-area-root[aria-disabled='true'] {
1225
1023
  opacity: 0.32;
1226
1024
  }
1227
1025
 
1228
- .charcoal-dropdown-selector-button {
1229
- display: grid;
1230
- grid-template-columns: 1fr auto;
1231
- justify-content: space-between;
1232
- align-items: center;
1026
+ .charcoal-text-area-container {
1027
+ /* Runtime variable overridden by the React component. */
1028
+ --charcoal-text-area-rows: 4;
1233
1029
 
1234
- height: 40px;
1235
- width: 100%;
1236
- box-sizing: border-box;
1237
- border: none;
1238
- cursor: pointer;
1239
- gap: 4px;
1030
+ position: relative;
1031
+ overflow: hidden;
1240
1032
 
1241
- padding-right: 8px;
1242
- padding-left: 8px;
1033
+ color: var(--charcoal-color-text-secondary-default);
1243
1034
  background-color: var(--charcoal-color-container-secondary-default-a);
1244
1035
  border-radius: 4px;
1036
+ transition:
1037
+ 0.2s background-color,
1038
+ 0.2s box-shadow;
1039
+ height: calc(22px * var(--charcoal-text-area-rows) + 18px);
1040
+ }
1041
+
1042
+ .charcoal-text-area-container[aria-invalid='true'] {
1043
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1044
+ }
1045
+
1046
+ .charcoal-text-area-container:focus-within {
1047
+ outline: none;
1048
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1049
+ }
1050
+
1051
+ .charcoal-text-area-container:has([data-no-bottom-padding='true']) {
1052
+ height: calc(22px * (var(--charcoal-text-area-rows) + 1) + 18px);
1053
+ }
1054
+
1055
+ .charcoal-text-area-container:not([aria-disabled='true']):hover {
1056
+ background-color: var(--charcoal-color-container-secondary-hover-a);
1057
+ }
1058
+
1059
+ .charcoal-text-area-container[aria-invalid='true']:focus-within {
1060
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1061
+ }
1062
+
1063
+ .charcoal-text-area-textarea {
1064
+ border: none;
1065
+ outline: none;
1066
+ resize: none;
1067
+ font-family: inherit;
1068
+ color: inherit;
1069
+ box-sizing: border-box;
1070
+
1071
+ /* Prevent zooming for iOS Safari */
1072
+ --charcoal-textarea-safari-prevent-zoom-scale: 0.875;
1073
+ --charcoal-textarea-line-height: calc(
1074
+ 22px / var(--charcoal-textarea-safari-prevent-zoom-scale)
1075
+ );
1076
+ --charcoal-textarea-padding-y: calc(
1077
+ 8px / var(--charcoal-textarea-safari-prevent-zoom-scale)
1078
+ );
1079
+ --charcoal-textarea-padding-x: calc(
1080
+ 9px / var(--charcoal-textarea-safari-prevent-zoom-scale)
1081
+ );
1082
+
1083
+ transform-origin: top left;
1084
+ transform: scale(var(--charcoal-textarea-safari-prevent-zoom-scale));
1085
+ width: calc(100% / var(--charcoal-textarea-safari-prevent-zoom-scale));
1086
+ font-size: calc(14px / var(--charcoal-textarea-safari-prevent-zoom-scale));
1087
+ line-height: var(--charcoal-textarea-line-height);
1088
+ padding: var(--charcoal-textarea-padding-y) var(--charcoal-textarea-padding-x);
1089
+ height: calc(
1090
+ var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
1091
+ var(--charcoal-textarea-padding-y) * 2
1092
+ );
1093
+
1094
+ /* Display box-shadow for iOS Safari */
1095
+ -webkit-appearance: none;
1096
+ -moz-appearance: none;
1097
+ appearance: none;
1098
+
1099
+ background: none;
1100
+ }
1101
+
1102
+ .charcoal-text-area-textarea[data-no-bottom-padding='true'] {
1103
+ padding: var(--charcoal-textarea-padding-y)
1104
+ var(--charcoal-textarea-padding-x) 0;
1105
+ height: calc(
1106
+ var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
1107
+ var(--charcoal-textarea-padding-y)
1108
+ );
1109
+ }
1110
+
1111
+ .charcoal-text-area-textarea::-moz-placeholder {
1112
+ color: var(--charcoal-color-text-placeholder-default);
1113
+ }
1114
+
1115
+ .charcoal-text-area-textarea::placeholder {
1116
+ color: var(--charcoal-color-text-placeholder-default);
1117
+ }
1118
+
1119
+ .charcoal-text-area-counter {
1120
+ position: absolute;
1121
+ bottom: 9px;
1122
+ right: 8px;
1123
+
1124
+ line-height: 22px;
1125
+ font-size: 14px;
1126
+ color: var(--charcoal-color-text-tertiary-default);
1127
+ }
1128
+ .charcoal-text-ellipsis {
1129
+ /* Runtime variables overridden by the React component. */
1130
+ --charcoal-text-ellipsis-line-limit: 1;
1131
+ --charcoal-text-ellipsis-line-height: inherit;
1245
1132
 
1246
- transition:
1247
- 0.2s box-shadow,
1248
- 0.2s background-color;
1133
+ overflow: hidden;
1134
+ overflow-wrap: break-word;
1135
+ display: -webkit-box;
1136
+ -webkit-box-orient: vertical;
1137
+ -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1249
1138
  }
1250
1139
 
1251
- .charcoal-dropdown-selector-button:disabled {
1252
- cursor: default;
1140
+ .charcoal-text-ellipsis[data-has-line-height='true'] {
1141
+ line-height: var(--charcoal-text-ellipsis-line-height);
1253
1142
  }
1254
1143
 
1255
- .charcoal-dropdown-selector-button:not(:disabled):focus {
1256
- outline: none;
1257
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1258
- }
1144
+ .charcoal-text-ellipsis[data-has-line-height='false'] {
1145
+ line-height: inherit;
1146
+ }
1259
1147
 
1260
- .charcoal-dropdown-selector-button:not(:disabled):focus-visible {
1261
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1262
- }
1148
+ .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1149
+ text-overflow: ellipsis;
1150
+ white-space: nowrap;
1151
+ }
1152
+ .charcoal-icon {
1153
+ display: inline-flex;
1154
+ width: var(--charcoal-icon-size);
1155
+ height: var(--charcoal-icon-size);
1156
+ }
1263
1157
 
1264
- .charcoal-dropdown-selector-button:not(:disabled)[data-active='true'],
1265
- .charcoal-dropdown-selector-button:not(:disabled):active {
1266
- background-color: var(--charcoal-color-container-secondary-press-a);
1267
- }
1158
+ pixiv-icon:not(:defined) {
1159
+ --pixiv-icon-base: 24px;
1160
+ --pixiv-icon-scale: 1;
1161
+ --pixiv-icon-size: calc(var(--pixiv-icon-base) * var(--pixiv-icon-scale));
1268
1162
 
1269
- .charcoal-dropdown-selector-button:not(:disabled):hover {
1270
- background-color: var(--charcoal-color-container-secondary-hover-a);
1163
+ display: inline-flex;
1164
+ /* --charcoal-icon-size がセットされていればそれを優先、
1165
+ なければ name / scale から導出した --pixiv-icon-size をフォールバック */
1166
+ width: var(--charcoal-icon-size, var(--pixiv-icon-size));
1167
+ height: var(--charcoal-icon-size, var(--pixiv-icon-size));
1168
+ }
1169
+
1170
+ pixiv-icon:not(:defined)[name^='16/'] {
1171
+ --pixiv-icon-base: 16px;
1172
+ --pixiv-icon-size: 16px;
1173
+ }
1174
+
1175
+ pixiv-icon:not(:defined)[name^='24/'][scale='2'] {
1176
+ --pixiv-icon-scale: 2;
1271
1177
  }
1272
1178
 
1273
- .charcoal-dropdown-selector-button:not(:disabled):focus:not(:focus-visible) {
1274
- box-shadow: none;
1179
+ pixiv-icon:not(:defined)[name^='24/'][scale='3'] {
1180
+ --pixiv-icon-scale: 3;
1275
1181
  }
1276
1182
 
1277
- .charcoal-dropdown-selector-button[aria-invalid='true'],
1278
- .charcoal-dropdown-selector-button:not(:disabled)[aria-invalid='true']:focus:not(:focus-visible) {
1279
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1183
+ pixiv-icon:not(:defined)[name^='32/'] {
1184
+ --pixiv-icon-base: 32px;
1185
+ --pixiv-icon-size: 32px;
1280
1186
  }
1281
1187
 
1282
- .charcoal-ui-dropdown-selector-text {
1283
- text-align: left;
1284
- font-size: 14px;
1285
- line-height: 22px;
1286
- display: flow-root;
1287
- color: var(--charcoal-color-text-default);
1288
- overflow: hidden;
1289
- text-overflow: ellipsis;
1290
- white-space: nowrap;
1291
- }
1292
-
1293
- .charcoal-ui-dropdown-selector-text[data-placeholder='true'] {
1294
- color: var(--charcoal-color-text-placeholder-default);
1188
+ pixiv-icon:not(:defined)[name^='Inline/'] {
1189
+ --pixiv-icon-base: 16px;
1295
1190
  }
1296
1191
 
1297
- .charcoal-ui-dropdown-selector-icon {
1298
- color: var(--charcoal-color-icon-secondary-default);
1299
- }
1300
- .charcoal-dropdown-selector-menu-item {
1301
- font-size: 14px;
1302
- line-height: 22px;
1303
- color: var(--charcoal-color-text-secondary-default);
1304
- padding: 9px 0;
1305
-
1192
+ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1193
+ --pixiv-icon-scale: 2;
1194
+ }
1195
+ .charcoal-pagination {
1306
1196
  display: flex;
1197
+ justify-content: center;
1307
1198
  align-items: center;
1308
- width: 100%;
1309
- margin-left: 20px;
1310
1199
  }
1311
1200
 
1312
- .charcoal-dropdown-selector-menu-item[data-selected='true'] {
1313
- margin-left: 0px;
1314
- }
1201
+ .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1202
+ min-width: 32px;
1203
+ min-height: 32px;
1204
+ }
1315
1205
 
1316
- .charcoal-dropdown-selector-menu-item-icon {
1317
- color: var(--charcoal-color-text-secondary-default);
1318
- padding-right: 4px;
1319
- }
1206
+ .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1207
+ min-width: 40px;
1208
+ min-height: 40px;
1209
+ }
1210
+
1211
+ /* stylelint-disable no-descending-specificity */
1212
+ .charcoal-pagination-button {
1213
+ cursor: pointer;
1214
+ -webkit-appearance: none;
1215
+ -moz-appearance: none;
1216
+ appearance: none;
1217
+ padding: 0;
1218
+ border-style: none;
1219
+ outline: none;
1220
+ text-decoration: none;
1221
+ font-family: inherit;
1222
+ font-style: inherit;
1223
+ font-variant: inherit;
1224
+ margin: 0;
1225
+ -webkit-user-select: none;
1226
+ -moz-user-select: none;
1227
+ user-select: none;
1320
1228
 
1321
- .charcoal-dropdown-selector-menu-item-container {
1322
1229
  display: flex;
1323
1230
  align-items: center;
1324
- }
1231
+ justify-content: center;
1232
+ font-size: 14px;
1233
+ font-weight: 700;
1234
+ line-height: 22px;
1325
1235
 
1326
- .charcoal-dropdown-selector-menu-secondary {
1327
- font-size: 12px;
1328
- line-height: 20px;
1329
- color: var(--charcoal-color-text-tertiary-default);
1330
- padding-bottom: 9px;
1236
+ /* HACK:
1237
+ * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1238
+ * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1239
+ */
1240
+ /* stylelint-disable-next-line property-no-vendor-prefix */
1241
+ -webkit-transform: translateZ(0);
1331
1242
 
1332
- display: flex;
1333
- align-items: center;
1334
- margin-left: 20px;
1243
+ color: var(--charcoal-color-text-tertiary-default);
1244
+ background-color: transparent;
1245
+ border-radius: 20px;
1246
+ transition:
1247
+ 0.2s background-color,
1248
+ 0.2s box-shadow;
1335
1249
  }
1250
+ .charcoal-pagination-button:focus {
1251
+ outline: none;
1252
+ }
1253
+ .charcoal-pagination-button::-moz-focus-inner {
1254
+ border-style: none;
1255
+ padding: 0;
1256
+ }
1257
+ .charcoal-pagination-button[hidden] {
1258
+ visibility: hidden;
1259
+ display: block;
1260
+ }
1261
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1262
+ .charcoal-pagination-button[aria-disabled='false']:hover {
1263
+ color: var(--charcoal-color-text-tertiary-default);
1264
+ background-color: var(--charcoal-color-container-secondary-default);
1265
+ }
1266
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1267
+ .charcoal-pagination-button[aria-disabled='false']:active {
1268
+ color: var(--charcoal-color-text-tertiary-press);
1269
+ background-color: var(--charcoal-color-container-tertiary-press);
1270
+ }
1271
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1272
+ .charcoal-pagination-button[aria-disabled='false']:focus {
1273
+ outline: none;
1274
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1275
+ }
1276
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1277
+ .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1278
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1279
+ }
1280
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1281
+ .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1282
+ box-shadow: none;
1283
+ }
1284
+ .charcoal-pagination-button[aria-current] {
1285
+ cursor: default;
1286
+ background-color: var(--charcoal-color-container-hud-default);
1287
+ color: var(--charcoal-color-text-on-hud-default);
1288
+ }
1289
+ .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1290
+ .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1291
+ background-color: var(--charcoal-color-container-hud-default);
1292
+ color: var(--charcoal-color-text-on-hud-default);
1293
+ }
1294
+ /* stylelint-enable no-descending-specificity */
1336
1295
 
1337
- .charcoal-dropdown-selector-menu-fullwidth {
1338
- width: 100%;
1296
+ .charcoal-pagination-nav-button[data-hidden] {
1297
+ visibility: hidden;
1339
1298
  }
1299
+
1300
+ .charcoal-pagination-spacer,
1301
+ .charcoal-pagination-spacer:hover,
1302
+ .charcoal-pagination-spacer:active {
1303
+ cursor: default;
1304
+ color: var(--charcoal-color-text-tertiary-default);
1305
+ background: none;
1306
+ }
1307
+
1308
+ .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1309
+ opacity: 1;
1310
+ }
1340
1311
  .charcoal-carousel {
1341
1312
  --charcoal-carousel-gap: 0px;
1342
1313
 
@@ -1656,243 +1627,295 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
1656
1627
  }
1657
1628
  }
1658
1629
  /* stylelint-enable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
1659
- .charcoal-text-ellipsis {
1660
- /* Runtime variables overridden by the React component. */
1661
- --charcoal-text-ellipsis-line-limit: 1;
1662
- --charcoal-text-ellipsis-line-height: inherit;
1630
+ .charcoal-snackbar-region {
1631
+ --charcoal-snackbar-offset: 16px;
1632
+
1633
+ position: fixed;
1634
+ left: 0;
1635
+ right: 0;
1636
+ display: grid;
1637
+ justify-content: center;
1638
+ pointer-events: none;
1639
+ box-sizing: border-box;
1640
+ }
1641
+
1642
+ .charcoal-snackbar-region[data-position='top'] {
1643
+ --charcoal-snackbar-enter-offset: calc(-1 * var(--charcoal-space-30));
1644
+
1645
+ top: calc(
1646
+ env(safe-area-inset-top, 0px) + max(var(--charcoal-snackbar-offset), 16px)
1647
+ );
1648
+ }
1649
+
1650
+ .charcoal-snackbar-region[data-position='bottom'] {
1651
+ --charcoal-snackbar-enter-offset: var(--charcoal-space-30);
1652
+
1653
+ bottom: calc(
1654
+ env(safe-area-inset-bottom, 0px) +
1655
+ max(var(--charcoal-snackbar-offset), 16px)
1656
+ );
1657
+ }
1658
+
1659
+ .charcoal-snackbar {
1660
+ box-sizing: border-box;
1661
+ border-radius: var(--charcoal-radius-oval);
1662
+ width: -moz-fit-content;
1663
+ width: fit-content;
1664
+ max-width: calc(100vw - var(--charcoal-space-46));
1665
+ min-height: 44px;
1666
+ padding: var(--charcoal-space-25) var(--charcoal-space-40);
1667
+ display: flex;
1668
+ align-items: center;
1669
+ justify-content: center;
1670
+ gap: var(--charcoal-space-20);
1671
+ pointer-events: auto;
1672
+ background-color: var(--charcoal-color-container-default);
1673
+ color: var(--charcoal-color-text-default);
1674
+ border: var(--charcoal-border-width-m) solid
1675
+ var(--charcoal-color-border-secondary);
1676
+ animation: charcoal-snackbar-enter 0.3s ease-out both;
1677
+ }
1678
+
1679
+ .charcoal-snackbar[data-exiting='true'] {
1680
+ animation: charcoal-snackbar-exit 0.3s ease-out both;
1681
+ }
1682
+
1683
+ .charcoal-snackbar[data-with-button='true'] {
1684
+ min-height: 56px;
1685
+ padding: var(--charcoal-space-25) var(--charcoal-space-30)
1686
+ var(--charcoal-space-25) var(--charcoal-space-40);
1687
+ }
1688
+
1689
+ .charcoal-snackbar[data-dim='true'] {
1690
+ background-color: var(--charcoal-color-container-hud-default);
1691
+ color: var(--charcoal-color-text-on-hud-default);
1692
+ border-color: var(--charcoal-color-border-hud);
1693
+ }
1694
+
1695
+ .charcoal-snackbar-content {
1696
+ display: flex;
1697
+ align-items: center;
1698
+ min-width: 0;
1699
+ }
1663
1700
 
1701
+ .charcoal-snackbar-label {
1702
+ min-width: 0;
1664
1703
  overflow: hidden;
1665
1704
  overflow-wrap: break-word;
1666
1705
  display: -webkit-box;
1667
1706
  -webkit-box-orient: vertical;
1668
- -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1707
+ -webkit-line-clamp: 2;
1708
+ font-size: var(--charcoal-text-font-size-caption-m);
1709
+ font-weight: var(--charcoal-text-font-weight-bold);
1710
+ line-height: var(--charcoal-text-line-height-caption-m);
1669
1711
  }
1670
1712
 
1671
- .charcoal-text-ellipsis[data-has-line-height='true'] {
1672
- line-height: var(--charcoal-text-ellipsis-line-height);
1673
- }
1674
-
1675
- .charcoal-text-ellipsis[data-has-line-height='false'] {
1676
- line-height: inherit;
1713
+ @keyframes charcoal-snackbar-enter {
1714
+ from {
1715
+ opacity: 0;
1716
+ transform: translateY(var(--charcoal-snackbar-enter-offset));
1677
1717
  }
1678
1718
 
1679
- .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1680
- text-overflow: ellipsis;
1681
- white-space: nowrap;
1719
+ to {
1720
+ opacity: 1;
1721
+ transform: translateY(0);
1682
1722
  }
1683
- .charcoal-pagination {
1684
- display: flex;
1685
- justify-content: center;
1686
- align-items: center;
1687
1723
  }
1688
1724
 
1689
- .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1690
- min-width: 32px;
1691
- min-height: 32px;
1725
+ @keyframes charcoal-snackbar-exit {
1726
+ from {
1727
+ opacity: 1;
1692
1728
  }
1693
1729
 
1694
- .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1695
- min-width: 40px;
1696
- min-height: 40px;
1730
+ to {
1731
+ opacity: 0;
1697
1732
  }
1733
+ }
1698
1734
 
1699
- /* stylelint-disable no-descending-specificity */
1700
- .charcoal-pagination-button {
1701
- cursor: pointer;
1702
- -webkit-appearance: none;
1703
- -moz-appearance: none;
1704
- appearance: none;
1705
- padding: 0;
1706
- border-style: none;
1707
- outline: none;
1708
- text-decoration: none;
1709
- font-family: inherit;
1710
- font-style: inherit;
1711
- font-variant: inherit;
1712
- margin: 0;
1713
- -webkit-user-select: none;
1714
- -moz-user-select: none;
1715
- user-select: none;
1716
-
1735
+ @media (prefers-reduced-motion: reduce) {
1736
+ .charcoal-snackbar,
1737
+ .charcoal-snackbar[data-exiting='true'] {
1738
+ animation: none;
1739
+ }
1740
+ }
1741
+ .charcoal-modal-background {
1742
+ overflow: auto;
1717
1743
  display: flex;
1718
- align-items: center;
1744
+ position: fixed;
1745
+ top: 0;
1746
+ left: 0;
1747
+ width: 100%;
1748
+ height: 100%;
1719
1749
  justify-content: center;
1720
- font-size: 14px;
1721
- font-weight: 700;
1722
- line-height: 22px;
1723
-
1724
- /* HACK:
1725
- * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1726
- * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1727
- */
1728
- /* stylelint-disable-next-line property-no-vendor-prefix */
1729
- -webkit-transform: translateZ(0);
1750
+ padding: 40px 0;
1751
+ box-sizing: border-box;
1730
1752
 
1731
- color: var(--charcoal-color-text-tertiary-default);
1732
- background-color: var(--charcoal-color-container-default-a);
1733
- border-radius: 20px;
1734
- transition:
1735
- 0.2s background-color,
1736
- 0.2s box-shadow;
1753
+ background-color: var(--charcoal-color-background-overlay);
1737
1754
  }
1738
- .charcoal-pagination-button:focus {
1739
- outline: none;
1740
- }
1741
- .charcoal-pagination-button::-moz-focus-inner {
1742
- border-style: none;
1743
- padding: 0;
1744
- }
1745
- .charcoal-pagination-button[hidden] {
1746
- visibility: hidden;
1747
- display: block;
1748
- }
1749
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1750
- .charcoal-pagination-button[aria-disabled='false']:hover {
1751
- color: var(--charcoal-color-text-tertiary-default);
1752
- background-color: var(--charcoal-color-container-secondary-default);
1753
- }
1754
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1755
- .charcoal-pagination-button[aria-disabled='false']:active {
1756
- color: var(--charcoal-color-text-tertiary-press);
1757
- background-color: var(--charcoal-color-container-tertiary-press);
1758
- }
1759
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1760
- .charcoal-pagination-button[aria-disabled='false']:focus {
1761
- outline: none;
1762
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1763
- }
1764
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1765
- .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1766
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1767
- }
1768
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1769
- .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1770
- box-shadow: none;
1771
- }
1772
- .charcoal-pagination-button[aria-current] {
1773
- cursor: default;
1774
- background-color: var(--charcoal-color-container-hud-default);
1775
- color: var(--charcoal-color-text-on-hud-default);
1776
- }
1777
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1778
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1779
- background-color: var(--charcoal-color-container-hud-default);
1780
- color: var(--charcoal-color-text-on-hud-default);
1755
+
1756
+ @media (max-width: 743px) {
1757
+ .charcoal-modal-background[data-bottom-sheet='true'],
1758
+ .charcoal-modal-background[data-bottom-sheet='full'] {
1759
+ padding: 0;
1781
1760
  }
1782
- /* stylelint-enable no-descending-specificity */
1761
+ }
1783
1762
 
1784
- .charcoal-pagination-nav-button[data-hidden] {
1785
- visibility: hidden;
1763
+ /* easeOutQuart。duration は useTransitionPresence の MODAL_TRANSITION_DURATION_MS と一致させること。
1764
+ transition は entering / exiting に限定し、開いたままテーマ切り替え等で
1765
+ 色や transform が変わってもアニメーションしないようにする */
1766
+ .charcoal-modal-background[data-animation] {
1767
+ overflow: hidden;
1786
1768
  }
1787
1769
 
1788
- .charcoal-pagination-spacer,
1789
- .charcoal-pagination-spacer:hover,
1790
- .charcoal-pagination-spacer:active {
1791
- cursor: default;
1792
- color: var(--charcoal-color-text-tertiary-default);
1793
- background: none;
1794
- }
1770
+ .charcoal-modal-background[data-animation='entering'],
1771
+ .charcoal-modal-background[data-animation='exiting'] {
1772
+ transition: background-color 400ms cubic-bezier(0.25, 1, 0.5, 1);
1773
+ }
1795
1774
 
1796
- .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1797
- opacity: 1;
1798
- }
1799
- .charcoal-text-field-assistive-text {
1800
- font-size: 14px;
1801
- line-height: 22px;
1802
- margin: 0;
1803
- color: var(--charcoal-color-text-secondary-default);
1775
+ /* 閉じアニメーション中はクリックを下のページへ通す(transitionend が来ない環境で
1776
+ 透明なオーバーレイがタップを奪い続けるのも防ぐ) */
1777
+ .charcoal-modal-background[data-animation='exited'],
1778
+ .charcoal-modal-background[data-animation='exiting'] {
1779
+ background-color: transparent;
1780
+ pointer-events: none;
1804
1781
  }
1805
1782
 
1806
- .charcoal-text-field-assistive-text[data-invalid='true'] {
1807
- color: var(--charcoal-color-text-negative-default);
1783
+ .charcoal-modal-background[data-animation='entered'] {
1784
+ overflow: auto;
1808
1785
  }
1809
- .charcoal-radio-input {
1810
- -webkit-appearance: none;
1811
- -moz-appearance: none;
1812
- appearance: none;
1813
- display: block;
1814
- box-sizing: border-box;
1815
1786
 
1816
- margin: 0;
1817
- padding: 6px;
1787
+ .charcoal-modal-background[data-animation='entering'] > .charcoal-modal-dialog,
1788
+ .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
1789
+ transition: transform 400ms cubic-bezier(0.25, 1, 0.5, 1);
1790
+ }
1818
1791
 
1819
- width: 20px;
1820
- height: 20px;
1821
- cursor: pointer;
1822
- border-radius: 999999px;
1823
- background-color: var(--charcoal-color-container-default);
1824
- transition:
1825
- 0.2s background-color,
1826
- 0.2s box-shadow;
1792
+ .charcoal-modal-background[data-animation='exited'] > .charcoal-modal-dialog,
1793
+ .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
1794
+ transform: translateY(100%);
1827
1795
  }
1828
1796
 
1829
- .charcoal-radio-input:checked {
1830
- background-color: var(--charcoal-color-container-primary-default);
1797
+ .charcoal-modal-close-button {
1798
+ position: absolute;
1799
+ top: 8px;
1800
+ right: 8px;
1801
+
1802
+ color: var(--charcoal-color-text-tertiary-default);
1803
+ transition: 0.2s color;
1831
1804
  }
1832
1805
 
1833
- .charcoal-radio-input:checked::after {
1834
- content: '';
1835
- display: block;
1836
- width: 8px;
1837
- height: 8px;
1838
- pointer-events: none;
1839
- background-color: var(--charcoal-color-icon-on-primary-default);
1840
- border-radius: 999999px;
1806
+ .charcoal-modal-title {
1807
+ margin: 0;
1808
+ font-weight: inherit;
1809
+ font-size: inherit;
1810
+ }
1811
+ .charcoal-text-field-root {
1812
+ display: grid;
1813
+ grid-template-columns: 1fr;
1814
+ grid-gap: 4px;
1815
+ }
1816
+
1817
+ .charcoal-text-field-root[aria-disabled='true'] {
1818
+ opacity: 0.32;
1819
+ }
1820
+
1821
+ .charcoal-text-field-container {
1822
+ display: flex;
1823
+ height: 40px;
1841
1824
  transition:
1842
1825
  0.2s background-color,
1843
1826
  0.2s box-shadow;
1827
+ color: var(--charcoal-color-text-secondary-default);
1828
+ background-color: var(--charcoal-color-container-secondary-default-a);
1829
+ border-radius: 4px;
1830
+ padding: 0 8px;
1831
+ line-height: 22px;
1832
+ font-size: 14px;
1844
1833
  }
1845
1834
 
1846
- .charcoal-radio-input:not(:checked) {
1847
- border-width: 2px;
1848
- border-style: solid;
1849
- border-color: var(--charcoal-color-border-default);
1850
- }
1835
+ .charcoal-text-field-container[data-invalid='true'] {
1836
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1837
+ }
1851
1838
 
1852
- .charcoal-radio-input:disabled {
1853
- cursor: default;
1839
+ .charcoal-text-field-container:not([aria-disabled='true']):hover {
1840
+ background-color: var(--charcoal-color-container-secondary-hover-a);
1841
+ }
1842
+
1843
+ .charcoal-text-field-container:not([aria-disabled='true']):focus-within {
1844
+ outline: none;
1845
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1846
+ }
1847
+
1848
+ .charcoal-text-field-container:not([aria-disabled='true'])[data-invalid='true']:focus-within {
1849
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1850
+ }
1851
+
1852
+ .charcoal-text-field-prefix {
1853
+ display: flex;
1854
+ align-items: center;
1855
+ margin-right: 4px;
1854
1856
  }
1855
1857
 
1856
- .charcoal-radio-input:not(:disabled):hover {
1857
- background-color: var(--charcoal-color-container-hover);
1858
+ .charcoal-text-field-suffix {
1859
+ display: flex;
1860
+ align-items: center;
1861
+ gap: 8px;
1862
+ margin-left: 4px;
1858
1863
  }
1859
1864
 
1860
- .charcoal-radio-input:not(:disabled):active {
1861
- background-color: var(--charcoal-color-container-press);
1865
+ .charcoal-text-field-input-root {
1866
+ flex: 1;
1867
+ min-width: 0;
1868
+ overflow: hidden;
1862
1869
  }
1863
1870
 
1864
- .charcoal-radio-input:not(:disabled):focus {
1871
+ .charcoal-text-field-input {
1872
+ border: none;
1873
+ box-sizing: border-box;
1865
1874
  outline: none;
1866
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1867
- }
1875
+ font-family: inherit;
1868
1876
 
1869
- .charcoal-radio-input:not(:disabled):focus-visible {
1870
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1871
- }
1877
+ /* Prevent zooming for iOS Safari */
1878
+ transform-origin: top left;
1879
+ transform: scale(0.875);
1880
+ width: calc(100% / 0.875);
1881
+ height: calc(100% / 0.875);
1882
+ font-size: calc(14px / 0.875);
1883
+ line-height: calc(22px / 0.875);
1884
+ padding-left: 0;
1885
+ padding-right: 0;
1886
+ border-radius: calc(4px / 0.875);
1872
1887
 
1873
- .charcoal-radio-input:not(:disabled):focus:not(:focus-visible) {
1874
- box-shadow: none;
1875
- }
1888
+ /* Display box-shadow for iOS Safari */
1889
+ -webkit-appearance: none;
1890
+ -moz-appearance: none;
1891
+ appearance: none;
1892
+ background: transparent;
1876
1893
 
1877
- .charcoal-radio-input:not(:disabled)[aria-invalid='true'],
1878
- .charcoal-radio-input:not(:disabled)[aria-invalid='true']:focus {
1879
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1894
+ color: var(--charcoal-color-text-secondary-default);
1880
1895
  }
1881
1896
 
1882
- .charcoal-radio-input:checked:not(:disabled):hover {
1883
- background-color: var(--charcoal-color-container-primary-hover);
1884
- }
1897
+ .charcoal-text-field-input::-moz-placeholder {
1898
+ color: var(--charcoal-color-text-placeholder-default);
1899
+ }
1885
1900
 
1886
- .charcoal-radio-input:checked:not(:disabled):hover::after {
1887
- background-color: var(--charcoal-color-icon-on-primary-hover);
1888
- }
1901
+ .charcoal-text-field-input::placeholder {
1902
+ color: var(--charcoal-color-text-placeholder-default);
1903
+ }
1889
1904
 
1890
- .charcoal-radio-input:checked:not(:disabled):active {
1891
- background-color: var(--charcoal-color-container-primary-press);
1905
+ .charcoal-text-field-line-counter {
1906
+ line-height: 22px;
1907
+ font-size: 14px;
1908
+ color: var(--charcoal-color-text-tertiary-default);
1909
+ }
1910
+ .charcoal-text-field-assistive-text {
1911
+ font-size: 14px;
1912
+ line-height: 22px;
1913
+ margin: 0;
1914
+ color: var(--charcoal-color-text-secondary-default);
1892
1915
  }
1893
1916
 
1894
- .charcoal-radio-input:checked:not(:disabled):active::after {
1895
- background-color: var(--charcoal-color-icon-on-primary-press);
1917
+ .charcoal-text-field-assistive-text[data-invalid='true'] {
1918
+ color: var(--charcoal-color-text-negative-default);
1896
1919
  }
1897
1920
  .charcoal-switch-input {
1898
1921
  cursor: pointer;
@@ -2015,6 +2038,94 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2015
2038
  .charcoal-field-label-root > .charcoal-field-label-sub-label {
2016
2039
  margin-left: auto;
2017
2040
  }
2041
+ .charcoal-radio-input {
2042
+ -webkit-appearance: none;
2043
+ -moz-appearance: none;
2044
+ appearance: none;
2045
+ display: block;
2046
+ box-sizing: border-box;
2047
+
2048
+ margin: 0;
2049
+ padding: 6px;
2050
+
2051
+ width: 20px;
2052
+ height: 20px;
2053
+ cursor: pointer;
2054
+ border-radius: 999999px;
2055
+ background-color: var(--charcoal-color-container-default);
2056
+ transition:
2057
+ 0.2s background-color,
2058
+ 0.2s box-shadow;
2059
+ }
2060
+
2061
+ .charcoal-radio-input:checked {
2062
+ background-color: var(--charcoal-color-container-primary-default);
2063
+ }
2064
+
2065
+ .charcoal-radio-input:checked::after {
2066
+ content: '';
2067
+ display: block;
2068
+ width: 8px;
2069
+ height: 8px;
2070
+ pointer-events: none;
2071
+ background-color: var(--charcoal-color-icon-on-primary-default);
2072
+ border-radius: 999999px;
2073
+ transition:
2074
+ 0.2s background-color,
2075
+ 0.2s box-shadow;
2076
+ }
2077
+
2078
+ .charcoal-radio-input:not(:checked) {
2079
+ border-width: 2px;
2080
+ border-style: solid;
2081
+ border-color: var(--charcoal-color-border-default);
2082
+ }
2083
+
2084
+ .charcoal-radio-input:disabled {
2085
+ cursor: default;
2086
+ }
2087
+
2088
+ .charcoal-radio-input:not(:disabled):hover {
2089
+ background-color: var(--charcoal-color-container-hover);
2090
+ }
2091
+
2092
+ .charcoal-radio-input:not(:disabled):active {
2093
+ background-color: var(--charcoal-color-container-press);
2094
+ }
2095
+
2096
+ .charcoal-radio-input:not(:disabled):focus {
2097
+ outline: none;
2098
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2099
+ }
2100
+
2101
+ .charcoal-radio-input:not(:disabled):focus-visible {
2102
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2103
+ }
2104
+
2105
+ .charcoal-radio-input:not(:disabled):focus:not(:focus-visible) {
2106
+ box-shadow: none;
2107
+ }
2108
+
2109
+ .charcoal-radio-input:not(:disabled)[aria-invalid='true'],
2110
+ .charcoal-radio-input:not(:disabled)[aria-invalid='true']:focus {
2111
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
2112
+ }
2113
+
2114
+ .charcoal-radio-input:checked:not(:disabled):hover {
2115
+ background-color: var(--charcoal-color-container-primary-hover);
2116
+ }
2117
+
2118
+ .charcoal-radio-input:checked:not(:disabled):hover::after {
2119
+ background-color: var(--charcoal-color-icon-on-primary-hover);
2120
+ }
2121
+
2122
+ .charcoal-radio-input:checked:not(:disabled):active {
2123
+ background-color: var(--charcoal-color-container-primary-press);
2124
+ }
2125
+
2126
+ .charcoal-radio-input:checked:not(:disabled):active::after {
2127
+ background-color: var(--charcoal-color-icon-on-primary-press);
2128
+ }
2018
2129
  .charcoal-list-item {
2019
2130
  list-style: none;
2020
2131
  display: flex;
@@ -2039,50 +2150,9 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2039
2150
  opacity: 0.32;
2040
2151
  cursor: default;
2041
2152
  }
2042
- .charcoal-modal-dialog {
2043
- margin: auto;
2044
- position: relative;
2045
- height: -moz-fit-content;
2046
- height: fit-content;
2047
- width: 440px;
2048
-
2049
- background-color: var(--charcoal-color-container-default);
2050
- border-radius: 24px;
2051
- }
2052
-
2053
- .charcoal-modal-dialog[data-size='S'] {
2054
- width: 336px;
2055
- }
2056
-
2057
- .charcoal-modal-dialog[data-size='M'] {
2058
- width: 440px;
2059
- }
2060
-
2061
- .charcoal-modal-dialog[data-size='L'] {
2062
- width: 648px;
2063
- }
2064
-
2065
- @media (max-width: 743px) {
2066
- .charcoal-modal-dialog {
2067
- max-width: 440px;
2068
- width: calc(100% - 48px);
2069
- }
2070
-
2071
- .charcoal-modal-dialog[data-bottom-sheet='true'],
2072
- .charcoal-modal-dialog[data-bottom-sheet='full'] {
2073
- max-width: unset;
2074
- width: 100%;
2075
- border-radius: 0;
2076
- margin: auto 0 0 0;
2077
- }
2078
-
2079
- .charcoal-modal-dialog[data-bottom-sheet='full'] {
2080
- min-height: 100%;
2081
- }
2082
- }
2083
-
2084
- .charcoal-modal-dialog:focus {
2085
- outline: none;
2153
+ .charcoal-menu-list {
2154
+ padding: 0;
2155
+ margin: 0;
2086
2156
  }
2087
2157
  .charcoal-checkbox-input {
2088
2158
  -webkit-appearance: none;
@@ -2198,9 +2268,50 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
2198
2268
  border: 2px solid #fff;
2199
2269
  box-sizing: border-box;
2200
2270
  }
2201
- .charcoal-menu-list {
2202
- padding: 0;
2203
- margin: 0;
2271
+ .charcoal-modal-dialog {
2272
+ margin: auto;
2273
+ position: relative;
2274
+ height: -moz-fit-content;
2275
+ height: fit-content;
2276
+ width: 440px;
2277
+
2278
+ background-color: var(--charcoal-color-container-default);
2279
+ border-radius: 24px;
2280
+ }
2281
+
2282
+ .charcoal-modal-dialog[data-size='S'] {
2283
+ width: 336px;
2284
+ }
2285
+
2286
+ .charcoal-modal-dialog[data-size='M'] {
2287
+ width: 440px;
2288
+ }
2289
+
2290
+ .charcoal-modal-dialog[data-size='L'] {
2291
+ width: 648px;
2292
+ }
2293
+
2294
+ @media (max-width: 743px) {
2295
+ .charcoal-modal-dialog {
2296
+ max-width: 440px;
2297
+ width: calc(100% - 48px);
2298
+ }
2299
+
2300
+ .charcoal-modal-dialog[data-bottom-sheet='true'],
2301
+ .charcoal-modal-dialog[data-bottom-sheet='full'] {
2302
+ max-width: unset;
2303
+ width: 100%;
2304
+ border-radius: 0;
2305
+ margin: auto 0 0 0;
2306
+ }
2307
+
2308
+ .charcoal-modal-dialog[data-bottom-sheet='full'] {
2309
+ min-height: 100%;
2310
+ }
2311
+ }
2312
+
2313
+ .charcoal-modal-dialog:focus {
2314
+ outline: none;
2204
2315
  }
2205
2316
  .charcoal-popover {
2206
2317
  margin: 4px 0;