@primer/components 0.0.0-202181722217 → 0.0.0-202181723821

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 (202) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/dist/browser.esm.js +665 -619
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +432 -386
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/ActionList/Divider.js +1 -1
  7. package/lib/ActionList/Header.js +2 -2
  8. package/lib/ActionList/Item.js +13 -13
  9. package/lib/ActionList/List.js +1 -1
  10. package/lib/AnchoredOverlay/AnchoredOverlay.js +2 -2
  11. package/lib/Avatar.d.ts +4 -0
  12. package/lib/AvatarPair.js +1 -1
  13. package/lib/AvatarStack.js +1 -1
  14. package/lib/BranchName.js +1 -1
  15. package/lib/Breadcrumb.js +2 -2
  16. package/lib/Button/Button.js +1 -1
  17. package/lib/Button/ButtonClose.js +1 -1
  18. package/lib/Button/ButtonInvisible.js +1 -1
  19. package/lib/Button/ButtonTableList.js +1 -1
  20. package/lib/CircleBadge.js +1 -1
  21. package/lib/CircleOcticon.js +1 -1
  22. package/lib/CounterLabel.js +2 -2
  23. package/lib/Dialog/ConfirmationDialog.js +1 -1
  24. package/lib/Dialog/Dialog.js +9 -9
  25. package/lib/Dialog.js +4 -4
  26. package/lib/Dropdown.js +2 -2
  27. package/lib/DropdownStyles.js +6 -6
  28. package/lib/FilterList.js +1 -1
  29. package/lib/FilteredActionList/FilteredActionList.js +5 -5
  30. package/lib/Flash.js +1 -1
  31. package/lib/Label.js +2 -2
  32. package/lib/Link.js +1 -1
  33. package/lib/Overlay.d.ts +1 -2
  34. package/lib/Overlay.js +6 -11
  35. package/lib/Pagehead.js +1 -1
  36. package/lib/Pagination/Pagination.js +1 -1
  37. package/lib/Popover.js +1 -1
  38. package/lib/ProgressBar.js +1 -1
  39. package/lib/SelectMenu/SelectMenu.d.ts +11 -327
  40. package/lib/SelectMenu/SelectMenuDivider.js +1 -1
  41. package/lib/SelectMenu/SelectMenuFilter.d.ts +1 -1
  42. package/lib/SelectMenu/SelectMenuFilter.js +1 -1
  43. package/lib/SelectMenu/SelectMenuFooter.js +1 -1
  44. package/lib/SelectMenu/SelectMenuHeader.js +2 -2
  45. package/lib/SelectMenu/SelectMenuItem.js +1 -1
  46. package/lib/SelectMenu/SelectMenuList.js +1 -1
  47. package/lib/SelectMenu/SelectMenuLoadingAnimation.js +1 -1
  48. package/lib/SelectMenu/SelectMenuModal.js +2 -2
  49. package/lib/SelectMenu/SelectMenuTab.js +1 -1
  50. package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
  51. package/lib/SideNav.js +5 -5
  52. package/lib/StateLabel.js +1 -1
  53. package/lib/SubNav.js +1 -1
  54. package/lib/TabNav.js +2 -2
  55. package/lib/TextInput.d.ts +6 -6
  56. package/lib/TextInput.js +21 -16
  57. package/lib/Timeline.js +16 -19
  58. package/lib/Tooltip.js +1 -1
  59. package/lib/UnderlineNav.js +2 -2
  60. package/lib/hooks/useOverlay.d.ts +1 -2
  61. package/lib/hooks/useOverlay.js +6 -11
  62. package/lib/index.d.ts +1 -0
  63. package/lib/index.js +14 -0
  64. package/lib/theme-preval.d.ts +12 -6
  65. package/lib/theme-preval.js +940 -0
  66. package/lib/utils/ssr.d.ts +1 -0
  67. package/lib/utils/ssr.js +19 -0
  68. package/lib/utils/testing.d.ts +1854 -0
  69. package/lib/utils/uniqueId.js +1 -0
  70. package/lib-esm/ActionList/Divider.js +1 -1
  71. package/lib-esm/ActionList/Header.js +2 -2
  72. package/lib-esm/ActionList/Item.js +14 -14
  73. package/lib-esm/ActionList/List.js +1 -1
  74. package/lib-esm/AnchoredOverlay/AnchoredOverlay.js +3 -3
  75. package/lib-esm/Avatar.d.ts +4 -0
  76. package/lib-esm/AvatarPair.js +1 -1
  77. package/lib-esm/AvatarStack.js +1 -1
  78. package/lib-esm/BranchName.js +1 -1
  79. package/lib-esm/Breadcrumb.js +2 -2
  80. package/lib-esm/Button/Button.js +1 -1
  81. package/lib-esm/Button/ButtonClose.js +1 -1
  82. package/lib-esm/Button/ButtonInvisible.js +1 -1
  83. package/lib-esm/Button/ButtonTableList.js +1 -1
  84. package/lib-esm/CircleBadge.js +1 -1
  85. package/lib-esm/CircleOcticon.js +1 -1
  86. package/lib-esm/CounterLabel.js +2 -2
  87. package/lib-esm/Dialog/ConfirmationDialog.js +1 -1
  88. package/lib-esm/Dialog/Dialog.js +8 -8
  89. package/lib-esm/Dialog.js +4 -4
  90. package/lib-esm/Dropdown.js +2 -2
  91. package/lib-esm/DropdownStyles.js +6 -6
  92. package/lib-esm/FilterList.js +1 -1
  93. package/lib-esm/FilteredActionList/FilteredActionList.js +5 -5
  94. package/lib-esm/Flash.js +1 -1
  95. package/lib-esm/Label.js +2 -2
  96. package/lib-esm/Link.js +1 -1
  97. package/lib-esm/Overlay.d.ts +1 -2
  98. package/lib-esm/Overlay.js +6 -9
  99. package/lib-esm/Pagehead.js +1 -1
  100. package/lib-esm/Pagination/Pagination.js +1 -1
  101. package/lib-esm/Popover.js +1 -1
  102. package/lib-esm/ProgressBar.js +1 -1
  103. package/lib-esm/SelectMenu/SelectMenu.d.ts +11 -327
  104. package/lib-esm/SelectMenu/SelectMenuDivider.js +1 -1
  105. package/lib-esm/SelectMenu/SelectMenuFilter.d.ts +1 -1
  106. package/lib-esm/SelectMenu/SelectMenuFilter.js +1 -1
  107. package/lib-esm/SelectMenu/SelectMenuFooter.js +1 -1
  108. package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
  109. package/lib-esm/SelectMenu/SelectMenuItem.js +1 -1
  110. package/lib-esm/SelectMenu/SelectMenuList.js +1 -1
  111. package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +1 -1
  112. package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
  113. package/lib-esm/SelectMenu/SelectMenuTab.js +1 -1
  114. package/lib-esm/SelectMenu/SelectMenuTabPanel.js +1 -1
  115. package/lib-esm/SideNav.js +5 -5
  116. package/lib-esm/StateLabel.js +1 -1
  117. package/lib-esm/SubNav.js +1 -1
  118. package/lib-esm/TabNav.js +2 -2
  119. package/lib-esm/TextInput.d.ts +6 -6
  120. package/lib-esm/TextInput.js +22 -16
  121. package/lib-esm/Timeline.js +12 -17
  122. package/lib-esm/Tooltip.js +1 -1
  123. package/lib-esm/UnderlineNav.js +2 -2
  124. package/lib-esm/hooks/useOverlay.d.ts +1 -2
  125. package/lib-esm/hooks/useOverlay.js +6 -11
  126. package/lib-esm/index.d.ts +1 -0
  127. package/lib-esm/index.js +2 -1
  128. package/lib-esm/theme-preval.d.ts +12 -6
  129. package/lib-esm/theme-preval.js +940 -0
  130. package/lib-esm/utils/ssr.d.ts +1 -0
  131. package/lib-esm/utils/ssr.js +1 -0
  132. package/lib-esm/utils/testing.d.ts +1854 -0
  133. package/lib-esm/utils/uniqueId.js +1 -0
  134. package/package.json +5 -6
  135. package/lib/Autocomplete/Autocomplete.d.ts +0 -36
  136. package/lib/Autocomplete/Autocomplete.js +0 -55
  137. package/lib/Autocomplete/AutocompleteContext.d.ts +0 -13
  138. package/lib/Autocomplete/AutocompleteContext.js +0 -14
  139. package/lib/Autocomplete/AutocompleteInput.d.ts +0 -9
  140. package/lib/Autocomplete/AutocompleteInput.js +0 -123
  141. package/lib/Autocomplete/AutocompleteMenu.d.ts +0 -20
  142. package/lib/Autocomplete/AutocompleteMenu.js +0 -268
  143. package/lib/Autocomplete/index.d.ts +0 -2
  144. package/lib/Autocomplete/index.js +0 -15
  145. package/lib/Badge/Badge.d.ts +0 -8
  146. package/lib/Badge/Badge.js +0 -59
  147. package/lib/Badge/BadgeState.d.ts +0 -13
  148. package/lib/Badge/BadgeState.js +0 -51
  149. package/lib/Badge/_badgeStyleUtils.d.ts +0 -3
  150. package/lib/Badge/_badgeStyleUtils.js +0 -39
  151. package/lib/TextInputTokens.d.ts +0 -32
  152. package/lib/TextInputTokens.js +0 -241
  153. package/lib/TextInputWithTokens.d.ts +0 -41
  154. package/lib/TextInputWithTokens.js +0 -396
  155. package/lib/Token/Token.d.ts +0 -7
  156. package/lib/Token/Token.js +0 -66
  157. package/lib/Token/TokenBase.d.ts +0 -16
  158. package/lib/Token/TokenBase.js +0 -76
  159. package/lib/Token/TokenLabel.d.ts +0 -8
  160. package/lib/Token/TokenLabel.js +0 -116
  161. package/lib/Token/TokenProfile.d.ts +0 -7
  162. package/lib/Token/TokenProfile.js +0 -45
  163. package/lib/Token/_AddTokenButton.d.ts +0 -3
  164. package/lib/Token/_AddTokenButton.js +0 -42
  165. package/lib/Token/_RemoveTokenButton.d.ts +0 -3
  166. package/lib/Token/_RemoveTokenButton.js +0 -42
  167. package/lib/Token/_tokenButtonUtils.d.ts +0 -8
  168. package/lib/Token/_tokenButtonUtils.js +0 -42
  169. package/lib-esm/Autocomplete/Autocomplete.d.ts +0 -36
  170. package/lib-esm/Autocomplete/Autocomplete.js +0 -36
  171. package/lib-esm/Autocomplete/AutocompleteContext.d.ts +0 -13
  172. package/lib-esm/Autocomplete/AutocompleteContext.js +0 -5
  173. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +0 -9
  174. package/lib-esm/Autocomplete/AutocompleteInput.js +0 -104
  175. package/lib-esm/Autocomplete/AutocompleteMenu.d.ts +0 -20
  176. package/lib-esm/Autocomplete/AutocompleteMenu.js +0 -244
  177. package/lib-esm/Autocomplete/index.d.ts +0 -2
  178. package/lib-esm/Autocomplete/index.js +0 -1
  179. package/lib-esm/Badge/Badge.d.ts +0 -8
  180. package/lib-esm/Badge/Badge.js +0 -44
  181. package/lib-esm/Badge/BadgeState.d.ts +0 -13
  182. package/lib-esm/Badge/BadgeState.js +0 -40
  183. package/lib-esm/Badge/_badgeStyleUtils.d.ts +0 -3
  184. package/lib-esm/Badge/_badgeStyleUtils.js +0 -29
  185. package/lib-esm/TextInputTokens.d.ts +0 -32
  186. package/lib-esm/TextInputTokens.js +0 -211
  187. package/lib-esm/TextInputWithTokens.d.ts +0 -41
  188. package/lib-esm/TextInputWithTokens.js +0 -361
  189. package/lib-esm/Token/Token.d.ts +0 -7
  190. package/lib-esm/Token/Token.js +0 -46
  191. package/lib-esm/Token/TokenBase.d.ts +0 -16
  192. package/lib-esm/Token/TokenBase.js +0 -56
  193. package/lib-esm/Token/TokenLabel.d.ts +0 -8
  194. package/lib-esm/Token/TokenLabel.js +0 -100
  195. package/lib-esm/Token/TokenProfile.d.ts +0 -7
  196. package/lib-esm/Token/TokenProfile.js +0 -28
  197. package/lib-esm/Token/_AddTokenButton.d.ts +0 -3
  198. package/lib-esm/Token/_AddTokenButton.js +0 -27
  199. package/lib-esm/Token/_RemoveTokenButton.d.ts +0 -3
  200. package/lib-esm/Token/_RemoveTokenButton.js +0 -27
  201. package/lib-esm/Token/_tokenButtonUtils.d.ts +0 -8
  202. package/lib-esm/Token/_tokenButtonUtils.js +0 -26
