@primer/components 0.0.0-202196214225 → 0.0.0-20219715822

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 (60) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/dist/browser.esm.js +721 -654
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +411 -344
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/FilteredActionList/FilteredActionList.d.ts +3 -2
  7. package/lib/FilteredActionList/FilteredActionList.js +3 -1
  8. package/lib/SelectMenu/SelectMenu.d.ts +7 -2
  9. package/lib/SelectPanel/SelectPanel.d.ts +1 -1
  10. package/lib/SelectPanel/SelectPanel.js +9 -11
  11. package/lib/TextInput.d.ts +5 -3
  12. package/lib/TextInput.js +8 -10
  13. package/lib/TextInputWithTokens.d.ts +326 -0
  14. package/lib/TextInputWithTokens.js +244 -0
  15. package/lib/Token/IssueLabelToken.d.ts +14 -0
  16. package/lib/Token/IssueLabelToken.js +144 -0
  17. package/lib/Token/ProfileToken.d.ts +7 -0
  18. package/lib/Token/ProfileToken.js +53 -0
  19. package/lib/Token/Token.d.ts +15 -0
  20. package/lib/Token/Token.js +94 -0
  21. package/lib/Token/TokenBase.d.ts +17 -0
  22. package/lib/Token/TokenBase.js +108 -0
  23. package/lib/Token/_RemoveTokenButton.d.ts +12 -0
  24. package/lib/Token/_RemoveTokenButton.js +77 -0
  25. package/lib/Token/_TokenTextContainer.d.ts +3 -0
  26. package/lib/Token/_TokenTextContainer.js +34 -0
  27. package/lib/Token/index.d.ts +3 -0
  28. package/lib/Token/index.js +31 -0
  29. package/lib/_UnstyledTextInput.d.ts +2 -0
  30. package/lib/_UnstyledTextInput.js +20 -0
  31. package/lib/index.d.ts +2 -0
  32. package/lib/index.js +28 -0
  33. package/lib-esm/FilteredActionList/FilteredActionList.d.ts +3 -2
  34. package/lib-esm/FilteredActionList/FilteredActionList.js +3 -1
  35. package/lib-esm/SelectMenu/SelectMenu.d.ts +7 -2
  36. package/lib-esm/SelectPanel/SelectPanel.d.ts +1 -1
  37. package/lib-esm/SelectPanel/SelectPanel.js +9 -8
  38. package/lib-esm/TextInput.d.ts +5 -3
  39. package/lib-esm/TextInput.js +7 -9
  40. package/lib-esm/TextInputWithTokens.d.ts +326 -0
  41. package/lib-esm/TextInputWithTokens.js +217 -0
  42. package/lib-esm/Token/IssueLabelToken.d.ts +14 -0
  43. package/lib-esm/Token/IssueLabelToken.js +124 -0
  44. package/lib-esm/Token/ProfileToken.d.ts +7 -0
  45. package/lib-esm/Token/ProfileToken.js +33 -0
  46. package/lib-esm/Token/Token.d.ts +15 -0
  47. package/lib-esm/Token/Token.js +73 -0
  48. package/lib-esm/Token/TokenBase.d.ts +17 -0
  49. package/lib-esm/Token/TokenBase.js +87 -0
  50. package/lib-esm/Token/_RemoveTokenButton.d.ts +12 -0
  51. package/lib-esm/Token/_RemoveTokenButton.js +60 -0
  52. package/lib-esm/Token/_TokenTextContainer.d.ts +3 -0
  53. package/lib-esm/Token/_TokenTextContainer.js +21 -0
  54. package/lib-esm/Token/index.d.ts +3 -0
  55. package/lib-esm/Token/index.js +3 -0
  56. package/lib-esm/_UnstyledTextInput.d.ts +2 -0
  57. package/lib-esm/_UnstyledTextInput.js +7 -0
  58. package/lib-esm/index.d.ts +2 -0
  59. package/lib-esm/index.js +2 -0
  60. package/package.json +2 -1
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _props = require("@styled-system/props");
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _focusZone = require("./behaviors/focusZone");
15
+
16
+ var _useCombinedRefs = require("./hooks/useCombinedRefs");
17
+
18
+ var _useFocusZone = require("./hooks/useFocusZone");
19
+
20
+ var _Token = _interopRequireDefault(require("./Token/Token"));
21
+
22
+ var _TextInput = _interopRequireDefault(require("./TextInput"));
23
+
24
+ var _hooks = require("./hooks");
25
+
26
+ var _UnstyledTextInput = _interopRequireDefault(require("./_UnstyledTextInput"));
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ 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); }
35
+
36
+ const InputWrapper = _styledComponents.default.div.withConfig({
37
+ displayName: "TextInputWithTokens__InputWrapper",
38
+ componentId: "sc-8z94t5-0"
39
+ })(["order:1;flex-grow:1;"]); // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+
41
+
42
+ // The inner contents of `TextInputWithTokens` are separated so they may be passed to the `as`
43
+ // prop of the `TextInput` component
44
+ function TextInputWithTokensInnerComponent({
45
+ tokens,
46
+ onTokenRemove,
47
+ tokenComponent: TokenComponent,
48
+ size,
49
+ hideTokenRemoveButtons,
50
+ selectedTokenIndex,
51
+ setSelectedTokenIndex,
52
+ ...rest
53
+ }, externalRef) {
54
+ const ref = (0, _hooks.useProvidedRefOrCreate)(externalRef);
55
+ const {
56
+ onFocus,
57
+ onKeyDown,
58
+ ...inputPropsRest
59
+ } = (0, _props.omit)(rest);
60
+
61
+ const handleTokenFocus = tokenIndex => () => {
62
+ setSelectedTokenIndex(tokenIndex);
63
+ };
64
+
65
+ const handleTokenBlur = () => {
66
+ setSelectedTokenIndex(undefined);
67
+ };
68
+
69
+ const handleTokenKeyUp = event => {
70
+ if (event.key === 'Escape') {
71
+ var _ref$current;
72
+
73
+ (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
74
+ }
75
+ };
76
+
77
+ const handleInputFocus = event => {
78
+ onFocus && onFocus(event);
79
+ setSelectedTokenIndex(undefined);
80
+ };
81
+
82
+ const handleInputKeyDown = event => {
83
+ var _ref$current2;
84
+
85
+ if (onKeyDown) {
86
+ onKeyDown(event);
87
+ }
88
+
89
+ if ((_ref$current2 = ref.current) !== null && _ref$current2 !== void 0 && _ref$current2.value) {
90
+ return;
91
+ }
92
+
93
+ const lastToken = tokens[tokens.length - 1];
94
+
95
+ if (event.key === 'Backspace' && lastToken) {
96
+ onTokenRemove(lastToken.id);
97
+
98
+ if (ref.current) {
99
+ // TODO: eliminate the first hack by making changes to the Autocomplete component
100
+ //
101
+ // HACKS:
102
+ // 1. Directly setting `ref.current.value` instead of updating state because the autocomplete
103
+ // highlight behavior doesn't work correctly if we update the value with a setState action in onChange
104
+ // 2. Adding an extra space so that when I backspace, it doesn't delete the last letter
105
+ ref.current.value = `${lastToken.text} `;
106
+ } // HACK: for some reason we need to wait a tick for `.select()` to work
107
+
108
+
109
+ setTimeout(() => {
110
+ var _ref$current3;
111
+
112
+ (_ref$current3 = ref.current) === null || _ref$current3 === void 0 ? void 0 : _ref$current3.select();
113
+ }, 0);
114
+ }
115
+ };
116
+
117
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(InputWrapper, {
118
+ key: "inputWrapper"
119
+ }, /*#__PURE__*/_react.default.createElement(_UnstyledTextInput.default, _extends({
120
+ ref: ref,
121
+ onFocus: handleInputFocus,
122
+ onKeyDown: handleInputKeyDown,
123
+ type: "text",
124
+ sx: {
125
+ height: '100%'
126
+ }
127
+ }, inputPropsRest))), tokens.length && TokenComponent ? tokens.map(({
128
+ id,
129
+ ...tokenRest
130
+ }, i) => /*#__PURE__*/_react.default.createElement(TokenComponent, _extends({
131
+ key: id,
132
+ onFocus: handleTokenFocus(i),
133
+ onBlur: handleTokenBlur,
134
+ onKeyUp: handleTokenKeyUp,
135
+ isSelected: selectedTokenIndex === i,
136
+ onRemove: () => {
137
+ onTokenRemove(id);
138
+ },
139
+ hideRemoveButton: hideTokenRemoveButtons,
140
+ size: size,
141
+ tabIndex: 0
142
+ }, tokenRest))) : null);
143
+ } // using forwardRef is important so that other components (ex. Autocomplete) can use the ref
144
+
145
+
146
+ const TextInputWithTokensInnerComponentWithRef = /*#__PURE__*/_react.default.forwardRef(TextInputWithTokensInnerComponent);
147
+
148
+ function TextInputWithTokensComponent({
149
+ tokens,
150
+ onTokenRemove,
151
+ sx: sxProp,
152
+ ...props
153
+ }, ref) {
154
+ const localInputRef = (0, _react.useRef)(null);
155
+ const combinedInputRef = (0, _useCombinedRefs.useCombinedRefs)(localInputRef, ref);
156
+ const [selectedTokenIndex, setSelectedTokenIndex] = (0, _react.useState)();
157
+ const {
158
+ containerRef
159
+ } = (0, _useFocusZone.useFocusZone)({
160
+ focusOutBehavior: 'wrap',
161
+ bindKeys: _focusZone.FocusKeys.ArrowHorizontal | _focusZone.FocusKeys.HomeAndEnd,
162
+ focusableElementFilter: element => {
163
+ return !element.getAttributeNames().includes('aria-hidden');
164
+ },
165
+ getNextFocusable: direction => {
166
+ var _containerRef$current;
167
+
168
+ if (!selectedTokenIndex && selectedTokenIndex !== 0) {
169
+ return undefined;
170
+ }
171
+
172
+ let nextIndex = selectedTokenIndex + 1; // "+ 1" accounts for the first element: the text input
173
+
174
+ if (direction === 'next') {
175
+ nextIndex += 1;
176
+ }
177
+
178
+ if (direction === 'previous') {
179
+ nextIndex -= 1;
180
+ }
181
+
182
+ if (nextIndex > tokens.length || nextIndex < 1) {
183
+ return combinedInputRef.current || undefined;
184
+ }
185
+
186
+ return (_containerRef$current = containerRef.current) === null || _containerRef$current === void 0 ? void 0 : _containerRef$current.children[nextIndex];
187
+ }
188
+ }, [selectedTokenIndex]);
189
+
190
+ const handleTokenRemove = tokenId => {
191
+ onTokenRemove(tokenId);
192
+
193
+ if (selectedTokenIndex) {
194
+ var _containerRef$current2;
195
+
196
+ const nextElementToFocus = (_containerRef$current2 = containerRef.current) === null || _containerRef$current2 === void 0 ? void 0 : _containerRef$current2.children[selectedTokenIndex];
197
+ nextElementToFocus.focus();
198
+ }
199
+ };
200
+
201
+ return /*#__PURE__*/_react.default.createElement(_TextInput.default, _extends({
202
+ ref: combinedInputRef,
203
+ wrapperRef: containerRef,
204
+ as: TextInputWithTokensInnerComponentWithRef,
205
+ selectedTokenIndex: selectedTokenIndex,
206
+ setSelectedTokenIndex: setSelectedTokenIndex,
207
+ tokens: tokens,
208
+ onTokenRemove: handleTokenRemove,
209
+ sx: {
210
+ alignItems: 'center',
211
+ flexWrap: props.preventTokenWrapping ? 'nowrap' : 'wrap',
212
+ gap: '0.25rem',
213
+ '> *': {
214
+ flexShrink: 0
215
+ },
216
+ ...(props.block ? {
217
+ display: 'flex',
218
+ width: '100%'
219
+ } : {}),
220
+ ...(props.maxHeight ? {
221
+ maxHeight: props.maxHeight,
222
+ overflow: 'auto'
223
+ } : {}),
224
+ ...(props.preventTokenWrapping ? {
225
+ overflow: 'auto'
226
+ } : {}),
227
+ ...sxProp
228
+ }
229
+ }, props));
230
+ }
231
+
232
+ TextInputWithTokensComponent.displayName = "TextInputWithTokensComponent";
233
+
234
+ // using forwardRef is important so that other components (ex. Autocomplete) can use the ref
235
+ const TextInputWithTokens = /*#__PURE__*/_react.default.forwardRef(TextInputWithTokensComponent);
236
+
237
+ TextInputWithTokens.defaultProps = {
238
+ tokenComponent: _Token.default,
239
+ size: 'xlarge',
240
+ hideTokenRemoveButtons: false
241
+ };
242
+ TextInputWithTokens.displayName = 'TextInputWithTokens';
243
+ var _default = TextInputWithTokens;
244
+ exports.default = _default;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { TokenBaseProps } from './TokenBase';
3
+ export interface IssueLabelTokenProps extends TokenBaseProps {
4
+ /**
5
+ * The color that corresponds to the label
6
+ */
7
+ fillColor?: string;
8
+ /**
9
+ * Whether the remove button should be rendered in the token
10
+ */
11
+ hideRemoveButton?: boolean;
12
+ }
13
+ declare const IssueLabelToken: React.ForwardRefExoticComponent<Pick<IssueLabelTokenProps, "sizes" | "color" | "content" | "height" | "translate" | "width" | "hidden" | "children" | "value" | "cite" | "data" | "form" | "label" | "slot" | "span" | "style" | "summary" | "title" | "pattern" | "text" | "list" | "default" | "type" | "name" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "start" | "step" | "size" | "wrap" | "open" | "max" | "media" | "method" | "min" | "target" | "crossOrigin" | "href" | "classID" | "useMap" | "wmode" | "download" | "hrefLang" | "rel" | "alt" | "coords" | "shape" | "autoPlay" | "controls" | "loop" | "mediaGroup" | "muted" | "playsInline" | "preload" | "src" | "autoFocus" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "dateTime" | "acceptCharset" | "action" | "autoComplete" | "encType" | "noValidate" | "manifest" | "allowFullScreen" | "allowTransparency" | "frameBorder" | "marginHeight" | "marginWidth" | "sandbox" | "scrolling" | "seamless" | "srcDoc" | "srcSet" | "async" | "accept" | "capture" | "checked" | "maxLength" | "minLength" | "multiple" | "readOnly" | "required" | "challenge" | "keyType" | "keyParams" | "htmlFor" | "as" | "integrity" | "charSet" | "httpEquiv" | "high" | "low" | "optimum" | "reversed" | "selected" | "defer" | "nonce" | "scoped" | "cellPadding" | "cellSpacing" | "colSpan" | "headers" | "rowSpan" | "scope" | "cols" | "rows" | "kind" | "srcLang" | "poster" | "onRemove" | "isSelected" | "hideRemoveButton" | "fillColor"> & React.RefAttributes<HTMLElement>>;
14
+ export default IssueLabelToken;
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _TokenBase = _interopRequireWildcard(require("./TokenBase"));
11
+
12
+ var _RemoveTokenButton = _interopRequireDefault(require("./_RemoveTokenButton"));
13
+
14
+ var _color2k = require("color2k");
15
+
16
+ var _ThemeProvider = require("../ThemeProvider");
17
+
18
+ var _TokenTextContainer = _interopRequireDefault(require("./_TokenTextContainer"));
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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
+
26
+ 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); }
27
+
28
+ const tokenBorderWidthPx = 1;
29
+ const lightModeStyles = {
30
+ '--lightness-threshold': '0.453',
31
+ '--border-threshold': '0.96',
32
+ '--border-alpha': 'max(0, min(calc((var(--perceived-lightness) - var(--border-threshold)) * 100), 1))',
33
+ background: 'rgb(var(--label-r), var(--label-g), var(--label-b))',
34
+ color: 'hsl(0, 0%, calc(var(--lightness-switch) * 100%))',
35
+ borderWidth: tokenBorderWidthPx,
36
+ borderStyle: 'solid',
37
+ borderColor: 'hsla(var(--label-h),calc(var(--label-s) * 1%),calc((var(--label-l) - 25) * 1%),var(--border-alpha))'
38
+ };
39
+ const darkModeStyles = {
40
+ '--lightness-threshold': '0.6',
41
+ '--background-alpha': '0.18',
42
+ '--border-alpha': '0.3',
43
+ '--lighten-by': 'calc(((var(--lightness-threshold) - var(--perceived-lightness)) * 100) * var(--lightness-switch))',
44
+ borderWidth: tokenBorderWidthPx,
45
+ borderStyle: 'solid',
46
+ background: 'rgba(var(--label-r), var(--label-g), var(--label-b), var(--background-alpha))',
47
+ color: 'hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%))',
48
+ borderColor: 'hsla(var(--label-h), calc(var(--label-s) * 1%),calc((var(--label-l) + var(--lighten-by)) * 1%),var(--border-alpha))'
49
+ };
50
+ const IssueLabelToken = /*#__PURE__*/(0, _react.forwardRef)((props, forwardedRef) => {
51
+ const {
52
+ as,
53
+ fillColor = '#999',
54
+ onRemove,
55
+ id,
56
+ isSelected,
57
+ text,
58
+ size,
59
+ hideRemoveButton,
60
+ href,
61
+ onClick,
62
+ ...rest
63
+ } = props;
64
+ const interactiveTokenProps = {
65
+ as,
66
+ href,
67
+ onClick
68
+ };
69
+ const {
70
+ colorScheme
71
+ } = (0, _ThemeProvider.useTheme)();
72
+ const hasMultipleActionTargets = (0, _TokenBase.isTokenInteractive)(props) && Boolean(onRemove) && !hideRemoveButton;
73
+
74
+ const onRemoveClick = e => {
75
+ e.stopPropagation();
76
+ onRemove && onRemove();
77
+ };
78
+
79
+ const labelStyles = (0, _react.useMemo)(() => {
80
+ const [r, g, b] = (0, _color2k.parseToRgba)(fillColor);
81
+ const [h, s, l] = (0, _color2k.parseToHsla)(fillColor); // label hack taken from https://github.com/github/github/blob/master/app/assets/stylesheets/hacks/hx_primer-labels.scss#L43-L108
82
+ // this logic should eventually live in primer/components. Also worthy of note is that the dotcom hack code will be moving to primer/css soon.
83
+
84
+ return {
85
+ '--label-r': String(r),
86
+ '--label-g': String(g),
87
+ '--label-b': String(b),
88
+ '--label-h': String(Math.round(h)),
89
+ '--label-s': String(Math.round(s * 100)),
90
+ '--label-l': String(Math.round(l * 100)),
91
+ '--perceived-lightness': 'calc(((var(--label-r) * 0.2126) + (var(--label-g) * 0.7152) + (var(--label-b) * 0.0722)) / 255)',
92
+ '--lightness-switch': 'max(0, min(calc((var(--perceived-lightness) - var(--lightness-threshold)) * -1000), 1))',
93
+ paddingRight: hideRemoveButton || !onRemove ? undefined : 0,
94
+ position: 'relative',
95
+ ...(colorScheme === 'light' ? lightModeStyles : darkModeStyles),
96
+ ...(isSelected ? {
97
+ background: colorScheme === 'light' ? 'hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) - 5) * 1%))' : darkModeStyles.background,
98
+ ':focus': {
99
+ outline: 'none'
100
+ },
101
+ ':after': {
102
+ content: '""',
103
+ position: 'absolute',
104
+ zIndex: 1,
105
+ top: `-${tokenBorderWidthPx * 2}px`,
106
+ right: `-${tokenBorderWidthPx * 2}px`,
107
+ bottom: `-${tokenBorderWidthPx * 2}px`,
108
+ left: `-${tokenBorderWidthPx * 2}px`,
109
+ display: 'block',
110
+ pointerEvents: 'none',
111
+ boxShadow: `0 0 0 ${tokenBorderWidthPx * 2}px ${colorScheme === 'light' ? 'rgb(var(--label-r), var(--label-g), var(--label-b))' : 'hsl(var(--label-h), calc(var(--label-s) * 1%), calc((var(--label-l) + var(--lighten-by)) * 1%))'}`,
112
+ borderRadius: '999px'
113
+ }
114
+ } : {})
115
+ };
116
+ }, [colorScheme, fillColor, isSelected, hideRemoveButton, onRemove]);
117
+ return /*#__PURE__*/_react.default.createElement(_TokenBase.default, _extends({
118
+ onRemove: onRemove,
119
+ id: id === null || id === void 0 ? void 0 : id.toString(),
120
+ isSelected: isSelected,
121
+ text: text,
122
+ size: size,
123
+ sx: labelStyles
124
+ }, !hasMultipleActionTargets ? interactiveTokenProps : {}, rest, {
125
+ ref: forwardedRef
126
+ }), /*#__PURE__*/_react.default.createElement(_TokenTextContainer.default, hasMultipleActionTargets ? interactiveTokenProps : {}, text), !hideRemoveButton && onRemove ? /*#__PURE__*/_react.default.createElement(_RemoveTokenButton.default, {
127
+ borderOffset: tokenBorderWidthPx,
128
+ onClick: onRemoveClick,
129
+ size: size,
130
+ "aria-hidden": hasMultipleActionTargets ? 'true' : 'false',
131
+ isParentInteractive: (0, _TokenBase.isTokenInteractive)(props),
132
+ sx: hasMultipleActionTargets ? {
133
+ position: 'relative',
134
+ zIndex: '1'
135
+ } : {}
136
+ }) : null);
137
+ });
138
+ IssueLabelToken.defaultProps = {
139
+ fillColor: '#999',
140
+ size: _TokenBase.defaultTokenSize
141
+ };
142
+ IssueLabelToken.displayName = 'IssueLabelToken';
143
+ var _default = IssueLabelToken;
144
+ exports.default = _default;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { TokenBaseProps } from './TokenBase';
3
+ export interface ProfileTokenProps extends TokenBaseProps {
4
+ avatarSrc: string;
5
+ }
6
+ declare const ProfileToken: React.ForwardRefExoticComponent<Pick<ProfileTokenProps, "sizes" | "color" | "content" | "height" | "translate" | "width" | "hidden" | "children" | "value" | "cite" | "data" | "form" | "label" | "slot" | "span" | "style" | "summary" | "title" | "pattern" | "text" | "list" | "default" | "type" | "name" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "start" | "step" | "size" | "wrap" | "open" | "max" | "media" | "method" | "min" | "target" | "crossOrigin" | "href" | "classID" | "useMap" | "wmode" | "download" | "hrefLang" | "rel" | "alt" | "coords" | "shape" | "autoPlay" | "controls" | "loop" | "mediaGroup" | "muted" | "playsInline" | "preload" | "src" | "autoFocus" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "dateTime" | "acceptCharset" | "action" | "autoComplete" | "encType" | "noValidate" | "manifest" | "allowFullScreen" | "allowTransparency" | "frameBorder" | "marginHeight" | "marginWidth" | "sandbox" | "scrolling" | "seamless" | "srcDoc" | "srcSet" | "async" | "accept" | "capture" | "checked" | "maxLength" | "minLength" | "multiple" | "readOnly" | "required" | "challenge" | "keyType" | "keyParams" | "htmlFor" | "as" | "integrity" | "charSet" | "httpEquiv" | "high" | "low" | "optimum" | "reversed" | "selected" | "defer" | "nonce" | "scoped" | "cellPadding" | "cellSpacing" | "colSpan" | "headers" | "rowSpan" | "scope" | "cols" | "rows" | "kind" | "srcLang" | "poster" | "onRemove" | "isSelected" | "avatarSrc"> & React.RefAttributes<HTMLElement>>;
7
+ export default ProfileToken;
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _primitives = _interopRequireDefault(require("@primer/primitives"));
11
+
12
+ var _constants = require("../constants");
13
+
14
+ var _TokenBase = require("./TokenBase");
15
+
16
+ var _Token = _interopRequireDefault(require("./Token"));
17
+
18
+ var _ = require("..");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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
+
26
+ 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); }
27
+
28
+ const ProfileToken = /*#__PURE__*/(0, _react.forwardRef)(({
29
+ avatarSrc,
30
+ id,
31
+ size,
32
+ ...rest
33
+ }, forwardedRef) => {
34
+ return /*#__PURE__*/_react.default.createElement(_Token.default, _extends({
35
+ leadingVisual: () => /*#__PURE__*/_react.default.createElement(_.Avatar, {
36
+ src: avatarSrc,
37
+ size: parseInt(_TokenBase.tokenSizes[size || _TokenBase.defaultTokenSize], 10) - parseInt(_primitives.default.spacing.normal.spacer[1], 10) * 2
38
+ }),
39
+ size: size,
40
+ id: id === null || id === void 0 ? void 0 : id.toString(),
41
+ sx: {
42
+ paddingLeft: (0, _constants.get)('space.1')
43
+ }
44
+ }, rest, {
45
+ ref: forwardedRef
46
+ }));
47
+ });
48
+ ProfileToken.defaultProps = {
49
+ size: _TokenBase.defaultTokenSize
50
+ };
51
+ ProfileToken.displayName = 'ProfileToken';
52
+ var _default = ProfileToken;
53
+ exports.default = _default;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { SxProp } from '../sx';
3
+ import { TokenBaseProps } from './TokenBase';
4
+ export interface TokenProps extends TokenBaseProps {
5
+ /**
6
+ * A function that renders a component before the token text
7
+ */
8
+ leadingVisual?: React.ComponentType<any>;
9
+ /**
10
+ * Whether the remove button should be rendered in the token
11
+ */
12
+ hideRemoveButton?: boolean;
13
+ }
14
+ declare const Token: React.ForwardRefExoticComponent<Pick<TokenProps & SxProp, "sizes" | "color" | "content" | "height" | "translate" | "width" | "hidden" | "children" | "value" | "cite" | "data" | "form" | "label" | "slot" | "span" | "style" | "summary" | "title" | "pattern" | "text" | "list" | "default" | "type" | "name" | "key" | "defaultChecked" | "defaultValue" | "suppressContentEditableWarning" | "suppressHydrationWarning" | "accessKey" | "className" | "contentEditable" | "contextMenu" | "dir" | "draggable" | "id" | "lang" | "placeholder" | "spellCheck" | "tabIndex" | "radioGroup" | "role" | "about" | "datatype" | "inlist" | "prefix" | "property" | "resource" | "typeof" | "vocab" | "autoCapitalize" | "autoCorrect" | "autoSave" | "itemProp" | "itemScope" | "itemType" | "itemID" | "itemRef" | "results" | "security" | "unselectable" | "inputMode" | "is" | "aria-activedescendant" | "aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colspan" | "aria-controls" | "aria-current" | "aria-describedby" | "aria-details" | "aria-disabled" | "aria-dropeffect" | "aria-errormessage" | "aria-expanded" | "aria-flowto" | "aria-grabbed" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-labelledby" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-owns" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-relevant" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext" | "dangerouslySetInnerHTML" | "onCopy" | "onCopyCapture" | "onCut" | "onCutCapture" | "onPaste" | "onPasteCapture" | "onCompositionEnd" | "onCompositionEndCapture" | "onCompositionStart" | "onCompositionStartCapture" | "onCompositionUpdate" | "onCompositionUpdateCapture" | "onFocus" | "onFocusCapture" | "onBlur" | "onBlurCapture" | "onChange" | "onChangeCapture" | "onBeforeInput" | "onBeforeInputCapture" | "onInput" | "onInputCapture" | "onReset" | "onResetCapture" | "onSubmit" | "onSubmitCapture" | "onInvalid" | "onInvalidCapture" | "onLoad" | "onLoadCapture" | "onError" | "onErrorCapture" | "onKeyDown" | "onKeyDownCapture" | "onKeyPress" | "onKeyPressCapture" | "onKeyUp" | "onKeyUpCapture" | "onAbort" | "onAbortCapture" | "onCanPlay" | "onCanPlayCapture" | "onCanPlayThrough" | "onCanPlayThroughCapture" | "onDurationChange" | "onDurationChangeCapture" | "onEmptied" | "onEmptiedCapture" | "onEncrypted" | "onEncryptedCapture" | "onEnded" | "onEndedCapture" | "onLoadedData" | "onLoadedDataCapture" | "onLoadedMetadata" | "onLoadedMetadataCapture" | "onLoadStart" | "onLoadStartCapture" | "onPause" | "onPauseCapture" | "onPlay" | "onPlayCapture" | "onPlaying" | "onPlayingCapture" | "onProgress" | "onProgressCapture" | "onRateChange" | "onRateChangeCapture" | "onSeeked" | "onSeekedCapture" | "onSeeking" | "onSeekingCapture" | "onStalled" | "onStalledCapture" | "onSuspend" | "onSuspendCapture" | "onTimeUpdate" | "onTimeUpdateCapture" | "onVolumeChange" | "onVolumeChangeCapture" | "onWaiting" | "onWaitingCapture" | "onAuxClick" | "onAuxClickCapture" | "onClick" | "onClickCapture" | "onContextMenu" | "onContextMenuCapture" | "onDoubleClick" | "onDoubleClickCapture" | "onDrag" | "onDragCapture" | "onDragEnd" | "onDragEndCapture" | "onDragEnter" | "onDragEnterCapture" | "onDragExit" | "onDragExitCapture" | "onDragLeave" | "onDragLeaveCapture" | "onDragOver" | "onDragOverCapture" | "onDragStart" | "onDragStartCapture" | "onDrop" | "onDropCapture" | "onMouseDown" | "onMouseDownCapture" | "onMouseEnter" | "onMouseLeave" | "onMouseMove" | "onMouseMoveCapture" | "onMouseOut" | "onMouseOutCapture" | "onMouseOver" | "onMouseOverCapture" | "onMouseUp" | "onMouseUpCapture" | "onSelect" | "onSelectCapture" | "onTouchCancel" | "onTouchCancelCapture" | "onTouchEnd" | "onTouchEndCapture" | "onTouchMove" | "onTouchMoveCapture" | "onTouchStart" | "onTouchStartCapture" | "onPointerDown" | "onPointerDownCapture" | "onPointerMove" | "onPointerMoveCapture" | "onPointerUp" | "onPointerUpCapture" | "onPointerCancel" | "onPointerCancelCapture" | "onPointerEnter" | "onPointerEnterCapture" | "onPointerLeave" | "onPointerLeaveCapture" | "onPointerOver" | "onPointerOverCapture" | "onPointerOut" | "onPointerOutCapture" | "onGotPointerCapture" | "onGotPointerCaptureCapture" | "onLostPointerCapture" | "onLostPointerCaptureCapture" | "onScroll" | "onScrollCapture" | "onWheel" | "onWheelCapture" | "onAnimationStart" | "onAnimationStartCapture" | "onAnimationEnd" | "onAnimationEndCapture" | "onAnimationIteration" | "onAnimationIterationCapture" | "onTransitionEnd" | "onTransitionEndCapture" | "start" | "step" | "size" | "wrap" | "open" | "sx" | "max" | "media" | "method" | "min" | "target" | "crossOrigin" | "href" | "classID" | "useMap" | "wmode" | "download" | "hrefLang" | "rel" | "alt" | "coords" | "shape" | "autoPlay" | "controls" | "loop" | "mediaGroup" | "muted" | "playsInline" | "preload" | "src" | "autoFocus" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "dateTime" | "acceptCharset" | "action" | "autoComplete" | "encType" | "noValidate" | "manifest" | "allowFullScreen" | "allowTransparency" | "frameBorder" | "marginHeight" | "marginWidth" | "sandbox" | "scrolling" | "seamless" | "srcDoc" | "srcSet" | "async" | "accept" | "capture" | "checked" | "maxLength" | "minLength" | "multiple" | "readOnly" | "required" | "challenge" | "keyType" | "keyParams" | "htmlFor" | "as" | "integrity" | "charSet" | "httpEquiv" | "high" | "low" | "optimum" | "reversed" | "selected" | "defer" | "nonce" | "scoped" | "cellPadding" | "cellSpacing" | "colSpan" | "headers" | "rowSpan" | "scope" | "cols" | "rows" | "kind" | "srcLang" | "poster" | "leadingVisual" | "onRemove" | "isSelected" | "hideRemoveButton"> & React.RefAttributes<HTMLAnchorElement | HTMLButtonElement | HTMLSpanElement>>;
15
+ export default Token;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
11
+
12
+ var _constants = require("../constants");
13
+
14
+ var _sx = _interopRequireDefault(require("../sx"));
15
+
16
+ var _TokenBase = _interopRequireWildcard(require("./TokenBase"));
17
+
18
+ var _RemoveTokenButton = _interopRequireDefault(require("./_RemoveTokenButton"));
19
+
20
+ var _TokenTextContainer = _interopRequireDefault(require("./_TokenTextContainer"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ 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); }
25
+
26
+ 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; }
27
+
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); }
29
+
30
+ const tokenBorderWidthPx = 1;
31
+ const DefaultTokenStyled = (0, _styledComponents.default)(_TokenBase.default).withConfig({
32
+ displayName: "Token__DefaultTokenStyled",
33
+ componentId: "sc-1dg52pw-0"
34
+ })(["background-color:", ";border-color:", ";border-style:solid;border-width:", "px;color:", ";max-width:100%;padding-right:", ";position:relative;", " ", ""], (0, _constants.get)('colors.neutral.subtle'), props => props.isSelected ? (0, _constants.get)('colors.fg.default') : (0, _constants.get)('colors.border.subtle'), tokenBorderWidthPx, props => props.isSelected ? (0, _constants.get)('colors.fg.default') : (0, _constants.get)('colors.fg.muted'), props => !props.hideRemoveButton ? 0 : undefined, _sx.default, props => {
35
+ if (props.isTokenInteractive) {
36
+ return (0, _styledComponents.css)(["&:hover{background-color:", ";box-shadow:", ";color:", ";}"], (0, _constants.get)('colors.neutral.muted'), (0, _constants.get)('colors.shadow.medium'), (0, _constants.get)('colors.fg.default'));
37
+ }
38
+ });
39
+ const LeadingVisualContainer = (0, _styledComponents.default)('span').withConfig({
40
+ displayName: "Token__LeadingVisualContainer",
41
+ componentId: "sc-1dg52pw-1"
42
+ })(["flex-shrink:0;line-height:0;"]);
43
+ const Token = /*#__PURE__*/(0, _react.forwardRef)((props, forwardedRef) => {
44
+ const {
45
+ as,
46
+ onRemove,
47
+ id,
48
+ leadingVisual: LeadingVisual,
49
+ text,
50
+ size,
51
+ hideRemoveButton,
52
+ href,
53
+ onClick,
54
+ ...rest
55
+ } = props;
56
+ const hasMultipleActionTargets = (0, _TokenBase.isTokenInteractive)(props) && Boolean(onRemove) && !hideRemoveButton;
57
+
58
+ const onRemoveClick = e => {
59
+ e.stopPropagation();
60
+ onRemove && onRemove();
61
+ };
62
+
63
+ const interactiveTokenProps = {
64
+ as,
65
+ href,
66
+ onClick
67
+ };
68
+ return /*#__PURE__*/_react.default.createElement(DefaultTokenStyled, _extends({
69
+ onRemove: onRemove,
70
+ hideRemoveButton: hideRemoveButton || !onRemove,
71
+ id: id === null || id === void 0 ? void 0 : id.toString(),
72
+ text: text,
73
+ size: size,
74
+ isTokenInteractive: (0, _TokenBase.isTokenInteractive)(props)
75
+ }, !hasMultipleActionTargets ? interactiveTokenProps : {}, rest, {
76
+ ref: forwardedRef
77
+ }), LeadingVisual ? /*#__PURE__*/_react.default.createElement(LeadingVisualContainer, null, /*#__PURE__*/_react.default.createElement(LeadingVisual, null)) : null, /*#__PURE__*/_react.default.createElement(_TokenTextContainer.default, hasMultipleActionTargets ? interactiveTokenProps : {}, text), !hideRemoveButton && onRemove ? /*#__PURE__*/_react.default.createElement(_RemoveTokenButton.default, {
78
+ borderOffset: tokenBorderWidthPx,
79
+ onClick: onRemoveClick,
80
+ size: size,
81
+ isParentInteractive: (0, _TokenBase.isTokenInteractive)(props),
82
+ "aria-hidden": hasMultipleActionTargets ? 'true' : 'false',
83
+ sx: hasMultipleActionTargets ? {
84
+ position: 'relative',
85
+ zIndex: '1'
86
+ } : {}
87
+ }) : null);
88
+ });
89
+ Token.displayName = 'Token';
90
+ Token.defaultProps = {
91
+ size: _TokenBase.defaultTokenSize
92
+ };
93
+ var _default = Token;
94
+ exports.default = _default;
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import { SxProp } from '../sx';
3
+ export declare type TokenSizeKeys = 'small' | 'medium' | 'large' | 'xlarge';
4
+ export declare const tokenSizes: Record<TokenSizeKeys, string>;
5
+ export declare const defaultTokenSize: TokenSizeKeys;
6
+ export interface TokenBaseProps extends Omit<React.HTMLProps<HTMLSpanElement | HTMLButtonElement | HTMLAnchorElement>, 'size' | 'id'> {
7
+ as?: 'button' | 'a' | 'span';
8
+ onRemove?: () => void;
9
+ isSelected?: boolean;
10
+ tabIndex?: number;
11
+ text: string;
12
+ id?: number | string;
13
+ size?: TokenSizeKeys;
14
+ }
15
+ export declare const isTokenInteractive: ({ as, onClick, onFocus, tabIndex }: TokenBaseProps) => boolean;
16
+ declare const TokenBase: import("styled-components").StyledComponent<"span", any, TokenBaseProps & SxProp, never>;
17
+ export default TokenBase;