@atlaskit/smart-card 26.55.1 → 26.56.0
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/CHANGELOG.md +20 -0
- package/dist/cjs/constants.js +1 -0
- package/dist/cjs/extractors/flexible/actions/extract-copy-link-action.js +21 -0
- package/dist/cjs/extractors/flexible/actions/index.js +2 -1
- package/dist/cjs/messages.js +10 -0
- package/dist/cjs/state/hooks/use-ai-summary/ai-summary-service/index.js +3 -2
- package/dist/cjs/state/hooks/use-ai-summary/ai-summary-service/types.js +1 -1
- package/dist/cjs/utils/analytics/analytics.js +1 -1
- package/dist/cjs/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +5 -3
- package/dist/cjs/view/BlockCard/views/styled.js +5 -3
- package/dist/cjs/view/Card/types.js +1 -0
- package/dist/cjs/view/EmbedCard/views/unresolved-view/styled.js +29 -8
- package/dist/cjs/view/EmbedModal/components/embed-content/index.js +5 -4
- package/dist/cjs/view/FlexibleCard/components/actions/action/action-button/index.js +24 -7
- package/dist/cjs/view/FlexibleCard/components/actions/action/action-stack-item/index.js +3 -1
- package/dist/cjs/view/FlexibleCard/components/actions/action/index.js +12 -4
- package/dist/cjs/view/FlexibleCard/components/actions/copy-link-action/index.js +88 -0
- package/dist/cjs/view/FlexibleCard/components/actions/copy-link-action/types.js +5 -0
- package/dist/cjs/view/FlexibleCard/components/actions/index.js +8 -1
- package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/index.js +55 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/types.js +5 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-error.js +6 -2
- package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/index.js +54 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/styled.js +21 -0
- package/dist/cjs/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +37 -9
- package/dist/cjs/view/FlexibleCard/components/blocks/block/index.js +3 -1
- package/dist/cjs/view/FlexibleCard/components/blocks/element-group/index.js +34 -7
- package/dist/cjs/view/FlexibleCard/components/blocks/metadata-block/index.js +3 -3
- package/dist/cjs/view/FlexibleCard/components/blocks/preview-block/resolved/index.js +13 -3
- package/dist/cjs/view/FlexibleCard/components/blocks/related-urls-block/index.js +3 -3
- package/dist/cjs/view/FlexibleCard/components/blocks/related-urls-block/resolved/related-url-list/index.js +3 -3
- package/dist/cjs/view/FlexibleCard/components/blocks/title-block/errored/index.js +16 -4
- package/dist/cjs/view/FlexibleCard/components/blocks/title-block/resolved/index.js +3 -3
- package/dist/cjs/view/FlexibleCard/components/blocks/utils.js +2 -0
- package/dist/cjs/view/FlexibleCard/components/common/loading-skeleton/index.js +27 -4
- package/dist/cjs/view/FlexibleCard/components/container/index.js +2 -0
- package/dist/cjs/view/FlexibleCard/components/container/layered-link/index.js +33 -3
- package/dist/cjs/view/FlexibleCard/components/elements/atlaskit-badge/index.js +5 -3
- package/dist/cjs/view/FlexibleCard/components/elements/avatar-group/index.js +10 -3
- package/dist/cjs/view/FlexibleCard/components/elements/badge/index.js +16 -4
- package/dist/cjs/view/FlexibleCard/components/elements/date-time/index.js +6 -3
- package/dist/cjs/view/FlexibleCard/components/elements/icon/index.js +23 -7
- package/dist/cjs/view/FlexibleCard/components/elements/link/index.js +38 -8
- package/dist/cjs/view/FlexibleCard/components/elements/lozenge/index.js +5 -3
- package/dist/cjs/view/FlexibleCard/components/elements/lozenge/lozenge-action/styled.js +46 -6
- package/dist/cjs/view/FlexibleCard/components/elements/media/index.js +31 -3
- package/dist/cjs/view/FlexibleCard/components/elements/text/index.js +7 -3
- package/dist/cjs/view/FlexibleCard/components/utils.js +1 -0
- package/dist/cjs/view/HoverCard/components/ContentContainer.js +5 -1
- package/dist/cjs/view/HoverCard/components/views/forbidden/styled.js +16 -6
- package/dist/cjs/view/HoverCard/components/views/resolved/index.js +12 -10
- package/dist/cjs/view/HoverCard/components/views/resolved/styled.js +10 -3
- package/dist/cjs/view/HoverCard/components/views/resolving/styled.js +23 -7
- package/dist/cjs/view/HoverCard/components/views/unauthorised/styled.js +14 -6
- package/dist/cjs/view/HoverCard/styled.js +4 -0
- package/dist/cjs/view/InlineCard/IconAndTitleLayout/styled.js +36 -10
- package/dist/cjs/view/InlineCard/ResolvingView/styled.js +4 -3
- package/dist/cjs/view/InlineCard/styled.js +37 -6
- package/dist/cjs/view/LinkUrl/LinkWarningModal/styled.js +4 -4
- package/dist/cjs/view/LinkUrl/index.js +1 -1
- package/dist/cjs/view/common/Icon.js +12 -4
- package/dist/cjs/view/common/ai-icon-loading/index.js +12 -3
- package/dist/es2019/constants.js +1 -0
- package/dist/es2019/extractors/flexible/actions/extract-copy-link-action.js +15 -0
- package/dist/es2019/extractors/flexible/actions/index.js +2 -0
- package/dist/es2019/messages.js +10 -0
- package/dist/es2019/state/hooks/use-ai-summary/ai-summary-service/index.js +2 -1
- package/dist/es2019/state/hooks/use-ai-summary/ai-summary-service/types.js +1 -1
- package/dist/es2019/utils/analytics/analytics.js +1 -1
- package/dist/es2019/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +5 -5
- package/dist/es2019/view/BlockCard/views/styled.js +4 -4
- package/dist/es2019/view/Card/types.js +1 -0
- package/dist/es2019/view/EmbedCard/views/unresolved-view/styled.js +29 -29
- package/dist/es2019/view/EmbedModal/components/embed-content/index.js +4 -4
- package/dist/es2019/view/FlexibleCard/components/actions/action/action-button/index.js +23 -26
- package/dist/es2019/view/FlexibleCard/components/actions/action/action-stack-item/index.js +3 -1
- package/dist/es2019/view/FlexibleCard/components/actions/action/index.js +12 -4
- package/dist/es2019/view/FlexibleCard/components/actions/copy-link-action/index.js +53 -0
- package/dist/es2019/view/FlexibleCard/components/actions/copy-link-action/types.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/actions/index.js +2 -1
- package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/index.js +39 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/types.js +1 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-error.js +6 -2
- package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/index.js +44 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/styled.js +15 -0
- package/dist/es2019/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +42 -16
- package/dist/es2019/view/FlexibleCard/components/blocks/block/index.js +3 -1
- package/dist/es2019/view/FlexibleCard/components/blocks/element-group/index.js +29 -34
- package/dist/es2019/view/FlexibleCard/components/blocks/metadata-block/index.js +3 -4
- package/dist/es2019/view/FlexibleCard/components/blocks/preview-block/resolved/index.js +11 -13
- package/dist/es2019/view/FlexibleCard/components/blocks/related-urls-block/index.js +3 -3
- package/dist/es2019/view/FlexibleCard/components/blocks/related-urls-block/resolved/related-url-list/index.js +3 -3
- package/dist/es2019/view/FlexibleCard/components/blocks/title-block/errored/index.js +14 -16
- package/dist/es2019/view/FlexibleCard/components/blocks/title-block/resolved/index.js +3 -3
- package/dist/es2019/view/FlexibleCard/components/blocks/utils.js +2 -0
- package/dist/es2019/view/FlexibleCard/components/common/loading-skeleton/index.js +25 -26
- package/dist/es2019/view/FlexibleCard/components/container/index.js +2 -0
- package/dist/es2019/view/FlexibleCard/components/container/layered-link/index.js +16 -18
- package/dist/es2019/view/FlexibleCard/components/elements/atlaskit-badge/index.js +4 -4
- package/dist/es2019/view/FlexibleCard/components/elements/avatar-group/index.js +8 -7
- package/dist/es2019/view/FlexibleCard/components/elements/badge/index.js +14 -12
- package/dist/es2019/view/FlexibleCard/components/elements/date-time/index.js +5 -6
- package/dist/es2019/view/FlexibleCard/components/elements/icon/index.js +20 -23
- package/dist/es2019/view/FlexibleCard/components/elements/link/index.js +33 -40
- package/dist/es2019/view/FlexibleCard/components/elements/lozenge/index.js +4 -4
- package/dist/es2019/view/FlexibleCard/components/elements/lozenge/lozenge-action/styled.js +42 -53
- package/dist/es2019/view/FlexibleCard/components/elements/media/index.js +28 -32
- package/dist/es2019/view/FlexibleCard/components/elements/text/index.js +6 -7
- package/dist/es2019/view/FlexibleCard/components/utils.js +1 -0
- package/dist/es2019/view/HoverCard/components/ContentContainer.js +6 -1
- package/dist/es2019/view/HoverCard/components/views/forbidden/styled.js +16 -16
- package/dist/es2019/view/HoverCard/components/views/resolved/index.js +13 -10
- package/dist/es2019/view/HoverCard/components/views/resolved/styled.js +9 -7
- package/dist/es2019/view/HoverCard/components/views/resolving/styled.js +22 -22
- package/dist/es2019/view/HoverCard/components/views/unauthorised/styled.js +13 -13
- package/dist/es2019/view/HoverCard/styled.js +4 -0
- package/dist/es2019/view/InlineCard/IconAndTitleLayout/styled.js +36 -40
- package/dist/es2019/view/InlineCard/ResolvingView/styled.js +4 -4
- package/dist/es2019/view/InlineCard/styled.js +34 -35
- package/dist/es2019/view/LinkUrl/LinkWarningModal/styled.js +4 -4
- package/dist/es2019/view/LinkUrl/index.js +1 -1
- package/dist/es2019/view/common/Icon.js +11 -11
- package/dist/es2019/view/common/ai-icon-loading/index.js +10 -14
- package/dist/esm/constants.js +1 -0
- package/dist/esm/extractors/flexible/actions/extract-copy-link-action.js +15 -0
- package/dist/esm/extractors/flexible/actions/index.js +2 -1
- package/dist/esm/messages.js +10 -0
- package/dist/esm/state/hooks/use-ai-summary/ai-summary-service/index.js +3 -2
- package/dist/esm/state/hooks/use-ai-summary/ai-summary-service/types.js +1 -1
- package/dist/esm/utils/analytics/analytics.js +1 -1
- package/dist/esm/view/BlockCard/views/flexible/FlexibleUnauthorisedView.js +5 -3
- package/dist/esm/view/BlockCard/views/styled.js +5 -3
- package/dist/esm/view/Card/types.js +1 -0
- package/dist/esm/view/EmbedCard/views/unresolved-view/styled.js +29 -7
- package/dist/esm/view/EmbedModal/components/embed-content/index.js +4 -3
- package/dist/esm/view/FlexibleCard/components/actions/action/action-button/index.js +22 -6
- package/dist/esm/view/FlexibleCard/components/actions/action/action-stack-item/index.js +3 -1
- package/dist/esm/view/FlexibleCard/components/actions/action/index.js +12 -4
- package/dist/esm/view/FlexibleCard/components/actions/copy-link-action/index.js +78 -0
- package/dist/esm/view/FlexibleCard/components/actions/copy-link-action/types.js +1 -0
- package/dist/esm/view/FlexibleCard/components/actions/index.js +2 -1
- package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/index.js +45 -0
- package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/types.js +1 -0
- package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/ai-state-indicator/ai-state-error.js +6 -2
- package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/index.js +47 -0
- package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/styled.js +15 -0
- package/dist/esm/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.js +37 -9
- package/dist/esm/view/FlexibleCard/components/blocks/block/index.js +3 -1
- package/dist/esm/view/FlexibleCard/components/blocks/element-group/index.js +34 -7
- package/dist/esm/view/FlexibleCard/components/blocks/metadata-block/index.js +3 -3
- package/dist/esm/view/FlexibleCard/components/blocks/preview-block/resolved/index.js +13 -3
- package/dist/esm/view/FlexibleCard/components/blocks/related-urls-block/index.js +3 -3
- package/dist/esm/view/FlexibleCard/components/blocks/related-urls-block/resolved/related-url-list/index.js +3 -3
- package/dist/esm/view/FlexibleCard/components/blocks/title-block/errored/index.js +16 -4
- package/dist/esm/view/FlexibleCard/components/blocks/title-block/resolved/index.js +3 -3
- package/dist/esm/view/FlexibleCard/components/blocks/utils.js +2 -0
- package/dist/esm/view/FlexibleCard/components/common/loading-skeleton/index.js +26 -4
- package/dist/esm/view/FlexibleCard/components/container/index.js +2 -0
- package/dist/esm/view/FlexibleCard/components/container/layered-link/index.js +32 -3
- package/dist/esm/view/FlexibleCard/components/elements/atlaskit-badge/index.js +4 -3
- package/dist/esm/view/FlexibleCard/components/elements/avatar-group/index.js +11 -3
- package/dist/esm/view/FlexibleCard/components/elements/badge/index.js +16 -4
- package/dist/esm/view/FlexibleCard/components/elements/date-time/index.js +5 -3
- package/dist/esm/view/FlexibleCard/components/elements/icon/index.js +21 -6
- package/dist/esm/view/FlexibleCard/components/elements/link/index.js +36 -7
- package/dist/esm/view/FlexibleCard/components/elements/lozenge/index.js +4 -3
- package/dist/esm/view/FlexibleCard/components/elements/lozenge/lozenge-action/styled.js +46 -5
- package/dist/esm/view/FlexibleCard/components/elements/media/index.js +30 -3
- package/dist/esm/view/FlexibleCard/components/elements/text/index.js +6 -3
- package/dist/esm/view/FlexibleCard/components/utils.js +1 -0
- package/dist/esm/view/HoverCard/components/ContentContainer.js +5 -1
- package/dist/esm/view/HoverCard/components/views/forbidden/styled.js +16 -5
- package/dist/esm/view/HoverCard/components/views/resolved/index.js +12 -10
- package/dist/esm/view/HoverCard/components/views/resolved/styled.js +10 -3
- package/dist/esm/view/HoverCard/components/views/resolving/styled.js +23 -6
- package/dist/esm/view/HoverCard/components/views/unauthorised/styled.js +14 -5
- package/dist/esm/view/HoverCard/styled.js +4 -0
- package/dist/esm/view/InlineCard/IconAndTitleLayout/styled.js +36 -10
- package/dist/esm/view/InlineCard/ResolvingView/styled.js +4 -3
- package/dist/esm/view/InlineCard/styled.js +37 -6
- package/dist/esm/view/LinkUrl/LinkWarningModal/styled.js +4 -3
- package/dist/esm/view/LinkUrl/index.js +1 -1
- package/dist/esm/view/common/Icon.js +11 -4
- package/dist/esm/view/common/ai-icon-loading/index.js +11 -3
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/extractors/flexible/actions/extract-copy-link-action.d.ts +4 -0
- package/dist/types/messages.d.ts +1 -1
- package/dist/types/state/flexible-ui-context/types.d.ts +4 -0
- package/dist/types/state/hooks/use-ai-summary/ai-summary-service/types.d.ts +2 -2
- package/dist/types/view/Card/types.d.ts +2 -1
- package/dist/types/view/FlexibleCard/components/actions/action/action-button/types.d.ts +2 -0
- package/dist/types/view/FlexibleCard/components/actions/action/action-stack-item/types.d.ts +2 -0
- package/dist/types/view/FlexibleCard/components/actions/action/types.d.ts +19 -0
- package/dist/types/view/FlexibleCard/components/actions/copy-link-action/index.d.ts +4 -0
- package/dist/types/view/FlexibleCard/components/actions/copy-link-action/types.d.ts +2 -0
- package/dist/types/view/FlexibleCard/components/actions/index.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/index.d.ts +4 -0
- package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/types.d.ts +7 -0
- package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/index.d.ts +12 -0
- package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/styled.d.ts +1 -0
- package/dist/types/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.d.ts +4 -3
- package/dist/types/view/FlexibleCard/components/blocks/types.d.ts +3 -1
- package/dist/types/view/FlexibleCard/components/elements/avatar-group/index.d.ts +0 -1
- package/dist/types-ts4.5/constants.d.ts +1 -0
- package/dist/types-ts4.5/extractors/flexible/actions/extract-copy-link-action.d.ts +4 -0
- package/dist/types-ts4.5/messages.d.ts +1 -1
- package/dist/types-ts4.5/state/flexible-ui-context/types.d.ts +4 -0
- package/dist/types-ts4.5/state/hooks/use-ai-summary/ai-summary-service/types.d.ts +3 -2
- package/dist/types-ts4.5/view/Card/types.d.ts +2 -1
- package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/action-button/types.d.ts +2 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/action-stack-item/types.d.ts +2 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/actions/action/types.d.ts +19 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/actions/copy-link-action/index.d.ts +4 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/actions/copy-link-action/types.d.ts +2 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/actions/index.d.ts +1 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/index.d.ts +4 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/ai-motion-wrapper/types.d.ts +7 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/index.d.ts +12 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/feature-discovery/styled.d.ts +1 -0
- package/dist/types-ts4.5/view/FlexibleCard/components/blocks/ai-summary-block/resolved/index.d.ts +4 -3
- package/dist/types-ts4.5/view/FlexibleCard/components/blocks/types.d.ts +3 -1
- package/dist/types-ts4.5/view/FlexibleCard/components/elements/avatar-group/index.d.ts +0 -1
- package/package.json +2 -1
|
@@ -2,24 +2,22 @@
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { jsx, css } from '@emotion/react';
|
|
4
4
|
import { useMouseDownEvent } from '../../../../../state/analytics/useLinkClicked';
|
|
5
|
-
const styles = css
|
|
5
|
+
const styles = css({
|
|
6
6
|
// Stretch the invisible link over the whole of the post.
|
|
7
7
|
// Hide the link’s text.
|
|
8
|
-
top: 0
|
|
9
|
-
right: 0
|
|
10
|
-
bottom: 0
|
|
11
|
-
left: 0
|
|
12
|
-
overflow: hidden
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
top: 0,
|
|
9
|
+
right: 0,
|
|
10
|
+
bottom: 0,
|
|
11
|
+
left: 0,
|
|
12
|
+
overflow: 'hidden',
|
|
13
|
+
textIndent: '100%',
|
|
14
|
+
whiteSpace: 'nowrap',
|
|
16
15
|
// Needs a heightened specificity to trump other anchor.
|
|
17
16
|
// Stack it under all other links in the post text.
|
|
18
|
-
a&.layered-link {
|
|
19
|
-
position: absolute
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
17
|
+
'a&.layered-link': {
|
|
18
|
+
position: 'absolute',
|
|
19
|
+
zIndex: 0
|
|
20
|
+
},
|
|
23
21
|
// When hovering over the layered link, any hidden action buttons inside
|
|
24
22
|
// the Container should become visible.
|
|
25
23
|
// As actions resides inside blocks and layered link is expected to be
|
|
@@ -30,12 +28,12 @@ const styles = css`
|
|
|
30
28
|
// iterations of the second element, that are following the first element
|
|
31
29
|
// (though not necessarily immediately), and are children of the same parent
|
|
32
30
|
// element.
|
|
33
|
-
&:hover ~ * {
|
|
34
|
-
.actions-button-group {
|
|
35
|
-
opacity: 1
|
|
31
|
+
'&:hover ~ *': {
|
|
32
|
+
'.actions-button-group': {
|
|
33
|
+
opacity: 1
|
|
36
34
|
}
|
|
37
35
|
}
|
|
38
|
-
|
|
36
|
+
});
|
|
39
37
|
|
|
40
38
|
/**
|
|
41
39
|
* An anchor component to cover the entire container creating a clickable area.
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import AKBadge from '@atlaskit/badge';
|
|
4
4
|
import { css, jsx } from '@emotion/react';
|
|
5
|
-
const badgeStyles = css
|
|
6
|
-
|
|
7
|
-
display: inline-flex
|
|
8
|
-
|
|
5
|
+
const badgeStyles = css({
|
|
6
|
+
alignItems: 'center',
|
|
7
|
+
display: 'inline-flex'
|
|
8
|
+
});
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* A base element that displays a visual indicator for a numeric value
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
|
+
|
|
2
3
|
import React, { useMemo } from 'react';
|
|
3
4
|
import { css, jsx } from '@emotion/react';
|
|
4
5
|
import AtlaskitAvatarGroup from '@atlaskit/avatar-group';
|
|
@@ -9,14 +10,13 @@ import { ElementName } from '../../../../../constants';
|
|
|
9
10
|
import { getFormattedMessageAsString } from '../../utils';
|
|
10
11
|
const MAX_COUNT = 4;
|
|
11
12
|
const getStyles = size => {
|
|
12
|
-
const styles = css
|
|
13
|
-
display: inline-flex
|
|
14
|
-
ul
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
margin-top: 0;
|
|
13
|
+
const styles = css({
|
|
14
|
+
display: 'inline-flex',
|
|
15
|
+
ul: {
|
|
16
|
+
marginRight: "var(--ds-space-100, 0.5rem)",
|
|
17
|
+
marginTop: 0
|
|
18
18
|
}
|
|
19
|
-
|
|
19
|
+
});
|
|
20
20
|
switch (size) {
|
|
21
21
|
case SmartLinkSize.XLarge:
|
|
22
22
|
case SmartLinkSize.Large:
|
|
@@ -25,6 +25,7 @@ const getStyles = size => {
|
|
|
25
25
|
case SmartLinkSize.Medium:
|
|
26
26
|
case SmartLinkSize.Small:
|
|
27
27
|
default:
|
|
28
|
+
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
28
29
|
return css`
|
|
29
30
|
${styles}
|
|
30
31
|
li {
|
|
@@ -6,11 +6,13 @@ import { IconType } from '../../../../../constants';
|
|
|
6
6
|
import { messages } from '../../../../../messages';
|
|
7
7
|
import ImageIcon from '../../common/image-icon';
|
|
8
8
|
import AtlaskitIcon from '../../common/atlaskit-icon';
|
|
9
|
-
const badgeStyles = css
|
|
10
|
-
|
|
11
|
-
display: inline-flex
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const badgeStyles = css({
|
|
10
|
+
alignItems: 'center',
|
|
11
|
+
display: 'inline-flex',
|
|
12
|
+
minWidth: 'fit-content'
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
14
16
|
const iconStyles = css`
|
|
15
17
|
color: ${"var(--ds-icon-subtle, #626F86)"};
|
|
16
18
|
line-height: 0;
|
|
@@ -23,13 +25,13 @@ const iconStyles = css`
|
|
|
23
25
|
vertical-align: middle;
|
|
24
26
|
}
|
|
25
27
|
`;
|
|
26
|
-
const labelStyles = css
|
|
27
|
-
color:
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
28
|
+
const labelStyles = css({
|
|
29
|
+
color: "var(--ds-text-subtlest, #626F86)",
|
|
30
|
+
fontSize: '0.75rem',
|
|
31
|
+
lineHeight: '1rem',
|
|
32
|
+
paddingLeft: "var(--ds-space-025, 0.125rem)",
|
|
33
|
+
verticalAlign: 'middle'
|
|
34
|
+
});
|
|
33
35
|
const messageMapper = {
|
|
34
36
|
[IconType.PriorityBlocker]: messages.priority_blocker,
|
|
35
37
|
[IconType.PriorityCritical]: messages.priority_critical,
|
|
@@ -6,12 +6,11 @@ import { css, jsx } from '@emotion/react';
|
|
|
6
6
|
import { getTruncateStyles } from '../../utils';
|
|
7
7
|
import { selectUnit } from '@formatjs/intl-utils';
|
|
8
8
|
import { messages } from '../../../../../messages';
|
|
9
|
-
const styles = css
|
|
10
|
-
color:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`;
|
|
9
|
+
const styles = css({
|
|
10
|
+
color: "var(--ds-text-subtlest, #626F86)",
|
|
11
|
+
fontSize: '0.75rem',
|
|
12
|
+
lineHeight: '1rem'
|
|
13
|
+
}, getTruncateStyles(1));
|
|
15
14
|
const typeToDescriptorMap = {
|
|
16
15
|
created: {
|
|
17
16
|
relative: messages.created_on_relative,
|
|
@@ -9,34 +9,30 @@ import { getIconSizeStyles, getIconWidth, getTruncateStyles } from '../../utils'
|
|
|
9
9
|
const getPositionStyles = position => {
|
|
10
10
|
switch (position) {
|
|
11
11
|
case SmartLinkPosition.Center:
|
|
12
|
-
return css
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
return css({
|
|
13
|
+
alignSelf: 'center'
|
|
14
|
+
});
|
|
15
15
|
case SmartLinkPosition.Top:
|
|
16
16
|
default:
|
|
17
|
-
return css
|
|
18
|
-
|
|
19
|
-
margin: 0
|
|
20
|
-
|
|
17
|
+
return css({
|
|
18
|
+
alignSelf: 'flex-start',
|
|
19
|
+
margin: 0
|
|
20
|
+
});
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
-
const getIconStyles = (position, width) => css
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
span {
|
|
35
|
-
margin: 0;
|
|
36
|
-
padding: 0;
|
|
37
|
-
vertical-align: baseline;
|
|
23
|
+
const getIconStyles = (position, width) => css(getPositionStyles(position), getIconSizeStyles(width));
|
|
24
|
+
const getCustomRenderStyles = value => css(getTruncateStyles(1, value), {
|
|
25
|
+
lineHeight: value,
|
|
26
|
+
fontSize: value,
|
|
27
|
+
textAlign: 'center',
|
|
28
|
+
textOverflow: 'clip',
|
|
29
|
+
WebkitBoxOrient: 'unset',
|
|
30
|
+
span: {
|
|
31
|
+
margin: 0,
|
|
32
|
+
padding: 0,
|
|
33
|
+
verticalAlign: 'baseline'
|
|
38
34
|
}
|
|
39
|
-
|
|
35
|
+
});
|
|
40
36
|
const renderAtlaskitIcon = (icon, label, testId) => {
|
|
41
37
|
if (icon) {
|
|
42
38
|
return jsx(AtlaskitIcon, {
|
|
@@ -85,6 +81,7 @@ const Icon = ({
|
|
|
85
81
|
const styles = getIconStyles(position, width);
|
|
86
82
|
const renderStyles = render ? getCustomRenderStyles(width) : undefined;
|
|
87
83
|
return jsx("div", {
|
|
84
|
+
// eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage -- needs dynamic css
|
|
88
85
|
css: [styles, renderStyles, overrideCss],
|
|
89
86
|
"data-fit-to-content": true,
|
|
90
87
|
"data-smart-element": name,
|
|
@@ -9,62 +9,55 @@ import { useMouseDownEvent } from '../../../../../state/analytics/useLinkClicked
|
|
|
9
9
|
const DEFAULT_MAX_LINES = 2;
|
|
10
10
|
const MAXIMUM_MAX_LINES = 2;
|
|
11
11
|
const MINIMUM_MAX_LINES = 1;
|
|
12
|
-
const containerStyles = css
|
|
13
|
-
flex: 1 1 auto
|
|
14
|
-
|
|
12
|
+
const containerStyles = css({
|
|
13
|
+
flex: '1 1 auto'
|
|
14
|
+
});
|
|
15
15
|
const getThemeStyles = theme => {
|
|
16
16
|
switch (theme) {
|
|
17
17
|
case SmartLinkInternalTheme.Grey:
|
|
18
18
|
// We are being specifc with the CSS selectors to ensure that Confluence overrides
|
|
19
19
|
// do not affect our internal Smart Card styles
|
|
20
|
-
return css
|
|
21
|
-
a& {
|
|
22
|
-
color:
|
|
23
|
-
&:active,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
text-decoration: underline;
|
|
29
|
-
}
|
|
30
|
-
font-size: 12px;
|
|
20
|
+
return css({
|
|
21
|
+
'a&': {
|
|
22
|
+
color: "var(--ds-text-subtlest, #626F86)",
|
|
23
|
+
'&:active, &:visited, &:focus, &:hover': {
|
|
24
|
+
color: "var(--ds-text-subtlest, #626F86)",
|
|
25
|
+
textDecoration: 'underline'
|
|
26
|
+
},
|
|
27
|
+
fontSize: '12px'
|
|
31
28
|
}
|
|
32
|
-
|
|
29
|
+
});
|
|
33
30
|
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
|
|
34
31
|
case SmartLinkTheme.Black:
|
|
35
|
-
return css
|
|
36
|
-
color:
|
|
37
|
-
:active {
|
|
38
|
-
color:
|
|
32
|
+
return css({
|
|
33
|
+
color: "var(--ds-text-subtle, #44546F)",
|
|
34
|
+
':active': {
|
|
35
|
+
color: "var(--ds-text, #172B4D)"
|
|
36
|
+
},
|
|
37
|
+
':hover': {
|
|
38
|
+
color: "var(--ds-text-subtle, #44546F)",
|
|
39
|
+
textDecoration: 'underline'
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
color: ${"var(--ds-text-subtle, #44546F)"};
|
|
42
|
-
text-decoration: underline;
|
|
43
|
-
}
|
|
44
|
-
`;
|
|
41
|
+
});
|
|
45
42
|
case SmartLinkTheme.Link:
|
|
46
43
|
default:
|
|
47
|
-
return css
|
|
48
|
-
color:
|
|
49
|
-
:active {
|
|
50
|
-
color:
|
|
51
|
-
}
|
|
52
|
-
:hover {
|
|
53
|
-
color:
|
|
54
|
-
|
|
44
|
+
return css({
|
|
45
|
+
color: "var(--ds-link, #0C66E4)",
|
|
46
|
+
':active': {
|
|
47
|
+
color: "var(--ds-link-pressed, #0055CC)"
|
|
48
|
+
},
|
|
49
|
+
':hover': {
|
|
50
|
+
color: "var(--ds-link, #0C66E4)",
|
|
51
|
+
textDecoration: 'underline'
|
|
55
52
|
}
|
|
56
|
-
|
|
53
|
+
});
|
|
57
54
|
}
|
|
58
55
|
};
|
|
59
56
|
const getAnchorStyles = (size, theme, maxLines, hasSpace) => {
|
|
60
57
|
const sizeStyles = getLinkSizeStyles(size);
|
|
61
|
-
return css
|
|
62
|
-
flex: 1 1 auto
|
|
63
|
-
|
|
64
|
-
${getTruncateStyles(maxLines, getLinkLineHeight(size), hasSpace ? 'break-word' : 'break-all')}
|
|
65
|
-
// Theme should be last to be spread because it contains override values
|
|
66
|
-
${getThemeStyles(theme)}
|
|
67
|
-
`;
|
|
58
|
+
return css({
|
|
59
|
+
flex: '1 1 auto'
|
|
60
|
+
}, sizeStyles, getTruncateStyles(maxLines, getLinkLineHeight(size), hasSpace ? 'break-word' : 'break-all'), getThemeStyles(theme));
|
|
68
61
|
};
|
|
69
62
|
const getMaxLines = maxLines => {
|
|
70
63
|
if (maxLines > MAXIMUM_MAX_LINES) {
|
|
@@ -4,10 +4,10 @@ import { css, jsx } from '@emotion/react';
|
|
|
4
4
|
import AtlaskitLozenge from '@atlaskit/lozenge';
|
|
5
5
|
import LozengeAction from './lozenge-action';
|
|
6
6
|
import { useFlexibleUiOptionContext } from '../../../../../state/flexible-ui-context';
|
|
7
|
-
const styles = css
|
|
8
|
-
display: inline-flex
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
const styles = css({
|
|
8
|
+
display: 'inline-flex',
|
|
9
|
+
lineHeight: 'inherit'
|
|
10
|
+
});
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* A base element that displays a Lozenge.
|
|
@@ -1,60 +1,49 @@
|
|
|
1
1
|
import { css } from '@emotion/react';
|
|
2
|
-
export const triggerButtonStyles = css
|
|
3
|
-
all: unset
|
|
4
|
-
|
|
5
|
-
color: unset
|
|
6
|
-
cursor: pointer
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
padding: 0
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
&[aria-expanded='true'] {
|
|
22
|
-
outline: none;
|
|
23
|
-
box-shadow: 0 0 0 2px ${"var(--ds-border-focused, #388BFF)"};
|
|
24
|
-
border-radius: 5px;
|
|
2
|
+
export const triggerButtonStyles = css({
|
|
3
|
+
all: 'unset',
|
|
4
|
+
backgroundColor: 'transparent',
|
|
5
|
+
color: 'unset',
|
|
6
|
+
cursor: 'pointer',
|
|
7
|
+
fontFamily: 'unset',
|
|
8
|
+
fontSize: 'unset',
|
|
9
|
+
fontStyle: 'unset',
|
|
10
|
+
fontWeight: 'unset',
|
|
11
|
+
fontVariant: 'unset',
|
|
12
|
+
lineHeight: 0,
|
|
13
|
+
padding: 0,
|
|
14
|
+
textTransform: 'unset',
|
|
15
|
+
border: '2px solid transparent',
|
|
16
|
+
margin: "var(--ds-space-025, 2px)",
|
|
17
|
+
"&:focus-visible, &:focus-within, &[aria-expanded='true']": {
|
|
18
|
+
outline: 'none',
|
|
19
|
+
boxShadow: `0 0 0 2px ${"var(--ds-border-focused, #388BFF)"}`,
|
|
20
|
+
borderRadius: '5px'
|
|
25
21
|
}
|
|
26
|
-
|
|
22
|
+
});
|
|
27
23
|
|
|
28
24
|
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
|
|
29
|
-
export const triggerLozengeStyles = css
|
|
30
|
-
|
|
31
|
-
display: flex
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
margin: ${"var(--ds-space-negative-050, -4px)"}
|
|
35
|
-
${"var(--ds-space-negative-100, -8px)"}
|
|
36
|
-
${"var(--ds-space-negative-050, -4px)"} -1px;
|
|
25
|
+
export const triggerLozengeStyles = css({
|
|
26
|
+
alignItems: 'center',
|
|
27
|
+
display: 'flex',
|
|
28
|
+
"span[role='img']": {
|
|
29
|
+
margin: `${"var(--ds-space-negative-050, -4px)"} ${"var(--ds-space-negative-100, -8px)"} ${"var(--ds-space-negative-050, -4px)"} -1px`
|
|
37
30
|
}
|
|
38
|
-
|
|
39
|
-
export const dropdownItemGroupStyles = css
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
background-color: ${"var(--ds-background-neutral-subtle-hovered, #091E420F)"};
|
|
55
|
-
box-sizing: border-box;
|
|
56
|
-
box-shadow: inset 2px 0 0 ${"var(--ds-border-selected, #0C66E4)"};
|
|
57
|
-
outline: none;
|
|
31
|
+
});
|
|
32
|
+
export const dropdownItemGroupStyles = css({
|
|
33
|
+
maxHeight: '300px',
|
|
34
|
+
overflowY: 'auto',
|
|
35
|
+
button: {
|
|
36
|
+
padding: `${"var(--ds-space-075, 6px)"} ${"var(--ds-space-150, 12px)"}`,
|
|
37
|
+
minHeight: '28px',
|
|
38
|
+
width: '220px',
|
|
39
|
+
'&:hover': {
|
|
40
|
+
backgroundColor: 'inherit'
|
|
41
|
+
},
|
|
42
|
+
'&:focus, &:focus-visible': {
|
|
43
|
+
backgroundColor: "var(--ds-background-neutral-subtle-hovered, #091E420F)",
|
|
44
|
+
boxSizing: 'border-box',
|
|
45
|
+
boxShadow: `inset 2px 0 0 ${"var(--ds-border-selected, #0C66E4)"}`,
|
|
46
|
+
outline: 'none'
|
|
58
47
|
}
|
|
59
48
|
}
|
|
60
|
-
|
|
49
|
+
});
|
|
@@ -12,40 +12,36 @@ import ImageIcon from '../../common/image-icon';
|
|
|
12
12
|
* [object-position] Center alignment of the selected replaced element's
|
|
13
13
|
* contents within the element's box.
|
|
14
14
|
*/
|
|
15
|
-
const styles = css
|
|
16
|
-
|
|
17
|
-
display: flex
|
|
18
|
-
width: 100
|
|
19
|
-
height: fit-content
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
height: 0
|
|
25
|
-
position: relative
|
|
26
|
-
overflow: hidden
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
left: 50%;
|
|
43
|
-
top: 50%;
|
|
44
|
-
width: auto;
|
|
45
|
-
height: auto;
|
|
15
|
+
const styles = css({
|
|
16
|
+
aspectRatio: '16 / 9',
|
|
17
|
+
display: 'flex',
|
|
18
|
+
width: '100%',
|
|
19
|
+
height: 'fit-content',
|
|
20
|
+
'@supports not (aspect-ratio: auto)': {
|
|
21
|
+
// eslint-disable-next-line @atlaskit/design-system/use-tokens-space -- needs manual remediation
|
|
22
|
+
paddingTop: '56.25%',
|
|
23
|
+
// 16:9 ratio (9 / 16 = 0.5625)
|
|
24
|
+
height: 0,
|
|
25
|
+
position: 'relative',
|
|
26
|
+
overflow: 'hidden'
|
|
27
|
+
},
|
|
28
|
+
'> img, > span': {
|
|
29
|
+
minHeight: '100%',
|
|
30
|
+
minWidth: '100%',
|
|
31
|
+
maxHeight: '100%',
|
|
32
|
+
maxWidth: '100%',
|
|
33
|
+
objectFit: 'cover',
|
|
34
|
+
objectPosition: 'center center',
|
|
35
|
+
'@supports not (aspect-ratio: auto)': {
|
|
36
|
+
position: 'absolute',
|
|
37
|
+
transform: 'translate(-50%, -50%)',
|
|
38
|
+
left: '50%',
|
|
39
|
+
top: '50%',
|
|
40
|
+
width: 'auto',
|
|
41
|
+
height: 'auto'
|
|
46
42
|
}
|
|
47
43
|
}
|
|
48
|
-
|
|
44
|
+
});
|
|
49
45
|
|
|
50
46
|
/**
|
|
51
47
|
* A base element that displays a Media.
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { css, jsx } from '@emotion/react';
|
|
4
4
|
import { getFormattedMessage, getTruncateStyles } from '../../utils';
|
|
5
|
-
const getStyles = maxLines => css
|
|
6
|
-
color:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
`;
|
|
5
|
+
const getStyles = maxLines => css({
|
|
6
|
+
color: "var(--ds-text-subtlest, #626F86)",
|
|
7
|
+
fontSize: '0.75rem',
|
|
8
|
+
lineHeight: '1rem',
|
|
9
|
+
whiteSpace: 'normal'
|
|
10
|
+
}, getTruncateStyles(maxLines));
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* A base element that displays some Text.
|
|
@@ -40,6 +40,7 @@ const getIconDimensionStyles = value => css({
|
|
|
40
40
|
});
|
|
41
41
|
export const getIconSizeStyles = width => {
|
|
42
42
|
const sizeStyles = getIconDimensionStyles(width);
|
|
43
|
+
// eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression -- needs manual remediation
|
|
43
44
|
return css`
|
|
44
45
|
flex: 0 0 auto;
|
|
45
46
|
${sizeStyles}
|
|
@@ -8,6 +8,7 @@ import AIPrism from '../../common/ai-prism';
|
|
|
8
8
|
import { hoverCardClassName } from './HoverCardContent';
|
|
9
9
|
import { useAISummary } from '../../../state/hooks/use-ai-summary';
|
|
10
10
|
import { useSmartCardState } from '../../../state/store';
|
|
11
|
+
import { useSmartLinkContext } from '@atlaskit/link-provider';
|
|
11
12
|
import { extractAri, extractLink } from '@atlaskit/link-extractors';
|
|
12
13
|
import { di } from 'react-magnetic-di';
|
|
13
14
|
const ConnectedAIPrismContainer = ({
|
|
@@ -24,13 +25,17 @@ const ConnectedAIPrismContainer = ({
|
|
|
24
25
|
//The data is undefined while the link is resolving.
|
|
25
26
|
const dataUrl = data ? extractLink(data) : null;
|
|
26
27
|
const dataAri = data ? extractAri(data) : null;
|
|
28
|
+
const {
|
|
29
|
+
product
|
|
30
|
+
} = useSmartLinkContext();
|
|
27
31
|
const {
|
|
28
32
|
state: {
|
|
29
33
|
status
|
|
30
34
|
}
|
|
31
35
|
} = useAISummary({
|
|
32
36
|
url: dataUrl || '',
|
|
33
|
-
ari: dataAri || ''
|
|
37
|
+
ari: dataAri || '',
|
|
38
|
+
product: product
|
|
34
39
|
});
|
|
35
40
|
const [showPrism, setShowPrism] = useState(status === 'loading');
|
|
36
41
|
useEffect(() => {
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { css } from '@emotion/react';
|
|
2
2
|
const titleFontWeight = '600';
|
|
3
|
-
export const titleBlockStyles = css
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export const mainTextStyles = css
|
|
9
|
-
display: inline
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
export const connectButtonStyles = css
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
3
|
+
export const titleBlockStyles = css({
|
|
4
|
+
justifyContent: 'center',
|
|
5
|
+
fontWeight: titleFontWeight,
|
|
6
|
+
marginTop: "var(--ds-space-100, 8px)"
|
|
7
|
+
});
|
|
8
|
+
export const mainTextStyles = css({
|
|
9
|
+
display: 'inline',
|
|
10
|
+
justifyContent: 'center',
|
|
11
|
+
marginTop: "var(--ds-space-0, 0px)",
|
|
12
|
+
fontSize: '0.75rem',
|
|
13
|
+
textAlign: 'center'
|
|
14
|
+
});
|
|
15
|
+
export const connectButtonStyles = css({
|
|
16
|
+
justifyContent: 'center',
|
|
17
|
+
marginTop: "var(--ds-space-100, 8px)"
|
|
18
|
+
});
|