@pega/cosmos-react-core 2.0.0-dev.12.1 → 2.0.0-dev.14.2

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 (260) hide show
  1. package/README.md +3 -3
  2. package/lib/components/Actions/Actions.js +1 -1
  3. package/lib/components/Actions/Actions.js.map +1 -1
  4. package/lib/components/AppShell/AppHeader.d.ts.map +1 -1
  5. package/lib/components/AppShell/AppHeader.js +1 -2
  6. package/lib/components/AppShell/AppHeader.js.map +1 -1
  7. package/lib/components/AppShell/AppShell.d.ts.map +1 -1
  8. package/lib/components/AppShell/AppShell.js +16 -6
  9. package/lib/components/AppShell/AppShell.js.map +1 -1
  10. package/lib/components/AppShell/AppShell.styles.d.ts +3 -3
  11. package/lib/components/AppShell/AppShell.styles.d.ts.map +1 -1
  12. package/lib/components/AppShell/AppShell.styles.js +32 -43
  13. package/lib/components/AppShell/AppShell.styles.js.map +1 -1
  14. package/lib/components/AppShell/AppShell.types.d.ts +1 -1
  15. package/lib/components/AppShell/AppShell.types.d.ts.map +1 -1
  16. package/lib/components/AppShell/AppShell.types.js.map +1 -1
  17. package/lib/components/AppShell/AppShellList.d.ts.map +1 -1
  18. package/lib/components/AppShell/AppShellList.js +4 -4
  19. package/lib/components/AppShell/AppShellList.js.map +1 -1
  20. package/lib/components/AppShell/Drawer.js +1 -1
  21. package/lib/components/AppShell/Drawer.js.map +1 -1
  22. package/lib/components/Avatar/Avatar.d.ts.map +1 -1
  23. package/lib/components/Avatar/Avatar.js +3 -2
  24. package/lib/components/Avatar/Avatar.js.map +1 -1
  25. package/lib/components/Backdrop/Backdrop.d.ts +1 -1
  26. package/lib/components/Backdrop/Backdrop.d.ts.map +1 -1
  27. package/lib/components/Backdrop/Backdrop.js +1 -0
  28. package/lib/components/Backdrop/Backdrop.js.map +1 -1
  29. package/lib/components/Button/Button.d.ts +5 -0
  30. package/lib/components/Button/Button.d.ts.map +1 -1
  31. package/lib/components/Button/Button.js +16 -7
  32. package/lib/components/Button/Button.js.map +1 -1
  33. package/lib/components/Card/Card.d.ts.map +1 -1
  34. package/lib/components/Card/Card.js +2 -1
  35. package/lib/components/Card/Card.js.map +1 -1
  36. package/lib/components/Card/CardContent.d.ts.map +1 -1
  37. package/lib/components/Card/CardContent.js +4 -3
  38. package/lib/components/Card/CardContent.js.map +1 -1
  39. package/lib/components/Card/CardFooter.d.ts.map +1 -1
  40. package/lib/components/Card/CardFooter.js +3 -2
  41. package/lib/components/Card/CardFooter.js.map +1 -1
  42. package/lib/components/Card/CardHeader.d.ts +3 -1
  43. package/lib/components/Card/CardHeader.d.ts.map +1 -1
  44. package/lib/components/Card/CardHeader.js +9 -6
  45. package/lib/components/Card/CardHeader.js.map +1 -1
  46. package/lib/components/ComboBox/ComboBox.d.ts +1 -1
  47. package/lib/components/ComboBox/ComboBox.d.ts.map +1 -1
  48. package/lib/components/ComboBox/ComboBox.js +2 -1
  49. package/lib/components/ComboBox/ComboBox.js.map +1 -1
  50. package/lib/components/ComboBox/MultiSelectInput/MultiSelectInput.d.ts.map +1 -1
  51. package/lib/components/ComboBox/MultiSelectInput/MultiSelectInput.js +1 -0
  52. package/lib/components/ComboBox/MultiSelectInput/MultiSelectInput.js.map +1 -1
  53. package/lib/components/ComboBox/SingleSelectInput/SingleSelectInput.d.ts.map +1 -1
  54. package/lib/components/ComboBox/SingleSelectInput/SingleSelectInput.js +1 -0
  55. package/lib/components/ComboBox/SingleSelectInput/SingleSelectInput.js.map +1 -1
  56. package/lib/components/Configuration/Configuration.js +1 -1
  57. package/lib/components/Configuration/Configuration.js.map +1 -1
  58. package/lib/components/DateTime/Input/DateTime.styles.js +1 -1
  59. package/lib/components/DateTime/Input/DateTime.styles.js.map +1 -1
  60. package/lib/components/DateTime/Input/DateTimeInput.js +1 -1
  61. package/lib/components/DateTime/Input/DateTimeInput.js.map +1 -1
  62. package/lib/components/DateTime/Input/DayOfWeekInput.d.ts.map +1 -1
  63. package/lib/components/DateTime/Input/DayOfWeekInput.js +4 -1
  64. package/lib/components/DateTime/Input/DayOfWeekInput.js.map +1 -1
  65. package/lib/components/DateTime/Input/QuarterInput.d.ts +9 -0
  66. package/lib/components/DateTime/Input/QuarterInput.d.ts.map +1 -0
  67. package/lib/components/DateTime/Input/QuarterInput.js +102 -0
  68. package/lib/components/DateTime/Input/QuarterInput.js.map +1 -0
  69. package/lib/components/DateTime/Input/utils.d.ts +5 -3
  70. package/lib/components/DateTime/Input/utils.d.ts.map +1 -1
  71. package/lib/components/DateTime/Input/utils.js +14 -5
  72. package/lib/components/DateTime/Input/utils.js.map +1 -1
  73. package/lib/components/DateTime/Picker/Calendar.d.ts.map +1 -1
  74. package/lib/components/DateTime/Picker/Calendar.js +5 -1
  75. package/lib/components/DateTime/Picker/Calendar.js.map +1 -1
  76. package/lib/components/DateTime/Picker/Calendar.styles.d.ts +2 -2
  77. package/lib/components/DateTime/Picker/Calendar.styles.d.ts.map +1 -1
  78. package/lib/components/DateTime/Picker/Calendar.styles.js +2 -2
  79. package/lib/components/DateTime/Picker/Calendar.styles.js.map +1 -1
  80. package/lib/components/DateTime/Picker/DatePicker.js +1 -1
  81. package/lib/components/DateTime/Picker/DatePicker.js.map +1 -1
  82. package/lib/components/DateTime/index.d.ts +2 -0
  83. package/lib/components/DateTime/index.d.ts.map +1 -1
  84. package/lib/components/DateTime/index.js +1 -0
  85. package/lib/components/DateTime/index.js.map +1 -1
  86. package/lib/components/EmptyState/EmptyState.d.ts +14 -0
  87. package/lib/components/EmptyState/EmptyState.d.ts.map +1 -0
  88. package/lib/components/{NoItems/NoItems.js → EmptyState/EmptyState.js} +6 -6
  89. package/lib/components/EmptyState/EmptyState.js.map +1 -0
  90. package/lib/components/EmptyState/index.d.ts +4 -0
  91. package/lib/components/EmptyState/index.d.ts.map +1 -0
  92. package/lib/components/EmptyState/index.js +3 -0
  93. package/lib/components/EmptyState/index.js.map +1 -0
  94. package/lib/components/File/FileDisplay.d.ts +4 -1
  95. package/lib/components/File/FileDisplay.d.ts.map +1 -1
  96. package/lib/components/File/FileDisplay.js.map +1 -1
  97. package/lib/components/File/FileInput.d.ts +1 -1
  98. package/lib/components/File/FileInput.d.ts.map +1 -1
  99. package/lib/components/Flex/Flex.d.ts +2 -2
  100. package/lib/components/Flex/Flex.d.ts.map +1 -1
  101. package/lib/components/Flex/Flex.js.map +1 -1
  102. package/lib/components/FormControl/FormControl.d.ts +1 -1
  103. package/lib/components/FormControl/FormControl.d.ts.map +1 -1
  104. package/lib/components/Grid/Grid.d.ts +1 -1
  105. package/lib/components/Grid/Grid.d.ts.map +1 -1
  106. package/lib/components/Input/Input.styles.js +2 -2
  107. package/lib/components/Input/Input.styles.js.map +1 -1
  108. package/lib/components/Menu/FlyoutMenuList.d.ts.map +1 -1
  109. package/lib/components/Menu/FlyoutMenuList.js +6 -4
  110. package/lib/components/Menu/FlyoutMenuList.js.map +1 -1
  111. package/lib/components/Menu/Menu.styles.d.ts +10 -0
  112. package/lib/components/Menu/Menu.styles.d.ts.map +1 -1
  113. package/lib/components/Menu/Menu.styles.js +198 -3
  114. package/lib/components/Menu/Menu.styles.js.map +1 -1
  115. package/lib/components/Menu/Menu.types.d.ts +17 -8
  116. package/lib/components/Menu/Menu.types.d.ts.map +1 -1
  117. package/lib/components/Menu/Menu.types.js.map +1 -1
  118. package/lib/components/Menu/MenuGroup.d.ts +6 -0
  119. package/lib/components/Menu/MenuGroup.d.ts.map +1 -0
  120. package/lib/components/Menu/MenuGroup.js +17 -0
  121. package/lib/components/Menu/MenuGroup.js.map +1 -0
  122. package/lib/components/Menu/MenuItem.d.ts +0 -3
  123. package/lib/components/Menu/MenuItem.d.ts.map +1 -1
  124. package/lib/components/Menu/MenuItem.js +9 -116
  125. package/lib/components/Menu/MenuItem.js.map +1 -1
  126. package/lib/components/Menu/MenuList.d.ts.map +1 -1
  127. package/lib/components/Menu/MenuList.js +8 -7
  128. package/lib/components/Menu/MenuList.js.map +1 -1
  129. package/lib/components/Menu/MenuListHeader.d.ts +0 -1
  130. package/lib/components/Menu/MenuListHeader.d.ts.map +1 -1
  131. package/lib/components/Menu/MenuListHeader.js +4 -54
  132. package/lib/components/Menu/MenuListHeader.js.map +1 -1
  133. package/lib/components/Menu/helpers.d.ts +13 -12
  134. package/lib/components/Menu/helpers.d.ts.map +1 -1
  135. package/lib/components/Menu/helpers.js +32 -22
  136. package/lib/components/Menu/helpers.js.map +1 -1
  137. package/lib/components/Menu/index.d.ts +2 -3
  138. package/lib/components/Menu/index.d.ts.map +1 -1
  139. package/lib/components/Menu/index.js +1 -2
  140. package/lib/components/Menu/index.js.map +1 -1
  141. package/lib/components/Modal/Modal.d.ts +1 -6
  142. package/lib/components/Modal/Modal.d.ts.map +1 -1
  143. package/lib/components/Modal/Modal.js +23 -111
  144. package/lib/components/Modal/Modal.js.map +1 -1
  145. package/lib/components/Modal/Modal.styles.d.ts +9 -0
  146. package/lib/components/Modal/Modal.styles.d.ts.map +1 -0
  147. package/lib/components/Modal/Modal.styles.js +133 -0
  148. package/lib/components/Modal/Modal.styles.js.map +1 -0
  149. package/lib/components/Modal/Modal.types.d.ts +19 -4
  150. package/lib/components/Modal/Modal.types.d.ts.map +1 -1
  151. package/lib/components/Modal/Modal.types.js.map +1 -1
  152. package/lib/components/Modal/ModalManager.js +1 -1
  153. package/lib/components/Modal/ModalManager.js.map +1 -1
  154. package/lib/components/MultiStep/MultiStep.js +1 -1
  155. package/lib/components/MultiStep/MultiStep.js.map +1 -1
  156. package/lib/components/MultiStep/MultiStep.styles.js +1 -1
  157. package/lib/components/MultiStep/MultiStep.styles.js.map +1 -1
  158. package/lib/components/MultiStep/MultiStep.types.d.ts +2 -0
  159. package/lib/components/MultiStep/MultiStep.types.d.ts.map +1 -1
  160. package/lib/components/MultiStep/MultiStep.types.js.map +1 -1
  161. package/lib/components/Number/NumberInput.styles.d.ts +2 -2
  162. package/lib/components/Number/NumberInput.styles.d.ts.map +1 -1
  163. package/lib/components/PageTemplates/CategorySubPage.d.ts +1 -1
  164. package/lib/components/PageTemplates/CategorySubPage.d.ts.map +1 -1
  165. package/lib/components/PageTemplates/CategorySubPage.js.map +1 -1
  166. package/lib/components/PageTemplates/PageTemplates.d.ts +2 -0
  167. package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
  168. package/lib/components/PageTemplates/PageTemplates.js +19 -22
  169. package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
  170. package/lib/components/Popover/Popover.d.ts +0 -4
  171. package/lib/components/Popover/Popover.d.ts.map +1 -1
  172. package/lib/components/Popover/Popover.js +1 -115
  173. package/lib/components/Popover/Popover.js.map +1 -1
  174. package/lib/components/Popover/Popover.styles.d.ts +5 -0
  175. package/lib/components/Popover/Popover.styles.d.ts.map +1 -0
  176. package/lib/components/Popover/Popover.styles.js +116 -0
  177. package/lib/components/Popover/Popover.styles.js.map +1 -0
  178. package/lib/components/Popover/index.d.ts +1 -1
  179. package/lib/components/Popover/index.d.ts.map +1 -1
  180. package/lib/components/Popover/index.js +1 -1
  181. package/lib/components/Popover/index.js.map +1 -1
  182. package/lib/components/Progress/Bar.js +1 -1
  183. package/lib/components/Progress/Bar.js.map +1 -1
  184. package/lib/components/Progress/Ring.js +1 -1
  185. package/lib/components/Progress/Ring.js.map +1 -1
  186. package/lib/components/RadioCheck/RadioCheck.js +3 -3
  187. package/lib/components/RadioCheck/RadioCheck.js.map +1 -1
  188. package/lib/components/RadioCheckGroup/RadioCheckGroup.js +2 -2
  189. package/lib/components/RadioCheckGroup/RadioCheckGroup.js.map +1 -1
  190. package/lib/components/Rating/Rating.js +1 -1
  191. package/lib/components/Rating/Rating.js.map +1 -1
  192. package/lib/components/SearchInput/SearchInput.js +7 -7
  193. package/lib/components/SearchInput/SearchInput.js.map +1 -1
  194. package/lib/components/Select/Select.js +2 -2
  195. package/lib/components/Select/Select.js.map +1 -1
  196. package/lib/components/Slider/Slider.styles.d.ts +1 -1
  197. package/lib/components/Slider/Slider.styles.js +1 -1
  198. package/lib/components/Slider/Slider.styles.js.map +1 -1
  199. package/lib/components/SummaryList/SummaryList.d.ts +8 -2
  200. package/lib/components/SummaryList/SummaryList.d.ts.map +1 -1
  201. package/lib/components/SummaryList/SummaryList.js +9 -5
  202. package/lib/components/SummaryList/SummaryList.js.map +1 -1
  203. package/lib/components/SummaryList/ViewAll.d.ts +1 -1
  204. package/lib/components/SummaryList/ViewAll.d.ts.map +1 -1
  205. package/lib/components/SummaryList/ViewAll.js +7 -6
  206. package/lib/components/SummaryList/ViewAll.js.map +1 -1
  207. package/lib/components/Switch/Switch.d.ts.map +1 -1
  208. package/lib/components/Switch/Switch.js +39 -29
  209. package/lib/components/Switch/Switch.js.map +1 -1
  210. package/lib/components/Table/Table.js +2 -2
  211. package/lib/components/Table/Table.js.map +1 -1
  212. package/lib/components/Tabs/TabPanel.d.ts.map +1 -1
  213. package/lib/components/Tabs/TabPanel.js +7 -1
  214. package/lib/components/Tabs/TabPanel.js.map +1 -1
  215. package/lib/components/Tabs/Tabs.d.ts.map +1 -1
  216. package/lib/components/Tabs/Tabs.js +2 -2
  217. package/lib/components/Tabs/Tabs.js.map +1 -1
  218. package/lib/components/Text/Text.d.ts +1 -1
  219. package/lib/components/Text/Text.d.ts.map +1 -1
  220. package/lib/components/Tree/StandardTree.styles.js +1 -1
  221. package/lib/components/Tree/StandardTree.styles.js.map +1 -1
  222. package/lib/hooks/index.d.ts +1 -0
  223. package/lib/hooks/index.d.ts.map +1 -1
  224. package/lib/hooks/index.js +1 -0
  225. package/lib/hooks/index.js.map +1 -1
  226. package/lib/hooks/useDraggable.d.ts +8 -0
  227. package/lib/hooks/useDraggable.d.ts.map +1 -0
  228. package/lib/hooks/useDraggable.js +64 -0
  229. package/lib/hooks/useDraggable.js.map +1 -0
  230. package/lib/hooks/useI18n.d.ts +22 -0
  231. package/lib/hooks/useI18n.d.ts.map +1 -1
  232. package/lib/i18n/default.json +23 -1
  233. package/lib/i18n/i18n.d.ts +44 -0
  234. package/lib/i18n/i18n.d.ts.map +1 -1
  235. package/lib/index.d.ts +2 -2
  236. package/lib/index.d.ts.map +1 -1
  237. package/lib/index.js +2 -2
  238. package/lib/index.js.map +1 -1
  239. package/lib/styles/GlobalStyle.d.ts.map +1 -1
  240. package/lib/styles/GlobalStyle.js +2 -26
  241. package/lib/styles/GlobalStyle.js.map +1 -1
  242. package/lib/theme/theme.d.ts +41 -11
  243. package/lib/theme/theme.d.ts.map +1 -1
  244. package/lib/theme/themeDefinition.json +50 -30
  245. package/lib/theme/themeOverrides.schema.json +15 -3
  246. package/lib/types/types.d.ts +4 -1
  247. package/lib/types/types.d.ts.map +1 -1
  248. package/lib/types/types.js.map +1 -1
  249. package/lib/utils/utils.d.ts +14 -0
  250. package/lib/utils/utils.d.ts.map +1 -1
  251. package/lib/utils/utils.js +24 -0
  252. package/lib/utils/utils.js.map +1 -1
  253. package/package.json +9 -9
  254. package/lib/components/NoItems/NoItems.d.ts +0 -14
  255. package/lib/components/NoItems/NoItems.d.ts.map +0 -1
  256. package/lib/components/NoItems/NoItems.js.map +0 -1
  257. package/lib/components/NoItems/index.d.ts +0 -4
  258. package/lib/components/NoItems/index.d.ts.map +0 -1
  259. package/lib/components/NoItems/index.js +0 -3
  260. package/lib/components/NoItems/index.js.map +0 -1
