@primer/components 0.0.0-202192822657 → 0.0.0-2021929142717

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 (166) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/browser.esm.js +53 -49
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +50 -46
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/ActionList/Item.d.ts +6 -0
  7. package/lib/ActionList/Item.js +5 -1
  8. package/lib/ActionList2/Description.d.ts +6 -0
  9. package/lib/ActionList2/Description.js +53 -0
  10. package/lib/ActionList2/Divider.d.ts +5 -0
  11. package/lib/ActionList2/Divider.js +33 -0
  12. package/lib/ActionList2/Group.d.ts +11 -0
  13. package/lib/ActionList2/Group.js +55 -0
  14. package/lib/ActionList2/Header.d.ts +26 -0
  15. package/lib/ActionList2/Header.js +55 -0
  16. package/lib/ActionList2/Item.d.ts +48 -0
  17. package/lib/ActionList2/Item.js +204 -0
  18. package/lib/ActionList2/List.d.ts +26 -0
  19. package/lib/ActionList2/List.js +56 -0
  20. package/lib/ActionList2/Selection.d.ts +5 -0
  21. package/lib/ActionList2/Selection.js +73 -0
  22. package/lib/ActionList2/Visuals.d.ts +11 -0
  23. package/lib/ActionList2/Visuals.js +90 -0
  24. package/lib/ActionList2/hacks.d.ts +30 -0
  25. package/lib/ActionList2/hacks.js +38 -0
  26. package/lib/ActionList2/index.d.ts +28 -0
  27. package/lib/ActionList2/index.js +42 -0
  28. package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +2 -4
  29. package/lib/Autocomplete/Autocomplete.d.ts +6 -8
  30. package/lib/Autocomplete/AutocompleteInput.d.ts +6 -8
  31. package/lib/Button/Button.d.ts +4 -4
  32. package/lib/Button/ButtonClose.d.ts +21 -21
  33. package/lib/Button/ButtonDanger.d.ts +4 -4
  34. package/lib/Button/ButtonInvisible.d.ts +4 -4
  35. package/lib/Button/ButtonOutline.d.ts +4 -4
  36. package/lib/Button/ButtonPrimary.d.ts +4 -4
  37. package/lib/CircleOcticon.d.ts +19 -19
  38. package/lib/Dialog.d.ts +21 -21
  39. package/lib/Dropdown.d.ts +82 -82
  40. package/lib/DropdownMenu/DropdownButton.d.ts +23 -23
  41. package/lib/FilterList.d.ts +19 -19
  42. package/lib/Position.d.ts +4 -4
  43. package/lib/SelectMenu/SelectMenu.d.ts +105 -107
  44. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  45. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  46. package/lib/TextInputWithTokens.d.ts +10 -8
  47. package/lib/TextInputWithTokens.js +102 -29
  48. package/lib/Timeline.d.ts +19 -19
  49. package/lib/Token/AvatarToken.d.ts +1 -1
  50. package/lib/Token/IssueLabelToken.d.ts +1 -1
  51. package/lib/Token/Token.d.ts +1 -1
  52. package/lib/Token/Token.js +13 -2
  53. package/lib/Token/TokenBase.js +0 -4
  54. package/lib/Token/_RemoveTokenButton.js +15 -2
  55. package/lib/_TextInputWrapper.js +1 -1
  56. package/lib/experiments.d.ts +1 -0
  57. package/lib/experiments.js +18 -0
  58. package/lib/sx.d.ts +2 -0
  59. package/lib/sx.js +8 -0
  60. package/lib/theme-preval.js +2 -2
  61. package/lib/utils/create-slots.d.ts +17 -0
  62. package/lib/utils/create-slots.js +105 -0
  63. package/lib/utils/testing.d.ts +1 -1
  64. package/lib/utils/use-force-update.d.ts +1 -0
  65. package/lib/utils/use-force-update.js +19 -0
  66. package/lib-esm/ActionList/Item.d.ts +6 -0
  67. package/lib-esm/ActionList/Item.js +5 -1
  68. package/lib-esm/ActionList2/Description.d.ts +6 -0
  69. package/lib-esm/ActionList2/Description.js +37 -0
  70. package/lib-esm/ActionList2/Divider.d.ts +5 -0
  71. package/lib-esm/ActionList2/Divider.js +21 -0
  72. package/lib-esm/ActionList2/Group.d.ts +11 -0
  73. package/lib-esm/ActionList2/Group.js +38 -0
  74. package/lib-esm/ActionList2/Header.d.ts +26 -0
  75. package/lib-esm/ActionList2/Header.js +45 -0
  76. package/lib-esm/ActionList2/Item.d.ts +48 -0
  77. package/lib-esm/ActionList2/Item.js +176 -0
  78. package/lib-esm/ActionList2/List.d.ts +26 -0
  79. package/lib-esm/ActionList2/List.js +38 -0
  80. package/lib-esm/ActionList2/Selection.d.ts +5 -0
  81. package/lib-esm/ActionList2/Selection.js +55 -0
  82. package/lib-esm/ActionList2/Visuals.d.ts +11 -0
  83. package/lib-esm/ActionList2/Visuals.js +68 -0
  84. package/lib-esm/ActionList2/hacks.d.ts +30 -0
  85. package/lib-esm/ActionList2/hacks.js +30 -0
  86. package/lib-esm/ActionList2/index.d.ts +28 -0
  87. package/lib-esm/ActionList2/index.js +29 -0
  88. package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +2 -4
  89. package/lib-esm/Autocomplete/Autocomplete.d.ts +6 -8
  90. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +6 -8
  91. package/lib-esm/Button/Button.d.ts +4 -4
  92. package/lib-esm/Button/ButtonClose.d.ts +21 -21
  93. package/lib-esm/Button/ButtonDanger.d.ts +4 -4
  94. package/lib-esm/Button/ButtonInvisible.d.ts +4 -4
  95. package/lib-esm/Button/ButtonOutline.d.ts +4 -4
  96. package/lib-esm/Button/ButtonPrimary.d.ts +4 -4
  97. package/lib-esm/CircleOcticon.d.ts +19 -19
  98. package/lib-esm/Dialog.d.ts +21 -21
  99. package/lib-esm/Dropdown.d.ts +82 -82
  100. package/lib-esm/DropdownMenu/DropdownButton.d.ts +23 -23
  101. package/lib-esm/FilterList.d.ts +19 -19
  102. package/lib-esm/Position.d.ts +4 -4
  103. package/lib-esm/SelectMenu/SelectMenu.d.ts +105 -107
  104. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  105. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  106. package/lib-esm/TextInputWithTokens.d.ts +10 -8
  107. package/lib-esm/TextInputWithTokens.js +101 -30
  108. package/lib-esm/Timeline.d.ts +19 -19
  109. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  110. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  111. package/lib-esm/Token/Token.d.ts +1 -1
  112. package/lib-esm/Token/Token.js +13 -2
  113. package/lib-esm/Token/TokenBase.js +0 -4
  114. package/lib-esm/Token/_RemoveTokenButton.js +11 -2
  115. package/lib-esm/_TextInputWrapper.js +1 -1
  116. package/lib-esm/experiments.d.ts +1 -0
  117. package/lib-esm/experiments.js +2 -0
  118. package/lib-esm/sx.d.ts +2 -0
  119. package/lib-esm/sx.js +3 -1
  120. package/lib-esm/theme-preval.js +2 -2
  121. package/lib-esm/utils/create-slots.d.ts +17 -0
  122. package/lib-esm/utils/create-slots.js +84 -0
  123. package/lib-esm/utils/testing.d.ts +1 -1
  124. package/lib-esm/utils/use-force-update.d.ts +1 -0
  125. package/lib-esm/utils/use-force-update.js +6 -0
  126. package/package.json +16 -14
  127. package/lib/DatePicker/DatePicker.d.ts +0 -48
  128. package/lib/DatePicker/DatePicker.js +0 -106
  129. package/lib/DatePicker/DatePickerAnchor.d.ts +0 -5
  130. package/lib/DatePicker/DatePickerAnchor.js +0 -194
  131. package/lib/DatePicker/DatePickerOverlay.d.ts +0 -3
  132. package/lib/DatePicker/DatePickerOverlay.js +0 -48
  133. package/lib/DatePicker/DatePickerPanel.d.ts +0 -2
  134. package/lib/DatePicker/DatePickerPanel.js +0 -126
  135. package/lib/DatePicker/Day.d.ts +0 -14
  136. package/lib/DatePicker/Day.js +0 -190
  137. package/lib/DatePicker/Month.d.ts +0 -9
  138. package/lib/DatePicker/Month.js +0 -120
  139. package/lib/DatePicker/dateParser.d.ts +0 -11
  140. package/lib/DatePicker/dateParser.js +0 -188
  141. package/lib/DatePicker/index.d.ts +0 -2
  142. package/lib/DatePicker/index.js +0 -13
  143. package/lib/DatePicker/useDatePicker.d.ts +0 -89
  144. package/lib/DatePicker/useDatePicker.js +0 -370
  145. package/lib/hooks/useDebounce.d.ts +0 -2
  146. package/lib/hooks/useDebounce.js +0 -24
  147. package/lib-esm/DatePicker/DatePicker.d.ts +0 -48
  148. package/lib-esm/DatePicker/DatePicker.js +0 -89
  149. package/lib-esm/DatePicker/DatePickerAnchor.d.ts +0 -5
  150. package/lib-esm/DatePicker/DatePickerAnchor.js +0 -167
  151. package/lib-esm/DatePicker/DatePickerOverlay.d.ts +0 -3
  152. package/lib-esm/DatePicker/DatePickerOverlay.js +0 -29
  153. package/lib-esm/DatePicker/DatePickerPanel.d.ts +0 -2
  154. package/lib-esm/DatePicker/DatePickerPanel.js +0 -100
  155. package/lib-esm/DatePicker/Day.d.ts +0 -14
  156. package/lib-esm/DatePicker/Day.js +0 -167
  157. package/lib-esm/DatePicker/Month.d.ts +0 -9
  158. package/lib-esm/DatePicker/Month.js +0 -96
  159. package/lib-esm/DatePicker/dateParser.d.ts +0 -11
  160. package/lib-esm/DatePicker/dateParser.js +0 -174
  161. package/lib-esm/DatePicker/index.d.ts +0 -2
  162. package/lib-esm/DatePicker/index.js +0 -1
  163. package/lib-esm/DatePicker/useDatePicker.d.ts +0 -89
  164. package/lib-esm/DatePicker/useDatePicker.js +0 -339
  165. package/lib-esm/hooks/useDebounce.d.ts +0 -2
  166. package/lib-esm/hooks/useDebounce.js +0 -16
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
 
