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.
- package/a11y/index.d.ts +1 -1
- package/accordion/index.d.ts +25 -28
- package/app-nav-bar/app-nav-bar.js +33 -40
- package/app-nav-bar/app-nav-bar.js.flow +46 -62
- package/app-nav-bar/index.d.ts +9 -8
- package/app-nav-bar/styled-components.js +49 -29
- package/app-nav-bar/styled-components.js.flow +25 -8
- package/app-nav-bar/types.js.flow +2 -0
- package/aspect-ratio-box/index.d.ts +2 -4
- package/avatar/index.d.ts +6 -12
- package/badge/badge.js +109 -0
- package/badge/badge.js.flow +91 -0
- package/badge/constants.js +54 -0
- package/badge/constants.js.flow +52 -0
- package/badge/hint-dot.js +96 -0
- package/badge/hint-dot.js.flow +68 -0
- package/badge/index.d.ts +97 -0
- package/badge/index.js +80 -0
- package/badge/index.js.flow +20 -0
- package/badge/notification-circle.js +103 -0
- package/badge/notification-circle.js.flow +81 -0
- package/badge/package.json +4 -0
- package/badge/styled-components.js +242 -0
- package/badge/styled-components.js.flow +325 -0
- package/badge/types.js +11 -0
- package/badge/types.js.flow +59 -0
- package/badge/utils.js +33 -0
- package/badge/utils.js.flow +23 -0
- package/banner/banner.js +283 -0
- package/banner/banner.js.flow +253 -0
- package/banner/constants.js +35 -0
- package/banner/constants.js.flow +33 -0
- package/banner/index.d.ts +75 -0
- package/banner/index.js +44 -0
- package/banner/index.js.flow +16 -0
- package/banner/package.json +4 -0
- package/banner/styled-components.js +131 -0
- package/banner/styled-components.js.flow +119 -0
- package/banner/types.js +11 -0
- package/banner/types.js.flow +66 -0
- package/block/index.d.ts +4 -4
- package/breadcrumbs/breadcrumbs.js +5 -1
- package/breadcrumbs/breadcrumbs.js.flow +2 -2
- package/breadcrumbs/index.d.ts +5 -5
- package/button/button.js +2 -1
- package/button/button.js.flow +1 -0
- package/button/index.d.ts +19 -29
- package/button-group/index.d.ts +18 -24
- package/card/index.d.ts +16 -14
- package/checkbox/index.d.ts +17 -21
- package/combobox/index.d.ts +7 -11
- package/data-table/index.d.ts +7 -10
- package/datepicker/index.d.ts +42 -63
- package/datepicker/types.js.flow +2 -2
- package/datepicker/utils/date-helpers.js +1 -1
- package/datepicker/utils/date-helpers.js.flow +1 -1
- package/dnd-list/index.d.ts +22 -35
- package/drawer/index.d.ts +22 -27
- package/es/app-nav-bar/app-nav-bar.js +9 -19
- package/es/app-nav-bar/styled-components.js +32 -13
- package/es/badge/badge.js +70 -0
- package/es/badge/constants.js +42 -0
- package/es/badge/hint-dot.js +55 -0
- package/es/badge/index.js +11 -0
- package/es/badge/notification-circle.js +65 -0
- package/es/badge/styled-components.js +296 -0
- package/es/badge/types.js +8 -0
- package/es/badge/utils.js +17 -0
- package/es/banner/banner.js +213 -0
- package/es/banner/constants.js +24 -0
- package/es/banner/index.js +9 -0
- package/es/banner/styled-components.js +122 -0
- package/es/banner/types.js +8 -0
- package/es/breadcrumbs/breadcrumbs.js +5 -1
- package/es/button/button.js +1 -0
- package/es/datepicker/utils/date-helpers.js +1 -1
- package/es/helper/helper-steps.js +3 -1
- package/es/input/base-input.js +18 -11
- package/es/input/input.js +15 -10
- package/es/input/masked-input.js +5 -2
- package/es/input/utils.js +4 -2
- package/es/locale/tr_TR.js +115 -0
- package/es/notification/notification.js +16 -1
- package/es/payment-card/custom-cards.config.js +22 -0
- package/es/payment-card/icons/uatp.js +52 -0
- package/es/payment-card/payment-card.js +8 -3
- package/es/popover/popover.js +2 -1
- package/es/popover/stateful-container.js +2 -0
- package/es/popover/styled-components.js +2 -1
- package/es/progress-steps/numbered-step.js +2 -2
- package/es/select/select-component.js +44 -21
- package/es/select/utils/default-filter-options.js +1 -1
- package/es/table-semantic/styled-components.js +14 -0
- package/es/table-semantic/table-builder.js +12 -5
- package/es/textarea/textarea.js +15 -9
- package/es/themes/dark-theme/color-component-tokens.js +8 -0
- package/es/themes/light-theme/color-component-tokens.js +8 -0
- package/es/tree-view/tree-label.js +9 -1
- package/esm/app-nav-bar/app-nav-bar.js +32 -38
- package/esm/app-nav-bar/styled-components.js +46 -28
- package/esm/badge/badge.js +97 -0
- package/esm/badge/constants.js +42 -0
- package/esm/badge/hint-dot.js +83 -0
- package/esm/badge/index.js +11 -0
- package/esm/badge/notification-circle.js +91 -0
- package/esm/badge/styled-components.js +235 -0
- package/esm/badge/types.js +8 -0
- package/esm/badge/utils.js +17 -0
- package/esm/banner/banner.js +271 -0
- package/esm/banner/constants.js +24 -0
- package/esm/banner/index.js +9 -0
- package/esm/banner/styled-components.js +113 -0
- package/esm/banner/types.js +8 -0
- package/esm/breadcrumbs/breadcrumbs.js +5 -1
- package/esm/button/button.js +2 -1
- package/esm/datepicker/utils/date-helpers.js +1 -1
- package/esm/helper/helper-steps.js +3 -1
- package/esm/input/base-input.js +18 -11
- package/esm/input/input.js +15 -10
- package/esm/input/masked-input.js +6 -3
- package/esm/input/utils.js +4 -2
- package/esm/locale/tr_TR.js +115 -0
- package/esm/notification/notification.js +17 -1
- package/esm/payment-card/custom-cards.config.js +22 -0
- package/esm/payment-card/icons/uatp.js +53 -0
- package/esm/payment-card/payment-card.js +9 -7
- package/esm/popover/popover.js +2 -1
- package/esm/popover/stateful-container.js +2 -0
- package/esm/popover/styled-components.js +3 -2
- package/esm/progress-steps/numbered-step.js +2 -2
- package/esm/select/select-component.js +81 -57
- package/esm/select/utils/default-filter-options.js +1 -1
- package/esm/table-semantic/styled-components.js +31 -18
- package/esm/table-semantic/table-builder.js +34 -23
- package/esm/textarea/textarea.js +15 -9
- package/esm/themes/dark-theme/color-component-tokens.js +8 -0
- package/esm/themes/light-theme/color-component-tokens.js +8 -0
- package/esm/tree-view/tree-label.js +10 -2
- package/file-uploader/index.d.ts +11 -11
- package/flex-grid/index.d.ts +3 -3
- package/form-control/index.d.ts +7 -19
- package/header-navigation/index.d.ts +8 -9
- package/heading/index.d.ts +3 -4
- package/helper/helper-steps.js +19 -13
- package/helper/helper-steps.js.flow +3 -1
- package/helper/index.d.ts +7 -7
- package/helpers/base-provider.d.ts +16 -0
- package/helpers/overrides.d.ts +23 -0
- package/icon/index.d.ts +32 -32
- package/index.d.ts +34 -114
- package/input/base-input.js +18 -11
- package/input/base-input.js.flow +18 -6
- package/input/index.d.ts +29 -32
- package/input/input.js +15 -10
- package/input/input.js.flow +10 -5
- package/input/masked-input.js +6 -3
- package/input/masked-input.js.flow +3 -0
- package/input/types.js.flow +4 -0
- package/input/utils.js +4 -2
- package/input/utils.js.flow +2 -1
- package/layer/index.d.ts +6 -11
- package/layout-grid/index.d.ts +25 -7
- package/link/index.d.ts +2 -2
- package/list/index.d.ts +26 -31
- package/{locale.ts → locale/index.d.ts} +8 -0
- package/locale/tr_TR.js +123 -0
- package/locale/tr_TR.js.flow +124 -0
- package/map-marker/index.d.ts +41 -47
- package/menu/index.d.ts +27 -37
- package/modal/index.d.ts +28 -38
- package/notification/index.d.ts +2 -3
- package/notification/notification.js +18 -1
- package/notification/notification.js.flow +15 -1
- package/overrides.ts +2 -22
- package/package.json +26 -17
- package/pagination/index.d.ts +22 -26
- package/payment-card/custom-cards.config.js +30 -0
- package/payment-card/custom-cards.config.js.flow +29 -0
- package/payment-card/icons/uatp.js +67 -0
- package/payment-card/icons/uatp.js.flow +62 -0
- package/payment-card/index.d.ts +8 -8
- package/payment-card/payment-card.js +12 -7
- package/payment-card/payment-card.js.flow +12 -0
- package/phone-input/index.d.ts +261 -269
- package/pin-code/index.d.ts +11 -18
- package/popover/index.d.ts +39 -55
- package/popover/popover.js +2 -1
- package/popover/popover.js.flow +2 -1
- package/popover/stateful-container.js +2 -0
- package/popover/stateful-container.js.flow +2 -0
- package/popover/styled-components.js +3 -2
- package/popover/styled-components.js.flow +2 -1
- package/popover/types.js.flow +1 -0
- package/progress-bar/index.d.ts +11 -12
- package/progress-steps/index.d.ts +16 -16
- package/progress-steps/numbered-step.js.flow +2 -2
- package/radio/index.d.ts +12 -15
- package/rating/index.d.ts +9 -12
- package/select/index.d.ts +34 -36
- package/select/select-component.js +78 -54
- package/select/select-component.js.flow +42 -32
- package/select/types.js.flow +1 -0
- package/select/utils/default-filter-options.js +1 -1
- package/select/utils/default-filter-options.js.flow +1 -1
- package/side-navigation/index.d.ts +11 -13
- package/skeleton/index.d.ts +1 -1
- package/slider/index.d.ts +17 -26
- package/snackbar/index.d.ts +8 -8
- package/spinner/index.d.ts +4 -3
- package/styles/index.d.ts +82 -2
- package/table/index.d.ts +16 -16
- package/table-grid/index.d.ts +6 -8
- package/table-semantic/index.d.ts +26 -32
- package/table-semantic/styled-components.js +33 -19
- package/table-semantic/styled-components.js.flow +12 -0
- package/table-semantic/table-builder.js +38 -22
- package/table-semantic/table-builder.js.flow +32 -17
- package/table-semantic/types.js.flow +1 -0
- package/tabs/index.d.ts +20 -23
- package/tabs-motion/index.d.ts +23 -23
- package/tag/index.d.ts +14 -18
- package/textarea/index.d.ts +11 -14
- package/textarea/textarea.js +15 -9
- package/textarea/textarea.js.flow +11 -5
- package/textarea/types.js.flow +1 -0
- package/theme.ts +36 -777
- package/themes/dark-theme/color-component-tokens.js +8 -0
- package/themes/dark-theme/color-component-tokens.js.flow +9 -0
- package/themes/index.d.ts +765 -0
- package/themes/light-theme/color-component-tokens.js +8 -0
- package/themes/light-theme/color-component-tokens.js.flow +9 -0
- package/themes/types.js.flow +9 -0
- package/timepicker/index.d.ts +5 -8
- package/timezonepicker/index.d.ts +5 -8
- package/toast/index.d.ts +26 -40
- package/tokens/index.d.ts +1 -1
- package/tooltip/index.d.ts +7 -9
- package/tree-view/index.d.ts +15 -19
- package/tree-view/tree-label.js +10 -2
- package/tree-view/tree-label.js.flow +4 -4
- 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,
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
}))
|
|
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
|
-
})
|
|
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;
|