@@ -1,41 +0,0 @@
1
- import React from 'react';
2
- import { MaxWidthProps, MinWidthProps, WidthProps } from 'styled-system';
3
- import { ItemProps } from './ActionList';
4
- import { ItemInput } from './ActionList/List';
5
- import { SystemCommonProps } from './constants';
6
- import { SxProp } from './sx';
7
- import { ComponentProps } from './utils/types';
8
- import Token from './Token/Token';
9
- declare const Input: import("styled-components").StyledComponent<"input", any, {}, never>;
10
- declare const Wrapper: import("styled-components").StyledComponent<"span", any, {
11
- disabled?: boolean | undefined;
12
- hasIcon?: boolean | undefined;
13
- block?: boolean | undefined;
14
- contrast?: boolean | undefined;
15
- variant?: "large" | "small" | undefined;
16
- maxHeight?: React.CSSProperties['maxHeight'];
17
- } & SystemCommonProps & WidthProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, import("csstype").Property.Width<import("styled-system").TLengthStyledSystem>> & MinWidthProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, import("csstype").Property.MinWidth<import("styled-system").TLengthStyledSystem>> & MaxWidthProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, import("csstype").Property.MaxWidth<import("styled-system").TLengthStyledSystem>> & SxProp, never>;
18
- interface Token {
19
- text?: string;
20
- id: string | number;
21
- }
22
- declare type TextInputWithTokensInternalProps = {
23
- as?: any;
24
- icon?: React.ComponentType<{
25
- className?: string;
26
- }>;
27
- tokens: Token[];
28
- onTokenRemove: (tokenId: string | number) => void;
29
- selectableItems: ItemInput[];
30
- onFilterChange: (value: string, e: React.ChangeEvent<HTMLInputElement>) => void;
31
- onItemSelect: NonNullable<ItemProps['onAction']>;
32
- tokenComponent?: React.FunctionComponent<any>;
33
- emptyStateText?: React.ReactNode | false;
34
- addNewTokenItem?: Omit<ItemInput, 'onAction'>;
35
- onCloseOptionsList?: () => void;
36
- maxHeight?: React.CSSProperties['maxHeight'];
37
- loading?: boolean;
38
- } & ComponentProps<typeof Wrapper> & ComponentProps<typeof Input>;
39
- declare const TextInputWithTokens: React.ForwardRefExoticComponent<Pick<TextInputWithTokensInternalProps, "backgroundColor" | "color" | "display" | "height" | "marginBottom" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minWidth" | "opacity" | "paddingBottom" | "paddingLeft" | "paddingRight" | "paddingTop" | "translate" | "width" | "margin" | "padding" | "hidden" | "children" | "theme" | "value" | "form" | "p" | "slot" | "style" | "title" | "pattern" | "list" | "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" | "css" | "block" | "bg" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "step" | "size" | "icon" | "sx" | "max" | "min" | "crossOrigin" | "alt" | "src" | "autoFocus" | "disabled" | "formAction" | "formEncType" | "formMethod" | "formNoValidate" | "formTarget" | "autoComplete" | "loading" | "accept" | "capture" | "checked" | "enterKeyHint" | "maxLength" | "minLength" | "multiple" | "readOnly" | "required" | "as" | "variant" | "hasIcon" | "contrast" | "onItemSelect" | "emptyStateText" | "onFilterChange" | "tokens" | "onTokenRemove" | "tokenComponent" | "selectableItems" | "addNewTokenItem" | "onCloseOptionsList"> & React.RefAttributes<HTMLInputElement>>;
40
- export declare type TextInputWithTokensProps = ComponentProps<typeof TextInputWithTokens>;
41
- export default TextInputWithTokens;
@@ -1,361 +0,0 @@
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, { useCallback, useEffect, useRef, useState } from 'react';
4
- import { omit, pick } from '@styled-system/props';
5
- import classnames from 'classnames';
6
- import styled, { css } from 'styled-components';
7
- import { maxWidth, minWidth, variant, width } from 'styled-system';
8
- import { ActionList } from './ActionList';
9
- import { FocusKeys } from './behaviors/focusZone';
10
- import { COMMON, get } from './constants';
11
- import { useAnchoredPosition } from './hooks';
12
- import { useCombinedRefs } from './hooks/useCombinedRefs';
13
- import { useFocusZone } from './hooks/useFocusZone';
14
- import Overlay from './Overlay';
15
- import sx from './sx';
16
- import Token from './Token/Token';
17
- import { Box, Spinner } from '.';
18
- import { registerPortalRoot } from './Portal';
19
- const DROPDOWN_PORTAL_CONTAINER_NAME = '__listcontainerportal__';
20
-
21
- function scrollIntoViewingArea(child, container, margin = 8, behavior = 'smooth') {
22
- const {
23
- top: childTop,
24
- bottom: childBottom
25
- } = child.getBoundingClientRect();
26
- const {
27
- top: containerTop,
28
- bottom: containerBottom
29
- } = container.getBoundingClientRect();
30
- const isChildTopAboveViewingArea = childTop < containerTop + margin;
31
- const isChildBottomBelowViewingArea = childBottom > containerBottom - margin;
32
-
33
- if (isChildTopAboveViewingArea) {
34
- const scrollHeightToChildTop = childTop - containerTop + container.scrollTop;
35
- container.scrollTo({
36
- behavior,
37
- top: scrollHeightToChildTop - margin
38
- });
39
- } else if (isChildBottomBelowViewingArea) {
40
- const scrollHeightToChildBottom = childBottom - containerBottom + container.scrollTop;
41
- container.scrollTo({
42
- behavior,
43
- top: scrollHeightToChildBottom + margin
44
- });
45
- } // either completely in view or outside viewing area on both ends, don't scroll
46
-
47
- }
48
-
49
- const sizeVariants = variant({
50
- variants: {
51
- small: {
52
- minHeight: '28px',
53
- px: 2,
54
- py: '3px',
55
- fontSize: 0,
56
- lineHeight: '20px'
57
- },
58
- large: {
59
- px: 2,
60
- py: '10px',
61
- fontSize: 3
62
- }
63
- }
64
- });
65
- const Input = styled.input.withConfig({
66
- displayName: "TextInputWithTokens__Input",
67
- componentId: "sc-8z94t5-0"
68
- })(["border:0;font-size:inherit;font-family:inherit;background-color:transparent;-webkit-appearance:none;color:inherit;height:100%;width:100%;padding:0;&:focus{outline:0;}"]);
69
- const InputWrapper = styled.div.withConfig({
70
- displayName: "TextInputWithTokens__InputWrapper",
71
- componentId: "sc-8z94t5-1"
72
- })(["position:relative;order:1;flex-grow:1;&:after{content:attr(data-autocompleteSuggestion);pointer-events:none;display:flex;align-items:center;position:absolute;left:0;top:1px;width:100%;height:100%;display:flex;align-items:center;color:rgba(0,0,0,0.5);}"]);
73
- const Wrapper = styled.span.withConfig({
74
- displayName: "TextInputWithTokens__Wrapper",
75
- componentId: "sc-8z94t5-2"
76
- })(["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:", ";flex-wrap:wrap;gap:0.25rem;", " ", " .TextInput-icon{align-self:center;color:", ";margin:0 ", ";flex-shrink:0;}&:focus-within{border-color:", ";box-shadow:", ";}", " ", " ", " @media (min-width:", "){font-size:", ";}", " ", " ", " ", " ", " ", ";"], get('fontSizes.1'), get('colors.text.primary'), get('colors.border.primary'), get('radii.2'), get('shadows.shadow.inset'), props => {
77
- if (props.hasIcon) {
78
- return css(["padding:0;"]);
79
- } else {
80
- return css(["padding:6px 12px;"]);
81
- }
82
- }, props => {
83
- if (props.maxHeight) {
84
- return css(["max-height:", ";overflow:auto;"], props.maxHeight);
85
- }
86
- }, get('colors.icon.tertiary'), get('space.2'), get('colors.state.focus.border'), get('shadows.state.focus.shadow'), props => props.contrast && css(["background-color:", ";"], get('colors.input.contrastBg')), props => props.disabled && css(["color:", ";background-color:", ";border-color:", ";"], get('colors.text.secondary'), get('colors.input.disabledBg'), get('colors.input.disabledBorder')), props => props.block && css(["display:block;width:100%;"]), get('breakpoints.1'), get('fontSizes.1'), COMMON, width, minWidth, maxWidth, sizeVariants, sx);
87
- // using forwardRef is important so that other components (ex. SelectMenu) can autofocus the input
88
- const TextInputWithTokens = /*#__PURE__*/React.forwardRef(({
89
- icon: IconComponent,
90
- contrast,
91
- className,
92
- block,
93
- disabled,
94
- theme,
95
- sx: sxProp,
96
- tokens,
97
- selectableItems,
98
- onFilterChange,
99
- onItemSelect,
100
- onTokenRemove,
101
- tokenComponent: TokenComponent,
102
- emptyStateText,
103
- addNewTokenItem,
104
- onCloseOptionsList,
105
- loading,
106
- ...rest
107
- }, ref) => {
108
- const listContainerRef = useRef(null);
109
- const localInputRef = useRef(null);
110
- const scrollContainerRef = useRef(null);
111
- const activeDescendantRef = useRef();
112
- const combinedInputRef = useCombinedRefs(localInputRef, ref); // this class is necessary to style FilterSearch, plz no touchy!
113
-
114
- const wrapperClasses = classnames(className, 'TextInput-wrapper');
115
- const wrapperProps = pick(rest);
116
- const inputProps = omit(rest);
117
- const [selectedTokenIdx, setSelectedTokenIdx] = useState();
118
- const [inputVal, setInputVal] = useState('');
119
- const [showMenu, setShowMenu] = useState(false);
120
- const [selectedItems, setSelectedItems] = useState(tokens.map(({
121
- id,
122
- text
123
- }) => ({
124
- id,
125
- text
126
- })));
127
- const [autocompleteSuggestion, setAutocompleteSuggestion] = useState('');
128
- const [highlightedItem, setHighlightedItem] = useState();
129
- const {
130
- containerRef
131
- } = useFocusZone({
132
- focusOutBehavior: 'wrap',
133
- bindKeys: FocusKeys.ArrowHorizontal | FocusKeys.HomeAndEnd,
134
- focusableElementFilter: element => {
135
- return !(element instanceof HTMLButtonElement);
136
- }
137
- });
138
- const {
139
- floatingElementRef,
140
- position
141
- } = useAnchoredPosition({
142
- side: 'outside-bottom',
143
- align: 'start',
144
- anchorElementRef: combinedInputRef
145
- }, [showMenu, tokens]);
146
-
147
- const closeOptionList = () => {
148
- setShowMenu(false);
149
-
150
- if (onCloseOptionsList) {
151
- onCloseOptionsList();
152
- }
153
- };
154
-
155
- const showOptionList = () => {
156
- setShowMenu(true);
157
- };
158
-
159
- const handleTokenRemove = tokenId => {
160
- onTokenRemove(tokenId);
161
- setSelectedItems(selectedItems.filter(selectedItem => selectedItem.id !== tokenId));
162
- };
163
-
164
- const handleTokenFocus = tokenIdx => () => {
165
- setSelectedTokenIdx(tokenIdx);
166
- closeOptionList();
167
- };
168
-
169
- const handleTokenBlur = () => {
170
- setSelectedTokenIdx(undefined);
171
- };
172
-
173
- const handleTokenKeyUp = tokenId => e => {
174
- if (e.key === 'Backspace') {
175
- handleTokenRemove(tokenId);
176
- }
177
-
178
- if (e.key === 'Escape') {
179
- var _combinedInputRef$cur;
180
-
181
- combinedInputRef === null || combinedInputRef === void 0 ? void 0 : (_combinedInputRef$cur = combinedInputRef.current) === null || _combinedInputRef$cur === void 0 ? void 0 : _combinedInputRef$cur.focus();
182
- }
183
- };
184
-
185
- const handleInputFocus = () => {
186
- setSelectedTokenIdx(undefined);
187
- showOptionList();
188
- };
189
-
190
- const handleInputChange = e => {
191
- onFilterChange(e.currentTarget.value, e);
192
- setInputVal(e.currentTarget.value);
193
- };
194
-
195
- const handleInputKeyDown = e => {
196
- if (e.key === 'ArrowRight' && autocompleteSuggestion) {
197
- setInputVal(autocompleteSuggestion); // TODO: use hooks or something to always trigger `onFilterChange` when `inputVal` is changed
198
-
199
- onFilterChange(autocompleteSuggestion, e);
200
- }
201
-
202
- if (inputVal) {
203
- return;
204
- }
205
-
206
- const lastToken = tokens[tokens.length - 1];
207
-
208
- if (e.key === 'Backspace') {
209
- handleTokenRemove(lastToken.id);
210
- setInputVal(`${lastToken.text}` || ''); // TODO: use hooks or something to always trigger `onFilterChange` when `inputVal` is changed
211
-
212
- onFilterChange(lastToken.text || '', e); // HACK: for some reason we need to wait a tick for `.select()` to work
213
-
214
- setTimeout(() => {
215
- var _combinedInputRef$cur2;
216
-
217
- combinedInputRef === null || combinedInputRef === void 0 ? void 0 : (_combinedInputRef$cur2 = combinedInputRef.current) === null || _combinedInputRef$cur2 === void 0 ? void 0 : _combinedInputRef$cur2.select();
218
- }, 1);
219
- }
220
- };
221
-
222
- const onInputKeyPress = useCallback(event => {
223
- if (event.key === 'Enter' && activeDescendantRef.current) {
224
- event.preventDefault();
225
- event.nativeEvent.stopImmediatePropagation(); // Forward Enter key press to active descendant so that item gets activated
226
-
227
- const activeDescendantEvent = new KeyboardEvent(event.type, event.nativeEvent);
228
- activeDescendantRef.current.dispatchEvent(activeDescendantEvent);
229
- }
230
- }, [activeDescendantRef]);
231
-
232
- const getSelectedItems = (itemId, checked) => {
233
- const newlySelectedItem = selectableItems.find(item => item.id === itemId);
234
-
235
- if (checked) {
236
- return [...selectedItems, ...(newlySelectedItem ? [newlySelectedItem] : [])];
237
- }
238
-
239
- return selectedItems.filter(selectedChoice => selectedChoice.id !== itemId);
240
- };
241
-
242
- const itemsToRender = [// selectable tokens
243
- ...selectableItems.map(selectableItem => ({ ...selectableItem,
244
- selected: selectableItem.selected || selectedItems.map(item => item.id).includes(selectableItem.id),
245
- onAction: (item, e) => {
246
- setSelectedItems(getSelectedItems(item.id, !item.selected) || []);
247
-
248
- if (!item.selected) {
249
- onItemSelect(item, e);
250
- setInputVal('');
251
- setAutocompleteSuggestion('');
252
- } else {
253
- handleTokenRemove(item.id !== null && item.id !== undefined ? item.id : '');
254
- }
255
- }
256
- })), // menu item used for creating a token from whatever is in the text input
257
- ...(addNewTokenItem ? [{ ...addNewTokenItem,
258
- onAction: (_item, e) => {
259
- onItemSelect({
260
- text: inputVal,
261
- id: `randomlyGeneratedId-${inputVal}`
262
- }, e);
263
- }
264
- }] : [])];
265
- useFocusZone({
266
- containerRef: listContainerRef,
267
- focusOutBehavior: 'wrap',
268
- focusableElementFilter: element => {
269
- return !(element instanceof HTMLInputElement);
270
- },
271
- activeDescendantFocus: combinedInputRef,
272
- onActiveDescendantChanged: (current, _previous, directlyActivated) => {
273
- activeDescendantRef.current = current;
274
- const selectedItem = itemsToRender.find(item => {
275
- var _item$id;
276
-
277
- return ((_item$id = item.id) === null || _item$id === void 0 ? void 0 : _item$id.toString()) === (current === null || current === void 0 ? void 0 : current.dataset.id);
278
- });
279
- setHighlightedItem(selectedItem);
280
-
281
- if (current && scrollContainerRef.current && directlyActivated) {
282
- scrollIntoViewingArea(current, scrollContainerRef.current);
283
- }
284
- }
285
- });
286
- useEffect(() => {
287
- var _highlightedItem$text;
288
-
289
- if (highlightedItem !== null && highlightedItem !== void 0 && (_highlightedItem$text = highlightedItem.text) !== null && _highlightedItem$text !== void 0 && _highlightedItem$text.startsWith(inputVal)) {
290
- setAutocompleteSuggestion(highlightedItem.text);
291
- } else {
292
- setAutocompleteSuggestion('');
293
- }
294
- }, [highlightedItem, inputVal]);
295
-
296
- if (listContainerRef.current) {
297
- registerPortalRoot(listContainerRef.current, DROPDOWN_PORTAL_CONTAINER_NAME);
298
- }
299
-
300
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Wrapper, _extends({
301
- className: wrapperClasses,
302
- hasIcon: !!IconComponent,
303
- block: block,
304
- theme: theme,
305
- disabled: disabled,
306
- contrast: contrast,
307
- sx: sxProp,
308
- ref: containerRef
309
- }, wrapperProps), /*#__PURE__*/React.createElement(InputWrapper, {
310
- "data-autocompleteSuggestion": autocompleteSuggestion
311
- }, /*#__PURE__*/React.createElement(Input, _extends({
312
- ref: combinedInputRef,
313
- disabled: disabled,
314
- onFocus: handleInputFocus,
315
- onKeyPress: onInputKeyPress,
316
- onKeyDown: handleInputKeyDown,
317
- onChange: handleInputChange,
318
- type: "text",
319
- value: inputVal
320
- }, inputProps))), tokens !== null && tokens !== void 0 && tokens.length && TokenComponent ? tokens.map((token, i) => /*#__PURE__*/React.createElement(TokenComponent, {
321
- onFocus: handleTokenFocus(i),
322
- onBlur: handleTokenBlur,
323
- onKeyUp: handleTokenKeyUp(token.id),
324
- text: token.text || '' // TODO: just make token.text required
325
- ,
326
- isSelected: selectedTokenIdx === i,
327
- handleRemove: () => {
328
- handleTokenRemove(token.id);
329
- },
330
- variant: "xl",
331
- fillColor: token.labelColor ? token.labelColor : undefined,
332
- tabIndex: 0
333
- })) : null), /*#__PURE__*/React.createElement("div", {
334
- ref: listContainerRef
335
- }, showMenu && emptyStateText ? /*#__PURE__*/React.createElement(Overlay, {
336
- returnFocusRef: combinedInputRef,
337
- portalContainerName: DROPDOWN_PORTAL_CONTAINER_NAME,
338
- preventFocusOnOpen: true,
339
- onClickOutside: closeOptionList,
340
- onEscape: closeOptionList,
341
- ref: floatingElementRef,
342
- top: position === null || position === void 0 ? void 0 : position.top,
343
- left: position === null || position === void 0 ? void 0 : position.left
344
- }, loading ? /*#__PURE__*/React.createElement(Box, {
345
- p: 3,
346
- display: "flex",
347
- justifyContent: "center"
348
- }, /*#__PURE__*/React.createElement(Spinner, null)) : /*#__PURE__*/React.createElement(React.Fragment, null, itemsToRender.length ? /*#__PURE__*/React.createElement(ActionList, {
349
- selectionVariant: "multiple",
350
- items: itemsToRender,
351
- role: "listbox"
352
- }) : /*#__PURE__*/React.createElement(Box, {
353
- p: 3
354
- }, emptyStateText))) : null));
355
- });
356
- TextInputWithTokens.defaultProps = {
357
- tokenComponent: Token,
358
- emptyStateText: 'No selectable options'
359
- };
360
- TextInputWithTokens.displayName = 'TextInputWithTokens';
361
- export default TextInputWithTokens;
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import { TokenBaseProps } from './TokenBase';
3
- interface Props extends TokenBaseProps {
4
- leadingVisual?: React.FunctionComponent<any>;
5
- }
6
- declare const Token: React.FC<Props>;
7
- export default Token;
@@ -1,46 +0,0 @@
1
- import React from 'react';
2
- import styled from 'styled-components';
3
- import { get } from '../constants';
4
- import TokenBase, { isTokenHoverable } from './TokenBase';
5
- import AddTokenButton from './_AddTokenButton';
6
- import RemoveTokenButton from './_RemoveTokenButton';
7
- const DefaultToken = styled(TokenBase).withConfig({
8
- displayName: "Token__DefaultToken",
9
- componentId: "sc-1dg52pw-0"
10
- })(["background-color:", ";border-color:", ";border-style:solid;border-width:", ";color:", ";padding-right:", ";&:hover{background-color:", ";}> ._TokenButton{color:", ";}"], get('colors.accent.subtle'), props => props.isSelected ? get('colors.accent.fg') : get('colors.accent.subtle'), props => props.isSelected ? '1px' : 0, get('colors.accent.fg'), props => props.handleRemove || props.handleAdd ? 0 : undefined, props => isTokenHoverable(props) ? get('colors.accent.muted') : undefined, get('colors.accent.fg')); // TODO: make this text truncate
11
-
12
- const TokenTextContainer = styled('span').withConfig({
13
- displayName: "Token__TokenTextContainer",
14
- componentId: "sc-1dg52pw-1"
15
- })(["flex-grow:1;white-space:nowrap;"]);
16
- const LeadingVisualContainer = styled('span').withConfig({
17
- displayName: "Token__LeadingVisualContainer",
18
- componentId: "sc-1dg52pw-2"
19
- })(["flex-shrink:0;line-height:0;"]);
20
-
21
- const Token = ({
22
- leadingVisual: LeadingVisual,
23
- ...tokenBaseProps
24
- }) => {
25
- const {
26
- handleRemove,
27
- handleAdd,
28
- text,
29
- as,
30
- variant
31
- } = tokenBaseProps;
32
- return /*#__PURE__*/React.createElement(DefaultToken, tokenBaseProps, LeadingVisual ? /*#__PURE__*/React.createElement(LeadingVisualContainer, null, /*#__PURE__*/React.createElement(LeadingVisual, null)) : null, /*#__PURE__*/React.createElement(TokenTextContainer, null, text), handleRemove ? /*#__PURE__*/React.createElement(RemoveTokenButton, {
33
- parentTokenTag: as || 'span',
34
- tabIndex: -1,
35
- onClick: handleRemove,
36
- variant: variant
37
- }) : null, handleAdd ? /*#__PURE__*/React.createElement(AddTokenButton, {
38
- parentTokenTag: as || 'span',
39
- tabIndex: -1,
40
- onClick: handleAdd,
41
- variant: variant
42
- }) : null);
43
- };
44
-
45
- Token.displayName = "Token";
46
- export default Token;
@@ -1,16 +0,0 @@
1
- /// <reference types="react" />
2
- export declare type TokenSizeKeys = 'sm' | 'md' | 'lg' | 'xl';
3
- export declare const tokenSizes: Record<TokenSizeKeys, number>;
4
- export declare const defaultTokenSize = "md";
5
- export interface TokenBaseProps extends Omit<React.HTMLProps<HTMLSpanElement | HTMLButtonElement | HTMLAnchorElement>, 'size'> {
6
- as?: 'button' | 'a' | 'span';
7
- handleAdd?: () => void;
8
- handleRemove?: () => void;
9
- isSelected?: boolean;
10
- tabIndex?: number;
11
- text: string;
12
- variant?: TokenSizeKeys;
13
- }
14
- export declare const isTokenHoverable: ({ as, onClick, onFocus }: TokenBaseProps) => boolean;
15
- declare const TokenBase: import("styled-components").StyledComponent<"span", any, TokenBaseProps, never>;
16
- export default TokenBase;
@@ -1,56 +0,0 @@
1
- import styled from 'styled-components';
2
- import { variant } from 'styled-system';
3
- import { get } from '../constants';
4
- export const tokenSizes = {
5
- sm: 16,
6
- md: 20,
7
- lg: 24,
8
- xl: 32
9
- };
10
- export const defaultTokenSize = 'md';
11
- export const isTokenHoverable = ({
12
- as = 'span',
13
- onClick,
14
- onFocus
15
- }) => Boolean(onFocus || onClick || ['a', 'button'].includes(as));
16
- const variants = variant({
17
- variants: {
18
- sm: {
19
- fontSize: 0,
20
- gap: 1,
21
- height: `${tokenSizes.sm}px`,
22
- paddingLeft: 1,
23
- paddingRight: 1
24
- },
25
- md: {
26
- fontSize: 0,
27
- gap: 1,
28
- height: `${tokenSizes.md}px`,
29
- paddingLeft: 2,
30
- paddingRight: 2
31
- },
32
- lg: {
33
- fontSize: 0,
34
- gap: 2,
35
- height: `${tokenSizes.lg}px`,
36
- paddingLeft: 2,
37
- paddingRight: 2
38
- },
39
- xl: {
40
- fontSize: 1,
41
- gap: 2,
42
- height: `${tokenSizes.xl}px`,
43
- paddingLeft: 3,
44
- paddingRight: 3
45
- }
46
- }
47
- });
48
- const TokenBase = styled.span.withConfig({
49
- displayName: "TokenBase",
50
- componentId: "opajvp-0"
51
- })(["align-items:center;border-radius:999px;cursor:", ";display:inline-flex;font-weight:", ";text-decoration:none;white-space:nowrap;", ""], props => isTokenHoverable(props) ? 'pointer' : 'auto', get('fontWeights.bold'), variants);
52
- TokenBase.defaultProps = {
53
- as: 'span',
54
- variant: defaultTokenSize
55
- };
56
- export default TokenBase;
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import { TokenBaseProps } from './TokenBase';
3
- interface Props extends TokenBaseProps {
4
- fillColor?: string;
5
- isOutlined?: boolean;
6
- }
7
- declare const TokenLabel: React.FC<Props>;
8
- export default TokenLabel;
@@ -1,100 +0,0 @@
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 styled from 'styled-components';
5
- import TokenBase from './TokenBase';
6
- import RemoveTokenButton from './_RemoveTokenButton';
7
- import tinycolor from 'tinycolor2';
8
- import { useTheme } from '../ThemeProvider';
9
- const colorModeConfig = {
10
- dark: {
11
- bgOpacity: 0.18,
12
- borderThreshold: 0,
13
- borderOpacity: 0.3,
14
- lightnessThreshold: 0.6
15
- },
16
- light: {
17
- bgOpacity: 1,
18
- borderThreshold: 0.96,
19
- borderOpacity: 1,
20
- lightnessThreshold: 0.453
21
- }
22
- };
23
- const tokenBorderWidthPx = 1; // TODO: do a nicer `isSelected` style
24
-
25
- const StyledTokenLabel = styled(TokenBase).withConfig({
26
- displayName: "TokenLabel__StyledTokenLabel",
27
- componentId: "sc-1bdmgzv-0"
28
- })(["background-color:", ";border-width:", "px;border-style:solid;border-color:", ";box-shadow:", ";color:", ";overflow:hidden;padding-right:", ";position:relative;> ._TokenButton{color:currentColor;transform:translate(", "px,-", "px);}"], props => props.bgColor, tokenBorderWidthPx, props => props.borderColor, props => props.isSelected ? `0 0 0 2px ${props.bgColor}` : undefined, props => props.textColor, props => props.handleRemove ? 0 : undefined, tokenBorderWidthPx, tokenBorderWidthPx); // TODO: make this text truncate
29
-
30
- const TokenTextContainer = styled('span').withConfig({
31
- displayName: "TokenLabel__TokenTextContainer",
32
- componentId: "sc-1bdmgzv-1"
33
- })(["white-space:nowrap;z-index:1;"]);
34
-
35
- const TokenLabel = ({
36
- isOutlined,
37
- fillColor,
38
- isSelected,
39
- ...tokenBaseProps
40
- }) => {
41
- const {
42
- handleRemove,
43
- text,
44
- as,
45
- variant
46
- } = tokenBaseProps;
47
- const {
48
- colorScheme
49
- } = useTheme(); // const colorScheme = 'dark';
50
-
51
- const {
52
- bgOpacity,
53
- borderOpacity,
54
- borderThreshold,
55
- lightnessThreshold
56
- } = colorModeConfig[colorScheme || 'light'];
57
- let bgColor = fillColor;
58
- let borderColor = fillColor;
59
- let textColor = '#FFF';
60
- const perceivedLightness = tinycolor(fillColor).getLuminance();
61
- const isFillColorLight = perceivedLightness >= lightnessThreshold;
62
-
63
- if (colorScheme === 'dark') {
64
- const lightenBy = (perceivedLightness - lightnessThreshold) * 100 * (isFillColorLight ? 1 : 0);
65
- bgColor = isSelected ? tinycolor(fillColor).setAlpha(bgOpacity * 1.2).toRgbString() : tinycolor(fillColor).setAlpha(bgOpacity).toRgbString();
66
- textColor = isSelected ? tinycolor(fillColor).lighten(lightenBy + 8).toString() : tinycolor(fillColor).lighten(lightenBy).toString();
67
- borderColor = isSelected ? tinycolor(fillColor).lighten(lightenBy).toRgbString() : tinycolor(fillColor).lighten(lightenBy).setAlpha(borderOpacity).toRgbString();
68
- } else {
69
- const isFillColorDark = perceivedLightness < 0.1;
70
- borderColor = perceivedLightness >= borderThreshold ? tinycolor(fillColor).darken(25).toString() : 'transparent';
71
-
72
- if (isFillColorLight) {
73
- textColor = '#000';
74
- }
75
-
76
- if (isSelected) {
77
- bgColor = isFillColorDark ? tinycolor(fillColor).lighten(10).toString() : tinycolor(fillColor).darken(10).toString();
78
- }
79
- }
80
-
81
- return /*#__PURE__*/React.createElement(StyledTokenLabel, _extends({
82
- fillColor: fillColor,
83
- bgColor: bgColor,
84
- borderColor: borderColor,
85
- textColor: textColor,
86
- isSelected: isSelected
87
- }, tokenBaseProps), /*#__PURE__*/React.createElement(TokenTextContainer, null, text), handleRemove ? /*#__PURE__*/React.createElement(RemoveTokenButton, {
88
- parentTokenTag: as || 'span',
89
- tabIndex: -1,
90
- onClick: handleRemove,
91
- variant: variant
92
- }) : null);
93
- };
94
-
95
- TokenLabel.displayName = "TokenLabel";
96
- TokenLabel.defaultProps = {
97
- fillColor: '#999' // TODO: pick a real color
98
-
99
- };
100
- export default TokenLabel;
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import { TokenBaseProps } from './TokenBase';
3
- interface Props extends TokenBaseProps {
4
- avatarSrc: string;
5
- }
6
- declare const TokenProfile: React.FC<Props>;
7
- export default TokenProfile;