@charcoal-ui/react 4.0.0-beta.1 → 4.0.0-beta.12

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 (266) hide show
  1. package/README.md +1 -1
  2. package/dist/_lib/compat.d.ts +0 -12
  3. package/dist/_lib/compat.d.ts.map +1 -1
  4. package/dist/_lib/createDivComponent.d.ts +4 -0
  5. package/dist/_lib/createDivComponent.d.ts.map +1 -0
  6. package/dist/_lib/useClassNames.d.ts +2 -2
  7. package/dist/_lib/useClassNames.d.ts.map +1 -1
  8. package/dist/components/Button/index.d.ts +5 -1
  9. package/dist/components/Button/index.d.ts.map +1 -1
  10. package/dist/components/Checkbox/CheckboxInput/index.d.ts +11 -0
  11. package/dist/components/Checkbox/CheckboxInput/index.d.ts.map +1 -0
  12. package/dist/components/Checkbox/CheckboxWithLabel.d.ts +9 -0
  13. package/dist/components/Checkbox/CheckboxWithLabel.d.ts.map +1 -0
  14. package/dist/components/Checkbox/index.d.ts +12 -21
  15. package/dist/components/Checkbox/index.d.ts.map +1 -1
  16. package/dist/components/Clickable/index.d.ts +9 -15
  17. package/dist/components/Clickable/index.d.ts.map +1 -1
  18. package/dist/components/DropdownSelector/Divider/index.d.ts +3 -0
  19. package/dist/components/DropdownSelector/Divider/index.d.ts.map +1 -0
  20. package/dist/components/DropdownSelector/DropdownMenuItem/index.d.ts +8 -0
  21. package/dist/components/DropdownSelector/DropdownMenuItem/index.d.ts.map +1 -0
  22. package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
  23. package/dist/components/DropdownSelector/ListItem/index.d.ts +5 -13
  24. package/dist/components/DropdownSelector/ListItem/index.d.ts.map +1 -1
  25. package/dist/components/DropdownSelector/MenuItem/index.d.ts +10 -3
  26. package/dist/components/DropdownSelector/MenuItem/index.d.ts.map +1 -1
  27. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts +1 -1
  28. package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts.map +1 -1
  29. package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts +1 -3
  30. package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts.map +1 -1
  31. package/dist/components/DropdownSelector/MenuList/index.d.ts +1 -4
  32. package/dist/components/DropdownSelector/MenuList/index.d.ts.map +1 -1
  33. package/dist/components/DropdownSelector/Popover/index.d.ts +2 -2
  34. package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -1
  35. package/dist/components/DropdownSelector/index.d.ts +3 -1
  36. package/dist/components/DropdownSelector/index.d.ts.map +1 -1
  37. package/dist/components/FieldLabel/index.d.ts +1 -0
  38. package/dist/components/FieldLabel/index.d.ts.map +1 -1
  39. package/dist/components/IconButton/index.d.ts +6 -5
  40. package/dist/components/IconButton/index.d.ts.map +1 -1
  41. package/dist/components/LoadingSpinner/index.d.ts +1 -0
  42. package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
  43. package/dist/components/Modal/Dialog/index.d.ts +6 -24
  44. package/dist/components/Modal/Dialog/index.d.ts.map +1 -1
  45. package/dist/components/Modal/ModalPlumbing.d.ts +10 -3
  46. package/dist/components/Modal/ModalPlumbing.d.ts.map +1 -1
  47. package/dist/components/Modal/index.d.ts +6 -2
  48. package/dist/components/Modal/index.d.ts.map +1 -1
  49. package/dist/components/Modal/useCustomModalOverlay.d.ts +1 -0
  50. package/dist/components/Modal/useCustomModalOverlay.d.ts.map +1 -1
  51. package/dist/components/Radio/RadioGroup/index.d.ts +20 -0
  52. package/dist/components/Radio/RadioGroup/index.d.ts.map +1 -0
  53. package/dist/components/Radio/RadioGroupContext.d.ts +11 -0
  54. package/dist/components/Radio/RadioGroupContext.d.ts.map +1 -0
  55. package/dist/components/Radio/RadioInput/index.d.ts +10 -0
  56. package/dist/components/Radio/RadioInput/index.d.ts.map +1 -0
  57. package/dist/components/Radio/index.d.ts +1 -14
  58. package/dist/components/Radio/index.d.ts.map +1 -1
  59. package/dist/components/SegmentedControl/index.d.ts +1 -0
  60. package/dist/components/SegmentedControl/index.d.ts.map +1 -1
  61. package/dist/components/Switch/SwitchInput/index.d.ts +9 -0
  62. package/dist/components/Switch/SwitchInput/index.d.ts.map +1 -0
  63. package/dist/components/Switch/SwitchWithLabel.d.ts +9 -0
  64. package/dist/components/Switch/SwitchWithLabel.d.ts.map +1 -0
  65. package/dist/components/Switch/index.d.ts +4 -15
  66. package/dist/components/Switch/index.d.ts.map +1 -1
  67. package/dist/components/TagItem/index.d.ts +10 -15
  68. package/dist/components/TagItem/index.d.ts.map +1 -1
  69. package/dist/components/TextArea/index.d.ts +29 -18
  70. package/dist/components/TextArea/index.d.ts.map +1 -1
  71. package/dist/components/TextField/AssistiveText/index.d.ts +5 -0
  72. package/dist/components/TextField/AssistiveText/index.d.ts.map +1 -0
  73. package/dist/components/TextField/index.d.ts +33 -22
  74. package/dist/components/TextField/index.d.ts.map +1 -1
  75. package/dist/core/CharcoalProvider.d.ts +4 -11
  76. package/dist/core/CharcoalProvider.d.ts.map +1 -1
  77. package/dist/core/SSRProvider.d.ts +3 -1
  78. package/dist/core/SSRProvider.d.ts.map +1 -1
  79. package/dist/index.cjs.js +575 -1255
  80. package/dist/index.cjs.js.map +1 -1
  81. package/dist/index.css +1097 -3
  82. package/dist/index.css.map +1 -1
  83. package/dist/index.d.ts +4 -5
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.esm.js +554 -1231
  86. package/dist/index.esm.js.map +1 -1
  87. package/package.json +22 -24
  88. package/src/README.mdx +68 -0
  89. package/src/SSR.mdx +67 -0
  90. package/src/_lib/compat.ts +0 -11
  91. package/src/_lib/createDivComponent.tsx +11 -0
  92. package/src/_lib/index.ts +1 -1
  93. package/src/_lib/useClassNames.ts +3 -9
  94. package/src/components/Button/__snapshots__/index.story.storyshot +18 -56
  95. package/src/components/Button/index.css +2 -3
  96. package/src/components/Button/index.story.tsx +14 -67
  97. package/src/components/Button/index.tsx +7 -3
  98. package/src/components/Checkbox/CheckboxInput/__snapshots__/index.story.storyshot +77 -0
  99. package/src/components/Checkbox/CheckboxInput/index.css +110 -0
  100. package/src/components/Checkbox/CheckboxInput/index.story.tsx +51 -0
  101. package/src/components/Checkbox/CheckboxInput/index.tsx +47 -0
  102. package/src/components/Checkbox/CheckboxWithLabel.tsx +24 -0
  103. package/src/components/Checkbox/__snapshots__/index.story.storyshot +103 -538
  104. package/src/components/Checkbox/index.css +21 -0
  105. package/src/components/Checkbox/index.story.tsx +49 -79
  106. package/src/components/Checkbox/index.tsx +32 -162
  107. package/src/components/Clickable/__snapshots__/index.story.storyshot +4 -80
  108. package/src/components/Clickable/index.css +41 -0
  109. package/src/components/Clickable/index.story.tsx +2 -2
  110. package/src/components/Clickable/index.tsx +19 -84
  111. package/src/components/DropdownSelector/Divider/index.css +11 -0
  112. package/src/components/DropdownSelector/Divider/index.tsx +5 -0
  113. package/src/components/DropdownSelector/DropdownMenuItem/index.css +20 -0
  114. package/src/components/DropdownSelector/DropdownMenuItem/index.tsx +34 -0
  115. package/src/components/DropdownSelector/DropdownPopover.tsx +16 -9
  116. package/src/components/DropdownSelector/ListItem/__snapshots__/index.story.storyshot +41 -224
  117. package/src/components/DropdownSelector/ListItem/index.css +24 -0
  118. package/src/components/DropdownSelector/ListItem/index.story.tsx +12 -6
  119. package/src/components/DropdownSelector/ListItem/index.tsx +14 -53
  120. package/src/components/DropdownSelector/MenuItem/index.tsx +17 -12
  121. package/src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx +2 -2
  122. package/src/components/DropdownSelector/MenuItemGroup/index.css +19 -0
  123. package/src/components/DropdownSelector/MenuItemGroup/index.tsx +6 -28
  124. package/src/components/DropdownSelector/MenuList/__snapshots__/index.story.storyshot +162 -416
  125. package/src/components/DropdownSelector/MenuList/index.css +4 -0
  126. package/src/components/DropdownSelector/MenuList/index.story.tsx +1 -1
  127. package/src/components/DropdownSelector/MenuList/index.tsx +4 -12
  128. package/src/components/DropdownSelector/Popover/__snapshots__/index.story.storyshot +1 -1
  129. package/src/components/DropdownSelector/Popover/index.css +11 -0
  130. package/src/components/DropdownSelector/Popover/index.story.tsx +1 -1
  131. package/src/components/DropdownSelector/Popover/index.tsx +7 -17
  132. package/src/components/DropdownSelector/__snapshots__/index.story.storyshot +432 -2458
  133. package/src/components/DropdownSelector/index.css +84 -0
  134. package/src/components/DropdownSelector/index.story.tsx +2 -6
  135. package/src/components/DropdownSelector/index.tsx +61 -137
  136. package/src/components/FieldLabel/index.css +35 -0
  137. package/src/components/FieldLabel/index.tsx +15 -105
  138. package/src/components/Icon/__snapshots__/index.story.storyshot +1 -1
  139. package/src/components/Icon/index.story.tsx +1 -1
  140. package/src/components/IconButton/__snapshots__/index.story.storyshot +19 -297
  141. package/src/components/IconButton/index.css +118 -0
  142. package/src/components/IconButton/index.story.tsx +17 -40
  143. package/src/components/IconButton/index.tsx +38 -118
  144. package/src/components/LoadingSpinner/__snapshots__/LoadingSpinnerIcon.story.storyshot +2 -17
  145. package/src/components/LoadingSpinner/__snapshots__/index.story.storyshot +80 -30
  146. package/src/components/LoadingSpinner/index.css +42 -0
  147. package/src/components/LoadingSpinner/index.story.tsx +19 -8
  148. package/src/components/LoadingSpinner/index.tsx +26 -52
  149. package/src/components/Modal/Dialog/index.css +44 -0
  150. package/src/components/Modal/Dialog/index.tsx +14 -57
  151. package/src/components/Modal/ModalPlumbing.css +40 -0
  152. package/src/components/Modal/ModalPlumbing.tsx +13 -61
  153. package/src/components/Modal/__snapshots__/index.story.storyshot +289 -2212
  154. package/src/components/Modal/index.css +36 -0
  155. package/src/components/Modal/index.story.tsx +28 -13
  156. package/src/components/Modal/index.tsx +42 -78
  157. package/src/components/Modal/useCustomModalOverlay.tsx +19 -4
  158. package/src/components/Radio/RadioGroup/index.css +5 -0
  159. package/src/components/Radio/RadioGroup/index.tsx +80 -0
  160. package/src/components/Radio/RadioGroupContext.ts +23 -0
  161. package/src/components/Radio/RadioInput/index.css +82 -0
  162. package/src/components/Radio/RadioInput/index.tsx +41 -0
  163. package/src/components/Radio/__snapshots__/index.story.storyshot +111 -855
  164. package/src/components/Radio/index.css +18 -0
  165. package/src/components/Radio/index.story.tsx +47 -40
  166. package/src/components/Radio/index.test.tsx +22 -29
  167. package/src/components/Radio/index.tsx +16 -208
  168. package/src/components/SegmentedControl/__snapshots__/index.story.storyshot +32 -262
  169. package/src/components/SegmentedControl/index.css +50 -0
  170. package/src/components/SegmentedControl/index.story.tsx +1 -1
  171. package/src/components/SegmentedControl/index.tsx +20 -89
  172. package/src/components/Switch/SwitchInput/index.css +82 -0
  173. package/src/components/Switch/SwitchInput/index.tsx +40 -0
  174. package/src/components/Switch/SwitchWithLabel.tsx +24 -0
  175. package/src/components/Switch/__snapshots__/index.story.storyshot +35 -539
  176. package/src/components/Switch/index.css +23 -0
  177. package/src/components/Switch/index.story.tsx +16 -19
  178. package/src/components/Switch/index.tsx +43 -140
  179. package/src/components/TagItem/__snapshots__/index.story.storyshot +212 -1063
  180. package/src/components/TagItem/index.css +140 -0
  181. package/src/components/TagItem/index.story.tsx +45 -162
  182. package/src/components/TagItem/index.tsx +72 -220
  183. package/src/components/TextArea/TextArea.story.tsx +63 -25
  184. package/src/components/TextArea/__snapshots__/TextArea.story.storyshot +615 -1055
  185. package/src/components/TextArea/index.css +78 -0
  186. package/src/components/TextArea/index.tsx +83 -174
  187. package/src/components/TextField/AssistiveText/index.css +10 -0
  188. package/src/components/TextField/AssistiveText/index.tsx +6 -0
  189. package/src/components/TextField/TextField.story.tsx +85 -76
  190. package/src/components/TextField/__snapshots__/TextField.story.storyshot +631 -1709
  191. package/src/components/TextField/index.css +87 -0
  192. package/src/components/TextField/index.tsx +92 -211
  193. package/src/core/CharcoalProvider.tsx +5 -29
  194. package/src/core/SSRProvider.tsx +12 -1
  195. package/src/index.ts +7 -19
  196. package/src/type.d.ts +3 -8
  197. package/dist/components/Button/index.story.d.ts +0 -24
  198. package/dist/components/Button/index.story.d.ts.map +0 -1
  199. package/dist/components/Checkbox/index.story.d.ts +0 -8
  200. package/dist/components/Checkbox/index.story.d.ts.map +0 -1
  201. package/dist/components/Clickable/index.story.d.ts +0 -6
  202. package/dist/components/Clickable/index.story.d.ts.map +0 -1
  203. package/dist/components/DropdownSelector/Divider.d.ts +0 -7
  204. package/dist/components/DropdownSelector/Divider.d.ts.map +0 -1
  205. package/dist/components/DropdownSelector/DropdownMenuItem.d.ts +0 -7
  206. package/dist/components/DropdownSelector/DropdownMenuItem.d.ts.map +0 -1
  207. package/dist/components/DropdownSelector/ListItem/index.story.d.ts +0 -9
  208. package/dist/components/DropdownSelector/ListItem/index.story.d.ts.map +0 -1
  209. package/dist/components/DropdownSelector/MenuList/index.story.d.ts +0 -8
  210. package/dist/components/DropdownSelector/MenuList/index.story.d.ts.map +0 -1
  211. package/dist/components/DropdownSelector/Popover/index.story.d.ts +0 -5
  212. package/dist/components/DropdownSelector/Popover/index.story.d.ts.map +0 -1
  213. package/dist/components/DropdownSelector/index.story.d.ts +0 -19
  214. package/dist/components/DropdownSelector/index.story.d.ts.map +0 -1
  215. package/dist/components/Icon/index.story.d.ts +0 -6
  216. package/dist/components/Icon/index.story.d.ts.map +0 -1
  217. package/dist/components/IconButton/index.story.d.ts +0 -9
  218. package/dist/components/IconButton/index.story.d.ts.map +0 -1
  219. package/dist/components/LoadingSpinner/LoadingSpinnerIcon.story.d.ts +0 -8
  220. package/dist/components/LoadingSpinner/LoadingSpinnerIcon.story.d.ts.map +0 -1
  221. package/dist/components/LoadingSpinner/index.story.d.ts +0 -6
  222. package/dist/components/LoadingSpinner/index.story.d.ts.map +0 -1
  223. package/dist/components/Modal/__stories__/InternalScrollStory.d.ts +0 -4
  224. package/dist/components/Modal/__stories__/InternalScrollStory.d.ts.map +0 -1
  225. package/dist/components/Modal/index.story.d.ts +0 -21
  226. package/dist/components/Modal/index.story.d.ts.map +0 -1
  227. package/dist/components/MultiSelect/context.d.ts +0 -14
  228. package/dist/components/MultiSelect/context.d.ts.map +0 -1
  229. package/dist/components/MultiSelect/index.d.ts +0 -36
  230. package/dist/components/MultiSelect/index.d.ts.map +0 -1
  231. package/dist/components/MultiSelect/index.story.d.ts +0 -82
  232. package/dist/components/MultiSelect/index.story.d.ts.map +0 -1
  233. package/dist/components/MultiSelect/index.test.d.ts +0 -2
  234. package/dist/components/MultiSelect/index.test.d.ts.map +0 -1
  235. package/dist/components/Radio/index.story.d.ts +0 -26
  236. package/dist/components/Radio/index.story.d.ts.map +0 -1
  237. package/dist/components/Radio/index.test.d.ts +0 -2
  238. package/dist/components/Radio/index.test.d.ts.map +0 -1
  239. package/dist/components/SegmentedControl/index.story.d.ts +0 -7
  240. package/dist/components/SegmentedControl/index.story.d.ts.map +0 -1
  241. package/dist/components/Switch/index.story.d.ts +0 -9
  242. package/dist/components/Switch/index.story.d.ts.map +0 -1
  243. package/dist/components/TagItem/index.story.d.ts +0 -16
  244. package/dist/components/TagItem/index.story.d.ts.map +0 -1
  245. package/dist/components/TextArea/TextArea.story.d.ts +0 -9
  246. package/dist/components/TextArea/TextArea.story.d.ts.map +0 -1
  247. package/dist/components/TextField/TextField.story.d.ts +0 -22
  248. package/dist/components/TextField/TextField.story.d.ts.map +0 -1
  249. package/dist/components/a11y.test.d.ts +0 -2
  250. package/dist/components/a11y.test.d.ts.map +0 -1
  251. package/dist/core/ComponentAbstraction.d.ts +0 -24
  252. package/dist/core/ComponentAbstraction.d.ts.map +0 -1
  253. package/dist/styled.d.ts +0 -95
  254. package/dist/styled.d.ts.map +0 -1
  255. package/src/components/DropdownSelector/Divider.tsx +0 -16
  256. package/src/components/DropdownSelector/DropdownMenuItem.tsx +0 -43
  257. package/src/components/LoadingSpinner/LoadingSpinnerIcon.story.tsx +0 -13
  258. package/src/components/Modal/__stories__/InternalScrollStory.tsx +0 -75
  259. package/src/components/MultiSelect/__snapshots__/index.story.storyshot +0 -1066
  260. package/src/components/MultiSelect/context.ts +0 -23
  261. package/src/components/MultiSelect/index.story.tsx +0 -216
  262. package/src/components/MultiSelect/index.test.tsx +0 -263
  263. package/src/components/MultiSelect/index.tsx +0 -281
  264. package/src/components/a11y.test.tsx +0 -99
  265. package/src/core/ComponentAbstraction.tsx +0 -48
  266. package/src/styled.ts +0 -3
