@charcoal-ui/react 6.0.0-rc.6 → 6.0.0-rc.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/dist/_lib/createDivComponent.cjs +20 -0
  2. package/dist/_lib/createDivComponent.cjs.map +1 -0
  3. package/dist/_lib/createDivComponent.js +19 -0
  4. package/dist/_lib/createDivComponent.js.map +1 -0
  5. package/dist/_lib/index.cjs +22 -0
  6. package/dist/_lib/index.cjs.map +1 -0
  7. package/dist/_lib/index.js +20 -0
  8. package/dist/_lib/index.js.map +1 -0
  9. package/dist/_lib/useClassNames.cjs +15 -0
  10. package/dist/_lib/useClassNames.cjs.map +1 -0
  11. package/dist/_lib/useClassNames.js +14 -0
  12. package/dist/_lib/useClassNames.js.map +1 -0
  13. package/dist/_lib/useForwardedRef.cjs +19 -0
  14. package/dist/_lib/useForwardedRef.cjs.map +1 -0
  15. package/dist/_lib/useForwardedRef.js +17 -0
  16. package/dist/_lib/useForwardedRef.js.map +1 -0
  17. package/dist/_lib/useIsomorphicLayoutEffect.cjs +13 -0
  18. package/dist/_lib/useIsomorphicLayoutEffect.cjs.map +1 -0
  19. package/dist/_lib/useIsomorphicLayoutEffect.js +12 -0
  20. package/dist/_lib/useIsomorphicLayoutEffect.js.map +1 -0
  21. package/dist/_virtual/_rolldown/runtime.cjs +30 -0
  22. package/dist/components/Button/index2.cjs +26 -0
  23. package/dist/components/Button/index2.cjs.map +1 -0
  24. package/dist/components/Button/index2.js +24 -0
  25. package/dist/components/Button/index2.js.map +1 -0
  26. package/dist/components/Carousel/CarouselItem.cjs +46 -0
  27. package/dist/components/Carousel/CarouselItem.cjs.map +1 -0
  28. package/dist/components/Carousel/CarouselItem.js +45 -0
  29. package/dist/components/Carousel/CarouselItem.js.map +1 -0
  30. package/dist/components/Carousel/carouselStore.cjs +38 -0
  31. package/dist/components/Carousel/carouselStore.cjs.map +1 -0
  32. package/dist/components/Carousel/carouselStore.js +37 -0
  33. package/dist/components/Carousel/carouselStore.js.map +1 -0
  34. package/dist/components/Carousel/index.d.ts +2 -0
  35. package/dist/components/Carousel/index.d.ts.map +1 -1
  36. package/dist/components/Carousel/index2.cjs +145 -0
  37. package/dist/components/Carousel/index2.cjs.map +1 -0
  38. package/dist/components/Carousel/index2.js +144 -0
  39. package/dist/components/Carousel/index2.js.map +1 -0
  40. package/dist/components/Carousel/intersectionObserver.cjs +46 -0
  41. package/dist/components/Carousel/intersectionObserver.cjs.map +1 -0
  42. package/dist/components/Carousel/intersectionObserver.js +45 -0
  43. package/dist/components/Carousel/intersectionObserver.js.map +1 -0
  44. package/dist/components/Carousel/resizeObserver.cjs +34 -0
  45. package/dist/components/Carousel/resizeObserver.cjs.map +1 -0
  46. package/dist/components/Carousel/resizeObserver.js +33 -0
  47. package/dist/components/Carousel/resizeObserver.js.map +1 -0
  48. package/dist/components/Carousel/store.cjs +24 -0
  49. package/dist/components/Carousel/store.cjs.map +1 -0
  50. package/dist/components/Carousel/store.js +23 -0
  51. package/dist/components/Carousel/store.js.map +1 -0
  52. package/dist/components/Carousel/useCarouselScroller.cjs +149 -0
  53. package/dist/components/Carousel/useCarouselScroller.cjs.map +1 -0
  54. package/dist/components/Carousel/useCarouselScroller.js +148 -0
  55. package/dist/components/Carousel/useCarouselScroller.js.map +1 -0
  56. package/dist/components/Checkbox/CheckboxInput/index2.cjs +29 -0
  57. package/dist/components/Checkbox/CheckboxInput/index2.cjs.map +1 -0
  58. package/dist/components/Checkbox/CheckboxInput/index2.js +28 -0
  59. package/dist/components/Checkbox/CheckboxInput/index2.js.map +1 -0
  60. package/dist/components/Checkbox/CheckboxWithLabel.cjs +23 -0
  61. package/dist/components/Checkbox/CheckboxWithLabel.cjs.map +1 -0
  62. package/dist/components/Checkbox/CheckboxWithLabel.js +21 -0
  63. package/dist/components/Checkbox/CheckboxWithLabel.js.map +1 -0
  64. package/dist/components/Checkbox/index2.cjs +34 -0
  65. package/dist/components/Checkbox/index2.cjs.map +1 -0
  66. package/dist/components/Checkbox/index2.js +33 -0
  67. package/dist/components/Checkbox/index2.js.map +1 -0
  68. package/dist/components/Clickable/index2.cjs +21 -0
  69. package/dist/components/Clickable/index2.cjs.map +1 -0
  70. package/dist/components/Clickable/index2.js +19 -0
  71. package/dist/components/Clickable/index2.js.map +1 -0
  72. package/dist/components/DropdownSelector/DropdownMenuItem/index2.cjs +44 -0
  73. package/dist/components/DropdownSelector/DropdownMenuItem/index2.cjs.map +1 -0
  74. package/dist/components/DropdownSelector/DropdownMenuItem/index2.js +43 -0
  75. package/dist/components/DropdownSelector/DropdownMenuItem/index2.js.map +1 -0
  76. package/dist/components/DropdownSelector/DropdownPopover.cjs +41 -0
  77. package/dist/components/DropdownSelector/DropdownPopover.cjs.map +1 -0
  78. package/dist/components/DropdownSelector/DropdownPopover.js +40 -0
  79. package/dist/components/DropdownSelector/DropdownPopover.js.map +1 -0
  80. package/dist/components/DropdownSelector/ListItem/index2.cjs +19 -0
  81. package/dist/components/DropdownSelector/ListItem/index2.cjs.map +1 -0
  82. package/dist/components/DropdownSelector/ListItem/index2.js +18 -0
  83. package/dist/components/DropdownSelector/ListItem/index2.js.map +1 -0
  84. package/dist/components/DropdownSelector/MenuItem/index.cjs +30 -0
  85. package/dist/components/DropdownSelector/MenuItem/index.cjs.map +1 -0
  86. package/dist/components/DropdownSelector/MenuItem/index.js +29 -0
  87. package/dist/components/DropdownSelector/MenuItem/index.js.map +1 -0
  88. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.cjs +30 -0
  89. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.cjs.map +1 -0
  90. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.js +29 -0
  91. package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.js.map +1 -0
  92. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.cjs +53 -0
  93. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.cjs.map +1 -0
  94. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.js +52 -0
  95. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.js.map +1 -0
  96. package/dist/components/DropdownSelector/MenuItemGroup/index2.cjs +20 -0
  97. package/dist/components/DropdownSelector/MenuItemGroup/index2.cjs.map +1 -0
  98. package/dist/components/DropdownSelector/MenuItemGroup/index2.js +19 -0
  99. package/dist/components/DropdownSelector/MenuItemGroup/index2.js.map +1 -0
  100. package/dist/components/DropdownSelector/MenuList/MenuListContext.cjs +15 -0
  101. package/dist/components/DropdownSelector/MenuList/MenuListContext.cjs.map +1 -0
  102. package/dist/components/DropdownSelector/MenuList/MenuListContext.js +14 -0
  103. package/dist/components/DropdownSelector/MenuList/MenuListContext.js.map +1 -0
  104. package/dist/components/DropdownSelector/MenuList/index2.cjs +32 -0
  105. package/dist/components/DropdownSelector/MenuList/index2.cjs.map +1 -0
  106. package/dist/components/DropdownSelector/MenuList/index2.js +31 -0
  107. package/dist/components/DropdownSelector/MenuList/index2.js.map +1 -0
  108. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.cjs +34 -0
  109. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.cjs.map +1 -0
  110. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.js +32 -0
  111. package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.js.map +1 -0
  112. package/dist/components/DropdownSelector/Popover/index2.cjs +71 -0
  113. package/dist/components/DropdownSelector/Popover/index2.cjs.map +1 -0
  114. package/dist/components/DropdownSelector/Popover/index2.js +70 -0
  115. package/dist/components/DropdownSelector/Popover/index2.js.map +1 -0
  116. package/dist/components/DropdownSelector/Popover/usePreventScroll.cjs +27 -0
  117. package/dist/components/DropdownSelector/Popover/usePreventScroll.cjs.map +1 -0
  118. package/dist/components/DropdownSelector/Popover/usePreventScroll.js +26 -0
  119. package/dist/components/DropdownSelector/Popover/usePreventScroll.js.map +1 -0
  120. package/dist/components/DropdownSelector/index2.cjs +113 -0
  121. package/dist/components/DropdownSelector/index2.cjs.map +1 -0
  122. package/dist/components/DropdownSelector/index2.js +111 -0
  123. package/dist/components/DropdownSelector/index2.js.map +1 -0
  124. package/dist/components/DropdownSelector/utils/findPreviewRecursive.cjs +34 -0
  125. package/dist/components/DropdownSelector/utils/findPreviewRecursive.cjs.map +1 -0
  126. package/dist/components/DropdownSelector/utils/findPreviewRecursive.js +32 -0
  127. package/dist/components/DropdownSelector/utils/findPreviewRecursive.js.map +1 -0
  128. package/dist/components/FieldLabel/index2.cjs +35 -0
  129. package/dist/components/FieldLabel/index2.cjs.map +1 -0
  130. package/dist/components/FieldLabel/index2.js +33 -0
  131. package/dist/components/FieldLabel/index2.js.map +1 -0
  132. package/dist/components/HintText/index2.cjs +25 -0
  133. package/dist/components/HintText/index2.cjs.map +1 -0
  134. package/dist/components/HintText/index2.js +24 -0
  135. package/dist/components/HintText/index2.js.map +1 -0
  136. package/dist/components/Icon/index.cjs +39 -0
  137. package/dist/components/Icon/index.cjs.map +1 -0
  138. package/dist/components/Icon/index.js +37 -0
  139. package/dist/components/Icon/index.js.map +1 -0
  140. package/dist/components/IconButton/index2.cjs +46 -0
  141. package/dist/components/IconButton/index2.cjs.map +1 -0
  142. package/dist/components/IconButton/index2.js +44 -0
  143. package/dist/components/IconButton/index2.js.map +1 -0
  144. package/dist/components/LoadingSpinner/index2.cjs +43 -0
  145. package/dist/components/LoadingSpinner/index2.cjs.map +1 -0
  146. package/dist/components/LoadingSpinner/index2.js +41 -0
  147. package/dist/components/LoadingSpinner/index2.js.map +1 -0
  148. package/dist/components/Modal/Dialog/index2.cjs +30 -0
  149. package/dist/components/Modal/Dialog/index2.cjs.map +1 -0
  150. package/dist/components/Modal/Dialog/index2.js +28 -0
  151. package/dist/components/Modal/Dialog/index2.js.map +1 -0
  152. package/dist/components/Modal/ModalBackgroundContext.cjs +14 -0
  153. package/dist/components/Modal/ModalBackgroundContext.cjs.map +1 -0
  154. package/dist/components/Modal/ModalBackgroundContext.js +12 -0
  155. package/dist/components/Modal/ModalBackgroundContext.js.map +1 -0
  156. package/dist/components/Modal/ModalPlumbing2.cjs +30 -0
  157. package/dist/components/Modal/ModalPlumbing2.cjs.map +1 -0
  158. package/dist/components/Modal/ModalPlumbing2.js +26 -0
  159. package/dist/components/Modal/ModalPlumbing2.js.map +1 -0
  160. package/dist/components/Modal/index2.cjs +121 -0
  161. package/dist/components/Modal/index2.cjs.map +1 -0
  162. package/dist/components/Modal/index2.js +118 -0
  163. package/dist/components/Modal/index2.js.map +1 -0
  164. package/dist/components/Modal/useCustomModalOverlay.cjs +48 -0
  165. package/dist/components/Modal/useCustomModalOverlay.cjs.map +1 -0
  166. package/dist/components/Modal/useCustomModalOverlay.js +45 -0
  167. package/dist/components/Modal/useCustomModalOverlay.js.map +1 -0
  168. package/dist/components/Modal/useTransitionPresence.cjs +57 -0
  169. package/dist/components/Modal/useTransitionPresence.cjs.map +1 -0
  170. package/dist/components/Modal/useTransitionPresence.js +56 -0
  171. package/dist/components/Modal/useTransitionPresence.js.map +1 -0
  172. package/dist/components/MultiSelect/context.cjs +19 -0
  173. package/dist/components/MultiSelect/context.cjs.map +1 -0
  174. package/dist/components/MultiSelect/context.js +18 -0
  175. package/dist/components/MultiSelect/context.js.map +1 -0
  176. package/dist/components/MultiSelect/index2.cjs +97 -0
  177. package/dist/components/MultiSelect/index2.cjs.map +1 -0
  178. package/dist/components/MultiSelect/index2.js +93 -0
  179. package/dist/components/MultiSelect/index2.js.map +1 -0
  180. package/dist/components/Pagination/PaginationContext.cjs +16 -0
  181. package/dist/components/Pagination/PaginationContext.cjs.map +1 -0
  182. package/dist/components/Pagination/PaginationContext.js +14 -0
  183. package/dist/components/Pagination/PaginationContext.js.map +1 -0
  184. package/dist/components/Pagination/helper.cjs +63 -0
  185. package/dist/components/Pagination/helper.cjs.map +1 -0
  186. package/dist/components/Pagination/helper.js +61 -0
  187. package/dist/components/Pagination/helper.js.map +1 -0
  188. package/dist/components/Pagination/index2.cjs +301 -0
  189. package/dist/components/Pagination/index2.cjs.map +1 -0
  190. package/dist/components/Pagination/index2.js +288 -0
  191. package/dist/components/Pagination/index2.js.map +1 -0
  192. package/dist/components/Radio/RadioGroup/index2.cjs +49 -0
  193. package/dist/components/Radio/RadioGroup/index2.cjs.map +1 -0
  194. package/dist/components/Radio/RadioGroup/index2.js +47 -0
  195. package/dist/components/Radio/RadioGroup/index2.js.map +1 -0
  196. package/dist/components/Radio/RadioGroupContext.cjs +20 -0
  197. package/dist/components/Radio/RadioGroupContext.cjs.map +1 -0
  198. package/dist/components/Radio/RadioGroupContext.js +18 -0
  199. package/dist/components/Radio/RadioGroupContext.js.map +1 -0
  200. package/dist/components/Radio/RadioInput/index2.cjs +27 -0
  201. package/dist/components/Radio/RadioInput/index2.cjs.map +1 -0
  202. package/dist/components/Radio/RadioInput/index2.js +26 -0
  203. package/dist/components/Radio/RadioInput/index2.js.map +1 -0
  204. package/dist/components/Radio/index2.cjs +42 -0
  205. package/dist/components/Radio/index2.cjs.map +1 -0
  206. package/dist/components/Radio/index2.js +39 -0
  207. package/dist/components/Radio/index2.js.map +1 -0
  208. package/dist/components/SegmentedControl/RadioGroupContext.cjs +24 -0
  209. package/dist/components/SegmentedControl/RadioGroupContext.cjs.map +1 -0
  210. package/dist/components/SegmentedControl/RadioGroupContext.js +21 -0
  211. package/dist/components/SegmentedControl/RadioGroupContext.js.map +1 -0
  212. package/dist/components/SegmentedControl/index2.cjs +72 -0
  213. package/dist/components/SegmentedControl/index2.cjs.map +1 -0
  214. package/dist/components/SegmentedControl/index2.js +70 -0
  215. package/dist/components/SegmentedControl/index2.js.map +1 -0
  216. package/dist/components/Switch/SwitchInput/index2.cjs +25 -0
  217. package/dist/components/Switch/SwitchInput/index2.cjs.map +1 -0
  218. package/dist/components/Switch/SwitchInput/index2.js +24 -0
  219. package/dist/components/Switch/SwitchInput/index2.js.map +1 -0
  220. package/dist/components/Switch/SwitchWithLabel.cjs +23 -0
  221. package/dist/components/Switch/SwitchWithLabel.cjs.map +1 -0
  222. package/dist/components/Switch/SwitchWithLabel.js +21 -0
  223. package/dist/components/Switch/SwitchWithLabel.js.map +1 -0
  224. package/dist/components/Switch/index2.cjs +37 -0
  225. package/dist/components/Switch/index2.cjs.map +1 -0
  226. package/dist/components/Switch/index2.js +36 -0
  227. package/dist/components/Switch/index2.js.map +1 -0
  228. package/dist/components/TagItem/index.d.ts.map +1 -1
  229. package/dist/components/TagItem/index2.cjs +57 -0
  230. package/dist/components/TagItem/index2.cjs.map +1 -0
  231. package/dist/components/TagItem/index2.js +55 -0
  232. package/dist/components/TagItem/index2.js.map +1 -0
  233. package/dist/components/TextArea/index2.cjs +134 -0
  234. package/dist/components/TextArea/index2.cjs.map +1 -0
  235. package/dist/components/TextArea/index2.js +133 -0
  236. package/dist/components/TextArea/index2.js.map +1 -0
  237. package/dist/components/TextEllipsis/helper.cjs +31 -0
  238. package/dist/components/TextEllipsis/helper.cjs.map +1 -0
  239. package/dist/components/TextEllipsis/helper.js +30 -0
  240. package/dist/components/TextEllipsis/helper.js.map +1 -0
  241. package/dist/components/TextEllipsis/index2.cjs +119 -0
  242. package/dist/components/TextEllipsis/index2.cjs.map +1 -0
  243. package/dist/components/TextEllipsis/index2.js +114 -0
  244. package/dist/components/TextEllipsis/index2.js.map +1 -0
  245. package/dist/components/TextField/AssistiveText/index2.cjs +10 -0
  246. package/dist/components/TextField/AssistiveText/index2.cjs.map +1 -0
  247. package/dist/components/TextField/AssistiveText/index2.js +10 -0
  248. package/dist/components/TextField/AssistiveText/index2.js.map +1 -0
  249. package/dist/components/TextField/index2.cjs +101 -0
  250. package/dist/components/TextField/index2.cjs.map +1 -0
  251. package/dist/components/TextField/index2.js +100 -0
  252. package/dist/components/TextField/index2.js.map +1 -0
  253. package/dist/components/TextField/useFocusWithClick.cjs +23 -0
  254. package/dist/components/TextField/useFocusWithClick.cjs.map +1 -0
  255. package/dist/components/TextField/useFocusWithClick.js +22 -0
  256. package/dist/components/TextField/useFocusWithClick.js.map +1 -0
  257. package/dist/core/CharcoalProvider.cjs +16 -0
  258. package/dist/core/CharcoalProvider.cjs.map +1 -0
  259. package/dist/core/CharcoalProvider.js +14 -0
  260. package/dist/core/CharcoalProvider.js.map +1 -0
  261. package/dist/core/OverlayProvider.js +4 -0
  262. package/dist/core/SSRProvider.cjs +15 -0
  263. package/dist/core/SSRProvider.cjs.map +1 -0
  264. package/dist/core/SSRProvider.js +14 -0
  265. package/dist/core/SSRProvider.js.map +1 -0
  266. package/dist/core/SetThemeScript.cjs +45 -0
  267. package/dist/core/SetThemeScript.cjs.map +1 -0
  268. package/dist/core/SetThemeScript.js +43 -0
  269. package/dist/core/SetThemeScript.js.map +1 -0
  270. package/dist/core/themeHelper.cjs +154 -0
  271. package/dist/core/themeHelper.cjs.map +1 -0
  272. package/dist/core/themeHelper.js +143 -0
  273. package/dist/core/themeHelper.js.map +1 -0
  274. package/dist/index.cjs +81 -12
  275. package/dist/index.css +1380 -1355
  276. package/dist/index.js +31 -12
  277. package/dist/layered.css +1376 -1351
  278. package/dist/layered.css.map +1 -1
  279. package/package.json +5 -5
  280. package/src/components/Carousel/MIGRATION.md +8 -8
  281. package/src/components/Carousel/__snapshots__/index.css.snap +4 -2
  282. package/src/components/Carousel/index.css +5 -2
  283. package/src/components/Carousel/index.story.tsx +14 -12
  284. package/src/components/Carousel/index.test.tsx +24 -0
  285. package/src/components/Carousel/index.tsx +17 -0
  286. package/src/components/TagItem/index.test.tsx +38 -0
  287. package/src/components/TagItem/index.tsx +1 -0
  288. package/src/components/TextArea/__snapshots__/index.css.snap +29 -8
  289. package/src/components/TextArea/index.css +30 -8
  290. package/src/components/TextArea/index.tsx +1 -1
  291. package/dist/index.cjs.map +0 -1
  292. package/dist/index.js.map +0 -1
