@primer/components 29.0.0-rc.ae627848 → 29.1.0-rc.4e9b967e
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.json +2 -1
- package/.storybook/preview.js +58 -0
- package/CHANGELOG.md +13 -1
- package/dist/browser.esm.js +240 -194
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +339 -293
- package/dist/browser.umd.js.map +1 -1
- package/docs/content/AnchoredOverlay.mdx +2 -0
- package/docs/content/Overlay.mdx +4 -0
- package/docs/content/Portal.mdx +11 -9
- package/docs/content/overriding-styles.mdx +0 -1
- package/docs/content/theme-reference.md +8 -0
- package/docs/content/theming.md +1 -2
- package/docs/src/@primer/gatsby-theme-doctocat/components/live-code.js +1 -1
- package/docs/src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js +1 -1
- package/lib/ActionList/Divider.js +1 -1
- package/lib/ActionList/Header.js +2 -2
- package/lib/ActionList/Item.js +10 -10
- package/lib/ActionList/List.js +1 -1
- package/lib/AvatarPair.js +1 -1
- package/lib/AvatarStack.js +1 -1
- package/lib/BranchName.js +1 -1
- package/lib/Breadcrumb.js +2 -2
- package/lib/Button/Button.js +1 -1
- package/lib/Button/ButtonClose.js +1 -1
- package/lib/Button/ButtonInvisible.js +1 -1
- package/lib/Button/ButtonTableList.js +1 -1
- package/lib/CircleBadge.js +1 -1
- package/lib/CircleOcticon.js +1 -1
- package/lib/CounterLabel.js +2 -2
- package/lib/Dialog/ConfirmationDialog.js +1 -1
- package/lib/Dialog/Dialog.js +5 -5
- package/lib/Dialog.js +4 -4
- package/lib/Dropdown.js +2 -2
- package/lib/DropdownStyles.js +6 -6
- package/lib/FilterList.js +1 -1
- package/lib/FilteredActionList/FilteredActionList.js +2 -2
- package/lib/Flash.js +1 -1
- package/lib/Label.js +2 -2
- package/lib/Link.js +1 -1
- package/lib/Overlay.js +1 -1
- package/lib/Pagehead.js +1 -1
- package/lib/Pagination/Pagination.js +1 -1
- package/lib/Popover.js +1 -1
- package/lib/ProgressBar.js +1 -1
- package/lib/SelectMenu/SelectMenuDivider.js +1 -1
- package/lib/SelectMenu/SelectMenuFilter.js +1 -1
- package/lib/SelectMenu/SelectMenuFooter.js +1 -1
- package/lib/SelectMenu/SelectMenuHeader.js +2 -2
- package/lib/SelectMenu/SelectMenuItem.js +1 -1
- package/lib/SelectMenu/SelectMenuList.js +1 -1
- package/lib/SelectMenu/SelectMenuLoadingAnimation.js +1 -1
- package/lib/SelectMenu/SelectMenuModal.js +2 -2
- package/lib/SelectMenu/SelectMenuTab.js +1 -1
- package/lib/SelectMenu/SelectMenuTabPanel.js +1 -1
- package/lib/SideNav.js +5 -5
- package/lib/StateLabel.js +1 -1
- package/lib/SubNav.js +1 -1
- package/lib/TabNav.js +2 -2
- package/lib/TextInput.js +2 -2
- package/lib/Timeline.js +16 -19
- package/lib/Tooltip.js +1 -1
- package/lib/UnderlineNav.js +2 -2
- package/lib/__tests__/BorderBox.js +1 -1
- package/lib/__tests__/CircleOcticon.js +1 -1
- package/lib/__tests__/Link.js +1 -1
- package/lib/__tests__/PointerBox.js +2 -2
- package/lib/__tests__/Position.js +4 -4
- package/lib/__tests__/ThemeProvider.js +1 -1
- package/lib/stories/ActionList.stories.js +1 -1
- package/lib/stories/ThemeProvider.stories.js +6 -6
- package/lib/stories/useFocusTrap.stories.js +1 -1
- package/lib/theme-preval.d.ts +12 -6
- package/lib/theme-preval.js +2930 -1738
- package/lib/utils/testing.d.ts +4707 -2355
- package/lib-esm/ActionList/Divider.js +1 -1
- package/lib-esm/ActionList/Header.js +2 -2
- package/lib-esm/ActionList/Item.js +10 -10
- package/lib-esm/ActionList/List.js +1 -1
- package/lib-esm/AvatarPair.js +1 -1
- package/lib-esm/AvatarStack.js +1 -1
- package/lib-esm/BranchName.js +1 -1
- package/lib-esm/Breadcrumb.js +2 -2
- package/lib-esm/Button/Button.js +1 -1
- package/lib-esm/Button/ButtonClose.js +1 -1
- package/lib-esm/Button/ButtonInvisible.js +1 -1
- package/lib-esm/Button/ButtonTableList.js +1 -1
- package/lib-esm/CircleBadge.js +1 -1
- package/lib-esm/CircleOcticon.js +1 -1
- package/lib-esm/CounterLabel.js +2 -2
- package/lib-esm/Dialog/ConfirmationDialog.js +1 -1
- package/lib-esm/Dialog/Dialog.js +5 -5
- package/lib-esm/Dialog.js +4 -4
- package/lib-esm/Dropdown.js +2 -2
- package/lib-esm/DropdownStyles.js +6 -6
- package/lib-esm/FilterList.js +1 -1
- package/lib-esm/FilteredActionList/FilteredActionList.js +2 -2
- package/lib-esm/Flash.js +1 -1
- package/lib-esm/Label.js +2 -2
- package/lib-esm/Link.js +1 -1
- package/lib-esm/Overlay.js +1 -1
- package/lib-esm/Pagehead.js +1 -1
- package/lib-esm/Pagination/Pagination.js +1 -1
- package/lib-esm/Popover.js +1 -1
- package/lib-esm/ProgressBar.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuDivider.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuFilter.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuFooter.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuHeader.js +2 -2
- package/lib-esm/SelectMenu/SelectMenuItem.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuList.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuLoadingAnimation.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuModal.js +2 -2
- package/lib-esm/SelectMenu/SelectMenuTab.js +1 -1
- package/lib-esm/SelectMenu/SelectMenuTabPanel.js +1 -1
- package/lib-esm/SideNav.js +5 -5
- package/lib-esm/StateLabel.js +1 -1
- package/lib-esm/SubNav.js +1 -1
- package/lib-esm/TabNav.js +2 -2
- package/lib-esm/TextInput.js +2 -2
- package/lib-esm/Timeline.js +12 -17
- package/lib-esm/Tooltip.js +1 -1
- package/lib-esm/UnderlineNav.js +2 -2
- package/lib-esm/__tests__/BorderBox.js +1 -1
- package/lib-esm/__tests__/CircleOcticon.js +1 -1
- package/lib-esm/__tests__/Link.js +1 -1
- package/lib-esm/__tests__/PointerBox.js +2 -2
- package/lib-esm/__tests__/Position.js +4 -4
- package/lib-esm/__tests__/ThemeProvider.js +1 -1
- package/lib-esm/stories/ActionList.stories.js +1 -1
- package/lib-esm/stories/ThemeProvider.stories.js +6 -6
- package/lib-esm/stories/useFocusTrap.stories.js +1 -1
- package/lib-esm/theme-preval.d.ts +12 -6
- package/lib-esm/theme-preval.js +2930 -1738
- package/lib-esm/utils/testing.d.ts +4707 -2355
- package/package-lock.json +9 -4
- package/package.json +3 -2
- package/src/ActionList/Divider.tsx +1 -1
- package/src/ActionList/Header.tsx +4 -4
- package/src/ActionList/Item.tsx +10 -10
- package/src/ActionList/List.tsx +1 -1
- package/src/AvatarPair.tsx +5 -1
- package/src/AvatarStack.tsx +2 -2
- package/src/BranchName.tsx +2 -2
- package/src/Breadcrumb.tsx +3 -3
- package/src/Button/Button.tsx +1 -1
- package/src/Button/ButtonClose.tsx +2 -2
- package/src/Button/ButtonInvisible.tsx +2 -2
- package/src/Button/ButtonTableList.tsx +2 -2
- package/src/CircleBadge.tsx +1 -1
- package/src/CircleOcticon.tsx +1 -1
- package/src/CounterLabel.tsx +6 -6
- package/src/Dialog/ConfirmationDialog.tsx +1 -1
- package/src/Dialog/Dialog.tsx +5 -5
- package/src/Dialog.tsx +4 -4
- package/src/Dropdown.tsx +12 -12
- package/src/DropdownStyles.ts +6 -6
- package/src/FilterList.tsx +5 -5
- package/src/FilteredActionList/FilteredActionList.tsx +2 -2
- package/src/Flash.tsx +1 -1
- package/src/Label.tsx +3 -3
- package/src/Link.tsx +2 -2
- package/src/Overlay.tsx +1 -1
- package/src/Pagehead.tsx +1 -1
- package/src/Pagination/Pagination.tsx +7 -7
- package/src/Popover.tsx +10 -10
- package/src/ProgressBar.tsx +1 -1
- package/src/SelectMenu/SelectMenuDivider.tsx +3 -3
- package/src/SelectMenu/SelectMenuFilter.tsx +2 -2
- package/src/SelectMenu/SelectMenuFooter.tsx +2 -2
- package/src/SelectMenu/SelectMenuHeader.tsx +2 -2
- package/src/SelectMenu/SelectMenuItem.tsx +6 -6
- package/src/SelectMenu/SelectMenuList.tsx +5 -5
- package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +1 -1
- package/src/SelectMenu/SelectMenuModal.tsx +3 -3
- package/src/SelectMenu/SelectMenuTab.tsx +6 -6
- package/src/SelectMenu/SelectMenuTabPanel.tsx +1 -1
- package/src/SideNav.tsx +11 -11
- package/src/StateLabel.tsx +1 -1
- package/src/SubNav.tsx +11 -11
- package/src/TabNav.tsx +6 -6
- package/src/TextInput.tsx +9 -9
- package/src/Timeline.tsx +11 -11
- package/src/Tooltip.tsx +7 -7
- package/src/UnderlineNav.tsx +8 -8
- package/src/__tests__/BorderBox.tsx +1 -1
- package/src/__tests__/CircleOcticon.tsx +1 -1
- package/src/__tests__/Link.tsx +1 -1
- package/src/__tests__/Pagination/__snapshots__/Pagination.tsx.snap +6 -6
- package/src/__tests__/PointerBox.tsx +2 -2
- package/src/__tests__/Position.tsx +4 -4
- package/src/__tests__/ThemeProvider.tsx +1 -1
- package/src/__tests__/__snapshots__/ActionList.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/ActionMenu.tsx.snap +11 -11
- package/src/__tests__/__snapshots__/AnchoredOverlay.tsx.snap +28 -28
- package/src/__tests__/__snapshots__/BorderBox.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/BranchName.tsx.snap +2 -2
- package/src/__tests__/__snapshots__/BreadcrumbItem.tsx.snap +6 -6
- package/src/__tests__/__snapshots__/Button.tsx.snap +116 -116
- package/src/__tests__/__snapshots__/Caret.tsx.snap +12 -12
- package/src/__tests__/__snapshots__/CircleBadge.tsx.snap +4 -4
- package/src/__tests__/__snapshots__/CircleOcticon.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/CounterLabel.tsx.snap +2 -2
- package/src/__tests__/__snapshots__/Dialog.tsx.snap +11 -11
- package/src/__tests__/__snapshots__/Dropdown.tsx.snap +18 -18
- package/src/__tests__/__snapshots__/DropdownMenu.tsx.snap +11 -11
- package/src/__tests__/__snapshots__/FilterListItem.tsx.snap +4 -4
- package/src/__tests__/__snapshots__/Flash.tsx.snap +5 -5
- package/src/__tests__/__snapshots__/Header.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/Label.tsx.snap +6 -6
- package/src/__tests__/__snapshots__/Link.tsx.snap +10 -10
- package/src/__tests__/__snapshots__/Pagehead.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/PointerBox.tsx.snap +10 -10
- package/src/__tests__/__snapshots__/Popover.tsx.snap +70 -70
- package/src/__tests__/__snapshots__/ProgressBar.tsx.snap +4 -4
- package/src/__tests__/__snapshots__/SelectMenu.tsx.snap +28 -28
- package/src/__tests__/__snapshots__/SelectPanel.tsx.snap +12 -12
- package/src/__tests__/__snapshots__/SideNav.tsx.snap +14 -14
- package/src/__tests__/__snapshots__/StateLabel.tsx.snap +7 -7
- package/src/__tests__/__snapshots__/SubNavLink.tsx.snap +24 -24
- package/src/__tests__/__snapshots__/TabNav.tsx.snap +5 -5
- package/src/__tests__/__snapshots__/TextInput.tsx.snap +36 -36
- package/src/__tests__/__snapshots__/ThemeProvider.tsx.snap +2 -2
- package/src/__tests__/__snapshots__/Timeline.tsx.snap +9 -7
- package/src/__tests__/__snapshots__/Tooltip.tsx.snap +6 -6
- package/src/__tests__/__snapshots__/UnderlineNav.tsx.snap +1 -1
- package/src/__tests__/__snapshots__/UnderlineNavLink.tsx.snap +21 -21
- package/src/stories/ActionList.stories.tsx +1 -1
- package/src/stories/ThemeProvider.stories.tsx +6 -6
- package/src/stories/useFocusTrap.stories.tsx +1 -1
- package/src/theme-preval.js +16 -0
- package/stats.html +1 -1
package/package-lock.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/components",
|
3
|
-
"version": "
|
3
|
+
"version": "29.0.0",
|
4
4
|
"lockfileVersion": 1,
|
5
5
|
"requires": true,
|
6
6
|
"dependencies": {
|
@@ -4041,9 +4041,9 @@
|
|
4041
4041
|
"integrity": "sha512-j5XppNRCvgaMZLPsVvvmp6GSh7P5pq6PUbsfLNBWi2Kz3KYDeoGDWbPr5MjoxFOGUn6Hjnt6qjHPRxahd11vLQ=="
|
4042
4042
|
},
|
4043
4043
|
"@primer/primitives": {
|
4044
|
-
"version": "4.
|
4045
|
-
"resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-4.
|
4046
|
-
"integrity": "sha512-
|
4044
|
+
"version": "4.7.1",
|
4045
|
+
"resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-4.7.1.tgz",
|
4046
|
+
"integrity": "sha512-kttAUcP3QgT5UbYLeMTKDxPvnAVzywX0xnKPcLkmEVQyhmEBlTO4LSlYIzL5YcKyklHcFRf1426UcGOY9wdWDQ=="
|
4047
4047
|
},
|
4048
4048
|
"@reach/router": {
|
4049
4049
|
"version": "1.3.4",
|
@@ -14756,6 +14756,11 @@
|
|
14756
14756
|
"prettier-linter-helpers": "^1.0.0"
|
14757
14757
|
}
|
14758
14758
|
},
|
14759
|
+
"eslint-plugin-primer-react": {
|
14760
|
+
"version": "0.4.1",
|
14761
|
+
"resolved": "https://registry.npmjs.org/eslint-plugin-primer-react/-/eslint-plugin-primer-react-0.4.1.tgz",
|
14762
|
+
"integrity": "sha512-FMYe8ZQvyApHIXOhGUMhfiWTVlanWxuW75WBCnWjlr4hvtOz77GTUo0U/1IStk02zXMUzC37FLbNClbnip3fxw=="
|
14763
|
+
},
|
14759
14764
|
"eslint-plugin-react": {
|
14760
14765
|
"version": "7.24.0",
|
14761
14766
|
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.24.0.tgz",
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@primer/components",
|
3
|
-
"version": "29.
|
3
|
+
"version": "29.1.0-rc.4e9b967e",
|
4
4
|
"description": "Primer react components",
|
5
5
|
"main": "lib/index.js",
|
6
6
|
"module": "lib-esm/index.js",
|
@@ -44,7 +44,7 @@
|
|
44
44
|
"license": "MIT",
|
45
45
|
"dependencies": {
|
46
46
|
"@primer/octicons-react": "^13.0.0",
|
47
|
-
"@primer/primitives": "4.
|
47
|
+
"@primer/primitives": "4.7.1",
|
48
48
|
"@react-aria/ssr": "3.1.0",
|
49
49
|
"@styled-system/css": "5.1.5",
|
50
50
|
"@styled-system/props": "5.1.5",
|
@@ -56,6 +56,7 @@
|
|
56
56
|
"@types/styled-system__theme-get": "5.0.1",
|
57
57
|
"classnames": "2.3.1",
|
58
58
|
"deepmerge": "4.2.2",
|
59
|
+
"eslint-plugin-primer-react": "0.4.1",
|
59
60
|
"focus-visible": "5.2.0",
|
60
61
|
"styled-system": "5.1.5"
|
61
62
|
},
|
@@ -4,7 +4,7 @@ import {get} from '../constants'
|
|
4
4
|
|
5
5
|
export const StyledDivider = styled.div`
|
6
6
|
height: 1px;
|
7
|
-
background: ${get('colors.
|
7
|
+
background: ${get('colors.border.muted')};
|
8
8
|
margin-top: calc(${get('space.2')} - 1px);
|
9
9
|
margin-bottom: ${get('space.2')};
|
10
10
|
`
|
@@ -37,15 +37,15 @@ export const StyledHeader = styled.div<{variant: HeaderProps['variant']} & SxPro
|
|
37
37
|
padding: 6px ${get('space.3')};
|
38
38
|
font-size: ${get('fontSizes.0')};
|
39
39
|
font-weight: ${get('fontWeights.bold')};
|
40
|
-
color: ${get('colors.
|
40
|
+
color: ${get('colors.fg.muted')};
|
41
41
|
|
42
42
|
${({variant}) =>
|
43
43
|
variant === 'filled' &&
|
44
44
|
css`
|
45
|
-
background: ${get('colors.
|
45
|
+
background: ${get('colors.canvas.subtle')};
|
46
46
|
margin: ${get('space.2')} 0;
|
47
|
-
border-top: 1px solid ${get('colors.
|
48
|
-
border-bottom: 1px solid ${get('colors.
|
47
|
+
border-top: 1px solid ${get('colors.neutral.muted')};
|
48
|
+
border-bottom: 1px solid ${get('colors.neutral.muted')};
|
49
49
|
|
50
50
|
&:first-child {
|
51
51
|
margin-top: 0;
|
package/src/ActionList/Item.tsx
CHANGED
@@ -129,9 +129,9 @@ export interface ItemProps extends Omit<React.ComponentPropsWithoutRef<'div'>, '
|
|
129
129
|
const getItemVariant = (variant = 'default', disabled?: boolean) => {
|
130
130
|
if (disabled) {
|
131
131
|
return {
|
132
|
-
color: get('colors.
|
133
|
-
iconColor: get('colors.
|
134
|
-
annotationColor: get('colors.
|
132
|
+
color: get('colors.fg.muted'),
|
133
|
+
iconColor: get('colors.fg.muted'),
|
134
|
+
annotationColor: get('colors.fg.muted'),
|
135
135
|
hoverCursor: 'default'
|
136
136
|
}
|
137
137
|
}
|
@@ -139,16 +139,16 @@ const getItemVariant = (variant = 'default', disabled?: boolean) => {
|
|
139
139
|
switch (variant) {
|
140
140
|
case 'danger':
|
141
141
|
return {
|
142
|
-
color: get('colors.
|
143
|
-
iconColor: get('colors.
|
144
|
-
annotationColor: get('colors.
|
142
|
+
color: get('colors.danger.fg'),
|
143
|
+
iconColor: get('colors.danger.fg'),
|
144
|
+
annotationColor: get('colors.fg.muted'),
|
145
145
|
hoverCursor: 'pointer'
|
146
146
|
}
|
147
147
|
default:
|
148
148
|
return {
|
149
149
|
color: 'inherit',
|
150
|
-
iconColor: get('colors.
|
151
|
-
annotationColor: get('colors.
|
150
|
+
iconColor: get('colors.fg.muted'),
|
151
|
+
annotationColor: get('colors.fg.muted'),
|
152
152
|
hoverCursor: 'pointer'
|
153
153
|
}
|
154
154
|
}
|
@@ -211,7 +211,7 @@ const StyledItem = styled.div<
|
|
211
211
|
width: 100%;
|
212
212
|
top: -7px;
|
213
213
|
// NB: This 'get' won’t execute if it’s moved into the arrow function below.
|
214
|
-
border: 0 solid ${get('colors.
|
214
|
+
border: 0 solid ${get('colors.border.muted')};
|
215
215
|
border-top-width: ${({showDivider}) => (showDivider ? `1px` : '0')};
|
216
216
|
}
|
217
217
|
}
|
@@ -297,7 +297,7 @@ const TrailingContent = styled(ColoredVisualContainer)`
|
|
297
297
|
`
|
298
298
|
|
299
299
|
const DescriptionContainer = styled.span`
|
300
|
-
color: ${get('colors.
|
300
|
+
color: ${get('colors.fg.muted')};
|
301
301
|
font-size: ${get('fontSizes.0')};
|
302
302
|
// TODO: When rem-based spacing on a 4px scale lands, replace
|
303
303
|
// hardcoded '16px' with '${get('lh-12')}'.
|
package/src/ActionList/List.tsx
CHANGED
@@ -106,7 +106,7 @@ const StyledList = styled.div`
|
|
106
106
|
|
107
107
|
&[${hasActiveDescendantAttribute}], &:focus-within {
|
108
108
|
--item-hover-bg-override: none;
|
109
|
-
--item-hover-divider-border-color-override: ${get('colors.
|
109
|
+
--item-hover-divider-border-color-override: ${get('colors.border.muted')};
|
110
110
|
}
|
111
111
|
`
|
112
112
|
|
package/src/AvatarPair.tsx
CHANGED
@@ -16,7 +16,11 @@ export type AvatarPairProps = BoxProps
|
|
16
16
|
const AvatarPair = ({children, ...rest}: AvatarPairProps) => {
|
17
17
|
const avatars = React.Children.map(children, (child, i) => {
|
18
18
|
if (!React.isValidElement(child)) return child
|
19
|
-
return i === 0 ?
|
19
|
+
return i === 0 ? (
|
20
|
+
React.cloneElement(child, {size: 40})
|
21
|
+
) : (
|
22
|
+
<ChildAvatar bg="canvas.default" {...child.props} size={20} />
|
23
|
+
)
|
20
24
|
})
|
21
25
|
return (
|
22
26
|
<Box position="relative" display="inline-flex" {...rest}>
|
package/src/AvatarStack.tsx
CHANGED
@@ -21,7 +21,7 @@ const AvatarStackWrapper = styled.span<StyledAvatarStackWrapperProps>`
|
|
21
21
|
flex-shrink: 0;
|
22
22
|
height: 20px;
|
23
23
|
width: 20px;
|
24
|
-
box-shadow: 0 0 0 1px ${get('colors.
|
24
|
+
box-shadow: 0 0 0 1px ${get('colors.canvas.default')};
|
25
25
|
margin-left: -11px;
|
26
26
|
position: relative;
|
27
27
|
overflow: hidden;
|
@@ -118,7 +118,7 @@ const AvatarStackWrapper = styled.span<StyledAvatarStackWrapperProps>`
|
|
118
118
|
margin-left: ${get('space.1')};
|
119
119
|
opacity: 100%;
|
120
120
|
visibility: visible;
|
121
|
-
box-shadow: 0 0 0 4px ${get('colors.
|
121
|
+
box-shadow: 0 0 0 4px ${get('colors.canvas.default')};
|
122
122
|
&:first-child {
|
123
123
|
margin-left: 0;
|
124
124
|
}
|
package/src/BranchName.tsx
CHANGED
@@ -8,8 +8,8 @@ const BranchName = styled.a<SystemCommonProps & SxProp>`
|
|
8
8
|
padding: 2px 6px;
|
9
9
|
font-size: ${get('fontSizes.0')};
|
10
10
|
font-family: ${get('fonts.mono')};
|
11
|
-
color: ${get('colors.
|
12
|
-
background-color: ${get('colors.
|
11
|
+
color: ${get('colors.fg.muted')};
|
12
|
+
background-color: ${get('colors.accent.subtle')};
|
13
13
|
border-radius: ${get('radii.2')};
|
14
14
|
${COMMON};
|
15
15
|
${sx};
|
package/src/Breadcrumb.tsx
CHANGED
@@ -17,7 +17,7 @@ const Wrapper = styled.li`
|
|
17
17
|
&::after {
|
18
18
|
padding-right: 0.5em;
|
19
19
|
padding-left: 0.5em;
|
20
|
-
color: ${get('colors.
|
20
|
+
color: ${get('colors.fg.muted')};
|
21
21
|
font-size: ${get('fontSizes.1')};
|
22
22
|
content: '/';
|
23
23
|
}
|
@@ -64,7 +64,7 @@ const BreadcrumbItem = styled.a.attrs<StyledBreadcrumbItemProps>(props => ({
|
|
64
64
|
className: classnames(props.selected && SELECTED_CLASS, props.className),
|
65
65
|
'aria-current': props.selected ? 'page' : null
|
66
66
|
}))<StyledBreadcrumbItemProps>`
|
67
|
-
color: ${get('colors.
|
67
|
+
color: ${get('colors.accent.fg')};
|
68
68
|
display: inline-block;
|
69
69
|
font-size: ${get('fontSizes.1')};
|
70
70
|
text-decoration: none;
|
@@ -72,7 +72,7 @@ const BreadcrumbItem = styled.a.attrs<StyledBreadcrumbItemProps>(props => ({
|
|
72
72
|
text-decoration: underline;
|
73
73
|
}
|
74
74
|
&.selected {
|
75
|
-
color: ${get('colors.
|
75
|
+
color: ${get('colors.fg.default')};
|
76
76
|
pointer-events: none;
|
77
77
|
}
|
78
78
|
${COMMON}
|
package/src/Button/Button.tsx
CHANGED
@@ -27,7 +27,7 @@ const Button = styled(ButtonBase)<ButtonBaseProps & ButtonSystemProps & SxProp>`
|
|
27
27
|
}
|
28
28
|
|
29
29
|
&:disabled {
|
30
|
-
color: ${get('colors.
|
30
|
+
color: ${get('colors.fg.muted')};
|
31
31
|
background-color: ${get('colors.btn.bg')};
|
32
32
|
border-color: ${get('colors.btn.border')};
|
33
33
|
}
|
@@ -14,14 +14,14 @@ const StyledButton = styled.button<StyledButtonProps>`
|
|
14
14
|
outline: none;
|
15
15
|
cursor: pointer;
|
16
16
|
border-radius: ${get('radii.2')};
|
17
|
-
color: ${get('colors.
|
17
|
+
color: ${get('colors.fg.muted')};
|
18
18
|
|
19
19
|
&:focus {
|
20
20
|
box-shadow: ${get('shadows.btn.focusShadow')};
|
21
21
|
}
|
22
22
|
|
23
23
|
&:hover {
|
24
|
-
color: ${get('colors.
|
24
|
+
color: ${get('colors.accent.fg')};
|
25
25
|
}
|
26
26
|
${COMMON};
|
27
27
|
${LAYOUT};
|
@@ -5,14 +5,14 @@ import {ComponentProps} from '../utils/types'
|
|
5
5
|
import ButtonBase, {ButtonBaseProps, ButtonSystemProps, buttonSystemProps} from './ButtonBase'
|
6
6
|
|
7
7
|
const ButtonInvisible = styled(ButtonBase)<ButtonBaseProps & ButtonSystemProps & SxProp>`
|
8
|
-
color: ${get('colors.
|
8
|
+
color: ${get('colors.accent.fg')};
|
9
9
|
background-color: transparent;
|
10
10
|
border: 0;
|
11
11
|
border-radius: ${get('radii.2')};
|
12
12
|
box-shadow: none;
|
13
13
|
|
14
14
|
&:disabled {
|
15
|
-
color: ${get('colors.
|
15
|
+
color: ${get('colors.fg.muted')};
|
16
16
|
}
|
17
17
|
|
18
18
|
&:focus {
|
@@ -17,7 +17,7 @@ const ButtonTableList = styled.summary<StyledButtonTableListProps>`
|
|
17
17
|
display: inline-block;
|
18
18
|
padding: 0;
|
19
19
|
font-size: ${get('fontSizes.1')};
|
20
|
-
color: ${get('colors.
|
20
|
+
color: ${get('colors.fg.muted')};
|
21
21
|
text-decoration: none;
|
22
22
|
white-space: nowrap;
|
23
23
|
cursor: pointer;
|
@@ -33,7 +33,7 @@ const ButtonTableList = styled.summary<StyledButtonTableListProps>`
|
|
33
33
|
&:disabled {
|
34
34
|
&,
|
35
35
|
&:hover {
|
36
|
-
color: rgba(${get('colors.
|
36
|
+
color: rgba(${get('colors.fg.muted')}, 0.5);
|
37
37
|
cursor: default;
|
38
38
|
}
|
39
39
|
}
|
package/src/CircleBadge.tsx
CHANGED
@@ -30,7 +30,7 @@ const CircleBadge = styled.div<StyledCircleBadgeProps>`
|
|
30
30
|
display: ${props => (props.inline ? 'inline-flex' : 'flex')};
|
31
31
|
align-items: center;
|
32
32
|
justify-content: center;
|
33
|
-
background-color: ${get('colors.
|
33
|
+
background-color: ${get('colors.canvas.default')};
|
34
34
|
border-radius: 50%;
|
35
35
|
box-shadow: ${get('shadows.shadow.medium')};
|
36
36
|
${COMMON};
|
package/src/CircleOcticon.tsx
CHANGED
@@ -20,7 +20,7 @@ function CircleOcticon(props: CircleOcticonProps) {
|
|
20
20
|
size={size}
|
21
21
|
borderRadius="50%"
|
22
22
|
borderStyle="solid"
|
23
|
-
borderColor="border.
|
23
|
+
borderColor="border.default"
|
24
24
|
>
|
25
25
|
<Box display="flex" {...rest} alignItems="center" justifyContent="center">
|
26
26
|
<IconComponent size={size} />
|
package/src/CounterLabel.tsx
CHANGED
@@ -12,10 +12,10 @@ const colorStyles = ({scheme, ...props}: StyledCounterLabelProps) => {
|
|
12
12
|
return {
|
13
13
|
color:
|
14
14
|
scheme === 'secondary'
|
15
|
-
? get('colors.
|
15
|
+
? get('colors.fg.default')(props)
|
16
16
|
: scheme === 'primary'
|
17
|
-
? get('colors.
|
18
|
-
: get('colors.
|
17
|
+
? get('colors.fg.onEmphasis')(props)
|
18
|
+
: get('colors.fg.default')(props)
|
19
19
|
}
|
20
20
|
}
|
21
21
|
|
@@ -23,10 +23,10 @@ const bgStyles = ({scheme, ...props}: StyledCounterLabelProps) => {
|
|
23
23
|
return {
|
24
24
|
backgroundColor:
|
25
25
|
scheme === 'secondary'
|
26
|
-
? get('colors.
|
26
|
+
? get('colors.neutral.muted')(props)
|
27
27
|
: scheme === 'primary'
|
28
|
-
? get('colors.
|
29
|
-
: get('colors.
|
28
|
+
? get('colors.neutral.emphasis')(props)
|
29
|
+
: get('colors.neutral.muted')(props)
|
30
30
|
}
|
31
31
|
}
|
32
32
|
|
@@ -65,7 +65,7 @@ const ConfirmationHeader: React.FC<DialogHeaderProps> = ({title, onClose, dialog
|
|
65
65
|
const StyledConfirmationBody = styled(Box)`
|
66
66
|
font-size: ${get('fontSizes.1')};
|
67
67
|
padding: 0 ${get('space.3')} ${get('space.3')} ${get('space.3')};
|
68
|
-
color: ${get('colors.
|
68
|
+
color: ${get('colors.fg.muted')};
|
69
69
|
flex-grow: 1;
|
70
70
|
`
|
71
71
|
const ConfirmationBody: React.FC<DialogProps> = ({children}) => {
|
package/src/Dialog/Dialog.tsx
CHANGED
@@ -182,7 +182,7 @@ interface StyledDialogProps {
|
|
182
182
|
const StyledDialog = styled.div<StyledDialogProps & SystemCommonProps & SystemPositionProps & SxProp>`
|
183
183
|
display: flex;
|
184
184
|
flex-direction: column;
|
185
|
-
background-color: ${get('colors.
|
185
|
+
background-color: ${get('colors.canvas.overlay')};
|
186
186
|
box-shadow: ${get('shadows.overlay.shadow')};
|
187
187
|
min-width: 296px;
|
188
188
|
max-width: calc(100vw - 64px);
|
@@ -297,7 +297,7 @@ const _Dialog = React.forwardRef<HTMLDivElement, React.PropsWithChildren<DialogP
|
|
297
297
|
_Dialog.displayName = 'Dialog'
|
298
298
|
|
299
299
|
const Header = styled(Box).attrs({as: 'header'})`
|
300
|
-
box-shadow: 0 1px 0 ${get('colors.border.
|
300
|
+
box-shadow: 0 1px 0 ${get('colors.border.default')};
|
301
301
|
padding: ${get('space.2')};
|
302
302
|
z-index: 1;
|
303
303
|
flex-shrink: 0;
|
@@ -309,7 +309,7 @@ const Title = styled(Box)`
|
|
309
309
|
const Subtitle = styled(Box)`
|
310
310
|
font-size: ${get('fontSizes.0')};
|
311
311
|
margin-top: ${get('space.1')};
|
312
|
-
color: ${get('colors.
|
312
|
+
color: ${get('colors.fg.muted')};
|
313
313
|
`
|
314
314
|
const Body = styled(Box)`
|
315
315
|
flex-grow: 1;
|
@@ -317,7 +317,7 @@ const Body = styled(Box)`
|
|
317
317
|
padding: ${get('space.3')};
|
318
318
|
`
|
319
319
|
const Footer = styled(Box).attrs({as: 'footer'})`
|
320
|
-
box-shadow: 0 -1px 0 ${get('colors.border.
|
320
|
+
box-shadow: 0 -1px 0 ${get('colors.border.default')};
|
321
321
|
padding: ${get('space.3')};
|
322
322
|
display: flex;
|
323
323
|
flex-flow: wrap;
|
@@ -373,7 +373,7 @@ const DialogCloseButton = styled(Button)`
|
|
373
373
|
background: transparent;
|
374
374
|
border: 0;
|
375
375
|
vertical-align: middle;
|
376
|
-
color: ${get('colors.
|
376
|
+
color: ${get('colors.fg.muted')};
|
377
377
|
padding: ${get('space.2')};
|
378
378
|
align-self: flex-start;
|
379
379
|
line-height: normal;
|
package/src/Dialog.tsx
CHANGED
@@ -28,7 +28,7 @@ const DialogBase = styled.div<StyledDialogBaseProps>`
|
|
28
28
|
max-height: 80vh;
|
29
29
|
z-index: 999;
|
30
30
|
margin: 10vh auto;
|
31
|
-
background-color: ${get('colors.
|
31
|
+
background-color: ${get('colors.canvas.default')};
|
32
32
|
width: ${props => (props.narrow ? '320px' : props.wide ? '640px' : '440px')};
|
33
33
|
outline: none;
|
34
34
|
|
@@ -46,7 +46,7 @@ const DialogBase = styled.div<StyledDialogBaseProps>`
|
|
46
46
|
|
47
47
|
const DialogHeaderBase = styled(Box)<SxProp>`
|
48
48
|
border-radius: ${get('radii.2')} ${get('radii.2')} 0px 0px;
|
49
|
-
border-bottom: 1px solid ${get('colors.border.
|
49
|
+
border-bottom: 1px solid ${get('colors.border.default')};
|
50
50
|
display: flex;
|
51
51
|
|
52
52
|
@media screen and (max-width: 750px) {
|
@@ -60,7 +60,7 @@ export type DialogHeaderProps = ComponentProps<typeof DialogHeaderBase>
|
|
60
60
|
function DialogHeader({theme, children, backgroundColor = 'gray.1', ...rest}: DialogHeaderProps) {
|
61
61
|
if (React.Children.toArray(children).every(ch => typeof ch === 'string')) {
|
62
62
|
children = (
|
63
|
-
<Text theme={theme} color="
|
63
|
+
<Text theme={theme} color="fg.default" fontSize={1} fontWeight="bold" fontFamily="sans-serif">
|
64
64
|
{children}
|
65
65
|
</Text>
|
66
66
|
)
|
@@ -85,7 +85,7 @@ const Overlay = styled.span`
|
|
85
85
|
content: ' ';
|
86
86
|
background: transparent;
|
87
87
|
z-index: 99;
|
88
|
-
background: ${get('colors.
|
88
|
+
background: ${get('colors.primer.canvas.backdrop')};
|
89
89
|
}
|
90
90
|
`
|
91
91
|
|
package/src/Dropdown.tsx
CHANGED
@@ -56,10 +56,10 @@ type StyledDropdownMenuProps = {
|
|
56
56
|
|
57
57
|
const DropdownMenu = styled.ul<StyledDropdownMenuProps>`
|
58
58
|
background-clip: padding-box;
|
59
|
-
background-color: ${get('colors.
|
60
|
-
border: 1px solid ${get('colors.border.
|
59
|
+
background-color: ${get('colors.canvas.overlay')};
|
60
|
+
border: 1px solid ${get('colors.border.default')};
|
61
61
|
border-radius: ${get('radii.2')};
|
62
|
-
box-shadow: ${get('shadows.
|
62
|
+
box-shadow: ${get('shadows.shadow.large')};
|
63
63
|
left: 0;
|
64
64
|
list-style: none;
|
65
65
|
margin-top: 2px;
|
@@ -83,12 +83,12 @@ const DropdownMenu = styled.ul<StyledDropdownMenuProps>`
|
|
83
83
|
|
84
84
|
&::before {
|
85
85
|
border: 8px solid transparent;
|
86
|
-
border-bottom-color: ${get('colors.
|
86
|
+
border-bottom-color: ${get('colors.canvas.overlay')};
|
87
87
|
}
|
88
88
|
|
89
89
|
&::after {
|
90
90
|
border: 7px solid transparent;
|
91
|
-
border-bottom-color: ${get('colors.
|
91
|
+
border-bottom-color: ${get('colors.canvas.overlay')};
|
92
92
|
}
|
93
93
|
|
94
94
|
// stylelint-disable-next-line selector-max-type
|
@@ -104,31 +104,31 @@ const DropdownItem = styled.li`
|
|
104
104
|
display: block;
|
105
105
|
padding: ${get('space.1')} 10px ${get('space.1')} 15px;
|
106
106
|
overflow: hidden;
|
107
|
-
color: ${get('colors.
|
107
|
+
color: ${get('colors.fg.default')};
|
108
108
|
text-overflow: ellipsis;
|
109
109
|
white-space: nowrap;
|
110
110
|
a {
|
111
|
-
color: ${get('colors.
|
111
|
+
color: ${get('colors.fg.default')};
|
112
112
|
text-decoration: none;
|
113
113
|
display: block;
|
114
114
|
overflow: hidden;
|
115
|
-
color: ${get('colors.
|
115
|
+
color: ${get('colors.fg.default')};
|
116
116
|
text-overflow: ellipsis;
|
117
117
|
white-space: nowrap;
|
118
118
|
}
|
119
119
|
|
120
120
|
&:focus,
|
121
121
|
a:focus {
|
122
|
-
color: ${get('colors.
|
122
|
+
color: ${get('colors.fg.onEmphasis')};
|
123
123
|
text-decoration: none;
|
124
|
-
background-color: ${get('colors.
|
124
|
+
background-color: ${get('colors.accent.emphasis')};
|
125
125
|
}
|
126
126
|
|
127
127
|
&:hover,
|
128
128
|
&:hover a {
|
129
|
-
color: ${get('colors.
|
129
|
+
color: ${get('colors.fg.onEmphasis')};
|
130
130
|
text-decoration: none;
|
131
|
-
background-color: ${get('colors.
|
131
|
+
background-color: ${get('colors.accent.emphasis')};
|
132
132
|
outline: none;
|
133
133
|
}
|
134
134
|
${COMMON};
|
package/src/DropdownStyles.ts
CHANGED
@@ -16,7 +16,7 @@ const getDirectionStyles = (theme: Theme, direction: 'ne' | 'e' | 'se' | 's' | '
|
|
16
16
|
right: -16px;
|
17
17
|
left: auto;
|
18
18
|
border-color: transparent;
|
19
|
-
border-left-color: ${get('colors.border.
|
19
|
+
border-left-color: ${get('colors.border.default')(theme)};
|
20
20
|
}
|
21
21
|
|
22
22
|
&::after {
|
@@ -24,7 +24,7 @@ const getDirectionStyles = (theme: Theme, direction: 'ne' | 'e' | 'se' | 's' | '
|
|
24
24
|
right: -14px;
|
25
25
|
left: auto;
|
26
26
|
border-color: transparent;
|
27
|
-
border-left-color: ${get('colors.border.
|
27
|
+
border-left-color: ${get('colors.border.default')(theme)};
|
28
28
|
}
|
29
29
|
`,
|
30
30
|
e: `
|
@@ -38,14 +38,14 @@ const getDirectionStyles = (theme: Theme, direction: 'ne' | 'e' | 'se' | 's' | '
|
|
38
38
|
top: 10px;
|
39
39
|
left: -16px;
|
40
40
|
border-color: transparent;
|
41
|
-
border-right-color: ${get('colors.border.
|
41
|
+
border-right-color: ${get('colors.border.default')(theme)};
|
42
42
|
}
|
43
43
|
|
44
44
|
&::after {
|
45
45
|
top: 11px;
|
46
46
|
left: -14px;
|
47
47
|
border-color: transparent;
|
48
|
-
border-right-color: ${get('colors.border.
|
48
|
+
border-right-color: ${get('colors.border.default')(theme)};
|
49
49
|
}
|
50
50
|
`,
|
51
51
|
ne: `
|
@@ -63,7 +63,7 @@ const getDirectionStyles = (theme: Theme, direction: 'ne' | 'e' | 'se' | 's' | '
|
|
63
63
|
&::before {
|
64
64
|
bottom: -8px;
|
65
65
|
left: 9px;
|
66
|
-
border-top: 8px solid ${get('colors.border.
|
66
|
+
border-top: 8px solid ${get('colors.border.default')(theme)};
|
67
67
|
border-bottom: 0;
|
68
68
|
border-left: 8px solid transparent;
|
69
69
|
}
|
@@ -71,7 +71,7 @@ const getDirectionStyles = (theme: Theme, direction: 'ne' | 'e' | 'se' | 's' | '
|
|
71
71
|
&::after {
|
72
72
|
bottom: -7px;
|
73
73
|
left: 10px;
|
74
|
-
border-top: 7px solid ${get('colors.border.
|
74
|
+
border-top: 7px solid ${get('colors.border.default')(theme)};
|
75
75
|
border-right: 7px solid transparent;
|
76
76
|
border-bottom: 0;
|
77
77
|
border-left: 7px solid transparent;
|
package/src/FilterList.tsx
CHANGED
@@ -33,8 +33,8 @@ const FilterListItemBase = styled.a<StyledFilterListItemBaseProps>`
|
|
33
33
|
margin: ${props => (props.small ? '0 0 2px' : '0 0 5px 0')};
|
34
34
|
overflow: hidden;
|
35
35
|
font-size: ${get('fontSizes.1')};
|
36
|
-
color: ${props => (props.selected ? get('colors.
|
37
|
-
background-color: ${props => (props.selected ? get('colors.
|
36
|
+
color: ${props => (props.selected ? get('colors.fg.onEmphasis') : get('colors.fg.muted'))};
|
37
|
+
background-color: ${props => (props.selected ? get('colors.accent.emphasis') : '')}!important;
|
38
38
|
text-decoration: none;
|
39
39
|
text-overflow: ellipsis;
|
40
40
|
white-space: nowrap;
|
@@ -42,11 +42,11 @@ const FilterListItemBase = styled.a<StyledFilterListItemBaseProps>`
|
|
42
42
|
border-radius: ${get('radii.1')};
|
43
43
|
&:hover {
|
44
44
|
text-decoration: none;
|
45
|
-
background-color: ${get('colors.
|
45
|
+
background-color: ${get('colors.canvas.subtle')};
|
46
46
|
}
|
47
47
|
&:active {
|
48
|
-
color: ${get('colors.
|
49
|
-
background-color: ${get('colors.
|
48
|
+
color: ${get('colors.fg.onEmphasis')};
|
49
|
+
background-color: ${get('colors.accent.emphasis')};
|
50
50
|
}
|
51
51
|
.count {
|
52
52
|
float: right;
|
@@ -45,7 +45,7 @@ function scrollIntoViewingArea(
|
|
45
45
|
}
|
46
46
|
|
47
47
|
const StyledHeader = styled.div`
|
48
|
-
box-shadow: 0 1px 0 ${get('colors.border.
|
48
|
+
box-shadow: 0 1px 0 ${get('colors.border.default')};
|
49
49
|
z-index: 1;
|
50
50
|
`
|
51
51
|
|
@@ -126,7 +126,7 @@ export function FilteredActionList({
|
|
126
126
|
ref={inputRef}
|
127
127
|
block
|
128
128
|
width="auto"
|
129
|
-
color="
|
129
|
+
color="fg.default"
|
130
130
|
value={filterValue}
|
131
131
|
onChange={onInputChange}
|
132
132
|
onKeyPress={onInputKeyPress}
|
package/src/Flash.tsx
CHANGED
@@ -49,7 +49,7 @@ const Flash = styled.div<
|
|
49
49
|
SxProp
|
50
50
|
>`
|
51
51
|
position: relative;
|
52
|
-
color: ${get('colors.
|
52
|
+
color: ${get('colors.fg.default')};
|
53
53
|
padding: ${get('space.3')};
|
54
54
|
border-style: solid;
|
55
55
|
border-width: ${props => (props.full ? '1px 0px' : '1px')};
|
package/src/Label.tsx
CHANGED
@@ -7,8 +7,8 @@ import {ComponentProps} from './utils/types'
|
|
7
7
|
const outlineStyles = css`
|
8
8
|
margin-top: -1px; // offsets the 1px border
|
9
9
|
margin-bottom: -1px; // offsets the 1px border
|
10
|
-
color: ${get('colors.
|
11
|
-
border: ${get('borderWidths.1')} solid ${get('colors.
|
10
|
+
color: ${get('colors.fg.muted')};
|
11
|
+
border: ${get('borderWidths.1')} solid ${get('colors.border.default')};
|
12
12
|
box-shadow: none;
|
13
13
|
${borderColor};
|
14
14
|
${COMMON};
|
@@ -52,7 +52,7 @@ const Label = styled.span<
|
|
52
52
|
>`
|
53
53
|
display: inline-block;
|
54
54
|
font-weight: ${get('fontWeights.semibold')};
|
55
|
-
color: ${get('colors.
|
55
|
+
color: ${get('colors.fg.onEmphasis')};
|
56
56
|
border-radius: ${get('radii.3')};
|
57
57
|
|
58
58
|
&:hover {
|
package/src/Link.tsx
CHANGED
@@ -20,11 +20,11 @@ const hoverColor = system({
|
|
20
20
|
})
|
21
21
|
|
22
22
|
const Link = styled.a<StyledLinkProps>`
|
23
|
-
color: ${props => (props.muted ? get('colors.
|
23
|
+
color: ${props => (props.muted ? get('colors.fg.muted')(props) : get('colors.accent.fg')(props))};
|
24
24
|
text-decoration: ${props => (props.underline ? 'underline' : 'none')};
|
25
25
|
&:hover {
|
26
26
|
text-decoration: ${props => (props.muted ? 'none' : 'underline')};
|
27
|
-
${props => (props.hoverColor ? hoverColor : props.muted ? `color: ${get('colors.
|
27
|
+
${props => (props.hoverColor ? hoverColor : props.muted ? `color: ${get('colors.accent.fg')(props)}` : '')};
|
28
28
|
}
|
29
29
|
&:is(button) {
|
30
30
|
display: inline-block;
|