@primer/components 33.0.0-rc.b495ba4a → 33.1.0-rc.6856bcf5

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 (234) hide show
  1. package/.devcontainer/devcontainer.json +1 -1
  2. package/.github/workflows/ci.yml +1 -1
  3. package/.github/workflows/release.yml +6 -27
  4. package/.github/workflows/release_canary.yml +4 -60
  5. package/.github/workflows/release_candidate.yml +5 -51
  6. package/.github/workflows/statuses.yml +32 -0
  7. package/.gitignore +1 -0
  8. package/.nvmrc +1 -1
  9. package/CHANGELOG.md +20 -0
  10. package/contributor-docs/CONTRIBUTING.md +14 -61
  11. package/dist/browser.esm.js +2 -2209
  12. package/dist/browser.esm.js.map +1 -1
  13. package/dist/browser.umd.js +2 -2209
  14. package/dist/browser.umd.js.map +1 -1
  15. package/docs/content/AnchoredOverlay.mdx +121 -1
  16. package/docs/content/Avatar.mdx +29 -14
  17. package/docs/content/AvatarPair.mdx +47 -0
  18. package/docs/content/AvatarStack.mdx +14 -6
  19. package/docs/content/Box.mdx +13 -11
  20. package/docs/content/BranchName.mdx +52 -0
  21. package/docs/content/{Breadcrumbs.md → Breadcrumbs.mdx} +21 -13
  22. package/docs/content/Link.mdx +75 -0
  23. package/docs/content/Radio.md +90 -0
  24. package/docs/content/TextInput.mdx +125 -0
  25. package/docs/content/drafts/ActionList2.mdx +484 -0
  26. package/docs/content/drafts/ActionMenu2.mdx +302 -0
  27. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +9 -1
  28. package/docs/src/@primer/gatsby-theme-doctocat/mdx-components.js +15 -2
  29. package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +4 -0
  30. package/docs/src/component-checklist.js +10 -2
  31. package/docs/src/props-table.js +165 -0
  32. package/docs/src/props.js +14 -28
  33. package/lib/ActionList/Header.js +1 -1
  34. package/lib/ActionList/Item.js +10 -10
  35. package/lib/ActionList/List.js +1 -1
  36. package/lib/ActionList2/ActionListContainerContext.d.ts +10 -0
  37. package/lib/ActionList2/ActionListContainerContext.js +15 -0
  38. package/lib/ActionList2/Divider.d.ts +3 -2
  39. package/lib/ActionList2/Divider.js +10 -5
  40. package/lib/ActionList2/Item.js +22 -8
  41. package/lib/ActionList2/List.js +12 -2
  42. package/lib/ActionList2/Selection.js +11 -0
  43. package/lib/ActionList2/index.d.ts +1 -2
  44. package/lib/ActionMenu2.d.ts +317 -0
  45. package/lib/ActionMenu2.js +125 -0
  46. package/lib/Autocomplete/Autocomplete.d.ts +2 -1
  47. package/lib/Autocomplete/AutocompleteInput.d.ts +2 -1
  48. package/lib/BaseStyles.js +2 -20
  49. package/lib/BorderBox.js +1 -1
  50. package/lib/Box.js +1 -1
  51. package/lib/BranchName.js +1 -1
  52. package/lib/Breadcrumbs.js +3 -3
  53. package/lib/Button/Button.d.ts +2 -2
  54. package/lib/Button/Button.js +1 -1
  55. package/lib/Button/ButtonClose.d.ts +2 -2
  56. package/lib/Button/ButtonDanger.d.ts +2 -2
  57. package/lib/Button/ButtonGroup.js +1 -1
  58. package/lib/Button/ButtonInvisible.d.ts +2 -2
  59. package/lib/Button/ButtonOutline.d.ts +2 -2
  60. package/lib/Button/ButtonPrimary.d.ts +2 -2
  61. package/lib/Checkbox.d.ts +1 -1
  62. package/lib/Checkbox.js +1 -1
  63. package/lib/CircleOcticon.d.ts +35 -35
  64. package/lib/Details.js +1 -1
  65. package/lib/Dialog.d.ts +37 -37
  66. package/lib/Dropdown.d.ts +6 -6
  67. package/lib/DropdownMenu/DropdownButton.d.ts +6 -3
  68. package/lib/FilterList.d.ts +1 -1
  69. package/lib/FilteredActionList/FilteredActionList.js +1 -1
  70. package/lib/Flex.js +1 -1
  71. package/lib/LabelGroup.js +1 -1
  72. package/lib/Overlay.js +1 -1
  73. package/lib/Pagination/Pagination.js +2 -2
  74. package/lib/Position.d.ts +4 -4
  75. package/lib/Position.js +1 -1
  76. package/lib/Radio.d.ts +38 -0
  77. package/lib/Radio.js +55 -0
  78. package/lib/SelectMenu/SelectMenu.d.ts +11 -10
  79. package/lib/SelectMenu/SelectMenu.js +1 -1
  80. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  81. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  82. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  83. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  84. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  85. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  86. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  87. package/lib/SelectMenu/SelectMenuTabs.js +1 -1
  88. package/lib/StateLabel.js +1 -1
  89. package/lib/StyledOcticon.js +1 -1
  90. package/lib/SubNav.js +3 -3
  91. package/lib/TextInputWithTokens.d.ts +2 -1
  92. package/lib/ThemeProvider.d.ts +1 -0
  93. package/lib/ThemeProvider.js +17 -4
  94. package/lib/Timeline.js +4 -4
  95. package/lib/Token/AvatarToken.d.ts +1 -1
  96. package/lib/Token/AvatarToken.js +1 -1
  97. package/lib/Token/IssueLabelToken.d.ts +1 -1
  98. package/lib/Token/Token.d.ts +1 -1
  99. package/lib/Token/TokenBase.js +1 -1
  100. package/lib/Tooltip.js +1 -1
  101. package/lib/UnderlineNav.js +2 -2
  102. package/lib/__tests__/Radio.test.d.ts +2 -0
  103. package/lib/__tests__/Radio.test.js +202 -0
  104. package/lib/__tests__/ThemeProvider.test.js +114 -0
  105. package/lib/drafts.d.ts +1 -0
  106. package/lib/drafts.js +13 -0
  107. package/lib/hooks/index.d.ts +1 -0
  108. package/lib/hooks/index.js +9 -1
  109. package/lib/index.d.ts +2 -0
  110. package/lib/index.js +8 -0
  111. package/lib/stories/ActionList.stories.js +3 -3
  112. package/lib/stories/ActionList2.stories.js +1 -1
  113. package/lib/stories/ActionMenu2.stories.js +455 -0
  114. package/lib/stories/Checkbox.stories.js +4 -4
  115. package/lib/stories/Radio.stories.js +146 -0
  116. package/lib/stories/ThemeProvider.stories.js +1 -5
  117. package/lib/stories/useFocusTrap.stories.js +1 -11
  118. package/lib/stories/useFocusZone.stories.js +2 -6
  119. package/lib-esm/ActionList/Header.js +1 -1
  120. package/lib-esm/ActionList/Item.js +10 -10
  121. package/lib-esm/ActionList/List.js +1 -1
  122. package/lib-esm/ActionList2/ActionListContainerContext.d.ts +10 -0
  123. package/lib-esm/ActionList2/ActionListContainerContext.js +3 -0
  124. package/lib-esm/ActionList2/Divider.d.ts +3 -2
  125. package/lib-esm/ActionList2/Divider.js +8 -5
  126. package/lib-esm/ActionList2/Item.js +20 -8
  127. package/lib-esm/ActionList2/List.js +10 -2
  128. package/lib-esm/ActionList2/Selection.js +9 -0
  129. package/lib-esm/ActionList2/index.d.ts +1 -2
  130. package/lib-esm/ActionMenu2.d.ts +317 -0
  131. package/lib-esm/ActionMenu2.js +100 -0
  132. package/lib-esm/Autocomplete/Autocomplete.d.ts +2 -1
  133. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +2 -1
  134. package/lib-esm/BaseStyles.js +2 -20
  135. package/lib-esm/BorderBox.js +1 -1
  136. package/lib-esm/Box.js +1 -1
  137. package/lib-esm/BranchName.js +1 -1
  138. package/lib-esm/Breadcrumbs.js +3 -3
  139. package/lib-esm/Button/Button.d.ts +2 -2
  140. package/lib-esm/Button/Button.js +1 -1
  141. package/lib-esm/Button/ButtonClose.d.ts +2 -2
  142. package/lib-esm/Button/ButtonDanger.d.ts +2 -2
  143. package/lib-esm/Button/ButtonGroup.js +1 -1
  144. package/lib-esm/Button/ButtonInvisible.d.ts +2 -2
  145. package/lib-esm/Button/ButtonOutline.d.ts +2 -2
  146. package/lib-esm/Button/ButtonPrimary.d.ts +2 -2
  147. package/lib-esm/Checkbox.d.ts +1 -1
  148. package/lib-esm/Checkbox.js +1 -1
  149. package/lib-esm/CircleOcticon.d.ts +35 -35
  150. package/lib-esm/Details.js +1 -1
  151. package/lib-esm/Dialog.d.ts +37 -37
  152. package/lib-esm/Dropdown.d.ts +6 -6
  153. package/lib-esm/DropdownMenu/DropdownButton.d.ts +6 -3
  154. package/lib-esm/FilterList.d.ts +1 -1
  155. package/lib-esm/FilteredActionList/FilteredActionList.js +1 -1
  156. package/lib-esm/Flex.js +1 -1
  157. package/lib-esm/LabelGroup.js +1 -1
  158. package/lib-esm/Overlay.js +1 -1
  159. package/lib-esm/Pagination/Pagination.js +2 -2
  160. package/lib-esm/Position.d.ts +4 -4
  161. package/lib-esm/Position.js +1 -1
  162. package/lib-esm/Radio.d.ts +38 -0
  163. package/lib-esm/Radio.js +40 -0
  164. package/lib-esm/SelectMenu/SelectMenu.d.ts +11 -10
  165. package/lib-esm/SelectMenu/SelectMenu.js +1 -1
  166. package/lib-esm/SelectMenu/SelectMenuFilter.js +1 -1
  167. package/lib-esm/SelectMenu/SelectMenuFooter.js +1 -1
  168. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  169. package/lib-esm/SelectMenu/SelectMenuItem.js +1 -1
  170. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  171. package/lib-esm/SelectMenu/SelectMenuTab.js +1 -1
  172. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +1 -1
  173. package/lib-esm/SelectMenu/SelectMenuTabs.js +1 -1
  174. package/lib-esm/StateLabel.js +1 -1
  175. package/lib-esm/StyledOcticon.js +1 -1
  176. package/lib-esm/SubNav.js +3 -3
  177. package/lib-esm/TextInputWithTokens.d.ts +2 -1
  178. package/lib-esm/ThemeProvider.d.ts +1 -0
  179. package/lib-esm/ThemeProvider.js +17 -4
  180. package/lib-esm/Timeline.js +4 -4
  181. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  182. package/lib-esm/Token/AvatarToken.js +1 -1
  183. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  184. package/lib-esm/Token/Token.d.ts +1 -1
  185. package/lib-esm/Token/TokenBase.js +1 -1
  186. package/lib-esm/Tooltip.js +1 -1
  187. package/lib-esm/UnderlineNav.js +2 -2
  188. package/lib-esm/__tests__/Radio.test.d.ts +2 -0
  189. package/lib-esm/__tests__/Radio.test.js +183 -0
  190. package/lib-esm/__tests__/ThemeProvider.test.js +114 -0
  191. package/lib-esm/drafts.d.ts +1 -0
  192. package/lib-esm/drafts.js +2 -1
  193. package/lib-esm/hooks/index.d.ts +1 -0
  194. package/lib-esm/hooks/index.js +2 -1
  195. package/lib-esm/index.d.ts +2 -0
  196. package/lib-esm/index.js +1 -0
  197. package/lib-esm/stories/ActionList.stories.js +3 -3
  198. package/lib-esm/stories/ActionList2.stories.js +1 -1
  199. package/lib-esm/stories/ActionMenu2.stories.js +393 -0
  200. package/lib-esm/stories/Checkbox.stories.js +5 -5
  201. package/lib-esm/stories/Radio.stories.js +121 -0
  202. package/lib-esm/stories/ThemeProvider.stories.js +1 -5
  203. package/lib-esm/stories/useFocusTrap.stories.js +1 -11
  204. package/lib-esm/stories/useFocusZone.stories.js +2 -6
  205. package/package-lock.json +1366 -3544
  206. package/package.json +14 -8
  207. package/script/component-status-project/build.ts +100 -0
  208. package/script/component-status-project/deploy.rb +142 -0
  209. package/src/ActionList2/ActionListContainerContext.tsx +14 -0
  210. package/src/ActionList2/Divider.tsx +13 -8
  211. package/src/ActionList2/Item.tsx +14 -6
  212. package/src/ActionList2/List.tsx +6 -2
  213. package/src/ActionList2/Selection.tsx +9 -0
  214. package/src/ActionMenu2.tsx +116 -0
  215. package/src/BranchName.tsx +2 -1
  216. package/src/Radio.tsx +76 -0
  217. package/src/ThemeProvider.tsx +22 -5
  218. package/src/__tests__/Radio.test.tsx +174 -0
  219. package/src/__tests__/ThemeProvider.test.tsx +116 -0
  220. package/src/__tests__/__snapshots__/BranchName.test.tsx.snap +3 -1
  221. package/src/__tests__/__snapshots__/Radio.test.tsx.snap +16 -0
  222. package/src/drafts.ts +1 -0
  223. package/src/hooks/index.ts +1 -0
  224. package/src/index.ts +2 -0
  225. package/src/stories/ActionMenu2.stories.tsx +605 -0
  226. package/src/stories/Checkbox.stories.tsx +1 -3
  227. package/src/stories/Radio.stories.tsx +126 -0
  228. package/stats.html +1 -1
  229. package/tsconfig.build.json +1 -1
  230. package/tsconfig.json +1 -1
  231. package/docs/content/ActionList2.mdx +0 -379
  232. package/docs/content/BranchName.md +0 -39
  233. package/docs/content/Link.md +0 -29
  234. package/docs/content/TextInput.md +0 -42