@@ -1,27 +1,12 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
3
  exports[`Storybook Tests LoadingSpinnerIcon Icon 1`] = `
4
- .c0 {
5
- width: 1em;
6
- height: 1em;
7
- border-radius: 1em;
8
- background-color: currentColor;
9
- -webkit-animation: cNZOgq 1s both ease-out;
10
- animation: cNZOgq 1s both ease-out;
11
- -webkit-animation-iteration-count: infinite;
12
- animation-iteration-count: infinite;
13
- }
14
-
15
- .c0[data-reset-animation] {
16
- -webkit-animation: none;
17
- animation: none;
18
- }
19
-
20
4
  <div
21
5
  data-dark={false}
22
6
  >
23
7
  <div
24
- className="c0"
8
+ className="charcoal-loading-spinner-icon"
9
+ data-once={false}
25
10
  role="presentation"
26
11
  />
27
12
  </div>
@@ -1,45 +1,95 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`Storybook Tests LoadingSpinner Default 1`] = `
4
- .c0 {
5
- box-sizing: content-box;
6
- margin: auto;
7
- padding: 16px;
8
- border-radius: 8px;
9
- font-size: 48px;
10
- width: 48px;
11
- height: 48px;
12
- opacity: 0.84;
13
- color: var(--charcoal-text4);
14
- background-color: var(--charcoal-background1);
15
- }
3
+ exports[`Storybook Tests > react/LoadingSpinner > Default 1`] = `
4
+ <div
5
+ data-dark={false}
6
+ >
7
+ <div
8
+ className="charcoal-loading-spinner"
9
+ data-transparent={false}
10
+ role="progressbar"
11
+ style={
12
+ Object {
13
+ "--charcoal-loading-spinner-padding": "16px",
14
+ "--charcoal-loading-spinner-size": "48px",
15
+ }
16
+ }
17
+ >
18
+ <div
19
+ className="charcoal-loading-spinner-icon"
20
+ data-once={false}
21
+ role="presentation"
22
+ />
23
+ </div>
24
+ </div>
25
+ `;
16
26
 