package/README.md CHANGED
@@ -8,7 +8,7 @@ Cosmos is a visual design system and UI component collection. Its goal is to emp
8
8
 
9
9
  The recommended approach for using Cosmos is individual component imports to bundle with a method of your choosing.
10
10
 
11
- ```javascript
11
+ ```tsx
12
12
  import ReactDOM from 'react-dom';
13
13
  import { SomeComponent } from '@pega/cosmos-react-core';
14
14
 
@@ -70,7 +70,7 @@ This cmd will generate a directory at /packages/cosmos-core/components/YourCompo
70
70
 
71
71
  Inside **`YourComponent.tsx`** will be some initial boilerplate:
72
72
 
73
- ```javascript
73
+ ```ts
74
74
  import { forwardRef, FunctionComponent, PropsWithoutRef, Ref } from 'react';
75
75
  import styled from 'styled-components';
76
76
 
@@ -98,7 +98,7 @@ export default YourComponent;
98
98
 
99
99
  The **`YourComponent.stories.tsx`** file will provide a hot reloading dev environment in Storybook:
100
100
 
101
- ```javascript
101
+ ```tsx
102
102
  import YourComponent from './YourComponent';
103
103
 
104
104
  // These are settings that storybook will use to render your component's stories
@@ -15,7 +15,7 @@ const Actions = forwardRef(({ items, menuAt = 2, iconOnly = true }, ref) => {
15
15
  ...restProps
16
16
  }))
17
17
  } }, void 0)) : (_jsx(_Fragment, { children: items.map(({ id, icon, text, onClick, ...restProps }) => {
18
- return (_jsx(Button, Object.assign({ ref: ref, variant: icon && iconOnly ? 'simple' : undefined, onClick: (event) => onClick?.(id, event), title: icon ? text : undefined, icon: !!icon && iconOnly }, restProps, { children: icon && iconOnly ? _jsx(Icon, { name: icon }, void 0) : text }), id));
18
+ return (_jsx(Button, Object.assign({ ref: ref, variant: icon && iconOnly ? 'simple' : undefined, onClick: (event) => onClick?.(id, event), label: icon ? text : undefined, icon: !!icon && iconOnly }, restProps, { children: icon && iconOnly ? _jsx(Icon, { name: icon }, void 0) : text }), id));
19
19
  }) }, void 0));
20
20
  });