10
10
  var _octiconsReact = require("@primer/octicons-react");
11
11
 
12
- var _styledComponents = _interopRequireDefault(require("styled-components"));
12
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
13
13
 
14
14
  var _styledSystem = require("styled-system");
15
15
 
@@ -19,6 +19,10 @@ var _sx = _interopRequireDefault(require("../sx"));
19
19
 
20
20
  var _TokenBase = require("./TokenBase");
21
21
 
22
+ 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); }
23
+
24
+ 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; }
25
+
22
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
27
 
24
28
  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); }
@@ -50,7 +54,16 @@ const getTokenButtonIconSize = size => parseInt(_TokenBase.tokenSizes[size || _T
50
54
  const StyledTokenButton = _styledComponents.default.span.withConfig({
51
55
  displayName: "_RemoveTokenButton__StyledTokenButton",
52
56
  componentId: "sc-14lvcw1-0"
53
- })(["background-color:transparent;font-family:inherit;color:currentColor;cursor:pointer;display:inline-flex;justify-content:center;align-items:center;user-select:none;appearance:none;text-decoration:none;padding:0;transform:", ";align-self:baseline;border:0;border-radius:999px;&:hover,&:focus{background-color:", ";}&:active{background-color:", ";}", " ", ""], props => `translate(${props.borderOffset}px, -${props.borderOffset}px)`, (0, _constants.get)('colors.neutral.muted'), (0, _constants.get)('colors.neutral.subtle'), variants, _sx.default);
57
+ })(["background-color:transparent;font-family:inherit;color:currentColor;cursor:pointer;display:inline-flex;justify-content:center;align-items:center;user-select:none;appearance:none;text-decoration:none;padding:0;transform:", ";align-self:baseline;border:0;border-radius:999px;", " &:hover,&:focus{background-color:", ";}&:active{background-color:", ";}", " ", ""], props => `translate(${props.borderOffset}px, -${props.borderOffset}px)`, props => {
58
+ switch (props.size) {
59
+ case 'large':
60
+ case 'extralarge':
61
+ return (0, _styledComponents.css)(["margin-left:", ";"], (0, _constants.get)('space.2'));
62
+
63
+ default:
64
+ return (0, _styledComponents.css)(["margin-left:", ";"], (0, _constants.get)('space.1'));
65
+ }
66
+ }, (0, _constants.get)('colors.neutral.muted'), (0, _constants.get)('colors.neutral.subtle'), variants, _sx.default);
54
67
 
