baseui 11.0.2 → 11.1.1

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 (241) hide show
  1. package/a11y/index.d.ts +1 -1
  2. package/accordion/index.d.ts +25 -28
  3. package/app-nav-bar/app-nav-bar.js +33 -40
  4. package/app-nav-bar/app-nav-bar.js.flow +46 -62
  5. package/app-nav-bar/index.d.ts +9 -8
  6. package/app-nav-bar/styled-components.js +49 -29
  7. package/app-nav-bar/styled-components.js.flow +25 -8
  8. package/app-nav-bar/types.js.flow +2 -0
  9. package/aspect-ratio-box/index.d.ts +2 -4
  10. package/avatar/index.d.ts +6 -12
  11. package/badge/badge.js +109 -0
  12. package/badge/badge.js.flow +91 -0
  13. package/badge/constants.js +54 -0
  14. package/badge/constants.js.flow +52 -0
  15. package/badge/hint-dot.js +96 -0
  16. package/badge/hint-dot.js.flow +68 -0
  17. package/badge/index.d.ts +97 -0
  18. package/badge/index.js +80 -0
  19. package/badge/index.js.flow +20 -0
  20. package/badge/notification-circle.js +103 -0
  21. package/badge/notification-circle.js.flow +81 -0
  22. package/badge/package.json +4 -0
  23. package/badge/styled-components.js +242 -0
  24. package/badge/styled-components.js.flow +325 -0
  25. package/badge/types.js +11 -0
  26. package/badge/types.js.flow +59 -0
  27. package/badge/utils.js +33 -0
  28. package/badge/utils.js.flow +23 -0
  29. package/banner/banner.js +283 -0
  30. package/banner/banner.js.flow +253 -0
  31. package/banner/constants.js +35 -0
  32. package/banner/constants.js.flow +33 -0
  33. package/banner/index.d.ts +75 -0
  34. package/banner/index.js +44 -0
  35. package/banner/index.js.flow +16 -0
  36. package/banner/package.json +4 -0
  37. package/banner/styled-components.js +131 -0
  38. package/banner/styled-components.js.flow +119 -0
  39. package/banner/types.js +11 -0
  40. package/banner/types.js.flow +66 -0
  41. package/block/index.d.ts +4 -4
  42. package/breadcrumbs/breadcrumbs.js +5 -1
  43. package/breadcrumbs/breadcrumbs.js.flow +2 -2
  44. package/breadcrumbs/index.d.ts +5 -5
  45. package/button/button.js +2 -1
  46. package/button/button.js.flow +1 -0
  47. package/button/index.d.ts +19 -29
  48. package/button-group/index.d.ts +18 -24
  49. package/card/index.d.ts +16 -14
  50. package/checkbox/index.d.ts +17 -21
  51. package/combobox/index.d.ts +7 -11
  52. package/data-table/index.d.ts +7 -10
  53. package/datepicker/index.d.ts +42 -63
  54. package/datepicker/types.js.flow +2 -2
  55. package/datepicker/utils/date-helpers.js +1 -1
  56. package/datepicker/utils/date-helpers.js.flow +1 -1
  57. package/dnd-list/index.d.ts +22 -35
  58. package/drawer/index.d.ts +22 -27
  59. package/es/app-nav-bar/app-nav-bar.js +9 -19
  60. package/es/app-nav-bar/styled-components.js +32 -13
  61. package/es/badge/badge.js +70 -0
  62. package/es/badge/constants.js +42 -0
  63. package/es/badge/hint-dot.js +55 -0
  64. package/es/badge/index.js +11 -0
  65. package/es/badge/notification-circle.js +65 -0
  66. package/es/badge/styled-components.js +296 -0
  67. package/es/badge/types.js +8 -0
  68. package/es/badge/utils.js +17 -0
  69. package/es/banner/banner.js +213 -0
  70. package/es/banner/constants.js +24 -0
  71. package/es/banner/index.js +9 -0
  72. package/es/banner/styled-components.js +122 -0
  73. package/es/banner/types.js +8 -0
  74. package/es/breadcrumbs/breadcrumbs.js +5 -1
  75. package/es/button/button.js +1 -0
  76. package/es/datepicker/utils/date-helpers.js +1 -1
  77. package/es/helper/helper-steps.js +3 -1
  78. package/es/input/base-input.js +18 -11
  79. package/es/input/input.js +15 -10
  80. package/es/input/masked-input.js +5 -2
  81. package/es/input/utils.js +4 -2
  82. package/es/locale/tr_TR.js +115 -0
  83. package/es/notification/notification.js +16 -1
  84. package/es/payment-card/custom-cards.config.js +22 -0
  85. package/es/payment-card/icons/uatp.js +52 -0
  86. package/es/payment-card/payment-card.js +8 -3
  87. package/es/popover/popover.js +2 -1
  88. package/es/popover/stateful-container.js +2 -0
  89. package/es/popover/styled-components.js +2 -1
  90. package/es/progress-steps/numbered-step.js +2 -2
  91. package/es/select/select-component.js +44 -21
  92. package/es/select/utils/default-filter-options.js +1 -1
  93. package/es/table-semantic/styled-components.js +14 -0
  94. package/es/table-semantic/table-builder.js +12 -5
  95. package/es/textarea/textarea.js +15 -9
  96. package/es/themes/dark-theme/color-component-tokens.js +8 -0
  97. package/es/themes/light-theme/color-component-tokens.js +8 -0
  98. package/es/tree-view/tree-label.js +9 -1
  99. package/esm/app-nav-bar/app-nav-bar.js +32 -38
  100. package/esm/app-nav-bar/styled-components.js +46 -28
  101. package/esm/badge/badge.js +97 -0
  102. package/esm/badge/constants.js +42 -0
  103. package/esm/badge/hint-dot.js +83 -0
  104. package/esm/badge/index.js +11 -0
  105. package/esm/badge/notification-circle.js +91 -0
  106. package/esm/badge/styled-components.js +235 -0
  107. package/esm/badge/types.js +8 -0
  108. package/esm/badge/utils.js +17 -0
  109. package/esm/banner/banner.js +271 -0
  110. package/esm/banner/constants.js +24 -0
  111. package/esm/banner/index.js +9 -0
  112. package/esm/banner/styled-components.js +113 -0
  113. package/esm/banner/types.js +8 -0
  114. package/esm/breadcrumbs/breadcrumbs.js +5 -1
  115. package/esm/button/button.js +2 -1
  116. package/esm/datepicker/utils/date-helpers.js +1 -1
  117. package/esm/helper/helper-steps.js +3 -1
  118. package/esm/input/base-input.js +18 -11
  119. package/esm/input/input.js +15 -10
  120. package/esm/input/masked-input.js +6 -3
  121. package/esm/input/utils.js +4 -2
  122. package/esm/locale/tr_TR.js +115 -0
  123. package/esm/notification/notification.js +17 -1
  124. package/esm/payment-card/custom-cards.config.js +22 -0
  125. package/esm/payment-card/icons/uatp.js +53 -0
  126. package/esm/payment-card/payment-card.js +9 -7
  127. package/esm/popover/popover.js +2 -1
  128. package/esm/popover/stateful-container.js +2 -0
  129. package/esm/popover/styled-components.js +3 -2
  130. package/esm/progress-steps/numbered-step.js +2 -2
  131. package/esm/select/select-component.js +81 -57
  132. package/esm/select/utils/default-filter-options.js +1 -1
  133. package/esm/table-semantic/styled-components.js +31 -18
  134. package/esm/table-semantic/table-builder.js +34 -23
  135. package/esm/textarea/textarea.js +15 -9
  136. package/esm/themes/dark-theme/color-component-tokens.js +8 -0
  137. package/esm/themes/light-theme/color-component-tokens.js +8 -0
  138. package/esm/tree-view/tree-label.js +10 -2
  139. package/file-uploader/index.d.ts +11 -11
  140. package/flex-grid/index.d.ts +3 -3
  141. package/form-control/index.d.ts +7 -19
  142. package/header-navigation/index.d.ts +8 -9
  143. package/heading/index.d.ts +3 -4
  144. package/helper/helper-steps.js +19 -13
  145. package/helper/helper-steps.js.flow +3 -1
  146. package/helper/index.d.ts +7 -7
  147. package/helpers/base-provider.d.ts +16 -0
  148. package/helpers/overrides.d.ts +23 -0
  149. package/icon/index.d.ts +32 -32
  150. package/index.d.ts +34 -114
  151. package/input/base-input.js +18 -11
  152. package/input/base-input.js.flow +18 -6
  153. package/input/index.d.ts +29 -32
  154. package/input/input.js +15 -10
  155. package/input/input.js.flow +10 -5
  156. package/input/masked-input.js +6 -3
  157. package/input/masked-input.js.flow +3 -0
  158. package/input/types.js.flow +4 -0
  159. package/input/utils.js +4 -2
  160. package/input/utils.js.flow +2 -1
  161. package/layer/index.d.ts +6 -11
  162. package/layout-grid/index.d.ts +25 -7
  163. package/link/index.d.ts +2 -2
  164. package/list/index.d.ts +26 -31
  165. package/{locale.ts → locale/index.d.ts} +8 -0
  166. package/locale/tr_TR.js +123 -0
  167. package/locale/tr_TR.js.flow +124 -0
  168. package/map-marker/index.d.ts +41 -47
  169. package/menu/index.d.ts +27 -37
  170. package/modal/index.d.ts +28 -38
  171. package/notification/index.d.ts +2 -3
  172. package/notification/notification.js +18 -1
  173. package/notification/notification.js.flow +15 -1
  174. package/overrides.ts +2 -22
  175. package/package.json +26 -17
  176. package/pagination/index.d.ts +22 -26
  177. package/payment-card/custom-cards.config.js +30 -0
  178. package/payment-card/custom-cards.config.js.flow +29 -0
  179. package/payment-card/icons/uatp.js +67 -0
  180. package/payment-card/icons/uatp.js.flow +62 -0
  181. package/payment-card/index.d.ts +8 -8
  182. package/payment-card/payment-card.js +12 -7
  183. package/payment-card/payment-card.js.flow +12 -0
  184. package/phone-input/index.d.ts +261 -269
  185. package/pin-code/index.d.ts +11 -18
  186. package/popover/index.d.ts +39 -55
  187. package/popover/popover.js +2 -1
  188. package/popover/popover.js.flow +2 -1
  189. package/popover/stateful-container.js +2 -0
  190. package/popover/stateful-container.js.flow +2 -0
  191. package/popover/styled-components.js +3 -2
  192. package/popover/styled-components.js.flow +2 -1
  193. package/popover/types.js.flow +1 -0
  194. package/progress-bar/index.d.ts +11 -12
  195. package/progress-steps/index.d.ts +16 -16
  196. package/progress-steps/numbered-step.js.flow +2 -2
  197. package/radio/index.d.ts +12 -15
  198. package/rating/index.d.ts +9 -12
  199. package/select/index.d.ts +34 -36
  200. package/select/select-component.js +78 -54
  201. package/select/select-component.js.flow +42 -32
  202. package/select/types.js.flow +1 -0
  203. package/select/utils/default-filter-options.js +1 -1
  204. package/select/utils/default-filter-options.js.flow +1 -1
  205. package/side-navigation/index.d.ts +11 -13
  206. package/skeleton/index.d.ts +1 -1
  207. package/slider/index.d.ts +17 -26
  208. package/snackbar/index.d.ts +8 -8
  209. package/spinner/index.d.ts +4 -3
  210. package/styles/index.d.ts +82 -2
  211. package/table/index.d.ts +16 -16
  212. package/table-grid/index.d.ts +6 -8
  213. package/table-semantic/index.d.ts +26 -32
  214. package/table-semantic/styled-components.js +33 -19
  215. package/table-semantic/styled-components.js.flow +12 -0
  216. package/table-semantic/table-builder.js +38 -22
  217. package/table-semantic/table-builder.js.flow +32 -17
  218. package/table-semantic/types.js.flow +1 -0
  219. package/tabs/index.d.ts +20 -23
  220. package/tabs-motion/index.d.ts +23 -23
  221. package/tag/index.d.ts +14 -18
  222. package/textarea/index.d.ts +11 -14
  223. package/textarea/textarea.js +15 -9
  224. package/textarea/textarea.js.flow +11 -5
  225. package/textarea/types.js.flow +1 -0
  226. package/theme.ts +36 -777
  227. package/themes/dark-theme/color-component-tokens.js +8 -0
  228. package/themes/dark-theme/color-component-tokens.js.flow +9 -0
  229. package/themes/index.d.ts +765 -0
  230. package/themes/light-theme/color-component-tokens.js +8 -0
  231. package/themes/light-theme/color-component-tokens.js.flow +9 -0
  232. package/themes/types.js.flow +9 -0
  233. package/timepicker/index.d.ts +5 -8
  234. package/timezonepicker/index.d.ts +5 -8
  235. package/toast/index.d.ts +26 -40
  236. package/tokens/index.d.ts +1 -1
  237. package/tooltip/index.d.ts +7 -9
  238. package/tree-view/index.d.ts +15 -19
  239. package/tree-view/tree-label.js +10 -2
  240. package/tree-view/tree-label.js.flow +4 -4
  241. package/typography/index.d.ts +37 -37
