@procore/core-react 12.53.4 → 12.54.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 +29 -0
- package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
- package/dist/Avatar/Avatar.styles.js +5 -5
- package/dist/AvatarStack/AvatarStack.js +2 -0
- package/dist/AvatarStack/AvatarStack.js.map +1 -1
- package/dist/AvatarStack/AvatarStack.styles.js +8 -8
- package/dist/Badge/Badge.styles.js +2 -2
- package/dist/BadgePill/BadgePill.styles.js +4 -4
- package/dist/Banner/Banner.d.ts +1 -0
- package/dist/Banner/Banner.js +31 -14
- package/dist/Banner/Banner.js.map +1 -1
- package/dist/Banner/Banner.styles.d.ts +10 -0
- package/dist/Banner/Banner.styles.js +29 -12
- package/dist/Banner/Banner.styles.js.map +1 -1
- package/dist/Banner/Banner.types.d.ts +1 -1
- package/dist/Banner/Banner.types.js.map +1 -1
- package/dist/Banner/index.d.ts +1 -1
- package/dist/Banner/index.js +1 -1
- package/dist/Banner/index.js.map +1 -1
- package/dist/Box/Box.styles.js +1 -1
- package/dist/Breadcrumbs/Breadcrumbs.styles.js +7 -6
- package/dist/Breadcrumbs/Breadcrumbs.styles.js.map +1 -1
- package/dist/Button/Button.styles.js +5 -5
- package/dist/Calendar/Calendar.styles.js +10 -10
- package/dist/Card/Card.styles.js +1 -1
- package/dist/Checkbox/Checkbox.styles.js +6 -6
- package/dist/ContactItem/ContactItem.styles.js +5 -5
- package/dist/Content/Content.styles.js +2 -2
- package/dist/DateInput/DateInput.styles.js +6 -6
- package/dist/DetailPage/DetailPage.styles.js +11 -9
- package/dist/DetailPage/DetailPage.styles.js.map +1 -1
- package/dist/Dropdown/Dropdown.styles.js +3 -3
- package/dist/DropdownFlyout/DropdownFlyout.js +8 -0
- package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
- package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
- package/dist/Dropzone/Dropzone.js +1 -1
- package/dist/Dropzone/Dropzone.styles.js +9 -9
- package/dist/EmptyState/EmptyState.styles.js +6 -6
- package/dist/Field/Field.styles.js +3 -3
- package/dist/FileList/FileList.styles.js +3 -3
- package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +17 -14
- package/dist/FileSelect/FileExplorer/FileExplorer.styles.js.map +1 -1
- package/dist/FileSelect/FileExplorer/FileExplorerModal.js +4 -2
- package/dist/FileSelect/FileExplorer/FileExplorerModal.js.map +1 -1
- package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +5 -4
- package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js.map +1 -1
- package/dist/FileSelect/FileSelect.styles.js +2 -2
- package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
- package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
- package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
- package/dist/FileSelect/LocalSource/LocalSource.styles.js +6 -5
- package/dist/FileSelect/LocalSource/LocalSource.styles.js.map +1 -1
- package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
- package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +13 -11
- package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js.map +1 -1
- package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
- package/dist/FileToken/FileToken.styles.js +6 -6
- package/dist/FilterToken/FilterToken.styles.js +5 -5
- package/dist/FlexList/FlexList.styles.js +1 -1
- package/dist/Form/Form.styles.js +13 -13
- package/dist/Form/StyledFormikForm.styles.js +2 -2
- package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
- package/dist/Grid/Grid.styles.js +2 -2
- package/dist/GroupSelect/GroupSelect.styles.js +1 -1
- package/dist/Input/Input.styles.js +1 -1
- package/dist/Link/Link.styles.js +1 -1
- package/dist/ListPage/ListPage.styles.js +12 -11
- package/dist/ListPage/ListPage.styles.js.map +1 -1
- package/dist/Loader/Loader.styles.js +2 -2
- package/dist/MenuImperative/MenuImperative.styles.js +11 -11
- package/dist/Modal/Modal.js +0 -2
- package/dist/Modal/Modal.js.map +1 -1
- package/dist/Modal/Modal.styles.js +44 -32
- package/dist/Modal/Modal.styles.js.map +1 -1
- package/dist/MultiSelect/MultiSelect.styles.js +8 -8
- package/dist/NextMenu/NextMenu.styles.js +3 -3
- package/dist/NextTile/NextTile.styles.js +5 -5
- package/dist/Notation/Notation.js +1 -1
- package/dist/NumberInput/NumberInput.styles.js +7 -7
- package/dist/Overlay/OverlayArrow.styles.js +1 -1
- package/dist/OverlayTrigger/OverlayTrigger.js +12 -3
- package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
- package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +14 -0
- package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
- package/dist/OverlayTrigger/a11yPresets.d.ts +19 -3
- package/dist/OverlayTrigger/a11yPresets.js +16 -6
- package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
- package/dist/PageLayout/PageLayout.js +15 -4
- package/dist/PageLayout/PageLayout.js.map +1 -1
- package/dist/PageLayout/PageLayout.styles.js +35 -34
- package/dist/PageLayout/PageLayout.styles.js.map +1 -1
- package/dist/PageLayout/PageLayout.types.d.ts +1 -0
- package/dist/PageLayout/PageLayout.types.js.map +1 -1
- package/dist/PageLayout/PageLayout.utils.d.ts +11 -0
- package/dist/PageLayout/PageLayout.utils.js +45 -0
- package/dist/PageLayout/PageLayout.utils.js.map +1 -1
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js +2 -2
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js.map +1 -1
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.d.ts +5 -0
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +9 -2
- package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js.map +1 -1
- package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
- package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
- package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
- package/dist/Pagination/Pagination.styles.js +5 -5
- package/dist/Panel/Panel.styles.js +17 -16
- package/dist/Panel/Panel.styles.js.map +1 -1
- package/dist/Pill/Pill.styles.js +3 -3
- package/dist/PillSelect/PillSelect.styles.js +5 -5
- package/dist/Popover/Popover.js +6 -1
- package/dist/Popover/Popover.js.map +1 -1
- package/dist/Popover/Popover.styles.js +2 -2
- package/dist/Portal/Portal.styles.js +1 -1
- package/dist/ProgressBar/ProgressBar.styles.js +2 -2
- package/dist/RadioButton/RadioButton.styles.js +3 -3
- package/dist/Required/Required.styles.js +3 -3
- package/dist/Search/Search.styles.js +5 -5
- package/dist/Section/Section.styles.js +7 -7
- package/dist/SegmentedController/SegmentedController.styles.js +4 -4
- package/dist/Select/Select.js +5 -2
- package/dist/Select/Select.js.map +1 -1
- package/dist/Select/Select.styles.js +8 -8
- package/dist/Semantic/Semantic.styles.js +9 -9
- package/dist/Slider/Slider.styles.js +5 -5
- package/dist/Spinner/Spinner.styles.js +7 -7
- package/dist/SplitViewCard/SplitViewCard.styles.js +15 -13
- package/dist/SplitViewCard/SplitViewCard.styles.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.js +8 -0
- package/dist/SuperSelect/SuperSelect.js.map +1 -1
- package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
- package/dist/SuperSelect/SuperSelect.styles.js +40 -40
- package/dist/SuperSelect/useSuperSelect.js +20 -4
- package/dist/SuperSelect/useSuperSelect.js.map +1 -1
- package/dist/Switch/Switch.styles.js +4 -4
- package/dist/Table/Table.js +63 -2
- package/dist/Table/Table.js.map +1 -1
- package/dist/Table/Table.styles.js +31 -30
- package/dist/Table/Table.styles.js.map +1 -1
- package/dist/TableShelf/TableShelf.styles.js +5 -5
- package/dist/Tabs/Tabs.js +11 -3
- package/dist/Tabs/Tabs.js.map +1 -1
- package/dist/Tabs/Tabs.styles.js +16 -16
- package/dist/Tearsheet/Tearsheet.js +4 -3
- package/dist/Tearsheet/Tearsheet.js.map +1 -1
- package/dist/Tearsheet/Tearsheet.styles.js +5 -5
- package/dist/TextArea/TextArea.styles.js +1 -1
- package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
- package/dist/Thumbnail/Thumbnail.styles.d.ts +1 -0
- package/dist/Thumbnail/Thumbnail.styles.js +22 -22
- package/dist/Thumbnail/Thumbnail.styles.js.map +1 -1
- package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
- package/dist/TieredSelect/TieredSelect.styles.js +9 -9
- package/dist/Tile/Tile.styles.js +8 -8
- package/dist/Title/Title.styles.js +11 -9
- package/dist/Title/Title.styles.js.map +1 -1
- package/dist/Toast/Toast.styles.js +3 -3
- package/dist/ToggleButton/ToggleButton.styles.js +1 -1
- package/dist/Token/Token.styles.js +5 -5
- package/dist/ToolHeader/ToolHeader.styles.js +15 -10
- package/dist/ToolHeader/ToolHeader.styles.js.map +1 -1
- package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
- package/dist/Tooltip/Tooltip.js +7 -1
- package/dist/Tooltip/Tooltip.js.map +1 -1
- package/dist/Tooltip/Tooltip.styles.js +3 -3
- package/dist/Tree/Tree.js +1 -1
- package/dist/Tree/Tree.styles.js +10 -10
- package/dist/Typeahead/Typeahead.styles.js +4 -4
- package/dist/Typography/Typography.styles.js +1 -1
- package/dist/Typography/Typography.table.story.js +2 -2
- package/dist/_hooks/I18n.d.ts +33 -13
- package/dist/_hooks/I18n.js +2 -0
- package/dist/_hooks/I18n.js.map +1 -1
- package/dist/_locales/de-DE.json +1 -0
- package/dist/_locales/en-AU.json +1 -0
- package/dist/_locales/en-CA.json +1 -0
- package/dist/_locales/en-GB.json +1 -0
- package/dist/_locales/en.json +3 -1
- package/dist/_locales/es-ES.json +1 -0
- package/dist/_locales/es.json +1 -0
- package/dist/_locales/fr-CA.json +1 -0
- package/dist/_locales/fr-FR.json +1 -0
- package/dist/_locales/is-IS.json +1 -0
- package/dist/_locales/it-IT.json +1 -0
- package/dist/_locales/ja-JP.json +1 -0
- package/dist/_locales/nb-NO.json +2 -1
- package/dist/_locales/pl-PL.json +1 -0
- package/dist/_locales/pseudo.json +3 -1
- package/dist/_locales/pt-BR.json +1 -0
- package/dist/_locales/pt-PT.json +3 -2
- package/dist/_locales/th-TH.json +1 -0
- package/dist/_locales/zh-SG.json +1 -0
- package/dist/_locales/zh-TW.json +2 -1
- package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
- package/dist/_storyHelpers_/components/StoryGrid.js +5 -4
- package/dist/_storyHelpers_/components/StoryGrid.js.map +1 -1
- package/dist/_storyHelpers_/highZoom.d.ts +68 -0
- package/dist/_storyHelpers_/highZoom.js +72 -0
- package/dist/_storyHelpers_/highZoom.js.map +1 -0
- package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +7 -7
- package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
- package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
- package/dist/_typedoc/Badge/Badge.types.json +6 -6
- package/dist/_typedoc/Banner/Banner.types.json +18 -18
- package/dist/_typedoc/Box/Box.types.json +68 -68
- package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +12 -12
- package/dist/_typedoc/Button/Button.types.json +14 -14
- package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
- package/dist/_typedoc/Card/Card.types.json +6 -6
- package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
- package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
- package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
- package/dist/_typedoc/DateSelect/DateSelect.types.json +17 -17
- package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
- package/dist/_typedoc/DetailPageTemplate/DetailPageTemplate.types.json +3 -3
- package/dist/_typedoc/Dropdown/Dropdown.types.json +38 -38
- package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +37 -37
- package/dist/_typedoc/Dropzone/Dropzone.types.json +50 -50
- package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
- package/dist/_typedoc/FileList/FileList.types.json +9 -9
- package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
- package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
- package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
- package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +17 -17
- package/dist/_typedoc/Flex/Flex.types.json +27 -27
- package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
- package/dist/_typedoc/Form/Form.types.json +783 -783
- package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
- package/dist/_typedoc/Grid/Grid.types.json +8 -8
- package/dist/_typedoc/GroupSelect/GroupSelect.types.json +81 -81
- package/dist/_typedoc/Input/Input.types.json +2 -2
- package/dist/_typedoc/Link/Link.types.json +1 -1
- package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
- package/dist/_typedoc/Menu/Menu.types.json +62 -62
- package/dist/_typedoc/MenuImperative/MenuImperative.types.json +90 -90
- package/dist/_typedoc/Modal/Modal.types.json +48 -48
- package/dist/_typedoc/MultiSelect/MultiSelect.types.json +34 -34
- package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
- package/dist/_typedoc/Notation/Notation.types.json +4 -4
- package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
- package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +44 -33
- package/dist/_typedoc/PageLayout/PageLayout.types.json +42 -42
- package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
- package/dist/_typedoc/Panel/Panel.types.json +28 -28
- package/dist/_typedoc/Pill/Pill.types.json +2 -2
- package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
- package/dist/_typedoc/Popover/Popover.types.json +15 -15
- package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
- package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
- package/dist/_typedoc/Required/Required.types.json +5 -5
- package/dist/_typedoc/Search/Search.types.json +18 -18
- package/dist/_typedoc/Section/Section.types.json +15 -15
- package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
- package/dist/_typedoc/Select/Select.types.json +67 -67
- package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
- package/dist/_typedoc/SettingsPageTemplate/SettingsPageTemplate.types.json +3 -3
- package/dist/_typedoc/Slider/Slider.types.json +6 -6
- package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
- package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
- package/dist/_typedoc/Table/Table.types.json +108 -108
- package/dist/_typedoc/Tabs/Tablist.types.json +10 -10
- package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
- package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
- package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
- package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
- package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
- package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
- package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
- package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
- package/dist/_typedoc/Tile/Tile.types.json +8 -8
- package/dist/_typedoc/Title/Title.types.json +1 -1
- package/dist/_typedoc/Toast/Toast.types.json +4 -4
- package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
- package/dist/_typedoc/Token/Token.types.json +7 -7
- package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
- package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
- package/dist/_typedoc/ToolLandingPageTemplate/ToolLandingPageTemplate.types.json +2 -2
- package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
- package/dist/_typedoc/Tree/Tree.types.json +132 -132
- package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
- package/dist/_typedoc/Typography/Typography.types.json +9 -9
- package/dist/_typedoc/_utils/types.json +3 -3
- package/dist/_typedoc/a11y-tips.json +1 -1
- package/package.json +2 -2
- package/dist/_hooks/ScrollLock.d.ts +0 -1
- package/dist/_hooks/ScrollLock.js +0 -31
- package/dist/_hooks/ScrollLock.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 12.54.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- a193c97: Overlays built on `OverlayTrigger` (`Dropdown`, `Select`, `MultiSelect`, `TieredDropdown`, `TieredSelect`, `DateSelect`, `Pagination`, `SuperSelect`, `DropdownFlyout`, and more) now lock background scroll while open by default, so content no longer overflow constrained containers or drift out of place while the page scrolls. Aligns with native OS and modern web libraries.
|
|
8
|
+
- `OverlayTrigger` gains a `scrollLock` prop, **defaulting to `true`**. Hover/focus-triggered overlays (`Tooltip`, `Popover`, `AvatarStack`) opt out with `scrollLock={false}` at the moment.
|
|
9
|
+
- `Modal` and `Tearsheet` replace custom scroll-locking with React Aria's [`usePreventScroll`](https://react-spectrum.adobe.com/react-aria/usePreventScroll.html)
|
|
10
|
+
- b3df87a: Reflow fixes for smaller breakpoints / high browser zoom (400% and 200%):
|
|
11
|
+
- `Title` first moves actions below and then stacks them.
|
|
12
|
+
- `Modal` dialog take the full screen.
|
|
13
|
+
- `Banner` stacks its icon and title, text and actions.
|
|
14
|
+
- `Panel` places back, close, and other actions above the heading.
|
|
15
|
+
- `SplitViewCard` drops its minimum height.
|
|
16
|
+
- `Tabs` shows its "More" menu when even the first tab does not fit.
|
|
17
|
+
- `Table.Container` scrolls sideways.
|
|
18
|
+
- `Page.Aside` becomes a full-width sheet.
|
|
19
|
+
- `Breadcrumbs` allows wrapping.
|
|
20
|
+
- Sticky page footers scroll with the page.
|
|
21
|
+
- Rows of buttons and toolbars wrap instead of widening the page.
|
|
22
|
+
- 270e56a: Add `SuccessBanner`
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- 39f8633: `Select` only sets `aria-controls` on the combobox while its listbox is open.
|
|
27
|
+
- 49bdcd2: Fix: pressing Escape with an open `DateSelect` (or other `OverlayTrigger` overlay) no longer also closes a parent `Tearsheet` or `Modal`.
|
|
28
|
+
- b7af222: Fix `SuperSelect` overlay not flipping to open above the trigger when its content grows after the initial open (e.g. options arriving asynchronously). The overlay no longer stays clamped to the space available for the placement chosen while content was still small, so it correctly flips instead of getting cut off.
|
|
29
|
+
- b9f3b8c: Fixed `Select` briefly flashing its label-overflow tooltip when the trigger is programmatically focused as the menu opens, which was visible in data-table inline select cell editors.
|
|
30
|
+
- 968dcba: Fix `useI18nContext` typed `t`/`translate` for pluralized keys. `count` is no longer treated as a string interpolation variable, so keys whose forms use `%{count}` accept any `number` (previously a `zero` form narrowed `count` to `0 | 1`). Forms that a key doesn't define no longer loosen the required interpolation params, and pluralized keys now return `string` instead of the pluralization object type.
|
|
31
|
+
|
|
3
32
|
## 12.53.4
|
|
4
33
|
|
|
5
34
|
### Patch Changes
|
|
@@ -5,15 +5,15 @@ import { getEllipsis } from '../_styles/mixins';
|
|
|
5
5
|
import { spacing } from '../_styles/spacing';
|
|
6
6
|
export var StyledAnchorNavigationLandmark = /*#__PURE__*/styled.nav.withConfig({
|
|
7
7
|
displayName: "StyledAnchorNavigationLandmark",
|
|
8
|
-
componentId: "core-
|
|
8
|
+
componentId: "core-12_54_0__sc-aacdj4-0"
|
|
9
9
|
})([""]);
|
|
10
10
|
export var StyledAnchorNavigation = /*#__PURE__*/styled.ul.withConfig({
|
|
11
11
|
displayName: "StyledAnchorNavigation",
|
|
12
|
-
componentId: "core-
|
|
12
|
+
componentId: "core-12_54_0__sc-aacdj4-1"
|
|
13
13
|
})(["max-width:200px;margin:0;padding-inline-start:0;"]);
|
|
14
14
|
export var StyledAnchorSection = /*#__PURE__*/styled.li.withConfig({
|
|
15
15
|
displayName: "StyledAnchorSection",
|
|
16
|
-
componentId: "core-
|
|
16
|
+
componentId: "core-12_54_0__sc-aacdj4-2"
|
|
17
17
|
})(["display:flex;cursor:pointer;border-left:", "px solid ", ";background-color:", ";border-top-right-radius:4px;border-bottom-right-radius:4px;:hover{border-left:", "px solid ", ";background-color:", ";}"], spacing.xs, function (_ref) {
|
|
18
18
|
var $selected = _ref.$selected;
|
|
19
19
|
return $selected ? colors.gray15 : colors.gray90;
|
|
@@ -26,7 +26,7 @@ export var StyledAnchorSection = /*#__PURE__*/styled.li.withConfig({
|
|
|
26
26
|
}, colors.gray90);
|
|
27
27
|
export var StyledAnchor = /*#__PURE__*/styled.a.withConfig({
|
|
28
28
|
displayName: "StyledAnchor",
|
|
29
|
-
componentId: "core-
|
|
29
|
+
componentId: "core-12_54_0__sc-aacdj4-3"
|
|
30
30
|
})(["box-sizing:border-box;display:block;flex:1;min-width:0;width:100%;padding:6px ", "px;color:inherit;text-decoration:none;&:visited{color:inherit;}", " ", ";", " :focus-visible{box-shadow:inset 0 0 0 2px ", ";outline:none;}"], spacing.sm, getTypographyIntent('body'), function (_ref4) {
|
|
31
31
|
var $selected = _ref4.$selected;
|
|
32
32
|
return $selected ? css(["font-weight:600;"]) : '';
|
|
@@ -28,26 +28,26 @@ var iconSize = {
|
|
|
28
28
|
};
|
|
29
29
|
export var StyledAvatarOverlay = /*#__PURE__*/styled.div.withConfig({
|
|
30
30
|
displayName: "StyledAvatarOverlay",
|
|
31
|
-
componentId: "core-
|
|
31
|
+
componentId: "core-12_54_0__sc-7q2ydl-0"
|
|
32
32
|
})(["width:100%;height:100%;position:absolute;top:0;left:0;border-radius:100%;opacity:0;"]);
|
|
33
33
|
export var StyledIconContainer = /*#__PURE__*/styled.div.withConfig({
|
|
34
34
|
displayName: "StyledIconContainer",
|
|
35
|
-
componentId: "core-
|
|
35
|
+
componentId: "core-12_54_0__sc-7q2ydl-1"
|
|
36
36
|
})(["display:inline-flex;"]);
|
|
37
37
|
export var StyledLabelContainer = /*#__PURE__*/styled.div.withConfig({
|
|
38
38
|
displayName: "StyledLabelContainer",
|
|
39
|
-
componentId: "core-
|
|
39
|
+
componentId: "core-12_54_0__sc-7q2ydl-2"
|
|
40
40
|
})(["text-transform:uppercase;"]);
|
|
41
41
|
export var StyledPortraitContainer = /*#__PURE__*/styled.div.withConfig({
|
|
42
42
|
displayName: "StyledPortraitContainer",
|
|
43
|
-
componentId: "core-
|
|
43
|
+
componentId: "core-12_54_0__sc-7q2ydl-3"
|
|
44
44
|
})(["background-color:", ";background-position:center;background-repeat:no-repeat;background-size:cover;height:100%;width:100%;", ""], colors.white, function (_ref) {
|
|
45
45
|
var $imageUrl = _ref.$imageUrl;
|
|
46
46
|
return css(["background-image:url(", ");"], $imageUrl);
|
|
47
47
|
});
|
|
48
48
|
export var StyledAvatarContainer = /*#__PURE__*/styled.div.withConfig({
|
|
49
49
|
displayName: "StyledAvatarContainer",
|
|
50
|
-
componentId: "core-
|
|
50
|
+
componentId: "core-12_54_0__sc-7q2ydl-4"
|
|
51
51
|
})(["display:inline-flex;justify-content:center;align-items:center;border-radius:100%;overflow:hidden;position:relative;cursor:default;color:", ";background-color:", ";text-decoration:none;a:has(> &){text-decoration:none;}&:focus{", "}a:focus:has(> &){", " border-radius:100%;}", " ", ";"], colors.white, colors.gray30, getGapOutlineFocus('outside'), getGapOutlineFocus('outside'), function (_ref2) {
|
|
52
52
|
var _ref2$$size = _ref2.$size,
|
|
53
53
|
$size = _ref2$$size === void 0 ? 'md' : _ref2$$size;
|
|
@@ -174,6 +174,7 @@ function AvatarWithPopover(_ref4) {
|
|
|
174
174
|
arrow: true,
|
|
175
175
|
trackAriaExpanded: true,
|
|
176
176
|
placement: "top",
|
|
177
|
+
scrollLock: false,
|
|
177
178
|
beforeShow: beforeShow,
|
|
178
179
|
beforeHide: beforeHide,
|
|
179
180
|
afterHide: afterHide,
|
|
@@ -236,6 +237,7 @@ export function FoldedAvatarStack(_ref5) {
|
|
|
236
237
|
arrow: true,
|
|
237
238
|
trackAriaExpanded: true,
|
|
238
239
|
placement: "top",
|
|
240
|
+
scrollLock: false,
|
|
239
241
|
beforeShow: beforeShow,
|
|
240
242
|
beforeHide: beforeHide,
|
|
241
243
|
afterHide: afterHide,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AvatarStack.js","names":["Building","People","useId","React","forwardRef","useMemo","useState","Avatar","Button","ContactItem","Link","Modal","OverlayTrigger","Popover","Typography","useI18nContext","mergeRefs","colorsOrder","foldedItemsCap","restCountThreshold","visibleItemsCap","StyledAvatar","StyledContactItem","StyledContactItems","StyledFoldedPopoverContent","StyledModalBody","StyledViewAllWrapper","StyledWrapper","useAvatarPopover","OVERLAY_WRAPPER_SELECTOR","FOCUSABLE_SELECTOR","POPOVER_TRIGGER","POPOVER_SHOW_KEYS","POPOVER_HIDE_KEYS","overlay","target","getOverflowValues","items","foldedItems","restCountLabel","isViewAllNeeded","visibleItems","length","slice","restItemsCount","concat","getIcon","type","size","createElement","getContactIcon","getAvatarIcon","avatarSize","getColorOrder","avatarItems","reduce","_ref","item","map","color","imageUrl","inactive","set","id","currentColorIndex","indexOf","nextColorIndex","Map","AvatarStackContactItem","_ref2","initials","name","linkUrl","description","disabled","icon","key","Title","href","Description","AvatarContent","_ref3","props","_objectWithoutProperties","_excluded","avatarIcon","Portrait","_extends","Icon","Label","AvatarWithPopover","_ref4","colors","_useAvatarPopover","focusableSelector","overlayWrapperSelector","triggerRef","popoverContentRef","beforeShow","beforeHide","afterHide","trigger","showKeys","hideKeys","restoreFocusOnHide","shrinkOverlay","arrow","trackAriaExpanded","placement","Content","ref","role","$color","get","tabIndex","FoldedAvatarStack","_ref5","onClickViewAll","title","viewMoreTriggerRef","I18n","restAvatarId","_useAvatarPopover2","onClick","variant","t","ViewAllModal","_ref6","isOpen","onClose","labelId","text","open","Header","Heading","Footer","FooterButtons","defaultInitials","defaultGetImageUrl","getTransformedItems","_ref7","getInitials","getImageUrl","_objectSpread","MODAL_CLOSE_FOCUS_DELAY_MS","_AvatarStack","_ref8","_items","_ref8$size","_ref8$getInitials","_ref8$getImageUrl","_excluded2","_useState","_useState2","_slicedToArray","isModalOpen","setIsModalOpen","useRef","wasModalOpenRef","useEffect","current","setTimeout","_viewMoreTriggerRef$c","focus","clearTimeout","_useMemo","visibleItemsColors","undefined","AvatarStack","displayName"],"sources":["../../src/AvatarStack/AvatarStack.tsx"],"sourcesContent":["import { Building, People } from '@procore/core-icons'\nimport { useId } from '@react-aria/utils'\nimport React, { forwardRef, useMemo, useState } from 'react'\nimport { Avatar } from '../Avatar'\nimport { Button } from '../Button'\nimport { ContactItem } from '../ContactItem'\nimport { Link } from '../Link'\nimport { Modal } from '../Modal'\nimport { OverlayTrigger } from '../OverlayTrigger'\nimport { Popover } from '../Popover'\nimport { Typography } from '../Typography'\nimport { useI18nContext } from '../_hooks/I18n'\nimport type { TriggerVariant } from '../_hooks/Trigger'\nimport type { Color } from '../_styles/colors'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport {\n colorsOrder,\n foldedItemsCap,\n restCountThreshold,\n visibleItemsCap,\n} from './AvatarStack.constants'\nimport {\n StyledAvatar,\n StyledContactItem,\n StyledContactItems,\n StyledFoldedPopoverContent,\n StyledModalBody,\n StyledViewAllWrapper,\n StyledWrapper,\n} from './AvatarStack.styles'\nimport type {\n AvatarStackItem,\n AvatarStackItemId,\n AvatarStackItemType,\n AvatarStackProps,\n AvatarStackSize,\n FoldedAvatarStackProps,\n ViewAllModalProps,\n} from './AvatarStack.types'\nimport { useAvatarPopover } from './useAvatarPopover'\n\nconst OVERLAY_WRAPPER_SELECTOR =\n '[data-qa=\"core-overlay-trigger-overlay-wrapper\"]'\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nconst POPOVER_TRIGGER = ['hover', 'focus'] as TriggerVariant[]\n\nconst POPOVER_SHOW_KEYS = ['Enter', ' ']\n\nconst POPOVER_HIDE_KEYS = {\n overlay: ['Escape', 'Esc'],\n target: ['Escape', 'Esc'],\n}\n\nexport function getOverflowValues<Item extends AvatarStackItem>(items: Item[]) {\n let foldedItems: Item[] = []\n let restCountLabel: string | null = null\n let isViewAllNeeded = false\n\n const visibleItems =\n items.length > visibleItemsCap ? items.slice(0, visibleItemsCap - 1) : items\n const restItemsCount = items.length - visibleItems.length\n\n if (restItemsCount > 0) {\n foldedItems = items.slice(\n visibleItems.length,\n visibleItems.length + foldedItemsCap\n )\n\n restCountLabel =\n restItemsCount > restCountThreshold\n ? `${restCountThreshold}+`\n : `+${restItemsCount}`\n\n isViewAllNeeded = restItemsCount > foldedItemsCap\n }\n\n return {\n visibleItems,\n foldedItems,\n restCountLabel,\n isViewAllNeeded,\n }\n}\n\nexport function getIcon(type: AvatarStackItemType, size: 'md' | 'sm') {\n switch (type) {\n case 'company':\n return <Building size={size} />\n\n case 'group':\n return <People size={size} />\n\n case 'user':\n default:\n return null\n }\n}\n\nfunction getContactIcon(type: AvatarStackItemType) {\n return getIcon(type, 'md')\n}\n\nexport function getAvatarIcon(\n type: AvatarStackItemType,\n size: AvatarStackSize\n) {\n const avatarSize = size === 'lg' ? 'md' : 'sm'\n return getIcon(type, avatarSize)\n}\n\nexport function getColorOrder(avatarItems: AvatarStackItem[]) {\n return avatarItems.reduce(\n ({ map, color }, item) => {\n if (item.imageUrl) {\n return {\n map,\n color,\n }\n }\n\n if (item.inactive) {\n map.set(item.id, 'gray70')\n\n return {\n map,\n color,\n }\n }\n\n map.set(item.id, color)\n\n const currentColorIndex = colorsOrder.indexOf(color)\n const nextColorIndex = (currentColorIndex + 1) % colorsOrder.length\n return {\n map,\n color: item.imageUrl ? color : colorsOrder[nextColorIndex],\n }\n },\n {\n map: new Map<AvatarStackItemId, Color>(),\n color: colorsOrder[0],\n }\n ).map\n}\n\nexport function AvatarStackContactItem({\n id,\n type,\n imageUrl,\n initials,\n inactive,\n name,\n linkUrl,\n description,\n}: AvatarStackItem) {\n return (\n <StyledContactItem\n disabled={inactive}\n icon={getContactIcon(type)}\n imageUrl={imageUrl}\n initials={initials}\n key={id}\n >\n <ContactItem.Title>\n {!inactive && linkUrl ? <Link href={linkUrl}>{name}</Link> : name}\n </ContactItem.Title>\n <ContactItem.Description>\n {type === 'group' ? (\n <Typography color=\"gray15\">{description}</Typography>\n ) : (\n description\n )}\n </ContactItem.Description>\n </StyledContactItem>\n )\n}\n\nexport function AvatarContent({\n imageUrl,\n initials,\n type,\n size,\n ...props\n}: {\n imageUrl?: AvatarStackItem['imageUrl']\n initials: AvatarStackItem['initials']\n type: AvatarStackItem['type']\n size: AvatarStackSize\n}) {\n const avatarIcon = getAvatarIcon(type, size)\n\n if (imageUrl) {\n return <Avatar.Portrait {...props} imageUrl={imageUrl} />\n }\n\n if (avatarIcon) {\n return <Avatar.Icon {...props} icon={avatarIcon} />\n }\n\n if (initials) {\n return <Avatar.Label {...props}>{initials}</Avatar.Label>\n }\n\n return null\n}\n\nfunction AvatarWithPopover<Item extends AvatarStackItem>({\n item,\n size,\n colors,\n}: {\n item: Item\n size: AvatarStackSize\n colors: Map<AvatarStackItemId, Color>\n}) {\n const { triggerRef, popoverContentRef, beforeShow, beforeHide, afterHide } =\n useAvatarPopover({\n focusableSelector: FOCUSABLE_SELECTOR,\n overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR,\n })\n\n return (\n <OverlayTrigger\n key={item.id}\n trigger={POPOVER_TRIGGER}\n showKeys={POPOVER_SHOW_KEYS}\n hideKeys={POPOVER_HIDE_KEYS}\n restoreFocusOnHide={false}\n shrinkOverlay\n arrow\n trackAriaExpanded\n placement=\"top\"\n beforeShow={beforeShow}\n beforeHide={beforeHide}\n afterHide={afterHide}\n overlay={\n <Popover.Content ref={popoverContentRef} placement=\"top\">\n <AvatarStackContactItem\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n </Popover.Content>\n }\n >\n <StyledAvatar\n ref={triggerRef}\n role=\"button\"\n $color={colors.get(item.id) as Color}\n aria-label={`${item.name}, ${item.description}`}\n disabled={item.inactive}\n {...(item.inactive ? { tabIndex: 0 } : {})}\n size={size}\n >\n <AvatarContent\n imageUrl={item.imageUrl}\n initials={item.initials}\n type={item.type}\n size={size}\n />\n </StyledAvatar>\n </OverlayTrigger>\n )\n}\n\nexport function FoldedAvatarStack<Item extends AvatarStackItem>({\n items,\n onClickViewAll,\n size,\n restCountLabel,\n isViewAllNeeded,\n title,\n viewMoreTriggerRef,\n}: FoldedAvatarStackProps<Item>) {\n const I18n = useI18nContext()\n const restAvatarId = useId()\n const { triggerRef, popoverContentRef, beforeShow, beforeHide, afterHide } =\n useAvatarPopover({\n focusableSelector: FOCUSABLE_SELECTOR,\n overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR,\n })\n\n return (\n <OverlayTrigger\n aria-labelledby={restAvatarId}\n trigger={POPOVER_TRIGGER}\n showKeys={POPOVER_SHOW_KEYS}\n hideKeys={POPOVER_HIDE_KEYS}\n restoreFocusOnHide={false}\n shrinkOverlay\n arrow\n trackAriaExpanded\n placement=\"top\"\n beforeShow={beforeShow}\n beforeHide={beforeHide}\n afterHide={afterHide}\n overlay={\n <Popover.Content ref={popoverContentRef} placement=\"top\">\n <StyledFoldedPopoverContent>\n <StyledContactItems>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledContactItems>\n {isViewAllNeeded && (\n <StyledViewAllWrapper>\n <Button\n data-qa=\"core-avatar-stack-view-all-modal-trigger\"\n onClick={onClickViewAll}\n size=\"sm\"\n variant=\"secondary\"\n >\n {I18n.t('core.avatarStack.viewAll')}\n </Button>\n </StyledViewAllWrapper>\n )}\n </StyledFoldedPopoverContent>\n </Popover.Content>\n }\n >\n <StyledAvatar\n ref={\n viewMoreTriggerRef\n ? mergeRefs(triggerRef, viewMoreTriggerRef)\n : triggerRef\n }\n role=\"button\"\n tabIndex={0}\n id={restAvatarId}\n aria-label={`${restCountLabel}, ${title}`}\n data-qa=\"core-avatar-stack-folded-avatars-popover-trigger\"\n size={size}\n $color=\"gray85\"\n >\n <Avatar.Label aria-hidden>\n <Typography color=\"black\">{restCountLabel}</Typography>\n </Avatar.Label>\n </StyledAvatar>\n </OverlayTrigger>\n )\n}\n\nexport function ViewAllModal<Item extends AvatarStackItem>({\n isOpen,\n onClose,\n title,\n items,\n}: ViewAllModalProps<Item>) {\n const I18n = useI18nContext()\n const labelId = useId()\n const text = `${title} (${items.length})`\n\n return (\n <Modal\n role=\"dialog\"\n aria-labelledby={labelId}\n open={isOpen}\n onClose={onClose}\n >\n <Modal.Header onClose={onClose}>\n <Modal.Heading id={labelId}>{text}</Modal.Heading>\n </Modal.Header>\n <StyledModalBody>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledModalBody>\n <Modal.Footer>\n <Modal.FooterButtons>\n <Button onClick={onClose}>{I18n.t('core.avatarStack.close')}</Button>\n </Modal.FooterButtons>\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport function defaultInitials<Item extends AvatarStackItem>(item: Item) {\n return item.initials as string\n}\n\nexport function defaultGetImageUrl<Item extends AvatarStackItem>(item: Item) {\n return item.imageUrl as string\n}\n\nexport function getTransformedItems<Item extends AvatarStackItem>({\n items,\n getInitials,\n getImageUrl,\n}: {\n items: Item[]\n getInitials: AvatarStackProps<Item>['getInitials']\n getImageUrl: AvatarStackProps<Item>['getImageUrl']\n}) {\n return items.map((item) => ({\n ...item,\n initials: getInitials!(item),\n imageUrl: getImageUrl!(item),\n }))\n}\n\nconst MODAL_CLOSE_FOCUS_DELAY_MS = 350\n\nconst _AvatarStack = <Item extends AvatarStackItem>(\n {\n items: _items,\n title,\n size = 'lg',\n getInitials = defaultInitials,\n getImageUrl = defaultGetImageUrl,\n onClickViewAll,\n ...props\n }: AvatarStackProps<Item>,\n ref: React.ForwardedRef<HTMLDivElement>\n) => {\n const [isModalOpen, setIsModalOpen] = useState(false)\n const viewMoreTriggerRef = React.useRef<HTMLDivElement>(null)\n const wasModalOpenRef = React.useRef(false)\n\n React.useEffect(() => {\n if (wasModalOpenRef.current && !isModalOpen) {\n const id = setTimeout(() => {\n viewMoreTriggerRef.current?.focus()\n }, MODAL_CLOSE_FOCUS_DELAY_MS)\n wasModalOpenRef.current = false\n return () => clearTimeout(id)\n }\n wasModalOpenRef.current = isModalOpen\n }, [isModalOpen])\n\n const items = useMemo(\n () =>\n getTransformedItems({\n items: _items,\n getInitials,\n getImageUrl,\n }),\n [_items]\n )\n\n const { visibleItems, foldedItems, restCountLabel, isViewAllNeeded } =\n useMemo(() => getOverflowValues(items), [items])\n\n const visibleItemsColors = useMemo(\n () => getColorOrder(visibleItems),\n [visibleItems]\n )\n\n return (\n <div ref={ref} role=\"group\" aria-label={title} {...props}>\n {isViewAllNeeded && !onClickViewAll && (\n <ViewAllModal\n isOpen={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n title={title}\n items={items}\n />\n )}\n <StyledWrapper>\n {visibleItems.map((item) => {\n return (\n <AvatarWithPopover\n colors={visibleItemsColors}\n item={item}\n key={`${item.name}_${item.id}`}\n size={size}\n />\n )\n })}\n {foldedItems.length > 0 && (\n <FoldedAvatarStack\n restCountLabel={restCountLabel as string}\n isViewAllNeeded={isViewAllNeeded}\n items={foldedItems}\n onClickViewAll={onClickViewAll || (() => setIsModalOpen(true))}\n size={size}\n title={title}\n viewMoreTriggerRef={\n !onClickViewAll ? viewMoreTriggerRef : undefined\n }\n />\n )}\n </StyledWrapper>\n </div>\n )\n}\n\n/**\n\n We use avatars to visually represent our users, places, and things in the app.\n These can be in the form of rich media or representative illustrations.\n\n @since 10.19.0\n\n @see [Storybook](https://procore.github.io/core/latest/?path=/story/demos-avatarstack--demo)\n\n @see [Design Guidelines](https://design.procore.com/avatar-stack)\n */\nexport const AvatarStack = forwardRef(_AvatarStack) as <\n Item extends AvatarStackItem\n>(\n props: AvatarStackProps<Item> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof _AvatarStack>\n\n// @ts-ignore\nAvatarStack.displayName = 'AvatarStack'\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"AvatarStack.js","names":["Building","People","useId","React","forwardRef","useMemo","useState","Avatar","Button","ContactItem","Link","Modal","OverlayTrigger","Popover","Typography","useI18nContext","mergeRefs","colorsOrder","foldedItemsCap","restCountThreshold","visibleItemsCap","StyledAvatar","StyledContactItem","StyledContactItems","StyledFoldedPopoverContent","StyledModalBody","StyledViewAllWrapper","StyledWrapper","useAvatarPopover","OVERLAY_WRAPPER_SELECTOR","FOCUSABLE_SELECTOR","POPOVER_TRIGGER","POPOVER_SHOW_KEYS","POPOVER_HIDE_KEYS","overlay","target","getOverflowValues","items","foldedItems","restCountLabel","isViewAllNeeded","visibleItems","length","slice","restItemsCount","concat","getIcon","type","size","createElement","getContactIcon","getAvatarIcon","avatarSize","getColorOrder","avatarItems","reduce","_ref","item","map","color","imageUrl","inactive","set","id","currentColorIndex","indexOf","nextColorIndex","Map","AvatarStackContactItem","_ref2","initials","name","linkUrl","description","disabled","icon","key","Title","href","Description","AvatarContent","_ref3","props","_objectWithoutProperties","_excluded","avatarIcon","Portrait","_extends","Icon","Label","AvatarWithPopover","_ref4","colors","_useAvatarPopover","focusableSelector","overlayWrapperSelector","triggerRef","popoverContentRef","beforeShow","beforeHide","afterHide","trigger","showKeys","hideKeys","restoreFocusOnHide","shrinkOverlay","arrow","trackAriaExpanded","placement","scrollLock","Content","ref","role","$color","get","tabIndex","FoldedAvatarStack","_ref5","onClickViewAll","title","viewMoreTriggerRef","I18n","restAvatarId","_useAvatarPopover2","onClick","variant","t","ViewAllModal","_ref6","isOpen","onClose","labelId","text","open","Header","Heading","Footer","FooterButtons","defaultInitials","defaultGetImageUrl","getTransformedItems","_ref7","getInitials","getImageUrl","_objectSpread","MODAL_CLOSE_FOCUS_DELAY_MS","_AvatarStack","_ref8","_items","_ref8$size","_ref8$getInitials","_ref8$getImageUrl","_excluded2","_useState","_useState2","_slicedToArray","isModalOpen","setIsModalOpen","useRef","wasModalOpenRef","useEffect","current","setTimeout","_viewMoreTriggerRef$c","focus","clearTimeout","_useMemo","visibleItemsColors","undefined","AvatarStack","displayName"],"sources":["../../src/AvatarStack/AvatarStack.tsx"],"sourcesContent":["import { Building, People } from '@procore/core-icons'\nimport { useId } from '@react-aria/utils'\nimport React, { forwardRef, useMemo, useState } from 'react'\nimport { Avatar } from '../Avatar'\nimport { Button } from '../Button'\nimport { ContactItem } from '../ContactItem'\nimport { Link } from '../Link'\nimport { Modal } from '../Modal'\nimport { OverlayTrigger } from '../OverlayTrigger'\nimport { Popover } from '../Popover'\nimport { Typography } from '../Typography'\nimport { useI18nContext } from '../_hooks/I18n'\nimport type { TriggerVariant } from '../_hooks/Trigger'\nimport type { Color } from '../_styles/colors'\nimport { mergeRefs } from '../_utils/mergeRefs'\nimport {\n colorsOrder,\n foldedItemsCap,\n restCountThreshold,\n visibleItemsCap,\n} from './AvatarStack.constants'\nimport {\n StyledAvatar,\n StyledContactItem,\n StyledContactItems,\n StyledFoldedPopoverContent,\n StyledModalBody,\n StyledViewAllWrapper,\n StyledWrapper,\n} from './AvatarStack.styles'\nimport type {\n AvatarStackItem,\n AvatarStackItemId,\n AvatarStackItemType,\n AvatarStackProps,\n AvatarStackSize,\n FoldedAvatarStackProps,\n ViewAllModalProps,\n} from './AvatarStack.types'\nimport { useAvatarPopover } from './useAvatarPopover'\n\nconst OVERLAY_WRAPPER_SELECTOR =\n '[data-qa=\"core-overlay-trigger-overlay-wrapper\"]'\n\nconst FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\n\nconst POPOVER_TRIGGER = ['hover', 'focus'] as TriggerVariant[]\n\nconst POPOVER_SHOW_KEYS = ['Enter', ' ']\n\nconst POPOVER_HIDE_KEYS = {\n overlay: ['Escape', 'Esc'],\n target: ['Escape', 'Esc'],\n}\n\nexport function getOverflowValues<Item extends AvatarStackItem>(items: Item[]) {\n let foldedItems: Item[] = []\n let restCountLabel: string | null = null\n let isViewAllNeeded = false\n\n const visibleItems =\n items.length > visibleItemsCap ? items.slice(0, visibleItemsCap - 1) : items\n const restItemsCount = items.length - visibleItems.length\n\n if (restItemsCount > 0) {\n foldedItems = items.slice(\n visibleItems.length,\n visibleItems.length + foldedItemsCap\n )\n\n restCountLabel =\n restItemsCount > restCountThreshold\n ? `${restCountThreshold}+`\n : `+${restItemsCount}`\n\n isViewAllNeeded = restItemsCount > foldedItemsCap\n }\n\n return {\n visibleItems,\n foldedItems,\n restCountLabel,\n isViewAllNeeded,\n }\n}\n\nexport function getIcon(type: AvatarStackItemType, size: 'md' | 'sm') {\n switch (type) {\n case 'company':\n return <Building size={size} />\n\n case 'group':\n return <People size={size} />\n\n case 'user':\n default:\n return null\n }\n}\n\nfunction getContactIcon(type: AvatarStackItemType) {\n return getIcon(type, 'md')\n}\n\nexport function getAvatarIcon(\n type: AvatarStackItemType,\n size: AvatarStackSize\n) {\n const avatarSize = size === 'lg' ? 'md' : 'sm'\n return getIcon(type, avatarSize)\n}\n\nexport function getColorOrder(avatarItems: AvatarStackItem[]) {\n return avatarItems.reduce(\n ({ map, color }, item) => {\n if (item.imageUrl) {\n return {\n map,\n color,\n }\n }\n\n if (item.inactive) {\n map.set(item.id, 'gray70')\n\n return {\n map,\n color,\n }\n }\n\n map.set(item.id, color)\n\n const currentColorIndex = colorsOrder.indexOf(color)\n const nextColorIndex = (currentColorIndex + 1) % colorsOrder.length\n return {\n map,\n color: item.imageUrl ? color : colorsOrder[nextColorIndex],\n }\n },\n {\n map: new Map<AvatarStackItemId, Color>(),\n color: colorsOrder[0],\n }\n ).map\n}\n\nexport function AvatarStackContactItem({\n id,\n type,\n imageUrl,\n initials,\n inactive,\n name,\n linkUrl,\n description,\n}: AvatarStackItem) {\n return (\n <StyledContactItem\n disabled={inactive}\n icon={getContactIcon(type)}\n imageUrl={imageUrl}\n initials={initials}\n key={id}\n >\n <ContactItem.Title>\n {!inactive && linkUrl ? <Link href={linkUrl}>{name}</Link> : name}\n </ContactItem.Title>\n <ContactItem.Description>\n {type === 'group' ? (\n <Typography color=\"gray15\">{description}</Typography>\n ) : (\n description\n )}\n </ContactItem.Description>\n </StyledContactItem>\n )\n}\n\nexport function AvatarContent({\n imageUrl,\n initials,\n type,\n size,\n ...props\n}: {\n imageUrl?: AvatarStackItem['imageUrl']\n initials: AvatarStackItem['initials']\n type: AvatarStackItem['type']\n size: AvatarStackSize\n}) {\n const avatarIcon = getAvatarIcon(type, size)\n\n if (imageUrl) {\n return <Avatar.Portrait {...props} imageUrl={imageUrl} />\n }\n\n if (avatarIcon) {\n return <Avatar.Icon {...props} icon={avatarIcon} />\n }\n\n if (initials) {\n return <Avatar.Label {...props}>{initials}</Avatar.Label>\n }\n\n return null\n}\n\nfunction AvatarWithPopover<Item extends AvatarStackItem>({\n item,\n size,\n colors,\n}: {\n item: Item\n size: AvatarStackSize\n colors: Map<AvatarStackItemId, Color>\n}) {\n const { triggerRef, popoverContentRef, beforeShow, beforeHide, afterHide } =\n useAvatarPopover({\n focusableSelector: FOCUSABLE_SELECTOR,\n overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR,\n })\n\n return (\n <OverlayTrigger\n key={item.id}\n trigger={POPOVER_TRIGGER}\n showKeys={POPOVER_SHOW_KEYS}\n hideKeys={POPOVER_HIDE_KEYS}\n restoreFocusOnHide={false}\n shrinkOverlay\n arrow\n trackAriaExpanded\n placement=\"top\"\n scrollLock={false}\n beforeShow={beforeShow}\n beforeHide={beforeHide}\n afterHide={afterHide}\n overlay={\n <Popover.Content ref={popoverContentRef} placement=\"top\">\n <AvatarStackContactItem\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n </Popover.Content>\n }\n >\n <StyledAvatar\n ref={triggerRef}\n role=\"button\"\n $color={colors.get(item.id) as Color}\n aria-label={`${item.name}, ${item.description}`}\n disabled={item.inactive}\n {...(item.inactive ? { tabIndex: 0 } : {})}\n size={size}\n >\n <AvatarContent\n imageUrl={item.imageUrl}\n initials={item.initials}\n type={item.type}\n size={size}\n />\n </StyledAvatar>\n </OverlayTrigger>\n )\n}\n\nexport function FoldedAvatarStack<Item extends AvatarStackItem>({\n items,\n onClickViewAll,\n size,\n restCountLabel,\n isViewAllNeeded,\n title,\n viewMoreTriggerRef,\n}: FoldedAvatarStackProps<Item>) {\n const I18n = useI18nContext()\n const restAvatarId = useId()\n const { triggerRef, popoverContentRef, beforeShow, beforeHide, afterHide } =\n useAvatarPopover({\n focusableSelector: FOCUSABLE_SELECTOR,\n overlayWrapperSelector: OVERLAY_WRAPPER_SELECTOR,\n })\n\n return (\n <OverlayTrigger\n aria-labelledby={restAvatarId}\n trigger={POPOVER_TRIGGER}\n showKeys={POPOVER_SHOW_KEYS}\n hideKeys={POPOVER_HIDE_KEYS}\n restoreFocusOnHide={false}\n shrinkOverlay\n arrow\n trackAriaExpanded\n placement=\"top\"\n scrollLock={false}\n beforeShow={beforeShow}\n beforeHide={beforeHide}\n afterHide={afterHide}\n overlay={\n <Popover.Content ref={popoverContentRef} placement=\"top\">\n <StyledFoldedPopoverContent>\n <StyledContactItems>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledContactItems>\n {isViewAllNeeded && (\n <StyledViewAllWrapper>\n <Button\n data-qa=\"core-avatar-stack-view-all-modal-trigger\"\n onClick={onClickViewAll}\n size=\"sm\"\n variant=\"secondary\"\n >\n {I18n.t('core.avatarStack.viewAll')}\n </Button>\n </StyledViewAllWrapper>\n )}\n </StyledFoldedPopoverContent>\n </Popover.Content>\n }\n >\n <StyledAvatar\n ref={\n viewMoreTriggerRef\n ? mergeRefs(triggerRef, viewMoreTriggerRef)\n : triggerRef\n }\n role=\"button\"\n tabIndex={0}\n id={restAvatarId}\n aria-label={`${restCountLabel}, ${title}`}\n data-qa=\"core-avatar-stack-folded-avatars-popover-trigger\"\n size={size}\n $color=\"gray85\"\n >\n <Avatar.Label aria-hidden>\n <Typography color=\"black\">{restCountLabel}</Typography>\n </Avatar.Label>\n </StyledAvatar>\n </OverlayTrigger>\n )\n}\n\nexport function ViewAllModal<Item extends AvatarStackItem>({\n isOpen,\n onClose,\n title,\n items,\n}: ViewAllModalProps<Item>) {\n const I18n = useI18nContext()\n const labelId = useId()\n const text = `${title} (${items.length})`\n\n return (\n <Modal\n role=\"dialog\"\n aria-labelledby={labelId}\n open={isOpen}\n onClose={onClose}\n >\n <Modal.Header onClose={onClose}>\n <Modal.Heading id={labelId}>{text}</Modal.Heading>\n </Modal.Header>\n <StyledModalBody>\n {items.map((item) => (\n <AvatarStackContactItem\n key={item.id}\n id={item.id}\n type={item.type}\n imageUrl={item.imageUrl}\n initials={item.initials}\n inactive={item.inactive}\n name={item.name}\n linkUrl={item.linkUrl}\n description={item.description}\n />\n ))}\n </StyledModalBody>\n <Modal.Footer>\n <Modal.FooterButtons>\n <Button onClick={onClose}>{I18n.t('core.avatarStack.close')}</Button>\n </Modal.FooterButtons>\n </Modal.Footer>\n </Modal>\n )\n}\n\nexport function defaultInitials<Item extends AvatarStackItem>(item: Item) {\n return item.initials as string\n}\n\nexport function defaultGetImageUrl<Item extends AvatarStackItem>(item: Item) {\n return item.imageUrl as string\n}\n\nexport function getTransformedItems<Item extends AvatarStackItem>({\n items,\n getInitials,\n getImageUrl,\n}: {\n items: Item[]\n getInitials: AvatarStackProps<Item>['getInitials']\n getImageUrl: AvatarStackProps<Item>['getImageUrl']\n}) {\n return items.map((item) => ({\n ...item,\n initials: getInitials!(item),\n imageUrl: getImageUrl!(item),\n }))\n}\n\nconst MODAL_CLOSE_FOCUS_DELAY_MS = 350\n\nconst _AvatarStack = <Item extends AvatarStackItem>(\n {\n items: _items,\n title,\n size = 'lg',\n getInitials = defaultInitials,\n getImageUrl = defaultGetImageUrl,\n onClickViewAll,\n ...props\n }: AvatarStackProps<Item>,\n ref: React.ForwardedRef<HTMLDivElement>\n) => {\n const [isModalOpen, setIsModalOpen] = useState(false)\n const viewMoreTriggerRef = React.useRef<HTMLDivElement>(null)\n const wasModalOpenRef = React.useRef(false)\n\n React.useEffect(() => {\n if (wasModalOpenRef.current && !isModalOpen) {\n const id = setTimeout(() => {\n viewMoreTriggerRef.current?.focus()\n }, MODAL_CLOSE_FOCUS_DELAY_MS)\n wasModalOpenRef.current = false\n return () => clearTimeout(id)\n }\n wasModalOpenRef.current = isModalOpen\n }, [isModalOpen])\n\n const items = useMemo(\n () =>\n getTransformedItems({\n items: _items,\n getInitials,\n getImageUrl,\n }),\n [_items]\n )\n\n const { visibleItems, foldedItems, restCountLabel, isViewAllNeeded } =\n useMemo(() => getOverflowValues(items), [items])\n\n const visibleItemsColors = useMemo(\n () => getColorOrder(visibleItems),\n [visibleItems]\n )\n\n return (\n <div ref={ref} role=\"group\" aria-label={title} {...props}>\n {isViewAllNeeded && !onClickViewAll && (\n <ViewAllModal\n isOpen={isModalOpen}\n onClose={() => setIsModalOpen(false)}\n title={title}\n items={items}\n />\n )}\n <StyledWrapper>\n {visibleItems.map((item) => {\n return (\n <AvatarWithPopover\n colors={visibleItemsColors}\n item={item}\n key={`${item.name}_${item.id}`}\n size={size}\n />\n )\n })}\n {foldedItems.length > 0 && (\n <FoldedAvatarStack\n restCountLabel={restCountLabel as string}\n isViewAllNeeded={isViewAllNeeded}\n items={foldedItems}\n onClickViewAll={onClickViewAll || (() => setIsModalOpen(true))}\n size={size}\n title={title}\n viewMoreTriggerRef={\n !onClickViewAll ? viewMoreTriggerRef : undefined\n }\n />\n )}\n </StyledWrapper>\n </div>\n )\n}\n\n/**\n\n We use avatars to visually represent our users, places, and things in the app.\n These can be in the form of rich media or representative illustrations.\n\n @since 10.19.0\n\n @see [Storybook](https://procore.github.io/core/latest/?path=/story/demos-avatarstack--demo)\n\n @see [Design Guidelines](https://design.procore.com/avatar-stack)\n */\nexport const AvatarStack = forwardRef(_AvatarStack) as <\n Item extends AvatarStackItem\n>(\n props: AvatarStackProps<Item> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof _AvatarStack>\n\n// @ts-ignore\nAvatarStack.displayName = 'AvatarStack'\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,SAASA,QAAQ,EAAEC,MAAM,QAAQ,qBAAqB;AACtD,SAASC,KAAK,QAAQ,mBAAmB;AACzC,OAAOC,KAAK,IAAIC,UAAU,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,OAAO;AAC5D,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,MAAM,QAAQ,WAAW;AAClC,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,SAASC,IAAI,QAAQ,SAAS;AAC9B,SAASC,KAAK,QAAQ,UAAU;AAChC,SAASC,cAAc,QAAQ,mBAAmB;AAClD,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,UAAU,QAAQ,eAAe;AAC1C,SAASC,cAAc,QAAQ,gBAAgB;AAG/C,SAASC,SAAS,QAAQ,qBAAqB;AAC/C,SACEC,WAAW,EACXC,cAAc,EACdC,kBAAkB,EAClBC,eAAe,QACV,yBAAyB;AAChC,SACEC,YAAY,EACZC,iBAAiB,EACjBC,kBAAkB,EAClBC,0BAA0B,EAC1BC,eAAe,EACfC,oBAAoB,EACpBC,aAAa,QACR,sBAAsB;AAU7B,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,IAAMC,wBAAwB,GAC5B,kDAAkD;AAEpD,IAAMC,kBAAkB,GACtB,kEAAkE;AAEpE,IAAMC,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,CAAqB;AAE9D,IAAMC,iBAAiB,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC;AAExC,IAAMC,iBAAiB,GAAG;EACxBC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;EAC1BC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK;AAC1B,CAAC;AAED,OAAO,SAASC,iBAAiBA,CAA+BC,KAAa,EAAE;EAC7E,IAAIC,WAAmB,GAAG,EAAE;EAC5B,IAAIC,cAA6B,GAAG,IAAI;EACxC,IAAIC,eAAe,GAAG,KAAK;EAE3B,IAAMC,YAAY,GAChBJ,KAAK,CAACK,MAAM,GAAGtB,eAAe,GAAGiB,KAAK,CAACM,KAAK,CAAC,CAAC,EAAEvB,eAAe,GAAG,CAAC,CAAC,GAAGiB,KAAK;EAC9E,IAAMO,cAAc,GAAGP,KAAK,CAACK,MAAM,GAAGD,YAAY,CAACC,MAAM;EAEzD,IAAIE,cAAc,GAAG,CAAC,EAAE;IACtBN,WAAW,GAAGD,KAAK,CAACM,KAAK,CACvBF,YAAY,CAACC,MAAM,EACnBD,YAAY,CAACC,MAAM,GAAGxB,cACxB,CAAC;IAEDqB,cAAc,GACZK,cAAc,GAAGzB,kBAAkB,MAAA0B,MAAA,CAC5B1B,kBAAkB,aAAA0B,MAAA,CACjBD,cAAc,CAAE;IAE1BJ,eAAe,GAAGI,cAAc,GAAG1B,cAAc;EACnD;EAEA,OAAO;IACLuB,YAAY,EAAZA,YAAY;IACZH,WAAW,EAAXA,WAAW;IACXC,cAAc,EAAdA,cAAc;IACdC,eAAe,EAAfA;EACF,CAAC;AACH;AAEA,OAAO,SAASM,OAAOA,CAACC,IAAyB,EAAEC,IAAiB,EAAE;EACpE,QAAQD,IAAI;IACV,KAAK,SAAS;MACZ,oBAAO5C,KAAA,CAAA8C,aAAA,CAACjD,QAAQ;QAACgD,IAAI,EAAEA;MAAK,CAAE,CAAC;IAEjC,KAAK,OAAO;MACV,oBAAO7C,KAAA,CAAA8C,aAAA,CAAChD,MAAM;QAAC+C,IAAI,EAAEA;MAAK,CAAE,CAAC;IAE/B,KAAK,MAAM;IACX;MACE,OAAO,IAAI;EACf;AACF;AAEA,SAASE,cAAcA,CAACH,IAAyB,EAAE;EACjD,OAAOD,OAAO,CAACC,IAAI,EAAE,IAAI,CAAC;AAC5B;AAEA,OAAO,SAASI,aAAaA,CAC3BJ,IAAyB,EACzBC,IAAqB,EACrB;EACA,IAAMI,UAAU,GAAGJ,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI;EAC9C,OAAOF,OAAO,CAACC,IAAI,EAAEK,UAAU,CAAC;AAClC;AAEA,OAAO,SAASC,aAAaA,CAACC,WAA8B,EAAE;EAC5D,OAAOA,WAAW,CAACC,MAAM,CACvB,UAAAC,IAAA,EAAiBC,IAAI,EAAK;IAAA,IAAvBC,GAAG,GAAAF,IAAA,CAAHE,GAAG;MAAEC,KAAK,GAAAH,IAAA,CAALG,KAAK;IACX,IAAIF,IAAI,CAACG,QAAQ,EAAE;MACjB,OAAO;QACLF,GAAG,EAAHA,GAAG;QACHC,KAAK,EAALA;MACF,CAAC;IACH;IAEA,IAAIF,IAAI,CAACI,QAAQ,EAAE;MACjBH,GAAG,CAACI,GAAG,CAACL,IAAI,CAACM,EAAE,EAAE,QAAQ,CAAC;MAE1B,OAAO;QACLL,GAAG,EAAHA,GAAG;QACHC,KAAK,EAALA;MACF,CAAC;IACH;IAEAD,GAAG,CAACI,GAAG,CAACL,IAAI,CAACM,EAAE,EAAEJ,KAAK,CAAC;IAEvB,IAAMK,iBAAiB,GAAG/C,WAAW,CAACgD,OAAO,CAACN,KAAK,CAAC;IACpD,IAAMO,cAAc,GAAG,CAACF,iBAAiB,GAAG,CAAC,IAAI/C,WAAW,CAACyB,MAAM;IACnE,OAAO;MACLgB,GAAG,EAAHA,GAAG;MACHC,KAAK,EAAEF,IAAI,CAACG,QAAQ,GAAGD,KAAK,GAAG1C,WAAW,CAACiD,cAAc;IAC3D,CAAC;EACH,CAAC,EACD;IACER,GAAG,EAAE,IAAIS,GAAG,CAA2B,CAAC;IACxCR,KAAK,EAAE1C,WAAW,CAAC,CAAC;EACtB,CACF,CAAC,CAACyC,GAAG;AACP;AAEA,OAAO,SAASU,sBAAsBA,CAAAC,KAAA,EASlB;EAAA,IARlBN,EAAE,GAAAM,KAAA,CAAFN,EAAE;IACFhB,IAAI,GAAAsB,KAAA,CAAJtB,IAAI;IACJa,QAAQ,GAAAS,KAAA,CAART,QAAQ;IACRU,QAAQ,GAAAD,KAAA,CAARC,QAAQ;IACRT,QAAQ,GAAAQ,KAAA,CAARR,QAAQ;IACRU,IAAI,GAAAF,KAAA,CAAJE,IAAI;IACJC,OAAO,GAAAH,KAAA,CAAPG,OAAO;IACPC,WAAW,GAAAJ,KAAA,CAAXI,WAAW;EAEX,oBACEtE,KAAA,CAAA8C,aAAA,CAAC3B,iBAAiB;IAChBoD,QAAQ,EAAEb,QAAS;IACnBc,IAAI,EAAEzB,cAAc,CAACH,IAAI,CAAE;IAC3Ba,QAAQ,EAAEA,QAAS;IACnBU,QAAQ,EAAEA,QAAS;IACnBM,GAAG,EAAEb;EAAG,gBAER5D,KAAA,CAAA8C,aAAA,CAACxC,WAAW,CAACoE,KAAK,QACf,CAAChB,QAAQ,IAAIW,OAAO,gBAAGrE,KAAA,CAAA8C,aAAA,CAACvC,IAAI;IAACoE,IAAI,EAAEN;EAAQ,GAAED,IAAW,CAAC,GAAGA,IAC5C,CAAC,eACpBpE,KAAA,CAAA8C,aAAA,CAACxC,WAAW,CAACsE,WAAW,QACrBhC,IAAI,KAAK,OAAO,gBACf5C,KAAA,CAAA8C,aAAA,CAACnC,UAAU;IAAC6C,KAAK,EAAC;EAAQ,GAAEc,WAAwB,CAAC,GAErDA,WAEqB,CACR,CAAC;AAExB;AAEA,OAAO,SAASO,aAAaA,CAAAC,KAAA,EAW1B;EAAA,IAVDrB,QAAQ,GAAAqB,KAAA,CAARrB,QAAQ;IACRU,QAAQ,GAAAW,KAAA,CAARX,QAAQ;IACRvB,IAAI,GAAAkC,KAAA,CAAJlC,IAAI;IACJC,IAAI,GAAAiC,KAAA,CAAJjC,IAAI;IACDkC,KAAK,GAAAC,wBAAA,CAAAF,KAAA,EAAAG,SAAA;EAOR,IAAMC,UAAU,GAAGlC,aAAa,CAACJ,IAAI,EAAEC,IAAI,CAAC;EAE5C,IAAIY,QAAQ,EAAE;IACZ,oBAAOzD,KAAA,CAAA8C,aAAA,CAAC1C,MAAM,CAAC+E,QAAQ,EAAAC,QAAA,KAAKL,KAAK;MAAEtB,QAAQ,EAAEA;IAAS,EAAE,CAAC;EAC3D;EAEA,IAAIyB,UAAU,EAAE;IACd,oBAAOlF,KAAA,CAAA8C,aAAA,CAAC1C,MAAM,CAACiF,IAAI,EAAAD,QAAA,KAAKL,KAAK;MAAEP,IAAI,EAAEU;IAAW,EAAE,CAAC;EACrD;EAEA,IAAIf,QAAQ,EAAE;IACZ,oBAAOnE,KAAA,CAAA8C,aAAA,CAAC1C,MAAM,CAACkF,KAAK,EAAKP,KAAK,EAAGZ,QAAuB,CAAC;EAC3D;EAEA,OAAO,IAAI;AACb;AAEA,SAASoB,iBAAiBA,CAAAC,KAAA,EAQvB;EAAA,IAPDlC,IAAI,GAAAkC,KAAA,CAAJlC,IAAI;IACJT,IAAI,GAAA2C,KAAA,CAAJ3C,IAAI;IACJ4C,MAAM,GAAAD,KAAA,CAANC,MAAM;EAMN,IAAAC,iBAAA,GACEjE,gBAAgB,CAAC;MACfkE,iBAAiB,EAAEhE,kBAAkB;MACrCiE,sBAAsB,EAAElE;IAC1B,CAAC,CAAC;IAJImE,UAAU,GAAAH,iBAAA,CAAVG,UAAU;IAAEC,iBAAiB,GAAAJ,iBAAA,CAAjBI,iBAAiB;IAAEC,UAAU,GAAAL,iBAAA,CAAVK,UAAU;IAAEC,UAAU,GAAAN,iBAAA,CAAVM,UAAU;IAAEC,SAAS,GAAAP,iBAAA,CAATO,SAAS;EAMxE,oBACEjG,KAAA,CAAA8C,aAAA,CAACrC,cAAc;IACbgE,GAAG,EAAEnB,IAAI,CAACM,EAAG;IACbsC,OAAO,EAAEtE,eAAgB;IACzBuE,QAAQ,EAAEtE,iBAAkB;IAC5BuE,QAAQ,EAAEtE,iBAAkB;IAC5BuE,kBAAkB,EAAE,KAAM;IAC1BC,aAAa;IACbC,KAAK;IACLC,iBAAiB;IACjBC,SAAS,EAAC,KAAK;IACfC,UAAU,EAAE,KAAM;IAClBX,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBlE,OAAO,eACL/B,KAAA,CAAA8C,aAAA,CAACpC,OAAO,CAACiG,OAAO;MAACC,GAAG,EAAEd,iBAAkB;MAACW,SAAS,EAAC;IAAK,gBACtDzG,KAAA,CAAA8C,aAAA,CAACmB,sBAAsB;MACrBL,EAAE,EAAEN,IAAI,CAACM,EAAG;MACZhB,IAAI,EAAEU,IAAI,CAACV,IAAK;MAChBa,QAAQ,EAAEH,IAAI,CAACG,QAAS;MACxBU,QAAQ,EAAEb,IAAI,CAACa,QAAS;MACxBT,QAAQ,EAAEJ,IAAI,CAACI,QAAS;MACxBU,IAAI,EAAEd,IAAI,CAACc,IAAK;MAChBC,OAAO,EAAEf,IAAI,CAACe,OAAQ;MACtBC,WAAW,EAAEhB,IAAI,CAACgB;IAAY,CAC/B,CACc;EAClB,gBAEDtE,KAAA,CAAA8C,aAAA,CAAC5B,YAAY,EAAAkE,QAAA;IACXwB,GAAG,EAAEf,UAAW;IAChBgB,IAAI,EAAC,QAAQ;IACbC,MAAM,EAAErB,MAAM,CAACsB,GAAG,CAACzD,IAAI,CAACM,EAAE,CAAW;IACrC,iBAAAlB,MAAA,CAAeY,IAAI,CAACc,IAAI,QAAA1B,MAAA,CAAKY,IAAI,CAACgB,WAAW,CAAG;IAChDC,QAAQ,EAAEjB,IAAI,CAACI;EAAS,GACnBJ,IAAI,CAACI,QAAQ,GAAG;IAAEsD,QAAQ,EAAE;EAAE,CAAC,GAAG,CAAC,CAAC;IACzCnE,IAAI,EAAEA;EAAK,iBAEX7C,KAAA,CAAA8C,aAAA,CAAC+B,aAAa;IACZpB,QAAQ,EAAEH,IAAI,CAACG,QAAS;IACxBU,QAAQ,EAAEb,IAAI,CAACa,QAAS;IACxBvB,IAAI,EAAEU,IAAI,CAACV,IAAK;IAChBC,IAAI,EAAEA;EAAK,CACZ,CACW,CACA,CAAC;AAErB;AAEA,OAAO,SAASoE,iBAAiBA,CAAAC,KAAA,EAQA;EAAA,IAP/BhF,KAAK,GAAAgF,KAAA,CAALhF,KAAK;IACLiF,cAAc,GAAAD,KAAA,CAAdC,cAAc;IACdtE,IAAI,GAAAqE,KAAA,CAAJrE,IAAI;IACJT,cAAc,GAAA8E,KAAA,CAAd9E,cAAc;IACdC,eAAe,GAAA6E,KAAA,CAAf7E,eAAe;IACf+E,KAAK,GAAAF,KAAA,CAALE,KAAK;IACLC,kBAAkB,GAAAH,KAAA,CAAlBG,kBAAkB;EAElB,IAAMC,IAAI,GAAG1G,cAAc,CAAC,CAAC;EAC7B,IAAM2G,YAAY,GAAGxH,KAAK,CAAC,CAAC;EAC5B,IAAAyH,kBAAA,GACE/F,gBAAgB,CAAC;MACfkE,iBAAiB,EAAEhE,kBAAkB;MACrCiE,sBAAsB,EAAElE;IAC1B,CAAC,CAAC;IAJImE,UAAU,GAAA2B,kBAAA,CAAV3B,UAAU;IAAEC,iBAAiB,GAAA0B,kBAAA,CAAjB1B,iBAAiB;IAAEC,UAAU,GAAAyB,kBAAA,CAAVzB,UAAU;IAAEC,UAAU,GAAAwB,kBAAA,CAAVxB,UAAU;IAAEC,SAAS,GAAAuB,kBAAA,CAATvB,SAAS;EAMxE,oBACEjG,KAAA,CAAA8C,aAAA,CAACrC,cAAc;IACb,mBAAiB8G,YAAa;IAC9BrB,OAAO,EAAEtE,eAAgB;IACzBuE,QAAQ,EAAEtE,iBAAkB;IAC5BuE,QAAQ,EAAEtE,iBAAkB;IAC5BuE,kBAAkB,EAAE,KAAM;IAC1BC,aAAa;IACbC,KAAK;IACLC,iBAAiB;IACjBC,SAAS,EAAC,KAAK;IACfC,UAAU,EAAE,KAAM;IAClBX,UAAU,EAAEA,UAAW;IACvBC,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBlE,OAAO,eACL/B,KAAA,CAAA8C,aAAA,CAACpC,OAAO,CAACiG,OAAO;MAACC,GAAG,EAAEd,iBAAkB;MAACW,SAAS,EAAC;IAAK,gBACtDzG,KAAA,CAAA8C,aAAA,CAACzB,0BAA0B,qBACzBrB,KAAA,CAAA8C,aAAA,CAAC1B,kBAAkB,QAChBc,KAAK,CAACqB,GAAG,CAAC,UAACD,IAAI;MAAA,oBACdtD,KAAA,CAAA8C,aAAA,CAACmB,sBAAsB;QACrBQ,GAAG,EAAEnB,IAAI,CAACM,EAAG;QACbA,EAAE,EAAEN,IAAI,CAACM,EAAG;QACZhB,IAAI,EAAEU,IAAI,CAACV,IAAK;QAChBa,QAAQ,EAAEH,IAAI,CAACG,QAAS;QACxBU,QAAQ,EAAEb,IAAI,CAACa,QAAS;QACxBT,QAAQ,EAAEJ,IAAI,CAACI,QAAS;QACxBU,IAAI,EAAEd,IAAI,CAACc,IAAK;QAChBC,OAAO,EAAEf,IAAI,CAACe,OAAQ;QACtBC,WAAW,EAAEhB,IAAI,CAACgB;MAAY,CAC/B,CAAC;IAAA,CACH,CACiB,CAAC,EACpBjC,eAAe,iBACdrC,KAAA,CAAA8C,aAAA,CAACvB,oBAAoB,qBACnBvB,KAAA,CAAA8C,aAAA,CAACzC,MAAM;MACL,WAAQ,0CAA0C;MAClDoH,OAAO,EAAEN,cAAe;MACxBtE,IAAI,EAAC,IAAI;MACT6E,OAAO,EAAC;IAAW,GAElBJ,IAAI,CAACK,CAAC,CAAC,0BAA0B,CAC5B,CACY,CAEE,CACb;EAClB,gBAED3H,KAAA,CAAA8C,aAAA,CAAC5B,YAAY;IACX0F,GAAG,EACDS,kBAAkB,GACdxG,SAAS,CAACgF,UAAU,EAAEwB,kBAAkB,CAAC,GACzCxB,UACL;IACDgB,IAAI,EAAC,QAAQ;IACbG,QAAQ,EAAE,CAAE;IACZpD,EAAE,EAAE2D,YAAa;IACjB,iBAAA7E,MAAA,CAAeN,cAAc,QAAAM,MAAA,CAAK0E,KAAK,CAAG;IAC1C,WAAQ,kDAAkD;IAC1DvE,IAAI,EAAEA,IAAK;IACXiE,MAAM,EAAC;EAAQ,gBAEf9G,KAAA,CAAA8C,aAAA,CAAC1C,MAAM,CAACkF,KAAK;IAAC;EAAW,gBACvBtF,KAAA,CAAA8C,aAAA,CAACnC,UAAU;IAAC6C,KAAK,EAAC;EAAO,GAAEpB,cAA2B,CAC1C,CACF,CACA,CAAC;AAErB;AAEA,OAAO,SAASwF,YAAYA,CAAAC,KAAA,EAKA;EAAA,IAJ1BC,MAAM,GAAAD,KAAA,CAANC,MAAM;IACNC,OAAO,GAAAF,KAAA,CAAPE,OAAO;IACPX,KAAK,GAAAS,KAAA,CAALT,KAAK;IACLlF,KAAK,GAAA2F,KAAA,CAAL3F,KAAK;EAEL,IAAMoF,IAAI,GAAG1G,cAAc,CAAC,CAAC;EAC7B,IAAMoH,OAAO,GAAGjI,KAAK,CAAC,CAAC;EACvB,IAAMkI,IAAI,MAAAvF,MAAA,CAAM0E,KAAK,QAAA1E,MAAA,CAAKR,KAAK,CAACK,MAAM,MAAG;EAEzC,oBACEvC,KAAA,CAAA8C,aAAA,CAACtC,KAAK;IACJqG,IAAI,EAAC,QAAQ;IACb,mBAAiBmB,OAAQ;IACzBE,IAAI,EAAEJ,MAAO;IACbC,OAAO,EAAEA;EAAQ,gBAEjB/H,KAAA,CAAA8C,aAAA,CAACtC,KAAK,CAAC2H,MAAM;IAACJ,OAAO,EAAEA;EAAQ,gBAC7B/H,KAAA,CAAA8C,aAAA,CAACtC,KAAK,CAAC4H,OAAO;IAACxE,EAAE,EAAEoE;EAAQ,GAAEC,IAAoB,CACrC,CAAC,eACfjI,KAAA,CAAA8C,aAAA,CAACxB,eAAe,QACbY,KAAK,CAACqB,GAAG,CAAC,UAACD,IAAI;IAAA,oBACdtD,KAAA,CAAA8C,aAAA,CAACmB,sBAAsB;MACrBQ,GAAG,EAAEnB,IAAI,CAACM,EAAG;MACbA,EAAE,EAAEN,IAAI,CAACM,EAAG;MACZhB,IAAI,EAAEU,IAAI,CAACV,IAAK;MAChBa,QAAQ,EAAEH,IAAI,CAACG,QAAS;MACxBU,QAAQ,EAAEb,IAAI,CAACa,QAAS;MACxBT,QAAQ,EAAEJ,IAAI,CAACI,QAAS;MACxBU,IAAI,EAAEd,IAAI,CAACc,IAAK;MAChBC,OAAO,EAAEf,IAAI,CAACe,OAAQ;MACtBC,WAAW,EAAEhB,IAAI,CAACgB;IAAY,CAC/B,CAAC;EAAA,CACH,CACc,CAAC,eAClBtE,KAAA,CAAA8C,aAAA,CAACtC,KAAK,CAAC6H,MAAM,qBACXrI,KAAA,CAAA8C,aAAA,CAACtC,KAAK,CAAC8H,aAAa,qBAClBtI,KAAA,CAAA8C,aAAA,CAACzC,MAAM;IAACoH,OAAO,EAAEM;EAAQ,GAAET,IAAI,CAACK,CAAC,CAAC,wBAAwB,CAAU,CACjD,CACT,CACT,CAAC;AAEZ;AAEA,OAAO,SAASY,eAAeA,CAA+BjF,IAAU,EAAE;EACxE,OAAOA,IAAI,CAACa,QAAQ;AACtB;AAEA,OAAO,SAASqE,kBAAkBA,CAA+BlF,IAAU,EAAE;EAC3E,OAAOA,IAAI,CAACG,QAAQ;AACtB;AAEA,OAAO,SAASgF,mBAAmBA,CAAAC,KAAA,EAQhC;EAAA,IAPDxG,KAAK,GAAAwG,KAAA,CAALxG,KAAK;IACLyG,WAAW,GAAAD,KAAA,CAAXC,WAAW;IACXC,WAAW,GAAAF,KAAA,CAAXE,WAAW;EAMX,OAAO1G,KAAK,CAACqB,GAAG,CAAC,UAACD,IAAI;IAAA,OAAAuF,aAAA,CAAAA,aAAA,KACjBvF,IAAI;MACPa,QAAQ,EAAEwE,WAAW,CAAErF,IAAI,CAAC;MAC5BG,QAAQ,EAAEmF,WAAW,CAAEtF,IAAI;IAAC;EAAA,CAC5B,CAAC;AACL;AAEA,IAAMwF,0BAA0B,GAAG,GAAG;AAEtC,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAAC,KAAA,EAUhBpC,GAAuC,EACpC;EAAA,IATMqC,MAAM,GAAAD,KAAA,CAAb9G,KAAK;IACLkF,KAAK,GAAA4B,KAAA,CAAL5B,KAAK;IAAA8B,UAAA,GAAAF,KAAA,CACLnG,IAAI;IAAJA,IAAI,GAAAqG,UAAA,cAAG,IAAI,GAAAA,UAAA;IAAAC,iBAAA,GAAAH,KAAA,CACXL,WAAW;IAAXA,WAAW,GAAAQ,iBAAA,cAAGZ,eAAe,GAAAY,iBAAA;IAAAC,iBAAA,GAAAJ,KAAA,CAC7BJ,WAAW;IAAXA,WAAW,GAAAQ,iBAAA,cAAGZ,kBAAkB,GAAAY,iBAAA;IAChCjC,cAAc,GAAA6B,KAAA,CAAd7B,cAAc;IACXpC,KAAK,GAAAC,wBAAA,CAAAgE,KAAA,EAAAK,UAAA;EAIV,IAAAC,SAAA,GAAsCnJ,QAAQ,CAAC,KAAK,CAAC;IAAAoJ,UAAA,GAAAC,cAAA,CAAAF,SAAA;IAA9CG,WAAW,GAAAF,UAAA;IAAEG,cAAc,GAAAH,UAAA;EAClC,IAAMlC,kBAAkB,GAAGrH,KAAK,CAAC2J,MAAM,CAAiB,IAAI,CAAC;EAC7D,IAAMC,eAAe,GAAG5J,KAAK,CAAC2J,MAAM,CAAC,KAAK,CAAC;EAE3C3J,KAAK,CAAC6J,SAAS,CAAC,YAAM;IACpB,IAAID,eAAe,CAACE,OAAO,IAAI,CAACL,WAAW,EAAE;MAC3C,IAAM7F,EAAE,GAAGmG,UAAU,CAAC,YAAM;QAAA,IAAAC,qBAAA;QAC1B,CAAAA,qBAAA,GAAA3C,kBAAkB,CAACyC,OAAO,cAAAE,qBAAA,eAA1BA,qBAAA,CAA4BC,KAAK,CAAC,CAAC;MACrC,CAAC,EAAEnB,0BAA0B,CAAC;MAC9Bc,eAAe,CAACE,OAAO,GAAG,KAAK;MAC/B,OAAO;QAAA,OAAMI,YAAY,CAACtG,EAAE,CAAC;MAAA;IAC/B;IACAgG,eAAe,CAACE,OAAO,GAAGL,WAAW;EACvC,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,IAAMvH,KAAK,GAAGhC,OAAO,CACnB;IAAA,OACEuI,mBAAmB,CAAC;MAClBvG,KAAK,EAAE+G,MAAM;MACbN,WAAW,EAAXA,WAAW;MACXC,WAAW,EAAXA;IACF,CAAC,CAAC;EAAA,GACJ,CAACK,MAAM,CACT,CAAC;EAED,IAAAkB,QAAA,GACEjK,OAAO,CAAC;MAAA,OAAM+B,iBAAiB,CAACC,KAAK,CAAC;IAAA,GAAE,CAACA,KAAK,CAAC,CAAC;IAD1CI,YAAY,GAAA6H,QAAA,CAAZ7H,YAAY;IAAEH,WAAW,GAAAgI,QAAA,CAAXhI,WAAW;IAAEC,cAAc,GAAA+H,QAAA,CAAd/H,cAAc;IAAEC,eAAe,GAAA8H,QAAA,CAAf9H,eAAe;EAGlE,IAAM+H,kBAAkB,GAAGlK,OAAO,CAChC;IAAA,OAAMgD,aAAa,CAACZ,YAAY,CAAC;EAAA,GACjC,CAACA,YAAY,CACf,CAAC;EAED,oBACEtC,KAAA,CAAA8C,aAAA,QAAAsC,QAAA;IAAKwB,GAAG,EAAEA,GAAI;IAACC,IAAI,EAAC,OAAO;IAAC,cAAYO;EAAM,GAAKrC,KAAK,GACrD1C,eAAe,IAAI,CAAC8E,cAAc,iBACjCnH,KAAA,CAAA8C,aAAA,CAAC8E,YAAY;IACXE,MAAM,EAAE2B,WAAY;IACpB1B,OAAO,EAAE,SAATA,OAAOA,CAAA;MAAA,OAAQ2B,cAAc,CAAC,KAAK,CAAC;IAAA,CAAC;IACrCtC,KAAK,EAAEA,KAAM;IACblF,KAAK,EAAEA;EAAM,CACd,CACF,eACDlC,KAAA,CAAA8C,aAAA,CAACtB,aAAa,QACXc,YAAY,CAACiB,GAAG,CAAC,UAACD,IAAI,EAAK;IAC1B,oBACEtD,KAAA,CAAA8C,aAAA,CAACyC,iBAAiB;MAChBE,MAAM,EAAE2E,kBAAmB;MAC3B9G,IAAI,EAAEA,IAAK;MACXmB,GAAG,KAAA/B,MAAA,CAAKY,IAAI,CAACc,IAAI,OAAA1B,MAAA,CAAIY,IAAI,CAACM,EAAE,CAAG;MAC/Bf,IAAI,EAAEA;IAAK,CACZ,CAAC;EAEN,CAAC,CAAC,EACDV,WAAW,CAACI,MAAM,GAAG,CAAC,iBACrBvC,KAAA,CAAA8C,aAAA,CAACmE,iBAAiB;IAChB7E,cAAc,EAAEA,cAAyB;IACzCC,eAAe,EAAEA,eAAgB;IACjCH,KAAK,EAAEC,WAAY;IACnBgF,cAAc,EAAEA,cAAc,IAAK;MAAA,OAAMuC,cAAc,CAAC,IAAI,CAAC;IAAA,CAAE;IAC/D7G,IAAI,EAAEA,IAAK;IACXuE,KAAK,EAAEA,KAAM;IACbC,kBAAkB,EAChB,CAACF,cAAc,GAAGE,kBAAkB,GAAGgD;EACxC,CACF,CAEU,CACZ,CAAC;AAEV,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,WAAW,gBAAGrK,UAAU,CAAC8I,YAAY,CAId;;AAEpC;AACAuB,WAAW,CAACC,WAAW,GAAG,aAAa","ignoreList":[]}
|
|
@@ -8,36 +8,36 @@ import { spacing } from '../_styles/spacing';
|
|
|
8
8
|
var maxModalWidth = 528;
|
|
9
9
|
var StyledBaseAvatar = /*#__PURE__*/styled(Avatar).withConfig({
|
|
10
10
|
displayName: "StyledBaseAvatar",
|
|
11
|
-
componentId: "core-
|
|
11
|
+
componentId: "core-12_54_0__sc-ft72hu-0"
|
|
12
12
|
})(["border-color:", ";border-style:solid;border-width:1px;&:hover{z-index:1;}"], colors.white);
|
|
13
13
|
export var StyledAvatar = /*#__PURE__*/styled(StyledBaseAvatar).withConfig({
|
|
14
14
|
displayName: "StyledAvatar",
|
|
15
|
-
componentId: "core-
|
|
15
|
+
componentId: "core-12_54_0__sc-ft72hu-1"
|
|
16
16
|
})(["background-color:", ";"], function (props) {
|
|
17
17
|
return colors[props.$color];
|
|
18
18
|
});
|
|
19
19
|
export var StyledFoldedPopoverContent = /*#__PURE__*/styled.div.withConfig({
|
|
20
20
|
displayName: "StyledFoldedPopoverContent",
|
|
21
|
-
componentId: "core-
|
|
21
|
+
componentId: "core-12_54_0__sc-ft72hu-2"
|
|
22
22
|
})(["display:flex;flex-direction:column;max-height:var(", ",100vh);"], OVERLAY_AVAILABLE_HEIGHT_VAR);
|
|
23
23
|
export var StyledContactItems = /*#__PURE__*/styled.div.withConfig({
|
|
24
24
|
displayName: "StyledContactItems",
|
|
25
|
-
componentId: "core-
|
|
25
|
+
componentId: "core-12_54_0__sc-ft72hu-3"
|
|
26
26
|
})(["padding-top:", "px;padding-left:", "px;flex:1 1 auto;min-height:0;overflow-y:auto;"], spacing.sm, spacing.xs);
|
|
27
27
|
export var StyledWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
28
28
|
displayName: "StyledWrapper",
|
|
29
|
-
componentId: "core-
|
|
29
|
+
componentId: "core-12_54_0__sc-ft72hu-4"
|
|
30
30
|
})(["display:flex;", " + ", "{margin-left:-", "px;}"], StyledAvatar, StyledAvatar, spacing.sm);
|
|
31
31
|
export var StyledViewAllWrapper = /*#__PURE__*/styled.div.withConfig({
|
|
32
32
|
displayName: "StyledViewAllWrapper",
|
|
33
|
-
componentId: "core-
|
|
33
|
+
componentId: "core-12_54_0__sc-ft72hu-5"
|
|
34
34
|
})(["display:flex;margin-left:", "px;margin-top:", "px;margin-bottom:", "px;"], spacing.md, spacing.md, spacing.md);
|
|
35
35
|
export var StyledModalBody = /*#__PURE__*/styled(Modal.Body).withConfig({
|
|
36
36
|
displayName: "StyledModalBody",
|
|
37
|
-
componentId: "core-
|
|
37
|
+
componentId: "core-12_54_0__sc-ft72hu-6"
|
|
38
38
|
})(["max-width:", "px;"], maxModalWidth);
|
|
39
39
|
export var StyledContactItem = /*#__PURE__*/styled(ContactItem).withConfig({
|
|
40
40
|
displayName: "StyledContactItem",
|
|
41
|
-
componentId: "core-
|
|
41
|
+
componentId: "core-12_54_0__sc-ft72hu-7"
|
|
42
42
|
})(["flex-shrink:0;"]);
|
|
43
43
|
//# sourceMappingURL=AvatarStack.styles.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
2
|
export var StyledBadge = /*#__PURE__*/styled.div.withConfig({
|
|
3
3
|
displayName: "StyledBadge",
|
|
4
|
-
componentId: "core-
|
|
4
|
+
componentId: "core-12_54_0__sc-rpertu-0"
|
|
5
5
|
})(["display:inline-block;position:relative;"]);
|
|
6
6
|
export var StyledBadgeLabel = /*#__PURE__*/styled.span.withConfig({
|
|
7
7
|
displayName: "StyledBadgeLabel",
|
|
8
|
-
componentId: "core-
|
|
8
|
+
componentId: "core-12_54_0__sc-rpertu-1"
|
|
9
9
|
})(["bottom:100%;position:absolute;right:0;transform:translateX(50%) translateY(50%);"]);
|
|
10
10
|
//# sourceMappingURL=Badge.styles.js.map
|
|
@@ -3,11 +3,11 @@ import { getTypographyIntent } from '../Typography';
|
|
|
3
3
|
import { colors } from '../_styles/colors';
|
|
4
4
|
export var StyledBadgeContainer = /*#__PURE__*/styled.div.withConfig({
|
|
5
5
|
displayName: "StyledBadgeContainer",
|
|
6
|
-
componentId: "core-
|
|
6
|
+
componentId: "core-12_54_0__sc-s2n9gd-0"
|
|
7
7
|
})(["display:inline-flex;position:relative;"]);
|
|
8
8
|
export var StyledBadgeContent = /*#__PURE__*/styled.div.withConfig({
|
|
9
9
|
displayName: "StyledBadgeContent",
|
|
10
|
-
componentId: "core-
|
|
10
|
+
componentId: "core-12_54_0__sc-s2n9gd-1"
|
|
11
11
|
})(["position:relative;", " ", " pointer-events:none;user-select:none;"], function (_ref) {
|
|
12
12
|
var $overlapping = _ref.$overlapping,
|
|
13
13
|
_ref$$xOffset = _ref.$xOffset,
|
|
@@ -20,13 +20,13 @@ export var StyledBadgeContent = /*#__PURE__*/styled.div.withConfig({
|
|
|
20
20
|
});
|
|
21
21
|
export var StyledBadgeDotIndicator = /*#__PURE__*/styled.div.withConfig({
|
|
22
22
|
displayName: "StyledBadgeDotIndicator",
|
|
23
|
-
componentId: "core-
|
|
23
|
+
componentId: "core-12_54_0__sc-s2n9gd-2"
|
|
24
24
|
})(["width:6px;height:6px;border-radius:50%;background-color:", ";"], colors.orange50);
|
|
25
25
|
var oneDigitStyles = "\n border-radius: 50%;\n padding: 2px;\n min-width: 21.5px;\n min-height: 21.5px;\n";
|
|
26
26
|
var multiDigitStyles = "\n border-radius: 10px;\n padding: 2px 8px;\n";
|
|
27
27
|
export var StyledBadgeCounter = /*#__PURE__*/styled.div.withConfig({
|
|
28
28
|
displayName: "StyledBadgeCounter",
|
|
29
|
-
componentId: "core-
|
|
29
|
+
componentId: "core-12_54_0__sc-s2n9gd-3"
|
|
30
30
|
})(["display:inline-flex;justify-content:center;align-items:center;color:", ";background-color:", ";", " ", ""], colors.white, colors.orange50, getTypographyIntent('small'), function (props) {
|
|
31
31
|
return props.$oneDigit ? oneDigitStyles : multiDigitStyles;
|
|
32
32
|
});
|
package/dist/Banner/Banner.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { Props } from '../_utils/types';
|
|
|
3
3
|
import type { BannerExpandableContentProps, BannerExpandActionButtonProps, BannerIconProps, BannerProps, BannerVariant } from './Banner.types';
|
|
4
4
|
export declare const ErrorBanner: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & Omit<BannerProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
5
5
|
export declare const InfoBanner: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & Omit<BannerProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
export declare const SuccessBanner: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & Omit<BannerProps, "variant"> & React.RefAttributes<HTMLDivElement>>;
|
|
6
7
|
/**
|
|
7
8
|
* @since 11.26.0
|
|
8
9
|
*/
|
package/dist/Banner/Banner.js
CHANGED
|
@@ -12,7 +12,8 @@ var _excluded = ["children", "role", "variant"],
|
|
|
12
12
|
_excluded10 = ["children"],
|
|
13
13
|
_excluded11 = ["children"],
|
|
14
14
|
_excluded12 = ["children"],
|
|
15
|
-
_excluded13 = ["children",
|
|
15
|
+
_excluded13 = ["children"],
|
|
16
|
+
_excluded14 = ["children", "variant"];
|
|
16
17
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
17
18
|
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
18
19
|
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -22,20 +23,19 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
22
23
|
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
23
24
|
function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
|
|
24
25
|
function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
|
|
25
|
-
import { Clear, EllipsisVertical, Error, Info, Warning } from '@procore/core-icons/dist';
|
|
26
|
+
import { Check, Clear, EllipsisVertical, Error, Info, Warning } from '@procore/core-icons/dist';
|
|
26
27
|
import { useId } from '@react-aria/utils';
|
|
27
28
|
import { partition } from 'ramda';
|
|
28
29
|
import React from 'react';
|
|
29
30
|
import { Button } from '../Button';
|
|
30
31
|
import { Card } from '../Card';
|
|
31
|
-
import { Flex } from '../Flex';
|
|
32
32
|
import { Menu, useMenu } from '../Menu/Menu';
|
|
33
33
|
import { OverlayTrigger } from '../OverlayTrigger';
|
|
34
34
|
import { useI18nContext } from '../_hooks/I18n';
|
|
35
35
|
import { OverflowObserver } from '../_hooks/OverflowObserver';
|
|
36
36
|
import { addSubcomponents } from '../_utils/addSubcomponents';
|
|
37
37
|
import { mergeRefs } from '../_utils/mergeRefs';
|
|
38
|
-
import { StyledAction, StyledActionsTrigger, StyledBannerContainer, StyledBody, StyledContent, StyledExpandableContent, StyledExpandableContentContainer, StyledIconContainer, StyledMiniBannerContainer, StyledTitle } from './Banner.styles';
|
|
38
|
+
import { StyledAction, StyledActionsTrigger, StyledBannerContainer, StyledBannerDismiss, StyledBannerRow, StyledBody, StyledContent, StyledExpandableContent, StyledExpandableContentContainer, StyledIconContainer, StyledMiniBannerContainer, StyledTitle } from './Banner.styles';
|
|
39
39
|
var BannerA11yContext = /*#__PURE__*/React.createContext(null);
|
|
40
40
|
var defaultIcons = {
|
|
41
41
|
error: /*#__PURE__*/React.createElement(Error, {
|
|
@@ -47,6 +47,9 @@ var defaultIcons = {
|
|
|
47
47
|
info: /*#__PURE__*/React.createElement(Info, {
|
|
48
48
|
size: "lg"
|
|
49
49
|
}),
|
|
50
|
+
success: /*#__PURE__*/React.createElement(Check, {
|
|
51
|
+
size: "lg"
|
|
52
|
+
}),
|
|
50
53
|
UNSAFE_attention_emphasized: /*#__PURE__*/React.createElement(Warning, {
|
|
51
54
|
size: "lg"
|
|
52
55
|
})
|
|
@@ -113,6 +116,7 @@ var Banner_ = /*#__PURE__*/React.forwardRef(function Banner(_ref2, ref) {
|
|
|
113
116
|
error: I18n.t('core.banner.defaultLabels.error'),
|
|
114
117
|
attention: I18n.t('core.banner.defaultLabels.attention'),
|
|
115
118
|
info: I18n.t('core.banner.defaultLabels.info'),
|
|
119
|
+
success: I18n.t('core.banner.defaultLabels.success'),
|
|
116
120
|
UNSAFE_attention_emphasized: I18n.t('core.banner.defaultLabels.unsafeAttentionEmphasized')
|
|
117
121
|
};
|
|
118
122
|
var _getBannerA11yProps = getBannerA11yProps({
|
|
@@ -139,7 +143,7 @@ var Banner_ = /*#__PURE__*/React.forwardRef(function Banner(_ref2, ref) {
|
|
|
139
143
|
gap: "lg"
|
|
140
144
|
}, !hasCustomIcon && /*#__PURE__*/React.createElement(Icon, {
|
|
141
145
|
icon: defaultIcons[variant]
|
|
142
|
-
}), content), expandableContentNodes) : /*#__PURE__*/React.createElement(
|
|
146
|
+
}), content), expandableContentNodes) : /*#__PURE__*/React.createElement(StyledBannerRow, {
|
|
143
147
|
justifyContent: "flex-start",
|
|
144
148
|
alignItems: "center",
|
|
145
149
|
gap: "lg",
|
|
@@ -281,7 +285,7 @@ var Dismiss = /*#__PURE__*/React.forwardRef(function Dismiss(_ref15, ref) {
|
|
|
281
285
|
var children = _ref15.children,
|
|
282
286
|
props = _objectWithoutProperties(_ref15, _excluded1);
|
|
283
287
|
var I18n = useI18nContext();
|
|
284
|
-
return /*#__PURE__*/React.createElement(
|
|
288
|
+
return /*#__PURE__*/React.createElement(StyledBannerDismiss, _extends({
|
|
285
289
|
"aria-label": I18n.t('core.banner.dismissAlert'),
|
|
286
290
|
ref: ref
|
|
287
291
|
}, props, {
|
|
@@ -313,13 +317,25 @@ export var InfoBanner = /*#__PURE__*/React.forwardRef(function InfoBanner(_ref17
|
|
|
313
317
|
})
|
|
314
318
|
}), children);
|
|
315
319
|
});
|
|
320
|
+
export var SuccessBanner = /*#__PURE__*/React.forwardRef(function SuccessBanner(_ref18, ref) {
|
|
321
|
+
var children = _ref18.children,
|
|
322
|
+
props = _objectWithoutProperties(_ref18, _excluded12);
|
|
323
|
+
return /*#__PURE__*/React.createElement(Banner, _extends({
|
|
324
|
+
ref: ref,
|
|
325
|
+
variant: "success"
|
|
326
|
+
}, props), /*#__PURE__*/React.createElement(Icon, {
|
|
327
|
+
icon: /*#__PURE__*/React.createElement(Check, {
|
|
328
|
+
size: "lg"
|
|
329
|
+
})
|
|
330
|
+
}), children);
|
|
331
|
+
});
|
|
316
332
|
|
|
317
333
|
/**
|
|
318
334
|
* @since 11.26.0
|
|
319
335
|
*/
|
|
320
|
-
export var AttentionBanner = /*#__PURE__*/React.forwardRef(function AttentionBanner(
|
|
321
|
-
var children =
|
|
322
|
-
props = _objectWithoutProperties(
|
|
336
|
+
export var AttentionBanner = /*#__PURE__*/React.forwardRef(function AttentionBanner(_ref19, ref) {
|
|
337
|
+
var children = _ref19.children,
|
|
338
|
+
props = _objectWithoutProperties(_ref19, _excluded13);
|
|
323
339
|
return /*#__PURE__*/React.createElement(Banner, _extends({
|
|
324
340
|
ref: ref,
|
|
325
341
|
variant: "attention"
|
|
@@ -334,11 +350,11 @@ export var AttentionBanner = /*#__PURE__*/React.forwardRef(function AttentionBan
|
|
|
334
350
|
* @deprecatedSince 11.26.0
|
|
335
351
|
*/
|
|
336
352
|
export var ActionBanner = AttentionBanner;
|
|
337
|
-
export var UNSAFE_MiniBanner = /*#__PURE__*/React.forwardRef(function MiniBanner(
|
|
338
|
-
var children =
|
|
339
|
-
|
|
340
|
-
variant =
|
|
341
|
-
props = _objectWithoutProperties(
|
|
353
|
+
export var UNSAFE_MiniBanner = /*#__PURE__*/React.forwardRef(function MiniBanner(_ref20, ref) {
|
|
354
|
+
var children = _ref20.children,
|
|
355
|
+
_ref20$variant = _ref20.variant,
|
|
356
|
+
variant = _ref20$variant === void 0 ? 'info' : _ref20$variant,
|
|
357
|
+
props = _objectWithoutProperties(_ref20, _excluded14);
|
|
342
358
|
return /*#__PURE__*/React.createElement(StyledMiniBannerContainer, _extends({
|
|
343
359
|
ref: ref,
|
|
344
360
|
variant: variant
|
|
@@ -357,6 +373,7 @@ Icon.displayName = 'Banner.Icon';
|
|
|
357
373
|
Dismiss.displayName = 'Banner.Dismiss';
|
|
358
374
|
ErrorBanner.displayName = 'ErrorBanner';
|
|
359
375
|
InfoBanner.displayName = 'InfoBanner';
|
|
376
|
+
SuccessBanner.displayName = 'SuccessBanner';
|
|
360
377
|
AttentionBanner.displayName = 'AttentionBanner';
|
|
361
378
|
ActionBanner.displayName = 'ActionBanner';
|
|
362
379
|
UNSAFE_MiniBanner.displayName = 'MiniBanner';
|