55
68
  const RemoveTokenButton = ({
56
69
  'aria-label': ariaLabel,
@@ -39,7 +39,7 @@ const sizeVariants = (0, _styledSystem.variant)({
39
39
  const TextInputWrapper = _styledComponents.default.span.withConfig({
40
40
  displayName: "_TextInputWrapper__TextInputWrapper",
41
41
  componentId: "sc-5vfcis-0"
42
- })(["display:inline-flex;align-items:stretch;min-height:34px;font-size:", ";line-height:20px;color:", ";vertical-align:middle;background-repeat:no-repeat;background-position:right 8px center;border:1px solid ", ";border-radius:", ";outline:none;box-shadow:", ";", " .TextInput-icon{align-self:center;color:", ";margin:0 ", ";flex-shrink:0;}&:focus-within{border-color:", ";box-shadow:", ";}", " ", " ", " @media (min-width:", "){font-size:", ";}", " ", " ", " ", " ", ";"], (0, _constants.get)('fontSizes.1'), (0, _constants.get)('colors.fg.default'), (0, _constants.get)('colors.border.default'), (0, _constants.get)('radii.2'), (0, _constants.get)('shadows.primer.shadow.inset'), props => {
42
+ })(["display:inline-flex;align-items:stretch;min-height:34px;font-size:", ";line-height:20px;color:", ";vertical-align:middle;background-repeat:no-repeat;background-position:right 8px center;border:1px solid ", ";border-radius:", ";outline:none;box-shadow:", ";cursor:text;", " .TextInput-icon{align-self:center;color:", ";margin:0 ", ";flex-shrink:0;}&:focus-within{border-color:", ";box-shadow:", ";}", " ", " ", " @media (min-width:", "){font-size:", ";}", " ", " ", " ", " ", ";"], (0, _constants.get)('fontSizes.1'), (0, _constants.get)('colors.fg.default'), (0, _constants.get)('colors.border.default'), (0, _constants.get)('radii.2'), (0, _constants.get)('shadows.primer.shadow.inset'), props => {
43
43
  if (props.hasIcon) {
44
44
  return (0, _styledComponents.css)(["padding:0;"]);
45
45
  } else {
@@ -0,0 +1 @@
1
+ export * from './ActionList2';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _ActionList = require("./ActionList2");
8
+
9
+ Object.keys(_ActionList).forEach(function (key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ if (key in exports && exports[key] === _ActionList[key]) return;
12
+ Object.defineProperty(exports, key, {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _ActionList[key];
16
+ }
17
+ });
18
+ });
package/lib/sx.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import { SystemStyleObject } from '@styled-system/css';
2
+ import merge from 'deepmerge';
2
3
  export interface SxProp {
3
4
  sx?: SystemStyleObject;
4
5
  }
5
6
  declare const sx: (props: SxProp) => import("@styled-system/css").CssFunctionReturnType;
6
7
  export default sx;
8
+ export { merge };
package/lib/sx.js CHANGED
@@ -3,10 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "merge", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _deepmerge.default;
10
+ }
11
+ });
6
12
  exports.default = void 0;
7
13
 
8
14
  var _css = _interopRequireDefault(require("@styled-system/css"));
9
15
 
16
+ var _deepmerge = _interopRequireDefault(require("deepmerge"));
17
+
10
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
19
 
12
20
  const sx = props => (0, _css.default)(props.sx);
@@ -515,7 +515,7 @@ module.exports = {
515
515
  }
516
516
  }
517
517
  },
518
- "light_colorblind": {
518
+ "light_protanopia": {
519
519
  "colors": {
520
520
  "canvasDefaultTransparent": "rgba(255,255,255,0)",
521
521
  "marketingIcon": {
@@ -2456,7 +2456,7 @@ module.exports = {
2456
2456
  }
2457
2457
  }
2458
2458
  },
2459
- "dark_colorblind": {
2459
+ "dark_protanopia": {
2460
2460
  "colors": {
2461
2461
  "canvasDefaultTransparent": "rgba(13,17,23,0)",
2462
2462
  "marketingIcon": {
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ /** createSlots is a factory that can create a
3
+ * typesafe Slots + Slot pair to use in a component definition
4
+ * For example: ActionList.Item uses createSlots to get a Slots wrapper
5
+ * + Slot component that is used by LeadingVisual, Description
6
+ */
7
+ declare const createSlots: <SlotNames extends string>(slotNames: SlotNames[]) => {
8
+ Slots: React.FC<{
9
+ context: Record<string, unknown>;
10
+ children: (slots: { [key in SlotNames]?: React.ReactNode; }) => React.ReactNode;
11
+ }>;
12
+ Slot: React.FC<{
13
+ name: SlotNames;
14
+ children: React.ReactNode | ((context: Record<string, unknown>) => React.ReactNode);
15
+ }>;
16
+ };
17
+ export default createSlots;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _useForceUpdate = require("./use-force-update");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ /** createSlots is a factory that can create a
15
+ * typesafe Slots + Slot pair to use in a component definition
16
+ * For example: ActionList.Item uses createSlots to get a Slots wrapper
17
+ * + Slot component that is used by LeadingVisual, Description
18
+ */
19
+ const createSlots = slotNames => {
20
+ const SlotsContext = /*#__PURE__*/_react.default.createContext({
21
+ registerSlot: () => null,
22
+ unregisterSlot: () => null,
23
+ context: {}
24
+ });
25
+ /** Slots uses a Double render strategy inspired by [reach-ui/descendants](https://github.com/reach/reach-ui/tree/develop/packages/descendants)
26
+ * Slot registers themself with the Slots parent.
27
+ * When all the children have mounted = registered themselves in slot,
28
+ * we re-render the parent component to render with slots
29
+ */
30
+
31
+
32
+ const Slots = ({
33
+ context,
34
+ children
35
+ }) => {
36
+ // initialise slots
37
+ const slotsDefinition = {};
38
+ slotNames.map(name => slotsDefinition[name] = null);
39
+
40
+ const slotsRef = _react.default.useRef(slotsDefinition);
41
+
42
+ const rerenderWithSlots = (0, _useForceUpdate.useForceUpdate)();
43
+
44
+ const [isMounted, setIsMounted] = _react.default.useState(false); // fires after all the effects in children
45
+
46
+
47
+ _react.default.useEffect(() => {
48
+ rerenderWithSlots();
49
+ setIsMounted(true);
50
+ }, [rerenderWithSlots]);
51
+
52
+ const registerSlot = _react.default.useCallback((name, contents) => {
53
+ slotsRef.current[name] = contents; // don't render until the component mounts = all slots are registered
54
+
55
+ if (isMounted) rerenderWithSlots();
56
+ }, [isMounted, rerenderWithSlots]); // Slot can be removed from the tree as well,
57
+ // we need to unregister them from the slot
58
+
59
+
60
+ const unregisterSlot = _react.default.useCallback(name => {
61
+ slotsRef.current[name] = null;
62
+ rerenderWithSlots();
63
+ }, [rerenderWithSlots]);
64
+ /**
65
+ * Slots uses a render prop API so abstract the
66
+ * implementation detail of using a context provider.
67
+ */
68
+
69
+
70
+ const slots = slotsRef.current;
71
+ return /*#__PURE__*/_react.default.createElement(SlotsContext.Provider, {
72
+ value: {
73
+ registerSlot,
74
+ unregisterSlot,
75
+ context
76
+ }
77
+ }, children(slots));
78
+ };
79
+
80
+ const Slot = ({
81
+ name,
82
+ children
83
+ }) => {
84
+ const {
85
+ registerSlot,
86
+ unregisterSlot,
87
+ context
88
+ } = _react.default.useContext(SlotsContext);
89
+
90
+ _react.default.useEffect(() => {
91
+ registerSlot(name, typeof children === 'function' ? children(context) : children);
92
+ return () => unregisterSlot(name);
93
+ }, [name, children, registerSlot, unregisterSlot, context]);
94
+
95
+ return null;
96
+ };
97
+
98
+ return {
99
+ Slots,
100
+ Slot
101
+ };
102
+ };
103
+
104
+ var _default = createSlots;
105
+ exports.default = _default;
@@ -53,7 +53,7 @@ export declare function render(component: React.ReactElement, theme?: {
53
53
  xlarge: string;
54
54
  };
55
55
  space: string[];
56
- colorSchemes: Record<"light" | "light_colorblind" | "dark" | "dark_dimmed" | "dark_high_contrast" | "dark_colorblind", Record<"colors" | "shadows", Partial<{
56
+ colorSchemes: Record<"light" | "light_protanopia" | "dark" | "dark_dimmed" | "dark_high_contrast" | "dark_protanopia", Record<"colors" | "shadows", Partial<{
57
57
  canvasDefaultTransparent: string;
58
58
  marketingIcon: {
59
59
  primary: string;
@@ -0,0 +1 @@
1
+ export declare const useForceUpdate: () => () => void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useForceUpdate = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
+
12
+ // Inspired from reach-ui: https://github.com/reach/reach-ui/blob/develop/packages/utils/src/use-force-update.ts
13
+ const useForceUpdate = () => {
14
+ const [, rerender] = _react.default.useState({});
15
+
16
+ return _react.default.useCallback(() => rerender({}), []);
17
+ };
18
+
19
+ exports.useForceUpdate = useForceUpdate;
@@ -28,13 +28,19 @@ export interface ItemProps extends SxProp {
28
28
  */
29
29
  leadingVisual?: React.FunctionComponent<IconProps>;
30
30
  /**
31
+ * @deprecated Use `trailingVisual` instead
31
32
  * Icon (or similar) positioned after `Item` text.
32
33
  */
33
34
  trailingIcon?: React.FunctionComponent<IconProps>;
34
35
  /**
36
+ * @deprecated Use `trailingVisual` instead
35
37
  * Text positioned after `Item` text and optional trailing icon.
36
38
  */
37
39
  trailingText?: string;
40
+ /**
41
+ * Icon or text positioned after `Item` text.
42
+ */
43
+ trailingVisual?: React.ReactNode;
38
44
  /**
39
45
  * Style variations associated with various `Item` types.
40
46
  *
@@ -154,6 +154,7 @@ export const Item = /*#__PURE__*/React.forwardRef((itemProps, ref) => {
154
154
  selectionVariant,
155
155
  leadingVisual: LeadingVisual,
156
156
  trailingIcon: TrailingIcon,
157
+ trailingVisual: TrailingVisual,
157
158
  trailingText,
158
159
  variant = 'default',
159
160
  showDivider,
@@ -245,7 +246,10 @@ export const Item = /*#__PURE__*/React.forwardRef((itemProps, ref) => {
245
246
  title: description,
246
247
  inline: true,
247
248
  maxWidth: "100%"
248
- }, description)) : null), TrailingIcon || trailingText ? /*#__PURE__*/React.createElement(TrailingContent, {
249
+ }, description)) : null), TrailingVisual ? /*#__PURE__*/React.createElement(TrailingContent, {
250
+ variant: variant,
251
+ disabled: disabled
252
+ }, typeof TrailingVisual === 'function' ? /*#__PURE__*/React.createElement(TrailingVisual, null) : TrailingVisual) : TrailingIcon || trailingText ? /*#__PURE__*/React.createElement(TrailingContent, {
249
253
  variant: variant,
250
254
  disabled: disabled
251
255
  }, trailingText, TrailingIcon && /*#__PURE__*/React.createElement(TrailingIcon, null)) : null));
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ import { SxProp } from '../sx';
3
+ export declare type DescriptionProps = {
4
+ variant?: 'inline' | 'block';
5
+ } & SxProp;
6
+ export declare const Description: React.FC<DescriptionProps>;
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import Box from '../Box';
3
+ import { merge } from '../sx';
4
+ import Truncate from '../Truncate';
5
+ import { Slot } from './Item';
6
+ export const Description = ({
7
+ variant = 'inline',
8
+ sx = {},
9
+ ...props
10
+ }) => {
11
+ const styles = {
12
+ color: 'fg.muted',
13
+ fontSize: 0,
14
+ lineHeight: '16px',
15
+ flexGrow: 1,
16
+ flexBasis: 0,
17
+ minWidth: 0,
18
+ marginLeft: variant === 'block' ? 0 : 2
19
+ };
20
+ return /*#__PURE__*/React.createElement(Slot, {
21
+ name: variant === 'block' ? 'BlockDescription' : 'InlineDescription'
22
+ }, ({
23
+ blockDescriptionId,
24
+ inlineDescriptionId
25
+ }) => variant === 'block' ? /*#__PURE__*/React.createElement(Box, {
26
+ as: "span",
27
+ sx: merge(styles, sx),
28
+ id: blockDescriptionId
29
+ }, props.children) : /*#__PURE__*/React.createElement(Truncate, {
30
+ id: inlineDescriptionId,
31
+ sx: merge(styles, sx),
32
+ title: props.children,
33
+ inline: true,
34
+ maxWidth: "100%"
35
+ }, props.children));
36
+ };
37
+ Description.displayName = "Description";
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ /**
3
+ * Visually separates `Item`s or `Group`s in an `ActionList`.
4
+ */
5
+ export declare function Divider(): JSX.Element;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import Box from '../Box';
3
+ import { get } from '../constants';
4
+
5
+ /**
6
+ * Visually separates `Item`s or `Group`s in an `ActionList`.
7
+ */
8
+ export function Divider() {
9
+ return /*#__PURE__*/React.createElement(Box, {
10
+ as: "li",
11
+ role: "separator",
12
+ sx: {
13
+ height: 1,
14
+ backgroundColor: 'border.muted',
15
+ marginTop: theme => `calc(${get('space.2')(theme)} - 1px)`,
16
+ marginBottom: 2
17
+ },
18
+ "data-component": "ActionList.Divider"
19
+ });
20
+ }
21
+ Divider.displayName = "Divider";
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { SxProp } from '../sx';
3
+ import { HeaderProps } from './Header';
4
+ import { ListProps } from './List';
5
+ export declare type GroupProps = HeaderProps & SxProp & {
6
+ selectionVariant?: ListProps['selectionVariant'] | false;
7
+ };
8
+ declare type ContextProps = Pick<GroupProps, 'selectionVariant'>;
9
+ export declare const GroupContext: React.Context<ContextProps>;
10
+ export declare const Group: React.FC<GroupProps>;
11
+ export {};
@@ -0,0 +1,38 @@
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 Box from '../Box';
5
+ import { Header } from './Header';
6
+ export const GroupContext = /*#__PURE__*/React.createContext({});
7
+ export const Group = ({
8
+ title,
9
+ variant,
10
+ auxiliaryText,
11
+ selectionVariant,
12
+ sx = {},
13
+ ...props
14
+ }) => {
15
+ return /*#__PURE__*/React.createElement(Box, _extends({
16
+ as: "li",
17
+ sx: {
18
+ '&:not(:first-child)': {
19
+ marginTop: 2
20
+ },
21
+ ...sx
22
+ }
23
+ }, props), title && /*#__PURE__*/React.createElement(Header, {
24
+ title: title,
25
+ variant: variant,
26
+ auxiliaryText: auxiliaryText
27
+ }), /*#__PURE__*/React.createElement(GroupContext.Provider, {
28
+ value: {
29
+ selectionVariant
30
+ }
31
+ }, /*#__PURE__*/React.createElement(Box, {
32
+ as: "ul",
33
+ sx: {
34
+ paddingInlineStart: 0
35
+ }
36
+ }, props.children)));
37
+ };
38
+ Group.displayName = "Group";
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { SxProp } from '../sx';
3
+ /**
4
+ * Contract for props passed to the `Header` component.
5
+ */
6
+ export interface HeaderProps extends React.ComponentPropsWithoutRef<'div'>, SxProp {
7
+ /**
8
+ * Style variations. Usage is discretionary.
9
+ *
10
+ * - `"filled"` - Superimposed on a background, offset from nearby content
11
+ * - `"subtle"` - Relatively less offset from nearby content
12
+ */
13
+ variant?: 'subtle' | 'filled';
14
+ /**
15
+ * Primary text which names a `Group`.
16
+ */
17
+ title?: string;
18
+ /**
19
+ * Secondary text which provides additional information about a `Group`.
20
+ */
21
+ auxiliaryText?: string;
22
+ }
23
+ /**
24
+ * Displays the name and description of a `Group`.
25
+ */
26
+ export declare function Header({ variant, title, auxiliaryText, children: _children, sx, ...props }: HeaderProps): JSX.Element;
@@ -0,0 +1,45 @@
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 Box from '../Box';
5
+ import { ListContext } from './List';
6
+ /**
7
+ * Contract for props passed to the `Header` component.
8
+ */
9
+
10
+ /**
11
+ * Displays the name and description of a `Group`.
12
+ */
13
+ export function Header({
14
+ variant = 'subtle',
15
+ title,
16
+ auxiliaryText,
17
+ children: _children,
18
+ sx = {},
19
+ ...props
20
+ }) {
21
+ const {
22
+ variant: listVariant
23
+ } = React.useContext(ListContext);
24
+ const styles = {
25
+ paddingY: '6px',
26
+ paddingX: listVariant === 'full' ? 2 : 3,
27
+ fontSize: 0,
28
+ fontWeight: 'bold',
29
+ color: 'fg.muted',
30
+ ...(variant === 'filled' && {
31
+ backgroundColor: 'canvas.subtle',
32
+ marginX: 0,
33
+ marginBottom: 2,
34
+ borderTop: '1px solid',
35
+ borderBottom: '1px solid',
36
+ borderColor: 'neutral.muted'
37
+ }),
38
+ ...sx
39
+ };
40
+ return /*#__PURE__*/React.createElement(Box, _extends({
41
+ sx: styles,
42
+ role: "heading"
43
+ }, props), title, auxiliaryText && /*#__PURE__*/React.createElement("span", null, "auxiliaryText"));
44
+ }
45
+ Header.displayName = "Header";
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { ForwardRefComponent as PolymorphicForwardRefComponent } from '@radix-ui/react-polymorphic';
3
+ import { SxProp } from '../sx';
4
+ import { AriaRole } from '../utils/types';
5
+ export declare const getVariantStyles: (variant: ItemProps['variant'], disabled: ItemProps['disabled']) => {
6
+ color: string;
7
+ iconColor: string;
8
+ annotationColor: string;
9
+ };
10
+ export declare type ItemProps = {
11
+ /**
12
+ * Primary content for an Item
13
+ */
14
+ children: React.ReactNode;
15
+ /**
16
+ * Callback that will trigger both on click selection and keyboard selection.
17
+ */
18
+ onSelect?: (event: React.MouseEvent<HTMLLIElement> | React.KeyboardEvent<HTMLLIElement>) => void;
19
+ /**
20
+ * Is the `Item` is currently selected?
21
+ */
22
+ selected?: boolean;
23
+ /**
24
+ * Style variations associated with various `Item` types.
25
+ *
26
+ * - `"default"` - An action `Item`.
27
+ * - `"danger"` - A destructive action `Item`.
28
+ */
29
+ variant?: 'default' | 'danger';
30
+ /**
31
+ * Items that are disabled can not be clicked, selected, or navigated through.
32
+ */
33
+ disabled?: boolean;
34
+ /**
35
+ * The ARIA role describing the function of `Item` component. `option` is a common value. |
36
+ */
37
+ role?: AriaRole;
38
+ } & SxProp;
39
+ declare const Slot: React.FC<{
40
+ name: "LeadingVisual" | "InlineDescription" | "BlockDescription" | "TrailingVisual";
41
+ children: React.ReactNode | ((context: Record<string, unknown>) => React.ReactNode);
42
+ }>;
43
+ export { Slot };
44
+ export declare type ItemContext = Pick<ItemProps, 'variant' | 'disabled'> & {
45
+ inlineDescriptionId: string;
46
+ blockDescriptionId: string;
47
+ };
48
+ export declare const Item: PolymorphicForwardRefComponent<"li", ItemProps>;