21
21
  export default Actions;
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../../../src/components/Actions/Actions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAuD,MAAM,OAAO,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,UAAU,MAAM,eAAe,CAAC;AAWvC,MAAM,OAAO,GAAmD,UAAU,CACxE,CACE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAiC,EACrE,GAAwB,EACxB,EAAE;IACF,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAC9B,KAAC,UAAU,IACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAClB,QAAQ,QACR,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO,EAAE,IAAI;gBACb,GAAG,SAAS;aACb,CAAC,CAAC;SACJ,WACD,CACH,CAAC,CAAC,CAAC,CACF,4BACG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE;YACvD,OAAO,CACL,KAAC,MAAM,kBAEL,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,CAAC,KAAoC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EACvE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,IACpB,SAAS,cAEZ,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,WAAI,CAAC,CAAC,CAAC,IAAI,KAR1C,EAAE,CASA,CACV,CAAC;QACJ,CAAC,CAAC,WACD,CACJ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["import { forwardRef, FunctionComponent, PropsWithoutRef, Ref, MouseEvent } from 'react';\n\nimport { useI18n } from '../../hooks';\nimport { Action, ForwardProps, NoChildrenProp } from '../../types';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport MenuButton from '../MenuButton';\n\nexport interface ActionsProps extends NoChildrenProp {\n items: Action[];\n /** @default 2 */\n menuAt?: number;\n /** @default true */\n iconOnly?: boolean;\n ref?: Ref<HTMLButtonElement>;\n}\n\nconst Actions: FunctionComponent<ActionsProps & ForwardProps> = forwardRef(\n (\n { items, menuAt = 2, iconOnly = true }: PropsWithoutRef<ActionsProps>,\n ref: ActionsProps['ref']\n ) => {\n const t = useI18n();\n\n if (!items || items.length === 0) {\n return null;\n }\n\n return items.length >= menuAt ? (\n <MenuButton\n ref={ref}\n text={t('actions')}\n iconOnly\n icon='more'\n variant='simple'\n menu={{\n items: items.map(({ text, ...restProps }) => ({\n primary: text,\n ...restProps\n }))\n }}\n />\n ) : (\n <>\n {items.map(({ id, icon, text, onClick, ...restProps }) => {\n return (\n <Button\n key={id}\n ref={ref}\n variant={icon && iconOnly ? 'simple' : undefined}\n onClick={(event: MouseEvent<HTMLButtonElement>) => onClick?.(id, event)}\n title={icon ? text : undefined}\n icon={!!icon && iconOnly}\n {...restProps}\n >\n {icon && iconOnly ? <Icon name={icon} /> : text}\n </Button>\n );\n })}\n </>\n );\n }\n);\n\nexport default Actions;\n"]}
1
+ {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../../../src/components/Actions/Actions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAuD,MAAM,OAAO,CAAC;AAExF,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,UAAU,MAAM,eAAe,CAAC;AAWvC,MAAM,OAAO,GAAmD,UAAU,CACxE,CACE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAiC,EACrE,GAAwB,EACxB,EAAE;IACF,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,CAC9B,KAAC,UAAU,IACT,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,EAClB,QAAQ,QACR,IAAI,EAAC,MAAM,EACX,OAAO,EAAC,QAAQ,EAChB,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC5C,OAAO,EAAE,IAAI;gBACb,GAAG,SAAS;aACb,CAAC,CAAC;SACJ,WACD,CACH,CAAC,CAAC,CAAC,CACF,4BACG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE;YACvD,OAAO,CACL,KAAC,MAAM,kBAEL,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAChD,OAAO,EAAE,CAAC,KAAoC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,EACvE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC9B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,QAAQ,IACpB,SAAS,cAEZ,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,WAAI,CAAC,CAAC,CAAC,IAAI,KAR1C,EAAE,CASA,CACV,CAAC;QACJ,CAAC,CAAC,WACD,CACJ,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["import { forwardRef, FunctionComponent, PropsWithoutRef, Ref, MouseEvent } from 'react';\n\nimport { useI18n } from '../../hooks';\nimport { Action, ForwardProps, NoChildrenProp } from '../../types';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport MenuButton from '../MenuButton';\n\nexport interface ActionsProps extends NoChildrenProp {\n items: Action[];\n /** @default 2 */\n menuAt?: number;\n /** @default true */\n iconOnly?: boolean;\n ref?: Ref<HTMLButtonElement>;\n}\n\nconst Actions: FunctionComponent<ActionsProps & ForwardProps> = forwardRef(\n (\n { items, menuAt = 2, iconOnly = true }: PropsWithoutRef<ActionsProps>,\n ref: ActionsProps['ref']\n ) => {\n const t = useI18n();\n\n if (!items || items.length === 0) {\n return null;\n }\n\n return items.length >= menuAt ? (\n <MenuButton\n ref={ref}\n text={t('actions')}\n iconOnly\n icon='more'\n variant='simple'\n menu={{\n items: items.map(({ text, ...restProps }) => ({\n primary: text,\n ...restProps\n }))\n }}\n />\n ) : (\n <>\n {items.map(({ id, icon, text, onClick, ...restProps }) => {\n return (\n <Button\n key={id}\n ref={ref}\n variant={icon && iconOnly ? 'simple' : undefined}\n onClick={(event: MouseEvent<HTMLButtonElement>) => onClick?.(id, event)}\n label={icon ? text : undefined}\n icon={!!icon && iconOnly}\n {...restProps}\n >\n {icon && iconOnly ? <Icon name={icon} /> : text}\n </Button>\n );\n })}\n </>\n );\n }\n);\n\nexport default Actions;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAyB,MAAM,OAAO,CAAC;AAO7E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWlD,QAAA,MAAM,SAAS,EAAE,iBAAiB,CAAC,cAAc,GAAG,YAAY,CAwE/D,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,iBAAiB,EAAyB,MAAM,OAAO,CAAC;AAM7E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWlD,QAAA,MAAM,SAAS,EAAE,iBAAiB,CAAC,cAAc,GAAG,YAAY,CAuE/D,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -3,7 +3,6 @@ import { forwardRef, useRef, useState } from 'react';
3
3
  import Flex from '../Flex';
4
4
  import Image from '../Image';
5
5
  import SearchInput from '../SearchInput';
6
- import Link from '../Link';
7
6
  import { useBreakpoint, useFocusWithin } from '../../hooks';
8
7
  import AppShellOperator from './Operator';
9
8
  import { StyledAppHeader, StyledAppHeaderInfo, StyledAppHeaderSearchForm, StyledAppHeaderSpacer, StyledAppHeaderText, StyledAppHeaderOperator } from './AppShell.styles';
@@ -12,7 +11,7 @@ const AppHeader = forwardRef(({ appName, fullImageSrc, imageSrc, href, onClick,
12
11
  const searchRef = useRef(null);
13
12
  const [searchFocused, setSearchFocused] = useState(false);
14
13
  useFocusWithin([searchRef], setSearchFocused);
15
- return (_jsxs(Flex, Object.assign({ as: StyledAppHeader, container: { alignItems: 'center', pad: 1 }, hideTitle: !isMediumOrAbove && searchFocused, ref: ref }, { children: [_jsxs(Flex, Object.assign({ as: StyledAppHeaderInfo, forwardedAs: href ? Link : 'div', container: { alignItems: 'center', gap: 1 }, onClick: onClick, href: href, "aria-label": `${appName}${portalName ? ` - ${portalName}` : ''}`, target: target, centerLogo: !fullImageSrc }, { children: [_jsx(Image, { src: fullImageSrc || imageSrc, alt: appName }, void 0), (isMediumOrAbove || !searchFocused) && (_jsxs(_Fragment, { children: [_jsx(StyledAppHeaderText, { children: appName }, void 0), _jsx(StyledAppHeaderText, Object.assign({ variant: 'secondary' }, { children: portalName }), void 0)] }, void 0))] }), void 0), searchInput ? (_jsx(StyledAppHeaderSearchForm, Object.assign({ ref: searchRef, role: 'search', "aria-label": searchLabel, onSubmit: e => e.preventDefault(), isMediumOrAbove: isMediumOrAbove }, { children: _jsx(SearchInput, Object.assign({}, searchInput), void 0) }), void 0)) : (_jsx(StyledAppHeaderSpacer, {}, void 0)), _jsx(AppShellOperator, Object.assign({ as: StyledAppHeaderOperator, actions: operator.actions, popover: { placement: 'bottom-start' } }, { children: operator.avatar }), void 0)] }), void 0));
14
+ return (_jsxs(Flex, Object.assign({ as: StyledAppHeader, container: { alignItems: 'center', pad: 1 }, hideTitle: !isMediumOrAbove && searchFocused, ref: ref }, { children: [_jsx(StyledAppHeaderInfo, Object.assign({ centerLogo: !fullImageSrc }, { children: _jsxs(Flex, Object.assign({ container: { inline: true, alignItems: 'center', gap: 1 }, as: href ? 'a' : 'div', href: href, onClick: onClick, target: target }, { children: [_jsx(Image, { src: fullImageSrc || imageSrc, alt: '', "aria-hidden": 'true' }, void 0), (isMediumOrAbove || !searchFocused) && (_jsxs(_Fragment, { children: [_jsx(StyledAppHeaderText, { children: appName }, void 0), _jsx(StyledAppHeaderText, Object.assign({ variant: 'secondary' }, { children: portalName }), void 0)] }, void 0))] }), void 0) }), void 0), searchInput ? (_jsx(StyledAppHeaderSearchForm, Object.assign({ ref: searchRef, role: 'search', "aria-label": searchLabel, onSubmit: e => e.preventDefault(), isMediumOrAbove: isMediumOrAbove }, { children: _jsx(SearchInput, Object.assign({}, searchInput), void 0) }), void 0)) : (_jsx(StyledAppHeaderSpacer, {}, void 0)), _jsx(AppShellOperator, Object.assign({ as: StyledAppHeaderOperator, actions: operator.actions, popover: { placement: 'bottom-start' } }, { children: operator.avatar }), void 0)] }), void 0));
16
15
  });
17
16
  export default AppHeader;
18
17
  //# sourceMappingURL=AppHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeader.js","sourceRoot":"","sources":["../../../src/components/AppShell/AppHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE7E,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI5D,OAAO,gBAAgB,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,SAAS,GAAqD,UAAU,CAC5E,CACE,EACE,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,EACI,EACjB,GAAiB,EACjB,EAAE;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAE9C,OAAO,CACL,MAAC,IAAI,kBACH,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAC3C,SAAS,EAAE,CAAC,eAAe,IAAI,aAAa,EAC5C,GAAG,EAAE,GAAG,iBAER,MAAC,IAAI,kBACH,EAAE,EAAE,mBAAmB,EACvB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAE,IAAY,CAAC,CAAC,CAAC,KAAK,EACzC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAC3C,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,gBACE,GAAG,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC/D,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,CAAC,YAAY,iBAEzB,KAAC,KAAK,IAAC,GAAG,EAAE,YAAY,IAAI,QAAQ,EAAE,GAAG,EAAE,OAAO,WAAI,EACrD,CAAC,eAAe,IAAI,CAAC,aAAa,CAAC,IAAI,CACtC,8BACE,KAAC,mBAAmB,cAAE,OAAO,WAAuB,EACpD,KAAC,mBAAmB,kBAAC,OAAO,EAAC,WAAW,gBAAE,UAAU,YAAuB,YAC1E,CACJ,aACI,EAEN,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,yBAAyB,kBACxB,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,QAAQ,gBACD,WAAW,EACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EACjC,eAAe,EAAE,eAAe,gBAEhC,KAAC,WAAW,oBAAK,WAAW,UAAI,YACN,CAC7B,CAAC,CAAC,CAAC,CACF,KAAC,qBAAqB,aAAG,CAC1B,EAED,KAAC,gBAAgB,kBACf,EAAE,EAAE,uBAAuB,EAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,gBAErC,QAAQ,CAAC,MAAM,YACC,aACd,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import { forwardRef, FunctionComponent, Ref, useRef, useState } from 'react';\n\nimport Flex from '../Flex';\nimport Image from '../Image';\nimport SearchInput from '../SearchInput';\nimport Link from '../Link';\nimport { useBreakpoint, useFocusWithin } from '../../hooks';\nimport { ForwardProps } from '../../types';\n\nimport { AppHeaderProps } from './AppShell.types';\nimport AppShellOperator from './Operator';\nimport {\n StyledAppHeader,\n StyledAppHeaderInfo,\n StyledAppHeaderSearchForm,\n StyledAppHeaderSpacer,\n StyledAppHeaderText,\n StyledAppHeaderOperator\n} from './AppShell.styles';\n\nconst AppHeader: FunctionComponent<AppHeaderProps & ForwardProps> = forwardRef(\n (\n {\n appName,\n fullImageSrc,\n imageSrc,\n href,\n onClick,\n portalName,\n target,\n operator,\n searchInput,\n searchLabel\n }: AppHeaderProps,\n ref: Ref<Element>\n ) => {\n const isMediumOrAbove = useBreakpoint('md');\n const searchRef = useRef(null);\n const [searchFocused, setSearchFocused] = useState(false);\n\n useFocusWithin([searchRef], setSearchFocused);\n\n return (\n <Flex\n as={StyledAppHeader}\n container={{ alignItems: 'center', pad: 1 }}\n hideTitle={!isMediumOrAbove && searchFocused}\n ref={ref}\n >\n <Flex\n as={StyledAppHeaderInfo}\n forwardedAs={href ? (Link as any) : 'div'}\n container={{ alignItems: 'center', gap: 1 }}\n onClick={onClick}\n href={href}\n aria-label={`${appName}${portalName ? ` - ${portalName}` : ''}`}\n target={target}\n centerLogo={!fullImageSrc}\n >\n <Image src={fullImageSrc || imageSrc} alt={appName} />\n {(isMediumOrAbove || !searchFocused) && (\n <>\n <StyledAppHeaderText>{appName}</StyledAppHeaderText>\n <StyledAppHeaderText variant='secondary'>{portalName}</StyledAppHeaderText>\n </>\n )}\n </Flex>\n\n {searchInput ? (\n <StyledAppHeaderSearchForm\n ref={searchRef}\n role='search'\n aria-label={searchLabel}\n onSubmit={e => e.preventDefault()}\n isMediumOrAbove={isMediumOrAbove}\n >\n <SearchInput {...searchInput} />\n </StyledAppHeaderSearchForm>\n ) : (\n <StyledAppHeaderSpacer />\n )}\n\n <AppShellOperator\n as={StyledAppHeaderOperator}\n actions={operator.actions}\n popover={{ placement: 'bottom-start' }}\n >\n {operator.avatar}\n </AppShellOperator>\n </Flex>\n );\n }\n);\n\nexport default AppHeader;\n"]}
1
+ {"version":3,"file":"AppHeader.js","sourceRoot":"","sources":["../../../src/components/AppShell/AppHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAA0B,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE7E,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,KAAK,MAAM,UAAU,CAAC;AAC7B,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAI5D,OAAO,gBAAgB,MAAM,YAAY,CAAC;AAC1C,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,SAAS,GAAqD,UAAU,CAC5E,CACE,EACE,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,UAAU,EACV,MAAM,EACN,QAAQ,EACR,WAAW,EACX,WAAW,EACI,EACjB,GAAiB,EACjB,EAAE;IACF,MAAM,eAAe,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE1D,cAAc,CAAC,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAE9C,OAAO,CACL,MAAC,IAAI,kBACH,EAAE,EAAE,eAAe,EACnB,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EAC3C,SAAS,EAAE,CAAC,eAAe,IAAI,aAAa,EAC5C,GAAG,EAAE,GAAG,iBAER,KAAC,mBAAmB,kBAAC,UAAU,EAAE,CAAC,YAAY,gBAC5C,MAAC,IAAI,kBACH,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,EACzD,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,iBAEd,KAAC,KAAK,IAAC,GAAG,EAAE,YAAY,IAAI,QAAQ,EAAE,GAAG,EAAC,EAAE,iBAAa,MAAM,WAAG,EACjE,CAAC,eAAe,IAAI,CAAC,aAAa,CAAC,IAAI,CACtC,8BACE,KAAC,mBAAmB,cAAE,OAAO,WAAuB,EACpD,KAAC,mBAAmB,kBAAC,OAAO,EAAC,WAAW,gBAAE,UAAU,YAAuB,YAC1E,CACJ,aACI,YACa,EAErB,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,yBAAyB,kBACxB,GAAG,EAAE,SAAS,EACd,IAAI,EAAC,QAAQ,gBACD,WAAW,EACvB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,EACjC,eAAe,EAAE,eAAe,gBAEhC,KAAC,WAAW,oBAAK,WAAW,UAAI,YACN,CAC7B,CAAC,CAAC,CAAC,CACF,KAAC,qBAAqB,aAAG,CAC1B,EAED,KAAC,gBAAgB,kBACf,EAAE,EAAE,uBAAuB,EAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO,EACzB,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,gBAErC,QAAQ,CAAC,MAAM,YACC,aACd,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["import { forwardRef, FunctionComponent, Ref, useRef, useState } from 'react';\n\nimport Flex from '../Flex';\nimport Image from '../Image';\nimport SearchInput from '../SearchInput';\nimport { useBreakpoint, useFocusWithin } from '../../hooks';\nimport { ForwardProps } from '../../types';\n\nimport { AppHeaderProps } from './AppShell.types';\nimport AppShellOperator from './Operator';\nimport {\n StyledAppHeader,\n StyledAppHeaderInfo,\n StyledAppHeaderSearchForm,\n StyledAppHeaderSpacer,\n StyledAppHeaderText,\n StyledAppHeaderOperator\n} from './AppShell.styles';\n\nconst AppHeader: FunctionComponent<AppHeaderProps & ForwardProps> = forwardRef(\n (\n {\n appName,\n fullImageSrc,\n imageSrc,\n href,\n onClick,\n portalName,\n target,\n operator,\n searchInput,\n searchLabel\n }: AppHeaderProps,\n ref: Ref<Element>\n ) => {\n const isMediumOrAbove = useBreakpoint('md');\n const searchRef = useRef(null);\n const [searchFocused, setSearchFocused] = useState(false);\n\n useFocusWithin([searchRef], setSearchFocused);\n\n return (\n <Flex\n as={StyledAppHeader}\n container={{ alignItems: 'center', pad: 1 }}\n hideTitle={!isMediumOrAbove && searchFocused}\n ref={ref}\n >\n <StyledAppHeaderInfo centerLogo={!fullImageSrc}>\n <Flex\n container={{ inline: true, alignItems: 'center', gap: 1 }}\n as={href ? 'a' : 'div'}\n href={href}\n onClick={onClick}\n target={target}\n >\n <Image src={fullImageSrc || imageSrc} alt='' aria-hidden='true' />\n {(isMediumOrAbove || !searchFocused) && (\n <>\n <StyledAppHeaderText>{appName}</StyledAppHeaderText>\n <StyledAppHeaderText variant='secondary'>{portalName}</StyledAppHeaderText>\n </>\n )}\n </Flex>\n </StyledAppHeaderInfo>\n\n {searchInput ? (\n <StyledAppHeaderSearchForm\n ref={searchRef}\n role='search'\n aria-label={searchLabel}\n onSubmit={e => e.preventDefault()}\n isMediumOrAbove={isMediumOrAbove}\n >\n <SearchInput {...searchInput} />\n </StyledAppHeaderSearchForm>\n ) : (\n <StyledAppHeaderSpacer />\n )}\n\n <AppShellOperator\n as={StyledAppHeaderOperator}\n actions={operator.actions}\n popover={{ placement: 'bottom-start' }}\n >\n {operator.avatar}\n </AppShellOperator>\n </Flex>\n );\n }\n);\n\nexport default AppHeader;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAWjB,EAAE,EAEH,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AA2C5D,OAAO,EACL,aAAa,EAOb,UAAU,EACX,MAAM,kBAAkB,CAAC;AAsR1B,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAwFhC,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,iBAAiB,CAAC,aAAa,GAAG,YAAY,CA6O7D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAWjB,EAAE,EAGH,MAAM,OAAO,CAAC;AAWf,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,aAAa,CAAC;AA2C5D,OAAO,EACL,aAAa,EAOb,UAAU,EACX,MAAM,kBAAkB,CAAC;AAsR1B,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAmGhC,CAAC;AAEF,QAAA,MAAM,QAAQ,EAAE,iBAAiB,CAAC,aAAa,GAAG,YAAY,CA8O7D,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -180,10 +180,11 @@ const Cases = (props) => {
180
180
  };
181
181
  // TODO: Need to add back re-focus support to drawer.
182
182
  export const Utils = ({ operator, items, appHeader }) => {
183
- const { drawerOpen, setDrawerOpen } = useContext(AppShellContext);
183
+ const { drawerOpen, setDrawerOpen, focusedImperatively } = useContext(AppShellContext);
184
184
  const [transformedLinks, setTransformedLinks] = useState([]);
185
185
  const [item, setItem] = useState();
186
186
  const [activeUtilItem, setActiveUtilItem] = useState('');
187
+ const returnFocusRef = useRef(null);
187
188
  const operatorInfo = useMemo(() => appHeader
188
189
  ? []
189
190
  : [
@@ -197,7 +198,8 @@ export const Utils = ({ operator, items, appHeader }) => {
197
198
  const mergedUtilItems = (drawerItems) => {
198
199
  return drawerItems?.map((drawerItem) => {
199
200
  return {
200
- onClick: () => {
201
+ onClick: e => {
202
+ returnFocusRef.current = e.currentTarget;
201
203
  if (drawerItem.drawerView) {
202
204
  setItem(drawerItem);
203
205
  setActiveUtilItem(drawerItem.name);
@@ -230,11 +232,19 @@ export const Utils = ({ operator, items, appHeader }) => {
230
232
  }, [item]);
231
233
  useEffect(() => {
232
234
  if (!drawerOpen) {
233
- setItem(undefined);
234
235
  setActiveUtilItem('');
236
+ focusedImperatively.current = true;
237
+ returnFocusRef?.current?.focus();
235
238
  }
236
239
  }, [drawerOpen]);
237
- return (_jsxs(_Fragment, { children: [_jsx(StyledUtils, { children: _jsx(NavComponents.List, { items: transformedLinks, nestedList: false }, void 0) }, void 0), item && (_jsx(AppShellDrawer, { content: item.drawerView, header: item.drawerHeader || item.name, onDrawerClose: item.onDrawerClose, onDrawerOpen: item.onDrawerOpen }, void 0))] }, void 0));
240
+ return (_jsxs(_Fragment, { children: [_jsx(StyledUtils, { children: _jsx(NavComponents.List
241
+ // Pull onDrawerOpen and onDrawerClose off to avoid DOM passthrough warning.
242
+ , {
243
+ // Pull onDrawerOpen and onDrawerClose off to avoid DOM passthrough warning.
244
+ items: transformedLinks.map(({ onDrawerOpen, onDrawerClose, ...util }) => util) }, void 0) }, void 0), item && (_jsx(AppShellDrawer, { content: item.drawerView, header: item.drawerHeader || item.name, onDrawerClose: () => {
245
+ setItem(undefined);
246
+ item.onDrawerClose?.();
247
+ }, onDrawerOpen: item.onDrawerOpen }, void 0))] }, void 0));
238
248
  };
239
249
  const AppShell = forwardRef((props, ref) => {
240
250
  const { appInfo, searchInput, appHeader, searchLabel = 'Sitewide', // FIXME: TR
@@ -296,7 +306,7 @@ const AppShell = forwardRef((props, ref) => {
296
306
  const appShellJSX = (_jsxs(Flex, Object.assign({}, restProps, { container: {
297
307
  direction: 'column',
298
308
  justify: 'between'
299
- }, ref: navRef, as: StyledAppNav, appHeader: showAppHeader, navOpen: mobileNavOpen || navOpen, onFocus: onFocus, onMouseEnter: isSmallOrAbove ? openNav : undefined, onMouseLeave: isSmallOrAbove ? closeNav : undefined }, { children: [envName && (_jsx(StyledAppEnvironment, Object.assign({ item: { shrink: 0 }, color: envColor ?? theme.base.colors.red['extra-light'] }, { children: envName }), void 0)), !showAppHeader && (_jsxs(StyledAppInfo, Object.assign({ as: Grid, forwardedAs: appInfoHref ? Link : 'div', href: appInfoHref, "aria-label": `${appName}${portalName ? ` - ${portalName}` : ''}` }, appInfoRestProps, { container: {
309
+ }, ref: navRef, as: StyledAppNav, appHeader: showAppHeader, navOpen: mobileNavOpen || navOpen, showEnv: !!envName, onFocus: onFocus, onMouseEnter: isSmallOrAbove ? openNav : undefined, onMouseLeave: isSmallOrAbove ? closeNav : undefined }, { children: [envName && (_jsx(StyledAppEnvironment, Object.assign({ item: { shrink: 0 }, color: envColor ?? theme.base.colors.red['extra-light'] }, { children: envName }), void 0)), !showAppHeader && (_jsxs(StyledAppInfo, Object.assign({ as: Grid, forwardedAs: appInfoHref ? Link : 'div', href: appInfoHref, "aria-label": `${appName}${portalName ? ` - ${portalName}` : ''}` }, appInfoRestProps, { container: {
300
310
  alignItems: 'center',
301
311
  areas: portalName ? '"logo app" "logo portal"' : '"logo app"'
302
312
  } }, { children: [_jsx(Grid, { item: { area: 'logo' }, as: Image, src: logoSrc, alt: appName }, void 0), _jsx(Grid, Object.assign({ item: { area: 'app' }, as: 'span' }, { children: appName }), void 0), portalName && (_jsx(Grid, Object.assign({ item: { area: 'portal' }, as: 'span' }, { children: portalName }), void 0))] }), void 0)), searchInput && !showAppHeader && (_jsx(StyledSearchForm, Object.assign({ role: 'search', "aria-label": searchLabel, onSubmit: e => e.preventDefault() }, { children: _jsx(SearchInput, Object.assign({}, searchInput), void 0) }), void 0)), _jsxs(StyledScrollWrap, Object.assign({ navOpen: mobileNavOpen || navOpen }, { children: [caseTypes && _jsx(CaseTypes, { caseTypes: caseTypes }, void 0), links && _jsx(Links, { links: links }, void 0), cases && _jsx(Cases, { cases: cases }, void 0)] }), void 0), _jsx(Utils, { appHeader: showAppHeader, operator: operator, items: utils }, void 0)] }), void 0));
@@ -314,7 +324,7 @@ const AppShell = forwardRef((props, ref) => {
314
324
  setMobileNavOpen(false);
315
325
  } }, { children: _jsx(Drawer, Object.assign({ open: mobileNavOpen, onAfterClose: () => {
316
326
  setMobileNavBackdrop(false);
317
- }, position: 'fixed', placement: start, size: 'min(18.75rem, calc(100vw - 3.5rem))', nullWhenClosed: true }, { children: appShellJSX }), void 0) }), void 0)] }, void 0)), showMainContent && (_jsxs(StyledAppMain, Object.assign({ appHeader: showAppHeader, mobileNav: !isSmallOrAbove, headerOffset: headerEl?.offsetHeight }, { children: [banners && _jsx(StyledBannerRegion, { children: banners }, void 0), main] }), void 0))] }), void 0));
327
+ }, position: 'fixed', placement: start, size: 'min(18.75rem, calc(100vw - 3.5rem))', nullWhenClosed: true }, { children: appShellJSX }), void 0) }), void 0)] }, void 0)), showMainContent && (_jsxs(StyledAppMain, Object.assign({ appHeader: showAppHeader, mobileNav: !isSmallOrAbove, headerOffset: isSmallOrAbove ? headerEl?.offsetHeight : mobileHeaderEl?.offsetHeight }, { children: [banners && _jsx(StyledBannerRegion, { children: banners }, void 0), main] }), void 0))] }), void 0));
318
328
  });