package/dist/layered.css CHANGED
@@ -1,4 +1,30 @@
1
- @layer charcoal {.charcoal-button {
1
+ @layer charcoal {.charcoal-focus-ring:is(
2
+ :not(:disabled):not([aria-disabled]),
3
+ [aria-disabled='false']
4
+ ):focus-visible {
5
+ outline: none;
6
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
7
+ transition: 0.2s box-shadow;
8
+ }
9
+ .charcoal-radio__label {
10
+ display: grid;
11
+ grid-template-columns: auto 1fr;
12
+ grid-gap: 4px;
13
+ align-items: center;
14
+ cursor: pointer;
15
+ }
16
+
17
+ .charcoal-radio__label[aria-disabled]:not([aria-disabled='false']) {
18
+ opacity: 0.32;
19
+ cursor: default;
20
+ }
21
+
22
+ .charcoal-radio__label_div {
23
+ font-size: 14px;
24
+ line-height: 22px;
25
+ color: var(--charcoal-color-text-default);
26
+ }
27
+ .charcoal-button {
2
28
  -webkit-appearance: none;
3
29
  -moz-appearance: none;
4
30
  appearance: none;
@@ -310,195 +336,278 @@
310
336
  .charcoal-icon-button[aria-disabled='false']:focus:not(:focus-visible) {
311
337
  box-shadow: none;
312
338
  }
313
- .charcoal-radio__label {
339
+ .charcoal-radio-group {
314
340
  display: grid;
315
- grid-template-columns: auto 1fr;
316
- grid-gap: 4px;
317
- align-items: center;
318
- cursor: pointer;
341
+ grid-template-columns: 1fr;
342
+ grid-gap: 8px;
319
343
  }
344
+ .charcoal-modal-background {
345
+ overflow: auto;
346
+ display: flex;
347
+ position: fixed;
348
+ top: 0;
349
+ left: 0;
350
+ width: 100%;
351
+ height: 100%;
352
+ justify-content: center;
353
+ padding: 40px 0;
354
+ box-sizing: border-box;
320
355
 
321
- .charcoal-radio__label[aria-disabled]:not([aria-disabled='false']) {
322
- opacity: 0.32;
323
- cursor: default;
324
- }
325
-
326
- .charcoal-radio__label_div {
327
- font-size: 14px;
328
- line-height: 22px;
329
- color: var(--charcoal-color-text-default);
356
+ background-color: var(--charcoal-color-background-overlay);
330
357
  }
331
- .charcoal-radio-input {
332
- -webkit-appearance: none;
333
- -moz-appearance: none;
334
- appearance: none;
335
- display: block;
336
- box-sizing: border-box;
337
358
 
338
- margin: 0;
339
- padding: 6px;
359
+ @media (max-width: 743px) {
360
+ .charcoal-modal-background[data-bottom-sheet='true'],
361
+ .charcoal-modal-background[data-bottom-sheet='full'] {
362
+ padding: 0;
363
+ }
364
+ }
340
365
 
341
- width: 20px;
342
- height: 20px;
343
- cursor: pointer;
344
- border-radius: 999999px;
345
- background-color: var(--charcoal-color-container-default);
346
- transition:
347
- 0.2s background-color,
348
- 0.2s box-shadow;
366
+ /* easeOutQuart。duration は useTransitionPresence の MODAL_TRANSITION_DURATION_MS と一致させること。
367
+ transition は entering / exiting に限定し、開いたままテーマ切り替え等で
368
+ 色や transform が変わってもアニメーションしないようにする */
369
+ .charcoal-modal-background[data-animation] {
370
+ overflow: hidden;
349
371
  }
350
372
 
351
- .charcoal-radio-input:checked {
352
- background-color: var(--charcoal-color-container-primary-default);
373
+ .charcoal-modal-background[data-animation='entering'],
374
+ .charcoal-modal-background[data-animation='exiting'] {
375
+ transition: background-color 400ms cubic-bezier(0.25, 1, 0.5, 1);
353
376
  }
354
377
 
355
- .charcoal-radio-input:checked::after {
356
- content: '';
357
- display: block;
358
- width: 8px;
359
- height: 8px;
378
+ /* 閉じアニメーション中はクリックを下のページへ通す(transitionend が来ない環境で
379
+ 透明なオーバーレイがタップを奪い続けるのも防ぐ) */
380
+ .charcoal-modal-background[data-animation='exited'],
381
+ .charcoal-modal-background[data-animation='exiting'] {
382
+ background-color: transparent;
360
383
  pointer-events: none;
361
- background-color: var(--charcoal-color-icon-on-primary-default);
362
- border-radius: 999999px;
363
- transition:
364
- 0.2s background-color,
365
- 0.2s box-shadow;
366
384
  }
367
385
 
368
- .charcoal-radio-input:not(:checked) {
369
- border-width: 2px;
370
- border-style: solid;
371
- border-color: var(--charcoal-color-border-default);
386
+ .charcoal-modal-background[data-animation='entered'] {
387
+ overflow: auto;
372
388
  }
373
389
 
374
- .charcoal-radio-input:disabled {
375
- cursor: default;
390
+ .charcoal-modal-background[data-animation='entering'] > .charcoal-modal-dialog,
391
+ .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
392
+ transition: transform 400ms cubic-bezier(0.25, 1, 0.5, 1);
376
393
  }
377
394
 
378
- .charcoal-radio-input:not(:disabled):hover {
379
- background-color: var(--charcoal-color-container-hover);
395
+ .charcoal-modal-background[data-animation='exited'] > .charcoal-modal-dialog,
396
+ .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
397
+ transform: translateY(100%);
380
398
  }
381
399
 
382
- .charcoal-radio-input:not(:disabled):active {
383
- background-color: var(--charcoal-color-container-press);
384
- }
400
+ .charcoal-modal-close-button {
401
+ position: absolute;
402
+ top: 8px;
403
+ right: 8px;
385
404
 
386
- .charcoal-radio-input:not(:disabled):focus {
387
- outline: none;
388
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
405
+ color: var(--charcoal-color-text-tertiary-default);
406
+ transition: 0.2s color;
389
407
  }
390
408
 
391
- .charcoal-radio-input:not(:disabled):focus-visible {
392
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
409
+ .charcoal-modal-title {
410
+ margin: 0;
411
+ font-weight: inherit;
412
+ font-size: inherit;
393
413
  }
394
-
395
- .charcoal-radio-input:not(:disabled):focus:not(:focus-visible) {
396
- box-shadow: none;
414
+ .charcoal-modal-header-root {
415
+ height: 64px;
416
+ display: grid;
417
+ align-content: center;
418
+ justify-content: center;
397
419
  }
398
420
 
399
- .charcoal-radio-input:not(:disabled)[aria-invalid='true'],
400
- .charcoal-radio-input:not(:disabled)[aria-invalid='true']:focus {
401
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
421
+ @media (max-width: 743px) {
422
+ .charcoal-modal-header-root[data-bottom-sheet='true'],
423
+ .charcoal-modal-header-root[data-bottom-sheet='full'] {
424
+ height: 48px;
425
+ }
402
426
  }
403
427
 
404
- .charcoal-radio-input:checked:not(:disabled):hover {
405
- background-color: var(--charcoal-color-container-primary-hover);
428
+ .charcoal-modal-header-title {
429
+ color: var(--charcoal-color-text-default);
430
+ font-size: 16px;
431
+ line-height: 24px;
432
+ font-weight: bold;
433
+ display: flow-root;
406
434
  }
407
435
 
408
- .charcoal-radio-input:checked:not(:disabled):hover::after {
409
- background-color: var(--charcoal-color-icon-on-primary-hover);
436
+ .charcoal-modal-align {
437
+ padding-left: 16px;
438
+ padding-right: 16px;
410
439
  }
411
440
 
412
- .charcoal-radio-input:checked:not(:disabled):active {
413
- background-color: var(--charcoal-color-container-primary-press);
441
+ .charcoal-modal-body {
442
+ padding-bottom: 40px;
414
443
  }
415
444
 
416
- .charcoal-radio-input:checked:not(:disabled):active::after {
417
- background-color: var(--charcoal-color-icon-on-primary-press);
418
- }
419
- .charcoal-radio-group {
445
+ .charcoal-modal-buttons {
420
446
  display: grid;
421
- grid-template-columns: 1fr;
422
- grid-gap: 8px;
423
- }
424
- .charcoal-icon {
425
- display: inline-flex;
426
- width: var(--charcoal-icon-size);
427
- height: var(--charcoal-icon-size);
428
- }
429
-
430
- pixiv-icon:not(:defined) {
431
- --pixiv-icon-base: 24px;
432
- --pixiv-icon-scale: 1;
433
- --pixiv-icon-size: calc(var(--pixiv-icon-base) * var(--pixiv-icon-scale));
447
+ grid-auto-flow: row;
448
+ grid-row-gap: 8px;
434
449
 
435
- display: inline-flex;
436
- /* --charcoal-icon-size がセットされていればそれを優先、
437
- なければ name / scale から導出した --pixiv-icon-size をフォールバック */
438
- width: var(--charcoal-icon-size, var(--pixiv-icon-size));
439
- height: var(--charcoal-icon-size, var(--pixiv-icon-size));
450
+ padding-top: 16px;
451
+ padding-left: 16px;
452
+ padding-right: 16px;
440
453
  }
441
-
442
- pixiv-icon:not(:defined)[name^='16/'] {
443
- --pixiv-icon-base: 16px;
444
- --pixiv-icon-size: 16px;
445
- }
446
-
447
- pixiv-icon:not(:defined)[name^='24/'][scale='2'] {
448
- --pixiv-icon-scale: 2;
449
- }
450
-
451
- pixiv-icon:not(:defined)[name^='24/'][scale='3'] {
452
- --pixiv-icon-scale: 3;
453
- }
454
-
455
- pixiv-icon:not(:defined)[name^='32/'] {
456
- --pixiv-icon-base: 32px;
457
- --pixiv-icon-size: 32px;
458
- }
459
-
460
- pixiv-icon:not(:defined)[name^='Inline/'] {
461
- --pixiv-icon-base: 16px;
462
- }
463
-
464
- pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
465
- --pixiv-icon-scale: 2;
466
- }
467
- .charcoal-multi-select {
468
- display: grid;
454
+ .charcoal-switch__label {
455
+ display: inline-grid;
469
456
  grid-template-columns: auto 1fr;
470
457
  align-items: center;
471
- position: relative;
472
458
  cursor: pointer;
459
+ outline: 0;
473
460
  gap: 4px;
474
461
  }
475
462
 
476
- .charcoal-multi-select:disabled,
477
- .charcoal-multi-select[aria-disabled]:not([aria-disabled='false']) {
463
+ .charcoal-switch__label[aria-disabled='true'] {
478
464
  opacity: 0.32;
479
465
  cursor: default;
480
466
  }
481
467
 
482
- .charcoal-multi-select-label {
483
- display: flow-root;
484
- align-items: center;
468
+ .charcoal-switch__label[aria-disabled='true'] > input {
469
+ opacity: 1;
470
+ }
471
+
472
+ .charcoal-switch__label_div {
485
473
  font-size: 14px;
486
474
  line-height: 22px;
487
475
  color: var(--charcoal-color-text-default);
488
476
  }
477
+ .charcoal-text-field-root {
478
+ display: grid;
479
+ grid-template-columns: 1fr;
480
+ grid-gap: 4px;
481
+ }
489
482
 
490
- .charcoal-multi-select-label::before {
491
- display: block;
492
- width: 0;
493
- height: 0;
494
- content: '';
495
- margin-top: -4px;
483
+ .charcoal-text-field-root[aria-disabled='true'] {
484
+ opacity: 0.32;
496
485
  }
497
486
 
498
- .charcoal-multi-select-label::after {
499
- display: block;
500
- width: 0;
501
- height: 0;
487
+ .charcoal-text-field-container {
488
+ display: flex;
489
+ height: 40px;
490
+ transition:
491
+ 0.2s background-color,
492
+ 0.2s box-shadow;
493
+ color: var(--charcoal-color-text-secondary-default);
494
+ background-color: var(--charcoal-color-container-secondary-default-a);
495
+ border-radius: 4px;
496
+ padding: 0 8px;
497
+ line-height: 22px;
498
+ font-size: 14px;
499
+ }
500
+
501
+ .charcoal-text-field-container[data-invalid='true'] {
502
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
503
+ }
504
+
505
+ .charcoal-text-field-container:not([aria-disabled='true']):hover {
506
+ background-color: var(--charcoal-color-container-secondary-hover-a);
507
+ }
508
+
509
+ .charcoal-text-field-container:not([aria-disabled='true']):focus-within {
510
+ outline: none;
511
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
512
+ }
513
+
514
+ .charcoal-text-field-container:not([aria-disabled='true'])[data-invalid='true']:focus-within {
515
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
516
+ }
517
+
518
+ .charcoal-text-field-prefix {
519
+ display: flex;
520
+ align-items: center;
521
+ margin-right: 4px;
522
+ }
523
+
524
+ .charcoal-text-field-suffix {
525
+ display: flex;
526
+ align-items: center;
527
+ gap: 8px;
528
+ margin-left: 4px;
529
+ }
530
+
531
+ .charcoal-text-field-input-root {
532
+ flex: 1;
533
+ min-width: 0;
534
+ overflow: hidden;
535
+ }
536
+
537
+ .charcoal-text-field-input {
538
+ border: none;
539
+ box-sizing: border-box;
540
+ outline: none;
541
+ font-family: inherit;
542
+
543
+ /* Prevent zooming for iOS Safari */
544
+ transform-origin: top left;
545
+ transform: scale(0.875);
546
+ width: calc(100% / 0.875);
547
+ height: calc(100% / 0.875);
548
+ font-size: calc(14px / 0.875);
549
+ line-height: calc(22px / 0.875);
550
+ padding-left: 0;
551
+ padding-right: 0;
552
+ border-radius: calc(4px / 0.875);
553
+
554
+ /* Display box-shadow for iOS Safari */
555
+ -webkit-appearance: none;
556
+ -moz-appearance: none;
557
+ appearance: none;
558
+ background: transparent;
559
+
560
+ color: var(--charcoal-color-text-secondary-default);
561
+ }
562
+
563
+ .charcoal-text-field-input::-moz-placeholder {
564
+ color: var(--charcoal-color-text-placeholder-default);
565
+ }
566
+
567
+ .charcoal-text-field-input::placeholder {
568
+ color: var(--charcoal-color-text-placeholder-default);
569
+ }
570
+
571
+ .charcoal-text-field-line-counter {
572
+ line-height: 22px;
573
+ font-size: 14px;
574
+ color: var(--charcoal-color-text-tertiary-default);
575
+ }
576
+ .charcoal-multi-select {
577
+ display: grid;
578
+ grid-template-columns: auto 1fr;
579
+ align-items: center;
580
+ position: relative;
581
+ cursor: pointer;
582
+ gap: 4px;
583
+ }
584
+
585
+ .charcoal-multi-select:disabled,
586
+ .charcoal-multi-select[aria-disabled]:not([aria-disabled='false']) {
587
+ opacity: 0.32;
588
+ cursor: default;
589
+ }
590
+
591
+ .charcoal-multi-select-label {
592
+ display: flow-root;
593
+ align-items: center;
594
+ font-size: 14px;
595
+ line-height: 22px;
596
+ color: var(--charcoal-color-text-default);
597
+ }
598
+
599
+ .charcoal-multi-select-label::before {
600
+ display: block;
601
+ width: 0;
602
+ height: 0;
603
+ content: '';
604
+ margin-top: -4px;
605
+ }
606
+
607
+ .charcoal-multi-select-label::after {
608
+ display: block;
609
+ width: 0;
610
+ height: 0;
502
611
  content: '';
503
612
  margin-bottom: -4px;
504
613
  }
@@ -599,1589 +708,1505 @@ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
599
708
  border-width: 2px;
600
709
  border-style: solid;
601
710
  }
602
- .charcoal-switch__label {
603
- display: inline-grid;
604
- grid-template-columns: auto 1fr;
605
- align-items: center;
606
- cursor: pointer;
607
- outline: 0;
608
- gap: 4px;
711
+ .charcoal-text-area-root {
712
+ display: grid;
713
+ grid-template-columns: 1fr;
714
+ grid-gap: 4px;
609
715
  }
610
716
 
611
- .charcoal-switch__label[aria-disabled='true'] {
717
+ .charcoal-text-area-root[aria-disabled='true'] {
612
718
  opacity: 0.32;
613
- cursor: default;
614
719
  }
615
720
 
616
- .charcoal-switch__label[aria-disabled='true'] > input {
617
- opacity: 1;
618
- }
721
+ .charcoal-text-area-container {
722
+ /* Runtime variable overridden by the React component. */
723
+ --charcoal-text-area-rows: 4;
619
724
 
620
- .charcoal-switch__label_div {
621
- font-size: 14px;
622
- line-height: 22px;
623
- color: var(--charcoal-color-text-default);
624
- }
625
- .charcoal-switch-input {
626
- cursor: pointer;
627
- -webkit-appearance: none;
628
- -moz-appearance: none;
629
- appearance: none;
630
- display: inline-flex;
631
725
  position: relative;
632
- box-sizing: border-box;
633
- width: 28px;
634
- border: 2px solid transparent;
635
-
636
- transition-property: background-color, box-shadow;
637
- transition-duration: 0.2s;
638
-
639
- outline: none;
640
- border-radius: 16px;
641
- height: 16px;
642
- margin: 0;
643
- background-color: var(--charcoal-color-container-neutral-default);
644
- }
726
+ overflow: hidden;
645
727
 
646
- .charcoal-switch-input:disabled,
647
- .charcoal-switch-input[readonly] {
648
- opacity: 0.32;
649
- cursor: default;
728
+ color: var(--charcoal-color-text-secondary-default);
729
+ background-color: var(--charcoal-color-container-secondary-default-a);
730
+ border-radius: 4px;
731
+ transition:
732
+ 0.2s background-color,
733
+ 0.2s box-shadow;
734
+ height: calc(22px * var(--charcoal-text-area-rows) + 18px);
650
735
  }
651
736
 
652
- .charcoal-switch-input::after {
653
- content: '';
654
- position: absolute;
655
- display: block;
656
- top: 0;
657
- left: 0;
658
- width: 12px;
659
- height: 12px;
660
- transform: translateX(0);
661
- transition: transform 0.2s;
662
- border-radius: 1024px;
663
- background-color: var(--charcoal-color-icon-on-primary-default);
664
- }
737
+ .charcoal-text-area-container[aria-invalid='true'] {
738
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
739
+ }
665
740
 
666
- .charcoal-switch-input:checked::after {
667
- transform: translateX(12px);
668
- transition: transform 0.2s;
669
- }
741
+ .charcoal-text-area-container:focus-within {
742
+ outline: none;
743
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
744
+ }
670
745
 
671
- .charcoal-switch-input:checked {
672
- background-color: var(--charcoal-color-container-primary-default);
673
- }
746
+ .charcoal-text-area-container:has([data-no-bottom-padding='true']) {
747
+ height: calc(22px * (var(--charcoal-text-area-rows) + 1) + 18px);
748
+ }
674
749
 
675
- .charcoal-switch-input:not(:disabled):hover {
676
- background-color: var(--charcoal-color-container-neutral-hover);
677
- }
750
+ .charcoal-text-area-container:not([aria-disabled='true']):hover {
751
+ background-color: var(--charcoal-color-container-secondary-hover-a);
752
+ }
678
753
 
679
- .charcoal-switch-input:not(:disabled):active {
680
- background-color: var(--charcoal-color-container-neutral-press);
681
- }
754
+ .charcoal-text-area-container[aria-invalid='true']:focus-within {
755
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
756
+ }
682
757
 
683
- .charcoal-switch-input:not(:disabled):focus {
758
+ .charcoal-text-area-textarea {
759
+ border: none;
684
760
  outline: none;
685
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
686
- }
687
- .charcoal-switch-input:not(:disabled):focus-visible {
688
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
689
- }
690
- .charcoal-switch-input:not(:disabled):focus:not(:focus-visible) {
691
- box-shadow: none;
692
- }
761
+ resize: none;
762
+ font-family: inherit;
763
+ color: inherit;
764
+ box-sizing: border-box;
693
765
 
694
- .charcoal-switch-input:not(:disabled)::after:hover {
695
- background-color: var(--charcoal-color-icon-on-primary-hover);
696
- }
766
+ /* Prevent zooming for iOS Safari */
767
+ --charcoal-textarea-safari-prevent-zoom-scale: 0.875;
768
+ --charcoal-textarea-line-height: calc(
769
+ 22px / var(--charcoal-textarea-safari-prevent-zoom-scale)
770
+ );
771
+ --charcoal-textarea-padding-y: calc(
772
+ 8px / var(--charcoal-textarea-safari-prevent-zoom-scale)
773
+ );
774
+ --charcoal-textarea-padding-x: calc(
775
+ 9px / var(--charcoal-textarea-safari-prevent-zoom-scale)
776
+ );
697
777
 
698
- .charcoal-switch-input:not(:disabled)::after:active {
699
- background-color: var(--charcoal-color-icon-on-primary-press);
700
- }
778
+ transform-origin: top left;
779
+ transform: scale(var(--charcoal-textarea-safari-prevent-zoom-scale));
780
+ width: calc(100% / var(--charcoal-textarea-safari-prevent-zoom-scale));
781
+ font-size: calc(14px / var(--charcoal-textarea-safari-prevent-zoom-scale));
782
+ line-height: var(--charcoal-textarea-line-height);
783
+ padding: var(--charcoal-textarea-padding-y) var(--charcoal-textarea-padding-x);
784
+ height: calc(
785
+ var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
786
+ var(--charcoal-textarea-padding-y) * 2
787
+ );
701
788
 
702
- .charcoal-switch-input:not(:disabled):checked:hover {
703
- background-color: var(--charcoal-color-container-primary-hover);
789
+ /* Display box-shadow for iOS Safari */
790
+ -webkit-appearance: none;
791
+ -moz-appearance: none;
792
+ appearance: none;
793
+
794
+ background: none;
704
795
  }
705
796
 
706
- .charcoal-switch-input:not(:disabled):checked:active {
707
- background-color: var(--charcoal-color-container-primary-press);
708
- }
709
- .charcoal-text-field-root {
710
- display: grid;
711
- grid-template-columns: 1fr;
712
- grid-gap: 4px;
713
- }
797
+ .charcoal-text-area-textarea[data-no-bottom-padding='true'] {
798
+ padding: var(--charcoal-textarea-padding-y)
799
+ var(--charcoal-textarea-padding-x) 0;
800
+ height: calc(
801
+ var(--charcoal-textarea-line-height) * var(--charcoal-text-area-rows) +
802
+ var(--charcoal-textarea-padding-y)
803
+ );
804
+ }
714
805
 
715
- .charcoal-text-field-root[aria-disabled='true'] {
716
- opacity: 0.32;
806
+ .charcoal-text-area-textarea::-moz-placeholder {
807
+ color: var(--charcoal-color-text-placeholder-default);
717
808
  }
718
809
 
719
- .charcoal-text-field-container {
720
- display: flex;
721
- height: 40px;
722
- transition:
723
- 0.2s background-color,
724
- 0.2s box-shadow;
725
- color: var(--charcoal-color-text-secondary-default);
726
- background-color: var(--charcoal-color-container-secondary-default-a);
727
- border-radius: 4px;
728
- padding: 0 8px;
810
+ .charcoal-text-area-textarea::placeholder {
811
+ color: var(--charcoal-color-text-placeholder-default);
812
+ }
813
+
814
+ .charcoal-text-area-counter {
815
+ position: absolute;
816
+ bottom: 9px;
817
+ right: 8px;
818
+
729
819
  line-height: 22px;
730
820
  font-size: 14px;
821
+ color: var(--charcoal-color-text-tertiary-default);
822
+ }
823
+ .charcoal-icon {
824
+ display: inline-flex;
825
+ width: var(--charcoal-icon-size);
826
+ height: var(--charcoal-icon-size);
731
827
  }
732
828
 
733
- .charcoal-text-field-container[data-invalid='true'] {
734
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
735
- }
829
+ pixiv-icon:not(:defined) {
830
+ --pixiv-icon-base: 24px;
831
+ --pixiv-icon-scale: 1;
832
+ --pixiv-icon-size: calc(var(--pixiv-icon-base) * var(--pixiv-icon-scale));
736
833
 
737
- .charcoal-text-field-container:not([aria-disabled='true']):hover {
738
- background-color: var(--charcoal-color-container-secondary-hover-a);
834
+ display: inline-flex;
835
+ /* --charcoal-icon-size がセットされていればそれを優先、
836
+ なければ name / scale から導出した --pixiv-icon-size をフォールバック */
837
+ width: var(--charcoal-icon-size, var(--pixiv-icon-size));
838
+ height: var(--charcoal-icon-size, var(--pixiv-icon-size));
839
+ }
840
+
841
+ pixiv-icon:not(:defined)[name^='16/'] {
842
+ --pixiv-icon-base: 16px;
843
+ --pixiv-icon-size: 16px;
739
844
  }
740
845
 
741
- .charcoal-text-field-container:not([aria-disabled='true']):focus-within {
742
- outline: none;
743
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
846
+ pixiv-icon:not(:defined)[name^='24/'][scale='2'] {
847
+ --pixiv-icon-scale: 2;
848
+ }
849
+
850
+ pixiv-icon:not(:defined)[name^='24/'][scale='3'] {
851
+ --pixiv-icon-scale: 3;
852
+ }
853
+
854
+ pixiv-icon:not(:defined)[name^='32/'] {
855
+ --pixiv-icon-base: 32px;
856
+ --pixiv-icon-size: 32px;
744
857
  }
745
858
 
746
- .charcoal-text-field-container:not([aria-disabled='true'])[data-invalid='true']:focus-within {
747
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
859
+ pixiv-icon:not(:defined)[name^='Inline/'] {
860
+ --pixiv-icon-base: 16px;
748
861
  }
749
862
 
750
- .charcoal-text-field-prefix {
751
- display: flex;
752
- align-items: center;
753
- margin-right: 4px;
863
+ pixiv-icon:not(:defined)[name^='Inline/'][scale='2'] {
864
+ --pixiv-icon-scale: 2;
865
+ }
866
+ .charcoal-loading-spinner {
867
+ box-sizing: content-box;
868
+ margin: auto;
869
+ padding: 16px;
870
+ border-radius: 8px;
871
+ font-size: 48px;
872
+ width: 48px;
873
+ height: 48px;
874
+ opacity: 0.84;
875
+ color: var(--charcoal-color-icon-tertiary-default);
876
+ background-color: var(--charcoal-color-background-default);
754
877
  }
755
878
 
756
- .charcoal-text-field-suffix {
757
- display: flex;
758
- align-items: center;
759
- gap: 8px;
760
- margin-left: 4px;
761
- }
879
+ .charcoal-loading-spinner[data-transparent='true'] {
880
+ background-color: var(--charcoal-color-container-default-a);
881
+ }
762
882
 
763
- .charcoal-text-field-input-root {
764
- flex: 1;
765
- min-width: 0;
766
- overflow: hidden;
883
+ @keyframes charcoal-loading-spinner-icon-scale-out {
884
+ from {
885
+ transform: scale(0);
886
+ opacity: 1;
887
+ }
888
+ to {
889
+ transform: scale(1);
890
+ opacity: 0;
891
+ }
767
892
  }
768
893
 
769
- .charcoal-text-field-input {
770
- border: none;
771
- box-sizing: border-box;
772
- outline: none;
773
- font-family: inherit;
774
-
775
- /* Prevent zooming for iOS Safari */
776
- transform-origin: top left;
777
- transform: scale(0.875);
778
- width: calc(100% / 0.875);
779
- height: calc(100% / 0.875);
780
- font-size: calc(14px / 0.875);
781
- line-height: calc(22px / 0.875);
782
- padding-left: 0;
783
- padding-right: 0;
784
- border-radius: calc(4px / 0.875);
785
-
786
- /* Display box-shadow for iOS Safari */
787
- -webkit-appearance: none;
788
- -moz-appearance: none;
789
- appearance: none;
790
- background: transparent;
791
-
792
- color: var(--charcoal-color-text-secondary-default);
894
+ .charcoal-loading-spinner-icon {
895
+ width: 1em;
896
+ height: 1em;
897
+ border-radius: 1em;
898
+ background-color: currentColor;
899
+ animation: charcoal-loading-spinner-icon-scale-out 1s both ease-out;
900
+ animation-iteration-count: infinite;
793
901
  }
794
902
 
795
- .charcoal-text-field-input::-moz-placeholder {
796
- color: var(--charcoal-color-text-placeholder-default);
903
+ .charcoal-loading-spinner-icon[data-reset-animation] {
904
+ animation: none;
797
905
  }
798
906
 
799
- .charcoal-text-field-input::placeholder {
800
- color: var(--charcoal-color-text-placeholder-default);
907
+ .charcoal-loading-spinner-icon[data-once='true'] {
908
+ animation-iteration-count: 1;
801
909
  }
802
-
803
- .charcoal-text-field-line-counter {
804
- line-height: 22px;
805
- font-size: 14px;
806
- color: var(--charcoal-color-text-tertiary-default);
807
- }
808
- .charcoal-field-label {
910
+ .charcoal-dropdown-selector-menu-item {
809
911
  font-size: 14px;
810
912
  line-height: 22px;
811
- font-weight: bold;
812
- display: flow-root;
813
- color: var(--charcoal-color-text-default-text1);
913
+ color: var(--charcoal-color-text-secondary-default);
914
+ padding: 9px 0;
915
+
916
+ display: flex;
917
+ align-items: center;
918
+ width: 100%;
919
+ margin-left: 20px;
814
920
  }
815
921
 
816
- .charcoal-field-label-required-text {
817
- font-size: 14px;
818
- line-height: 22px;
819
- display: flow-root;
820
- color: var(--charcoal-color-text-secondary-default);
922
+ .charcoal-dropdown-selector-menu-item[data-selected='true'] {
923
+ margin-left: 0px;
821
924
  }
822
925
 
823
- .charcoal-field-label-sub-label {
824
- font-size: 14px;
825
- line-height: 22px;
826
- display: flow-root;
827
- color: var(--charcoal-color-text-tertiary-default);
828
- transition:
829
- 0.2s color,
830
- 0.2s box-shadow;
926
+ .charcoal-dropdown-selector-menu-item-icon {
927
+ color: var(--charcoal-color-text-secondary-default);
928
+ padding-right: 4px;
831
929
  }
832
930
 
833
- .charcoal-field-label-root {
834
- display: inline-flex;
931
+ .charcoal-dropdown-selector-menu-item-container {
932
+ display: flex;
835
933
  align-items: center;
836
934
  }
837
935
 
838
- .charcoal-field-label-root > .charcoal-field-label-required-text {
839
- margin-left: 4px;
840
- }
936
+ .charcoal-dropdown-selector-menu-secondary {
937
+ font-size: 12px;
938
+ line-height: 20px;
939
+ color: var(--charcoal-color-text-tertiary-default);
940
+ padding-bottom: 9px;
841
941
 
842
- .charcoal-field-label-root > .charcoal-field-label-sub-label {
843
- margin-left: auto;
844
- }
845
- .charcoal-text-field-assistive-text {
846
- font-size: 14px;
847
- line-height: 22px;
848
- margin: 0;
849
- color: var(--charcoal-color-text-secondary-default);
942
+ display: flex;
943
+ align-items: center;
944
+ margin-left: 20px;
850
945
  }
851
946
 
852
- .charcoal-text-field-assistive-text[data-invalid='true'] {
853
- color: var(--charcoal-color-text-negative-default);
947
+ .charcoal-dropdown-selector-menu-fullwidth {
948
+ width: 100%;
854
949
  }
855
- .charcoal-text-area-root {
950
+ .charcoal-dropdown-selector-root {
856
951
  display: grid;
857
952
  grid-template-columns: 1fr;
858
953
  grid-gap: 4px;
954
+ width: 100%;
859
955
  }
860
956
 
861
- .charcoal-text-area-root[aria-disabled='true'] {
957
+ .charcoal-dropdown-selector-root[aria-disabled='true'] {
958
+ cursor: default;
862
959
  opacity: 0.32;
863
960
  }
864
961
 
865
- .charcoal-text-area-container {
866
- /* Runtime variable overridden by the React component. */
867
- --charcoal-text-area-rows: 4;
962
+ .charcoal-dropdown-selector-button {
963
+ display: grid;
964
+ grid-template-columns: 1fr auto;
965
+ justify-content: space-between;
966
+ align-items: center;
868
967
 
869
- position: relative;
870
- overflow: hidden;
968
+ height: 40px;
969
+ width: 100%;
970
+ box-sizing: border-box;
971
+ border: none;
972
+ cursor: pointer;
973
+ gap: 4px;
871
974
 
872
- color: var(--charcoal-color-text-secondary-default);
975
+ padding-right: 8px;
976
+ padding-left: 8px;
873
977
  background-color: var(--charcoal-color-container-secondary-default-a);
874
978
  border-radius: 4px;
979
+
875
980
  transition:
876
- 0.2s background-color,
877
- 0.2s box-shadow;
878
- height: calc(22px * var(--charcoal-text-area-rows) + 18px);
981
+ 0.2s box-shadow,
982
+ 0.2s background-color;
879
983
  }
880
984
 
881
- .charcoal-text-area-container[aria-invalid='true'] {
882
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
985
+ .charcoal-dropdown-selector-button:disabled {
986
+ cursor: default;
883
987
  }
884
988
 
885
- .charcoal-text-area-container:focus-within {
886
- outline: none;
887
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
888
- }
889
-
890
- .charcoal-text-area-container:not([aria-disabled='true']):hover {
891
- background-color: var(--charcoal-color-container-secondary-hover-a);
892
- }
893
-
894
- .charcoal-text-area-container[aria-invalid='true']:focus-within {
895
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
896
- }
989
+ .charcoal-dropdown-selector-button:not(:disabled):focus {
990
+ outline: none;
991
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
992
+ }
897
993
 
898
- .charcoal-text-area-textarea {
899
- border: none;
900
- outline: none;
901
- resize: none;
902
- font-family: inherit;
903
- color: inherit;
904
- box-sizing: border-box;
994
+ .charcoal-dropdown-selector-button:not(:disabled):focus-visible {
995
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
996
+ }
905
997
 
906
- /* Prevent zooming for iOS Safari */
907
- transform-origin: top left;
908
- transform: scale(0.875);
909
- width: calc(100% / 0.875);
910
- font-size: calc(14px / 0.875);
911
- line-height: calc(22px / 0.875);
912
- padding: calc(9px / 0.875) calc(8px / 0.875);
913
- height: calc(22px / 0.875 * var(--charcoal-text-area-rows) + 20px);
998
+ .charcoal-dropdown-selector-button:not(:disabled)[data-active='true'],
999
+ .charcoal-dropdown-selector-button:not(:disabled):active {
1000
+ background-color: var(--charcoal-color-container-secondary-press-a);
1001
+ }
914
1002
 
915
- /* Display box-shadow for iOS Safari */
916
- -webkit-appearance: none;
917
- -moz-appearance: none;
918
- appearance: none;
1003
+ .charcoal-dropdown-selector-button:not(:disabled):hover {
1004
+ background-color: var(--charcoal-color-container-secondary-hover-a);
1005
+ }
919
1006
 
920
- background: none;
921
- }
1007
+ .charcoal-dropdown-selector-button:not(:disabled):focus:not(:focus-visible) {
1008
+ box-shadow: none;
1009
+ }
922
1010
 
923
- .charcoal-text-area-textarea[data-no-bottom-padding='true'] {
924
- padding: calc(9px / 0.875) calc(8px / 0.875) 0;
925
- height: calc(22px / 0.875 * (var(--charcoal-text-area-rows) - 1) + 9px);
1011
+ .charcoal-dropdown-selector-button[aria-invalid='true'],
1012
+ .charcoal-dropdown-selector-button:not(:disabled)[aria-invalid='true']:focus:not(:focus-visible) {
1013
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
926
1014
  }
927
1015
 
928
- .charcoal-text-area-textarea::-moz-placeholder {
929
- color: var(--charcoal-color-text-placeholder-default);
930
- }
1016
+ .charcoal-ui-dropdown-selector-text {
1017
+ text-align: left;
1018
+ font-size: 14px;
1019
+ line-height: 22px;
1020
+ display: flow-root;
1021
+ color: var(--charcoal-color-text-default);
1022
+ overflow: hidden;
1023
+ text-overflow: ellipsis;
1024
+ white-space: nowrap;
1025
+ }
931
1026
 
932
- .charcoal-text-area-textarea::placeholder {
1027
+ .charcoal-ui-dropdown-selector-text[data-placeholder='true'] {
933
1028
  color: var(--charcoal-color-text-placeholder-default);
934
1029
  }
935
1030
 
936
- .charcoal-text-area-counter {
937
- position: absolute;
938
- bottom: 9px;
939
- right: 8px;
940
-
941
- line-height: 22px;
942
- font-size: 14px;
943
- color: var(--charcoal-color-text-tertiary-default);
1031
+ .charcoal-ui-dropdown-selector-icon {
1032
+ color: var(--charcoal-color-icon-secondary-default);
944
1033
  }
945
- .charcoal-modal-dialog {
946
- margin: auto;
947
- position: relative;
948
- height: -moz-fit-content;
949
- height: fit-content;
950
- width: 440px;
951
-
952
- background-color: var(--charcoal-color-container-default);
953
- border-radius: 24px;
1034
+ .charcoal-menu-item-group {
1035
+ display: block;
954
1036
  }
955
1037
 
956
- .charcoal-modal-dialog[data-size='S'] {
957
- width: 336px;
1038
+ .charcoal-menu-item-group > span {
1039
+ display: block;
1040
+ color: var(--charcoal-color-text-tertiary-default);
1041
+ font-size: 12px;
1042
+ font-weight: bold;
1043
+ padding: 12px 0 8px 16px;
958
1044
  }
959
1045
 
960
- .charcoal-modal-dialog[data-size='M'] {
961
- width: 440px;
1046
+ .charcoal-menu-item-group > ul {
1047
+ padding-left: 0;
1048
+ margin: 0;
1049
+ box-sizing: border-box;
1050
+ list-style: none;
1051
+ overflow: hidden;
962
1052
  }
1053
+ .charcoal-segmented-control {
1054
+ display: inline-flex;
1055
+ align-items: center;
963
1056
 
964
- .charcoal-modal-dialog[data-size='L'] {
965
- width: 648px;
1057
+ background-color: var(--charcoal-color-container-secondary-default-a);
1058
+ border-radius: 16px;
966
1059
  }
967
1060
 
968
- @media (max-width: 743px) {
969
- .charcoal-modal-dialog {
970
- max-width: 440px;
971
- width: calc(100% - 48px);
1061
+ .charcoal-segmented-control[data-uniform-segment-width='true'],
1062
+ .charcoal-segmented-control[data-full-width='true'] {
1063
+ display: inline-grid;
1064
+ grid-auto-columns: minmax(80px, 1fr);
1065
+ grid-auto-rows: 32px;
1066
+ grid-auto-flow: column;
972
1067
  }
973
1068
 
974
- .charcoal-modal-dialog[data-bottom-sheet='true'],
975
- .charcoal-modal-dialog[data-bottom-sheet='full'] {
976
- max-width: unset;
1069
+ .charcoal-segmented-control[data-full-width='true'] {
977
1070
  width: 100%;
978
- border-radius: 0;
979
- margin: auto 0 0 0;
980
- }
981
-
982
- .charcoal-modal-dialog[data-bottom-sheet='full'] {
983
- min-height: 100%;
984
1071
  }
985
- }
986
1072
 
987
- .charcoal-modal-dialog:focus {
988
- outline: none;
989
- }
990
- .charcoal-modal-background {
991
- overflow: auto;
1073
+ .charcoal-segmented-control-radio__label {
1074
+ position: relative;
992
1075
  display: flex;
993
- position: fixed;
994
- top: 0;
995
- left: 0;
996
- width: 100%;
997
- height: 100%;
1076
+ align-items: center;
998
1077
  justify-content: center;
999
- padding: 40px 0;
1000
- box-sizing: border-box;
1001
-
1002
- background-color: var(--charcoal-color-background-overlay);
1003
- }
1078
+ cursor: pointer;
1079
+ height: 32px;
1004
1080
 
1005
- @media (max-width: 743px) {
1006
- .charcoal-modal-background[data-bottom-sheet='true'],
1007
- .charcoal-modal-background[data-bottom-sheet='full'] {
1008
- padding: 0;
1009
- }
1010
- }
1081
+ padding-right: 16px;
1082
+ padding-left: 16px;
1083
+ border-radius: 16px;
1084
+ color: var(--charcoal-color-text-secondary-default);
1011
1085
 
1012
- /* easeOutQuart。duration は useTransitionPresence の MODAL_TRANSITION_DURATION_MS と一致させること。
1013
- transition は entering / exiting に限定し、開いたままテーマ切り替え等で
1014
- 色や transform が変わってもアニメーションしないようにする */
1015
- .charcoal-modal-background[data-animation] {
1016
- overflow: hidden;
1086
+ font-size: 14px;
1087
+ line-height: 22px;
1017
1088
  }
1018
1089
 
1019
- .charcoal-modal-background[data-animation='entering'],
1020
- .charcoal-modal-background[data-animation='exiting'] {
1021
- transition: background-color 400ms cubic-bezier(0.25, 1, 0.5, 1);
1022
- }
1090
+ .charcoal-segmented-control-radio__label[aria-disabled]:not([aria-disabled='false']) {
1091
+ cursor: default;
1092
+ opacity: 0.32;
1093
+ }
1023
1094
 
1024
- /* 閉じアニメーション中はクリックを下のページへ通す(transitionend が来ない環境で
1025
- 透明なオーバーレイがタップを奪い続けるのも防ぐ) */
1026
- .charcoal-modal-background[data-animation='exited'],
1027
- .charcoal-modal-background[data-animation='exiting'] {
1028
- background-color: transparent;
1029
- pointer-events: none;
1030
- }
1095
+ .charcoal-segmented-control-radio__label[data-checked='true'] {
1096
+ background-color: var(--charcoal-color-container-primary-default);
1097
+ color: var(--charcoal-color-text-on-primary-default);
1098
+ }
1031
1099
 
1032
- .charcoal-modal-background[data-animation='entered'] {
1033
- overflow: auto;
1034
- }
1100
+ .charcoal-segmented-control-radio__label[data-uniform-segment-width='true'],
1101
+ .charcoal-segmented-control-radio__label[data-full-width='true'] {
1102
+ justify-content: center;
1103
+ white-space: nowrap;
1104
+ }
1035
1105
 
1036
- .charcoal-modal-background[data-animation='entering'] > .charcoal-modal-dialog,
1037
- .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
1038
- transition: transform 400ms cubic-bezier(0.25, 1, 0.5, 1);
1039
- }
1106
+ .charcoal-segmented-control-radio__input {
1107
+ position: absolute;
1040
1108
 
1041
- .charcoal-modal-background[data-animation='exited'] > .charcoal-modal-dialog,
1042
- .charcoal-modal-background[data-animation='exiting'] > .charcoal-modal-dialog {
1043
- transform: translateY(100%);
1044
- }
1109
+ height: 0px;
1110
+ width: 0px;
1111
+ padding: 0;
1112
+ margin: 0;
1045
1113
 
1046
- .charcoal-modal-close-button {
1047
- position: absolute;
1048
- top: 8px;
1049
- right: 8px;
1114
+ -webkit-appearance: none;
1050
1115
 
1051
- color: var(--charcoal-color-text-tertiary-default);
1052
- transition: 0.2s color;
1053
- }
1116
+ -moz-appearance: none;
1054
1117
 
1055
- .charcoal-modal-title {
1056
- margin: 0;
1057
- font-weight: inherit;
1058
- font-size: inherit;
1118
+ appearance: none;
1119
+ box-sizing: border-box;
1120
+ overflow: hidden;
1121
+ white-space: nowrap;
1122
+ opacity: 0;
1059
1123
  }
1060
- .charcoal-modal-header-root {
1061
- height: 64px;
1062
- display: grid;
1063
- align-content: center;
1064
- justify-content: center;
1124
+ .charcoal-checkbox__label {
1125
+ position: relative;
1126
+ cursor: pointer;
1127
+ display: flex;
1128
+ gap: 4px;
1065
1129
  }
1066
1130
 
1067
- @media (max-width: 743px) {
1068
- .charcoal-modal-header-root[data-bottom-sheet='true'],
1069
- .charcoal-modal-header-root[data-bottom-sheet='full'] {
1070
- height: 48px;
1131
+ .charcoal-checkbox__label[aria-disabled='true'] {
1132
+ cursor: default;
1133
+ opacity: 0.32;
1071
1134
  }
1072
- }
1073
1135
 
1074
- .charcoal-modal-header-title {
1136
+ .charcoal-checkbox__label[aria-disabled='true'] > input {
1137
+ opacity: 1;
1138
+ }
1139
+
1140
+ .charcoal-checkbox__label_div {
1141
+ flex: 1;
1075
1142
  color: var(--charcoal-color-text-default);
1076
- font-size: 16px;
1077
- line-height: 24px;
1078
- font-weight: bold;
1079
- display: flow-root;
1143
+ font-size: 14px;
1144
+ line-height: 20px;
1080
1145
  }
1146
+ .charcoal-text-ellipsis {
1147
+ /* Runtime variables overridden by the React component. */
1148
+ --charcoal-text-ellipsis-line-limit: 1;
1149
+ --charcoal-text-ellipsis-line-height: inherit;
1081
1150
 
1082
- .charcoal-modal-align {
1083
- padding-left: 16px;
1084
- padding-right: 16px;
1085
- }
1086
-
1087
- .charcoal-modal-body {
1088
- padding-bottom: 40px;
1089
- }
1090
-
1091
- .charcoal-modal-buttons {
1092
- display: grid;
1093
- grid-auto-flow: row;
1094
- grid-row-gap: 8px;
1095
-
1096
- padding-top: 16px;
1097
- padding-left: 16px;
1098
- padding-right: 16px;
1099
- }
1100
- .charcoal-loading-spinner {
1101
- box-sizing: content-box;
1102
- margin: auto;
1103
- padding: 16px;
1104
- border-radius: 8px;
1105
- font-size: 48px;
1106
- width: 48px;
1107
- height: 48px;
1108
- opacity: 0.84;
1109
- color: var(--charcoal-color-icon-tertiary-default);
1110
- background-color: var(--charcoal-color-background-default);
1151
+ overflow: hidden;
1152
+ overflow-wrap: break-word;
1153
+ display: -webkit-box;
1154
+ -webkit-box-orient: vertical;
1155
+ -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1111
1156
  }
1112
1157
 
1113
- .charcoal-loading-spinner[data-transparent='true'] {
1114
- background-color: var(--charcoal-color-container-default-a);
1158
+ .charcoal-text-ellipsis[data-has-line-height='true'] {
1159
+ line-height: var(--charcoal-text-ellipsis-line-height);
1115
1160
  }
1116
1161
 
1117
- @keyframes charcoal-loading-spinner-icon-scale-out {
1118
- from {
1119
- transform: scale(0);
1120
- opacity: 1;
1162
+ .charcoal-text-ellipsis[data-has-line-height='false'] {
1163
+ line-height: inherit;
1121
1164
  }
1122
- to {
1123
- transform: scale(1);
1124
- opacity: 0;
1165
+
1166
+ .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1167
+ text-overflow: ellipsis;
1168
+ white-space: nowrap;
1125
1169
  }
1126
- }
1170
+ .charcoal-tag-item {
1171
+ --charcoal-tag-item-color: var(--charcoal-color-text-on-primary-default);
1172
+ --charcoal-tag-item-size: 40px;
1173
+ --charcoal-tag-item-padding-left: 24px;
1174
+ --charcoal-tag-item-padding-right: 24px;
1175
+ --charcoal-tag-item-bg: ;
1127
1176
 
1128
- .charcoal-loading-spinner-icon {
1129
- width: 1em;
1130
- height: 1em;
1131
- border-radius: 1em;
1132
- background-color: currentColor;
1133
- animation: charcoal-loading-spinner-icon-scale-out 1s both ease-out;
1134
- animation-iteration-count: infinite;
1135
- }
1177
+ isolation: isolate;
1178
+ position: relative;
1136
1179
 
1137
- .charcoal-loading-spinner-icon[data-reset-animation] {
1138
- animation: none;
1139
- }
1180
+ -webkit-appearance: none;
1140
1181
 
1141
- .charcoal-loading-spinner-icon[data-once='true'] {
1142
- animation-iteration-count: 1;
1143
- }
1144
- .charcoal-dropdown-selector-root {
1145
- display: grid;
1146
- grid-template-columns: 1fr;
1147
- grid-gap: 4px;
1148
- width: 100%;
1149
- }
1182
+ -moz-appearance: none;
1150
1183
 
1151
- .charcoal-dropdown-selector-root[aria-disabled='true'] {
1152
- cursor: default;
1153
- opacity: 0.32;
1154
- }
1184
+ appearance: none;
1185
+ outline: none;
1186
+ border-style: none;
1155
1187
 
1156
- .charcoal-dropdown-selector-button {
1157
- display: grid;
1158
- grid-template-columns: 1fr auto;
1159
- justify-content: space-between;
1188
+ display: inline-flex;
1189
+ gap: 8px;
1160
1190
  align-items: center;
1191
+ justify-content: center;
1161
1192
 
1162
- height: 40px;
1163
- width: 100%;
1164
- box-sizing: border-box;
1165
- border: none;
1193
+ text-decoration: none;
1166
1194
  cursor: pointer;
1167
- gap: 4px;
1195
+ overflow: hidden;
1168
1196
 
1169
- padding-right: 8px;
1170
- padding-left: 8px;
1171
- background-color: var(--charcoal-color-container-secondary-default-a);
1197
+ color: var(--charcoal-tag-item-color);
1198
+ height: var(--charcoal-tag-item-size);
1199
+ padding-top: 4px;
1200
+ padding-bottom: 4px;
1201
+ padding-left: var(--charcoal-tag-item-padding-left);
1202
+ padding-right: var(--charcoal-tag-item-padding-right);
1203
+ box-sizing: border-box;
1172
1204
  border-radius: 4px;
1173
1205
 
1174
- transition:
1175
- 0.2s box-shadow,
1176
- 0.2s background-color;
1206
+ transition: 0.2s box-shadow;
1177
1207
  }
1178
1208
 
1179
- .charcoal-dropdown-selector-button:disabled {
1180
- cursor: default;
1209
+ .charcoal-tag-item[data-size='M'] {
1210
+ --charcoal-tag-item-size: 40px;
1211
+ --charcoal-tag-item-padding-left: 24px;
1212
+ --charcoal-tag-item-padding-right: 24px;
1181
1213
  }
1182
1214
 
1183
- .charcoal-dropdown-selector-button:not(:disabled):focus {
1184
- outline: none;
1185
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1186
- }
1215
+ .charcoal-tag-item[data-size='S'] {
1216
+ --charcoal-tag-item-size: 32px;
1217
+ --charcoal-tag-item-padding-left: 16px;
1218
+ --charcoal-tag-item-padding-right: 16px;
1219
+ }
1187
1220
 
1188
- .charcoal-dropdown-selector-button:not(:disabled):focus-visible {
1189
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1190
- }
1221
+ .charcoal-tag-item[data-state='inactive'] {
1222
+ --charcoal-tag-item-color: var(--charcoal-color-text-secondary-default);
1223
+ }
1191
1224
 
1192
- .charcoal-dropdown-selector-button:not(:disabled)[data-active='true'],
1193
- .charcoal-dropdown-selector-button:not(:disabled):active {
1194
- background-color: var(--charcoal-color-container-secondary-press-a);
1195
- }
1225
+ .charcoal-tag-item[data-state='active'] {
1226
+ --charcoal-tag-item-padding-left: 16px;
1227
+ --charcoal-tag-item-padding-right: 8px;
1228
+ }
1196
1229
 
1197
- .charcoal-dropdown-selector-button:not(:disabled):hover {
1198
- background-color: var(--charcoal-color-container-secondary-hover-a);
1199
- }
1230
+ .charcoal-tag-item:disabled,
1231
+ .charcoal-tag-item[aria-disabled]:not([aria-disabled='false']) {
1232
+ opacity: 0.32;
1233
+ cursor: default;
1234
+ }
1200
1235
 
1201
- .charcoal-dropdown-selector-button:not(:disabled):focus:not(:focus-visible) {
1202
- box-shadow: none;
1203
- }
1236
+ .charcoal-tag-item:not(:disabled):not([aria-disabled]):focus-visible,
1237
+ .charcoal-tag-item[aria-disabled='false']:focus-visible {
1238
+ outline: none;
1239
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1240
+ }
1204
1241
 
1205
- .charcoal-dropdown-selector-button[aria-invalid='true'],
1206
- .charcoal-dropdown-selector-button:not(:disabled)[aria-invalid='true']:focus:not(:focus-visible) {
1207
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1242
+ .charcoal-tag-item:not(:disabled):not([aria-disabled]):focus,
1243
+ .charcoal-tag-item[aria-disabled='false']:focus {
1244
+ outline: none;
1245
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1208
1246
  }
1209
1247
 
1210
- .charcoal-ui-dropdown-selector-text {
1211
- text-align: left;
1212
- font-size: 14px;
1213
- line-height: 22px;
1214
- display: flow-root;
1215
- color: var(--charcoal-color-text-default);
1216
- overflow: hidden;
1217
- text-overflow: ellipsis;
1218
- white-space: nowrap;
1248
+ .charcoal-tag-item:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1249
+ .charcoal-tag-item[aria-disabled='false']:focus:not(:focus-visible) {
1250
+ box-shadow: none;
1251
+ }
1252
+
1253
+ .charcoal-tag-item__bg {
1254
+ background-color: var(--charcoal-tag-item-bg);
1219
1255
  }
1220
1256
 
1221
- .charcoal-ui-dropdown-selector-text[data-placeholder='true'] {
1222
- color: var(--charcoal-color-text-placeholder-default);
1257
+ .charcoal-tag-item__bg[data-bg-variant='image'] {
1258
+ background-color: var(--charcoal-color-container-on-img-default);
1223
1259
  }
1224
1260
 
1225
- .charcoal-ui-dropdown-selector-icon {
1226
- color: var(--charcoal-color-icon-secondary-default);
1227
- }
1228
- .charcoal-popover {
1229
- margin: 4px 0;
1230
- list-style: none;
1231
- overflow: auto;
1232
- max-height: inherit;
1233
- background-color: var(--charcoal-color-background-default);
1234
- border: solid 1px var(--charcoal-color-border-secondary);
1235
- border-radius: 8px;
1236
- padding-top: 8px;
1237
- padding-bottom: 8px;
1238
- }
1239
- .charcoal-menu-list {
1240
- padding: 0;
1241
- margin: 0;
1242
- }
1243
- .charcoal-list-item {
1244
- list-style: none;
1261
+ .charcoal-tag-item__bg[data-bg-variant='image']::before {
1262
+ content: '';
1263
+ position: absolute;
1264
+ z-index: 1;
1265
+ top: 0;
1266
+ left: 0;
1267
+ width: 100%;
1268
+ height: 100%;
1269
+ background-position: center;
1270
+ background-size: cover;
1271
+ background-image: var(--charcoal-tag-item-bg);
1272
+ mix-blend-mode: overlay;
1273
+ }
1274
+
1275
+ .charcoal-tag-item__bg[data-state='inactive'] {
1276
+ background-color: var(--charcoal-color-container-secondary-default);
1277
+ }
1278
+
1279
+ .charcoal-tag-item__label {
1280
+ height: 100%;
1245
1281
  display: flex;
1282
+ flex-direction: column;
1246
1283
  align-items: center;
1247
- min-height: 40px;
1248
- cursor: pointer;
1249
- outline: none;
1284
+ justify-content: center;
1285
+ }
1250
1286
 
1251
- padding-right: 16px;
1252
- padding-left: 16px;
1287
+ .charcoal-tag-item__label[data-has-translate='true'] {
1288
+ justify-content: space-between;
1289
+ }
1253
1290
 
1254
- transition: background-color 0.2s;
1291
+ .charcoal-tag-item__label__translated {
1292
+ --charcoal-tag-item-text-font-size: 12px;
1293
+ --charcoal-tag-item-text-line-height: 20px;
1294
+ font-weight: bold;
1255
1295
  }
1256
1296
 
1257
- .charcoal-list-item:not([aria-disabled='true']):hover,
1258
- .charcoal-list-item:not([aria-disabled='true']):focus,
1259
- .charcoal-list-item:not([aria-disabled='true']):focus-within {
1260
- background-color: var(--charcoal-color-container-secondary-default);
1261
- }
1297
+ .charcoal-tag-item__label__translated::before {
1298
+ display: none;
1299
+ }
1262
1300
 
1263
- .charcoal-list-item[aria-disabled='true'] {
1264
- opacity: 0.32;
1265
- cursor: default;
1266
- }
1267
- .charcoal-dropdown-selector-menu-item {
1268
- font-size: 14px;
1269
- line-height: 22px;
1270
- color: var(--charcoal-color-text-secondary-default);
1271
- padding: 9px 0;
1301
+ .charcoal-tag-item__label__text {
1302
+ --charcoal-tag-item-text-font-size: 14px;
1303
+ --charcoal-tag-item-text-line-height: 22px;
1272
1304
 
1273
- display: flex;
1274
- align-items: center;
1275
- width: 100%;
1276
- margin-left: 20px;
1277
- }
1305
+ max-width: 152px;
1306
+ overflow: hidden;
1307
+ font-weight: bold;
1278
1308
 
1279
- .charcoal-dropdown-selector-menu-item[data-selected='true'] {
1280
- margin-left: 0px;
1309
+ color: inherit;
1310
+ white-space: nowrap;
1311
+ text-overflow: ellipsis;
1281
1312
  }
1282
1313
 
1283
- .charcoal-dropdown-selector-menu-item-icon {
1284
- color: var(--charcoal-color-text-secondary-default);
1285
- padding-right: 4px;
1286
- }
1314
+ .charcoal-tag-item__label__text[data-has-translate='true'] {
1315
+ --charcoal-tag-item-text-font-size: 10px;
1316
+ --charcoal-tag-item-text-line-height: 14px;
1317
+ font-weight: normal;
1318
+ }
1287
1319
 
1288
- .charcoal-dropdown-selector-menu-item-container {
1320
+ /* Kept flat: different class name from .charcoal-tag-item__label__text (note: "labe" typo in original) */
1321
+ .charcoal-tag-item__labe__text[data-has-translate='true']::after {
1322
+ display: none;
1323
+ }
1324
+ .charcoal-hint-text {
1325
+ background-color: var(--charcoal-color-container-secondary-default);
1326
+ border-radius: 8px;
1327
+ padding: 12px 16px;
1289
1328
  display: flex;
1290
- align-items: center;
1329
+ align-items: flex-start;
1291
1330
  }
1292
1331
 
1293
- .charcoal-dropdown-selector-menu-secondary {
1294
- font-size: 12px;
1295
- line-height: 20px;
1296
- color: var(--charcoal-color-text-tertiary-default);
1297
- padding-bottom: 9px;
1332
+ .charcoal-hint-text[data-context='page'] {
1333
+ justify-content: center;
1334
+ }
1298
1335
 
1299
- display: flex;
1300
- align-items: center;
1301
- margin-left: 20px;
1302
- }
1336
+ @media (min-width: 744px) {
1303
1337
 
1304
- .charcoal-dropdown-selector-menu-fullwidth {
1305
- width: 100%;
1306
- }
1307
- .charcoal-menu-item-group {
1308
- display: block;
1309
- }
1338
+ .charcoal-hint-text[data-context='page'] {
1339
+ padding: 20px 40px
1340
+ }
1341
+ }
1310
1342
 
1311
- .charcoal-menu-item-group > span {
1312
- display: block;
1313
- color: var(--charcoal-color-text-tertiary-default);
1314
- font-size: 12px;
1315
- font-weight: bold;
1316
- padding: 12px 0 8px 16px;
1343
+ .charcoal-hint-text-icon {
1344
+ display: flex;
1345
+ align-items: center;
1346
+ color: var(--charcoal-color-icon-tertiary-default);
1347
+ height: 22px;
1348
+ margin: 0 4px 0 0;
1317
1349
  }
1318
1350
 
1319
- .charcoal-menu-item-group > ul {
1320
- padding-left: 0;
1351
+ .charcoal-hint-text-message {
1352
+ color: var(--charcoal-color-text-secondary-default);
1353
+ font-size: 14px;
1354
+ line-height: 22px;
1355
+ display: flow-root;
1321
1356
  margin: 0;
1322
- box-sizing: border-box;
1323
- list-style: none;
1324
- overflow: hidden;
1357
+ min-width: 0;
1358
+ overflow-wrap: break-word;
1325
1359
  }
1326
- .charcoal-segmented-control {
1327
- display: inline-flex;
1360
+ .charcoal-pagination {
1361
+ display: flex;
1362
+ justify-content: center;
1328
1363
  align-items: center;
1329
-
1330
- background-color: var(--charcoal-color-container-secondary-default-a);
1331
- border-radius: 16px;
1332
1364
  }
1333
1365
 
1334
- .charcoal-segmented-control[data-uniform-segment-width='true'],
1335
- .charcoal-segmented-control[data-full-width='true'] {
1336
- display: inline-grid;
1337
- grid-auto-columns: minmax(80px, 1fr);
1338
- grid-auto-rows: 32px;
1339
- grid-auto-flow: column;
1366
+ .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1367
+ min-width: 32px;
1368
+ min-height: 32px;
1340
1369
  }
1341
1370
 
1342
- .charcoal-segmented-control[data-full-width='true'] {
1343
- width: 100%;
1371
+ .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1372
+ min-width: 40px;
1373
+ min-height: 40px;
1344
1374
  }
1345
1375
 
1346
- .charcoal-segmented-control-radio__label {
1347
- position: relative;
1376
+ /* stylelint-disable no-descending-specificity */
1377
+ .charcoal-pagination-button {
1378
+ cursor: pointer;
1379
+ -webkit-appearance: none;
1380
+ -moz-appearance: none;
1381
+ appearance: none;
1382
+ padding: 0;
1383
+ border-style: none;
1384
+ outline: none;
1385
+ text-decoration: none;
1386
+ font: inherit;
1387
+ margin: 0;
1388
+ -webkit-user-select: none;
1389
+ -moz-user-select: none;
1390
+ user-select: none;
1391
+
1348
1392
  display: flex;
1349
1393
  align-items: center;
1350
1394
  justify-content: center;
1351
- cursor: pointer;
1352
- height: 32px;
1353
-
1354
- padding-right: 16px;
1355
- padding-left: 16px;
1356
- border-radius: 16px;
1357
- color: var(--charcoal-color-text-secondary-default);
1358
-
1359
1395
  font-size: 14px;
1396
+ font-weight: 700;
1360
1397
  line-height: 22px;
1361
- }
1362
1398
 
1363
- .charcoal-segmented-control-radio__label[aria-disabled]:not([aria-disabled='false']) {
1364
- cursor: default;
1365
- opacity: 0.32;
1366
- }
1399
+ /* HACK:
1400
+ * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1401
+ * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1402
+ */
1403
+ /* stylelint-disable-next-line property-no-vendor-prefix */
1404
+ -webkit-transform: translateZ(0);
1367
1405
 
1368
- .charcoal-segmented-control-radio__label[data-checked='true'] {
1369
- background-color: var(--charcoal-color-container-primary-default);
1370
- color: var(--charcoal-color-text-on-primary-default);
1406
+ color: var(--charcoal-color-text-tertiary-default);
1407
+ background-color: var(--charcoal-color-container-default-a);
1408
+ border-radius: 20px;
1409
+ transition:
1410
+ 0.2s background-color,
1411
+ 0.2s box-shadow;
1412
+ }
1413
+ .charcoal-pagination-button:focus {
1414
+ outline: none;
1371
1415
  }
1372
-
1373
- .charcoal-segmented-control-radio__label[data-uniform-segment-width='true'],
1374
- .charcoal-segmented-control-radio__label[data-full-width='true'] {
1375
- justify-content: center;
1376
- white-space: nowrap;
1416
+ .charcoal-pagination-button::-moz-focus-inner {
1417
+ border-style: none;
1418
+ padding: 0;
1377
1419
  }
1420
+ .charcoal-pagination-button[hidden] {
1421
+ visibility: hidden;
1422
+ display: block;
1423
+ }
1424
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1425
+ .charcoal-pagination-button[aria-disabled='false']:hover {
1426
+ color: var(--charcoal-color-text-tertiary-default);
1427
+ background-color: var(--charcoal-color-container-secondary-default);
1428
+ }
1429
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1430
+ .charcoal-pagination-button[aria-disabled='false']:active {
1431
+ color: var(--charcoal-color-text-tertiary-press);
1432
+ background-color: var(--charcoal-color-container-tertiary-press);
1433
+ }
1434
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1435
+ .charcoal-pagination-button[aria-disabled='false']:focus {
1436
+ outline: none;
1437
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1438
+ }
1439
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1440
+ .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1441
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1442
+ }
1443
+ .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1444
+ .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1445
+ box-shadow: none;
1446
+ }
1447
+ .charcoal-pagination-button[aria-current] {
1448
+ cursor: default;
1449
+ background-color: var(--charcoal-color-container-hud-default);
1450
+ color: var(--charcoal-color-text-on-hud-default);
1451
+ }
1452
+ .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1453
+ .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1454
+ background-color: var(--charcoal-color-container-hud-default);
1455
+ color: var(--charcoal-color-text-on-hud-default);
1456
+ }
1457
+ /* stylelint-enable no-descending-specificity */
1378
1458
 
1379
- .charcoal-segmented-control-radio__input {
1380
- position: absolute;
1381
-
1382
- height: 0px;
1383
- width: 0px;
1384
- padding: 0;
1385
- margin: 0;
1459
+ .charcoal-pagination-nav-button[data-hidden] {
1460
+ visibility: hidden;
1461
+ }
1386
1462
 
1387
- -webkit-appearance: none;
1463
+ .charcoal-pagination-spacer,
1464
+ .charcoal-pagination-spacer:hover,
1465
+ .charcoal-pagination-spacer:active {
1466
+ cursor: default;
1467
+ color: var(--charcoal-color-text-tertiary-default);
1468
+ background: none;
1469
+ }
1388
1470
 
1389
- -moz-appearance: none;
1471
+ .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1472
+ opacity: 1;
1473
+ }
1474
+ .charcoal-carousel {
1475
+ --charcoal-carousel-gap: 0px;
1390
1476
 
1391
- appearance: none;
1392
- box-sizing: border-box;
1393
- overflow: hidden;
1394
- white-space: nowrap;
1395
- opacity: 0;
1396
- }
1397
- .charcoal-checkbox__label {
1398
1477
  position: relative;
1399
- cursor: pointer;
1400
- display: flex;
1401
- gap: 4px;
1478
+ display: block;
1402
1479
  }
1403
1480
 
1404
- .charcoal-checkbox__label[aria-disabled='true'] {
1405
- cursor: default;
1406
- opacity: 0.32;
1481
+ .charcoal-carousel[data-full-width='true'] {
1482
+ width: 100vw;
1483
+ margin-inline: calc(50% - 50vw);
1407
1484
  }
1408
1485
 
1409
- .charcoal-checkbox__label[aria-disabled='true'] > input {
1410
- opacity: 1;
1411
- }
1486
+ .charcoal-carousel__viewport {
1487
+ position: relative;
1488
+ }
1412
1489
 
1413
- .charcoal-checkbox__label_div {
1414
- flex: 1;
1415
- color: var(--charcoal-color-text-default);
1416
- font-size: 14px;
1417
- line-height: 20px;
1418
- }
1419
- .charcoal-checkbox-input {
1420
- -webkit-appearance: none;
1421
- -moz-appearance: none;
1422
- appearance: none;
1423
- display: flex;
1424
- cursor: pointer;
1425
- margin: 0;
1426
- width: 20px;
1427
- height: 20px;
1428
- border-radius: 4px;
1429
- transition:
1430
- 0.2s box-shadow,
1431
- 0.2s background-color;
1490
+ /* フォーカスリングは scroller ではなく viewport に描く。scroller に置くと
1491
+ hasGradient の mask(mask-clip: border-box)で外側の box-shadow ごと消えるため。 */
1492
+
1493
+ .charcoal-carousel__viewport[data-focus-visible] {
1494
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1495
+ }
1496
+
1497
+ /* スライド間隔は gap prop(--charcoal-carousel-gap)で注入する。
1498
+ スライド寸法は sandbox 同様、利用者が children 側で持つ。 */
1499
+ .charcoal-carousel__scroller {
1432
1500
  position: relative;
1433
- box-sizing: border-box;
1501
+ display: flex;
1502
+ gap: var(--charcoal-carousel-gap);
1503
+ overflow-x: auto;
1504
+ overflow-y: hidden;
1505
+ overscroll-behavior-x: contain;
1506
+ scroll-behavior: smooth;
1507
+ scrollbar-width: none;
1508
+ outline: none;
1434
1509
  }
1510
+ .charcoal-carousel__scroller::-webkit-scrollbar {
1511
+ display: none;
1512
+ }
1435
1513
 
1436
- .charcoal-checkbox-input:disabled,
1437
- .charcoal-checkbox-input[readonly] {
1438
- opacity: 0.32;
1439
- cursor: default;
1514
+ /* スクロールスナップ type は prop(scrollSnap.type)で scroller に出し分ける。
1515
+ align は基底 .charcoal-carousel__item の後(後述)に置く(no-descending-specificity 回避)。
1516
+ 未指定時の既定(M=none / S=mandatory / align=center)は JS 側で data 属性に解決する。 */
1517
+ .charcoal-carousel[data-scroll-snap-type='none'] .charcoal-carousel__scroller {
1518
+ scroll-snap-type: none;
1440
1519
  }
1441
1520
 
1442
- .charcoal-checkbox-input:checked {
1443
- background-color: var(--charcoal-color-container-primary-default);
1521
+ .charcoal-carousel[data-scroll-snap-type='proximity']
1522
+ .charcoal-carousel__scroller {
1523
+ scroll-snap-type: x proximity;
1444
1524
  }
1445
1525
 
1446
- .charcoal-checkbox-input:checked::after {
1447
- content: '';
1448
- background-color: white;
1449
- display: flex;
1450
- margin: auto;
1451
- width: 16px;
1452
- height: 16px;
1453
- clip-path: path(
1454
- 'M10.6 5a1.3 1.3 0 0 1 1.8 1.9l-5.7 5.6-3-2.9a1.3 1.3 0 1 1 2-1.9l1 1z'
1455
- );
1526
+ .charcoal-carousel[data-scroll-snap-type='mandatory']
1527
+ .charcoal-carousel__scroller {
1528
+ scroll-snap-type: x mandatory;
1456
1529
  }
1457
1530
 
1458
- .charcoal-checkbox-input:not(:checked) {
1459
- border-width: 2px;
1460
- border-style: solid;
1461
- border-color: var(--charcoal-color-border-default);
1531
+ /* グラデーション: mask で端のアイテム自体を透明へフェードさせる(下の背景色を
1532
+ 問わない)。mask の色はアルファとしてだけ効く(#000=表示 / transparent=透過)。
1533
+ 左フェード・右フェードの 2 レイヤーを intersect で合成し、はみ出して
1534
+ スクロール可能な側のみ data-can-prev/next で 72px のフェード帯を枠内に置く。
1535
+ 無効な側はフェード帯ごと枠外へスライドして隠す(mask-image と違い
1536
+ mask-position は補間可能なので、切替が 0.2s のフェードになる)。 */
1537
+ .charcoal-carousel[data-has-gradient='true'] .charcoal-carousel__scroller {
1538
+ -webkit-mask-image:
1539
+ linear-gradient(to right, transparent, #000 72px),
1540
+ linear-gradient(to left, transparent, #000 72px);
1541
+ mask-image:
1542
+ linear-gradient(to right, transparent, #000 72px),
1543
+ linear-gradient(to left, transparent, #000 72px);
1544
+ /* 枠外へ 72px スライドしても反対側の端が欠けないよう、レイヤー幅に 72px 足す */
1545
+ -webkit-mask-size: calc(100% + 72px) 100%;
1546
+ mask-size: calc(100% + 72px) 100%;
1547
+ -webkit-mask-repeat: no-repeat;
1548
+ mask-repeat: no-repeat;
1549
+ -webkit-mask-composite: source-in, xor;
1550
+ mask-composite: intersect;
1551
+ -webkit-mask-position:
1552
+ -72px 0,
1553
+ 0 0;
1554
+ mask-position:
1555
+ -72px 0,
1556
+ 0 0;
1557
+ /* 0.2s ease-in は react-sandbox の LeftGradient と同じ値 */
1558
+ transition: 0.2s ease-in mask-position;
1462
1559
  }
1463
1560
 
1464
- .charcoal-checkbox-input:not(:disabled):focus {
1465
- outline: none;
1466
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1467
- }
1468
- .charcoal-checkbox-input:not(:disabled):focus-visible {
1469
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1470
- }
1471
- .charcoal-checkbox-input:not(:disabled):focus:not(:focus-visible) {
1472
- box-shadow: none;
1561
+ .charcoal-carousel[data-has-gradient='true'][data-can-prev='true']
1562
+ .charcoal-carousel__scroller {
1563
+ -webkit-mask-position:
1564
+ 0 0,
1565
+ 0 0;
1566
+ mask-position:
1567
+ 0 0,
1568
+ 0 0;
1473
1569
  }
1474
1570
 
1475
- .charcoal-checkbox-input:checked:not(:disabled):hover {
1476
- background-color: var(--charcoal-color-container-primary-hover);
1477
- }
1478
- .charcoal-checkbox-input:checked:not(:disabled):active {
1479
- background-color: var(--charcoal-color-container-primary-press);
1571
+ .charcoal-carousel[data-has-gradient='true'][data-can-next='true']
1572
+ .charcoal-carousel__scroller {
1573
+ -webkit-mask-position:
1574
+ -72px 0,
1575
+ -72px 0;
1576
+ mask-position:
1577
+ -72px 0,
1578
+ -72px 0;
1480
1579
  }
1481
1580
 
1482
- .charcoal-checkbox-input[aria-invalid='true'],
1483
- .charcoal-checkbox-input[aria-invalid='true']:not(:disabled):focus {
1484
- box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1581
+ .charcoal-carousel[data-has-gradient='true'][data-can-prev='true'][data-can-next='true']
1582
+ .charcoal-carousel__scroller {
1583
+ -webkit-mask-position:
1584
+ 0 0,
1585
+ -72px 0;
1586
+ mask-position:
1587
+ 0 0,
1588
+ -72px 0;
1485
1589
  }
1486
1590
 
1487
- .charcoal-checkbox-input[data-rounded='true'] {
1488
- border-radius: 10px;
1489
- background-color: var(--charcoal-color-container-secondary-default);
1490
- border: 2px solid transparent;
1591
+ .charcoal-carousel__item {
1592
+ flex: 0 0 auto;
1593
+ min-width: 0;
1491
1594
  }
1492
1595
 
1493
- .charcoal-checkbox-input[data-rounded='true']:checked {
1494
- background-color: var(--charcoal-color-container-primary-default);
1596
+ .charcoal-carousel[data-size='S'] .charcoal-carousel__item {
1597
+ flex: 0 0 100%;
1495
1598
  }
1496
1599
 
1497
- .charcoal-checkbox-input[data-rounded='true']:not(:disabled):hover {
1498
- background-color: var(--charcoal-color-container-secondary-hover);
1499
- }
1500
- .charcoal-checkbox-input[data-rounded='true']:not(:disabled):active {
1501
- background-color: var(--charcoal-color-container-secondary-press);
1600
+ /* scroll-snap-align は prop(scrollSnap.align)で出し分ける。基底 .charcoal-carousel__item
1601
+ より後に置くことで no-descending-specificity を回避する。 */
1602
+ .charcoal-carousel[data-scroll-snap-align='center'] .charcoal-carousel__item {
1603
+ scroll-snap-align: center;
1502
1604
  }
1503
1605
 
1504
- .charcoal-checkbox-input[data-rounded='true']:not(:disabled):focus-visible {
1505
- box-shadow: 0 0 0 6px rgba(0, 150, 250, 0.32);
1606
+ .charcoal-carousel[data-scroll-snap-align='start'] .charcoal-carousel__item {
1607
+ scroll-snap-align: start;
1506
1608
  }
1507
1609
 
1508
- .charcoal-checkbox-input[data-rounded='true']:checked:not(:disabled):hover {
1509
- background-color: var(--charcoal-color-container-primary-hover);
1510
- }
1511
- .charcoal-checkbox-input[data-rounded='true']:checked:not(:disabled):active {
1512
- background-color: var(--charcoal-color-container-primary-press);
1610
+ /* ── Navigation Buttons (charcoal IconButton, variant=Overlay size=S) ── */
1611
+
1612
+ /* マスクの透過域と同じ 72px 1fr 72px グリッド。各ボタンは 72px ゾーンの中央に置く。 */
1613
+ .charcoal-carousel__navigation {
1614
+ position: absolute;
1615
+ inset: 0;
1616
+ pointer-events: none;
1617
+ display: grid;
1618
+ grid-template-columns: 72px 1fr 72px;
1619
+ align-items: center;
1620
+ /* アイテム内のコンテンツより上にボタンを表示する */
1621
+ z-index: 1;
1622
+ /* sandbox 同様、通常は隠してカルーセル hover 時にフェードイン表示する。 */
1623
+ opacity: 0;
1624
+ transition: 0.4s opacity;
1513
1625
  }
1626
+ .charcoal-carousel__navigation[data-visible='false'] {
1627
+ display: none;
1628
+ }
1514
1629
 
1515
- .charcoal-checkbox-input[data-rounded='true'][aria-invalid='true'],
1516
- .charcoal-checkbox-input[data-rounded='true'][aria-invalid='true']:not(
1517
- :disabled
1518
- ):focus {
1519
- box-shadow: 0 0 0 6px rgba(255, 43, 0, 0.32);
1630
+ /* hover で表示。キーボード操作でも到達できるよう、キーボード由来のフォーカスが
1631
+ カルーセル内にある間も表示する(:focus-within だとクリックで残ったフォーカスでも
1632
+ 表示され続けるため、react-aria が付与する data 属性で判定する)。 */
1633
+ .charcoal-carousel:hover .charcoal-carousel__navigation,
1634
+ .charcoal-carousel[data-focus-visible-within] .charcoal-carousel__navigation {
1635
+ opacity: 1;
1520
1636
  }
1521
1637
 
1522
- .charcoal-checkbox-input[data-rounded='true']::before {
1523
- content: '';
1524
- width: 24px;
1525
- height: 24px;
1526
- position: absolute;
1527
- top: -4px;
1528
- left: -4px;
1529
- border-radius: 12px;
1530
- border: 2px solid #fff;
1531
- box-sizing: border-box;
1638
+ .charcoal-carousel__navigation__item {
1639
+ pointer-events: auto;
1532
1640
  }
1533
- .charcoal-tag-item {
1534
- --charcoal-tag-item-color: var(--charcoal-color-text-on-primary-default);
1535
- --charcoal-tag-item-size: 40px;
1536
- --charcoal-tag-item-padding-left: 24px;
1537
- --charcoal-tag-item-padding-right: 24px;
1538
- --charcoal-tag-item-bg: ;
1539
1641
 
1540
- isolation: isolate;
1541
- position: relative;
1642
+ /* ヒットエリアをグリッド端列(= mask のフェード帯と同じ 72px)全体へ広げる。
1643
+ 擬似要素上のクリックは元の button に届くため、帯のどこを押してもページ送りになる。
1644
+ position: absolute の基準は positioned な .charcoal-carousel__navigation(inset: 0)。 */
1542
1645
 
1543
- -webkit-appearance: none;
1646
+ .charcoal-carousel__navigation__item::after {
1647
+ content: '';
1648
+ position: absolute;
1649
+ top: 0;
1650
+ bottom: 0;
1651
+ width: 72px;
1652
+ }
1544
1653
 
1545
- -moz-appearance: none;
1654
+ .charcoal-carousel__navigation__item[data-direction='prev'] {
1655
+ grid-column: 1;
1656
+ justify-self: center;
1657
+ }
1546
1658
 
1547
- appearance: none;
1548
- outline: none;
1549
- border-style: none;
1659
+ .charcoal-carousel__navigation__item[data-direction='prev']::after {
1660
+ left: 0;
1661
+ }
1550
1662
 
1551
- display: inline-flex;
1552
- gap: 8px;
1553
- align-items: center;
1554
- justify-content: center;
1663
+ .charcoal-carousel__navigation__item[data-direction='next'] {
1664
+ grid-column: 3;
1665
+ justify-self: center;
1666
+ }
1555
1667
 
1556
- text-decoration: none;
1557
- cursor: pointer;
1558
- overflow: hidden;
1668
+ .charcoal-carousel__navigation__item[data-direction='next']::after {
1669
+ right: 0;
1670
+ }
1559
1671
 
1560
- color: var(--charcoal-tag-item-color);
1561
- height: var(--charcoal-tag-item-size);
1562
- padding-top: 4px;
1563
- padding-bottom: 4px;
1564
- padding-left: var(--charcoal-tag-item-padding-left);
1565
- padding-right: var(--charcoal-tag-item-padding-right);
1566
- box-sizing: border-box;
1567
- border-radius: 4px;
1568
-
1569
- transition: 0.2s box-shadow;
1672
+ /* スクロール端では非表示。IconButton の disabled スタイル(opacity:0.32)より
1673
+ 高い詳細度で打ち消すため、ルートを前置する。 */
1674
+ .charcoal-carousel .charcoal-carousel__navigation__item[data-hidden='true'] {
1675
+ opacity: 0;
1676
+ pointer-events: none;
1570
1677
  }
1571
1678
 
1572
- .charcoal-tag-item[data-size='M'] {
1573
- --charcoal-tag-item-size: 40px;
1574
- --charcoal-tag-item-padding-left: 24px;
1575
- --charcoal-tag-item-padding-right: 24px;
1679
+ /* タッチデバイスではナビゲーションボタンを出さず、スワイプ操作に委ねる。 */
1680
+ @media (hover: none) and (pointer: coarse) {
1681
+ .charcoal-carousel__navigation {
1682
+ display: none;
1576
1683
  }
1684
+ }
1577
1685
 
1578
- .charcoal-tag-item[data-size='S'] {
1579
- --charcoal-tag-item-size: 32px;
1580
- --charcoal-tag-item-padding-left: 16px;
1581
- --charcoal-tag-item-padding-right: 16px;
1582
- }
1686
+ /* ── Indicator: JS Fallback ── */
1583
1687
 
1584
- .charcoal-tag-item[data-state='inactive'] {
1585
- --charcoal-tag-item-color: var(--charcoal-color-text-secondary-default);
1688
+ .charcoal-carousel__indicator {
1689
+ display: flex;
1690
+ justify-content: center;
1691
+ align-items: center;
1692
+ height: 40px;
1693
+ gap: 8px;
1694
+ }
1695
+
1696
+ .charcoal-carousel__indicator[data-visible='false'] {
1697
+ display: none;
1586
1698
  }
1587
1699
 
1588
- .charcoal-tag-item[data-state='active'] {
1589
- --charcoal-tag-item-padding-left: 16px;
1590
- --charcoal-tag-item-padding-right: 8px;
1700
+ .charcoal-carousel__indicator__item {
1701
+ -webkit-appearance: none;
1702
+ -moz-appearance: none;
1703
+ appearance: none;
1704
+ box-sizing: border-box;
1705
+ width: 8px;
1706
+ height: 8px;
1707
+ padding: 0;
1708
+ border: 0;
1709
+ border-radius: 50%;
1710
+ background-color: var(--charcoal-color-text-tertiary-default);
1711
+ cursor: pointer;
1712
+ transition: 0.2s background-color;
1713
+ }
1714
+
1715
+ .charcoal-carousel__indicator__item:hover {
1716
+ background-color: var(--charcoal-color-text-secondary-default);
1591
1717
  }
1592
1718
 
1593
- .charcoal-tag-item:disabled,
1594
- .charcoal-tag-item[aria-disabled]:not([aria-disabled='false']) {
1595
- opacity: 0.32;
1596
- cursor: default;
1719
+ .charcoal-carousel__indicator__item:focus-visible {
1720
+ outline: 2px solid rgba(0, 150, 250, 0.56);
1721
+ outline-offset: 2px;
1597
1722
  }
1598
1723
 
1599
- .charcoal-tag-item:not(:disabled):not([aria-disabled]):focus-visible,
1600
- .charcoal-tag-item[aria-disabled='false']:focus-visible {
1601
- outline: none;
1602
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1724
+ .charcoal-carousel__indicator__item[data-active='true'] {
1725
+ background-color: var(--charcoal-color-text-default);
1603
1726
  }
1604
1727
 
1605
- .charcoal-tag-item:not(:disabled):not([aria-disabled]):focus,
1606
- .charcoal-tag-item[aria-disabled='false']:focus {
1607
- outline: none;
1608
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1728
+ /* ── CSS Scroll Markers (progressive enhancement) ── */
1729
+
1730
+ /* CSS Scroll Markers / Anchor Positioning は新しい仕様で、stylelint がプロパティ・
1731
+ 擬似要素・擬似クラスを未知と判定するため、この @supports ブロックでは該当ルールを無効化する。 */
1732
+ /* stylelint-disable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
1733
+ @supports (scroll-marker-group: after) {
1734
+ .charcoal-carousel[data-indicator='true'] {
1735
+ padding-bottom: 40px;
1609
1736
  }
1610
1737
 
1611
- .charcoal-tag-item:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1612
- .charcoal-tag-item[aria-disabled='false']:focus:not(:focus-visible) {
1613
- box-shadow: none;
1738
+ .charcoal-carousel__scroller {
1739
+ anchor-name: --charcoal-carousel;
1740
+ scroll-marker-group: after;
1614
1741
  }
1615
1742
 
1616
- .charcoal-tag-item__bg {
1617
- background-color: var(--charcoal-tag-item-bg);
1618
- }
1743
+ .charcoal-carousel__scroller::scroll-button(*) {
1744
+ content: none;
1745
+ }
1619
1746
 
1620
- .charcoal-tag-item__bg[data-bg-variant='image'] {
1621
- background-color: var(--charcoal-color-container-on-img-default);
1622
- }
1747
+ .charcoal-carousel__scroller::scroll-marker-group {
1748
+ display: flex;
1749
+ justify-content: center;
1750
+ align-items: center;
1751
+ height: 40px;
1752
+ gap: 8px;
1623
1753
 
1624
- .charcoal-tag-item__bg[data-bg-variant='image']::before {
1625
- content: '';
1626
1754
  position: absolute;
1627
- z-index: 1;
1628
- top: 0;
1629
- left: 0;
1630
- width: 100%;
1631
- height: 100%;
1632
- background-position: center;
1633
- background-size: cover;
1634
- background-image: var(--charcoal-tag-item-bg);
1635
- mix-blend-mode: overlay;
1755
+ position-anchor: --charcoal-carousel;
1756
+ top: anchor(bottom);
1757
+ justify-self: anchor-center;
1636
1758
  }
1637
1759
 
1638
- .charcoal-tag-item__bg[data-state='inactive'] {
1639
- background-color: var(--charcoal-color-container-secondary-default);
1760
+ .charcoal-carousel[data-indicator='false'] .charcoal-carousel__scroller {
1761
+ scroll-marker-group: none;
1640
1762
  }
1641
1763
 
1642
- .charcoal-tag-item__label {
1643
- height: 100%;
1644
- display: flex;
1645
- flex-direction: column;
1646
- align-items: center;
1647
- justify-content: center;
1648
- }
1649
-
1650
- .charcoal-tag-item__label[data-has-translate='true'] {
1651
- justify-content: space-between;
1764
+ .charcoal-carousel__item::scroll-marker {
1765
+ content: '';
1766
+ width: 8px;
1767
+ height: 8px;
1768
+ border: 0;
1769
+ border-radius: 50%;
1770
+ background-color: var(--charcoal-color-text-tertiary-default);
1771
+ cursor: pointer;
1772
+ transition: 0.2s background-color;
1652
1773
  }
1653
1774
 
1654
- .charcoal-tag-item__label__translated {
1655
- --charcoal-tag-item-text-font-size: 12px;
1656
- --charcoal-tag-item-text-line-height: 20px;
1657
- font-weight: bold;
1658
- }
1775
+ .charcoal-carousel__item::scroll-marker:hover {
1776
+ background-color: var(--charcoal-color-text-secondary-default);
1777
+ }
1659
1778
 
1660
- .charcoal-tag-item__label__translated::before {
1779
+ .charcoal-carousel__item::scroll-marker:focus {
1780
+ outline: 2px solid rgba(0, 150, 250, 0.56);
1781
+ outline-offset: 2px;
1782
+ }
1783
+
1784
+ .charcoal-carousel__item::scroll-marker:target-current {
1785
+ background-color: var(--charcoal-color-text-default);
1786
+ }
1787
+
1788
+ .charcoal-carousel__indicator {
1661
1789
  display: none;
1662
1790
  }
1791
+ }
1792
+ /* stylelint-enable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
1793
+ .charcoal-text-field-assistive-text {
1794
+ font-size: 14px;
1795
+ line-height: 22px;
1796
+ margin: 0;
1797
+ color: var(--charcoal-color-text-secondary-default);
1798
+ }
1663
1799
 
1664
- .charcoal-tag-item__label__text {
1665
- --charcoal-tag-item-text-font-size: 14px;
1666
- --charcoal-tag-item-text-line-height: 22px;
1800
+ .charcoal-text-field-assistive-text[data-invalid='true'] {
1801
+ color: var(--charcoal-color-text-negative-default);
1802
+ }
1803
+ .charcoal-radio-input {
1804
+ -webkit-appearance: none;
1805
+ -moz-appearance: none;
1806
+ appearance: none;
1807
+ display: block;
1808
+ box-sizing: border-box;
1667
1809
 
1668
- max-width: 152px;
1669
- overflow: hidden;
1670
- font-weight: bold;
1810
+ margin: 0;
1811
+ padding: 6px;
1671
1812
 
1672
- color: inherit;
1673
- white-space: nowrap;
1674
- text-overflow: ellipsis;
1813
+ width: 20px;
1814
+ height: 20px;
1815
+ cursor: pointer;
1816
+ border-radius: 999999px;
1817
+ background-color: var(--charcoal-color-container-default);
1818
+ transition:
1819
+ 0.2s background-color,
1820
+ 0.2s box-shadow;
1675
1821
  }
1676
1822
 
1677
- .charcoal-tag-item__label__text[data-has-translate='true'] {
1678
- --charcoal-tag-item-text-font-size: 10px;
1679
- --charcoal-tag-item-text-line-height: 14px;
1680
- font-weight: normal;
1681
- }
1823
+ .charcoal-radio-input:checked {
1824
+ background-color: var(--charcoal-color-container-primary-default);
1825
+ }
1682
1826
 
1683
- /* Kept flat: different class name from .charcoal-tag-item__label__text (note: "labe" typo in original) */
1684
- .charcoal-tag-item__labe__text[data-has-translate='true']::after {
1685
- display: none;
1827
+ .charcoal-radio-input:checked::after {
1828
+ content: '';
1829
+ display: block;
1830
+ width: 8px;
1831
+ height: 8px;
1832
+ pointer-events: none;
1833
+ background-color: var(--charcoal-color-icon-on-primary-default);
1834
+ border-radius: 999999px;
1835
+ transition:
1836
+ 0.2s background-color,
1837
+ 0.2s box-shadow;
1686
1838
  }
1687
- .charcoal-hint-text {
1688
- background-color: var(--charcoal-color-container-secondary-default);
1689
- border-radius: 8px;
1690
- padding: 12px 16px;
1691
- display: flex;
1692
- align-items: flex-start;
1839
+
1840
+ .charcoal-radio-input:not(:checked) {
1841
+ border-width: 2px;
1842
+ border-style: solid;
1843
+ border-color: var(--charcoal-color-border-default);
1693
1844
  }
1694
1845
 
1695
- .charcoal-hint-text[data-context='page'] {
1696
- justify-content: center;
1697
- }
1846
+ .charcoal-radio-input:disabled {
1847
+ cursor: default;
1848
+ }
1698
1849
 
1699
- @media (min-width: 744px) {
1850
+ .charcoal-radio-input:not(:disabled):hover {
1851
+ background-color: var(--charcoal-color-container-hover);
1852
+ }
1700
1853
 
1701
- .charcoal-hint-text[data-context='page'] {
1702
- padding: 20px 40px
1703
- }
1704
- }
1854
+ .charcoal-radio-input:not(:disabled):active {
1855
+ background-color: var(--charcoal-color-container-press);
1856
+ }
1705
1857
 
1706
- .charcoal-hint-text-icon {
1707
- display: flex;
1708
- align-items: center;
1709
- color: var(--charcoal-color-icon-tertiary-default);
1710
- height: 22px;
1711
- margin: 0 4px 0 0;
1858
+ .charcoal-radio-input:not(:disabled):focus {
1859
+ outline: none;
1860
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1712
1861
  }
1713
1862
 
1714
- .charcoal-hint-text-message {
1715
- color: var(--charcoal-color-text-secondary-default);
1716
- font-size: 14px;
1717
- line-height: 22px;
1718
- display: flow-root;
1719
- margin: 0;
1720
- min-width: 0;
1721
- overflow-wrap: break-word;
1863
+ .charcoal-radio-input:not(:disabled):focus-visible {
1864
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1722
1865
  }
1723
- .charcoal-text-ellipsis {
1724
- /* Runtime variables overridden by the React component. */
1725
- --charcoal-text-ellipsis-line-limit: 1;
1726
- --charcoal-text-ellipsis-line-height: inherit;
1727
1866
 
1728
- overflow: hidden;
1729
- overflow-wrap: break-word;
1730
- display: -webkit-box;
1731
- -webkit-box-orient: vertical;
1732
- -webkit-line-clamp: var(--charcoal-text-ellipsis-line-limit);
1867
+ .charcoal-radio-input:not(:disabled):focus:not(:focus-visible) {
1868
+ box-shadow: none;
1733
1869
  }
1734
1870
 
1735
- .charcoal-text-ellipsis[data-has-line-height='true'] {
1736
- line-height: var(--charcoal-text-ellipsis-line-height);
1737
- }
1738
-
1739
- .charcoal-text-ellipsis[data-has-line-height='false'] {
1740
- line-height: inherit;
1741
- }
1871
+ .charcoal-radio-input:not(:disabled)[aria-invalid='true'],
1872
+ .charcoal-radio-input:not(:disabled)[aria-invalid='true']:focus {
1873
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
1874
+ }
1742
1875
 
1743
- .charcoal-text-ellipsis[data-line-limit='1'][data-use-nowrap='true'] {
1744
- text-overflow: ellipsis;
1745
- white-space: nowrap;
1746
- }
1747
- .charcoal-pagination {
1748
- display: flex;
1749
- justify-content: center;
1750
- align-items: center;
1876
+ .charcoal-radio-input:checked:not(:disabled):hover {
1877
+ background-color: var(--charcoal-color-container-primary-hover);
1751
1878
  }
1752
1879
 
1753
- .charcoal-pagination[data-size='S'] .charcoal-pagination-button {
1754
- min-width: 32px;
1755
- min-height: 32px;
1756
- }
1880
+ .charcoal-radio-input:checked:not(:disabled):hover::after {
1881
+ background-color: var(--charcoal-color-icon-on-primary-hover);
1882
+ }
1757
1883
 
1758
- .charcoal-pagination[data-size='M'] .charcoal-pagination-button {
1759
- min-width: 40px;
1760
- min-height: 40px;
1761
- }
1884
+ .charcoal-radio-input:checked:not(:disabled):active {
1885
+ background-color: var(--charcoal-color-container-primary-press);
1886
+ }
1762
1887
 
1763
- /* stylelint-disable no-descending-specificity */
1764
- .charcoal-pagination-button {
1765
- cursor: pointer;
1766
- -webkit-appearance: none;
1767
- -moz-appearance: none;
1768
- appearance: none;
1769
- padding: 0;
1770
- border-style: none;
1771
- outline: none;
1772
- text-decoration: none;
1773
- font: inherit;
1774
- margin: 0;
1775
- -webkit-user-select: none;
1776
- -moz-user-select: none;
1777
- user-select: none;
1888
+ .charcoal-radio-input:checked:not(:disabled):active::after {
1889
+ background-color: var(--charcoal-color-icon-on-primary-press);
1890
+ }
1891
+ .charcoal-modal-dialog {
1892
+ margin: auto;
1893
+ position: relative;
1894
+ height: -moz-fit-content;
1895
+ height: fit-content;
1896
+ width: 440px;
1778
1897
 
1779
- display: flex;
1780
- align-items: center;
1781
- justify-content: center;
1782
- font-size: 14px;
1783
- font-weight: 700;
1784
- line-height: 22px;
1898
+ background-color: var(--charcoal-color-container-default);
1899
+ border-radius: 24px;
1900
+ }
1785
1901
 
1786
- /* HACK:
1787
- * Safari doesn't correctly repaint the elements when they're reordered in response to interaction.
1788
- * This forces it to repaint them. This doesn't work if put on the parents either, has to be here.
1789
- */
1790
- /* stylelint-disable-next-line property-no-vendor-prefix */
1791
- -webkit-transform: translateZ(0);
1902
+ .charcoal-modal-dialog[data-size='S'] {
1903
+ width: 336px;
1904
+ }
1792
1905
 
1793
- color: var(--charcoal-color-text-tertiary-default);
1794
- background-color: var(--charcoal-color-container-default-a);
1795
- border-radius: 20px;
1796
- transition:
1797
- 0.2s background-color,
1798
- 0.2s box-shadow;
1906
+ .charcoal-modal-dialog[data-size='M'] {
1907
+ width: 440px;
1799
1908
  }
1800
- .charcoal-pagination-button:focus {
1801
- outline: none;
1802
- }
1803
- .charcoal-pagination-button::-moz-focus-inner {
1804
- border-style: none;
1805
- padding: 0;
1806
- }
1807
- .charcoal-pagination-button[hidden] {
1808
- visibility: hidden;
1809
- display: block;
1810
- }
1811
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):hover,
1812
- .charcoal-pagination-button[aria-disabled='false']:hover {
1813
- color: var(--charcoal-color-text-tertiary-default);
1814
- background-color: var(--charcoal-color-container-secondary-default);
1815
- }
1816
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):active,
1817
- .charcoal-pagination-button[aria-disabled='false']:active {
1818
- color: var(--charcoal-color-text-tertiary-press);
1819
- background-color: var(--charcoal-color-container-tertiary-press);
1820
- }
1821
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus,
1822
- .charcoal-pagination-button[aria-disabled='false']:focus {
1823
- outline: none;
1824
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1825
- }
1826
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus-visible,
1827
- .charcoal-pagination-button[aria-disabled='false']:focus-visible {
1828
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1829
- }
1830
- .charcoal-pagination-button:not(:disabled):not([aria-disabled]):focus:not(:focus-visible),
1831
- .charcoal-pagination-button[aria-disabled='false']:focus:not(:focus-visible) {
1832
- box-shadow: none;
1833
- }
1834
- .charcoal-pagination-button[aria-current] {
1835
- cursor: default;
1836
- background-color: var(--charcoal-color-container-hud-default);
1837
- color: var(--charcoal-color-text-on-hud-default);
1838
- }
1839
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):hover,
1840
- .charcoal-pagination-button[aria-current]:not(:disabled):not([aria-disabled]):active {
1841
- background-color: var(--charcoal-color-container-hud-default);
1842
- color: var(--charcoal-color-text-on-hud-default);
1843
- }
1844
- /* stylelint-enable no-descending-specificity */
1845
1909
 
1846
- .charcoal-pagination-nav-button[data-hidden] {
1847
- visibility: hidden;
1910
+ .charcoal-modal-dialog[data-size='L'] {
1911
+ width: 648px;
1848
1912
  }
1849
1913
 
1850
- .charcoal-pagination-spacer,
1851
- .charcoal-pagination-spacer:hover,
1852
- .charcoal-pagination-spacer:active {
1853
- cursor: default;
1854
- color: var(--charcoal-color-text-tertiary-default);
1855
- background: none;
1914
+ @media (max-width: 743px) {
1915
+ .charcoal-modal-dialog {
1916
+ max-width: 440px;
1917
+ width: calc(100% - 48px);
1856
1918
  }
1857
1919
 
1858
- .charcoal-pagination-spacer.charcoal-icon-button:disabled {
1859
- opacity: 1;
1920
+ .charcoal-modal-dialog[data-bottom-sheet='true'],
1921
+ .charcoal-modal-dialog[data-bottom-sheet='full'] {
1922
+ max-width: unset;
1923
+ width: 100%;
1924
+ border-radius: 0;
1925
+ margin: auto 0 0 0;
1860
1926
  }
1861
- .charcoal-carousel {
1862
- position: relative;
1863
- display: block;
1864
- }
1865
1927
 
1866
- .charcoal-carousel[data-full-width='true'] {
1867
- width: 100vw;
1868
- margin-inline: calc(50% - 50vw);
1928
+ .charcoal-modal-dialog[data-bottom-sheet='full'] {
1929
+ min-height: 100%;
1869
1930
  }
1870
-
1871
- .charcoal-carousel__viewport {
1872
- position: relative;
1873
1931
  }
1874
1932
 
1875
- /* フォーカスリングは scroller ではなく viewport に描く。scroller に置くと
1876
- hasGradient の mask(mask-clip: border-box)で外側の box-shadow ごと消えるため。 */
1933
+ .charcoal-modal-dialog:focus {
1934
+ outline: none;
1935
+ }
1936
+ .charcoal-switch-input {
1937
+ cursor: pointer;
1938
+ -webkit-appearance: none;
1939
+ -moz-appearance: none;
1940
+ appearance: none;
1941
+ display: inline-flex;
1942
+ position: relative;
1943
+ box-sizing: border-box;
1944
+ width: 28px;
1945
+ border: 2px solid transparent;
1877
1946
 
1878
- .charcoal-carousel__viewport[data-focus-visible] {
1879
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1880
- }
1947
+ transition-property: background-color, box-shadow;
1948
+ transition-duration: 0.2s;
1881
1949
 
1882
- /* スライド間隔は所有しない(sandbox 同様、利用者が children 側で注入する)。
1883
- このコンポーネントの責務はスクロールと indicator / arrow によるページ送りのみ。 */
1884
- .charcoal-carousel__scroller {
1885
- position: relative;
1886
- display: flex;
1887
- overflow-x: auto;
1888
- overflow-y: hidden;
1889
- overscroll-behavior-x: contain;
1890
- scroll-behavior: smooth;
1891
- scrollbar-width: none;
1892
1950
  outline: none;
1951
+ border-radius: 16px;
1952
+ height: 16px;
1953
+ margin: 0;
1954
+ background-color: var(--charcoal-color-container-neutral-default);
1893
1955
  }
1894
- .charcoal-carousel__scroller::-webkit-scrollbar {
1895
- display: none;
1896
- }
1897
1956
 
1898
- /* スクロールスナップ type は prop(scrollSnap.type)で scroller に出し分ける。
1899
- align は基底 .charcoal-carousel__item の後(後述)に置く(no-descending-specificity 回避)。
1900
- 未指定時の既定(M=none / S=mandatory / align=center)は JS 側で data 属性に解決する。 */
1901
- .charcoal-carousel[data-scroll-snap-type='none'] .charcoal-carousel__scroller {
1902
- scroll-snap-type: none;
1957
+ .charcoal-switch-input:disabled,
1958
+ .charcoal-switch-input[readonly] {
1959
+ opacity: 0.32;
1960
+ cursor: default;
1903
1961
  }
1904
1962
 
1905
- .charcoal-carousel[data-scroll-snap-type='proximity']
1906
- .charcoal-carousel__scroller {
1907
- scroll-snap-type: x proximity;
1963
+ .charcoal-switch-input::after {
1964
+ content: '';
1965
+ position: absolute;
1966
+ display: block;
1967
+ top: 0;
1968
+ left: 0;
1969
+ width: 12px;
1970
+ height: 12px;
1971
+ transform: translateX(0);
1972
+ transition: transform 0.2s;
1973
+ border-radius: 1024px;
1974
+ background-color: var(--charcoal-color-icon-on-primary-default);
1908
1975
  }
1909
1976
 
1910
- .charcoal-carousel[data-scroll-snap-type='mandatory']
1911
- .charcoal-carousel__scroller {
1912
- scroll-snap-type: x mandatory;
1977
+ .charcoal-switch-input:checked::after {
1978
+ transform: translateX(12px);
1979
+ transition: transform 0.2s;
1913
1980
  }
1914
1981
 
1915
- /* グラデーション: mask で端のアイテム自体を透明へフェードさせる(下の背景色を
1916
- 問わない)。mask の色はアルファとしてだけ効く(#000=表示 / transparent=透過)。
1917
- 左フェード・右フェードの 2 レイヤーを intersect で合成し、はみ出して
1918
- スクロール可能な側のみ data-can-prev/next で 72px のフェード帯を枠内に置く。
1919
- 無効な側はフェード帯ごと枠外へスライドして隠す(mask-image と違い
1920
- mask-position は補間可能なので、切替が 0.2s のフェードになる)。 */
1921
- .charcoal-carousel[data-has-gradient='true'] .charcoal-carousel__scroller {
1922
- -webkit-mask-image:
1923
- linear-gradient(to right, transparent, #000 72px),
1924
- linear-gradient(to left, transparent, #000 72px);
1925
- mask-image:
1926
- linear-gradient(to right, transparent, #000 72px),
1927
- linear-gradient(to left, transparent, #000 72px);
1928
- /* 枠外へ 72px スライドしても反対側の端が欠けないよう、レイヤー幅に 72px 足す */
1929
- -webkit-mask-size: calc(100% + 72px) 100%;
1930
- mask-size: calc(100% + 72px) 100%;
1931
- -webkit-mask-repeat: no-repeat;
1932
- mask-repeat: no-repeat;
1933
- -webkit-mask-composite: source-in, xor;
1934
- mask-composite: intersect;
1935
- -webkit-mask-position:
1936
- -72px 0,
1937
- 0 0;
1938
- mask-position:
1939
- -72px 0,
1940
- 0 0;
1941
- /* 0.2s ease-in は react-sandbox の LeftGradient と同じ値 */
1942
- transition: 0.2s ease-in mask-position;
1982
+ .charcoal-switch-input:checked {
1983
+ background-color: var(--charcoal-color-container-primary-default);
1943
1984
  }
1944
1985
 
1945
- .charcoal-carousel[data-has-gradient='true'][data-can-prev='true']
1946
- .charcoal-carousel__scroller {
1947
- -webkit-mask-position:
1948
- 0 0,
1949
- 0 0;
1950
- mask-position:
1951
- 0 0,
1952
- 0 0;
1986
+ .charcoal-switch-input:not(:disabled):hover {
1987
+ background-color: var(--charcoal-color-container-neutral-hover);
1953
1988
  }
1954
1989
 
1955
- .charcoal-carousel[data-has-gradient='true'][data-can-next='true']
1956
- .charcoal-carousel__scroller {
1957
- -webkit-mask-position:
1958
- -72px 0,
1959
- -72px 0;
1960
- mask-position:
1961
- -72px 0,
1962
- -72px 0;
1990
+ .charcoal-switch-input:not(:disabled):active {
1991
+ background-color: var(--charcoal-color-container-neutral-press);
1963
1992
  }
1964
1993
 
1965
- .charcoal-carousel[data-has-gradient='true'][data-can-prev='true'][data-can-next='true']
1966
- .charcoal-carousel__scroller {
1967
- -webkit-mask-position:
1968
- 0 0,
1969
- -72px 0;
1970
- mask-position:
1971
- 0 0,
1972
- -72px 0;
1994
+ .charcoal-switch-input:not(:disabled):focus {
1995
+ outline: none;
1996
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1973
1997
  }
1974
-
1975
- .charcoal-carousel__item {
1976
- flex: 0 0 auto;
1977
- min-width: 0;
1998
+ .charcoal-switch-input:not(:disabled):focus-visible {
1999
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
1978
2000
  }
1979
-
1980
- .charcoal-carousel[data-size='S'] .charcoal-carousel__item {
1981
- flex: 0 0 100%;
2001
+ .charcoal-switch-input:not(:disabled):focus:not(:focus-visible) {
2002
+ box-shadow: none;
1982
2003
  }
1983
2004
 
1984
- /* scroll-snap-align は prop(scrollSnap.align)で出し分ける。基底 .charcoal-carousel__item
1985
- より後に置くことで no-descending-specificity を回避する。 */
1986
- .charcoal-carousel[data-scroll-snap-align='center'] .charcoal-carousel__item {
1987
- scroll-snap-align: center;
2005
+ .charcoal-switch-input:not(:disabled)::after:hover {
2006
+ background-color: var(--charcoal-color-icon-on-primary-hover);
1988
2007
  }
1989
2008
 
1990
- .charcoal-carousel[data-scroll-snap-align='start'] .charcoal-carousel__item {
1991
- scroll-snap-align: start;
2009
+ .charcoal-switch-input:not(:disabled)::after:active {
2010
+ background-color: var(--charcoal-color-icon-on-primary-press);
1992
2011
  }
1993
2012
 
1994
- /* ── Navigation Buttons (charcoal IconButton, variant=Overlay size=S) ── */
1995
-
1996
- /* マスクの透過域と同じ 72px 1fr 72px グリッド。各ボタンは 72px ゾーンの中央に置く。 */
1997
- .charcoal-carousel__navigation {
1998
- position: absolute;
1999
- inset: 0;
2000
- pointer-events: none;
2001
- display: grid;
2002
- grid-template-columns: 72px 1fr 72px;
2003
- align-items: center;
2004
- /* アイテム内のコンテンツより上にボタンを表示する */
2005
- z-index: 1;
2006
- /* sandbox 同様、通常は隠してカルーセル hover 時にフェードイン表示する。 */
2007
- opacity: 0;
2008
- transition: 0.4s opacity;
2013
+ .charcoal-switch-input:not(:disabled):checked:hover {
2014
+ background-color: var(--charcoal-color-container-primary-hover);
2009
2015
  }
2010
- .charcoal-carousel__navigation[data-visible='false'] {
2011
- display: none;
2012
- }
2013
2016
 
2014
- /* hover で表示。キーボード操作でも到達できるよう、キーボード由来のフォーカスが
2015
- カルーセル内にある間も表示する(:focus-within だとクリックで残ったフォーカスでも
2016
- 表示され続けるため、react-aria が付与する data 属性で判定する)。 */
2017
- .charcoal-carousel:hover .charcoal-carousel__navigation,
2018
- .charcoal-carousel[data-focus-visible-within] .charcoal-carousel__navigation {
2019
- opacity: 1;
2017
+ .charcoal-switch-input:not(:disabled):checked:active {
2018
+ background-color: var(--charcoal-color-container-primary-press);
2019
+ }
2020
+ .charcoal-menu-list {
2021
+ padding: 0;
2022
+ margin: 0;
2023
+ }
2024
+ .charcoal-field-label {
2025
+ font-size: 14px;
2026
+ line-height: 22px;
2027
+ font-weight: bold;
2028
+ display: flow-root;
2029
+ color: var(--charcoal-color-text-default-text1);
2020
2030
  }
2021
2031
 
2022
- .charcoal-carousel__navigation__item {
2023
- pointer-events: auto;
2032
+ .charcoal-field-label-required-text {
2033
+ font-size: 14px;
2034
+ line-height: 22px;
2035
+ display: flow-root;
2036
+ color: var(--charcoal-color-text-secondary-default);
2024
2037
  }
2025
2038
 
2026
- /* ヒットエリアをグリッド端列(= mask のフェード帯と同じ 72px)全体へ広げる。
2027
- 擬似要素上のクリックは元の button に届くため、帯のどこを押してもページ送りになる。
2028
- position: absolute の基準は positioned な .charcoal-carousel__navigation(inset: 0)。 */
2039
+ .charcoal-field-label-sub-label {
2040
+ font-size: 14px;
2041
+ line-height: 22px;
2042
+ display: flow-root;
2043
+ color: var(--charcoal-color-text-tertiary-default);
2044
+ transition:
2045
+ 0.2s color,
2046
+ 0.2s box-shadow;
2047
+ }
2029
2048
 
2030
- .charcoal-carousel__navigation__item::after {
2031
- content: '';
2032
- position: absolute;
2033
- top: 0;
2034
- bottom: 0;
2035
- width: 72px;
2036
- }
2049
+ .charcoal-field-label-root {
2050
+ display: inline-flex;
2051
+ align-items: center;
2052
+ }
2037
2053
 
2038
- .charcoal-carousel__navigation__item[data-direction='prev'] {
2039
- grid-column: 1;
2040
- justify-self: center;
2054
+ .charcoal-field-label-root > .charcoal-field-label-required-text {
2055
+ margin-left: 4px;
2041
2056
  }
2042
2057
 
2043
- .charcoal-carousel__navigation__item[data-direction='prev']::after {
2044
- left: 0;
2045
- }
2046
-
2047
- .charcoal-carousel__navigation__item[data-direction='next'] {
2048
- grid-column: 3;
2049
- justify-self: center;
2058
+ .charcoal-field-label-root > .charcoal-field-label-sub-label {
2059
+ margin-left: auto;
2050
2060
  }
2061
+ .charcoal-list-item {
2062
+ list-style: none;
2063
+ display: flex;
2064
+ align-items: center;
2065
+ min-height: 40px;
2066
+ cursor: pointer;
2067
+ outline: none;
2051
2068
 
2052
- .charcoal-carousel__navigation__item[data-direction='next']::after {
2053
- right: 0;
2054
- }
2069
+ padding-right: 16px;
2070
+ padding-left: 16px;
2055
2071
 
2056
- /* スクロール端では非表示。IconButton の disabled スタイル(opacity:0.32)より
2057
- 高い詳細度で打ち消すため、ルートを前置する。 */
2058
- .charcoal-carousel .charcoal-carousel__navigation__item[data-hidden='true'] {
2059
- opacity: 0;
2060
- pointer-events: none;
2072
+ transition: background-color 0.2s;
2061
2073
  }
2062
2074
 
2063
- /* タッチデバイスではナビゲーションボタンを出さず、スワイプ操作に委ねる。 */
2064
- @media (hover: none) and (pointer: coarse) {
2065
- .charcoal-carousel__navigation {
2066
- display: none;
2067
- }
2075
+ .charcoal-list-item:not([aria-disabled='true']):hover,
2076
+ .charcoal-list-item:not([aria-disabled='true']):focus,
2077
+ .charcoal-list-item:not([aria-disabled='true']):focus-within {
2078
+ background-color: var(--charcoal-color-container-secondary-default);
2068
2079
  }
2069
2080
 
2070
- /* ── Indicator: JS Fallback ── */
2071
-
2072
- .charcoal-carousel__indicator {
2073
- display: flex;
2074
- justify-content: center;
2075
- align-items: center;
2076
- height: 40px;
2077
- gap: 8px;
2081
+ .charcoal-list-item[aria-disabled='true'] {
2082
+ opacity: 0.32;
2083
+ cursor: default;
2078
2084
  }
2079
-
2080
- .charcoal-carousel__indicator[data-visible='false'] {
2081
- display: none;
2082
- }
2083
-
2084
- .charcoal-carousel__indicator__item {
2085
+ .charcoal-checkbox-input {
2085
2086
  -webkit-appearance: none;
2086
2087
  -moz-appearance: none;
2087
2088
  appearance: none;
2088
- box-sizing: border-box;
2089
- width: 8px;
2090
- height: 8px;
2091
- padding: 0;
2092
- border: 0;
2093
- border-radius: 50%;
2094
- background-color: var(--charcoal-color-text-tertiary-default);
2089
+ display: flex;
2095
2090
  cursor: pointer;
2096
- transition: 0.2s background-color;
2091
+ margin: 0;
2092
+ width: 20px;
2093
+ height: 20px;
2094
+ border-radius: 4px;
2095
+ transition:
2096
+ 0.2s box-shadow,
2097
+ 0.2s background-color;
2098
+ position: relative;
2099
+ box-sizing: border-box;
2097
2100
  }
2098
2101
 
2099
- .charcoal-carousel__indicator__item:hover {
2100
- background-color: var(--charcoal-color-text-secondary-default);
2101
- }
2102
-
2103
- .charcoal-carousel__indicator__item:focus-visible {
2104
- outline: 2px solid rgba(0, 150, 250, 0.56);
2105
- outline-offset: 2px;
2106
- }
2102
+ .charcoal-checkbox-input:disabled,
2103
+ .charcoal-checkbox-input[readonly] {
2104
+ opacity: 0.32;
2105
+ cursor: default;
2106
+ }
2107
2107
 
2108
- .charcoal-carousel__indicator__item[data-active='true'] {
2109
- background-color: var(--charcoal-color-text-default);
2110
- }
2108
+ .charcoal-checkbox-input:checked {
2109
+ background-color: var(--charcoal-color-container-primary-default);
2110
+ }
2111
2111
 
2112
- /* ── CSS Scroll Markers (progressive enhancement) ── */
2112
+ .charcoal-checkbox-input:checked::after {
2113
+ content: '';
2114
+ background-color: white;
2115
+ display: flex;
2116
+ margin: auto;
2117
+ width: 16px;
2118
+ height: 16px;
2119
+ clip-path: path(
2120
+ 'M10.6 5a1.3 1.3 0 0 1 1.8 1.9l-5.7 5.6-3-2.9a1.3 1.3 0 1 1 2-1.9l1 1z'
2121
+ );
2122
+ }
2113
2123
 
2114
- /* CSS Scroll Markers / Anchor Positioning は新しい仕様で、stylelint がプロパティ・
2115
- 擬似要素・擬似クラスを未知と判定するため、この @supports ブロックでは該当ルールを無効化する。 */
2116
- /* stylelint-disable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
2117
- @supports (scroll-marker-group: after) {
2118
- .charcoal-carousel[data-indicator='true'] {
2119
- padding-bottom: 40px;
2120
- }
2124
+ .charcoal-checkbox-input:not(:checked) {
2125
+ border-width: 2px;
2126
+ border-style: solid;
2127
+ border-color: var(--charcoal-color-border-default);
2128
+ }
2121
2129
 
2122
- .charcoal-carousel__scroller {
2123
- anchor-name: --charcoal-carousel;
2124
- scroll-marker-group: after;
2125
- }
2130
+ .charcoal-checkbox-input:not(:disabled):focus {
2131
+ outline: none;
2132
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2133
+ }
2134
+ .charcoal-checkbox-input:not(:disabled):focus-visible {
2135
+ box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2136
+ }
2137
+ .charcoal-checkbox-input:not(:disabled):focus:not(:focus-visible) {
2138
+ box-shadow: none;
2139
+ }
2126
2140
 
2127
- .charcoal-carousel__scroller::scroll-button(*) {
2128
- content: none;
2129
- }
2141
+ .charcoal-checkbox-input:checked:not(:disabled):hover {
2142
+ background-color: var(--charcoal-color-container-primary-hover);
2143
+ }
2144
+ .charcoal-checkbox-input:checked:not(:disabled):active {
2145
+ background-color: var(--charcoal-color-container-primary-press);
2146
+ }
2130
2147
 
2131
- .charcoal-carousel__scroller::scroll-marker-group {
2132
- display: flex;
2133
- justify-content: center;
2134
- align-items: center;
2135
- height: 40px;
2136
- gap: 8px;
2148
+ .charcoal-checkbox-input[aria-invalid='true'],
2149
+ .charcoal-checkbox-input[aria-invalid='true']:not(:disabled):focus {
2150
+ box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
2151
+ }
2137
2152
 
2138
- position: absolute;
2139
- position-anchor: --charcoal-carousel;
2140
- top: anchor(bottom);
2141
- justify-self: anchor-center;
2142
- }
2153
+ .charcoal-checkbox-input[data-rounded='true'] {
2154
+ border-radius: 10px;
2155
+ background-color: var(--charcoal-color-container-secondary-default);
2156
+ border: 2px solid transparent;
2157
+ }
2143
2158
 
2144
- .charcoal-carousel[data-indicator='false'] .charcoal-carousel__scroller {
2145
- scroll-marker-group: none;
2146
- }
2159
+ .charcoal-checkbox-input[data-rounded='true']:checked {
2160
+ background-color: var(--charcoal-color-container-primary-default);
2161
+ }
2147
2162
 
2148
- .charcoal-carousel__item::scroll-marker {
2149
- content: '';
2150
- width: 8px;
2151
- height: 8px;
2152
- border: 0;
2153
- border-radius: 50%;
2154
- background-color: var(--charcoal-color-text-tertiary-default);
2155
- cursor: pointer;
2156
- transition: 0.2s background-color;
2157
- }
2163
+ .charcoal-checkbox-input[data-rounded='true']:not(:disabled):hover {
2164
+ background-color: var(--charcoal-color-container-secondary-hover);
2165
+ }
2166
+ .charcoal-checkbox-input[data-rounded='true']:not(:disabled):active {
2167
+ background-color: var(--charcoal-color-container-secondary-press);
2168
+ }
2158
2169
 
2159
- .charcoal-carousel__item::scroll-marker:hover {
2160
- background-color: var(--charcoal-color-text-secondary-default);
2161
- }
2170
+ .charcoal-checkbox-input[data-rounded='true']:not(:disabled):focus-visible {
2171
+ box-shadow: 0 0 0 6px rgba(0, 150, 250, 0.32);
2172
+ }
2162
2173
 
2163
- .charcoal-carousel__item::scroll-marker:focus {
2164
- outline: 2px solid rgba(0, 150, 250, 0.56);
2165
- outline-offset: 2px;
2166
- }
2174
+ .charcoal-checkbox-input[data-rounded='true']:checked:not(:disabled):hover {
2175
+ background-color: var(--charcoal-color-container-primary-hover);
2176
+ }
2177
+ .charcoal-checkbox-input[data-rounded='true']:checked:not(:disabled):active {
2178
+ background-color: var(--charcoal-color-container-primary-press);
2179
+ }
2167
2180
 
2168
- .charcoal-carousel__item::scroll-marker:target-current {
2169
- background-color: var(--charcoal-color-text-default);
2170
- }
2181
+ .charcoal-checkbox-input[data-rounded='true'][aria-invalid='true'],
2182
+ .charcoal-checkbox-input[data-rounded='true'][aria-invalid='true']:not(
2183
+ :disabled
2184
+ ):focus {
2185
+ box-shadow: 0 0 0 6px rgba(255, 43, 0, 0.32);
2186
+ }
2171
2187
 
2172
- .charcoal-carousel__indicator {
2173
- display: none;
2174
- }
2188
+ .charcoal-checkbox-input[data-rounded='true']::before {
2189
+ content: '';
2190
+ width: 24px;
2191
+ height: 24px;
2192
+ position: absolute;
2193
+ top: -4px;
2194
+ left: -4px;
2195
+ border-radius: 12px;
2196
+ border: 2px solid #fff;
2197
+ box-sizing: border-box;
2198
+ }
2199
+ .charcoal-popover {
2200
+ margin: 4px 0;
2201
+ list-style: none;
2202
+ overflow: auto;
2203
+ max-height: inherit;
2204
+ background-color: var(--charcoal-color-background-default);
2205
+ border: solid 1px var(--charcoal-color-border-secondary);
2206
+ border-radius: 8px;
2207
+ padding-top: 8px;
2208
+ padding-bottom: 8px;
2175
2209
  }
2176
- /* stylelint-enable property-no-unknown, selector-pseudo-element-no-unknown, selector-pseudo-class-no-unknown */
2177
- .charcoal-focus-ring:is(
2178
- :not(:disabled):not([aria-disabled]),
2179
- [aria-disabled='false']
2180
- ):focus-visible {
2181
- outline: none;
2182
- box-shadow: 0 0 0 4px rgba(0, 150, 250, 0.32);
2183
- transition: 0.2s box-shadow;
2184
- }
2185
2210
  }
2186
2211
 
2187
2212
  /*# sourceMappingURL=layered.css.map */