@@ -405,4 +405,118 @@ describe('useColorSchemeVar', () => {
405
405
  screen.getByRole('button').click();
406
406
  expect(screen.getByText('Hello')).toHaveStyleRule('background-color', 'blue');
407
407
  });
408
+ });
409
+ describe('useTheme().resolvedColorScheme', () => {
410
+ it('is undefined when not in a theme', () => {
411
+ const Component = () => {
412
+ const {
413
+ resolvedColorScheme
414
+ } = useTheme();
415
+ return /*#__PURE__*/React.createElement(Text, {
416
+ "data-testid": "text"
417
+ }, resolvedColorScheme);
418
+ };
419
+
420
+ render( /*#__PURE__*/React.createElement(Component, null));
421
+ expect(screen.getByTestId('text').textContent).toEqual('');
422
+ });
423
+ it('is undefined when the theme has no colorScheme object', () => {
424
+ const Component = () => {
425
+ const {
426
+ resolvedColorScheme
427
+ } = useTheme();
428
+ return /*#__PURE__*/React.createElement(Text, {
429
+ "data-testid": "text"
430
+ }, resolvedColorScheme);
431
+ };
432
+
433
+ render( /*#__PURE__*/React.createElement(ThemeProvider, {
434
+ theme: {
435
+ color: 'red'
436
+ }
437
+ }, /*#__PURE__*/React.createElement(Component, null)));
438
+ expect(screen.getByTestId('text').textContent).toEqual('');
439
+ });
440
+ it('is the same as the applied colorScheme, when that colorScheme is in the theme', () => {
441
+ const Component = () => {
442
+ const {
443
+ resolvedColorScheme
444
+ } = useTheme();
445
+ return /*#__PURE__*/React.createElement(Text, {
446
+ "data-testid": "text"
447
+ }, resolvedColorScheme);
448
+ };
449
+
450
+ const schemeToApply = 'dark';
451
+ render( /*#__PURE__*/React.createElement(ThemeProvider, {
452
+ theme: exampleTheme,
453
+ colorMode: "day",
454
+ dayScheme: schemeToApply
455
+ }, /*#__PURE__*/React.createElement(Component, null)));
456
+ expect(exampleTheme.colorSchemes).toHaveProperty(schemeToApply);
457
+ expect(screen.getByTestId('text').textContent).toEqual(schemeToApply);
458
+ });
459
+ it('is the value of the fallback colorScheme applied when attempting to apply an invalid colorScheme', () => {
460
+ const Component = () => {
461
+ const {
462
+ resolvedColorScheme
463
+ } = useTheme();
464
+ return /*#__PURE__*/React.createElement(Text, {
465
+ "data-testid": "text"
466
+ }, resolvedColorScheme);
467
+ };
468
+
469
+ const schemeToApply = 'totally-invalid-colorscheme';
470
+ render( /*#__PURE__*/React.createElement(ThemeProvider, {
471
+ theme: exampleTheme,
472
+ colorMode: "day",
473
+ dayScheme: schemeToApply
474
+ }, /*#__PURE__*/React.createElement(Component, null)));
475
+ const defaultThemeColorScheme = Object.keys(exampleTheme.colorSchemes)[0];
476
+ expect(defaultThemeColorScheme).not.toEqual(schemeToApply);
477
+ expect(exampleTheme.colorSchemes).not.toHaveProperty(schemeToApply);
478
+ expect(screen.getByTestId('text').textContent).toEqual('light');
479
+ });
480
+ describe('nested theme', () => {
481
+ it('is the same as the applied colorScheme, when that colorScheme is in the theme', () => {
482
+ const Component = () => {
483
+ const {
484
+ resolvedColorScheme
485
+ } = useTheme();
486
+ return /*#__PURE__*/React.createElement(Text, {
487
+ "data-testid": "text"
488
+ }, resolvedColorScheme);
489
+ };
490
+
491
+ const schemeToApply = 'dark';
492
+ render( /*#__PURE__*/React.createElement(ThemeProvider, {
493
+ theme: exampleTheme,
494
+ colorMode: "day",
495
+ dayScheme: schemeToApply
496
+ }, /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Component, null))));
497
+ expect(exampleTheme.colorSchemes).toHaveProperty(schemeToApply);
498
+ expect(screen.getByTestId('text').textContent).toEqual(schemeToApply);
499
+ });
500
+ it('is the value of the fallback colorScheme applied when attempting to apply an invalid colorScheme', () => {
501
+ const Component = () => {
502
+ const {
503
+ resolvedColorScheme
504
+ } = useTheme();
505
+ return /*#__PURE__*/React.createElement(Text, {
506
+ "data-testid": "text"
507
+ }, resolvedColorScheme);
508
+ };
509
+
510
+ const schemeToApply = 'totally-invalid-colorscheme';
511
+ render( /*#__PURE__*/React.createElement(ThemeProvider, {
512
+ theme: exampleTheme,
513
+ colorMode: "day",
514
+ dayScheme: schemeToApply
515
+ }, /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(Component, null))));
516
+ const defaultThemeColorScheme = Object.keys(exampleTheme.colorSchemes)[0];
517
+ expect(defaultThemeColorScheme).not.toEqual(schemeToApply);
518
+ expect(exampleTheme.colorSchemes).not.toHaveProperty(schemeToApply);
519
+ expect(screen.getByTestId('text').textContent).toEqual('light');
520
+ });
521
+ });
408
522
  });