@@ -8,13 +8,12 @@ LICENSE file in the root directory of this source tree.
8
8
  */
9
9
  import * as React from 'react';
10
10
  import { getOverrides } from '../helpers/overrides.js';
11
- import { Cell, Grid } from '../layout-grid/index.js';
12
11
  import { useStyletron } from '../styles/index.js';
13
12
  import { isFocusVisible } from '../utils/focusVisible.js';
14
13
  import { KIND, POSITION } from './constants.js';
15
14
  import MobileNav from './mobile-menu.js';
16
15
  import UserMenu from './user-menu.js';
17
- import { StyledRoot, StyledSpacing, StyledPrimaryMenuContainer, StyledSubnavContainer, StyledSecondaryMenuContainer, StyledAppName, StyledMainMenuItem } from './styled-components.js';
16
+ import { StyledRoot, StyledSpacing, StyledPrimaryMenuContainer, StyledSecondaryMenuContainer, StyledAppName, StyledMainMenuItem, StyledDesktopMenuContainer, StyledDesktopMenu } from './styled-components.js';
18
17
  import { defaultMapItemToNode, mapItemsActive } from './utils.js';
19
18
 
20
19
  function MainMenuItem(props) {
@@ -72,11 +71,8 @@ function SecondaryMenu(props) {
72
71
  onSelect,
73
72
  overrides = {}
74
73
  } = props;
75
- const [SubnavContainer, subnavContainerProps] = getOverrides(overrides.SubnavContainer, StyledSubnavContainer);
76
74
  const [SecondaryMenuContainer, secondaryMenuContainerProps] = getOverrides(overrides.SecondaryMenuContainer, StyledSecondaryMenuContainer);
77
- return /*#__PURE__*/React.createElement(SubnavContainer, subnavContainerProps, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
78
- span: [0, 8, 12]
79
- }, /*#__PURE__*/React.createElement(SecondaryMenuContainer, _extends({
75
+ return /*#__PURE__*/React.createElement(SecondaryMenuContainer, _extends({
80
76
  role: "navigation",
81
77
  "aria-label": "Secondary navigation"
82
78
  }, secondaryMenuContainerProps), items.map((item, index) =>
@@ -89,7 +85,7 @@ function SecondaryMenu(props) {
89
85
  key: index,
90
86
  onSelect: onSelect,
91
87
  overrides: overrides
92
- }))))));
88
+ })));
93
89
  }