319
329
  export default AppShell;
320
330
  //# sourceMappingURL=AppShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n FunctionComponent,\n forwardRef,\n PropsWithoutRef,\n Ref,\n useState,\n useCallback,\n useEffect,\n useMemo,\n ElementType,\n useContext,\n useRef,\n FC,\n MouseEventHandler\n} from 'react';\n\nimport Flex from '../Flex';\nimport Link from '../Link';\nimport Count from '../Badges/Count';\nimport BareButton from '../Button/BareButton';\nimport SearchInput from '../SearchInput';\nimport Icon from '../Icon';\nimport Text from '../Text';\nimport Image from '../Image';\nimport ExpandCollapse from '../ExpandCollapse';\nimport type { ForwardProps, OmitStrict } from '../../types';\nimport {\n useFocusWithin,\n useI18n,\n useBreakpoint,\n useConsolidatedRef,\n useDirection,\n useTheme,\n useElement\n} from '../../hooks';\nimport Grid from '../Grid';\nimport Button from '../Button';\nimport Drawer from '../Drawer';\nimport type { PopoverProps } from '../Popover';\nimport Backdrop from '../Backdrop';\nimport { documentIsAvailable } from '../../utils';\n\nimport AppShellContext from './AppShellContext';\nimport AppShellDrawer from './Drawer';\nimport AppShellOperator from './Operator';\nimport AppHeader from './AppHeader';\nimport SkipNavigation from './SkipNavigation';\nimport {\n StyledAppNav,\n StyledAppInfo,\n StyledSearchForm,\n StyledCaseTypes,\n StyledScrollWrap,\n StyledUtils,\n StyledNavList,\n StyledNestedNavList,\n StyledNavListItem,\n StyledNavListMenuButton,\n StyledAppMain,\n StyledCaseClose,\n StyledAppShellNavIcon,\n StyledNavCasesList,\n StyledAppEnvironment,\n StyledBannerRegion,\n StyledCountIcon,\n StyledUtilIconCount,\n StyledMobileNav\n} from './AppShell.styles';\nimport {\n AppShellProps,\n CaseProps,\n CaseTypeProps,\n LinkProps,\n NavListItemProps,\n NavListProps,\n UtilItemProps,\n UtilsProps\n} from './AppShell.types';\n\nconst NavComponents: {\n List: FunctionComponent<NavListProps>;\n ListItem: FunctionComponent<NavListItemProps>;\n} = {\n List(props: NavListProps) {\n const { items = [], nestedList, collapsed } = props;\n let Component: ElementType = StyledNavList;\n let fwdProps: {\n as?: ElementType;\n forwardedAs?: ElementType;\n nullWhenCollapsed?: boolean;\n transitionSpeed?: string;\n collapsed: boolean;\n } = {\n collapsed: !!collapsed\n };\n\n const {\n base: { animation }\n } = useTheme();\n\n if (nestedList) {\n fwdProps = {\n as: ExpandCollapse,\n forwardedAs: 'ul',\n nullWhenCollapsed: true,\n transitionSpeed: items.length >= 10 ? `calc(2 * ${animation.speed})` : animation.speed,\n ...fwdProps\n };\n\n Component = StyledNestedNavList;\n }\n\n return (\n <Component {...fwdProps}>\n {items?.map(item => (\n <NavComponents.ListItem {...item} key={item.id || item.primary} />\n ))}\n </Component>\n );\n },\n ListItem(props: NavListItemProps) {\n const { navOpen } = useContext(AppShellContext);\n const {\n visual,\n primary,\n secondary,\n href,\n onClick,\n items,\n collapseItems = false,\n dismissible = false,\n onDismiss,\n active,\n actions,\n forwardedRef,\n ...restProps\n } = props;\n\n const t = useI18n();\n\n const hasItems = Array.isArray(items) && items.length > 0;\n const compProps: {\n href?: string;\n variant?: string;\n onClick?: MouseEventHandler<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>;\n actions?: NavListItemProps['actions'];\n as?: ElementType<any>;\n popover?: OmitStrict<PopoverProps, 'show' | 'target' | 'children'>;\n } = {\n onClick\n };\n\n let Component: ElementType;\n\n if (actions) {\n Component = AppShellOperator;\n compProps.actions = actions;\n compProps.as = StyledNavListMenuButton;\n compProps.popover = {\n placement: 'right-end',\n modifiers: [\n {\n name: 'offset',\n options: { offset: [-12, -16] }\n },\n {\n name: 'flip',\n options: {\n boundary: documentIsAvailable ? document.body : undefined,\n fallbackPlacements: ['top-end']\n }\n }\n ]\n };\n } else if (onClick) {\n Component = BareButton;\n } else if (href) {\n Component = Link;\n compProps.href = href;\n } else {\n Component = 'div';\n }\n\n useEffect(() => {\n if (!navOpen && actions) {\n const node = document.getElementsByTagName('body')[0];\n const clickEvent = document.createEvent('MouseEvent');\n clickEvent.initEvent('mousedown', true, true);\n node.dispatchEvent(clickEvent);\n }\n }, [navOpen]);\n\n const { end } = useDirection();\n\n return (\n <StyledNavListItem\n {...restProps}\n key={primary}\n nestedListCollapsed={hasItems ? collapseItems : true}\n active={!!active}\n navOpen={navOpen}\n >\n {/* forwardedRef typed as 'any' due to ambiguity of Component element type */}\n <Component {...compProps} ref={forwardedRef as any}>\n {visual}\n {secondary ? (\n <Flex container={{ direction: 'column', alignItems: 'start' }}>\n <span>{primary}</span>\n <Text variant='secondary'>{secondary}</Text>\n </Flex>\n ) : (\n <span>{primary}</span>\n )}\n {(hasItems || actions) && <Icon name={`caret-${end}`} as={StyledAppShellNavIcon} />}\n </Component>\n {dismissible && (\n <Button\n icon\n variant='simple'\n as={StyledCaseClose}\n onClick={onDismiss}\n aria-label={t('dismiss_case')}\n >\n <Icon name='times' />\n </Button>\n )}\n {hasItems && (\n <NavComponents.List nestedList items={items} collapsed={!navOpen || collapseItems} />\n )}\n </StyledNavListItem>\n );\n }\n};\n\nconst CaseTypes: FunctionComponent<{ caseTypes: CaseTypeProps[] }> = ({\n caseTypes\n}: {\n caseTypes: CaseTypeProps[];\n}) => {\n const { navOpen } = useContext(AppShellContext);\n const [expanded, setExpanded] = useState(false);\n const t = useI18n();\n\n const toggleExpanded = useCallback(() => {\n setExpanded(state => !state);\n }, []);\n\n useEffect(() => {\n if (!navOpen) setExpanded(false);\n }, [navOpen]);\n const transformedCaseTypes = caseTypes.map(caseType => {\n return {\n ...caseType,\n primary: caseType.name\n };\n });\n return useMemo(\n () => (\n <StyledCaseTypes expanded={expanded && navOpen}>\n <NavComponents.List\n items={[\n {\n primary: t('app_shell_create'),\n visual: <Icon name='plus' as={StyledAppShellNavIcon} />,\n onClick: toggleExpanded,\n items: transformedCaseTypes,\n collapseItems: !expanded || !navOpen\n }\n ]}\n />\n </StyledCaseTypes>\n ),\n [expanded, navOpen, toggleExpanded, caseTypes]\n );\n};\n\nconst Links: FunctionComponent<{ links: LinkProps[] }> = (props: { links: LinkProps[] }) => {\n const { links } = props;\n const navLinksRef = useRef<NavListItemProps[]>([]);\n const [transformedLinks, setTransformedLinks] = useState<NavListItemProps[]>([]);\n\n const toggleExpanded = (id: string) => {\n const updatedLinks = navLinksRef.current.map(link => {\n if (link.id === id) return { ...link, collapseItems: !link.collapseItems };\n return { ...link };\n });\n setTransformedLinks(updatedLinks);\n };\n\n // TODO: Can this be a memo instead of a state and an effect?\n const mergedNavLinks = (items: LinkProps[]): NavListItemProps[] => {\n return items.map((link: LinkProps) => {\n return {\n ...link,\n primary: link.name,\n 'aria-current': link.active ? 'page' : null,\n visual: link.icon ? <Icon name={link.icon} as={StyledAppShellNavIcon} /> : null,\n onClick: link.links ? () => toggleExpanded(link.id) : link.onClick,\n items: link.links ? mergedNavLinks(link.links) : undefined,\n collapseItems: true\n };\n });\n };\n\n useEffect(() => {\n setTransformedLinks(mergedNavLinks(links));\n }, [links]);\n\n useEffect(() => {\n navLinksRef.current = transformedLinks;\n }, [transformedLinks]);\n\n return (\n <div>\n <NavComponents.List items={transformedLinks} />\n </div>\n );\n};\n\nconst Cases: FunctionComponent<{ cases: CaseProps[] }> = (props: { cases: CaseProps[] }) => {\n const { cases } = props;\n\n const setupCases = (items: CaseProps[]): NavListItemProps[] => {\n return items.map((item: CaseProps) => {\n const {\n id,\n primary,\n secondary,\n visual = <Icon name='case-solid' as={StyledAppShellNavIcon} />,\n active,\n onClick,\n onDismiss\n } = item;\n return {\n id,\n 'aria-current': active ? 'page' : undefined,\n primary,\n secondary,\n active: !!active,\n dismissible: true,\n onClick,\n onDismiss,\n visual\n };\n });\n };\n\n return (\n <StyledNavCasesList>\n <NavComponents.List items={setupCases(cases)} />\n </StyledNavCasesList>\n );\n};\n\n// TODO: Need to add back re-focus support to drawer.\nexport const Utils: FC<UtilsProps> = ({ operator, items, appHeader }) => {\n const { drawerOpen, setDrawerOpen } = useContext(AppShellContext);\n const [transformedLinks, setTransformedLinks] = useState<NavListItemProps[]>([]);\n const [item, setItem] = useState<UtilItemProps>();\n const [activeUtilItem, setActiveUtilItem] = useState('');\n\n const operatorInfo: NavListItemProps[] = useMemo(\n () =>\n appHeader\n ? []\n : [\n {\n primary: operator.name,\n visual: operator.avatar,\n actions: operator.actions\n }\n ],\n [appHeader, operator.name, operator.avatar, operator.actions]\n );\n\n // TODO: Can this be a memo instead of a state and an effect?\n const mergedUtilItems = (drawerItems: UtilItemProps[]): NavListItemProps[] => {\n return drawerItems?.map((drawerItem: UtilItemProps) => {\n return {\n onClick: () => {\n if (drawerItem.drawerView) {\n setItem(drawerItem);\n setActiveUtilItem(drawerItem.name);\n }\n },\n ...drawerItem,\n primary: drawerItem.name,\n visual: drawerItem.count ? (\n <StyledUtilIconCount>\n {drawerItem.visual}\n <Count as={StyledCountIcon} variant='urgent'>\n {drawerItem.count}\n </Count>\n </StyledUtilIconCount>\n ) : (\n drawerItem.visual\n )\n };\n });\n };\n\n useEffect(() => {\n if (items) {\n setTransformedLinks([...mergedUtilItems(items)!, ...operatorInfo]);\n } else {\n setTransformedLinks(operatorInfo);\n }\n }, [items, operatorInfo]);\n\n useEffect(() => {\n items?.forEach(uItem => {\n if (uItem.name === activeUtilItem) {\n setItem(uItem);\n }\n });\n }, [items]);\n\n useEffect(() => {\n if (item) setDrawerOpen(true);\n }, [item]);\n\n useEffect(() => {\n if (!drawerOpen) {\n setItem(undefined);\n setActiveUtilItem('');\n }\n }, [drawerOpen]);\n\n return (\n <>\n <StyledUtils>\n <NavComponents.List items={transformedLinks} nestedList={false} />\n </StyledUtils>\n {item && (\n <AppShellDrawer\n content={item.drawerView}\n header={item.drawerHeader || item.name}\n onDrawerClose={item.onDrawerClose}\n onDrawerOpen={item.onDrawerOpen}\n />\n )}\n </>\n );\n};\n\nconst AppShell: FunctionComponent<AppShellProps & ForwardProps> = forwardRef(\n (props: PropsWithoutRef<AppShellProps>, ref: Ref<HTMLDivElement>) => {\n const {\n appInfo,\n searchInput,\n appHeader,\n searchLabel = 'Sitewide', // FIXME: TR\n caseTypes,\n links,\n banners,\n environment: { name: envName, color: envColor } = {},\n main,\n operator,\n utils,\n cases,\n ...restProps\n } = props;\n const {\n appName,\n portalName,\n href: appInfoHref,\n imageSrc: logoSrc,\n ...appInfoRestProps\n } = appInfo;\n\n const t = useI18n();\n const [navOpenState, setNavOpen] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const [mobileNavBackdrop, setMobileNavBackdrop] = useState(false);\n const [refocusEl, setRefocusEl] = useState<HTMLButtonElement | null>(null);\n const focusedImperatively = useRef(false);\n const [headerEl, setHeaderEl] = useElement<HTMLDivElement>();\n const [mobileHeaderEl, setMobileHeaderEl] = useElement<HTMLDivElement>();\n const isXlOrAbove = useBreakpoint('xl');\n const isSmallOrAbove = useBreakpoint('sm');\n const navOpen = isXlOrAbove || navOpenState;\n const showAppHeader = !!appHeader && isSmallOrAbove;\n const showMainContent = showAppHeader ? headerEl || mobileHeaderEl : true;\n\n const openNav = useCallback(() => {\n setNavOpen(true);\n }, []);\n\n const closeNav = useCallback(() => {\n setNavOpen(false);\n }, []);\n\n const onFocus = useCallback(() => {\n if (!focusedImperatively.current && isSmallOrAbove) openNav();\n focusedImperatively.current = false;\n }, [openNav, isSmallOrAbove]);\n\n const onKeydown = useCallback(({ key }: KeyboardEvent) => {\n if (key === 'Escape') setMobileNavOpen(false);\n }, []);\n\n const navRef = useConsolidatedRef(ref);\n useFocusWithin<HTMLElement>(\n [navRef],\n useCallback(\n (isFocused: boolean, navElement: Element | null) => {\n if (!isFocused && !navElement?.matches(':hover')) closeNav();\n },\n [closeNav]\n )\n );\n\n useEffect(() => {\n if (!navOpen) setDrawerOpen(false);\n }, [navOpen]);\n\n useEffect(() => {\n if (mobileNavOpen) {\n document.addEventListener('keydown', onKeydown);\n return () => {\n document.removeEventListener('keydown', onKeydown);\n };\n }\n }, [mobileNavOpen]);\n\n useEffect(() => {\n if (isSmallOrAbove && mobileNavOpen) {\n setMobileNavBackdrop(false);\n setMobileNavOpen(false);\n }\n }, [isSmallOrAbove, mobileNavOpen]);\n\n const theme = useTheme();\n\n const appShellJSX = (\n <Flex\n {...restProps}\n container={{\n direction: 'column',\n justify: 'between'\n }}\n ref={navRef}\n as={StyledAppNav}\n appHeader={showAppHeader}\n navOpen={mobileNavOpen || navOpen}\n onFocus={onFocus}\n onMouseEnter={isSmallOrAbove ? openNav : undefined}\n onMouseLeave={isSmallOrAbove ? closeNav : undefined}\n >\n {envName && (\n <StyledAppEnvironment\n item={{ shrink: 0 }}\n color={envColor ?? theme.base.colors.red['extra-light']}\n >\n {envName}\n </StyledAppEnvironment>\n )}\n {!showAppHeader && (\n <StyledAppInfo\n as={Grid}\n forwardedAs={appInfoHref ? (Link as any) : 'div'}\n href={appInfoHref}\n aria-label={`${appName}${portalName ? ` - ${portalName}` : ''}`}\n {...appInfoRestProps}\n container={{\n alignItems: 'center',\n areas: portalName ? '\"logo app\" \"logo portal\"' : '\"logo app\"'\n }}\n >\n <Grid item={{ area: 'logo' }} as={Image} src={logoSrc} alt={appName} />\n <Grid item={{ area: 'app' }} as='span'>\n {appName}\n </Grid>\n {portalName && (\n <Grid item={{ area: 'portal' }} as='span'>\n {portalName}\n </Grid>\n )}\n </StyledAppInfo>\n )}\n\n {searchInput && !showAppHeader && (\n <StyledSearchForm\n role='search'\n aria-label={searchLabel}\n onSubmit={e => e.preventDefault()}\n >\n <SearchInput {...searchInput} />\n </StyledSearchForm>\n )}\n\n <StyledScrollWrap navOpen={mobileNavOpen || navOpen}>\n {caseTypes && <CaseTypes caseTypes={caseTypes} />}\n {links && <Links links={links} />}\n {cases && <Cases cases={cases} />}\n </StyledScrollWrap>\n\n <Utils appHeader={showAppHeader} operator={operator} items={utils} />\n </Flex>\n );\n\n const { start } = useDirection();\n\n return (\n <AppShellContext.Provider\n value={useMemo(\n () => ({\n navOpen: mobileNavOpen || navOpen,\n drawerOpen,\n setDrawerOpen,\n refocusEl,\n setRefocusEl,\n focusedImperatively,\n headerEl: headerEl || mobileHeaderEl\n }),\n [navOpen, mobileNavOpen, drawerOpen, refocusEl, headerEl, mobileHeaderEl]\n )}\n >\n <SkipNavigation />\n {showAppHeader && (\n <AppHeader\n {...appInfo}\n searchInput={searchInput}\n searchLabel={searchLabel}\n operator={operator}\n ref={setHeaderEl}\n />\n )}\n\n {isSmallOrAbove ? (\n appShellJSX\n ) : (\n <>\n <Flex as={StyledMobileNav} container={{ alignItems: 'center' }} ref={setMobileHeaderEl}>\n <Button\n variant='simple'\n onClick={() => setMobileNavBackdrop(true)}\n aria-label={t('app_shell_open_nav')}\n icon\n >\n <Icon name='bars' />\n </Button>\n </Flex>\n\n <Backdrop\n open={mobileNavBackdrop}\n transitionSpeed='none'\n onAfterTransitionIn={() => setMobileNavOpen(true)}\n onBeforeTransitionOut={() => setMobileNavOpen(false)}\n onClick={e => {\n if (e.currentTarget === e.target) setMobileNavOpen(false);\n }}\n >\n <Drawer\n open={mobileNavOpen}\n onAfterClose={() => {\n setMobileNavBackdrop(false);\n }}\n position='fixed'\n placement={start}\n size='min(18.75rem, calc(100vw - 3.5rem))'\n nullWhenClosed\n >\n {appShellJSX}\n </Drawer>\n </Backdrop>\n </>\n )}\n {showMainContent && (\n <StyledAppMain\n appHeader={showAppHeader}\n mobileNav={!isSmallOrAbove}\n headerOffset={headerEl?.offsetHeight}\n >\n {banners && <StyledBannerRegion>{banners}</StyledBannerRegion>}\n {main}\n </StyledAppMain>\n )}\n </AppShellContext.Provider>\n );\n }\n);\n\nexport default AppShell;\n"]}