@@ -6,3 +6,4 @@
6
6
  */
7
7
  export * from './ActionList2';
8
8
  export * from './NewButton';
9
+ export * from './ActionMenu2';
package/lib-esm/drafts.js CHANGED
@@ -6,4 +6,5 @@
6
6
  */
7
7
  // Components
8
8
  export * from './ActionList2';
9
- export * from './NewButton';
9
+ export * from './NewButton';
10
+ export * from './ActionMenu2';
@@ -9,3 +9,4 @@ export { useAnchoredPosition } from './useAnchoredPosition';
9
9
  export { useOverlay } from './useOverlay';
10
10
  export type { UseOverlaySettings } from './useOverlay';
11
11
  export { useRenderForcingRef } from './useRenderForcingRef';
12
+ export { useProvidedStateOrCreate } from './useProvidedStateOrCreate';
@@ -4,4 +4,5 @@ export { useOnEscapePress } from './useOnEscapePress';
4
4
  export { useOpenAndCloseFocus } from './useOpenAndCloseFocus';
5
5
  export { useAnchoredPosition } from './useAnchoredPosition';
6
6
  export { useOverlay } from './useOverlay';
7
- export { useRenderForcingRef } from './useRenderForcingRef';
7
+ export { useRenderForcingRef } from './useRenderForcingRef';
8
+ export { useProvidedStateOrCreate } from './useProvidedStateOrCreate';
@@ -21,6 +21,8 @@ export { useOpenAndCloseFocus } from './hooks/useOpenAndCloseFocus';
21
21
  export { useOnEscapePress } from './hooks/useOnEscapePress';
