@primer/components 32.1.1-rc.92743105 → 33.0.0-rc.9cc2a259

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. package/.devcontainer/devcontainer.json +1 -1
  2. package/.github/workflows/ci.yml +1 -1
  3. package/.github/workflows/release.yml +1 -1
  4. package/.github/workflows/release_canary.yml +1 -1
  5. package/.github/workflows/release_candidate.yml +1 -1
  6. package/.github/workflows/statuses.yml +32 -0
  7. package/.gitignore +1 -0
  8. package/.nvmrc +1 -1
  9. package/CHANGELOG.md +20 -2
  10. package/contributor-docs/CONTRIBUTING.md +14 -58
  11. package/dist/browser.esm.js +105 -108
  12. package/dist/browser.esm.js.map +1 -1
  13. package/dist/browser.umd.js +105 -108
  14. package/dist/browser.umd.js.map +1 -1
  15. package/docs/content/BranchName.md +6 -5
  16. package/docs/content/Details.md +4 -8
  17. package/docs/content/Heading.md +5 -10
  18. package/docs/content/Label.md +6 -7
  19. package/docs/content/ProgressBar.mdx +7 -6
  20. package/docs/content/Text.md +0 -6
  21. package/docs/content/{ActionList2.mdx → drafts/ActionList2.mdx} +5 -9
  22. package/docs/content/drafts/ActionMenu2.mdx +251 -0
  23. package/docs/content/status.mdx +1 -1
  24. package/docs/content/system-props.mdx +1 -1
  25. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +9 -1
  26. package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +1 -1
  27. package/docs/src/component-checklist.js +10 -2
  28. package/lib/ActionList/Item.js +1 -1
  29. package/lib/ActionList2/Divider.d.ts +3 -2
  30. package/lib/ActionList2/Divider.js +10 -5
  31. package/lib/ActionList2/Item.js +21 -5
  32. package/lib/ActionList2/List.js +11 -1
  33. package/lib/ActionList2/MenuContext.d.ts +10 -0
  34. package/lib/ActionList2/MenuContext.js +15 -0
  35. package/lib/ActionList2/Selection.js +14 -1
  36. package/lib/ActionList2/index.d.ts +1 -2
  37. package/lib/ActionMenu2.d.ts +313 -0
  38. package/lib/ActionMenu2.js +91 -0
  39. package/lib/Autocomplete/Autocomplete.d.ts +2 -1
  40. package/lib/Autocomplete/AutocompleteInput.d.ts +2 -1
  41. package/lib/Avatar.d.ts +1 -2
  42. package/lib/Avatar.js +1 -1
  43. package/lib/BranchName.d.ts +1 -2
  44. package/lib/BranchName.js +1 -1
  45. package/lib/Button/Button.d.ts +2 -2
  46. package/lib/Button/ButtonClose.d.ts +2 -2
  47. package/lib/Button/ButtonDanger.d.ts +2 -2
  48. package/lib/Button/ButtonInvisible.d.ts +2 -2
  49. package/lib/Button/ButtonOutline.d.ts +2 -2
  50. package/lib/Button/ButtonPrimary.d.ts +2 -2
  51. package/lib/CircleOcticon.d.ts +35 -35
  52. package/lib/Details.d.ts +1 -2
  53. package/lib/Details.js +1 -3
  54. package/lib/Dialog.d.ts +37 -37
  55. package/lib/Dropdown.d.ts +8 -72
  56. package/lib/DropdownMenu/DropdownButton.d.ts +6 -3
  57. package/lib/FilterList.d.ts +1 -1
  58. package/lib/Heading.d.ts +1 -2
  59. package/lib/Heading.js +1 -6
  60. package/lib/Position.d.ts +4 -4
  61. package/lib/ProgressBar.d.ts +16 -11
  62. package/lib/ProgressBar.js +6 -10
  63. package/lib/SelectMenu/SelectMenu.d.ts +11 -10
  64. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  65. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  66. package/lib/Spinner.d.ts +1 -2
  67. package/lib/Spinner.js +1 -3
  68. package/lib/TextInputWithTokens.d.ts +2 -1
  69. package/lib/Token/AvatarToken.d.ts +1 -1
  70. package/lib/Token/IssueLabelToken.d.ts +1 -1
  71. package/lib/Token/Token.d.ts +1 -1
  72. package/lib/__tests__/Avatar.test.js +4 -2
  73. package/lib/__tests__/Avatar.types.test.d.ts +3 -0
  74. package/lib/__tests__/Avatar.types.test.js +31 -0
  75. package/lib/__tests__/BranchName.types.test.d.ts +3 -0
  76. package/lib/__tests__/BranchName.types.test.js +28 -0
  77. package/lib/__tests__/Details.types.test.d.ts +3 -0
  78. package/lib/__tests__/Details.types.test.js +28 -0
  79. package/lib/__tests__/Heading.test.js +63 -30
  80. package/lib/__tests__/Heading.types.test.d.ts +3 -0
  81. package/lib/__tests__/Heading.types.test.js +28 -0
  82. package/lib/drafts.d.ts +1 -0
  83. package/lib/drafts.js +13 -0
  84. package/lib/stories/ActionMenu2.stories.js +433 -0
  85. package/lib-esm/ActionList/Item.js +1 -1
  86. package/lib-esm/ActionList2/Divider.d.ts +3 -2
  87. package/lib-esm/ActionList2/Divider.js +8 -5
  88. package/lib-esm/ActionList2/Item.js +19 -5
  89. package/lib-esm/ActionList2/List.js +9 -1
  90. package/lib-esm/ActionList2/MenuContext.d.ts +10 -0
  91. package/lib-esm/ActionList2/MenuContext.js +3 -0
  92. package/lib-esm/ActionList2/Selection.js +12 -1
  93. package/lib-esm/ActionList2/index.d.ts +1 -2
  94. package/lib-esm/ActionMenu2.d.ts +313 -0
  95. package/lib-esm/ActionMenu2.js +67 -0
  96. package/lib-esm/Autocomplete/Autocomplete.d.ts +2 -1
  97. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +2 -1
  98. package/lib-esm/Avatar.d.ts +1 -2
  99. package/lib-esm/Avatar.js +2 -2
  100. package/lib-esm/BranchName.d.ts +1 -2
  101. package/lib-esm/BranchName.js +2 -2
  102. package/lib-esm/Button/Button.d.ts +2 -2
  103. package/lib-esm/Button/ButtonClose.d.ts +2 -2
  104. package/lib-esm/Button/ButtonDanger.d.ts +2 -2
  105. package/lib-esm/Button/ButtonInvisible.d.ts +2 -2
  106. package/lib-esm/Button/ButtonOutline.d.ts +2 -2
  107. package/lib-esm/Button/ButtonPrimary.d.ts +2 -2
  108. package/lib-esm/CircleOcticon.d.ts +35 -35
  109. package/lib-esm/Details.d.ts +1 -2
  110. package/lib-esm/Details.js +1 -2
  111. package/lib-esm/Dialog.d.ts +37 -37
  112. package/lib-esm/Dropdown.d.ts +8 -72
  113. package/lib-esm/DropdownMenu/DropdownButton.d.ts +6 -3
  114. package/lib-esm/FilterList.d.ts +1 -1
  115. package/lib-esm/Heading.d.ts +1 -2
  116. package/lib-esm/Heading.js +2 -6
  117. package/lib-esm/Position.d.ts +4 -4
  118. package/lib-esm/ProgressBar.d.ts +16 -11
  119. package/lib-esm/ProgressBar.js +7 -11
  120. package/lib-esm/SelectMenu/SelectMenu.d.ts +11 -10
  121. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  122. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  123. package/lib-esm/Spinner.d.ts +1 -2
  124. package/lib-esm/Spinner.js +1 -2
  125. package/lib-esm/TextInputWithTokens.d.ts +2 -1
  126. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  127. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  128. package/lib-esm/Token/Token.d.ts +1 -1
  129. package/lib-esm/__tests__/Avatar.test.js +4 -2
  130. package/lib-esm/__tests__/Avatar.types.test.d.ts +3 -0
  131. package/lib-esm/__tests__/Avatar.types.test.js +16 -0
  132. package/lib-esm/__tests__/BranchName.types.test.d.ts +3 -0
  133. package/lib-esm/__tests__/BranchName.types.test.js +13 -0
  134. package/lib-esm/__tests__/Details.types.test.d.ts +3 -0
  135. package/lib-esm/__tests__/Details.types.test.js +13 -0
  136. package/lib-esm/__tests__/Heading.test.js +62 -30
  137. package/lib-esm/__tests__/Heading.types.test.d.ts +3 -0
  138. package/lib-esm/__tests__/Heading.types.test.js +13 -0
  139. package/lib-esm/drafts.d.ts +1 -0
  140. package/lib-esm/drafts.js +2 -1
  141. package/lib-esm/stories/ActionMenu2.stories.js +376 -0
  142. package/package-lock.json +321 -269
  143. package/package.json +11 -5
  144. package/script/component-status-project/build.ts +100 -0
  145. package/script/component-status-project/deploy.rb +142 -0
  146. package/src/ActionList/Item.tsx +1 -0
  147. package/src/ActionList2/Divider.tsx +13 -8
  148. package/src/ActionList2/Item.tsx +13 -3
  149. package/src/ActionList2/List.tsx +6 -2
  150. package/src/ActionList2/MenuContext.tsx +6 -0
  151. package/src/ActionList2/Selection.tsx +11 -1
  152. package/src/ActionMenu2.tsx +94 -0
  153. package/src/Avatar.tsx +2 -4
  154. package/src/BranchName.tsx +3 -3
  155. package/src/Details.tsx +1 -5
  156. package/src/Heading.tsx +2 -9
  157. package/src/ProgressBar.tsx +11 -10
  158. package/src/Spinner.tsx +1 -3
  159. package/src/__tests__/Avatar.test.tsx +1 -1
  160. package/src/__tests__/Avatar.types.test.tsx +11 -0
  161. package/src/__tests__/BranchName.types.test.tsx +11 -0
  162. package/src/__tests__/Details.types.test.tsx +11 -0
  163. package/src/__tests__/Heading.test.tsx +71 -25
  164. package/src/__tests__/Heading.types.test.tsx +11 -0
  165. package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +4 -0
  166. package/src/drafts.ts +1 -0
  167. package/src/stories/ActionMenu2.stories.tsx +551 -0
  168. package/stats.html +1 -1
  169. package/tsconfig.build.json +1 -1
  170. package/tsconfig.json +1 -1
