@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.
Files changed (286) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/AnchorNavigation/AnchorNavigation.styles.js +4 -4
  3. package/dist/Avatar/Avatar.styles.js +5 -5
  4. package/dist/AvatarStack/AvatarStack.js +2 -0
  5. package/dist/AvatarStack/AvatarStack.js.map +1 -1
  6. package/dist/AvatarStack/AvatarStack.styles.js +8 -8
  7. package/dist/Badge/Badge.styles.js +2 -2
  8. package/dist/BadgePill/BadgePill.styles.js +4 -4
  9. package/dist/Banner/Banner.d.ts +1 -0
  10. package/dist/Banner/Banner.js +31 -14
  11. package/dist/Banner/Banner.js.map +1 -1
  12. package/dist/Banner/Banner.styles.d.ts +10 -0
  13. package/dist/Banner/Banner.styles.js +29 -12
  14. package/dist/Banner/Banner.styles.js.map +1 -1
  15. package/dist/Banner/Banner.types.d.ts +1 -1
  16. package/dist/Banner/Banner.types.js.map +1 -1
  17. package/dist/Banner/index.d.ts +1 -1
  18. package/dist/Banner/index.js +1 -1
  19. package/dist/Banner/index.js.map +1 -1
  20. package/dist/Box/Box.styles.js +1 -1
  21. package/dist/Breadcrumbs/Breadcrumbs.styles.js +7 -6
  22. package/dist/Breadcrumbs/Breadcrumbs.styles.js.map +1 -1
  23. package/dist/Button/Button.styles.js +5 -5
  24. package/dist/Calendar/Calendar.styles.js +10 -10
  25. package/dist/Card/Card.styles.js +1 -1
  26. package/dist/Checkbox/Checkbox.styles.js +6 -6
  27. package/dist/ContactItem/ContactItem.styles.js +5 -5
  28. package/dist/Content/Content.styles.js +2 -2
  29. package/dist/DateInput/DateInput.styles.js +6 -6
  30. package/dist/DetailPage/DetailPage.styles.js +11 -9
  31. package/dist/DetailPage/DetailPage.styles.js.map +1 -1
  32. package/dist/Dropdown/Dropdown.styles.js +3 -3
  33. package/dist/DropdownFlyout/DropdownFlyout.js +8 -0
  34. package/dist/DropdownFlyout/DropdownFlyout.js.map +1 -1
  35. package/dist/DropdownFlyout/DropdownFlyout.styles.js +4 -4
  36. package/dist/Dropzone/Dropzone.js +1 -1
  37. package/dist/Dropzone/Dropzone.styles.js +9 -9
  38. package/dist/EmptyState/EmptyState.styles.js +6 -6
  39. package/dist/Field/Field.styles.js +3 -3
  40. package/dist/FileList/FileList.styles.js +3 -3
  41. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js +17 -14
  42. package/dist/FileSelect/FileExplorer/FileExplorer.styles.js.map +1 -1
  43. package/dist/FileSelect/FileExplorer/FileExplorerModal.js +4 -2
  44. package/dist/FileSelect/FileExplorer/FileExplorerModal.js.map +1 -1
  45. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js +5 -4
  46. package/dist/FileSelect/FileExplorer/FileExplorerSidebar.styles.js.map +1 -1
  47. package/dist/FileSelect/FileSelect.styles.js +2 -2
  48. package/dist/FileSelect/FileSelectDropzone/FileSelectDropzone.styles.js +3 -3
  49. package/dist/FileSelect/FileTokenList/FileTokenList.styles.js +2 -2
  50. package/dist/FileSelect/GridSource/GridSource.styles.js +6 -6
  51. package/dist/FileSelect/LocalSource/LocalSource.styles.js +6 -5
  52. package/dist/FileSelect/LocalSource/LocalSource.styles.js.map +1 -1
  53. package/dist/FileSelect/SourceItem/SourceItem.styles.js +3 -3
  54. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js +13 -11
  55. package/dist/FileSelect/ThumbnailList/ThumbnailList.styles.js.map +1 -1
  56. package/dist/FileSelect/TreeSource/TreeSource.styles.js +1 -1
  57. package/dist/FileToken/FileToken.styles.js +6 -6
  58. package/dist/FilterToken/FilterToken.styles.js +5 -5
  59. package/dist/FlexList/FlexList.styles.js +1 -1
  60. package/dist/Form/Form.styles.js +13 -13
  61. package/dist/Form/StyledFormikForm.styles.js +2 -2
  62. package/dist/GhostPlaceholder/GhostPlaceholder.styles.js +2 -2
  63. package/dist/Grid/Grid.styles.js +2 -2
  64. package/dist/GroupSelect/GroupSelect.styles.js +1 -1
  65. package/dist/Input/Input.styles.js +1 -1
  66. package/dist/Link/Link.styles.js +1 -1
  67. package/dist/ListPage/ListPage.styles.js +12 -11
  68. package/dist/ListPage/ListPage.styles.js.map +1 -1
  69. package/dist/Loader/Loader.styles.js +2 -2
  70. package/dist/MenuImperative/MenuImperative.styles.js +11 -11
  71. package/dist/Modal/Modal.js +0 -2
  72. package/dist/Modal/Modal.js.map +1 -1
  73. package/dist/Modal/Modal.styles.js +44 -32
  74. package/dist/Modal/Modal.styles.js.map +1 -1
  75. package/dist/MultiSelect/MultiSelect.styles.js +8 -8
  76. package/dist/NextMenu/NextMenu.styles.js +3 -3
  77. package/dist/NextTile/NextTile.styles.js +5 -5
  78. package/dist/Notation/Notation.js +1 -1
  79. package/dist/NumberInput/NumberInput.styles.js +7 -7
  80. package/dist/Overlay/OverlayArrow.styles.js +1 -1
  81. package/dist/OverlayTrigger/OverlayTrigger.js +12 -3
  82. package/dist/OverlayTrigger/OverlayTrigger.js.map +1 -1
  83. package/dist/OverlayTrigger/OverlayTrigger.types.d.ts +14 -0
  84. package/dist/OverlayTrigger/OverlayTrigger.types.js.map +1 -1
  85. package/dist/OverlayTrigger/a11yPresets.d.ts +19 -3
  86. package/dist/OverlayTrigger/a11yPresets.js +16 -6
  87. package/dist/OverlayTrigger/a11yPresets.js.map +1 -1
  88. package/dist/PageLayout/PageLayout.js +15 -4
  89. package/dist/PageLayout/PageLayout.js.map +1 -1
  90. package/dist/PageLayout/PageLayout.styles.js +35 -34
  91. package/dist/PageLayout/PageLayout.styles.js.map +1 -1
  92. package/dist/PageLayout/PageLayout.types.d.ts +1 -0
  93. package/dist/PageLayout/PageLayout.types.js.map +1 -1
  94. package/dist/PageLayout/PageLayout.utils.d.ts +11 -0
  95. package/dist/PageLayout/PageLayout.utils.js +45 -0
  96. package/dist/PageLayout/PageLayout.utils.js.map +1 -1
  97. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js +2 -2
  98. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.js.map +1 -1
  99. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.d.ts +5 -0
  100. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js +9 -2
  101. package/dist/PageTemplate/PageFooterTemplate/PageFooterTemplate.styles.js.map +1 -1
  102. package/dist/PageTemplate/PageHeaderTemplate/PageHeaderTemplate.styles.js +3 -3
  103. package/dist/PageTemplate/PagePaneTemplate/PagePaneTemplate.styles.js +2 -2
  104. package/dist/PageTemplate/PageTemplate/PageTemplate.styles.js +3 -3
  105. package/dist/Pagination/Pagination.styles.js +5 -5
  106. package/dist/Panel/Panel.styles.js +17 -16
  107. package/dist/Panel/Panel.styles.js.map +1 -1
  108. package/dist/Pill/Pill.styles.js +3 -3
  109. package/dist/PillSelect/PillSelect.styles.js +5 -5
  110. package/dist/Popover/Popover.js +6 -1
  111. package/dist/Popover/Popover.js.map +1 -1
  112. package/dist/Popover/Popover.styles.js +2 -2
  113. package/dist/Portal/Portal.styles.js +1 -1
  114. package/dist/ProgressBar/ProgressBar.styles.js +2 -2
  115. package/dist/RadioButton/RadioButton.styles.js +3 -3
  116. package/dist/Required/Required.styles.js +3 -3
  117. package/dist/Search/Search.styles.js +5 -5
  118. package/dist/Section/Section.styles.js +7 -7
  119. package/dist/SegmentedController/SegmentedController.styles.js +4 -4
  120. package/dist/Select/Select.js +5 -2
  121. package/dist/Select/Select.js.map +1 -1
  122. package/dist/Select/Select.styles.js +8 -8
  123. package/dist/Semantic/Semantic.styles.js +9 -9
  124. package/dist/Slider/Slider.styles.js +5 -5
  125. package/dist/Spinner/Spinner.styles.js +7 -7
  126. package/dist/SplitViewCard/SplitViewCard.styles.js +15 -13
  127. package/dist/SplitViewCard/SplitViewCard.styles.js.map +1 -1
  128. package/dist/SuperSelect/SuperSelect.js +8 -0
  129. package/dist/SuperSelect/SuperSelect.js.map +1 -1
  130. package/dist/SuperSelect/SuperSelect.presets.styles.js +1 -1
  131. package/dist/SuperSelect/SuperSelect.styles.js +40 -40
  132. package/dist/SuperSelect/useSuperSelect.js +20 -4
  133. package/dist/SuperSelect/useSuperSelect.js.map +1 -1
  134. package/dist/Switch/Switch.styles.js +4 -4
  135. package/dist/Table/Table.js +63 -2
  136. package/dist/Table/Table.js.map +1 -1
  137. package/dist/Table/Table.styles.js +31 -30
  138. package/dist/Table/Table.styles.js.map +1 -1
  139. package/dist/TableShelf/TableShelf.styles.js +5 -5
  140. package/dist/Tabs/Tabs.js +11 -3
  141. package/dist/Tabs/Tabs.js.map +1 -1
  142. package/dist/Tabs/Tabs.styles.js +16 -16
  143. package/dist/Tearsheet/Tearsheet.js +4 -3
  144. package/dist/Tearsheet/Tearsheet.js.map +1 -1
  145. package/dist/Tearsheet/Tearsheet.styles.js +5 -5
  146. package/dist/TextArea/TextArea.styles.js +1 -1
  147. package/dist/TextEditorOutput/TextEditorOutput.styles.js +1 -1
  148. package/dist/Thumbnail/Thumbnail.styles.d.ts +1 -0
  149. package/dist/Thumbnail/Thumbnail.styles.js +22 -22
  150. package/dist/Thumbnail/Thumbnail.styles.js.map +1 -1
  151. package/dist/ThumbnailGrid/ThumbnailGrid.styles.js +7 -7
  152. package/dist/TieredSelect/TieredSelect.styles.js +9 -9
  153. package/dist/Tile/Tile.styles.js +8 -8
  154. package/dist/Title/Title.styles.js +11 -9
  155. package/dist/Title/Title.styles.js.map +1 -1
  156. package/dist/Toast/Toast.styles.js +3 -3
  157. package/dist/ToggleButton/ToggleButton.styles.js +1 -1
  158. package/dist/Token/Token.styles.js +5 -5
  159. package/dist/ToolHeader/ToolHeader.styles.js +15 -10
  160. package/dist/ToolHeader/ToolHeader.styles.js.map +1 -1
  161. package/dist/ToolLandingPage/ToolLandingPage.styles.js +3 -3
  162. package/dist/Tooltip/Tooltip.js +7 -1
  163. package/dist/Tooltip/Tooltip.js.map +1 -1
  164. package/dist/Tooltip/Tooltip.styles.js +3 -3
  165. package/dist/Tree/Tree.js +1 -1
  166. package/dist/Tree/Tree.styles.js +10 -10
  167. package/dist/Typeahead/Typeahead.styles.js +4 -4
  168. package/dist/Typography/Typography.styles.js +1 -1
  169. package/dist/Typography/Typography.table.story.js +2 -2
  170. package/dist/_hooks/I18n.d.ts +33 -13
  171. package/dist/_hooks/I18n.js +2 -0
  172. package/dist/_hooks/I18n.js.map +1 -1
  173. package/dist/_locales/de-DE.json +1 -0
  174. package/dist/_locales/en-AU.json +1 -0
  175. package/dist/_locales/en-CA.json +1 -0
  176. package/dist/_locales/en-GB.json +1 -0
  177. package/dist/_locales/en.json +3 -1
  178. package/dist/_locales/es-ES.json +1 -0
  179. package/dist/_locales/es.json +1 -0
  180. package/dist/_locales/fr-CA.json +1 -0
  181. package/dist/_locales/fr-FR.json +1 -0
  182. package/dist/_locales/is-IS.json +1 -0
  183. package/dist/_locales/it-IT.json +1 -0
  184. package/dist/_locales/ja-JP.json +1 -0
  185. package/dist/_locales/nb-NO.json +2 -1
  186. package/dist/_locales/pl-PL.json +1 -0
  187. package/dist/_locales/pseudo.json +3 -1
  188. package/dist/_locales/pt-BR.json +1 -0
  189. package/dist/_locales/pt-PT.json +3 -2
  190. package/dist/_locales/th-TH.json +1 -0
  191. package/dist/_locales/zh-SG.json +1 -0
  192. package/dist/_locales/zh-TW.json +2 -1
  193. package/dist/_storyHelpers_/components/Deprecation.styles.js +1 -1
  194. package/dist/_storyHelpers_/components/StoryGrid.js +5 -4
  195. package/dist/_storyHelpers_/components/StoryGrid.js.map +1 -1
  196. package/dist/_storyHelpers_/highZoom.d.ts +68 -0
  197. package/dist/_storyHelpers_/highZoom.js +72 -0
  198. package/dist/_storyHelpers_/highZoom.js.map +1 -0
  199. package/dist/_typedoc/AnchorNavigation/AnchorNavigation.types.json +7 -7
  200. package/dist/_typedoc/Avatar/Avatar.types.json +20 -20
  201. package/dist/_typedoc/AvatarStack/AvatarStack.types.json +25 -25
  202. package/dist/_typedoc/Badge/Badge.types.json +6 -6
  203. package/dist/_typedoc/Banner/Banner.types.json +18 -18
  204. package/dist/_typedoc/Box/Box.types.json +68 -68
  205. package/dist/_typedoc/Breadcrumbs/Breadcrumbs.types.json +12 -12
  206. package/dist/_typedoc/Button/Button.types.json +14 -14
  207. package/dist/_typedoc/Calendar/Calendar.types.json +80 -80
  208. package/dist/_typedoc/Card/Card.types.json +6 -6
  209. package/dist/_typedoc/Checkbox/Checkbox.types.json +8 -8
  210. package/dist/_typedoc/ContactItem/ContactItem.types.json +9 -9
  211. package/dist/_typedoc/DateInput/DateInput.types.json +35 -35
  212. package/dist/_typedoc/DateSelect/DateSelect.types.json +17 -17
  213. package/dist/_typedoc/DetailPage/DetailPage.types.json +5 -5
  214. package/dist/_typedoc/DetailPageTemplate/DetailPageTemplate.types.json +3 -3
  215. package/dist/_typedoc/Dropdown/Dropdown.types.json +38 -38
  216. package/dist/_typedoc/DropdownFlyout/DropdownFlyout.types.json +37 -37
  217. package/dist/_typedoc/Dropzone/Dropzone.types.json +50 -50
  218. package/dist/_typedoc/EmptyState/EmptyState.types.json +18 -18
  219. package/dist/_typedoc/FileList/FileList.types.json +9 -9
  220. package/dist/_typedoc/FileSelect/FileSelect.types.json +27 -27
  221. package/dist/_typedoc/FileSelect/GridSource/GridSource.types.json +20 -20
  222. package/dist/_typedoc/FileSelect/LocalSource/LocalSource.types.json +14 -14
  223. package/dist/_typedoc/FileSelect/TreeSource/TreeSource.types.json +17 -17
  224. package/dist/_typedoc/Flex/Flex.types.json +27 -27
  225. package/dist/_typedoc/FlexList/FlexList.types.json +30 -30
  226. package/dist/_typedoc/Form/Form.types.json +783 -783
  227. package/dist/_typedoc/GhostPlaceholder/GhostPlaceholder.types.json +12 -12
  228. package/dist/_typedoc/Grid/Grid.types.json +8 -8
  229. package/dist/_typedoc/GroupSelect/GroupSelect.types.json +81 -81
  230. package/dist/_typedoc/Input/Input.types.json +2 -2
  231. package/dist/_typedoc/Link/Link.types.json +1 -1
  232. package/dist/_typedoc/ListPage/ListPage.types.json +13 -13
  233. package/dist/_typedoc/Menu/Menu.types.json +62 -62
  234. package/dist/_typedoc/MenuImperative/MenuImperative.types.json +90 -90
  235. package/dist/_typedoc/Modal/Modal.types.json +48 -48
  236. package/dist/_typedoc/MultiSelect/MultiSelect.types.json +34 -34
  237. package/dist/_typedoc/NextTile/NextTile.types.json +33 -33
  238. package/dist/_typedoc/Notation/Notation.types.json +4 -4
  239. package/dist/_typedoc/NumberInput/NumberInput.types.json +52 -52
  240. package/dist/_typedoc/OverlayTrigger/OverlayTrigger.types.json +44 -33
  241. package/dist/_typedoc/PageLayout/PageLayout.types.json +42 -42
  242. package/dist/_typedoc/Pagination/Pagination.types.json +7 -7
  243. package/dist/_typedoc/Panel/Panel.types.json +28 -28
  244. package/dist/_typedoc/Pill/Pill.types.json +2 -2
  245. package/dist/_typedoc/PillSelect/PillSelect.types.json +49 -49
  246. package/dist/_typedoc/Popover/Popover.types.json +15 -15
  247. package/dist/_typedoc/ProgressBar/ProgressBar.types.json +7 -7
  248. package/dist/_typedoc/RadioButton/RadioButton.types.json +6 -6
  249. package/dist/_typedoc/Required/Required.types.json +5 -5
  250. package/dist/_typedoc/Search/Search.types.json +18 -18
  251. package/dist/_typedoc/Section/Section.types.json +15 -15
  252. package/dist/_typedoc/SegmentedController/SegmentedController.types.json +21 -21
  253. package/dist/_typedoc/Select/Select.types.json +67 -67
  254. package/dist/_typedoc/SettingsPage/SettingsPage.types.json +10 -10
  255. package/dist/_typedoc/SettingsPageTemplate/SettingsPageTemplate.types.json +3 -3
  256. package/dist/_typedoc/Slider/Slider.types.json +6 -6
  257. package/dist/_typedoc/Spinner/Spinner.types.json +9 -9
  258. package/dist/_typedoc/SplitViewCard/SplitViewCard.types.json +14 -14
  259. package/dist/_typedoc/Table/Table.types.json +108 -108
  260. package/dist/_typedoc/Tabs/Tablist.types.json +10 -10
  261. package/dist/_typedoc/Tabs/Tabs.types.json +20 -20
  262. package/dist/_typedoc/Tearsheet/Tearsheet.types.json +17 -17
  263. package/dist/_typedoc/TextArea/TextArea.types.json +3 -3
  264. package/dist/_typedoc/TextEditor/TextEditor.types.json +11 -11
  265. package/dist/_typedoc/TextEditorOutput/TextEditorOutput.types.json +4 -4
  266. package/dist/_typedoc/Thumbnail/Thumbnail.types.json +19 -19
  267. package/dist/_typedoc/TieredDropdown/TieredDropdown.types.json +43 -43
  268. package/dist/_typedoc/TieredSelect/TieredSelect.types.json +29 -29
  269. package/dist/_typedoc/Tile/Tile.types.json +8 -8
  270. package/dist/_typedoc/Title/Title.types.json +1 -1
  271. package/dist/_typedoc/Toast/Toast.types.json +4 -4
  272. package/dist/_typedoc/ToggleButton/ToggleButton.types.json +4 -4
  273. package/dist/_typedoc/Token/Token.types.json +7 -7
  274. package/dist/_typedoc/ToolHeader/ToolHeader.types.json +10 -10
  275. package/dist/_typedoc/ToolLandingPage/ToolLandingPage.types.json +8 -8
  276. package/dist/_typedoc/ToolLandingPageTemplate/ToolLandingPageTemplate.types.json +2 -2
  277. package/dist/_typedoc/Tooltip/Tooltip.types.json +15 -15
  278. package/dist/_typedoc/Tree/Tree.types.json +132 -132
  279. package/dist/_typedoc/Typeahead/Typeahead.types.json +2 -2
  280. package/dist/_typedoc/Typography/Typography.types.json +9 -9
  281. package/dist/_typedoc/_utils/types.json +3 -3
  282. package/dist/_typedoc/a11y-tips.json +1 -1
  283. package/package.json +2 -2
  284. package/dist/_hooks/ScrollLock.d.ts +0 -1
  285. package/dist/_hooks/ScrollLock.js +0 -31
  286. 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-12_53_4__sc-aacdj4-0"
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_53_4__sc-aacdj4-1"
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-12_53_4__sc-aacdj4-2"
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-12_53_4__sc-aacdj4-3"
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-12_53_4__sc-7q2ydl-0"
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-12_53_4__sc-7q2ydl-1"
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-12_53_4__sc-7q2ydl-2"
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-12_53_4__sc-7q2ydl-3"
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-12_53_4__sc-7q2ydl-4"
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":"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","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-12_53_4__sc-ft72hu-0"
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-12_53_4__sc-ft72hu-1"
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-12_53_4__sc-ft72hu-2"
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-12_53_4__sc-ft72hu-3"
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-12_53_4__sc-ft72hu-4"
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-12_53_4__sc-ft72hu-5"
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-12_53_4__sc-ft72hu-6"
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-12_53_4__sc-ft72hu-7"
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-12_53_4__sc-rpertu-0"
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-12_53_4__sc-rpertu-1"
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-12_53_4__sc-s2n9gd-0"
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-12_53_4__sc-s2n9gd-1"
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-12_53_4__sc-s2n9gd-2"
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-12_53_4__sc-s2n9gd-3"
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
  });
@@ -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
  */
@@ -12,7 +12,8 @@ var _excluded = ["children", "role", "variant"],
12
12
  _excluded10 = ["children"],
13
13
  _excluded11 = ["children"],
14
14
  _excluded12 = ["children"],
15
- _excluded13 = ["children", "variant"];
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(Flex, {
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(Button, _extends({
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(_ref18, ref) {
321
- var children = _ref18.children,
322
- props = _objectWithoutProperties(_ref18, _excluded12);
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(_ref19, ref) {
338
- var children = _ref19.children,
339
- _ref19$variant = _ref19.variant,
340
- variant = _ref19$variant === void 0 ? 'info' : _ref19$variant,
341
- props = _objectWithoutProperties(_ref19, _excluded13);
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';