22
22
  export { useOverlay } from './hooks/useOverlay';
23
23
  export { useConfirm } from './Dialog/ConfirmationDialog';
24
+ export { default as Radio } from './Radio';
25
+ export type { RadioProps } from './Radio';
24
26
  export { ActionList } from './ActionList';
25
27
  export { ActionMenu } from './ActionMenu';
26
28
  export type { ActionMenuProps } from './ActionMenu';
package/lib-esm/index.js CHANGED
@@ -17,6 +17,7 @@ export { useOnEscapePress } from './hooks/useOnEscapePress';
17
17
  export { useOverlay } from './hooks/useOverlay';
18
18
  export { useConfirm } from './Dialog/ConfirmationDialog'; // Components
19
19
 
20
+ export { default as Radio } from './Radio';
20
21
  export { ActionList } from './ActionList';
21
22
  export { ActionMenu } from './ActionMenu';
22
23
  export { default as Autocomplete } from './Autocomplete';
@@ -24,7 +24,7 @@ const meta = {
24
24
  export default meta;
25
25
  const ErsatzOverlay = styled.div.withConfig({
26
26
  displayName: "ActionListstories__ErsatzOverlay",
27
- componentId: "akdcn0-0"
27
+ componentId: "sc-akdcn0-0"
28
28
  })(["border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,0.12),0 8px 24px rgba(149,157,165,0.2);overflow:hidden;max-width:", ";"], ({
29
29
  maxWidth
30
30
  }) => maxWidth || 'none');
@@ -90,7 +90,7 @@ MultiSelectListStory.storyName = 'Multi Select';
90
90
  export function ComplexListInsetVariantStory() {
91
91
  const StyledDiv = styled.div.withConfig({
92
92
  displayName: "ActionListstories__StyledDiv",
93
- componentId: "akdcn0-1"
93
+ componentId: "sc-akdcn0-1"
94
94
  })(["", ""], sx);
95
95
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Complex List"), /*#__PURE__*/React.createElement("h2", null, "Inset Variant"), /*#__PURE__*/React.createElement(ErsatzOverlay, null, /*#__PURE__*/React.createElement(ActionList, {
96
96
  groupMetadata: [{
@@ -189,7 +189,7 @@ ComplexListInsetVariantStory.storyName = 'Complex List — Inset Variant';
189
189
  export function ComplexListFullVariantStory() {
190
190
  const StyledDiv = styled.div.withConfig({
191
191
  displayName: "ActionListstories__StyledDiv",
192
- componentId: "akdcn0-2"
192
+ componentId: "sc-akdcn0-2"
193
193
  })(["", ""], sx);
194
194
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Complex List"), /*#__PURE__*/React.createElement("h2", null, "Full Variant"), /*#__PURE__*/React.createElement(ErsatzOverlay, null, /*#__PURE__*/React.createElement(ActionList, {
195
195
  variant: "full",
@@ -31,7 +31,7 @@ const meta = {
31
31
  export default meta;
32
32
  const ErsatzOverlay = styled.div.withConfig({
33
33
  displayName: "ActionList2stories__ErsatzOverlay",
34
- componentId: "f9cezu-0"
34
+ componentId: "sc-f9cezu-0"
35
35
  })(["border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,0.12),0 8px 24px rgba(149,157,165,0.2);overflow:hidden;max-width:", ";"], ({
36
36
  maxWidth
37
37
  }) => maxWidth || 'none');
@@ -0,0 +1,393 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ import React from 'react';
4
+ import { ThemeProvider } from '..';
5
+ import BaseStyles from '../BaseStyles';
6
+ import { ActionMenu } from '../ActionMenu2';
7
+ import { ActionList } from '../ActionList2';
8
+ import Button, { ButtonInvisible } from '../Button';
9
+ import Box from '../Box';
10
+ import Text from '../Text';
11
+ import TextInput from '../TextInput';
12
+ import StyledOcticon from '../StyledOcticon';
13
+ import FormGroup from '../FormGroup';
14
+ import { ServerIcon, PlusCircleIcon, TriangleDownIcon, KebabHorizontalIcon, PencilIcon, ArchiveIcon, TrashIcon, ProjectIcon, ListUnorderedIcon, ArrowDownIcon, SearchIcon, VersionsIcon, TableIcon } from '@primer/octicons-react';
15
+ const meta = {
16
+ title: 'Composite components/ActionMenu2',
17
+ component: ActionMenu,
18
+ decorators: [Story => /*#__PURE__*/React.createElement(ThemeProvider, null, /*#__PURE__*/React.createElement(BaseStyles, null, /*#__PURE__*/React.createElement(Story, null)))],
19
+ parameters: {
20
+ controls: {
21
+ disabled: true
22
+ }
23
+ }
24
+ };
25
+ export default meta;
26
+ export function SimpleListStory() {
27
+ const [actionFired, fireAction] = React.useState('');
28
+
29
+ const onSelect = name => fireAction(name);
30
+
31
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Simple Menu"), /*#__PURE__*/React.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/React.createElement(ActionMenu, null, /*#__PURE__*/React.createElement(ActionMenu.Button, null, "Menu"), /*#__PURE__*/React.createElement(ActionMenu.Overlay, null, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
32
+ onSelect: () => onSelect('Copy link')
33
+ }, "Copy link", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/React.createElement(ActionList.Item, {
34
+ onSelect: () => onSelect('Quote reply')
35
+ }, "Quote reply", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/React.createElement(ActionList.Item, {
36
+ onSelect: () => onSelect('Edit comment')
37
+ }, "Edit comment", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
38
+ variant: "danger",
39
+ onSelect: () => onSelect('Delete file')
40
+ }, "Delete file", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318D"))))));
41
+ }
42
+ SimpleListStory.storyName = 'Simple Menu';
43
+ export function ActionsStory() {
44
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Actions"), /*#__PURE__*/React.createElement(ActionMenu, null, /*#__PURE__*/React.createElement(ActionMenu.Button, {
45
+ "aria-label": "Open Actions Menu"
46
+ }, /*#__PURE__*/React.createElement(ServerIcon, null)), /*#__PURE__*/React.createElement(ActionMenu.Overlay, {
47
+ width: "medium"
48
+ }, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(ServerIcon, null)), "Open current Codespace", /*#__PURE__*/React.createElement(ActionList.Description, {
49
+ variant: "block"
50
+ }, "Your existing Codespace will be opened to its previous state, and you'll be asked to manually switch to new-branch."), /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318O")), /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(PlusCircleIcon, null)), "Create new Codespace", /*#__PURE__*/React.createElement(ActionList.Description, {
51
+ variant: "block"
52
+ }, "Create a brand new Codespace with a fresh image and checkout this branch."), /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C"))))));
53
+ }
54
+ ActionsStory.storyName = 'Actions';
55
+ export function ExternalAnchor() {
56
+ const [actionFired, fireAction] = React.useState('');
57
+
58
+ const onSelect = name => fireAction(name);
59
+
60
+ const [open, setOpen] = React.useState(false);
61
+ const anchorRef = /*#__PURE__*/React.createRef();
62
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "External Anchor"), /*#__PURE__*/React.createElement("h2", null, "External Open State: ", open ? 'Open' : 'Closed'), /*#__PURE__*/React.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
63
+ ref: anchorRef,
64
+ onClick: () => setOpen(!open)
65
+ }, open ? 'Close Menu' : 'Open Menu')), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(ActionMenu, {
66
+ open: open,
67
+ onOpenChange: setOpen,
68
+ anchorRef: anchorRef
69
+ }, /*#__PURE__*/React.createElement(ActionMenu.Overlay, null, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
70
+ onSelect: () => onSelect('Copy link')
71
+ }, "Copy link", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/React.createElement(ActionList.Item, {
72
+ onSelect: () => onSelect('Quote reply')
73
+ }, "Quote reply", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/React.createElement(ActionList.Item, {
74
+ onSelect: () => onSelect('Edit comment')
75
+ }, "Edit comment", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
76
+ variant: "danger",
77
+ onSelect: () => onSelect('Delete file')
78
+ }, "Delete file", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318D"))))));
79
+ }
80
+ ExternalAnchor.storyName = 'External Anchor';
81
+ export function ControlledMenu() {
82
+ const [actionFired, fireAction] = React.useState('');
83
+
84
+ const onSelect = name => fireAction(name);
85
+
86
+ const [open, setOpen] = React.useState(false);
87
+ const triggerRef = /*#__PURE__*/React.createRef();
88
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Controlled Menu"), /*#__PURE__*/React.createElement("h2", null, "External Open State: ", open ? 'Open' : 'Closed'), /*#__PURE__*/React.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
89
+ ref: triggerRef,
90
+ onClick: () => setOpen(!open)
91
+ }, open ? 'Close Menu' : 'Open Menu')), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(ActionMenu, {
92
+ open: open,
93
+ onOpenChange: setOpen
94
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, null, "Anchor"), /*#__PURE__*/React.createElement(ActionMenu.Overlay, {
95
+ ignoreClickRefs: [// Because the component is controlled from outside, but the anchor is still internal,
96
+ // clicking the external button should not be counted as "clicking outside"
97
+ triggerRef]
98
+ }, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
99
+ onSelect: () => onSelect('Copy link')
100
+ }, "Copy link", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/React.createElement(ActionList.Item, {
101
+ onSelect: () => onSelect('Quote reply')
102
+ }, "Quote reply", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/React.createElement(ActionList.Item, {
103
+ onSelect: () => onSelect('Edit comment')
104
+ }, "Edit comment", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
105
+ variant: "danger",
106
+ onSelect: () => onSelect('Delete file')
107
+ }, "Delete file", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318D"))))));
108
+ }
109
+ ControlledMenu.storyName = 'Controlled Menu';
110
+ export function CustomAnchor() {
111
+ const [actionFired, fireAction] = React.useState('');
112
+
113
+ const onSelect = name => fireAction(name);
114
+
115
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Custom Anchor"), /*#__PURE__*/React.createElement("h2", null, "Last option activated: ", actionFired), /*#__PURE__*/React.createElement(ActionMenu, null, /*#__PURE__*/React.createElement(ActionMenu.Anchor, null, /*#__PURE__*/React.createElement("summary", {
116
+ style: {
117
+ cursor: 'pointer'
118
+ },
119
+ "aria-label": "Open column options"
120
+ }, /*#__PURE__*/React.createElement(KebabHorizontalIcon, null))), /*#__PURE__*/React.createElement(ActionMenu.Overlay, null, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
121
+ onSelect: () => onSelect('Rename')
122
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(PencilIcon, null)), "Rename"), /*#__PURE__*/React.createElement(ActionList.Item, {
123
+ onSelect: () => onSelect('Archive')
124
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(ArchiveIcon, null)), "Archive all cards"), /*#__PURE__*/React.createElement(ActionList.Item, {
125
+ variant: "danger",
126
+ onSelect: () => onSelect('Delete file')
127
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(TrashIcon, null)), "Delete")))));
128
+ }
129
+ CustomAnchor.storyName = 'Custom Anchor';
130
+ export function MemexTableMenu() {
131
+ const [name, setName] = React.useState('Estimate');
132
+ const inputRef = /*#__PURE__*/React.createRef();
133
+ /** To add custom components to the Menu,
134
+ * you need to switch to a controlled menu
135
+ */
136
+
137
+ const [open, setOpen] = React.useState(false);
138
+
139
+ const handleKeyPress = event => {
140
+ if (event.key === 'Enter') {
141
+ setName(event.currentTarget.value);
142
+ setOpen(false);
143
+ }
144
+ };
145
+ /** This requires inside knowledge. If you to do this with onBlur
146
+ * on the input, it doesn't work :(
147
+ */
148
+
149
+
150
+ const handleClickOutside = () => {
151
+ if (inputRef.current) setName(inputRef.current.value);
152
+ setOpen(false);
153
+ };
154
+
155
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Memex Table Menu"), /*#__PURE__*/React.createElement(Box, {
156
+ sx: {
157
+ width: 200,
158
+ display: 'flex',
159
+ justifyContent: 'space-between',
160
+ p: 2,
161
+ border: '1px solid',
162
+ borderColor: 'border.default'
163
+ }
164
+ }, /*#__PURE__*/React.createElement(Text, {
165
+ sx: {
166
+ fontSize: 0,
167
+ fontWeight: 'bold'
168
+ }
169
+ }, name), /*#__PURE__*/React.createElement(ActionMenu, {
170
+ open: open,
171
+ onOpenChange: setOpen
172
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, {
173
+ "aria-label": "Open Estimate column options menu",
174
+ sx: {
175
+ p: 0,
176
+ display: 'flex',
177
+ alignItems: 'center',
178
+ justifyContent: 'center'
179
+ }
180
+ }, /*#__PURE__*/React.createElement(TriangleDownIcon, null)), /*#__PURE__*/React.createElement(ActionMenu.Overlay, {
181
+ onClickOutside: handleClickOutside
182
+ }, /*#__PURE__*/React.createElement(TextInput, {
183
+ ref: inputRef,
184
+ sx: {
185
+ m: 2
186
+ },
187
+ defaultValue: name,
188
+ onKeyPress: handleKeyPress
189
+ }), /*#__PURE__*/React.createElement(ActionMenu.Divider, {
190
+ sx: {
191
+ m: 0
192
+ }
193
+ }), /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, null, "Sort ascending (123...)"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Sort descending (123...)"), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, null, "Filter by values"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Group by values"), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
194
+ disabled: true
195
+ }, "Hide field"), /*#__PURE__*/React.createElement(ActionList.Item, {
196
+ variant: "danger"
197
+ }, "Delete file"))))));
198
+ }
199
+ MemexTableMenu.storyName = 'Memex Table Menu';
200
+ /* copied from github/memex */
201
+
202
+ const LayoutToggleItem = ({
203
+ selected,
204
+ children,
205
+ Icon,
206
+ ...props
207
+ }) => {
208
+ return /*#__PURE__*/React.createElement(FormGroup, {
209
+ sx: {
210
+ flex: 'auto',
211
+ borderRadius: 2,
212
+ border: '1px solid',
213
+ borderColor: selected ? 'accent.emphasis' : 'border.default',
214
+ textAlign: 'center',
215
+ cursor: 'pointer',
216
+ backgroundColor: selected ? 'accent.subtle' : '',
217
+ boxShadow: selected ? theme => `inset 0 0 0 1px ${theme.colors.accent.emphasis}` : '',
218
+ mb: 2,
219
+ mt: 1,
220
+ '&:hover': {
221
+ backgroundColor: !selected ? 'canvas.subtle' : ''
222
+ },
223
+ '&:first-of-type': {
224
+ borderTopRightRadius: '0px',
225
+ borderBottomRightRadius: '0px',
226
+ borderRight: selected ? undefined : '0'
227
+ },
228
+ '&:last-of-type': {
229
+ borderTopLeftRadius: '0px',
230
+ borderBottomLeftRadius: '0px',
231
+ borderLeft: selected ? undefined : '0'
232
+ }
233
+ }
234
+ }, /*#__PURE__*/React.createElement(FormGroup.Label, _extends({
235
+ htmlFor: "layout-selector",
236
+ sx: {
237
+ fontWeight: 'normal',
238
+ cursor: 'pointer',
239
+ px: 3,
240
+ py: 2,
241
+ mb: 0
242
+ }
243
+ }, props), /*#__PURE__*/React.createElement(Box, {
244
+ sx: {
245
+ textAlign: 'center',
246
+ flexDirection: 'column',
247
+ m: 'auto',
248
+ alignItems: 'center',
249
+ display: 'flex'
250
+ }
251
+ }, /*#__PURE__*/React.createElement(Icon, {
252
+ size: "medium"
253
+ }), /*#__PURE__*/React.createElement(Text, {
254
+ sx: {
255
+ color: selected ? 'fg.default' : 'fg.muted',
256
+ fontSize: 0
257
+ }
258
+ }, children))));
259
+ };
260
+
261
+ LayoutToggleItem.displayName = "LayoutToggleItem";
262
+
263
+ /* copied from github/memex */
264
+ const ViewChangeButtons = ({
265
+ setOpen
266
+ }) => /*#__PURE__*/React.createElement(Box, {
267
+ sx: {
268
+ display: 'flex'
269
+ }
270
+ }, /*#__PURE__*/React.createElement(ButtonInvisible, {
271
+ onClick: () => setOpen(false),
272
+ sx: {
273
+ flex: 'auto',
274
+ minWidth: '50%',
275
+ borderRight: '1px solid',
276
+ borderColor: 'border.default',
277
+ borderRadius: 0,
278
+ mt: -2,
279
+ mb: -2,
280
+ py: 3,
281
+ '&:hover': {
282
+ bg: 'canvas.inset'
283
+ }
284
+ }
285
+ }, "Save changes"), /*#__PURE__*/React.createElement(ButtonInvisible, {
286
+ onClick: () => setOpen(false),
287
+ sx: {
288
+ flex: 'auto',
289
+ color: 'fg.muted',
290
+ borderRadius: 0,
291
+ mt: -2,
292
+ mb: -2,
293
+ py: 3,
294
+ fontWeight: 'normal',
295
+ '&:hover': {
296
+ bg: 'canvas.inset'
297
+ }
298
+ }
299
+ }, "Discard changes"));
300
+
301
+ ViewChangeButtons.displayName = "ViewChangeButtons";
302
+ export function MemexViewOptionsMenu() {
303
+ const [open, setOpen] = React.useState(false);
304
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Memex View Options Menu"), /*#__PURE__*/React.createElement(Box, {
305
+ sx: {
306
+ display: 'flex',
307
+ alignItems: 'center'
308
+ }
309
+ }, /*#__PURE__*/React.createElement(Text, {
310
+ sx: {
311
+ fontSize: 1,
312
+ mr: 3
313
+ }
314
+ }, /*#__PURE__*/React.createElement(StyledOcticon, {
315
+ icon: ProjectIcon,
316
+ sx: {
317
+ mr: 2
318
+ }
319
+ }), "React"), /*#__PURE__*/React.createElement(ActionMenu, {
320
+ open: open,
321
+ onOpenChange: setOpen
322
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, {
323
+ "aria-label": "Open View options menu",
324
+ sx: {
325
+ p: 0,
326
+ width: 18,
327
+ height: 18,
328
+ display: 'flex',
329
+ alignItems: 'center',
330
+ justifyContent: 'center'
331
+ }
332
+ }, /*#__PURE__*/React.createElement(TriangleDownIcon, null)), /*#__PURE__*/React.createElement(ActionMenu.Overlay, {
333
+ width: "medium"
334
+ }, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Group, {
335
+ title: "Layout"
336
+ }, /*#__PURE__*/React.createElement("li", {
337
+ style: {
338
+ listStyle: 'none'
339
+ }
340
+ }, /*#__PURE__*/React.createElement(Box, {
341
+ sx: {
342
+ mx: 3,
343
+ display: 'flex'
344
+ }
345
+ }, /*#__PURE__*/React.createElement(LayoutToggleItem, {
346
+ selected: true,
347
+ Icon: TableIcon
348
+ }, "Table"), /*#__PURE__*/React.createElement(LayoutToggleItem, {
349
+ selected: false,
350
+ Icon: ProjectIcon
351
+ }, "Board")))), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Group, {
352
+ title: "Configuration"
353
+ }, /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(ListUnorderedIcon, null)), "Title, Assignees, Status, Labels, Repositories"), /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(ListUnorderedIcon, null)), "group: none"), /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(ArrowDownIcon, null)), "sort: manual"), /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(SearchIcon, null)), "Search or filter this view")), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(PencilIcon, null)), "Rename view"), /*#__PURE__*/React.createElement(ActionList.Item, null, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(VersionsIcon, null)), "Save changes to new view"), /*#__PURE__*/React.createElement(ActionList.Item, {
354
+ disabled: true
355
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(TrashIcon, null)), "Delete view"), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement("li", {
356
+ style: {
357
+ listStyle: 'none'
358
+ }
359
+ }, /*#__PURE__*/React.createElement(ViewChangeButtons, {
360
+ setOpen: setOpen
361
+ })))))));
362
+ }
363
+ MemexViewOptionsMenu.storyName = 'Memex View Options Menu';
364
+ export function OverlayProps() {
365
+ const [open, setOpen] = React.useState(false);
366
+ const inputRef = /*#__PURE__*/React.createRef();
367
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "OverlayProps"), /*#__PURE__*/React.createElement("p", null, "Disable `onClickOutside` and `onEscape`. Only way to close is to select an action which takes focus on a TextInput"), /*#__PURE__*/React.createElement(ActionMenu, {
368
+ open: open,
369
+ onOpenChange: setOpen
370
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, null, "Menu"), /*#__PURE__*/React.createElement(ActionMenu.Overlay, {
371
+ width: "large",
372
+ onClickOutside: () => {
373
+ /* do nothing, keep it open*/
374
+ },
375
+ onEscape: () => {
376
+ /* do nothing, keep it open*/
377
+ },
378
+ returnFocusRef: inputRef
379
+ }, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 1"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Option 2")))), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(TextInput, {
380
+ type: "text",
381
+ ref: inputRef,
382
+ placeholder: "random input to return focus to"
383
+ }));
384
+ }
385
+ OverlayProps.storyName = 'Overlay Props';
386
+ export function UnexpectedSelectionVariant() {
387
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Expect error if selectionVariant is passed"), /*#__PURE__*/React.createElement(ActionMenu, null, /*#__PURE__*/React.createElement(ActionMenu.Button, null, "Menu"), /*#__PURE__*/React.createElement(ActionMenu.Overlay, null, /*#__PURE__*/React.createElement(ActionList, {
388
+ selectionVariant: "multiple"
389
+ }, /*#__PURE__*/React.createElement(ActionList.Item, null, "Copy link"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Quote reply"), /*#__PURE__*/React.createElement(ActionList.Item, null, "Edit comment"), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
390
+ variant: "danger"
391
+ }, "Delete file")))));
392
+ }
393
+ UnexpectedSelectionVariant.storyName = 'Unexpected selectionVariant';
@@ -4,7 +4,7 @@ import React, { useLayoutEffect, useRef, useState } from 'react';
4
4
  import styled from 'styled-components';