@@ -0,0 +1,376 @@
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(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, {
45
+ overlayProps: {
46
+ width: 'medium'
47
+ }
48
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, {
49
+ "aria-label": "Open Actions Menu"
50
+ }, /*#__PURE__*/React.createElement(ServerIcon, null)), /*#__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, {
51
+ variant: "block"
52
+ }, "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, {
53
+ variant: "block"
54
+ }, "Create a brand new Codespace with a fresh image and checkout this branch."), /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C")))));
55
+ }
56
+ ActionsStory.storyName = 'Actions';
57
+ export function ExternalAnchor() {
58
+ const [actionFired, fireAction] = React.useState('');
59
+
60
+ const onSelect = name => fireAction(name);
61
+
62
+ const [open, setOpen] = React.useState(false);
63
+ const triggerRef = /*#__PURE__*/React.createRef();
64
+ 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, {
65
+ ref: triggerRef,
66
+ onClick: () => setOpen(!open)
67
+ }, open ? 'Close Menu' : 'Open Menu')), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(ActionMenu, {
68
+ open: open,
69
+ onOpenChange: setOpen,
70
+ anchorRef: triggerRef
71
+ }, /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
72
+ onSelect: () => onSelect('Copy link')
73
+ }, "Copy link", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/React.createElement(ActionList.Item, {
74
+ onSelect: () => onSelect('Quote reply')
75
+ }, "Quote reply", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/React.createElement(ActionList.Item, {
76
+ onSelect: () => onSelect('Edit comment')
77
+ }, "Edit comment", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
78
+ variant: "danger",
79
+ onSelect: () => onSelect('Delete file')
80
+ }, "Delete file", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318D")))));
81
+ }
82
+ ExternalAnchor.storyName = 'External Anchor';
83
+ export function ControlledMenu() {
84
+ const [actionFired, fireAction] = React.useState('');
85
+
86
+ const onSelect = name => fireAction(name);
87
+
88
+ const [open, setOpen] = React.useState(false);
89
+ const triggerRef = /*#__PURE__*/React.createRef();
90
+ 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, {
91
+ ref: triggerRef,
92
+ onClick: () => setOpen(!open)
93
+ }, open ? 'Close Menu' : 'Open Menu')), /*#__PURE__*/React.createElement("br", null), /*#__PURE__*/React.createElement(ActionMenu, {
94
+ open: open,
95
+ onOpenChange: setOpen,
96
+ overlayProps: {
97
+ // Because the component is controlled from outside, but the anchor is still internal,
98
+ // clicking the external button should not be counted as "clicking outside"
99
+ ignoreClickRefs: [triggerRef]
100
+ }
101
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, null, "Anchor"), /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
102
+ onSelect: () => onSelect('Copy link')
103
+ }, "Copy link", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318C")), /*#__PURE__*/React.createElement(ActionList.Item, {
104
+ onSelect: () => onSelect('Quote reply')
105
+ }, "Quote reply", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318Q")), /*#__PURE__*/React.createElement(ActionList.Item, {
106
+ onSelect: () => onSelect('Edit comment')
107
+ }, "Edit comment", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318E")), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Item, {
108
+ variant: "danger",
109
+ onSelect: () => onSelect('Delete file')
110
+ }, "Delete file", /*#__PURE__*/React.createElement(ActionList.TrailingVisual, null, "\u2318D")))));
111
+ }
112
+ ControlledMenu.storyName = 'Controlled Menu';
113
+ export function CustomAnchor() {
114
+ const [actionFired, fireAction] = React.useState('');
115
+
116
+ const onSelect = name => fireAction(name);
117
+
118
+ 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", {
119
+ style: {
120
+ cursor: 'pointer'
121
+ },
122
+ "aria-label": "Open column options"
123
+ }, /*#__PURE__*/React.createElement(KebabHorizontalIcon, null))), /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Item, {
124
+ onSelect: () => onSelect('Rename')
125
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(PencilIcon, null)), "Rename"), /*#__PURE__*/React.createElement(ActionList.Item, {
126
+ onSelect: () => onSelect('Archive')
127
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(ArchiveIcon, null)), "Archive all cards"), /*#__PURE__*/React.createElement(ActionList.Item, {
128
+ variant: "danger",
129
+ onSelect: () => onSelect('Delete file')
130
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(TrashIcon, null)), "Delete"))));
131
+ }
132
+ CustomAnchor.storyName = 'Custom Anchor';
133
+ export function MemexTableMenu() {
134
+ const [name, setName] = React.useState('Estimate');
135
+ const inputRef = /*#__PURE__*/React.createRef();
136
+ /** To add custom components to the Menu,
137
+ * you need to switch to a controlled menu
138
+ */
139
+
140
+ const [open, setOpen] = React.useState(false);
141
+
142
+ const handleKeyPress = event => {
143
+ if (event.key === 'Enter') {
144
+ setName(event.currentTarget.value);
145
+ setOpen(false);
146
+ }
147
+ };
148
+ /** This requires inside knowledge. If you to do this with onBlur
149
+ * on the input, it doesn't work :(
150
+ */
151
+
152
+
153
+ const handleClickOutside = () => {
154
+ if (inputRef.current) setName(inputRef.current.value);
155
+ setOpen(false);
156
+ };
157
+
158
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Memex Table Menu"), /*#__PURE__*/React.createElement(Box, {
159
+ sx: {
160
+ width: 200,
161
+ display: 'flex',
162
+ justifyContent: 'space-between',
163
+ p: 2,
164
+ border: '1px solid',
165
+ borderColor: 'border.default'
166
+ }
167
+ }, /*#__PURE__*/React.createElement(Text, {
168
+ sx: {
169
+ fontSize: 0,
170
+ fontWeight: 'bold'
171
+ }
172
+ }, name), /*#__PURE__*/React.createElement(ActionMenu, {
173
+ open: open,
174
+ onOpenChange: setOpen,
175
+ overlayProps: {
176
+ onClickOutside: handleClickOutside
177
+ }
178
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, {
179
+ "aria-label": "Open Estimate column options menu",
180
+ sx: {
181
+ p: 0,
182
+ display: 'flex',
183
+ alignItems: 'center',
184
+ justifyContent: 'center'
185
+ }
186
+ }, /*#__PURE__*/React.createElement(TriangleDownIcon, null)), /*#__PURE__*/React.createElement(TextInput, {
187
+ ref: inputRef,
188
+ sx: {
189
+ m: 2
190
+ },
191
+ defaultValue: name,
192
+ onKeyPress: handleKeyPress
193
+ }), /*#__PURE__*/React.createElement(ActionMenu.Divider, {
194
+ sx: {
195
+ m: 0
196
+ }
197
+ }), /*#__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, {
198
+ disabled: true
199
+ }, "Hide field"), /*#__PURE__*/React.createElement(ActionList.Item, {
200
+ variant: "danger"
201
+ }, "Delete file")))));
202
+ }
203
+ MemexTableMenu.storyName = 'Memex Table Menu';
204
+ /* copied from github/memex */
205
+
206
+ const LayoutToggleItem = ({
207
+ selected,
208
+ children,
209
+ Icon,
210
+ ...props
211
+ }) => {
212
+ return /*#__PURE__*/React.createElement(FormGroup, {
213
+ sx: {
214
+ flex: 'auto',
215
+ borderRadius: 2,
216
+ border: '1px solid',
217
+ borderColor: selected ? 'accent.emphasis' : 'border.default',
218
+ textAlign: 'center',
219
+ cursor: 'pointer',
220
+ backgroundColor: selected ? 'accent.subtle' : '',
221
+ boxShadow: selected ? theme => `inset 0 0 0 1px ${theme.colors.accent.emphasis}` : '',
222
+ mb: 2,
223
+ mt: 1,
224
+ '&:hover': {
225
+ backgroundColor: !selected ? 'canvas.subtle' : ''
226
+ },
227
+ '&:first-of-type': {
228
+ borderTopRightRadius: '0px',
229
+ borderBottomRightRadius: '0px',
230
+ borderRight: selected ? undefined : '0'
231
+ },
232
+ '&:last-of-type': {
233
+ borderTopLeftRadius: '0px',
234
+ borderBottomLeftRadius: '0px',
235
+ borderLeft: selected ? undefined : '0'
236
+ }
237
+ }
238
+ }, /*#__PURE__*/React.createElement(FormGroup.Label, _extends({
239
+ htmlFor: "layout-selector",
240
+ sx: {
241
+ fontWeight: 'normal',
242
+ cursor: 'pointer',
243
+ px: 3,
244
+ py: 2,
245
+ mb: 0
246
+ }
247
+ }, props), /*#__PURE__*/React.createElement(Box, {
248
+ sx: {
249
+ textAlign: 'center',
250
+ flexDirection: 'column',
251
+ m: 'auto',
252
+ alignItems: 'center',
253
+ display: 'flex'
254
+ }
255
+ }, /*#__PURE__*/React.createElement(Icon, {
256
+ size: "medium"
257
+ }), /*#__PURE__*/React.createElement(Text, {
258
+ sx: {
259
+ color: selected ? 'fg.default' : 'fg.muted',
260
+ fontSize: 0
261
+ }
262
+ }, children))));
263
+ };
264
+
265
+ LayoutToggleItem.displayName = "LayoutToggleItem";
266
+
267
+ /* copied from github/memex */
268
+ const ViewChangeButtons = ({
269
+ setOpen
270
+ }) => /*#__PURE__*/React.createElement(Box, {
271
+ sx: {
272
+ display: 'flex'
273
+ }
274
+ }, /*#__PURE__*/React.createElement(ButtonInvisible, {
275
+ onClick: () => setOpen(false),
276
+ sx: {
277
+ flex: 'auto',
278
+ minWidth: '50%',
279
+ borderRight: '1px solid',
280
+ borderColor: 'border.default',
281
+ borderRadius: 0,
282
+ mt: -2,
283
+ mb: -2,
284
+ py: 3,
285
+ '&:hover': {
286
+ bg: 'canvas.inset'
287
+ }
288
+ }
289
+ }, "Save changes"), /*#__PURE__*/React.createElement(ButtonInvisible, {
290
+ onClick: () => setOpen(false),
291
+ sx: {
292
+ flex: 'auto',
293
+ color: 'fg.muted',
294
+ borderRadius: 0,
295
+ mt: -2,
296
+ mb: -2,
297
+ py: 3,
298
+ fontWeight: 'normal',
299
+ '&:hover': {
300
+ bg: 'canvas.inset'
301
+ }
302
+ }
303
+ }, "Discard changes"));
304
+
305
+ ViewChangeButtons.displayName = "ViewChangeButtons";
306
+ export function MemexViewOptionsMenu() {
307
+ const [open, setOpen] = React.useState(false);
308
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h1", null, "Memex View Options Menu"), /*#__PURE__*/React.createElement(Box, {
309
+ sx: {
310
+ display: 'flex',
311
+ alignItems: 'center'
312
+ }
313
+ }, /*#__PURE__*/React.createElement(Text, {
314
+ sx: {
315
+ fontSize: 1,
316
+ mr: 3
317
+ }
318
+ }, /*#__PURE__*/React.createElement(StyledOcticon, {
319
+ icon: ProjectIcon,
320
+ sx: {
321
+ mr: 2
322
+ }
323
+ }), "React"), /*#__PURE__*/React.createElement(ActionMenu, {
324
+ open: open,
325
+ onOpenChange: setOpen,
326
+ overlayProps: {
327
+ width: 'medium'
328
+ }
329
+ }, /*#__PURE__*/React.createElement(ActionMenu.Button, {
330
+ "aria-label": "Open View options menu",
331
+ sx: {
332
+ p: 0,
333
+ width: 18,
334
+ height: 18,
335
+ display: 'flex',
336
+ alignItems: 'center',
337
+ justifyContent: 'center'
338
+ }
339
+ }, /*#__PURE__*/React.createElement(TriangleDownIcon, null)), /*#__PURE__*/React.createElement(ActionList, null, /*#__PURE__*/React.createElement(ActionList.Group, {
340
+ title: "Layout"
341
+ }, /*#__PURE__*/React.createElement("li", {
342
+ style: {
343
+ listStyle: 'none'
344
+ }
345
+ }, /*#__PURE__*/React.createElement(Box, {
346
+ sx: {
347
+ mx: 3,
348
+ display: 'flex'
349
+ }
350
+ }, /*#__PURE__*/React.createElement(LayoutToggleItem, {
351
+ selected: true,
352
+ Icon: TableIcon
353
+ }, "Table"), /*#__PURE__*/React.createElement(LayoutToggleItem, {
354
+ selected: false,
355
+ Icon: ProjectIcon
356
+ }, "Board")))), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement(ActionList.Group, {
357
+ title: "Configuration"
358
+ }, /*#__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, {
359
+ disabled: true
360
+ }, /*#__PURE__*/React.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/React.createElement(TrashIcon, null)), "Delete view"), /*#__PURE__*/React.createElement(ActionList.Divider, null), /*#__PURE__*/React.createElement("li", {
361
+ style: {
362
+ listStyle: 'none'
363
+ }
364
+ }, /*#__PURE__*/React.createElement(ViewChangeButtons, {
365
+ setOpen: setOpen
366
+ }))))));
367
+ }
368
+ MemexViewOptionsMenu.storyName = 'Memex View Options Menu';
369
+ export function UnexpectedSelectionVariant() {
370
+ 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(ActionList, {
371
+ selectionVariant: "multiple"
372
+ }, /*#__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, {
373
+ variant: "danger"
374
+ }, "Delete file"))));
375
+ }
376
+ UnexpectedSelectionVariant.storyName = 'Unexpected selectionVariant';