1
+ {"version":3,"file":"AppShell.js","sourceRoot":"","sources":["../../../src/components/AppShell/AppShell.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n FunctionComponent,\n forwardRef,\n PropsWithoutRef,\n Ref,\n useState,\n useCallback,\n useEffect,\n useMemo,\n ElementType,\n useContext,\n useRef,\n FC,\n MouseEventHandler,\n MutableRefObject\n} from 'react';\n\nimport Flex from '../Flex';\nimport Link from '../Link';\nimport Count from '../Badges/Count';\nimport BareButton from '../Button/BareButton';\nimport SearchInput from '../SearchInput';\nimport Icon from '../Icon';\nimport Text from '../Text';\nimport Image from '../Image';\nimport ExpandCollapse from '../ExpandCollapse';\nimport type { ForwardProps, OmitStrict } from '../../types';\nimport {\n useFocusWithin,\n useI18n,\n useBreakpoint,\n useConsolidatedRef,\n useDirection,\n useTheme,\n useElement\n} from '../../hooks';\nimport Grid from '../Grid';\nimport Button from '../Button';\nimport Drawer from '../Drawer';\nimport type { PopoverProps } from '../Popover';\nimport Backdrop from '../Backdrop';\nimport { documentIsAvailable } from '../../utils';\n\nimport AppShellContext from './AppShellContext';\nimport AppShellDrawer from './Drawer';\nimport AppShellOperator from './Operator';\nimport AppHeader from './AppHeader';\nimport SkipNavigation from './SkipNavigation';\nimport {\n StyledAppNav,\n StyledAppInfo,\n StyledSearchForm,\n StyledCaseTypes,\n StyledScrollWrap,\n StyledUtils,\n StyledNavList,\n StyledNestedNavList,\n StyledNavListItem,\n StyledNavListMenuButton,\n StyledAppMain,\n StyledCaseClose,\n StyledAppShellNavIcon,\n StyledNavCasesList,\n StyledAppEnvironment,\n StyledBannerRegion,\n StyledCountIcon,\n StyledUtilIconCount,\n StyledMobileNav\n} from './AppShell.styles';\nimport {\n AppShellProps,\n CaseProps,\n CaseTypeProps,\n LinkProps,\n NavListItemProps,\n NavListProps,\n UtilItemProps,\n UtilsProps\n} from './AppShell.types';\n\nconst NavComponents: {\n List: FunctionComponent<NavListProps>;\n ListItem: FunctionComponent<NavListItemProps>;\n} = {\n List(props: NavListProps) {\n const { items = [], nestedList, collapsed } = props;\n let Component: ElementType = StyledNavList;\n let fwdProps: {\n as?: ElementType;\n forwardedAs?: ElementType;\n nullWhenCollapsed?: boolean;\n transitionSpeed?: string;\n collapsed: boolean;\n } = {\n collapsed: !!collapsed\n };\n\n const {\n base: { animation }\n } = useTheme();\n\n if (nestedList) {\n fwdProps = {\n as: ExpandCollapse,\n forwardedAs: 'ul',\n nullWhenCollapsed: true,\n transitionSpeed: items.length >= 10 ? `calc(2 * ${animation.speed})` : animation.speed,\n ...fwdProps\n };\n\n Component = StyledNestedNavList;\n }\n\n return (\n <Component {...fwdProps}>\n {items?.map(item => (\n <NavComponents.ListItem {...item} key={item.id || item.primary} />\n ))}\n </Component>\n );\n },\n ListItem(props: NavListItemProps) {\n const { navOpen } = useContext(AppShellContext);\n const {\n visual,\n primary,\n secondary,\n href,\n onClick,\n items,\n collapseItems = false,\n dismissible = false,\n onDismiss,\n active,\n actions,\n forwardedRef,\n ...restProps\n } = props;\n\n const t = useI18n();\n\n const hasItems = Array.isArray(items) && items.length > 0;\n const compProps: {\n href?: string;\n variant?: string;\n onClick?: MouseEventHandler<HTMLAnchorElement | HTMLButtonElement | HTMLDivElement>;\n actions?: NavListItemProps['actions'];\n as?: ElementType<any>;\n popover?: OmitStrict<PopoverProps, 'show' | 'target' | 'children'>;\n } = {\n onClick\n };\n\n let Component: ElementType;\n\n if (actions) {\n Component = AppShellOperator;\n compProps.actions = actions;\n compProps.as = StyledNavListMenuButton;\n compProps.popover = {\n placement: 'right-end',\n modifiers: [\n {\n name: 'offset',\n options: { offset: [-12, -16] }\n },\n {\n name: 'flip',\n options: {\n boundary: documentIsAvailable ? document.body : undefined,\n fallbackPlacements: ['top-end']\n }\n }\n ]\n };\n } else if (onClick) {\n Component = BareButton;\n } else if (href) {\n Component = Link;\n compProps.href = href;\n } else {\n Component = 'div';\n }\n\n useEffect(() => {\n if (!navOpen && actions) {\n const node = document.getElementsByTagName('body')[0];\n const clickEvent = document.createEvent('MouseEvent');\n clickEvent.initEvent('mousedown', true, true);\n node.dispatchEvent(clickEvent);\n }\n }, [navOpen]);\n\n const { end } = useDirection();\n\n return (\n <StyledNavListItem\n {...restProps}\n key={primary}\n nestedListCollapsed={hasItems ? collapseItems : true}\n active={!!active}\n navOpen={navOpen}\n >\n {/* forwardedRef typed as 'any' due to ambiguity of Component element type */}\n <Component {...compProps} ref={forwardedRef as any}>\n {visual}\n {secondary ? (\n <Flex container={{ direction: 'column', alignItems: 'start' }}>\n <span>{primary}</span>\n <Text variant='secondary'>{secondary}</Text>\n </Flex>\n ) : (\n <span>{primary}</span>\n )}\n {(hasItems || actions) && <Icon name={`caret-${end}`} as={StyledAppShellNavIcon} />}\n </Component>\n {dismissible && (\n <Button\n icon\n variant='simple'\n as={StyledCaseClose}\n onClick={onDismiss}\n aria-label={t('dismiss_case')}\n >\n <Icon name='times' />\n </Button>\n )}\n {hasItems && (\n <NavComponents.List nestedList items={items} collapsed={!navOpen || collapseItems} />\n )}\n </StyledNavListItem>\n );\n }\n};\n\nconst CaseTypes: FunctionComponent<{ caseTypes: CaseTypeProps[] }> = ({\n caseTypes\n}: {\n caseTypes: CaseTypeProps[];\n}) => {\n const { navOpen } = useContext(AppShellContext);\n const [expanded, setExpanded] = useState(false);\n const t = useI18n();\n\n const toggleExpanded = useCallback(() => {\n setExpanded(state => !state);\n }, []);\n\n useEffect(() => {\n if (!navOpen) setExpanded(false);\n }, [navOpen]);\n const transformedCaseTypes = caseTypes.map(caseType => {\n return {\n ...caseType,\n primary: caseType.name\n };\n });\n return useMemo(\n () => (\n <StyledCaseTypes expanded={expanded && navOpen}>\n <NavComponents.List\n items={[\n {\n primary: t('app_shell_create'),\n visual: <Icon name='plus' as={StyledAppShellNavIcon} />,\n onClick: toggleExpanded,\n items: transformedCaseTypes,\n collapseItems: !expanded || !navOpen\n }\n ]}\n />\n </StyledCaseTypes>\n ),\n [expanded, navOpen, toggleExpanded, caseTypes]\n );\n};\n\nconst Links: FunctionComponent<{ links: LinkProps[] }> = (props: { links: LinkProps[] }) => {\n const { links } = props;\n const navLinksRef = useRef<NavListItemProps[]>([]);\n const [transformedLinks, setTransformedLinks] = useState<NavListItemProps[]>([]);\n\n const toggleExpanded = (id: string) => {\n const updatedLinks = navLinksRef.current.map(link => {\n if (link.id === id) return { ...link, collapseItems: !link.collapseItems };\n return { ...link };\n });\n setTransformedLinks(updatedLinks);\n };\n\n // TODO: Can this be a memo instead of a state and an effect?\n const mergedNavLinks = (items: LinkProps[]): NavListItemProps[] => {\n return items.map((link: LinkProps) => {\n return {\n ...link,\n primary: link.name,\n 'aria-current': link.active ? 'page' : null,\n visual: link.icon ? <Icon name={link.icon} as={StyledAppShellNavIcon} /> : null,\n onClick: link.links ? () => toggleExpanded(link.id) : link.onClick,\n items: link.links ? mergedNavLinks(link.links) : undefined,\n collapseItems: true\n };\n });\n };\n\n useEffect(() => {\n setTransformedLinks(mergedNavLinks(links));\n }, [links]);\n\n useEffect(() => {\n navLinksRef.current = transformedLinks;\n }, [transformedLinks]);\n\n return (\n <div>\n <NavComponents.List items={transformedLinks} />\n </div>\n );\n};\n\nconst Cases: FunctionComponent<{ cases: CaseProps[] }> = (props: { cases: CaseProps[] }) => {\n const { cases } = props;\n\n const setupCases = (items: CaseProps[]): NavListItemProps[] => {\n return items.map((item: CaseProps) => {\n const {\n id,\n primary,\n secondary,\n visual = <Icon name='case-solid' as={StyledAppShellNavIcon} />,\n active,\n onClick,\n onDismiss\n } = item;\n return {\n id,\n 'aria-current': active ? 'page' : undefined,\n primary,\n secondary,\n active: !!active,\n dismissible: true,\n onClick,\n onDismiss,\n visual\n };\n });\n };\n\n return (\n <StyledNavCasesList>\n <NavComponents.List items={setupCases(cases)} />\n </StyledNavCasesList>\n );\n};\n\n// TODO: Need to add back re-focus support to drawer.\nexport const Utils: FC<UtilsProps> = ({ operator, items, appHeader }) => {\n const { drawerOpen, setDrawerOpen, focusedImperatively } = useContext(AppShellContext);\n const [transformedLinks, setTransformedLinks] = useState<NavListItemProps[]>([]);\n const [item, setItem] = useState<UtilItemProps>();\n const [activeUtilItem, setActiveUtilItem] = useState('');\n const returnFocusRef: MutableRefObject<\n HTMLAnchorElement | HTMLDivElement | HTMLButtonElement | null\n > = useRef(null);\n\n const operatorInfo: NavListItemProps[] = useMemo(\n () =>\n appHeader\n ? []\n : [\n {\n primary: operator.name,\n visual: operator.avatar,\n actions: operator.actions\n }\n ],\n [appHeader, operator.name, operator.avatar, operator.actions]\n );\n\n // TODO: Can this be a memo instead of a state and an effect?\n const mergedUtilItems = (drawerItems: UtilItemProps[]): NavListItemProps[] => {\n return drawerItems?.map((drawerItem: UtilItemProps) => {\n return {\n onClick: e => {\n returnFocusRef.current = e.currentTarget;\n if (drawerItem.drawerView) {\n setItem(drawerItem);\n setActiveUtilItem(drawerItem.name);\n }\n },\n ...drawerItem,\n primary: drawerItem.name,\n visual: drawerItem.count ? (\n <StyledUtilIconCount>\n {drawerItem.visual}\n <Count as={StyledCountIcon} variant='urgent'>\n {drawerItem.count}\n </Count>\n </StyledUtilIconCount>\n ) : (\n drawerItem.visual\n )\n };\n });\n };\n\n useEffect(() => {\n if (items) {\n setTransformedLinks([...mergedUtilItems(items)!, ...operatorInfo]);\n } else {\n setTransformedLinks(operatorInfo);\n }\n }, [items, operatorInfo]);\n\n useEffect(() => {\n items?.forEach(uItem => {\n if (uItem.name === activeUtilItem) {\n setItem(uItem);\n }\n });\n }, [items]);\n\n useEffect(() => {\n if (item) setDrawerOpen(true);\n }, [item]);\n\n useEffect(() => {\n if (!drawerOpen) {\n setActiveUtilItem('');\n focusedImperatively.current = true;\n returnFocusRef?.current?.focus();\n }\n }, [drawerOpen]);\n\n return (\n <>\n <StyledUtils>\n <NavComponents.List\n // Pull onDrawerOpen and onDrawerClose off to avoid DOM passthrough warning.\n items={transformedLinks.map(({ onDrawerOpen, onDrawerClose, ...util }) => util)}\n />\n </StyledUtils>\n {item && (\n <AppShellDrawer\n content={item.drawerView}\n header={item.drawerHeader || item.name}\n onDrawerClose={() => {\n setItem(undefined);\n item.onDrawerClose?.();\n }}\n onDrawerOpen={item.onDrawerOpen}\n />\n )}\n </>\n );\n};\n\nconst AppShell: FunctionComponent<AppShellProps & ForwardProps> = forwardRef(\n (props: PropsWithoutRef<AppShellProps>, ref: Ref<HTMLDivElement>) => {\n const {\n appInfo,\n searchInput,\n appHeader,\n searchLabel = 'Sitewide', // FIXME: TR\n caseTypes,\n links,\n banners,\n environment: { name: envName, color: envColor } = {},\n main,\n operator,\n utils,\n cases,\n ...restProps\n } = props;\n const {\n appName,\n portalName,\n href: appInfoHref,\n imageSrc: logoSrc,\n ...appInfoRestProps\n } = appInfo;\n\n const t = useI18n();\n const [navOpenState, setNavOpen] = useState(false);\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const [mobileNavBackdrop, setMobileNavBackdrop] = useState(false);\n const [refocusEl, setRefocusEl] = useState<HTMLButtonElement | null>(null);\n const focusedImperatively = useRef(false);\n const [headerEl, setHeaderEl] = useElement<HTMLDivElement>();\n const [mobileHeaderEl, setMobileHeaderEl] = useElement<HTMLDivElement>();\n const isXlOrAbove = useBreakpoint('xl');\n const isSmallOrAbove = useBreakpoint('sm');\n const navOpen = isXlOrAbove || navOpenState;\n const showAppHeader = !!appHeader && isSmallOrAbove;\n const showMainContent = showAppHeader ? headerEl || mobileHeaderEl : true;\n\n const openNav = useCallback(() => {\n setNavOpen(true);\n }, []);\n\n const closeNav = useCallback(() => {\n setNavOpen(false);\n }, []);\n\n const onFocus = useCallback(() => {\n if (!focusedImperatively.current && isSmallOrAbove) openNav();\n focusedImperatively.current = false;\n }, [openNav, isSmallOrAbove]);\n\n const onKeydown = useCallback(({ key }: KeyboardEvent) => {\n if (key === 'Escape') setMobileNavOpen(false);\n }, []);\n\n const navRef = useConsolidatedRef(ref);\n useFocusWithin<HTMLElement>(\n [navRef],\n useCallback(\n (isFocused: boolean, navElement: Element | null) => {\n if (!isFocused && !navElement?.matches(':hover')) closeNav();\n },\n [closeNav]\n )\n );\n\n useEffect(() => {\n if (!navOpen) setDrawerOpen(false);\n }, [navOpen]);\n\n useEffect(() => {\n if (mobileNavOpen) {\n document.addEventListener('keydown', onKeydown);\n return () => {\n document.removeEventListener('keydown', onKeydown);\n };\n }\n }, [mobileNavOpen]);\n\n useEffect(() => {\n if (isSmallOrAbove && mobileNavOpen) {\n setMobileNavBackdrop(false);\n setMobileNavOpen(false);\n }\n }, [isSmallOrAbove, mobileNavOpen]);\n\n const theme = useTheme();\n\n const appShellJSX = (\n <Flex\n {...restProps}\n container={{\n direction: 'column',\n justify: 'between'\n }}\n ref={navRef}\n as={StyledAppNav}\n appHeader={showAppHeader}\n navOpen={mobileNavOpen || navOpen}\n showEnv={!!envName}\n onFocus={onFocus}\n onMouseEnter={isSmallOrAbove ? openNav : undefined}\n onMouseLeave={isSmallOrAbove ? closeNav : undefined}\n >\n {envName && (\n <StyledAppEnvironment\n item={{ shrink: 0 }}\n color={envColor ?? theme.base.colors.red['extra-light']}\n >\n {envName}\n </StyledAppEnvironment>\n )}\n {!showAppHeader && (\n <StyledAppInfo\n as={Grid}\n forwardedAs={appInfoHref ? (Link as any) : 'div'}\n href={appInfoHref}\n aria-label={`${appName}${portalName ? ` - ${portalName}` : ''}`}\n {...appInfoRestProps}\n container={{\n alignItems: 'center',\n areas: portalName ? '\"logo app\" \"logo portal\"' : '\"logo app\"'\n }}\n >\n <Grid item={{ area: 'logo' }} as={Image} src={logoSrc} alt={appName} />\n <Grid item={{ area: 'app' }} as='span'>\n {appName}\n </Grid>\n {portalName && (\n <Grid item={{ area: 'portal' }} as='span'>\n {portalName}\n </Grid>\n )}\n </StyledAppInfo>\n )}\n\n {searchInput && !showAppHeader && (\n <StyledSearchForm\n role='search'\n aria-label={searchLabel}\n onSubmit={e => e.preventDefault()}\n >\n <SearchInput {...searchInput} />\n </StyledSearchForm>\n )}\n\n <StyledScrollWrap navOpen={mobileNavOpen || navOpen}>\n {caseTypes && <CaseTypes caseTypes={caseTypes} />}\n {links && <Links links={links} />}\n {cases && <Cases cases={cases} />}\n </StyledScrollWrap>\n\n <Utils appHeader={showAppHeader} operator={operator} items={utils} />\n </Flex>\n );\n\n const { start } = useDirection();\n\n return (\n <AppShellContext.Provider\n value={useMemo(\n () => ({\n navOpen: mobileNavOpen || navOpen,\n drawerOpen,\n setDrawerOpen,\n refocusEl,\n setRefocusEl,\n focusedImperatively,\n headerEl: headerEl || mobileHeaderEl\n }),\n [navOpen, mobileNavOpen, drawerOpen, refocusEl, headerEl, mobileHeaderEl]\n )}\n >\n <SkipNavigation />\n {showAppHeader && (\n <AppHeader\n {...appInfo}\n searchInput={searchInput}\n searchLabel={searchLabel}\n operator={operator}\n ref={setHeaderEl}\n />\n )}\n\n {isSmallOrAbove ? (\n appShellJSX\n ) : (\n <>\n <Flex as={StyledMobileNav} container={{ alignItems: 'center' }} ref={setMobileHeaderEl}>\n <Button\n variant='simple'\n onClick={() => setMobileNavBackdrop(true)}\n aria-label={t('app_shell_open_nav')}\n icon\n >\n <Icon name='bars' />\n </Button>\n </Flex>\n\n <Backdrop\n open={mobileNavBackdrop}\n transitionSpeed='none'\n onAfterTransitionIn={() => setMobileNavOpen(true)}\n onBeforeTransitionOut={() => setMobileNavOpen(false)}\n onClick={e => {\n if (e.currentTarget === e.target) setMobileNavOpen(false);\n }}\n >\n <Drawer\n open={mobileNavOpen}\n onAfterClose={() => {\n setMobileNavBackdrop(false);\n }}\n position='fixed'\n placement={start}\n size='min(18.75rem, calc(100vw - 3.5rem))'\n nullWhenClosed\n >\n {appShellJSX}\n </Drawer>\n </Backdrop>\n </>\n )}\n {showMainContent && (\n <StyledAppMain\n appHeader={showAppHeader}\n mobileNav={!isSmallOrAbove}\n headerOffset={isSmallOrAbove ? headerEl?.offsetHeight : mobileHeaderEl?.offsetHeight}\n >\n {banners && <StyledBannerRegion>{banners}</StyledBannerRegion>}\n {main}\n </StyledAppMain>\n )}\n </AppShellContext.Provider>\n );\n }\n);\n\nexport default AppShell;\n"]}
@@ -13,6 +13,7 @@ export declare const StyledUtilIconCount: import("styled-components").StyledComp
13
13
  export declare const StyledAppNav: import("styled-components").StyledComponent<"nav", import("styled-components").DefaultTheme, {
14
14
  appHeader: boolean;
15
15
  navOpen: boolean;
16
+ showEnv: boolean;
16
17
  }, never>;
