@primer/components 31.2.0-rc.0b631515 → 31.2.0-rc.25d7c83f

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 (111) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/dist/browser.esm.js +473 -471
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +103 -101
  5. package/dist/browser.umd.js.map +1 -1
  6. package/docs/content/ActionList2.mdx +354 -0
  7. package/docs/content/getting-started.md +1 -1
  8. package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +17 -0
  9. package/lib/ActionList2/Description.d.ts +12 -0
  10. package/lib/ActionList2/Description.js +53 -0
  11. package/lib/ActionList2/Divider.d.ts +5 -0
  12. package/lib/ActionList2/Divider.js +35 -0
  13. package/lib/ActionList2/Group.d.ts +11 -0
  14. package/lib/ActionList2/Group.js +57 -0
  15. package/lib/ActionList2/Header.d.ts +26 -0
  16. package/lib/ActionList2/Header.js +55 -0
  17. package/lib/ActionList2/Item.d.ts +63 -0
  18. package/lib/ActionList2/Item.js +234 -0
  19. package/lib/ActionList2/LinkItem.d.ts +17 -0
  20. package/lib/ActionList2/LinkItem.js +57 -0
  21. package/lib/ActionList2/List.d.ts +26 -0
  22. package/lib/ActionList2/List.js +59 -0
  23. package/lib/ActionList2/Selection.d.ts +5 -0
  24. package/lib/ActionList2/Selection.js +70 -0
  25. package/lib/ActionList2/Visuals.d.ts +9 -0
  26. package/lib/ActionList2/Visuals.js +90 -0
  27. package/lib/ActionList2/index.d.ts +36 -0
  28. package/lib/ActionList2/index.js +47 -0
  29. package/lib/_TextInputWrapper.js +2 -2
  30. package/lib/__tests__/ActionList2.test.d.ts +1 -0
  31. package/lib/__tests__/ActionList2.test.js +53 -0
  32. package/lib/__tests__/AnchoredOverlay.test.js +4 -2
  33. package/lib/__tests__/utils/createSlots.test.d.ts +1 -0
  34. package/lib/__tests__/utils/createSlots.test.js +75 -0
  35. package/lib/stories/ActionList2.stories.js +907 -0
  36. package/lib/stories/TextInput.stories.js +144 -0
  37. package/lib/sx.d.ts +2 -0
  38. package/lib/sx.js +8 -0
  39. package/lib/theme-preval.js +81 -2
  40. package/lib/unreleased.d.ts +7 -0
  41. package/lib/unreleased.js +18 -0
  42. package/lib/utils/create-slots.d.ts +17 -0
  43. package/lib/utils/create-slots.js +105 -0
  44. package/lib/utils/testing.d.ts +14 -1
  45. package/lib/utils/use-force-update.d.ts +1 -0
  46. package/lib/utils/use-force-update.js +19 -0
  47. package/lib-esm/ActionList2/Description.d.ts +12 -0
  48. package/lib-esm/ActionList2/Description.js +37 -0
  49. package/lib-esm/ActionList2/Divider.d.ts +5 -0
  50. package/lib-esm/ActionList2/Divider.js +23 -0
  51. package/lib-esm/ActionList2/Group.d.ts +11 -0
  52. package/lib-esm/ActionList2/Group.js +40 -0
  53. package/lib-esm/ActionList2/Header.d.ts +26 -0
  54. package/lib-esm/ActionList2/Header.js +44 -0
  55. package/lib-esm/ActionList2/Item.d.ts +63 -0
  56. package/lib-esm/ActionList2/Item.js +201 -0
  57. package/lib-esm/ActionList2/LinkItem.d.ts +17 -0
  58. package/lib-esm/ActionList2/LinkItem.js +43 -0
  59. package/lib-esm/ActionList2/List.d.ts +26 -0
  60. package/lib-esm/ActionList2/List.js +37 -0
  61. package/lib-esm/ActionList2/Selection.d.ts +5 -0
  62. package/lib-esm/ActionList2/Selection.js +52 -0
  63. package/lib-esm/ActionList2/Visuals.d.ts +9 -0
  64. package/lib-esm/ActionList2/Visuals.js +68 -0
  65. package/lib-esm/ActionList2/index.d.ts +36 -0
  66. package/lib-esm/ActionList2/index.js +33 -0
  67. package/lib-esm/_TextInputWrapper.js +2 -2
  68. package/lib-esm/__tests__/ActionList2.test.d.ts +1 -0
  69. package/lib-esm/__tests__/ActionList2.test.js +41 -0
  70. package/lib-esm/__tests__/AnchoredOverlay.test.js +4 -2
  71. package/lib-esm/__tests__/utils/createSlots.test.d.ts +1 -0
  72. package/lib-esm/__tests__/utils/createSlots.test.js +67 -0
  73. package/lib-esm/stories/ActionList2.stories.js +796 -0
  74. package/lib-esm/stories/TextInput.stories.js +117 -0
  75. package/lib-esm/sx.d.ts +2 -0
  76. package/lib-esm/sx.js +3 -1
  77. package/lib-esm/theme-preval.js +81 -2
  78. package/lib-esm/unreleased.d.ts +7 -0
  79. package/lib-esm/unreleased.js +8 -0
  80. package/lib-esm/utils/create-slots.d.ts +17 -0
  81. package/lib-esm/utils/create-slots.js +84 -0
  82. package/lib-esm/utils/testing.d.ts +14 -1
  83. package/lib-esm/utils/use-force-update.d.ts +1 -0
  84. package/lib-esm/utils/use-force-update.js +6 -0
  85. package/package-lock.json +146 -7
  86. package/package.json +4 -2
  87. package/src/ActionList2/Description.tsx +49 -0
  88. package/src/ActionList2/Divider.tsx +24 -0
  89. package/src/ActionList2/Group.tsx +34 -0
  90. package/src/ActionList2/Header.tsx +58 -0
  91. package/src/ActionList2/Item.tsx +223 -0
  92. package/src/ActionList2/LinkItem.tsx +49 -0
  93. package/src/ActionList2/List.tsx +55 -0
  94. package/src/ActionList2/Selection.tsx +40 -0
  95. package/src/ActionList2/Visuals.tsx +76 -0
  96. package/src/ActionList2/index.ts +39 -0
  97. package/src/_TextInputWrapper.tsx +7 -0
  98. package/src/__tests__/ActionList2.test.tsx +47 -0
  99. package/src/__tests__/AnchoredOverlay.test.tsx +2 -2
  100. package/src/__tests__/__snapshots__/ActionList2.test.tsx.snap +14 -0
  101. package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +35 -135
  102. package/src/__tests__/utils/__snapshots__/createSlots.test.tsx.snap +55 -0
  103. package/src/__tests__/utils/createSlots.test.tsx +74 -0
  104. package/src/stories/ActionList2.stories.tsx +1290 -0
  105. package/src/stories/TextInput.stories.tsx +113 -0
  106. package/src/sx.ts +3 -0
  107. package/src/theme-preval.js +1 -0
  108. package/src/unreleased.ts +9 -0
  109. package/src/utils/create-slots.tsx +96 -0
  110. package/src/utils/use-force-update.ts +7 -0
  111. package/stats.html +1 -1