17
- .c1 {
18
- width: 1em;
19
- height: 1em;
20
- border-radius: 1em;
21
- background-color: currentColor;
22
- -webkit-animation: cNZOgq 1s both ease-out;
23
- animation: cNZOgq 1s both ease-out;
24
- -webkit-animation-iteration-count: infinite;
25
- animation-iteration-count: infinite;
26
- }
27
+ exports[`Storybook Tests > react/LoadingSpinner > Padding 1`] = `
28
+ <div
29
+ data-dark={false}
30
+ >
31
+ <div
32
+ className="charcoal-loading-spinner"
33
+ data-transparent={false}
34
+ role="progressbar"
35
+ style={
36
+ Object {
37
+ "--charcoal-loading-spinner-padding": "24px",
38
+ "--charcoal-loading-spinner-size": "48px",
39
+ }
40
+ }
41
+ >
42
+ <div
43
+ className="charcoal-loading-spinner-icon"
44
+ data-once={false}
45
+ role="presentation"
46
+ />
47
+ </div>
48
+ </div>
49
+ `;
27
50
 
28
- .c1[data-reset-animation] {
29
- -webkit-animation: none;
30
- animation: none;
31
- }
51
+ exports[`Storybook Tests > react/LoadingSpinner > Size 1`] = `
52
+ <div
53
+ data-dark={false}
54
+ >
55
+ <div
56
+ className="charcoal-loading-spinner"
57
+ data-transparent={false}
58
+ role="progressbar"
59
+ style={
60
+ Object {
61
+ "--charcoal-loading-spinner-padding": "16px",
62
+ "--charcoal-loading-spinner-size": "128px",
63
+ }
64
+ }
65
+ >
66
+ <div
67
+ className="charcoal-loading-spinner-icon"
68
+ data-once={false}
69
+ role="presentation"
70
+ />
71
+ </div>
72
+ </div>
73
+ `;
32
74
 