17
18
  export declare const StyledSearchForm: import("styled-components").StyledComponent<"form", import("styled-components").DefaultTheme, {}, never>;
18
19
  export declare const StyledNavListMenuButton: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
@@ -30,7 +31,7 @@ export declare const StyledCaseTypes: import("styled-components").StyledComponen
30
31
  expanded: boolean;
31
32
  }, never>;
32
33
  export declare const StyledUtils: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
33
- export declare const StyledAppHeaderInfo: import("styled-components").StyledComponent<"a", import("styled-components").DefaultTheme, {
34
+ export declare const StyledAppHeaderInfo: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
34
35
  centerLogo: boolean;
35
36
  }, never>;
36
37
  export declare const StyledAppHeaderSearchForm: import("styled-components").StyledComponent<"form", import("styled-components").DefaultTheme, {
@@ -51,7 +52,6 @@ export declare const StyledDrawerBackButton: import("styled-components").StyledC
51
52
  export declare const StyledDrawerList: import("styled-components").StyledComponent<"ul", import("styled-components").DefaultTheme, {
52
53
  displayPins: boolean;
53
54
  }, never>;
54
- export declare const StyledDrawerSummaryItem: import("styled-components").StyledComponent<"a", import("styled-components").DefaultTheme, {}, never>;
55
55
  export declare const StyledDrawerMetaList: import("styled-components").StyledComponent<"ul", import("styled-components").DefaultTheme, {}, never>;
56
56
  export declare const StyledDrawerPinButton: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
57
57
  export declare const EmptyDrawerVisual: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
@@ -72,7 +72,7 @@ export declare const StyledAppShellSummaryItem: import("styled-components").Styl
72
72
  export declare const StyledAppShellMetaList: import("styled-components").StyledComponent<"ul", import("styled-components").DefaultTheme, {}, never>;
73
73
  export declare const StyledAppShellPinButton: import("styled-components").StyledComponent<"button", import("styled-components").DefaultTheme, {}, never>;
74
74
  export declare const StyledNotificationAlert: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
75
- export declare const NoItemsColorContrast: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
75
+ export declare const EmptyStateColorContrast: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
76
76
  export declare const StyledAppShellListSection: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
77
77
  export declare const StyledAppShellListHeading: import("styled-components").StyledComponent<"h3", import("styled-components").DefaultTheme, {}, never>;
78
78
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"AppShell.styles.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/AppShell.styles.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,OAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAU1C,eAAO,MAAM,oBAAoB;WAAyB,MAAM;SAmC/D,CAAC;AAIF,eAAO,MAAM,aAAa,uGAuCxB,CAAC;AAIH,eAAO,MAAM,gBAAgB;aAAyB,OAAO;SAM3D,CAAC;AAIH,eAAO,MAAM,eAAe,0GAe3B,CAAC;AAIF,eAAO,MAAM,qBAAqB,yGAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,0GAE/B,CAAC;AAEF,eAAO,MAAM,YAAY;eAA2B,OAAO;aAAW,OAAO;SAsE5E,CAAC;AAIF,eAAO,MAAM,gBAAgB,0GAuC3B,CAAC;AAIH,eAAO,MAAM,uBAAuB,4GAoBlC,CAAC;AAIH,UAAU,sBAAsB;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,4GAAkB,CAAC;AAE/C,eAAO,MAAM,iBAAiB,4HA4G7B,CAAC;AAIF,eAAO,MAAM,aAAa,wGAAc,CAAC;AAEzC,eAAO,MAAM,kBAAkB,yGAQ7B,CAAC;AAIH,eAAO,MAAM,mBAAmB,wGAY9B,CAAC;AAIH,eAAO,MAAM,eAAe;cAA0B,OAAO;SAqB3D,CAAC;AAIH,eAAO,MAAM,WAAW,yGAiBtB,CAAC;AAMH,eAAO,MAAM,mBAAmB;gBAA0B,OAAO;SAa/D,CAAC;AAIH,eAAO,MAAM,yBAAyB;qBAAkC,OAAO;SAyE9E,CAAC;AAIF,eAAO,MAAM,qBAAqB,yGAEjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;aAA2B,SAAS,CAAC,SAAS,CAAC;SAkB9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,4GAQnC,CAAC;AAIF,eAAO,MAAM,eAAe;eAA8B,OAAO;SA8C/D,CAAC;AAMH,eAAO,MAAM,eAAe,4GAmB1B,CAAC;AAMH,eAAO,MAAM,mBAAmB,kHAQ9B,CAAC;AAIH,eAAO,MAAM,mBAAmB,4GAqB9B,CAAC;AAIH,eAAO,MAAM,sBAAsB,4GAmBjC,CAAC;AAIH,eAAO,MAAM,gBAAgB;iBAA4B,OAAO;SAE9D,CAAC;AAIH,eAAO,MAAM,uBAAuB,uGAoBlC,CAAC;AAIH,eAAO,MAAM,oBAAoB,wGAIhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,4GA6BhC,CAAC;AAIH,eAAO,MAAM,iBAAiB,yGAK5B,CAAC;AAIH,eAAO,MAAM,uBAAuB,wGAQlC,CAAC;AAIH,eAAO,MAAM,mBAAmB,uGAe9B,CAAC;AAIH,eAAO,MAAM,uBAAuB,yGAUlC,CAAC;AAIH,eAAO,MAAM,yBAAyB,yGAOpC,CAAC;AAIH,eAAO,MAAM,aAAa,yGAEzB,CAAC;AAIF,eAAO,MAAM,aAAa;eACb,OAAO;eACP,OAAO;;SAuBlB,CAAC;AAIH,eAAO,MAAM,kBAAkB,yGAI7B,CAAC;AAKH,eAAO,MAAM,yBAAyB,yGAGrC,CAAC;AAIF,eAAO,MAAM,kBAAkB,wGAAc,CAAC;AAI9C,eAAO,MAAM,yBAAyB,uGAqBpC,CAAC;AAIH,eAAO,MAAM,sBAAsB,wGAIlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,4GA6BlC,CAAC;AAIH,eAAO,MAAM,uBAAuB,yGAKlC,CAAC;AAIH,eAAO,MAAM,oBAAoB,yGAOhC,CAAC;AAEF,eAAO,MAAM,yBAAyB,yGAUpC,CAAC;AAIH,eAAO,MAAM,yBAAyB,wGAQpC,CAAC"}
1
+ {"version":3,"file":"AppShell.styles.d.ts","sourceRoot":"","sources":["../../../src/components/AppShell/AppShell.styles.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,OAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAU1C,eAAO,MAAM,oBAAoB;WAAyB,MAAM;SAmC/D,CAAC;AAIF,eAAO,MAAM,aAAa,uGAuCxB,CAAC;AAIH,eAAO,MAAM,gBAAgB;aAAyB,OAAO;SAM3D,CAAC;AAIH,eAAO,MAAM,eAAe,0GAe3B,CAAC;AAIF,eAAO,MAAM,qBAAqB,yGAAe,CAAC;AAClD,eAAO,MAAM,mBAAmB,0GAE/B,CAAC;AAEF,eAAO,MAAM,YAAY;eAA2B,OAAO;aAAW,OAAO;aAAW,OAAO;SA4E9F,CAAC;AAIF,eAAO,MAAM,gBAAgB,0GAuC3B,CAAC;AAIH,eAAO,MAAM,uBAAuB,4GAoBlC,CAAC;AAIH,UAAU,sBAAsB;IAC9B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,eAAe,4GAAkB,CAAC;AAE/C,eAAO,MAAM,iBAAiB,4HA4G7B,CAAC;AAIF,eAAO,MAAM,aAAa,wGAAc,CAAC;AAEzC,eAAO,MAAM,kBAAkB,yGAQ7B,CAAC;AAIH,eAAO,MAAM,mBAAmB,wGAY9B,CAAC;AAIH,eAAO,MAAM,eAAe;cAA0B,OAAO;SAqB3D,CAAC;AAIH,eAAO,MAAM,WAAW,yGAiBtB,CAAC;AAMH,eAAO,MAAM,mBAAmB;gBAA4B,OAAO;SAgBjE,CAAC;AAIH,eAAO,MAAM,yBAAyB;qBAAkC,OAAO;SAyE9E,CAAC;AAIF,eAAO,MAAM,qBAAqB,yGAEjC,CAAC;AAEF,eAAO,MAAM,mBAAmB;aAA2B,SAAS,CAAC,SAAS,CAAC;SAkB9E,CAAC;AAEF,eAAO,MAAM,uBAAuB,4GAQnC,CAAC;AAIF,eAAO,MAAM,eAAe;eAA8B,OAAO;SA+C/D,CAAC;AAMH,eAAO,MAAM,eAAe,4GAmB1B,CAAC;AAMH,eAAO,MAAM,mBAAmB,kHAQ9B,CAAC;AAIH,eAAO,MAAM,mBAAmB,4GAqB9B,CAAC;AAIH,eAAO,MAAM,sBAAsB,4GAmBjC,CAAC;AAIH,eAAO,MAAM,gBAAgB;iBAA4B,OAAO;SAE9D,CAAC;AAIH,eAAO,MAAM,oBAAoB,wGAIhC,CAAC;AAEF,eAAO,MAAM,qBAAqB,4GA6BhC,CAAC;AAIH,eAAO,MAAM,iBAAiB,yGAK5B,CAAC;AAIH,eAAO,MAAM,uBAAuB,wGAQlC,CAAC;AAIH,eAAO,MAAM,mBAAmB,uGAe9B,CAAC;AAIH,eAAO,MAAM,uBAAuB,yGAUlC,CAAC;AAIH,eAAO,MAAM,yBAAyB,yGAOpC,CAAC;AAIH,eAAO,MAAM,aAAa,yGAEzB,CAAC;AAIF,eAAO,MAAM,aAAa;eACb,OAAO;eACP,OAAO;;SAuBlB,CAAC;AAIH,eAAO,MAAM,kBAAkB,yGAI7B,CAAC;AAKH,eAAO,MAAM,yBAAyB,yGAGrC,CAAC;AAIF,eAAO,MAAM,kBAAkB,wGAAc,CAAC;AAI9C,eAAO,MAAM,yBAAyB,uGAsBpC,CAAC;AAIH,eAAO,MAAM,sBAAsB,wGAIlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,4GA6BlC,CAAC;AAIH,eAAO,MAAM,uBAAuB,yGAKlC,CAAC;AAIH,eAAO,MAAM,uBAAuB,yGAOnC,CAAC;AAEF,eAAO,MAAM,yBAAyB,yGAUpC,CAAC;AAIH,eAAO,MAAM,yBAAyB,wGAQpC,CAAC"}
@@ -9,7 +9,7 @@ import { tryCatch } from '../../utils/utils';
9
9
  import Flex from '../Flex';
10
10
  import { readableHue, calculateFontSize, getHoverColors } from '../../styles';
11
11
  import { StyledPopover } from '../Popover';
12
- import { StyledNoItems } from '../NoItems';
12
+ import { StyledEmptyState } from '../EmptyState';
13
13
  import { StyledMenuListContainer } from '../Menu/Menu.styles';
14
14
  import Text from '../Text';
15
15
  import { useDirection } from '../../hooks';
@@ -95,20 +95,26 @@ export const StyledAppShellNavIcon = styled.svg ``;
95
95
  export const StyledUtilIconCount = styled.span `
96
96
  flex-shrink: 0;
97
97
  `;
98
- export const StyledAppNav = styled.nav(({ appHeader, navOpen, theme }) => {
98
+ export const StyledAppNav = styled.nav(({ appHeader, navOpen, showEnv, theme }) => {
99
99
  return css `
100
100
  z-index: ${theme.base['z-index'].drawer};
101
101
  position: fixed;
102
102
  background: ${theme.components['app-shell'].nav['background-color']};
103
- max-width: calc(100vw - ${theme.base.sizes['touch-mouse']});
103
+ max-width: calc(100vw - ${theme.base['hit-area']['mouse-min']});
104
104
  width: ${navOpen ? navOpenWidth : navWidth};
105
105
  height: calc(100vh - ${appHeader ? headerHeight : '0rem'});
106
106
  overflow: hidden;
107
107
  white-space: nowrap;
108
108
  transition: width ${`${theme.base.animation.speed} ${theme.base.animation.timing.ease}`};
109
+ padding-block-end: ${theme.base.spacing};
110
+
111
+ ${!showEnv &&
112
+ css `
113
+ padding-block-start: ${theme.base.spacing};
114
+ `}
109
115
 
110
116
  @media (pointer: coarse) {
111
- max-width: calc(100vw - ${theme.base.sizes['touch-finger']});
117
+ max-width: calc(100vw - ${theme.base['hit-area']['finger-min']});
112
118
  }
113
119
 
114
120
  ${theme.base['custom-scrollbar'] &&
@@ -172,7 +178,7 @@ export const StyledSearchForm = styled.form(({ theme }) => {
172
178
  padding: ${theme.base.spacing} 0;
173
179
 
174
180
  ${StyledSearchInput} {
175
- margin: 0 calc((${navWidth} - ${theme.base.sizes['touch-mouse']}) / 2);
181
+ margin: 0 calc((${navWidth} - ${theme.base['hit-area']['mouse-min']}) / 2);
176
182
 
177
183
  &:focus-within {
178
184
  box-shadow: ${theme.base.shadow['focus-inverted']};
@@ -266,7 +272,7 @@ export const StyledNavListItem = styled.li(({ theme, nestedListCollapsed, navOpe
266
272
  display: flex;
267
273
  align-items: center;
268
274
  width: 100%;
269
- padding: ${theme.base.spacing} 0;
275
+ padding: calc(1.25 * ${theme.base.spacing}) 0;
270
276
  white-space: nowrap;
271
277
  color: rgba(255, 255, 255, 0.7);
272
278
  cursor: pointer;
@@ -373,7 +379,7 @@ export const StyledUtils = styled.div(({ theme }) => {
373
379
  border-top: 0.0625rem solid ${borderColor};
374
380
  li ${StyledAvatar} {
375
381
  flex-shrink: 0;
376
- margin: 0 calc((${navWidth} - ${theme.base.sizes['touch-mouse']}) / 2);
382
+ margin: 0 calc((${navWidth} - ${theme.base['hit-area']['mouse-min']}) / 2);
377
383
  font-weight: ${theme.base['font-weight'].normal};
378
384
  }
379
385
  ${StyledBareButton} > ${StyledIcon}:first-child,
@@ -385,17 +391,20 @@ export const StyledUtils = styled.div(({ theme }) => {
385
391
  });
386
392
  StyledUtils.defaultProps = defaultThemeProp;
387
393
  /* AppHeader styles */
388
- export const StyledAppHeaderInfo = styled.a(({ centerLogo, theme }) => {
394
+ export const StyledAppHeaderInfo = styled.div(({ centerLogo, theme }) => {
389
395
  return css `
390
- display: flex;
391
-
392
- &:hover {
396
+ & > :first-child {
393
397
  text-decoration: none;
398
+ vertical-align: top;
394
399
  }
395
400
 
396
- > ${StyledImage} {
401
+ ${StyledImage} {
397
402
  height: 1.625rem;
398
- padding-inline-start: ${centerLogo ? theme.base.spacing : 0};
403
+
404
+ ${centerLogo &&
405
+ css `
406
+ padding-inline-start: ${theme.base.spacing};
407
+ `}
399
408
  }
400
409
  `;
401
410
  });
@@ -498,13 +507,14 @@ export const StyledAppHeader = styled.header(({ hideTitle, theme }) => {
498
507
  const contrastColor = tryCatch(() => readableColor(headerColor));
499
508
  const hoverColors = getHoverColors(mix(0.01, theme.base.palette.interactive, headerColor));
500
509
  return css `
510
+ position: sticky;
511
+ z-index: ${theme.base['z-index'].drawer};
512
+ top: 0;
501
513
  gap: ${theme.base.spacing};
502
514
  max-width: 100%;
503
- min-height: ${headerHeight};
515
+ height: ${headerHeight};
504
516
  background-color: ${headerColor};
505
- position: sticky;
506
- top: 0;
507
- z-index: ${theme.base['z-index'].drawer};
517
+ border-bottom: solid 0.0625rem ${theme.base.palette['border-line']};
508
518
 
509
519
  > :first-child {
510
520
  justify-self: flex-start;
@@ -595,8 +605,8 @@ export const StyledDrawerHeading = styled.header(({ theme }) => {
595
605
  StyledDrawerHeading.defaultProps = defaultThemeProp;
596
606
  export const StyledDrawerBackButton = styled.button(({ theme }) => {
597
607
  return css `
598
- height: ${theme.base.sizes['touch-mouse']};
599
- width: ${theme.base.sizes['touch-mouse']};
608
+ height: ${theme.base['hit-area']['mouse-min']};
609
+ width: ${theme.base['hit-area']['mouse-min']};
600
610
  border-radius: calc(
601
611
  ${`${theme.base['border-radius']} * ${theme.components.button['border-radius']}`}
602
612
  );
@@ -618,28 +628,6 @@ export const StyledDrawerList = styled.ul(() => {
618
628
  return css ``;
619
629
  });
620
630
  StyledDrawerList.defaultProps = defaultThemeProp;
621
- export const StyledDrawerSummaryItem = styled.a(({ theme }) => {
622
- return css `
623
- padding: ${theme.base.spacing} calc(2 * ${theme.base.spacing});
624
- color: inherit;
625
- background-color: transparent;
626
- border: none;
627
- text-decoration: none;
628
- cursor: pointer;
629
-
630
- &:hover,
631
- &:focus {
632
- color: ${theme.base.colors.white};
633
- background-color: rgba(255, 255, 255, 0.05);
634
- }
635
-
636
- &:focus {
637
- outline: none;
638
- box-shadow: inset ${theme.base.shadow['focus-inverted']};
639
- }
640
- `;
641
- });
642
- StyledDrawerSummaryItem.defaultProps = defaultThemeProp;
643
631
  export const StyledDrawerMetaList = styled.ul `
644
632
  li {
645
633
  color: inherit;
@@ -776,6 +764,7 @@ export const StyledAppShellSummaryItem = styled.a(({ theme }) => {
776
764
  text-decoration: none;
777
765
  cursor: pointer;
778
766
  text-align: start;
767
+ white-space: normal;
779
768
 
780
769
  &:hover,
781
770
  &:focus {
@@ -832,8 +821,8 @@ export const StyledNotificationAlert = styled.div(({ theme }) => {
832
821
  `;
833
822
  });
834
823
  StyledNotificationAlert.defaultProps = defaultThemeProp;
835
- export const NoItemsColorContrast = styled.div `
836
- ${StyledNoItems} {
824
+ export const EmptyStateColorContrast = styled.div `
825
+ ${StyledEmptyState} {
837
826
  span,
838
827
  svg {
839
828
  color: rgba(255, 255, 255, 0.7);