94
90
 
95
91
  export default function AppNavBar(props) {
@@ -116,6 +112,8 @@ export default function AppNavBar(props) {
116
112
  const [Spacing, spacingProps] = getOverrides(overrides.Spacing, StyledSpacing);
117
113
  const [AppName, appNameProps] = getOverrides(overrides.AppName, StyledAppName);
118
114
  const [PrimaryMenuContainer, primaryMenuContainerProps] = getOverrides(overrides.PrimaryMenuContainer, StyledPrimaryMenuContainer);
115
+ const [DesktopMenuContainer, desktopMenuContainerProps] = getOverrides(overrides.DesktopMenuContainer, StyledDesktopMenuContainer);
116
+ const [DesktopMenu, desktopMenuProps] = getOverrides(overrides.DesktopMenu, StyledDesktopMenu);
119
117
  let secondaryMenu;
120
118
  let desktopSubNavPosition = POSITION.horizontal;
121
119
  let mobileSubNavPosition = POSITION.vertical;
@@ -127,9 +125,7 @@ export default function AppNavBar(props) {
127
125
  display: 'none'
128
126
  }
129
127
  })
130
- }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
131
- span: [4, 8, 0]
132
- }, /*#__PURE__*/React.createElement(Spacing, spacingProps, mainItems.length || userItems.length ? /*#__PURE__*/React.createElement(MobileNav, props) : null, /*#__PURE__*/React.createElement(AppName, appNameProps, title)))), secondaryMenu && mobileSubNavPosition === POSITION.horizontal && /*#__PURE__*/React.createElement(SecondaryMenu, {
128
+ }, /*#__PURE__*/React.createElement(Spacing, spacingProps, mainItems.length || userItems.length ? /*#__PURE__*/React.createElement(MobileNav, props) : null, /*#__PURE__*/React.createElement(AppName, appNameProps, title)), secondaryMenu && mobileSubNavPosition === POSITION.horizontal && /*#__PURE__*/React.createElement(SecondaryMenu, {
133
129
  items: secondaryMenu,
134
130
  mapItemToNode: mapItemToNode,
135
131
  onSelect: onMainItemSelect,
@@ -140,11 +136,7 @@ export default function AppNavBar(props) {
140
136
  display: 'none'
141
137
  }
142
138
  })
143
- }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Cell, {
144
- span: [0, 3, 3]
145
- }, /*#__PURE__*/React.createElement(Spacing, spacingProps, /*#__PURE__*/React.createElement(AppName, appNameProps, title))), /*#__PURE__*/React.createElement(Cell, {
146
- span: userItems.length ? [0, 4, 8] : [0, 5, 9]
147
- }, /*#__PURE__*/React.createElement(PrimaryMenuContainer, _extends({
139
+ }, /*#__PURE__*/React.createElement(DesktopMenuContainer, desktopMenuContainerProps, /*#__PURE__*/React.createElement(DesktopMenu, desktopMenuProps, /*#__PURE__*/React.createElement(AppName, appNameProps, title), /*#__PURE__*/React.createElement(PrimaryMenuContainer, _extends({
148
140
  role: "navigation",
149
141
  "aria-label": "Main navigation"
150
142
  }, primaryMenuContainerProps), mainItems.map((item, index) => {
@@ -165,9 +157,7 @@ export default function AppNavBar(props) {
165
157
  onSelect: onMainItemSelect,
166
158
  overrides: overrides
167
159
  });
168
- }))), userItems.length ? /*#__PURE__*/React.createElement(Cell, {
169
- span: [0, 1, 1]
170
- }, /*#__PURE__*/React.createElement(Spacing, spacingProps, /*#__PURE__*/React.createElement(UserMenu, {
160
+ })), userItems.length ? /*#__PURE__*/React.createElement(UserMenu, {
171
161
  mapItemToNode: mapItemToNode,
172
162
  onItemSelect: onUserItemSelect,
173
163
  overrides: overrides,
@@ -175,7 +165,7 @@ export default function AppNavBar(props) {
175
165
  usernameSubtitle: usernameSubtitle,
176
166
  userImgUrl: userImgUrl,
177
167
  userItems: userItems
178
- }))) : null), secondaryMenu && desktopSubNavPosition === POSITION.horizontal && /*#__PURE__*/React.createElement(SecondaryMenu, {
168
+ }) : null)), secondaryMenu && desktopSubNavPosition === POSITION.horizontal && /*#__PURE__*/React.createElement(SecondaryMenu, {
179
169
  items: secondaryMenu,
180
170
  mapItemToNode: mapItemToNode,
181
171
  onSelect: onMainItemSelect,
@@ -43,20 +43,11 @@ export const StyledRoot = styled('div', props => {
43
43
  } = props;
44
44
  return { ...$theme.typography.font300,
45
45
  boxSizing: 'border-box',
46
- backgroundColor: $theme.colors.backgroundPrimary,
47
- boxShadow: '0px 1px 0px rgba(0, 0, 0, 0.08)',
48
- width: '100%'
46
+ backgroundColor: $theme.colors.backgroundPrimary
49
47
  };
50
48
  });
51
49
  StyledRoot.displayName = "StyledRoot";
52
- export const StyledSubnavContainer = styled('div', ({
53
- $theme
54
- }) => {
55
- return {
56
- boxSizing: 'border-box',
57
- boxShadow: '0px -1px 0px rgba(0, 0, 0, 0.08)'
58
- };
59
- });
50
+ export const StyledSubnavContainer = styled('div', {});
60
51
  StyledSubnavContainer.displayName = "StyledSubnavContainer";
61
52
  export const StyledSpacing = styled('div', props => {
62
53
  const {
@@ -106,9 +97,11 @@ export const StyledPrimaryMenuContainer = styled('div', ({
106
97
  height: '100%',
107
98
  display: 'flex',
108
99
  flexDirection: 'row',
100
+ flexGrow: 1,
109
101
  flexWrap: 'nowrap',
110
102
  justifyContent: 'flex-end',
111
- alignItems: 'stretch'
103
+ alignItems: 'stretch',
104
+ paddingInlineEnd: $theme.sizing.scale1000
112
105
  };
113
106
  });
114
107
  StyledPrimaryMenuContainer.displayName = "StyledPrimaryMenuContainer";
@@ -167,6 +160,8 @@ export const StyledSecondaryMenuContainer = styled('div', ({
167
160
  flexDirection: 'row',
168
161
  flexWrap: 'nowrap',
169
162
  justifyContent: 'flex-start',
163
+ margin: 'auto',
164
+ maxWidth: `${$theme.breakpoints.large}px`,
170
165
  alignItems: 'stretch',
171
166
  overflow: 'auto'
172
167
  };
@@ -219,4 +214,28 @@ export const StyledUserProfileInfoContainer = styled('div', ({
219
214
  alignSelf: 'center'
220
215
  };
221
216
  });
222
- StyledUserProfileInfoContainer.displayName = "StyledUserProfileInfoContainer";
217
+ StyledUserProfileInfoContainer.displayName = "StyledUserProfileInfoContainer";
218
+ export const StyledDesktopMenuContainer = styled('div', ({
219
+ $theme
220
+ }) => {
221
+ return {
222
+ borderBottomWidth: '1px',
223
+ borderBottomStyle: 'solid',
224
+ borderBottomColor: `${$theme.colors.borderOpaque}`
225
+ };
226
+ });
227
+ StyledDesktopMenuContainer.displayName = "StyledDesktopMenuContainer";
228
+ export const StyledDesktopMenu = styled('div', ({
229
+ $theme
230
+ }) => {
231
+ return {
232
+ alignItems: 'center',
233
+ display: 'flex',
234
+ justifyContent: 'space-between',
235
+ margin: 'auto',
236
+ maxWidth: `${$theme.breakpoints.large}px`,
237
+ paddingBlockStart: '18px',
238
+ paddingBlockEnd: '18px'
239
+ };
240
+ });
241
+ StyledDesktopMenu.displayName = "StyledDesktopMenu";
@@ -0,0 +1,70 @@
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
+ /*
4
+ Copyright (c) Uber Technologies, Inc.
5
+
6
+ This source code is licensed under the MIT license found in the
7
+ LICENSE file in the root directory of this source tree.
8
+ */
9
+ import * as React from 'react';
10
+ import { getOverrides } from '../helpers/overrides.js';
11
+ import { StyledBadge, StyledRoot, StyledPositioner } from './styled-components.js';
12
+ import { PLACEMENT, ROLE, SHAPE, HIERARCHY } from './constants.js';
13
+ import { getAnchorFromChildren } from './utils.js';
14
+
15
+ const Badge = ({
16
+ children,
17
+ content,
18
+ color,
19
+ shape = SHAPE.rectangle,
20
+ placement = PLACEMENT.topRight,
21
+ hierarchy,
22
+ horizontalOffset,
23
+ verticalOffset,
24
+ hidden,
25
+ overrides = {}
26
+ }) => {
27
+ const [Badge, badgeProps] = getOverrides(overrides.Badge, StyledBadge);
28
+ const [Root, rootProps] = getOverrides(overrides.Root, StyledRoot);
29
+ const [Positioner, positionerProps] = getOverrides(overrides.Positioner, StyledPositioner);
30
+ const anchor = getAnchorFromChildren(children);
31
+ const VALID_RECT_PLACEMENTS = [PLACEMENT.topLeft, PLACEMENT.topRight, PLACEMENT.bottomRight, PLACEMENT.bottomLeft];
32
+
33
+ if (process.env.NODE_ENV !== "production") {
34
+ if (shape === SHAPE.rectangle && !VALID_RECT_PLACEMENTS.includes(placement)) {
35
+ console.warn('Rectangle badges should only be placed in a corner or used inline');
36
+ }
37
+
38
+ if (shape === SHAPE.rectangle && hierarchy === HIERARCHY.secondary && anchor) {
39
+ console.warn('Secondary badges should not be positioned. Use the inline version of this badge instead.');
40
+ }
41
+
42
+ if (shape === SHAPE.pill && hierarchy === HIERARCHY.secondary) {
43
+ console.warn('Pill badges should only be used with primary hierarchy');
44
+ }
45
+ } // If there's no anchor, render the badge inline
46
+
47
+
48
+ if (!anchor) {
49
+ return /*#__PURE__*/React.createElement(Badge, _extends({
50
+ $hierarchy: hierarchy,
51
+ $shape: shape,
52
+ $color: color,
53
+ $hidden: hidden
54
+ }, badgeProps), content);
55
+ }
56
+
57
+ return /*#__PURE__*/React.createElement(Root, rootProps, anchor, /*#__PURE__*/React.createElement(Positioner, _extends({
58
+ $horizontalOffset: horizontalOffset,
59
+ $verticalOffset: verticalOffset,
60
+ $placement: placement,
61
+ $role: ROLE.badge
62
+ }, positionerProps), /*#__PURE__*/React.createElement(Badge, _extends({
63
+ $hierarchy: hierarchy,
64
+ $shape: shape,
65
+ $color: color,
66
+ $hidden: hidden
67
+ }, badgeProps), content)));
68
+ };
69
+
70
+ export default Badge;
@@ -0,0 +1,42 @@
1
+ /*
2
+ Copyright (c) Uber Technologies, Inc.
3
+
4
+ This source code is licensed under the MIT license found in the
5
+ LICENSE file in the root directory of this source tree.
6
+ */
7
+ export const HIERARCHY = Object.freeze({
8
+ primary: 'primary',
9
+ secondary: 'secondary'
10
+ });
11
+ export const SHAPE = Object.freeze({
12
+ pill: 'pill',
13
+ rectangle: 'rectangle'
14
+ });
15
+ export const COLOR = Object.freeze({
16
+ accent: 'accent',
17
+ primary: 'primary',
18
+ positive: 'positive',
19
+ negative: 'negative',
20
+ warning: 'warning'
21
+ });
22
+ export const PLACEMENT = Object.freeze({
23
+ topLeft: 'topLeft',
24
+ topRight: 'topRight',
25
+ bottomRight: 'bottomRight',
26
+ bottomLeft: 'bottomLeft',
27
+ topLeftEdge: 'topLeftEdge',
28
+ topEdge: 'topEdge',
29
+ topRightEdge: 'topRightEdge',
30
+ bottomRightEdge: 'bottomRightEdge',
31
+ bottomEdge: 'bottomEdge',
32
+ bottomLeftEdge: 'bottomLeftEdge',
33
+ leftTopEdge: 'leftTopEdge',
34
+ rightTopEdge: 'rightTopEdge',
35
+ rightBottomEdge: 'rightBottomEdge',
36
+ leftBottomEdge: 'leftBottomEdge'
37
+ });
38
+ export const ROLE = Object.freeze({
39
+ badge: 'badge',
40
+ notificationCircle: 'notificationCircle',
41
+ hintDot: 'hintDot'
42
+ });
@@ -0,0 +1,55 @@
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
+ /*
4
+ Copyright (c) Uber Technologies, Inc.
5
+
6
+ This source code is licensed under the MIT license found in the
7
+ LICENSE file in the root directory of this source tree.
8
+ */
9
+ import * as React from 'react';
10
+ import { useStyletron } from '../styles/index.js';
11
+ import { getOverrides } from '../helpers/overrides.js';
12
+ import { StyledHintDot, StyledRoot, StyledPositioner } from './styled-components.js';
13
+ import { PLACEMENT, ROLE } from './constants.js';
14
+ import { getAnchorFromChildren } from './utils.js';
15
+
16
+ const HintDot = ({
17
+ children,
18
+ color,
19
+ horizontalOffset: horizontalOffsetProp,
20
+ verticalOffset: verticalOffsetProp,
21
+ hidden,
22
+ overrides = {}
23
+ }) => {
24
+ const [HintDot, hintDotProps] = getOverrides(overrides.Badge, StyledHintDot);
25
+ const [Root, rootProps] = getOverrides(overrides.Root, StyledRoot);
26
+ const [Positioner, positionerProps] = getOverrides(overrides.Positioner, StyledPositioner);
27
+ const [, theme] = useStyletron();
28
+ const anchor = getAnchorFromChildren(children); // if the anchor is a string, we supply default offsets
29
+
30
+ let horizontalOffset = horizontalOffsetProp;
31
+ let verticalOffset = verticalOffsetProp;
32
+
33
+ if (typeof anchor === 'string') {
34
+ if (!horizontalOffset) {
35
+ horizontalOffset = '-14px';
36
+ }
37
+
38
+ if (!verticalOffset) {
39
+ verticalOffset = '-4px';
40
+ }
41
+ }
42
+
43
+ return /*#__PURE__*/React.createElement(Root, rootProps, anchor, /*#__PURE__*/React.createElement(Positioner, _extends({
44
+ $horizontalOffset: horizontalOffset,
45
+ $verticalOffset: verticalOffset,
46
+ $placement: theme.direction === 'rtl' ? PLACEMENT.topLeft : PLACEMENT.topRight,
47
+ $role: ROLE.hintDot
48
+ }, positionerProps), /*#__PURE__*/React.createElement(HintDot, _extends({}, hintDotProps, {
49
+ $color: color,
50
+ $horizontalOffset: horizontalOffset,
51
+ $hidden: hidden
52
+ }))));
53
+ };
54
+
55
+ export default HintDot;
@@ -0,0 +1,11 @@
1
+ /*
2
+ Copyright (c) Uber Technologies, Inc.
3
+
4
+ This source code is licensed under the MIT license found in the
5
+ LICENSE file in the root directory of this source tree.
6
+ */
7
+ export { default as Badge } from './badge.js';
8
+ export { default as NotificationCircle } from './notification-circle.js';
9
+ export { default as HintDot } from './hint-dot.js';
10
+ export { HIERARCHY, SHAPE, COLOR, PLACEMENT } from './constants.js';
11
+ export * from './styled-components.js';
@@ -0,0 +1,65 @@
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
+ /*
4
+ Copyright (c) Uber Technologies, Inc.
5
+
6
+ This source code is licensed under the MIT license found in the
7
+ LICENSE file in the root directory of this source tree.
8
+ */
9
+ import * as React from 'react';
10
+ import { getOverrides } from '../helpers/overrides.js';
11
+ import { StyledNotificationCircle, StyledRoot, StyledPositioner } from './styled-components.js';
12
+ import { PLACEMENT, ROLE } from './constants.js';
13
+ import { getAnchorFromChildren } from './utils.js';
14
+
15
+ const NotificationCircle = ({
16
+ children,
17
+ content: contentProp,
18
+ color,
19
+ placement = PLACEMENT.topRight,
20
+ horizontalOffset,
21
+ verticalOffset,
22
+ hidden,
23
+ overrides = {}
24
+ }) => {
25
+ const [NotificationCircle, NotificationCircleProps] = getOverrides(overrides.Badge, StyledNotificationCircle);
26
+ const [Root, rootProps] = getOverrides(overrides.Root, StyledRoot);
27
+ const [Positioner, positionerProps] = getOverrides(overrides.Positioner, StyledPositioner);
28
+ const anchor = getAnchorFromChildren(children);
29
+
30
+ if (process.env.NODE_ENV !== "production") {
31
+ if (typeof contentProp === 'string') {
32
+ console.error(`[baseui] NotificationCircle child must be number or icon, found string`);
33
+ }
34
+
35
+ if (placement && placement !== PLACEMENT.topLeft && placement !== PLACEMENT.topRight) {
36
+ console.error(`[baseui] NotificationCircle must be placed topLeft or topRight, found ${placement}`);
37
+ }
38
+ }
39
+
40
+ let content = contentProp;
41
+
42
+ if (typeof content === 'number' && content > 9) {
43
+ content = '9+';
44
+ } // If there's no anchor, render the badge inline
45
+
46
+
47
+ if (!anchor) {
48
+ return /*#__PURE__*/React.createElement(NotificationCircle, _extends({
49
+ $color: color,
50
+ $hidden: hidden
51
+ }, NotificationCircleProps), content);
52
+ }
53
+
54
+ return /*#__PURE__*/React.createElement(Root, rootProps, anchor, /*#__PURE__*/React.createElement(Positioner, _extends({
55
+ $horizontalOffset: horizontalOffset,
56
+ $verticalOffset: verticalOffset,
57
+ $placement: placement,
58
+ $role: ROLE.notificationCircle
59
+ }, positionerProps), /*#__PURE__*/React.createElement(NotificationCircle, _extends({}, NotificationCircleProps, {
60
+ $color: color,
61
+ $hidden: hidden
62
+ }), content)));
63
+ };
64
+
65
+ export default NotificationCircle;