75
+ exports[`Storybook Tests > react/LoadingSpinner > Transparent 1`] = `
33
76
  <div
34
77
  data-dark={false}
35
78
  >
36
79
  <div
37
- className="c0 basic"
80
+ className="charcoal-loading-spinner"
81
+ data-transparent={true}
38
82
  role="progressbar"
39
- size={48}
83
+ style={
84
+ Object {
85
+ "--charcoal-loading-spinner-padding": "16px",
86
+ "--charcoal-loading-spinner-size": "48px",
87
+ }
88
+ }
40
89
  >
41
90
  <div
42
- className="c1"
91
+ className="charcoal-loading-spinner-icon"
92
+ data-once={false}
43
93
  role="presentation"
44
94
  />
45
95
  </div>
@@ -0,0 +1,42 @@
1
+ .charcoal-loading-spinner {
2
+ box-sizing: content-box;
3
+ margin: auto;
4
+ padding: var(--charcoal-loading-spinner-padding);
5
+ border-radius: 8px;
6
+ font-size: var(--charcoal-loading-spinner-size);
7
+ width: var(--charcoal-loading-spinner-size);
8
+ height: var(--charcoal-loading-spinner-size);
9
+ opacity: 0.84;
10
+ color: var(--charcoal-text4);
11
+ background-color: var(--charcoal-background1);
12
+ }
13
+ .charcoal-loading-spinner[data-transparent='true'] {
14
+ background-color: var(--charcoal-transparent);
15
+ }
16
+
17
+ @keyframes charcoal-loading-spinner-icon-scale-out {
18
+ from {
19
+ transform: scale(0);
20
+ opacity: 1;
21
+ }
22
+ to {
23
+ transform: scale(1);
24
+ opacity: 0;
25
+ }
26
+ }
27
+
28
+ .charcoal-loading-spinner-icon {
29
+ width: 1em;
30
+ height: 1em;
31
+ border-radius: 1em;
32
+ background-color: currentColor;
33
+ animation: charcoal-loading-spinner-icon-scale-out 1s both ease-out;
34
+ animation-iteration-count: infinite;
35
+ }
36
+
37
+ .charcoal-loading-spinner-icon[data-reset-animation] {
38
+ animation: none;
39
+ }
40
+ .charcoal-loading-spinner-icon[data-once='true'] {
41
+ animation-iteration-count: 1;
42
+ }
@@ -2,15 +2,26 @@ import { Meta, StoryObj } from '@storybook/react'
2
2
  import LoadingSpinner from '.'
3
3
 
4
4
  export default {
5
- title: 'LoadingSpinner',
5
+ title: 'react/LoadingSpinner',
6
6
  component: LoadingSpinner,
7
- args: {
8
- size: 48,
9
- padding: 16,
10
- transparent: false,
11
- className: 'basic',
12
- },
13
7
  tags: ['skip-test'],
8
+ parameters: {
9
+ layout: 'centered',
10
+ },
14
11
  } as Meta<typeof LoadingSpinner>
15
12
 
16
- export const Default: StoryObj<typeof LoadingSpinner> = {}
13
+ export const Default: StoryObj<typeof LoadingSpinner> = {
14
+ render: (props) => <LoadingSpinner {...props} />,
15
+ }
16
+
17
+ export const Transparent: StoryObj<typeof LoadingSpinner> = {
18
+ render: () => <LoadingSpinner transparent />,
19
+ }
20
+
21
+ export const Size: StoryObj<typeof LoadingSpinner> = {
22
+ render: () => <LoadingSpinner size={128} />,
23
+ }
24
+
25
+ export const Padding: StoryObj<typeof LoadingSpinner> = {
26
+ render: () => <LoadingSpinner padding={24} />,
27
+ }
@@ -1,5 +1,7 @@
1
1
  import { forwardRef, useImperativeHandle, useRef, memo } from 'react'
2
- import styled, { keyframes } from 'styled-components'
2
+ import { useClassNames } from '../../_lib/useClassNames'
3
+
4
+ import './index.css'
3
5
 
4
6
  export type LoadingSpinnerProps = {
5
7
  readonly size?: number
@@ -10,68 +12,33 @@ export type LoadingSpinnerProps = {
10
12
 
11
13
  const LoadingSpinner = forwardRef<HTMLDivElement, LoadingSpinnerProps>(
12
14
  function LoadingSpinnerInner(
13
- { size = 48, padding = 16, transparent = false, className },
15
+ { size = 48, padding = 16, transparent = false, ...props },
14
16
  ref
15
17
  ) {
18
+ const classNames = useClassNames(
19
+ 'charcoal-loading-spinner',
20
+ props.className
21
+ )
22
+
16
23
  return (
17
- <LoadingSpinnerRoot
18
- size={size}
19
- padding={padding}
20
- transparent={transparent}
21
- className={className}
24
+ <div
25
+ role="progressbar"
26
+ style={{
27
+ '--charcoal-loading-spinner-size': `${size}px`,
28
+ '--charcoal-loading-spinner-padding': `${padding}px`,
29
+ }}
30
+ data-transparent={transparent}
31
+ className={classNames}
22
32
  ref={ref}
23
33
  >
24
34
  <LoadingSpinnerIcon />
25
- </LoadingSpinnerRoot>
35
+ </div>
26
36
  )
27
37
  }
28
38
  )
29
39
 
30
40
  export default memo(LoadingSpinner)
31
41
 
32
- const LoadingSpinnerRoot = styled.div.attrs({ role: 'progressbar' })<{
33
- size: number
34
- padding: number
35
- transparent: boolean
36
- }>`
37
- box-sizing: content-box;
38
- margin: auto;
39
- padding: ${(props) => props.padding}px;
40
- border-radius: 8px;
41
- font-size: ${(props) => props.size}px;
42
- width: ${(props) => props.size}px;
43
- height: ${(props) => props.size}px;
44
- opacity: 0.84;
45
- color: var(--charcoal-text4);
46
- background-color: ${({ transparent }) =>
47
- `var(--charcoal-${transparent ? 'transparent' : 'background1'})`};
48
- `
49
-
50
- const scaleOut = keyframes`
51
- from {
52
- transform: scale(0);
53
- opacity: 1;
54
- }
55
-
56
- to {
57
- transform: scale(1);
58
- opacity: 0;
59
- }
60
- `
61
-
62
- const Icon = styled.div.attrs({ role: 'presentation' })<{ once: boolean }>`
63
- width: 1em;
64
- height: 1em;
65
- border-radius: 1em;
66
- background-color: currentColor;
67
- animation: ${scaleOut} 1s both ease-out;
68
- animation-iteration-count: ${(p) => (p.once ? 1 : 'infinite')};
69
-
70
- &[data-reset-animation] {
71
- animation: none;
72
- }
73
- `
74
-
75
42
  type Props = {
76
43
  once?: boolean
77
44
  }
@@ -96,6 +63,13 @@ export const LoadingSpinnerIcon = forwardRef<LoadingSpinnerIconHandler, Props>(
96
63
  },
97
64
  }))
98
65
 
99
- return <Icon ref={iconRef} once={once} />
66
+ return (
67
+ <div
68
+ role="presentation"
69
+ ref={iconRef}
70
+ data-once={once}
71
+ className="charcoal-loading-spinner-icon"
72
+ />
73
+ )
100
74
  }
101
75
  )
@@ -0,0 +1,44 @@
1
+ .charcoal-modal-dialog {
2
+ margin: auto;
3
+ position: relative;
4
+ height: fit-content;
5
+ width: 440px;
6
+
7
+ background-color: var(--charcoal-surface1);
8
+ border-radius: 24px;
9
+ }
10
+
11
+ .charcoal-modal-dialog[data-size='S'] {
12
+ width: 336px;
13
+ }
14
+
15
+ .charcoal-modal-dialog[data-size='M'] {
16
+ width: 440px;
17
+ }
18
+
19
+ .charcoal-modal-dialog[data-size='L'] {
20
+ width: 648px;
21
+ }
22
+
23
+ @media (max-width: 743px) {
24
+ .charcoal-modal-dialog {
25
+ max-width: 440px;
26
+ width: calc(100% - 48px);
27
+ }
28
+
29
+ .charcoal-modal-dialog[data-bottom-sheet='true'],
30
+ .charcoal-modal-dialog[data-bottom-sheet='full'] {
31
+ max-width: unset;
32
+ width: 100%;
33
+ border-radius: 0;
34
+ margin: auto 0 0 0;
35
+ }
36
+
37
+ .charcoal-modal-dialog[data-bottom-sheet='full'] {
38
+ min-height: 100%;
39
+ }
40
+ }
41
+
42
+ .charcoal-modal-dialog:focus {
43
+ outline: none;
44
+ }
@@ -1,18 +1,19 @@
1
1
  import { forwardRef } from 'react'
2
2
  import * as React from 'react'
3
- import styled, { css } from 'styled-components'
4
3
  import { useDialog } from '@react-aria/dialog'
5
- import { columnSystem, COLUMN_UNIT, GUTTER_UNIT } from '@charcoal-ui/foundation'
6
- import { unreachable } from '../../../_lib'
7
- import { maxWidth } from '@charcoal-ui/utils'
8
- import { animated } from 'react-spring'
9
4
  import { useForwardedRef } from '../../../_lib/useForwardedRef'
10
5
  import { Size, BottomSheet } from '..'
11
6
 
7
+ import './index.css'
8
+ import { useClassNames } from '../../../_lib/useClassNames'
9
+
12
10
  export const Dialog = forwardRef<
13
11
  HTMLDivElement,
14
- React.ComponentProps<typeof AnimatedStyledDialogDiv>
15
- >(function Dialog(props, forwardRef) {
12
+ React.ComponentPropsWithoutRef<'div'> & {
13
+ size: Size
14
+ bottomSheet: BottomSheet
15
+ }
16
+ >(function Dialog({ size, bottomSheet, className, ...props }, forwardRef) {
16
17
  const ref = useForwardedRef(forwardRef)
17
18
  const { dialogProps } = useDialog(
18
19
  {
@@ -21,62 +22,18 @@ export const Dialog = forwardRef<
21
22
  ref
22
23
  )
23
24
 
25
+ const classNames = useClassNames('charcoal-modal-dialog', className)
24
26
  return (
25
- <AnimatedStyledDialogDiv
26
- {...props}
27
+ <div
28
+ className={classNames}
27
29
  role={dialogProps.role}
30
+ data-bottom-sheet={bottomSheet}
28
31
  tabIndex={dialogProps.tabIndex}
29
32
  aria-labelledby={dialogProps['aria-labelledby']}
30
33
  onBlur={dialogProps.onBlur}
34
+ data-size={size}
31
35
  ref={ref}
36
+ {...props}
32
37
  />
33
38
  )
34
39
  })
35
-
36
- const AnimatedStyledDialogDiv = animated(styled.div<{
37
- size: Size
38
- bottomSheet: BottomSheet
39
- }>`
40
- margin: auto;
41
- position: relative;
42
- height: fit-content;
43
- width: ${(p) => {
44
- switch (p.size) {
45
- case 'S': {
46
- return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2
47
- }
48
- case 'M': {
49
- return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2
50
- }
51
- case 'L': {
52
- return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2
53
- }
54
- default: {
55
- return unreachable(p.size)
56
- }
57
- }
58
- }}px;
59
-
60
- background-color: var(--charcoal-surface1);
61
- border-radius: 24px;
62
-
63
- @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {
64
- max-width: 440px;
65
- width: calc(100% - 48px);
66
- ${(p) =>
67
- p.bottomSheet !== false &&
68
- css`
69
- max-width: unset;
70
- width: 100%;
71
- border-radius: 0;
72
- margin: auto 0 0 0;
73
- ${p.bottomSheet === 'full' &&
74
- css`
75
- min-height: 100%;
76
- `}
77
- `}
78
- }
79
- :focus {
80
- outline: none;
81
- }
82
- `)
@@ -0,0 +1,40 @@
1
+ .charcoal-modal-header-root {
2
+ height: 64px;
3
+ display: grid;
4
+ align-content: center;
5
+ justify-content: center;
6
+ }
7
+
8
+ @media (max-width: 743px) {
9
+ .charcoal-modal-header-root[data-bottom-sheet='true'],
10
+ .charcoal-modal-header-root[data-bottom-sheet='full'] {
11
+ height: 48px;
12
+ }
13
+ }
14
+
15
+ .charcoal-modal-header-title {
16
+ color: var(--charcoal-text1);
17
+ font-size: 16px;
18
+ line-height: 24px;
19
+ font-weight: bold;
20
+ display: flow-root;
21
+ }
22
+
23
+ .charcoal-modal-align {
24
+ padding-left: 16px;
25
+ padding-right: 16px;
26
+ }
27
+
28
+ .charcoal-modal-body {
29
+ padding-bottom: 40px;
30
+ }
31
+
32
+ .charcoal-modal-buttons {
33
+ display: grid;
34
+ grid-auto-flow: row;
35
+ grid-row-gap: 8px;
36
+
37
+ padding-top: 16px;
38
+ padding-left: 16px;
39
+ padding-right: 16px;
40
+ }
@@ -1,71 +1,23 @@
1
- import { BottomSheet, ModalContext, ModalTitle } from '.'
2
- import styled, { css } from 'styled-components'
1
+ import { ModalContext } from '.'
3
2
  import { useContext } from 'react'
4
- import { maxWidth } from '@charcoal-ui/utils'
3
+
4
+ import './ModalPlumbing.css'
5
+ import { createDivComponent } from '../../_lib/createDivComponent'
5
6
 
6
7
  export function ModalHeader() {
7
8
  const modalCtx = useContext(ModalContext)
8
9
  return (
9
- <ModalHeaderRoot $bottomSheet={modalCtx.bottomSheet}>
10
- <StyledModalTitle />
11
- </ModalHeaderRoot>
10
+ <div
11
+ className="charcoal-modal-header-root"
12
+ data-bottom-sheet={modalCtx.bottomSheet}
13
+ >
14
+ <div className="charcoal-modal-header-title">{modalCtx.title}</div>
15
+ </div>
12
16
  )
13
17
  }
14
18
 
15
- const ModalHeaderRoot = styled.div<{
16
- $bottomSheet: BottomSheet
17
- }>`
18
- height: 64px;
19
- display: grid;
20
- align-content: center;
21
- justify-content: center;
22
- @media ${({ theme }) => maxWidth(theme.breakpoint.screen1)} {
23
- ${(p) =>
24
- p.$bottomSheet !== false &&
25
- css`
26
- height: 48px;
27
- `}
28
- }
29
- `
30
-
31
- const StyledModalTitle = styled(ModalTitle)`
32
- color: var(--charcoal-text1);
33
- font-size: 16px;
34
- line-height: 24px;
35
- font-weight: bold;
36
- display: flow-root;
37
-
38
- &::before {
39
- display: block;
40
- width: 0;
41
- height: 0;
42
- content: '';
43
- margin-top: -4px;
44
- }
45
- &::after {
46
- display: block;
47
- width: 0;
48
- height: 0;
49
- content: '';
50
- margin-bottom: -4px;
51
- }
52
- `
53
-
54
- export const ModalAlign = styled.div`
55
- padding-left: 16px;
56
- padding-right: 16px;
57
- `
58
-
59
- export const ModalBody = styled.div`
60
- padding-bottom: 40px;
61
- `
19
+ export const ModalAlign = createDivComponent('charcoal-modal-align')
62
20
 
63
- export const ModalButtons = styled.div`
64
- display: grid;
65
- grid-auto-flow: row;
66
- grid-row-gap: 8px;
21
+ export const ModalBody = createDivComponent('charcoal-modal-body')
67
22
 
68
- padding-top: 16px;
69
- padding-left: 16px;
70
- padding-right: 16px;
71
- `
23
+ export const ModalButtons = createDivComponent('charcoal-modal-buttons')