5
5
  import { BaseStyles, Box, Checkbox, Text, ThemeProvider } from '..';
6
6
  import { action } from '@storybook/addon-actions';
7
- import { COMMON, get } from '../constants';
7
+ import { get } from '../constants';
8
8
  export default {
9
9
  title: 'Forms/Checkbox',
10
10
  component: Checkbox,
@@ -30,12 +30,12 @@ export default {
30
30
  };
31
31
  const StyledLabel = styled.label.withConfig({
32
32
  displayName: "Checkboxstories__StyledLabel",
33
- componentId: "sdupvr-0"
34
- })(["user-select:none;font-weight:600;font-size:14px;line-height:18px;margin-left:16px;", ""], COMMON);
33
+ componentId: "sc-sdupvr-0"
34
+ })(["user-select:none;font-weight:600;font-size:14px;line-height:18px;margin-left:16px;"]);
35
35
  const StyledSubLabel = styled(Text).withConfig({
36
36
  displayName: "Checkboxstories__StyledSubLabel",
37
- componentId: "sdupvr-1"
38
- })(["color:", ";font-size:13px;", ""], get('colors.fg.muted'), COMMON);
37
+ componentId: "sc-sdupvr-1"
38
+ })(["color:", ";font-size:13px;"], get('colors.fg.muted'));
39
39
  export const Default = args => {
40
40
  const [isChecked, setChecked] = useState(false);
41
41