@@ -0,0 +1,907 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.SimpleListStory = SimpleListStory;
7
+ exports.WithIcon = WithIcon;
8
+ exports.WithAvatar = WithAvatar;
9
+ exports.WithDescription = WithDescription;
10
+ exports.SingleSelectListStory = SingleSelectListStory;
11
+ exports.MultiSelectListStory = MultiSelectListStory;
12
+ exports.DisabledStory = DisabledStory;
13
+ exports.GroupsStory = GroupsStory;
14
+ exports.ActionsStory = ActionsStory;
15
+ exports.ComplexListInsetVariantStory = ComplexListInsetVariantStory;
16
+ exports.ComplexListFullVariantStory = ComplexListFullVariantStory;
17
+ exports.LinkItemStory = LinkItemStory;
18
+ exports.DOMPropsStory = DOMPropsStory;
19
+ exports.CustomItemChildren = CustomItemChildren;
20
+ exports.SizeStressTestingStory = SizeStressTestingStory;
21
+ exports.AllCombinations = AllCombinations;
22
+ exports.ConditionalChildren = ConditionalChildren;
23
+ exports.NestedChildren = NestedChildren;
24
+ exports.ChildWithInternalState = ChildWithInternalState;
25
+ exports.ChildWithSideEffects = ChildWithSideEffects;
26
+ exports.WithSx = WithSx;
27
+ exports.MemexGroupBy = MemexGroupBy;
28
+ exports.MemexSortable = MemexSortable;
29
+ exports.AsyncListStory = AsyncListStory;
30
+ exports.InsideOverlay = InsideOverlay;
31
+ exports.default = void 0;
32
+
33
+ var _octiconsReact = require("@primer/octicons-react");
34
+
35
+ var _react = _interopRequireWildcard(require("react"));
36
+
37
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
38
+
39
+ var _reactDnd = require("react-dnd");
40
+
41
+ var _reactDndHtml5Backend = require("react-dnd-html5-backend");
42
+
43
+ var _2 = require("..");
44
+
45
+ var _ActionList2 = require("../ActionList2");
46
+
47
+ var _Header = require("../ActionList/Header");
48
+
49
+ var _BaseStyles = _interopRequireDefault(require("../BaseStyles"));
50
+
51
+ var _Avatar = _interopRequireDefault(require("../Avatar"));
52
+
53
+ var _Button = require("../Button");
54
+
55
+ var _TextInput = _interopRequireDefault(require("../TextInput"));
56
+
57
+ var _Spinner = _interopRequireDefault(require("../Spinner"));
58
+
59
+ var _Box = _interopRequireDefault(require("../Box"));
60
+
61
+ var _AnchoredOverlay = require("../AnchoredOverlay");
62
+
63
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
64
+
65
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
66
+
67
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
68
+
69
+ 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); }
70
+
71
+ const ActionList = Object.assign(_ActionList2.ActionList, {
72
+ Header: _Header.Header
73
+ });
74
+ const meta = {
75
+ title: 'Composite components/ActionList2',
76
+ component: ActionList,
77
+ decorators: [Story => /*#__PURE__*/_react.default.createElement(_2.ThemeProvider, null, /*#__PURE__*/_react.default.createElement(_BaseStyles.default, null, /*#__PURE__*/_react.default.createElement(Story, null)))],
78
+ parameters: {
79
+ controls: {
80
+ disable: true
81
+ }
82
+ }
83
+ };
84
+ var _default = meta;
85
+ exports.default = _default;
86
+
87
+ const ErsatzOverlay = _styledComponents.default.div.withConfig({
88
+ displayName: "ActionList2stories__ErsatzOverlay",
89
+ componentId: "f9cezu-0"
90
+ })(["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:", ";"], ({
91
+ maxWidth
92
+ }) => maxWidth || 'none');
93
+
94
+ function SimpleListStory() {
95
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Simple List"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "Copy link"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "Quote reply"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "Edit comment"), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
96
+ variant: "danger"
97
+ }, "Delete file"))));
98
+ }
99
+
100
+ SimpleListStory.storyName = 'Simple List';
101
+
102
+ function WithIcon() {
103
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "With Icon"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "github.com/primer"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LawIcon, null)), "MIT License"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "256 stars"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.GitForkIcon, null)), "3 forks"), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
104
+ variant: "danger"
105
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.AlertIcon, null)), "4 vulnerabilities"))));
106
+ }
107
+
108
+ WithIcon.storyName = 'With Icon';
109
+ const users = [{
110
+ login: 'pksjce',
111
+ name: 'Pavithra Kodmad'
112
+ }, {
113
+ login: 'jfuchs',
114
+ name: 'Jonathan Fuchs'
115
+ }, {
116
+ login: 'colebemis',
117
+ name: 'Cole Bemis'
118
+ }, {
119
+ login: 'mperrotti',
120
+ name: 'Mike Perrotti'
121
+ }, {
122
+ login: 'dgreif',
123
+ name: 'Dusty Greif'
124
+ }, {
125
+ login: 'smockle',
126
+ name: 'Clay Miller'
127
+ }, {
128
+ login: 'siddharthkp',
129
+ name: 'Siddharth Kshetrapal'
130
+ }];
131
+
132
+ function WithAvatar() {
133
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "With Avatar"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, null, users.map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
134
+ key: user.login
135
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
136
+ src: `https://github.com/${user.login}.png`
137
+ })), user.login)))));
138
+ }
139
+
140
+ WithAvatar.storyName = 'With Avatar';
141
+ const labels = [{
142
+ name: 'blocked',
143
+ color: '#86181d',
144
+ description: 'Someone or something is preventing this from moving forward'
145
+ }, {
146
+ name: 'dependencies',
147
+ color: '#0366d6',
148
+ description: 'Pull requests that update a dependency file'
149
+ }, {
150
+ name: 'duplicate',
151
+ color: '#cfd3d7',
152
+ description: 'This issue or pull request already exists'
153
+ }, {
154
+ name: 'good first issue',
155
+ color: '#7057ff',
156
+ description: 'Good for newcomers'
157
+ }];
158
+
159
+ const LabelColor = ({
160
+ color
161
+ }) => /*#__PURE__*/_react.default.createElement(_Box.default, {
162
+ sx: {
163
+ backgroundColor: color,
164
+ width: '14px',
165
+ height: '14px',
166
+ borderRadius: 3
167
+ }
168
+ });
169
+
170
+ LabelColor.displayName = "LabelColor";
171
+
172
+ function WithDescription() {
173
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "With Description & Dividers"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
174
+ showDividers: true
175
+ }, users.map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
176
+ key: user.login
177
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
178
+ src: `https://github.com/${user.login}.png`
179
+ })), user.login, /*#__PURE__*/_react.default.createElement(ActionList.Description, null, user.name))), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), labels.map((label, index) => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
180
+ key: index
181
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(LabelColor, {
182
+ color: label.color
183
+ })), label.name, /*#__PURE__*/_react.default.createElement(ActionList.Description, {
184
+ variant: "block"
185
+ }, label.description))))));
186
+ }
187
+
188
+ WithDescription.storyName = 'With Description & Dividers';
189
+ const projects = [{
190
+ name: 'Primer Backlog',
191
+ scope: 'GitHub'
192
+ }, {
193
+ name: 'Accessibility',
194
+ scope: 'GitHub'
195
+ }, {
196
+ name: 'Octicons',
197
+ scope: 'github/primer'
198
+ }, {
199
+ name: 'Primer React',
200
+ scope: 'github/primer'
201
+ }];
202
+
203
+ function SingleSelectListStory() {
204
+ const [selectedIndex, setSelectedIndex] = _react.default.useState(1);
205
+
206
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Single Select List"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
207
+ selectionVariant: "single",
208
+ showDividers: true,
209
+ role: "listbox",
210
+ "aria-label": "Select a project"
211
+ }, projects.map((project, index) => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
212
+ key: index,
213
+ role: "option",
214
+ selected: index === selectedIndex,
215
+ onSelect: () => setSelectedIndex(index)
216
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.TableIcon, null)), project.name, /*#__PURE__*/_react.default.createElement(ActionList.Description, {
217
+ variant: "block"
218
+ }, project.scope))))));
219
+ }
220
+
221
+ SingleSelectListStory.storyName = 'Single Select';
222
+
223
+ function MultiSelectListStory() {
224
+ const [assignees, setAssignees] = _react.default.useState(users.slice(0, 2));
225
+
226
+ const toggleAssignee = assignee => {
227
+ const assigneeIndex = assignees.findIndex(a => a.login === assignee.login);
228
+ if (assigneeIndex === -1) setAssignees([...assignees, assignee]);else setAssignees(assignees.filter((_, index) => index !== assigneeIndex));
229
+ };
230
+
231
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Multi Select List"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
232
+ selectionVariant: "multiple",
233
+ showDividers: true,
234
+ role: "listbox",
235
+ "aria-label": "Select assignees"
236
+ }, users.map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
237
+ role: "option",
238
+ key: user.login,
239
+ selected: Boolean(assignees.find(assignee => assignee.login === user.login)),
240
+ onSelect: () => toggleAssignee(user)
241
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
242
+ src: `https://github.com/${user.login}.png`
243
+ })), user.login, /*#__PURE__*/_react.default.createElement(ActionList.Description, null, user.name))))));
244
+ }
245
+
246
+ MultiSelectListStory.storyName = 'Multi Select';
247
+
248
+ function DisabledStory() {
249
+ const [selectedIndex, setSelectedIndex] = _react.default.useState(0);
250
+
251
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Disabled Items"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
252
+ selectionVariant: "single",
253
+ showDividers: true,
254
+ role: "listbox",
255
+ "aria-label": "Select a project"
256
+ }, projects.map((project, index) => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
257
+ key: index,
258
+ role: "option",
259
+ selected: index === selectedIndex,
260
+ onSelect: () => setSelectedIndex(index),
261
+ disabled: index === 1
262
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.TableIcon, null)), project.name, /*#__PURE__*/_react.default.createElement(ActionList.Description, {
263
+ variant: "block"
264
+ }, project.scope))))));
265
+ }
266
+
267
+ DisabledStory.storyName = 'Disabled Items';
268
+
269
+ function GroupsStory() {
270
+ const [assignees, setAssignees] = _react.default.useState(users.slice(0, 1));
271
+
272
+ const toggleAssignee = assignee => {
273
+ const assigneeIndex = assignees.findIndex(a => a.login === assignee.login);
274
+ if (assigneeIndex === -1) setAssignees([...assignees, assignee]);else setAssignees(assignees.filter((_, index) => index !== assigneeIndex));
275
+ };
276
+
277
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Groups"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
278
+ selectionVariant: "multiple",
279
+ showDividers: true,
280
+ role: "listbox",
281
+ "aria-label": "Select reviewers"
282
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Group, {
283
+ title: "Suggestions",
284
+ variant: "filled"
285
+ }, users.slice(0, 2).map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
286
+ key: user.login,
287
+ role: "option",
288
+ selected: Boolean(assignees.find(assignee => assignee.login === user.login)),
289
+ onSelect: () => toggleAssignee(user)
290
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
291
+ src: `https://github.com/${user.login}.png`
292
+ })), user.login, /*#__PURE__*/_react.default.createElement(ActionList.Description, null, user.name), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
293
+ variant: "block"
294
+ }, "Recently edited these files")))), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
295
+ title: "Everyone",
296
+ variant: "filled"
297
+ }, users.slice(2).map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
298
+ role: "option",
299
+ key: user.login,
300
+ selected: Boolean(assignees.find(assignee => assignee.login === user.login)),
301
+ onSelect: () => toggleAssignee(user)
302
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
303
+ src: `https://github.com/${user.login}.png`
304
+ })), user.login, /*#__PURE__*/_react.default.createElement(ActionList.Description, null, user.name)))))));
305
+ }
306
+
307
+ GroupsStory.storyName = 'Groups';
308
+
309
+ function ActionsStory() {
310
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Actions"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
311
+ showDividers: true
312
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ServerIcon, null)), "Open current Codespace", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
313
+ variant: "block"
314
+ }, "Your existing Codespace will be opened to its previous state, and you'll be asked to manually switch to new-branch.")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.PlusCircleIcon, null)), "Create new Codespace", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
315
+ variant: "block"
316
+ }, "Create a brand new Codespace with a fresh image and checkout this branch.")))));
317
+ }
318
+
319
+ ActionsStory.storyName = 'Actions';
320
+
321
+ function ComplexListInsetVariantStory() {
322
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Complex List"), /*#__PURE__*/_react.default.createElement("h2", null, "Inset Variant"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
323
+ showDividers: true
324
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.TypographyIcon, null)), "Rename"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.VersionsIcon, null)), "Duplicate", /*#__PURE__*/_react.default.createElement(ActionList.Description, null, "Create a copy")), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
325
+ title: "Live query",
326
+ variant: "filled"
327
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
328
+ style: {
329
+ color: 'rebeccapurple'
330
+ }
331
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.SearchIcon, null)), "repo:github/memex,github/github")), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
332
+ title: "Layout",
333
+ variant: "subtle"
334
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.NoteIcon, null)), "Table", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
335
+ variant: "block"
336
+ }, "Information-dense table optimized for operations across teams")), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
337
+ role: "listitem"
338
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ProjectIcon, null)), "Board", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
339
+ variant: "block"
340
+ }, "Kanban-style board focused on visual states"))), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Group, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
341
+ style: {
342
+ fontWeight: 'bold'
343
+ }
344
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.FilterIcon, null)), "Save sort and filters to current view"), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
345
+ style: {
346
+ fontWeight: 'bold'
347
+ }
348
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.FilterIcon, null)), "Save sort and filters to new view")), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
349
+ sx: {
350
+ backgroundColor: 'accent.emphasis'
351
+ }
352
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
353
+ sx: {
354
+ color: 'white'
355
+ }
356
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, {
357
+ sx: {
358
+ color: 'white'
359
+ }
360
+ }, /*#__PURE__*/_react.default.createElement(_octiconsReact.GearIcon, null)), "View settings")))));
361
+ }
362
+
363
+ ComplexListInsetVariantStory.storyName = 'Complex List — Inset Variant';
364
+
365
+ function ComplexListFullVariantStory() {
366
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Complex List"), /*#__PURE__*/_react.default.createElement("h2", null, "Full Variant"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
367
+ variant: "full"
368
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.TypographyIcon, null)), "Rename"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.VersionsIcon, null)), "Duplicate", /*#__PURE__*/_react.default.createElement(ActionList.Description, null, "Create a copy")), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
369
+ title: "Live query",
370
+ variant: "filled"
371
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
372
+ style: {
373
+ color: 'rebeccapurple'
374
+ }
375
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.SearchIcon, null)), "repo:github/memex,github/github")), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
376
+ title: "Layout",
377
+ variant: "subtle"
378
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.NoteIcon, null)), "Table", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
379
+ variant: "block"
380
+ }, "Information-dense table optimized for operations across teams")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ProjectIcon, null)), "Board", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
381
+ variant: "block"
382
+ }, "Kanban-style board focused on visual states"))), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Group, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
383
+ style: {
384
+ fontWeight: 'bold'
385
+ }
386
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.FilterIcon, null)), "Save sort and filters to current view"), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
387
+ style: {
388
+ fontWeight: 'bold'
389
+ }
390
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.FilterIcon, null)), "Save sort and filters to new view")), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
391
+ sx: {
392
+ backgroundColor: 'accent.emphasis'
393
+ }
394
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
395
+ sx: {
396
+ color: 'white'
397
+ }
398
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, {
399
+ sx: {
400
+ color: 'white'
401
+ }
402
+ }, /*#__PURE__*/_react.default.createElement(_octiconsReact.GearIcon, null)), "View settings")))));
403
+ }
404
+
405
+ ComplexListFullVariantStory.storyName = 'Complex List — Full Variant';
406
+ const ReactRouterLikeLink = /*#__PURE__*/(0, _react.forwardRef)(({
407
+ to,
408
+ ...props
409
+ }, ref) => {
410
+ // eslint-disable-next-line jsx-a11y/anchor-has-content
411
+ return /*#__PURE__*/_react.default.createElement("a", _extends({
412
+ ref: ref,
413
+ href: to
414
+ }, props));
415
+ });
416
+ const NextJSLikeLink = /*#__PURE__*/(0, _react.forwardRef)(({
417
+ href,
418
+ children
419
+ }, ref) => {
420
+ const child = _react.default.Children.only(children);
421
+
422
+ const childProps = {
423
+ ref,
424
+ href
425
+ };
426
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.isValidElement(child) ? /*#__PURE__*/_react.default.cloneElement(child, childProps) : null);
427
+ });
428
+
429
+ function LinkItemStory() {
430
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "List with LinkItem"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
431
+ showDividers: true
432
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.XIcon, null)), "not a link, just an Item for comparison"), /*#__PURE__*/_react.default.createElement(ActionList.LinkItem, {
433
+ href: "https://github.com/primer"
434
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "ActionList.LinkItem"), /*#__PURE__*/_react.default.createElement(ActionList.LinkItem, {
435
+ href: "https://github.com/primer",
436
+ target: "_blank",
437
+ rel: "noopener noreferrer"
438
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "ActionList.LinkItem with anchor attributes"), /*#__PURE__*/_react.default.createElement(ActionList.LinkItem, {
439
+ as: ReactRouterLikeLink,
440
+ to: "?path=/story/composite-components-actionlist2--simple-list-story"
441
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "as ReactRouterLink"), /*#__PURE__*/_react.default.createElement(NextJSLikeLink, {
442
+ href: "?path=/story/composite-components-actionlist2--simple-list-story"
443
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LinkItem, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "NextJS style Link")), /*#__PURE__*/_react.default.createElement(ActionList.LinkItem, {
444
+ href: "?path=/story/composite-components-actionlist2--simple-list-story"
445
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "ActionList.LinkItem with everything", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
446
+ variant: "inline"
447
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
448
+ variant: "block"
449
+ }, "Block description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, "\u2318 + L")))));
450
+ }
451
+
452
+ LinkItemStory.storyName = 'List with LinkItem';
453
+
454
+ function DOMPropsStory() {
455
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Simple List"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
456
+ id: "something",
457
+ onClick: event => alert(`Id is '${event.currentTarget.getAttribute('id')}'`)
458
+ }, "Has an id"))));
459
+ }
460
+
461
+ DOMPropsStory.storyName = 'List an item input including DOM props';
462
+
463
+ function CustomItemChildren() {
464
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Custom Item Children"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowRightIcon, null)), /*#__PURE__*/_react.default.createElement(_2.Label, {
465
+ outline: true,
466
+ borderColor: "success.emphasis"
467
+ }, "Choose this one"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowLeftIcon, null))))));
468
+ }
469
+
470
+ CustomItemChildren.storyName = 'Custom Item Children';
471
+
472
+ function SizeStressTestingStory() {
473
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Size Stress Testing"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, {
474
+ maxWidth: "300px"
475
+ }, /*#__PURE__*/_react.default.createElement(ActionList, {
476
+ showDividers: true
477
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowRightIcon, null)), "Block Description. Long text should wrap", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
478
+ variant: "block"
479
+ }, "This description is long, but it is block so it wraps"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowLeftIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowRightIcon, null)), "Inline Description", /*#__PURE__*/_react.default.createElement(ActionList.Description, null, "This description gets truncated because it is inline"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowLeftIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowRightIcon, null)), "Really long text without a description should wrap so it wraps", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.ArrowLeftIcon, null))))));
480
+ }
481
+
482
+ SizeStressTestingStory.storyName = 'Size Stress Testing';
483
+
484
+ function AllCombinations() {
485
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "All Possible Combinations"), /*#__PURE__*/_react.default.createElement("code", null, "dynamic features: L = Leading Visual, I = Inline Description, B = Block Description, T = Trailing Visual"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("code", null, "16 possible combinations"), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, {
486
+ maxWidth: "300px"
487
+ }, /*#__PURE__*/_react.default.createElement(ActionList, {
488
+ showDividers: true
489
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "The everything bagel", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
490
+ variant: "inline"
491
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
492
+ variant: "block"
493
+ }, "Block description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "none of them, only text"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "only L"), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "only I", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
494
+ variant: "inline"
495
+ }, "inline description")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "only B", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
496
+ variant: "block"
497
+ }, "Block description")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "only T", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "L + I", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
498
+ variant: "inline"
499
+ }, "inline description")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "L + B", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
500
+ variant: "block"
501
+ }, "Block description")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "L + T", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "I + B", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
502
+ variant: "inline"
503
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
504
+ variant: "block"
505
+ }, "Block description")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "I + T", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
506
+ variant: "inline"
507
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "B + T", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
508
+ variant: "block"
509
+ }, "Block description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "L + I + B", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
510
+ variant: "inline"
511
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
512
+ variant: "block"
513
+ }, "Block description")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "L + I + T", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
514
+ variant: "inline"
515
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null)), "L + B + T", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
516
+ variant: "block"
517
+ }, "Block description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "I + B + T", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
518
+ variant: "inline"
519
+ }, "inline description"), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
520
+ variant: "block"
521
+ }, "Block description"), /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.StarIcon, null))))));
522
+ }
523
+
524
+ AllCombinations.storyName = 'All Combinations';
525
+ const teams = [{
526
+ id: '5025661',
527
+ type: 'team',
528
+ slug: 'github/primer-reviewers',
529
+ name: 'Primer Reviewers',
530
+ members: 20
531
+ }, {
532
+ id: '1929972',
533
+ type: 'team',
534
+ slug: 'github/design-infrastructure',
535
+ name: 'Design Infrastructure',
536
+ members: 20
537
+ }];
538
+
539
+ function ConditionalChildren() {
540
+ const potentialReviewers = [...teams, ...users];
541
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Conditional Children"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
542
+ showDividers: true
543
+ }, potentialReviewers.map((reviewer, index) => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
544
+ key: index
545
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, reviewer.type === 'team' ? /*#__PURE__*/_react.default.createElement(_Avatar.default, {
546
+ src: `https://avatars.githubusercontent.com/t/${reviewer.id}`
547
+ }) : /*#__PURE__*/_react.default.createElement(_Avatar.default, {
548
+ src: `https://avatars.githubusercontent.com/${reviewer.login}`
549
+ })), reviewer.login || reviewer.slug, reviewer.type === 'team' ? /*#__PURE__*/_react.default.createElement(ActionList.Description, {
550
+ variant: "block"
551
+ }, reviewer.name) : /*#__PURE__*/_react.default.createElement(ActionList.Description, null, reviewer.name), reviewer.type === 'team' && /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.PeopleIcon, null), reviewer.members))))));
552
+ }
553
+
554
+ ConditionalChildren.storyName = 'Conditional Children';
555
+
556
+ function NestedChildren() {
557
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Nested Children"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
558
+ showDividers: true
559
+ }, /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("ul", {
560
+ id: "i like extra lists",
561
+ style: {
562
+ paddingInlineStart: 0
563
+ }
564
+ }, users.map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
565
+ key: user.login
566
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
567
+ src: `https://avatars.githubusercontent.com/${user.login}`
568
+ })), user.login, /*#__PURE__*/_react.default.createElement(ReviewerDescription, {
569
+ user: user
570
+ }))))))));
571
+ }
572
+
573
+ NestedChildren.storyName = 'Nested Children';
574
+
575
+ const ReviewerDescription = ({
576
+ user
577
+ }) => {
578
+ const usersRecentlyEditedFile = users.slice(0, 2);
579
+
580
+ if (usersRecentlyEditedFile.find(u => u.login === user.login)) {
581
+ return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(ActionList.Description, null, user.name), /*#__PURE__*/_react.default.createElement(ActionList.Description, {
582
+ variant: "block"
583
+ }, "Recently edited this file"));
584
+ } else {
585
+ return /*#__PURE__*/_react.default.createElement(ActionList.Description, null, user.name);
586
+ }
587
+ };
588
+
589
+ function ChildWithInternalState() {
590
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Child with internal state - broken"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
591
+ showDividers: true
592
+ }, users.map(user => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
593
+ key: user.login
594
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
595
+ src: `https://avatars.githubusercontent.com/${user.login}`
596
+ })), user.login, /*#__PURE__*/_react.default.createElement(StatefulChild, null, user.name))))));
597
+ }
598
+
599
+ ChildWithInternalState.storyName = 'Child with internal state';
600
+
601
+ const StatefulChild = props => {
602
+ const [nameVisible, setNameVisibility] = _react.default.useState(false);
603
+
604
+ const toggle = () => {
605
+ setNameVisibility(!nameVisible);
606
+ };
607
+ /** once description is registered, it cannot be unregistered, only updated. */
608
+
609
+
610
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.ButtonInvisible, {
611
+ onClick: toggle,
612
+ sx: {
613
+ fontSize: 0,
614
+ paddingY: 0
615
+ }
616
+ }, nameVisible ? 'Hide name' : 'Show name'), nameVisible && /*#__PURE__*/_react.default.createElement(ActionList.Description, null, props.children));
617
+ };
618
+
619
+ function ChildWithSideEffects() {
620
+ const user = users[0];
621
+
622
+ const [selected, setSelected] = _react.default.useState(true);
623
+
624
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Child with side effects"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
625
+ selectionVariant: "multiple",
626
+ role: "listbox",
627
+ "aria-label": "Select assignees"
628
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
629
+ selected: selected,
630
+ onSelect: () => setSelected(!selected),
631
+ role: "option"
632
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_Avatar.default, {
633
+ src: `https://avatars.githubusercontent.com/${user.login}`
634
+ })), user.login, /*#__PURE__*/_react.default.createElement(SideEffectDescription, null)))));
635
+ }
636
+
637
+ ChildWithSideEffects.storyName = 'Child with side effects';
638
+
639
+ const SideEffectDescription = () => {
640
+ const [seconds, setSeconds] = _react.default.useState(0);
641
+
642
+ _react.default.useEffect(() => {
643
+ const fn = () => setSeconds(s => s + 1);
644
+
645
+ const interval = window.setInterval(fn, 1000);
646
+ return () => window.clearInterval(interval);
647
+ }, []);
648
+
649
+ return /*#__PURE__*/_react.default.createElement(ActionList.Description, null, seconds, " seconds passed");
650
+ };
651
+
652
+ SideEffectDescription.displayName = "SideEffectDescription";
653
+
654
+ function WithSx() {
655
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "With sx prop"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, {
656
+ sx: {
657
+ paddingTop: 4
658
+ }
659
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Item, {
660
+ sx: {
661
+ backgroundColor: 'accent.subtle'
662
+ }
663
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, {
664
+ sx: {
665
+ color: 'accent.emphasis'
666
+ }
667
+ }, /*#__PURE__*/_react.default.createElement(_octiconsReact.LinkIcon, null)), "github.com/primer", /*#__PURE__*/_react.default.createElement(ActionList.Description, {
668
+ sx: {
669
+ paddingLeft: 4,
670
+ color: 'accent.emphasis'
671
+ }
672
+ }, "all items support sx prop")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.LawIcon, null)), "MIT License"), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
673
+ variant: "danger",
674
+ sx: {
675
+ borderLeft: '2px solid',
676
+ borderColor: 'danger.emphasis',
677
+ borderTopLeftRadius: 0,
678
+ borderBottomLeftRadius: 0
679
+ }
680
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.AlertIcon, null)), "4 vulnerabilities"))));
681
+ }
682
+
683
+ WithSx.storyName = 'With sx';
684
+
685
+ function MemexGroupBy() {
686
+ const [selectedIndex, setSelectedIndex] = _react.default.useState(1);
687
+
688
+ const options = [{
689
+ text: 'Status',
690
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.IssueOpenedIcon, null)
691
+ }, {
692
+ text: 'Stage',
693
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.TableIcon, null)
694
+ }, {
695
+ text: 'Assignee',
696
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.PeopleIcon, null)
697
+ }, {
698
+ text: 'Team',
699
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.TypographyIcon, null)
700
+ }, {
701
+ text: 'Estimate',
702
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.NumberIcon, null)
703
+ }, {
704
+ text: 'Due Date',
705
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.CalendarIcon, null)
706
+ }];
707
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Memex GroupBy List"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(ActionList, null, /*#__PURE__*/_react.default.createElement(ActionList.Group, {
708
+ title: "Group by",
709
+ selectionVariant: "single"
710
+ }, options.map((option, index) => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
711
+ key: index,
712
+ selected: index === selectedIndex,
713
+ onSelect: () => setSelectedIndex(index)
714
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, option.icon), option.text))), typeof selectedIndex === 'number' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
715
+ onSelect: () => setSelectedIndex(null)
716
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.XIcon, null)), "Clear Group by")))));
717
+ }
718
+
719
+ MemexGroupBy.storyName = 'Memex GroupBy List';
720
+
721
+ function MemexSortable() {
722
+ const [options, setOptions] = _react.default.useState([{
723
+ text: 'Status',
724
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.IssueOpenedIcon, null),
725
+ selected: true
726
+ }, {
727
+ text: 'Stage',
728
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.TableIcon, null),
729
+ selected: true
730
+ }, {
731
+ text: 'Assignee',
732
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.PeopleIcon, null),
733
+ selected: true
734
+ }, {
735
+ text: 'Team',
736
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.TypographyIcon, null),
737
+ selected: true
738
+ }, {
739
+ text: 'Estimate',
740
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.NumberIcon, null),
741
+ selected: false
742
+ }, {
743
+ text: 'Due Date',
744
+ icon: /*#__PURE__*/_react.default.createElement(_octiconsReact.CalendarIcon, null),
745
+ selected: false
746
+ }]);
747
+
748
+ const toggle = text => {
749
+ setOptions(options.map(option => {
750
+ if (option.text === text) option.selected = !option.selected;
751
+ return option;
752
+ }));
753
+ };
754
+
755
+ const reorder = ({
756
+ optionToMove,
757
+ moveAfterOption
758
+ }) => {
759
+ setOptions(currentOptions => {
760
+ const newOptions = [...currentOptions]; // remove option to move
761
+
762
+ const currentPosition = newOptions.findIndex(o => o.text === optionToMove.text);
763
+ newOptions.splice(currentPosition, 1); // add it after the provided element
764
+
765
+ const newPosition = newOptions.findIndex(o => o.text === moveAfterOption.text) + 1;
766
+ newOptions.splice(newPosition, 0, optionToMove);
767
+ return newOptions;
768
+ });
769
+ };
770
+
771
+ const visibleOptions = options.filter(option => option.selected);
772
+ const hiddenOptions = options.filter(option => !option.selected);
773
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Memex Sortable List"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(_reactDnd.DndProvider, {
774
+ backend: _reactDndHtml5Backend.HTML5Backend
775
+ }, /*#__PURE__*/_react.default.createElement(ActionList, {
776
+ selectionVariant: "multiple"
777
+ }, /*#__PURE__*/_react.default.createElement(ActionList.Group, {
778
+ title: "Visible fields (can be reordered)"
779
+ }, visibleOptions.map(option => /*#__PURE__*/_react.default.createElement(SortableItem, {
780
+ key: option.text,
781
+ option: option,
782
+ onSelect: () => toggle(option.text),
783
+ reorder: reorder
784
+ }))), /*#__PURE__*/_react.default.createElement(ActionList.Group, {
785
+ title: "Hidden fields",
786
+ selectionVariant:
787
+ /** selectionVariant override on Group: disable selection if there are no options */
788
+ hiddenOptions.length ? 'multiple' : false
789
+ }, hiddenOptions.map((option, index) => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
790
+ key: index,
791
+ selected: option.selected,
792
+ onSelect: () => toggle(option.text)
793
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, option.icon), option.text)), hiddenOptions.length === 0 && /*#__PURE__*/_react.default.createElement(ActionList.Item, {
794
+ disabled: true
795
+ }, "No hidden fields"))))));
796
+ }
797
+
798
+ MemexSortable.storyName = 'Memex Sortable List';
799
+
800
+ const SortableItem = ({
801
+ option,
802
+ onSelect,
803
+ reorder
804
+ }) => {
805
+ const [{
806
+ isDragging
807
+ }, dragRef] = (0, _reactDnd.useDrag)(() => ({
808
+ type: 'ITEM',
809
+ item: option,
810
+ collect: monitor => {
811
+ return {
812
+ isDragging: monitor.isDragging()
813
+ };
814
+ }
815
+ }));
816
+ const [{
817
+ isOver
818
+ }, dropRef] = (0, _reactDnd.useDrop)(() => ({
819
+ accept: 'ITEM',
820
+ collect: monitor => {
821
+ return {
822
+ isOver: monitor.isOver()
823
+ };
824
+ },
825
+ drop: optionDropped => {
826
+ reorder({
827
+ optionToMove: optionDropped,
828
+ moveAfterOption: option
829
+ });
830
+ }
831
+ }));
832
+ return /*#__PURE__*/_react.default.createElement(ActionList.Item, {
833
+ ref: element => dragRef(element) && dropRef(element) // merge refs
834
+ ,
835
+ selected: option.selected,
836
+ onSelect: onSelect,
837
+ sx: {
838
+ opacity: isDragging ? 0.5 : 1,
839
+ boxShadow: isOver ? theme => `0px 2px 0 0px ${theme.colors.accent.emphasis}` : undefined,
840
+ borderRadius: isOver ? 0 : undefined
841
+ }
842
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, option.icon), option.text);
843
+ };
844
+
845
+ SortableItem.displayName = "SortableItem";
846
+ const repos = ['primer/primer-markdown', 'primer/octicons', 'primer/css', 'primer/primer-layout', 'primer/primer-alerts', 'primer/primer-avatars', 'primer/react', 'primer/primitives'];
847
+
848
+ function AsyncListStory() {
849
+ const [results, setResults] = _react.default.useState(repos.slice(0, 6));
850
+
851
+ const [loading, setLoading] = _react.default.useState(false);
852
+
853
+ const filter = async event => {
854
+ setLoading(true);
855
+ const filteredResults = await filterSlowly(event.target.value);
856
+ setResults(filteredResults);
857
+ setLoading(false);
858
+ };
859
+
860
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Async List Items"), /*#__PURE__*/_react.default.createElement(ErsatzOverlay, null, /*#__PURE__*/_react.default.createElement(_TextInput.default, {
861
+ onChange: filter,
862
+ placeholder: "Search repositories, showing 6 by default",
863
+ sx: {
864
+ m: 2,
865
+ mb: 0,
866
+ width: 'calc(100% - 16px)'
867
+ }
868
+ }), /*#__PURE__*/_react.default.createElement(ActionList, {
869
+ sx: {
870
+ height: 208,
871
+ overflow: 'auto'
872
+ }
873
+ }, loading ? /*#__PURE__*/_react.default.createElement(_Box.default, {
874
+ sx: {
875
+ display: 'flex',
876
+ justifyContent: 'center',
877
+ pt: 2
878
+ }
879
+ }, /*#__PURE__*/_react.default.createElement(_Spinner.default, null)) : results.map(name => /*#__PURE__*/_react.default.createElement(ActionList.Item, {
880
+ key: name
881
+ }, /*#__PURE__*/_react.default.createElement(ActionList.LeadingVisual, null, /*#__PURE__*/_react.default.createElement(_octiconsReact.RepoIcon, null)), name)))));
882
+ }
883
+
884
+ AsyncListStory.storyName = 'Async List Options';
885
+
886
+ const filterSlowly = async query => {
887
+ // sleep for 1s before returning results
888
+ await new Promise(resolve => setTimeout(resolve, 1000));
889
+ return await repos.filter(name => name.includes(query));
890
+ };
891
+
892
+ function InsideOverlay() {
893
+ const [open, setOpen] = _react.default.useState(false);
894
+
895
+ const toggle = () => setOpen(!open);
896
+
897
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("h1", null, "Inside Overlay"), /*#__PURE__*/_react.default.createElement(_AnchoredOverlay.AnchoredOverlay, {
898
+ open: open,
899
+ onOpen: toggle,
900
+ onClose: toggle,
901
+ renderAnchor: props => /*#__PURE__*/_react.default.createElement("button", props, "toggle overlay")
902
+ }, /*#__PURE__*/_react.default.createElement(ActionList, null, /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "Use your arrow keys", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, "\u2193")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "keep going", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, "\u2193")), /*#__PURE__*/_react.default.createElement(ActionList.Item, null, "more more", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, "\u2193")), /*#__PURE__*/_react.default.createElement(ActionList.Divider, null), /*#__PURE__*/_react.default.createElement(ActionList.Item, {
903
+ variant: "danger"
904
+ }, "now go up!", /*#__PURE__*/_react.default.createElement(ActionList.TrailingVisual, null, "\u2191")))));
905
+ }
906
+
907
+ InsideOverlay.storyName = 'Inside Overlay';